@burdenoff/mcp-libs 2026.704.1 → 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 (184) 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 +14 -14
  176. package/dist/modules/vibecontrols/index.cjs.map +1 -1
  177. package/dist/modules/vibecontrols/index.js +2 -2
  178. package/dist/modules/workspaces/index.cjs +14 -14
  179. package/dist/modules/workspaces/index.cjs.map +1 -1
  180. package/dist/modules/workspaces/index.js +1 -1
  181. package/dist/{tool-name-DlnrBsZ6.d.ts → tool-name-BaPNMZdj.d.ts} +17 -1
  182. package/dist/{tool-name-CQf_IqAj.d.cts → tool-name-Bvb36qmq.d.cts} +17 -1
  183. package/package.json +1 -1
  184. package/dist/chunk-H2OYWLOA.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { mcpToolName, errorResult, jsonResult, mcpResourceUri, mcpPromptName } from '../../chunk-H2OYWLOA.js';
1
+ import { mcpToolName, errorResult, jsonResult, mcpResourceUri, mcpPromptName } from '../../chunk-YOSQUY3M.js';
2
2
  import { z } from 'zod';
3
3
 
4
4
  // src/modules/planmagnet/operations.ts
@@ -18,20 +18,6 @@ var McpInternalError = class extends Error {
18
18
  }
19
19
  };
20
20
 
21
- // src/core/result.ts
22
- function jsonResult(data, structured) {
23
- const result = {
24
- content: [{ type: "text", text: JSON.stringify(data, null, 2) }]
25
- };
26
- return result;
27
- }
28
- function errorResult(message, hint) {
29
- const text = hint ? `${message}
30
-
31
- Hint: ${hint}` : message;
32
- return { content: [{ type: "text", text }], isError: true };
33
- }
34
-
35
21
  // src/core/tool-name.ts
36
22
  var MAX_TOOL_NAME_LENGTH = 63;
