@alisaitteke/temporal-mcp 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +225 -0
- package/bin/temporal-mcp.js +5 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2254 -0
- package/dist/index.js.map +1 -0
- package/mcp.json +13 -0
- package/package.json +49 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/client.ts","../src/tools/cluster.ts","../src/tools/namespaces.ts","../src/tools/workflows.ts","../src/tools/workflow-history.ts","../src/tools/schedules.ts","../src/tools/task-queues.ts","../src/tools/search-attributes.ts","../src/tools/activities.ts","../src/tools/batch-operations.ts","../src/tools/worker-deployments.ts","../src/tools/nexus-endpoints.ts","../src/tools/workflow-rules.ts","../src/index.ts"],"names":["z","fmtTime","encodePayload"],"mappings":"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","file":"index.js","sourcesContent":["import type { TemporalConfig, TemporalApiError } from './types.js';\n\n/** Wraps Temporal API errors with HTTP status and upstream message. */\nexport class TemporalError extends Error {\n constructor(\n public readonly status: number,\n message: string,\n public readonly details?: unknown\n ) {\n super(message);\n this.name = 'TemporalError';\n }\n}\n\n/**\n * Lightweight HTTP client for the Temporal REST API.\n * All methods map 1:1 to Temporal's `/api/v1/...` endpoints.\n */\nexport class TemporalClient {\n private readonly baseUrl: string;\n private readonly defaultNamespace: string;\n private readonly headers: Record<string, string>;\n\n constructor(config: TemporalConfig) {\n this.baseUrl = config.address.replace(/\\/$/, '');\n this.defaultNamespace = config.defaultNamespace;\n this.headers = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...(config.apiKey ? { Authorization: `Bearer ${config.apiKey}` } : {}),\n };\n }\n\n /** Resolves namespace: uses provided value or falls back to the configured default. */\n ns(namespace?: string): string {\n return namespace ?? this.defaultNamespace;\n }\n\n // ─── Core HTTP helpers ────────────────────────────────────────────────────\n\n async get<T>(path: string, params?: Record<string, string | number | boolean | undefined>): Promise<T> {\n const url = this.buildUrl(path, params);\n const res = await fetch(url, { headers: this.headers });\n return this.parseResponse<T>(res);\n }\n\n async post<T>(path: string, body?: unknown): Promise<T> {\n const url = this.buildUrl(path);\n const res = await fetch(url, {\n method: 'POST',\n headers: this.headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n return this.parseResponse<T>(res);\n }\n\n async delete<T>(path: string, body?: unknown): Promise<T> {\n const url = this.buildUrl(path);\n const res = await fetch(url, {\n method: 'DELETE',\n headers: this.headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n return this.parseResponse<T>(res);\n }\n\n // ─── Private helpers ──────────────────────────────────────────────────────\n\n private buildUrl(\n path: string,\n params?: Record<string, string | number | boolean | undefined>\n ): string {\n const url = new URL(`${this.baseUrl}${path}`);\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined && value !== null && value !== '') {\n url.searchParams.set(key, String(value));\n }\n }\n }\n return url.toString();\n }\n\n private async parseResponse<T>(res: Response): Promise<T> {\n const text = await res.text();\n\n if (!res.ok) {\n let message = `HTTP ${res.status}: ${res.statusText}`;\n let details: unknown;\n try {\n const err = JSON.parse(text) as TemporalApiError;\n message = err.message ?? message;\n details = err.details;\n } catch {\n // response body is not JSON — use raw text\n if (text) message = text;\n }\n throw new TemporalError(res.status, message, details);\n }\n\n if (!text) return {} as T;\n\n try {\n return JSON.parse(text) as T;\n } catch {\n throw new TemporalError(200, `Failed to parse response body: ${text}`);\n }\n }\n}\n\n/** Builds a TemporalClient from environment variables. Throws if TEMPORAL_ADDRESS is missing. */\nexport function createClientFromEnv(): TemporalClient {\n const address = process.env.TEMPORAL_ADDRESS;\n if (!address) {\n throw new Error(\n 'TEMPORAL_ADDRESS environment variable is required (e.g. http://localhost:8080)'\n );\n }\n return new TemporalClient({\n address,\n defaultNamespace: process.env.TEMPORAL_NAMESPACE ?? 'default',\n apiKey: process.env.TEMPORAL_API_KEY,\n });\n}\n","import { z } from 'zod';\nimport type { TemporalClient } from '../client.js';\nimport type { ToolResult } from '../types.js';\n\nexport const clusterToolDefinitions = [\n {\n name: 'get_cluster_info',\n description:\n 'Get Temporal cluster information including server version, supported features, and system info. Use this first to verify connectivity and check what capabilities are available.',\n inputSchema: {\n type: 'object' as const,\n properties: {},\n required: [],\n },\n },\n];\n\nexport const getClusterInfoSchema = z.object({});\n\nexport async function handleGetClusterInfo(\n _args: z.infer<typeof getClusterInfoSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const [clusterInfo, systemInfo] = await Promise.all([\n client.get<Record<string, unknown>>('/api/v1/cluster-info'),\n client.get<Record<string, unknown>>('/api/v1/system-info'),\n ]);\n\n const lines: string[] = [\n '# Temporal Cluster Info',\n '',\n '## Cluster',\n ];\n\n if (clusterInfo.clusterId) lines.push(`- Cluster ID: ${clusterInfo.clusterId}`);\n if (clusterInfo.serverVersion) lines.push(`- Server Version: ${clusterInfo.serverVersion}`);\n if (clusterInfo.clusterName) lines.push(`- Cluster Name: ${clusterInfo.clusterName}`);\n if (clusterInfo.historyShardCount) lines.push(`- History Shard Count: ${clusterInfo.historyShardCount}`);\n\n lines.push('', '## System');\n const caps = systemInfo.capabilities as Record<string, unknown> | undefined;\n if (caps) {\n const enabledCaps = Object.entries(caps)\n .filter(([, v]) => v === true)\n .map(([k]) => k);\n if (enabledCaps.length > 0) {\n lines.push('Enabled capabilities:');\n enabledCaps.forEach((c) => lines.push(` - ${c}`));\n }\n }\n if (systemInfo.serverVersion) lines.push(`- Server Version: ${systemInfo.serverVersion}`);\n\n return {\n content: [{ type: 'text', text: lines.join('\\n') }],\n structuredContent: {\n clusterId: clusterInfo.clusterId,\n clusterName: clusterInfo.clusterName,\n serverVersion: clusterInfo.serverVersion ?? systemInfo.serverVersion,\n historyShardCount: clusterInfo.historyShardCount,\n capabilities: caps ? Object.keys(caps).filter((k) => (caps as Record<string, unknown>)[k] === true) : [],\n },\n };\n}\n","import { z } from 'zod';\nimport type { TemporalClient } from '../client.js';\nimport type { ToolResult } from '../types.js';\n\nexport const namespaceToolDefinitions = [\n {\n name: 'list_namespaces',\n description: 'List all Temporal namespaces in the cluster.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n page_size: {\n type: 'number',\n description: 'Maximum number of namespaces to return (default 100).',\n },\n next_page_token: {\n type: 'string',\n description: 'Pagination token from a previous list_namespaces call.',\n },\n },\n required: [],\n },\n },\n {\n name: 'describe_namespace',\n description: 'Get detailed configuration and status for a specific namespace.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: {\n type: 'string',\n description: 'Namespace name (e.g. \"default\", \"my-team\").',\n },\n },\n required: ['namespace'],\n },\n },\n];\n\nexport const listNamespacesSchema = z.object({\n page_size: z.number().optional().describe('Maximum number of namespaces to return'),\n next_page_token: z.string().optional().describe('Pagination cursor from previous call'),\n});\n\nexport const describeNamespaceSchema = z.object({\n namespace: z.string().describe('Namespace name'),\n});\n\nexport async function handleListNamespaces(\n args: z.infer<typeof listNamespacesSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const data = await client.get<Record<string, unknown>>('/api/v1/namespaces', {\n pageSize: args.page_size,\n nextPageToken: args.next_page_token,\n });\n\n const namespaces = (data.namespaces as Record<string, unknown>[] | undefined) ?? [];\n const lines: string[] = [`# Namespaces (${namespaces.length})`, ''];\n\n for (const ns of namespaces) {\n const info = ns.namespaceInfo as Record<string, unknown> | undefined;\n const config = ns.config as Record<string, unknown> | undefined;\n lines.push(`## ${info?.name ?? 'unknown'}`);\n if (info?.state) lines.push(`- State: ${info.state}`);\n if (info?.description) lines.push(`- Description: ${info.description}`);\n if (info?.ownerEmail) lines.push(`- Owner: ${info.ownerEmail}`);\n if (config?.workflowExecutionRetentionPeriod)\n lines.push(`- Retention: ${config.workflowExecutionRetentionPeriod}`);\n lines.push('');\n }\n\n if (data.nextPageToken) {\n lines.push(`*Next page token: ${data.nextPageToken}*`);\n }\n\n return {\n content: [{ type: 'text', text: lines.join('\\n') }],\n structuredContent: {\n namespaces: namespaces.map((ns) => {\n const info = ns.namespaceInfo as Record<string, unknown> | undefined;\n const config = ns.config as Record<string, unknown> | undefined;\n return {\n name: info?.name,\n state: info?.state,\n description: info?.description,\n ownerEmail: info?.ownerEmail,\n retention: config?.workflowExecutionRetentionPeriod,\n };\n }),\n nextPageToken: data.nextPageToken,\n },\n };\n}\n\nexport async function handleDescribeNamespace(\n args: z.infer<typeof describeNamespaceSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = args.namespace ?? client.ns();\n const data = await client.get<Record<string, unknown>>(`/api/v1/namespaces/${encodeURIComponent(ns)}`);\n\n const info = data.namespaceInfo as Record<string, unknown> | undefined;\n const config = data.config as Record<string, unknown> | undefined;\n const repConfig = data.replicationConfig as Record<string, unknown> | undefined;\n\n const lines: string[] = [`# Namespace: ${info?.name ?? ns}`, ''];\n\n if (info?.state) lines.push(`- State: ${info.state}`);\n if (info?.description) lines.push(`- Description: ${info.description}`);\n if (info?.ownerEmail) lines.push(`- Owner Email: ${info.ownerEmail}`);\n if (config?.workflowExecutionRetentionPeriod)\n lines.push(`- Workflow Retention: ${config.workflowExecutionRetentionPeriod}`);\n if (repConfig?.activeClusterName)\n lines.push(`- Active Cluster: ${repConfig.activeClusterName}`);\n\n const clusters = repConfig?.clusters as unknown[] | undefined;\n if (clusters?.length) {\n lines.push(`- Clusters: ${clusters.map((c) => (c as Record<string, unknown>).clusterName).join(', ')}`);\n }\n\n return { content: [{ type: 'text', text: lines.join('\\n') }] };\n}\n","import { z } from 'zod';\nimport type { TemporalClient } from '../client.js';\nimport type { ToolResult } from '../types.js';\n\n// ─── Tool definitions (JSON Schema for MCP protocol) ─────────────────────────\n\nexport const workflowToolDefinitions = [\n {\n name: 'count_workflows',\n description:\n 'Count workflow executions matching an optional visibility query. Useful for dashboards and health checks.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Target namespace.' },\n query: {\n type: 'string',\n description: 'Visibility query filter (e.g. \"ExecutionStatus=\\'Running\\'\"). Leave empty to count all.',\n },\n },\n required: [],\n },\n },\n {\n name: 'pause_workflow',\n description:\n 'Pause a running workflow execution. The workflow will stop scheduling new tasks until unpaused.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Namespace containing the workflow.' },\n workflow_id: { type: 'string', description: 'Workflow ID to pause.' },\n run_id: { type: 'string', description: 'Specific run ID (optional).' },\n reason: { type: 'string', description: 'Human-readable reason for pausing.' },\n },\n required: ['workflow_id'],\n },\n },\n {\n name: 'unpause_workflow',\n description: 'Resume a previously paused workflow execution.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Namespace containing the workflow.' },\n workflow_id: { type: 'string', description: 'Workflow ID to unpause.' },\n run_id: { type: 'string', description: 'Specific run ID (optional).' },\n },\n required: ['workflow_id'],\n },\n },\n {\n name: 'signal_with_start_workflow',\n description:\n 'Start a workflow and send a signal atomically. If the workflow is already running, only the signal is sent. Ideal for event-driven patterns.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Target namespace.' },\n workflow_id: { type: 'string', description: 'Workflow ID to start or signal.' },\n workflow_type: { type: 'string', description: 'Workflow type to start if not already running.' },\n task_queue: { type: 'string', description: 'Task queue for the workflow.' },\n signal_name: { type: 'string', description: 'Signal name to send.' },\n signal_input: { description: 'Signal payload. Will be JSON-encoded.' },\n workflow_input: { description: 'Workflow start input (used only if starting fresh).' },\n },\n required: ['workflow_id', 'workflow_type', 'task_queue', 'signal_name'],\n },\n },\n {\n name: 'list_workflows',\n description:\n 'List or search workflow executions in a namespace. Supports Temporal\\'s query syntax (e.g. `WorkflowType=\\'OrderWorkflow\\' AND ExecutionStatus=\\'Running\\'`). Returns status, type, start time, and IDs.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: {\n type: 'string',\n description: 'Namespace to query. Defaults to the configured TEMPORAL_NAMESPACE.',\n },\n query: {\n type: 'string',\n description: 'Temporal visibility query (SQL-like filter). Leave empty to list all workflows.',\n },\n page_size: {\n type: 'number',\n description: 'Maximum number of results (default 20, max 1000).',\n },\n next_page_token: {\n type: 'string',\n description: 'Pagination cursor from a previous list_workflows call.',\n },\n },\n required: [],\n },\n },\n {\n name: 'describe_workflow',\n description:\n 'Get full details for a specific workflow execution: status, workflow type, task queue, start/close time, memo, and search attributes.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Namespace containing the workflow.' },\n workflow_id: { type: 'string', description: 'Workflow ID to describe.' },\n run_id: {\n type: 'string',\n description: 'Specific run ID. Omit to get the latest run.',\n },\n },\n required: ['workflow_id'],\n },\n },\n {\n name: 'start_workflow',\n description:\n 'Start a new workflow execution. Returns the run ID of the newly started workflow.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Target namespace.' },\n workflow_id: {\n type: 'string',\n description: 'Unique workflow ID. If a workflow with this ID already exists, behavior depends on the ID reuse policy.',\n },\n workflow_type: {\n type: 'string',\n description: 'Registered workflow type / function name.',\n },\n task_queue: {\n type: 'string',\n description: 'Task queue name where workers are polling.',\n },\n input: {\n description: 'Workflow input payload. Will be JSON-encoded.',\n },\n },\n required: ['workflow_id', 'workflow_type', 'task_queue'],\n },\n },\n {\n name: 'signal_workflow',\n description: 'Send a signal to a running workflow execution.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Namespace containing the workflow.' },\n workflow_id: { type: 'string', description: 'Target workflow ID.' },\n run_id: { type: 'string', description: 'Specific run ID (optional, targets latest if omitted).' },\n signal_name: { type: 'string', description: 'Signal name as registered in the workflow.' },\n input: { description: 'Signal payload. Will be JSON-encoded.' },\n },\n required: ['workflow_id', 'signal_name'],\n },\n },\n {\n name: 'query_workflow',\n description: 'Query a workflow\\'s current state using a registered query handler.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Namespace containing the workflow.' },\n workflow_id: { type: 'string', description: 'Target workflow ID.' },\n run_id: { type: 'string', description: 'Specific run ID (optional).' },\n query_type: {\n type: 'string',\n description: 'Query type name as registered in the workflow (e.g. \"getStatus\", \"__stack_trace\").',\n },\n query_args: { description: 'Optional query arguments. Will be JSON-encoded.' },\n },\n required: ['workflow_id', 'query_type'],\n },\n },\n {\n name: 'cancel_workflow',\n description:\n 'Request graceful cancellation of a workflow execution. The workflow will receive a CancellationRequested event and can clean up before stopping.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Namespace containing the workflow.' },\n workflow_id: { type: 'string', description: 'Workflow ID to cancel.' },\n run_id: { type: 'string', description: 'Specific run ID (optional).' },\n reason: { type: 'string', description: 'Human-readable reason for cancellation.' },\n },\n required: ['workflow_id'],\n },\n },\n {\n name: 'terminate_workflow',\n description:\n 'Force-terminate a workflow execution immediately without cleanup. Prefer cancel_workflow when possible.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Namespace containing the workflow.' },\n workflow_id: { type: 'string', description: 'Workflow ID to terminate.' },\n run_id: { type: 'string', description: 'Specific run ID (optional).' },\n reason: {\n type: 'string',\n description: 'Reason for termination (stored in workflow history).',\n },\n },\n required: ['workflow_id'],\n },\n },\n];\n\n// ─── Zod input schemas ────────────────────────────────────────────────────────\n\nexport const countWorkflowsSchema = z.object({\n namespace: z.string().optional(),\n query: z.string().optional(),\n});\n\nexport const pauseWorkflowSchema = z.object({\n namespace: z.string().optional(),\n workflow_id: z.string(),\n run_id: z.string().optional(),\n reason: z.string().optional(),\n});\n\nexport const unpauseWorkflowSchema = z.object({\n namespace: z.string().optional(),\n workflow_id: z.string(),\n run_id: z.string().optional(),\n});\n\nexport const signalWithStartWorkflowSchema = z.object({\n namespace: z.string().optional(),\n workflow_id: z.string(),\n workflow_type: z.string(),\n task_queue: z.string(),\n signal_name: z.string(),\n signal_input: z.unknown().optional(),\n workflow_input: z.unknown().optional(),\n});\n\nexport const listWorkflowsSchema = z.object({\n namespace: z.string().optional(),\n query: z.string().optional(),\n page_size: z.number().optional(),\n next_page_token: z.string().optional(),\n});\n\nexport const describeWorkflowSchema = z.object({\n namespace: z.string().optional(),\n workflow_id: z.string(),\n run_id: z.string().optional(),\n});\n\nexport const startWorkflowSchema = z.object({\n namespace: z.string().optional(),\n workflow_id: z.string(),\n workflow_type: z.string(),\n task_queue: z.string(),\n input: z.unknown().optional(),\n});\n\nexport const signalWorkflowSchema = z.object({\n namespace: z.string().optional(),\n workflow_id: z.string(),\n run_id: z.string().optional(),\n signal_name: z.string(),\n input: z.unknown().optional(),\n});\n\nexport const queryWorkflowSchema = z.object({\n namespace: z.string().optional(),\n workflow_id: z.string(),\n run_id: z.string().optional(),\n query_type: z.string(),\n query_args: z.unknown().optional(),\n});\n\nexport const cancelWorkflowSchema = z.object({\n namespace: z.string().optional(),\n workflow_id: z.string(),\n run_id: z.string().optional(),\n reason: z.string().optional(),\n});\n\nexport const terminateWorkflowSchema = z.object({\n namespace: z.string().optional(),\n workflow_id: z.string(),\n run_id: z.string().optional(),\n reason: z.string().optional(),\n});\n\n// ─── Handlers ─────────────────────────────────────────────────────────────────\n\n/** Formats a Temporal timestamp (RFC3339 or protobuf seconds) for display. */\nfunction fmtTime(t: unknown): string {\n if (!t) return 'N/A';\n if (typeof t === 'string') return new Date(t).toISOString();\n if (typeof t === 'object') {\n const obj = t as Record<string, unknown>;\n if (obj.seconds) return new Date(Number(obj.seconds) * 1000).toISOString();\n }\n return String(t);\n}\n\n/** Extracts the status string from various response shapes. */\nfunction extractStatus(exec: Record<string, unknown>): string {\n const statusCode = exec.status as string | number | undefined;\n if (!statusCode) return 'Unknown';\n // Temporal returns numeric status codes or string variants\n const statusMap: Record<string, string> = {\n '1': 'Running', '2': 'Completed', '3': 'Failed',\n '4': 'Cancelled', '5': 'Terminated', '6': 'ContinuedAsNew', '7': 'TimedOut',\n WORKFLOW_EXECUTION_STATUS_RUNNING: 'Running',\n WORKFLOW_EXECUTION_STATUS_COMPLETED: 'Completed',\n WORKFLOW_EXECUTION_STATUS_FAILED: 'Failed',\n WORKFLOW_EXECUTION_STATUS_CANCELED: 'Cancelled',\n WORKFLOW_EXECUTION_STATUS_TERMINATED: 'Terminated',\n WORKFLOW_EXECUTION_STATUS_CONTINUED_AS_NEW: 'ContinuedAsNew',\n WORKFLOW_EXECUTION_STATUS_TIMED_OUT: 'TimedOut',\n };\n return statusMap[String(statusCode)] ?? String(statusCode);\n}\n\nexport async function handleListWorkflows(\n args: z.infer<typeof listWorkflowsSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const data = await client.get<Record<string, unknown>>(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/workflows`,\n {\n query: args.query,\n pageSize: args.page_size ?? 20,\n nextPageToken: args.next_page_token,\n }\n );\n\n const executions = (data.executions as Record<string, unknown>[] | undefined) ?? [];\n const lines: string[] = [\n `# Workflows in \"${ns}\" (${executions.length} returned)`,\n '',\n ];\n\n for (const exec of executions) {\n const execution = exec.execution as Record<string, unknown> | undefined;\n const type = exec.type as Record<string, unknown> | undefined;\n lines.push(`## ${execution?.workflowId ?? 'unknown'}`);\n lines.push(`- Run ID: ${execution?.runId ?? 'N/A'}`);\n lines.push(`- Type: ${type?.name ?? 'N/A'}`);\n lines.push(`- Status: ${extractStatus(exec)}`);\n lines.push(`- Started: ${fmtTime(exec.startTime)}`);\n if (exec.closeTime) lines.push(`- Closed: ${fmtTime(exec.closeTime)}`);\n if (exec.taskQueue) {\n const tq = exec.taskQueue as Record<string, unknown>;\n lines.push(`- Task Queue: ${tq.name ?? exec.taskQueue}`);\n }\n lines.push('');\n }\n\n if (data.nextPageToken) {\n lines.push(`*Next page token: ${data.nextPageToken}*`);\n }\n\n return {\n content: [{ type: 'text', text: lines.join('\\n') }],\n structuredContent: {\n namespace: ns,\n count: executions.length,\n workflows: executions.map((exec) => {\n const execution = exec.execution as Record<string, unknown> | undefined;\n const type = exec.type as Record<string, unknown> | undefined;\n return {\n workflowId: execution?.workflowId,\n runId: execution?.runId,\n type: type?.name,\n status: extractStatus(exec),\n startTime: exec.startTime,\n closeTime: exec.closeTime,\n };\n }),\n nextPageToken: data.nextPageToken,\n },\n };\n}\n\nexport async function handleDescribeWorkflow(\n args: z.infer<typeof describeWorkflowSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const params: Record<string, string | undefined> = {};\n if (args.run_id) params['execution.runId'] = args.run_id;\n\n const data = await client.get<Record<string, unknown>>(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/workflows/${encodeURIComponent(args.workflow_id)}`,\n params\n );\n\n const execInfo = data.workflowExecutionInfo as Record<string, unknown> | undefined;\n const execution = execInfo?.execution as Record<string, unknown> | undefined;\n const type = execInfo?.type as Record<string, unknown> | undefined;\n const pendingActs = data.pendingActivities as unknown[] | undefined;\n const pendingChildren = data.pendingChildren as unknown[] | undefined;\n\n const lines: string[] = [\n `# Workflow: ${execution?.workflowId ?? args.workflow_id}`,\n '',\n ];\n\n if (execution?.runId) lines.push(`- Run ID: ${execution.runId}`);\n if (type?.name) lines.push(`- Type: ${type.name}`);\n if (execInfo) lines.push(`- Status: ${extractStatus(execInfo)}`);\n if (execInfo?.startTime) lines.push(`- Started: ${fmtTime(execInfo.startTime)}`);\n if (execInfo?.closeTime) lines.push(`- Closed: ${fmtTime(execInfo.closeTime)}`);\n if (execInfo?.taskQueue) {\n const tq = execInfo.taskQueue as Record<string, unknown>;\n lines.push(`- Task Queue: ${tq.name ?? execInfo.taskQueue}`);\n }\n if (execInfo?.historyLength) lines.push(`- History Events: ${execInfo.historyLength}`);\n\n if (pendingActs?.length) {\n lines.push('', `## Pending Activities (${pendingActs.length})`);\n for (const act of pendingActs) {\n const a = act as Record<string, unknown>;\n lines.push(`- ${a.activityId}: ${(a.activityType as Record<string, unknown>)?.name ?? 'unknown'} [${a.state ?? ''}]`);\n }\n }\n\n if (pendingChildren?.length) {\n lines.push('', `## Pending Child Workflows (${pendingChildren.length})`);\n for (const child of pendingChildren) {\n const c = child as Record<string, unknown>;\n lines.push(`- ${c.workflowId}: ${(c.workflowTypeName as string) ?? 'unknown'}`);\n }\n }\n\n return {\n content: [{ type: 'text', text: lines.join('\\n') }],\n structuredContent: {\n workflowId: execution?.workflowId,\n runId: execution?.runId,\n type: type?.name,\n status: execInfo ? extractStatus(execInfo) : undefined,\n startTime: execInfo?.startTime,\n closeTime: execInfo?.closeTime,\n taskQueue: (() => { const tq = execInfo?.taskQueue as Record<string, unknown> | undefined; return tq?.name ?? execInfo?.taskQueue; })(),\n historyLength: execInfo?.historyLength,\n pendingActivities: pendingActs?.length ?? 0,\n pendingChildren: pendingChildren?.length ?? 0,\n },\n };\n}\n\n/** Encodes a value as a Temporal payload (base64 JSON). */\nfunction encodePayload(value: unknown): { metadata: { encoding: string }; data: string } {\n const json = JSON.stringify(value);\n const b64 = Buffer.from(json).toString('base64');\n return {\n metadata: { encoding: Buffer.from('json/plain').toString('base64') },\n data: b64,\n };\n}\n\nexport async function handleStartWorkflow(\n args: z.infer<typeof startWorkflowSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const body: Record<string, unknown> = {\n workflowType: { name: args.workflow_type },\n taskQueue: { name: args.task_queue },\n };\n\n if (args.input !== undefined) {\n body.input = { payloads: [encodePayload(args.input)] };\n }\n\n const data = await client.post<Record<string, unknown>>(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/workflows/${encodeURIComponent(args.workflow_id)}`,\n body\n );\n\n const lines = [\n `# Workflow Started`,\n `- Workflow ID: ${args.workflow_id}`,\n `- Run ID: ${data.runId ?? 'N/A'}`,\n `- Started: ${data.started !== undefined ? data.started : 'yes'}`,\n ];\n\n return { content: [{ type: 'text', text: lines.join('\\n') }] };\n}\n\nexport async function handleSignalWorkflow(\n args: z.infer<typeof signalWorkflowSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const body: Record<string, unknown> = {};\n if (args.run_id) body['workflowExecution'] = { workflowId: args.workflow_id, runId: args.run_id };\n if (args.input !== undefined) body.input = { payloads: [encodePayload(args.input)] };\n\n await client.post(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/workflows/${encodeURIComponent(args.workflow_id)}/signal/${encodeURIComponent(args.signal_name)}`,\n body\n );\n\n return {\n content: [{\n type: 'text',\n text: `Signal \"${args.signal_name}\" sent to workflow \"${args.workflow_id}\" successfully.`,\n }],\n };\n}\n\nexport async function handleQueryWorkflow(\n args: z.infer<typeof queryWorkflowSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const body: Record<string, unknown> = {};\n if (args.run_id) body.execution = { workflowId: args.workflow_id, runId: args.run_id };\n if (args.query_args !== undefined) body.query = { queryArgs: { payloads: [encodePayload(args.query_args)] } };\n\n const data = await client.post<Record<string, unknown>>(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/workflows/${encodeURIComponent(args.workflow_id)}/query/${encodeURIComponent(args.query_type)}`,\n body\n );\n\n const result = data.queryResult as Record<string, unknown> | undefined;\n const payloads = result?.payloads as unknown[] | undefined;\n\n let resultText = JSON.stringify(data, null, 2);\n if (payloads?.length) {\n try {\n const payload = payloads[0] as Record<string, unknown>;\n if (payload.data) {\n const decoded = Buffer.from(payload.data as string, 'base64').toString('utf-8');\n resultText = decoded;\n }\n } catch {\n // fall back to raw JSON\n }\n }\n\n const lines = [\n `# Query Result: ${args.query_type}`,\n `Workflow: ${args.workflow_id}`,\n '',\n '```json',\n resultText,\n '```',\n ];\n\n return { content: [{ type: 'text', text: lines.join('\\n') }] };\n}\n\nexport async function handleCancelWorkflow(\n args: z.infer<typeof cancelWorkflowSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const body: Record<string, unknown> = {};\n if (args.run_id) body.workflowExecution = { workflowId: args.workflow_id, runId: args.run_id };\n if (args.reason) body.reason = args.reason;\n\n await client.post(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/workflows/${encodeURIComponent(args.workflow_id)}/cancel`,\n body\n );\n\n return {\n content: [{\n type: 'text',\n text: `Cancellation requested for workflow \"${args.workflow_id}\"${args.reason ? ` (reason: ${args.reason})` : ''}.`,\n }],\n };\n}\n\nexport async function handleTerminateWorkflow(\n args: z.infer<typeof terminateWorkflowSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const body: Record<string, unknown> = {};\n if (args.run_id) body.workflowExecution = { workflowId: args.workflow_id, runId: args.run_id };\n if (args.reason) body.reason = args.reason;\n\n await client.post(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/workflows/${encodeURIComponent(args.workflow_id)}/terminate`,\n body\n );\n\n return {\n content: [{\n type: 'text',\n text: `Workflow \"${args.workflow_id}\" terminated${args.reason ? ` (reason: ${args.reason})` : ''}.`,\n }],\n };\n}\n\nexport async function handleCountWorkflows(\n args: z.infer<typeof countWorkflowsSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const data = await client.get<Record<string, unknown>>(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/workflow-count`,\n { query: args.query }\n );\n\n const count = data.count ?? 0;\n const groups = data.groups as Record<string, unknown>[] | undefined;\n\n const lines = [\n `# Workflow Count in \"${ns}\"`,\n '',\n `Total: **${count}**`,\n ];\n\n if (groups?.length) {\n lines.push('', '## Breakdown');\n for (const g of groups) {\n const groupValues = g.groupValues as Record<string, unknown>[] | undefined;\n const label = groupValues?.map((v) => v.data ?? v).join(', ') ?? JSON.stringify(g);\n lines.push(`- ${label}: ${g.count}`);\n }\n }\n\n return {\n content: [{ type: 'text', text: lines.join('\\n') }],\n structuredContent: {\n namespace: ns,\n count: Number(count),\n query: args.query ?? null,\n groups: groups?.map((g) => ({\n count: g.count,\n groupValues: g.groupValues,\n })) ?? [],\n },\n };\n}\n\nexport async function handlePauseWorkflow(\n args: z.infer<typeof pauseWorkflowSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const body: Record<string, unknown> = {};\n if (args.run_id) body.workflowExecution = { workflowId: args.workflow_id, runId: args.run_id };\n if (args.reason) body.reason = args.reason;\n\n await client.post(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/workflows/${encodeURIComponent(args.workflow_id)}/pause`,\n body\n );\n\n return {\n content: [{\n type: 'text',\n text: `Workflow \"${args.workflow_id}\" paused${args.reason ? ` (reason: ${args.reason})` : ''}.`,\n }],\n };\n}\n\nexport async function handleUnpauseWorkflow(\n args: z.infer<typeof unpauseWorkflowSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const body: Record<string, unknown> = {};\n if (args.run_id) body.workflowExecution = { workflowId: args.workflow_id, runId: args.run_id };\n\n await client.post(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/workflows/${encodeURIComponent(args.workflow_id)}/unpause`,\n body\n );\n\n return {\n content: [{ type: 'text', text: `Workflow \"${args.workflow_id}\" unpaused.` }],\n };\n}\n\nexport async function handleSignalWithStartWorkflow(\n args: z.infer<typeof signalWithStartWorkflowSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const body: Record<string, unknown> = {\n workflowType: { name: args.workflow_type },\n taskQueue: { name: args.task_queue },\n signalName: args.signal_name,\n };\n\n if (args.signal_input !== undefined) body.signalInput = { payloads: [encodePayload(args.signal_input)] };\n if (args.workflow_input !== undefined) body.input = { payloads: [encodePayload(args.workflow_input)] };\n\n const data = await client.post<Record<string, unknown>>(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/workflows/${encodeURIComponent(args.workflow_id)}/signal-with-start/${encodeURIComponent(args.signal_name)}`,\n body\n );\n\n return {\n content: [{\n type: 'text',\n text: [\n `# signal_with_start: \"${args.workflow_id}\"`,\n `- Signal: ${args.signal_name}`,\n `- Run ID: ${data.runId ?? 'N/A'}`,\n `- Started: ${data.started !== undefined ? data.started : 'yes (or already running)'}`,\n ].join('\\n'),\n }],\n };\n}\n","import { z } from 'zod';\nimport type { TemporalClient } from '../client.js';\nimport type { ToolResult } from '../types.js';\n\nexport const historyToolDefinitions = [\n {\n name: 'get_workflow_history',\n description:\n 'Get the event history of a workflow execution. Useful for debugging failures, understanding execution flow, and auditing. Returns a human-readable summary of history events.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Namespace containing the workflow.' },\n workflow_id: { type: 'string', description: 'Workflow ID.' },\n run_id: { type: 'string', description: 'Specific run ID (optional, uses latest run if omitted).' },\n reverse: {\n type: 'boolean',\n description: 'If true, return history in reverse chronological order (most recent first). Useful for checking the latest events of a long-running workflow.',\n },\n page_size: {\n type: 'number',\n description: 'Maximum number of history events to return (default 50).',\n },\n next_page_token: {\n type: 'string',\n description: 'Pagination cursor from a previous get_workflow_history call.',\n },\n },\n required: ['workflow_id'],\n },\n },\n];\n\nexport const getWorkflowHistorySchema = z.object({\n namespace: z.string().optional(),\n workflow_id: z.string(),\n run_id: z.string().optional(),\n reverse: z.boolean().optional(),\n page_size: z.number().optional(),\n next_page_token: z.string().optional(),\n});\n\n/** Friendly display names for Temporal event types. */\nconst EVENT_TYPE_LABELS: Record<string, string> = {\n EVENT_TYPE_WORKFLOW_EXECUTION_STARTED: 'WorkflowExecutionStarted',\n EVENT_TYPE_WORKFLOW_EXECUTION_COMPLETED: 'WorkflowExecutionCompleted',\n EVENT_TYPE_WORKFLOW_EXECUTION_FAILED: 'WorkflowExecutionFailed',\n EVENT_TYPE_WORKFLOW_EXECUTION_TIMED_OUT: 'WorkflowExecutionTimedOut',\n EVENT_TYPE_WORKFLOW_EXECUTION_CANCELED: 'WorkflowExecutionCanceled',\n EVENT_TYPE_WORKFLOW_EXECUTION_TERMINATED: 'WorkflowExecutionTerminated',\n EVENT_TYPE_WORKFLOW_EXECUTION_CONTINUED_AS_NEW: 'WorkflowExecutionContinuedAsNew',\n EVENT_TYPE_WORKFLOW_TASK_SCHEDULED: 'WorkflowTaskScheduled',\n EVENT_TYPE_WORKFLOW_TASK_STARTED: 'WorkflowTaskStarted',\n EVENT_TYPE_WORKFLOW_TASK_COMPLETED: 'WorkflowTaskCompleted',\n EVENT_TYPE_WORKFLOW_TASK_FAILED: 'WorkflowTaskFailed',\n EVENT_TYPE_WORKFLOW_TASK_TIMED_OUT: 'WorkflowTaskTimedOut',\n EVENT_TYPE_ACTIVITY_TASK_SCHEDULED: 'ActivityTaskScheduled',\n EVENT_TYPE_ACTIVITY_TASK_STARTED: 'ActivityTaskStarted',\n EVENT_TYPE_ACTIVITY_TASK_COMPLETED: 'ActivityTaskCompleted',\n EVENT_TYPE_ACTIVITY_TASK_FAILED: 'ActivityTaskFailed',\n EVENT_TYPE_ACTIVITY_TASK_TIMED_OUT: 'ActivityTaskTimedOut',\n EVENT_TYPE_ACTIVITY_TASK_CANCEL_REQUESTED: 'ActivityTaskCancelRequested',\n EVENT_TYPE_ACTIVITY_TASK_CANCELED: 'ActivityTaskCanceled',\n EVENT_TYPE_TIMER_STARTED: 'TimerStarted',\n EVENT_TYPE_TIMER_FIRED: 'TimerFired',\n EVENT_TYPE_TIMER_CANCELED: 'TimerCanceled',\n EVENT_TYPE_SIGNAL_EXTERNAL_WORKFLOW_EXECUTION_INITIATED: 'SignalExternalWorkflowInitiated',\n EVENT_TYPE_WORKFLOW_EXECUTION_SIGNALED: 'WorkflowExecutionSignaled',\n EVENT_TYPE_START_CHILD_WORKFLOW_EXECUTION_INITIATED: 'StartChildWorkflowInitiated',\n EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_STARTED: 'ChildWorkflowStarted',\n EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_COMPLETED: 'ChildWorkflowCompleted',\n EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_FAILED: 'ChildWorkflowFailed',\n EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_CANCELED: 'ChildWorkflowCanceled',\n EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_TERMINATED: 'ChildWorkflowTerminated',\n EVENT_TYPE_CHILD_WORKFLOW_EXECUTION_TIMED_OUT: 'ChildWorkflowTimedOut',\n};\n\nfunction labelEvent(eventType: string): string {\n return EVENT_TYPE_LABELS[eventType] ?? eventType.replace(/^EVENT_TYPE_/, '');\n}\n\n/** Extract a brief detail string from an event's attributes. */\nfunction eventDetail(event: Record<string, unknown>): string {\n const type = event.eventType as string | undefined;\n if (!type) return '';\n\n // Activity scheduled: show activity type\n if (type === 'EVENT_TYPE_ACTIVITY_TASK_SCHEDULED') {\n const attr = event.activityTaskScheduledEventAttributes as Record<string, unknown> | undefined;\n const actType = attr?.activityType as Record<string, unknown> | undefined;\n if (actType?.name) return ` → ${actType.name}`;\n if (attr?.activityId) return ` id=${attr.activityId}`;\n }\n\n // Activity failed: show error\n if (type === 'EVENT_TYPE_ACTIVITY_TASK_FAILED') {\n const attr = event.activityTaskFailedEventAttributes as Record<string, unknown> | undefined;\n const failure = attr?.failure as Record<string, unknown> | undefined;\n if (failure?.message) return ` ✗ ${failure.message}`;\n }\n\n // Workflow failed\n if (type === 'EVENT_TYPE_WORKFLOW_EXECUTION_FAILED') {\n const attr = event.workflowExecutionFailedEventAttributes as Record<string, unknown> | undefined;\n const failure = attr?.failure as Record<string, unknown> | undefined;\n if (failure?.message) return ` ✗ ${failure.message}`;\n }\n\n // Signal received\n if (type === 'EVENT_TYPE_WORKFLOW_EXECUTION_SIGNALED') {\n const attr = event.workflowExecutionSignaledEventAttributes as Record<string, unknown> | undefined;\n if (attr?.signalName) return ` \"${attr.signalName}\"`;\n }\n\n // Timer\n if (type === 'EVENT_TYPE_TIMER_STARTED') {\n const attr = event.timerStartedEventAttributes as Record<string, unknown> | undefined;\n if (attr?.startToFireTimeout) return ` timeout=${attr.startToFireTimeout}`;\n }\n\n return '';\n}\n\nfunction fmtTime(t: unknown): string {\n if (!t) return '';\n if (typeof t === 'string') return new Date(t).toISOString();\n if (typeof t === 'object') {\n const obj = t as Record<string, unknown>;\n if (obj.seconds) return new Date(Number(obj.seconds) * 1000).toISOString();\n }\n return String(t);\n}\n\nexport async function handleGetWorkflowHistory(\n args: z.infer<typeof getWorkflowHistorySchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const endpoint = args.reverse\n ? `/api/v1/namespaces/${encodeURIComponent(ns)}/workflows/${encodeURIComponent(args.workflow_id)}/history-reverse`\n : `/api/v1/namespaces/${encodeURIComponent(ns)}/workflows/${encodeURIComponent(args.workflow_id)}/history`;\n\n const params: Record<string, string | number | boolean | undefined> = {\n pageSize: args.page_size ?? 50,\n nextPageToken: args.next_page_token,\n };\n if (args.run_id) params['execution.runId'] = args.run_id;\n\n const data = await client.get<Record<string, unknown>>(endpoint, params);\n\n const history = data.history as Record<string, unknown> | undefined;\n const events = (history?.events ?? data.events ?? []) as Record<string, unknown>[];\n\n const lines: string[] = [\n `# Workflow History: ${args.workflow_id}`,\n `${args.reverse ? '(reversed)' : ''} ${events.length} events returned`,\n '',\n ];\n\n for (const event of events) {\n const eventId = event.eventId ?? '?';\n const eventType = String(event.eventType ?? '');\n const time = fmtTime(event.eventTime);\n const detail = eventDetail(event);\n lines.push(`${String(eventId).padStart(4)} ${labelEvent(eventType)}${detail} [${time}]`);\n }\n\n if (data.nextPageToken) {\n lines.push('', `*Next page token: ${data.nextPageToken}*`);\n }\n\n return { content: [{ type: 'text', text: lines.join('\\n') }] };\n}\n","import { z } from 'zod';\nimport type { TemporalClient } from '../client.js';\nimport type { ToolResult } from '../types.js';\n\nexport const scheduleToolDefinitions = [\n {\n name: 'list_schedules',\n description: 'List all schedules in a namespace.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Target namespace.' },\n page_size: { type: 'number', description: 'Max results (default 20).' },\n next_page_token: { type: 'string', description: 'Pagination cursor.' },\n },\n required: [],\n },\n },\n {\n name: 'describe_schedule',\n description: 'Get full details of a specific schedule including spec, actions, state, and upcoming run times.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Namespace containing the schedule.' },\n schedule_id: { type: 'string', description: 'Schedule ID.' },\n },\n required: ['schedule_id'],\n },\n },\n {\n name: 'create_schedule',\n description:\n 'Create a new schedule that starts a workflow on a recurring basis. The schedule_spec uses cron-style spec or interval.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Target namespace.' },\n schedule_id: { type: 'string', description: 'Unique schedule ID.' },\n cron_expression: {\n type: 'string',\n description: 'Cron expression (e.g. \"0 * * * *\" for every hour). Use this OR interval_seconds.',\n },\n interval_seconds: {\n type: 'number',\n description: 'Run interval in seconds (e.g. 3600 for every hour). Use this OR cron_expression.',\n },\n workflow_type: { type: 'string', description: 'Workflow type to start on each trigger.' },\n workflow_id_prefix: {\n type: 'string',\n description: 'Prefix for workflow IDs (schedule ID used if omitted).',\n },\n task_queue: { type: 'string', description: 'Task queue for the triggered workflows.' },\n input: { description: 'Input payload for triggered workflows.' },\n paused: { type: 'boolean', description: 'Create the schedule in a paused state (default false).' },\n notes: { type: 'string', description: 'Human-readable notes.' },\n },\n required: ['schedule_id', 'workflow_type', 'task_queue'],\n },\n },\n {\n name: 'delete_schedule',\n description: 'Delete a schedule. This does not affect any workflow executions already started by the schedule.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Namespace containing the schedule.' },\n schedule_id: { type: 'string', description: 'Schedule ID to delete.' },\n },\n required: ['schedule_id'],\n },\n },\n];\n\nexport const listSchedulesSchema = z.object({\n namespace: z.string().optional(),\n page_size: z.number().optional(),\n next_page_token: z.string().optional(),\n});\n\nexport const describeScheduleSchema = z.object({\n namespace: z.string().optional(),\n schedule_id: z.string(),\n});\n\nexport const createScheduleSchema = z.object({\n namespace: z.string().optional(),\n schedule_id: z.string(),\n cron_expression: z.string().optional(),\n interval_seconds: z.number().optional(),\n workflow_type: z.string(),\n workflow_id_prefix: z.string().optional(),\n task_queue: z.string(),\n input: z.unknown().optional(),\n paused: z.boolean().optional(),\n notes: z.string().optional(),\n});\n\nexport const deleteScheduleSchema = z.object({\n namespace: z.string().optional(),\n schedule_id: z.string(),\n});\n\nexport async function handleListSchedules(\n args: z.infer<typeof listSchedulesSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const data = await client.get<Record<string, unknown>>(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/schedules`,\n { pageSize: args.page_size ?? 20, nextPageToken: args.next_page_token }\n );\n\n const schedules = (data.schedules as Record<string, unknown>[] | undefined) ?? [];\n const lines: string[] = [`# Schedules in \"${ns}\" (${schedules.length} returned)`, ''];\n\n for (const s of schedules) {\n const info = s.info as Record<string, unknown> | undefined;\n lines.push(`## ${s.scheduleId ?? 'unknown'}`);\n if (info?.workflowType) {\n const wt = info.workflowType as Record<string, unknown>;\n lines.push(`- Workflow Type: ${wt.name ?? info.workflowType}`);\n }\n const state = s.state as Record<string, unknown> | undefined;\n if (state?.paused !== undefined) lines.push(`- Paused: ${state.paused}`);\n if (info?.recentActions) {\n const recent = info.recentActions as unknown[];\n lines.push(`- Recent Actions: ${recent.length}`);\n }\n if (info?.futureActionTimes) {\n const times = info.futureActionTimes as string[];\n if (times.length > 0) lines.push(`- Next Run: ${times[0]}`);\n }\n lines.push('');\n }\n\n if (data.nextPageToken) lines.push(`*Next page token: ${data.nextPageToken}*`);\n return {\n content: [{ type: 'text', text: lines.join('\\n') }],\n structuredContent: {\n namespace: ns,\n schedules: schedules.map((s) => {\n const info = s.info as Record<string, unknown> | undefined;\n const state = s.state as Record<string, unknown> | undefined;\n const wt = info?.workflowType as Record<string, unknown> | undefined;\n const future = info?.futureActionTimes as string[] | undefined;\n return {\n scheduleId: s.scheduleId,\n workflowType: wt?.name ?? info?.workflowType,\n paused: state?.paused,\n nextRun: future?.[0] ?? null,\n };\n }),\n nextPageToken: data.nextPageToken,\n },\n };\n}\n\nexport async function handleDescribeSchedule(\n args: z.infer<typeof describeScheduleSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const data = await client.get<Record<string, unknown>>(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/schedules/${encodeURIComponent(args.schedule_id)}`\n );\n\n const schedule = data.schedule as Record<string, unknown> | undefined;\n const spec = schedule?.spec as Record<string, unknown> | undefined;\n const action = schedule?.action as Record<string, unknown> | undefined;\n const state = schedule?.state as Record<string, unknown> | undefined;\n const info = data.info as Record<string, unknown> | undefined;\n\n const lines: string[] = [`# Schedule: ${args.schedule_id}`, ''];\n\n if (state?.paused !== undefined) lines.push(`- Paused: ${state.paused}`);\n if (state?.notes) lines.push(`- Notes: ${state.notes}`);\n\n if (spec) {\n lines.push('', '## Spec');\n const cronStrings = spec.cronString as string[] | undefined;\n if (cronStrings?.length) lines.push(`- Cron: ${cronStrings.join(', ')}`);\n const intervals = spec.interval as unknown[] | undefined;\n if (intervals?.length) {\n intervals.forEach((iv) => {\n const i = iv as Record<string, unknown>;\n lines.push(`- Interval: ${i.interval ?? JSON.stringify(i)}`);\n });\n }\n }\n\n if (action) {\n lines.push('', '## Action');\n const startWorkflow = action.startWorkflow as Record<string, unknown> | undefined;\n if (startWorkflow) {\n const wt = startWorkflow.workflowType as Record<string, unknown> | undefined;\n if (wt?.name) lines.push(`- Workflow Type: ${wt.name}`);\n const tq = startWorkflow.taskQueue as Record<string, unknown> | undefined;\n if (tq?.name) lines.push(`- Task Queue: ${tq.name}`);\n }\n }\n\n if (info) {\n const future = info.futureActionTimes as string[] | undefined;\n if (future?.length) {\n lines.push('', '## Upcoming Runs');\n future.slice(0, 5).forEach((t) => lines.push(`- ${t}`));\n }\n const recent = info.recentActions as Record<string, unknown>[] | undefined;\n if (recent?.length) {\n lines.push('', `## Recent Actions (${recent.length})`);\n recent.slice(0, 5).forEach((a) => {\n lines.push(`- ${a.scheduleTime ?? JSON.stringify(a)}`);\n });\n }\n }\n\n return { content: [{ type: 'text', text: lines.join('\\n') }] };\n}\n\nfunction encodePayload(value: unknown): { metadata: { encoding: string }; data: string } {\n return {\n metadata: { encoding: Buffer.from('json/plain').toString('base64') },\n data: Buffer.from(JSON.stringify(value)).toString('base64'),\n };\n}\n\nexport async function handleCreateSchedule(\n args: z.infer<typeof createScheduleSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n\n const spec: Record<string, unknown> = {};\n if (args.cron_expression) spec.cronString = [args.cron_expression];\n if (args.interval_seconds) spec.interval = [{ interval: `${args.interval_seconds}s` }];\n\n const startWorkflow: Record<string, unknown> = {\n workflowType: { name: args.workflow_type },\n taskQueue: { name: args.task_queue },\n workflowId: `${args.workflow_id_prefix ?? args.schedule_id}-${Date.now()}`,\n };\n if (args.input !== undefined) {\n startWorkflow.input = { payloads: [encodePayload(args.input)] };\n }\n\n const body: Record<string, unknown> = {\n schedule: {\n spec,\n action: { startWorkflow },\n state: {\n paused: args.paused ?? false,\n notes: args.notes ?? '',\n },\n },\n };\n\n await client.post(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/schedules/${encodeURIComponent(args.schedule_id)}`,\n body\n );\n\n return {\n content: [{\n type: 'text',\n text: `Schedule \"${args.schedule_id}\" created in namespace \"${ns}\". Workflow type: ${args.workflow_type}, Task queue: ${args.task_queue}.`,\n }],\n };\n}\n\nexport async function handleDeleteSchedule(\n args: z.infer<typeof deleteScheduleSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n await client.delete(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/schedules/${encodeURIComponent(args.schedule_id)}`\n );\n\n return {\n content: [{\n type: 'text',\n text: `Schedule \"${args.schedule_id}\" deleted from namespace \"${ns}\".`,\n }],\n };\n}\n","import { z } from 'zod';\nimport type { TemporalClient } from '../client.js';\nimport type { ToolResult } from '../types.js';\n\nexport const taskQueueToolDefinitions = [\n {\n name: 'describe_task_queue',\n description:\n 'Get task queue information: active pollers, backlog, and task queue type. Useful for diagnosing worker connectivity issues.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Target namespace.' },\n task_queue: { type: 'string', description: 'Task queue name.' },\n task_queue_type: {\n type: 'string',\n enum: ['WORKFLOW', 'ACTIVITY'],\n description: 'Task queue type. Defaults to WORKFLOW.',\n },\n },\n required: ['task_queue'],\n },\n },\n];\n\nexport const describeTaskQueueSchema = z.object({\n namespace: z.string().optional(),\n task_queue: z.string(),\n task_queue_type: z.enum(['WORKFLOW', 'ACTIVITY']).optional(),\n});\n\nexport async function handleDescribeTaskQueue(\n args: z.infer<typeof describeTaskQueueSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const data = await client.get<Record<string, unknown>>(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/task-queues/${encodeURIComponent(args.task_queue)}`,\n { taskQueueType: args.task_queue_type ?? 'WORKFLOW' }\n );\n\n const lines: string[] = [`# Task Queue: ${args.task_queue}`, ''];\n\n const pollers = (data.pollers as Record<string, unknown>[] | undefined) ?? [];\n lines.push(`- Active Pollers: ${pollers.length}`);\n\n if (pollers.length > 0) {\n lines.push('', '## Pollers');\n for (const poller of pollers) {\n lines.push(`- Identity: ${poller.identity ?? 'unknown'}`);\n if (poller.lastAccessTime) lines.push(` Last Access: ${poller.lastAccessTime}`);\n if (poller.ratePerSecond !== undefined) lines.push(` Rate: ${poller.ratePerSecond} tasks/s`);\n }\n }\n\n const taskIdBlock = data.taskIdBlock as Record<string, unknown> | undefined;\n if (taskIdBlock) {\n lines.push('', '## Task ID Block');\n if (taskIdBlock.startId !== undefined) lines.push(`- Start ID: ${taskIdBlock.startId}`);\n if (taskIdBlock.endId !== undefined) lines.push(`- End ID: ${taskIdBlock.endId}`);\n }\n\n return { content: [{ type: 'text', text: lines.join('\\n') }] };\n}\n","import { z } from 'zod';\nimport type { TemporalClient } from '../client.js';\nimport type { ToolResult } from '../types.js';\n\nexport const searchAttributeToolDefinitions = [\n {\n name: 'list_search_attributes',\n description:\n 'List all custom and system search attributes for a namespace. Search attributes are used in workflow visibility queries.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: {\n type: 'string',\n description: 'Target namespace. Defaults to TEMPORAL_NAMESPACE.',\n },\n },\n required: [],\n },\n },\n];\n\nexport const listSearchAttributesSchema = z.object({\n namespace: z.string().optional(),\n});\n\n/** Mapping from Temporal's IndexedValueType enum values to readable strings. */\nconst VALUE_TYPE_LABELS: Record<string, string> = {\n INDEXED_VALUE_TYPE_TEXT: 'Text',\n INDEXED_VALUE_TYPE_KEYWORD: 'Keyword',\n INDEXED_VALUE_TYPE_INT: 'Int',\n INDEXED_VALUE_TYPE_DOUBLE: 'Double',\n INDEXED_VALUE_TYPE_BOOL: 'Bool',\n INDEXED_VALUE_TYPE_DATETIME: 'Datetime',\n INDEXED_VALUE_TYPE_KEYWORD_LIST: 'KeywordList',\n '1': 'Text', '2': 'Keyword', '3': 'Int', '4': 'Double',\n '5': 'Bool', '6': 'Datetime', '7': 'KeywordList',\n};\n\nfunction labelType(t: string): string {\n return VALUE_TYPE_LABELS[t] ?? t;\n}\n\nexport async function handleListSearchAttributes(\n args: z.infer<typeof listSearchAttributesSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const data = await client.get<Record<string, unknown>>(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/search-attributes`\n );\n\n const custom = data.customAttributes as Record<string, string> | undefined;\n const system = data.systemAttributes as Record<string, string> | undefined;\n\n const lines: string[] = [`# Search Attributes in \"${ns}\"`, ''];\n\n if (custom && Object.keys(custom).length > 0) {\n lines.push('## Custom Attributes');\n for (const [name, type] of Object.entries(custom)) {\n lines.push(`- ${name}: ${labelType(type)}`);\n }\n lines.push('');\n }\n\n if (system && Object.keys(system).length > 0) {\n lines.push('## System Attributes');\n for (const [name, type] of Object.entries(system)) {\n lines.push(`- ${name}: ${labelType(type)}`);\n }\n }\n\n if ((!custom || Object.keys(custom).length === 0) && (!system || Object.keys(system).length === 0)) {\n lines.push('No search attributes found.');\n }\n\n return { content: [{ type: 'text', text: lines.join('\\n') }] };\n}\n","import { z } from 'zod';\nimport type { TemporalClient } from '../client.js';\nimport type { ToolResult } from '../types.js';\n\nexport const activityToolDefinitions = [\n {\n name: 'list_activities',\n description:\n 'List activity executions in a namespace. Use the query parameter to filter by workflow ID, activity type, status, etc.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Target namespace.' },\n query: {\n type: 'string',\n description: 'Visibility query filter (e.g. \"WorkflowId=\\'my-workflow\\' AND ActivityType=\\'SendEmail\\'\").',\n },\n page_size: { type: 'number', description: 'Max results (default 20).' },\n next_page_token: { type: 'string', description: 'Pagination cursor.' },\n },\n required: [],\n },\n },\n {\n name: 'describe_activity',\n description: 'Get details of a specific activity execution: type, status, schedule/start time, heartbeat, and failure info.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Namespace containing the activity.' },\n activity_id: { type: 'string', description: 'Activity ID.' },\n },\n required: ['activity_id'],\n },\n },\n];\n\nexport const listActivitiesSchema = z.object({\n namespace: z.string().optional(),\n query: z.string().optional(),\n page_size: z.number().optional(),\n next_page_token: z.string().optional(),\n});\n\nexport const describeActivitySchema = z.object({\n namespace: z.string().optional(),\n activity_id: z.string(),\n});\n\nfunction fmtTime(t: unknown): string {\n if (!t) return 'N/A';\n if (typeof t === 'string') return new Date(t).toISOString();\n if (typeof t === 'object') {\n const o = t as Record<string, unknown>;\n if (o.seconds) return new Date(Number(o.seconds) * 1000).toISOString();\n }\n return String(t);\n}\n\nexport async function handleListActivities(\n args: z.infer<typeof listActivitiesSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const data = await client.get<Record<string, unknown>>(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/activities`,\n { query: args.query, pageSize: args.page_size ?? 20, nextPageToken: args.next_page_token }\n );\n\n const activities = (data.activityExecutions as Record<string, unknown>[] | undefined) ?? [];\n const lines: string[] = [`# Activities in \"${ns}\" (${activities.length} returned)`, ''];\n\n for (const act of activities) {\n const actType = act.activityType as Record<string, unknown> | undefined;\n const exec = act.execution as Record<string, unknown> | undefined;\n lines.push(`## ${act.activityId ?? 'unknown'}`);\n if (actType?.name) lines.push(`- Type: ${actType.name}`);\n if (exec?.workflowId) lines.push(`- Workflow: ${exec.workflowId}`);\n if (act.state) lines.push(`- State: ${act.state}`);\n if (act.scheduleTime) lines.push(`- Scheduled: ${fmtTime(act.scheduleTime)}`);\n if (act.startTime) lines.push(`- Started: ${fmtTime(act.startTime)}`);\n lines.push('');\n }\n\n if (data.nextPageToken) lines.push(`*Next page token: ${data.nextPageToken}*`);\n return {\n content: [{ type: 'text', text: lines.join('\\n') }],\n structuredContent: {\n namespace: ns,\n activities: activities.map((act) => {\n const actType = act.activityType as Record<string, unknown> | undefined;\n const exec = act.execution as Record<string, unknown> | undefined;\n return {\n activityId: act.activityId,\n type: actType?.name,\n workflowId: exec?.workflowId,\n state: act.state,\n scheduleTime: act.scheduleTime,\n startTime: act.startTime,\n };\n }),\n nextPageToken: data.nextPageToken,\n },\n };\n}\n\nexport async function handleDescribeActivity(\n args: z.infer<typeof describeActivitySchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const data = await client.get<Record<string, unknown>>(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/activities/${encodeURIComponent(args.activity_id)}`\n );\n\n const actType = data.activityType as Record<string, unknown> | undefined;\n const exec = data.execution as Record<string, unknown> | undefined;\n const failure = data.failure as Record<string, unknown> | undefined;\n const heartbeat = data.lastHeartbeatDetails as Record<string, unknown> | undefined;\n\n const lines: string[] = [`# Activity: ${args.activity_id}`, ''];\n if (actType?.name) lines.push(`- Type: ${actType.name}`);\n if (exec?.workflowId) lines.push(`- Workflow: ${exec.workflowId}`);\n if (exec?.runId) lines.push(`- Run ID: ${exec.runId}`);\n if (data.state) lines.push(`- State: ${data.state}`);\n if (data.scheduleTime) lines.push(`- Scheduled: ${fmtTime(data.scheduleTime)}`);\n if (data.startTime) lines.push(`- Started: ${fmtTime(data.startTime)}`);\n if (data.attempt !== undefined) lines.push(`- Attempt: ${data.attempt}`);\n if (data.maxAttempts !== undefined) lines.push(`- Max Attempts: ${data.maxAttempts}`);\n if (heartbeat) lines.push(`- Last Heartbeat: ${JSON.stringify(heartbeat)}`);\n if (failure?.message) {\n lines.push('', '## Failure');\n lines.push(`- Message: ${failure.message}`);\n if (failure.applicationFailureInfo) {\n const info = failure.applicationFailureInfo as Record<string, unknown>;\n if (info.type) lines.push(`- Failure Type: ${info.type}`);\n }\n }\n\n return { content: [{ type: 'text', text: lines.join('\\n') }] };\n}\n","import { z } from 'zod';\nimport type { TemporalClient } from '../client.js';\nimport type { ToolResult } from '../types.js';\n\nexport const batchOperationToolDefinitions = [\n {\n name: 'list_batch_operations',\n description: 'List batch operations (bulk workflow signal/cancel/terminate/delete jobs) in a namespace.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Target namespace.' },\n page_size: { type: 'number', description: 'Max results (default 20).' },\n next_page_token: { type: 'string', description: 'Pagination cursor.' },\n },\n required: [],\n },\n },\n {\n name: 'describe_batch_operation',\n description: 'Get details of a batch operation: type, state, progress, and error info.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Namespace containing the batch operation.' },\n job_id: { type: 'string', description: 'Batch operation job ID.' },\n },\n required: ['job_id'],\n },\n },\n {\n name: 'stop_batch_operation',\n description: 'Stop a running batch operation. The operation will not be rolled back.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Namespace containing the batch operation.' },\n job_id: { type: 'string', description: 'Batch operation job ID to stop.' },\n reason: { type: 'string', description: 'Reason for stopping the operation.' },\n },\n required: ['job_id'],\n },\n },\n];\n\nexport const listBatchOperationsSchema = z.object({\n namespace: z.string().optional(),\n page_size: z.number().optional(),\n next_page_token: z.string().optional(),\n});\n\nexport const describeBatchOperationSchema = z.object({\n namespace: z.string().optional(),\n job_id: z.string(),\n});\n\nexport const stopBatchOperationSchema = z.object({\n namespace: z.string().optional(),\n job_id: z.string(),\n reason: z.string().optional(),\n});\n\nexport async function handleListBatchOperations(\n args: z.infer<typeof listBatchOperationsSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const data = await client.get<Record<string, unknown>>(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/batch-operations`,\n { pageSize: args.page_size ?? 20, nextPageToken: args.next_page_token }\n );\n\n const ops = (data.operationInfo as Record<string, unknown>[] | undefined) ?? [];\n const lines: string[] = [`# Batch Operations in \"${ns}\" (${ops.length} returned)`, ''];\n\n for (const op of ops) {\n lines.push(`## ${op.jobId ?? 'unknown'}`);\n if (op.operationType) lines.push(`- Type: ${op.operationType}`);\n if (op.state) lines.push(`- State: ${op.state}`);\n if (op.startTime) lines.push(`- Started: ${op.startTime}`);\n if (op.closeTime) lines.push(`- Closed: ${op.closeTime}`);\n lines.push('');\n }\n\n if (data.nextPageToken) lines.push(`*Next page token: ${data.nextPageToken}*`);\n return { content: [{ type: 'text', text: lines.join('\\n') }] };\n}\n\nexport async function handleDescribeBatchOperation(\n args: z.infer<typeof describeBatchOperationSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const data = await client.get<Record<string, unknown>>(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/batch-operations/${encodeURIComponent(args.job_id)}`\n );\n\n const lines: string[] = [`# Batch Operation: ${args.job_id}`, ''];\n if (data.operationType) lines.push(`- Type: ${data.operationType}`);\n if (data.state) lines.push(`- State: ${data.state}`);\n if (data.startTime) lines.push(`- Started: ${data.startTime}`);\n if (data.closeTime) lines.push(`- Closed: ${data.closeTime}`);\n if (data.totalOperationCount !== undefined) lines.push(`- Total: ${data.totalOperationCount}`);\n if (data.completeOperationCount !== undefined) lines.push(`- Completed: ${data.completeOperationCount}`);\n if (data.failureOperationCount !== undefined) lines.push(`- Failed: ${data.failureOperationCount}`);\n\n const reason = data.reason as string | undefined;\n if (reason) lines.push(`- Reason: ${reason}`);\n\n return { content: [{ type: 'text', text: lines.join('\\n') }] };\n}\n\nexport async function handleStopBatchOperation(\n args: z.infer<typeof stopBatchOperationSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n await client.post(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/batch-operations/${encodeURIComponent(args.job_id)}/stop`,\n { reason: args.reason ?? '' }\n );\n return {\n content: [{\n type: 'text',\n text: `Batch operation \"${args.job_id}\" stopped${args.reason ? ` (reason: ${args.reason})` : ''}.`,\n }],\n };\n}\n","import { z } from 'zod';\nimport type { TemporalClient } from '../client.js';\nimport type { ToolResult } from '../types.js';\n\nexport const workerDeploymentToolDefinitions = [\n {\n name: 'list_worker_deployments',\n description: 'List worker deployments in a namespace. Worker deployments track versioned worker releases.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Target namespace.' },\n page_size: { type: 'number', description: 'Max results (default 20).' },\n next_page_token: { type: 'string', description: 'Pagination cursor.' },\n },\n required: [],\n },\n },\n {\n name: 'describe_worker_deployment',\n description: 'Get details of a worker deployment: current version, ramping version, routing config, and version summaries.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Namespace containing the deployment.' },\n deployment_name: { type: 'string', description: 'Deployment name.' },\n },\n required: ['deployment_name'],\n },\n },\n];\n\nexport const listWorkerDeploymentsSchema = z.object({\n namespace: z.string().optional(),\n page_size: z.number().optional(),\n next_page_token: z.string().optional(),\n});\n\nexport const describeWorkerDeploymentSchema = z.object({\n namespace: z.string().optional(),\n deployment_name: z.string(),\n});\n\nexport async function handleListWorkerDeployments(\n args: z.infer<typeof listWorkerDeploymentsSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const data = await client.get<Record<string, unknown>>(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/worker-deployments`,\n { pageSize: args.page_size ?? 20, nextPageToken: args.next_page_token }\n );\n\n const deployments = (data.deployments as Record<string, unknown>[] | undefined) ?? [];\n const lines: string[] = [`# Worker Deployments in \"${ns}\" (${deployments.length} returned)`, ''];\n\n for (const dep of deployments) {\n const info = dep.deploymentInfo as Record<string, unknown> | undefined;\n const name = (info?.name ?? dep.name) as string | undefined;\n lines.push(`## ${name ?? 'unknown'}`);\n if (info?.createTime) lines.push(`- Created: ${info.createTime}`);\n const currentVersion = info?.currentVersion as Record<string, unknown> | undefined;\n if (currentVersion?.version) lines.push(`- Current Version: ${currentVersion.version}`);\n const rampingVersion = info?.rampingVersion as Record<string, unknown> | undefined;\n if (rampingVersion?.version) lines.push(`- Ramping Version: ${rampingVersion.version}`);\n lines.push('');\n }\n\n if (data.nextPageToken) lines.push(`*Next page token: ${data.nextPageToken}*`);\n return { content: [{ type: 'text', text: lines.join('\\n') }] };\n}\n\nexport async function handleDescribeWorkerDeployment(\n args: z.infer<typeof describeWorkerDeploymentSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const data = await client.get<Record<string, unknown>>(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/worker-deployments/${encodeURIComponent(args.deployment_name)}`\n );\n\n const dep = data.deploymentInfo as Record<string, unknown> | undefined;\n const lines: string[] = [`# Worker Deployment: ${args.deployment_name}`, ''];\n\n if (dep?.createTime) lines.push(`- Created: ${dep.createTime}`);\n if (dep?.lastModifierIdentity) lines.push(`- Last Modified By: ${dep.lastModifierIdentity}`);\n\n const currentVersion = dep?.currentVersion as Record<string, unknown> | undefined;\n if (currentVersion) {\n lines.push('', '## Current Version');\n if (currentVersion.version) lines.push(`- Version: ${currentVersion.version}`);\n if (currentVersion.becameCurrentTime) lines.push(`- Became Current: ${currentVersion.becameCurrentTime}`);\n }\n\n const rampingVersion = dep?.rampingVersion as Record<string, unknown> | undefined;\n if (rampingVersion) {\n lines.push('', '## Ramping Version');\n if (rampingVersion.version) lines.push(`- Version: ${rampingVersion.version}`);\n if (rampingVersion.rampPercentage !== undefined) lines.push(`- Ramp: ${rampingVersion.rampPercentage}%`);\n }\n\n const versionSummaries = dep?.versionSummaries as Record<string, unknown>[] | undefined;\n if (versionSummaries?.length) {\n lines.push('', `## Version History (${versionSummaries.length})`);\n for (const v of versionSummaries) {\n lines.push(`- ${v.version}: drained=${v.drainageStatus ?? 'N/A'}`);\n }\n }\n\n return { content: [{ type: 'text', text: lines.join('\\n') }] };\n}\n","import { z } from 'zod';\nimport type { TemporalClient } from '../client.js';\nimport type { ToolResult } from '../types.js';\n\nexport const nexusEndpointToolDefinitions = [\n {\n name: 'list_nexus_endpoints',\n description: 'List all Nexus endpoints registered in the cluster. Nexus endpoints connect Temporal namespaces to external services.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n page_size: { type: 'number', description: 'Max results (default 20).' },\n next_page_token: { type: 'string', description: 'Pagination cursor.' },\n },\n required: [],\n },\n },\n {\n name: 'get_nexus_endpoint',\n description: 'Get details of a specific Nexus endpoint by ID.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n id: { type: 'string', description: 'Nexus endpoint ID.' },\n },\n required: ['id'],\n },\n },\n {\n name: 'create_nexus_endpoint',\n description: 'Create a new Nexus endpoint that routes to a target namespace and task queue.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n name: { type: 'string', description: 'Unique endpoint name.' },\n target_namespace: { type: 'string', description: 'Target Temporal namespace.' },\n target_task_queue: { type: 'string', description: 'Target task queue in the target namespace.' },\n description: { type: 'string', description: 'Human-readable description.' },\n },\n required: ['name', 'target_namespace', 'target_task_queue'],\n },\n },\n {\n name: 'delete_nexus_endpoint',\n description: 'Delete a Nexus endpoint by ID.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n id: { type: 'string', description: 'Nexus endpoint ID to delete.' },\n version: { type: 'string', description: 'Current version for optimistic concurrency (required).' },\n },\n required: ['id', 'version'],\n },\n },\n];\n\nexport const listNexusEndpointsSchema = z.object({\n page_size: z.number().optional(),\n next_page_token: z.string().optional(),\n});\n\nexport const getNexusEndpointSchema = z.object({\n id: z.string(),\n});\n\nexport const createNexusEndpointSchema = z.object({\n name: z.string(),\n target_namespace: z.string(),\n target_task_queue: z.string(),\n description: z.string().optional(),\n});\n\nexport const deleteNexusEndpointSchema = z.object({\n id: z.string(),\n version: z.string(),\n});\n\nfunction formatEndpoint(ep: Record<string, unknown>): string[] {\n const lines: string[] = [];\n const spec = ep.spec as Record<string, unknown> | undefined;\n const target = spec?.target as Record<string, unknown> | undefined;\n const worker = target?.worker as Record<string, unknown> | undefined;\n\n lines.push(`- ID: ${ep.id}`);\n if (spec?.name) lines.push(`- Name: ${spec.name}`);\n if (ep.createdTime) lines.push(`- Created: ${ep.createdTime}`);\n if (ep.lastModifiedTime) lines.push(`- Last Modified: ${ep.lastModifiedTime}`);\n if (worker?.namespace) lines.push(`- Target Namespace: ${worker.namespace}`);\n if (worker?.taskQueue) lines.push(`- Target Task Queue: ${worker.taskQueue}`);\n return lines;\n}\n\nexport async function handleListNexusEndpoints(\n args: z.infer<typeof listNexusEndpointsSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const data = await client.get<Record<string, unknown>>(\n '/api/v1/nexus/endpoints',\n { pageSize: args.page_size ?? 20, nextPageToken: args.next_page_token }\n );\n\n const endpoints = (data.endpoints as Record<string, unknown>[] | undefined) ?? [];\n const lines: string[] = [`# Nexus Endpoints (${endpoints.length} returned)`, ''];\n\n for (const ep of endpoints) {\n const spec = ep.spec as Record<string, unknown> | undefined;\n lines.push(`## ${spec?.name ?? ep.id ?? 'unknown'}`);\n lines.push(...formatEndpoint(ep));\n lines.push('');\n }\n\n if (data.nextPageToken) lines.push(`*Next page token: ${data.nextPageToken}*`);\n return { content: [{ type: 'text', text: lines.join('\\n') }] };\n}\n\nexport async function handleGetNexusEndpoint(\n args: z.infer<typeof getNexusEndpointSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const data = await client.get<Record<string, unknown>>(\n `/api/v1/nexus/endpoints/${encodeURIComponent(args.id)}`\n );\n\n const ep = data.endpoint as Record<string, unknown> | undefined ?? data;\n const spec = ep.spec as Record<string, unknown> | undefined;\n const lines: string[] = [`# Nexus Endpoint: ${spec?.name ?? args.id}`, ''];\n lines.push(...formatEndpoint(ep));\n\n return { content: [{ type: 'text', text: lines.join('\\n') }] };\n}\n\nexport async function handleCreateNexusEndpoint(\n args: z.infer<typeof createNexusEndpointSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const body = {\n spec: {\n name: args.name,\n description: args.description ? { value: args.description } : undefined,\n target: {\n worker: {\n namespace: args.target_namespace,\n taskQueue: args.target_task_queue,\n },\n },\n },\n };\n\n const data = await client.post<Record<string, unknown>>('/api/v1/nexus/endpoints', body);\n const ep = data.endpoint as Record<string, unknown> | undefined ?? data;\n\n return {\n content: [{\n type: 'text',\n text: `Nexus endpoint \"${args.name}\" created. ID: ${ep.id ?? 'N/A'}, Target: ${args.target_namespace}/${args.target_task_queue}`,\n }],\n };\n}\n\nexport async function handleDeleteNexusEndpoint(\n args: z.infer<typeof deleteNexusEndpointSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n await client.delete(\n `/api/v1/nexus/endpoints/${encodeURIComponent(args.id)}`,\n { version: args.version }\n );\n return {\n content: [{ type: 'text', text: `Nexus endpoint \"${args.id}\" deleted.` }],\n };\n}\n","import { z } from 'zod';\nimport type { TemporalClient } from '../client.js';\nimport type { ToolResult } from '../types.js';\n\nexport const workflowRuleToolDefinitions = [\n {\n name: 'list_workflow_rules',\n description: 'List workflow rules in a namespace. Workflow rules automatically perform actions (terminate, pause, etc.) on matching workflows.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Target namespace.' },\n },\n required: [],\n },\n },\n {\n name: 'describe_workflow_rule',\n description: 'Get details of a specific workflow rule: spec, action, and status.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Namespace containing the rule.' },\n rule_id: { type: 'string', description: 'Workflow rule ID.' },\n },\n required: ['rule_id'],\n },\n },\n {\n name: 'create_workflow_rule',\n description:\n 'Create a workflow rule that automatically acts on workflows matching a visibility query. Supported actions: TERMINATE, PAUSE.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Target namespace.' },\n rule_id: { type: 'string', description: 'Unique rule ID.' },\n query: {\n type: 'string',\n description: 'Visibility query to match workflows (e.g. \"WorkflowType=\\'OldJob\\' AND ExecutionStatus=\\'Running\\'\").',\n },\n action: {\n type: 'string',\n enum: ['TERMINATE', 'PAUSE'],\n description: 'Action to perform on matching workflows.',\n },\n description: { type: 'string', description: 'Human-readable description of the rule.' },\n },\n required: ['rule_id', 'query', 'action'],\n },\n },\n {\n name: 'delete_workflow_rule',\n description: 'Delete a workflow rule. Workflows already acted on are not affected.',\n inputSchema: {\n type: 'object' as const,\n properties: {\n namespace: { type: 'string', description: 'Namespace containing the rule.' },\n rule_id: { type: 'string', description: 'Rule ID to delete.' },\n },\n required: ['rule_id'],\n },\n },\n];\n\nexport const listWorkflowRulesSchema = z.object({\n namespace: z.string().optional(),\n});\n\nexport const describeWorkflowRuleSchema = z.object({\n namespace: z.string().optional(),\n rule_id: z.string(),\n});\n\nexport const createWorkflowRuleSchema = z.object({\n namespace: z.string().optional(),\n rule_id: z.string(),\n query: z.string(),\n action: z.enum(['TERMINATE', 'PAUSE']),\n description: z.string().optional(),\n});\n\nexport const deleteWorkflowRuleSchema = z.object({\n namespace: z.string().optional(),\n rule_id: z.string(),\n});\n\nfunction formatRule(rule: Record<string, unknown>): string[] {\n const lines: string[] = [];\n const spec = rule.spec as Record<string, unknown> | undefined;\n if (rule.id) lines.push(`- ID: ${rule.id}`);\n if (spec?.visibilityQuery) lines.push(`- Query: ${spec.visibilityQuery}`);\n const action = spec?.action as Record<string, unknown> | undefined;\n if (action) {\n if (action.terminateWorkflow !== undefined) lines.push('- Action: TERMINATE');\n else if (action.pauseWorkflow !== undefined) lines.push('- Action: PAUSE');\n else lines.push(`- Action: ${JSON.stringify(action)}`);\n }\n if (spec?.description) lines.push(`- Description: ${spec.description}`);\n if (rule.createTime) lines.push(`- Created: ${rule.createTime}`);\n return lines;\n}\n\nexport async function handleListWorkflowRules(\n args: z.infer<typeof listWorkflowRulesSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const data = await client.get<Record<string, unknown>>(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/workflow-rules`\n );\n\n const rules = (data.workflowRules as Record<string, unknown>[] | undefined) ?? [];\n const lines: string[] = [`# Workflow Rules in \"${ns}\" (${rules.length} found)`, ''];\n\n for (const rule of rules) {\n const spec = rule.spec as Record<string, unknown> | undefined;\n lines.push(`## ${rule.id ?? 'unknown'}${spec?.description ? ` — ${spec.description}` : ''}`);\n lines.push(...formatRule(rule));\n lines.push('');\n }\n\n if (rules.length === 0) lines.push('No workflow rules found.');\n return { content: [{ type: 'text', text: lines.join('\\n') }] };\n}\n\nexport async function handleDescribeWorkflowRule(\n args: z.infer<typeof describeWorkflowRuleSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n const data = await client.get<Record<string, unknown>>(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/workflow-rules/${encodeURIComponent(args.rule_id)}`\n );\n\n const rule = (data.workflowRule as Record<string, unknown> | undefined) ?? data;\n const spec = rule.spec as Record<string, unknown> | undefined;\n const lines: string[] = [`# Workflow Rule: ${rule.id ?? args.rule_id}${spec?.description ? ` — ${spec.description}` : ''}`, ''];\n lines.push(...formatRule(rule));\n\n return { content: [{ type: 'text', text: lines.join('\\n') }] };\n}\n\nexport async function handleCreateWorkflowRule(\n args: z.infer<typeof createWorkflowRuleSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n\n const action: Record<string, unknown> =\n args.action === 'TERMINATE'\n ? { terminateWorkflow: {} }\n : { pauseWorkflow: {} };\n\n const body = {\n workflowRule: {\n id: args.rule_id,\n spec: {\n visibilityQuery: args.query,\n action,\n description: args.description ?? '',\n },\n },\n };\n\n await client.post(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/workflow-rules`,\n body\n );\n\n return {\n content: [{\n type: 'text',\n text: `Workflow rule \"${args.rule_id}\" created in \"${ns}\". Action: ${args.action}, Query: ${args.query}`,\n }],\n };\n}\n\nexport async function handleDeleteWorkflowRule(\n args: z.infer<typeof deleteWorkflowRuleSchema>,\n client: TemporalClient\n): Promise<ToolResult> {\n const ns = client.ns(args.namespace);\n await client.delete(\n `/api/v1/namespaces/${encodeURIComponent(ns)}/workflow-rules/${encodeURIComponent(args.rule_id)}`\n );\n return {\n content: [{ type: 'text', text: `Workflow rule \"${args.rule_id}\" deleted from namespace \"${ns}\".` }],\n };\n}\n","import { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport {\n CallToolRequestSchema,\n ListToolsRequestSchema,\n} from '@modelcontextprotocol/sdk/types.js';\nimport { z } from 'zod';\n\nimport { createClientFromEnv, TemporalError } from './client.js';\nimport type { ToolResult } from './types.js';\n\n// ── Phase 1 ──────────────────────────────────────────────────────────────────\nimport { clusterToolDefinitions, getClusterInfoSchema, handleGetClusterInfo } from './tools/cluster.js';\nimport {\n namespaceToolDefinitions,\n listNamespacesSchema, describeNamespaceSchema,\n handleListNamespaces, handleDescribeNamespace,\n} from './tools/namespaces.js';\nimport {\n workflowToolDefinitions,\n listWorkflowsSchema, describeWorkflowSchema, startWorkflowSchema,\n signalWorkflowSchema, queryWorkflowSchema, cancelWorkflowSchema, terminateWorkflowSchema,\n countWorkflowsSchema, pauseWorkflowSchema, unpauseWorkflowSchema, signalWithStartWorkflowSchema,\n handleListWorkflows, handleDescribeWorkflow, handleStartWorkflow,\n handleSignalWorkflow, handleQueryWorkflow, handleCancelWorkflow, handleTerminateWorkflow,\n handleCountWorkflows, handlePauseWorkflow, handleUnpauseWorkflow, handleSignalWithStartWorkflow,\n} from './tools/workflows.js';\nimport {\n historyToolDefinitions,\n getWorkflowHistorySchema,\n handleGetWorkflowHistory,\n} from './tools/workflow-history.js';\nimport {\n scheduleToolDefinitions,\n listSchedulesSchema, describeScheduleSchema, createScheduleSchema, deleteScheduleSchema,\n handleListSchedules, handleDescribeSchedule, handleCreateSchedule, handleDeleteSchedule,\n} from './tools/schedules.js';\nimport {\n taskQueueToolDefinitions,\n describeTaskQueueSchema,\n handleDescribeTaskQueue,\n} from './tools/task-queues.js';\nimport {\n searchAttributeToolDefinitions,\n listSearchAttributesSchema,\n handleListSearchAttributes,\n} from './tools/search-attributes.js';\n\n// ── Phase 2 ──────────────────────────────────────────────────────────────────\nimport {\n activityToolDefinitions,\n listActivitiesSchema, describeActivitySchema,\n handleListActivities, handleDescribeActivity,\n} from './tools/activities.js';\nimport {\n batchOperationToolDefinitions,\n listBatchOperationsSchema, describeBatchOperationSchema, stopBatchOperationSchema,\n handleListBatchOperations, handleDescribeBatchOperation, handleStopBatchOperation,\n} from './tools/batch-operations.js';\nimport {\n workerDeploymentToolDefinitions,\n listWorkerDeploymentsSchema, describeWorkerDeploymentSchema,\n handleListWorkerDeployments, handleDescribeWorkerDeployment,\n} from './tools/worker-deployments.js';\nimport {\n nexusEndpointToolDefinitions,\n listNexusEndpointsSchema, getNexusEndpointSchema, createNexusEndpointSchema, deleteNexusEndpointSchema,\n handleListNexusEndpoints, handleGetNexusEndpoint, handleCreateNexusEndpoint, handleDeleteNexusEndpoint,\n} from './tools/nexus-endpoints.js';\nimport {\n workflowRuleToolDefinitions,\n listWorkflowRulesSchema, describeWorkflowRuleSchema, createWorkflowRuleSchema, deleteWorkflowRuleSchema,\n handleListWorkflowRules, handleDescribeWorkflowRule, handleCreateWorkflowRule, handleDeleteWorkflowRule,\n} from './tools/workflow-rules.js';\n\n// ─── Tool tier filtering ──────────────────────────────────────────────────────\n\n/**\n * Core tools for everyday workflow development.\n * Loaded when TEMPORAL_TOOLS=essential (the default).\n * Keeps the LLM context lean — use TEMPORAL_TOOLS=all to expose every tool.\n */\nconst ESSENTIAL_TOOLS = new Set([\n 'get_cluster_info',\n 'list_namespaces',\n 'describe_namespace',\n 'list_workflows',\n 'describe_workflow',\n 'start_workflow',\n 'signal_workflow',\n 'query_workflow',\n 'cancel_workflow',\n 'terminate_workflow',\n 'get_workflow_history',\n]);\n\n/**\n * Extended set for teams actively developing and operating Temporal.\n * Adds count, pause/unpause, signal-with-start, schedules, activities,\n * task queues, and search attributes on top of essential.\n */\nconst STANDARD_TOOLS = new Set([\n ...ESSENTIAL_TOOLS,\n 'count_workflows',\n 'pause_workflow',\n 'unpause_workflow',\n 'signal_with_start_workflow',\n 'list_schedules',\n 'describe_schedule',\n 'create_schedule',\n 'delete_schedule',\n 'list_activities',\n 'describe_activity',\n 'describe_task_queue',\n 'list_search_attributes',\n]);\n\nfunction resolveToolTier(): 'essential' | 'standard' | 'all' {\n const val = (process.env.TEMPORAL_TOOLS ?? 'essential').toLowerCase();\n if (val === 'all') return 'all';\n if (val === 'standard') return 'standard';\n return 'essential';\n}\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\n\n/** Wraps a handler call with error normalisation for MCP error content. */\nasync function runTool(fn: () => Promise<ToolResult>): Promise<ToolResult> {\n try {\n return await fn();\n } catch (err) {\n let message: string;\n if (err instanceof TemporalError) {\n message = `Temporal API error ${err.status}: ${err.message}`;\n } else if (err instanceof Error) {\n message = err.message;\n } else {\n message = String(err);\n }\n return {\n content: [{ type: 'text', text: `Error: ${message}` }],\n isError: true,\n };\n }\n}\n\n/** Parse and validate tool arguments with Zod, returning a typed error on failure. */\nfunction parseArgs<T>(schema: z.ZodType<T>, args: unknown): { ok: true; data: T } | { ok: false; error: ToolResult } {\n const result = schema.safeParse(args);\n if (!result.success) {\n return {\n ok: false,\n error: {\n content: [{ type: 'text', text: `Invalid arguments: ${result.error.message}` }],\n isError: true,\n },\n };\n }\n return { ok: true, data: result.data };\n}\n\n// ─── Server ───────────────────────────────────────────────────────────────────\n\nasync function main(): Promise<void> {\n // Validate configuration at startup — fail fast before connecting to MCP\n const client = createClientFromEnv();\n\n const server = new Server(\n { name: 'temporal-mcp', version: '0.1.0' },\n { capabilities: { tools: {} } }\n );\n\n const tier = resolveToolTier();\n const allToolDefs = [\n // Phase 1\n ...clusterToolDefinitions,\n ...namespaceToolDefinitions,\n ...workflowToolDefinitions,\n ...historyToolDefinitions,\n ...scheduleToolDefinitions,\n ...taskQueueToolDefinitions,\n ...searchAttributeToolDefinitions,\n // Phase 2\n ...activityToolDefinitions,\n ...batchOperationToolDefinitions,\n ...workerDeploymentToolDefinitions,\n ...nexusEndpointToolDefinitions,\n ...workflowRuleToolDefinitions,\n ];\n\n const tools = tier === 'all'\n ? allToolDefs\n : allToolDefs.filter((t) =>\n tier === 'standard' ? STANDARD_TOOLS.has(t.name) : ESSENTIAL_TOOLS.has(t.name)\n );\n\n server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools }));\n\n server.setRequestHandler(CallToolRequestSchema, async (request) => {\n const { name, arguments: args } = request.params;\n\n switch (name) {\n // ── Cluster ──────────────────────────────────────────────────────────\n case 'get_cluster_info': {\n const parsed = parseArgs(getClusterInfoSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleGetClusterInfo(parsed.data, client));\n }\n\n // ── Namespaces ───────────────────────────────────────────────────────\n case 'list_namespaces': {\n const parsed = parseArgs(listNamespacesSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleListNamespaces(parsed.data, client));\n }\n case 'describe_namespace': {\n const parsed = parseArgs(describeNamespaceSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleDescribeNamespace(parsed.data, client));\n }\n\n // ── Workflows ────────────────────────────────────────────────────────\n case 'list_workflows': {\n const parsed = parseArgs(listWorkflowsSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleListWorkflows(parsed.data, client));\n }\n case 'describe_workflow': {\n const parsed = parseArgs(describeWorkflowSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleDescribeWorkflow(parsed.data, client));\n }\n case 'start_workflow': {\n const parsed = parseArgs(startWorkflowSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleStartWorkflow(parsed.data, client));\n }\n case 'signal_workflow': {\n const parsed = parseArgs(signalWorkflowSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleSignalWorkflow(parsed.data, client));\n }\n case 'query_workflow': {\n const parsed = parseArgs(queryWorkflowSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleQueryWorkflow(parsed.data, client));\n }\n case 'cancel_workflow': {\n const parsed = parseArgs(cancelWorkflowSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleCancelWorkflow(parsed.data, client));\n }\n case 'terminate_workflow': {\n const parsed = parseArgs(terminateWorkflowSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleTerminateWorkflow(parsed.data, client));\n }\n\n // ── Workflow control (pause / unpause / count / signal-with-start) ───\n case 'count_workflows': {\n const parsed = parseArgs(countWorkflowsSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleCountWorkflows(parsed.data, client));\n }\n case 'pause_workflow': {\n const parsed = parseArgs(pauseWorkflowSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handlePauseWorkflow(parsed.data, client));\n }\n case 'unpause_workflow': {\n const parsed = parseArgs(unpauseWorkflowSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleUnpauseWorkflow(parsed.data, client));\n }\n case 'signal_with_start_workflow': {\n const parsed = parseArgs(signalWithStartWorkflowSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleSignalWithStartWorkflow(parsed.data, client));\n }\n\n // ── Workflow History ─────────────────────────────────────────────────\n case 'get_workflow_history': {\n const parsed = parseArgs(getWorkflowHistorySchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleGetWorkflowHistory(parsed.data, client));\n }\n\n // ── Schedules ────────────────────────────────────────────────────────\n case 'list_schedules': {\n const parsed = parseArgs(listSchedulesSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleListSchedules(parsed.data, client));\n }\n case 'describe_schedule': {\n const parsed = parseArgs(describeScheduleSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleDescribeSchedule(parsed.data, client));\n }\n case 'create_schedule': {\n const parsed = parseArgs(createScheduleSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleCreateSchedule(parsed.data, client));\n }\n case 'delete_schedule': {\n const parsed = parseArgs(deleteScheduleSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleDeleteSchedule(parsed.data, client));\n }\n\n // ── Task Queues ──────────────────────────────────────────────────────\n case 'describe_task_queue': {\n const parsed = parseArgs(describeTaskQueueSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleDescribeTaskQueue(parsed.data, client));\n }\n\n // ── Search Attributes ────────────────────────────────────────────────\n case 'list_search_attributes': {\n const parsed = parseArgs(listSearchAttributesSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleListSearchAttributes(parsed.data, client));\n }\n\n // ── Activities ───────────────────────────────────────────────────────\n case 'list_activities': {\n const parsed = parseArgs(listActivitiesSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleListActivities(parsed.data, client));\n }\n case 'describe_activity': {\n const parsed = parseArgs(describeActivitySchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleDescribeActivity(parsed.data, client));\n }\n\n // ── Batch Operations ─────────────────────────────────────────────────\n case 'list_batch_operations': {\n const parsed = parseArgs(listBatchOperationsSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleListBatchOperations(parsed.data, client));\n }\n case 'describe_batch_operation': {\n const parsed = parseArgs(describeBatchOperationSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleDescribeBatchOperation(parsed.data, client));\n }\n case 'stop_batch_operation': {\n const parsed = parseArgs(stopBatchOperationSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleStopBatchOperation(parsed.data, client));\n }\n\n // ── Worker Deployments ───────────────────────────────────────────────\n case 'list_worker_deployments': {\n const parsed = parseArgs(listWorkerDeploymentsSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleListWorkerDeployments(parsed.data, client));\n }\n case 'describe_worker_deployment': {\n const parsed = parseArgs(describeWorkerDeploymentSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleDescribeWorkerDeployment(parsed.data, client));\n }\n\n // ── Nexus Endpoints ──────────────────────────────────────────────────\n case 'list_nexus_endpoints': {\n const parsed = parseArgs(listNexusEndpointsSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleListNexusEndpoints(parsed.data, client));\n }\n case 'get_nexus_endpoint': {\n const parsed = parseArgs(getNexusEndpointSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleGetNexusEndpoint(parsed.data, client));\n }\n case 'create_nexus_endpoint': {\n const parsed = parseArgs(createNexusEndpointSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleCreateNexusEndpoint(parsed.data, client));\n }\n case 'delete_nexus_endpoint': {\n const parsed = parseArgs(deleteNexusEndpointSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleDeleteNexusEndpoint(parsed.data, client));\n }\n\n // ── Workflow Rules ───────────────────────────────────────────────────\n case 'list_workflow_rules': {\n const parsed = parseArgs(listWorkflowRulesSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleListWorkflowRules(parsed.data, client));\n }\n case 'describe_workflow_rule': {\n const parsed = parseArgs(describeWorkflowRuleSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleDescribeWorkflowRule(parsed.data, client));\n }\n case 'create_workflow_rule': {\n const parsed = parseArgs(createWorkflowRuleSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleCreateWorkflowRule(parsed.data, client));\n }\n case 'delete_workflow_rule': {\n const parsed = parseArgs(deleteWorkflowRuleSchema, args);\n if (!parsed.ok) return parsed.error;\n return runTool(() => handleDeleteWorkflowRule(parsed.data, client));\n }\n\n default:\n return {\n content: [{ type: 'text', text: `Unknown tool: ${name}` }],\n isError: true,\n };\n }\n });\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n process.stderr.write(`Temporal MCP server started (tools: ${tier}, ${tools.length} loaded)\\n`);\n}\n\nmain().catch((err) => {\n process.stderr.write(`Fatal error: ${err instanceof Error ? err.message : String(err)}\\n`);\n process.exit(1);\n});\n"]}
|
package/mcp.json
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@alisaitteke/temporal-mcp",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "MCP server for the Temporal HTTP API — manage workflows, namespaces, and schedules from any MCP-compatible IDE",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"temporal-mcp": "bin/temporal-mcp.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"bin",
|
|
13
|
+
"README.md",
|
|
14
|
+
"mcp.json"
|
|
15
|
+
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsup",
|
|
18
|
+
"dev": "tsup --watch",
|
|
19
|
+
"test": "vitest run",
|
|
20
|
+
"test:watch": "vitest",
|
|
21
|
+
"typecheck": "tsc --noEmit"
|
|
22
|
+
},
|
|
23
|
+
"engines": {
|
|
24
|
+
"node": ">=18.0.0"
|
|
25
|
+
},
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "https://github.com/alisaitteke/temporal-mcp.git"
|
|
29
|
+
},
|
|
30
|
+
"keywords": [
|
|
31
|
+
"temporal",
|
|
32
|
+
"mcp",
|
|
33
|
+
"model-context-protocol",
|
|
34
|
+
"workflow",
|
|
35
|
+
"cursor",
|
|
36
|
+
"claude"
|
|
37
|
+
],
|
|
38
|
+
"license": "MIT",
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@modelcontextprotocol/sdk": "^1.25.3",
|
|
41
|
+
"zod": "^3.23.8"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/node": "^22.0.0",
|
|
45
|
+
"tsup": "^8.5.1",
|
|
46
|
+
"typescript": "^5.5.0",
|
|
47
|
+
"vitest": "^2.1.0"
|
|
48
|
+
}
|
|
49
|
+
}
|