export const webToolNames = [ 'list-datasources', 'list-extract-refresh-tasks', 'update-cloud-extract-refresh-task', 'confirm-update-cloud-extract-refresh-task', 'list-jobs', 'list-users', 'list-workbooks', 'request-workbook-upload', 'publish-workbook', 'request-datasource-upload', 'publish-datasource', 'list-projects', 'list-views', 'list-custom-views', 'list-flows', 'query-datasource', 'get-datasource-metadata', 'get-embed-token', 'record-event', 'get-workbook', 'download-workbook', 'move-workbook', 'get-view', 'get-flow', 'list-flow-runs', 'list-flow-tasks', 'describe-flow', 'get-flow-task', 'run-flow', 'run-flow-task', 'cancel-flow-run', 'get-view-data', 'get-view-image', 'get-custom-view-data', 'get-custom-view-image', 'list-all-pulse-metric-definitions', 'list-pulse-metric-definitions-from-definition-ids', 'list-pulse-metrics-from-metric-definition-id', 'list-pulse-metrics-from-metric-ids', 'list-pulse-metric-subscriptions', 'generate-pulse-metric-value-insight-bundle', 'generate-pulse-insight-brief', 'generate-insight-cards', 'search-content', 'revoke-access-token', 'reset-consent', 'query-admin-insights', 'update-user', 'delete-content', 'confirm-delete-content', 'render-interactive-viz', 'query-knowledge-context', 'inspect-knowledge-context', 'manage-knowledge-context', 'scaffold-data-app', ] as const; export type WebToolName = (typeof webToolNames)[number]; export const webToolGroupNames = [ 'datasource', 'workbook', 'authoring', 'project', 'view', 'flow', 'pulse', 'insights', 'content-exploration', 'tasks', 'jobs', 'users', 'token-management', 'mcp-apps', 'admin-insights', 'content', 'knowledge', 'data-apps', ] as const; export type WebToolGroupName = (typeof webToolGroupNames)[number]; export const webToolGroups = { datasource: ['list-datasources', 'get-datasource-metadata', 'query-datasource'], workbook: ['list-workbooks', 'get-workbook', 'download-workbook', 'move-workbook'], authoring: [ 'request-workbook-upload', 'publish-workbook', 'request-datasource-upload', 'publish-datasource', ], project: ['list-projects'], view: [ 'list-views', 'list-custom-views', 'get-view', 'get-view-data', 'get-view-image', 'get-custom-view-data', 'get-custom-view-image', ], flow: [ 'list-flows', 'get-flow', 'list-flow-runs', 'list-flow-tasks', 'describe-flow', 'get-flow-task', 'run-flow', 'run-flow-task', 'cancel-flow-run', ], pulse: [ 'list-all-pulse-metric-definitions', 'list-pulse-metric-definitions-from-definition-ids', 'list-pulse-metrics-from-metric-definition-id', 'list-pulse-metrics-from-metric-ids', 'list-pulse-metric-subscriptions', 'generate-pulse-metric-value-insight-bundle', 'generate-pulse-insight-brief', ], insights: ['generate-insight-cards'], 'content-exploration': ['search-content'], tasks: [ 'list-extract-refresh-tasks', 'update-cloud-extract-refresh-task', 'confirm-update-cloud-extract-refresh-task', ], jobs: ['list-jobs'], users: ['list-users', 'update-user'], 'token-management': ['revoke-access-token', 'reset-consent'], 'mcp-apps': ['get-embed-token', 'record-event', 'render-interactive-viz'], 'admin-insights': ['query-admin-insights'], content: ['delete-content', 'confirm-delete-content'], knowledge: ['query-knowledge-context', 'inspect-knowledge-context', 'manage-knowledge-context'], 'data-apps': ['scaffold-data-app'], } as const satisfies Record>; export function isWebToolName(value: unknown): value is WebToolName { return webToolNames.some((name) => name === value); } export function isWebToolGroupName(value: unknown): value is WebToolGroupName { return webToolGroupNames.some((name) => name === value); }