@burdenoff/mcp-libs 2026.703.3 → 2026.719.1

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.
Files changed (185) hide show
  1. package/dist/{chunk-WWFVD7BO.js → chunk-RHWHUY5Y.js} +3 -3
  2. package/dist/{chunk-WWFVD7BO.js.map → chunk-RHWHUY5Y.js.map} +1 -1
  3. package/dist/{chunk-H2OYWLOA.js → chunk-YOSQUY3M.js} +101 -35
  4. package/dist/chunk-YOSQUY3M.js.map +1 -0
  5. package/dist/core/index.cjs +101 -32
  6. package/dist/core/index.cjs.map +1 -1
  7. package/dist/core/index.d.cts +1 -1
  8. package/dist/core/index.d.ts +1 -1
  9. package/dist/core/index.js +1 -1
  10. package/dist/index.cjs +97 -31
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.d.cts +1 -1
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/modules/adaptercloud/index.cjs +14 -14
  16. package/dist/modules/adaptercloud/index.cjs.map +1 -1
  17. package/dist/modules/adaptercloud/index.js +1 -1
  18. package/dist/modules/artistrybase/index.cjs +14 -14
  19. package/dist/modules/artistrybase/index.cjs.map +1 -1
  20. package/dist/modules/artistrybase/index.js +1 -1
  21. package/dist/modules/assethandler/index.cjs +14 -14
  22. package/dist/modules/assethandler/index.cjs.map +1 -1
  23. package/dist/modules/assethandler/index.js +1 -1
  24. package/dist/modules/atheletebridge/index.cjs +14 -14
  25. package/dist/modules/atheletebridge/index.cjs.map +1 -1
  26. package/dist/modules/atheletebridge/index.js +1 -1
  27. package/dist/modules/auth/index.cjs +14 -14
  28. package/dist/modules/auth/index.cjs.map +1 -1
  29. package/dist/modules/auth/index.js +3 -3
  30. package/dist/modules/billing/index.cjs +14 -14
  31. package/dist/modules/billing/index.cjs.map +1 -1
  32. package/dist/modules/billing/index.js +1 -1
  33. package/dist/modules/brainyrich/index.cjs +14 -14
  34. package/dist/modules/brainyrich/index.cjs.map +1 -1
  35. package/dist/modules/brainyrich/index.js +1 -1
  36. package/dist/modules/buildmyiq/index.cjs +14 -14
  37. package/dist/modules/buildmyiq/index.cjs.map +1 -1
  38. package/dist/modules/buildmyiq/index.js +1 -1
  39. package/dist/modules/channels/index.cjs +14 -14
  40. package/dist/modules/channels/index.cjs.map +1 -1
  41. package/dist/modules/channels/index.js +1 -1
  42. package/dist/modules/collabkin/index.cjs +14 -14
  43. package/dist/modules/collabkin/index.cjs.map +1 -1
  44. package/dist/modules/collabkin/index.js +1 -1
  45. package/dist/modules/comradecircle/index.cjs +14 -14
  46. package/dist/modules/comradecircle/index.cjs.map +1 -1
  47. package/dist/modules/comradecircle/index.js +1 -1
  48. package/dist/modules/conversations/index.cjs +14 -14
  49. package/dist/modules/conversations/index.cjs.map +1 -1
  50. package/dist/modules/conversations/index.js +1 -1
  51. package/dist/modules/coolandlovely/index.cjs +14 -14
  52. package/dist/modules/coolandlovely/index.cjs.map +1 -1
  53. package/dist/modules/coolandlovely/index.js +1 -1
  54. package/dist/modules/cosmicintersection/index.cjs +14 -14
  55. package/dist/modules/cosmicintersection/index.cjs.map +1 -1
  56. package/dist/modules/cosmicintersection/index.js +1 -1
  57. package/dist/modules/crewfoundry/index.cjs +14 -14
  58. package/dist/modules/crewfoundry/index.cjs.map +1 -1
  59. package/dist/modules/crewfoundry/index.js +1 -1
  60. package/dist/modules/devportal/index.cjs +14 -14
  61. package/dist/modules/devportal/index.cjs.map +1 -1
  62. package/dist/modules/devportal/index.js +1 -1
  63. package/dist/modules/ecoimpacthub/index.cjs +14 -14
  64. package/dist/modules/ecoimpacthub/index.cjs.map +1 -1
  65. package/dist/modules/ecoimpacthub/index.js +1 -1
  66. package/dist/modules/eventfullymanaged/index.cjs +14 -14
  67. package/dist/modules/eventfullymanaged/index.cjs.map +1 -1
  68. package/dist/modules/eventfullymanaged/index.js +1 -1
  69. package/dist/modules/export/index.cjs +14 -14
  70. package/dist/modules/export/index.cjs.map +1 -1
  71. package/dist/modules/export/index.js +1 -1
  72. package/dist/modules/files/index.cjs +14 -14
  73. package/dist/modules/files/index.cjs.map +1 -1
  74. package/dist/modules/files/index.js +1 -1
  75. package/dist/modules/ggnomad/index.cjs +14 -14
  76. package/dist/modules/ggnomad/index.cjs.map +1 -1
  77. package/dist/modules/ggnomad/index.js +1 -1
  78. package/dist/modules/govcitizenhub/index.cjs +14 -14
  79. package/dist/modules/govcitizenhub/index.cjs.map +1 -1
  80. package/dist/modules/govcitizenhub/index.js +1 -1
  81. package/dist/modules/groups/index.cjs +14 -14
  82. package/dist/modules/groups/index.cjs.map +1 -1
  83. package/dist/modules/groups/index.js +1 -1
  84. package/dist/modules/headshotmarketing/index.cjs +14 -14
  85. package/dist/modules/headshotmarketing/index.cjs.map +1 -1
  86. package/dist/modules/headshotmarketing/index.js +1 -1
  87. package/dist/modules/health/index.cjs +21 -19
  88. package/dist/modules/health/index.cjs.map +1 -1
  89. package/dist/modules/health/index.js +1 -1
  90. package/dist/modules/hookmovies/index.cjs +14 -14
  91. package/dist/modules/hookmovies/index.cjs.map +1 -1
  92. package/dist/modules/hookmovies/index.js +1 -1
  93. package/dist/modules/housingvista/index.cjs +14 -14
  94. package/dist/modules/housingvista/index.cjs.map +1 -1
  95. package/dist/modules/housingvista/index.js +1 -1
  96. package/dist/modules/integrations/index.cjs +14 -14
  97. package/dist/modules/integrations/index.cjs.map +1 -1
  98. package/dist/modules/integrations/index.js +1 -1
  99. package/dist/modules/intelwatchtower/index.cjs +14 -14
  100. package/dist/modules/intelwatchtower/index.cjs.map +1 -1
  101. package/dist/modules/intelwatchtower/index.js +1 -1
  102. package/dist/modules/kadaikodi/index.cjs +14 -14
  103. package/dist/modules/kadaikodi/index.cjs.map +1 -1
  104. package/dist/modules/kadaikodi/index.js +1 -1
  105. package/dist/modules/labsofscience/index.cjs +14 -14
  106. package/dist/modules/labsofscience/index.cjs.map +1 -1
  107. package/dist/modules/labsofscience/index.js +1 -1
  108. package/dist/modules/manufacturedops/index.cjs +14 -14
  109. package/dist/modules/manufacturedops/index.cjs.map +1 -1
  110. package/dist/modules/manufacturedops/index.js +1 -1
  111. package/dist/modules/movethewheels/index.cjs +14 -14
  112. package/dist/modules/movethewheels/index.cjs.map +1 -1
  113. package/dist/modules/movethewheels/index.js +1 -1
  114. package/dist/modules/mybodyshield/index.cjs +14 -14
  115. package/dist/modules/mybodyshield/index.cjs.map +1 -1
  116. package/dist/modules/mybodyshield/index.js +1 -1
  117. package/dist/modules/notifications/index.cjs +14 -14
  118. package/dist/modules/notifications/index.cjs.map +1 -1
  119. package/dist/modules/notifications/index.js +1 -1
  120. package/dist/modules/organizations/index.cjs +14 -14
  121. package/dist/modules/organizations/index.cjs.map +1 -1
  122. package/dist/modules/organizations/index.js +1 -1
  123. package/dist/modules/planmagnet/index.cjs +14 -14
  124. package/dist/modules/planmagnet/index.cjs.map +1 -1
  125. package/dist/modules/planmagnet/index.js +1 -1
  126. package/dist/modules/products/index.cjs +14 -14
  127. package/dist/modules/products/index.cjs.map +1 -1
  128. package/dist/modules/products/index.js +1 -1
  129. package/dist/modules/proserviceworld/index.cjs +14 -14
  130. package/dist/modules/proserviceworld/index.cjs.map +1 -1
  131. package/dist/modules/proserviceworld/index.js +1 -1
  132. package/dist/modules/rbac/index.cjs +14 -14
  133. package/dist/modules/rbac/index.cjs.map +1 -1
  134. package/dist/modules/rbac/index.js +1 -1
  135. package/dist/modules/sandbox/index.cjs +14 -14
  136. package/dist/modules/sandbox/index.cjs.map +1 -1
  137. package/dist/modules/sandbox/index.js +1 -1
  138. package/dist/modules/scheduler/index.cjs +14 -14
  139. package/dist/modules/scheduler/index.cjs.map +1 -1
  140. package/dist/modules/scheduler/index.js +1 -1
  141. package/dist/modules/security/index.cjs +14 -14
  142. package/dist/modules/security/index.cjs.map +1 -1
  143. package/dist/modules/security/index.js +1 -1
  144. package/dist/modules/semanticfed/index.cjs +14 -14
  145. package/dist/modules/semanticfed/index.cjs.map +1 -1
  146. package/dist/modules/semanticfed/index.js +1 -1
  147. package/dist/modules/store/index.cjs +14 -14
  148. package/dist/modules/store/index.cjs.map +1 -1
  149. package/dist/modules/store/index.js +1 -1
  150. package/dist/modules/subscriberbot/index.cjs +14 -14
  151. package/dist/modules/subscriberbot/index.cjs.map +1 -1
  152. package/dist/modules/subscriberbot/index.js +1 -1
  153. package/dist/modules/support/index.cjs +14 -14
  154. package/dist/modules/support/index.cjs.map +1 -1
  155. package/dist/modules/support/index.js +1 -1
  156. package/dist/modules/tags/index.cjs +14 -14
  157. package/dist/modules/tags/index.cjs.map +1 -1
  158. package/dist/modules/tags/index.js +1 -1
  159. package/dist/modules/technospam/index.cjs +14 -14
  160. package/dist/modules/technospam/index.cjs.map +1 -1
  161. package/dist/modules/technospam/index.js +1 -1
  162. package/dist/modules/theculturepost/index.cjs +14 -14
  163. package/dist/modules/theculturepost/index.cjs.map +1 -1
  164. package/dist/modules/theculturepost/index.js +1 -1
  165. package/dist/modules/theglobalfuel/index.cjs +14 -14
  166. package/dist/modules/theglobalfuel/index.cjs.map +1 -1
  167. package/dist/modules/theglobalfuel/index.js +1 -1
  168. package/dist/modules/timecampus/index.cjs +21 -16
  169. package/dist/modules/timecampus/index.cjs.map +1 -1
  170. package/dist/modules/timecampus/index.js +8 -3
  171. package/dist/modules/timecampus/index.js.map +1 -1
  172. package/dist/modules/tours/index.cjs +14 -14
  173. package/dist/modules/tours/index.cjs.map +1 -1
  174. package/dist/modules/tours/index.js +1 -1
  175. package/dist/modules/vibecontrols/index.cjs +35 -17
  176. package/dist/modules/vibecontrols/index.cjs.map +1 -1
  177. package/dist/modules/vibecontrols/index.js +23 -5
  178. package/dist/modules/vibecontrols/index.js.map +1 -1
  179. package/dist/modules/workspaces/index.cjs +14 -14
  180. package/dist/modules/workspaces/index.cjs.map +1 -1
  181. package/dist/modules/workspaces/index.js +1 -1
  182. package/dist/{tool-name-DlnrBsZ6.d.ts → tool-name-BaPNMZdj.d.ts} +17 -1
  183. package/dist/{tool-name-CQf_IqAj.d.cts → tool-name-Bvb36qmq.d.cts} +17 -1
  184. package/package.json +1 -1
  185. package/dist/chunk-H2OYWLOA.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/errors.ts","../../../src/core/result.ts","../../../src/core/tool-name.ts","../../../src/modules/cosmicintersection/operations.ts","../../../src/modules/cosmicintersection/tools/shared.ts","../../../src/modules/cosmicintersection/tools/sources.ts","../../../src/modules/cosmicintersection/tools/datasets.ts","../../../src/modules/cosmicintersection/tools/collections.ts","../../../src/modules/cosmicintersection/tools/pipelines.ts","../../../src/modules/cosmicintersection/tools/runs.ts","../../../src/modules/cosmicintersection/tools/notebooks.ts","../../../src/modules/cosmicintersection/tools/analyses.ts","../../../src/modules/cosmicintersection/tools/releases.ts","../../../src/modules/cosmicintersection/tools/grants.ts","../../../src/modules/cosmicintersection/tools/health.ts","../../../src/modules/cosmicintersection/resources.ts","../../../src/modules/cosmicintersection/prompts.ts","../../../src/modules/cosmicintersection/index.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Error classes for MCP SDK.\n *\n * Modules MUST throw these instead of throwing raw Errors. The registerTool\n * wrapper in result.ts catches and maps them to MCP-protocol-compliant\n * `{ isError: true, content: [...] }` responses.\n *\n * Throwing past the wrapper to the protocol surfaces as JSON-RPC -32603 to\n * the client and is a protocol bug.\n */\n\nexport class McpUserError extends Error {\n public readonly hint: string | undefined;\n\n constructor(message: string, opts?: { hint?: string }) {\n super(message);\n this.name = 'McpUserError';\n this.hint = opts?.hint;\n }\n}\n\nexport class McpAuthError extends McpUserError {\n constructor(message: string, opts?: { hint?: string }) {\n super(message, {\n hint: opts?.hint ?? 'Run the auth_login tool to authenticate.',\n });\n this.name = 'McpAuthError';\n }\n}\n\nexport class McpInternalError extends Error {\n public override readonly cause: unknown;\n\n constructor(message: string, cause?: unknown) {\n super(message);\n this.name = 'McpInternalError';\n this.cause = cause;\n }\n}\n","/**\n * MCP tool result helpers + central handler.\n *\n * Modules NEVER call server.registerTool directly — they use registerTool()\n * from this module so the central try/catch wraps the handler and:\n * - maps thrown McpUserError / McpAuthError / McpInternalError to\n * MCP-protocol-compliant `{ isError: true, content: [...] }` shapes\n * - threads `_meta.progressToken` into ctx.progress for long ops\n * - emits a structured log line on every error\n * - never leaks `cause` from McpInternalError to the client\n *\n * This is the analog of cli-sdk's createProgram() central error handler.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { ZodRawShape } from 'zod';\nimport type { McpContext } from './context.js';\nimport { McpAuthError, McpInternalError, McpUserError } from './errors.js';\n\nexport interface ToolTextContent {\n type: 'text';\n text: string;\n [k: string]: unknown;\n}\n\nexport interface ToolResult {\n content: ToolTextContent[];\n isError?: boolean;\n structuredContent?: Record<string, unknown>;\n [k: string]: unknown;\n}\n\nexport interface ToolMeta {\n progressToken?: string | number;\n}\n\n/**\n * Build a successful tool result with JSON content (pretty-printed).\n */\nexport function jsonResult(data: unknown, structured?: Record<string, unknown>): ToolResult {\n const result: ToolResult = {\n content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],\n };\n if (structured !== undefined) {\n result.structuredContent = structured;\n }\n return result;\n}\n\n/**\n * Build a successful tool result with plain text content.\n */\nexport function textResult(text: string): ToolResult {\n return { content: [{ type: 'text', text }] };\n}\n\n/**\n * Build an error tool result. Honors MCP's `{ isError: true, content }` shape.\n * Optional hint is appended on a new line so the LLM can react.\n */\nexport function errorResult(message: string, hint?: string): ToolResult {\n const text = hint ? `${message}\\n\\nHint: ${hint}` : message;\n return { content: [{ type: 'text', text }], isError: true };\n}\n\nexport interface ToolMetadata {\n title: string;\n description: string;\n inputSchema?: ZodRawShape;\n}\n\nexport type ToolHandler<TArgs = Record<string, unknown>> = (\n args: TArgs,\n ctx: McpContext,\n meta: ToolMeta,\n) => Promise<unknown>;\n\n/**\n * Register a tool with the central error wrapper.\n *\n * The handler returns a plain value or void. The wrapper:\n * - wraps non-undefined returns in jsonResult()\n * - if the value already looks like a ToolResult (has `content`), passes through\n * - catches McpAuthError / McpUserError / McpInternalError / generic Error\n * - logs every error via ctx.logger.error\n */\nexport function registerTool<TArgs extends Record<string, unknown>>(\n server: McpServer,\n ctx: McpContext,\n name: string,\n metadata: ToolMetadata,\n handler: ToolHandler<TArgs>,\n): void {\n const sdkConfig = {\n title: metadata.title,\n description: metadata.description,\n ...(metadata.inputSchema ? { inputSchema: metadata.inputSchema } : {}),\n };\n\n // The MCP SDK's registerTool signature is `(name, config, handler)`. The\n // handler arity depends on whether inputSchema is present (1-arg without,\n // 2-arg with). We accept a unified handler shape and dispatch at runtime.\n // The SDK's typing is strict and conditional on the inputSchema generic;\n // bypass with a cast since runtime acceptance is unconditional.\n const wrapped = async (...callbackArgs: unknown[]): Promise<ToolResult> => {\n const hasArgs = callbackArgs.length === 2;\n const args = (hasArgs ? callbackArgs[0] : {}) as TArgs;\n const extra = (hasArgs ? callbackArgs[1] : callbackArgs[0]) as\n | { _meta?: { progressToken?: string | number } }\n | undefined;\n\n const progressToken = extra?._meta?.progressToken;\n const meta: ToolMeta = progressToken !== undefined ? { progressToken } : {};\n\n try {\n const result = await handler(args, ctx, meta);\n if (isToolResult(result)) return result;\n if (result === undefined) return textResult('OK');\n return jsonResult(result);\n } catch (error) {\n return mapErrorToResult(error, ctx, name);\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (server as any).registerTool(name, sdkConfig, wrapped);\n}\n\nfunction isToolResult(value: unknown): value is ToolResult {\n return (\n !!value &&\n typeof value === 'object' &&\n 'content' in value &&\n Array.isArray((value as ToolResult).content)\n );\n}\n\nfunction mapErrorToResult(error: unknown, ctx: McpContext, toolName: string): ToolResult {\n if (error instanceof McpAuthError) {\n ctx.logger.warn(`${toolName}: auth required`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpUserError) {\n ctx.logger.info(`${toolName}: user error`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpInternalError) {\n ctx.logger.error(`${toolName}: internal error`, {\n message: error.message,\n cause: stringifyCause(error.cause),\n });\n return errorResult(`Internal error in ${toolName}.`);\n }\n const message = error instanceof Error ? error.message : String(error);\n ctx.logger.error(`${toolName}: unhandled error`, { message });\n return errorResult(`${toolName}: ${message}`);\n}\n\nfunction stringifyCause(cause: unknown): string | undefined {\n if (cause === undefined || cause === null) return undefined;\n if (cause instanceof Error) return cause.message;\n try {\n return JSON.stringify(cause);\n } catch {\n return String(cause);\n }\n}\n","/**\n * Tool / resource / prompt naming helpers.\n *\n * Mandatory product prefix avoids collisions when Claude Desktop runs\n * multiple MCP servers concurrently (typical setup is ~6).\n *\n * Tool names are capped at 63 characters — Claude Desktop pre-1.x\n * truncated at 64 in some versions.\n */\n\nimport { McpInternalError } from './errors.js';\n\nconst MAX_TOOL_NAME_LENGTH = 63;\n\nfunction assertSafeName(name: string, kind: 'tool' | 'resource' | 'prompt'): string {\n if (kind === 'tool' && name.length > MAX_TOOL_NAME_LENGTH) {\n throw new McpInternalError(\n `Tool name '${name}' exceeds ${MAX_TOOL_NAME_LENGTH} characters (some MCP clients truncate at 64).`,\n );\n }\n return name;\n}\n\n/**\n * Build a tool name. Format: `<productName>_<...parts>` (snake_case).\n * Example: mcpToolName('vibecontrols', 'vibes', 'list') -> 'vibecontrols_vibes_list'\n */\nexport function mcpToolName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpToolName: productName is required');\n }\n const name = [productName, ...parts].filter(Boolean).join('_');\n return assertSafeName(name, 'tool');\n}\n\n/**\n * Build a resource URI. Format: `<productName>://<...parts>`.\n * Example: mcpResourceUri('vibecontrols', 'schema') -> 'vibecontrols://schema'\n */\nexport function mcpResourceUri(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpResourceUri: productName is required');\n }\n return `${productName}://${parts.filter(Boolean).join('/')}`;\n}\n\n/**\n * Build a prompt name. Format: `<productName>-<...parts>` (kebab-case).\n * Example: mcpPromptName('vibecontrols', 'setup') -> 'vibecontrols-setup'\n */\nexport function mcpPromptName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpPromptName: productName is required');\n }\n return [productName, ...parts].filter(Boolean).join('-');\n}\n\nexport const TOOL_NAME_LIMIT = MAX_TOOL_NAME_LENGTH;\n","/**\n * Centralized GraphQL operations for the Cosmicintersection MCP module.\n *\n * Cosmicintersection is the unified data platform for space & science\n * (future-products ecosystem) — data sources & connectors, the dataset catalog\n * (with schema / provenance), processing pipelines & runs (with captured\n * lineage), and reproducible research collaboration (notebooks, analyses,\n * citable releases, access grants). Backend subgraph:\n * ~/products/cosmicintersection/wspace-cosmicintersection-svc/ (Hive service\n * name `cosmicintersection`).\n *\n * All operations run against the WORKSPACE gateway. Workspace scoping is carried\n * by the gateway headers (x-workspace-id / X-Workspace-Authorization) issued by\n * the auth module — Cosmicintersection inputs do NOT carry a workspaceId.\n *\n * Every product-owned root field is prefixed `cos` and every type/enum/input is\n * prefixed `Cos` (the workspaces supergraph naming contract). List queries that\n * return a `*Connection` carry `{ items, pageInfo { cursor hasMore } }` and take\n * a `PaginationInput { cursor, limit, offset }`; the rest return plain arrays.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical vibecontrols / kadaikodi modules' operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments (mirror the backend object types)\n// ---------------------------------------------------------------------------\n\nexport const SOURCE_FIELDS = `\n id name description type status endpoint config tags\n lastSyncedAt createdAt updatedAt workspaceId\n`;\n\nexport const DATASET_FIELDS = `\n id name description status accessLevel format collectionId sourceId\n coverage rowCount sizeBytes version ingestedAt lineageCaptured tags\n createdAt updatedAt workspaceId\n`;\n\nexport const SCHEMA_FIELD_FIELDS = `\n id datasetId name fieldType description nullable position provenance unit\n createdAt updatedAt workspaceId\n`;\n\nexport const COLLECTION_FIELDS = `\n id name slug description isPublic tags createdAt updatedAt workspaceId\n`;\n\nexport const PIPELINE_FIELDS = `\n id name description status trigger schedule definition version lastRunAt\n tags createdAt updatedAt workspaceId\n`;\n\nexport const STEP_FIELDS = `\n id runId name kind status position inputs outputs logsRef durationMs\n startedAt finishedAt errorMessage createdAt updatedAt workspaceId\n`;\n\nexport const RUN_FIELDS = `\n id pipelineId runNumber status params metrics datasetId triggeredBy\n durationMs startedAt finishedAt errorMessage createdAt updatedAt workspaceId\n`;\n\nexport const NOTEBOOK_FIELDS = `\n id title description status runtime environment datasetIds isShared\n shareSlug tags createdAt updatedAt workspaceId\n`;\n\nexport const ANALYSIS_FIELDS = `\n id title status method aiAssisted datasetId notebookId results\n errorMessage startedAt finishedAt createdAt updatedAt workspaceId\n`;\n\nexport const RELEASE_FIELDS = `\n id title version status abstract authors license doi datasetIds\n notebookId publishedAt createdAt updatedAt workspaceId\n`;\n\nexport const GRANT_FIELDS = `\n id datasetId granteeId status scopes reason grantedAt expiresAt\n revokedAt createdAt updatedAt workspaceId\n`;\n\n// ---------------------------------------------------------------------------\n// Sources\n// ---------------------------------------------------------------------------\n\nexport const GET_SOURCE = `\n query CosmicintersectionGetSource($id: ID!) {\n cosSource(id: $id) {\n ${SOURCE_FIELDS}\n datasets { id name status accessLevel }\n }\n }\n`;\n\nexport const LIST_SOURCES = `\n query CosmicintersectionListSources(\n $status: CosSourceStatus\n $type: CosSourceType\n $pagination: PaginationInput\n ) {\n cosListSources(status: $status, type: $type, pagination: $pagination) {\n items { ${SOURCE_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_SOURCE = `\n mutation CosmicintersectionCreateSource($input: CosCreateSourceInput!) {\n cosCreateSource(input: $input) {\n ${SOURCE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_SOURCE = `\n mutation CosmicintersectionUpdateSource($id: ID!, $input: CosUpdateSourceInput!) {\n cosUpdateSource(id: $id, input: $input) {\n ${SOURCE_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_SOURCE = `\n mutation CosmicintersectionArchiveSource($id: ID!) {\n cosArchiveSource(id: $id)\n }\n`;\n\nexport const MARK_SOURCE_SYNCED = `\n mutation CosmicintersectionMarkSourceSynced($id: ID!) {\n cosMarkSourceSynced(id: $id) {\n ${SOURCE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Datasets + schema fields\n// ---------------------------------------------------------------------------\n\nexport const GET_DATASET = `\n query CosmicintersectionGetDataset($id: ID!) {\n cosDataset(id: $id) {\n ${DATASET_FIELDS}\n collection { id name slug }\n source { id name type status }\n schemaFields { ${SCHEMA_FIELD_FIELDS} }\n }\n }\n`;\n\nexport const LIST_DATASETS = `\n query CosmicintersectionListDatasets(\n $collectionId: ID\n $sourceId: ID\n $status: CosDatasetStatus\n $pagination: PaginationInput\n ) {\n cosListDatasets(\n collectionId: $collectionId\n sourceId: $sourceId\n status: $status\n pagination: $pagination\n ) {\n items { ${DATASET_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_DATASET = `\n mutation CosmicintersectionCreateDataset($input: CosCreateDatasetInput!) {\n cosCreateDataset(input: $input) {\n ${DATASET_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_DATASET = `\n mutation CosmicintersectionUpdateDataset($id: ID!, $input: CosUpdateDatasetInput!) {\n cosUpdateDataset(id: $id, input: $input) {\n ${DATASET_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_DATASET = `\n mutation CosmicintersectionArchiveDataset($id: ID!) {\n cosArchiveDataset(id: $id)\n }\n`;\n\nexport const PUBLISH_DATASET = `\n mutation CosmicintersectionPublishDataset($id: ID!) {\n cosPublishDataset(id: $id) {\n ${DATASET_FIELDS}\n }\n }\n`;\n\nexport const LIST_SCHEMA_FIELDS = `\n query CosmicintersectionListSchemaFields($datasetId: ID!) {\n cosListSchemaFields(datasetId: $datasetId) {\n ${SCHEMA_FIELD_FIELDS}\n }\n }\n`;\n\nexport const ADD_SCHEMA_FIELD = `\n mutation CosmicintersectionAddSchemaField($input: CosAddSchemaFieldInput!) {\n cosAddSchemaField(input: $input) {\n ${SCHEMA_FIELD_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Collections\n// ---------------------------------------------------------------------------\n\nexport const LIST_COLLECTIONS = `\n query CosmicintersectionListCollections {\n cosListCollections {\n ${COLLECTION_FIELDS}\n datasets { id name status accessLevel }\n }\n }\n`;\n\nexport const CREATE_COLLECTION = `\n mutation CosmicintersectionCreateCollection($input: CosCreateCollectionInput!) {\n cosCreateCollection(input: $input) {\n ${COLLECTION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Pipelines\n// ---------------------------------------------------------------------------\n\nexport const GET_PIPELINE = `\n query CosmicintersectionGetPipeline($id: ID!) {\n cosPipeline(id: $id) {\n ${PIPELINE_FIELDS}\n runs { id runNumber status startedAt finishedAt }\n }\n }\n`;\n\nexport const LIST_PIPELINES = `\n query CosmicintersectionListPipelines(\n $status: CosPipelineStatus\n $pagination: PaginationInput\n ) {\n cosListPipelines(status: $status, pagination: $pagination) {\n items { ${PIPELINE_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_PIPELINE = `\n mutation CosmicintersectionCreatePipeline($input: CosCreatePipelineInput!) {\n cosCreatePipeline(input: $input) {\n ${PIPELINE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_PIPELINE = `\n mutation CosmicintersectionUpdatePipeline($id: ID!, $input: CosUpdatePipelineInput!) {\n cosUpdatePipeline(id: $id, input: $input) {\n ${PIPELINE_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_PIPELINE = `\n mutation CosmicintersectionArchivePipeline($id: ID!) {\n cosArchivePipeline(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Runs + steps\n// ---------------------------------------------------------------------------\n\nexport const GET_RUN = `\n query CosmicintersectionGetRun($id: ID!) {\n cosRun(id: $id) {\n ${RUN_FIELDS}\n pipeline { id name status }\n steps { ${STEP_FIELDS} }\n }\n }\n`;\n\nexport const LIST_RUNS = `\n query CosmicintersectionListRuns(\n $pipelineId: ID\n $status: CosRunStatus\n $pagination: PaginationInput\n ) {\n cosListRuns(pipelineId: $pipelineId, status: $status, pagination: $pagination) {\n items { ${RUN_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const START_RUN = `\n mutation CosmicintersectionStartRun($input: CosStartRunInput!) {\n cosStartRun(input: $input) {\n ${RUN_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_RUN = `\n mutation CosmicintersectionTransitionRun($id: ID!, $status: CosRunStatus!) {\n cosTransitionRun(id: $id, status: $status) {\n ${RUN_FIELDS}\n }\n }\n`;\n\nexport const LIST_RUN_STEPS = `\n query CosmicintersectionListRunSteps($runId: ID!) {\n cosListRunSteps(runId: $runId) {\n ${STEP_FIELDS}\n }\n }\n`;\n\nexport const ADD_RUN_STEP = `\n mutation CosmicintersectionAddRunStep($input: CosAddRunStepInput!) {\n cosAddRunStep(input: $input) {\n ${STEP_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Notebooks\n// ---------------------------------------------------------------------------\n\nexport const GET_NOTEBOOK = `\n query CosmicintersectionGetNotebook($id: ID!) {\n cosNotebook(id: $id) {\n ${NOTEBOOK_FIELDS}\n analyses { ${ANALYSIS_FIELDS} }\n releases { id title version status }\n }\n }\n`;\n\nexport const LIST_NOTEBOOKS = `\n query CosmicintersectionListNotebooks(\n $status: CosNotebookStatus\n $pagination: PaginationInput\n ) {\n cosListNotebooks(status: $status, pagination: $pagination) {\n items { ${NOTEBOOK_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_NOTEBOOK = `\n mutation CosmicintersectionCreateNotebook($input: CosCreateNotebookInput!) {\n cosCreateNotebook(input: $input) {\n ${NOTEBOOK_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_NOTEBOOK = `\n mutation CosmicintersectionUpdateNotebook($id: ID!, $input: CosUpdateNotebookInput!) {\n cosUpdateNotebook(id: $id, input: $input) {\n ${NOTEBOOK_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_NOTEBOOK = `\n mutation CosmicintersectionArchiveNotebook($id: ID!) {\n cosArchiveNotebook(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Analyses\n// ---------------------------------------------------------------------------\n\nexport const LIST_ANALYSES = `\n query CosmicintersectionListAnalyses(\n $datasetId: ID\n $notebookId: ID\n $status: CosAnalysisStatus\n ) {\n cosListAnalyses(datasetId: $datasetId, notebookId: $notebookId, status: $status) {\n ${ANALYSIS_FIELDS}\n }\n }\n`;\n\nexport const RUN_ANALYSIS = `\n mutation CosmicintersectionRunAnalysis($input: CosRunAnalysisInput!) {\n cosRunAnalysis(input: $input) {\n ${ANALYSIS_FIELDS}\n }\n }\n`;\n\nexport const COMPLETE_ANALYSIS = `\n mutation CosmicintersectionCompleteAnalysis(\n $id: ID!\n $status: CosAnalysisStatus!\n $results: JSON\n $outputFileId: ID\n ) {\n cosCompleteAnalysis(\n id: $id\n status: $status\n results: $results\n outputFileId: $outputFileId\n ) {\n ${ANALYSIS_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Releases\n// ---------------------------------------------------------------------------\n\nexport const LIST_RELEASES = `\n query CosmicintersectionListReleases(\n $status: CosReleaseStatus\n $pagination: PaginationInput\n ) {\n cosListReleases(status: $status, pagination: $pagination) {\n items { ${RELEASE_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_RELEASE = `\n mutation CosmicintersectionCreateRelease($input: CosCreateReleaseInput!) {\n cosCreateRelease(input: $input) {\n ${RELEASE_FIELDS}\n }\n }\n`;\n\nexport const PUBLISH_RELEASE = `\n mutation CosmicintersectionPublishRelease($id: ID!, $doi: String) {\n cosPublishRelease(id: $id, doi: $doi) {\n ${RELEASE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Access grants\n// ---------------------------------------------------------------------------\n\nexport const LIST_ACCESS_GRANTS = `\n query CosmicintersectionListAccessGrants($datasetId: ID, $status: CosGrantStatus) {\n cosListAccessGrants(datasetId: $datasetId, status: $status) {\n ${GRANT_FIELDS}\n }\n }\n`;\n\nexport const GRANT_ACCESS = `\n mutation CosmicintersectionGrantAccess($input: CosGrantAccessInput!) {\n cosGrantAccess(input: $input) {\n ${GRANT_FIELDS}\n }\n }\n`;\n\nexport const REVOKE_ACCESS = `\n mutation CosmicintersectionRevokeAccess($id: ID!) {\n cosRevokeAccess(id: $id) {\n ${GRANT_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query CosmicintersectionHealth {\n cosHealth\n }\n`;\n","/**\n * Shared zod schemas for the Cosmicintersection tool surface.\n *\n * Every backend enum (each `Cos*` enum in\n * wspace-cosmicintersection-svc/.hive-schema.graphql) is mirrored as a tight\n * zod enum so Claude Desktop grounds tool calls against the exact allowed\n * values. JSON scalar inputs (config, coverage, definition, params, metrics,\n * inputs, outputs, environment, results) are modelled as permissive object\n * records — the backend accepts arbitrary JSON, but a record shape gives the\n * LLM a typed hint.\n */\n\nimport { z } from 'zod';\n\nexport const CosSourceTypeEnum = z\n .enum([\n 'API',\n 'ARCHIVE',\n 'FILE_DROP',\n 'GROUND_SENSOR',\n 'SATELLITE',\n 'SIMULATION',\n 'STREAM',\n 'TELESCOPE',\n ])\n .describe('Kind of upstream data source / connector');\n\nexport const CosSourceStatusEnum = z\n .enum(['CONFIGURING', 'CONNECTED', 'DEGRADED', 'DISABLED', 'ERROR', 'SYNCING'])\n .describe('Lifecycle/connectivity status of a source');\n\nexport const CosDatasetStatusEnum = z\n .enum(['ARCHIVED', 'AVAILABLE', 'DEPRECATED', 'DRAFT', 'INGESTING'])\n .describe('Lifecycle status of a dataset');\n\nexport const CosAccessLevelEnum = z\n .enum(['EMBARGOED', 'PUBLIC', 'RESTRICTED', 'WORKSPACE'])\n .describe('Visibility/access level of a dataset');\n\nexport const CosFieldTypeEnum = z\n .enum([\n 'BOOLEAN',\n 'COORDINATE',\n 'FLOAT',\n 'GEOMETRY',\n 'IMAGE_REF',\n 'INTEGER',\n 'JSON',\n 'SPECTRUM',\n 'STRING',\n 'TIMESTAMP',\n ])\n .describe('Logical type of a dataset schema field');\n\nexport const CosPipelineStatusEnum = z\n .enum(['ACTIVE', 'ARCHIVED', 'DRAFT', 'PAUSED'])\n .describe('Lifecycle status of a processing pipeline');\n\nexport const CosPipelineTriggerEnum = z\n .enum(['MANUAL', 'ON_INGEST', 'SCHEDULED', 'WEBHOOK'])\n .describe('How a pipeline is triggered');\n\nexport const CosRunStatusEnum = z\n .enum(['CANCELLED', 'FAILED', 'QUEUED', 'RUNNING', 'SUCCEEDED'])\n .describe('Lifecycle status of a pipeline run or step');\n\nexport const CosStepKindEnum = z\n .enum(['ANALYZE', 'CALIBRATE', 'EXPORT', 'INGEST', 'NOTIFY', 'TRANSFORM'])\n .describe('Kind of work a run step performs');\n\nexport const CosNotebookStatusEnum = z\n .enum(['ARCHIVED', 'DRAFT', 'PUBLISHED', 'RUNNING'])\n .describe('Lifecycle status of a research notebook');\n\nexport const CosAnalysisStatusEnum = z\n .enum(['COMPLETED', 'FAILED', 'PENDING', 'RUNNING'])\n .describe('Lifecycle status of an analysis run');\n\nexport const CosReleaseStatusEnum = z\n .enum(['DRAFT', 'PUBLISHED', 'RETRACTED', 'UNDER_REVIEW'])\n .describe('Lifecycle status of a citable release');\n\nexport const CosGrantStatusEnum = z\n .enum(['ACTIVE', 'EXPIRED', 'PENDING', 'REVOKED'])\n .describe('Status of a dataset access grant');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs. */\nexport const JsonObject = z.record(z.string(), z.unknown());\n","/**\n * Cosmicintersection source tools — data sources & connectors CRUD + lifecycle.\n *\n * Surface (6): sources_{get,list,create,update,archive,mark_synced}.\n * Backed by the real root fields cosSource / cosListSources / cosCreateSource /\n * cosUpdateSource / cosArchiveSource / cosMarkSourceSynced.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CosSourceTypeEnum, CosSourceStatusEnum, JsonObject } from './shared.js';\n\nexport function registerSourceTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_get')),\n {\n title: 'Get Source',\n description:\n 'Fetch a single Cosmicintersection data source by ID, including the datasets ingested from it.',\n inputSchema: { id: z.string().describe('Source ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosSource: Record<string, unknown> | null;\n }>(ops.GET_SOURCE, { id });\n if (!data.cosSource) return errorResult(`Source ${id} not found`);\n return jsonResult(data.cosSource);\n } catch (error) {\n ctx.logger.error('cosmicintersection sources_get failed', { error: String(error) });\n return errorResult(\n `Failed to get source: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_list')),\n {\n title: 'List Sources',\n description:\n 'List data sources in the bound workspace with optional type/status filters and pagination (returns a connection: { items, pageInfo }).',\n inputSchema: {\n type: CosSourceTypeEnum.optional().describe('Filter by source type'),\n status: CosSourceStatusEnum.optional().describe('Filter by connectivity status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ type, status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n cosListSources: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_SOURCES, {\n type,\n status,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.cosListSources);\n } catch (error) {\n ctx.logger.error('cosmicintersection sources_list failed', { error: String(error) });\n return errorResult(\n `Failed to list sources: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_create')),\n {\n title: 'Create Source',\n description:\n 'Register a new data source / connector. Defaults: type=ARCHIVE, status=CONFIGURING.',\n inputSchema: {\n name: z.string().min(1).describe('Source display name'),\n type: CosSourceTypeEnum.optional().describe('Source type (default ARCHIVE)'),\n status: CosSourceStatusEnum.optional().describe('Initial status (default CONFIGURING)'),\n description: z.string().optional().describe('Source description'),\n endpoint: z.string().optional().describe('Connection endpoint / URL'),\n credentialRef: z.string().optional().describe('Reference to a stored credential'),\n config: JsonObject.optional().describe('Connector configuration JSON'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({ name, type, status, description, endpoint, credentialRef, config, tags }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (type !== undefined) input.type = type;\n if (status !== undefined) input.status = status;\n if (description !== undefined) input.description = description;\n if (endpoint !== undefined) input.endpoint = endpoint;\n if (credentialRef !== undefined) input.credentialRef = credentialRef;\n if (config !== undefined) input.config = config;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cosCreateSource: Record<string, unknown>;\n }>(ops.CREATE_SOURCE, { input });\n return jsonResult(data.cosCreateSource);\n } catch (error) {\n ctx.logger.error('cosmicintersection sources_create failed', { error: String(error) });\n return errorResult(\n `Failed to create source: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_update')),\n {\n title: 'Update Source',\n description: 'Update a data source. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Source ID'),\n name: z.string().optional().describe('Updated display name'),\n type: CosSourceTypeEnum.optional().describe('Updated source type'),\n status: CosSourceStatusEnum.optional().describe('Updated status'),\n description: z.string().optional().describe('Updated description'),\n endpoint: z.string().optional().describe('Updated endpoint'),\n credentialRef: z.string().optional().describe('Updated credential reference'),\n config: JsonObject.optional().describe('Updated connector configuration JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({ id, name, type, status, description, endpoint, credentialRef, config, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (type !== undefined) input.type = type;\n if (status !== undefined) input.status = status;\n if (description !== undefined) input.description = description;\n if (endpoint !== undefined) input.endpoint = endpoint;\n if (credentialRef !== undefined) input.credentialRef = credentialRef;\n if (config !== undefined) input.config = config;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/type/status/description/endpoint/credentialRef/config/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n cosUpdateSource: Record<string, unknown>;\n }>(ops.UPDATE_SOURCE, { id, input });\n return jsonResult(data.cosUpdateSource);\n } catch (error) {\n ctx.logger.error('cosmicintersection sources_update failed', { error: String(error) });\n return errorResult(\n `Failed to update source: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_archive')),\n {\n title: 'Archive Source',\n description: 'Archive (soft-delete) a data source. Returns true on success.',\n inputSchema: { id: z.string().describe('Source ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cosArchiveSource: boolean }>(\n ops.ARCHIVE_SOURCE,\n { id },\n );\n return jsonResult({ archived: data.cosArchiveSource });\n } catch (error) {\n ctx.logger.error('cosmicintersection sources_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive source: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_mark_synced')),\n {\n title: 'Mark Source Synced',\n description: 'Record a successful sync for a source (sets status CONNECTED + lastSyncedAt).',\n inputSchema: { id: z.string().describe('Source ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosMarkSourceSynced: Record<string, unknown>;\n }>(ops.MARK_SOURCE_SYNCED, { id });\n return jsonResult(data.cosMarkSourceSynced);\n } catch (error) {\n ctx.logger.error('cosmicintersection sources_mark_synced failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to mark source synced: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Cosmicintersection dataset tools — catalog CRUD + lifecycle + schema fields.\n *\n * Surface (8): datasets_{get,list,create,update,archive,publish},\n * datasets_fields_{list,add}. Backed by the real root fields cosDataset /\n * cosListDatasets / cosCreateDataset / cosUpdateDataset / cosArchiveDataset /\n * cosPublishDataset / cosListSchemaFields / cosAddSchemaField.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n CosDatasetStatusEnum,\n CosAccessLevelEnum,\n CosFieldTypeEnum,\n JsonObject,\n} from './shared.js';\n\nexport function registerDatasetTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'datasets_get')),\n {\n title: 'Get Dataset',\n description:\n 'Fetch a single dataset by ID, including its collection, source, and schema fields.',\n inputSchema: { id: z.string().describe('Dataset ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosDataset: Record<string, unknown> | null;\n }>(ops.GET_DATASET, { id });\n if (!data.cosDataset) return errorResult(`Dataset ${id} not found`);\n return jsonResult(data.cosDataset);\n } catch (error) {\n ctx.logger.error('cosmicintersection datasets_get failed', { error: String(error) });\n return errorResult(\n `Failed to get dataset: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'datasets_list')),\n {\n title: 'List Datasets',\n description:\n 'List datasets in the bound workspace with optional collection/source/status filters and pagination (returns a connection: { items, pageInfo }).',\n inputSchema: {\n collectionId: z.string().optional().describe('Filter by collection ID'),\n sourceId: z.string().optional().describe('Filter by source ID'),\n status: CosDatasetStatusEnum.optional().describe('Filter by lifecycle status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ collectionId, sourceId, status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n cosListDatasets: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_DATASETS, {\n collectionId,\n sourceId,\n status,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.cosListDatasets);\n } catch (error) {\n ctx.logger.error('cosmicintersection datasets_list failed', { error: String(error) });\n return errorResult(\n `Failed to list datasets: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'datasets_create')),\n {\n title: 'Create Dataset',\n description:\n 'Register a new dataset in the catalog. Defaults: accessLevel=WORKSPACE, status=DRAFT. Reference a wspace-files-svc File via fileId for the raw artifact.',\n inputSchema: {\n name: z.string().min(1).describe('Dataset name'),\n accessLevel: CosAccessLevelEnum.optional().describe('Access level (default WORKSPACE)'),\n status: CosDatasetStatusEnum.optional().describe('Initial status (default DRAFT)'),\n description: z.string().optional().describe('Dataset description'),\n collectionId: z.string().optional().describe('Parent collection ID'),\n sourceId: z.string().optional().describe('Originating source ID'),\n fileId: z.string().optional().describe('wspace-files-svc File ID for the raw artifact'),\n format: z.string().optional().describe('Data format (e.g. csv, parquet, fits)'),\n coverage: JsonObject.optional().describe('Spatial/temporal coverage JSON'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({\n name,\n accessLevel,\n status,\n description,\n collectionId,\n sourceId,\n fileId,\n format,\n coverage,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (accessLevel !== undefined) input.accessLevel = accessLevel;\n if (status !== undefined) input.status = status;\n if (description !== undefined) input.description = description;\n if (collectionId !== undefined) input.collectionId = collectionId;\n if (sourceId !== undefined) input.sourceId = sourceId;\n if (fileId !== undefined) input.fileId = fileId;\n if (format !== undefined) input.format = format;\n if (coverage !== undefined) input.coverage = coverage;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cosCreateDataset: Record<string, unknown>;\n }>(ops.CREATE_DATASET, { input });\n return jsonResult(data.cosCreateDataset);\n } catch (error) {\n ctx.logger.error('cosmicintersection datasets_create failed', { error: String(error) });\n return errorResult(\n `Failed to create dataset: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'datasets_update')),\n {\n title: 'Update Dataset',\n description: 'Update a dataset. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Dataset ID'),\n name: z.string().optional().describe('Updated name'),\n accessLevel: CosAccessLevelEnum.optional().describe('Updated access level'),\n description: z.string().optional().describe('Updated description'),\n collectionId: z.string().optional().describe('Updated collection ID'),\n format: z.string().optional().describe('Updated data format'),\n coverage: JsonObject.optional().describe('Updated coverage JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({ id, name, accessLevel, description, collectionId, format, coverage, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (accessLevel !== undefined) input.accessLevel = accessLevel;\n if (description !== undefined) input.description = description;\n if (collectionId !== undefined) input.collectionId = collectionId;\n if (format !== undefined) input.format = format;\n if (coverage !== undefined) input.coverage = coverage;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/accessLevel/description/collectionId/format/coverage/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n cosUpdateDataset: Record<string, unknown>;\n }>(ops.UPDATE_DATASET, { id, input });\n return jsonResult(data.cosUpdateDataset);\n } catch (error) {\n ctx.logger.error('cosmicintersection datasets_update failed', { error: String(error) });\n return errorResult(\n `Failed to update dataset: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'datasets_archive')),\n {\n title: 'Archive Dataset',\n description: 'Archive (soft-delete) a dataset. Returns true on success.',\n inputSchema: { id: z.string().describe('Dataset ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cosArchiveDataset: boolean }>(\n ops.ARCHIVE_DATASET,\n { id },\n );\n return jsonResult({ archived: data.cosArchiveDataset });\n } catch (error) {\n ctx.logger.error('cosmicintersection datasets_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive dataset: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'datasets_publish')),\n {\n title: 'Publish Dataset',\n description: 'Mark a dataset AVAILABLE once ingestion completes (sets ingestedAt).',\n inputSchema: { id: z.string().describe('Dataset ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosPublishDataset: Record<string, unknown>;\n }>(ops.PUBLISH_DATASET, { id });\n return jsonResult(data.cosPublishDataset);\n } catch (error) {\n ctx.logger.error('cosmicintersection datasets_publish failed', { error: String(error) });\n return errorResult(\n `Failed to publish dataset: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'datasets_fields_list')),\n {\n title: 'List Schema Fields',\n description: 'List the schema fields (columns) of a dataset.',\n inputSchema: { datasetId: z.string().describe('Dataset ID') },\n },\n async ({ datasetId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosListSchemaFields: Array<Record<string, unknown>>;\n }>(ops.LIST_SCHEMA_FIELDS, { datasetId });\n return jsonResult(data.cosListSchemaFields);\n } catch (error) {\n ctx.logger.error('cosmicintersection datasets_fields_list failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to list schema fields: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'datasets_fields_add')),\n {\n title: 'Add Schema Field',\n description:\n 'Add a schema field (column) to a dataset. Defaults: fieldType=STRING, nullable=true.',\n inputSchema: {\n datasetId: z.string().describe('Dataset ID'),\n name: z.string().min(1).describe('Field name'),\n fieldType: CosFieldTypeEnum.optional().describe('Field logical type (default STRING)'),\n description: z.string().optional().describe('Field description'),\n nullable: z.boolean().optional().describe('Whether the field is nullable (default true)'),\n position: z.number().int().optional().describe('Ordinal position in the schema'),\n provenance: z.string().optional().describe('Provenance / derivation note'),\n unit: z.string().optional().describe('Physical unit (e.g. arcsec, Jy)'),\n },\n },\n async ({ datasetId, name, fieldType, description, nullable, position, provenance, unit }) => {\n try {\n const input: Record<string, unknown> = { datasetId, name };\n if (fieldType !== undefined) input.fieldType = fieldType;\n if (description !== undefined) input.description = description;\n if (nullable !== undefined) input.nullable = nullable;\n if (position !== undefined) input.position = position;\n if (provenance !== undefined) input.provenance = provenance;\n if (unit !== undefined) input.unit = unit;\n\n const data = await ctx.gql.workspace.request<{\n cosAddSchemaField: Record<string, unknown>;\n }>(ops.ADD_SCHEMA_FIELD, { input });\n return jsonResult(data.cosAddSchemaField);\n } catch (error) {\n ctx.logger.error('cosmicintersection datasets_fields_add failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to add schema field: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Cosmicintersection collection tools — dataset grouping.\n *\n * Surface (2): collections_{list,create}. Backed by the real root fields\n * cosListCollections / cosCreateCollection.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerCollectionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_list')),\n {\n title: 'List Collections',\n description: 'List all dataset collections in the bound workspace, with their datasets.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosListCollections: Array<Record<string, unknown>>;\n }>(ops.LIST_COLLECTIONS, {});\n return jsonResult(data.cosListCollections);\n } catch (error) {\n ctx.logger.error('cosmicintersection collections_list failed', { error: String(error) });\n return errorResult(\n `Failed to list collections: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_create')),\n {\n title: 'Create Collection',\n description: 'Create a dataset collection. Defaults: isPublic=false.',\n inputSchema: {\n name: z.string().min(1).describe('Collection name'),\n slug: z.string().optional().describe('URL slug, unique within the workspace'),\n description: z.string().optional().describe('Collection description'),\n isPublic: z\n .boolean()\n .optional()\n .describe('Whether the collection is public (default false)'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({ name, slug, description, isPublic, tags }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (slug !== undefined) input.slug = slug;\n if (description !== undefined) input.description = description;\n if (isPublic !== undefined) input.isPublic = isPublic;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cosCreateCollection: Record<string, unknown>;\n }>(ops.CREATE_COLLECTION, { input });\n return jsonResult(data.cosCreateCollection);\n } catch (error) {\n ctx.logger.error('cosmicintersection collections_create failed', { error: String(error) });\n return errorResult(\n `Failed to create collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Cosmicintersection pipeline tools — processing pipeline CRUD + lifecycle.\n *\n * Surface (5): pipelines_{get,list,create,update,archive}. Backed by the real\n * root fields cosPipeline / cosListPipelines / cosCreatePipeline /\n * cosUpdatePipeline / cosArchivePipeline.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CosPipelineStatusEnum, CosPipelineTriggerEnum, JsonObject } from './shared.js';\n\nexport function registerPipelineTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_get')),\n {\n title: 'Get Pipeline',\n description: 'Fetch a single processing pipeline by ID, including its recent runs.',\n inputSchema: { id: z.string().describe('Pipeline ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosPipeline: Record<string, unknown> | null;\n }>(ops.GET_PIPELINE, { id });\n if (!data.cosPipeline) return errorResult(`Pipeline ${id} not found`);\n return jsonResult(data.cosPipeline);\n } catch (error) {\n ctx.logger.error('cosmicintersection pipelines_get failed', { error: String(error) });\n return errorResult(\n `Failed to get pipeline: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_list')),\n {\n title: 'List Pipelines',\n description:\n 'List processing pipelines with optional status filter and pagination (returns a connection: { items, pageInfo }).',\n inputSchema: {\n status: CosPipelineStatusEnum.optional().describe('Filter by lifecycle status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n cosListPipelines: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_PIPELINES, {\n status,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.cosListPipelines);\n } catch (error) {\n ctx.logger.error('cosmicintersection pipelines_list failed', { error: String(error) });\n return errorResult(\n `Failed to list pipelines: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_create')),\n {\n title: 'Create Pipeline',\n description: 'Create a processing pipeline. Defaults: trigger=MANUAL.',\n inputSchema: {\n name: z.string().min(1).describe('Pipeline name'),\n trigger: CosPipelineTriggerEnum.optional().describe('Trigger mode (default MANUAL)'),\n description: z.string().optional().describe('Pipeline description'),\n definition: JsonObject.optional().describe('Pipeline definition JSON (steps/graph)'),\n schedule: z.string().optional().describe('Cron schedule (when trigger=SCHEDULED)'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({ name, trigger, description, definition, schedule, tags }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (trigger !== undefined) input.trigger = trigger;\n if (description !== undefined) input.description = description;\n if (definition !== undefined) input.definition = definition;\n if (schedule !== undefined) input.schedule = schedule;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cosCreatePipeline: Record<string, unknown>;\n }>(ops.CREATE_PIPELINE, { input });\n return jsonResult(data.cosCreatePipeline);\n } catch (error) {\n ctx.logger.error('cosmicintersection pipelines_create failed', { error: String(error) });\n return errorResult(\n `Failed to create pipeline: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_update')),\n {\n title: 'Update Pipeline',\n description: 'Update a pipeline. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Pipeline ID'),\n name: z.string().optional().describe('Updated name'),\n status: CosPipelineStatusEnum.optional().describe('Updated lifecycle status'),\n trigger: CosPipelineTriggerEnum.optional().describe('Updated trigger mode'),\n description: z.string().optional().describe('Updated description'),\n definition: JsonObject.optional().describe('Updated definition JSON'),\n schedule: z.string().optional().describe('Updated cron schedule'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({ id, name, status, trigger, description, definition, schedule, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (status !== undefined) input.status = status;\n if (trigger !== undefined) input.trigger = trigger;\n if (description !== undefined) input.description = description;\n if (definition !== undefined) input.definition = definition;\n if (schedule !== undefined) input.schedule = schedule;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/status/trigger/description/definition/schedule/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n cosUpdatePipeline: Record<string, unknown>;\n }>(ops.UPDATE_PIPELINE, { id, input });\n return jsonResult(data.cosUpdatePipeline);\n } catch (error) {\n ctx.logger.error('cosmicintersection pipelines_update failed', { error: String(error) });\n return errorResult(\n `Failed to update pipeline: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_archive')),\n {\n title: 'Archive Pipeline',\n description: 'Archive (soft-delete) a pipeline. Returns true on success.',\n inputSchema: { id: z.string().describe('Pipeline ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cosArchivePipeline: boolean }>(\n ops.ARCHIVE_PIPELINE,\n { id },\n );\n return jsonResult({ archived: data.cosArchivePipeline });\n } catch (error) {\n ctx.logger.error('cosmicintersection pipelines_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive pipeline: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Cosmicintersection run tools — pipeline runs + steps lifecycle.\n *\n * Surface (6): runs_{get,list,start,transition}, runs_steps_{list,add}. Backed\n * by the real root fields cosRun / cosListRuns / cosStartRun / cosTransitionRun /\n * cosListRunSteps / cosAddRunStep.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CosRunStatusEnum, CosStepKindEnum, JsonObject } from './shared.js';\n\nexport function registerRunTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'runs_get')),\n {\n title: 'Get Run',\n description: 'Fetch a single pipeline run by ID, including its pipeline and steps.',\n inputSchema: { id: z.string().describe('Run ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosRun: Record<string, unknown> | null;\n }>(ops.GET_RUN, { id });\n if (!data.cosRun) return errorResult(`Run ${id} not found`);\n return jsonResult(data.cosRun);\n } catch (error) {\n ctx.logger.error('cosmicintersection runs_get failed', { error: String(error) });\n return errorResult(\n `Failed to get run: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'runs_list')),\n {\n title: 'List Runs',\n description:\n 'List pipeline runs with optional pipeline/status filters and pagination (returns a connection: { items, pageInfo }).',\n inputSchema: {\n pipelineId: z.string().optional().describe('Filter by pipeline ID'),\n status: CosRunStatusEnum.optional().describe('Filter by run status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ pipelineId, status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n cosListRuns: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_RUNS, {\n pipelineId,\n status,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.cosListRuns);\n } catch (error) {\n ctx.logger.error('cosmicintersection runs_list failed', { error: String(error) });\n return errorResult(\n `Failed to list runs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'runs_start')),\n {\n title: 'Start Run',\n description: 'Queue a new run of a pipeline (assigns the next run number).',\n inputSchema: {\n pipelineId: z.string().describe('Pipeline ID to run'),\n datasetId: z.string().optional().describe('Input dataset ID'),\n params: JsonObject.optional().describe('Run parameters JSON'),\n },\n },\n async ({ pipelineId, datasetId, params }) => {\n try {\n const input: Record<string, unknown> = { pipelineId };\n if (datasetId !== undefined) input.datasetId = datasetId;\n if (params !== undefined) input.params = params;\n\n const data = await ctx.gql.workspace.request<{\n cosStartRun: Record<string, unknown>;\n }>(ops.START_RUN, { input });\n return jsonResult(data.cosStartRun);\n } catch (error) {\n ctx.logger.error('cosmicintersection runs_start failed', { error: String(error) });\n return errorResult(\n `Failed to start run: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'runs_transition')),\n {\n title: 'Transition Run',\n description:\n 'Advance a run through its lifecycle (validated transitions): QUEUED → RUNNING → SUCCEEDED/FAILED/CANCELLED.',\n inputSchema: {\n id: z.string().describe('Run ID'),\n status: CosRunStatusEnum.describe('Target run status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosTransitionRun: Record<string, unknown>;\n }>(ops.TRANSITION_RUN, { id, status });\n return jsonResult(data.cosTransitionRun);\n } catch (error) {\n ctx.logger.error('cosmicintersection runs_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition run: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'runs_steps_list')),\n {\n title: 'List Run Steps',\n description: 'List the steps of a pipeline run, in order.',\n inputSchema: { runId: z.string().describe('Run ID') },\n },\n async ({ runId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosListRunSteps: Array<Record<string, unknown>>;\n }>(ops.LIST_RUN_STEPS, { runId });\n return jsonResult(data.cosListRunSteps);\n } catch (error) {\n ctx.logger.error('cosmicintersection runs_steps_list failed', { error: String(error) });\n return errorResult(\n `Failed to list run steps: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'runs_steps_add')),\n {\n title: 'Add Run Step',\n description: 'Append a step to a run. Defaults: kind=TRANSFORM.',\n inputSchema: {\n runId: z.string().describe('Run ID'),\n name: z.string().min(1).describe('Step name'),\n kind: CosStepKindEnum.optional().describe('Step kind (default TRANSFORM)'),\n inputs: JsonObject.optional().describe('Step inputs JSON'),\n position: z.number().int().optional().describe('Ordinal position in the run'),\n },\n },\n async ({ runId, name, kind, inputs, position }) => {\n try {\n const input: Record<string, unknown> = { runId, name };\n if (kind !== undefined) input.kind = kind;\n if (inputs !== undefined) input.inputs = inputs;\n if (position !== undefined) input.position = position;\n\n const data = await ctx.gql.workspace.request<{\n cosAddRunStep: Record<string, unknown>;\n }>(ops.ADD_RUN_STEP, { input });\n return jsonResult(data.cosAddRunStep);\n } catch (error) {\n ctx.logger.error('cosmicintersection runs_steps_add failed', { error: String(error) });\n return errorResult(\n `Failed to add run step: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Cosmicintersection notebook tools — research notebook CRUD + lifecycle.\n *\n * Surface (5): notebooks_{get,list,create,update,archive}. Backed by the real\n * root fields cosNotebook / cosListNotebooks / cosCreateNotebook /\n * cosUpdateNotebook / cosArchiveNotebook.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CosNotebookStatusEnum, JsonObject } from './shared.js';\n\nexport function registerNotebookTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notebooks_get')),\n {\n title: 'Get Notebook',\n description: 'Fetch a single research notebook by ID, including its analyses and releases.',\n inputSchema: { id: z.string().describe('Notebook ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosNotebook: Record<string, unknown> | null;\n }>(ops.GET_NOTEBOOK, { id });\n if (!data.cosNotebook) return errorResult(`Notebook ${id} not found`);\n return jsonResult(data.cosNotebook);\n } catch (error) {\n ctx.logger.error('cosmicintersection notebooks_get failed', { error: String(error) });\n return errorResult(\n `Failed to get notebook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notebooks_list')),\n {\n title: 'List Notebooks',\n description:\n 'List research notebooks with optional status filter and pagination (returns a connection: { items, pageInfo }).',\n inputSchema: {\n status: CosNotebookStatusEnum.optional().describe('Filter by lifecycle status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n cosListNotebooks: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_NOTEBOOKS, {\n status,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.cosListNotebooks);\n } catch (error) {\n ctx.logger.error('cosmicintersection notebooks_list failed', { error: String(error) });\n return errorResult(\n `Failed to list notebooks: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notebooks_create')),\n {\n title: 'Create Notebook',\n description:\n 'Create a research notebook. Reference a wspace-files-svc File via fileId for the notebook document.',\n inputSchema: {\n title: z.string().min(1).describe('Notebook title'),\n description: z.string().optional().describe('Notebook description'),\n runtime: z.string().optional().describe('Runtime (e.g. python3.11, julia)'),\n environment: JsonObject.optional().describe('Environment / dependency JSON'),\n datasetIds: z\n .array(z.string())\n .optional()\n .describe('Dataset IDs referenced by the notebook'),\n fileId: z\n .string()\n .optional()\n .describe('wspace-files-svc File ID for the notebook document'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({ title, description, runtime, environment, datasetIds, fileId, tags }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (description !== undefined) input.description = description;\n if (runtime !== undefined) input.runtime = runtime;\n if (environment !== undefined) input.environment = environment;\n if (datasetIds !== undefined) input.datasetIds = datasetIds;\n if (fileId !== undefined) input.fileId = fileId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cosCreateNotebook: Record<string, unknown>;\n }>(ops.CREATE_NOTEBOOK, { input });\n return jsonResult(data.cosCreateNotebook);\n } catch (error) {\n ctx.logger.error('cosmicintersection notebooks_create failed', { error: String(error) });\n return errorResult(\n `Failed to create notebook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notebooks_update')),\n {\n title: 'Update Notebook',\n description: 'Update a research notebook. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Notebook ID'),\n title: z.string().optional().describe('Updated title'),\n description: z.string().optional().describe('Updated description'),\n status: CosNotebookStatusEnum.optional().describe('Updated lifecycle status'),\n runtime: z.string().optional().describe('Updated runtime'),\n environment: JsonObject.optional().describe('Updated environment JSON'),\n datasetIds: z.array(z.string()).optional().describe('Updated dataset IDs'),\n isShared: z.boolean().optional().describe('Whether the notebook is shared'),\n shareSlug: z.string().optional().describe('Public share slug'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n title,\n description,\n status,\n runtime,\n environment,\n datasetIds,\n isShared,\n shareSlug,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status;\n if (runtime !== undefined) input.runtime = runtime;\n if (environment !== undefined) input.environment = environment;\n if (datasetIds !== undefined) input.datasetIds = datasetIds;\n if (isShared !== undefined) input.isShared = isShared;\n if (shareSlug !== undefined) input.shareSlug = shareSlug;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of title/description/status/runtime/environment/datasetIds/isShared/shareSlug/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n cosUpdateNotebook: Record<string, unknown>;\n }>(ops.UPDATE_NOTEBOOK, { id, input });\n return jsonResult(data.cosUpdateNotebook);\n } catch (error) {\n ctx.logger.error('cosmicintersection notebooks_update failed', { error: String(error) });\n return errorResult(\n `Failed to update notebook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notebooks_archive')),\n {\n title: 'Archive Notebook',\n description: 'Archive (soft-delete) a research notebook. Returns true on success.',\n inputSchema: { id: z.string().describe('Notebook ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cosArchiveNotebook: boolean }>(\n ops.ARCHIVE_NOTEBOOK,\n { id },\n );\n return jsonResult({ archived: data.cosArchiveNotebook });\n } catch (error) {\n ctx.logger.error('cosmicintersection notebooks_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive notebook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Cosmicintersection analysis tools — analysis runs against datasets/notebooks.\n *\n * Surface (3): analyses_{list,run,complete}. Backed by the real root fields\n * cosListAnalyses / cosRunAnalysis / cosCompleteAnalysis.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CosAnalysisStatusEnum, JsonObject } from './shared.js';\n\nexport function registerAnalysisTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'analyses_list')),\n {\n title: 'List Analyses',\n description: 'List analyses, optionally filtered by dataset, notebook, and/or status.',\n inputSchema: {\n datasetId: z.string().optional().describe('Filter by dataset ID'),\n notebookId: z.string().optional().describe('Filter by notebook ID'),\n status: CosAnalysisStatusEnum.optional().describe('Filter by analysis status'),\n },\n },\n async ({ datasetId, notebookId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosListAnalyses: Array<Record<string, unknown>>;\n }>(ops.LIST_ANALYSES, { datasetId, notebookId, status });\n return jsonResult(data.cosListAnalyses);\n } catch (error) {\n ctx.logger.error('cosmicintersection analyses_list failed', { error: String(error) });\n return errorResult(\n `Failed to list analyses: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'analyses_run')),\n {\n title: 'Run Analysis',\n description: 'Queue a new analysis run. Defaults: aiAssisted=false.',\n inputSchema: {\n title: z.string().min(1).describe('Analysis title'),\n method: z.string().optional().describe('Analysis method / algorithm'),\n datasetId: z.string().optional().describe('Input dataset ID'),\n notebookId: z.string().optional().describe('Source notebook ID'),\n aiAssisted: z.boolean().optional().describe('Whether AI-assisted (default false)'),\n },\n },\n async ({ title, method, datasetId, notebookId, aiAssisted }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (method !== undefined) input.method = method;\n if (datasetId !== undefined) input.datasetId = datasetId;\n if (notebookId !== undefined) input.notebookId = notebookId;\n if (aiAssisted !== undefined) input.aiAssisted = aiAssisted;\n\n const data = await ctx.gql.workspace.request<{\n cosRunAnalysis: Record<string, unknown>;\n }>(ops.RUN_ANALYSIS, { input });\n return jsonResult(data.cosRunAnalysis);\n } catch (error) {\n ctx.logger.error('cosmicintersection analyses_run failed', { error: String(error) });\n return errorResult(\n `Failed to run analysis: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'analyses_complete')),\n {\n title: 'Complete Analysis',\n description:\n 'Record the terminal outcome of an analysis run (COMPLETED / FAILED), optionally attaching results JSON and a rendered output File.',\n inputSchema: {\n id: z.string().describe('Analysis ID'),\n status: CosAnalysisStatusEnum.describe('Terminal status (COMPLETED or FAILED)'),\n results: JsonObject.optional().describe('Analysis results JSON'),\n outputFileId: z\n .string()\n .optional()\n .describe('wspace-files-svc File ID of the rendered visualization'),\n },\n },\n async ({ id, status, results, outputFileId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosCompleteAnalysis: Record<string, unknown>;\n }>(ops.COMPLETE_ANALYSIS, { id, status, results, outputFileId });\n return jsonResult(data.cosCompleteAnalysis);\n } catch (error) {\n ctx.logger.error('cosmicintersection analyses_complete failed', { error: String(error) });\n return errorResult(\n `Failed to complete analysis: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Cosmicintersection release tools — citable, DOI-stamped research releases.\n *\n * Surface (3): releases_{list,create,publish}. Backed by the real root fields\n * cosListReleases / cosCreateRelease / cosPublishRelease.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CosReleaseStatusEnum } from './shared.js';\n\nexport function registerReleaseTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'releases_list')),\n {\n title: 'List Releases',\n description:\n 'List citable releases with optional status filter and pagination (returns a connection: { items, pageInfo }).',\n inputSchema: {\n status: CosReleaseStatusEnum.optional().describe('Filter by lifecycle status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n cosListReleases: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_RELEASES, {\n status,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.cosListReleases);\n } catch (error) {\n ctx.logger.error('cosmicintersection releases_list failed', { error: String(error) });\n return errorResult(\n `Failed to list releases: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'releases_create')),\n {\n title: 'Create Release',\n description: 'Draft a citable release bundling datasets and/or a notebook for publication.',\n inputSchema: {\n title: z.string().min(1).describe('Release title'),\n version: z.string().optional().describe('Version string (e.g. 1.0.0)'),\n abstract: z.string().optional().describe('Abstract / summary'),\n authors: z.array(z.string()).optional().describe('Author names'),\n license: z.string().optional().describe('License (e.g. CC-BY-4.0)'),\n notebookId: z.string().optional().describe('Source notebook ID'),\n datasetIds: z.array(z.string()).optional().describe('Bundled dataset IDs'),\n },\n },\n async ({ title, version, abstract, authors, license, notebookId, datasetIds }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (version !== undefined) input.version = version;\n if (abstract !== undefined) input.abstract = abstract;\n if (authors !== undefined) input.authors = authors;\n if (license !== undefined) input.license = license;\n if (notebookId !== undefined) input.notebookId = notebookId;\n if (datasetIds !== undefined) input.datasetIds = datasetIds;\n\n const data = await ctx.gql.workspace.request<{\n cosCreateRelease: Record<string, unknown>;\n }>(ops.CREATE_RELEASE, { input });\n return jsonResult(data.cosCreateRelease);\n } catch (error) {\n ctx.logger.error('cosmicintersection releases_create failed', { error: String(error) });\n return errorResult(\n `Failed to create release: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'releases_publish')),\n {\n title: 'Publish Release',\n description: 'Publish a citable release and stamp it with a DOI.',\n inputSchema: {\n id: z.string().describe('Release ID'),\n doi: z.string().optional().describe('DOI to stamp the release with'),\n },\n },\n async ({ id, doi }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosPublishRelease: Record<string, unknown>;\n }>(ops.PUBLISH_RELEASE, { id, doi });\n return jsonResult(data.cosPublishRelease);\n } catch (error) {\n ctx.logger.error('cosmicintersection releases_publish failed', { error: String(error) });\n return errorResult(\n `Failed to publish release: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Cosmicintersection access-grant tools — dataset access grants.\n *\n * Surface (3): grants_{list,grant,revoke}. Backed by the real root fields\n * cosListAccessGrants / cosGrantAccess / cosRevokeAccess.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CosGrantStatusEnum } from './shared.js';\n\nexport function registerGrantTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'grants_list')),\n {\n title: 'List Access Grants',\n description: 'List dataset access grants, optionally filtered by dataset and/or status.',\n inputSchema: {\n datasetId: z.string().optional().describe('Filter by dataset ID'),\n status: CosGrantStatusEnum.optional().describe('Filter by grant status'),\n },\n },\n async ({ datasetId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosListAccessGrants: Array<Record<string, unknown>>;\n }>(ops.LIST_ACCESS_GRANTS, { datasetId, status });\n return jsonResult(data.cosListAccessGrants);\n } catch (error) {\n ctx.logger.error('cosmicintersection grants_list failed', { error: String(error) });\n return errorResult(\n `Failed to list access grants: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'grants_grant')),\n {\n title: 'Grant Dataset Access',\n description:\n 'Grant a user (grantee) scoped access to a dataset, optionally with an expiry and reason.',\n inputSchema: {\n datasetId: z.string().describe('Dataset ID'),\n granteeId: z.string().describe('User ID of the grantee'),\n scopes: z.array(z.string()).optional().describe('Granted scopes (e.g. read, download)'),\n reason: z.string().optional().describe('Reason for the grant'),\n expiresAt: z.string().optional().describe('Expiry timestamp (ISO 8601 DateTime)'),\n },\n },\n async ({ datasetId, granteeId, scopes, reason, expiresAt }) => {\n try {\n const input: Record<string, unknown> = { datasetId, granteeId };\n if (scopes !== undefined) input.scopes = scopes;\n if (reason !== undefined) input.reason = reason;\n if (expiresAt !== undefined) input.expiresAt = expiresAt;\n\n const data = await ctx.gql.workspace.request<{\n cosGrantAccess: Record<string, unknown>;\n }>(ops.GRANT_ACCESS, { input });\n return jsonResult(data.cosGrantAccess);\n } catch (error) {\n ctx.logger.error('cosmicintersection grants_grant failed', { error: String(error) });\n return errorResult(\n `Failed to grant access: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'grants_revoke')),\n {\n title: 'Revoke Dataset Access',\n description: 'Revoke a dataset access grant (sets status REVOKED + revokedAt).',\n inputSchema: { id: z.string().describe('Access grant ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosRevokeAccess: Record<string, unknown>;\n }>(ops.REVOKE_ACCESS, { id });\n return jsonResult(data.cosRevokeAccess);\n } catch (error) {\n ctx.logger.error('cosmicintersection grants_revoke failed', { error: String(error) });\n return errorResult(\n `Failed to revoke access: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Cosmicintersection health tool.\n *\n * Surface (1): health. Maps to the @public cosHealth query (no auth required) —\n * a liveness/identity probe for the Cosmicintersection subgraph.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerHealthTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'health')),\n {\n title: 'Cosmicintersection Health Check',\n description:\n 'Public health probe for the Cosmicintersection subgraph (cosHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ cosHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.cosHealth });\n } catch (error) {\n ctx.logger.error('cosmicintersection health failed', { error: String(error) });\n return errorResult(\n `Cosmicintersection health check failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResourceUri, type McpContext } from '../../core/index.js';\nimport { LIST_DATASETS, LIST_COLLECTIONS, LIST_PIPELINES } from './operations.js';\n\n/**\n * Read-only Cosmicintersection MCP resources. URIs are product-prefixed via\n * mcpResourceUri so they don't collide when multiple MCP servers run side by\n * side. Each is tracked at function entry so the shell manifest reflects what\n * was registered even though registration is imperative.\n */\nexport function registerCosmicintersectionResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const datasetsUri = track(mcpResourceUri(ctx.productName, 'datasets'));\n const collectionsUri = track(mcpResourceUri(ctx.productName, 'collections'));\n const pipelinesUri = track(mcpResourceUri(ctx.productName, 'pipelines'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'cosmicintersection-schema',\n schemaUri,\n {\n title: 'Cosmicintersection Domain Schema',\n description:\n 'Overview of the Cosmicintersection data-platform domain — entities, enums, and the per-entity tool surface.',\n mimeType: 'text/plain',\n },\n async () => {\n ctx.logger.debug(`Resource ${schemaUri} requested`);\n const schema = `# Cosmicintersection Domain (Overview)\n\nThe unified data platform for space & science: data sources & connectors, the\ndataset catalog (with schema / provenance), processing pipelines & runs (with\ncaptured lineage), and reproducible research (notebooks, analyses, citable\nreleases, access grants).\n\n## Entities\n- CosSource — an upstream data source / connector (telescope, satellite, archive, API, …)\n- CosDataset (+CosSchemaField) — a cataloged dataset and its schema fields\n- CosCollection — a named grouping of datasets\n- CosPipeline — a processing pipeline\n- CosPipelineRun (+CosPipelineStep) — a run of a pipeline and its steps\n- CosNotebook — a research notebook (references a wspace-files-svc File document)\n- CosAnalysis — an analysis run against a dataset/notebook\n- CosRelease — a citable, DOI-stamped research release\n- CosDataAccessGrant — a scoped access grant to a dataset\n\n## Enums\n- CosSourceType: API, ARCHIVE, FILE_DROP, GROUND_SENSOR, SATELLITE, SIMULATION, STREAM, TELESCOPE\n- CosSourceStatus: CONFIGURING, CONNECTED, DEGRADED, DISABLED, ERROR, SYNCING\n- CosDatasetStatus: ARCHIVED, AVAILABLE, DEPRECATED, DRAFT, INGESTING\n- CosAccessLevel: EMBARGOED, PUBLIC, RESTRICTED, WORKSPACE\n- CosFieldType: BOOLEAN, COORDINATE, FLOAT, GEOMETRY, IMAGE_REF, INTEGER, JSON, SPECTRUM, STRING, TIMESTAMP\n- CosPipelineStatus: ACTIVE, ARCHIVED, DRAFT, PAUSED\n- CosPipelineTrigger: MANUAL, ON_INGEST, SCHEDULED, WEBHOOK\n- CosRunStatus: CANCELLED, FAILED, QUEUED, RUNNING, SUCCEEDED\n- CosStepKind: ANALYZE, CALIBRATE, EXPORT, INGEST, NOTIFY, TRANSFORM\n- CosNotebookStatus: ARCHIVED, DRAFT, PUBLISHED, RUNNING\n- CosAnalysisStatus: COMPLETED, FAILED, PENDING, RUNNING\n- CosReleaseStatus: DRAFT, PUBLISHED, RETRACTED, UNDER_REVIEW\n- CosGrantStatus: ACTIVE, EXPIRED, PENDING, REVOKED\n\n## Tool groups\nsources, datasets (+fields), collections, pipelines, runs (+steps), notebooks,\nanalyses, releases, grants, health. All run against the WORKSPACE gateway\n(workspace-scoped) except the public health probe.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://datasets — first page of the dataset catalog\n server.registerResource(\n 'cosmicintersection-datasets',\n datasetsUri,\n {\n title: 'Cosmicintersection Dataset Catalog',\n description: 'The first 50 datasets in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${datasetsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ cosListDatasets: unknown }>(LIST_DATASETS, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: datasetsUri,\n text: JSON.stringify(data.cosListDatasets, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: datasetsUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://collections — dataset collections\n server.registerResource(\n 'cosmicintersection-collections',\n collectionsUri,\n {\n title: 'Cosmicintersection Collections',\n description: 'All dataset collections in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${collectionsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ cosListCollections: unknown }>(\n LIST_COLLECTIONS,\n {},\n );\n return {\n contents: [\n {\n uri: collectionsUri,\n text: JSON.stringify(data.cosListCollections, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: collectionsUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://pipelines — first page of processing pipelines\n server.registerResource(\n 'cosmicintersection-pipelines',\n pipelinesUri,\n {\n title: 'Cosmicintersection Pipelines',\n description: 'The first 50 processing pipelines in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${pipelinesUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ cosListPipelines: unknown }>(\n LIST_PIPELINES,\n { pagination: { limit: 50, offset: 0 } },\n );\n return {\n contents: [\n {\n uri: pipelinesUri,\n text: JSON.stringify(data.cosListPipelines, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: pipelinesUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpPromptName, type McpContext } from '../../core/index.js';\n\n/**\n * Cosmicintersection MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerCosmicintersectionPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const onboardingName = track(mcpPromptName(p, 'dataset-onboarding'));\n const researchName = track(mcpPromptName(p, 'research-publication'));\n\n // <product>-dataset-onboarding — stand up a source + dataset + schema\n server.registerPrompt(\n onboardingName,\n {\n title: 'Dataset Onboarding',\n description:\n 'Guide for onboarding new data into Cosmicintersection end to end: register a source, catalog a dataset, declare its schema, and publish it.',\n argsSchema: {\n sourceName: z.string().optional().describe('Data source name'),\n datasetName: z.string().optional().describe('Dataset name'),\n },\n },\n ({ sourceName, datasetName }) => {\n ctx.logger.debug(`Prompt ${onboardingName} called`, { sourceName, datasetName });\n const sourceNote = sourceName\n ? `Use the source name \"${sourceName}\".`\n : 'Ask the user for the source name.';\n const datasetNote = datasetName\n ? `Use the dataset name \"${datasetName}\".`\n : 'Ask the user for the dataset name.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me onboard new data into Cosmicintersection.\n\n1. **Register Source**: Use ${p}_sources_create. ${sourceNote} Pick a CosSourceType (TELESCOPE, SATELLITE, ARCHIVE, API, …) and set an endpoint/config if applicable.\n2. **(Optional) Collection**: Use ${p}_collections_create (or ${p}_collections_list) to group related datasets.\n3. **Catalog Dataset**: Use ${p}_datasets_create. ${datasetNote} Link sourceId (and collectionId), set accessLevel and format, and reference the raw artifact File via fileId.\n4. **Declare Schema**: Use ${p}_datasets_fields_add for each column — set fieldType (FLOAT, COORDINATE, SPECTRUM, TIMESTAMP, …), nullable, unit, and provenance.\n5. **Mark Synced**: Use ${p}_sources_mark_synced once the source connection is verified.\n6. **Publish**: Use ${p}_datasets_publish to mark the dataset AVAILABLE once ingestion completes.\n\nShow results at each step and confirm before publishing.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-research-publication — analyze + release workflow\n server.registerPrompt(\n researchName,\n {\n title: 'Research Publication',\n description:\n 'Reproducible-research workflow: build a pipeline, run it, analyze the output in a notebook, and cut a citable DOI-stamped release.',\n argsSchema: {\n notebookId: z.string().optional().describe('Notebook ID to work from'),\n },\n },\n ({ notebookId }) => {\n ctx.logger.debug(`Prompt ${researchName} called`, { notebookId });\n const notebookNote = notebookId\n ? `Work from notebook \"${notebookId}\".`\n : `First list notebooks with ${p}_notebooks_list (or create one with ${p}_notebooks_create) and pick one.`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run a reproducible-research publication workflow. ${notebookNote}\n\n1. **Pipeline**: Use ${p}_pipelines_list / ${p}_pipelines_create to set up the processing pipeline (definition + trigger).\n2. **Run**: Use ${p}_runs_start to queue a run, ${p}_runs_steps_add to append steps, and ${p}_runs_transition to advance it (QUEUED → RUNNING → SUCCEEDED).\n3. **Analyze**: Use ${p}_analyses_run against the resulting dataset/notebook, then ${p}_analyses_complete with the results and an output File.\n4. **Release**: Use ${p}_releases_create to bundle datasets + notebook, then ${p}_releases_publish to stamp a DOI.\n5. **(Optional) Share Access**: Use ${p}_grants_grant to give collaborators scoped access to the underlying datasets.\n\nSummarize lineage (source → dataset → run → analysis → release) at the end.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Cosmicintersection module — domain module for the future-products ecosystem\n * program.\n *\n * Covers all @key entities of wspace-cosmicintersection-svc grouped into\n * per-entity sub-APIs: sources, datasets (+schema fields), collections,\n * pipelines, runs (+steps), notebooks, analyses, releases, grants, plus the\n * @public health probe. Mirrors the rich kadaikodi / crewfoundry modules'\n * structure (tools/<entity>.ts + resources.ts + prompts.ts) and the canonical\n * tags module's typing discipline.\n *\n * Backend: ~/products/cosmicintersection/wspace-cosmicintersection-svc/\n * (Hive service name `cosmicintersection`). All operations run against the\n * WORKSPACE gateway; the @public cosHealth probe is exposed as\n * `<product>_health`.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerSourceTools } from './tools/sources.js';\nimport { registerDatasetTools } from './tools/datasets.js';\nimport { registerCollectionTools } from './tools/collections.js';\nimport { registerPipelineTools } from './tools/pipelines.js';\nimport { registerRunTools } from './tools/runs.js';\nimport { registerNotebookTools } from './tools/notebooks.js';\nimport { registerAnalysisTools } from './tools/analyses.js';\nimport { registerReleaseTools } from './tools/releases.js';\nimport { registerGrantTools } from './tools/grants.js';\nimport { registerHealthTools } from './tools/health.js';\nimport { registerCosmicintersectionResources } from './resources.js';\nimport { registerCosmicintersectionPrompts } from './prompts.js';\n\nconst cosmicintersectionModule: McpModule = {\n id: 'cosmicintersection',\n version: '0.0.1',\n displayName: 'Cosmicintersection',\n dependsOn: ['auth'],\n capabilities: { tools: {}, resources: {}, prompts: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const resources: string[] = [];\n const prompts: string[] = [];\n\n const trackTool = (n: string): string => {\n tools.push(n);\n return n;\n };\n const trackResource = (uri: string): string => {\n resources.push(uri);\n return uri;\n };\n const trackPrompt = (n: string): string => {\n prompts.push(n);\n return n;\n };\n\n registerSourceTools(server, ctx, trackTool);\n registerDatasetTools(server, ctx, trackTool);\n registerCollectionTools(server, ctx, trackTool);\n registerPipelineTools(server, ctx, trackTool);\n registerRunTools(server, ctx, trackTool);\n registerNotebookTools(server, ctx, trackTool);\n registerAnalysisTools(server, ctx, trackTool);\n registerReleaseTools(server, ctx, trackTool);\n registerGrantTools(server, ctx, trackTool);\n registerHealthTools(server, ctx, trackTool);\n\n registerCosmicintersectionResources(server, ctx, trackResource);\n registerCosmicintersectionPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default cosmicintersectionModule;\n"]}
1
+ {"version":3,"sources":["../../../src/core/errors.ts","../../../src/core/tool-name.ts","../../../src/core/result.ts","../../../src/modules/cosmicintersection/operations.ts","../../../src/modules/cosmicintersection/tools/shared.ts","../../../src/modules/cosmicintersection/tools/sources.ts","../../../src/modules/cosmicintersection/tools/datasets.ts","../../../src/modules/cosmicintersection/tools/collections.ts","../../../src/modules/cosmicintersection/tools/pipelines.ts","../../../src/modules/cosmicintersection/tools/runs.ts","../../../src/modules/cosmicintersection/tools/notebooks.ts","../../../src/modules/cosmicintersection/tools/analyses.ts","../../../src/modules/cosmicintersection/tools/releases.ts","../../../src/modules/cosmicintersection/tools/grants.ts","../../../src/modules/cosmicintersection/tools/health.ts","../../../src/modules/cosmicintersection/resources.ts","../../../src/modules/cosmicintersection/prompts.ts","../../../src/modules/cosmicintersection/index.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Error classes for MCP SDK.\n *\n * Modules MUST throw these instead of throwing raw Errors. The registerTool\n * wrapper in result.ts catches and maps them to MCP-protocol-compliant\n * `{ isError: true, content: [...] }` responses.\n *\n * Throwing past the wrapper to the protocol surfaces as JSON-RPC -32603 to\n * the client and is a protocol bug.\n */\n\nexport class McpUserError extends Error {\n public readonly hint: string | undefined;\n\n constructor(message: string, opts?: { hint?: string }) {\n super(message);\n this.name = 'McpUserError';\n this.hint = opts?.hint;\n }\n}\n\nexport class McpAuthError extends McpUserError {\n constructor(message: string, opts?: { hint?: string }) {\n super(message, {\n hint: opts?.hint ?? 'Run the auth_login tool to authenticate.',\n });\n this.name = 'McpAuthError';\n }\n}\n\nexport class McpInternalError extends Error {\n public override readonly cause: unknown;\n\n constructor(message: string, cause?: unknown) {\n super(message);\n this.name = 'McpInternalError';\n this.cause = cause;\n }\n}\n","/**\n * Tool / resource / prompt naming helpers.\n *\n * Mandatory product prefix avoids collisions when Claude Desktop runs\n * multiple MCP servers concurrently (typical setup is ~6).\n *\n * Tool names are capped at 63 characters — Claude Desktop pre-1.x\n * truncated at 64 in some versions.\n */\n\nimport { McpInternalError } from './errors.js';\n\nconst MAX_TOOL_NAME_LENGTH = 63;\n\nfunction assertSafeName(name: string, kind: 'tool' | 'resource' | 'prompt'): string {\n if (kind === 'tool' && name.length > MAX_TOOL_NAME_LENGTH) {\n throw new McpInternalError(\n `Tool name '${name}' exceeds ${MAX_TOOL_NAME_LENGTH} characters (some MCP clients truncate at 64).`,\n );\n }\n return name;\n}\n\n/**\n * Build a tool name. Format: `<productName>_<...parts>` (snake_case).\n * Example: mcpToolName('vibecontrols', 'vibes', 'list') -> 'vibecontrols_vibes_list'\n */\nexport function mcpToolName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpToolName: productName is required');\n }\n const name = [productName, ...parts].filter(Boolean).join('_');\n return assertSafeName(name, 'tool');\n}\n\n/**\n * Build a resource URI. Format: `<productName>://<...parts>`.\n * Example: mcpResourceUri('vibecontrols', 'schema') -> 'vibecontrols://schema'\n */\nexport function mcpResourceUri(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpResourceUri: productName is required');\n }\n return `${productName}://${parts.filter(Boolean).join('/')}`;\n}\n\n/**\n * Build a prompt name. Format: `<productName>-<...parts>` (kebab-case).\n * Example: mcpPromptName('vibecontrols', 'setup') -> 'vibecontrols-setup'\n */\nexport function mcpPromptName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpPromptName: productName is required');\n }\n return [productName, ...parts].filter(Boolean).join('-');\n}\n\nexport const TOOL_NAME_LIMIT = MAX_TOOL_NAME_LENGTH;\n\n/**\n * Name-based hint heuristics for MCP `annotations` (readOnlyHint /\n * destructiveHint). Used by tool-governance.ts to auto-fill annotations for\n * the fleet of product modules that call `server.registerTool` directly\n * (bypassing the `registerTool()` core helper) and so never set them\n * explicitly today (BOFF-3903). Deliberately conservative — matched against\n * whole `_`-delimited segments so e.g. `timeentries_delete` and\n * `pomodoro_delete_goal` match, but a hypothetical `undeletable_check`\n * would not.\n *\n * A module can always override the inference by passing an explicit\n * `annotations` object to `registerTool()` / `server.registerTool()`.\n */\nconst DESTRUCTIVE_NAME_SEGMENT = /(?:^|_)delete(?:_|$)/i;\nconst READ_ONLY_NAME_SEGMENT = /(?:^|_)(?:list|get|search|check|read|count|stats|by_date)(?:_|$)/i;\n\n/** True when a tool name looks destructive (irreversibly deletes data) by naming convention. */\nexport function inferDestructiveHint(toolName: string): boolean {\n return DESTRUCTIVE_NAME_SEGMENT.test(toolName);\n}\n\n/**\n * True when a tool name looks read-only by naming convention. Never true for\n * a name that also looks destructive (a tool can't be both).\n */\nexport function inferReadOnlyHint(toolName: string): boolean {\n return !inferDestructiveHint(toolName) && READ_ONLY_NAME_SEGMENT.test(toolName);\n}\n","/**\n * MCP tool result helpers + central handler.\n *\n * Modules NEVER call server.registerTool directly — they use registerTool()\n * from this module so the central try/catch wraps the handler and:\n * - maps thrown McpUserError / McpAuthError / McpInternalError to\n * MCP-protocol-compliant `{ isError: true, content: [...] }` shapes\n * - threads `_meta.progressToken` into ctx.progress for long ops\n * - emits a structured log line on every error\n * - never leaks `cause` from McpInternalError to the client\n *\n * This is the analog of cli-sdk's createProgram() central error handler.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { ZodRawShape } from 'zod';\nimport type { McpContext } from './context.js';\nimport { McpAuthError, McpInternalError, McpUserError } from './errors.js';\nimport type { ToolAnnotations } from './tool-governance.js';\n\nexport interface ToolTextContent {\n type: 'text';\n text: string;\n [k: string]: unknown;\n}\n\nexport interface ToolResult {\n content: ToolTextContent[];\n isError?: boolean;\n structuredContent?: Record<string, unknown>;\n [k: string]: unknown;\n}\n\nexport interface ToolMeta {\n progressToken?: string | number;\n}\n\n/**\n * Build a successful tool result with JSON content (pretty-printed).\n */\nexport function jsonResult(data: unknown, structured?: Record<string, unknown>): ToolResult {\n const result: ToolResult = {\n content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],\n };\n if (structured !== undefined) {\n result.structuredContent = structured;\n }\n return result;\n}\n\n/**\n * Build a successful tool result with plain text content.\n */\nexport function textResult(text: string): ToolResult {\n return { content: [{ type: 'text', text }] };\n}\n\n/**\n * Build an error tool result. Honors MCP's `{ isError: true, content }` shape.\n * Optional hint is appended on a new line so the LLM can react.\n */\nexport function errorResult(message: string, hint?: string): ToolResult {\n const text = hint ? `${message}\\n\\nHint: ${hint}` : message;\n return { content: [{ type: 'text', text }], isError: true };\n}\n\nexport interface ToolMetadata {\n title: string;\n description: string;\n inputSchema?: ZodRawShape;\n /**\n * Explicit MCP annotations (readOnlyHint / destructiveHint / ...). Optional\n * — when omitted, `wrapServerWithToolGovernance` (applied centrally in\n * `createMcpServer`) infers them from the tool name. Set this to override\n * the inference for a tool whose name doesn't match the naming convention.\n */\n annotations?: ToolAnnotations;\n}\n\nexport type ToolHandler<TArgs = Record<string, unknown>> = (\n args: TArgs,\n ctx: McpContext,\n meta: ToolMeta,\n) => Promise<unknown>;\n\n/**\n * Register a tool with the central error wrapper.\n *\n * The handler returns a plain value or void. The wrapper:\n * - wraps non-undefined returns in jsonResult()\n * - if the value already looks like a ToolResult (has `content`), passes through\n * - catches McpAuthError / McpUserError / McpInternalError / generic Error\n * - logs every error via ctx.logger.error\n */\nexport function registerTool<TArgs extends Record<string, unknown>>(\n server: McpServer,\n ctx: McpContext,\n name: string,\n metadata: ToolMetadata,\n handler: ToolHandler<TArgs>,\n): void {\n const sdkConfig = {\n title: metadata.title,\n description: metadata.description,\n ...(metadata.inputSchema ? { inputSchema: metadata.inputSchema } : {}),\n ...(metadata.annotations ? { annotations: metadata.annotations } : {}),\n };\n\n // The MCP SDK's registerTool signature is `(name, config, handler)`. The\n // handler arity depends on whether inputSchema is present (1-arg without,\n // 2-arg with). We accept a unified handler shape and dispatch at runtime.\n // The SDK's typing is strict and conditional on the inputSchema generic;\n // bypass with a cast since runtime acceptance is unconditional.\n const wrapped = async (...callbackArgs: unknown[]): Promise<ToolResult> => {\n const hasArgs = callbackArgs.length === 2;\n const args = (hasArgs ? callbackArgs[0] : {}) as TArgs;\n const extra = (hasArgs ? callbackArgs[1] : callbackArgs[0]) as\n | { _meta?: { progressToken?: string | number } }\n | undefined;\n\n const progressToken = extra?._meta?.progressToken;\n const meta: ToolMeta = progressToken !== undefined ? { progressToken } : {};\n\n try {\n const result = await handler(args, ctx, meta);\n if (isToolResult(result)) return result;\n if (result === undefined) return textResult('OK');\n return jsonResult(result);\n } catch (error) {\n return mapErrorToResult(error, ctx, name);\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (server as any).registerTool(name, sdkConfig, wrapped);\n}\n\nfunction isToolResult(value: unknown): value is ToolResult {\n return (\n !!value &&\n typeof value === 'object' &&\n 'content' in value &&\n Array.isArray((value as ToolResult).content)\n );\n}\n\nfunction mapErrorToResult(error: unknown, ctx: McpContext, toolName: string): ToolResult {\n if (error instanceof McpAuthError) {\n ctx.logger.warn(`${toolName}: auth required`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpUserError) {\n ctx.logger.info(`${toolName}: user error`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpInternalError) {\n ctx.logger.error(`${toolName}: internal error`, {\n message: error.message,\n cause: stringifyCause(error.cause),\n });\n return errorResult(`Internal error in ${toolName}.`);\n }\n const message = error instanceof Error ? error.message : String(error);\n ctx.logger.error(`${toolName}: unhandled error`, { message });\n return errorResult(`${toolName}: ${message}`);\n}\n\nfunction stringifyCause(cause: unknown): string | undefined {\n if (cause === undefined || cause === null) return undefined;\n if (cause instanceof Error) return cause.message;\n try {\n return JSON.stringify(cause);\n } catch {\n return String(cause);\n }\n}\n","/**\n * Centralized GraphQL operations for the Cosmicintersection MCP module.\n *\n * Cosmicintersection is the unified data platform for space & science\n * (future-products ecosystem) — data sources & connectors, the dataset catalog\n * (with schema / provenance), processing pipelines & runs (with captured\n * lineage), and reproducible research collaboration (notebooks, analyses,\n * citable releases, access grants). Backend subgraph:\n * ~/products/cosmicintersection/wspace-cosmicintersection-svc/ (Hive service\n * name `cosmicintersection`).\n *\n * All operations run against the WORKSPACE gateway. Workspace scoping is carried\n * by the gateway headers (x-workspace-id / X-Workspace-Authorization) issued by\n * the auth module — Cosmicintersection inputs do NOT carry a workspaceId.\n *\n * Every product-owned root field is prefixed `cos` and every type/enum/input is\n * prefixed `Cos` (the workspaces supergraph naming contract). List queries that\n * return a `*Connection` carry `{ items, pageInfo { cursor hasMore } }` and take\n * a `PaginationInput { cursor, limit, offset }`; the rest return plain arrays.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical vibecontrols / kadaikodi modules' operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments (mirror the backend object types)\n// ---------------------------------------------------------------------------\n\nexport const SOURCE_FIELDS = `\n id name description type status endpoint config tags\n lastSyncedAt createdAt updatedAt workspaceId\n`;\n\nexport const DATASET_FIELDS = `\n id name description status accessLevel format collectionId sourceId\n coverage rowCount sizeBytes version ingestedAt lineageCaptured tags\n createdAt updatedAt workspaceId\n`;\n\nexport const SCHEMA_FIELD_FIELDS = `\n id datasetId name fieldType description nullable position provenance unit\n createdAt updatedAt workspaceId\n`;\n\nexport const COLLECTION_FIELDS = `\n id name slug description isPublic tags createdAt updatedAt workspaceId\n`;\n\nexport const PIPELINE_FIELDS = `\n id name description status trigger schedule definition version lastRunAt\n tags createdAt updatedAt workspaceId\n`;\n\nexport const STEP_FIELDS = `\n id runId name kind status position inputs outputs logsRef durationMs\n startedAt finishedAt errorMessage createdAt updatedAt workspaceId\n`;\n\nexport const RUN_FIELDS = `\n id pipelineId runNumber status params metrics datasetId triggeredBy\n durationMs startedAt finishedAt errorMessage createdAt updatedAt workspaceId\n`;\n\nexport const NOTEBOOK_FIELDS = `\n id title description status runtime environment datasetIds isShared\n shareSlug tags createdAt updatedAt workspaceId\n`;\n\nexport const ANALYSIS_FIELDS = `\n id title status method aiAssisted datasetId notebookId results\n errorMessage startedAt finishedAt createdAt updatedAt workspaceId\n`;\n\nexport const RELEASE_FIELDS = `\n id title version status abstract authors license doi datasetIds\n notebookId publishedAt createdAt updatedAt workspaceId\n`;\n\nexport const GRANT_FIELDS = `\n id datasetId granteeId status scopes reason grantedAt expiresAt\n revokedAt createdAt updatedAt workspaceId\n`;\n\n// ---------------------------------------------------------------------------\n// Sources\n// ---------------------------------------------------------------------------\n\nexport const GET_SOURCE = `\n query CosmicintersectionGetSource($id: ID!) {\n cosSource(id: $id) {\n ${SOURCE_FIELDS}\n datasets { id name status accessLevel }\n }\n }\n`;\n\nexport const LIST_SOURCES = `\n query CosmicintersectionListSources(\n $status: CosSourceStatus\n $type: CosSourceType\n $pagination: PaginationInput\n ) {\n cosListSources(status: $status, type: $type, pagination: $pagination) {\n items { ${SOURCE_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_SOURCE = `\n mutation CosmicintersectionCreateSource($input: CosCreateSourceInput!) {\n cosCreateSource(input: $input) {\n ${SOURCE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_SOURCE = `\n mutation CosmicintersectionUpdateSource($id: ID!, $input: CosUpdateSourceInput!) {\n cosUpdateSource(id: $id, input: $input) {\n ${SOURCE_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_SOURCE = `\n mutation CosmicintersectionArchiveSource($id: ID!) {\n cosArchiveSource(id: $id)\n }\n`;\n\nexport const MARK_SOURCE_SYNCED = `\n mutation CosmicintersectionMarkSourceSynced($id: ID!) {\n cosMarkSourceSynced(id: $id) {\n ${SOURCE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Datasets + schema fields\n// ---------------------------------------------------------------------------\n\nexport const GET_DATASET = `\n query CosmicintersectionGetDataset($id: ID!) {\n cosDataset(id: $id) {\n ${DATASET_FIELDS}\n collection { id name slug }\n source { id name type status }\n schemaFields { ${SCHEMA_FIELD_FIELDS} }\n }\n }\n`;\n\nexport const LIST_DATASETS = `\n query CosmicintersectionListDatasets(\n $collectionId: ID\n $sourceId: ID\n $status: CosDatasetStatus\n $pagination: PaginationInput\n ) {\n cosListDatasets(\n collectionId: $collectionId\n sourceId: $sourceId\n status: $status\n pagination: $pagination\n ) {\n items { ${DATASET_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_DATASET = `\n mutation CosmicintersectionCreateDataset($input: CosCreateDatasetInput!) {\n cosCreateDataset(input: $input) {\n ${DATASET_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_DATASET = `\n mutation CosmicintersectionUpdateDataset($id: ID!, $input: CosUpdateDatasetInput!) {\n cosUpdateDataset(id: $id, input: $input) {\n ${DATASET_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_DATASET = `\n mutation CosmicintersectionArchiveDataset($id: ID!) {\n cosArchiveDataset(id: $id)\n }\n`;\n\nexport const PUBLISH_DATASET = `\n mutation CosmicintersectionPublishDataset($id: ID!) {\n cosPublishDataset(id: $id) {\n ${DATASET_FIELDS}\n }\n }\n`;\n\nexport const LIST_SCHEMA_FIELDS = `\n query CosmicintersectionListSchemaFields($datasetId: ID!) {\n cosListSchemaFields(datasetId: $datasetId) {\n ${SCHEMA_FIELD_FIELDS}\n }\n }\n`;\n\nexport const ADD_SCHEMA_FIELD = `\n mutation CosmicintersectionAddSchemaField($input: CosAddSchemaFieldInput!) {\n cosAddSchemaField(input: $input) {\n ${SCHEMA_FIELD_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Collections\n// ---------------------------------------------------------------------------\n\nexport const LIST_COLLECTIONS = `\n query CosmicintersectionListCollections {\n cosListCollections {\n ${COLLECTION_FIELDS}\n datasets { id name status accessLevel }\n }\n }\n`;\n\nexport const CREATE_COLLECTION = `\n mutation CosmicintersectionCreateCollection($input: CosCreateCollectionInput!) {\n cosCreateCollection(input: $input) {\n ${COLLECTION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Pipelines\n// ---------------------------------------------------------------------------\n\nexport const GET_PIPELINE = `\n query CosmicintersectionGetPipeline($id: ID!) {\n cosPipeline(id: $id) {\n ${PIPELINE_FIELDS}\n runs { id runNumber status startedAt finishedAt }\n }\n }\n`;\n\nexport const LIST_PIPELINES = `\n query CosmicintersectionListPipelines(\n $status: CosPipelineStatus\n $pagination: PaginationInput\n ) {\n cosListPipelines(status: $status, pagination: $pagination) {\n items { ${PIPELINE_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_PIPELINE = `\n mutation CosmicintersectionCreatePipeline($input: CosCreatePipelineInput!) {\n cosCreatePipeline(input: $input) {\n ${PIPELINE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_PIPELINE = `\n mutation CosmicintersectionUpdatePipeline($id: ID!, $input: CosUpdatePipelineInput!) {\n cosUpdatePipeline(id: $id, input: $input) {\n ${PIPELINE_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_PIPELINE = `\n mutation CosmicintersectionArchivePipeline($id: ID!) {\n cosArchivePipeline(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Runs + steps\n// ---------------------------------------------------------------------------\n\nexport const GET_RUN = `\n query CosmicintersectionGetRun($id: ID!) {\n cosRun(id: $id) {\n ${RUN_FIELDS}\n pipeline { id name status }\n steps { ${STEP_FIELDS} }\n }\n }\n`;\n\nexport const LIST_RUNS = `\n query CosmicintersectionListRuns(\n $pipelineId: ID\n $status: CosRunStatus\n $pagination: PaginationInput\n ) {\n cosListRuns(pipelineId: $pipelineId, status: $status, pagination: $pagination) {\n items { ${RUN_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const START_RUN = `\n mutation CosmicintersectionStartRun($input: CosStartRunInput!) {\n cosStartRun(input: $input) {\n ${RUN_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_RUN = `\n mutation CosmicintersectionTransitionRun($id: ID!, $status: CosRunStatus!) {\n cosTransitionRun(id: $id, status: $status) {\n ${RUN_FIELDS}\n }\n }\n`;\n\nexport const LIST_RUN_STEPS = `\n query CosmicintersectionListRunSteps($runId: ID!) {\n cosListRunSteps(runId: $runId) {\n ${STEP_FIELDS}\n }\n }\n`;\n\nexport const ADD_RUN_STEP = `\n mutation CosmicintersectionAddRunStep($input: CosAddRunStepInput!) {\n cosAddRunStep(input: $input) {\n ${STEP_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Notebooks\n// ---------------------------------------------------------------------------\n\nexport const GET_NOTEBOOK = `\n query CosmicintersectionGetNotebook($id: ID!) {\n cosNotebook(id: $id) {\n ${NOTEBOOK_FIELDS}\n analyses { ${ANALYSIS_FIELDS} }\n releases { id title version status }\n }\n }\n`;\n\nexport const LIST_NOTEBOOKS = `\n query CosmicintersectionListNotebooks(\n $status: CosNotebookStatus\n $pagination: PaginationInput\n ) {\n cosListNotebooks(status: $status, pagination: $pagination) {\n items { ${NOTEBOOK_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_NOTEBOOK = `\n mutation CosmicintersectionCreateNotebook($input: CosCreateNotebookInput!) {\n cosCreateNotebook(input: $input) {\n ${NOTEBOOK_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_NOTEBOOK = `\n mutation CosmicintersectionUpdateNotebook($id: ID!, $input: CosUpdateNotebookInput!) {\n cosUpdateNotebook(id: $id, input: $input) {\n ${NOTEBOOK_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_NOTEBOOK = `\n mutation CosmicintersectionArchiveNotebook($id: ID!) {\n cosArchiveNotebook(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Analyses\n// ---------------------------------------------------------------------------\n\nexport const LIST_ANALYSES = `\n query CosmicintersectionListAnalyses(\n $datasetId: ID\n $notebookId: ID\n $status: CosAnalysisStatus\n ) {\n cosListAnalyses(datasetId: $datasetId, notebookId: $notebookId, status: $status) {\n ${ANALYSIS_FIELDS}\n }\n }\n`;\n\nexport const RUN_ANALYSIS = `\n mutation CosmicintersectionRunAnalysis($input: CosRunAnalysisInput!) {\n cosRunAnalysis(input: $input) {\n ${ANALYSIS_FIELDS}\n }\n }\n`;\n\nexport const COMPLETE_ANALYSIS = `\n mutation CosmicintersectionCompleteAnalysis(\n $id: ID!\n $status: CosAnalysisStatus!\n $results: JSON\n $outputFileId: ID\n ) {\n cosCompleteAnalysis(\n id: $id\n status: $status\n results: $results\n outputFileId: $outputFileId\n ) {\n ${ANALYSIS_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Releases\n// ---------------------------------------------------------------------------\n\nexport const LIST_RELEASES = `\n query CosmicintersectionListReleases(\n $status: CosReleaseStatus\n $pagination: PaginationInput\n ) {\n cosListReleases(status: $status, pagination: $pagination) {\n items { ${RELEASE_FIELDS} }\n pageInfo { cursor hasMore }\n }\n }\n`;\n\nexport const CREATE_RELEASE = `\n mutation CosmicintersectionCreateRelease($input: CosCreateReleaseInput!) {\n cosCreateRelease(input: $input) {\n ${RELEASE_FIELDS}\n }\n }\n`;\n\nexport const PUBLISH_RELEASE = `\n mutation CosmicintersectionPublishRelease($id: ID!, $doi: String) {\n cosPublishRelease(id: $id, doi: $doi) {\n ${RELEASE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Access grants\n// ---------------------------------------------------------------------------\n\nexport const LIST_ACCESS_GRANTS = `\n query CosmicintersectionListAccessGrants($datasetId: ID, $status: CosGrantStatus) {\n cosListAccessGrants(datasetId: $datasetId, status: $status) {\n ${GRANT_FIELDS}\n }\n }\n`;\n\nexport const GRANT_ACCESS = `\n mutation CosmicintersectionGrantAccess($input: CosGrantAccessInput!) {\n cosGrantAccess(input: $input) {\n ${GRANT_FIELDS}\n }\n }\n`;\n\nexport const REVOKE_ACCESS = `\n mutation CosmicintersectionRevokeAccess($id: ID!) {\n cosRevokeAccess(id: $id) {\n ${GRANT_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query CosmicintersectionHealth {\n cosHealth\n }\n`;\n","/**\n * Shared zod schemas for the Cosmicintersection tool surface.\n *\n * Every backend enum (each `Cos*` enum in\n * wspace-cosmicintersection-svc/.hive-schema.graphql) is mirrored as a tight\n * zod enum so Claude Desktop grounds tool calls against the exact allowed\n * values. JSON scalar inputs (config, coverage, definition, params, metrics,\n * inputs, outputs, environment, results) are modelled as permissive object\n * records — the backend accepts arbitrary JSON, but a record shape gives the\n * LLM a typed hint.\n */\n\nimport { z } from 'zod';\n\nexport const CosSourceTypeEnum = z\n .enum([\n 'API',\n 'ARCHIVE',\n 'FILE_DROP',\n 'GROUND_SENSOR',\n 'SATELLITE',\n 'SIMULATION',\n 'STREAM',\n 'TELESCOPE',\n ])\n .describe('Kind of upstream data source / connector');\n\nexport const CosSourceStatusEnum = z\n .enum(['CONFIGURING', 'CONNECTED', 'DEGRADED', 'DISABLED', 'ERROR', 'SYNCING'])\n .describe('Lifecycle/connectivity status of a source');\n\nexport const CosDatasetStatusEnum = z\n .enum(['ARCHIVED', 'AVAILABLE', 'DEPRECATED', 'DRAFT', 'INGESTING'])\n .describe('Lifecycle status of a dataset');\n\nexport const CosAccessLevelEnum = z\n .enum(['EMBARGOED', 'PUBLIC', 'RESTRICTED', 'WORKSPACE'])\n .describe('Visibility/access level of a dataset');\n\nexport const CosFieldTypeEnum = z\n .enum([\n 'BOOLEAN',\n 'COORDINATE',\n 'FLOAT',\n 'GEOMETRY',\n 'IMAGE_REF',\n 'INTEGER',\n 'JSON',\n 'SPECTRUM',\n 'STRING',\n 'TIMESTAMP',\n ])\n .describe('Logical type of a dataset schema field');\n\nexport const CosPipelineStatusEnum = z\n .enum(['ACTIVE', 'ARCHIVED', 'DRAFT', 'PAUSED'])\n .describe('Lifecycle status of a processing pipeline');\n\nexport const CosPipelineTriggerEnum = z\n .enum(['MANUAL', 'ON_INGEST', 'SCHEDULED', 'WEBHOOK'])\n .describe('How a pipeline is triggered');\n\nexport const CosRunStatusEnum = z\n .enum(['CANCELLED', 'FAILED', 'QUEUED', 'RUNNING', 'SUCCEEDED'])\n .describe('Lifecycle status of a pipeline run or step');\n\nexport const CosStepKindEnum = z\n .enum(['ANALYZE', 'CALIBRATE', 'EXPORT', 'INGEST', 'NOTIFY', 'TRANSFORM'])\n .describe('Kind of work a run step performs');\n\nexport const CosNotebookStatusEnum = z\n .enum(['ARCHIVED', 'DRAFT', 'PUBLISHED', 'RUNNING'])\n .describe('Lifecycle status of a research notebook');\n\nexport const CosAnalysisStatusEnum = z\n .enum(['COMPLETED', 'FAILED', 'PENDING', 'RUNNING'])\n .describe('Lifecycle status of an analysis run');\n\nexport const CosReleaseStatusEnum = z\n .enum(['DRAFT', 'PUBLISHED', 'RETRACTED', 'UNDER_REVIEW'])\n .describe('Lifecycle status of a citable release');\n\nexport const CosGrantStatusEnum = z\n .enum(['ACTIVE', 'EXPIRED', 'PENDING', 'REVOKED'])\n .describe('Status of a dataset access grant');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs. */\nexport const JsonObject = z.record(z.string(), z.unknown());\n","/**\n * Cosmicintersection source tools — data sources & connectors CRUD + lifecycle.\n *\n * Surface (6): sources_{get,list,create,update,archive,mark_synced}.\n * Backed by the real root fields cosSource / cosListSources / cosCreateSource /\n * cosUpdateSource / cosArchiveSource / cosMarkSourceSynced.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CosSourceTypeEnum, CosSourceStatusEnum, JsonObject } from './shared.js';\n\nexport function registerSourceTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_get')),\n {\n title: 'Get Source',\n description:\n 'Fetch a single Cosmicintersection data source by ID, including the datasets ingested from it.',\n inputSchema: { id: z.string().describe('Source ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosSource: Record<string, unknown> | null;\n }>(ops.GET_SOURCE, { id });\n if (!data.cosSource) return errorResult(`Source ${id} not found`);\n return jsonResult(data.cosSource);\n } catch (error) {\n ctx.logger.error('cosmicintersection sources_get failed', { error: String(error) });\n return errorResult(\n `Failed to get source: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_list')),\n {\n title: 'List Sources',\n description:\n 'List data sources in the bound workspace with optional type/status filters and pagination (returns a connection: { items, pageInfo }).',\n inputSchema: {\n type: CosSourceTypeEnum.optional().describe('Filter by source type'),\n status: CosSourceStatusEnum.optional().describe('Filter by connectivity status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ type, status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n cosListSources: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_SOURCES, {\n type,\n status,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.cosListSources);\n } catch (error) {\n ctx.logger.error('cosmicintersection sources_list failed', { error: String(error) });\n return errorResult(\n `Failed to list sources: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_create')),\n {\n title: 'Create Source',\n description:\n 'Register a new data source / connector. Defaults: type=ARCHIVE, status=CONFIGURING.',\n inputSchema: {\n name: z.string().min(1).describe('Source display name'),\n type: CosSourceTypeEnum.optional().describe('Source type (default ARCHIVE)'),\n status: CosSourceStatusEnum.optional().describe('Initial status (default CONFIGURING)'),\n description: z.string().optional().describe('Source description'),\n endpoint: z.string().optional().describe('Connection endpoint / URL'),\n credentialRef: z.string().optional().describe('Reference to a stored credential'),\n config: JsonObject.optional().describe('Connector configuration JSON'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({ name, type, status, description, endpoint, credentialRef, config, tags }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (type !== undefined) input.type = type;\n if (status !== undefined) input.status = status;\n if (description !== undefined) input.description = description;\n if (endpoint !== undefined) input.endpoint = endpoint;\n if (credentialRef !== undefined) input.credentialRef = credentialRef;\n if (config !== undefined) input.config = config;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cosCreateSource: Record<string, unknown>;\n }>(ops.CREATE_SOURCE, { input });\n return jsonResult(data.cosCreateSource);\n } catch (error) {\n ctx.logger.error('cosmicintersection sources_create failed', { error: String(error) });\n return errorResult(\n `Failed to create source: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_update')),\n {\n title: 'Update Source',\n description: 'Update a data source. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Source ID'),\n name: z.string().optional().describe('Updated display name'),\n type: CosSourceTypeEnum.optional().describe('Updated source type'),\n status: CosSourceStatusEnum.optional().describe('Updated status'),\n description: z.string().optional().describe('Updated description'),\n endpoint: z.string().optional().describe('Updated endpoint'),\n credentialRef: z.string().optional().describe('Updated credential reference'),\n config: JsonObject.optional().describe('Updated connector configuration JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({ id, name, type, status, description, endpoint, credentialRef, config, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (type !== undefined) input.type = type;\n if (status !== undefined) input.status = status;\n if (description !== undefined) input.description = description;\n if (endpoint !== undefined) input.endpoint = endpoint;\n if (credentialRef !== undefined) input.credentialRef = credentialRef;\n if (config !== undefined) input.config = config;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/type/status/description/endpoint/credentialRef/config/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n cosUpdateSource: Record<string, unknown>;\n }>(ops.UPDATE_SOURCE, { id, input });\n return jsonResult(data.cosUpdateSource);\n } catch (error) {\n ctx.logger.error('cosmicintersection sources_update failed', { error: String(error) });\n return errorResult(\n `Failed to update source: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_archive')),\n {\n title: 'Archive Source',\n description: 'Archive (soft-delete) a data source. Returns true on success.',\n inputSchema: { id: z.string().describe('Source ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cosArchiveSource: boolean }>(\n ops.ARCHIVE_SOURCE,\n { id },\n );\n return jsonResult({ archived: data.cosArchiveSource });\n } catch (error) {\n ctx.logger.error('cosmicintersection sources_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive source: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sources_mark_synced')),\n {\n title: 'Mark Source Synced',\n description: 'Record a successful sync for a source (sets status CONNECTED + lastSyncedAt).',\n inputSchema: { id: z.string().describe('Source ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosMarkSourceSynced: Record<string, unknown>;\n }>(ops.MARK_SOURCE_SYNCED, { id });\n return jsonResult(data.cosMarkSourceSynced);\n } catch (error) {\n ctx.logger.error('cosmicintersection sources_mark_synced failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to mark source synced: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Cosmicintersection dataset tools — catalog CRUD + lifecycle + schema fields.\n *\n * Surface (8): datasets_{get,list,create,update,archive,publish},\n * datasets_fields_{list,add}. Backed by the real root fields cosDataset /\n * cosListDatasets / cosCreateDataset / cosUpdateDataset / cosArchiveDataset /\n * cosPublishDataset / cosListSchemaFields / cosAddSchemaField.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport {\n CosDatasetStatusEnum,\n CosAccessLevelEnum,\n CosFieldTypeEnum,\n JsonObject,\n} from './shared.js';\n\nexport function registerDatasetTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'datasets_get')),\n {\n title: 'Get Dataset',\n description:\n 'Fetch a single dataset by ID, including its collection, source, and schema fields.',\n inputSchema: { id: z.string().describe('Dataset ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosDataset: Record<string, unknown> | null;\n }>(ops.GET_DATASET, { id });\n if (!data.cosDataset) return errorResult(`Dataset ${id} not found`);\n return jsonResult(data.cosDataset);\n } catch (error) {\n ctx.logger.error('cosmicintersection datasets_get failed', { error: String(error) });\n return errorResult(\n `Failed to get dataset: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'datasets_list')),\n {\n title: 'List Datasets',\n description:\n 'List datasets in the bound workspace with optional collection/source/status filters and pagination (returns a connection: { items, pageInfo }).',\n inputSchema: {\n collectionId: z.string().optional().describe('Filter by collection ID'),\n sourceId: z.string().optional().describe('Filter by source ID'),\n status: CosDatasetStatusEnum.optional().describe('Filter by lifecycle status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ collectionId, sourceId, status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n cosListDatasets: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_DATASETS, {\n collectionId,\n sourceId,\n status,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.cosListDatasets);\n } catch (error) {\n ctx.logger.error('cosmicintersection datasets_list failed', { error: String(error) });\n return errorResult(\n `Failed to list datasets: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'datasets_create')),\n {\n title: 'Create Dataset',\n description:\n 'Register a new dataset in the catalog. Defaults: accessLevel=WORKSPACE, status=DRAFT. Reference a wspace-files-svc File via fileId for the raw artifact.',\n inputSchema: {\n name: z.string().min(1).describe('Dataset name'),\n accessLevel: CosAccessLevelEnum.optional().describe('Access level (default WORKSPACE)'),\n status: CosDatasetStatusEnum.optional().describe('Initial status (default DRAFT)'),\n description: z.string().optional().describe('Dataset description'),\n collectionId: z.string().optional().describe('Parent collection ID'),\n sourceId: z.string().optional().describe('Originating source ID'),\n fileId: z.string().optional().describe('wspace-files-svc File ID for the raw artifact'),\n format: z.string().optional().describe('Data format (e.g. csv, parquet, fits)'),\n coverage: JsonObject.optional().describe('Spatial/temporal coverage JSON'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({\n name,\n accessLevel,\n status,\n description,\n collectionId,\n sourceId,\n fileId,\n format,\n coverage,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (accessLevel !== undefined) input.accessLevel = accessLevel;\n if (status !== undefined) input.status = status;\n if (description !== undefined) input.description = description;\n if (collectionId !== undefined) input.collectionId = collectionId;\n if (sourceId !== undefined) input.sourceId = sourceId;\n if (fileId !== undefined) input.fileId = fileId;\n if (format !== undefined) input.format = format;\n if (coverage !== undefined) input.coverage = coverage;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cosCreateDataset: Record<string, unknown>;\n }>(ops.CREATE_DATASET, { input });\n return jsonResult(data.cosCreateDataset);\n } catch (error) {\n ctx.logger.error('cosmicintersection datasets_create failed', { error: String(error) });\n return errorResult(\n `Failed to create dataset: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'datasets_update')),\n {\n title: 'Update Dataset',\n description: 'Update a dataset. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Dataset ID'),\n name: z.string().optional().describe('Updated name'),\n accessLevel: CosAccessLevelEnum.optional().describe('Updated access level'),\n description: z.string().optional().describe('Updated description'),\n collectionId: z.string().optional().describe('Updated collection ID'),\n format: z.string().optional().describe('Updated data format'),\n coverage: JsonObject.optional().describe('Updated coverage JSON'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({ id, name, accessLevel, description, collectionId, format, coverage, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (accessLevel !== undefined) input.accessLevel = accessLevel;\n if (description !== undefined) input.description = description;\n if (collectionId !== undefined) input.collectionId = collectionId;\n if (format !== undefined) input.format = format;\n if (coverage !== undefined) input.coverage = coverage;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/accessLevel/description/collectionId/format/coverage/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n cosUpdateDataset: Record<string, unknown>;\n }>(ops.UPDATE_DATASET, { id, input });\n return jsonResult(data.cosUpdateDataset);\n } catch (error) {\n ctx.logger.error('cosmicintersection datasets_update failed', { error: String(error) });\n return errorResult(\n `Failed to update dataset: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'datasets_archive')),\n {\n title: 'Archive Dataset',\n description: 'Archive (soft-delete) a dataset. Returns true on success.',\n inputSchema: { id: z.string().describe('Dataset ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cosArchiveDataset: boolean }>(\n ops.ARCHIVE_DATASET,\n { id },\n );\n return jsonResult({ archived: data.cosArchiveDataset });\n } catch (error) {\n ctx.logger.error('cosmicintersection datasets_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive dataset: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'datasets_publish')),\n {\n title: 'Publish Dataset',\n description: 'Mark a dataset AVAILABLE once ingestion completes (sets ingestedAt).',\n inputSchema: { id: z.string().describe('Dataset ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosPublishDataset: Record<string, unknown>;\n }>(ops.PUBLISH_DATASET, { id });\n return jsonResult(data.cosPublishDataset);\n } catch (error) {\n ctx.logger.error('cosmicintersection datasets_publish failed', { error: String(error) });\n return errorResult(\n `Failed to publish dataset: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'datasets_fields_list')),\n {\n title: 'List Schema Fields',\n description: 'List the schema fields (columns) of a dataset.',\n inputSchema: { datasetId: z.string().describe('Dataset ID') },\n },\n async ({ datasetId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosListSchemaFields: Array<Record<string, unknown>>;\n }>(ops.LIST_SCHEMA_FIELDS, { datasetId });\n return jsonResult(data.cosListSchemaFields);\n } catch (error) {\n ctx.logger.error('cosmicintersection datasets_fields_list failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to list schema fields: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'datasets_fields_add')),\n {\n title: 'Add Schema Field',\n description:\n 'Add a schema field (column) to a dataset. Defaults: fieldType=STRING, nullable=true.',\n inputSchema: {\n datasetId: z.string().describe('Dataset ID'),\n name: z.string().min(1).describe('Field name'),\n fieldType: CosFieldTypeEnum.optional().describe('Field logical type (default STRING)'),\n description: z.string().optional().describe('Field description'),\n nullable: z.boolean().optional().describe('Whether the field is nullable (default true)'),\n position: z.number().int().optional().describe('Ordinal position in the schema'),\n provenance: z.string().optional().describe('Provenance / derivation note'),\n unit: z.string().optional().describe('Physical unit (e.g. arcsec, Jy)'),\n },\n },\n async ({ datasetId, name, fieldType, description, nullable, position, provenance, unit }) => {\n try {\n const input: Record<string, unknown> = { datasetId, name };\n if (fieldType !== undefined) input.fieldType = fieldType;\n if (description !== undefined) input.description = description;\n if (nullable !== undefined) input.nullable = nullable;\n if (position !== undefined) input.position = position;\n if (provenance !== undefined) input.provenance = provenance;\n if (unit !== undefined) input.unit = unit;\n\n const data = await ctx.gql.workspace.request<{\n cosAddSchemaField: Record<string, unknown>;\n }>(ops.ADD_SCHEMA_FIELD, { input });\n return jsonResult(data.cosAddSchemaField);\n } catch (error) {\n ctx.logger.error('cosmicintersection datasets_fields_add failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to add schema field: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Cosmicintersection collection tools — dataset grouping.\n *\n * Surface (2): collections_{list,create}. Backed by the real root fields\n * cosListCollections / cosCreateCollection.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerCollectionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_list')),\n {\n title: 'List Collections',\n description: 'List all dataset collections in the bound workspace, with their datasets.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosListCollections: Array<Record<string, unknown>>;\n }>(ops.LIST_COLLECTIONS, {});\n return jsonResult(data.cosListCollections);\n } catch (error) {\n ctx.logger.error('cosmicintersection collections_list failed', { error: String(error) });\n return errorResult(\n `Failed to list collections: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'collections_create')),\n {\n title: 'Create Collection',\n description: 'Create a dataset collection. Defaults: isPublic=false.',\n inputSchema: {\n name: z.string().min(1).describe('Collection name'),\n slug: z.string().optional().describe('URL slug, unique within the workspace'),\n description: z.string().optional().describe('Collection description'),\n isPublic: z\n .boolean()\n .optional()\n .describe('Whether the collection is public (default false)'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({ name, slug, description, isPublic, tags }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (slug !== undefined) input.slug = slug;\n if (description !== undefined) input.description = description;\n if (isPublic !== undefined) input.isPublic = isPublic;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cosCreateCollection: Record<string, unknown>;\n }>(ops.CREATE_COLLECTION, { input });\n return jsonResult(data.cosCreateCollection);\n } catch (error) {\n ctx.logger.error('cosmicintersection collections_create failed', { error: String(error) });\n return errorResult(\n `Failed to create collection: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Cosmicintersection pipeline tools — processing pipeline CRUD + lifecycle.\n *\n * Surface (5): pipelines_{get,list,create,update,archive}. Backed by the real\n * root fields cosPipeline / cosListPipelines / cosCreatePipeline /\n * cosUpdatePipeline / cosArchivePipeline.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CosPipelineStatusEnum, CosPipelineTriggerEnum, JsonObject } from './shared.js';\n\nexport function registerPipelineTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_get')),\n {\n title: 'Get Pipeline',\n description: 'Fetch a single processing pipeline by ID, including its recent runs.',\n inputSchema: { id: z.string().describe('Pipeline ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosPipeline: Record<string, unknown> | null;\n }>(ops.GET_PIPELINE, { id });\n if (!data.cosPipeline) return errorResult(`Pipeline ${id} not found`);\n return jsonResult(data.cosPipeline);\n } catch (error) {\n ctx.logger.error('cosmicintersection pipelines_get failed', { error: String(error) });\n return errorResult(\n `Failed to get pipeline: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_list')),\n {\n title: 'List Pipelines',\n description:\n 'List processing pipelines with optional status filter and pagination (returns a connection: { items, pageInfo }).',\n inputSchema: {\n status: CosPipelineStatusEnum.optional().describe('Filter by lifecycle status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n cosListPipelines: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_PIPELINES, {\n status,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.cosListPipelines);\n } catch (error) {\n ctx.logger.error('cosmicintersection pipelines_list failed', { error: String(error) });\n return errorResult(\n `Failed to list pipelines: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_create')),\n {\n title: 'Create Pipeline',\n description: 'Create a processing pipeline. Defaults: trigger=MANUAL.',\n inputSchema: {\n name: z.string().min(1).describe('Pipeline name'),\n trigger: CosPipelineTriggerEnum.optional().describe('Trigger mode (default MANUAL)'),\n description: z.string().optional().describe('Pipeline description'),\n definition: JsonObject.optional().describe('Pipeline definition JSON (steps/graph)'),\n schedule: z.string().optional().describe('Cron schedule (when trigger=SCHEDULED)'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({ name, trigger, description, definition, schedule, tags }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (trigger !== undefined) input.trigger = trigger;\n if (description !== undefined) input.description = description;\n if (definition !== undefined) input.definition = definition;\n if (schedule !== undefined) input.schedule = schedule;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cosCreatePipeline: Record<string, unknown>;\n }>(ops.CREATE_PIPELINE, { input });\n return jsonResult(data.cosCreatePipeline);\n } catch (error) {\n ctx.logger.error('cosmicintersection pipelines_create failed', { error: String(error) });\n return errorResult(\n `Failed to create pipeline: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_update')),\n {\n title: 'Update Pipeline',\n description: 'Update a pipeline. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Pipeline ID'),\n name: z.string().optional().describe('Updated name'),\n status: CosPipelineStatusEnum.optional().describe('Updated lifecycle status'),\n trigger: CosPipelineTriggerEnum.optional().describe('Updated trigger mode'),\n description: z.string().optional().describe('Updated description'),\n definition: JsonObject.optional().describe('Updated definition JSON'),\n schedule: z.string().optional().describe('Updated cron schedule'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({ id, name, status, trigger, description, definition, schedule, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (status !== undefined) input.status = status;\n if (trigger !== undefined) input.trigger = trigger;\n if (description !== undefined) input.description = description;\n if (definition !== undefined) input.definition = definition;\n if (schedule !== undefined) input.schedule = schedule;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of name/status/trigger/description/definition/schedule/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n cosUpdatePipeline: Record<string, unknown>;\n }>(ops.UPDATE_PIPELINE, { id, input });\n return jsonResult(data.cosUpdatePipeline);\n } catch (error) {\n ctx.logger.error('cosmicintersection pipelines_update failed', { error: String(error) });\n return errorResult(\n `Failed to update pipeline: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'pipelines_archive')),\n {\n title: 'Archive Pipeline',\n description: 'Archive (soft-delete) a pipeline. Returns true on success.',\n inputSchema: { id: z.string().describe('Pipeline ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cosArchivePipeline: boolean }>(\n ops.ARCHIVE_PIPELINE,\n { id },\n );\n return jsonResult({ archived: data.cosArchivePipeline });\n } catch (error) {\n ctx.logger.error('cosmicintersection pipelines_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive pipeline: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Cosmicintersection run tools — pipeline runs + steps lifecycle.\n *\n * Surface (6): runs_{get,list,start,transition}, runs_steps_{list,add}. Backed\n * by the real root fields cosRun / cosListRuns / cosStartRun / cosTransitionRun /\n * cosListRunSteps / cosAddRunStep.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CosRunStatusEnum, CosStepKindEnum, JsonObject } from './shared.js';\n\nexport function registerRunTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'runs_get')),\n {\n title: 'Get Run',\n description: 'Fetch a single pipeline run by ID, including its pipeline and steps.',\n inputSchema: { id: z.string().describe('Run ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosRun: Record<string, unknown> | null;\n }>(ops.GET_RUN, { id });\n if (!data.cosRun) return errorResult(`Run ${id} not found`);\n return jsonResult(data.cosRun);\n } catch (error) {\n ctx.logger.error('cosmicintersection runs_get failed', { error: String(error) });\n return errorResult(\n `Failed to get run: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'runs_list')),\n {\n title: 'List Runs',\n description:\n 'List pipeline runs with optional pipeline/status filters and pagination (returns a connection: { items, pageInfo }).',\n inputSchema: {\n pipelineId: z.string().optional().describe('Filter by pipeline ID'),\n status: CosRunStatusEnum.optional().describe('Filter by run status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ pipelineId, status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n cosListRuns: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_RUNS, {\n pipelineId,\n status,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.cosListRuns);\n } catch (error) {\n ctx.logger.error('cosmicintersection runs_list failed', { error: String(error) });\n return errorResult(\n `Failed to list runs: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'runs_start')),\n {\n title: 'Start Run',\n description: 'Queue a new run of a pipeline (assigns the next run number).',\n inputSchema: {\n pipelineId: z.string().describe('Pipeline ID to run'),\n datasetId: z.string().optional().describe('Input dataset ID'),\n params: JsonObject.optional().describe('Run parameters JSON'),\n },\n },\n async ({ pipelineId, datasetId, params }) => {\n try {\n const input: Record<string, unknown> = { pipelineId };\n if (datasetId !== undefined) input.datasetId = datasetId;\n if (params !== undefined) input.params = params;\n\n const data = await ctx.gql.workspace.request<{\n cosStartRun: Record<string, unknown>;\n }>(ops.START_RUN, { input });\n return jsonResult(data.cosStartRun);\n } catch (error) {\n ctx.logger.error('cosmicintersection runs_start failed', { error: String(error) });\n return errorResult(\n `Failed to start run: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'runs_transition')),\n {\n title: 'Transition Run',\n description:\n 'Advance a run through its lifecycle (validated transitions): QUEUED → RUNNING → SUCCEEDED/FAILED/CANCELLED.',\n inputSchema: {\n id: z.string().describe('Run ID'),\n status: CosRunStatusEnum.describe('Target run status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosTransitionRun: Record<string, unknown>;\n }>(ops.TRANSITION_RUN, { id, status });\n return jsonResult(data.cosTransitionRun);\n } catch (error) {\n ctx.logger.error('cosmicintersection runs_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition run: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'runs_steps_list')),\n {\n title: 'List Run Steps',\n description: 'List the steps of a pipeline run, in order.',\n inputSchema: { runId: z.string().describe('Run ID') },\n },\n async ({ runId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosListRunSteps: Array<Record<string, unknown>>;\n }>(ops.LIST_RUN_STEPS, { runId });\n return jsonResult(data.cosListRunSteps);\n } catch (error) {\n ctx.logger.error('cosmicintersection runs_steps_list failed', { error: String(error) });\n return errorResult(\n `Failed to list run steps: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'runs_steps_add')),\n {\n title: 'Add Run Step',\n description: 'Append a step to a run. Defaults: kind=TRANSFORM.',\n inputSchema: {\n runId: z.string().describe('Run ID'),\n name: z.string().min(1).describe('Step name'),\n kind: CosStepKindEnum.optional().describe('Step kind (default TRANSFORM)'),\n inputs: JsonObject.optional().describe('Step inputs JSON'),\n position: z.number().int().optional().describe('Ordinal position in the run'),\n },\n },\n async ({ runId, name, kind, inputs, position }) => {\n try {\n const input: Record<string, unknown> = { runId, name };\n if (kind !== undefined) input.kind = kind;\n if (inputs !== undefined) input.inputs = inputs;\n if (position !== undefined) input.position = position;\n\n const data = await ctx.gql.workspace.request<{\n cosAddRunStep: Record<string, unknown>;\n }>(ops.ADD_RUN_STEP, { input });\n return jsonResult(data.cosAddRunStep);\n } catch (error) {\n ctx.logger.error('cosmicintersection runs_steps_add failed', { error: String(error) });\n return errorResult(\n `Failed to add run step: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Cosmicintersection notebook tools — research notebook CRUD + lifecycle.\n *\n * Surface (5): notebooks_{get,list,create,update,archive}. Backed by the real\n * root fields cosNotebook / cosListNotebooks / cosCreateNotebook /\n * cosUpdateNotebook / cosArchiveNotebook.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CosNotebookStatusEnum, JsonObject } from './shared.js';\n\nexport function registerNotebookTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notebooks_get')),\n {\n title: 'Get Notebook',\n description: 'Fetch a single research notebook by ID, including its analyses and releases.',\n inputSchema: { id: z.string().describe('Notebook ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosNotebook: Record<string, unknown> | null;\n }>(ops.GET_NOTEBOOK, { id });\n if (!data.cosNotebook) return errorResult(`Notebook ${id} not found`);\n return jsonResult(data.cosNotebook);\n } catch (error) {\n ctx.logger.error('cosmicintersection notebooks_get failed', { error: String(error) });\n return errorResult(\n `Failed to get notebook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notebooks_list')),\n {\n title: 'List Notebooks',\n description:\n 'List research notebooks with optional status filter and pagination (returns a connection: { items, pageInfo }).',\n inputSchema: {\n status: CosNotebookStatusEnum.optional().describe('Filter by lifecycle status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n cosListNotebooks: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_NOTEBOOKS, {\n status,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.cosListNotebooks);\n } catch (error) {\n ctx.logger.error('cosmicintersection notebooks_list failed', { error: String(error) });\n return errorResult(\n `Failed to list notebooks: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notebooks_create')),\n {\n title: 'Create Notebook',\n description:\n 'Create a research notebook. Reference a wspace-files-svc File via fileId for the notebook document.',\n inputSchema: {\n title: z.string().min(1).describe('Notebook title'),\n description: z.string().optional().describe('Notebook description'),\n runtime: z.string().optional().describe('Runtime (e.g. python3.11, julia)'),\n environment: JsonObject.optional().describe('Environment / dependency JSON'),\n datasetIds: z\n .array(z.string())\n .optional()\n .describe('Dataset IDs referenced by the notebook'),\n fileId: z\n .string()\n .optional()\n .describe('wspace-files-svc File ID for the notebook document'),\n tags: z.array(z.string()).optional().describe('Free-form tags'),\n },\n },\n async ({ title, description, runtime, environment, datasetIds, fileId, tags }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (description !== undefined) input.description = description;\n if (runtime !== undefined) input.runtime = runtime;\n if (environment !== undefined) input.environment = environment;\n if (datasetIds !== undefined) input.datasetIds = datasetIds;\n if (fileId !== undefined) input.fileId = fileId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n cosCreateNotebook: Record<string, unknown>;\n }>(ops.CREATE_NOTEBOOK, { input });\n return jsonResult(data.cosCreateNotebook);\n } catch (error) {\n ctx.logger.error('cosmicintersection notebooks_create failed', { error: String(error) });\n return errorResult(\n `Failed to create notebook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notebooks_update')),\n {\n title: 'Update Notebook',\n description: 'Update a research notebook. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Notebook ID'),\n title: z.string().optional().describe('Updated title'),\n description: z.string().optional().describe('Updated description'),\n status: CosNotebookStatusEnum.optional().describe('Updated lifecycle status'),\n runtime: z.string().optional().describe('Updated runtime'),\n environment: JsonObject.optional().describe('Updated environment JSON'),\n datasetIds: z.array(z.string()).optional().describe('Updated dataset IDs'),\n isShared: z.boolean().optional().describe('Whether the notebook is shared'),\n shareSlug: z.string().optional().describe('Public share slug'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n title,\n description,\n status,\n runtime,\n environment,\n datasetIds,\n isShared,\n shareSlug,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status;\n if (runtime !== undefined) input.runtime = runtime;\n if (environment !== undefined) input.environment = environment;\n if (datasetIds !== undefined) input.datasetIds = datasetIds;\n if (isShared !== undefined) input.isShared = isShared;\n if (shareSlug !== undefined) input.shareSlug = shareSlug;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult(\n 'No updates specified — provide at least one of title/description/status/runtime/environment/datasetIds/isShared/shareSlug/tags',\n );\n }\n\n const data = await ctx.gql.workspace.request<{\n cosUpdateNotebook: Record<string, unknown>;\n }>(ops.UPDATE_NOTEBOOK, { id, input });\n return jsonResult(data.cosUpdateNotebook);\n } catch (error) {\n ctx.logger.error('cosmicintersection notebooks_update failed', { error: String(error) });\n return errorResult(\n `Failed to update notebook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'notebooks_archive')),\n {\n title: 'Archive Notebook',\n description: 'Archive (soft-delete) a research notebook. Returns true on success.',\n inputSchema: { id: z.string().describe('Notebook ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ cosArchiveNotebook: boolean }>(\n ops.ARCHIVE_NOTEBOOK,\n { id },\n );\n return jsonResult({ archived: data.cosArchiveNotebook });\n } catch (error) {\n ctx.logger.error('cosmicintersection notebooks_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive notebook: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Cosmicintersection analysis tools — analysis runs against datasets/notebooks.\n *\n * Surface (3): analyses_{list,run,complete}. Backed by the real root fields\n * cosListAnalyses / cosRunAnalysis / cosCompleteAnalysis.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CosAnalysisStatusEnum, JsonObject } from './shared.js';\n\nexport function registerAnalysisTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'analyses_list')),\n {\n title: 'List Analyses',\n description: 'List analyses, optionally filtered by dataset, notebook, and/or status.',\n inputSchema: {\n datasetId: z.string().optional().describe('Filter by dataset ID'),\n notebookId: z.string().optional().describe('Filter by notebook ID'),\n status: CosAnalysisStatusEnum.optional().describe('Filter by analysis status'),\n },\n },\n async ({ datasetId, notebookId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosListAnalyses: Array<Record<string, unknown>>;\n }>(ops.LIST_ANALYSES, { datasetId, notebookId, status });\n return jsonResult(data.cosListAnalyses);\n } catch (error) {\n ctx.logger.error('cosmicintersection analyses_list failed', { error: String(error) });\n return errorResult(\n `Failed to list analyses: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'analyses_run')),\n {\n title: 'Run Analysis',\n description: 'Queue a new analysis run. Defaults: aiAssisted=false.',\n inputSchema: {\n title: z.string().min(1).describe('Analysis title'),\n method: z.string().optional().describe('Analysis method / algorithm'),\n datasetId: z.string().optional().describe('Input dataset ID'),\n notebookId: z.string().optional().describe('Source notebook ID'),\n aiAssisted: z.boolean().optional().describe('Whether AI-assisted (default false)'),\n },\n },\n async ({ title, method, datasetId, notebookId, aiAssisted }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (method !== undefined) input.method = method;\n if (datasetId !== undefined) input.datasetId = datasetId;\n if (notebookId !== undefined) input.notebookId = notebookId;\n if (aiAssisted !== undefined) input.aiAssisted = aiAssisted;\n\n const data = await ctx.gql.workspace.request<{\n cosRunAnalysis: Record<string, unknown>;\n }>(ops.RUN_ANALYSIS, { input });\n return jsonResult(data.cosRunAnalysis);\n } catch (error) {\n ctx.logger.error('cosmicintersection analyses_run failed', { error: String(error) });\n return errorResult(\n `Failed to run analysis: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'analyses_complete')),\n {\n title: 'Complete Analysis',\n description:\n 'Record the terminal outcome of an analysis run (COMPLETED / FAILED), optionally attaching results JSON and a rendered output File.',\n inputSchema: {\n id: z.string().describe('Analysis ID'),\n status: CosAnalysisStatusEnum.describe('Terminal status (COMPLETED or FAILED)'),\n results: JsonObject.optional().describe('Analysis results JSON'),\n outputFileId: z\n .string()\n .optional()\n .describe('wspace-files-svc File ID of the rendered visualization'),\n },\n },\n async ({ id, status, results, outputFileId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosCompleteAnalysis: Record<string, unknown>;\n }>(ops.COMPLETE_ANALYSIS, { id, status, results, outputFileId });\n return jsonResult(data.cosCompleteAnalysis);\n } catch (error) {\n ctx.logger.error('cosmicintersection analyses_complete failed', { error: String(error) });\n return errorResult(\n `Failed to complete analysis: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Cosmicintersection release tools — citable, DOI-stamped research releases.\n *\n * Surface (3): releases_{list,create,publish}. Backed by the real root fields\n * cosListReleases / cosCreateRelease / cosPublishRelease.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CosReleaseStatusEnum } from './shared.js';\n\nexport function registerReleaseTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'releases_list')),\n {\n title: 'List Releases',\n description:\n 'List citable releases with optional status filter and pagination (returns a connection: { items, pageInfo }).',\n inputSchema: {\n status: CosReleaseStatusEnum.optional().describe('Filter by lifecycle status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n cosListReleases: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_RELEASES, {\n status,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.cosListReleases);\n } catch (error) {\n ctx.logger.error('cosmicintersection releases_list failed', { error: String(error) });\n return errorResult(\n `Failed to list releases: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'releases_create')),\n {\n title: 'Create Release',\n description: 'Draft a citable release bundling datasets and/or a notebook for publication.',\n inputSchema: {\n title: z.string().min(1).describe('Release title'),\n version: z.string().optional().describe('Version string (e.g. 1.0.0)'),\n abstract: z.string().optional().describe('Abstract / summary'),\n authors: z.array(z.string()).optional().describe('Author names'),\n license: z.string().optional().describe('License (e.g. CC-BY-4.0)'),\n notebookId: z.string().optional().describe('Source notebook ID'),\n datasetIds: z.array(z.string()).optional().describe('Bundled dataset IDs'),\n },\n },\n async ({ title, version, abstract, authors, license, notebookId, datasetIds }) => {\n try {\n const input: Record<string, unknown> = { title };\n if (version !== undefined) input.version = version;\n if (abstract !== undefined) input.abstract = abstract;\n if (authors !== undefined) input.authors = authors;\n if (license !== undefined) input.license = license;\n if (notebookId !== undefined) input.notebookId = notebookId;\n if (datasetIds !== undefined) input.datasetIds = datasetIds;\n\n const data = await ctx.gql.workspace.request<{\n cosCreateRelease: Record<string, unknown>;\n }>(ops.CREATE_RELEASE, { input });\n return jsonResult(data.cosCreateRelease);\n } catch (error) {\n ctx.logger.error('cosmicintersection releases_create failed', { error: String(error) });\n return errorResult(\n `Failed to create release: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'releases_publish')),\n {\n title: 'Publish Release',\n description: 'Publish a citable release and stamp it with a DOI.',\n inputSchema: {\n id: z.string().describe('Release ID'),\n doi: z.string().optional().describe('DOI to stamp the release with'),\n },\n },\n async ({ id, doi }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosPublishRelease: Record<string, unknown>;\n }>(ops.PUBLISH_RELEASE, { id, doi });\n return jsonResult(data.cosPublishRelease);\n } catch (error) {\n ctx.logger.error('cosmicintersection releases_publish failed', { error: String(error) });\n return errorResult(\n `Failed to publish release: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Cosmicintersection access-grant tools — dataset access grants.\n *\n * Surface (3): grants_{list,grant,revoke}. Backed by the real root fields\n * cosListAccessGrants / cosGrantAccess / cosRevokeAccess.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CosGrantStatusEnum } from './shared.js';\n\nexport function registerGrantTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'grants_list')),\n {\n title: 'List Access Grants',\n description: 'List dataset access grants, optionally filtered by dataset and/or status.',\n inputSchema: {\n datasetId: z.string().optional().describe('Filter by dataset ID'),\n status: CosGrantStatusEnum.optional().describe('Filter by grant status'),\n },\n },\n async ({ datasetId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosListAccessGrants: Array<Record<string, unknown>>;\n }>(ops.LIST_ACCESS_GRANTS, { datasetId, status });\n return jsonResult(data.cosListAccessGrants);\n } catch (error) {\n ctx.logger.error('cosmicintersection grants_list failed', { error: String(error) });\n return errorResult(\n `Failed to list access grants: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'grants_grant')),\n {\n title: 'Grant Dataset Access',\n description:\n 'Grant a user (grantee) scoped access to a dataset, optionally with an expiry and reason.',\n inputSchema: {\n datasetId: z.string().describe('Dataset ID'),\n granteeId: z.string().describe('User ID of the grantee'),\n scopes: z.array(z.string()).optional().describe('Granted scopes (e.g. read, download)'),\n reason: z.string().optional().describe('Reason for the grant'),\n expiresAt: z.string().optional().describe('Expiry timestamp (ISO 8601 DateTime)'),\n },\n },\n async ({ datasetId, granteeId, scopes, reason, expiresAt }) => {\n try {\n const input: Record<string, unknown> = { datasetId, granteeId };\n if (scopes !== undefined) input.scopes = scopes;\n if (reason !== undefined) input.reason = reason;\n if (expiresAt !== undefined) input.expiresAt = expiresAt;\n\n const data = await ctx.gql.workspace.request<{\n cosGrantAccess: Record<string, unknown>;\n }>(ops.GRANT_ACCESS, { input });\n return jsonResult(data.cosGrantAccess);\n } catch (error) {\n ctx.logger.error('cosmicintersection grants_grant failed', { error: String(error) });\n return errorResult(\n `Failed to grant access: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'grants_revoke')),\n {\n title: 'Revoke Dataset Access',\n description: 'Revoke a dataset access grant (sets status REVOKED + revokedAt).',\n inputSchema: { id: z.string().describe('Access grant ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n cosRevokeAccess: Record<string, unknown>;\n }>(ops.REVOKE_ACCESS, { id });\n return jsonResult(data.cosRevokeAccess);\n } catch (error) {\n ctx.logger.error('cosmicintersection grants_revoke failed', { error: String(error) });\n return errorResult(\n `Failed to revoke access: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Cosmicintersection health tool.\n *\n * Surface (1): health. Maps to the @public cosHealth query (no auth required) —\n * a liveness/identity probe for the Cosmicintersection subgraph.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerHealthTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'health')),\n {\n title: 'Cosmicintersection Health Check',\n description:\n 'Public health probe for the Cosmicintersection subgraph (cosHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ cosHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.cosHealth });\n } catch (error) {\n ctx.logger.error('cosmicintersection health failed', { error: String(error) });\n return errorResult(\n `Cosmicintersection health check failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResourceUri, type McpContext } from '../../core/index.js';\nimport { LIST_DATASETS, LIST_COLLECTIONS, LIST_PIPELINES } from './operations.js';\n\n/**\n * Read-only Cosmicintersection MCP resources. URIs are product-prefixed via\n * mcpResourceUri so they don't collide when multiple MCP servers run side by\n * side. Each is tracked at function entry so the shell manifest reflects what\n * was registered even though registration is imperative.\n */\nexport function registerCosmicintersectionResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const datasetsUri = track(mcpResourceUri(ctx.productName, 'datasets'));\n const collectionsUri = track(mcpResourceUri(ctx.productName, 'collections'));\n const pipelinesUri = track(mcpResourceUri(ctx.productName, 'pipelines'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'cosmicintersection-schema',\n schemaUri,\n {\n title: 'Cosmicintersection Domain Schema',\n description:\n 'Overview of the Cosmicintersection data-platform domain — entities, enums, and the per-entity tool surface.',\n mimeType: 'text/plain',\n },\n async () => {\n ctx.logger.debug(`Resource ${schemaUri} requested`);\n const schema = `# Cosmicintersection Domain (Overview)\n\nThe unified data platform for space & science: data sources & connectors, the\ndataset catalog (with schema / provenance), processing pipelines & runs (with\ncaptured lineage), and reproducible research (notebooks, analyses, citable\nreleases, access grants).\n\n## Entities\n- CosSource — an upstream data source / connector (telescope, satellite, archive, API, …)\n- CosDataset (+CosSchemaField) — a cataloged dataset and its schema fields\n- CosCollection — a named grouping of datasets\n- CosPipeline — a processing pipeline\n- CosPipelineRun (+CosPipelineStep) — a run of a pipeline and its steps\n- CosNotebook — a research notebook (references a wspace-files-svc File document)\n- CosAnalysis — an analysis run against a dataset/notebook\n- CosRelease — a citable, DOI-stamped research release\n- CosDataAccessGrant — a scoped access grant to a dataset\n\n## Enums\n- CosSourceType: API, ARCHIVE, FILE_DROP, GROUND_SENSOR, SATELLITE, SIMULATION, STREAM, TELESCOPE\n- CosSourceStatus: CONFIGURING, CONNECTED, DEGRADED, DISABLED, ERROR, SYNCING\n- CosDatasetStatus: ARCHIVED, AVAILABLE, DEPRECATED, DRAFT, INGESTING\n- CosAccessLevel: EMBARGOED, PUBLIC, RESTRICTED, WORKSPACE\n- CosFieldType: BOOLEAN, COORDINATE, FLOAT, GEOMETRY, IMAGE_REF, INTEGER, JSON, SPECTRUM, STRING, TIMESTAMP\n- CosPipelineStatus: ACTIVE, ARCHIVED, DRAFT, PAUSED\n- CosPipelineTrigger: MANUAL, ON_INGEST, SCHEDULED, WEBHOOK\n- CosRunStatus: CANCELLED, FAILED, QUEUED, RUNNING, SUCCEEDED\n- CosStepKind: ANALYZE, CALIBRATE, EXPORT, INGEST, NOTIFY, TRANSFORM\n- CosNotebookStatus: ARCHIVED, DRAFT, PUBLISHED, RUNNING\n- CosAnalysisStatus: COMPLETED, FAILED, PENDING, RUNNING\n- CosReleaseStatus: DRAFT, PUBLISHED, RETRACTED, UNDER_REVIEW\n- CosGrantStatus: ACTIVE, EXPIRED, PENDING, REVOKED\n\n## Tool groups\nsources, datasets (+fields), collections, pipelines, runs (+steps), notebooks,\nanalyses, releases, grants, health. All run against the WORKSPACE gateway\n(workspace-scoped) except the public health probe.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://datasets — first page of the dataset catalog\n server.registerResource(\n 'cosmicintersection-datasets',\n datasetsUri,\n {\n title: 'Cosmicintersection Dataset Catalog',\n description: 'The first 50 datasets in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${datasetsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ cosListDatasets: unknown }>(LIST_DATASETS, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: datasetsUri,\n text: JSON.stringify(data.cosListDatasets, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: datasetsUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://collections — dataset collections\n server.registerResource(\n 'cosmicintersection-collections',\n collectionsUri,\n {\n title: 'Cosmicintersection Collections',\n description: 'All dataset collections in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${collectionsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ cosListCollections: unknown }>(\n LIST_COLLECTIONS,\n {},\n );\n return {\n contents: [\n {\n uri: collectionsUri,\n text: JSON.stringify(data.cosListCollections, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: collectionsUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://pipelines — first page of processing pipelines\n server.registerResource(\n 'cosmicintersection-pipelines',\n pipelinesUri,\n {\n title: 'Cosmicintersection Pipelines',\n description: 'The first 50 processing pipelines in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${pipelinesUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ cosListPipelines: unknown }>(\n LIST_PIPELINES,\n { pagination: { limit: 50, offset: 0 } },\n );\n return {\n contents: [\n {\n uri: pipelinesUri,\n text: JSON.stringify(data.cosListPipelines, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: pipelinesUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpPromptName, type McpContext } from '../../core/index.js';\n\n/**\n * Cosmicintersection MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerCosmicintersectionPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const onboardingName = track(mcpPromptName(p, 'dataset-onboarding'));\n const researchName = track(mcpPromptName(p, 'research-publication'));\n\n // <product>-dataset-onboarding — stand up a source + dataset + schema\n server.registerPrompt(\n onboardingName,\n {\n title: 'Dataset Onboarding',\n description:\n 'Guide for onboarding new data into Cosmicintersection end to end: register a source, catalog a dataset, declare its schema, and publish it.',\n argsSchema: {\n sourceName: z.string().optional().describe('Data source name'),\n datasetName: z.string().optional().describe('Dataset name'),\n },\n },\n ({ sourceName, datasetName }) => {\n ctx.logger.debug(`Prompt ${onboardingName} called`, { sourceName, datasetName });\n const sourceNote = sourceName\n ? `Use the source name \"${sourceName}\".`\n : 'Ask the user for the source name.';\n const datasetNote = datasetName\n ? `Use the dataset name \"${datasetName}\".`\n : 'Ask the user for the dataset name.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me onboard new data into Cosmicintersection.\n\n1. **Register Source**: Use ${p}_sources_create. ${sourceNote} Pick a CosSourceType (TELESCOPE, SATELLITE, ARCHIVE, API, …) and set an endpoint/config if applicable.\n2. **(Optional) Collection**: Use ${p}_collections_create (or ${p}_collections_list) to group related datasets.\n3. **Catalog Dataset**: Use ${p}_datasets_create. ${datasetNote} Link sourceId (and collectionId), set accessLevel and format, and reference the raw artifact File via fileId.\n4. **Declare Schema**: Use ${p}_datasets_fields_add for each column — set fieldType (FLOAT, COORDINATE, SPECTRUM, TIMESTAMP, …), nullable, unit, and provenance.\n5. **Mark Synced**: Use ${p}_sources_mark_synced once the source connection is verified.\n6. **Publish**: Use ${p}_datasets_publish to mark the dataset AVAILABLE once ingestion completes.\n\nShow results at each step and confirm before publishing.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-research-publication — analyze + release workflow\n server.registerPrompt(\n researchName,\n {\n title: 'Research Publication',\n description:\n 'Reproducible-research workflow: build a pipeline, run it, analyze the output in a notebook, and cut a citable DOI-stamped release.',\n argsSchema: {\n notebookId: z.string().optional().describe('Notebook ID to work from'),\n },\n },\n ({ notebookId }) => {\n ctx.logger.debug(`Prompt ${researchName} called`, { notebookId });\n const notebookNote = notebookId\n ? `Work from notebook \"${notebookId}\".`\n : `First list notebooks with ${p}_notebooks_list (or create one with ${p}_notebooks_create) and pick one.`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run a reproducible-research publication workflow. ${notebookNote}\n\n1. **Pipeline**: Use ${p}_pipelines_list / ${p}_pipelines_create to set up the processing pipeline (definition + trigger).\n2. **Run**: Use ${p}_runs_start to queue a run, ${p}_runs_steps_add to append steps, and ${p}_runs_transition to advance it (QUEUED → RUNNING → SUCCEEDED).\n3. **Analyze**: Use ${p}_analyses_run against the resulting dataset/notebook, then ${p}_analyses_complete with the results and an output File.\n4. **Release**: Use ${p}_releases_create to bundle datasets + notebook, then ${p}_releases_publish to stamp a DOI.\n5. **(Optional) Share Access**: Use ${p}_grants_grant to give collaborators scoped access to the underlying datasets.\n\nSummarize lineage (source → dataset → run → analysis → release) at the end.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Cosmicintersection module — domain module for the future-products ecosystem\n * program.\n *\n * Covers all @key entities of wspace-cosmicintersection-svc grouped into\n * per-entity sub-APIs: sources, datasets (+schema fields), collections,\n * pipelines, runs (+steps), notebooks, analyses, releases, grants, plus the\n * @public health probe. Mirrors the rich kadaikodi / crewfoundry modules'\n * structure (tools/<entity>.ts + resources.ts + prompts.ts) and the canonical\n * tags module's typing discipline.\n *\n * Backend: ~/products/cosmicintersection/wspace-cosmicintersection-svc/\n * (Hive service name `cosmicintersection`). All operations run against the\n * WORKSPACE gateway; the @public cosHealth probe is exposed as\n * `<product>_health`.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerSourceTools } from './tools/sources.js';\nimport { registerDatasetTools } from './tools/datasets.js';\nimport { registerCollectionTools } from './tools/collections.js';\nimport { registerPipelineTools } from './tools/pipelines.js';\nimport { registerRunTools } from './tools/runs.js';\nimport { registerNotebookTools } from './tools/notebooks.js';\nimport { registerAnalysisTools } from './tools/analyses.js';\nimport { registerReleaseTools } from './tools/releases.js';\nimport { registerGrantTools } from './tools/grants.js';\nimport { registerHealthTools } from './tools/health.js';\nimport { registerCosmicintersectionResources } from './resources.js';\nimport { registerCosmicintersectionPrompts } from './prompts.js';\n\nconst cosmicintersectionModule: McpModule = {\n id: 'cosmicintersection',\n version: '0.0.1',\n displayName: 'Cosmicintersection',\n dependsOn: ['auth'],\n capabilities: { tools: {}, resources: {}, prompts: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const resources: string[] = [];\n const prompts: string[] = [];\n\n const trackTool = (n: string): string => {\n tools.push(n);\n return n;\n };\n const trackResource = (uri: string): string => {\n resources.push(uri);\n return uri;\n };\n const trackPrompt = (n: string): string => {\n prompts.push(n);\n return n;\n };\n\n registerSourceTools(server, ctx, trackTool);\n registerDatasetTools(server, ctx, trackTool);\n registerCollectionTools(server, ctx, trackTool);\n registerPipelineTools(server, ctx, trackTool);\n registerRunTools(server, ctx, trackTool);\n registerNotebookTools(server, ctx, trackTool);\n registerAnalysisTools(server, ctx, trackTool);\n registerReleaseTools(server, ctx, trackTool);\n registerGrantTools(server, ctx, trackTool);\n registerHealthTools(server, ctx, trackTool);\n\n registerCosmicintersectionResources(server, ctx, trackResource);\n registerCosmicintersectionPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default cosmicintersectionModule;\n"]}