@burdenoff/mcp-libs 2026.703.1 → 2026.703.3

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/errors.ts","../../../src/core/result.ts","../../../src/core/tool-name.ts","../../../src/modules/scheduler/operations.ts","../../../src/modules/scheduler/tools.ts","../../../src/modules/scheduler/index.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Error classes for MCP SDK.\n *\n * Modules MUST throw these instead of throwing raw Errors. The registerTool\n * wrapper in result.ts catches and maps them to MCP-protocol-compliant\n * `{ isError: true, content: [...] }` responses.\n *\n * Throwing past the wrapper to the protocol surfaces as JSON-RPC -32603 to\n * the client and is a protocol bug.\n */\n\nexport class McpUserError extends Error {\n public readonly hint: string | undefined;\n\n constructor(message: string, opts?: { hint?: string }) {\n super(message);\n this.name = 'McpUserError';\n this.hint = opts?.hint;\n }\n}\n\nexport class McpAuthError extends McpUserError {\n constructor(message: string, opts?: { hint?: string }) {\n super(message, {\n hint: opts?.hint ?? 'Run the auth_login tool to authenticate.',\n });\n this.name = 'McpAuthError';\n }\n}\n\nexport class McpInternalError extends Error {\n public override readonly cause: unknown;\n\n constructor(message: string, cause?: unknown) {\n super(message);\n this.name = 'McpInternalError';\n this.cause = cause;\n }\n}\n","/**\n * MCP tool result helpers + central handler.\n *\n * Modules NEVER call server.registerTool directly — they use registerTool()\n * from this module so the central try/catch wraps the handler and:\n * - maps thrown McpUserError / McpAuthError / McpInternalError to\n * MCP-protocol-compliant `{ isError: true, content: [...] }` shapes\n * - threads `_meta.progressToken` into ctx.progress for long ops\n * - emits a structured log line on every error\n * - never leaks `cause` from McpInternalError to the client\n *\n * This is the analog of cli-sdk's createProgram() central error handler.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { ZodRawShape } from 'zod';\nimport type { McpContext } from './context.js';\nimport { McpAuthError, McpInternalError, McpUserError } from './errors.js';\n\nexport interface ToolTextContent {\n type: 'text';\n text: string;\n [k: string]: unknown;\n}\n\nexport interface ToolResult {\n content: ToolTextContent[];\n isError?: boolean;\n structuredContent?: Record<string, unknown>;\n [k: string]: unknown;\n}\n\nexport interface ToolMeta {\n progressToken?: string | number;\n}\n\n/**\n * Build a successful tool result with JSON content (pretty-printed).\n */\nexport function jsonResult(data: unknown, structured?: Record<string, unknown>): ToolResult {\n const result: ToolResult = {\n content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],\n };\n if (structured !== undefined) {\n result.structuredContent = structured;\n }\n return result;\n}\n\n/**\n * Build a successful tool result with plain text content.\n */\nexport function textResult(text: string): ToolResult {\n return { content: [{ type: 'text', text }] };\n}\n\n/**\n * Build an error tool result. Honors MCP's `{ isError: true, content }` shape.\n * Optional hint is appended on a new line so the LLM can react.\n */\nexport function errorResult(message: string, hint?: string): ToolResult {\n const text = hint ? `${message}\\n\\nHint: ${hint}` : message;\n return { content: [{ type: 'text', text }], isError: true };\n}\n\nexport interface ToolMetadata {\n title: string;\n description: string;\n inputSchema?: ZodRawShape;\n}\n\nexport type ToolHandler<TArgs = Record<string, unknown>> = (\n args: TArgs,\n ctx: McpContext,\n meta: ToolMeta,\n) => Promise<unknown>;\n\n/**\n * Register a tool with the central error wrapper.\n *\n * The handler returns a plain value or void. The wrapper:\n * - wraps non-undefined returns in jsonResult()\n * - if the value already looks like a ToolResult (has `content`), passes through\n * - catches McpAuthError / McpUserError / McpInternalError / generic Error\n * - logs every error via ctx.logger.error\n */\nexport function registerTool<TArgs extends Record<string, unknown>>(\n server: McpServer,\n ctx: McpContext,\n name: string,\n metadata: ToolMetadata,\n handler: ToolHandler<TArgs>,\n): void {\n const sdkConfig = {\n title: metadata.title,\n description: metadata.description,\n ...(metadata.inputSchema ? { inputSchema: metadata.inputSchema } : {}),\n };\n\n // The MCP SDK's registerTool signature is `(name, config, handler)`. The\n // handler arity depends on whether inputSchema is present (1-arg without,\n // 2-arg with). We accept a unified handler shape and dispatch at runtime.\n // The SDK's typing is strict and conditional on the inputSchema generic;\n // bypass with a cast since runtime acceptance is unconditional.\n const wrapped = async (...callbackArgs: unknown[]): Promise<ToolResult> => {\n const hasArgs = callbackArgs.length === 2;\n const args = (hasArgs ? callbackArgs[0] : {}) as TArgs;\n const extra = (hasArgs ? callbackArgs[1] : callbackArgs[0]) as\n | { _meta?: { progressToken?: string | number } }\n | undefined;\n\n const progressToken = extra?._meta?.progressToken;\n const meta: ToolMeta = progressToken !== undefined ? { progressToken } : {};\n\n try {\n const result = await handler(args, ctx, meta);\n if (isToolResult(result)) return result;\n if (result === undefined) return textResult('OK');\n return jsonResult(result);\n } catch (error) {\n return mapErrorToResult(error, ctx, name);\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (server as any).registerTool(name, sdkConfig, wrapped);\n}\n\nfunction isToolResult(value: unknown): value is ToolResult {\n return (\n !!value &&\n typeof value === 'object' &&\n 'content' in value &&\n Array.isArray((value as ToolResult).content)\n );\n}\n\nfunction mapErrorToResult(error: unknown, ctx: McpContext, toolName: string): ToolResult {\n if (error instanceof McpAuthError) {\n ctx.logger.warn(`${toolName}: auth required`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpUserError) {\n ctx.logger.info(`${toolName}: user error`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpInternalError) {\n ctx.logger.error(`${toolName}: internal error`, {\n message: error.message,\n cause: stringifyCause(error.cause),\n });\n return errorResult(`Internal error in ${toolName}.`);\n }\n const message = error instanceof Error ? error.message : String(error);\n ctx.logger.error(`${toolName}: unhandled error`, { message });\n return errorResult(`${toolName}: ${message}`);\n}\n\nfunction stringifyCause(cause: unknown): string | undefined {\n if (cause === undefined || cause === null) return undefined;\n if (cause instanceof Error) return cause.message;\n try {\n return JSON.stringify(cause);\n } catch {\n return String(cause);\n }\n}\n","/**\n * Tool / resource / prompt naming helpers.\n *\n * Mandatory product prefix avoids collisions when Claude Desktop runs\n * multiple MCP servers concurrently (typical setup is ~6).\n *\n * Tool names are capped at 63 characters — Claude Desktop pre-1.x\n * truncated at 64 in some versions.\n */\n\nimport { McpInternalError } from './errors.js';\n\nconst MAX_TOOL_NAME_LENGTH = 63;\n\nfunction assertSafeName(name: string, kind: 'tool' | 'resource' | 'prompt'): string {\n if (kind === 'tool' && name.length > MAX_TOOL_NAME_LENGTH) {\n throw new McpInternalError(\n `Tool name '${name}' exceeds ${MAX_TOOL_NAME_LENGTH} characters (some MCP clients truncate at 64).`,\n );\n }\n return name;\n}\n\n/**\n * Build a tool name. Format: `<productName>_<...parts>` (snake_case).\n * Example: mcpToolName('vibecontrols', 'vibes', 'list') -> 'vibecontrols_vibes_list'\n */\nexport function mcpToolName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpToolName: productName is required');\n }\n const name = [productName, ...parts].filter(Boolean).join('_');\n return assertSafeName(name, 'tool');\n}\n\n/**\n * Build a resource URI. Format: `<productName>://<...parts>`.\n * Example: mcpResourceUri('vibecontrols', 'schema') -> 'vibecontrols://schema'\n */\nexport function mcpResourceUri(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpResourceUri: productName is required');\n }\n return `${productName}://${parts.filter(Boolean).join('/')}`;\n}\n\n/**\n * Build a prompt name. Format: `<productName>-<...parts>` (kebab-case).\n * Example: mcpPromptName('vibecontrols', 'setup') -> 'vibecontrols-setup'\n */\nexport function mcpPromptName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpPromptName: productName is required');\n }\n return [productName, ...parts].filter(Boolean).join('-');\n}\n\nexport const TOOL_NAME_LIMIT = MAX_TOOL_NAME_LENGTH;\n","export const LIST_SCHEDULED_JOBS = `\n query ListScheduledJobs($workspaceId: ID!, $filter: JobFilterInput, $pagination: SchedulerPaginationInput) {\n scheduledJobs(workspaceId: $workspaceId, filter: $filter, pagination: $pagination) {\n jobs { id name status scheduleType nextExecutionAt createdAt }\n total nextCursor\n }\n }\n`;\n\nexport const GET_SCHEDULED_JOB = `\n query GetScheduledJob($id: ID!) {\n scheduledJob(id: $id) {\n id name status scheduleType cronExpression executorType\n nextExecutionAt lastExecutionAt\n }\n }\n`;\n\nexport const CREATE_SCHEDULED_JOB = `\n mutation CreateScheduledJob($workspaceId: ID!, $input: CreateScheduledJobInput!) {\n createScheduledJob(workspaceId: $workspaceId, input: $input) {\n id name status scheduleType\n }\n }\n`;\n\nexport const DELETE_SCHEDULED_JOB = `\n mutation DeleteScheduledJob($id: ID!) {\n deleteScheduledJob(id: $id)\n }\n`;\n\nexport const JOB_EXECUTIONS = `\n query JobExecutions($jobId: ID!, $pagination: SchedulerPaginationInput) {\n jobExecutions(jobId: $jobId, pagination: $pagination) {\n executions { id status startedAt completedAt duration errorMessage success }\n total nextCursor\n }\n }\n`;\n\nexport const UPDATE_SCHEDULED_JOB = `\n mutation UpdateScheduledJob($id: ID!, $input: UpdateScheduledJobInput!) {\n updateScheduledJob(id: $id, input: $input) {\n id name status scheduleType cronExpression nextExecutionAt\n }\n }\n`;\n\nexport const GET_JOB_EXECUTION = `\n query JobExecution($id: ID!) {\n jobExecution(id: $id) {\n id scheduleId status attemptNumber startedAt completedAt\n errorMessage result success\n }\n }\n`;\n\nexport const RETRY_JOB_EXECUTION = `\n mutation RetryJobExecution($executionId: ID!) {\n retryJobExecution(executionId: $executionId) {\n id status attemptNumber startedAt\n }\n }\n`;\n\nexport const PAUSE_JOB = `\n mutation PauseScheduledJob($id: ID!) {\n pauseScheduledJob(id: $id) { id name status }\n }\n`;\n\nexport const RESUME_JOB = `\n mutation ResumeScheduledJob($id: ID!) {\n resumeScheduledJob(id: $id) { id name status }\n }\n`;\n\nexport const ACTIVATE_SCHEDULE = `\n mutation ActivateSchedule($id: ID!) {\n activateSchedule(id: $id) { id name status }\n }\n`;\n\nexport const ARCHIVE_SCHEDULE = `\n mutation ArchiveSchedule($id: ID!) {\n archiveSchedule(id: $id) { id name status }\n }\n`;\n\nexport const DISABLE_SCHEDULE = `\n mutation DisableSchedule($id: ID!, $reason: String) {\n disableSchedule(id: $id, reason: $reason) { id name status }\n }\n`;\n\nexport const CLONE_SCHEDULE = `\n mutation CloneSchedule($sourceId: ID!, $newWorkspaceId: ID, $overrides: CreateScheduledJobInput) {\n cloneSchedule(sourceId: $sourceId, newWorkspaceId: $newWorkspaceId, overrides: $overrides) {\n id name status\n }\n }\n`;\n\nexport const EXECUTE_JOB_NOW = `\n mutation ExecuteJobNow($id: ID!) {\n executeJobNow(id: $id) { id scheduledJobId status }\n }\n`;\n\nexport const PREVIEW_SCHEDULE = `\n query PreviewSchedule(\n $scheduleType: ScheduleType!\n $cronExpression: String\n $rrule: String\n $interval: Int\n $intervalUnit: String\n $count: Int\n $startDate: DateTime\n $endDate: DateTime\n $timezone: String\n ) {\n previewSchedule(\n scheduleType: $scheduleType\n cronExpression: $cronExpression\n rrule: $rrule\n interval: $interval\n intervalUnit: $intervalUnit\n count: $count\n startDate: $startDate\n endDate: $endDate\n timezone: $timezone\n ) {\n count startDate endDate nextExecutions\n }\n }\n`;\n\nexport const LIST_SCHEDULE_TEMPLATES = `\n query ScheduleTemplates(\n $workspaceId: ID!\n $filter: ScheduleTemplateFilterInput\n $pagination: SchedulerPaginationInput\n ) {\n scheduleTemplates(workspaceId: $workspaceId, filter: $filter, pagination: $pagination) {\n templates { id name category isPublic scheduleType executorType usageCount }\n total nextCursor\n }\n }\n`;\n\nexport const LIST_PUBLIC_SCHEDULE_TEMPLATES = `\n query PublicScheduleTemplates(\n $filter: ScheduleTemplateFilterInput\n $pagination: SchedulerPaginationInput\n ) {\n publicScheduleTemplates(filter: $filter, pagination: $pagination) {\n templates { id name category isPublic scheduleType executorType usageCount }\n total nextCursor\n }\n }\n`;\n\nexport const GET_SCHEDULE_TEMPLATE = `\n query ScheduleTemplate($id: ID!) {\n scheduleTemplate(id: $id) {\n id name description category isPublic scheduleType executorType\n scheduleConfig executorConfig usageCount\n }\n }\n`;\n\nexport const CREATE_SCHEDULE_TEMPLATE = `\n mutation CreateScheduleTemplate($input: CreateScheduleTemplateInput!, $workspaceId: ID!) {\n createScheduleTemplate(input: $input, workspaceId: $workspaceId) { id name scheduleType }\n }\n`;\n\nexport const UPDATE_SCHEDULE_TEMPLATE = `\n mutation UpdateScheduleTemplate($id: ID!, $input: UpdateScheduleTemplateInput!) {\n updateScheduleTemplate(id: $id, input: $input) { id name }\n }\n`;\n\nexport const DELETE_SCHEDULE_TEMPLATE = `\n mutation DeleteScheduleTemplate($id: ID!) { deleteScheduleTemplate(id: $id) }\n`;\n\nexport const CREATE_SCHEDULE_FROM_TEMPLATE = `\n mutation CreateScheduleFromTemplate(\n $templateId: ID!\n $workspaceId: ID!\n $overrides: CreateScheduledJobInput\n ) {\n createScheduleFromTemplate(templateId: $templateId, workspaceId: $workspaceId, overrides: $overrides) {\n id name status\n }\n }\n`;\n\nexport const SCHEDULE_VERSION_HISTORY = `\n query ScheduleVersionHistory($scheduleId: ID!) {\n scheduleVersionHistory(scheduleId: $scheduleId) {\n id scheduleId version changedBy changedFields changeReason createdAt\n }\n }\n`;\n\nexport const RESTORE_SCHEDULE_VERSION = `\n mutation RestoreScheduleVersion($scheduleId: ID!, $versionId: ID!) {\n restoreScheduleVersion(scheduleId: $scheduleId, versionId: $versionId) { id name version }\n }\n`;\n\nexport const TAG_SCHEDULED_JOB = `\n mutation TagScheduledJob($input: TagScheduledJobInput!) {\n tagScheduledJob(input: $input) { id entityId tagId source }\n }\n`;\n\nexport const UNTAG_SCHEDULED_JOB = `\n mutation UntagScheduledJob($input: UntagScheduledJobInput!) {\n untagScheduledJob(input: $input)\n }\n`;\n\nexport const REPLACE_SCHEDULED_JOB_TAGS = `\n mutation ReplaceScheduledJobTags($input: ReplaceScheduledJobTagsInput!) {\n replaceScheduledJobTags(input: $input) { id entityId tagId source }\n }\n`;\n\nexport const GET_SCHEDULED_JOB_TAGS = `\n query GetScheduledJobTags($input: GetScheduledJobTagsInput!) {\n getScheduledJobTags(input: $input) { id entityId tagId source }\n }\n`;\n\nexport const EXECUTION_UPDATED_POLL = `\n query ExecutionUpdatedPoll($id: ID!) {\n jobExecution(id: $id) {\n id scheduleId status attemptNumber startedAt completedAt errorMessage success\n }\n }\n`;\n\nexport const JOB_STATUS_UPDATED_POLL = `\n query JobStatusUpdatedPoll($id: ID!) {\n scheduledJob(id: $id) {\n id name status nextExecutionAt lastExecutionAt updatedAt\n }\n }\n`;\n","/**\n * Scheduler MCP tools — scheduled jobs CRUD + execution history.\n * Surface mirrors cli-sdk/src/modules/scheduler/commands.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../core/index.js';\nimport * as ops from './operations.js';\n\ninterface JobRow {\n id: string;\n name: string;\n status?: string;\n scheduleType?: string;\n nextExecutionAt?: string;\n createdAt?: string;\n}\n\ninterface ExecutionRow {\n id: string;\n status?: string;\n startedAt?: string;\n completedAt?: string;\n duration?: number;\n errorMessage?: string | null;\n success?: boolean;\n}\n\nfunction readWorkspaceId(ctx: McpContext): string | null {\n const auth = ctx.auth.read();\n return auth?.workspaceId ?? null;\n}\n\nconst ScheduleTypeEnum = z.enum(['CRON', 'INTERVAL', 'ONCE']);\nconst ExecutorTypeEnum = z.enum(['WORKFLOW', 'FUNCTION', 'WEBHOOK']);\n\nexport function registerSchedulerTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_list')),\n {\n title: 'List Scheduled Jobs',\n description: 'List scheduled jobs in the active workspace.',\n inputSchema: {\n status: z.string().optional().describe('Filter by status (will be uppercased)'),\n type: ScheduleTypeEnum.optional().describe('Filter by scheduleType'),\n limit: z.number().optional().describe('Page size (default 50)'),\n },\n },\n async ({ status, type, limit }) => {\n try {\n const workspaceId = readWorkspaceId(ctx);\n if (!workspaceId) {\n return errorResult('No workspace set. Run the auth workspace_set tool first.');\n }\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status.toUpperCase();\n if (type !== undefined) filter.scheduleType = type;\n const data = await ctx.gql.workspace.request<{\n scheduledJobs: { jobs: JobRow[]; total: number; nextCursor?: string };\n }>(ops.LIST_SCHEDULED_JOBS, {\n workspaceId,\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: { limit: limit ?? 50, offset: 0 },\n });\n return jsonResult(data.scheduledJobs);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_list failed', { error: String(error) });\n return errorResult(\n `Failed to list scheduled jobs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_get')),\n {\n title: 'Get Scheduled Job',\n description: 'Get a scheduled job by ID.',\n inputSchema: { id: z.string().describe('Job ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ scheduledJob: JobRow | null }>(\n ops.GET_SCHEDULED_JOB,\n { id },\n );\n if (!data.scheduledJob) return errorResult(`Job ${id} not found`);\n return jsonResult(data.scheduledJob);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_get failed', { error: String(error) });\n return errorResult(\n `Failed to get scheduled job: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_create')),\n {\n title: 'Create Scheduled Job',\n description: 'Create a scheduled job.',\n inputSchema: {\n name: z.string().describe('Job name'),\n type: ScheduleTypeEnum.describe('Schedule type'),\n cron: z.string().optional().describe('Cron expression (for CRON type)'),\n intervalSeconds: z.number().optional().describe('Interval seconds (for INTERVAL type)'),\n executor: ExecutorTypeEnum.optional().describe('Executor type (default WORKFLOW)'),\n executorConfig: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('Executor configuration object'),\n },\n },\n async ({ name, type, cron, intervalSeconds, executor, executorConfig }) => {\n try {\n const workspaceId = readWorkspaceId(ctx);\n if (!workspaceId) {\n return errorResult('No workspace set. Run the auth workspace_set tool first.');\n }\n const input: Record<string, unknown> = {\n name,\n scheduleType: type,\n executorType: executor ?? 'WORKFLOW',\n executorConfig: executorConfig ?? {},\n };\n if (cron !== undefined) input.cronExpression = cron;\n if (intervalSeconds !== undefined) input.intervalSeconds = intervalSeconds;\n const data = await ctx.gql.workspace.request<{ createScheduledJob: JobRow }>(\n ops.CREATE_SCHEDULED_JOB,\n { workspaceId, input },\n );\n return jsonResult(data.createScheduledJob);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_create failed', { error: String(error) });\n return errorResult(\n `Failed to create scheduled job: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_update')),\n {\n title: 'Update Scheduled Job',\n description:\n 'Update a scheduled job (cron expression, executor config, retry policy, etc.). At least one field must be provided. Returns the updated ScheduledJob.',\n inputSchema: {\n id: z.string().describe('Job ID'),\n name: z.string().optional().describe('Updated job name'),\n description: z.string().optional().describe('Updated description'),\n cronExpression: z.string().optional().describe('Updated cron expression (CRON jobs only)'),\n interval: z.number().int().optional().describe('Updated interval (INTERVAL jobs only)'),\n intervalUnit: z\n .string()\n .optional()\n .describe('Interval unit (SECONDS|MINUTES|HOURS|DAYS, will be uppercased)'),\n endDate: z.string().optional().describe('Updated end date (ISO-8601)'),\n executorConfig: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('Updated executor configuration'),\n maxRetries: z.number().int().optional().describe('Max retry attempts on failure'),\n changeReason: z.string().optional().describe('Audit-trail reason for the change'),\n },\n },\n async ({\n id,\n name,\n description,\n cronExpression,\n interval,\n intervalUnit,\n endDate,\n executorConfig,\n maxRetries,\n changeReason,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (cronExpression !== undefined) input.cronExpression = cronExpression;\n if (interval !== undefined) input.interval = interval;\n if (intervalUnit !== undefined) input.intervalUnit = intervalUnit.toUpperCase();\n if (endDate !== undefined) input.endDate = endDate;\n if (executorConfig !== undefined) input.executorConfig = executorConfig;\n if (maxRetries !== undefined) input.maxRetries = maxRetries;\n if (changeReason !== undefined) input.changeReason = changeReason;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one field to update');\n }\n const data = await ctx.gql.workspace.request<{ updateScheduledJob: JobRow }>(\n ops.UPDATE_SCHEDULED_JOB,\n { id, input },\n );\n return jsonResult(data.updateScheduledJob);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_update failed', { error: String(error) });\n return errorResult(\n `Failed to update scheduled job: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_delete')),\n {\n title: 'Delete Scheduled Job',\n description: 'Delete a scheduled job.',\n inputSchema: { id: z.string().describe('Job ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteScheduledJob: boolean }>(\n ops.DELETE_SCHEDULED_JOB,\n { id },\n );\n return jsonResult({ deleted: data.deleteScheduledJob, jobId: id });\n } catch (error) {\n ctx.logger.error('scheduler_jobs_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete scheduled job: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_executions_list')),\n {\n title: 'List Job Executions',\n description: 'List execution history for a scheduled job.',\n inputSchema: {\n jobId: z.string().describe('Job ID'),\n limit: z.number().optional().describe('Page size (default 100)'),\n },\n },\n async ({ jobId, limit }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n jobExecutions: { executions: ExecutionRow[]; total: number; nextCursor?: string };\n }>(ops.JOB_EXECUTIONS, {\n jobId,\n pagination: { limit: limit ?? 100, offset: 0 },\n });\n return jsonResult(data.jobExecutions);\n } catch (error) {\n ctx.logger.error('scheduler_executions_list failed', { error: String(error) });\n return errorResult(\n `Failed to list executions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_executions_get')),\n {\n title: 'Get Job Execution',\n description:\n 'Fetch a single job execution by ID, including status, attempt number, timings, error message and result payload. Returns the JobExecution or an error if not found.',\n inputSchema: { id: z.string().describe('Execution ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ jobExecution: ExecutionRow | null }>(\n ops.GET_JOB_EXECUTION,\n { id },\n );\n if (!data.jobExecution) return errorResult(`Execution ${id} not found`);\n return jsonResult(data.jobExecution);\n } catch (error) {\n ctx.logger.error('scheduler_executions_get failed', { error: String(error) });\n return errorResult(\n `Failed to get job execution: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Jobs (extras) ───────────────────────────────────────────────────────\n for (const [tool, op, title, desc, mutationField] of [\n [\n 'scheduler_jobs_pause',\n ops.PAUSE_JOB,\n 'Pause Scheduled Job',\n 'Pause a scheduled job.',\n 'pauseScheduledJob',\n ],\n [\n 'scheduler_jobs_resume',\n ops.RESUME_JOB,\n 'Resume Scheduled Job',\n 'Resume a paused scheduled job.',\n 'resumeScheduledJob',\n ],\n [\n 'scheduler_jobs_activate',\n ops.ACTIVATE_SCHEDULE,\n 'Activate Schedule',\n 'Activate a draft or disabled schedule.',\n 'activateSchedule',\n ],\n [\n 'scheduler_jobs_archive',\n ops.ARCHIVE_SCHEDULE,\n 'Archive Schedule',\n 'Archive a scheduled job (soft delete).',\n 'archiveSchedule',\n ],\n ] as const) {\n server.registerTool(\n track(mcpToolName(ctx.productName, tool)),\n {\n title,\n description: desc,\n inputSchema: { id: z.string().describe('Schedule ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<Record<string, JobRow>>(op, { id });\n return jsonResult(data[mutationField]);\n } catch (error) {\n ctx.logger.error(`${tool} failed`, { error: String(error) });\n return errorResult(\n `${title} failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n }\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_disable')),\n {\n title: 'Disable Schedule',\n description: 'Disable a schedule with an optional reason.',\n inputSchema: {\n id: z.string().describe('Schedule ID'),\n reason: z.string().optional().describe('Disable reason (audit trail)'),\n },\n },\n async ({ id, reason }) => {\n try {\n const data = await ctx.gql.workspace.request<{ disableSchedule: JobRow }>(\n ops.DISABLE_SCHEDULE,\n { id, reason: reason ?? null },\n );\n return jsonResult(data.disableSchedule);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_disable failed', { error: String(error) });\n return errorResult(\n `Failed to disable: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_clone')),\n {\n title: 'Clone Schedule',\n description:\n 'Clone an existing schedule. Optionally move to another workspace and supply override fields.',\n inputSchema: {\n sourceId: z.string().describe('Source schedule ID'),\n newWorkspaceId: z.string().optional().describe('Target workspace (defaults to source)'),\n overrides: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('CreateScheduledJobInput overrides'),\n },\n },\n async ({ sourceId, newWorkspaceId, overrides }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cloneSchedule: JobRow }>(\n ops.CLONE_SCHEDULE,\n { sourceId, newWorkspaceId: newWorkspaceId ?? null, overrides: overrides ?? null },\n );\n return jsonResult(data.cloneSchedule);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_clone failed', { error: String(error) });\n return errorResult(\n `Failed to clone: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_execute_now')),\n {\n title: 'Execute Job Now',\n description: 'Trigger a scheduled job to execute immediately (out-of-band).',\n inputSchema: { id: z.string().describe('Schedule ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ executeJobNow: ExecutionRow }>(\n ops.EXECUTE_JOB_NOW,\n { id },\n );\n return jsonResult(data.executeJobNow);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_execute_now failed', { error: String(error) });\n return errorResult(\n `Failed to execute: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_preview')),\n {\n title: 'Preview Schedule',\n description:\n 'Compute upcoming execution times for a schedule definition without creating it.',\n inputSchema: {\n scheduleType: z.string().describe('CRON | FIXED_INTERVAL | ONE_TIME | RRULE | WINDOWED'),\n cronExpression: z.string().optional(),\n rrule: z.string().optional(),\n interval: z.number().int().optional(),\n intervalUnit: z.string().optional(),\n count: z.number().int().optional().describe('How many upcoming executions to return'),\n startDate: z.string().optional(),\n endDate: z.string().optional(),\n timezone: z.string().optional(),\n },\n },\n async ({\n scheduleType,\n cronExpression,\n rrule,\n interval,\n intervalUnit,\n count,\n startDate,\n endDate,\n timezone,\n }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n previewSchedule: {\n count: number;\n startDate: string;\n endDate: string;\n nextExecutions: string[];\n };\n }>(ops.PREVIEW_SCHEDULE, {\n scheduleType: scheduleType.toUpperCase(),\n cronExpression: cronExpression ?? null,\n rrule: rrule ?? null,\n interval: interval ?? null,\n intervalUnit: intervalUnit ?? null,\n count: count ?? null,\n startDate: startDate ?? null,\n endDate: endDate ?? null,\n timezone: timezone ?? null,\n });\n return jsonResult(data.previewSchedule);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_preview failed', { error: String(error) });\n return errorResult(\n `Failed to preview: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Templates ───────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_templates_list')),\n {\n title: 'List Schedule Templates',\n description: 'List schedule templates in the active workspace.',\n inputSchema: {\n category: z.string().optional(),\n isPublic: z.boolean().optional(),\n limit: z.number().optional(),\n },\n },\n async ({ category, isPublic, limit }) => {\n try {\n const workspaceId = readWorkspaceId(ctx);\n if (!workspaceId) return errorResult('No workspace set.');\n const filter: Record<string, unknown> = {};\n if (category !== undefined) filter.category = category;\n if (isPublic !== undefined) filter.isPublic = isPublic;\n const data = await ctx.gql.workspace.request<{\n scheduleTemplates: { templates: unknown[]; total: number };\n }>(ops.LIST_SCHEDULE_TEMPLATES, {\n workspaceId,\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: { first: limit ?? 100 },\n });\n return jsonResult(data.scheduleTemplates);\n } catch (error) {\n ctx.logger.error('scheduler_templates_list failed', { error: String(error) });\n return errorResult(\n `Failed to list templates: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_templates_list_public')),\n {\n title: 'List Public Schedule Templates',\n description: 'List public (cross-workspace) schedule templates.',\n inputSchema: {\n category: z.string().optional(),\n limit: z.number().optional(),\n },\n },\n async ({ category, limit }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (category !== undefined) filter.category = category;\n const data = await ctx.gql.workspace.request<{\n publicScheduleTemplates: { templates: unknown[]; total: number };\n }>(ops.LIST_PUBLIC_SCHEDULE_TEMPLATES, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: { first: limit ?? 100 },\n });\n return jsonResult(data.publicScheduleTemplates);\n } catch (error) {\n ctx.logger.error('scheduler_templates_list_public failed', { error: String(error) });\n return errorResult(\n `Failed to list: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_templates_get')),\n {\n title: 'Get Schedule Template',\n description: 'Get a schedule template by ID.',\n inputSchema: { id: z.string() },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ scheduleTemplate: unknown }>(\n ops.GET_SCHEDULE_TEMPLATE,\n { id },\n );\n if (!data.scheduleTemplate) return errorResult(`Template ${id} not found`);\n return jsonResult(data.scheduleTemplate);\n } catch (error) {\n ctx.logger.error('scheduler_templates_get failed', { error: String(error) });\n return errorResult(\n `Failed to get template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_templates_create')),\n {\n title: 'Create Schedule Template',\n description: 'Create a reusable schedule template in the active workspace.',\n inputSchema: {\n name: z.string(),\n scheduleType: z.string().describe('CRON | FIXED_INTERVAL | ONE_TIME | RRULE | WINDOWED'),\n executorType: z.string().describe('WEBHOOK | INTERNAL_API | NATS_TOPIC | GRAPHQL'),\n scheduleConfig: z.record(z.string(), z.unknown()),\n executorConfig: z.record(z.string(), z.unknown()),\n description: z.string().optional(),\n category: z.string().optional(),\n isPublic: z.boolean().optional(),\n },\n },\n async ({\n name,\n scheduleType,\n executorType,\n scheduleConfig,\n executorConfig,\n description,\n category,\n isPublic,\n }) => {\n try {\n const workspaceId = readWorkspaceId(ctx);\n if (!workspaceId) return errorResult('No workspace set.');\n const input: Record<string, unknown> = {\n name,\n scheduleType: scheduleType.toUpperCase(),\n executorType: executorType.toUpperCase(),\n scheduleConfig,\n executorConfig,\n };\n if (description !== undefined) input.description = description;\n if (category !== undefined) input.category = category;\n if (isPublic !== undefined) input.isPublic = isPublic;\n const data = await ctx.gql.workspace.request<{ createScheduleTemplate: unknown }>(\n ops.CREATE_SCHEDULE_TEMPLATE,\n { workspaceId, input },\n );\n return jsonResult(data.createScheduleTemplate);\n } catch (error) {\n ctx.logger.error('scheduler_templates_create failed', { error: String(error) });\n return errorResult(\n `Failed to create template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_templates_update')),\n {\n title: 'Update Schedule Template',\n description: 'Update a schedule template.',\n inputSchema: {\n id: z.string(),\n name: z.string().optional(),\n description: z.string().optional(),\n category: z.string().optional(),\n isPublic: z.boolean().optional(),\n },\n },\n async ({ id, name, description, category, isPublic }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (category !== undefined) input.category = category;\n if (isPublic !== undefined) input.isPublic = isPublic;\n if (Object.keys(input).length === 0) {\n return errorResult('Provide at least one field to update');\n }\n const data = await ctx.gql.workspace.request<{ updateScheduleTemplate: unknown }>(\n ops.UPDATE_SCHEDULE_TEMPLATE,\n { id, input },\n );\n return jsonResult(data.updateScheduleTemplate);\n } catch (error) {\n ctx.logger.error('scheduler_templates_update failed', { error: String(error) });\n return errorResult(\n `Failed to update template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_templates_delete')),\n {\n title: 'Delete Schedule Template',\n description: 'Delete a schedule template.',\n inputSchema: { id: z.string() },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteScheduleTemplate: boolean }>(\n ops.DELETE_SCHEDULE_TEMPLATE,\n { id },\n );\n return jsonResult({ deleted: data.deleteScheduleTemplate, id });\n } catch (error) {\n ctx.logger.error('scheduler_templates_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_templates_create_from')),\n {\n title: 'Create Schedule From Template',\n description: 'Instantiate a schedule from a template; optional overrides.',\n inputSchema: {\n templateId: z.string(),\n overrides: z.record(z.string(), z.unknown()).optional(),\n },\n },\n async ({ templateId, overrides }) => {\n try {\n const workspaceId = readWorkspaceId(ctx);\n if (!workspaceId) return errorResult('No workspace set.');\n const data = await ctx.gql.workspace.request<{ createScheduleFromTemplate: JobRow }>(\n ops.CREATE_SCHEDULE_FROM_TEMPLATE,\n { templateId, workspaceId, overrides: overrides ?? null },\n );\n return jsonResult(data.createScheduleFromTemplate);\n } catch (error) {\n ctx.logger.error('scheduler_templates_create_from failed', { error: String(error) });\n return errorResult(\n `Failed to create: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Versions ────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_versions_history')),\n {\n title: 'Schedule Version History',\n description: 'List version history for a schedule.',\n inputSchema: { scheduleId: z.string() },\n },\n async ({ scheduleId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ scheduleVersionHistory: unknown[] }>(\n ops.SCHEDULE_VERSION_HISTORY,\n { scheduleId },\n );\n return jsonResult(data.scheduleVersionHistory);\n } catch (error) {\n ctx.logger.error('scheduler_versions_history failed', { error: String(error) });\n return errorResult(\n `Failed to get history: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_versions_restore')),\n {\n title: 'Restore Schedule Version',\n description: 'Restore a schedule to a prior version.',\n inputSchema: { scheduleId: z.string(), versionId: z.string() },\n },\n async ({ scheduleId, versionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ restoreScheduleVersion: JobRow }>(\n ops.RESTORE_SCHEDULE_VERSION,\n { scheduleId, versionId },\n );\n return jsonResult(data.restoreScheduleVersion);\n } catch (error) {\n ctx.logger.error('scheduler_versions_restore failed', { error: String(error) });\n return errorResult(\n `Failed to restore: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Job tags ────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_tag_add')),\n {\n title: 'Tag Scheduled Job',\n description: 'Add a tag assignment to a scheduled job.',\n inputSchema: {\n entityId: z.string(),\n tagId: z.string(),\n source: z.string().optional(),\n },\n },\n async ({ entityId, tagId, source }) => {\n try {\n const input: Record<string, unknown> = { entityId, tagId };\n if (source !== undefined) input.source = source;\n const data = await ctx.gql.workspace.request<{ tagScheduledJob: unknown }>(\n ops.TAG_SCHEDULED_JOB,\n { input },\n );\n return jsonResult(data.tagScheduledJob);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_tag_add failed', { error: String(error) });\n return errorResult(\n `Failed to tag: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_tag_remove')),\n {\n title: 'Untag Scheduled Job',\n description: 'Remove a tag assignment from a scheduled job.',\n inputSchema: { entityId: z.string(), tagId: z.string() },\n },\n async ({ entityId, tagId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ untagScheduledJob: boolean }>(\n ops.UNTAG_SCHEDULED_JOB,\n { input: { entityId, tagId } },\n );\n return jsonResult({ removed: data.untagScheduledJob });\n } catch (error) {\n ctx.logger.error('scheduler_jobs_tag_remove failed', { error: String(error) });\n return errorResult(\n `Failed to untag: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_tag_replace')),\n {\n title: 'Replace Scheduled Job Tags',\n description: 'Replace all tag assignments on a scheduled job.',\n inputSchema: { entityId: z.string(), tagIds: z.array(z.string()) },\n },\n async ({ entityId, tagIds }) => {\n try {\n const data = await ctx.gql.workspace.request<{ replaceScheduledJobTags: unknown }>(\n ops.REPLACE_SCHEDULED_JOB_TAGS,\n { input: { entityId, tagIds } },\n );\n return jsonResult(data.replaceScheduledJobTags);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_tag_replace failed', { error: String(error) });\n return errorResult(\n `Failed to replace tags: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_tag_list')),\n {\n title: 'List Scheduled Job Tags',\n description: 'List tag assignments on a scheduled job.',\n inputSchema: { entityId: z.string() },\n },\n async ({ entityId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getScheduledJobTags: unknown }>(\n ops.GET_SCHEDULED_JOB_TAGS,\n { input: { entityId } },\n );\n return jsonResult(data.getScheduledJobTags);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_tag_list failed', { error: String(error) });\n return errorResult(\n `Failed to list tags: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Subscription polling ────────────────────────────────────────────────\n // MCP has no subscription transport for high-frequency state — these poll the\n // corresponding `*_updated` GraphQL subscriptions via single-shot queries.\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_executions_check')),\n {\n title: 'Check Execution Status (poll)',\n description:\n 'Polling proxy for the executionUpdated subscription — returns the current state of an execution.',\n inputSchema: { id: z.string().describe('Execution ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ jobExecution: ExecutionRow | null }>(\n ops.EXECUTION_UPDATED_POLL,\n { id },\n );\n if (!data.jobExecution) return errorResult(`Execution ${id} not found`);\n return jsonResult(data.jobExecution);\n } catch (error) {\n ctx.logger.error('scheduler_executions_check failed', { error: String(error) });\n return errorResult(`Failed: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_check')),\n {\n title: 'Check Job Status (poll)',\n description:\n 'Polling proxy for the jobStatusUpdated subscription — returns the current state of a scheduled job.',\n inputSchema: { id: z.string().describe('Schedule ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ scheduledJob: JobRow | null }>(\n ops.JOB_STATUS_UPDATED_POLL,\n { id },\n );\n if (!data.scheduledJob) return errorResult(`Job ${id} not found`);\n return jsonResult(data.scheduledJob);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_check failed', { error: String(error) });\n return errorResult(`Failed: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_executions_retry')),\n {\n title: 'Retry Job Execution',\n description:\n 'Re-run a failed (or completed) scheduled-job execution. Returns the new JobExecution row created for the retry.',\n inputSchema: { executionId: z.string().describe('Execution ID to retry') },\n },\n async ({ executionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ retryJobExecution: ExecutionRow }>(\n ops.RETRY_JOB_EXECUTION,\n { executionId },\n );\n return jsonResult(data.retryJobExecution);\n } catch (error) {\n ctx.logger.error('scheduler_executions_retry failed', { error: String(error) });\n return errorResult(\n `Failed to retry job execution: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Scheduler module — scheduled jobs and executions.\n * Surface mirrors cli-sdk/src/modules/scheduler/.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerSchedulerTools } from './tools.js';\n\nconst schedulerModule: McpModule = {\n id: 'scheduler',\n version: '0.0.1',\n displayName: 'Scheduler',\n dependsOn: ['auth'],\n capabilities: { tools: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const track = (n: string): string => {\n tools.push(n);\n return n;\n };\n\n registerSchedulerTools(server, ctx, track);\n\n return { tools, resources: [], prompts: [] };\n },\n};\n\nexport default schedulerModule;\n"]}
1
+ {"version":3,"sources":["../../../src/core/errors.ts","../../../src/core/result.ts","../../../src/core/tool-name.ts","../../../src/modules/scheduler/operations.ts","../../../src/modules/scheduler/tools.ts","../../../src/modules/scheduler/index.ts"],"names":["z"],"mappings":";;;;;;;;;;;AA8BO,IAAM,gBAAA,GAAN,cAA+B,KAAA,CAAM;AAAA,EACjB,KAAA;AAAA,EAEzB,WAAA,CAAY,SAAiB,KAAA,EAAiB;AAC5C,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAA,GAAO,kBAAA;AACZ,IAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,EACf;AACF,CAAA;;;ACCO,SAAS,UAAA,CAAW,MAAe,UAAA,EAAkD;AAC1F,EAAA,MAAM,MAAA,GAAqB;AAAA,IACzB,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAA,EAAM,IAAA,EAAM,CAAC,CAAA,EAAG;AAAA,GACjE;AAIA,EAAA,OAAO,MAAA;AACT;AAaO,SAAS,WAAA,CAAY,SAAiB,IAAA,EAA2B;AACtE,EAAA,MAAM,IAAA,GAAO,IAAA,GAAO,CAAA,EAAG,OAAO;;AAAA,MAAA,EAAa,IAAI,CAAA,CAAA,GAAK,OAAA;AACpD,EAAA,OAAO,EAAE,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,QAAQ,IAAA,EAAM,CAAA,EAAG,OAAA,EAAS,IAAA,EAAK;AAC5D;;;ACnDA,IAAM,oBAAA,GAAuB,EAAA;AAE7B,SAAS,cAAA,CAAe,MAAc,IAAA,EAA8C;AAClF,EAAA,IAAuB,IAAA,CAAK,MAAA,GAAS,oBAAA,EAAsB;AACzD,IAAA,MAAM,IAAI,gBAAA;AAAA,MACR,CAAA,WAAA,EAAc,IAAI,CAAA,UAAA,EAAa,oBAAoB,CAAA,8CAAA;AAAA,KACrD;AAAA,EACF;AACA,EAAA,OAAO,IAAA;AACT;AAMO,SAAS,WAAA,CAAY,gBAAwB,KAAA,EAAyB;AAC3E,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,MAAM,IAAI,iBAAiB,sCAAsC,CAAA;AAAA,EACnE;AACA,EAAA,MAAM,IAAA,GAAO,CAAC,WAAA,EAAa,GAAG,KAAK,EAAE,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAC7D,EAAA,OAAO,cAAA,CAAe,IAAY,CAAA;AACpC;;;ACjCO,IAAM,mBAAA,GAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAS5B,IAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAS1B,IAAM,oBAAA,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAQ7B,IAAM,oBAAA,GAAuB;AAAA;AAAA;AAAA;AAAA,CAAA;AAM7B,IAAM,cAAA,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AASvB,IAAM,oBAAA,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAQ7B,IAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAS1B,IAAM,mBAAA,GAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAQ5B,IAAM,SAAA,GAAY;AAAA;AAAA;AAAA;AAAA,CAAA;AAMlB,IAAM,UAAA,GAAa;AAAA;AAAA;AAAA;AAAA,CAAA;AAMnB,IAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAAA,CAAA;AAM1B,IAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA;AAAA,CAAA;AAMzB,IAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA;AAAA,CAAA;AAMzB,IAAM,cAAA,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAQvB,IAAM,eAAA,GAAkB;AAAA;AAAA;AAAA;AAAA,CAAA;AAMxB,IAAM,gBAAA,GAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AA4BzB,IAAM,uBAAA,GAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAahC,IAAM,8BAAA,GAAiC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAYvC,IAAM,qBAAA,GAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAS9B,IAAM,wBAAA,GAA2B;AAAA;AAAA;AAAA;AAAA,CAAA;AAMjC,IAAM,wBAAA,GAA2B;AAAA;AAAA;AAAA;AAAA,CAAA;AAMjC,IAAM,wBAAA,GAA2B;AAAA;AAAA,CAAA;AAIjC,IAAM,6BAAA,GAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAYtC,IAAM,wBAAA,GAA2B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAQjC,IAAM,wBAAA,GAA2B;AAAA;AAAA;AAAA;AAAA,CAAA;AAMjC,IAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAAA,CAAA;AAM1B,IAAM,mBAAA,GAAsB;AAAA;AAAA;AAAA;AAAA,CAAA;AAM5B,IAAM,0BAAA,GAA6B;AAAA;AAAA;AAAA;AAAA,CAAA;AAMnC,IAAM,sBAAA,GAAyB;AAAA;AAAA;AAAA;AAAA,CAAA;AAM/B,IAAM,sBAAA,GAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAQ/B,IAAM,uBAAA,GAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;;;ACzNvC,SAAS,gBAAgB,GAAA,EAAgC;AACvD,EAAA,MAAM,IAAA,GAAO,GAAA,CAAI,IAAA,CAAK,IAAA,EAAK;AAC3B,EAAA,OAAO,MAAM,WAAA,IAAe,IAAA;AAC9B;AAEA,IAAM,mBAAmBA,KAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,UAAA,EAAY,MAAM,CAAC,CAAA;AAC5D,IAAM,mBAAmBA,KAAA,CAAE,IAAA,CAAK,CAAC,UAAA,EAAY,UAAA,EAAY,SAAS,CAAC,CAAA;AAE5D,SAAS,sBAAA,CACd,MAAA,EACA,GAAA,EACA,KAAA,EACM;AACN,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,qBAAqB,CAAC,CAAA;AAAA,IACzD;AAAA,MACE,KAAA,EAAO,qBAAA;AAAA,MACP,WAAA,EAAa,8CAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,QAAQA,KAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uCAAuC,CAAA;AAAA,QAC9E,IAAA,EAAM,gBAAA,CAAiB,QAAA,EAAS,CAAE,SAAS,wBAAwB,CAAA;AAAA,QACnE,OAAOA,KAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,wBAAwB;AAAA;AAChE,KACF;AAAA,IACA,OAAO,EAAE,MAAA,EAAQ,IAAA,EAAM,OAAM,KAAM;AACjC,MAAA,IAAI;AACF,QAAA,MAAM,WAAA,GAAc,gBAAgB,GAAG,CAAA;AACvC,QAAA,IAAI,CAAC,WAAA,EAAa;AAChB,UAAA,OAAO,YAAY,0DAA0D,CAAA;AAAA,QAC/E;AACA,QAAA,MAAM,SAAkC,EAAC;AACzC,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,MAAA,CAAO,MAAA,GAAS,OAAO,WAAA,EAAY;AAC7D,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,MAAA,CAAO,YAAA,GAAe,IAAA;AAC9C,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,mBAAA,EAAqB;AAAA,UAC1B,WAAA;AAAA,UACA,QAAQ,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,CAAE,MAAA,GAAS,IAAI,MAAA,GAAS,KAAA,CAAA;AAAA,UAClD,YAAY,EAAE,KAAA,EAAO,KAAA,IAAS,EAAA,EAAI,QAAQ,CAAA;AAAE,SAC7C,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,aAAa,CAAA;AAAA,MACtC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,4BAAA,EAA8B,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACvE,QAAA,OAAO,WAAA;AAAA,UACL,kCAAkC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC1F;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,oBAAoB,CAAC,CAAA;AAAA,IACxD;AAAA,MACE,KAAA,EAAO,mBAAA;AAAA,MACP,WAAA,EAAa,4BAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,KAAA,CAAE,QAAO,CAAE,QAAA,CAAS,QAAQ,CAAA;AAAE,KACnD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,iBAAA;AAAA,UACJ,EAAE,EAAA;AAAG,SACP;AACA,QAAA,IAAI,CAAC,IAAA,CAAK,YAAA,SAAqB,WAAA,CAAY,CAAA,IAAA,EAAO,EAAE,CAAA,UAAA,CAAY,CAAA;AAChE,QAAA,OAAO,UAAA,CAAW,KAAK,YAAY,CAAA;AAAA,MACrC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,2BAAA,EAA6B,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACtE,QAAA,OAAO,WAAA;AAAA,UACL,gCAAgC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACxF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,uBAAuB,CAAC,CAAA;AAAA,IAC3D;AAAA,MACE,KAAA,EAAO,sBAAA;AAAA,MACP,WAAA,EAAa,yBAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,IAAA,EAAMA,KAAA,CAAE,MAAA,EAAO,CAAE,SAAS,UAAU,CAAA;AAAA,QACpC,IAAA,EAAM,gBAAA,CAAiB,QAAA,CAAS,eAAe,CAAA;AAAA,QAC/C,MAAMA,KAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iCAAiC,CAAA;AAAA,QACtE,iBAAiBA,KAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sCAAsC,CAAA;AAAA,QACtF,QAAA,EAAU,gBAAA,CAAiB,QAAA,EAAS,CAAE,SAAS,kCAAkC,CAAA;AAAA,QACjF,cAAA,EAAgBA,KAAA,CACb,MAAA,CAAOA,KAAA,CAAE,MAAA,EAAO,EAAGA,KAAA,CAAE,OAAA,EAAS,CAAA,CAC9B,QAAA,EAAS,CACT,SAAS,+BAA+B;AAAA;AAC7C,KACF;AAAA,IACA,OAAO,EAAE,IAAA,EAAM,IAAA,EAAM,MAAM,eAAA,EAAiB,QAAA,EAAU,gBAAe,KAAM;AACzE,MAAA,IAAI;AACF,QAAA,MAAM,WAAA,GAAc,gBAAgB,GAAG,CAAA;AACvC,QAAA,IAAI,CAAC,WAAA,EAAa;AAChB,UAAA,OAAO,YAAY,0DAA0D,CAAA;AAAA,QAC/E;AACA,QAAA,MAAM,KAAA,GAAiC;AAAA,UACrC,IAAA;AAAA,UACA,YAAA,EAAc,IAAA;AAAA,UACd,cAAc,QAAA,IAAY,UAAA;AAAA,UAC1B,cAAA,EAAgB,kBAAkB;AAAC,SACrC;AACA,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,cAAA,GAAiB,IAAA;AAC/C,QAAA,IAAI,eAAA,KAAoB,KAAA,CAAA,EAAW,KAAA,CAAM,eAAA,GAAkB,eAAA;AAC3D,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,oBAAA;AAAA,UACJ,EAAE,aAAa,KAAA;AAAM,SACvB;AACA,QAAA,OAAO,UAAA,CAAW,KAAK,kBAAkB,CAAA;AAAA,MAC3C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,8BAAA,EAAgC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACzE,QAAA,OAAO,WAAA;AAAA,UACL,mCAAmC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC3F;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,uBAAuB,CAAC,CAAA;AAAA,IAC3D;AAAA,MACE,KAAA,EAAO,sBAAA;AAAA,MACP,WAAA,EACE,uJAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,KAAA,CAAE,MAAA,EAAO,CAAE,SAAS,QAAQ,CAAA;AAAA,QAChC,MAAMA,KAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,kBAAkB,CAAA;AAAA,QACvD,aAAaA,KAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,QACjE,gBAAgBA,KAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0CAA0C,CAAA;AAAA,QACzF,QAAA,EAAUA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,uCAAuC,CAAA;AAAA,QACtF,cAAcA,KAAA,CACX,MAAA,GACA,QAAA,EAAS,CACT,SAAS,gEAAgE,CAAA;AAAA,QAC5E,SAASA,KAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,6BAA6B,CAAA;AAAA,QACrE,cAAA,EAAgBA,KAAA,CACb,MAAA,CAAOA,KAAA,CAAE,MAAA,EAAO,EAAGA,KAAA,CAAE,OAAA,EAAS,CAAA,CAC9B,QAAA,EAAS,CACT,SAAS,gCAAgC,CAAA;AAAA,QAC5C,UAAA,EAAYA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,+BAA+B,CAAA;AAAA,QAChF,cAAcA,KAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,mCAAmC;AAAA;AAClF,KACF;AAAA,IACA,OAAO;AAAA,MACL,EAAA;AAAA,MACA,IAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA;AAAA,MACA,OAAA;AAAA,MACA,cAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,QAAiC,EAAC;AACxC,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,cAAA,KAAmB,KAAA,CAAA,EAAW,KAAA,CAAM,cAAA,GAAiB,cAAA;AACzD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,YAAA,KAAiB,KAAA,CAAA,EAAW,KAAA,CAAM,YAAA,GAAe,aAAa,WAAA,EAAY;AAC9E,QAAA,IAAI,OAAA,KAAY,KAAA,CAAA,EAAW,KAAA,CAAM,OAAA,GAAU,OAAA;AAC3C,QAAA,IAAI,cAAA,KAAmB,KAAA,CAAA,EAAW,KAAA,CAAM,cAAA,GAAiB,cAAA;AACzD,QAAA,IAAI,UAAA,KAAe,KAAA,CAAA,EAAW,KAAA,CAAM,UAAA,GAAa,UAAA;AACjD,QAAA,IAAI,YAAA,KAAiB,KAAA,CAAA,EAAW,KAAA,CAAM,YAAA,GAAe,YAAA;AACrD,QAAA,IAAI,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,WAAW,CAAA,EAAG;AACnC,UAAA,OAAO,YAAY,kEAA6D,CAAA;AAAA,QAClF;AACA,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,oBAAA;AAAA,UACJ,EAAE,IAAI,KAAA;AAAM,SACd;AACA,QAAA,OAAO,UAAA,CAAW,KAAK,kBAAkB,CAAA;AAAA,MAC3C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,8BAAA,EAAgC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACzE,QAAA,OAAO,WAAA;AAAA,UACL,mCAAmC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC3F;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,uBAAuB,CAAC,CAAA;AAAA,IAC3D;AAAA,MACE,KAAA,EAAO,sBAAA;AAAA,MACP,WAAA,EAAa,yBAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,KAAA,CAAE,QAAO,CAAE,QAAA,CAAS,QAAQ,CAAA;AAAE,KACnD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,oBAAA;AAAA,UACJ,EAAE,EAAA;AAAG,SACP;AACA,QAAA,OAAO,WAAW,EAAE,OAAA,EAAS,KAAK,kBAAA,EAAoB,KAAA,EAAO,IAAI,CAAA;AAAA,MACnE,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,8BAAA,EAAgC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACzE,QAAA,OAAO,WAAA;AAAA,UACL,mCAAmC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC3F;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,2BAA2B,CAAC,CAAA;AAAA,IAC/D;AAAA,MACE,KAAA,EAAO,qBAAA;AAAA,MACP,WAAA,EAAa,6CAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,KAAA,EAAOA,KAAA,CAAE,MAAA,EAAO,CAAE,SAAS,QAAQ,CAAA;AAAA,QACnC,OAAOA,KAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yBAAyB;AAAA;AACjE,KACF;AAAA,IACA,OAAO,EAAE,KAAA,EAAO,KAAA,EAAM,KAAM;AAC1B,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,cAAA,EAAgB;AAAA,UACrB,KAAA;AAAA,UACA,YAAY,EAAE,KAAA,EAAO,KAAA,IAAS,GAAA,EAAK,QAAQ,CAAA;AAAE,SAC9C,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,aAAa,CAAA;AAAA,MACtC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,kCAAA,EAAoC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC7E,QAAA,OAAO,WAAA;AAAA,UACL,8BAA8B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACtF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,0BAA0B,CAAC,CAAA;AAAA,IAC9D;AAAA,MACE,KAAA,EAAO,mBAAA;AAAA,MACP,WAAA,EACE,qKAAA;AAAA,MACF,WAAA,EAAa,EAAE,EAAA,EAAIA,KAAA,CAAE,QAAO,CAAE,QAAA,CAAS,cAAc,CAAA;AAAE,KACzD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,iBAAA;AAAA,UACJ,EAAE,EAAA;AAAG,SACP;AACA,QAAA,IAAI,CAAC,IAAA,CAAK,YAAA,SAAqB,WAAA,CAAY,CAAA,UAAA,EAAa,EAAE,CAAA,UAAA,CAAY,CAAA;AACtE,QAAA,OAAO,UAAA,CAAW,KAAK,YAAY,CAAA;AAAA,MACrC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,iCAAA,EAAmC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC5E,QAAA,OAAO,WAAA;AAAA,UACL,gCAAgC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACxF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAGA,EAAA,KAAA,MAAW,CAAC,IAAA,EAAM,EAAA,EAAI,KAAA,EAAO,IAAA,EAAM,aAAa,CAAA,IAAK;AAAA,IACnD;AAAA,MACE,sBAAA;AAAA,MACI,SAAA;AAAA,MACJ,qBAAA;AAAA,MACA,wBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,uBAAA;AAAA,MACI,UAAA;AAAA,MACJ,sBAAA;AAAA,MACA,gCAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,yBAAA;AAAA,MACI,iBAAA;AAAA,MACJ,mBAAA;AAAA,MACA,wCAAA;AAAA,MACA;AAAA,KACF;AAAA,IACA;AAAA,MACE,wBAAA;AAAA,MACI,gBAAA;AAAA,MACJ,kBAAA;AAAA,MACA,wCAAA;AAAA,MACA;AAAA;AACF,GACF,EAAY;AACV,IAAA,MAAA,CAAO,YAAA;AAAA,MACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,IAAI,CAAC,CAAA;AAAA,MACxC;AAAA,QACE,KAAA;AAAA,QACA,WAAA,EAAa,IAAA;AAAA,QACb,WAAA,EAAa,EAAE,EAAA,EAAIA,KAAA,CAAE,QAAO,CAAE,QAAA,CAAS,aAAa,CAAA;AAAE,OACxD;AAAA,MACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,QAAA,IAAI;AACF,UAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,UAAU,OAAA,CAAgC,EAAA,EAAI,EAAE,EAAA,EAAI,CAAA;AAC/E,UAAA,OAAO,UAAA,CAAW,IAAA,CAAK,aAAa,CAAC,CAAA;AAAA,QACvC,SAAS,KAAA,EAAO;AACd,UAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,IAAI,CAAA,OAAA,CAAA,EAAW,EAAE,KAAA,EAAO,MAAA,CAAO,KAAK,CAAA,EAAG,CAAA;AAC3D,UAAA,OAAO,WAAA;AAAA,YACL,CAAA,EAAG,KAAK,CAAA,SAAA,EAAY,KAAA,YAAiB,QAAQ,KAAA,CAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,WAC5E;AAAA,QACF;AAAA,MACF;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,wBAAwB,CAAC,CAAA;AAAA,IAC5D;AAAA,MACE,KAAA,EAAO,kBAAA;AAAA,MACP,WAAA,EAAa,6CAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,KAAA,CAAE,MAAA,EAAO,CAAE,SAAS,aAAa,CAAA;AAAA,QACrC,QAAQA,KAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8BAA8B;AAAA;AACvE,KACF;AAAA,IACA,OAAO,EAAE,EAAA,EAAI,MAAA,EAAO,KAAM;AACxB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,gBAAA;AAAA,UACJ,EAAE,EAAA,EAAI,MAAA,EAAQ,MAAA,IAAU,IAAA;AAAK,SAC/B;AACA,QAAA,OAAO,UAAA,CAAW,KAAK,eAAe,CAAA;AAAA,MACxC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,+BAAA,EAAiC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC1E,QAAA,OAAO,WAAA;AAAA,UACL,sBAAsB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC9E;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,sBAAsB,CAAC,CAAA;AAAA,IAC1D;AAAA,MACE,KAAA,EAAO,gBAAA;AAAA,MACP,WAAA,EACE,8FAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,QAAA,EAAUA,KAAA,CAAE,MAAA,EAAO,CAAE,SAAS,oBAAoB,CAAA;AAAA,QAClD,gBAAgBA,KAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uCAAuC,CAAA;AAAA,QACtF,SAAA,EAAWA,KAAA,CACR,MAAA,CAAOA,KAAA,CAAE,MAAA,EAAO,EAAGA,KAAA,CAAE,OAAA,EAAS,CAAA,CAC9B,QAAA,EAAS,CACT,SAAS,mCAAmC;AAAA;AACjD,KACF;AAAA,IACA,OAAO,EAAE,QAAA,EAAU,cAAA,EAAgB,WAAU,KAAM;AACjD,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,cAAA;AAAA,UACJ,EAAE,QAAA,EAAU,cAAA,EAAgB,kBAAkB,IAAA,EAAM,SAAA,EAAW,aAAa,IAAA;AAAK,SACnF;AACA,QAAA,OAAO,UAAA,CAAW,KAAK,aAAa,CAAA;AAAA,MACtC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,6BAAA,EAA+B,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACxE,QAAA,OAAO,WAAA;AAAA,UACL,oBAAoB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC5E;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,4BAA4B,CAAC,CAAA;AAAA,IAChE;AAAA,MACE,KAAA,EAAO,iBAAA;AAAA,MACP,WAAA,EAAa,+DAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,KAAA,CAAE,QAAO,CAAE,QAAA,CAAS,aAAa,CAAA;AAAE,KACxD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,eAAA;AAAA,UACJ,EAAE,EAAA;AAAG,SACP;AACA,QAAA,OAAO,UAAA,CAAW,KAAK,aAAa,CAAA;AAAA,MACtC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,sBAAsB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC9E;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,wBAAwB,CAAC,CAAA;AAAA,IAC5D;AAAA,MACE,KAAA,EAAO,kBAAA;AAAA,MACP,WAAA,EACE,iFAAA;AAAA,MACF,WAAA,EAAa;AAAA,QACX,YAAA,EAAcA,KAAA,CAAE,MAAA,EAAO,CAAE,SAAS,qDAAqD,CAAA;AAAA,QACvF,cAAA,EAAgBA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,QACpC,KAAA,EAAOA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,QAC3B,UAAUA,KAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,QACpC,YAAA,EAAcA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,QAClC,KAAA,EAAOA,MAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wCAAwC,CAAA;AAAA,QACpF,SAAA,EAAWA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,QAC/B,OAAA,EAASA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,QAC7B,QAAA,EAAUA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS;AAChC,KACF;AAAA,IACA,OAAO;AAAA,MACL,YAAA;AAAA,MACA,cAAA;AAAA,MACA,KAAA;AAAA,MACA,QAAA;AAAA,MACA,YAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAO9B,gBAAA,EAAkB;AAAA,UACvB,YAAA,EAAc,aAAa,WAAA,EAAY;AAAA,UACvC,gBAAgB,cAAA,IAAkB,IAAA;AAAA,UAClC,OAAO,KAAA,IAAS,IAAA;AAAA,UAChB,UAAU,QAAA,IAAY,IAAA;AAAA,UACtB,cAAc,YAAA,IAAgB,IAAA;AAAA,UAC9B,OAAO,KAAA,IAAS,IAAA;AAAA,UAChB,WAAW,SAAA,IAAa,IAAA;AAAA,UACxB,SAAS,OAAA,IAAW,IAAA;AAAA,UACpB,UAAU,QAAA,IAAY;AAAA,SACvB,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,eAAe,CAAA;AAAA,MACxC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,+BAAA,EAAiC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC1E,QAAA,OAAO,WAAA;AAAA,UACL,sBAAsB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC9E;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAGA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,0BAA0B,CAAC,CAAA;AAAA,IAC9D;AAAA,MACE,KAAA,EAAO,yBAAA;AAAA,MACP,WAAA,EAAa,kDAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,QAAA,EAAUA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,QAC9B,QAAA,EAAUA,KAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,QAC/B,KAAA,EAAOA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS;AAC7B,KACF;AAAA,IACA,OAAO,EAAE,QAAA,EAAU,QAAA,EAAU,OAAM,KAAM;AACvC,MAAA,IAAI;AACF,QAAA,MAAM,WAAA,GAAc,gBAAgB,GAAG,CAAA;AACvC,QAAA,IAAI,CAAC,WAAA,EAAa,OAAO,WAAA,CAAY,mBAAmB,CAAA;AACxD,QAAA,MAAM,SAAkC,EAAC;AACzC,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,MAAA,CAAO,QAAA,GAAW,QAAA;AAC9C,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,MAAA,CAAO,QAAA,GAAW,QAAA;AAC9C,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,uBAAA,EAAyB;AAAA,UAC9B,WAAA;AAAA,UACA,QAAQ,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,CAAE,MAAA,GAAS,IAAI,MAAA,GAAS,KAAA,CAAA;AAAA,UAClD,UAAA,EAAY,EAAE,KAAA,EAAO,KAAA,IAAS,GAAA;AAAI,SACnC,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,iBAAiB,CAAA;AAAA,MAC1C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,iCAAA,EAAmC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC5E,QAAA,OAAO,WAAA;AAAA,UACL,6BAA6B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACrF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,iCAAiC,CAAC,CAAA;AAAA,IACrE;AAAA,MACE,KAAA,EAAO,gCAAA;AAAA,MACP,WAAA,EAAa,mDAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,QAAA,EAAUA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,QAC9B,KAAA,EAAOA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS;AAC7B,KACF;AAAA,IACA,OAAO,EAAE,QAAA,EAAU,KAAA,EAAM,KAAM;AAC7B,MAAA,IAAI;AACF,QAAA,MAAM,SAAkC,EAAC;AACzC,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,MAAA,CAAO,QAAA,GAAW,QAAA;AAC9C,QAAA,MAAM,OAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,QAE9B,8BAAA,EAAgC;AAAA,UACrC,QAAQ,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,CAAE,MAAA,GAAS,IAAI,MAAA,GAAS,KAAA,CAAA;AAAA,UAClD,UAAA,EAAY,EAAE,KAAA,EAAO,KAAA,IAAS,GAAA;AAAI,SACnC,CAAA;AACD,QAAA,OAAO,UAAA,CAAW,KAAK,uBAAuB,CAAA;AAAA,MAChD,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,wCAAA,EAA0C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACnF,QAAA,OAAO,WAAA;AAAA,UACL,mBAAmB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC3E;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,yBAAyB,CAAC,CAAA;AAAA,IAC7D;AAAA,MACE,KAAA,EAAO,uBAAA;AAAA,MACP,WAAA,EAAa,gCAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,KAAA,CAAE,QAAO;AAAE,KAChC;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,qBAAA;AAAA,UACJ,EAAE,EAAA;AAAG,SACP;AACA,QAAA,IAAI,CAAC,IAAA,CAAK,gBAAA,SAAyB,WAAA,CAAY,CAAA,SAAA,EAAY,EAAE,CAAA,UAAA,CAAY,CAAA;AACzE,QAAA,OAAO,UAAA,CAAW,KAAK,gBAAgB,CAAA;AAAA,MACzC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,gCAAA,EAAkC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC3E,QAAA,OAAO,WAAA;AAAA,UACL,2BAA2B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACnF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,4BAA4B,CAAC,CAAA;AAAA,IAChE;AAAA,MACE,KAAA,EAAO,0BAAA;AAAA,MACP,WAAA,EAAa,8DAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,IAAA,EAAMA,MAAE,MAAA,EAAO;AAAA,QACf,YAAA,EAAcA,KAAA,CAAE,MAAA,EAAO,CAAE,SAAS,qDAAqD,CAAA;AAAA,QACvF,YAAA,EAAcA,KAAA,CAAE,MAAA,EAAO,CAAE,SAAS,+CAA+C,CAAA;AAAA,QACjF,cAAA,EAAgBA,MAAE,MAAA,CAAOA,KAAA,CAAE,QAAO,EAAGA,KAAA,CAAE,SAAS,CAAA;AAAA,QAChD,cAAA,EAAgBA,MAAE,MAAA,CAAOA,KAAA,CAAE,QAAO,EAAGA,KAAA,CAAE,SAAS,CAAA;AAAA,QAChD,WAAA,EAAaA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,QACjC,QAAA,EAAUA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,QAC9B,QAAA,EAAUA,KAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AAAS;AACjC,KACF;AAAA,IACA,OAAO;AAAA,MACL,IAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KACF,KAAM;AACJ,MAAA,IAAI;AACF,QAAA,MAAM,WAAA,GAAc,gBAAgB,GAAG,CAAA;AACvC,QAAA,IAAI,CAAC,WAAA,EAAa,OAAO,WAAA,CAAY,mBAAmB,CAAA;AACxD,QAAA,MAAM,KAAA,GAAiC;AAAA,UACrC,IAAA;AAAA,UACA,YAAA,EAAc,aAAa,WAAA,EAAY;AAAA,UACvC,YAAA,EAAc,aAAa,WAAA,EAAY;AAAA,UACvC,cAAA;AAAA,UACA;AAAA,SACF;AACA,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,wBAAA;AAAA,UACJ,EAAE,aAAa,KAAA;AAAM,SACvB;AACA,QAAA,OAAO,UAAA,CAAW,KAAK,sBAAsB,CAAA;AAAA,MAC/C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,8BAA8B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACtF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,4BAA4B,CAAC,CAAA;AAAA,IAChE;AAAA,MACE,KAAA,EAAO,0BAAA;AAAA,MACP,WAAA,EAAa,6BAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,EAAA,EAAIA,MAAE,MAAA,EAAO;AAAA,QACb,IAAA,EAAMA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,QAC1B,WAAA,EAAaA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,QACjC,QAAA,EAAUA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,QAC9B,QAAA,EAAUA,KAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AAAS;AACjC,KACF;AAAA,IACA,OAAO,EAAE,EAAA,EAAI,MAAM,WAAA,EAAa,QAAA,EAAU,UAAS,KAAM;AACvD,MAAA,IAAI;AACF,QAAA,MAAM,QAAiC,EAAC;AACxC,QAAA,IAAI,IAAA,KAAS,KAAA,CAAA,EAAW,KAAA,CAAM,IAAA,GAAO,IAAA;AACrC,QAAA,IAAI,WAAA,KAAgB,KAAA,CAAA,EAAW,KAAA,CAAM,WAAA,GAAc,WAAA;AACnD,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,QAAA,KAAa,KAAA,CAAA,EAAW,KAAA,CAAM,QAAA,GAAW,QAAA;AAC7C,QAAA,IAAI,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,WAAW,CAAA,EAAG;AACnC,UAAA,OAAO,YAAY,sCAAsC,CAAA;AAAA,QAC3D;AACA,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,wBAAA;AAAA,UACJ,EAAE,IAAI,KAAA;AAAM,SACd;AACA,QAAA,OAAO,UAAA,CAAW,KAAK,sBAAsB,CAAA;AAAA,MAC/C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,8BAA8B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACtF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,4BAA4B,CAAC,CAAA;AAAA,IAChE;AAAA,MACE,KAAA,EAAO,0BAAA;AAAA,MACP,WAAA,EAAa,6BAAA;AAAA,MACb,WAAA,EAAa,EAAE,EAAA,EAAIA,KAAA,CAAE,QAAO;AAAE,KAChC;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,wBAAA;AAAA,UACJ,EAAE,EAAA;AAAG,SACP;AACA,QAAA,OAAO,WAAW,EAAE,OAAA,EAAS,IAAA,CAAK,sBAAA,EAAwB,IAAI,CAAA;AAAA,MAChE,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,qBAAqB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC7E;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,0CAA0C,CAAC,CAAA;AAAA,IAC9E;AAAA,MACE,KAAA,EAAO,+BAAA;AAAA,MACP,WAAA,EAAa,6DAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,UAAA,EAAYA,MAAE,MAAA,EAAO;AAAA,QACrB,SAAA,EAAWA,KAAA,CAAE,MAAA,CAAOA,KAAA,CAAE,MAAA,IAAUA,KAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA;AAAS;AACxD,KACF;AAAA,IACA,OAAO,EAAE,UAAA,EAAY,SAAA,EAAU,KAAM;AACnC,MAAA,IAAI;AACF,QAAA,MAAM,WAAA,GAAc,gBAAgB,GAAG,CAAA;AACvC,QAAA,IAAI,CAAC,WAAA,EAAa,OAAO,WAAA,CAAY,mBAAmB,CAAA;AACxD,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,6BAAA;AAAA,UACJ,EAAE,UAAA,EAAY,WAAA,EAAa,SAAA,EAAW,aAAa,IAAA;AAAK,SAC1D;AACA,QAAA,OAAO,UAAA,CAAW,KAAK,0BAA0B,CAAA;AAAA,MACnD,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,wCAAA,EAA0C,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACnF,QAAA,OAAO,WAAA;AAAA,UACL,qBAAqB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC7E;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAGA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,4BAA4B,CAAC,CAAA;AAAA,IAChE;AAAA,MACE,KAAA,EAAO,0BAAA;AAAA,MACP,WAAA,EAAa,sCAAA;AAAA,MACb,WAAA,EAAa,EAAE,UAAA,EAAYA,KAAA,CAAE,QAAO;AAAE,KACxC;AAAA,IACA,OAAO,EAAE,UAAA,EAAW,KAAM;AACxB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,wBAAA;AAAA,UACJ,EAAE,UAAA;AAAW,SACf;AACA,QAAA,OAAO,UAAA,CAAW,KAAK,sBAAsB,CAAA;AAAA,MAC/C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,0BAA0B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAClF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,4BAA4B,CAAC,CAAA;AAAA,IAChE;AAAA,MACE,KAAA,EAAO,0BAAA;AAAA,MACP,WAAA,EAAa,wCAAA;AAAA,MACb,WAAA,EAAa,EAAE,UAAA,EAAYA,KAAA,CAAE,QAAO,EAAG,SAAA,EAAWA,KAAA,CAAE,MAAA,EAAO;AAAE,KAC/D;AAAA,IACA,OAAO,EAAE,UAAA,EAAY,SAAA,EAAU,KAAM;AACnC,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,wBAAA;AAAA,UACJ,EAAE,YAAY,SAAA;AAAU,SAC1B;AACA,QAAA,OAAO,UAAA,CAAW,KAAK,sBAAsB,CAAA;AAAA,MAC/C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,sBAAsB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC9E;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAGA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,oBAAoB,CAAC,CAAA;AAAA,IACxD;AAAA,MACE,KAAA,EAAO,mBAAA;AAAA,MACP,WAAA,EAAa,0CAAA;AAAA,MACb,WAAA,EAAa;AAAA,QACX,QAAA,EAAUA,MAAE,MAAA,EAAO;AAAA,QACnB,KAAA,EAAOA,MAAE,MAAA,EAAO;AAAA,QAChB,MAAA,EAAQA,KAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS;AAC9B,KACF;AAAA,IACA,OAAO,EAAE,QAAA,EAAU,KAAA,EAAO,QAAO,KAAM;AACrC,MAAA,IAAI;AACF,QAAA,MAAM,KAAA,GAAiC,EAAE,QAAA,EAAU,KAAA,EAAM;AACzD,QAAA,IAAI,MAAA,KAAW,KAAA,CAAA,EAAW,KAAA,CAAM,MAAA,GAAS,MAAA;AACzC,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,iBAAA;AAAA,UACJ,EAAE,KAAA;AAAM,SACV;AACA,QAAA,OAAO,UAAA,CAAW,KAAK,eAAe,CAAA;AAAA,MACxC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,+BAAA,EAAiC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC1E,QAAA,OAAO,WAAA;AAAA,UACL,kBAAkB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC1E;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,uBAAuB,CAAC,CAAA;AAAA,IAC3D;AAAA,MACE,KAAA,EAAO,qBAAA;AAAA,MACP,WAAA,EAAa,+CAAA;AAAA,MACb,WAAA,EAAa,EAAE,QAAA,EAAUA,KAAA,CAAE,QAAO,EAAG,KAAA,EAAOA,KAAA,CAAE,MAAA,EAAO;AAAE,KACzD;AAAA,IACA,OAAO,EAAE,QAAA,EAAU,KAAA,EAAM,KAAM;AAC7B,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,mBAAA;AAAA,UACJ,EAAE,KAAA,EAAO,EAAE,QAAA,EAAU,OAAM;AAAE,SAC/B;AACA,QAAA,OAAO,UAAA,CAAW,EAAE,OAAA,EAAS,IAAA,CAAK,mBAAmB,CAAA;AAAA,MACvD,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,kCAAA,EAAoC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC7E,QAAA,OAAO,WAAA;AAAA,UACL,oBAAoB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC5E;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,wBAAwB,CAAC,CAAA;AAAA,IAC5D;AAAA,MACE,KAAA,EAAO,4BAAA;AAAA,MACP,WAAA,EAAa,iDAAA;AAAA,MACb,WAAA,EAAa,EAAE,QAAA,EAAUA,KAAA,CAAE,MAAA,EAAO,EAAG,MAAA,EAAQA,KAAA,CAAE,KAAA,CAAMA,KAAA,CAAE,MAAA,EAAQ,CAAA;AAAE,KACnE;AAAA,IACA,OAAO,EAAE,QAAA,EAAU,MAAA,EAAO,KAAM;AAC9B,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,0BAAA;AAAA,UACJ,EAAE,KAAA,EAAO,EAAE,QAAA,EAAU,QAAO;AAAE,SAChC;AACA,QAAA,OAAO,UAAA,CAAW,KAAK,uBAAuB,CAAA;AAAA,MAChD,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,2BAA2B,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SACnF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,qBAAqB,CAAC,CAAA;AAAA,IACzD;AAAA,MACE,KAAA,EAAO,yBAAA;AAAA,MACP,WAAA,EAAa,0CAAA;AAAA,MACb,WAAA,EAAa,EAAE,QAAA,EAAUA,KAAA,CAAE,QAAO;AAAE,KACtC;AAAA,IACA,OAAO,EAAE,QAAA,EAAS,KAAM;AACtB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,sBAAA;AAAA,UACJ,EAAE,KAAA,EAAO,EAAE,QAAA,EAAS;AAAE,SACxB;AACA,QAAA,OAAO,UAAA,CAAW,KAAK,mBAAmB,CAAA;AAAA,MAC5C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,gCAAA,EAAkC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC3E,QAAA,OAAO,WAAA;AAAA,UACL,wBAAwB,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAChF;AAAA,MACF;AAAA,IACF;AAAA,GACF;AAKA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,4BAA4B,CAAC,CAAA;AAAA,IAChE;AAAA,MACE,KAAA,EAAO,+BAAA;AAAA,MACP,WAAA,EACE,uGAAA;AAAA,MACF,WAAA,EAAa,EAAE,EAAA,EAAIA,KAAA,CAAE,QAAO,CAAE,QAAA,CAAS,cAAc,CAAA;AAAE,KACzD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,sBAAA;AAAA,UACJ,EAAE,EAAA;AAAG,SACP;AACA,QAAA,IAAI,CAAC,IAAA,CAAK,YAAA,SAAqB,WAAA,CAAY,CAAA,UAAA,EAAa,EAAE,CAAA,UAAA,CAAY,CAAA;AACtE,QAAA,OAAO,UAAA,CAAW,KAAK,YAAY,CAAA;AAAA,MACrC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA,CAAY,WAAW,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA,CAAE,CAAA;AAAA,MACxF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,sBAAsB,CAAC,CAAA;AAAA,IAC1D;AAAA,MACE,KAAA,EAAO,yBAAA;AAAA,MACP,WAAA,EACE,0GAAA;AAAA,MACF,WAAA,EAAa,EAAE,EAAA,EAAIA,KAAA,CAAE,QAAO,CAAE,QAAA,CAAS,aAAa,CAAA;AAAE,KACxD;AAAA,IACA,OAAO,EAAE,EAAA,EAAG,KAAM;AAChB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,uBAAA;AAAA,UACJ,EAAE,EAAA;AAAG,SACP;AACA,QAAA,IAAI,CAAC,IAAA,CAAK,YAAA,SAAqB,WAAA,CAAY,CAAA,IAAA,EAAO,EAAE,CAAA,UAAA,CAAY,CAAA;AAChE,QAAA,OAAO,UAAA,CAAW,KAAK,YAAY,CAAA;AAAA,MACrC,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,6BAAA,EAA+B,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AACxE,QAAA,OAAO,WAAA,CAAY,WAAW,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA,CAAE,CAAA;AAAA,MACxF;AAAA,IACF;AAAA,GACF;AAEA,EAAA,MAAA,CAAO,YAAA;AAAA,IACL,KAAA,CAAM,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,4BAA4B,CAAC,CAAA;AAAA,IAChE;AAAA,MACE,KAAA,EAAO,qBAAA;AAAA,MACP,WAAA,EACE,iHAAA;AAAA,MACF,WAAA,EAAa,EAAE,WAAA,EAAaA,KAAA,CAAE,QAAO,CAAE,QAAA,CAAS,uBAAuB,CAAA;AAAE,KAC3E;AAAA,IACA,OAAO,EAAE,WAAA,EAAY,KAAM;AACzB,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAO,MAAM,GAAA,CAAI,GAAA,CAAI,SAAA,CAAU,OAAA;AAAA,UAC/B,mBAAA;AAAA,UACJ,EAAE,WAAA;AAAY,SAChB;AACA,QAAA,OAAO,UAAA,CAAW,KAAK,iBAAiB,CAAA;AAAA,MAC1C,SAAS,KAAA,EAAO;AACd,QAAA,GAAA,CAAI,MAAA,CAAO,MAAM,mCAAA,EAAqC,EAAE,OAAO,MAAA,CAAO,KAAK,GAAG,CAAA;AAC9E,QAAA,OAAO,WAAA;AAAA,UACL,kCAAkC,KAAA,YAAiB,KAAA,GAAQ,MAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,SAC1F;AAAA,MACF;AAAA,IACF;AAAA,GACF;AACF;;;ACv5BA,IAAM,eAAA,GAA6B;AAAA,EACjC,EAAA,EAAI,WAAA;AAAA,EACJ,OAAA,EAAS,OAAA;AAAA,EACT,WAAA,EAAa,WAAA;AAAA,EACb,SAAA,EAAW,CAAC,MAAM,CAAA;AAAA,EAClB,YAAA,EAAc,EAAE,KAAA,EAAO,EAAC,EAAE;AAAA,EAE1B,QAAA,CAAS,QAAmB,GAAA,EAAqC;AAC/D,IAAA,MAAM,QAAkB,EAAC;AACzB,IAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,KAAsB;AACnC,MAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AACZ,MAAA,OAAO,CAAA;AAAA,IACT,CAAA;AAEA,IAAA,sBAAA,CAAuB,MAAA,EAAQ,KAAK,KAAK,CAAA;AAEzC,IAAA,OAAO,EAAE,KAAA,EAAO,SAAA,EAAW,EAAC,EAAG,OAAA,EAAS,EAAC,EAAE;AAAA,EAC7C;AACF,CAAA;AAEA,IAAO,iBAAA,GAAQ","file":"index.cjs","sourcesContent":["/**\n * Error classes for MCP SDK.\n *\n * Modules MUST throw these instead of throwing raw Errors. The registerTool\n * wrapper in result.ts catches and maps them to MCP-protocol-compliant\n * `{ isError: true, content: [...] }` responses.\n *\n * Throwing past the wrapper to the protocol surfaces as JSON-RPC -32603 to\n * the client and is a protocol bug.\n */\n\nexport class McpUserError extends Error {\n public readonly hint: string | undefined;\n\n constructor(message: string, opts?: { hint?: string }) {\n super(message);\n this.name = 'McpUserError';\n this.hint = opts?.hint;\n }\n}\n\nexport class McpAuthError extends McpUserError {\n constructor(message: string, opts?: { hint?: string }) {\n super(message, {\n hint: opts?.hint ?? 'Run the auth_login tool to authenticate.',\n });\n this.name = 'McpAuthError';\n }\n}\n\nexport class McpInternalError extends Error {\n public override readonly cause: unknown;\n\n constructor(message: string, cause?: unknown) {\n super(message);\n this.name = 'McpInternalError';\n this.cause = cause;\n }\n}\n","/**\n * MCP tool result helpers + central handler.\n *\n * Modules NEVER call server.registerTool directly — they use registerTool()\n * from this module so the central try/catch wraps the handler and:\n * - maps thrown McpUserError / McpAuthError / McpInternalError to\n * MCP-protocol-compliant `{ isError: true, content: [...] }` shapes\n * - threads `_meta.progressToken` into ctx.progress for long ops\n * - emits a structured log line on every error\n * - never leaks `cause` from McpInternalError to the client\n *\n * This is the analog of cli-sdk's createProgram() central error handler.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { ZodRawShape } from 'zod';\nimport type { McpContext } from './context.js';\nimport { McpAuthError, McpInternalError, McpUserError } from './errors.js';\n\nexport interface ToolTextContent {\n type: 'text';\n text: string;\n [k: string]: unknown;\n}\n\nexport interface ToolResult {\n content: ToolTextContent[];\n isError?: boolean;\n structuredContent?: Record<string, unknown>;\n [k: string]: unknown;\n}\n\nexport interface ToolMeta {\n progressToken?: string | number;\n}\n\n/**\n * Build a successful tool result with JSON content (pretty-printed).\n */\nexport function jsonResult(data: unknown, structured?: Record<string, unknown>): ToolResult {\n const result: ToolResult = {\n content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],\n };\n if (structured !== undefined) {\n result.structuredContent = structured;\n }\n return result;\n}\n\n/**\n * Build a successful tool result with plain text content.\n */\nexport function textResult(text: string): ToolResult {\n return { content: [{ type: 'text', text }] };\n}\n\n/**\n * Build an error tool result. Honors MCP's `{ isError: true, content }` shape.\n * Optional hint is appended on a new line so the LLM can react.\n */\nexport function errorResult(message: string, hint?: string): ToolResult {\n const text = hint ? `${message}\\n\\nHint: ${hint}` : message;\n return { content: [{ type: 'text', text }], isError: true };\n}\n\nexport interface ToolMetadata {\n title: string;\n description: string;\n inputSchema?: ZodRawShape;\n}\n\nexport type ToolHandler<TArgs = Record<string, unknown>> = (\n args: TArgs,\n ctx: McpContext,\n meta: ToolMeta,\n) => Promise<unknown>;\n\n/**\n * Register a tool with the central error wrapper.\n *\n * The handler returns a plain value or void. The wrapper:\n * - wraps non-undefined returns in jsonResult()\n * - if the value already looks like a ToolResult (has `content`), passes through\n * - catches McpAuthError / McpUserError / McpInternalError / generic Error\n * - logs every error via ctx.logger.error\n */\nexport function registerTool<TArgs extends Record<string, unknown>>(\n server: McpServer,\n ctx: McpContext,\n name: string,\n metadata: ToolMetadata,\n handler: ToolHandler<TArgs>,\n): void {\n const sdkConfig = {\n title: metadata.title,\n description: metadata.description,\n ...(metadata.inputSchema ? { inputSchema: metadata.inputSchema } : {}),\n };\n\n // The MCP SDK's registerTool signature is `(name, config, handler)`. The\n // handler arity depends on whether inputSchema is present (1-arg without,\n // 2-arg with). We accept a unified handler shape and dispatch at runtime.\n // The SDK's typing is strict and conditional on the inputSchema generic;\n // bypass with a cast since runtime acceptance is unconditional.\n const wrapped = async (...callbackArgs: unknown[]): Promise<ToolResult> => {\n const hasArgs = callbackArgs.length === 2;\n const args = (hasArgs ? callbackArgs[0] : {}) as TArgs;\n const extra = (hasArgs ? callbackArgs[1] : callbackArgs[0]) as\n | { _meta?: { progressToken?: string | number } }\n | undefined;\n\n const progressToken = extra?._meta?.progressToken;\n const meta: ToolMeta = progressToken !== undefined ? { progressToken } : {};\n\n try {\n const result = await handler(args, ctx, meta);\n if (isToolResult(result)) return result;\n if (result === undefined) return textResult('OK');\n return jsonResult(result);\n } catch (error) {\n return mapErrorToResult(error, ctx, name);\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (server as any).registerTool(name, sdkConfig, wrapped);\n}\n\nfunction isToolResult(value: unknown): value is ToolResult {\n return (\n !!value &&\n typeof value === 'object' &&\n 'content' in value &&\n Array.isArray((value as ToolResult).content)\n );\n}\n\nfunction mapErrorToResult(error: unknown, ctx: McpContext, toolName: string): ToolResult {\n if (error instanceof McpAuthError) {\n ctx.logger.warn(`${toolName}: auth required`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpUserError) {\n ctx.logger.info(`${toolName}: user error`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpInternalError) {\n ctx.logger.error(`${toolName}: internal error`, {\n message: error.message,\n cause: stringifyCause(error.cause),\n });\n return errorResult(`Internal error in ${toolName}.`);\n }\n const message = error instanceof Error ? error.message : String(error);\n ctx.logger.error(`${toolName}: unhandled error`, { message });\n return errorResult(`${toolName}: ${message}`);\n}\n\nfunction stringifyCause(cause: unknown): string | undefined {\n if (cause === undefined || cause === null) return undefined;\n if (cause instanceof Error) return cause.message;\n try {\n return JSON.stringify(cause);\n } catch {\n return String(cause);\n }\n}\n","/**\n * Tool / resource / prompt naming helpers.\n *\n * Mandatory product prefix avoids collisions when Claude Desktop runs\n * multiple MCP servers concurrently (typical setup is ~6).\n *\n * Tool names are capped at 63 characters — Claude Desktop pre-1.x\n * truncated at 64 in some versions.\n */\n\nimport { McpInternalError } from './errors.js';\n\nconst MAX_TOOL_NAME_LENGTH = 63;\n\nfunction assertSafeName(name: string, kind: 'tool' | 'resource' | 'prompt'): string {\n if (kind === 'tool' && name.length > MAX_TOOL_NAME_LENGTH) {\n throw new McpInternalError(\n `Tool name '${name}' exceeds ${MAX_TOOL_NAME_LENGTH} characters (some MCP clients truncate at 64).`,\n );\n }\n return name;\n}\n\n/**\n * Build a tool name. Format: `<productName>_<...parts>` (snake_case).\n * Example: mcpToolName('vibecontrols', 'vibes', 'list') -> 'vibecontrols_vibes_list'\n */\nexport function mcpToolName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpToolName: productName is required');\n }\n const name = [productName, ...parts].filter(Boolean).join('_');\n return assertSafeName(name, 'tool');\n}\n\n/**\n * Build a resource URI. Format: `<productName>://<...parts>`.\n * Example: mcpResourceUri('vibecontrols', 'schema') -> 'vibecontrols://schema'\n */\nexport function mcpResourceUri(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpResourceUri: productName is required');\n }\n return `${productName}://${parts.filter(Boolean).join('/')}`;\n}\n\n/**\n * Build a prompt name. Format: `<productName>-<...parts>` (kebab-case).\n * Example: mcpPromptName('vibecontrols', 'setup') -> 'vibecontrols-setup'\n */\nexport function mcpPromptName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpPromptName: productName is required');\n }\n return [productName, ...parts].filter(Boolean).join('-');\n}\n\nexport const TOOL_NAME_LIMIT = MAX_TOOL_NAME_LENGTH;\n","export const LIST_SCHEDULED_JOBS = `\n query ListScheduledJobs($workspaceId: ID!, $filter: JobFilterInput, $pagination: SchedulerPaginationInput) {\n scheduledJobs(workspaceId: $workspaceId, filter: $filter, pagination: $pagination) {\n jobs { id name status scheduleType nextExecutionAt createdAt }\n total nextCursor\n }\n }\n`;\n\nexport const GET_SCHEDULED_JOB = `\n query GetScheduledJob($id: ID!) {\n scheduledJob(id: $id) {\n id name status scheduleType cronExpression executorType\n nextExecutionAt lastExecutionAt\n }\n }\n`;\n\nexport const CREATE_SCHEDULED_JOB = `\n mutation CreateScheduledJob($workspaceId: ID!, $input: CreateScheduledJobInput!) {\n createScheduledJob(workspaceId: $workspaceId, input: $input) {\n id name status scheduleType\n }\n }\n`;\n\nexport const DELETE_SCHEDULED_JOB = `\n mutation DeleteScheduledJob($id: ID!) {\n deleteScheduledJob(id: $id)\n }\n`;\n\nexport const JOB_EXECUTIONS = `\n query JobExecutions($jobId: ID!, $pagination: SchedulerPaginationInput) {\n jobExecutions(jobId: $jobId, pagination: $pagination) {\n executions { id status startedAt completedAt duration errorMessage success }\n total nextCursor\n }\n }\n`;\n\nexport const UPDATE_SCHEDULED_JOB = `\n mutation UpdateScheduledJob($id: ID!, $input: UpdateScheduledJobInput!) {\n updateScheduledJob(id: $id, input: $input) {\n id name status scheduleType cronExpression nextExecutionAt\n }\n }\n`;\n\nexport const GET_JOB_EXECUTION = `\n query JobExecution($id: ID!) {\n jobExecution(id: $id) {\n id scheduleId status attemptNumber startedAt completedAt\n errorMessage result success\n }\n }\n`;\n\nexport const RETRY_JOB_EXECUTION = `\n mutation RetryJobExecution($executionId: ID!) {\n retryJobExecution(executionId: $executionId) {\n id status attemptNumber startedAt\n }\n }\n`;\n\nexport const PAUSE_JOB = `\n mutation PauseScheduledJob($id: ID!) {\n pauseScheduledJob(id: $id) { id name status }\n }\n`;\n\nexport const RESUME_JOB = `\n mutation ResumeScheduledJob($id: ID!) {\n resumeScheduledJob(id: $id) { id name status }\n }\n`;\n\nexport const ACTIVATE_SCHEDULE = `\n mutation ActivateSchedule($id: ID!) {\n activateSchedule(id: $id) { id name status }\n }\n`;\n\nexport const ARCHIVE_SCHEDULE = `\n mutation ArchiveSchedule($id: ID!) {\n archiveSchedule(id: $id) { id name status }\n }\n`;\n\nexport const DISABLE_SCHEDULE = `\n mutation DisableSchedule($id: ID!, $reason: String) {\n disableSchedule(id: $id, reason: $reason) { id name status }\n }\n`;\n\nexport const CLONE_SCHEDULE = `\n mutation CloneSchedule($sourceId: ID!, $newWorkspaceId: ID, $overrides: CreateScheduledJobInput) {\n cloneSchedule(sourceId: $sourceId, newWorkspaceId: $newWorkspaceId, overrides: $overrides) {\n id name status\n }\n }\n`;\n\nexport const EXECUTE_JOB_NOW = `\n mutation ExecuteJobNow($id: ID!) {\n executeJobNow(id: $id) { id scheduledJobId status }\n }\n`;\n\nexport const PREVIEW_SCHEDULE = `\n query PreviewSchedule(\n $scheduleType: ScheduleType!\n $cronExpression: String\n $rrule: String\n $interval: Int\n $intervalUnit: String\n $count: Int\n $startDate: DateTime\n $endDate: DateTime\n $timezone: String\n ) {\n previewSchedule(\n scheduleType: $scheduleType\n cronExpression: $cronExpression\n rrule: $rrule\n interval: $interval\n intervalUnit: $intervalUnit\n count: $count\n startDate: $startDate\n endDate: $endDate\n timezone: $timezone\n ) {\n count startDate endDate nextExecutions\n }\n }\n`;\n\nexport const LIST_SCHEDULE_TEMPLATES = `\n query ScheduleTemplates(\n $workspaceId: ID!\n $filter: ScheduleTemplateFilterInput\n $pagination: SchedulerPaginationInput\n ) {\n scheduleTemplates(workspaceId: $workspaceId, filter: $filter, pagination: $pagination) {\n templates { id name category isPublic scheduleType executorType usageCount }\n total nextCursor\n }\n }\n`;\n\nexport const LIST_PUBLIC_SCHEDULE_TEMPLATES = `\n query PublicScheduleTemplates(\n $filter: ScheduleTemplateFilterInput\n $pagination: SchedulerPaginationInput\n ) {\n publicScheduleTemplates(filter: $filter, pagination: $pagination) {\n templates { id name category isPublic scheduleType executorType usageCount }\n total nextCursor\n }\n }\n`;\n\nexport const GET_SCHEDULE_TEMPLATE = `\n query ScheduleTemplate($id: ID!) {\n scheduleTemplate(id: $id) {\n id name description category isPublic scheduleType executorType\n scheduleConfig executorConfig usageCount\n }\n }\n`;\n\nexport const CREATE_SCHEDULE_TEMPLATE = `\n mutation CreateScheduleTemplate($input: CreateScheduleTemplateInput!, $workspaceId: ID!) {\n createScheduleTemplate(input: $input, workspaceId: $workspaceId) { id name scheduleType }\n }\n`;\n\nexport const UPDATE_SCHEDULE_TEMPLATE = `\n mutation UpdateScheduleTemplate($id: ID!, $input: UpdateScheduleTemplateInput!) {\n updateScheduleTemplate(id: $id, input: $input) { id name }\n }\n`;\n\nexport const DELETE_SCHEDULE_TEMPLATE = `\n mutation DeleteScheduleTemplate($id: ID!) { deleteScheduleTemplate(id: $id) }\n`;\n\nexport const CREATE_SCHEDULE_FROM_TEMPLATE = `\n mutation CreateScheduleFromTemplate(\n $templateId: ID!\n $workspaceId: ID!\n $overrides: CreateScheduledJobInput\n ) {\n createScheduleFromTemplate(templateId: $templateId, workspaceId: $workspaceId, overrides: $overrides) {\n id name status\n }\n }\n`;\n\nexport const SCHEDULE_VERSION_HISTORY = `\n query ScheduleVersionHistory($scheduleId: ID!) {\n scheduleVersionHistory(scheduleId: $scheduleId) {\n id scheduleId version changedBy changedFields changeReason createdAt\n }\n }\n`;\n\nexport const RESTORE_SCHEDULE_VERSION = `\n mutation RestoreScheduleVersion($scheduleId: ID!, $versionId: ID!) {\n restoreScheduleVersion(scheduleId: $scheduleId, versionId: $versionId) { id name version }\n }\n`;\n\nexport const TAG_SCHEDULED_JOB = `\n mutation TagScheduledJob($input: TagScheduledJobInput!) {\n tagScheduledJob(input: $input) { id entityId tagId source }\n }\n`;\n\nexport const UNTAG_SCHEDULED_JOB = `\n mutation UntagScheduledJob($input: UntagScheduledJobInput!) {\n untagScheduledJob(input: $input)\n }\n`;\n\nexport const REPLACE_SCHEDULED_JOB_TAGS = `\n mutation ReplaceScheduledJobTags($input: ReplaceScheduledJobTagsInput!) {\n replaceScheduledJobTags(input: $input) { id entityId tagId source }\n }\n`;\n\nexport const GET_SCHEDULED_JOB_TAGS = `\n query GetScheduledJobTags($input: GetScheduledJobTagsInput!) {\n getScheduledJobTags(input: $input) { id entityId tagId source }\n }\n`;\n\nexport const EXECUTION_UPDATED_POLL = `\n query ExecutionUpdatedPoll($id: ID!) {\n jobExecution(id: $id) {\n id scheduleId status attemptNumber startedAt completedAt errorMessage success\n }\n }\n`;\n\nexport const JOB_STATUS_UPDATED_POLL = `\n query JobStatusUpdatedPoll($id: ID!) {\n scheduledJob(id: $id) {\n id name status nextExecutionAt lastExecutionAt updatedAt\n }\n }\n`;\n","/**\n * Scheduler MCP tools — scheduled jobs CRUD + execution history.\n * Surface mirrors cli-sdk/src/modules/scheduler/commands.ts.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../core/index.js';\nimport * as ops from './operations.js';\n\ninterface JobRow {\n id: string;\n name: string;\n status?: string;\n scheduleType?: string;\n nextExecutionAt?: string;\n createdAt?: string;\n}\n\ninterface ExecutionRow {\n id: string;\n status?: string;\n startedAt?: string;\n completedAt?: string;\n duration?: number;\n errorMessage?: string | null;\n success?: boolean;\n}\n\nfunction readWorkspaceId(ctx: McpContext): string | null {\n const auth = ctx.auth.read();\n return auth?.workspaceId ?? null;\n}\n\nconst ScheduleTypeEnum = z.enum(['CRON', 'INTERVAL', 'ONCE']);\nconst ExecutorTypeEnum = z.enum(['WORKFLOW', 'FUNCTION', 'WEBHOOK']);\n\nexport function registerSchedulerTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_list')),\n {\n title: 'List Scheduled Jobs',\n description: 'List scheduled jobs in the active workspace.',\n inputSchema: {\n status: z.string().optional().describe('Filter by status (will be uppercased)'),\n type: ScheduleTypeEnum.optional().describe('Filter by scheduleType'),\n limit: z.number().optional().describe('Page size (default 50)'),\n },\n },\n async ({ status, type, limit }) => {\n try {\n const workspaceId = readWorkspaceId(ctx);\n if (!workspaceId) {\n return errorResult('No workspace set. Run the auth workspace_set tool first.');\n }\n const filter: Record<string, unknown> = {};\n if (status !== undefined) filter.status = status.toUpperCase();\n if (type !== undefined) filter.scheduleType = type;\n const data = await ctx.gql.workspace.request<{\n scheduledJobs: { jobs: JobRow[]; total: number; nextCursor?: string };\n }>(ops.LIST_SCHEDULED_JOBS, {\n workspaceId,\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: { limit: limit ?? 50, offset: 0 },\n });\n return jsonResult(data.scheduledJobs);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_list failed', { error: String(error) });\n return errorResult(\n `Failed to list scheduled jobs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_get')),\n {\n title: 'Get Scheduled Job',\n description: 'Get a scheduled job by ID.',\n inputSchema: { id: z.string().describe('Job ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ scheduledJob: JobRow | null }>(\n ops.GET_SCHEDULED_JOB,\n { id },\n );\n if (!data.scheduledJob) return errorResult(`Job ${id} not found`);\n return jsonResult(data.scheduledJob);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_get failed', { error: String(error) });\n return errorResult(\n `Failed to get scheduled job: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_create')),\n {\n title: 'Create Scheduled Job',\n description: 'Create a scheduled job.',\n inputSchema: {\n name: z.string().describe('Job name'),\n type: ScheduleTypeEnum.describe('Schedule type'),\n cron: z.string().optional().describe('Cron expression (for CRON type)'),\n intervalSeconds: z.number().optional().describe('Interval seconds (for INTERVAL type)'),\n executor: ExecutorTypeEnum.optional().describe('Executor type (default WORKFLOW)'),\n executorConfig: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('Executor configuration object'),\n },\n },\n async ({ name, type, cron, intervalSeconds, executor, executorConfig }) => {\n try {\n const workspaceId = readWorkspaceId(ctx);\n if (!workspaceId) {\n return errorResult('No workspace set. Run the auth workspace_set tool first.');\n }\n const input: Record<string, unknown> = {\n name,\n scheduleType: type,\n executorType: executor ?? 'WORKFLOW',\n executorConfig: executorConfig ?? {},\n };\n if (cron !== undefined) input.cronExpression = cron;\n if (intervalSeconds !== undefined) input.intervalSeconds = intervalSeconds;\n const data = await ctx.gql.workspace.request<{ createScheduledJob: JobRow }>(\n ops.CREATE_SCHEDULED_JOB,\n { workspaceId, input },\n );\n return jsonResult(data.createScheduledJob);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_create failed', { error: String(error) });\n return errorResult(\n `Failed to create scheduled job: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_update')),\n {\n title: 'Update Scheduled Job',\n description:\n 'Update a scheduled job (cron expression, executor config, retry policy, etc.). At least one field must be provided. Returns the updated ScheduledJob.',\n inputSchema: {\n id: z.string().describe('Job ID'),\n name: z.string().optional().describe('Updated job name'),\n description: z.string().optional().describe('Updated description'),\n cronExpression: z.string().optional().describe('Updated cron expression (CRON jobs only)'),\n interval: z.number().int().optional().describe('Updated interval (INTERVAL jobs only)'),\n intervalUnit: z\n .string()\n .optional()\n .describe('Interval unit (SECONDS|MINUTES|HOURS|DAYS, will be uppercased)'),\n endDate: z.string().optional().describe('Updated end date (ISO-8601)'),\n executorConfig: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('Updated executor configuration'),\n maxRetries: z.number().int().optional().describe('Max retry attempts on failure'),\n changeReason: z.string().optional().describe('Audit-trail reason for the change'),\n },\n },\n async ({\n id,\n name,\n description,\n cronExpression,\n interval,\n intervalUnit,\n endDate,\n executorConfig,\n maxRetries,\n changeReason,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (cronExpression !== undefined) input.cronExpression = cronExpression;\n if (interval !== undefined) input.interval = interval;\n if (intervalUnit !== undefined) input.intervalUnit = intervalUnit.toUpperCase();\n if (endDate !== undefined) input.endDate = endDate;\n if (executorConfig !== undefined) input.executorConfig = executorConfig;\n if (maxRetries !== undefined) input.maxRetries = maxRetries;\n if (changeReason !== undefined) input.changeReason = changeReason;\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one field to update');\n }\n const data = await ctx.gql.workspace.request<{ updateScheduledJob: JobRow }>(\n ops.UPDATE_SCHEDULED_JOB,\n { id, input },\n );\n return jsonResult(data.updateScheduledJob);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_update failed', { error: String(error) });\n return errorResult(\n `Failed to update scheduled job: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_delete')),\n {\n title: 'Delete Scheduled Job',\n description: 'Delete a scheduled job.',\n inputSchema: { id: z.string().describe('Job ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteScheduledJob: boolean }>(\n ops.DELETE_SCHEDULED_JOB,\n { id },\n );\n return jsonResult({ deleted: data.deleteScheduledJob, jobId: id });\n } catch (error) {\n ctx.logger.error('scheduler_jobs_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete scheduled job: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_executions_list')),\n {\n title: 'List Job Executions',\n description: 'List execution history for a scheduled job.',\n inputSchema: {\n jobId: z.string().describe('Job ID'),\n limit: z.number().optional().describe('Page size (default 100)'),\n },\n },\n async ({ jobId, limit }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n jobExecutions: { executions: ExecutionRow[]; total: number; nextCursor?: string };\n }>(ops.JOB_EXECUTIONS, {\n jobId,\n pagination: { limit: limit ?? 100, offset: 0 },\n });\n return jsonResult(data.jobExecutions);\n } catch (error) {\n ctx.logger.error('scheduler_executions_list failed', { error: String(error) });\n return errorResult(\n `Failed to list executions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_executions_get')),\n {\n title: 'Get Job Execution',\n description:\n 'Fetch a single job execution by ID, including status, attempt number, timings, error message and result payload. Returns the JobExecution or an error if not found.',\n inputSchema: { id: z.string().describe('Execution ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ jobExecution: ExecutionRow | null }>(\n ops.GET_JOB_EXECUTION,\n { id },\n );\n if (!data.jobExecution) return errorResult(`Execution ${id} not found`);\n return jsonResult(data.jobExecution);\n } catch (error) {\n ctx.logger.error('scheduler_executions_get failed', { error: String(error) });\n return errorResult(\n `Failed to get job execution: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Jobs (extras) ───────────────────────────────────────────────────────\n for (const [tool, op, title, desc, mutationField] of [\n [\n 'scheduler_jobs_pause',\n ops.PAUSE_JOB,\n 'Pause Scheduled Job',\n 'Pause a scheduled job.',\n 'pauseScheduledJob',\n ],\n [\n 'scheduler_jobs_resume',\n ops.RESUME_JOB,\n 'Resume Scheduled Job',\n 'Resume a paused scheduled job.',\n 'resumeScheduledJob',\n ],\n [\n 'scheduler_jobs_activate',\n ops.ACTIVATE_SCHEDULE,\n 'Activate Schedule',\n 'Activate a draft or disabled schedule.',\n 'activateSchedule',\n ],\n [\n 'scheduler_jobs_archive',\n ops.ARCHIVE_SCHEDULE,\n 'Archive Schedule',\n 'Archive a scheduled job (soft delete).',\n 'archiveSchedule',\n ],\n ] as const) {\n server.registerTool(\n track(mcpToolName(ctx.productName, tool)),\n {\n title,\n description: desc,\n inputSchema: { id: z.string().describe('Schedule ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<Record<string, JobRow>>(op, { id });\n return jsonResult(data[mutationField]);\n } catch (error) {\n ctx.logger.error(`${tool} failed`, { error: String(error) });\n return errorResult(\n `${title} failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n }\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_disable')),\n {\n title: 'Disable Schedule',\n description: 'Disable a schedule with an optional reason.',\n inputSchema: {\n id: z.string().describe('Schedule ID'),\n reason: z.string().optional().describe('Disable reason (audit trail)'),\n },\n },\n async ({ id, reason }) => {\n try {\n const data = await ctx.gql.workspace.request<{ disableSchedule: JobRow }>(\n ops.DISABLE_SCHEDULE,\n { id, reason: reason ?? null },\n );\n return jsonResult(data.disableSchedule);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_disable failed', { error: String(error) });\n return errorResult(\n `Failed to disable: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_clone')),\n {\n title: 'Clone Schedule',\n description:\n 'Clone an existing schedule. Optionally move to another workspace and supply override fields.',\n inputSchema: {\n sourceId: z.string().describe('Source schedule ID'),\n newWorkspaceId: z.string().optional().describe('Target workspace (defaults to source)'),\n overrides: z\n .record(z.string(), z.unknown())\n .optional()\n .describe('CreateScheduledJobInput overrides'),\n },\n },\n async ({ sourceId, newWorkspaceId, overrides }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cloneSchedule: JobRow }>(\n ops.CLONE_SCHEDULE,\n { sourceId, newWorkspaceId: newWorkspaceId ?? null, overrides: overrides ?? null },\n );\n return jsonResult(data.cloneSchedule);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_clone failed', { error: String(error) });\n return errorResult(\n `Failed to clone: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_execute_now')),\n {\n title: 'Execute Job Now',\n description: 'Trigger a scheduled job to execute immediately (out-of-band).',\n inputSchema: { id: z.string().describe('Schedule ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ executeJobNow: ExecutionRow }>(\n ops.EXECUTE_JOB_NOW,\n { id },\n );\n return jsonResult(data.executeJobNow);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_execute_now failed', { error: String(error) });\n return errorResult(\n `Failed to execute: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_preview')),\n {\n title: 'Preview Schedule',\n description:\n 'Compute upcoming execution times for a schedule definition without creating it.',\n inputSchema: {\n scheduleType: z.string().describe('CRON | FIXED_INTERVAL | ONE_TIME | RRULE | WINDOWED'),\n cronExpression: z.string().optional(),\n rrule: z.string().optional(),\n interval: z.number().int().optional(),\n intervalUnit: z.string().optional(),\n count: z.number().int().optional().describe('How many upcoming executions to return'),\n startDate: z.string().optional(),\n endDate: z.string().optional(),\n timezone: z.string().optional(),\n },\n },\n async ({\n scheduleType,\n cronExpression,\n rrule,\n interval,\n intervalUnit,\n count,\n startDate,\n endDate,\n timezone,\n }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n previewSchedule: {\n count: number;\n startDate: string;\n endDate: string;\n nextExecutions: string[];\n };\n }>(ops.PREVIEW_SCHEDULE, {\n scheduleType: scheduleType.toUpperCase(),\n cronExpression: cronExpression ?? null,\n rrule: rrule ?? null,\n interval: interval ?? null,\n intervalUnit: intervalUnit ?? null,\n count: count ?? null,\n startDate: startDate ?? null,\n endDate: endDate ?? null,\n timezone: timezone ?? null,\n });\n return jsonResult(data.previewSchedule);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_preview failed', { error: String(error) });\n return errorResult(\n `Failed to preview: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Templates ───────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_templates_list')),\n {\n title: 'List Schedule Templates',\n description: 'List schedule templates in the active workspace.',\n inputSchema: {\n category: z.string().optional(),\n isPublic: z.boolean().optional(),\n limit: z.number().optional(),\n },\n },\n async ({ category, isPublic, limit }) => {\n try {\n const workspaceId = readWorkspaceId(ctx);\n if (!workspaceId) return errorResult('No workspace set.');\n const filter: Record<string, unknown> = {};\n if (category !== undefined) filter.category = category;\n if (isPublic !== undefined) filter.isPublic = isPublic;\n const data = await ctx.gql.workspace.request<{\n scheduleTemplates: { templates: unknown[]; total: number };\n }>(ops.LIST_SCHEDULE_TEMPLATES, {\n workspaceId,\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: { first: limit ?? 100 },\n });\n return jsonResult(data.scheduleTemplates);\n } catch (error) {\n ctx.logger.error('scheduler_templates_list failed', { error: String(error) });\n return errorResult(\n `Failed to list templates: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_templates_list_public')),\n {\n title: 'List Public Schedule Templates',\n description: 'List public (cross-workspace) schedule templates.',\n inputSchema: {\n category: z.string().optional(),\n limit: z.number().optional(),\n },\n },\n async ({ category, limit }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (category !== undefined) filter.category = category;\n const data = await ctx.gql.workspace.request<{\n publicScheduleTemplates: { templates: unknown[]; total: number };\n }>(ops.LIST_PUBLIC_SCHEDULE_TEMPLATES, {\n filter: Object.keys(filter).length > 0 ? filter : undefined,\n pagination: { first: limit ?? 100 },\n });\n return jsonResult(data.publicScheduleTemplates);\n } catch (error) {\n ctx.logger.error('scheduler_templates_list_public failed', { error: String(error) });\n return errorResult(\n `Failed to list: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_templates_get')),\n {\n title: 'Get Schedule Template',\n description: 'Get a schedule template by ID.',\n inputSchema: { id: z.string() },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ scheduleTemplate: unknown }>(\n ops.GET_SCHEDULE_TEMPLATE,\n { id },\n );\n if (!data.scheduleTemplate) return errorResult(`Template ${id} not found`);\n return jsonResult(data.scheduleTemplate);\n } catch (error) {\n ctx.logger.error('scheduler_templates_get failed', { error: String(error) });\n return errorResult(\n `Failed to get template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_templates_create')),\n {\n title: 'Create Schedule Template',\n description: 'Create a reusable schedule template in the active workspace.',\n inputSchema: {\n name: z.string(),\n scheduleType: z.string().describe('CRON | FIXED_INTERVAL | ONE_TIME | RRULE | WINDOWED'),\n executorType: z.string().describe('WEBHOOK | INTERNAL_API | NATS_TOPIC | GRAPHQL'),\n scheduleConfig: z.record(z.string(), z.unknown()),\n executorConfig: z.record(z.string(), z.unknown()),\n description: z.string().optional(),\n category: z.string().optional(),\n isPublic: z.boolean().optional(),\n },\n },\n async ({\n name,\n scheduleType,\n executorType,\n scheduleConfig,\n executorConfig,\n description,\n category,\n isPublic,\n }) => {\n try {\n const workspaceId = readWorkspaceId(ctx);\n if (!workspaceId) return errorResult('No workspace set.');\n const input: Record<string, unknown> = {\n name,\n scheduleType: scheduleType.toUpperCase(),\n executorType: executorType.toUpperCase(),\n scheduleConfig,\n executorConfig,\n };\n if (description !== undefined) input.description = description;\n if (category !== undefined) input.category = category;\n if (isPublic !== undefined) input.isPublic = isPublic;\n const data = await ctx.gql.workspace.request<{ createScheduleTemplate: unknown }>(\n ops.CREATE_SCHEDULE_TEMPLATE,\n { workspaceId, input },\n );\n return jsonResult(data.createScheduleTemplate);\n } catch (error) {\n ctx.logger.error('scheduler_templates_create failed', { error: String(error) });\n return errorResult(\n `Failed to create template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_templates_update')),\n {\n title: 'Update Schedule Template',\n description: 'Update a schedule template.',\n inputSchema: {\n id: z.string(),\n name: z.string().optional(),\n description: z.string().optional(),\n category: z.string().optional(),\n isPublic: z.boolean().optional(),\n },\n },\n async ({ id, name, description, category, isPublic }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (category !== undefined) input.category = category;\n if (isPublic !== undefined) input.isPublic = isPublic;\n if (Object.keys(input).length === 0) {\n return errorResult('Provide at least one field to update');\n }\n const data = await ctx.gql.workspace.request<{ updateScheduleTemplate: unknown }>(\n ops.UPDATE_SCHEDULE_TEMPLATE,\n { id, input },\n );\n return jsonResult(data.updateScheduleTemplate);\n } catch (error) {\n ctx.logger.error('scheduler_templates_update failed', { error: String(error) });\n return errorResult(\n `Failed to update template: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_templates_delete')),\n {\n title: 'Delete Schedule Template',\n description: 'Delete a schedule template.',\n inputSchema: { id: z.string() },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ deleteScheduleTemplate: boolean }>(\n ops.DELETE_SCHEDULE_TEMPLATE,\n { id },\n );\n return jsonResult({ deleted: data.deleteScheduleTemplate, id });\n } catch (error) {\n ctx.logger.error('scheduler_templates_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_templates_create_from_template')),\n {\n title: 'Create Schedule From Template',\n description: 'Instantiate a schedule from a template; optional overrides.',\n inputSchema: {\n templateId: z.string(),\n overrides: z.record(z.string(), z.unknown()).optional(),\n },\n },\n async ({ templateId, overrides }) => {\n try {\n const workspaceId = readWorkspaceId(ctx);\n if (!workspaceId) return errorResult('No workspace set.');\n const data = await ctx.gql.workspace.request<{ createScheduleFromTemplate: JobRow }>(\n ops.CREATE_SCHEDULE_FROM_TEMPLATE,\n { templateId, workspaceId, overrides: overrides ?? null },\n );\n return jsonResult(data.createScheduleFromTemplate);\n } catch (error) {\n ctx.logger.error('scheduler_templates_create_from failed', { error: String(error) });\n return errorResult(\n `Failed to create: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Versions ────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_versions_history')),\n {\n title: 'Schedule Version History',\n description: 'List version history for a schedule.',\n inputSchema: { scheduleId: z.string() },\n },\n async ({ scheduleId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ scheduleVersionHistory: unknown[] }>(\n ops.SCHEDULE_VERSION_HISTORY,\n { scheduleId },\n );\n return jsonResult(data.scheduleVersionHistory);\n } catch (error) {\n ctx.logger.error('scheduler_versions_history failed', { error: String(error) });\n return errorResult(\n `Failed to get history: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_versions_restore')),\n {\n title: 'Restore Schedule Version',\n description: 'Restore a schedule to a prior version.',\n inputSchema: { scheduleId: z.string(), versionId: z.string() },\n },\n async ({ scheduleId, versionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ restoreScheduleVersion: JobRow }>(\n ops.RESTORE_SCHEDULE_VERSION,\n { scheduleId, versionId },\n );\n return jsonResult(data.restoreScheduleVersion);\n } catch (error) {\n ctx.logger.error('scheduler_versions_restore failed', { error: String(error) });\n return errorResult(\n `Failed to restore: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Job tags ────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_tags_add')),\n {\n title: 'Tag Scheduled Job',\n description: 'Add a tag assignment to a scheduled job.',\n inputSchema: {\n entityId: z.string(),\n tagId: z.string(),\n source: z.string().optional(),\n },\n },\n async ({ entityId, tagId, source }) => {\n try {\n const input: Record<string, unknown> = { entityId, tagId };\n if (source !== undefined) input.source = source;\n const data = await ctx.gql.workspace.request<{ tagScheduledJob: unknown }>(\n ops.TAG_SCHEDULED_JOB,\n { input },\n );\n return jsonResult(data.tagScheduledJob);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_tag_add failed', { error: String(error) });\n return errorResult(\n `Failed to tag: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_tags_remove')),\n {\n title: 'Untag Scheduled Job',\n description: 'Remove a tag assignment from a scheduled job.',\n inputSchema: { entityId: z.string(), tagId: z.string() },\n },\n async ({ entityId, tagId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ untagScheduledJob: boolean }>(\n ops.UNTAG_SCHEDULED_JOB,\n { input: { entityId, tagId } },\n );\n return jsonResult({ removed: data.untagScheduledJob });\n } catch (error) {\n ctx.logger.error('scheduler_jobs_tag_remove failed', { error: String(error) });\n return errorResult(\n `Failed to untag: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_tags_replace')),\n {\n title: 'Replace Scheduled Job Tags',\n description: 'Replace all tag assignments on a scheduled job.',\n inputSchema: { entityId: z.string(), tagIds: z.array(z.string()) },\n },\n async ({ entityId, tagIds }) => {\n try {\n const data = await ctx.gql.workspace.request<{ replaceScheduledJobTags: unknown }>(\n ops.REPLACE_SCHEDULED_JOB_TAGS,\n { input: { entityId, tagIds } },\n );\n return jsonResult(data.replaceScheduledJobTags);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_tag_replace failed', { error: String(error) });\n return errorResult(\n `Failed to replace tags: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_tags_list')),\n {\n title: 'List Scheduled Job Tags',\n description: 'List tag assignments on a scheduled job.',\n inputSchema: { entityId: z.string() },\n },\n async ({ entityId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ getScheduledJobTags: unknown }>(\n ops.GET_SCHEDULED_JOB_TAGS,\n { input: { entityId } },\n );\n return jsonResult(data.getScheduledJobTags);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_tag_list failed', { error: String(error) });\n return errorResult(\n `Failed to list tags: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Subscription polling ────────────────────────────────────────────────\n // MCP has no subscription transport for high-frequency state — these poll the\n // corresponding `*_updated` GraphQL subscriptions via single-shot queries.\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_executions_check')),\n {\n title: 'Check Execution Status (poll)',\n description:\n 'Polling proxy for the executionUpdated subscription — returns the current state of an execution.',\n inputSchema: { id: z.string().describe('Execution ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ jobExecution: ExecutionRow | null }>(\n ops.EXECUTION_UPDATED_POLL,\n { id },\n );\n if (!data.jobExecution) return errorResult(`Execution ${id} not found`);\n return jsonResult(data.jobExecution);\n } catch (error) {\n ctx.logger.error('scheduler_executions_check failed', { error: String(error) });\n return errorResult(`Failed: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_jobs_check')),\n {\n title: 'Check Job Status (poll)',\n description:\n 'Polling proxy for the jobStatusUpdated subscription — returns the current state of a scheduled job.',\n inputSchema: { id: z.string().describe('Schedule ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ scheduledJob: JobRow | null }>(\n ops.JOB_STATUS_UPDATED_POLL,\n { id },\n );\n if (!data.scheduledJob) return errorResult(`Job ${id} not found`);\n return jsonResult(data.scheduledJob);\n } catch (error) {\n ctx.logger.error('scheduler_jobs_check failed', { error: String(error) });\n return errorResult(`Failed: ${error instanceof Error ? error.message : String(error)}`);\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'scheduler_executions_retry')),\n {\n title: 'Retry Job Execution',\n description:\n 'Re-run a failed (or completed) scheduled-job execution. Returns the new JobExecution row created for the retry.',\n inputSchema: { executionId: z.string().describe('Execution ID to retry') },\n },\n async ({ executionId }) => {\n try {\n const data = await ctx.gql.workspace.request<{ retryJobExecution: ExecutionRow }>(\n ops.RETRY_JOB_EXECUTION,\n { executionId },\n );\n return jsonResult(data.retryJobExecution);\n } catch (error) {\n ctx.logger.error('scheduler_executions_retry failed', { error: String(error) });\n return errorResult(\n `Failed to retry job execution: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Scheduler module — scheduled jobs and executions.\n * Surface mirrors cli-sdk/src/modules/scheduler/.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerSchedulerTools } from './tools.js';\n\nconst schedulerModule: McpModule = {\n id: 'scheduler',\n version: '0.0.1',\n displayName: 'Scheduler',\n dependsOn: ['auth'],\n capabilities: { tools: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const track = (n: string): string => {\n tools.push(n);\n return n;\n };\n\n registerSchedulerTools(server, ctx, track);\n\n return { tools, resources: [], prompts: [] };\n },\n};\n\nexport default schedulerModule;\n"]}
@@ -824,7 +824,7 @@ function registerSchedulerTools(server, ctx, track) {
824
824
  }
825
825
  );
