@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 +0,0 @@
1
- {"version":3,"sources":["../src/core/auth/store.ts","../src/core/config/store.ts","../src/core/auth/device-code.ts","../src/core/gql/client.ts","../src/core/logger.ts","../src/core/progress.ts","../src/core/context.ts","../src/core/errors.ts","../src/core/module.ts","../src/core/capabilities.ts","../src/core/server.ts","../src/core/result.ts","../src/core/tool-name.ts"],"names":["authFileName","join","existsSync","mkdirSync","readFileSync","writeFileSync","chmodSync","cfg"],"mappings":"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","file":"chunk-H2OYWLOA.js","sourcesContent":["/**\n * Auth token persistence — parameterised on configDir.\n *\n * Stores tokens in <configDir>/auth.json with 0o600 perms.\n *\n * StoredAuth shape is a SUPERSET of cli-sdk's StoredAuth (adds api_key auth\n * method + apiKey field). A parity test in tests/unit/auth-store-parity.test.ts\n * keeps the field set in sync with cli-sdk so a shared token store path\n * (vibecontrols-cli/auth.json) works for both consumers.\n */\n\nimport { readFileSync, writeFileSync, mkdirSync, existsSync, chmodSync, unlinkSync } from 'fs';\nimport { join } from 'path';\n\nexport type AuthMethod = 'device_code' | 'client_credentials' | 'api_key';\n\nexport interface StoredAuth {\n accessToken: string;\n refreshToken: string;\n expiresAt?: number;\n workspaceToken?: string;\n workspaceTokenExpiresAt?: number;\n workspaceId?: string;\n organizationId?: string;\n authMethod?: AuthMethod;\n clientId?: string;\n clientSecret?: string;\n apiKey?: string;\n}\n\nexport interface AuthStore {\n read(): StoredAuth | null;\n write(auth: StoredAuth): void;\n clear(): void;\n isTokenExpired(): boolean;\n isTokenExpiringSoon(): boolean;\n isWorkspaceTokenExpired(): boolean;\n isWorkspaceTokenExpiringSoon(): boolean;\n isAuthenticated(): boolean;\n}\n\nconst TOKEN_BUFFER_MS = 5 * 60 * 1000;\n\nexport function createAuthStore(configDir: string, authFileName = 'auth.json'): AuthStore {\n const authFile = join(configDir, authFileName);\n\n function ensureConfigDir(): void {\n if (!existsSync(configDir)) {\n mkdirSync(configDir, { recursive: true, mode: 0o700 });\n }\n }\n\n function read(): StoredAuth | null {\n try {\n if (!existsSync(authFile)) return null;\n const raw = readFileSync(authFile, 'utf8');\n return JSON.parse(raw) as StoredAuth;\n } catch {\n return null;\n }\n }\n\n function write(auth: StoredAuth): void {\n ensureConfigDir();\n writeFileSync(authFile, JSON.stringify(auth, null, 2), { encoding: 'utf8', mode: 0o600 });\n try {\n chmodSync(authFile, 0o600);\n } catch {\n // chmod may fail on Windows; non-critical.\n }\n }\n\n function clear(): void {\n try {\n if (existsSync(authFile)) unlinkSync(authFile);\n } catch {\n // ignore\n }\n }\n\n function isTokenExpired(): boolean {\n const auth = read();\n if (!auth?.expiresAt) return false;\n return Date.now() >= auth.expiresAt;\n }\n\n function isTokenExpiringSoon(): boolean {\n const auth = read();\n if (!auth?.expiresAt) return false;\n return Date.now() + TOKEN_BUFFER_MS >= auth.expiresAt;\n }\n\n function isWorkspaceTokenExpired(): boolean {\n const auth = read();\n if (!auth?.workspaceTokenExpiresAt) return false;\n return Date.now() >= auth.workspaceTokenExpiresAt;\n }\n\n function isWorkspaceTokenExpiringSoon(): boolean {\n const auth = read();\n if (!auth?.workspaceTokenExpiresAt) return false;\n return Date.now() + TOKEN_BUFFER_MS >= auth.workspaceTokenExpiresAt;\n }\n\n function isAuthenticated(): boolean {\n const auth = read();\n if (auth?.apiKey) return true;\n if (!auth?.accessToken) return false;\n return !isTokenExpired();\n }\n\n return {\n read,\n write,\n clear,\n isTokenExpired,\n isTokenExpiringSoon,\n isWorkspaceTokenExpired,\n isWorkspaceTokenExpiringSoon,\n isAuthenticated,\n };\n}\n","/**\n * Config store — parameterised on configDirName + product defaults.\n *\n * Persists MCP runtime config to ~/.config/<configDirName>/config.json.\n * Includes both gql-client config (workspace/global endpoints, oidc) and\n * transport config (httpPort, host, corsOrigins, allowedHosts, apiKey).\n *\n * Env-var overrides preserve current vibecontrols-mcp behaviour:\n * VIBECONTROLS_WORKSPACE_ENDPOINT, VIBECONTROLS_GLOBAL_ENDPOINT,\n * VIBECONTROLS_OIDC_ISSUER, VIBECONTROLS_CLIENT_ID,\n * VIBECONTROLS_ACCESS_TOKEN, VIBECONTROLS_REFRESH_TOKEN,\n * VIBECONTROLS_WORKSPACE_TOKEN, VIBECONTROLS_API_KEY (or MCP_API_KEY),\n * VIBECONTROLS_WORKSPACE_ID, VIBECONTROLS_ORGANIZATION_ID,\n * HOST, MCP_HOST, PORT, VIBECONTROLS_HTTP_PORT,\n * CORS_ORIGINS, ALLOWED_HOSTS, LOG_LEVEL, LOG_FORMAT.\n *\n * The shell passes the env-prefix it wants (e.g. VIBECONTROLS_) so other\n * product MCPs don't clash.\n */\n\nimport { readFileSync, writeFileSync, mkdirSync, existsSync, chmodSync } from 'fs';\nimport { join } from 'path';\nimport { homedir } from 'os';\n\nexport interface McpConfig {\n workspaceEndpoint: string;\n globalEndpoint: string;\n oidcIssuer?: string;\n clientId?: string;\n\n /** Pre-loaded auth (typically env-injected for headless service mode). */\n accessToken?: string;\n refreshToken?: string;\n workspaceToken?: string;\n apiKey?: string;\n workspaceId?: string;\n organizationId?: string;\n\n /** HTTP transport */\n host: string;\n httpPort: number;\n corsOrigins: string;\n allowedHosts: string;\n\n /** Logging */\n logLevel: 'error' | 'warn' | 'info' | 'debug';\n logFormat: 'json' | 'text';\n}\n\nexport interface ProductDefaults {\n /** Directory under ~/.config where this product's MCP state lives. */\n configDirName: string;\n /** Default OAuth client id for OIDC device-code flow. */\n oidcClientId: string;\n /** Production OIDC issuer URL (used when endpoints are non-local). */\n oidcIssuerProd?: string;\n /** Default workspace gateway endpoint. */\n workspaceEndpointDefault: string;\n /** Default global gateway endpoint. */\n globalEndpointDefault: string;\n /** Default HTTP transport port. */\n httpPortDefault?: number;\n /** Default host binding (CORS-bound, defaults to 127.0.0.1). */\n hostDefault?: string;\n /** Env-var prefix (e.g. 'VIBECONTROLS'). */\n envPrefix?: string;\n}\n\nexport interface ConfigStore {\n read(): McpConfig;\n write(config: Partial<McpConfig>): void;\n path(): string;\n dir(): string;\n resolveOIDC(): { oidcIssuer: string; clientId: string };\n}\n\nfunction envOr(prefix: string | undefined, key: string, fallback?: string): string | undefined {\n if (prefix) {\n const prefixed = process.env[`${prefix}_${key}`];\n if (prefixed !== undefined && prefixed !== '') return prefixed;\n }\n const direct = process.env[key];\n if (direct !== undefined && direct !== '') return direct;\n return fallback;\n}\n\nexport function createConfigStore(defaults: ProductDefaults): ConfigStore {\n const configDir = join(homedir(), '.config', defaults.configDirName);\n const configFile = join(configDir, 'config.json');\n const envPrefix = defaults.envPrefix ?? defaults.configDirName.toUpperCase().replace(/-/g, '_');\n\n function ensureConfigDir(): void {\n if (!existsSync(configDir)) {\n mkdirSync(configDir, { recursive: true, mode: 0o700 });\n }\n }\n\n function readPersisted(): Partial<McpConfig> {\n try {\n if (!existsSync(configFile)) return {};\n const raw = readFileSync(configFile, 'utf8');\n return JSON.parse(raw) as Partial<McpConfig>;\n } catch {\n return {};\n }\n }\n\n function read(): McpConfig {\n const persisted = readPersisted();\n\n const workspaceEndpoint =\n envOr(envPrefix, 'WORKSPACE_ENDPOINT') ??\n persisted.workspaceEndpoint ??\n defaults.workspaceEndpointDefault;\n\n const globalEndpoint =\n envOr(envPrefix, 'GLOBAL_ENDPOINT') ??\n persisted.globalEndpoint ??\n defaults.globalEndpointDefault;\n\n const httpPortRaw =\n envOr(envPrefix, 'HTTP_PORT') ??\n envOr(undefined, 'PORT') ??\n String(defaults.httpPortDefault ?? 3000);\n\n const logLevelRaw = envOr(undefined, 'LOG_LEVEL') ?? persisted.logLevel ?? 'info';\n const logFormatRaw = envOr(undefined, 'LOG_FORMAT') ?? persisted.logFormat ?? 'json';\n\n return {\n workspaceEndpoint,\n globalEndpoint,\n oidcIssuer: envOr(envPrefix, 'OIDC_ISSUER') ?? persisted.oidcIssuer,\n clientId: envOr(envPrefix, 'CLIENT_ID') ?? persisted.clientId,\n accessToken: envOr(envPrefix, 'ACCESS_TOKEN'),\n refreshToken: envOr(envPrefix, 'REFRESH_TOKEN'),\n workspaceToken: envOr(envPrefix, 'WORKSPACE_TOKEN'),\n apiKey: envOr(envPrefix, 'API_KEY') ?? envOr(undefined, 'MCP_API_KEY'),\n workspaceId: envOr(envPrefix, 'WORKSPACE_ID'),\n organizationId: envOr(envPrefix, 'ORGANIZATION_ID'),\n host:\n envOr(undefined, 'HOST') ??\n envOr(undefined, 'MCP_HOST') ??\n defaults.hostDefault ??\n '127.0.0.1',\n httpPort: parseInt(httpPortRaw, 10) || (defaults.httpPortDefault ?? 3000),\n corsOrigins:\n envOr(undefined, 'CORS_ORIGINS') ??\n persisted.corsOrigins ??\n 'http://127.0.0.1,http://localhost',\n allowedHosts:\n envOr(undefined, 'ALLOWED_HOSTS') ?? persisted.allowedHosts ?? '127.0.0.1,localhost',\n logLevel: (['error', 'warn', 'info', 'debug'] as const).includes(logLevelRaw as 'info')\n ? (logLevelRaw as McpConfig['logLevel'])\n : 'info',\n logFormat: logFormatRaw === 'text' ? 'text' : 'json',\n };\n }\n\n function write(patch: Partial<McpConfig>): void {\n ensureConfigDir();\n const merged = { ...readPersisted(), ...patch };\n writeFileSync(configFile, JSON.stringify(merged, null, 2), { encoding: 'utf8' });\n try {\n chmodSync(configFile, 0o600);\n } catch {\n // chmod may fail on Windows; non-critical.\n }\n }\n\n function resolveOIDC(): { oidcIssuer: string; clientId: string } {\n const config = read();\n const clientId = config.clientId || defaults.oidcClientId;\n\n let oidcIssuer = config.oidcIssuer;\n if (!oidcIssuer) {\n const globalEndpoint = config.globalEndpoint;\n if (globalEndpoint.includes('localhost') || globalEndpoint.includes('127.0.0.1')) {\n oidcIssuer = globalEndpoint\n .replace(/\\/graphql$/, '')\n .replace(/\\/global\\/graphql$/, '/global');\n } else {\n oidcIssuer = defaults.oidcIssuerProd ?? 'https://graphql.burdenoff.com/global';\n }\n }\n\n return { oidcIssuer, clientId };\n }\n\n return {\n read,\n write,\n path: () => configFile,\n dir: () => configDir,\n resolveOIDC,\n };\n}\n","/**\n * OAuth2 Device Code flow + Client Credentials flow + workspace token issuance.\n * Pure functions — operate on injected endpoints + client ids, no global state.\n *\n * Mirrors cli-sdk/src/core/auth/device-code.ts so a future shared\n * @burdenoff/auth-core extraction is mechanical.\n */\n\nimport fetch from 'cross-fetch';\n\nexport interface DeviceCodeResponse {\n deviceCode: string;\n userCode: string;\n verificationUri: string;\n verificationUriComplete: string | null;\n expiresIn: number;\n interval: number;\n}\n\nexport interface DeviceCodeTokenResult {\n accessToken: string;\n refreshToken: string;\n expiresIn: number;\n}\n\nexport interface ClientCredentialsResult {\n accessToken: string;\n expiresIn: number;\n scopes: string[];\n}\n\nexport interface OIDCConfig {\n oidcIssuer: string;\n clientId: string;\n}\n\nexport async function startDeviceCodeFlow(config: OIDCConfig): Promise<DeviceCodeResponse> {\n const url = `${config.oidcIssuer}/oidc/device/code`;\n const body = new URLSearchParams({\n client_id: config.clientId,\n scope: 'openid profile email offline_access',\n });\n\n const response = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: body.toString(),\n });\n\n if (!response.ok) {\n const text = await response.text().catch(() => 'Unknown error');\n throw new Error(`Device code request failed (${response.status}): ${text}`);\n }\n\n const data = (await response.json()) as Record<string, unknown>;\n\n return {\n deviceCode: data['device_code'] as string,\n userCode: data['user_code'] as string,\n verificationUri: data['verification_uri'] as string,\n verificationUriComplete: (data['verification_uri_complete'] as string) ?? null,\n expiresIn: data['expires_in'] as number,\n interval: (data['interval'] as number) ?? 5,\n };\n}\n\nexport type DeviceTokenPollResult =\n | { status: 'authenticated'; tokens: DeviceCodeTokenResult }\n | { status: 'pending' }\n | { status: 'slow_down'; newInterval: number }\n | { status: 'expired' }\n | { status: 'denied' };\n\n/**\n * Single-shot device-code token poll.\n *\n * Unlike cli-sdk's pollForToken which loops until done (suitable for blocking\n * CLI), MCP needs non-blocking semantics: the LLM calls auth_complete tool\n * repeatedly. This helper makes ONE poll attempt and returns a discriminated\n * union the caller can act on.\n */\nexport async function pollDeviceTokenOnce(\n deviceCode: string,\n interval: number,\n config: OIDCConfig,\n): Promise<DeviceTokenPollResult> {\n const url = `${config.oidcIssuer}/oauth/device/token`;\n\n const response = await fetch(url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: new URLSearchParams({\n grant_type: 'urn:ietf:params:oauth:grant-type:device_code',\n device_code: deviceCode,\n client_id: config.clientId,\n }).toString(),\n });\n\n const data = (await response.json()) as Record<string, unknown>;\n\n if (response.ok && data['access_token']) {\n return {\n status: 'authenticated',\n tokens: {\n accessToken: data['access_token'] as string,\n refreshToken: (data['refresh_token'] as string) ?? '',\n expiresIn: (data['expires_in'] as number) ?? 3600,\n },\n };\n }\n\n const errorCode = data['error'] as string | undefined;\n switch (errorCode) {\n case 'authorization_pending':\n return { status: 'pending' };\n case 'slow_down':\n return { status: 'slow_down', newInterval: interval + 5 };\n case 'expired_token':\n return { status: 'expired' };\n case 'access_denied':\n return { status: 'denied' };\n default:\n throw new Error(\n `Device code polling failed: ${(data['error_description'] as string) ?? errorCode ?? 'Unknown error'}`,\n );\n }\n}\n\nexport async function clientCredentialsFlow(\n globalEndpoint: string,\n clientId: string,\n clientSecret: string,\n scopes?: string[],\n): Promise<ClientCredentialsResult> {\n const query = `\n mutation AuthenticateApp($input: AuthenticateAppInput!) {\n authenticateApp(input: $input) {\n accessToken tokenType expiresIn scopes\n }\n }\n `;\n\n const response = await fetch(globalEndpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n query,\n variables: { input: { clientId, clientSecret, scopes } },\n }),\n });\n\n if (!response.ok) {\n const text = await response.text().catch(() => 'Unknown error');\n throw new Error(`App authentication failed (${response.status}): ${text}`);\n }\n\n const data = (await response.json()) as {\n data?: { authenticateApp: { accessToken: string; expiresIn: number; scopes: string[] } };\n errors?: Array<{ message: string }>;\n };\n\n if (data.errors?.length) {\n throw new Error(`App authentication failed: ${data.errors[0]?.message ?? 'unknown error'}`);\n }\n if (!data.data?.authenticateApp?.accessToken) {\n throw new Error('App authentication failed: no access token returned');\n }\n\n return data.data.authenticateApp;\n}\n\nexport async function issueWorkspaceToken(\n workspaceEndpoint: string,\n authToken: string,\n workspaceId: string,\n organizationId: string,\n): Promise<{ token: string; expiresAt: string; scopes: string[] }> {\n const query = `\n mutation IssueWorkspaceToken($input: IssueWorkspaceTokenInput!) {\n issueWorkspaceToken(input: $input) {\n success token expiresAt scopes\n error { code message }\n }\n }\n `;\n\n const response = await fetch(workspaceEndpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${authToken}` },\n body: JSON.stringify({ query, variables: { input: { workspaceId, organizationId } } }),\n });\n\n if (!response.ok) {\n const text = await response.text().catch(() => 'Unknown error');\n throw new Error(`Workspace token request failed (${response.status}): ${text}`);\n }\n\n const data = (await response.json()) as {\n data?: {\n issueWorkspaceToken: {\n success: boolean;\n token: string | null;\n expiresAt: string | null;\n scopes: string[] | null;\n error: { code: string; message: string } | null;\n };\n };\n errors?: Array<{ message: string }>;\n };\n\n if (data.errors?.length) {\n throw new Error(`Workspace token failed: ${data.errors[0]?.message ?? 'unknown error'}`);\n }\n\n const result = data.data?.issueWorkspaceToken;\n if (!result?.success || !result.token) {\n throw new Error(`Workspace token failed: ${result?.error?.message ?? 'Unknown error'}`);\n }\n\n return { token: result.token, expiresAt: result.expiresAt ?? '', scopes: result.scopes ?? [] };\n}\n\nexport async function fetchWorkspaces(\n globalEndpoint: string,\n authToken: string,\n): Promise<\n Array<{ id: string; name: string; slug: string; tenantId: string; organizationId: string }>\n> {\n const query = `\n query MyWorkspaces($limit: Int) {\n myWorkspaces(limit: $limit) {\n items { id name slug tenantId organizationId }\n }\n }\n `;\n\n const response = await fetch(globalEndpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${authToken}` },\n body: JSON.stringify({ query, variables: { limit: 50 } }),\n });\n\n if (!response.ok) {\n const text = await response.text().catch(() => 'Unknown error');\n throw new Error(`Failed to fetch workspaces (${response.status}): ${text}`);\n }\n\n const data = (await response.json()) as {\n data?: {\n myWorkspaces: {\n items: Array<{\n id: string;\n name: string;\n slug: string;\n tenantId: string;\n organizationId: string;\n }>;\n };\n };\n errors?: Array<{ message: string }>;\n };\n\n if (data.errors?.length) {\n throw new Error(`Failed to fetch workspaces: ${data.errors[0]?.message ?? 'unknown error'}`);\n }\n\n return data.data?.myWorkspaces?.items ?? [];\n}\n","/**\n * GraphQL client factory — produces three clients (workspace, global,\n * workspaceAuthOnly) sharing an injected ConfigStore + AuthStore.\n *\n * - Auto-refreshes platform + workspace tokens on the workspace client.\n * - Workspace client requires authentication; ensures fresh tokens before each call.\n * - Global client does NOT trigger refresh (avoids loops during auth flows).\n * - workspaceAuthOnly omits X-Workspace-Authorization (used to bootstrap\n * workspace token issuance).\n *\n * Ported from cli-sdk/src/core/gql/client.ts with a minor change: a static\n * `apiKey` is injected as `X-API-Key` header when StoredAuth.apiKey is set\n * (allows headless service-mode auth without device code).\n */\n\nimport { GraphQLClient, type RequestDocument, type Variables } from 'graphql-request';\nimport type { AuthStore, StoredAuth } from '../auth/store.js';\nimport type { ConfigStore } from '../config/store.js';\nimport { clientCredentialsFlow, issueWorkspaceToken } from '../auth/device-code.js';\n\nconst DEFAULT_TIMEOUT = 30_000;\nconst MAX_RETRIES = 3;\nconst INITIAL_RETRY_DELAY_MS = 1_000;\n\nexport interface GqlClient {\n request<T>(document: RequestDocument, variables?: Variables): Promise<T>;\n}\n\nexport interface GqlClients {\n workspace: GqlClient;\n global: GqlClient;\n workspaceAuthOnly: GqlClient;\n reset(): void;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction isNetworkOrServerError(error: unknown): boolean {\n if (error instanceof TypeError) return true;\n if (error && typeof error === 'object' && 'response' in error) {\n const resp = (error as { response?: { status?: number } }).response;\n if (resp && typeof resp.status === 'number' && resp.status >= 500) return true;\n }\n return false;\n}\n\nexport function extractGqlErrorMessage(error: unknown): string {\n if (error && typeof error === 'object' && 'response' in error) {\n const resp = error as {\n response?: { errors?: Array<{ message?: string }>; status?: number };\n message?: string;\n };\n const firstError = resp.response?.errors?.[0];\n if (firstError?.message) return firstError.message;\n if (resp.message) return resp.message;\n }\n if (error instanceof Error) return error.message;\n return String(error);\n}\n\nfunction getHeaders(auth: StoredAuth | null): Record<string, string> {\n const headers: Record<string, string> = {};\n if (auth?.apiKey) headers['X-API-Key'] = auth.apiKey;\n if (auth?.accessToken) headers['Authorization'] = `Bearer ${auth.accessToken}`;\n if (auth?.organizationId) headers['x-org-id'] = auth.organizationId;\n return headers;\n}\n\nfunction getWorkspaceHeaders(auth: StoredAuth | null): Record<string, string> {\n const headers = getHeaders(auth);\n if (auth?.workspaceToken) {\n headers['X-Workspace-Authorization'] = `Bearer ${auth.workspaceToken}`;\n }\n if (auth?.workspaceId) headers['x-workspace-id'] = auth.workspaceId;\n return headers;\n}\n\nasync function executeWithRetry<T>(\n client: GraphQLClient,\n document: RequestDocument,\n variables?: Variables,\n): Promise<T> {\n let lastError: unknown;\n\n for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {\n try {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), DEFAULT_TIMEOUT);\n try {\n return await client.request<T>({ document, variables, signal: controller.signal });\n } finally {\n clearTimeout(timer);\n }\n } catch (error: unknown) {\n lastError = error;\n\n if (error && typeof error === 'object' && 'response' in error) {\n const resp = (error as { response?: { status?: number } }).response;\n if (resp && typeof resp.status === 'number' && resp.status >= 400 && resp.status < 500) {\n break;\n }\n }\n\n if (isNetworkOrServerError(error) && attempt < MAX_RETRIES - 1) {\n const delay = INITIAL_RETRY_DELAY_MS * Math.pow(2, attempt);\n await sleep(delay);\n continue;\n }\n\n break;\n }\n }\n\n throw new Error(extractGqlErrorMessage(lastError));\n}\n\nexport function createGqlClients(config: ConfigStore, authStore: AuthStore): GqlClients {\n let workspaceClient: GraphQLClient | null = null;\n let globalClient: GraphQLClient | null = null;\n\n function init(): { workspace: GraphQLClient; global: GraphQLClient } {\n const cfg = config.read();\n const auth = authStore.read();\n\n workspaceClient = new GraphQLClient(cfg.workspaceEndpoint);\n workspaceClient.setHeaders(getWorkspaceHeaders(auth));\n\n globalClient = new GraphQLClient(cfg.globalEndpoint);\n globalClient.setHeaders(getHeaders(auth));\n\n return { workspace: workspaceClient, global: globalClient };\n }\n\n async function refreshPlatformToken(): Promise<void> {\n const auth = authStore.read();\n if (!auth) return;\n\n if (auth.authMethod === 'client_credentials' && auth.clientId && auth.clientSecret) {\n const cfg = config.read();\n try {\n const result = await clientCredentialsFlow(\n cfg.globalEndpoint,\n auth.clientId,\n auth.clientSecret,\n );\n authStore.write({\n ...auth,\n accessToken: result.accessToken,\n expiresAt: Date.now() + result.expiresIn * 1000,\n });\n workspaceClient = null;\n globalClient = null;\n } catch {\n // swallow — caller sees expired-token failure on next request\n }\n return;\n }\n\n if (!auth.refreshToken) return;\n\n const cfg = config.read();\n const client = new GraphQLClient(cfg.globalEndpoint);\n client.setHeaders({ Authorization: `Bearer ${auth.accessToken}` });\n\n const REFRESH_MUTATION = `\n mutation RefreshToken($token: String!) {\n refreshToken(token: $token) { accessToken refreshToken expiresIn }\n }\n `;\n\n interface RefreshResponse {\n refreshToken: { accessToken: string; refreshToken: string; expiresIn: number };\n }\n\n try {\n const data = await client.request<RefreshResponse>(REFRESH_MUTATION, {\n token: auth.refreshToken,\n });\n authStore.write({\n ...auth,\n accessToken: data.refreshToken.accessToken,\n refreshToken: data.refreshToken.refreshToken,\n expiresAt: Date.now() + data.refreshToken.expiresIn * 1000,\n });\n workspaceClient = null;\n globalClient = null;\n } catch {\n // swallow — surfaced on next request\n }\n }\n\n async function refreshWorkspaceToken(): Promise<void> {\n const auth = authStore.read();\n if (!auth?.accessToken || !auth.workspaceId || !auth.organizationId) return;\n\n const cfg = config.read();\n try {\n const result = await issueWorkspaceToken(\n cfg.workspaceEndpoint,\n auth.accessToken,\n auth.workspaceId,\n auth.organizationId,\n );\n authStore.write({\n ...auth,\n workspaceToken: result.token,\n workspaceTokenExpiresAt: new Date(result.expiresAt).getTime(),\n });\n workspaceClient = null;\n } catch {\n // swallow — surfaced on next request\n }\n }\n\n async function ensureFreshTokens(): Promise<void> {\n const initial = authStore.read();\n if (initial?.apiKey) return; // API-key auth never expires\n\n if (authStore.isTokenExpiringSoon()) {\n await refreshPlatformToken();\n }\n if (authStore.isWorkspaceTokenExpiringSoon()) {\n await refreshWorkspaceToken();\n }\n }\n\n const workspace: GqlClient = {\n async request<T>(document: RequestDocument, variables?: Variables): Promise<T> {\n await ensureFreshTokens();\n const { workspace: ws } = workspaceClient ? { workspace: workspaceClient } : init();\n ws.setHeaders(getWorkspaceHeaders(authStore.read()));\n return executeWithRetry<T>(ws, document, variables);\n },\n };\n\n const global: GqlClient = {\n async request<T>(document: RequestDocument, variables?: Variables): Promise<T> {\n const { global: g } = globalClient ? { global: globalClient } : init();\n g.setHeaders(getHeaders(authStore.read()));\n return executeWithRetry<T>(g, document, variables);\n },\n };\n\n const workspaceAuthOnly: GqlClient = {\n async request<T>(document: RequestDocument, variables?: Variables): Promise<T> {\n const cfg = config.read();\n const auth = authStore.read();\n const client = new GraphQLClient(cfg.workspaceEndpoint);\n client.setHeaders(getHeaders(auth));\n return executeWithRetry<T>(client, document, variables);\n },\n };\n\n return {\n workspace,\n global,\n workspaceAuthOnly,\n reset(): void {\n workspaceClient = null;\n globalClient = null;\n },\n };\n}\n","/**\n * Structured logger for MCP SDK.\n *\n * Routes through process.stderr only — stdio transport reserves stdout for\n * JSON-RPC protocol messages. Modules NEVER use console.log/console.error\n * directly: that would corrupt the stdio stream.\n *\n * Supports MCP `logging/setLevel` requests via setLevel() — wire this to the\n * server's request handler so clients can dynamically control verbosity.\n */\n\nexport type LogLevel = 'error' | 'warn' | 'info' | 'debug';\nexport type LogFormat = 'json' | 'text';\n\nexport interface LogContext {\n [key: string]: unknown;\n}\n\nexport interface Logger {\n error(message: string, context?: LogContext): void;\n warn(message: string, context?: LogContext): void;\n info(message: string, context?: LogContext): void;\n debug(message: string, context?: LogContext): void;\n setLevel(level: LogLevel): void;\n getLevel(): LogLevel;\n}\n\nexport interface LoggerOptions {\n level?: LogLevel;\n format?: LogFormat;\n}\n\nconst LEVEL_RANK: Record<LogLevel, number> = {\n error: 0,\n warn: 1,\n info: 2,\n debug: 3,\n};\n\nexport function createLogger(opts: LoggerOptions = {}): Logger {\n let level: LogLevel = opts.level ?? (process.env.LOG_LEVEL as LogLevel) ?? 'info';\n const format: LogFormat = opts.format ?? (process.env.LOG_FORMAT as LogFormat) ?? 'json';\n\n function shouldLog(target: LogLevel): boolean {\n return LEVEL_RANK[target] <= LEVEL_RANK[level];\n }\n\n function formatMessage(target: LogLevel, message: string, context?: LogContext): string {\n const timestamp = new Date().toISOString();\n if (format === 'json') {\n return JSON.stringify({ timestamp, level: target, message, ...context });\n }\n const contextStr = context ? ` ${JSON.stringify(context)}` : '';\n return `[${timestamp}] ${target.toUpperCase()}: ${message}${contextStr}`;\n }\n\n function emit(target: LogLevel, message: string, context?: LogContext): void {\n if (!shouldLog(target)) return;\n process.stderr.write(formatMessage(target, message, context) + '\\n');\n }\n\n return {\n error(message, context): void {\n emit('error', message, context);\n },\n warn(message, context): void {\n emit('warn', message, context);\n },\n info(message, context): void {\n emit('info', message, context);\n },\n debug(message, context): void {\n emit('debug', message, context);\n },\n setLevel(newLevel): void {\n level = newLevel;\n },\n getLevel(): LogLevel {\n return level;\n },\n };\n}\n","/**\n * Progress notification helper.\n *\n * MCP supports `notifications/progress` for long-running tool calls. The client\n * passes a `progressToken` in `_meta`; the server emits progress against that\n * token. When no token is present, ctx.progress() no-ops.\n *\n * Pattern in a tool handler:\n * await registerTool(server, ctx, name, meta, async (args, ctx, meta) => {\n * ctx.progress(meta.progressToken, 0, 100, 'starting');\n * // ... work\n * ctx.progress(meta.progressToken, 50, 100, 'halfway');\n * // ... more work\n * ctx.progress(meta.progressToken, 100, 100, 'done');\n * });\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nexport type ProgressFn = (\n token: string | number | undefined,\n current: number,\n total?: number,\n message?: string,\n) => void;\n\nexport function createProgress(serverRef: { current: McpServer | null }): ProgressFn {\n return (token, current, total, message) => {\n if (token === undefined || token === null) return;\n const server = serverRef.current;\n if (!server) return;\n try {\n const params: {\n progressToken: string | number;\n progress: number;\n total?: number;\n message?: string;\n } = { progressToken: token, progress: current };\n if (total !== undefined) params.total = total;\n if (message !== undefined) params.message = message;\n // The McpServer exposes the underlying Server which has a notification method;\n // wrap defensively because shapes vary across SDK versions.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const inner = (server as any).server ?? server;\n inner.notification?.({ method: 'notifications/progress', params });\n } catch {\n // ignore — progress is best-effort\n }\n };\n}\n","/**\n * McpContext — the prop bag injected by the shell into every module.\n *\n * Modules receive this via `register(server, ctx)` and use only what they\n * need. No module should reach for global state.\n */\n\nimport { createAuthStore, type AuthStore } from './auth/store.js';\nimport { createConfigStore, type ConfigStore, type ProductDefaults } from './config/store.js';\nimport { createGqlClients, type GqlClients } from './gql/client.js';\nimport { createLogger, type Logger, type LoggerOptions } from './logger.js';\nimport { createProgress, type ProgressFn } from './progress.js';\n\nexport type Environment = 'prod' | 'alpha' | 'dev' | 'local';\n\nexport interface McpContext {\n productName: string;\n productVersion: string;\n serverName: string;\n serverVersion: string;\n defaults: ProductDefaults;\n config: ConfigStore;\n auth: AuthStore;\n gql: GqlClients;\n logger: Logger;\n progress: ProgressFn;\n env: Environment;\n\n /** Internal: server reference is mutated post-construction in createMcpServer. */\n _internal: {\n serverRef: { current: import('@modelcontextprotocol/sdk/server/mcp.js').McpServer | null };\n };\n}\n\nexport interface BuildContextOptions {\n productName: string;\n productVersion: string;\n serverName: string;\n serverVersion: string;\n defaults: ProductDefaults;\n logger?: LoggerOptions | Logger;\n env?: Environment;\n /**\n * Override the auth file path. Defaults to `<configDir>/auth.json`.\n * Set this to `~/.config/<product>-cli/auth.json` to share token\n * storage with the corresponding CLI.\n */\n tokenStorePath?: string;\n}\n\nfunction inferEnv(workspaceEndpoint: string): Environment {\n if (workspaceEndpoint.includes('localhost') || workspaceEndpoint.includes('127.0.0.1')) {\n return 'local';\n }\n if (workspaceEndpoint.includes('alpha')) return 'alpha';\n return 'prod';\n}\n\nfunction isLogger(value: LoggerOptions | Logger | undefined): value is Logger {\n return (\n !!value &&\n typeof (value as Logger).debug === 'function' &&\n typeof (value as Logger).info === 'function'\n );\n}\n\nexport function buildContext(opts: BuildContextOptions): McpContext {\n const config = createConfigStore(opts.defaults);\n const cfg = config.read();\n\n const logger = isLogger(opts.logger)\n ? opts.logger\n : createLogger({\n ...(opts.logger as LoggerOptions | undefined),\n level: cfg.logLevel,\n format: cfg.logFormat,\n });\n\n const auth = createAuthStore(\n opts.tokenStorePath ? dirOf(opts.tokenStorePath) : config.dir(),\n authFileName(opts.tokenStorePath),\n );\n\n // Seed env-injected tokens if persisted store is empty (headless service mode).\n const existing = auth.read();\n if (!existing && (cfg.accessToken || cfg.apiKey)) {\n auth.write({\n accessToken: cfg.accessToken ?? '',\n refreshToken: cfg.refreshToken ?? '',\n ...(cfg.workspaceToken ? { workspaceToken: cfg.workspaceToken } : {}),\n ...(cfg.workspaceId ? { workspaceId: cfg.workspaceId } : {}),\n ...(cfg.organizationId ? { organizationId: cfg.organizationId } : {}),\n ...(cfg.apiKey ? { apiKey: cfg.apiKey, authMethod: 'api_key' as const } : {}),\n });\n }\n\n const gql = createGqlClients(config, auth);\n const env = opts.env ?? inferEnv(cfg.workspaceEndpoint);\n\n const serverRef: { current: import('@modelcontextprotocol/sdk/server/mcp.js').McpServer | null } =\n { current: null };\n const progress = createProgress(serverRef);\n\n return {\n productName: opts.productName,\n productVersion: opts.productVersion,\n serverName: opts.serverName,\n serverVersion: opts.serverVersion,\n defaults: opts.defaults,\n config,\n auth,\n gql,\n logger,\n progress,\n env,\n _internal: { serverRef },\n };\n}\n\nfunction dirOf(p: string): string {\n const lastSlash = p.lastIndexOf('/');\n return lastSlash > 0 ? p.slice(0, lastSlash) : p;\n}\n\nfunction authFileName(p?: string): string | undefined {\n if (!p) return undefined;\n const lastSlash = p.lastIndexOf('/');\n return lastSlash >= 0 ? p.slice(lastSlash + 1) : p;\n}\n","/**\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 * McpModule contract + dependency-aware loader.\n *\n * Each entry under src/modules/<name>/ default-exports an McpModule. The\n * shell passes an array of modules to createMcpServer(); the loader topo-\n * sorts them, fails fast on missing deps, and calls register() on each.\n *\n * register() returns a ModuleRegistration manifest of what was registered\n * — used by the shell to log a deterministic boot line and by the snapshot\n * test in Phase 1 to diff against a captured pre-refactor manifest.\n *\n * Mirrors cli-sdk/src/core/module.ts with addition of capabilities + manifest.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext } from './context.js';\nimport type { McpCapabilities } from './capabilities.js';\nimport { McpInternalError } from './errors.js';\n\nexport interface ModuleRegistration {\n tools: readonly string[];\n resources: readonly string[];\n prompts: readonly string[];\n}\n\nexport interface McpModule {\n readonly id: string;\n readonly version: string;\n readonly displayName: string;\n readonly dependsOn?: readonly string[];\n readonly capabilities?: McpCapabilities;\n register(server: McpServer, ctx: McpContext): ModuleRegistration;\n}\n\nexport class MissingDependencyError extends McpInternalError {\n constructor(moduleId: string, missingDep: string) {\n super(\n `Module '${moduleId}' declares dependency on '${missingDep}', but '${missingDep}' is not in the module list.`,\n );\n this.name = 'MissingDependencyError';\n }\n}\n\nexport class CircularDependencyError extends McpInternalError {\n constructor(cycle: readonly string[]) {\n super(`Circular dependency detected among modules: ${cycle.join(' -> ')}`);\n this.name = 'CircularDependencyError';\n }\n}\n\n/**\n * Topologically sort modules by their `dependsOn` declarations.\n * Throws MissingDependencyError or CircularDependencyError on bad input.\n */\nexport function sortModules(modules: readonly McpModule[]): McpModule[] {\n const byId = new Map<string, McpModule>();\n for (const m of modules) {\n if (byId.has(m.id)) {\n throw new McpInternalError(`Duplicate module id: '${m.id}'`);\n }\n byId.set(m.id, m);\n }\n\n for (const m of modules) {\n for (const dep of m.dependsOn ?? []) {\n if (!byId.has(dep)) {\n throw new MissingDependencyError(m.id, dep);\n }\n }\n }\n\n const sorted: McpModule[] = [];\n const visiting = new Set<string>();\n const visited = new Set<string>();\n\n function visit(m: McpModule, path: string[]): void {\n if (visited.has(m.id)) return;\n if (visiting.has(m.id)) {\n throw new CircularDependencyError([...path, m.id]);\n }\n visiting.add(m.id);\n for (const dep of m.dependsOn ?? []) {\n const depModule = byId.get(dep);\n if (depModule) visit(depModule, [...path, m.id]);\n }\n visiting.delete(m.id);\n visited.add(m.id);\n sorted.push(m);\n }\n\n for (const m of modules) {\n visit(m, []);\n }\n return sorted;\n}\n\nexport interface ServerManifest {\n modules: readonly { id: string; version: string }[];\n tools: readonly string[];\n resources: readonly string[];\n prompts: readonly string[];\n}\n","/**\n * Module capability declaration + union helper.\n *\n * Each McpModule declares the MCP capabilities it requires. The shell unions\n * all capabilities before constructing McpServer, so a module that needs\n * resources.subscribe (e.g. live agent heartbeat) gets it without any\n * shell-side knowledge.\n *\n * Reference: https://modelcontextprotocol.io/specification/2025-03-26/server/capabilities\n */\n\nexport interface McpCapabilities {\n resources?: { subscribe?: boolean; listChanged?: boolean };\n prompts?: { listChanged?: boolean };\n tools?: { listChanged?: boolean };\n logging?: boolean;\n completions?: boolean;\n}\n\n/**\n * Union an array of capability declarations. Boolean unions on logging /\n * completions; OR on every nested boolean.\n */\nexport function unionCapabilities(caps: readonly (McpCapabilities | undefined)[]): McpCapabilities {\n const out: McpCapabilities = {};\n\n for (const cap of caps) {\n if (!cap) continue;\n if (cap.resources) {\n out.resources ??= {};\n if (cap.resources.subscribe) out.resources.subscribe = true;\n if (cap.resources.listChanged) out.resources.listChanged = true;\n }\n if (cap.prompts) {\n out.prompts ??= {};\n if (cap.prompts.listChanged) out.prompts.listChanged = true;\n }\n if (cap.tools) {\n out.tools ??= {};\n if (cap.tools.listChanged) out.tools.listChanged = true;\n }\n if (cap.logging) out.logging = true;\n if (cap.completions) out.completions = true;\n }\n\n return out;\n}\n\n/**\n * Convert capability declaration into the shape the MCP SDK accepts at\n * `new McpServer({ capabilities })`. The SDK uses `{}` as truthy markers.\n */\nexport function toServerCapabilities(caps: McpCapabilities): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n if (caps.tools) out.tools = caps.tools;\n if (caps.resources) out.resources = caps.resources;\n if (caps.prompts) out.prompts = caps.prompts;\n if (caps.logging) out.logging = {};\n if (caps.completions) out.completions = {};\n return out;\n}\n","/**\n * createMcpServer — McpServer factory + module loader + central wiring.\n *\n * Sorts modules by dependsOn, unions their capabilities, constructs an\n * McpServer with declared capabilities, calls register() on each module in\n * topo order, threads the server into ctx for progress notifications, and\n * returns both the server + the merged registration manifest.\n *\n * The `logging/setLevel` request handler is wired to ctx.logger.setLevel\n * so MCP clients can dynamically control verbosity.\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { SetLevelRequestSchema, type LoggingLevel } from '@modelcontextprotocol/sdk/types.js';\nimport type { McpContext } from './context.js';\nimport { sortModules, type McpModule, type ServerManifest } from './module.js';\nimport { toServerCapabilities, unionCapabilities, type McpCapabilities } from './capabilities.js';\nimport type { LogLevel } from './logger.js';\n\nexport interface CreateMcpServerOptions {\n name: string;\n version: string;\n /** Optional extra capabilities to union in (rarely needed). */\n extraCapabilities?: McpCapabilities;\n}\n\nexport interface McpServerHandle {\n server: McpServer;\n manifest: ServerManifest;\n}\n\nconst MCP_TO_LOGGER_LEVEL: Record<LoggingLevel, LogLevel> = {\n debug: 'debug',\n info: 'info',\n notice: 'info',\n warning: 'warn',\n error: 'error',\n critical: 'error',\n alert: 'error',\n emergency: 'error',\n};\n\nexport function createMcpServer(\n ctx: McpContext,\n modules: readonly McpModule[],\n opts: CreateMcpServerOptions,\n): McpServerHandle {\n const sorted = sortModules(modules);\n\n // Always declare logging so logging/setLevel works (ctx.logger uses setLevel internally).\n const baseCapabilities: McpCapabilities = { logging: true };\n const capabilities = unionCapabilities([\n baseCapabilities,\n ...sorted.map((m) => m.capabilities),\n opts.extraCapabilities,\n ]);\n\n const server = new McpServer(\n { name: opts.name, version: opts.version },\n { capabilities: toServerCapabilities(capabilities) },\n );\n\n ctx._internal.serverRef.current = server;\n\n // Wire MCP logging/setLevel → ctx.logger.setLevel\n // The McpServer wraps a Server instance; reach inner for setRequestHandler.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const inner = (server as any).server ?? server;\n if (typeof inner.setRequestHandler === 'function') {\n inner.setRequestHandler(\n SetLevelRequestSchema,\n async (req: { params: { level: LoggingLevel } }) => {\n const target = MCP_TO_LOGGER_LEVEL[req.params.level] ?? 'info';\n ctx.logger.setLevel(target);\n ctx.logger.info('MCP logging level set', { level: req.params.level, mapped: target });\n return {};\n },\n );\n }\n\n const tools: string[] = [];\n const resources: string[] = [];\n const prompts: string[] = [];\n const moduleManifest: { id: string; version: string }[] = [];\n\n for (const mod of sorted) {\n try {\n const reg = mod.register(server, ctx);\n tools.push(...reg.tools);\n resources.push(...reg.resources);\n prompts.push(...reg.prompts);\n moduleManifest.push({ id: mod.id, version: mod.version });\n ctx.logger.debug(`Registered module: ${mod.id}`, {\n tools: reg.tools.length,\n resources: reg.resources.length,\n prompts: reg.prompts.length,\n });\n } catch (error) {\n ctx.logger.error(`Failed to register module: ${mod.id}`, {\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n }\n\n const manifest: ServerManifest = {\n modules: moduleManifest,\n tools,\n resources,\n prompts,\n };\n\n ctx.logger.info(`MCP server ready: ${opts.name}@${opts.version}`, {\n modules: manifest.modules.length,\n tools: manifest.tools.length,\n resources: manifest.resources.length,\n prompts: manifest.prompts.length,\n });\n\n return { server, manifest };\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"]}