@lessly/sdk-app 72.0.0 → 72.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/runtime/errors.ts","../src/runtime/csrf.ts","../src/runtime/request.ts","../src/runtime/connectStream.ts","../src/runtime/name.ts","../src/gen/manifest.gen.ts","../src/runtime/permission-match.ts","../src/runtime/access.ts","../src/runtime/createLesslyApp.ts","../src/runtime/access-reason.ts","../src/runtime/operations.ts","../src/runtime/compositions.ts"],"names":["bindings","operations","LEVELS","compositions"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * The `code`s the gateway emits when it refused a request BECAUSE OF THE CALLER'S ACCESS — the\n * exact set `can()` predicts. A 403 outside this set (`tenant_blocked`, a CSRF failure, a\n * suspended product) is not an access decision and must not be rendered as one: showing \"you\n * lack permission\" for a blocked tenant sends the user to an admin who can do nothing about it.\n */\nconst ACCESS_DENIED_CODES: ReadonlySet<string> = new Set([\n 'role_denied',\n 'operation_uncatalogued',\n 'no_tool_permission',\n]);\n\nexport class LesslyApiError extends Error {\n readonly status: number;\n readonly code: string | null;\n readonly body: unknown;\n /** True iff this is the gateway refusing the call over the caller's access. See ACCESS_DENIED_CODES. */\n readonly accessDenied: boolean;\n constructor(status: number, code: string | null, message: string, body: unknown) {\n super(message);\n this.name = 'LesslyApiError';\n this.status = status;\n this.code = code;\n this.body = body;\n this.accessDenied = status === 403 && code !== null && ACCESS_DENIED_CODES.has(code);\n }\n}\n\nexport function parseErrorBody(body: unknown, status: number): LesslyApiError {\n const b = (typeof body === 'object' && body !== null ? body : null) as\n | { message?: string; code?: string; error?: { code?: string; message?: string } }\n | null;\n const code = b?.error?.code ?? b?.code ?? null;\n const message = b?.error?.message ?? b?.message ?? `Request failed with status ${status}`;\n return new LesslyApiError(status, code, message, body);\n}\n\n/**\n * True iff `err` is the gateway refusing a call over the caller's access.\n *\n * Deliberately structural after the `instanceof` fast path: an App is composed into the shell\n * through Module Federation and `@lessly/sdk-app` is not a shared singleton, so the error a\n * caller catches is routinely an instance of the OTHER copy's class. `instanceof` alone would\n * report false there and an App would render a red crash for an ordinary permission refusal.\n */\nexport function isAccessDenied(err: unknown): boolean {\n if (err instanceof LesslyApiError) return err.accessDenied;\n if (typeof err !== 'object' || err === null) return false;\n const { status, code } = err as { status?: unknown; code?: unknown };\n return status === 403 && typeof code === 'string' && ACCESS_DENIED_CODES.has(code);\n}\n","const CSRF_COOKIE = 'lessly_csrf';\n\n// Reads the JS-readable half of the double-submit CSRF pair, mirroring the\n// workspace shell's csrfFetch. lessly_csrf is intentionally non-httpOnly.\nexport function readCsrfCookie(): string | null {\n if (typeof document === 'undefined' || !document) return null;\n const match = document.cookie.match(new RegExp(`(?:^|; )${CSRF_COOKIE}=([^;]*)`));\n return match ? decodeURIComponent(match[1]!) : null;\n}\n","import type { Binding, RouteSpec, LesslyAppOptions } from './types';\nimport { LesslyApiError, parseErrorBody } from './errors';\nimport { readCsrfCookie } from './csrf';\n\nconst MUTATING = new Set<Binding['method']>(['POST', 'PUT', 'PATCH', 'DELETE']);\n\nexport interface ResolvedRequest {\n path: string;\n query: Record<string, unknown>;\n body: Record<string, unknown> | undefined;\n}\n\nfunction pathTokenNames(path: string): Set<string> {\n const names = new Set<string>();\n const re = /:([A-Za-z0-9_]+)/g;\n let m: RegExpExecArray | null;\n while ((m = re.exec(path)) !== null) names.add(m[1]!);\n return names;\n}\n\nfunction placementFor(key: string, binding: RouteSpec, tokens: Set<string>): 'path' | 'query' | 'body' {\n if (binding.params) {\n const spec = binding.params.find((p) => p.name === key);\n if (spec) return spec.in;\n }\n if (tokens.has(key)) return 'path';\n return binding.method === 'GET' || binding.method === 'DELETE' ? 'query' : 'body';\n}\n\nexport function resolveRequest(binding: RouteSpec, input: Record<string, unknown> = {}): ResolvedRequest {\n const tokens = pathTokenNames(binding.path);\n const query: Record<string, unknown> = {};\n const body: Record<string, unknown> = {};\n const pathValues: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(input)) {\n const where = placementFor(k, binding, tokens);\n if (where === 'path') pathValues[k] = v;\n else if (where === 'query') query[k] = v;\n else body[k] = v;\n }\n let path = binding.path;\n for (const token of tokens) {\n const val = pathValues[token];\n if (val === undefined) throw new Error(`Missing path parameter \"${token}\" for ${binding.path}`);\n path = path.replace(`:${token}`, encodeURIComponent(String(val)));\n }\n return { path, query, body: Object.keys(body).length > 0 ? body : undefined };\n}\n\nfunction documentBase(baseUrl: string): string {\n // A relative baseUrl (e.g. \"/api\" behind the same origin as the app) only has\n // meaning next to a document. new URL() would otherwise fail with the opaque\n // \"Invalid URL\", so name the cause here.\n const href = (globalThis as { location?: { href?: string } }).location?.href;\n if (typeof href !== 'string' || href === '') {\n throw new Error(\n `@lessly/sdk-app: relative baseUrl \"${baseUrl}\" cannot be resolved outside a browser ` +\n '(globalThis.location is unavailable). Pass an absolute baseUrl, e.g. \"https://api.lessly.dev\".',\n );\n }\n return href;\n}\n\nfunction isAbsolute(baseUrl: string): boolean {\n try { new URL(baseUrl); return true; } catch { return false; }\n}\n\nexport function buildUrl(baseUrl: string, path: string, query: Record<string, unknown>): string {\n const base = baseUrl.replace(/\\/$/, '') + path;\n const url = isAbsolute(baseUrl) ? new URL(base) : new URL(base, documentBase(baseUrl));\n for (const [k, v] of Object.entries(query)) {\n if (v === undefined || v === null) continue;\n if (Array.isArray(v)) v.forEach((item) => url.searchParams.append(k, String(item)));\n else url.searchParams.append(k, String(v));\n }\n return url.toString();\n}\n\nfunction safeJson(text: string): unknown {\n try { return JSON.parse(text); } catch { return text; }\n}\n\nexport async function executeRequest(\n opts: LesslyAppOptions,\n binding: RouteSpec,\n input?: Record<string, unknown>,\n): Promise<unknown> {\n const { path, query, body } = resolveRequest(binding, input);\n const url = buildUrl(opts.baseUrl, path, query);\n const doFetch = opts.fetch ?? globalThis.fetch;\n const headers = new Headers();\n headers.set('X-Product-Id', opts.productId);\n if (body !== undefined) headers.set('Content-Type', 'application/json');\n if (MUTATING.has(binding.method)) {\n const token = (opts.getCsrfToken ?? readCsrfCookie)();\n // No token means the double-submit pair is broken: fail loudly here instead\n // of sending a doomed mutation and surfacing an opaque 403. No retry, no\n // hidden refresh — the caller must re-establish the session.\n if (!token) {\n throw new LesslyApiError(\n 0,\n 'csrf_cookie_missing',\n `CSRF cookie \"lessly_csrf\" is missing; the session must be re-established before mutating requests (${binding.method} ${binding.path}).`,\n null,\n );\n }\n headers.set('X-CSRF-Token', token);\n }\n const requestInit: RequestInit = { method: binding.method, headers, credentials: 'include' };\n if (body !== undefined) requestInit.body = JSON.stringify(body);\n const res = await doFetch(url, requestInit);\n const text = await res.text();\n const parsed = text ? safeJson(text) : null;\n if (!res.ok) throw parseErrorBody(parsed, res.status);\n return parsed;\n}\n","import type {\n LesslyAppOptions,\n LesslyStream,\n StreamCloseInfo,\n StreamData,\n WebSocketLike,\n WsBinding,\n} from './types';\nimport { resolveRequest, buildUrl } from './request';\n\n/**\n * Turn the http(s) URL the REST path builder produces into its ws(s) counterpart. Only the\n * scheme changes: host, port, path and query are exactly what `buildUrl` resolved, including a\n * relative `baseUrl` resolved against the document. Any other scheme is left untouched and will\n * fail loudly in the WebSocket constructor rather than silently connecting somewhere else.\n */\nfunction toWsUrl(url: string): string {\n if (url.startsWith('https:')) return `wss:${url.slice('https:'.length)}`;\n if (url.startsWith('http:')) return `ws:${url.slice('http:'.length)}`;\n return url;\n}\n\n/**\n * Open the sanctioned streaming connection for a ws-bound tool.\n *\n * Session cookies ride the upgrade automatically, so this sends NOTHING extra: no CSRF token (an\n * upgrade is not an HTTP mutation) and no product header — a browser WebSocket cannot set headers\n * at all, and the gateway's upgrade path authenticates from the session alone.\n *\n * Params are placed exactly as for a GET request: `:token` segments are substituted into the\n * path, everything else becomes a query parameter. A param declared `in: 'body'` has no meaning\n * on an upgrade and is treated as a query parameter rather than silently dropped.\n *\n * There is no reconnection, backoff or heartbeat logic here on purpose (see `LesslyStream`).\n */\nexport function connectStream(\n opts: LesslyAppOptions,\n binding: WsBinding,\n input?: Record<string, unknown>,\n): LesslyStream {\n const restLike = { method: 'GET' as const, path: binding.path, ...(binding.params ? { params: binding.params } : {}) };\n const { path, query, body } = resolveRequest(restLike, input);\n const url = toWsUrl(buildUrl(opts.baseUrl, path, { ...query, ...(body ?? {}) }));\n\n const Ctor = opts.WebSocket ?? (globalThis as { WebSocket?: LesslyAppOptions['WebSocket'] }).WebSocket;\n if (!Ctor) {\n throw new Error(\n `@lessly/sdk-app: WebSocket is unavailable in this environment, so the stream to \"${binding.path}\" ` +\n 'cannot be opened. Streaming requires a browser; pass options.WebSocket to supply an implementation.',\n );\n }\n const socket: WebSocketLike = new Ctor(url);\n\n const messageSubs = new Set<(data: StreamData) => void>();\n const closeSubs = new Set<(info: StreamCloseInfo) => void>();\n // Frames handed to `send` before the socket is OPEN. A browser WebSocket throws\n // InvalidStateError on an early send, and \"open the stream, then immediately send\" is the\n // normal shape of a terminal-style protocol — so hold them here and flush on open, in order.\n let pending: StreamData[] | null = [];\n\n socket.addEventListener('open', () => {\n const queued = pending ?? [];\n pending = null;\n for (const frame of queued) socket.send(frame);\n });\n socket.addEventListener('message', (ev: { data: StreamData }) => {\n for (const cb of [...messageSubs]) cb(ev.data);\n });\n socket.addEventListener('close', (ev: { code?: number; reason?: string; wasClean?: boolean }) => {\n pending = null;\n const info: StreamCloseInfo = { code: ev.code ?? 1006, reason: ev.reason ?? '', wasClean: ev.wasClean ?? false };\n for (const cb of [...closeSubs]) cb(info);\n });\n\n return {\n send(data) {\n if (pending !== null) { pending.push(data); return; }\n // `pending === null` after a close too: dropping the frame is deliberate — a closed socket\n // must not resurrect queued work, and throwing here would punish a race the caller cannot win.\n if (socket.readyState === 1) socket.send(data);\n },\n close(code, reason) {\n pending = null;\n socket.close(code, reason);\n },\n onMessage(cb) { messageSubs.add(cb); return () => messageSubs.delete(cb); },\n onClose(cb) { closeSubs.add(cb); return () => closeSubs.delete(cb); },\n get readyState() { return socket.readyState; },\n };\n}\n","export interface SplitTool { namespace: string; resource: string | null; action: string }\n\n/**\n * Reserved resource key under which `bindings.gen.ts` nests entity-less operations, so\n * BindingsMap keeps its three-level shape while the accessor hoists to sdk.<ns>.<action>().\n * The generator only ever emits this key when `splitToolName` reports `resource: null`, because\n * `validateCatalog` (scripts/lib/validate-catalog.ts) rejects any catalog id whose segments fall\n * outside [a-z0-9-] before `generate()` emits anything — but that validation runs generator-side\n * only. `splitToolName` here performs no such check: it runs against whatever string a caller\n * passes to `sdk.call()`, so this module cannot itself guarantee a literal \"$root\" segment in\n * caller input is unreachable. Mirrored in scripts/lib/naming.ts; a parity test pins the two equal.\n */\nexport const ROOT_RESOURCE = '$root';\n\n/**\n * Split a tool id: first segment = namespace, last = action, middle segments joined with '-'\n * = resource. A 2-segment id is an entity-less operation on the namespace and reports\n * `resource: null` — NOT '', which would silently nest the op under an empty-string key and\n * dispatch through a bogus `sdk.organization[''].list()`-shaped path. A 1-segment id carries no\n * action and is rejected.\n *\n * Mirrors the generator's scripts/lib/naming.ts — see the parity test in name.test.ts.\n */\nexport function splitToolName(name: string): SplitTool {\n const seg = name.split('_');\n if (seg.length < 2) {\n throw new Error(`Tool \"${name}\" must be {extension}_{resource}_{action} or {extension}_{action}`);\n }\n return {\n namespace: seg[0]!,\n action: seg[seg.length - 1]!,\n resource: seg.length === 2 ? null : seg.slice(1, -1).join('-'),\n };\n}\n","// AUTOGENERATED by scripts/generate.ts — do not edit.\nimport type { ToolLevel, ToolComposition } from '../runtime/types';\n\nexport const namespaces = ['analytics', 'brain', 'consent', 'content', 'deployment', 'mail', 'observe', 'organization', 'playground', 'realtime', 'support', 'tracking', 'users', 'waitlist', 'workflow'] as const;\n\nexport const operations: Record<string, ToolLevel> = {\n 'analytics_catalog_get': 'read',\n 'analytics_dashboard_create': 'write',\n 'analytics_dashboard_delete': 'write',\n 'analytics_dashboard_get': 'read',\n 'analytics_dashboard_list': 'read',\n 'analytics_dashboard_run': 'read',\n 'analytics_dashboard_update': 'write',\n 'analytics_funnel_run': 'read',\n 'analytics_insight_create': 'write',\n 'analytics_insight_delete': 'write',\n 'analytics_insight_get': 'read',\n 'analytics_insight_list': 'read',\n 'analytics_insight_run': 'read',\n 'analytics_insight_update': 'write',\n 'analytics_metric_query': 'read',\n 'analytics_person_timeline': 'read',\n 'analytics_query_run': 'read',\n 'analytics_retention_run': 'read',\n 'brain_backup_create': 'write',\n 'brain_backup_restore': 'admin',\n 'brain_backup_status': 'read',\n 'brain_backups_list': 'read',\n 'brain_clickup_channels_list': 'read',\n 'brain_clickup_connections_list': 'read',\n 'brain_clickup_lists_list': 'read',\n 'brain_clickup_spaces_list': 'read',\n 'brain_cognition_digest': 'write',\n 'brain_cognition_status': 'read',\n 'brain_cognition_sweep': 'write',\n 'brain_connector_branches_list': 'read',\n 'brain_connector_connections_list': 'read',\n 'brain_connector_repos_list': 'read',\n 'brain_daemon_batch_status': 'read',\n 'brain_daemon_create': 'write',\n 'brain_daemon_get': 'read',\n 'brain_daemon_reingest': 'write',\n 'brain_daemon_remove': 'admin',\n 'brain_daemon_run': 'write',\n 'brain_daemon_run_items': 'read',\n 'brain_daemon_runs': 'read',\n 'brain_daemon_status': 'read',\n 'brain_daemon_update': 'write',\n 'brain_daemons_list': 'read',\n 'brain_gdrive_connections_list': 'read',\n 'brain_knowledge_entity_memories': 'read',\n 'brain_knowledge_graph': 'read',\n 'brain_knowledge_neighborhood': 'read',\n 'brain_knowledge_relations': 'read',\n 'brain_knowledge_search': 'read',\n 'brain_memory_add': 'write',\n 'brain_memory_delete': 'write',\n 'brain_memory_get': 'read',\n 'brain_memory_list': 'read',\n 'brain_memory_search': 'read',\n 'brain_memory_stats': 'read',\n 'brain_memory_update': 'write',\n 'brain_product_shared_memory_reset': 'admin',\n 'brain_restore_status': 'read',\n 'brain_usage_report': 'read',\n 'consent_config_cookie_domain_upsert': 'admin',\n 'consent_config_customization_upsert': 'write',\n 'consent_config_floating_icon_upsert': 'write',\n 'consent_config_theme_upsert': 'write',\n 'consent_dashboard_config_get': 'read',\n 'consent_dashboard_decisions_list': 'read',\n 'consent_dashboard_embed_snippet_get': 'read',\n 'consent_dashboard_stats_get': 'read',\n 'consent_embed_get': 'read',\n 'consent_providers_create': 'write',\n 'consent_providers_delete': 'admin',\n 'consent_providers_list': 'read',\n 'consent_providers_update': 'write',\n 'consent_records_export': 'admin',\n 'consent_stats_get': 'read',\n 'content_channels_bind': 'write',\n 'content_channels_get': 'read',\n 'content_channels_list': 'read',\n 'content_channels_resume': 'write',\n 'content_channels_unbind': 'write',\n 'content_channels_update': 'write',\n 'content_media_create_upload_url': 'write',\n 'content_media_finalize': 'write',\n 'content_media_get': 'read',\n 'content_media_list': 'read',\n 'content_media_upload': 'write',\n 'content_metrics_channel_series': 'read',\n 'content_metrics_post_series': 'read',\n 'content_posts_approve': 'write',\n 'content_posts_attach_media': 'write',\n 'content_posts_create': 'write',\n 'content_posts_detach_media': 'write',\n 'content_posts_get': 'read',\n 'content_posts_list': 'read',\n 'content_posts_submit': 'write',\n 'content_posts_update': 'write',\n 'content_posts_versions': 'read',\n 'content_publications_cancel': 'write',\n 'content_publications_confirm': 'write',\n 'content_publications_get': 'read',\n 'content_publications_list': 'read',\n 'content_publications_publish': 'write',\n 'content_publications_remind': 'write',\n 'content_publications_reschedule': 'write',\n 'content_publications_schedule': 'write',\n 'content_publications_validate': 'read',\n 'deployment_alert_create': 'write',\n 'deployment_alert_delete': 'admin',\n 'deployment_alert_events_list': 'read',\n 'deployment_alert_list': 'read',\n 'deployment_alert_update': 'write',\n 'deployment_analytics_query': 'read',\n 'deployment_build_get': 'read',\n 'deployment_build_list': 'read',\n 'deployment_build_logs': 'read',\n 'deployment_canvas_get': 'read',\n 'deployment_canvas_move_node': 'write',\n 'deployment_cloud_sql_backfill_log_flags': 'write',\n 'deployment_cloud_sql_database_attach': 'write',\n 'deployment_cloud_sql_database_create': 'write',\n 'deployment_cloud_sql_database_delete': 'admin',\n 'deployment_cloud_sql_database_detach': 'write',\n 'deployment_cloud_sql_database_get': 'read',\n 'deployment_cloud_sql_database_list': 'read',\n 'deployment_cloud_sql_instance_backup': 'write',\n 'deployment_cloud_sql_instance_backup_list': 'read',\n 'deployment_cloud_sql_instance_create': 'write',\n 'deployment_cloud_sql_instance_delete': 'admin',\n 'deployment_cloud_sql_instance_get': 'read',\n 'deployment_cloud_sql_instance_list': 'read',\n 'deployment_cloud_sql_instance_resize': 'write',\n 'deployment_cloud_sql_instance_restore': 'admin',\n 'deployment_cloud_sql_logs': 'read',\n 'deployment_deployment_cancel': 'write',\n 'deployment_deployment_get': 'read',\n 'deployment_deployment_list': 'read',\n 'deployment_domain_add': 'admin',\n 'deployment_domain_allowed_list': 'read',\n 'deployment_domain_get': 'read',\n 'deployment_domain_list': 'read',\n 'deployment_domain_list_by_service': 'read',\n 'deployment_domain_redirect_www': 'admin',\n 'deployment_domain_remove': 'admin',\n 'deployment_domain_routes_add': 'admin',\n 'deployment_domain_routes_list': 'read',\n 'deployment_domain_routes_remove': 'admin',\n 'deployment_domain_routes_update': 'admin',\n 'deployment_domain_verify': 'write',\n 'deployment_environment_create': 'write',\n 'deployment_environment_delete': 'admin',\n 'deployment_environment_fork': 'write',\n 'deployment_environment_get': 'read',\n 'deployment_environment_list': 'read',\n 'deployment_environment_reconcile': 'write',\n 'deployment_environment_update': 'write',\n 'deployment_events_list_by_environment': 'read',\n 'deployment_events_list_by_service': 'read',\n 'deployment_job_run': 'write',\n 'deployment_job_run_logs': 'read',\n 'deployment_job_runs_list': 'read',\n 'deployment_managed_service_backup': 'write',\n 'deployment_managed_service_backup_list': 'read',\n 'deployment_managed_service_connect_info': 'read',\n 'deployment_managed_service_delete': 'admin',\n 'deployment_managed_service_get': 'read',\n 'deployment_managed_service_list': 'read',\n 'deployment_managed_service_logs': 'read',\n 'deployment_managed_service_provision': 'write',\n 'deployment_managed_service_reconcile': 'write',\n 'deployment_managed_service_resize': 'write',\n 'deployment_managed_service_restore': 'admin',\n 'deployment_managed_service_start': 'write',\n 'deployment_managed_service_stop': 'write',\n 'deployment_managed_service_types': 'read',\n 'deployment_metrics_get': 'read',\n 'deployment_preview_environment_create': 'write',\n 'deployment_preview_environment_delete': 'admin',\n 'deployment_preview_environment_list': 'read',\n 'deployment_preview_policy_get': 'read',\n 'deployment_preview_policy_set': 'admin',\n 'deployment_service_create': 'write',\n 'deployment_service_delete': 'admin',\n 'deployment_service_exec': 'admin',\n 'deployment_service_get': 'read',\n 'deployment_service_list': 'read',\n 'deployment_service_logs': 'read',\n 'deployment_service_redeploy': 'write',\n 'deployment_service_restart': 'write',\n 'deployment_service_rollback': 'write',\n 'deployment_service_scale': 'write',\n 'deployment_service_update': 'write',\n 'deployment_service_wake': 'write',\n 'deployment_ssh_command': 'read',\n 'deployment_ssh_key_delete': 'admin',\n 'deployment_ssh_key_list': 'read',\n 'deployment_ssh_key_register': 'admin',\n 'deployment_suspension_get': 'read',\n 'deployment_variable_list': 'read',\n 'deployment_variable_list_env': 'read',\n 'deployment_variable_list_product': 'read',\n 'deployment_variable_set': 'write',\n 'deployment_variable_set_env': 'write',\n 'deployment_variable_set_product': 'admin',\n 'deployment_variable_unset': 'write',\n 'deployment_variable_unset_env': 'write',\n 'deployment_variable_unset_product': 'admin',\n 'deployment_vcs_branch_list': 'read',\n 'deployment_vcs_connection_list': 'read',\n 'deployment_vcs_repo_list': 'read',\n 'deployment_volume_create': 'write',\n 'deployment_volume_delete': 'admin',\n 'deployment_volume_detach': 'write',\n 'deployment_volume_get': 'read',\n 'deployment_volume_list': 'read',\n 'deployment_volume_resize': 'write',\n 'mail_apikey_create': 'admin',\n 'mail_apikey_delete': 'admin',\n 'mail_apikey_list': 'read',\n 'mail_audience_create': 'write',\n 'mail_audience_delete': 'admin',\n 'mail_audience_get': 'read',\n 'mail_audience_list': 'read',\n 'mail_audience_update': 'write',\n 'mail_broadcast_cancel': 'write',\n 'mail_broadcast_create': 'write',\n 'mail_broadcast_delete': 'admin',\n 'mail_broadcast_get': 'read',\n 'mail_broadcast_list': 'read',\n 'mail_broadcast_queue': 'write',\n 'mail_broadcast_stats': 'read',\n 'mail_broadcast_update': 'write',\n 'mail_contact_create': 'write',\n 'mail_contact_delete': 'admin',\n 'mail_contact_get': 'read',\n 'mail_contact_list': 'read',\n 'mail_contact_update': 'write',\n 'mail_domain_allowed_list': 'read',\n 'mail_domain_create': 'admin',\n 'mail_domain_delete': 'admin',\n 'mail_domain_get': 'read',\n 'mail_domain_list': 'read',\n 'mail_domain_update': 'admin',\n 'mail_domain_verify': 'write',\n 'mail_email_cancel': 'write',\n 'mail_email_get': 'read',\n 'mail_email_send': 'write',\n 'mail_email_send_batch': 'write',\n 'mail_email_update': 'write',\n 'mail_reputation_get': 'read',\n 'mail_stats_get': 'read',\n 'mail_suppression_add': 'write',\n 'mail_suppression_list': 'read',\n 'mail_suppression_remove': 'admin',\n 'mail_template_create': 'write',\n 'mail_template_delete': 'admin',\n 'mail_template_get': 'read',\n 'mail_template_list': 'read',\n 'mail_template_publish': 'write',\n 'mail_template_update': 'write',\n 'mail_usage_get': 'read',\n 'mail_webhook_create': 'admin',\n 'mail_webhook_delete': 'admin',\n 'mail_webhook_deliveries_list': 'read',\n 'mail_webhook_get': 'read',\n 'mail_webhook_list': 'read',\n 'mail_webhook_update': 'admin',\n 'observe_alerts_create': 'write',\n 'observe_alerts_delete': 'admin',\n 'observe_alerts_events_list': 'read',\n 'observe_alerts_get': 'read',\n 'observe_alerts_list': 'read',\n 'observe_alerts_update': 'write',\n 'observe_artifacts_delete': 'admin',\n 'observe_artifacts_list': 'read',\n 'observe_artifacts_resolve': 'read',\n 'observe_issues_archive': 'write',\n 'observe_issues_assign': 'write',\n 'observe_issues_event': 'read',\n 'observe_issues_events': 'read',\n 'observe_issues_get': 'read',\n 'observe_issues_histogram': 'read',\n 'observe_issues_list': 'read',\n 'observe_issues_resolve': 'write',\n 'observe_keys_create': 'write',\n 'observe_keys_list': 'read',\n 'observe_keys_revoke': 'admin',\n 'observe_logs_facets': 'read',\n 'observe_logs_search': 'read',\n 'observe_logs_tail': 'read',\n 'observe_metrics_list': 'read',\n 'observe_metrics_query': 'read',\n 'observe_traces_get': 'read',\n 'observe_traces_search': 'read',\n 'observe_webhooks_create': 'write',\n 'observe_webhooks_delete': 'admin',\n 'observe_webhooks_deliveries_list': 'read',\n 'observe_webhooks_get': 'read',\n 'observe_webhooks_list': 'read',\n 'observe_webhooks_redeliver': 'write',\n 'observe_webhooks_rotate_secret': 'admin',\n 'observe_webhooks_update': 'write',\n 'organization_auth_me': 'read',\n 'organization_billing_budgets_get': 'read',\n 'organization_billing_caps_clear': 'write',\n 'organization_billing_caps_set': 'write',\n 'organization_bindings_list': 'read',\n 'organization_clickup_install': 'read',\n 'organization_clickup_list-installations': 'read',\n 'organization_cloudflare_install': 'read',\n 'organization_connectors_approve-request': 'write',\n 'organization_connectors_attach': 'write',\n 'organization_connectors_delete': 'admin',\n 'organization_connectors_deny-request': 'write',\n 'organization_connectors_detach': 'write',\n 'organization_connectors_list': 'read',\n 'organization_connectors_list-attachments': 'read',\n 'organization_connectors_list-available': 'read',\n 'organization_connectors_list-org': 'read',\n 'organization_connectors_list-requests': 'read',\n 'organization_connectors_remove': 'admin',\n 'organization_connectors_request': 'write',\n 'organization_create': 'write',\n 'organization_domains_add': 'write',\n 'organization_domains_get': 'read',\n 'organization_domains_list': 'read',\n 'organization_domains_remove': 'admin',\n 'organization_domains_set-mode': 'write',\n 'organization_extensions_list-installed': 'read',\n 'organization_feedback_submit': 'write',\n 'organization_gdrive_install': 'read',\n 'organization_github_install': 'read',\n 'organization_github_list-installations': 'read',\n 'organization_googleads_install': 'read',\n 'organization_groups_create': 'write',\n 'organization_groups_delete': 'admin',\n 'organization_groups_get': 'read',\n 'organization_groups_grant-remove': 'write',\n 'organization_groups_grant-set': 'write',\n 'organization_groups_list': 'read',\n 'organization_groups_member-add': 'write',\n 'organization_groups_member-remove': 'write',\n 'organization_groups_update': 'write',\n 'organization_linkedin_member_install': 'read',\n 'organization_list': 'read',\n 'organization_member_accept-invite': 'write',\n 'organization_member_invite': 'write',\n 'organization_member_list': 'read',\n 'organization_member_list-invitations': 'read',\n 'organization_member_list-product-access': 'read',\n 'organization_member_remove': 'admin',\n 'organization_member_revoke-invitation': 'admin',\n 'organization_member_set-role': 'admin',\n 'organization_member_share-product': 'admin',\n 'organization_member_unshare-product': 'admin',\n 'organization_members_assign-role': 'admin',\n 'organization_permission_catalog': 'read',\n 'organization_principal-grants_approve': 'write',\n 'organization_principal-grants_list': 'read',\n 'organization_principal-grants_revoke': 'admin',\n 'organization_product_create': 'write',\n 'organization_product_erasure_get': 'read',\n 'organization_product_erasure_list': 'read',\n 'organization_product_erasure_request': 'write',\n 'organization_product_list': 'read',\n 'organization_product_list-access': 'read',\n 'organization_product_list-members': 'read',\n 'organization_product_list-roles': 'read',\n 'organization_product_me': 'read',\n 'organization_product_revoke-access': 'write',\n 'organization_product_select': 'read',\n 'organization_product_set-access': 'write',\n 'organization_product_update': 'write',\n 'organization_public-keys_create': 'write',\n 'organization_public-keys_list': 'read',\n 'organization_public-keys_revoke': 'admin',\n 'organization_public-keys_update-scope': 'write',\n 'organization_public-routes_list': 'read',\n 'organization_reddit_install': 'read',\n 'organization_roles_create': 'write',\n 'organization_roles_delete': 'admin',\n 'organization_roles_get': 'read',\n 'organization_roles_list': 'read',\n 'organization_roles_update': 'write',\n 'organization_security_mfa_enable': 'write',\n 'organization_select': 'read',\n 'organization_support_thread_create': 'write',\n 'organization_support_thread_get': 'read',\n 'organization_support_thread_reply': 'write',\n 'organization_support_threads_list': 'read',\n 'organization_x_install': 'read',\n 'organization_youtube_install': 'read',\n 'playground_analytics_overview': 'read',\n 'playground_billing_entitlements': 'read',\n 'playground_billing_record-usage': 'write',\n 'playground_clickup_create-task': 'write',\n 'playground_clickup_get-last-webhook': 'read',\n 'playground_clickup_get-overview': 'read',\n 'playground_gdrive_get-last-change': 'read',\n 'playground_gdrive_read-file': 'read',\n 'playground_googleads_read-customer': 'read',\n 'playground_lifecycle_get-state': 'read',\n 'playground_lifecycle_list-events': 'read',\n 'playground_webhook_get-last': 'read',\n 'playground_workflow_echo': 'write',\n 'playground_workflow_echo-list': 'read',\n 'playground_workflow_ping': 'write',\n 'playground_workflow_subjects-list': 'read',\n 'realtime_archive_export': 'admin',\n 'realtime_archive_export_status': 'read',\n 'realtime_archive_get': 'read',\n 'realtime_grant_create': 'admin',\n 'realtime_grant_list': 'read',\n 'realtime_grant_revoke': 'admin',\n 'realtime_history_get': 'read',\n 'realtime_messages_publish': 'write',\n 'realtime_namespace_create': 'write',\n 'realtime_namespace_delete': 'admin',\n 'realtime_namespace_get': 'read',\n 'realtime_namespace_list': 'read',\n 'realtime_namespace_update': 'write',\n 'realtime_presence_enter': 'write',\n 'realtime_presence_get': 'read',\n 'realtime_presence_leave': 'write',\n 'realtime_presence_stats': 'read',\n 'realtime_presence_update': 'write',\n 'realtime_public_access_status': 'read',\n 'realtime_status_get': 'read',\n 'realtime_tokens_create': 'write',\n 'realtime_webhook_create': 'write',\n 'realtime_webhook_delete': 'admin',\n 'realtime_webhook_deliveries_list': 'read',\n 'realtime_webhook_get': 'read',\n 'realtime_webhook_list': 'read',\n 'realtime_webhook_secret_rotate': 'admin',\n 'realtime_webhook_update': 'write',\n 'support_agent_create': 'write',\n 'support_agent_get': 'read',\n 'support_agent_list': 'read',\n 'support_agent_update': 'write',\n 'support_attachment_create': 'write',\n 'support_attachment_finalize': 'write',\n 'support_label_create': 'write',\n 'support_label_list': 'read',\n 'support_message_create': 'write',\n 'support_message_list': 'read',\n 'support_response_escalate': 'write',\n 'support_response_get': 'read',\n 'support_response_list': 'read',\n 'support_rule_create': 'write',\n 'support_rule_delete': 'admin',\n 'support_rule_get': 'read',\n 'support_rule_list': 'read',\n 'support_rule_update': 'write',\n 'support_status_archive': 'admin',\n 'support_status_create': 'write',\n 'support_status_list': 'read',\n 'support_status_update': 'write',\n 'support_survey_archive': 'admin',\n 'support_survey_create': 'write',\n 'support_survey_get': 'read',\n 'support_survey_list': 'read',\n 'support_survey_publish': 'admin',\n 'support_survey_stats': 'read',\n 'support_survey_unpublish': 'admin',\n 'support_survey_update': 'write',\n 'support_thread_assign': 'write',\n 'support_thread_create': 'write',\n 'support_thread_get': 'read',\n 'support_thread_list': 'read',\n 'support_thread_status_set': 'write',\n 'support_thread_update': 'write',\n 'support_webhook_create': 'admin',\n 'support_webhook_delete': 'admin',\n 'support_webhook_deliveries_list': 'admin',\n 'support_webhook_get': 'admin',\n 'support_webhook_list': 'admin',\n 'support_webhook_redeliver': 'admin',\n 'support_webhook_rotate_secret': 'admin',\n 'support_webhook_update': 'admin',\n 'tracking_domains_create': 'write',\n 'tracking_domains_delete': 'admin',\n 'tracking_domains_get': 'read',\n 'tracking_domains_list': 'read',\n 'tracking_domains_verify': 'write',\n 'tracking_event-names_archive': 'write',\n 'tracking_event-names_list': 'read',\n 'tracking_event-names_unarchive': 'write',\n 'tracking_googleads_connection_status': 'read',\n 'tracking_googleads_conversion_actions': 'read',\n 'tracking_googleads_feedback_config_get': 'read',\n 'tracking_googleads_feedback_config_set': 'write',\n 'tracking_googleads_feedback_run': 'write',\n 'tracking_googleads_feedback_status': 'read',\n 'tracking_googleads_feedback_uploads': 'read',\n 'tracking_googleads_roas_report': 'read',\n 'tracking_googleads_sync_now': 'write',\n 'tracking_googleads_tracking_health': 'read',\n 'tracking_googleads_us_vs_platform': 'read',\n 'tracking_identity_health': 'read',\n 'tracking_install-domains_create': 'write',\n 'tracking_install-domains_delete': 'admin',\n 'tracking_install-domains_list': 'read',\n 'tracking_link-domains_create': 'write',\n 'tracking_link-domains_delete': 'admin',\n 'tracking_link-domains_list': 'read',\n 'tracking_live-events_list': 'read',\n 'tracking_profiles_delete': 'admin',\n 'tracking_profiles_export': 'read',\n 'tracking_profiles_get': 'read',\n 'tracking_profiles_list': 'read',\n 'tracking_reports_attributed_journey': 'read',\n 'tracking_reports_event_volume': 'read',\n 'tracking_reports_revenue_by_source': 'read',\n 'tracking_reports_source_people': 'read',\n 'tracking_snippets_get': 'read',\n 'users_apikeys_create': 'write',\n 'users_apikeys_list': 'read',\n 'users_apikeys_revoke': 'admin',\n 'users_audit_list': 'read',\n 'users_config_get': 'read',\n 'users_config_upsert': 'admin',\n 'users_factors_list': 'read',\n 'users_factors_reset': 'admin',\n 'users_keys_list': 'read',\n 'users_keys_revoke': 'admin',\n 'users_keys_rotate': 'admin',\n 'users_ops_retention_get': 'read',\n 'users_ops_slo_get': 'read',\n 'users_passkeys_list': 'read',\n 'users_passkeys_revoke': 'admin',\n 'users_sessions_get': 'read',\n 'users_sessions_impersonate': 'admin',\n 'users_sessions_list': 'read',\n 'users_sessions_revoke': 'admin',\n 'users_stats_get': 'read',\n 'users_users_ban': 'admin',\n 'users_users_create': 'write',\n 'users_users_delete': 'admin',\n 'users_users_export': 'admin',\n 'users_users_get': 'read',\n 'users_users_import': 'admin',\n 'users_users_invite': 'write',\n 'users_users_list': 'read',\n 'users_users_set_primary_identifier': 'write',\n 'users_users_unban': 'admin',\n 'users_users_update': 'write',\n 'users_waitlist_funnel': 'read',\n 'users_waitlist_import': 'write',\n 'users_waitlist_invite': 'write',\n 'users_waitlist_list': 'read',\n 'users_webhooks_create': 'write',\n 'users_webhooks_delete': 'admin',\n 'users_webhooks_deliveries_list': 'read',\n 'users_webhooks_get': 'read',\n 'users_webhooks_list': 'read',\n 'users_webhooks_rotate_secret': 'admin',\n 'users_webhooks_update': 'write',\n 'waitlist_config_get': 'read',\n 'waitlist_config_upsert': 'write',\n 'waitlist_embed_get': 'read',\n 'waitlist_invites_send': 'write',\n 'waitlist_signups_erase': 'write',\n 'waitlist_signups_funnel': 'read',\n 'waitlist_signups_list': 'read',\n 'workflow_cap_list': 'read',\n 'workflow_capability_get': 'read',\n 'workflow_capability_list': 'read',\n 'workflow_config_delete': 'admin',\n 'workflow_config_list': 'read',\n 'workflow_config_set': 'write',\n 'workflow_definition_create': 'write',\n 'workflow_definition_disable': 'write',\n 'workflow_definition_dryrun': 'read',\n 'workflow_definition_enable': 'write',\n 'workflow_definition_estimate': 'read',\n 'workflow_definition_export': 'read',\n 'workflow_definition_get': 'read',\n 'workflow_definition_import': 'write',\n 'workflow_definition_list': 'read',\n 'workflow_definition_publish': 'write',\n 'workflow_definition_update': 'write',\n 'workflow_definition_validate': 'read',\n 'workflow_dependency_list': 'read',\n 'workflow_grant_list': 'read',\n 'workflow_grant_request': 'write',\n 'workflow_health_list': 'read',\n 'workflow_health_ping': 'read',\n 'workflow_killswitch_get': 'read',\n 'workflow_killswitch_set': 'write',\n 'workflow_run_cancel': 'write',\n 'workflow_run_get': 'read',\n 'workflow_run_list': 'read',\n 'workflow_run_replay': 'write',\n 'workflow_run_replay_all': 'write',\n 'workflow_run_start': 'write',\n 'workflow_run_stats': 'read',\n 'workflow_run_test': 'write',\n 'workflow_template_apply': 'write',\n 'workflow_template_list': 'read',\n 'workflow_version_get': 'read',\n 'workflow_version_list': 'read',\n 'workflow_wait_get': 'read',\n 'workflow_wait_list': 'read',\n 'workflow_wait_list_all': 'read',\n 'workflow_wait_resolve': 'write',\n};\n\nexport const compositions: Record<string, ToolComposition> = {\n 'brain_cognition_digest': {\"label\":\"Run cognition digest\",\"completion_event\":\"brain/cognition.digest-completed\"},\n 'brain_cognition_sweep': {\"label\":\"Run cognition sweep\",\"completion_event\":\"brain/cognition.sweep-completed\"},\n 'brain_daemon_reingest': {\"label\":\"Reingest daemon source\",\"options\":{\"id\":\"brain_daemons_list\"}},\n 'brain_daemon_run': {\"label\":\"Run ingestion daemon\",\"options\":{\"id\":\"brain_daemons_list\"},\"completion_event\":\"brain/daemon.run-completed\"},\n 'brain_daemon_runs': {\"label\":\"List daemon runs\",\"options\":{\"id\":\"brain_daemons_list\"}},\n 'brain_daemon_status': {\"label\":\"Get daemon status\",\"options\":{\"id\":\"brain_daemons_list\"}},\n 'brain_daemons_list': {\"label\":\"List daemons\"},\n 'brain_knowledge_entity_memories': {\"pii\":[\"input.entity_ref\",\"output.entity.canonical_name\",\"output.entity.display_name\",\"output.entity.aliases\",\"output.entity.description\",\"output.memories[].content\",\"output.memories[].custom\"],\"label\":\"List entity memories\"},\n 'brain_knowledge_graph': {\"pii\":[\"output.nodes[].canonical_name\",\"output.nodes[].display_name\",\"output.nodes[].aliases\",\"output.nodes[].description\",\"output.edges[].reason\"],\"label\":\"Export knowledge graph\"},\n 'brain_knowledge_neighborhood': {\"pii\":[\"input.entity_ref\",\"output.root.canonical_name\",\"output.root.display_name\",\"output.root.aliases\",\"output.root.description\",\"output.entities[].canonical_name\",\"output.entities[].display_name\",\"output.entities[].aliases\",\"output.entities[].description\",\"output.relations[].source_display_name\",\"output.relations[].source_canonical_name\",\"output.relations[].target_display_name\",\"output.relations[].target_canonical_name\",\"output.relations[].reason\"],\"label\":\"Expand entity neighborhood\"},\n 'brain_knowledge_relations': {\"pii\":[\"input.source_entity\",\"input.target_entity\",\"output.relations[].source_display_name\",\"output.relations[].source_canonical_name\",\"output.relations[].target_display_name\",\"output.relations[].target_canonical_name\",\"output.relations[].reason\"],\"label\":\"List knowledge relations\"},\n 'brain_knowledge_search': {\"pii\":[\"input.name\",\"output.entities[].canonical_name\",\"output.entities[].display_name\",\"output.entities[].aliases\",\"output.entities[].description\"],\"label\":\"Search knowledge entities\"},\n 'brain_memory_add': {\"pii\":[\"input.content\",\"input.metadata\"],\"label\":\"Add memory\"},\n 'brain_memory_delete': {\"label\":\"Delete memory\"},\n 'brain_memory_get': {\"pii\":[\"output.content\"],\"label\":\"Get memory\"},\n 'brain_memory_list': {\"pii\":[\"output.memories[].content\",\"output.memories[].custom\"],\"label\":\"List memories\"},\n 'brain_memory_search': {\"pii\":[\"input.query\",\"output.profile[].content\",\"output.normal[].content\",\"output.proactive[].content\"],\"label\":\"Search memories\"},\n 'brain_memory_stats': {\"label\":\"Memory stats\"},\n 'brain_memory_update': {\"pii\":[\"input.content\"],\"label\":\"Update memory\"},\n 'brain_usage_report': {\"label\":\"Get usage report\"},\n 'content_metrics_post_series': {\"label\":\"Read post metrics\",\"options\":{\"id\":\"content_publications_list\"}},\n 'content_posts_create': {\"pii\":[\"output.author\"],\"label\":\"Create draft post\"},\n 'content_posts_submit': {\"pii\":[\"output.author\"],\"label\":\"Submit post for approval\",\"options\":{\"id\":\"content_posts_list\"}},\n 'content_publications_cancel': {\"label\":\"Cancel publication\",\"options\":{\"id\":\"content_publications_list\"}},\n 'content_publications_publish': {\"label\":\"Publish now\",\"options\":{\"postId\":\"content_posts_list\",\"channelId\":\"content_channels_list\"},\"completion_event\":\"content/publication.published\"},\n 'content_publications_schedule': {\"label\":\"Schedule publication\",\"options\":{\"postId\":\"content_posts_list\",\"channelId\":\"content_channels_list\"},\"completion_event\":\"content/publication.published\"},\n 'content_publications_validate': {\"label\":\"Validate post against channels\",\"options\":{\"postId\":\"content_posts_list\"}},\n 'mail_audience_create': {\"label\":\"Create audience\"},\n 'mail_audience_delete': {\"label\":\"Delete audience\"},\n 'mail_audience_get': {\"label\":\"Get audience\"},\n 'mail_audience_list': {\"label\":\"List audiences\"},\n 'mail_audience_update': {\"label\":\"Rename audience\"},\n 'mail_broadcast_cancel': {\"pii\":[\"output.from\",\"output.replyTo\"],\"label\":\"Cancel broadcast\"},\n 'mail_broadcast_create': {\"pii\":[\"input.from\",\"input.replyTo\",\"output.from\",\"output.replyTo\"],\"label\":\"Create broadcast\",\"options\":{\"audienceId\":\"mail_audience_list\",\"template.id\":\"mail_template_list\"}},\n 'mail_broadcast_delete': {\"label\":\"Delete broadcast\"},\n 'mail_broadcast_get': {\"pii\":[\"output.from\",\"output.replyTo\"],\"label\":\"Get broadcast\"},\n 'mail_broadcast_list': {\"pii\":[\"output.items[].from\",\"output.items[].replyTo\"],\"label\":\"List broadcasts\"},\n 'mail_broadcast_queue': {\"pii\":[\"output.from\",\"output.replyTo\"],\"label\":\"Queue broadcast\"},\n 'mail_broadcast_stats': {\"label\":\"Broadcast stats\"},\n 'mail_broadcast_update': {\"pii\":[\"input.from\",\"input.replyTo\",\"output.from\",\"output.replyTo\"],\"label\":\"Update broadcast\",\"options\":{\"audienceId\":\"mail_audience_list\",\"template.id\":\"mail_template_list\"}},\n 'mail_contact_create': {\"pii\":[\"input.email\",\"input.properties\",\"output.email\",\"output.properties\"],\"label\":\"Create contact\",\"options\":{\"audience_id\":\"mail_audience_list\"}},\n 'mail_contact_delete': {\"label\":\"Delete contact\",\"options\":{\"audience_id\":\"mail_audience_list\"}},\n 'mail_contact_get': {\"pii\":[\"output.email\",\"output.properties\"],\"label\":\"Get contact\",\"options\":{\"audience_id\":\"mail_audience_list\"}},\n 'mail_contact_list': {\"pii\":[\"output.data[].email\",\"output.data[].properties\"],\"label\":\"List contacts\",\"options\":{\"audience_id\":\"mail_audience_list\"}},\n 'mail_contact_update': {\"pii\":[\"input.properties\",\"output.email\",\"output.properties\"],\"label\":\"Update contact\",\"options\":{\"audience_id\":\"mail_audience_list\"}},\n 'mail_domain_allowed_list': {\"label\":\"List allowed apex domains\"},\n 'mail_domain_get': {\"label\":\"Get domain\"},\n 'mail_domain_list': {\"label\":\"List domains\"},\n 'mail_domain_verify': {\"label\":\"Verify domain\",\"completion_event\":\"mail/domain.verified\"},\n 'mail_email_cancel': {\"label\":\"Cancel email\"},\n 'mail_email_get': {\"pii\":[\"output.from\",\"output.to\",\"output.cc\",\"output.bcc\"],\"label\":\"Get email\"},\n 'mail_email_send': {\"pii\":[\"input.from\",\"input.to\",\"input.cc\",\"input.bcc\",\"input.reply_to\"],\"label\":\"Send email\",\"options\":{\"template.id\":\"mail_template_list\"},\"completion_event\":\"mail/email.delivered\"},\n 'mail_email_send_batch': {\"pii\":[\"input.emails[].from\",\"input.emails[].to\",\"input.emails[].cc\",\"input.emails[].bcc\",\"input.emails[].reply_to\"],\"label\":\"Send email batch\"},\n 'mail_email_update': {\"label\":\"Reschedule email\"},\n 'mail_reputation_get': {\"label\":\"Get reputation status\"},\n 'mail_stats_get': {\"label\":\"Get sending stats\"},\n 'mail_suppression_add': {\"pii\":[\"input.address\",\"output.address\"],\"label\":\"Suppress address\"},\n 'mail_suppression_list': {\"pii\":[\"input.q\",\"output.items[].address\"],\"label\":\"List suppressions\"},\n 'mail_suppression_remove': {\"pii\":[\"input.address\",\"output.address\"],\"label\":\"Unsuppress address\"},\n 'mail_template_create': {\"label\":\"Create template\"},\n 'mail_template_delete': {\"label\":\"Delete template\"},\n 'mail_template_get': {\"label\":\"Get template\"},\n 'mail_template_list': {\"label\":\"List templates\"},\n 'mail_template_publish': {\"label\":\"Publish template\"},\n 'mail_template_update': {\"label\":\"Update template\"},\n 'mail_usage_get': {\"label\":\"Get usage\"},\n 'playground_workflow_echo': {\"pii\":[\"input.note\",\"output.note\"],\"label\":\"Store workflow echo\",\"completion_event\":\"playground/workflow.echoed\"},\n 'playground_workflow_ping': {\"label\":\"Fire workflow ping\",\"completion_event\":\"playground/workflow.ping\"},\n 'playground_workflow_subjects-list': {\"pii\":[\"output.items[].display_name\"],\"label\":\"List workflow subjects\"},\n 'support_agent_create': {\"pii\":[\"input.lesslyUserId\",\"output.lesslyUserId\"],\"label\":\"Create agent profile\"},\n 'support_agent_get': {\"pii\":[\"output.lesslyUserId\"],\"label\":\"Get agent\",\"options\":{\"id\":\"support_agent_list\"}},\n 'support_agent_list': {\"pii\":[\"output.agents[].lesslyUserId\"],\"label\":\"List agents\"},\n 'support_agent_update': {\"pii\":[\"input.lesslyUserId\",\"output.lesslyUserId\"],\"label\":\"Update agent profile\",\"options\":{\"id\":\"support_agent_list\"}},\n 'support_label_create': {\"label\":\"Create label\"},\n 'support_label_list': {\"label\":\"List labels\"},\n 'support_message_create': {\"pii\":[\"input.body\",\"input.authorExternalId\",\"output.body\",\"output.authorExternalId\"],\"label\":\"Write message\",\"options\":{\"threadId\":\"support_thread_list\",\"authorAgentId\":\"support_agent_list\"}},\n 'support_message_list': {\"pii\":[\"output.messages[].body\",\"output.messages[].authorExternalId\"],\"label\":\"List messages\",\"options\":{\"threadId\":\"support_thread_list\"}},\n 'support_response_escalate': {\"pii\":[\"output.response.authorExternalId\",\"output.response.answers\",\"output.thread.title\",\"output.thread.authorExternalId\",\"output.thread.authorDisplay\"],\"label\":\"Escalate response into a thread\",\"options\":{\"id\":\"support_response_list\"}},\n 'support_response_get': {\"pii\":[\"output.authorExternalId\",\"output.answers\"],\"label\":\"Get survey response\",\"options\":{\"id\":\"support_response_list\"}},\n 'support_response_list': {\"pii\":[\"output.responses[].authorExternalId\",\"output.responses[].answers\"],\"label\":\"List survey responses\",\"options\":{\"surveyId\":\"support_survey_list\"}},\n 'support_rule_create': {\"label\":\"Create delivery rule\",\"options\":{\"surveyId\":\"support_survey_list\"}},\n 'support_rule_delete': {\"label\":\"Delete delivery rule\",\"options\":{\"id\":\"support_rule_list\"}},\n 'support_rule_get': {\"label\":\"Get delivery rule\",\"options\":{\"id\":\"support_rule_list\"}},\n 'support_rule_list': {\"label\":\"List delivery rules\",\"options\":{\"surveyId\":\"support_survey_list\"}},\n 'support_rule_update': {\"label\":\"Update delivery rule\",\"options\":{\"id\":\"support_rule_list\"}},\n 'support_status_archive': {\"label\":\"Archive status\",\"options\":{\"id\":\"support_status_list\",\"targetStatusId\":\"support_status_list\"}},\n 'support_status_create': {\"label\":\"Create status\"},\n 'support_status_list': {\"label\":\"List statuses\"},\n 'support_status_update': {\"label\":\"Update status\",\"options\":{\"id\":\"support_status_list\"}},\n 'support_survey_archive': {\"label\":\"Archive survey\",\"options\":{\"id\":\"support_survey_list\"}},\n 'support_survey_create': {\"label\":\"Create survey\"},\n 'support_survey_get': {\"label\":\"Get survey\",\"options\":{\"id\":\"support_survey_list\"}},\n 'support_survey_list': {\"label\":\"List surveys\"},\n 'support_survey_publish': {\"label\":\"Publish survey\",\"options\":{\"id\":\"support_survey_list\"}},\n 'support_survey_stats': {\"label\":\"Read survey stats\",\"options\":{\"id\":\"support_survey_list\"}},\n 'support_survey_unpublish': {\"label\":\"Unpublish survey\",\"options\":{\"id\":\"support_survey_list\"}},\n 'support_survey_update': {\"label\":\"Update survey\",\"options\":{\"id\":\"support_survey_list\"}},\n 'support_thread_assign': {\"pii\":[\"output.title\",\"output.authorExternalId\",\"output.authorDisplay\"],\"label\":\"Assign thread\",\"options\":{\"id\":\"support_thread_list\",\"agentId\":\"support_agent_list\"}},\n 'support_thread_create': {\"pii\":[\"input.title\",\"input.authorExternalId\",\"input.authorDisplay\",\"output.title\",\"output.authorExternalId\",\"output.authorDisplay\"],\"label\":\"Open support thread\",\"options\":{\"labelIds\":\"support_label_list\"}},\n 'support_thread_get': {\"pii\":[\"output.title\",\"output.authorExternalId\",\"output.authorDisplay\"],\"label\":\"Get support thread\",\"options\":{\"id\":\"support_thread_list\"}},\n 'support_thread_list': {\"pii\":[\"input.authorExternalId\",\"output.threads[].title\",\"output.threads[].authorExternalId\",\"output.threads[].authorDisplay\"],\"label\":\"List support threads\",\"options\":{\"labelIds\":\"support_label_list\",\"statusId\":\"support_status_list\",\"assignedAgentId\":\"support_agent_list\"}},\n 'support_thread_status_set': {\"pii\":[\"output.title\",\"output.authorExternalId\",\"output.authorDisplay\"],\"label\":\"Move thread to status\",\"options\":{\"id\":\"support_thread_list\",\"statusId\":\"support_status_list\"}},\n 'support_thread_update': {\"pii\":[\"input.title\",\"output.title\",\"output.authorExternalId\",\"output.authorDisplay\"],\"label\":\"Update thread\",\"options\":{\"id\":\"support_thread_list\",\"labelIds\":\"support_label_list\"}},\n 'users_apikeys_create': {\"label\":\"Create API key\",\"secrets\":[\"output.key\"]},\n 'users_apikeys_revoke': {\"label\":\"Revoke API key\",\"options\":{\"id\":\"users_apikeys_list\"}},\n 'users_audit_list': {\"pii\":[\"output.events[].ip\",\"output.events[].userAgent\",\"output.events[].metadata\"],\"label\":\"List audit events\"},\n 'users_factors_list': {\"label\":\"List second factors\",\"options\":{\"userId\":\"users_users_list\"}},\n 'users_factors_reset': {\"label\":\"Reset second factor\",\"options\":{\"userId\":\"users_users_list\"},\"completion_event\":\"users/mfa.reset-settled\"},\n 'users_passkeys_revoke': {\"label\":\"Revoke passkey\",\"options\":{\"userId\":\"users_users_list\",\"passkeyId\":\"users_passkeys_list\"}},\n 'users_sessions_list': {\"pii\":[\"output.sessions[].ip\",\"output.sessions[].userAgent\"],\"label\":\"List sessions\",\"options\":{\"userId\":\"users_users_list\"}},\n 'users_sessions_revoke': {\"label\":\"Revoke session\",\"options\":{\"userId\":\"users_users_list\",\"sessionId\":\"users_sessions_list\"}},\n 'users_stats_get': {\"label\":\"Get auth stats\"},\n 'users_users_ban': {\"pii\":[\"output.name\",\"output.imageUrl\",\"output.publicMetadata\",\"output.privateMetadata\",\"output.unsafeMetadata\",\"output.identifiers[].value\",\"output.identifiers[].valueCanonical\"],\"label\":\"Ban user\",\"options\":{\"userId\":\"users_users_list\"}},\n 'users_users_create': {\"pii\":[\"input.name\",\"input.imageUrl\",\"input.identifiers[].value\",\"input.publicMetadata\",\"input.privateMetadata\",\"input.unsafeMetadata\",\"output.name\",\"output.imageUrl\",\"output.publicMetadata\",\"output.privateMetadata\",\"output.unsafeMetadata\",\"output.identifiers[].value\",\"output.identifiers[].valueCanonical\"],\"label\":\"Create user\",\"secrets\":[\"input.password.phcHash\",\"input.password.foreignHash\"]},\n 'users_users_delete': {\"pii\":[\"output.name\",\"output.imageUrl\",\"output.publicMetadata\",\"output.privateMetadata\",\"output.unsafeMetadata\",\"output.identifiers[].value\",\"output.identifiers[].valueCanonical\"],\"label\":\"Delete user\",\"options\":{\"userId\":\"users_users_list\"}},\n 'users_users_get': {\"pii\":[\"output.name\",\"output.imageUrl\",\"output.publicMetadata\",\"output.privateMetadata\",\"output.unsafeMetadata\",\"output.identifiers[].value\",\"output.identifiers[].valueCanonical\"],\"label\":\"Get user\",\"options\":{\"userId\":\"users_users_list\"}},\n 'users_users_import': {\"pii\":[\"input.users[]\"],\"label\":\"Import users\",\"secrets\":[\"input.users[]\"]},\n 'users_users_invite': {\"pii\":[\"input.email\",\"input.name\",\"input.publicMetadata\",\"input.privateMetadata\"],\"label\":\"Invite user\"},\n 'users_users_list': {\"pii\":[\"input.query\",\"output.users[].name\",\"output.users[].imageUrl\",\"output.users[].publicMetadata\",\"output.users[].privateMetadata\",\"output.users[].unsafeMetadata\",\"output.users[].identifiers[].value\",\"output.users[].identifiers[].valueCanonical\"],\"label\":\"List users\"},\n 'users_users_set_primary_identifier': {\"pii\":[\"input.email\"],\"label\":\"Change primary email\",\"options\":{\"userId\":\"users_users_list\"}},\n 'users_users_unban': {\"pii\":[\"output.name\",\"output.imageUrl\",\"output.publicMetadata\",\"output.privateMetadata\",\"output.unsafeMetadata\",\"output.identifiers[].value\",\"output.identifiers[].valueCanonical\"],\"label\":\"Unban user\",\"options\":{\"userId\":\"users_users_list\"}},\n 'users_users_update': {\"pii\":[\"input.name\",\"input.imageUrl\",\"input.publicMetadata\",\"input.privateMetadata\",\"input.unsafeMetadata\",\"output.name\",\"output.imageUrl\",\"output.publicMetadata\",\"output.privateMetadata\",\"output.unsafeMetadata\",\"output.identifiers[].value\",\"output.identifiers[].valueCanonical\"],\"label\":\"Update user\",\"options\":{\"userId\":\"users_users_list\"}},\n 'users_waitlist_import': {\"pii\":[\"input.entries[].identifier\",\"input.entries[].name\",\"input.entries[].consent.ip\",\"input.entries[].consent.userAgent\",\"input.entries[].unsafeMetadata\"],\"label\":\"Import waitlist\"},\n 'users_waitlist_invite': {\"label\":\"Invite from waitlist\",\"options\":{\"userIds\":\"users_waitlist_list\"}},\n 'users_waitlist_list': {\"pii\":[\"output.entries[].identifier\",\"output.entries[].attribution\",\"output.entries[].consentProof\"],\"label\":\"List waitlist entries\"},\n};\n","/**\n * VERBATIM COPY of lessly-workspace `packages/sdk-governance/src/permission-match.ts`.\n *\n * `@lessly/sdk-governance` is private on GAR and `@lessly/sdk-app` is public on npmjs, so this\n * SDK cannot depend on it — and `can()` is only useful if it predicts the gateway's answer with\n * the gateway's own code. Everything below this header is byte-identical to the original.\n *\n * CHANGE ONLY TOGETHER WITH THE ORIGINAL. `permission-match.cases.json` is the shared corpus both\n * repositories run; a change that makes the two files disagree makes `can()` lie.\n */\n/**\n * Pure, segment-aware permission matcher — the single source of truth for RBAC\n * grant semantics.\n *\n * Operation keys are `{slug}_{entity}_{action}` split on `_` (depth-agnostic).\n * `*` is a wildcard only as a complete segment. Interior/leading `*` matches\n * exactly one segment; a trailing `*` matches one-or-more remaining segments.\n */\n\n/** Coarse sensitivity band an operation can declare. */\nexport type ToolLevel = 'read' | 'write' | 'admin';\n\n/**\n * An operation to authorize: its key, plus the optional level it declares.\n * An operation with no `level` is reachable only through key patterns.\n */\nexport interface Operation {\n key: string;\n level?: ToolLevel;\n}\n\nconst LEVELS: readonly string[] = ['read', 'write', 'admin'];\nconst LEVEL_PREFIX = 'level:';\n\n/**\n * True iff `p` is exactly `level:read`, `level:write` or `level:admin` — the\n * complete set of level patterns. Anything else (`level:*`, `level:owner`,\n * `level:`) is not one.\n */\nexport function isLevelPattern(p: string): boolean {\n return (\n typeof p === 'string' &&\n p.startsWith(LEVEL_PREFIX) &&\n LEVELS.includes(p.slice(LEVEL_PREFIX.length))\n );\n}\n\n/**\n * Returns true iff at least one grant pattern matches the operation.\n * Allow-list semantics, default-deny. O(grants × segments), no backtracking.\n *\n * A bare string operation carries no level, so level patterns never match it.\n * An `Operation` is matched by key patterns on `op.key` exactly as a string\n * would be, and additionally by `level:X` iff `op.level === X`.\n */\nexport function matchPermission(\n op: string | Operation,\n grants: readonly string[],\n): boolean {\n const key = typeof op === 'string' ? op : op.key;\n const level = typeof op === 'string' ? undefined : op.level;\n if (!key) return false; // blank/empty key ⇒ deny\n const keySegments = key.split('_');\n for (const grant of grants) {\n if (isLevelPattern(grant)) {\n if (level !== undefined && grant === LEVEL_PREFIX + level) return true;\n continue; // a level pattern is never a key pattern\n }\n if (matchSingle(keySegments, grant)) return true;\n }\n return false;\n}\n\nfunction matchSingle(keySegments: readonly string[], grant: string): boolean {\n const grantSegments = grant.split('_');\n const m = grantSegments.length;\n const n = keySegments.length;\n const trailing = grantSegments[m - 1] === '*';\n\n if (trailing) {\n // Leading grantSegments[0..m-2] match keySegments[0..m-2]; trailing '*'\n // consumes keySegments[m-1..] which must be >= 1 segment.\n if (n < m) return false;\n for (let i = 0; i < m - 1; i++) {\n const g = grantSegments[i];\n if (g !== '*' && g !== keySegments[i]) return false;\n }\n return true;\n }\n\n // No trailing '*' ⇒ exact segment-count match.\n if (n !== m) return false;\n for (let i = 0; i < m; i++) {\n const g = grantSegments[i];\n if (g !== '*' && g !== keySegments[i]) return false;\n }\n return true;\n}\n\n/** Allow/deny permission set. Both lists use the same wildcard semantics. */\nexport interface Permissions {\n allow: readonly string[];\n deny: readonly string[];\n}\n\n/**\n * Allow/deny decision: allowed iff some `allow` grant matches AND no `deny`\n * grant matches. Deny overrides allow (even `allow: ['*']`). Default-deny is\n * inherited from `matchPermission`: empty allow ⇒ false; empty deny ⇒ allow\n * decides; blank key ⇒ false.\n */\nexport function evaluate(op: string | Operation, perms: Permissions): boolean {\n return matchPermission(op, perms.allow) && !matchPermission(op, perms.deny);\n}\n\n/**\n * Structural validator for grant patterns (for UI/API input validation, e.g.\n * custom-role CRUD). Valid iff non-empty, no whitespace, no empty segments, and\n * every segment is either exactly `*` or a literal with no `*`. Does NOT enforce\n * a character set — tool-id grants may use arbitrary segment characters.\n */\nexport function isValidPattern(pattern: string): boolean {\n if (typeof pattern !== 'string' || pattern.length === 0) return false;\n if (/\\s/.test(pattern)) return false;\n // `level:X` is its own pattern form — `:` is not `_`, so it must be settled\n // before the segment rule splits the string.\n if (pattern.startsWith(LEVEL_PREFIX)) return isLevelPattern(pattern);\n const segments = pattern.split('_');\n for (const seg of segments) {\n if (seg.length === 0) return false; // no empty segments\n if (seg !== '*' && seg.includes('*')) return false; // partial-star is invalid\n }\n return true;\n}\n","import type { LesslyAppOptions, BindingsMap, Binding, ToolLevel, Operation } from './types';\nimport { executeRequest } from './request';\nimport { evaluate } from './permission-match';\nimport type { Operation as GrantOperation } from './permission-match';\n\n/** Where the access snapshot is in its lifecycle. `can()` is true-capable only in `ready`. */\nexport type AccessState = 'idle' | 'loading' | 'ready' | 'error';\n\n/** The caller's own membership of the active product, exactly as `/me` returns it (flat). */\nexport interface Access {\n role: string;\n roleId: string | null;\n roleName: string | null;\n roleType: 'system' | 'custom' | null;\n allow: string[];\n deny: string[];\n}\n\nexport interface AccessApi {\n /** Fetches once and caches. Concurrent calls share a single request. Rejects on failure. */\n load(): Promise<Access>;\n /** Synchronous PREDICTION of the gateway's answer. False whenever state !== 'ready'. */\n can(op: Operation | string): boolean;\n readonly role: string | undefined;\n readonly state: AccessState;\n /** Drops the cache and returns to `idle`; the next `load()` hits the network. */\n invalidate(): void;\n /** Fires on every state change. Returns an unsubscribe function. */\n subscribe(cb: () => void): () => void;\n}\n\n/** The catalog tool this whole surface is built on. */\nexport const ME_OPERATION_KEY = 'organization_product_me';\n\n/**\n * The route to `/me`, as a `Binding`, for the window in which the SDK ships BEFORE the production\n * catalog carries `organization_product_me`. `src/gen` is regenerated from the production catalog\n * and must never be hand-edited, so without this constant `load()` would need a second SDK\n * release to start working after Workspace deploys the endpoint.\n *\n * Rooted exactly as every other `organization_*` tool is in the real `bindings.gen`\n * (`organization_product_list-members` -> `/governance/api/v1/products/:productId/members`). The\n * generated binding WINS whenever it exists — the catalog is the authority, this is the stopgap —\n * and `access.test.ts` pins the constant against `fixtures/catalog.sample.json` so the day the\n * catalog does carry the tool, a divergence fails a test instead of 404-ing in a browser.\n */\nexport const ME_ROUTE: Binding = {\n method: 'GET',\n path: '/governance/api/v1/products/:productId/me',\n readOnly: true,\n operationKey: ME_OPERATION_KEY,\n level: 'read',\n};\n\n/**\n * Roles the gateway lets past without consulting grants at all. Mirroring that here is what keeps\n * `can()` from greying out an owner's own buttons on a product whose role rows carry no explicit\n * allow list.\n */\nconst ELEVATED_ROLES: ReadonlySet<string> = new Set(['owner', 'admin']);\n\n/** Find the /me binding in whatever the catalog generated, by operationKey — never by path. */\nfunction findMeBinding(bindings: BindingsMap): Binding | undefined {\n for (const resources of Object.values(bindings)) {\n for (const actions of Object.values(resources)) {\n for (const binding of Object.values(actions)) {\n if (binding.operationKey === ME_OPERATION_KEY) return binding;\n }\n }\n }\n return undefined;\n}\n\nfunction asStringArray(value: unknown): string[] {\n return Array.isArray(value) ? value.filter((v): v is string => typeof v === 'string') : [];\n}\n\nfunction asRoleType(value: unknown): Access['roleType'] {\n return value === 'system' || value === 'custom' ? value : null;\n}\n\n/**\n * Normalise the wire payload. Defensive rather than trusting: a missing `role` becomes `''`,\n * which is neither owner nor admin and matches no grant, so a malformed response fails CLOSED\n * instead of throwing inside a render.\n */\nfunction normalize(raw: unknown): Access {\n const r = (typeof raw === 'object' && raw !== null ? raw : {}) as Record<string, unknown>;\n return {\n role: typeof r.role === 'string' ? r.role : '',\n roleId: typeof r.roleId === 'string' ? r.roleId : null,\n roleName: typeof r.roleName === 'string' ? r.roleName : null,\n roleType: asRoleType(r.roleType),\n allow: asStringArray(r.allow),\n deny: asStringArray(r.deny),\n };\n}\n\nexport function createAccess(\n opts: LesslyAppOptions,\n bindings: BindingsMap,\n operations: Record<string, ToolLevel>,\n): AccessApi {\n let snapshot: Access | undefined;\n let inflight: Promise<Access> | undefined;\n let state: AccessState = 'idle';\n const subscribers = new Set<() => void>();\n\n function setState(next: AccessState): void {\n if (next === state) return;\n state = next;\n // Copy first: a subscriber may unsubscribe itself from inside its own callback.\n for (const cb of [...subscribers]) cb();\n }\n\n return {\n load(): Promise<Access> {\n if (snapshot) return Promise.resolve(snapshot);\n if (inflight) return inflight;\n setState('loading');\n const binding = findMeBinding(bindings) ?? ME_ROUTE;\n const request = executeRequest(opts, binding, { productId: opts.productId }).then(\n (raw) => {\n const next = normalize(raw);\n snapshot = next;\n inflight = undefined;\n setState('ready');\n return next;\n },\n (err: unknown) => {\n // The failure is NOT cached: an errored load must be retryable, and `can()` stays\n // false meanwhile because state is 'error'.\n inflight = undefined;\n setState('error');\n throw err;\n },\n );\n inflight = request;\n return request;\n },\n\n can(op: Operation | string): boolean {\n if (state !== 'ready' || !snapshot) return false;\n if (ELEVATED_ROLES.has(snapshot.role)) return true;\n const key = typeof op === 'string' ? op : op.operationKey;\n const level = typeof op === 'string' ? operations[key] : op.level;\n // The property is OMITTED, not set to undefined: `exactOptionalPropertyTypes` forbids the\n // latter, and the matcher's contract is that an operation with no level is reachable only\n // through key patterns — exactly what the gateway does with an uncatalogued key.\n const subject: GrantOperation = level === undefined ? { key } : { key, level };\n return evaluate(subject, { allow: snapshot.allow, deny: snapshot.deny });\n },\n\n get role(): string | undefined {\n return snapshot?.role;\n },\n\n get state(): AccessState {\n return state;\n },\n\n invalidate(): void {\n snapshot = undefined;\n inflight = undefined;\n setState('idle');\n },\n\n subscribe(cb: () => void): () => void {\n subscribers.add(cb);\n return () => { subscribers.delete(cb); };\n },\n };\n}\n","import type {\n LesslyAppOptions, BindingsMap, ResourceBindings, ActionBindings, Binding,\n LesslyStream, LesslyStreamOpener, WsBinding, Operation,\n} from './types';\nimport { executeRequest } from './request';\nimport { connectStream } from './connectStream';\nimport { splitToolName, ROOT_RESOURCE } from './name';\nimport type { SplitTool } from './name';\nimport { bindings } from '../gen/bindings.gen';\nimport { operations } from '../gen/manifest.gen';\nimport { createAccess } from './access';\nimport type { AccessApi } from './access';\nimport type { GeneratedClient } from '../gen/client.gen';\n\nexport interface LesslyClientBase extends LesslyStreamOpener {\n call(toolName: string, input?: Record<string, unknown>): Promise<unknown>;\n /** The caller's own access to the active product — a PREDICTION of the gateway's answer,\n * never a substitute for it. See `createAccess`. */\n readonly access: AccessApi;\n}\n\n/**\n * The call itself, with the operation's identity hung on it as own properties. A caller — and the\n * access check built on top of this SDK — can then ask a METHOD what it is\n * (`sdk.mail.domains.create.level`) instead of rebuilding a tool name from the accessor path,\n * which is lossy (a hyphenated resource joins several id segments) and would put a second copy of\n * the split rule into consumer code. `Object.assign` rather than a class or a Proxy so the result\n * stays an ordinary function: it survives destructuring, and `sdk.x.y.z` still `===` itself\n * because the caller-facing caching below is unchanged.\n */\nfunction actionFn(opts: LesslyAppOptions, binding: Binding): ((input?: Record<string, unknown>) => Promise<unknown>) & Operation {\n return Object.assign(\n (input?: Record<string, unknown>) => executeRequest(opts, binding, input),\n { operationKey: binding.operationKey, level: binding.level },\n );\n}\n\nfunction resourceProxy(opts: LesslyAppOptions, actions: ActionBindings): unknown {\n const cache: Record<string, unknown> = {};\n return new Proxy(cache, {\n get(_t, prop) {\n if (typeof prop !== 'string' || !Object.hasOwn(actions, prop)) return undefined;\n return (cache[prop] ??= actionFn(opts, actions[prop]!));\n },\n });\n}\n\nfunction namespaceProxy(opts: LesslyAppOptions, resources: ResourceBindings): unknown {\n const cache: Record<string, unknown> = {};\n return new Proxy(cache, {\n get(_t, prop) {\n // $root is a wire-level key, never an accessor: exposing it would make\n // sdk.organization.$root.list() an undocumented alias for sdk.organization.list().\n if (typeof prop !== 'string' || prop === ROOT_RESOURCE) return undefined;\n if (Object.hasOwn(resources, prop)) return (cache[prop] ??= resourceProxy(opts, resources[prop]!));\n // Entity-less op hoisted onto the namespace: sdk.organization.list().\n const root = resources[ROOT_RESOURCE];\n if (root && Object.hasOwn(root, prop)) return (cache[prop] ??= actionFn(opts, root[prop]!));\n return undefined;\n },\n });\n}\n\nexport function createLesslyApp(opts: LesslyAppOptions): GeneratedClient & LesslyClientBase {\n const map: BindingsMap = bindings;\n const nsCache: Record<string, unknown> = {};\n // Lazy: an App that never asks about access must not pay for the module's state, and creating\n // a client must never imply a network call. One instance per client, so two clients on two\n // products cannot see each other's snapshot.\n let accessApi: AccessApi | undefined;\n const base: LesslyClientBase = {\n get access(): AccessApi {\n return (accessApi ??= createAccess(opts, map, operations));\n },\n // The whole streaming surface of the client. Streams are NOT reachable through the request\n // proxy: a socket is not a promise-returning call, and hanging one off `sdk.<ns>.<res>.<act>`\n // would make two very different lifetimes look identical at the call site. The generated\n // `<tool>Connect` factories carry the binding and call this.\n openStream(binding: WsBinding, input?: Record<string, unknown>): LesslyStream {\n return connectStream(opts, binding, input);\n },\n call(toolName, input) {\n // Delegates to the single shipped copy of the split rule rather than inlining a fourth\n // one. The try/catch preserves the existing contract exactly: any unusable id yields a\n // REJECTED PROMISE carrying `Unknown tool: <id>`, never a synchronous throw and never\n // splitToolName's own message.\n let split: SplitTool;\n try {\n split = splitToolName(toolName);\n } catch {\n return Promise.reject(new Error(`Unknown tool: ${toolName}`));\n }\n // splitToolName performs no reserved-word check (see its doc comment): a caller-supplied\n // literal \"$root\" segment reports resource: '$root', not null. Only a genuine 2-segment id\n // (resource: null) may address the hoisted bucket — a literal '$root' segment must not, even\n // though $root IS a legitimate own key of the resource bucket below (that's why this check\n // must stay separate from, and precede, the Object.hasOwn walk).\n if (split.resource === ROOT_RESOURCE) return Promise.reject(new Error(`Unknown tool: ${toolName}`));\n // Mirror the Object.hasOwn discipline resourceProxy/namespaceProxy already use above: a raw\n // bracket read into these plain object literals would resolve a caller-chosen action of\n // \"constructor\"/\"toString\"/\"valueOf\"/etc to a truthy Object.prototype member, sailing past\n // the `if (!binding)` guard below and into executeRequest with a non-Binding value.\n const nsMap = Object.hasOwn(map, split.namespace) ? map[split.namespace]! : undefined;\n const resKey = split.resource ?? ROOT_RESOURCE;\n const actions = nsMap && Object.hasOwn(nsMap, resKey) ? nsMap[resKey]! : undefined;\n const binding = actions && Object.hasOwn(actions, split.action) ? actions[split.action]! : undefined;\n if (!binding) return Promise.reject(new Error(`Unknown tool: ${toolName}`));\n return executeRequest(opts, binding, input);\n },\n };\n return new Proxy(base as unknown as Record<string, unknown>, {\n get(target, prop) {\n if (typeof prop === 'string' && Object.hasOwn(map, prop)) return (nsCache[prop] ??= namespaceProxy(opts, map[prop]!));\n return (target as Record<string, unknown>)[prop as string];\n },\n }) as unknown as GeneratedClient & LesslyClientBase;\n}\n","import type { Operation, ToolLevel } from './types';\n\nconst LEVELS: readonly string[] = ['read', 'write', 'admin'];\n\nconst isNonEmptyString = (value: unknown): value is string =>\n typeof value === 'string' && value.trim() !== '';\n\nconst isLevel = (value: unknown): value is ToolLevel =>\n typeof value === 'string' && LEVELS.includes(value);\n\nfunction warnDegenerate(input: unknown): void {\n if (typeof process !== 'undefined' && process.env?.NODE_ENV !== 'production') {\n console.warn('accessReason: degenerate input', input);\n }\n}\n\n/**\n * The one reason string every App shows on a gated control (APP-012).\n *\n * Both values come from the generated method, so the sentence cannot drift when the catalog\n * re-levels a tool. It names the operation key as well as the level because a level alone does not\n * identify a grant — a screenful of controls can all require `write` — and an admin grants by\n * level AND by exact key, so the user has to be able to pass on both.\n *\n * It explains ONE operation. Picking which one — the first that `can()` denied, among the several\n * a button performs — is the caller's job: the rule differs between a button that runs every\n * operation and one that dispatches to a single one, so this takes no array.\n *\n * A bare key is the fallback for a control with no generated method to point at (a runtime probe,\n * an operation no method covers). It drops the level rather than inventing one: there is nothing\n * to read it from, and `level:undefined` in front of a user is worse than saying less. It is a\n * DEGRADATION, not an equal input — an App whose every gate holds an `Operation` never reaches for\n * it, and that is the normal shape, not an omission.\n *\n * It never throws and never renders the words `undefined` or `null`. A render helper that crashes\n * takes a whole screen with it, so the input is checked at runtime rather than trusted from the\n * type: an object with a usable key but no usable level degrades to the key-only sentence, and\n * anything with no usable key at all falls back to \"Not available for your role.\" — plus one\n * `console.warn` outside production, because the caller has a bug worth seeing. The public type\n * stays `Operation | string`; the widening is internal, and passing anything else is still wrong.\n */\nexport function accessReason(op: Operation | string): string {\n if (isNonEmptyString(op)) {\n return `Requires access to ${op}. Ask an admin of this product.`;\n }\n\n // A generated method is a callable that CARRIES `operationKey`/`level`, so `typeof` is\n // 'function', not 'object' — the normal input would fall through a plain object check.\n if (op !== null && (typeof op === 'object' || typeof op === 'function')) {\n const { operationKey, level } = op as { operationKey?: unknown; level?: unknown };\n if (isNonEmptyString(operationKey)) {\n if (isLevel(level)) {\n return `Requires level:${level} (${operationKey}). Ask an admin of this product.`;\n }\n warnDegenerate(op);\n return `Requires access to ${operationKey}. Ask an admin of this product.`;\n }\n }\n\n warnDegenerate(op);\n return 'Not available for your role. Ask an admin of this product.';\n}\n","import type { ToolLevel } from './types';\nimport { operations as generated } from '../gen/manifest.gen';\n\n/**\n * Every operation key the catalog knows, with the level it requires.\n *\n * The generated file is regenerated at publish time from the live catalog, so this map re-levels\n * with the platform rather than with anyone's memory. Read a level from here when there is no\n * generated method to read `op.level` from — a test double, a runtime probe — instead of typing\n * the level as a literal or keeping a lookup table in the App (APP-012).\n *\n * Only a re-export: the generated file stays the single source, this narrows it to `Readonly` so\n * a consumer cannot write into the shared object.\n */\nexport const operations: Readonly<Record<string, ToolLevel>> = generated;\n","import type { ToolComposition } from './types';\nimport { compositions as generated } from '../gen/manifest.gen';\n\n/**\n * Every catalog operation usable as a COMPOSER STEP, with the composition contract it declared.\n *\n * Presence is the signal: a key is here exactly when the catalog gave the tool a `composition`,\n * and the value may legitimately be `{}`. So ask `'mail_domain_create' in compositions` — a\n * truthiness test on `label` (or any other member) would drop a perfectly composable step.\n *\n * The generated file is regenerated at publish time from the live catalog, so the map tracks the\n * platform rather than anyone's memory, and the values are carried verbatim — a key the platform\n * adds reaches the App even before this SDK's type names it.\n *\n * Only a re-export: the generated file stays the single source, this narrows it to `Readonly` so\n * a consumer cannot write into the shared object.\n */\nexport const compositions: Readonly<Record<string, ToolComposition>> = generated;\n"]}
1
+ {"version":3,"sources":["../src/runtime/errors.ts","../src/runtime/csrf.ts","../src/runtime/request.ts","../src/runtime/connectStream.ts","../src/runtime/name.ts","../src/gen/manifest.gen.ts","../src/runtime/permission-match.ts","../src/runtime/access.ts","../src/runtime/createLesslyApp.ts","../src/runtime/access-reason.ts","../src/runtime/operations.ts","../src/runtime/compositions.ts"],"names":["bindings","operations","LEVELS","compositions"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * The `code`s the gateway emits when it refused a request BECAUSE OF THE CALLER'S ACCESS — the\n * exact set `can()` predicts. A 403 outside this set (`tenant_blocked`, a CSRF failure, a\n * suspended product) is not an access decision and must not be rendered as one: showing \"you\n * lack permission\" for a blocked tenant sends the user to an admin who can do nothing about it.\n */\nconst ACCESS_DENIED_CODES: ReadonlySet<string> = new Set([\n 'role_denied',\n 'operation_uncatalogued',\n 'no_tool_permission',\n]);\n\nexport class LesslyApiError extends Error {\n readonly status: number;\n readonly code: string | null;\n readonly body: unknown;\n /** True iff this is the gateway refusing the call over the caller's access. See ACCESS_DENIED_CODES. */\n readonly accessDenied: boolean;\n constructor(status: number, code: string | null, message: string, body: unknown) {\n super(message);\n this.name = 'LesslyApiError';\n this.status = status;\n this.code = code;\n this.body = body;\n this.accessDenied = status === 403 && code !== null && ACCESS_DENIED_CODES.has(code);\n }\n}\n\nexport function parseErrorBody(body: unknown, status: number): LesslyApiError {\n const b = (typeof body === 'object' && body !== null ? body : null) as\n | { message?: string; code?: string; error?: { code?: string; message?: string } }\n | null;\n const code = b?.error?.code ?? b?.code ?? null;\n const message = b?.error?.message ?? b?.message ?? `Request failed with status ${status}`;\n return new LesslyApiError(status, code, message, body);\n}\n\n/**\n * True iff `err` is the gateway refusing a call over the caller's access.\n *\n * Deliberately structural after the `instanceof` fast path: an App is composed into the shell\n * through Module Federation and `@lessly/sdk-app` is not a shared singleton, so the error a\n * caller catches is routinely an instance of the OTHER copy's class. `instanceof` alone would\n * report false there and an App would render a red crash for an ordinary permission refusal.\n */\nexport function isAccessDenied(err: unknown): boolean {\n if (err instanceof LesslyApiError) return err.accessDenied;\n if (typeof err !== 'object' || err === null) return false;\n const { status, code } = err as { status?: unknown; code?: unknown };\n return status === 403 && typeof code === 'string' && ACCESS_DENIED_CODES.has(code);\n}\n","const CSRF_COOKIE = 'lessly_csrf';\n\n// Reads the JS-readable half of the double-submit CSRF pair, mirroring the\n// workspace shell's csrfFetch. lessly_csrf is intentionally non-httpOnly.\nexport function readCsrfCookie(): string | null {\n if (typeof document === 'undefined' || !document) return null;\n const match = document.cookie.match(new RegExp(`(?:^|; )${CSRF_COOKIE}=([^;]*)`));\n return match ? decodeURIComponent(match[1]!) : null;\n}\n","import type { Binding, RouteSpec, LesslyAppOptions } from './types';\nimport { LesslyApiError, parseErrorBody } from './errors';\nimport { readCsrfCookie } from './csrf';\n\nconst MUTATING = new Set<Binding['method']>(['POST', 'PUT', 'PATCH', 'DELETE']);\n\nexport interface ResolvedRequest {\n path: string;\n query: Record<string, unknown>;\n body: Record<string, unknown> | undefined;\n}\n\nfunction pathTokenNames(path: string): Set<string> {\n const names = new Set<string>();\n const re = /:([A-Za-z0-9_]+)/g;\n let m: RegExpExecArray | null;\n while ((m = re.exec(path)) !== null) names.add(m[1]!);\n return names;\n}\n\nfunction placementFor(key: string, binding: RouteSpec, tokens: Set<string>): 'path' | 'query' | 'body' {\n if (binding.params) {\n const spec = binding.params.find((p) => p.name === key);\n if (spec) return spec.in;\n }\n if (tokens.has(key)) return 'path';\n return binding.method === 'GET' || binding.method === 'DELETE' ? 'query' : 'body';\n}\n\nexport function resolveRequest(binding: RouteSpec, input: Record<string, unknown> = {}): ResolvedRequest {\n const tokens = pathTokenNames(binding.path);\n const query: Record<string, unknown> = {};\n const body: Record<string, unknown> = {};\n const pathValues: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(input)) {\n const where = placementFor(k, binding, tokens);\n if (where === 'path') pathValues[k] = v;\n else if (where === 'query') query[k] = v;\n else body[k] = v;\n }\n let path = binding.path;\n for (const token of tokens) {\n const val = pathValues[token];\n if (val === undefined) throw new Error(`Missing path parameter \"${token}\" for ${binding.path}`);\n path = path.replace(`:${token}`, encodeURIComponent(String(val)));\n }\n return { path, query, body: Object.keys(body).length > 0 ? body : undefined };\n}\n\nfunction documentBase(baseUrl: string): string {\n // A relative baseUrl (e.g. \"/api\" behind the same origin as the app) only has\n // meaning next to a document. new URL() would otherwise fail with the opaque\n // \"Invalid URL\", so name the cause here.\n const href = (globalThis as { location?: { href?: string } }).location?.href;\n if (typeof href !== 'string' || href === '') {\n throw new Error(\n `@lessly/sdk-app: relative baseUrl \"${baseUrl}\" cannot be resolved outside a browser ` +\n '(globalThis.location is unavailable). Pass an absolute baseUrl, e.g. \"https://api.lessly.dev\".',\n );\n }\n return href;\n}\n\nfunction isAbsolute(baseUrl: string): boolean {\n try { new URL(baseUrl); return true; } catch { return false; }\n}\n\nexport function buildUrl(baseUrl: string, path: string, query: Record<string, unknown>): string {\n const base = baseUrl.replace(/\\/$/, '') + path;\n const url = isAbsolute(baseUrl) ? new URL(base) : new URL(base, documentBase(baseUrl));\n for (const [k, v] of Object.entries(query)) {\n if (v === undefined || v === null) continue;\n if (Array.isArray(v)) v.forEach((item) => url.searchParams.append(k, String(item)));\n else url.searchParams.append(k, String(v));\n }\n return url.toString();\n}\n\nfunction safeJson(text: string): unknown {\n try { return JSON.parse(text); } catch { return text; }\n}\n\nexport async function executeRequest(\n opts: LesslyAppOptions,\n binding: RouteSpec,\n input?: Record<string, unknown>,\n): Promise<unknown> {\n const { path, query, body } = resolveRequest(binding, input);\n const url = buildUrl(opts.baseUrl, path, query);\n const doFetch = opts.fetch ?? globalThis.fetch;\n const headers = new Headers();\n headers.set('X-Product-Id', opts.productId);\n if (body !== undefined) headers.set('Content-Type', 'application/json');\n if (MUTATING.has(binding.method)) {\n const token = (opts.getCsrfToken ?? readCsrfCookie)();\n // No token means the double-submit pair is broken: fail loudly here instead\n // of sending a doomed mutation and surfacing an opaque 403. No retry, no\n // hidden refresh — the caller must re-establish the session.\n if (!token) {\n throw new LesslyApiError(\n 0,\n 'csrf_cookie_missing',\n `CSRF cookie \"lessly_csrf\" is missing; the session must be re-established before mutating requests (${binding.method} ${binding.path}).`,\n null,\n );\n }\n headers.set('X-CSRF-Token', token);\n }\n const requestInit: RequestInit = { method: binding.method, headers, credentials: 'include' };\n if (body !== undefined) requestInit.body = JSON.stringify(body);\n const res = await doFetch(url, requestInit);\n const text = await res.text();\n const parsed = text ? safeJson(text) : null;\n if (!res.ok) throw parseErrorBody(parsed, res.status);\n return parsed;\n}\n","import type {\n LesslyAppOptions,\n LesslyStream,\n StreamCloseInfo,\n StreamData,\n WebSocketLike,\n WsBinding,\n} from './types';\nimport { resolveRequest, buildUrl } from './request';\n\n/**\n * Turn the http(s) URL the REST path builder produces into its ws(s) counterpart. Only the\n * scheme changes: host, port, path and query are exactly what `buildUrl` resolved, including a\n * relative `baseUrl` resolved against the document. Any other scheme is left untouched and will\n * fail loudly in the WebSocket constructor rather than silently connecting somewhere else.\n */\nfunction toWsUrl(url: string): string {\n if (url.startsWith('https:')) return `wss:${url.slice('https:'.length)}`;\n if (url.startsWith('http:')) return `ws:${url.slice('http:'.length)}`;\n return url;\n}\n\n/**\n * Open the sanctioned streaming connection for a ws-bound tool.\n *\n * Session cookies ride the upgrade automatically, so this sends NOTHING extra: no CSRF token (an\n * upgrade is not an HTTP mutation) and no product header — a browser WebSocket cannot set headers\n * at all, and the gateway's upgrade path authenticates from the session alone.\n *\n * Params are placed exactly as for a GET request: `:token` segments are substituted into the\n * path, everything else becomes a query parameter. A param declared `in: 'body'` has no meaning\n * on an upgrade and is treated as a query parameter rather than silently dropped.\n *\n * There is no reconnection, backoff or heartbeat logic here on purpose (see `LesslyStream`).\n */\nexport function connectStream(\n opts: LesslyAppOptions,\n binding: WsBinding,\n input?: Record<string, unknown>,\n): LesslyStream {\n const restLike = { method: 'GET' as const, path: binding.path, ...(binding.params ? { params: binding.params } : {}) };\n const { path, query, body } = resolveRequest(restLike, input);\n const url = toWsUrl(buildUrl(opts.baseUrl, path, { ...query, ...(body ?? {}) }));\n\n const Ctor = opts.WebSocket ?? (globalThis as { WebSocket?: LesslyAppOptions['WebSocket'] }).WebSocket;\n if (!Ctor) {\n throw new Error(\n `@lessly/sdk-app: WebSocket is unavailable in this environment, so the stream to \"${binding.path}\" ` +\n 'cannot be opened. Streaming requires a browser; pass options.WebSocket to supply an implementation.',\n );\n }\n const socket: WebSocketLike = new Ctor(url);\n\n const messageSubs = new Set<(data: StreamData) => void>();\n const closeSubs = new Set<(info: StreamCloseInfo) => void>();\n // Frames handed to `send` before the socket is OPEN. A browser WebSocket throws\n // InvalidStateError on an early send, and \"open the stream, then immediately send\" is the\n // normal shape of a terminal-style protocol — so hold them here and flush on open, in order.\n let pending: StreamData[] | null = [];\n\n socket.addEventListener('open', () => {\n const queued = pending ?? [];\n pending = null;\n for (const frame of queued) socket.send(frame);\n });\n socket.addEventListener('message', (ev: { data: StreamData }) => {\n for (const cb of [...messageSubs]) cb(ev.data);\n });\n socket.addEventListener('close', (ev: { code?: number; reason?: string; wasClean?: boolean }) => {\n pending = null;\n const info: StreamCloseInfo = { code: ev.code ?? 1006, reason: ev.reason ?? '', wasClean: ev.wasClean ?? false };\n for (const cb of [...closeSubs]) cb(info);\n });\n\n return {\n send(data) {\n if (pending !== null) { pending.push(data); return; }\n // `pending === null` after a close too: dropping the frame is deliberate — a closed socket\n // must not resurrect queued work, and throwing here would punish a race the caller cannot win.\n if (socket.readyState === 1) socket.send(data);\n },\n close(code, reason) {\n pending = null;\n socket.close(code, reason);\n },\n onMessage(cb) { messageSubs.add(cb); return () => messageSubs.delete(cb); },\n onClose(cb) { closeSubs.add(cb); return () => closeSubs.delete(cb); },\n get readyState() { return socket.readyState; },\n };\n}\n","export interface SplitTool { namespace: string; resource: string | null; action: string }\n\n/**\n * Reserved resource key under which `bindings.gen.ts` nests entity-less operations, so\n * BindingsMap keeps its three-level shape while the accessor hoists to sdk.<ns>.<action>().\n * The generator only ever emits this key when `splitToolName` reports `resource: null`, because\n * `validateCatalog` (scripts/lib/validate-catalog.ts) rejects any catalog id whose segments fall\n * outside [a-z0-9-] before `generate()` emits anything — but that validation runs generator-side\n * only. `splitToolName` here performs no such check: it runs against whatever string a caller\n * passes to `sdk.call()`, so this module cannot itself guarantee a literal \"$root\" segment in\n * caller input is unreachable. Mirrored in scripts/lib/naming.ts; a parity test pins the two equal.\n */\nexport const ROOT_RESOURCE = '$root';\n\n/**\n * Split a tool id: first segment = namespace, last = action, middle segments joined with '-'\n * = resource. A 2-segment id is an entity-less operation on the namespace and reports\n * `resource: null` — NOT '', which would silently nest the op under an empty-string key and\n * dispatch through a bogus `sdk.organization[''].list()`-shaped path. A 1-segment id carries no\n * action and is rejected.\n *\n * Mirrors the generator's scripts/lib/naming.ts — see the parity test in name.test.ts.\n */\nexport function splitToolName(name: string): SplitTool {\n const seg = name.split('_');\n if (seg.length < 2) {\n throw new Error(`Tool \"${name}\" must be {extension}_{resource}_{action} or {extension}_{action}`);\n }\n return {\n namespace: seg[0]!,\n action: seg[seg.length - 1]!,\n resource: seg.length === 2 ? null : seg.slice(1, -1).join('-'),\n };\n}\n","// AUTOGENERATED by scripts/generate.ts — do not edit.\nimport type { ToolLevel, ToolComposition } from '../runtime/types';\n\nexport const namespaces = ['analytics', 'brain', 'consent', 'content', 'deployment', 'mail', 'observe', 'organization', 'playground', 'realtime', 'support', 'tracking', 'users', 'waitlist', 'workflow'] as const;\n\nexport const operations: Record<string, ToolLevel> = {\n 'analytics_catalog_get': 'read',\n 'analytics_dashboard_create': 'write',\n 'analytics_dashboard_delete': 'write',\n 'analytics_dashboard_get': 'read',\n 'analytics_dashboard_list': 'read',\n 'analytics_dashboard_run': 'read',\n 'analytics_dashboard_update': 'write',\n 'analytics_funnel_run': 'read',\n 'analytics_insight_create': 'write',\n 'analytics_insight_delete': 'write',\n 'analytics_insight_get': 'read',\n 'analytics_insight_list': 'read',\n 'analytics_insight_run': 'read',\n 'analytics_insight_update': 'write',\n 'analytics_metric_query': 'read',\n 'analytics_person_timeline': 'read',\n 'analytics_query_run': 'read',\n 'analytics_retention_run': 'read',\n 'brain_backup_create': 'write',\n 'brain_backup_restore': 'admin',\n 'brain_backup_status': 'read',\n 'brain_backups_list': 'read',\n 'brain_clickup_channels_list': 'read',\n 'brain_clickup_connections_list': 'read',\n 'brain_clickup_lists_list': 'read',\n 'brain_clickup_spaces_list': 'read',\n 'brain_cognition_digest': 'write',\n 'brain_cognition_status': 'read',\n 'brain_cognition_sweep': 'write',\n 'brain_connector_branches_list': 'read',\n 'brain_connector_connections_list': 'read',\n 'brain_connector_repos_list': 'read',\n 'brain_daemon_batch_status': 'read',\n 'brain_daemon_create': 'write',\n 'brain_daemon_get': 'read',\n 'brain_daemon_reingest': 'write',\n 'brain_daemon_remove': 'admin',\n 'brain_daemon_run': 'write',\n 'brain_daemon_run_items': 'read',\n 'brain_daemon_runs': 'read',\n 'brain_daemon_status': 'read',\n 'brain_daemon_update': 'write',\n 'brain_daemons_list': 'read',\n 'brain_gdrive_connections_list': 'read',\n 'brain_knowledge_entity_memories': 'read',\n 'brain_knowledge_graph': 'read',\n 'brain_knowledge_neighborhood': 'read',\n 'brain_knowledge_relations': 'read',\n 'brain_knowledge_search': 'read',\n 'brain_memory_add': 'write',\n 'brain_memory_delete': 'write',\n 'brain_memory_get': 'read',\n 'brain_memory_list': 'read',\n 'brain_memory_search': 'read',\n 'brain_memory_stats': 'read',\n 'brain_memory_update': 'write',\n 'brain_product_shared_memory_reset': 'admin',\n 'brain_restore_status': 'read',\n 'brain_usage_report': 'read',\n 'consent_config_cookie_domain_upsert': 'admin',\n 'consent_config_customization_upsert': 'write',\n 'consent_config_floating_icon_upsert': 'write',\n 'consent_config_theme_upsert': 'write',\n 'consent_dashboard_config_get': 'read',\n 'consent_dashboard_decisions_list': 'read',\n 'consent_dashboard_embed_snippet_get': 'read',\n 'consent_dashboard_stats_get': 'read',\n 'consent_embed_get': 'read',\n 'consent_providers_create': 'write',\n 'consent_providers_delete': 'admin',\n 'consent_providers_list': 'read',\n 'consent_providers_update': 'write',\n 'consent_records_export': 'admin',\n 'consent_stats_get': 'read',\n 'content_channels_bind': 'write',\n 'content_channels_get': 'read',\n 'content_channels_list': 'read',\n 'content_channels_resume': 'write',\n 'content_channels_unbind': 'write',\n 'content_channels_update': 'write',\n 'content_media_create_upload_url': 'write',\n 'content_media_finalize': 'write',\n 'content_media_get': 'read',\n 'content_media_list': 'read',\n 'content_media_upload': 'write',\n 'content_metrics_channel_series': 'read',\n 'content_metrics_post_series': 'read',\n 'content_posts_approve': 'write',\n 'content_posts_attach_media': 'write',\n 'content_posts_create': 'write',\n 'content_posts_detach_media': 'write',\n 'content_posts_get': 'read',\n 'content_posts_list': 'read',\n 'content_posts_submit': 'write',\n 'content_posts_update': 'write',\n 'content_posts_versions': 'read',\n 'content_publications_cancel': 'write',\n 'content_publications_confirm': 'write',\n 'content_publications_get': 'read',\n 'content_publications_list': 'read',\n 'content_publications_publish': 'write',\n 'content_publications_remind': 'write',\n 'content_publications_reschedule': 'write',\n 'content_publications_schedule': 'write',\n 'content_publications_validate': 'read',\n 'deployment_alert_create': 'write',\n 'deployment_alert_delete': 'admin',\n 'deployment_alert_events_list': 'read',\n 'deployment_alert_list': 'read',\n 'deployment_alert_update': 'write',\n 'deployment_analytics_query': 'read',\n 'deployment_build_get': 'read',\n 'deployment_build_list': 'read',\n 'deployment_build_logs': 'read',\n 'deployment_canvas_get': 'read',\n 'deployment_canvas_move_node': 'write',\n 'deployment_cloud_sql_backfill_log_flags': 'write',\n 'deployment_cloud_sql_database_attach': 'write',\n 'deployment_cloud_sql_database_create': 'write',\n 'deployment_cloud_sql_database_delete': 'admin',\n 'deployment_cloud_sql_database_detach': 'write',\n 'deployment_cloud_sql_database_get': 'read',\n 'deployment_cloud_sql_database_list': 'read',\n 'deployment_cloud_sql_instance_backup': 'write',\n 'deployment_cloud_sql_instance_backup_list': 'read',\n 'deployment_cloud_sql_instance_create': 'write',\n 'deployment_cloud_sql_instance_delete': 'admin',\n 'deployment_cloud_sql_instance_get': 'read',\n 'deployment_cloud_sql_instance_list': 'read',\n 'deployment_cloud_sql_instance_resize': 'write',\n 'deployment_cloud_sql_instance_restore': 'admin',\n 'deployment_cloud_sql_logs': 'read',\n 'deployment_deployment_cancel': 'write',\n 'deployment_deployment_get': 'read',\n 'deployment_deployment_list': 'read',\n 'deployment_domain_add': 'admin',\n 'deployment_domain_allowed_list': 'read',\n 'deployment_domain_get': 'read',\n 'deployment_domain_list': 'read',\n 'deployment_domain_list_by_service': 'read',\n 'deployment_domain_redirect_www': 'admin',\n 'deployment_domain_remove': 'admin',\n 'deployment_domain_routes_add': 'admin',\n 'deployment_domain_routes_list': 'read',\n 'deployment_domain_routes_remove': 'admin',\n 'deployment_domain_routes_update': 'admin',\n 'deployment_domain_verify': 'write',\n 'deployment_environment_create': 'write',\n 'deployment_environment_delete': 'admin',\n 'deployment_environment_fork': 'write',\n 'deployment_environment_get': 'read',\n 'deployment_environment_list': 'read',\n 'deployment_environment_reconcile': 'write',\n 'deployment_environment_update': 'write',\n 'deployment_events_list_by_environment': 'read',\n 'deployment_events_list_by_service': 'read',\n 'deployment_job_run': 'write',\n 'deployment_job_run_logs': 'read',\n 'deployment_job_runs_list': 'read',\n 'deployment_managed_service_backup': 'write',\n 'deployment_managed_service_backup_list': 'read',\n 'deployment_managed_service_connect_info': 'read',\n 'deployment_managed_service_delete': 'admin',\n 'deployment_managed_service_get': 'read',\n 'deployment_managed_service_list': 'read',\n 'deployment_managed_service_logs': 'read',\n 'deployment_managed_service_provision': 'write',\n 'deployment_managed_service_reconcile': 'write',\n 'deployment_managed_service_resize': 'write',\n 'deployment_managed_service_restore': 'admin',\n 'deployment_managed_service_start': 'write',\n 'deployment_managed_service_stop': 'write',\n 'deployment_managed_service_types': 'read',\n 'deployment_metrics_get': 'read',\n 'deployment_preview_environment_create': 'write',\n 'deployment_preview_environment_delete': 'admin',\n 'deployment_preview_environment_list': 'read',\n 'deployment_preview_policy_get': 'read',\n 'deployment_preview_policy_set': 'admin',\n 'deployment_service_create': 'write',\n 'deployment_service_delete': 'admin',\n 'deployment_service_exec': 'admin',\n 'deployment_service_get': 'read',\n 'deployment_service_list': 'read',\n 'deployment_service_logs': 'read',\n 'deployment_service_redeploy': 'write',\n 'deployment_service_restart': 'write',\n 'deployment_service_rollback': 'write',\n 'deployment_service_scale': 'write',\n 'deployment_service_update': 'write',\n 'deployment_service_wake': 'write',\n 'deployment_ssh_command': 'read',\n 'deployment_ssh_key_delete': 'admin',\n 'deployment_ssh_key_list': 'read',\n 'deployment_ssh_key_register': 'admin',\n 'deployment_suspension_get': 'read',\n 'deployment_variable_list': 'read',\n 'deployment_variable_list_env': 'read',\n 'deployment_variable_list_product': 'read',\n 'deployment_variable_set': 'write',\n 'deployment_variable_set_env': 'write',\n 'deployment_variable_set_product': 'admin',\n 'deployment_variable_unset': 'write',\n 'deployment_variable_unset_env': 'write',\n 'deployment_variable_unset_product': 'admin',\n 'deployment_vcs_branch_list': 'read',\n 'deployment_vcs_connection_list': 'read',\n 'deployment_vcs_repo_list': 'read',\n 'deployment_volume_create': 'write',\n 'deployment_volume_delete': 'admin',\n 'deployment_volume_detach': 'write',\n 'deployment_volume_get': 'read',\n 'deployment_volume_list': 'read',\n 'deployment_volume_resize': 'write',\n 'mail_apikey_create': 'admin',\n 'mail_apikey_delete': 'admin',\n 'mail_apikey_list': 'read',\n 'mail_audience_create': 'write',\n 'mail_audience_delete': 'admin',\n 'mail_audience_get': 'read',\n 'mail_audience_list': 'read',\n 'mail_audience_update': 'write',\n 'mail_broadcast_cancel': 'write',\n 'mail_broadcast_create': 'write',\n 'mail_broadcast_delete': 'admin',\n 'mail_broadcast_get': 'read',\n 'mail_broadcast_list': 'read',\n 'mail_broadcast_queue': 'write',\n 'mail_broadcast_stats': 'read',\n 'mail_broadcast_update': 'write',\n 'mail_contact_create': 'write',\n 'mail_contact_delete': 'admin',\n 'mail_contact_get': 'read',\n 'mail_contact_list': 'read',\n 'mail_contact_update': 'write',\n 'mail_domain_allowed_list': 'read',\n 'mail_domain_create': 'admin',\n 'mail_domain_delete': 'admin',\n 'mail_domain_get': 'read',\n 'mail_domain_list': 'read',\n 'mail_domain_update': 'admin',\n 'mail_domain_verify': 'write',\n 'mail_email_cancel': 'write',\n 'mail_email_get': 'read',\n 'mail_email_send': 'write',\n 'mail_email_send_batch': 'write',\n 'mail_email_update': 'write',\n 'mail_reputation_get': 'read',\n 'mail_stats_get': 'read',\n 'mail_suppression_add': 'write',\n 'mail_suppression_list': 'read',\n 'mail_suppression_remove': 'admin',\n 'mail_template_create': 'write',\n 'mail_template_delete': 'admin',\n 'mail_template_get': 'read',\n 'mail_template_list': 'read',\n 'mail_template_publish': 'write',\n 'mail_template_update': 'write',\n 'mail_usage_get': 'read',\n 'mail_webhook_create': 'admin',\n 'mail_webhook_delete': 'admin',\n 'mail_webhook_deliveries_list': 'read',\n 'mail_webhook_get': 'read',\n 'mail_webhook_list': 'read',\n 'mail_webhook_update': 'admin',\n 'observe_alerts_create': 'write',\n 'observe_alerts_delete': 'admin',\n 'observe_alerts_events_list': 'read',\n 'observe_alerts_get': 'read',\n 'observe_alerts_list': 'read',\n 'observe_alerts_update': 'write',\n 'observe_artifacts_delete': 'admin',\n 'observe_artifacts_list': 'read',\n 'observe_artifacts_resolve': 'read',\n 'observe_issues_archive': 'write',\n 'observe_issues_assign': 'write',\n 'observe_issues_event': 'read',\n 'observe_issues_events': 'read',\n 'observe_issues_get': 'read',\n 'observe_issues_histogram': 'read',\n 'observe_issues_list': 'read',\n 'observe_issues_resolve': 'write',\n 'observe_keys_create': 'write',\n 'observe_keys_list': 'read',\n 'observe_keys_revoke': 'admin',\n 'observe_logs_facets': 'read',\n 'observe_logs_search': 'read',\n 'observe_logs_tail': 'read',\n 'observe_metrics_list': 'read',\n 'observe_metrics_query': 'read',\n 'observe_traces_get': 'read',\n 'observe_traces_search': 'read',\n 'observe_webhooks_create': 'write',\n 'observe_webhooks_delete': 'admin',\n 'observe_webhooks_deliveries_list': 'read',\n 'observe_webhooks_get': 'read',\n 'observe_webhooks_list': 'read',\n 'observe_webhooks_redeliver': 'write',\n 'observe_webhooks_rotate_secret': 'admin',\n 'observe_webhooks_update': 'write',\n 'organization_auth_me': 'read',\n 'organization_billing_budgets_get': 'read',\n 'organization_billing_caps_clear': 'write',\n 'organization_billing_caps_set': 'write',\n 'organization_bindings_list': 'read',\n 'organization_clickup_install': 'read',\n 'organization_clickup_list-installations': 'read',\n 'organization_cloudflare_install': 'read',\n 'organization_connectors_approve-request': 'write',\n 'organization_connectors_attach': 'write',\n 'organization_connectors_delete': 'admin',\n 'organization_connectors_deny-request': 'write',\n 'organization_connectors_detach': 'write',\n 'organization_connectors_list': 'read',\n 'organization_connectors_list-attachments': 'read',\n 'organization_connectors_list-available': 'read',\n 'organization_connectors_list-org': 'read',\n 'organization_connectors_list-requests': 'read',\n 'organization_connectors_remove': 'admin',\n 'organization_connectors_request': 'write',\n 'organization_create': 'write',\n 'organization_domains_add': 'write',\n 'organization_domains_get': 'read',\n 'organization_domains_list': 'read',\n 'organization_domains_remove': 'admin',\n 'organization_domains_set-mode': 'write',\n 'organization_extensions_list-installed': 'read',\n 'organization_feedback_submit': 'write',\n 'organization_gdrive_install': 'read',\n 'organization_github_install': 'read',\n 'organization_github_list-installations': 'read',\n 'organization_googleads_install': 'read',\n 'organization_groups_create': 'write',\n 'organization_groups_delete': 'admin',\n 'organization_groups_get': 'read',\n 'organization_groups_grant-remove': 'write',\n 'organization_groups_grant-set': 'write',\n 'organization_groups_list': 'read',\n 'organization_groups_member-add': 'write',\n 'organization_groups_member-remove': 'write',\n 'organization_groups_update': 'write',\n 'organization_linkedin_member_install': 'read',\n 'organization_list': 'read',\n 'organization_member_accept-invite': 'write',\n 'organization_member_invite': 'write',\n 'organization_member_list': 'read',\n 'organization_member_list-invitations': 'read',\n 'organization_member_list-product-access': 'read',\n 'organization_member_remove': 'admin',\n 'organization_member_revoke-invitation': 'admin',\n 'organization_member_set-role': 'admin',\n 'organization_member_share-product': 'admin',\n 'organization_member_unshare-product': 'admin',\n 'organization_members_assign-role': 'admin',\n 'organization_permission_catalog': 'read',\n 'organization_principal-grants_approve': 'write',\n 'organization_principal-grants_list': 'read',\n 'organization_principal-grants_revoke': 'admin',\n 'organization_product_create': 'write',\n 'organization_product_erasure_get': 'read',\n 'organization_product_erasure_list': 'read',\n 'organization_product_erasure_request': 'write',\n 'organization_product_list': 'read',\n 'organization_product_list-access': 'read',\n 'organization_product_list-members': 'read',\n 'organization_product_list-roles': 'read',\n 'organization_product_me': 'read',\n 'organization_product_revoke-access': 'write',\n 'organization_product_select': 'read',\n 'organization_product_set-access': 'write',\n 'organization_product_update': 'write',\n 'organization_public-keys_create': 'write',\n 'organization_public-keys_list': 'read',\n 'organization_public-keys_revoke': 'admin',\n 'organization_public-keys_update-scope': 'write',\n 'organization_public-routes_list': 'read',\n 'organization_reddit_install': 'read',\n 'organization_roles_create': 'write',\n 'organization_roles_delete': 'admin',\n 'organization_roles_get': 'read',\n 'organization_roles_list': 'read',\n 'organization_roles_update': 'write',\n 'organization_security_mfa_enable': 'write',\n 'organization_select': 'read',\n 'organization_support_thread_create': 'write',\n 'organization_support_thread_get': 'read',\n 'organization_support_thread_reply': 'write',\n 'organization_support_threads_list': 'read',\n 'organization_x_install': 'read',\n 'organization_youtube_install': 'read',\n 'playground_analytics_overview': 'read',\n 'playground_billing_entitlements': 'read',\n 'playground_billing_record-usage': 'write',\n 'playground_clickup_create-task': 'write',\n 'playground_clickup_get-last-webhook': 'read',\n 'playground_clickup_get-overview': 'read',\n 'playground_gdrive_get-last-change': 'read',\n 'playground_gdrive_read-file': 'read',\n 'playground_googleads_read-customer': 'read',\n 'playground_lifecycle_get-state': 'read',\n 'playground_lifecycle_list-events': 'read',\n 'playground_webhook_get-last': 'read',\n 'playground_workflow_echo': 'write',\n 'playground_workflow_echo-list': 'read',\n 'playground_workflow_ping': 'write',\n 'playground_workflow_subjects-list': 'read',\n 'realtime_archive_export': 'admin',\n 'realtime_archive_export_status': 'read',\n 'realtime_archive_get': 'read',\n 'realtime_grant_create': 'admin',\n 'realtime_grant_list': 'read',\n 'realtime_grant_revoke': 'admin',\n 'realtime_history_get': 'read',\n 'realtime_messages_publish': 'write',\n 'realtime_namespace_create': 'write',\n 'realtime_namespace_delete': 'admin',\n 'realtime_namespace_get': 'read',\n 'realtime_namespace_list': 'read',\n 'realtime_namespace_update': 'write',\n 'realtime_presence_enter': 'write',\n 'realtime_presence_get': 'read',\n 'realtime_presence_leave': 'write',\n 'realtime_presence_stats': 'read',\n 'realtime_presence_update': 'write',\n 'realtime_public_access_status': 'read',\n 'realtime_status_get': 'read',\n 'realtime_tokens_create': 'write',\n 'realtime_webhook_create': 'write',\n 'realtime_webhook_delete': 'admin',\n 'realtime_webhook_deliveries_list': 'read',\n 'realtime_webhook_get': 'read',\n 'realtime_webhook_list': 'read',\n 'realtime_webhook_secret_rotate': 'admin',\n 'realtime_webhook_update': 'write',\n 'support_agent_create': 'write',\n 'support_agent_get': 'read',\n 'support_agent_list': 'read',\n 'support_agent_update': 'write',\n 'support_attachment_create': 'write',\n 'support_attachment_finalize': 'write',\n 'support_label_create': 'write',\n 'support_label_list': 'read',\n 'support_message_create': 'write',\n 'support_message_list': 'read',\n 'support_response_escalate': 'write',\n 'support_response_get': 'read',\n 'support_response_list': 'read',\n 'support_rule_create': 'write',\n 'support_rule_delete': 'admin',\n 'support_rule_get': 'read',\n 'support_rule_list': 'read',\n 'support_rule_update': 'write',\n 'support_status_archive': 'admin',\n 'support_status_create': 'write',\n 'support_status_list': 'read',\n 'support_status_update': 'write',\n 'support_survey_archive': 'admin',\n 'support_survey_create': 'write',\n 'support_survey_get': 'read',\n 'support_survey_list': 'read',\n 'support_survey_publish': 'admin',\n 'support_survey_stats': 'read',\n 'support_survey_unpublish': 'admin',\n 'support_survey_update': 'write',\n 'support_thread_assign': 'write',\n 'support_thread_create': 'write',\n 'support_thread_get': 'read',\n 'support_thread_list': 'read',\n 'support_thread_status_set': 'write',\n 'support_thread_update': 'write',\n 'support_webhook_create': 'admin',\n 'support_webhook_delete': 'admin',\n 'support_webhook_deliveries_list': 'admin',\n 'support_webhook_get': 'admin',\n 'support_webhook_list': 'admin',\n 'support_webhook_redeliver': 'admin',\n 'support_webhook_rotate_secret': 'admin',\n 'support_webhook_update': 'admin',\n 'tracking_domains_create': 'write',\n 'tracking_domains_delete': 'admin',\n 'tracking_domains_get': 'read',\n 'tracking_domains_list': 'read',\n 'tracking_domains_verify': 'write',\n 'tracking_event-names_archive': 'write',\n 'tracking_event-names_list': 'read',\n 'tracking_event-names_set-conversion': 'write',\n 'tracking_event-names_unarchive': 'write',\n 'tracking_googleads_connection_status': 'read',\n 'tracking_googleads_conversion_actions': 'read',\n 'tracking_googleads_feedback_config_get': 'read',\n 'tracking_googleads_feedback_config_set': 'write',\n 'tracking_googleads_feedback_run': 'write',\n 'tracking_googleads_feedback_status': 'read',\n 'tracking_googleads_feedback_uploads': 'read',\n 'tracking_googleads_roas_report': 'read',\n 'tracking_googleads_sync_now': 'write',\n 'tracking_googleads_tracking_health': 'read',\n 'tracking_googleads_us_vs_platform': 'read',\n 'tracking_identity_health': 'read',\n 'tracking_install-domains_create': 'write',\n 'tracking_install-domains_delete': 'admin',\n 'tracking_install-domains_list': 'read',\n 'tracking_link-domains_create': 'write',\n 'tracking_link-domains_delete': 'admin',\n 'tracking_link-domains_list': 'read',\n 'tracking_live-events_list': 'read',\n 'tracking_profiles_delete': 'admin',\n 'tracking_profiles_export': 'read',\n 'tracking_profiles_get': 'read',\n 'tracking_profiles_list': 'read',\n 'tracking_reports_attributed_journey': 'read',\n 'tracking_reports_event_volume': 'read',\n 'tracking_reports_revenue_by_source': 'read',\n 'tracking_reports_source_people': 'read',\n 'tracking_snippets_get': 'read',\n 'users_apikeys_create': 'write',\n 'users_apikeys_list': 'read',\n 'users_apikeys_revoke': 'admin',\n 'users_audit_list': 'read',\n 'users_config_get': 'read',\n 'users_config_upsert': 'admin',\n 'users_factors_list': 'read',\n 'users_factors_reset': 'admin',\n 'users_keys_list': 'read',\n 'users_keys_revoke': 'admin',\n 'users_keys_rotate': 'admin',\n 'users_ops_retention_get': 'read',\n 'users_ops_slo_get': 'read',\n 'users_passkeys_list': 'read',\n 'users_passkeys_revoke': 'admin',\n 'users_sessions_get': 'read',\n 'users_sessions_impersonate': 'admin',\n 'users_sessions_list': 'read',\n 'users_sessions_revoke': 'admin',\n 'users_stats_get': 'read',\n 'users_users_ban': 'admin',\n 'users_users_create': 'write',\n 'users_users_delete': 'admin',\n 'users_users_export': 'admin',\n 'users_users_get': 'read',\n 'users_users_import': 'admin',\n 'users_users_invite': 'write',\n 'users_users_list': 'read',\n 'users_users_set_primary_identifier': 'write',\n 'users_users_unban': 'admin',\n 'users_users_update': 'write',\n 'users_waitlist_funnel': 'read',\n 'users_waitlist_import': 'write',\n 'users_waitlist_invite': 'write',\n 'users_waitlist_list': 'read',\n 'users_webhooks_create': 'write',\n 'users_webhooks_delete': 'admin',\n 'users_webhooks_deliveries_list': 'read',\n 'users_webhooks_get': 'read',\n 'users_webhooks_list': 'read',\n 'users_webhooks_rotate_secret': 'admin',\n 'users_webhooks_update': 'write',\n 'waitlist_config_get': 'read',\n 'waitlist_config_upsert': 'write',\n 'waitlist_embed_get': 'read',\n 'waitlist_invites_send': 'write',\n 'waitlist_signups_erase': 'write',\n 'waitlist_signups_funnel': 'read',\n 'waitlist_signups_list': 'read',\n 'workflow_cap_list': 'read',\n 'workflow_capability_get': 'read',\n 'workflow_capability_list': 'read',\n 'workflow_config_delete': 'admin',\n 'workflow_config_list': 'read',\n 'workflow_config_set': 'write',\n 'workflow_definition_create': 'write',\n 'workflow_definition_disable': 'write',\n 'workflow_definition_dryrun': 'read',\n 'workflow_definition_enable': 'write',\n 'workflow_definition_estimate': 'read',\n 'workflow_definition_export': 'read',\n 'workflow_definition_get': 'read',\n 'workflow_definition_import': 'write',\n 'workflow_definition_list': 'read',\n 'workflow_definition_publish': 'write',\n 'workflow_definition_update': 'write',\n 'workflow_definition_validate': 'read',\n 'workflow_dependency_list': 'read',\n 'workflow_grant_list': 'read',\n 'workflow_grant_request': 'write',\n 'workflow_health_list': 'read',\n 'workflow_health_ping': 'read',\n 'workflow_killswitch_get': 'read',\n 'workflow_killswitch_set': 'write',\n 'workflow_run_cancel': 'write',\n 'workflow_run_get': 'read',\n 'workflow_run_list': 'read',\n 'workflow_run_replay': 'write',\n 'workflow_run_replay_all': 'write',\n 'workflow_run_start': 'write',\n 'workflow_run_stats': 'read',\n 'workflow_run_test': 'write',\n 'workflow_template_apply': 'write',\n 'workflow_template_list': 'read',\n 'workflow_version_get': 'read',\n 'workflow_version_list': 'read',\n 'workflow_wait_get': 'read',\n 'workflow_wait_list': 'read',\n 'workflow_wait_list_all': 'read',\n 'workflow_wait_resolve': 'write',\n};\n\nexport const compositions: Record<string, ToolComposition> = {\n 'brain_cognition_digest': {\"label\":\"Run cognition digest\",\"completion_event\":\"brain/cognition.digest-completed\"},\n 'brain_cognition_sweep': {\"label\":\"Run cognition sweep\",\"completion_event\":\"brain/cognition.sweep-completed\"},\n 'brain_daemon_reingest': {\"label\":\"Reingest daemon source\",\"options\":{\"id\":\"brain_daemons_list\"}},\n 'brain_daemon_run': {\"label\":\"Run ingestion daemon\",\"options\":{\"id\":\"brain_daemons_list\"},\"completion_event\":\"brain/daemon.run-completed\"},\n 'brain_daemon_runs': {\"label\":\"List daemon runs\",\"options\":{\"id\":\"brain_daemons_list\"}},\n 'brain_daemon_status': {\"label\":\"Get daemon status\",\"options\":{\"id\":\"brain_daemons_list\"}},\n 'brain_daemons_list': {\"label\":\"List daemons\"},\n 'brain_knowledge_entity_memories': {\"pii\":[\"input.entity_ref\",\"output.entity.canonical_name\",\"output.entity.display_name\",\"output.entity.aliases\",\"output.entity.description\",\"output.memories[].content\",\"output.memories[].custom\"],\"label\":\"List entity memories\"},\n 'brain_knowledge_graph': {\"pii\":[\"output.nodes[].canonical_name\",\"output.nodes[].display_name\",\"output.nodes[].aliases\",\"output.nodes[].description\",\"output.edges[].reason\"],\"label\":\"Export knowledge graph\"},\n 'brain_knowledge_neighborhood': {\"pii\":[\"input.entity_ref\",\"output.root.canonical_name\",\"output.root.display_name\",\"output.root.aliases\",\"output.root.description\",\"output.entities[].canonical_name\",\"output.entities[].display_name\",\"output.entities[].aliases\",\"output.entities[].description\",\"output.relations[].source_display_name\",\"output.relations[].source_canonical_name\",\"output.relations[].target_display_name\",\"output.relations[].target_canonical_name\",\"output.relations[].reason\"],\"label\":\"Expand entity neighborhood\"},\n 'brain_knowledge_relations': {\"pii\":[\"input.source_entity\",\"input.target_entity\",\"output.relations[].source_display_name\",\"output.relations[].source_canonical_name\",\"output.relations[].target_display_name\",\"output.relations[].target_canonical_name\",\"output.relations[].reason\"],\"label\":\"List knowledge relations\"},\n 'brain_knowledge_search': {\"pii\":[\"input.name\",\"output.entities[].canonical_name\",\"output.entities[].display_name\",\"output.entities[].aliases\",\"output.entities[].description\"],\"label\":\"Search knowledge entities\"},\n 'brain_memory_add': {\"pii\":[\"input.content\",\"input.metadata\"],\"label\":\"Add memory\"},\n 'brain_memory_delete': {\"label\":\"Delete memory\"},\n 'brain_memory_get': {\"pii\":[\"output.content\"],\"label\":\"Get memory\"},\n 'brain_memory_list': {\"pii\":[\"output.memories[].content\",\"output.memories[].custom\"],\"label\":\"List memories\"},\n 'brain_memory_search': {\"pii\":[\"input.query\",\"output.profile[].content\",\"output.normal[].content\",\"output.proactive[].content\"],\"label\":\"Search memories\"},\n 'brain_memory_stats': {\"label\":\"Memory stats\"},\n 'brain_memory_update': {\"pii\":[\"input.content\"],\"label\":\"Update memory\"},\n 'brain_usage_report': {\"label\":\"Get usage report\"},\n 'content_metrics_post_series': {\"label\":\"Read post metrics\",\"options\":{\"id\":\"content_publications_list\"}},\n 'content_posts_create': {\"pii\":[\"output.author\"],\"label\":\"Create draft post\"},\n 'content_posts_submit': {\"pii\":[\"output.author\"],\"label\":\"Submit post for approval\",\"options\":{\"id\":\"content_posts_list\"}},\n 'content_publications_cancel': {\"label\":\"Cancel publication\",\"options\":{\"id\":\"content_publications_list\"}},\n 'content_publications_publish': {\"label\":\"Publish now\",\"options\":{\"postId\":\"content_posts_list\",\"channelId\":\"content_channels_list\"},\"completion_event\":\"content/publication.published\"},\n 'content_publications_schedule': {\"label\":\"Schedule publication\",\"options\":{\"postId\":\"content_posts_list\",\"channelId\":\"content_channels_list\"},\"completion_event\":\"content/publication.published\"},\n 'content_publications_validate': {\"label\":\"Validate post against channels\",\"options\":{\"postId\":\"content_posts_list\"}},\n 'mail_audience_create': {\"label\":\"Create audience\"},\n 'mail_audience_delete': {\"label\":\"Delete audience\"},\n 'mail_audience_get': {\"label\":\"Get audience\"},\n 'mail_audience_list': {\"label\":\"List audiences\"},\n 'mail_audience_update': {\"label\":\"Rename audience\"},\n 'mail_broadcast_cancel': {\"pii\":[\"output.from\",\"output.replyTo\"],\"label\":\"Cancel broadcast\"},\n 'mail_broadcast_create': {\"pii\":[\"input.from\",\"input.replyTo\",\"output.from\",\"output.replyTo\"],\"label\":\"Create broadcast\",\"options\":{\"audienceId\":\"mail_audience_list\",\"template.id\":\"mail_template_list\"}},\n 'mail_broadcast_delete': {\"label\":\"Delete broadcast\"},\n 'mail_broadcast_get': {\"pii\":[\"output.from\",\"output.replyTo\"],\"label\":\"Get broadcast\"},\n 'mail_broadcast_list': {\"pii\":[\"output.items[].from\",\"output.items[].replyTo\"],\"label\":\"List broadcasts\"},\n 'mail_broadcast_queue': {\"pii\":[\"output.from\",\"output.replyTo\"],\"label\":\"Queue broadcast\"},\n 'mail_broadcast_stats': {\"label\":\"Broadcast stats\"},\n 'mail_broadcast_update': {\"pii\":[\"input.from\",\"input.replyTo\",\"output.from\",\"output.replyTo\"],\"label\":\"Update broadcast\",\"options\":{\"audienceId\":\"mail_audience_list\",\"template.id\":\"mail_template_list\"}},\n 'mail_contact_create': {\"pii\":[\"input.email\",\"input.properties\",\"output.email\",\"output.properties\"],\"label\":\"Create contact\",\"options\":{\"audience_id\":\"mail_audience_list\"}},\n 'mail_contact_delete': {\"label\":\"Delete contact\",\"options\":{\"audience_id\":\"mail_audience_list\"}},\n 'mail_contact_get': {\"pii\":[\"output.email\",\"output.properties\"],\"label\":\"Get contact\",\"options\":{\"audience_id\":\"mail_audience_list\"}},\n 'mail_contact_list': {\"pii\":[\"output.data[].email\",\"output.data[].properties\"],\"label\":\"List contacts\",\"options\":{\"audience_id\":\"mail_audience_list\"}},\n 'mail_contact_update': {\"pii\":[\"input.properties\",\"output.email\",\"output.properties\"],\"label\":\"Update contact\",\"options\":{\"audience_id\":\"mail_audience_list\"}},\n 'mail_domain_allowed_list': {\"label\":\"List allowed apex domains\"},\n 'mail_domain_get': {\"label\":\"Get domain\"},\n 'mail_domain_list': {\"label\":\"List domains\"},\n 'mail_domain_verify': {\"label\":\"Verify domain\",\"completion_event\":\"mail/domain.verified\"},\n 'mail_email_cancel': {\"label\":\"Cancel email\"},\n 'mail_email_get': {\"pii\":[\"output.from\",\"output.to\",\"output.cc\",\"output.bcc\"],\"label\":\"Get email\"},\n 'mail_email_send': {\"pii\":[\"input.from\",\"input.to\",\"input.cc\",\"input.bcc\",\"input.reply_to\"],\"label\":\"Send email\",\"options\":{\"template.id\":\"mail_template_list\"},\"completion_event\":\"mail/email.delivered\"},\n 'mail_email_send_batch': {\"pii\":[\"input.emails[].from\",\"input.emails[].to\",\"input.emails[].cc\",\"input.emails[].bcc\",\"input.emails[].reply_to\"],\"label\":\"Send email batch\"},\n 'mail_email_update': {\"label\":\"Reschedule email\"},\n 'mail_reputation_get': {\"label\":\"Get reputation status\"},\n 'mail_stats_get': {\"label\":\"Get sending stats\"},\n 'mail_suppression_add': {\"pii\":[\"input.address\",\"output.address\"],\"label\":\"Suppress address\"},\n 'mail_suppression_list': {\"pii\":[\"input.q\",\"output.items[].address\"],\"label\":\"List suppressions\"},\n 'mail_suppression_remove': {\"pii\":[\"input.address\",\"output.address\"],\"label\":\"Unsuppress address\"},\n 'mail_template_create': {\"label\":\"Create template\"},\n 'mail_template_delete': {\"label\":\"Delete template\"},\n 'mail_template_get': {\"label\":\"Get template\"},\n 'mail_template_list': {\"label\":\"List templates\"},\n 'mail_template_publish': {\"label\":\"Publish template\"},\n 'mail_template_update': {\"label\":\"Update template\"},\n 'mail_usage_get': {\"label\":\"Get usage\"},\n 'playground_workflow_echo': {\"pii\":[\"input.note\",\"output.note\"],\"label\":\"Store workflow echo\",\"completion_event\":\"playground/workflow.echoed\"},\n 'playground_workflow_ping': {\"label\":\"Fire workflow ping\",\"completion_event\":\"playground/workflow.ping\"},\n 'playground_workflow_subjects-list': {\"pii\":[\"output.items[].display_name\"],\"label\":\"List workflow subjects\"},\n 'support_agent_create': {\"pii\":[\"input.lesslyUserId\",\"output.lesslyUserId\"],\"label\":\"Create agent profile\"},\n 'support_agent_get': {\"pii\":[\"output.lesslyUserId\"],\"label\":\"Get agent\",\"options\":{\"id\":\"support_agent_list\"}},\n 'support_agent_list': {\"pii\":[\"output.agents[].lesslyUserId\"],\"label\":\"List agents\"},\n 'support_agent_update': {\"pii\":[\"input.lesslyUserId\",\"output.lesslyUserId\"],\"label\":\"Update agent profile\",\"options\":{\"id\":\"support_agent_list\"}},\n 'support_label_create': {\"label\":\"Create label\"},\n 'support_label_list': {\"label\":\"List labels\"},\n 'support_message_create': {\"pii\":[\"input.body\",\"input.authorExternalId\",\"output.body\",\"output.authorExternalId\"],\"label\":\"Write message\",\"options\":{\"threadId\":\"support_thread_list\",\"authorAgentId\":\"support_agent_list\"}},\n 'support_message_list': {\"pii\":[\"output.messages[].body\",\"output.messages[].authorExternalId\"],\"label\":\"List messages\",\"options\":{\"threadId\":\"support_thread_list\"}},\n 'support_response_escalate': {\"pii\":[\"output.response.authorExternalId\",\"output.response.answers\",\"output.thread.title\",\"output.thread.authorExternalId\",\"output.thread.authorDisplay\"],\"label\":\"Escalate response into a thread\",\"options\":{\"id\":\"support_response_list\"}},\n 'support_response_get': {\"pii\":[\"output.authorExternalId\",\"output.answers\"],\"label\":\"Get survey response\",\"options\":{\"id\":\"support_response_list\"}},\n 'support_response_list': {\"pii\":[\"output.responses[].authorExternalId\",\"output.responses[].answers\"],\"label\":\"List survey responses\",\"options\":{\"surveyId\":\"support_survey_list\"}},\n 'support_rule_create': {\"label\":\"Create delivery rule\",\"options\":{\"surveyId\":\"support_survey_list\"}},\n 'support_rule_delete': {\"label\":\"Delete delivery rule\",\"options\":{\"id\":\"support_rule_list\"}},\n 'support_rule_get': {\"label\":\"Get delivery rule\",\"options\":{\"id\":\"support_rule_list\"}},\n 'support_rule_list': {\"label\":\"List delivery rules\",\"options\":{\"surveyId\":\"support_survey_list\"}},\n 'support_rule_update': {\"label\":\"Update delivery rule\",\"options\":{\"id\":\"support_rule_list\"}},\n 'support_status_archive': {\"label\":\"Archive status\",\"options\":{\"id\":\"support_status_list\",\"targetStatusId\":\"support_status_list\"}},\n 'support_status_create': {\"label\":\"Create status\"},\n 'support_status_list': {\"label\":\"List statuses\"},\n 'support_status_update': {\"label\":\"Update status\",\"options\":{\"id\":\"support_status_list\"}},\n 'support_survey_archive': {\"label\":\"Archive survey\",\"options\":{\"id\":\"support_survey_list\"}},\n 'support_survey_create': {\"label\":\"Create survey\"},\n 'support_survey_get': {\"label\":\"Get survey\",\"options\":{\"id\":\"support_survey_list\"}},\n 'support_survey_list': {\"label\":\"List surveys\"},\n 'support_survey_publish': {\"label\":\"Publish survey\",\"options\":{\"id\":\"support_survey_list\"}},\n 'support_survey_stats': {\"label\":\"Read survey stats\",\"options\":{\"id\":\"support_survey_list\"}},\n 'support_survey_unpublish': {\"label\":\"Unpublish survey\",\"options\":{\"id\":\"support_survey_list\"}},\n 'support_survey_update': {\"label\":\"Update survey\",\"options\":{\"id\":\"support_survey_list\"}},\n 'support_thread_assign': {\"pii\":[\"output.title\",\"output.authorExternalId\",\"output.authorDisplay\"],\"label\":\"Assign thread\",\"options\":{\"id\":\"support_thread_list\",\"agentId\":\"support_agent_list\"}},\n 'support_thread_create': {\"pii\":[\"input.title\",\"input.authorExternalId\",\"input.authorDisplay\",\"output.title\",\"output.authorExternalId\",\"output.authorDisplay\"],\"label\":\"Open support thread\",\"options\":{\"labelIds\":\"support_label_list\"}},\n 'support_thread_get': {\"pii\":[\"output.title\",\"output.authorExternalId\",\"output.authorDisplay\"],\"label\":\"Get support thread\",\"options\":{\"id\":\"support_thread_list\"}},\n 'support_thread_list': {\"pii\":[\"input.authorExternalId\",\"output.threads[].title\",\"output.threads[].authorExternalId\",\"output.threads[].authorDisplay\"],\"label\":\"List support threads\",\"options\":{\"labelIds\":\"support_label_list\",\"statusId\":\"support_status_list\",\"assignedAgentId\":\"support_agent_list\"}},\n 'support_thread_status_set': {\"pii\":[\"output.title\",\"output.authorExternalId\",\"output.authorDisplay\"],\"label\":\"Move thread to status\",\"options\":{\"id\":\"support_thread_list\",\"statusId\":\"support_status_list\"}},\n 'support_thread_update': {\"pii\":[\"input.title\",\"output.title\",\"output.authorExternalId\",\"output.authorDisplay\"],\"label\":\"Update thread\",\"options\":{\"id\":\"support_thread_list\",\"labelIds\":\"support_label_list\"}},\n 'tracking_domains_create': {\"label\":\"Claim tracking host\",\"options\":{\"domainId\":\"tracking_domains_list\"}},\n 'tracking_domains_delete': {\"label\":\"Release domain binding\",\"options\":{\"bindingId\":\"tracking_domains_list\"}},\n 'tracking_domains_get': {\"label\":\"Get domain binding\",\"options\":{\"bindingId\":\"tracking_domains_list\"}},\n 'tracking_domains_list': {\"label\":\"List tracking domains\"},\n 'tracking_domains_verify': {\"label\":\"Verify domain binding\",\"options\":{\"bindingId\":\"tracking_domains_list\"},\"completion_event\":\"tracking/domain.verification-completed\"},\n 'tracking_event-names_archive': {\"label\":\"Archive event name\",\"options\":{\"name\":\"tracking_event-names_list\"}},\n 'tracking_event-names_list': {\"label\":\"List event names\"},\n 'tracking_event-names_set-conversion': {\"label\":\"Mark event as workflow trigger\",\"options\":{\"name\":\"tracking_event-names_list\"}},\n 'tracking_event-names_unarchive': {\"label\":\"Unarchive event name\",\"options\":{\"name\":\"tracking_event-names_list\"}},\n 'tracking_googleads_connection_status': {\"label\":\"Google Ads connection status\"},\n 'tracking_googleads_conversion_actions': {\"label\":\"List Google conversion actions\"},\n 'tracking_googleads_feedback_config_get': {\"label\":\"Get conversion-feedback config\"},\n 'tracking_googleads_feedback_config_set': {\"label\":\"Set conversion-feedback config\",\"options\":{\"rules[].event\":\"tracking_event-names_list\",\"rules[].conversionAction\":\"tracking_googleads_conversion_actions\"}},\n 'tracking_googleads_feedback_run': {\"label\":\"Run conversion-feedback upload\",\"completion_event\":\"tracking/googleads.feedback-completed\"},\n 'tracking_googleads_feedback_status': {\"label\":\"Conversion-feedback status\"},\n 'tracking_googleads_roas_report': {\"label\":\"Google Ads ROAS report\",\"options\":{\"domain\":\"tracking_install-domains_list\"}},\n 'tracking_googleads_sync_now': {\"label\":\"Sync Google Ads data\",\"completion_event\":\"tracking/googleads.sync-completed\"},\n 'tracking_googleads_tracking_health': {\"pii\":[\"output.sampleUntaggedUrls\"],\"label\":\"Google Ads tracking health\"},\n 'tracking_googleads_us_vs_platform': {\"label\":\"Our data vs Google Ads\",\"options\":{\"domain\":\"tracking_install-domains_list\"}},\n 'tracking_identity_health': {\"label\":\"Identity match-rate health\"},\n 'tracking_install-domains_create': {\"label\":\"Register install domain\"},\n 'tracking_install-domains_delete': {\"label\":\"Unregister install domain\",\"options\":{\"domain\":\"tracking_install-domains_list\"}},\n 'tracking_install-domains_list': {\"label\":\"List install-verification domains\"},\n 'tracking_link-domains_create': {\"label\":\"Add domain to linking group\"},\n 'tracking_link-domains_delete': {\"label\":\"Remove domain from linking group\",\"options\":{\"domain\":\"tracking_link-domains_list\"}},\n 'tracking_link-domains_list': {\"label\":\"List cross-domain linking group\"},\n 'tracking_live-events_list': {\"pii\":[\"output.events[].anonymousId\",\"output.events[].url\",\"output.events[].title\",\"output.events[].source.referrer\"],\"label\":\"List live events\",\"options\":{\"domain\":\"tracking_install-domains_list\"}},\n 'tracking_profiles_delete': {\"pii\":[\"input.profileId\",\"output.profileId\"],\"label\":\"Erase person (GDPR)\",\"completion_event\":\"tracking/profile.erasure-completed\"},\n 'tracking_profiles_export': {\"pii\":[\"input.profileId\",\"output.profile.profileId\",\"output.signals.emails\",\"output.signals.phones\",\"output.signals.clickIds[].value\",\"output.journey[].url\",\"output.journey[].title\",\"output.journey[].referrer\",\"output.journey[].source.clickId\"],\"label\":\"Export person\"},\n 'tracking_profiles_get': {\"pii\":[\"input.profileId\",\"output.profile.profileId\",\"output.signals.emails\",\"output.signals.phones\",\"output.signals.clickIds[].value\",\"output.journey.events[].url\",\"output.journey.events[].title\",\"output.journey.events[].referrer\",\"output.journey.events[].source.clickId\"],\"label\":\"Get person\"},\n 'tracking_profiles_list': {\"pii\":[\"input.email\",\"output.profiles[].profileId\",\"output.profiles[].emails\"],\"label\":\"List people\"},\n 'tracking_reports_attributed_journey': {\"pii\":[\"input.profileId\",\"output.profileId\",\"output.journey.events[].url\",\"output.journey.events[].title\",\"output.journey.events[].referrer\",\"output.journey.events[].source.clickId\"],\"label\":\"Attributed journey\"},\n 'tracking_reports_event_volume': {\"label\":\"Event volume report\",\"options\":{\"domain\":\"tracking_install-domains_list\"}},\n 'tracking_reports_revenue_by_source': {\"label\":\"Revenue by source\",\"options\":{\"domain\":\"tracking_install-domains_list\"}},\n 'tracking_reports_source_people': {\"pii\":[\"output.people[].profileId\"],\"label\":\"People behind a source\",\"options\":{\"domain\":\"tracking_install-domains_list\"}},\n 'tracking_snippets_get': {\"label\":\"Get tracking snippet\"},\n 'users_apikeys_create': {\"label\":\"Create API key\",\"secrets\":[\"output.key\"]},\n 'users_apikeys_revoke': {\"label\":\"Revoke API key\",\"options\":{\"id\":\"users_apikeys_list\"}},\n 'users_audit_list': {\"pii\":[\"output.events[].ip\",\"output.events[].userAgent\",\"output.events[].metadata\"],\"label\":\"List audit events\"},\n 'users_factors_list': {\"label\":\"List second factors\",\"options\":{\"userId\":\"users_users_list\"}},\n 'users_factors_reset': {\"label\":\"Reset second factor\",\"options\":{\"userId\":\"users_users_list\"},\"completion_event\":\"users/mfa.reset-settled\"},\n 'users_passkeys_revoke': {\"label\":\"Revoke passkey\",\"options\":{\"userId\":\"users_users_list\",\"passkeyId\":\"users_passkeys_list\"}},\n 'users_sessions_list': {\"pii\":[\"output.sessions[].ip\",\"output.sessions[].userAgent\"],\"label\":\"List sessions\",\"options\":{\"userId\":\"users_users_list\"}},\n 'users_sessions_revoke': {\"label\":\"Revoke session\",\"options\":{\"userId\":\"users_users_list\",\"sessionId\":\"users_sessions_list\"}},\n 'users_stats_get': {\"label\":\"Get auth stats\"},\n 'users_users_ban': {\"pii\":[\"output.name\",\"output.imageUrl\",\"output.publicMetadata\",\"output.privateMetadata\",\"output.unsafeMetadata\",\"output.identifiers[].value\",\"output.identifiers[].valueCanonical\"],\"label\":\"Ban user\",\"options\":{\"userId\":\"users_users_list\"}},\n 'users_users_create': {\"pii\":[\"input.name\",\"input.imageUrl\",\"input.identifiers[].value\",\"input.publicMetadata\",\"input.privateMetadata\",\"input.unsafeMetadata\",\"output.name\",\"output.imageUrl\",\"output.publicMetadata\",\"output.privateMetadata\",\"output.unsafeMetadata\",\"output.identifiers[].value\",\"output.identifiers[].valueCanonical\"],\"label\":\"Create user\",\"secrets\":[\"input.password.phcHash\",\"input.password.foreignHash\"]},\n 'users_users_delete': {\"pii\":[\"output.name\",\"output.imageUrl\",\"output.publicMetadata\",\"output.privateMetadata\",\"output.unsafeMetadata\",\"output.identifiers[].value\",\"output.identifiers[].valueCanonical\"],\"label\":\"Delete user\",\"options\":{\"userId\":\"users_users_list\"}},\n 'users_users_get': {\"pii\":[\"output.name\",\"output.imageUrl\",\"output.publicMetadata\",\"output.privateMetadata\",\"output.unsafeMetadata\",\"output.identifiers[].value\",\"output.identifiers[].valueCanonical\"],\"label\":\"Get user\",\"options\":{\"userId\":\"users_users_list\"}},\n 'users_users_import': {\"pii\":[\"input.users[]\"],\"label\":\"Import users\",\"secrets\":[\"input.users[]\"]},\n 'users_users_invite': {\"pii\":[\"input.email\",\"input.name\",\"input.publicMetadata\",\"input.privateMetadata\"],\"label\":\"Invite user\"},\n 'users_users_list': {\"pii\":[\"input.query\",\"output.users[].name\",\"output.users[].imageUrl\",\"output.users[].publicMetadata\",\"output.users[].privateMetadata\",\"output.users[].unsafeMetadata\",\"output.users[].identifiers[].value\",\"output.users[].identifiers[].valueCanonical\"],\"label\":\"List users\"},\n 'users_users_set_primary_identifier': {\"pii\":[\"input.email\"],\"label\":\"Change primary email\",\"options\":{\"userId\":\"users_users_list\"}},\n 'users_users_unban': {\"pii\":[\"output.name\",\"output.imageUrl\",\"output.publicMetadata\",\"output.privateMetadata\",\"output.unsafeMetadata\",\"output.identifiers[].value\",\"output.identifiers[].valueCanonical\"],\"label\":\"Unban user\",\"options\":{\"userId\":\"users_users_list\"}},\n 'users_users_update': {\"pii\":[\"input.name\",\"input.imageUrl\",\"input.publicMetadata\",\"input.privateMetadata\",\"input.unsafeMetadata\",\"output.name\",\"output.imageUrl\",\"output.publicMetadata\",\"output.privateMetadata\",\"output.unsafeMetadata\",\"output.identifiers[].value\",\"output.identifiers[].valueCanonical\"],\"label\":\"Update user\",\"options\":{\"userId\":\"users_users_list\"}},\n 'users_waitlist_import': {\"pii\":[\"input.entries[].identifier\",\"input.entries[].name\",\"input.entries[].consent.ip\",\"input.entries[].consent.userAgent\",\"input.entries[].unsafeMetadata\"],\"label\":\"Import waitlist\"},\n 'users_waitlist_invite': {\"label\":\"Invite from waitlist\",\"options\":{\"userIds\":\"users_waitlist_list\"}},\n 'users_waitlist_list': {\"pii\":[\"output.entries[].identifier\",\"output.entries[].attribution\",\"output.entries[].consentProof\"],\"label\":\"List waitlist entries\"},\n};\n","/**\n * VERBATIM COPY of lessly-workspace `packages/sdk-governance/src/permission-match.ts`.\n *\n * `@lessly/sdk-governance` is private on GAR and `@lessly/sdk-app` is public on npmjs, so this\n * SDK cannot depend on it — and `can()` is only useful if it predicts the gateway's answer with\n * the gateway's own code. Everything below this header is byte-identical to the original.\n *\n * CHANGE ONLY TOGETHER WITH THE ORIGINAL. `permission-match.cases.json` is the shared corpus both\n * repositories run; a change that makes the two files disagree makes `can()` lie.\n */\n/**\n * Pure, segment-aware permission matcher — the single source of truth for RBAC\n * grant semantics.\n *\n * Operation keys are `{slug}_{entity}_{action}` split on `_` (depth-agnostic).\n * `*` is a wildcard only as a complete segment. Interior/leading `*` matches\n * exactly one segment; a trailing `*` matches one-or-more remaining segments.\n */\n\n/** Coarse sensitivity band an operation can declare. */\nexport type ToolLevel = 'read' | 'write' | 'admin';\n\n/**\n * An operation to authorize: its key, plus the optional level it declares.\n * An operation with no `level` is reachable only through key patterns.\n */\nexport interface Operation {\n key: string;\n level?: ToolLevel;\n}\n\nconst LEVELS: readonly string[] = ['read', 'write', 'admin'];\nconst LEVEL_PREFIX = 'level:';\n\n/**\n * True iff `p` is exactly `level:read`, `level:write` or `level:admin` — the\n * complete set of level patterns. Anything else (`level:*`, `level:owner`,\n * `level:`) is not one.\n */\nexport function isLevelPattern(p: string): boolean {\n return (\n typeof p === 'string' &&\n p.startsWith(LEVEL_PREFIX) &&\n LEVELS.includes(p.slice(LEVEL_PREFIX.length))\n );\n}\n\n/**\n * Returns true iff at least one grant pattern matches the operation.\n * Allow-list semantics, default-deny. O(grants × segments), no backtracking.\n *\n * A bare string operation carries no level, so level patterns never match it.\n * An `Operation` is matched by key patterns on `op.key` exactly as a string\n * would be, and additionally by `level:X` iff `op.level === X`.\n */\nexport function matchPermission(\n op: string | Operation,\n grants: readonly string[],\n): boolean {\n const key = typeof op === 'string' ? op : op.key;\n const level = typeof op === 'string' ? undefined : op.level;\n if (!key) return false; // blank/empty key ⇒ deny\n const keySegments = key.split('_');\n for (const grant of grants) {\n if (isLevelPattern(grant)) {\n if (level !== undefined && grant === LEVEL_PREFIX + level) return true;\n continue; // a level pattern is never a key pattern\n }\n if (matchSingle(keySegments, grant)) return true;\n }\n return false;\n}\n\nfunction matchSingle(keySegments: readonly string[], grant: string): boolean {\n const grantSegments = grant.split('_');\n const m = grantSegments.length;\n const n = keySegments.length;\n const trailing = grantSegments[m - 1] === '*';\n\n if (trailing) {\n // Leading grantSegments[0..m-2] match keySegments[0..m-2]; trailing '*'\n // consumes keySegments[m-1..] which must be >= 1 segment.\n if (n < m) return false;\n for (let i = 0; i < m - 1; i++) {\n const g = grantSegments[i];\n if (g !== '*' && g !== keySegments[i]) return false;\n }\n return true;\n }\n\n // No trailing '*' ⇒ exact segment-count match.\n if (n !== m) return false;\n for (let i = 0; i < m; i++) {\n const g = grantSegments[i];\n if (g !== '*' && g !== keySegments[i]) return false;\n }\n return true;\n}\n\n/** Allow/deny permission set. Both lists use the same wildcard semantics. */\nexport interface Permissions {\n allow: readonly string[];\n deny: readonly string[];\n}\n\n/**\n * Allow/deny decision: allowed iff some `allow` grant matches AND no `deny`\n * grant matches. Deny overrides allow (even `allow: ['*']`). Default-deny is\n * inherited from `matchPermission`: empty allow ⇒ false; empty deny ⇒ allow\n * decides; blank key ⇒ false.\n */\nexport function evaluate(op: string | Operation, perms: Permissions): boolean {\n return matchPermission(op, perms.allow) && !matchPermission(op, perms.deny);\n}\n\n/**\n * Structural validator for grant patterns (for UI/API input validation, e.g.\n * custom-role CRUD). Valid iff non-empty, no whitespace, no empty segments, and\n * every segment is either exactly `*` or a literal with no `*`. Does NOT enforce\n * a character set — tool-id grants may use arbitrary segment characters.\n */\nexport function isValidPattern(pattern: string): boolean {\n if (typeof pattern !== 'string' || pattern.length === 0) return false;\n if (/\\s/.test(pattern)) return false;\n // `level:X` is its own pattern form — `:` is not `_`, so it must be settled\n // before the segment rule splits the string.\n if (pattern.startsWith(LEVEL_PREFIX)) return isLevelPattern(pattern);\n const segments = pattern.split('_');\n for (const seg of segments) {\n if (seg.length === 0) return false; // no empty segments\n if (seg !== '*' && seg.includes('*')) return false; // partial-star is invalid\n }\n return true;\n}\n","import type { LesslyAppOptions, BindingsMap, Binding, ToolLevel, Operation } from './types';\nimport { executeRequest } from './request';\nimport { evaluate } from './permission-match';\nimport type { Operation as GrantOperation } from './permission-match';\n\n/** Where the access snapshot is in its lifecycle. `can()` is true-capable only in `ready`. */\nexport type AccessState = 'idle' | 'loading' | 'ready' | 'error';\n\n/** The caller's own membership of the active product, exactly as `/me` returns it (flat). */\nexport interface Access {\n role: string;\n roleId: string | null;\n roleName: string | null;\n roleType: 'system' | 'custom' | null;\n allow: string[];\n deny: string[];\n}\n\nexport interface AccessApi {\n /** Fetches once and caches. Concurrent calls share a single request. Rejects on failure. */\n load(): Promise<Access>;\n /** Synchronous PREDICTION of the gateway's answer. False whenever state !== 'ready'. */\n can(op: Operation | string): boolean;\n readonly role: string | undefined;\n readonly state: AccessState;\n /** Drops the cache and returns to `idle`; the next `load()` hits the network. */\n invalidate(): void;\n /** Fires on every state change. Returns an unsubscribe function. */\n subscribe(cb: () => void): () => void;\n}\n\n/** The catalog tool this whole surface is built on. */\nexport const ME_OPERATION_KEY = 'organization_product_me';\n\n/**\n * The route to `/me`, as a `Binding`, for the window in which the SDK ships BEFORE the production\n * catalog carries `organization_product_me`. `src/gen` is regenerated from the production catalog\n * and must never be hand-edited, so without this constant `load()` would need a second SDK\n * release to start working after Workspace deploys the endpoint.\n *\n * Rooted exactly as every other `organization_*` tool is in the real `bindings.gen`\n * (`organization_product_list-members` -> `/governance/api/v1/products/:productId/members`). The\n * generated binding WINS whenever it exists — the catalog is the authority, this is the stopgap —\n * and `access.test.ts` pins the constant against `fixtures/catalog.sample.json` so the day the\n * catalog does carry the tool, a divergence fails a test instead of 404-ing in a browser.\n */\nexport const ME_ROUTE: Binding = {\n method: 'GET',\n path: '/governance/api/v1/products/:productId/me',\n readOnly: true,\n operationKey: ME_OPERATION_KEY,\n level: 'read',\n};\n\n/**\n * Roles the gateway lets past without consulting grants at all. Mirroring that here is what keeps\n * `can()` from greying out an owner's own buttons on a product whose role rows carry no explicit\n * allow list.\n */\nconst ELEVATED_ROLES: ReadonlySet<string> = new Set(['owner', 'admin']);\n\n/** Find the /me binding in whatever the catalog generated, by operationKey — never by path. */\nfunction findMeBinding(bindings: BindingsMap): Binding | undefined {\n for (const resources of Object.values(bindings)) {\n for (const actions of Object.values(resources)) {\n for (const binding of Object.values(actions)) {\n if (binding.operationKey === ME_OPERATION_KEY) return binding;\n }\n }\n }\n return undefined;\n}\n\nfunction asStringArray(value: unknown): string[] {\n return Array.isArray(value) ? value.filter((v): v is string => typeof v === 'string') : [];\n}\n\nfunction asRoleType(value: unknown): Access['roleType'] {\n return value === 'system' || value === 'custom' ? value : null;\n}\n\n/**\n * Normalise the wire payload. Defensive rather than trusting: a missing `role` becomes `''`,\n * which is neither owner nor admin and matches no grant, so a malformed response fails CLOSED\n * instead of throwing inside a render.\n */\nfunction normalize(raw: unknown): Access {\n const r = (typeof raw === 'object' && raw !== null ? raw : {}) as Record<string, unknown>;\n return {\n role: typeof r.role === 'string' ? r.role : '',\n roleId: typeof r.roleId === 'string' ? r.roleId : null,\n roleName: typeof r.roleName === 'string' ? r.roleName : null,\n roleType: asRoleType(r.roleType),\n allow: asStringArray(r.allow),\n deny: asStringArray(r.deny),\n };\n}\n\nexport function createAccess(\n opts: LesslyAppOptions,\n bindings: BindingsMap,\n operations: Record<string, ToolLevel>,\n): AccessApi {\n let snapshot: Access | undefined;\n let inflight: Promise<Access> | undefined;\n let state: AccessState = 'idle';\n const subscribers = new Set<() => void>();\n\n function setState(next: AccessState): void {\n if (next === state) return;\n state = next;\n // Copy first: a subscriber may unsubscribe itself from inside its own callback.\n for (const cb of [...subscribers]) cb();\n }\n\n return {\n load(): Promise<Access> {\n if (snapshot) return Promise.resolve(snapshot);\n if (inflight) return inflight;\n setState('loading');\n const binding = findMeBinding(bindings) ?? ME_ROUTE;\n const request = executeRequest(opts, binding, { productId: opts.productId }).then(\n (raw) => {\n const next = normalize(raw);\n snapshot = next;\n inflight = undefined;\n setState('ready');\n return next;\n },\n (err: unknown) => {\n // The failure is NOT cached: an errored load must be retryable, and `can()` stays\n // false meanwhile because state is 'error'.\n inflight = undefined;\n setState('error');\n throw err;\n },\n );\n inflight = request;\n return request;\n },\n\n can(op: Operation | string): boolean {\n if (state !== 'ready' || !snapshot) return false;\n if (ELEVATED_ROLES.has(snapshot.role)) return true;\n const key = typeof op === 'string' ? op : op.operationKey;\n const level = typeof op === 'string' ? operations[key] : op.level;\n // The property is OMITTED, not set to undefined: `exactOptionalPropertyTypes` forbids the\n // latter, and the matcher's contract is that an operation with no level is reachable only\n // through key patterns — exactly what the gateway does with an uncatalogued key.\n const subject: GrantOperation = level === undefined ? { key } : { key, level };\n return evaluate(subject, { allow: snapshot.allow, deny: snapshot.deny });\n },\n\n get role(): string | undefined {\n return snapshot?.role;\n },\n\n get state(): AccessState {\n return state;\n },\n\n invalidate(): void {\n snapshot = undefined;\n inflight = undefined;\n setState('idle');\n },\n\n subscribe(cb: () => void): () => void {\n subscribers.add(cb);\n return () => { subscribers.delete(cb); };\n },\n };\n}\n","import type {\n LesslyAppOptions, BindingsMap, ResourceBindings, ActionBindings, Binding,\n LesslyStream, LesslyStreamOpener, WsBinding, Operation,\n} from './types';\nimport { executeRequest } from './request';\nimport { connectStream } from './connectStream';\nimport { splitToolName, ROOT_RESOURCE } from './name';\nimport type { SplitTool } from './name';\nimport { bindings } from '../gen/bindings.gen';\nimport { operations } from '../gen/manifest.gen';\nimport { createAccess } from './access';\nimport type { AccessApi } from './access';\nimport type { GeneratedClient } from '../gen/client.gen';\n\nexport interface LesslyClientBase extends LesslyStreamOpener {\n call(toolName: string, input?: Record<string, unknown>): Promise<unknown>;\n /** The caller's own access to the active product — a PREDICTION of the gateway's answer,\n * never a substitute for it. See `createAccess`. */\n readonly access: AccessApi;\n}\n\n/**\n * The call itself, with the operation's identity hung on it as own properties. A caller — and the\n * access check built on top of this SDK — can then ask a METHOD what it is\n * (`sdk.mail.domains.create.level`) instead of rebuilding a tool name from the accessor path,\n * which is lossy (a hyphenated resource joins several id segments) and would put a second copy of\n * the split rule into consumer code. `Object.assign` rather than a class or a Proxy so the result\n * stays an ordinary function: it survives destructuring, and `sdk.x.y.z` still `===` itself\n * because the caller-facing caching below is unchanged.\n */\nfunction actionFn(opts: LesslyAppOptions, binding: Binding): ((input?: Record<string, unknown>) => Promise<unknown>) & Operation {\n return Object.assign(\n (input?: Record<string, unknown>) => executeRequest(opts, binding, input),\n { operationKey: binding.operationKey, level: binding.level },\n );\n}\n\nfunction resourceProxy(opts: LesslyAppOptions, actions: ActionBindings): unknown {\n const cache: Record<string, unknown> = {};\n return new Proxy(cache, {\n get(_t, prop) {\n if (typeof prop !== 'string' || !Object.hasOwn(actions, prop)) return undefined;\n return (cache[prop] ??= actionFn(opts, actions[prop]!));\n },\n });\n}\n\nfunction namespaceProxy(opts: LesslyAppOptions, resources: ResourceBindings): unknown {\n const cache: Record<string, unknown> = {};\n return new Proxy(cache, {\n get(_t, prop) {\n // $root is a wire-level key, never an accessor: exposing it would make\n // sdk.organization.$root.list() an undocumented alias for sdk.organization.list().\n if (typeof prop !== 'string' || prop === ROOT_RESOURCE) return undefined;\n if (Object.hasOwn(resources, prop)) return (cache[prop] ??= resourceProxy(opts, resources[prop]!));\n // Entity-less op hoisted onto the namespace: sdk.organization.list().\n const root = resources[ROOT_RESOURCE];\n if (root && Object.hasOwn(root, prop)) return (cache[prop] ??= actionFn(opts, root[prop]!));\n return undefined;\n },\n });\n}\n\nexport function createLesslyApp(opts: LesslyAppOptions): GeneratedClient & LesslyClientBase {\n const map: BindingsMap = bindings;\n const nsCache: Record<string, unknown> = {};\n // Lazy: an App that never asks about access must not pay for the module's state, and creating\n // a client must never imply a network call. One instance per client, so two clients on two\n // products cannot see each other's snapshot.\n let accessApi: AccessApi | undefined;\n const base: LesslyClientBase = {\n get access(): AccessApi {\n return (accessApi ??= createAccess(opts, map, operations));\n },\n // The whole streaming surface of the client. Streams are NOT reachable through the request\n // proxy: a socket is not a promise-returning call, and hanging one off `sdk.<ns>.<res>.<act>`\n // would make two very different lifetimes look identical at the call site. The generated\n // `<tool>Connect` factories carry the binding and call this.\n openStream(binding: WsBinding, input?: Record<string, unknown>): LesslyStream {\n return connectStream(opts, binding, input);\n },\n call(toolName, input) {\n // Delegates to the single shipped copy of the split rule rather than inlining a fourth\n // one. The try/catch preserves the existing contract exactly: any unusable id yields a\n // REJECTED PROMISE carrying `Unknown tool: <id>`, never a synchronous throw and never\n // splitToolName's own message.\n let split: SplitTool;\n try {\n split = splitToolName(toolName);\n } catch {\n return Promise.reject(new Error(`Unknown tool: ${toolName}`));\n }\n // splitToolName performs no reserved-word check (see its doc comment): a caller-supplied\n // literal \"$root\" segment reports resource: '$root', not null. Only a genuine 2-segment id\n // (resource: null) may address the hoisted bucket — a literal '$root' segment must not, even\n // though $root IS a legitimate own key of the resource bucket below (that's why this check\n // must stay separate from, and precede, the Object.hasOwn walk).\n if (split.resource === ROOT_RESOURCE) return Promise.reject(new Error(`Unknown tool: ${toolName}`));\n // Mirror the Object.hasOwn discipline resourceProxy/namespaceProxy already use above: a raw\n // bracket read into these plain object literals would resolve a caller-chosen action of\n // \"constructor\"/\"toString\"/\"valueOf\"/etc to a truthy Object.prototype member, sailing past\n // the `if (!binding)` guard below and into executeRequest with a non-Binding value.\n const nsMap = Object.hasOwn(map, split.namespace) ? map[split.namespace]! : undefined;\n const resKey = split.resource ?? ROOT_RESOURCE;\n const actions = nsMap && Object.hasOwn(nsMap, resKey) ? nsMap[resKey]! : undefined;\n const binding = actions && Object.hasOwn(actions, split.action) ? actions[split.action]! : undefined;\n if (!binding) return Promise.reject(new Error(`Unknown tool: ${toolName}`));\n return executeRequest(opts, binding, input);\n },\n };\n return new Proxy(base as unknown as Record<string, unknown>, {\n get(target, prop) {\n if (typeof prop === 'string' && Object.hasOwn(map, prop)) return (nsCache[prop] ??= namespaceProxy(opts, map[prop]!));\n return (target as Record<string, unknown>)[prop as string];\n },\n }) as unknown as GeneratedClient & LesslyClientBase;\n}\n","import type { Operation, ToolLevel } from './types';\n\nconst LEVELS: readonly string[] = ['read', 'write', 'admin'];\n\nconst isNonEmptyString = (value: unknown): value is string =>\n typeof value === 'string' && value.trim() !== '';\n\nconst isLevel = (value: unknown): value is ToolLevel =>\n typeof value === 'string' && LEVELS.includes(value);\n\nfunction warnDegenerate(input: unknown): void {\n if (typeof process !== 'undefined' && process.env?.NODE_ENV !== 'production') {\n console.warn('accessReason: degenerate input', input);\n }\n}\n\n/**\n * The one reason string every App shows on a gated control (APP-012).\n *\n * Both values come from the generated method, so the sentence cannot drift when the catalog\n * re-levels a tool. It names the operation key as well as the level because a level alone does not\n * identify a grant — a screenful of controls can all require `write` — and an admin grants by\n * level AND by exact key, so the user has to be able to pass on both.\n *\n * It explains ONE operation. Picking which one — the first that `can()` denied, among the several\n * a button performs — is the caller's job: the rule differs between a button that runs every\n * operation and one that dispatches to a single one, so this takes no array.\n *\n * A bare key is the fallback for a control with no generated method to point at (a runtime probe,\n * an operation no method covers). It drops the level rather than inventing one: there is nothing\n * to read it from, and `level:undefined` in front of a user is worse than saying less. It is a\n * DEGRADATION, not an equal input — an App whose every gate holds an `Operation` never reaches for\n * it, and that is the normal shape, not an omission.\n *\n * It never throws and never renders the words `undefined` or `null`. A render helper that crashes\n * takes a whole screen with it, so the input is checked at runtime rather than trusted from the\n * type: an object with a usable key but no usable level degrades to the key-only sentence, and\n * anything with no usable key at all falls back to \"Not available for your role.\" — plus one\n * `console.warn` outside production, because the caller has a bug worth seeing. The public type\n * stays `Operation | string`; the widening is internal, and passing anything else is still wrong.\n */\nexport function accessReason(op: Operation | string): string {\n if (isNonEmptyString(op)) {\n return `Requires access to ${op}. Ask an admin of this product.`;\n }\n\n // A generated method is a callable that CARRIES `operationKey`/`level`, so `typeof` is\n // 'function', not 'object' — the normal input would fall through a plain object check.\n if (op !== null && (typeof op === 'object' || typeof op === 'function')) {\n const { operationKey, level } = op as { operationKey?: unknown; level?: unknown };\n if (isNonEmptyString(operationKey)) {\n if (isLevel(level)) {\n return `Requires level:${level} (${operationKey}). Ask an admin of this product.`;\n }\n warnDegenerate(op);\n return `Requires access to ${operationKey}. Ask an admin of this product.`;\n }\n }\n\n warnDegenerate(op);\n return 'Not available for your role. Ask an admin of this product.';\n}\n","import type { ToolLevel } from './types';\nimport { operations as generated } from '../gen/manifest.gen';\n\n/**\n * Every operation key the catalog knows, with the level it requires.\n *\n * The generated file is regenerated at publish time from the live catalog, so this map re-levels\n * with the platform rather than with anyone's memory. Read a level from here when there is no\n * generated method to read `op.level` from — a test double, a runtime probe — instead of typing\n * the level as a literal or keeping a lookup table in the App (APP-012).\n *\n * Only a re-export: the generated file stays the single source, this narrows it to `Readonly` so\n * a consumer cannot write into the shared object.\n */\nexport const operations: Readonly<Record<string, ToolLevel>> = generated;\n","import type { ToolComposition } from './types';\nimport { compositions as generated } from '../gen/manifest.gen';\n\n/**\n * Every catalog operation usable as a COMPOSER STEP, with the composition contract it declared.\n *\n * Presence is the signal: a key is here exactly when the catalog gave the tool a `composition`,\n * and the value may legitimately be `{}`. So ask `'mail_domain_create' in compositions` — a\n * truthiness test on `label` (or any other member) would drop a perfectly composable step.\n *\n * The generated file is regenerated at publish time from the live catalog, so the map tracks the\n * platform rather than anyone's memory, and the values are carried verbatim — a key the platform\n * adds reaches the App even before this SDK's type names it.\n *\n * Only a re-export: the generated file stays the single source, this narrows it to `Readonly` so\n * a consumer cannot write into the shared object.\n */\nexport const compositions: Readonly<Record<string, ToolComposition>> = generated;\n"]}