826
826
  server.registerTool(
827
- track(mcpToolName(ctx.productName, "scheduler_templates_create_from")),
827
+ track(mcpToolName(ctx.productName, "scheduler_templates_create_from_template")),
828
828
  {
829
829
  title: "Create Schedule From Template",
830
830
  description: "Instantiate a schedule from a template; optional overrides.",
@@ -895,7 +895,7 @@ function registerSchedulerTools(server, ctx, track) {
895
895
  }
896
896
  );
897
897
  server.registerTool(
898
- track(mcpToolName(ctx.productName, "scheduler_jobs_tag_add")),
898
+ track(mcpToolName(ctx.productName, "scheduler_tags_add")),
899
899
  {
900
900
  title: "Tag Scheduled Job",
901
901
  description: "Add a tag assignment to a scheduled job.",
@@ -923,7 +923,7 @@ function registerSchedulerTools(server, ctx, track) {
923
923
  }
924
924
  );
925
925
  server.registerTool(
926
- track(mcpToolName(ctx.productName, "scheduler_jobs_tag_remove")),
926
+ track(mcpToolName(ctx.productName, "scheduler_tags_remove")),
927
927
  {
928
928
  title: "Untag Scheduled Job",
929
929
  description: "Remove a tag assignment from a scheduled job.",
@@ -945,7 +945,7 @@ function registerSchedulerTools(server, ctx, track) {
945
945
  }
946
946
  );
947
947
  server.registerTool(
948
- track(mcpToolName(ctx.productName, "scheduler_jobs_tag_replace")),
948
+ track(mcpToolName(ctx.productName, "scheduler_tags_replace")),
949
949
  {
950
950
  title: "Replace Scheduled Job Tags",
951
951
  description: "Replace all tag assignments on a scheduled job.",
@@ -967,7 +967,7 @@ function registerSchedulerTools(server, ctx, track) {
967
967
  }
968
968
  );
969
969
  server.registerTool(
970
- track(mcpToolName(ctx.productName, "scheduler_jobs_tag_list")),
970
+ track(mcpToolName(ctx.productName, "scheduler_tags_list")),
971
971
  {
972
972
  title: "List Scheduled Job Tags",
973
973
  description: "List tag assignments on a scheduled job.",