chore: import upstream snapshot with attribution
CI / Migrate Dev DB (push) Has been skipped
CI / Detect Version (push) Has been cancelled
CI / Migrate DB (push) Has been cancelled
CI / Build Dev ECR (./docker/app.Dockerfile, ECR_APP) (push) Has been cancelled
CI / Build Dev ECR (./docker/db.Dockerfile, ECR_MIGRATIONS) (push) Has been cancelled
CI / Build Dev ECR (./docker/pii.Dockerfile, ECR_PII) (push) Has been cancelled
CI / Build Dev ECR (./docker/realtime.Dockerfile, ECR_REALTIME) (push) Has been cancelled
CI / Deploy Trigger.dev (Dev) (push) Has been cancelled
CI / Build AMD64 (./docker/app.Dockerfile, ECR_APP, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build AMD64 (./docker/db.Dockerfile, ECR_MIGRATIONS, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build AMD64 (./docker/pii.Dockerfile, ECR_PII, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build AMD64 (./docker/realtime.Dockerfile, ECR_REALTIME, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/app.Dockerfile, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/db.Dockerfile, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/pii.Dockerfile, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/realtime.Dockerfile, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Check Docs Changes (push) Has been cancelled
CI / Process Docs (push) Has been cancelled
CI / Create GitHub Release (push) Has been cancelled
CI / Test and Build (push) Has been cancelled
Publish CLI Package / publish-npm (push) Has been cancelled
Publish Python SDK / publish-pypi (push) Has been cancelled
Publish TypeScript SDK / publish-npm (push) Has been cancelled

This commit is contained in:
wehub-resource-sync
2026-07-13 13:20:55 +08:00
commit d25d482dc2
13754 changed files with 4996608 additions and 0 deletions
+133
View File
@@ -0,0 +1,133 @@
import type { HexListUsersParams, HexListUsersResponse } from '@/tools/hex/types'
import type { ToolConfig } from '@/tools/types'
export const listUsersTool: ToolConfig<HexListUsersParams, HexListUsersResponse> = {
id: 'hex_list_users',
name: 'Hex List Users',
description: 'List all users in the Hex workspace with optional filtering and sorting.',
version: '1.0.0',
params: {
apiKey: {
type: 'string',
required: true,
visibility: 'user-only',
description: 'Hex API token (Personal or Workspace)',
},
limit: {
type: 'number',
required: false,
visibility: 'user-or-llm',
description: 'Maximum number of users to return (1-100, default: 25)',
},
sortBy: {
type: 'string',
required: false,
visibility: 'user-only',
description: 'Sort by field: NAME or EMAIL',
},
sortDirection: {
type: 'string',
required: false,
visibility: 'user-only',
description: 'Sort direction: ASC or DESC',
},
groupId: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'Filter users by group UUID',
},
userIds: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'Comma-separated list of user UUIDs to filter by',
},
after: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'Cursor to fetch the page of results after this value',
},
before: {
type: 'string',
required: false,
visibility: 'user-or-llm',
description: 'Cursor to fetch the page of results before this value',
},
},
request: {
url: (params) => {
const searchParams = new URLSearchParams()
if (params.limit) searchParams.set('limit', String(params.limit))
if (params.sortBy) searchParams.set('sortBy', params.sortBy)
if (params.sortDirection) searchParams.set('sortDirection', params.sortDirection)
if (params.groupId) searchParams.set('groupId', params.groupId)
if (params.userIds) searchParams.set('userIds', params.userIds)
if (params.after) searchParams.set('after', params.after)
if (params.before) searchParams.set('before', params.before)
const qs = searchParams.toString()
return `https://app.hex.tech/api/v1/users${qs ? `?${qs}` : ''}`
},
method: 'GET',
headers: (params) => ({
Authorization: `Bearer ${params.apiKey}`,
'Content-Type': 'application/json',
}),
},
transformResponse: async (response: Response) => {
const data = await response.json()
const users = Array.isArray(data) ? data : (data.values ?? [])
return {
success: true,
output: {
users: users.map((u: Record<string, unknown>) => ({
id: (u.id as string) ?? null,
name: (u.name as string) ?? null,
email: (u.email as string) ?? null,
role: (u.role as string) ?? null,
lastLoginDate: (u.lastLoginDate as string) ?? null,
})),
total: users.length,
after: data.pagination?.after ?? null,
before: data.pagination?.before ?? null,
},
}
},
outputs: {
users: {
type: 'array',
description: 'List of workspace users',
items: {
type: 'object',
properties: {
id: { type: 'string', description: 'User UUID' },
name: { type: 'string', description: 'User name' },
email: { type: 'string', description: 'User email' },
role: {
type: 'string',
description:
'User role (ADMIN, MANAGER, EDITOR, EXPLORER, MEMBER, GUEST, EMBEDDED_USER, ANONYMOUS)',
},
lastLoginDate: {
type: 'string',
description: 'Last login timestamp',
optional: true,
},
},
},
},
total: { type: 'number', description: 'Total number of users returned' },
after: { type: 'string', description: 'Cursor for the next page of results', optional: true },
before: {
type: 'string',
description: 'Cursor for the previous page of results',
optional: true,
},
},
}