37
23
  function assertSafeName(name, kind) {
@@ -50,6 +36,20 @@ function mcpToolName(productName, ...parts) {
50
36
  return assertSafeName(name);
51
37
  }
52
38
 
39
+ // src/core/result.ts
40
+ function jsonResult(data, structured) {
41
+ const result = {
42
+ content: [{ type: "text", text: JSON.stringify(data, null, 2) }]
43
+ };
44
+ return result;
45
+ }
46
+ function errorResult(message, hint) {
47
+ const text = hint ? `${message}
48
+
49
+ Hint: ${hint}` : message;
50
+ return { content: [{ type: "text", text }], isError: true };
51
+ }
52
+
53
53
  // src/modules/products/operations.ts
54
54
  var LIST_PRODUCTS = `
55
55
  query ListProducts($filter: PlatformProductFilterInput, $limit: Int, $offset: Int) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/errors.ts","../../../src/core/result.ts","../../../src/core/tool-name.ts","../../../src/modules/products/operations.ts","../../../src/modules/products/tools.ts","../../../src/modules/products/index.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Error classes for MCP SDK.\n *\n * Modules MUST throw these instead of throwing raw Errors. The registerTool\n * wrapper in result.ts catches and maps them to MCP-protocol-compliant\n * `{ isError: true, content: [...] }` responses.\n *\n * Throwing past the wrapper to the protocol surfaces as JSON-RPC -32603 to\n * the client and is a protocol bug.\n */\n\nexport class McpUserError extends Error {\n public readonly hint: string | undefined;\n\n constructor(message: string, opts?: { hint?: string }) {\n super(message);\n this.name = 'McpUserError';\n this.hint = opts?.hint;\n }\n}\n\nexport class McpAuthError extends McpUserError {\n constructor(message: string, opts?: { hint?: string }) {\n super(message, {\n hint: opts?.hint ?? 'Run the auth_login tool to authenticate.',\n });\n this.name = 'McpAuthError';\n }\n}\n\nexport class McpInternalError extends Error {\n public override readonly cause: unknown;\n\n constructor(message: string, cause?: unknown) {\n super(message);\n this.name = 'McpInternalError';\n this.cause = cause;\n }\n}\n","/**\n * MCP tool result helpers + central handler.\n *\n * Modules NEVER call server.registerTool directly — they use registerTool()\n * from this module so the central try/catch wraps the handler and:\n * - maps thrown McpUserError / McpAuthError / McpInternalError to\n * MCP-protocol-compliant `{ isError: true, content: [...] }` shapes\n * - threads `_meta.progressToken` into ctx.progress for long ops\n * - emits a structured log line on every error\n * - never leaks `cause` from McpInternalError to the client\n *\n * This is the analog of cli-sdk's createProgram() central error handler.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { ZodRawShape } from 'zod';\nimport type { McpContext } from './context.js';\nimport { McpAuthError, McpInternalError, McpUserError } from './errors.js';\n\nexport interface ToolTextContent {\n type: 'text';\n text: string;\n [k: string]: unknown;\n}\n\nexport interface ToolResult {\n content: ToolTextContent[];\n isError?: boolean;\n structuredContent?: Record<string, unknown>;\n [k: string]: unknown;\n}\n\nexport interface ToolMeta {\n progressToken?: string | number;\n}\n\n/**\n * Build a successful tool result with JSON content (pretty-printed).\n */\nexport function jsonResult(data: unknown, structured?: Record<string, unknown>): ToolResult {\n const result: ToolResult = {\n content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],\n };\n if (structured !== undefined) {\n result.structuredContent = structured;\n }\n return result;\n}\n\n/**\n * Build a successful tool result with plain text content.\n */\nexport function textResult(text: string): ToolResult {\n return { content: [{ type: 'text', text }] };\n}\n\n/**\n * Build an error tool result. Honors MCP's `{ isError: true, content }` shape.\n * Optional hint is appended on a new line so the LLM can react.\n */\nexport function errorResult(message: string, hint?: string): ToolResult {\n const text = hint ? `${message}\\n\\nHint: ${hint}` : message;\n return { content: [{ type: 'text', text }], isError: true };\n}\n\nexport interface ToolMetadata {\n title: string;\n description: string;\n inputSchema?: ZodRawShape;\n}\n\nexport type ToolHandler<TArgs = Record<string, unknown>> = (\n args: TArgs,\n ctx: McpContext,\n meta: ToolMeta,\n) => Promise<unknown>;\n\n/**\n * Register a tool with the central error wrapper.\n *\n * The handler returns a plain value or void. The wrapper:\n * - wraps non-undefined returns in jsonResult()\n * - if the value already looks like a ToolResult (has `content`), passes through\n * - catches McpAuthError / McpUserError / McpInternalError / generic Error\n * - logs every error via ctx.logger.error\n */\nexport function registerTool<TArgs extends Record<string, unknown>>(\n server: McpServer,\n ctx: McpContext,\n name: string,\n metadata: ToolMetadata,\n handler: ToolHandler<TArgs>,\n): void {\n const sdkConfig = {\n title: metadata.title,\n description: metadata.description,\n ...(metadata.inputSchema ? { inputSchema: metadata.inputSchema } : {}),\n };\n\n // The MCP SDK's registerTool signature is `(name, config, handler)`. The\n // handler arity depends on whether inputSchema is present (1-arg without,\n // 2-arg with). We accept a unified handler shape and dispatch at runtime.\n // The SDK's typing is strict and conditional on the inputSchema generic;\n // bypass with a cast since runtime acceptance is unconditional.\n const wrapped = async (...callbackArgs: unknown[]): Promise<ToolResult> => {\n const hasArgs = callbackArgs.length === 2;\n const args = (hasArgs ? callbackArgs[0] : {}) as TArgs;\n const extra = (hasArgs ? callbackArgs[1] : callbackArgs[0]) as\n | { _meta?: { progressToken?: string | number } }\n | undefined;\n\n const progressToken = extra?._meta?.progressToken;\n const meta: ToolMeta = progressToken !== undefined ? { progressToken } : {};\n\n try {\n const result = await handler(args, ctx, meta);\n if (isToolResult(result)) return result;\n if (result === undefined) return textResult('OK');\n return jsonResult(result);\n } catch (error) {\n return mapErrorToResult(error, ctx, name);\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (server as any).registerTool(name, sdkConfig, wrapped);\n}\n\nfunction isToolResult(value: unknown): value is ToolResult {\n return (\n !!value &&\n typeof value === 'object' &&\n 'content' in value &&\n Array.isArray((value as ToolResult).content)\n );\n}\n\nfunction mapErrorToResult(error: unknown, ctx: McpContext, toolName: string): ToolResult {\n if (error instanceof McpAuthError) {\n ctx.logger.warn(`${toolName}: auth required`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpUserError) {\n ctx.logger.info(`${toolName}: user error`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpInternalError) {\n ctx.logger.error(`${toolName}: internal error`, {\n message: error.message,\n cause: stringifyCause(error.cause),\n });\n return errorResult(`Internal error in ${toolName}.`);\n }\n const message = error instanceof Error ? error.message : String(error);\n ctx.logger.error(`${toolName}: unhandled error`, { message });\n return errorResult(`${toolName}: ${message}`);\n}\n\nfunction stringifyCause(cause: unknown): string | undefined {\n if (cause === undefined || cause === null) return undefined;\n if (cause instanceof Error) return cause.message;\n try {\n return JSON.stringify(cause);\n } catch {\n return String(cause);\n }\n}\n","/**\n * Tool / resource / prompt naming helpers.\n *\n * Mandatory product prefix avoids collisions when Claude Desktop runs\n * multiple MCP servers concurrently (typical setup is ~6).\n *\n * Tool names are capped at 63 characters — Claude Desktop pre-1.x\n * truncated at 64 in some versions.\n */\n\nimport { McpInternalError } from './errors.js';\n\nconst MAX_TOOL_NAME_LENGTH = 63;\n\nfunction assertSafeName(name: string, kind: 'tool' | 'resource' | 'prompt'): string {\n if (kind === 'tool' && name.length > MAX_TOOL_NAME_LENGTH) {\n throw new McpInternalError(\n `Tool name '${name}' exceeds ${MAX_TOOL_NAME_LENGTH} characters (some MCP clients truncate at 64).`,\n );\n }\n return name;\n}\n\n/**\n * Build a tool name. Format: `<productName>_<...parts>` (snake_case).\n * Example: mcpToolName('vibecontrols', 'vibes', 'list') -> 'vibecontrols_vibes_list'\n */\nexport function mcpToolName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpToolName: productName is required');\n }\n const name = [productName, ...parts].filter(Boolean).join('_');\n return assertSafeName(name, 'tool');\n}\n\n/**\n * Build a resource URI. Format: `<productName>://<...parts>`.\n * Example: mcpResourceUri('vibecontrols', 'schema') -> 'vibecontrols://schema'\n */\nexport function mcpResourceUri(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpResourceUri: productName is required');\n }\n return `${productName}://${parts.filter(Boolean).join('/')}`;\n}\n\n/**\n * Build a prompt name. Format: `<productName>-<...parts>` (kebab-case).\n * Example: mcpPromptName('vibecontrols', 'setup') -> 'vibecontrols-setup'\n */\nexport function mcpPromptName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpPromptName: productName is required');\n }\n return [productName, ...parts].filter(Boolean).join('-');\n}\n\nexport const TOOL_NAME_LIMIT = MAX_TOOL_NAME_LENGTH;\n","export const LIST_PRODUCTS = `\n query ListProducts($filter: PlatformProductFilterInput, $limit: Int, $offset: Int) {\n platformProducts(filter: $filter, limit: $limit, offset: $offset) {\n items { id name slug status logoUrl appUrl }\n total\n }\n }\n`;\n\nexport const GET_PRODUCT = `\n query GetProduct($id: ID!) {\n platformProduct(id: $id) {\n id name slug description status metadata logoUrl appUrl\n }\n }\n`;\n\nexport const CREATE_PRODUCT = `\n mutation CreatePlatformProduct($input: CreatePlatformProductInput!) {\n createPlatformProduct(input: $input) {\n id name slug status\n }\n }\n`;\n\nexport const UPDATE_PRODUCT = `\n mutation UpdatePlatformProduct($id: ID!, $input: UpdatePlatformProductInput!) {\n updatePlatformProduct(id: $id, input: $input) {\n id name status\n }\n }\n`;\n\nexport const DELETE_PRODUCT = `\n mutation DeletePlatformProduct($id: ID!) {\n deletePlatformProduct(id: $id)\n }\n`;\n\nexport const LIST_SHORTCUTS = `\n query ListShortcuts($filter: KeyboardShortcutFilterInput, $limit: Int) {\n keyboardShortcuts(filter: $filter, limit: $limit) {\n items { id label shortcutKey category eventName isEnabled productId }\n }\n }\n`;\n\nexport const CREATE_SHORTCUT = `\n mutation CreateKeyboardShortcut($input: CreateKeyboardShortcutInput!) {\n createKeyboardShortcut(input: $input) {\n id label shortcutKey isEnabled\n }\n }\n`;\n\nexport const UPDATE_SHORTCUT = `\n mutation UpdateKeyboardShortcut($id: ID!, $input: UpdateKeyboardShortcutInput!) {\n updateKeyboardShortcut(id: $id, input: $input) {\n id label shortcutKey isEnabled\n }\n }\n`;\n\nexport const DELETE_SHORTCUT = `\n mutation DeleteKeyboardShortcut($id: ID!) {\n deleteKeyboardShortcut(id: $id)\n }\n`;\n\nexport const LIST_CONTENT_PAGES = `\n query ListContentPages($productId: ID!, $filter: ContentPageFilterInput, $limit: Int) {\n contentPages(productId: $productId, filter: $filter, limit: $limit) {\n items { id slug title visibility isPublished }\n }\n }\n`;\n\nexport const GET_CONTENT_PAGE = `\n query GetContentPage($id: ID!) {\n contentPage(id: $id) {\n id productId slug title content contentFormat\n seoTitle seoDescription seoKeywords\n visibility isPublished sortOrder tags\n lastUpdated version createdAt updatedAt\n }\n }\n`;\n\nexport const GET_SHORTCUT = `\n query GetShortcut($id: ID!) {\n keyboardShortcut(id: $id) {\n id productId shortcutKey eventName category label description\n macKey windowsKey isEnabled isSequence sortOrder\n createdAt updatedAt\n }\n }\n`;\n\nexport const GET_FEATURE_FLAG = `\n query GetFeatureFlag($id: ID!) {\n featureFlag(id: $id) {\n id key name description flagType defaultValue status productId\n category previewable metadata tags\n createdAt updatedAt createdBy updatedBy\n }\n }\n`;\n\nexport const SET_WORKSPACE_FEATURE_FLAG_OVERRIDE = `\n mutation SetWorkspaceFeatureFlagOverride($input: SetWorkspaceFeatureFlagOverrideInput!) {\n setWorkspaceFeatureFlagOverride(input: $input) {\n id featureFlagId workspaceId enabled allowUserOptIn\n createdAt updatedAt createdBy updatedBy\n }\n }\n`;\n\nexport const CREATE_CONTENT_PAGE = `\n mutation CreateContentPage($input: CreateContentPageInput!) {\n createContentPage(input: $input) {\n id slug title visibility\n }\n }\n`;\n\nexport const UPDATE_CONTENT_PAGE = `\n mutation UpdateContentPage($id: ID!, $input: UpdateContentPageInput!) {\n updateContentPage(id: $id, input: $input) {\n id slug title isPublished\n }\n }\n`;\n\nexport const DELETE_CONTENT_PAGE = `\n mutation DeleteContentPage($id: ID!) {\n deleteContentPage(id: $id)\n }\n`;\n\nexport const LIST_FEATURE_FLAGS = `\n query ListFeatureFlags($filter: FeatureFlagFilterInput, $limit: Int) {\n featureFlags(filter: $filter, limit: $limit) {\n items { id key name flagType status defaultValue category productId }\n }\n }\n`;\n\nexport const CREATE_FEATURE_FLAG = `\n mutation CreateFeatureFlag($input: CreateFeatureFlagInput!) {\n createFeatureFlag(input: $input) {\n id key name flagType status\n }\n }\n`;\n\nexport const UPDATE_FEATURE_FLAG = `\n mutation UpdateFeatureFlag($id: ID!, $input: UpdateFeatureFlagInput!) {\n updateFeatureFlag(id: $id, input: $input) {\n id key status defaultValue\n }\n }\n`;\n\nexport const DELETE_FEATURE_FLAG = `\n mutation DeleteFeatureFlag($id: ID!) {\n deleteFeatureFlag(id: $id)\n }\n`;\n\nexport const EVALUATE_FEATURE_FLAGS = `\n query EvaluateFeatureFlags($input: EvaluateFeatureFlagsInput!) {\n evaluateFeatureFlags(input: $input) {\n evaluations { key flagType value variant reason }\n }\n }\n`;\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../core/index.js';\nimport * as ops from './operations.js';\n\ninterface ProductRow {\n id: string;\n name: string;\n slug?: string;\n status?: string;\n logoUrl?: string;\n appUrl?: string;\n}\n\ninterface ShortcutRow {\n id: string;\n label: string;\n shortcutKey: string;\n category?: string;\n eventName?: string;\n isEnabled?: boolean;\n productId?: string;\n}\n\ninterface ContentPageRow {\n id: string;\n slug: string;\n title: string;\n visibility?: string;\n isPublished?: boolean;\n}\n\ninterface FeatureFlagRow {\n id: string;\n key: string;\n name: string;\n flagType?: string;\n status?: string;\n defaultValue?: unknown;\n category?: string;\n productId?: string;\n}\n\ninterface WorkspaceFeatureFlagOverrideRow {\n id: string;\n featureFlagId: string;\n workspaceId: string;\n enabled: boolean;\n allowUserOptIn?: boolean;\n}\n\nexport function registerProductsTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Products ────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_list')),\n {\n title: 'List Platform Products',\n description: 'List platform products with optional search/status filters.',\n inputSchema: {\n search: z.string().optional().describe('Free-text search'),\n status: z.string().optional().describe('Filter by status (DRAFT|ACTIVE|ARCHIVED)'),\n limit: z.number().optional().describe('Page size (default 50)'),\n offset: z.number().optional().describe('Skip results'),\n },\n },\n async ({ search, status, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (search !== undefined) filter.search = search;\n if (status !== undefined) filter.status = status.toUpperCase();\n const data = await ctx.gql.global.request<{\n platformProducts: { items: ProductRow[]; total: number };\n }>(ops.LIST_PRODUCTS, {\n filter: Object.keys(filter).length ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n });\n return jsonResult(data.platformProducts);\n } catch (error) {\n ctx.logger.error('products_list failed', { error: String(error) });\n return errorResult(\n `Failed to list products: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_get')),\n {\n title: 'Get Platform Product',\n description: 'Get a platform product by ID.',\n inputSchema: { id: z.string().describe('Product ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.global.request<{ platformProduct: ProductRow | null }>(\n ops.GET_PRODUCT,\n { id },\n );\n if (!data.platformProduct) return errorResult(`Product ${id} not found`);\n return jsonResult(data.platformProduct);\n } catch (error) {\n ctx.logger.error('products_get failed', { error: String(error) });\n return errorResult(\n `Failed to get product: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_create')),\n {\n title: 'Create Platform Product',\n description: 'Create a new platform product.',\n inputSchema: {\n name: z.string().describe('Product name'),\n slug: z.string().describe('URL slug'),\n description: z.string().optional(),\n status: z.string().optional().describe('DRAFT|ACTIVE|ARCHIVED (default DRAFT)'),\n appUrl: z.string().optional(),\n logoUrl: z.string().optional(),\n },\n },\n async ({ name, slug, description, status, appUrl, logoUrl }) => {\n try {\n const input: Record<string, unknown> = {\n name,\n slug,\n status: (status ?? 'DRAFT').toUpperCase(),\n };\n if (description !== undefined) input.description = description;\n if (appUrl !== undefined) input.appUrl = appUrl;\n if (logoUrl !== undefined) input.logoUrl = logoUrl;\n const data = await ctx.gql.global.request<{ createPlatformProduct: ProductRow }>(\n ops.CREATE_PRODUCT,\n { input },\n );\n return jsonResult(data.createPlatformProduct);\n } catch (error) {\n ctx.logger.error('products_create failed', { error: String(error) });\n return errorResult(\n `Failed to create product: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_update')),\n {\n title: 'Update Platform Product',\n description: 'Update a platform product.',\n inputSchema: {\n id: z.string().describe('Product ID'),\n name: z.string().optional(),\n description: z.string().optional(),\n status: z.string().optional(),\n },\n },\n async ({ id, name, description, status }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status.toUpperCase();\n if (!Object.keys(input).length) return errorResult('No updates specified');\n const data = await ctx.gql.global.request<{ updatePlatformProduct: ProductRow }>(\n ops.UPDATE_PRODUCT,\n { id, input },\n );\n return jsonResult(data.updatePlatformProduct);\n } catch (error) {\n ctx.logger.error('products_update failed', { error: String(error) });\n return errorResult(\n `Failed to update product: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_delete')),\n {\n title: 'Delete Platform Product',\n description: 'Delete a platform product.',\n inputSchema: { id: z.string().describe('Product ID') },\n },\n async ({ id }) => {\n try {\n await ctx.gql.global.request(ops.DELETE_PRODUCT, { id });\n return jsonResult({ status: 'success', message: 'Product deleted', productId: id });\n } catch (error) {\n ctx.logger.error('products_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete product: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Shortcuts ───────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_shortcuts_list')),\n {\n title: 'List Keyboard Shortcuts',\n description: 'List keyboard shortcuts.',\n inputSchema: {\n productId: z.string().optional().describe('Filter by product ID'),\n category: z.string().optional().describe('Filter by category'),\n limit: z.number().optional().describe('Page size (default 100)'),\n },\n },\n async ({ productId, category, limit }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (productId !== undefined) filter.productId = productId;\n if (category !== undefined) filter.category = category;\n const data = await ctx.gql.global.request<{\n keyboardShortcuts: { items: ShortcutRow[] };\n }>(ops.LIST_SHORTCUTS, {\n filter: Object.keys(filter).length ? filter : undefined,\n limit: limit ?? 100,\n });\n return jsonResult(data.keyboardShortcuts);\n } catch (error) {\n ctx.logger.error('products_shortcuts_list failed', { error: String(error) });\n return errorResult(\n `Failed to list shortcuts: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_shortcuts_get')),\n {\n title: 'Get Keyboard Shortcut',\n description:\n 'Get a keyboard shortcut by ID. Returns the shortcut record or an error if not found.',\n inputSchema: { id: z.string().describe('Shortcut ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.global.request<{ keyboardShortcut: ShortcutRow | null }>(\n ops.GET_SHORTCUT,\n { id },\n );\n if (!data.keyboardShortcut) return errorResult(`Shortcut ${id} not found`);\n return jsonResult(data.keyboardShortcut);\n } catch (error) {\n ctx.logger.error('products_shortcuts_get failed', { error: String(error) });\n return errorResult(\n `Failed to get shortcut: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_shortcuts_create')),\n {\n title: 'Create Keyboard Shortcut',\n description: 'Create a keyboard shortcut.',\n inputSchema: {\n label: z.string().describe('Display label'),\n shortcutKey: z.string().describe('Shortcut key sequence (e.g. \"g h\")'),\n eventName: z.string().describe('Event emitted when shortcut fires'),\n productId: z.string().describe('Owning product ID'),\n category: z.string().optional(),\n isEnabled: z.boolean().optional().describe('Default true'),\n },\n },\n async ({ label, shortcutKey, eventName, productId, category, isEnabled }) => {\n try {\n const input: Record<string, unknown> = {\n label,\n shortcutKey,\n eventName,\n productId,\n isEnabled: isEnabled !== false,\n };\n if (category !== undefined) input.category = category;\n const data = await ctx.gql.global.request<{ createKeyboardShortcut: ShortcutRow }>(\n ops.CREATE_SHORTCUT,\n { input },\n );\n return jsonResult(data.createKeyboardShortcut);\n } catch (error) {\n ctx.logger.error('products_shortcuts_create failed', { error: String(error) });\n return errorResult(\n `Failed to create shortcut: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_shortcuts_update')),\n {\n title: 'Update Keyboard Shortcut',\n description: 'Update a keyboard shortcut.',\n inputSchema: {\n id: z.string().describe('Shortcut ID'),\n label: z.string().optional(),\n shortcutKey: z.string().optional(),\n isEnabled: z.boolean().optional(),\n },\n },\n async ({ id, label, shortcutKey, isEnabled }) => {\n try {\n const input: Record<string, unknown> = {};\n if (label !== undefined) input.label = label;\n if (shortcutKey !== undefined) input.shortcutKey = shortcutKey;\n if (isEnabled !== undefined) input.isEnabled = isEnabled;\n if (!Object.keys(input).length) return errorResult('No updates specified');\n const data = await ctx.gql.global.request<{ updateKeyboardShortcut: ShortcutRow }>(\n ops.UPDATE_SHORTCUT,\n { id, input },\n );\n return jsonResult(data.updateKeyboardShortcut);\n } catch (error) {\n ctx.logger.error('products_shortcuts_update failed', { error: String(error) });\n return errorResult(\n `Failed to update shortcut: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_shortcuts_delete')),\n {\n title: 'Delete Keyboard Shortcut',\n description: 'Delete a keyboard shortcut.',\n inputSchema: { id: z.string().describe('Shortcut ID') },\n },\n async ({ id }) => {\n try {\n await ctx.gql.global.request(ops.DELETE_SHORTCUT, { id });\n return jsonResult({ status: 'success', message: 'Shortcut deleted', shortcutId: id });\n } catch (error) {\n ctx.logger.error('products_shortcuts_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete shortcut: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Content Pages ───────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_content_pages_list')),\n {\n title: 'List Content Pages',\n description: 'List content pages for a product.',\n inputSchema: {\n productId: z.string().describe('Product ID'),\n isPublished: z.boolean().optional(),\n visibility: z.string().optional().describe('PUBLIC|PRIVATE'),\n limit: z.number().optional().describe('Page size (default 100)'),\n },\n },\n async ({ productId, isPublished, visibility, limit }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (isPublished !== undefined) filter.isPublished = isPublished;\n if (visibility !== undefined) filter.visibility = visibility.toUpperCase();\n const data = await ctx.gql.global.request<{\n contentPages: { items: ContentPageRow[] };\n }>(ops.LIST_CONTENT_PAGES, {\n productId,\n filter: Object.keys(filter).length ? filter : undefined,\n limit: limit ?? 100,\n });\n return jsonResult(data.contentPages);\n } catch (error) {\n ctx.logger.error('products_content_pages_list failed', { error: String(error) });\n return errorResult(\n `Failed to list content pages: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_content_pages_get')),\n {\n title: 'Get Content Page',\n description:\n 'Get a content page by ID. Returns the page record (including content body) or an error if not found.',\n inputSchema: { id: z.string().describe('Content page ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.global.request<{ contentPage: ContentPageRow | null }>(\n ops.GET_CONTENT_PAGE,\n { id },\n );\n if (!data.contentPage) return errorResult(`Content page ${id} not found`);\n return jsonResult(data.contentPage);\n } catch (error) {\n ctx.logger.error('products_content_pages_get failed', { error: String(error) });\n return errorResult(\n `Failed to get content page: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_content_pages_create')),\n {\n title: 'Create Content Page',\n description: 'Create a content page.',\n inputSchema: {\n productId: z.string().describe('Product ID'),\n slug: z.string().describe('Page slug'),\n title: z.string().describe('Page title'),\n content: z.string().describe('Page content (markdown/html)'),\n visibility: z.string().optional().describe('PUBLIC|PRIVATE (default PUBLIC)'),\n isPublished: z.boolean().optional(),\n },\n },\n async ({ productId, slug, title, content, visibility, isPublished }) => {\n try {\n const input: Record<string, unknown> = {\n productId,\n slug,\n title,\n content,\n visibility: (visibility ?? 'PUBLIC').toUpperCase(),\n isPublished: isPublished === true,\n };\n const data = await ctx.gql.global.request<{ createContentPage: ContentPageRow }>(\n ops.CREATE_CONTENT_PAGE,\n { input },\n );\n return jsonResult(data.createContentPage);\n } catch (error) {\n ctx.logger.error('products_content_pages_create failed', { error: String(error) });\n return errorResult(\n `Failed to create content page: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_content_pages_update')),\n {\n title: 'Update Content Page',\n description: 'Update a content page.',\n inputSchema: {\n id: z.string().describe('Content page ID'),\n title: z.string().optional(),\n content: z.string().optional(),\n visibility: z.string().optional(),\n isPublished: z.boolean().optional(),\n },\n },\n async ({ id, title, content, visibility, isPublished }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (content !== undefined) input.content = content;\n if (visibility !== undefined) input.visibility = visibility.toUpperCase();\n if (isPublished !== undefined) input.isPublished = isPublished;\n if (!Object.keys(input).length) return errorResult('No updates specified');\n const data = await ctx.gql.global.request<{ updateContentPage: ContentPageRow }>(\n ops.UPDATE_CONTENT_PAGE,\n { id, input },\n );\n return jsonResult(data.updateContentPage);\n } catch (error) {\n ctx.logger.error('products_content_pages_update failed', { error: String(error) });\n return errorResult(\n `Failed to update content page: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_content_pages_delete')),\n {\n title: 'Delete Content Page',\n description: 'Delete a content page.',\n inputSchema: { id: z.string().describe('Content page ID') },\n },\n async ({ id }) => {\n try {\n await ctx.gql.global.request(ops.DELETE_CONTENT_PAGE, { id });\n return jsonResult({ status: 'success', message: 'Content page deleted', pageId: id });\n } catch (error) {\n ctx.logger.error('products_content_pages_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete content page: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Feature Flags ───────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_feature_flags_list')),\n {\n title: 'List Feature Flags',\n description: 'List feature flags.',\n inputSchema: {\n productId: z.string().optional(),\n status: z.string().optional(),\n category: z.string().optional(),\n limit: z.number().optional().describe('Page size (default 100)'),\n },\n },\n async ({ productId, status, category, limit }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (productId !== undefined) filter.productId = productId;\n if (status !== undefined) filter.status = status.toUpperCase();\n if (category !== undefined) filter.category = category;\n const data = await ctx.gql.global.request<{\n featureFlags: { items: FeatureFlagRow[] };\n }>(ops.LIST_FEATURE_FLAGS, {\n filter: Object.keys(filter).length ? filter : undefined,\n limit: limit ?? 100,\n });\n return jsonResult(data.featureFlags);\n } catch (error) {\n ctx.logger.error('products_feature_flags_list failed', { error: String(error) });\n return errorResult(\n `Failed to list feature flags: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_feature_flags_get')),\n {\n title: 'Get Feature Flag',\n description: 'Get a feature flag by ID. Returns the flag record or an error if not found.',\n inputSchema: { id: z.string().describe('Feature flag ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.global.request<{ featureFlag: FeatureFlagRow | null }>(\n ops.GET_FEATURE_FLAG,\n { id },\n );\n if (!data.featureFlag) return errorResult(`Feature flag ${id} not found`);\n return jsonResult(data.featureFlag);\n } catch (error) {\n ctx.logger.error('products_feature_flags_get failed', { error: String(error) });\n return errorResult(\n `Failed to get feature flag: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_feature_flags_create')),\n {\n title: 'Create Feature Flag',\n description: 'Create a feature flag.',\n inputSchema: {\n key: z.string().describe('Stable key (e.g. enable-beta-ui)'),\n name: z.string().describe('Human label'),\n productId: z.string().describe('Owning product ID'),\n flagType: z.string().optional().describe('BOOLEAN|STRING|NUMBER|JSON (default BOOLEAN)'),\n defaultValue: z.unknown().optional().describe('Default value (any JSON value)'),\n description: z.string().optional(),\n category: z.string().optional(),\n previewable: z.boolean().optional(),\n tags: z.array(z.string()).optional(),\n },\n },\n async ({\n key,\n name,\n productId,\n flagType,\n defaultValue,\n description,\n category,\n previewable,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {\n key,\n name,\n productId,\n flagType: (flagType ?? 'BOOLEAN').toUpperCase(),\n defaultValue: defaultValue ?? false,\n previewable: previewable === true,\n };\n if (description !== undefined) input.description = description;\n if (category !== undefined) input.category = category;\n if (tags !== undefined) input.tags = tags;\n const data = await ctx.gql.global.request<{ createFeatureFlag: FeatureFlagRow }>(\n ops.CREATE_FEATURE_FLAG,\n { input },\n );\n return jsonResult(data.createFeatureFlag);\n } catch (error) {\n ctx.logger.error('products_feature_flags_create failed', { error: String(error) });\n return errorResult(\n `Failed to create feature flag: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_feature_flags_update')),\n {\n title: 'Update Feature Flag',\n description: 'Update a feature flag.',\n inputSchema: {\n id: z.string().describe('Feature flag ID'),\n name: z.string().optional(),\n defaultValue: z.unknown().optional(),\n status: z.string().optional().describe('ACTIVE|ARCHIVED'),\n },\n },\n async ({ id, name, defaultValue, status }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (defaultValue !== undefined) input.defaultValue = defaultValue;\n if (status !== undefined) input.status = status.toUpperCase();\n if (!Object.keys(input).length) return errorResult('No updates specified');\n const data = await ctx.gql.global.request<{ updateFeatureFlag: FeatureFlagRow }>(\n ops.UPDATE_FEATURE_FLAG,\n { id, input },\n );\n return jsonResult(data.updateFeatureFlag);\n } catch (error) {\n ctx.logger.error('products_feature_flags_update failed', { error: String(error) });\n return errorResult(\n `Failed to update feature flag: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_feature_flags_delete')),\n {\n title: 'Delete Feature Flag',\n description: 'Delete a feature flag.',\n inputSchema: { id: z.string().describe('Feature flag ID') },\n },\n async ({ id }) => {\n try {\n await ctx.gql.global.request(ops.DELETE_FEATURE_FLAG, { id });\n return jsonResult({ status: 'success', message: 'Feature flag deleted', flagId: id });\n } catch (error) {\n ctx.logger.error('products_feature_flags_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete feature flag: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_feature_flags_evaluate')),\n {\n title: 'Evaluate Feature Flags',\n description: 'Evaluate feature flags in a workspace context.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n keys: z.array(z.string()).describe('Flag keys to evaluate'),\n },\n },\n async ({ workspaceId, keys }) => {\n try {\n const data = await ctx.gql.global.request<{\n evaluateFeatureFlags: {\n evaluations: Array<{ key: string; value: unknown; variant?: string; reason?: string }>;\n };\n }>(ops.EVALUATE_FEATURE_FLAGS, { input: { workspaceId, keys } });\n return jsonResult(data.evaluateFeatureFlags.evaluations);\n } catch (error) {\n ctx.logger.error('products_feature_flags_evaluate failed', { error: String(error) });\n return errorResult(\n `Failed to evaluate feature flags: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_feature_flags_set')),\n {\n title: 'Set Workspace Feature Flag Override',\n description:\n 'Set (upsert) a workspace-level override for a feature flag. Returns the persisted override record.',\n inputSchema: {\n featureFlagId: z.string().describe('Feature flag ID to override'),\n workspaceId: z.string().describe('Workspace ID receiving the override'),\n enabled: z.boolean().describe('Whether the flag is enabled in the workspace'),\n allowUserOptIn: z\n .boolean()\n .optional()\n .describe('Whether workspace users may opt in to a different value'),\n },\n },\n async ({ featureFlagId, workspaceId, enabled, allowUserOptIn }) => {\n try {\n const input: Record<string, unknown> = { featureFlagId, workspaceId, enabled };\n if (allowUserOptIn !== undefined) input.allowUserOptIn = allowUserOptIn;\n const data = await ctx.gql.global.request<{\n setWorkspaceFeatureFlagOverride: WorkspaceFeatureFlagOverrideRow;\n }>(ops.SET_WORKSPACE_FEATURE_FLAG_OVERRIDE, { input });\n return jsonResult(data.setWorkspaceFeatureFlagOverride);\n } catch (error) {\n ctx.logger.error('products_feature_flags_set failed', { error: String(error) });\n return errorResult(\n `Failed to set feature flag override: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Products module — platform products, shortcuts, content-pages, feature-flags.\n *\n * Backend: global-tenant-svc (NOT global-store-svc). Hive service: tenant.\n * Ported from cli-sdk/src/modules/products/.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerProductsTools } from './tools.js';\n\nconst productsModule: McpModule = {\n id: 'products',\n version: '0.0.1',\n displayName: 'Platform Products',\n dependsOn: ['auth'],\n capabilities: { tools: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const track = (n: string): string => {\n tools.push(n);\n return n;\n };\n\n registerProductsTools(server, ctx, track);\n\n return { tools, resources: [], prompts: [] };\n },\n};\n\nexport default productsModule;\n"]}
1
+ {"version":3,"sources":["../../../src/core/errors.ts","../../../src/core/tool-name.ts","../../../src/core/result.ts","../../../src/modules/products/operations.ts","../../../src/modules/products/tools.ts","../../../src/modules/products/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","export const LIST_PRODUCTS = `\n query ListProducts($filter: PlatformProductFilterInput, $limit: Int, $offset: Int) {\n platformProducts(filter: $filter, limit: $limit, offset: $offset) {\n items { id name slug status logoUrl appUrl }\n total\n }\n }\n`;\n\nexport const GET_PRODUCT = `\n query GetProduct($id: ID!) {\n platformProduct(id: $id) {\n id name slug description status metadata logoUrl appUrl\n }\n }\n`;\n\nexport const CREATE_PRODUCT = `\n mutation CreatePlatformProduct($input: CreatePlatformProductInput!) {\n createPlatformProduct(input: $input) {\n id name slug status\n }\n }\n`;\n\nexport const UPDATE_PRODUCT = `\n mutation UpdatePlatformProduct($id: ID!, $input: UpdatePlatformProductInput!) {\n updatePlatformProduct(id: $id, input: $input) {\n id name status\n }\n }\n`;\n\nexport const DELETE_PRODUCT = `\n mutation DeletePlatformProduct($id: ID!) {\n deletePlatformProduct(id: $id)\n }\n`;\n\nexport const LIST_SHORTCUTS = `\n query ListShortcuts($filter: KeyboardShortcutFilterInput, $limit: Int) {\n keyboardShortcuts(filter: $filter, limit: $limit) {\n items { id label shortcutKey category eventName isEnabled productId }\n }\n }\n`;\n\nexport const CREATE_SHORTCUT = `\n mutation CreateKeyboardShortcut($input: CreateKeyboardShortcutInput!) {\n createKeyboardShortcut(input: $input) {\n id label shortcutKey isEnabled\n }\n }\n`;\n\nexport const UPDATE_SHORTCUT = `\n mutation UpdateKeyboardShortcut($id: ID!, $input: UpdateKeyboardShortcutInput!) {\n updateKeyboardShortcut(id: $id, input: $input) {\n id label shortcutKey isEnabled\n }\n }\n`;\n\nexport const DELETE_SHORTCUT = `\n mutation DeleteKeyboardShortcut($id: ID!) {\n deleteKeyboardShortcut(id: $id)\n }\n`;\n\nexport const LIST_CONTENT_PAGES = `\n query ListContentPages($productId: ID!, $filter: ContentPageFilterInput, $limit: Int) {\n contentPages(productId: $productId, filter: $filter, limit: $limit) {\n items { id slug title visibility isPublished }\n }\n }\n`;\n\nexport const GET_CONTENT_PAGE = `\n query GetContentPage($id: ID!) {\n contentPage(id: $id) {\n id productId slug title content contentFormat\n seoTitle seoDescription seoKeywords\n visibility isPublished sortOrder tags\n lastUpdated version createdAt updatedAt\n }\n }\n`;\n\nexport const GET_SHORTCUT = `\n query GetShortcut($id: ID!) {\n keyboardShortcut(id: $id) {\n id productId shortcutKey eventName category label description\n macKey windowsKey isEnabled isSequence sortOrder\n createdAt updatedAt\n }\n }\n`;\n\nexport const GET_FEATURE_FLAG = `\n query GetFeatureFlag($id: ID!) {\n featureFlag(id: $id) {\n id key name description flagType defaultValue status productId\n category previewable metadata tags\n createdAt updatedAt createdBy updatedBy\n }\n }\n`;\n\nexport const SET_WORKSPACE_FEATURE_FLAG_OVERRIDE = `\n mutation SetWorkspaceFeatureFlagOverride($input: SetWorkspaceFeatureFlagOverrideInput!) {\n setWorkspaceFeatureFlagOverride(input: $input) {\n id featureFlagId workspaceId enabled allowUserOptIn\n createdAt updatedAt createdBy updatedBy\n }\n }\n`;\n\nexport const CREATE_CONTENT_PAGE = `\n mutation CreateContentPage($input: CreateContentPageInput!) {\n createContentPage(input: $input) {\n id slug title visibility\n }\n }\n`;\n\nexport const UPDATE_CONTENT_PAGE = `\n mutation UpdateContentPage($id: ID!, $input: UpdateContentPageInput!) {\n updateContentPage(id: $id, input: $input) {\n id slug title isPublished\n }\n }\n`;\n\nexport const DELETE_CONTENT_PAGE = `\n mutation DeleteContentPage($id: ID!) {\n deleteContentPage(id: $id)\n }\n`;\n\nexport const LIST_FEATURE_FLAGS = `\n query ListFeatureFlags($filter: FeatureFlagFilterInput, $limit: Int) {\n featureFlags(filter: $filter, limit: $limit) {\n items { id key name flagType status defaultValue category productId }\n }\n }\n`;\n\nexport const CREATE_FEATURE_FLAG = `\n mutation CreateFeatureFlag($input: CreateFeatureFlagInput!) {\n createFeatureFlag(input: $input) {\n id key name flagType status\n }\n }\n`;\n\nexport const UPDATE_FEATURE_FLAG = `\n mutation UpdateFeatureFlag($id: ID!, $input: UpdateFeatureFlagInput!) {\n updateFeatureFlag(id: $id, input: $input) {\n id key status defaultValue\n }\n }\n`;\n\nexport const DELETE_FEATURE_FLAG = `\n mutation DeleteFeatureFlag($id: ID!) {\n deleteFeatureFlag(id: $id)\n }\n`;\n\nexport const EVALUATE_FEATURE_FLAGS = `\n query EvaluateFeatureFlags($input: EvaluateFeatureFlagsInput!) {\n evaluateFeatureFlags(input: $input) {\n evaluations { key flagType value variant reason }\n }\n }\n`;\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../core/index.js';\nimport * as ops from './operations.js';\n\ninterface ProductRow {\n id: string;\n name: string;\n slug?: string;\n status?: string;\n logoUrl?: string;\n appUrl?: string;\n}\n\ninterface ShortcutRow {\n id: string;\n label: string;\n shortcutKey: string;\n category?: string;\n eventName?: string;\n isEnabled?: boolean;\n productId?: string;\n}\n\ninterface ContentPageRow {\n id: string;\n slug: string;\n title: string;\n visibility?: string;\n isPublished?: boolean;\n}\n\ninterface FeatureFlagRow {\n id: string;\n key: string;\n name: string;\n flagType?: string;\n status?: string;\n defaultValue?: unknown;\n category?: string;\n productId?: string;\n}\n\ninterface WorkspaceFeatureFlagOverrideRow {\n id: string;\n featureFlagId: string;\n workspaceId: string;\n enabled: boolean;\n allowUserOptIn?: boolean;\n}\n\nexport function registerProductsTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n // ── Products ────────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_list')),\n {\n title: 'List Platform Products',\n description: 'List platform products with optional search/status filters.',\n inputSchema: {\n search: z.string().optional().describe('Free-text search'),\n status: z.string().optional().describe('Filter by status (DRAFT|ACTIVE|ARCHIVED)'),\n limit: z.number().optional().describe('Page size (default 50)'),\n offset: z.number().optional().describe('Skip results'),\n },\n },\n async ({ search, status, limit, offset }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (search !== undefined) filter.search = search;\n if (status !== undefined) filter.status = status.toUpperCase();\n const data = await ctx.gql.global.request<{\n platformProducts: { items: ProductRow[]; total: number };\n }>(ops.LIST_PRODUCTS, {\n filter: Object.keys(filter).length ? filter : undefined,\n limit: limit ?? 50,\n offset: offset ?? 0,\n });\n return jsonResult(data.platformProducts);\n } catch (error) {\n ctx.logger.error('products_list failed', { error: String(error) });\n return errorResult(\n `Failed to list products: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_get')),\n {\n title: 'Get Platform Product',\n description: 'Get a platform product by ID.',\n inputSchema: { id: z.string().describe('Product ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.global.request<{ platformProduct: ProductRow | null }>(\n ops.GET_PRODUCT,\n { id },\n );\n if (!data.platformProduct) return errorResult(`Product ${id} not found`);\n return jsonResult(data.platformProduct);\n } catch (error) {\n ctx.logger.error('products_get failed', { error: String(error) });\n return errorResult(\n `Failed to get product: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_create')),\n {\n title: 'Create Platform Product',\n description: 'Create a new platform product.',\n inputSchema: {\n name: z.string().describe('Product name'),\n slug: z.string().describe('URL slug'),\n description: z.string().optional(),\n status: z.string().optional().describe('DRAFT|ACTIVE|ARCHIVED (default DRAFT)'),\n appUrl: z.string().optional(),\n logoUrl: z.string().optional(),\n },\n },\n async ({ name, slug, description, status, appUrl, logoUrl }) => {\n try {\n const input: Record<string, unknown> = {\n name,\n slug,\n status: (status ?? 'DRAFT').toUpperCase(),\n };\n if (description !== undefined) input.description = description;\n if (appUrl !== undefined) input.appUrl = appUrl;\n if (logoUrl !== undefined) input.logoUrl = logoUrl;\n const data = await ctx.gql.global.request<{ createPlatformProduct: ProductRow }>(\n ops.CREATE_PRODUCT,\n { input },\n );\n return jsonResult(data.createPlatformProduct);\n } catch (error) {\n ctx.logger.error('products_create failed', { error: String(error) });\n return errorResult(\n `Failed to create product: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_update')),\n {\n title: 'Update Platform Product',\n description: 'Update a platform product.',\n inputSchema: {\n id: z.string().describe('Product ID'),\n name: z.string().optional(),\n description: z.string().optional(),\n status: z.string().optional(),\n },\n },\n async ({ id, name, description, status }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (description !== undefined) input.description = description;\n if (status !== undefined) input.status = status.toUpperCase();\n if (!Object.keys(input).length) return errorResult('No updates specified');\n const data = await ctx.gql.global.request<{ updatePlatformProduct: ProductRow }>(\n ops.UPDATE_PRODUCT,\n { id, input },\n );\n return jsonResult(data.updatePlatformProduct);\n } catch (error) {\n ctx.logger.error('products_update failed', { error: String(error) });\n return errorResult(\n `Failed to update product: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_delete')),\n {\n title: 'Delete Platform Product',\n description: 'Delete a platform product.',\n inputSchema: { id: z.string().describe('Product ID') },\n },\n async ({ id }) => {\n try {\n await ctx.gql.global.request(ops.DELETE_PRODUCT, { id });\n return jsonResult({ status: 'success', message: 'Product deleted', productId: id });\n } catch (error) {\n ctx.logger.error('products_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete product: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Shortcuts ───────────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_shortcuts_list')),\n {\n title: 'List Keyboard Shortcuts',\n description: 'List keyboard shortcuts.',\n inputSchema: {\n productId: z.string().optional().describe('Filter by product ID'),\n category: z.string().optional().describe('Filter by category'),\n limit: z.number().optional().describe('Page size (default 100)'),\n },\n },\n async ({ productId, category, limit }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (productId !== undefined) filter.productId = productId;\n if (category !== undefined) filter.category = category;\n const data = await ctx.gql.global.request<{\n keyboardShortcuts: { items: ShortcutRow[] };\n }>(ops.LIST_SHORTCUTS, {\n filter: Object.keys(filter).length ? filter : undefined,\n limit: limit ?? 100,\n });\n return jsonResult(data.keyboardShortcuts);\n } catch (error) {\n ctx.logger.error('products_shortcuts_list failed', { error: String(error) });\n return errorResult(\n `Failed to list shortcuts: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_shortcuts_get')),\n {\n title: 'Get Keyboard Shortcut',\n description:\n 'Get a keyboard shortcut by ID. Returns the shortcut record or an error if not found.',\n inputSchema: { id: z.string().describe('Shortcut ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.global.request<{ keyboardShortcut: ShortcutRow | null }>(\n ops.GET_SHORTCUT,\n { id },\n );\n if (!data.keyboardShortcut) return errorResult(`Shortcut ${id} not found`);\n return jsonResult(data.keyboardShortcut);\n } catch (error) {\n ctx.logger.error('products_shortcuts_get failed', { error: String(error) });\n return errorResult(\n `Failed to get shortcut: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_shortcuts_create')),\n {\n title: 'Create Keyboard Shortcut',\n description: 'Create a keyboard shortcut.',\n inputSchema: {\n label: z.string().describe('Display label'),\n shortcutKey: z.string().describe('Shortcut key sequence (e.g. \"g h\")'),\n eventName: z.string().describe('Event emitted when shortcut fires'),\n productId: z.string().describe('Owning product ID'),\n category: z.string().optional(),\n isEnabled: z.boolean().optional().describe('Default true'),\n },\n },\n async ({ label, shortcutKey, eventName, productId, category, isEnabled }) => {\n try {\n const input: Record<string, unknown> = {\n label,\n shortcutKey,\n eventName,\n productId,\n isEnabled: isEnabled !== false,\n };\n if (category !== undefined) input.category = category;\n const data = await ctx.gql.global.request<{ createKeyboardShortcut: ShortcutRow }>(\n ops.CREATE_SHORTCUT,\n { input },\n );\n return jsonResult(data.createKeyboardShortcut);\n } catch (error) {\n ctx.logger.error('products_shortcuts_create failed', { error: String(error) });\n return errorResult(\n `Failed to create shortcut: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_shortcuts_update')),\n {\n title: 'Update Keyboard Shortcut',\n description: 'Update a keyboard shortcut.',\n inputSchema: {\n id: z.string().describe('Shortcut ID'),\n label: z.string().optional(),\n shortcutKey: z.string().optional(),\n isEnabled: z.boolean().optional(),\n },\n },\n async ({ id, label, shortcutKey, isEnabled }) => {\n try {\n const input: Record<string, unknown> = {};\n if (label !== undefined) input.label = label;\n if (shortcutKey !== undefined) input.shortcutKey = shortcutKey;\n if (isEnabled !== undefined) input.isEnabled = isEnabled;\n if (!Object.keys(input).length) return errorResult('No updates specified');\n const data = await ctx.gql.global.request<{ updateKeyboardShortcut: ShortcutRow }>(\n ops.UPDATE_SHORTCUT,\n { id, input },\n );\n return jsonResult(data.updateKeyboardShortcut);\n } catch (error) {\n ctx.logger.error('products_shortcuts_update failed', { error: String(error) });\n return errorResult(\n `Failed to update shortcut: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_shortcuts_delete')),\n {\n title: 'Delete Keyboard Shortcut',\n description: 'Delete a keyboard shortcut.',\n inputSchema: { id: z.string().describe('Shortcut ID') },\n },\n async ({ id }) => {\n try {\n await ctx.gql.global.request(ops.DELETE_SHORTCUT, { id });\n return jsonResult({ status: 'success', message: 'Shortcut deleted', shortcutId: id });\n } catch (error) {\n ctx.logger.error('products_shortcuts_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete shortcut: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Content Pages ───────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_content_pages_list')),\n {\n title: 'List Content Pages',\n description: 'List content pages for a product.',\n inputSchema: {\n productId: z.string().describe('Product ID'),\n isPublished: z.boolean().optional(),\n visibility: z.string().optional().describe('PUBLIC|PRIVATE'),\n limit: z.number().optional().describe('Page size (default 100)'),\n },\n },\n async ({ productId, isPublished, visibility, limit }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (isPublished !== undefined) filter.isPublished = isPublished;\n if (visibility !== undefined) filter.visibility = visibility.toUpperCase();\n const data = await ctx.gql.global.request<{\n contentPages: { items: ContentPageRow[] };\n }>(ops.LIST_CONTENT_PAGES, {\n productId,\n filter: Object.keys(filter).length ? filter : undefined,\n limit: limit ?? 100,\n });\n return jsonResult(data.contentPages);\n } catch (error) {\n ctx.logger.error('products_content_pages_list failed', { error: String(error) });\n return errorResult(\n `Failed to list content pages: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_content_pages_get')),\n {\n title: 'Get Content Page',\n description:\n 'Get a content page by ID. Returns the page record (including content body) or an error if not found.',\n inputSchema: { id: z.string().describe('Content page ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.global.request<{ contentPage: ContentPageRow | null }>(\n ops.GET_CONTENT_PAGE,\n { id },\n );\n if (!data.contentPage) return errorResult(`Content page ${id} not found`);\n return jsonResult(data.contentPage);\n } catch (error) {\n ctx.logger.error('products_content_pages_get failed', { error: String(error) });\n return errorResult(\n `Failed to get content page: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_content_pages_create')),\n {\n title: 'Create Content Page',\n description: 'Create a content page.',\n inputSchema: {\n productId: z.string().describe('Product ID'),\n slug: z.string().describe('Page slug'),\n title: z.string().describe('Page title'),\n content: z.string().describe('Page content (markdown/html)'),\n visibility: z.string().optional().describe('PUBLIC|PRIVATE (default PUBLIC)'),\n isPublished: z.boolean().optional(),\n },\n },\n async ({ productId, slug, title, content, visibility, isPublished }) => {\n try {\n const input: Record<string, unknown> = {\n productId,\n slug,\n title,\n content,\n visibility: (visibility ?? 'PUBLIC').toUpperCase(),\n isPublished: isPublished === true,\n };\n const data = await ctx.gql.global.request<{ createContentPage: ContentPageRow }>(\n ops.CREATE_CONTENT_PAGE,\n { input },\n );\n return jsonResult(data.createContentPage);\n } catch (error) {\n ctx.logger.error('products_content_pages_create failed', { error: String(error) });\n return errorResult(\n `Failed to create content page: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_content_pages_update')),\n {\n title: 'Update Content Page',\n description: 'Update a content page.',\n inputSchema: {\n id: z.string().describe('Content page ID'),\n title: z.string().optional(),\n content: z.string().optional(),\n visibility: z.string().optional(),\n isPublished: z.boolean().optional(),\n },\n },\n async ({ id, title, content, visibility, isPublished }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (content !== undefined) input.content = content;\n if (visibility !== undefined) input.visibility = visibility.toUpperCase();\n if (isPublished !== undefined) input.isPublished = isPublished;\n if (!Object.keys(input).length) return errorResult('No updates specified');\n const data = await ctx.gql.global.request<{ updateContentPage: ContentPageRow }>(\n ops.UPDATE_CONTENT_PAGE,\n { id, input },\n );\n return jsonResult(data.updateContentPage);\n } catch (error) {\n ctx.logger.error('products_content_pages_update failed', { error: String(error) });\n return errorResult(\n `Failed to update content page: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_content_pages_delete')),\n {\n title: 'Delete Content Page',\n description: 'Delete a content page.',\n inputSchema: { id: z.string().describe('Content page ID') },\n },\n async ({ id }) => {\n try {\n await ctx.gql.global.request(ops.DELETE_CONTENT_PAGE, { id });\n return jsonResult({ status: 'success', message: 'Content page deleted', pageId: id });\n } catch (error) {\n ctx.logger.error('products_content_pages_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete content page: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n // ── Feature Flags ───────────────────────────────────────────────────────\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_feature_flags_list')),\n {\n title: 'List Feature Flags',\n description: 'List feature flags.',\n inputSchema: {\n productId: z.string().optional(),\n status: z.string().optional(),\n category: z.string().optional(),\n limit: z.number().optional().describe('Page size (default 100)'),\n },\n },\n async ({ productId, status, category, limit }) => {\n try {\n const filter: Record<string, unknown> = {};\n if (productId !== undefined) filter.productId = productId;\n if (status !== undefined) filter.status = status.toUpperCase();\n if (category !== undefined) filter.category = category;\n const data = await ctx.gql.global.request<{\n featureFlags: { items: FeatureFlagRow[] };\n }>(ops.LIST_FEATURE_FLAGS, {\n filter: Object.keys(filter).length ? filter : undefined,\n limit: limit ?? 100,\n });\n return jsonResult(data.featureFlags);\n } catch (error) {\n ctx.logger.error('products_feature_flags_list failed', { error: String(error) });\n return errorResult(\n `Failed to list feature flags: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_feature_flags_get')),\n {\n title: 'Get Feature Flag',\n description: 'Get a feature flag by ID. Returns the flag record or an error if not found.',\n inputSchema: { id: z.string().describe('Feature flag ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.global.request<{ featureFlag: FeatureFlagRow | null }>(\n ops.GET_FEATURE_FLAG,\n { id },\n );\n if (!data.featureFlag) return errorResult(`Feature flag ${id} not found`);\n return jsonResult(data.featureFlag);\n } catch (error) {\n ctx.logger.error('products_feature_flags_get failed', { error: String(error) });\n return errorResult(\n `Failed to get feature flag: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_feature_flags_create')),\n {\n title: 'Create Feature Flag',\n description: 'Create a feature flag.',\n inputSchema: {\n key: z.string().describe('Stable key (e.g. enable-beta-ui)'),\n name: z.string().describe('Human label'),\n productId: z.string().describe('Owning product ID'),\n flagType: z.string().optional().describe('BOOLEAN|STRING|NUMBER|JSON (default BOOLEAN)'),\n defaultValue: z.unknown().optional().describe('Default value (any JSON value)'),\n description: z.string().optional(),\n category: z.string().optional(),\n previewable: z.boolean().optional(),\n tags: z.array(z.string()).optional(),\n },\n },\n async ({\n key,\n name,\n productId,\n flagType,\n defaultValue,\n description,\n category,\n previewable,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {\n key,\n name,\n productId,\n flagType: (flagType ?? 'BOOLEAN').toUpperCase(),\n defaultValue: defaultValue ?? false,\n previewable: previewable === true,\n };\n if (description !== undefined) input.description = description;\n if (category !== undefined) input.category = category;\n if (tags !== undefined) input.tags = tags;\n const data = await ctx.gql.global.request<{ createFeatureFlag: FeatureFlagRow }>(\n ops.CREATE_FEATURE_FLAG,\n { input },\n );\n return jsonResult(data.createFeatureFlag);\n } catch (error) {\n ctx.logger.error('products_feature_flags_create failed', { error: String(error) });\n return errorResult(\n `Failed to create feature flag: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_feature_flags_update')),\n {\n title: 'Update Feature Flag',\n description: 'Update a feature flag.',\n inputSchema: {\n id: z.string().describe('Feature flag ID'),\n name: z.string().optional(),\n defaultValue: z.unknown().optional(),\n status: z.string().optional().describe('ACTIVE|ARCHIVED'),\n },\n },\n async ({ id, name, defaultValue, status }) => {\n try {\n const input: Record<string, unknown> = {};\n if (name !== undefined) input.name = name;\n if (defaultValue !== undefined) input.defaultValue = defaultValue;\n if (status !== undefined) input.status = status.toUpperCase();\n if (!Object.keys(input).length) return errorResult('No updates specified');\n const data = await ctx.gql.global.request<{ updateFeatureFlag: FeatureFlagRow }>(\n ops.UPDATE_FEATURE_FLAG,\n { id, input },\n );\n return jsonResult(data.updateFeatureFlag);\n } catch (error) {\n ctx.logger.error('products_feature_flags_update failed', { error: String(error) });\n return errorResult(\n `Failed to update feature flag: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_feature_flags_delete')),\n {\n title: 'Delete Feature Flag',\n description: 'Delete a feature flag.',\n inputSchema: { id: z.string().describe('Feature flag ID') },\n },\n async ({ id }) => {\n try {\n await ctx.gql.global.request(ops.DELETE_FEATURE_FLAG, { id });\n return jsonResult({ status: 'success', message: 'Feature flag deleted', flagId: id });\n } catch (error) {\n ctx.logger.error('products_feature_flags_delete failed', { error: String(error) });\n return errorResult(\n `Failed to delete feature flag: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_feature_flags_evaluate')),\n {\n title: 'Evaluate Feature Flags',\n description: 'Evaluate feature flags in a workspace context.',\n inputSchema: {\n workspaceId: z.string().describe('Workspace ID'),\n keys: z.array(z.string()).describe('Flag keys to evaluate'),\n },\n },\n async ({ workspaceId, keys }) => {\n try {\n const data = await ctx.gql.global.request<{\n evaluateFeatureFlags: {\n evaluations: Array<{ key: string; value: unknown; variant?: string; reason?: string }>;\n };\n }>(ops.EVALUATE_FEATURE_FLAGS, { input: { workspaceId, keys } });\n return jsonResult(data.evaluateFeatureFlags.evaluations);\n } catch (error) {\n ctx.logger.error('products_feature_flags_evaluate failed', { error: String(error) });\n return errorResult(\n `Failed to evaluate feature flags: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'products_feature_flags_set')),\n {\n title: 'Set Workspace Feature Flag Override',\n description:\n 'Set (upsert) a workspace-level override for a feature flag. Returns the persisted override record.',\n inputSchema: {\n featureFlagId: z.string().describe('Feature flag ID to override'),\n workspaceId: z.string().describe('Workspace ID receiving the override'),\n enabled: z.boolean().describe('Whether the flag is enabled in the workspace'),\n allowUserOptIn: z\n .boolean()\n .optional()\n .describe('Whether workspace users may opt in to a different value'),\n },\n },\n async ({ featureFlagId, workspaceId, enabled, allowUserOptIn }) => {\n try {\n const input: Record<string, unknown> = { featureFlagId, workspaceId, enabled };\n if (allowUserOptIn !== undefined) input.allowUserOptIn = allowUserOptIn;\n const data = await ctx.gql.global.request<{\n setWorkspaceFeatureFlagOverride: WorkspaceFeatureFlagOverrideRow;\n }>(ops.SET_WORKSPACE_FEATURE_FLAG_OVERRIDE, { input });\n return jsonResult(data.setWorkspaceFeatureFlagOverride);\n } catch (error) {\n ctx.logger.error('products_feature_flags_set failed', { error: String(error) });\n return errorResult(\n `Failed to set feature flag override: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Products module — platform products, shortcuts, content-pages, feature-flags.\n *\n * Backend: global-tenant-svc (NOT global-store-svc). Hive service: tenant.\n * Ported from cli-sdk/src/modules/products/.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerProductsTools } from './tools.js';\n\nconst productsModule: McpModule = {\n id: 'products',\n version: '0.0.1',\n displayName: 'Platform Products',\n dependsOn: ['auth'],\n capabilities: { tools: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const track = (n: string): string => {\n tools.push(n);\n return n;\n };\n\n registerProductsTools(server, ctx, track);\n\n return { tools, resources: [], prompts: [] };\n },\n};\n\nexport default productsModule;\n"]}
@@ -1,4 +1,4 @@
1
- import { mcpToolName, jsonResult, errorResult } from '../../chunk-H2OYWLOA.js';
1
+ import { mcpToolName, jsonResult, errorResult } from '../../chunk-YOSQUY3M.js';
2
2
  import { z } from 'zod';
3
3
 
4
4
  // src/modules/products/operations.ts
@@ -18,20 +18,6 @@ var McpInternalError = class extends Error {
18
18
  }
19
19
  };
20
20
 
21
- // src/core/result.ts
22
- function jsonResult(data, structured) {
23
- const result = {
24
- content: [{ type: "text", text: JSON.stringify(data, null, 2) }]
25
- };
26
- return result;
27
- }
28
- function errorResult(message, hint) {
29
- const text = hint ? `${message}
30
-
31
- Hint: ${hint}` : message;
32
- return { content: [{ type: "text", text }], isError: true };
33
- }
34
-
35
21
  // src/core/tool-name.ts
36
22
  var MAX_TOOL_NAME_LENGTH = 63;
37
23
  function assertSafeName(name, kind) {
@@ -62,6 +48,20 @@ function mcpPromptName(productName, ...parts) {
62
48
  return [productName, ...parts].filter(Boolean).join("-");
63
49
  }
64
50
 
51
+ // src/core/result.ts
52
+ function jsonResult(data, structured) {
53
+ const result = {
54
+ content: [{ type: "text", text: JSON.stringify(data, null, 2) }]
55
+ };
56
+ return result;
57
+ }
58
+ function errorResult(message, hint) {
59
+ const text = hint ? `${message}
60
+
61
+ Hint: ${hint}` : message;
62
+ return { content: [{ type: "text", text }], isError: true };
63
+ }
64
+
65
65
  // src/modules/proserviceworld/operations.ts
66
66
  var CLIENT_FIELDS = `
67
67
  id name type status industry contactName contactEmail contactPhone address