@cubis/foundry 0.3.34 → 0.3.35

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 (590) hide show
  1. package/README.md +56 -11
  2. package/bin/cubis.js +2809 -965
  3. package/mcp/.dockerignore +5 -0
  4. package/mcp/Dockerfile +19 -0
  5. package/mcp/README.md +550 -11
  6. package/mcp/config.json +18 -0
  7. package/mcp/dist/index.d.ts +1 -0
  8. package/mcp/dist/index.js +1488 -0
  9. package/mcp/package.json +36 -0
  10. package/mcp/src/cbxConfig/index.ts +23 -0
  11. package/mcp/src/cbxConfig/paths.ts +45 -0
  12. package/mcp/src/cbxConfig/reader.ts +149 -0
  13. package/mcp/src/cbxConfig/readerWriter.test.ts +147 -0
  14. package/mcp/src/cbxConfig/serviceConfig.test.ts +42 -0
  15. package/mcp/src/cbxConfig/serviceConfig.ts +157 -0
  16. package/mcp/src/cbxConfig/types.ts +44 -0
  17. package/mcp/src/cbxConfig/writer.ts +90 -0
  18. package/mcp/src/config/index.test.ts +81 -0
  19. package/mcp/src/config/index.ts +45 -0
  20. package/mcp/src/config/schema.ts +55 -0
  21. package/mcp/src/gateway/catalog.ts +37 -0
  22. package/mcp/src/gateway/config.ts +247 -0
  23. package/mcp/src/gateway/manager.ts +255 -0
  24. package/mcp/src/gateway/types.ts +54 -0
  25. package/mcp/src/gateway/upstreamClient.ts +80 -0
  26. package/mcp/src/index.ts +211 -0
  27. package/mcp/src/server.ts +219 -0
  28. package/mcp/src/tools/configTools.test.ts +166 -0
  29. package/mcp/src/tools/future/README.md +21 -0
  30. package/mcp/src/tools/future/index.ts +8 -0
  31. package/mcp/src/tools/index.ts +76 -0
  32. package/mcp/src/tools/mcpGateway.ts +44 -0
  33. package/mcp/src/tools/postmanGetMode.ts +82 -0
  34. package/mcp/src/tools/postmanGetStatus.ts +65 -0
  35. package/mcp/src/tools/postmanModes.ts +28 -0
  36. package/mcp/src/tools/postmanSetMode.ts +71 -0
  37. package/mcp/src/tools/skillBrowseCategory.ts +54 -0
  38. package/mcp/src/tools/skillGet.ts +43 -0
  39. package/mcp/src/tools/skillListCategories.ts +40 -0
  40. package/mcp/src/tools/skillSearch.ts +72 -0
  41. package/mcp/src/tools/skillTools.test.ts +126 -0
  42. package/mcp/src/tools/stitchGetMode.ts +58 -0
  43. package/mcp/src/tools/stitchGetStatus.ts +70 -0
  44. package/mcp/src/tools/stitchSetProfile.ts +82 -0
  45. package/mcp/src/transports/stdio.ts +9 -0
  46. package/mcp/src/transports/streamableHttp.ts +43 -0
  47. package/mcp/src/upstream/passthrough.ts +273 -0
  48. package/mcp/src/utils/errors.ts +38 -0
  49. package/mcp/src/utils/logger.ts +63 -0
  50. package/mcp/src/vault/manifest.test.ts +126 -0
  51. package/mcp/src/vault/manifest.ts +99 -0
  52. package/mcp/src/vault/scanner.test.ts +70 -0
  53. package/mcp/src/vault/scanner.ts +145 -0
  54. package/mcp/src/vault/types.ts +21 -0
  55. package/package.json +9 -2
  56. package/workflows/scripts/generate-powers.mjs +27 -18
  57. package/workflows/skills/skills_index.json +0 -102
  58. package/workflows/workflows/agent-environment-setup/manifest.json +0 -24
  59. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/nextjs-react-expert/SKILL.md +1 -1
  60. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/skills_index.json +0 -102
  61. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/nextjs-react-expert/SKILL.md +1 -1
  62. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/skills_index.json +0 -102
  63. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/nextjs-react-expert/SKILL.md +1 -1
  64. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/skills_index.json +0 -102
  65. package/mcp/catalogs/default.json +0 -14
  66. package/mcp/powers/atlassian-mcp/POWER.md +0 -91
  67. package/mcp/powers/atlassian-mcp/SKILL.md +0 -88
  68. package/mcp/powers/atlassian-mcp/steering/authentication-patterns.md +0 -520
  69. package/mcp/powers/atlassian-mcp/steering/common-workflows.md +0 -660
  70. package/mcp/powers/atlassian-mcp/steering/confluence-operations.md +0 -528
  71. package/mcp/powers/atlassian-mcp/steering/jira-queries.md +0 -421
  72. package/mcp/powers/atlassian-mcp/steering/mcp-server-setup.md +0 -292
  73. package/mcp/powers/building-mcp-server-on-cloudflare/POWER.md +0 -261
  74. package/mcp/powers/building-mcp-server-on-cloudflare/SKILL.md +0 -258
  75. package/mcp/powers/building-mcp-server-on-cloudflare/steering/examples.md +0 -115
  76. package/mcp/powers/building-mcp-server-on-cloudflare/steering/oauth-setup.md +0 -338
  77. package/mcp/powers/building-mcp-server-on-cloudflare/steering/troubleshooting.md +0 -317
  78. package/mcp/powers/datadog-automation/POWER.md +0 -238
  79. package/mcp/powers/datadog-automation/SKILL.md +0 -235
  80. package/mcp/powers/github-automation/POWER.md +0 -230
  81. package/mcp/powers/github-automation/SKILL.md +0 -227
  82. package/mcp/powers/mcp-builder/LICENSE.txt +0 -202
  83. package/mcp/powers/mcp-builder/POWER.md +0 -179
  84. package/mcp/powers/mcp-builder/SKILL.md +0 -176
  85. package/mcp/powers/mcp-builder/reference/evaluation.md +0 -602
  86. package/mcp/powers/mcp-builder/reference/mcp_best_practices.md +0 -915
  87. package/mcp/powers/mcp-builder/reference/node_mcp_server.md +0 -916
  88. package/mcp/powers/mcp-builder/reference/python_mcp_server.md +0 -752
  89. package/mcp/powers/mcp-builder/scripts/connections.py +0 -151
  90. package/mcp/powers/mcp-builder/scripts/evaluation.py +0 -373
  91. package/mcp/powers/mcp-builder/scripts/example_evaluation.xml +0 -22
  92. package/mcp/powers/mcp-builder/scripts/requirements.txt +0 -2
  93. package/mcp/powers/mcp-developer/POWER.md +0 -88
  94. package/mcp/powers/mcp-developer/SKILL.md +0 -85
  95. package/mcp/powers/mcp-developer/steering/protocol.md +0 -244
  96. package/mcp/powers/mcp-developer/steering/python-sdk.md +0 -367
  97. package/mcp/powers/mcp-developer/steering/resources.md +0 -554
  98. package/mcp/powers/mcp-developer/steering/tools.md +0 -480
  99. package/mcp/powers/mcp-developer/steering/typescript-sdk.md +0 -350
  100. package/mcp/powers/postman/POWER.md +0 -243
  101. package/mcp/powers/postman/SKILL.md +0 -240
  102. package/mcp/powers/postman/flutter-expert/POWER.md +0 -89
  103. package/mcp/powers/postman/flutter-expert/SKILL.md +0 -77
  104. package/mcp/powers/postman/flutter-expert/steering/bloc-state.md +0 -259
  105. package/mcp/powers/postman/flutter-expert/steering/engineering-principles.md +0 -82
  106. package/mcp/powers/postman/flutter-expert/steering/gorouter-navigation.md +0 -157
  107. package/mcp/powers/postman/flutter-expert/steering/performance.md +0 -99
  108. package/mcp/powers/postman/flutter-expert/steering/project-structure.md +0 -77
  109. package/mcp/powers/postman/flutter-expert/steering/riverpod-state.md +0 -404
  110. package/mcp/powers/postman/flutter-expert/steering/widget-patterns.md +0 -123
  111. package/mcp/powers/postman/flutter-security-reviewer/POWER.md +0 -204
  112. package/mcp/powers/postman/flutter-security-reviewer/SKILL.md +0 -180
  113. package/mcp/powers/postman/flutter-security-reviewer/steering/log_redaction.md +0 -17
  114. package/mcp/powers/postman/flutter-security-reviewer/steering/network_hardening.md +0 -13
  115. package/mcp/powers/postman/flutter-security-reviewer/steering/secret-scanning.md +0 -123
  116. package/mcp/powers/postman/flutter-security-reviewer/steering/secure_storage_policy.md +0 -16
  117. package/mcp/powers/postman/flutter-security-reviewer/steering/vulnerability-patterns.md +0 -189
  118. package/mcp/powers/postman/flutter-security-reviewer/templates/security_review_response.md +0 -31
  119. package/mcp/powers/postman/flutter-test-master/POWER.md +0 -527
  120. package/mcp/powers/postman/flutter-test-master/SKILL.md +0 -513
  121. package/mcp/powers/postman/flutter-test-master/steering/golden-testing.md +0 -444
  122. package/mcp/powers/postman/flutter-test-master/steering/integration-testing.md +0 -688
  123. package/mcp/powers/postman/flutter-test-master/steering/property-testing.md +0 -408
  124. package/mcp/powers/postman/flutter-test-master/steering/riverpod-testing.md +0 -606
  125. package/mcp/powers/postman/flutter-test-master/steering/test-utilities.md +0 -566
  126. package/mcp/powers/postman/flutter-test-master/steering/unit-testing.md +0 -511
  127. package/mcp/powers/postman/flutter-test-master/steering/widget-testing.md +0 -601
  128. package/mcp/powers/postman/git-commit/POWER.md +0 -47
  129. package/mcp/powers/postman/git-commit/SKILL.md +0 -46
  130. package/mcp/powers/postman/gorouter-restoration/POWER.md +0 -227
  131. package/mcp/powers/postman/gorouter-restoration/SKILL.md +0 -217
  132. package/mcp/powers/postman/gorouter-restoration/steering/guard_patterns.md +0 -14
  133. package/mcp/powers/postman/gorouter-restoration/steering/tab_preservation.md +0 -12
  134. package/mcp/powers/postman/gorouter-restoration/templates/guard_redirect.md +0 -30
  135. package/mcp/powers/postman/gorouter-restoration/templates/stateful_shell_skeleton.md +0 -40
  136. package/mcp/powers/postman/mcp.json +0 -11
  137. package/mcp/powers/postman/microservices-architect/POWER.md +0 -109
  138. package/mcp/powers/postman/microservices-architect/SKILL.md +0 -93
  139. package/mcp/powers/postman/microservices-architect/steering/communication.md +0 -499
  140. package/mcp/powers/postman/microservices-architect/steering/data.md +0 -721
  141. package/mcp/powers/postman/microservices-architect/steering/decomposition.md +0 -344
  142. package/mcp/powers/postman/microservices-architect/steering/observability.md +0 -805
  143. package/mcp/powers/postman/microservices-architect/steering/patterns.md +0 -603
  144. package/mcp/powers/postman/nestjs-expert/POWER.md +0 -130
  145. package/mcp/powers/postman/nestjs-expert/SKILL.md +0 -114
  146. package/mcp/powers/postman/nestjs-expert/steering/authentication.md +0 -461
  147. package/mcp/powers/postman/nestjs-expert/steering/controllers-routing.md +0 -114
  148. package/mcp/powers/postman/nestjs-expert/steering/dtos-validation.md +0 -156
  149. package/mcp/powers/postman/nestjs-expert/steering/migration-from-express.md +0 -1240
  150. package/mcp/powers/postman/nestjs-expert/steering/secure-sessions.md +0 -56
  151. package/mcp/powers/postman/nestjs-expert/steering/services-di.md +0 -143
  152. package/mcp/powers/postman/nestjs-expert/steering/strangler-fig-pattern.md +0 -47
  153. package/mcp/powers/postman/nestjs-expert/steering/testing-patterns.md +0 -189
  154. package/mcp/powers/postman/oneup-design/POWER.md +0 -72
  155. package/mcp/powers/postman/oneup-design/SKILL.md +0 -71
  156. package/mcp/powers/postman/oneup-design/steering/colors.md +0 -41
  157. package/mcp/powers/postman/oneup-design/steering/components.md +0 -53
  158. package/mcp/powers/postman/oneup-design/steering/spacing.md +0 -84
  159. package/mcp/powers/postman/openapi-docs/POWER.md +0 -78
  160. package/mcp/powers/postman/openapi-docs/SKILL.md +0 -68
  161. package/mcp/powers/postman/openapi-docs/steering/crud-templates.md +0 -43
  162. package/mcp/powers/postman/openapi-docs/steering/framework-express.md +0 -19
  163. package/mcp/powers/postman/openapi-docs/steering/framework-fastapi.md +0 -20
  164. package/mcp/powers/postman/openapi-docs/steering/framework-nestjs.md +0 -20
  165. package/mcp/powers/postman/openapi-docs/steering/framework-raw-openapi.md +0 -14
  166. package/mcp/powers/postman/openapi-docs/steering/openapi-checklist.md +0 -33
  167. package/mcp/powers/postman/openapi-docs/steering/stoplight-ui.md +0 -21
  168. package/mcp/powers/postman/steering/steering.md +0 -26
  169. package/mcp/powers/sentry-automation/POWER.md +0 -235
  170. package/mcp/powers/sentry-automation/SKILL.md +0 -232
  171. package/mcp/skills/atlassian-mcp/SKILL.md +0 -88
  172. package/mcp/skills/atlassian-mcp/references/authentication-patterns.md +0 -520
  173. package/mcp/skills/atlassian-mcp/references/common-workflows.md +0 -660
  174. package/mcp/skills/atlassian-mcp/references/confluence-operations.md +0 -528
  175. package/mcp/skills/atlassian-mcp/references/jira-queries.md +0 -421
  176. package/mcp/skills/atlassian-mcp/references/mcp-server-setup.md +0 -292
  177. package/mcp/skills/building-mcp-server-on-cloudflare/SKILL.md +0 -258
  178. package/mcp/skills/building-mcp-server-on-cloudflare/references/examples.md +0 -115
  179. package/mcp/skills/building-mcp-server-on-cloudflare/references/oauth-setup.md +0 -338
  180. package/mcp/skills/building-mcp-server-on-cloudflare/references/tool-patterns.md +0 -29
  181. package/mcp/skills/building-mcp-server-on-cloudflare/references/troubleshooting.md +0 -317
  182. package/mcp/skills/datadog-automation/SKILL.md +0 -235
  183. package/mcp/skills/github-automation/SKILL.md +0 -227
  184. package/mcp/skills/mcp-builder/LICENSE.txt +0 -202
  185. package/mcp/skills/mcp-builder/SKILL.md +0 -176
  186. package/mcp/skills/mcp-builder/reference/evaluation.md +0 -602
  187. package/mcp/skills/mcp-builder/reference/mcp_best_practices.md +0 -915
  188. package/mcp/skills/mcp-builder/reference/node_mcp_server.md +0 -916
  189. package/mcp/skills/mcp-builder/reference/python_mcp_server.md +0 -752
  190. package/mcp/skills/mcp-builder/scripts/connections.py +0 -151
  191. package/mcp/skills/mcp-builder/scripts/evaluation.py +0 -373
  192. package/mcp/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
  193. package/mcp/skills/mcp-builder/scripts/requirements.txt +0 -2
  194. package/mcp/skills/mcp-developer/SKILL.md +0 -85
  195. package/mcp/skills/mcp-developer/references/protocol.md +0 -244
  196. package/mcp/skills/mcp-developer/references/python-sdk.md +0 -367
  197. package/mcp/skills/mcp-developer/references/resources.md +0 -554
  198. package/mcp/skills/mcp-developer/references/tools.md +0 -480
  199. package/mcp/skills/mcp-developer/references/typescript-sdk.md +0 -350
  200. package/mcp/skills/postman/POWER.md +0 -242
  201. package/mcp/skills/postman/SKILL.md +0 -240
  202. package/mcp/skills/postman/flutter-expert/POWER.md +0 -89
  203. package/mcp/skills/postman/flutter-expert/SKILL.md +0 -77
  204. package/mcp/skills/postman/flutter-expert/references/bloc-state.md +0 -259
  205. package/mcp/skills/postman/flutter-expert/references/engineering-principles.md +0 -82
  206. package/mcp/skills/postman/flutter-expert/references/gorouter-navigation.md +0 -157
  207. package/mcp/skills/postman/flutter-expert/references/performance.md +0 -99
  208. package/mcp/skills/postman/flutter-expert/references/project-structure.md +0 -77
  209. package/mcp/skills/postman/flutter-expert/references/riverpod-state.md +0 -404
  210. package/mcp/skills/postman/flutter-expert/references/widget-patterns.md +0 -123
  211. package/mcp/skills/postman/flutter-security-reviewer/POWER.md +0 -204
  212. package/mcp/skills/postman/flutter-security-reviewer/SKILL.md +0 -180
  213. package/mcp/skills/postman/flutter-security-reviewer/references/log_redaction.md +0 -17
  214. package/mcp/skills/postman/flutter-security-reviewer/references/network_hardening.md +0 -13
  215. package/mcp/skills/postman/flutter-security-reviewer/references/secret-scanning.md +0 -123
  216. package/mcp/skills/postman/flutter-security-reviewer/references/secure_storage_policy.md +0 -16
  217. package/mcp/skills/postman/flutter-security-reviewer/references/vulnerability-patterns.md +0 -189
  218. package/mcp/skills/postman/flutter-security-reviewer/templates/security_review_response.md +0 -31
  219. package/mcp/skills/postman/flutter-test-master/POWER.md +0 -527
  220. package/mcp/skills/postman/flutter-test-master/SKILL.md +0 -513
  221. package/mcp/skills/postman/flutter-test-master/references/golden-testing.md +0 -444
  222. package/mcp/skills/postman/flutter-test-master/references/integration-testing.md +0 -688
  223. package/mcp/skills/postman/flutter-test-master/references/property-testing.md +0 -408
  224. package/mcp/skills/postman/flutter-test-master/references/riverpod-testing.md +0 -606
  225. package/mcp/skills/postman/flutter-test-master/references/test-utilities.md +0 -566
  226. package/mcp/skills/postman/flutter-test-master/references/unit-testing.md +0 -511
  227. package/mcp/skills/postman/flutter-test-master/references/widget-testing.md +0 -601
  228. package/mcp/skills/postman/git-commit/POWER.md +0 -47
  229. package/mcp/skills/postman/git-commit/SKILL.md +0 -46
  230. package/mcp/skills/postman/gorouter-restoration/POWER.md +0 -227
  231. package/mcp/skills/postman/gorouter-restoration/SKILL.md +0 -217
  232. package/mcp/skills/postman/gorouter-restoration/references/guard_patterns.md +0 -14
  233. package/mcp/skills/postman/gorouter-restoration/references/tab_preservation.md +0 -12
  234. package/mcp/skills/postman/gorouter-restoration/templates/guard_redirect.md +0 -30
  235. package/mcp/skills/postman/gorouter-restoration/templates/stateful_shell_skeleton.md +0 -40
  236. package/mcp/skills/postman/mcp.json +0 -11
  237. package/mcp/skills/postman/microservices-architect/POWER.md +0 -109
  238. package/mcp/skills/postman/microservices-architect/SKILL.md +0 -93
  239. package/mcp/skills/postman/microservices-architect/references/communication.md +0 -499
  240. package/mcp/skills/postman/microservices-architect/references/data.md +0 -721
  241. package/mcp/skills/postman/microservices-architect/references/decomposition.md +0 -344
  242. package/mcp/skills/postman/microservices-architect/references/observability.md +0 -805
  243. package/mcp/skills/postman/microservices-architect/references/patterns.md +0 -603
  244. package/mcp/skills/postman/nestjs-expert/POWER.md +0 -130
  245. package/mcp/skills/postman/nestjs-expert/SKILL.md +0 -114
  246. package/mcp/skills/postman/nestjs-expert/references/authentication.md +0 -461
  247. package/mcp/skills/postman/nestjs-expert/references/controllers-routing.md +0 -114
  248. package/mcp/skills/postman/nestjs-expert/references/dtos-validation.md +0 -156
  249. package/mcp/skills/postman/nestjs-expert/references/migration-from-express.md +0 -1240
  250. package/mcp/skills/postman/nestjs-expert/references/secure-sessions.md +0 -56
  251. package/mcp/skills/postman/nestjs-expert/references/services-di.md +0 -143
  252. package/mcp/skills/postman/nestjs-expert/references/strangler-fig-pattern.md +0 -47
  253. package/mcp/skills/postman/nestjs-expert/references/testing-patterns.md +0 -189
  254. package/mcp/skills/postman/oneup-design/POWER.md +0 -72
  255. package/mcp/skills/postman/oneup-design/SKILL.md +0 -71
  256. package/mcp/skills/postman/oneup-design/references/colors.md +0 -41
  257. package/mcp/skills/postman/oneup-design/references/components.md +0 -53
  258. package/mcp/skills/postman/oneup-design/references/spacing.md +0 -84
  259. package/mcp/skills/postman/openapi-docs/POWER.md +0 -78
  260. package/mcp/skills/postman/openapi-docs/SKILL.md +0 -68
  261. package/mcp/skills/postman/openapi-docs/references/crud-templates.md +0 -43
  262. package/mcp/skills/postman/openapi-docs/references/framework-express.md +0 -19
  263. package/mcp/skills/postman/openapi-docs/references/framework-fastapi.md +0 -20
  264. package/mcp/skills/postman/openapi-docs/references/framework-nestjs.md +0 -20
  265. package/mcp/skills/postman/openapi-docs/references/framework-raw-openapi.md +0 -14
  266. package/mcp/skills/postman/openapi-docs/references/openapi-checklist.md +0 -33
  267. package/mcp/skills/postman/openapi-docs/references/stoplight-ui.md +0 -21
  268. package/mcp/skills/postman/references/steering.md +0 -26
  269. package/mcp/skills/sentry-automation/SKILL.md +0 -232
  270. package/workflows/powers/atlassian-mcp/POWER.md +0 -21
  271. package/workflows/powers/atlassian-mcp/SKILL.md +0 -18
  272. package/workflows/powers/building-mcp-server-on-cloudflare/POWER.md +0 -21
  273. package/workflows/powers/building-mcp-server-on-cloudflare/SKILL.md +0 -18
  274. package/workflows/powers/datadog-automation/POWER.md +0 -21
  275. package/workflows/powers/datadog-automation/SKILL.md +0 -18
  276. package/workflows/powers/github-automation/POWER.md +0 -21
  277. package/workflows/powers/github-automation/SKILL.md +0 -18
  278. package/workflows/powers/mcp-builder/POWER.md +0 -21
  279. package/workflows/powers/mcp-builder/SKILL.md +0 -18
  280. package/workflows/powers/mcp-developer/POWER.md +0 -21
  281. package/workflows/powers/mcp-developer/SKILL.md +0 -18
  282. package/workflows/powers/postman/POWER.md +0 -21
  283. package/workflows/powers/postman/SKILL.md +0 -18
  284. package/workflows/powers/sentry-automation/POWER.md +0 -21
  285. package/workflows/powers/sentry-automation/SKILL.md +0 -18
  286. package/workflows/skills/atlassian-mcp/SKILL.md +0 -18
  287. package/workflows/skills/building-mcp-server-on-cloudflare/SKILL.md +0 -18
  288. package/workflows/skills/datadog-automation/SKILL.md +0 -18
  289. package/workflows/skills/github-automation/SKILL.md +0 -18
  290. package/workflows/skills/mcp-builder/SKILL.md +0 -18
  291. package/workflows/skills/mcp-developer/SKILL.md +0 -18
  292. package/workflows/skills/postman/SKILL.md +0 -18
  293. package/workflows/skills/sentry-automation/SKILL.md +0 -18
  294. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/atlassian-mcp/SKILL.md +0 -88
  295. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/atlassian-mcp/references/authentication-patterns.md +0 -520
  296. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/atlassian-mcp/references/common-workflows.md +0 -660
  297. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/atlassian-mcp/references/confluence-operations.md +0 -528
  298. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/atlassian-mcp/references/jira-queries.md +0 -421
  299. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/atlassian-mcp/references/mcp-server-setup.md +0 -292
  300. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/building-mcp-server-on-cloudflare/SKILL.md +0 -258
  301. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/building-mcp-server-on-cloudflare/references/examples.md +0 -115
  302. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/building-mcp-server-on-cloudflare/references/oauth-setup.md +0 -338
  303. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/building-mcp-server-on-cloudflare/references/tool-patterns.md +0 -29
  304. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/building-mcp-server-on-cloudflare/references/troubleshooting.md +0 -317
  305. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/datadog-automation/SKILL.md +0 -235
  306. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/github-automation/SKILL.md +0 -227
  307. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/LICENSE.txt +0 -202
  308. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/SKILL.md +0 -176
  309. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/reference/evaluation.md +0 -602
  310. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/reference/mcp_best_practices.md +0 -915
  311. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/reference/node_mcp_server.md +0 -916
  312. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/reference/python_mcp_server.md +0 -752
  313. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/scripts/connections.py +0 -151
  314. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/scripts/evaluation.py +0 -373
  315. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
  316. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/scripts/requirements.txt +0 -2
  317. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-developer/SKILL.md +0 -85
  318. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-developer/references/protocol.md +0 -244
  319. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-developer/references/python-sdk.md +0 -367
  320. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-developer/references/resources.md +0 -554
  321. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-developer/references/tools.md +0 -480
  322. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-developer/references/typescript-sdk.md +0 -350
  323. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/POWER.md +0 -242
  324. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/SKILL.md +0 -240
  325. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-expert/POWER.md +0 -89
  326. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-expert/SKILL.md +0 -77
  327. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-expert/references/bloc-state.md +0 -259
  328. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-expert/references/engineering-principles.md +0 -82
  329. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-expert/references/gorouter-navigation.md +0 -157
  330. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-expert/references/performance.md +0 -99
  331. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-expert/references/project-structure.md +0 -77
  332. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-expert/references/riverpod-state.md +0 -404
  333. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-expert/references/widget-patterns.md +0 -123
  334. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-security-reviewer/POWER.md +0 -204
  335. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-security-reviewer/SKILL.md +0 -180
  336. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-security-reviewer/references/log_redaction.md +0 -17
  337. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-security-reviewer/references/network_hardening.md +0 -13
  338. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-security-reviewer/references/secret-scanning.md +0 -123
  339. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-security-reviewer/references/secure_storage_policy.md +0 -16
  340. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-security-reviewer/references/vulnerability-patterns.md +0 -189
  341. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-security-reviewer/templates/security_review_response.md +0 -31
  342. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-test-master/POWER.md +0 -527
  343. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-test-master/SKILL.md +0 -513
  344. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-test-master/references/golden-testing.md +0 -444
  345. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-test-master/references/integration-testing.md +0 -688
  346. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-test-master/references/property-testing.md +0 -408
  347. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-test-master/references/riverpod-testing.md +0 -606
  348. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-test-master/references/test-utilities.md +0 -566
  349. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-test-master/references/unit-testing.md +0 -511
  350. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-test-master/references/widget-testing.md +0 -601
  351. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/git-commit/POWER.md +0 -47
  352. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/git-commit/SKILL.md +0 -46
  353. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/gorouter-restoration/POWER.md +0 -227
  354. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/gorouter-restoration/SKILL.md +0 -217
  355. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/gorouter-restoration/references/guard_patterns.md +0 -14
  356. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/gorouter-restoration/references/tab_preservation.md +0 -12
  357. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/gorouter-restoration/templates/guard_redirect.md +0 -30
  358. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/gorouter-restoration/templates/stateful_shell_skeleton.md +0 -40
  359. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/mcp.json +0 -11
  360. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/microservices-architect/POWER.md +0 -109
  361. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/microservices-architect/SKILL.md +0 -93
  362. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/microservices-architect/references/communication.md +0 -499
  363. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/microservices-architect/references/data.md +0 -721
  364. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/microservices-architect/references/decomposition.md +0 -344
  365. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/microservices-architect/references/observability.md +0 -805
  366. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/microservices-architect/references/patterns.md +0 -603
  367. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/POWER.md +0 -130
  368. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/SKILL.md +0 -114
  369. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/references/authentication.md +0 -461
  370. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/references/controllers-routing.md +0 -114
  371. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/references/dtos-validation.md +0 -156
  372. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/references/migration-from-express.md +0 -1240
  373. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/references/secure-sessions.md +0 -56
  374. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/references/services-di.md +0 -143
  375. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/references/strangler-fig-pattern.md +0 -47
  376. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/references/testing-patterns.md +0 -189
  377. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/oneup-design/POWER.md +0 -72
  378. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/oneup-design/SKILL.md +0 -71
  379. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/oneup-design/references/colors.md +0 -41
  380. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/oneup-design/references/components.md +0 -53
  381. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/oneup-design/references/spacing.md +0 -84
  382. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/openapi-docs/POWER.md +0 -78
  383. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/openapi-docs/SKILL.md +0 -68
  384. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/openapi-docs/references/crud-templates.md +0 -43
  385. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/openapi-docs/references/framework-express.md +0 -19
  386. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/openapi-docs/references/framework-fastapi.md +0 -20
  387. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/openapi-docs/references/framework-nestjs.md +0 -20
  388. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/openapi-docs/references/framework-raw-openapi.md +0 -14
  389. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/openapi-docs/references/openapi-checklist.md +0 -33
  390. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/openapi-docs/references/stoplight-ui.md +0 -21
  391. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/references/steering.md +0 -26
  392. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/sentry-automation/SKILL.md +0 -232
  393. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/atlassian-mcp/SKILL.md +0 -88
  394. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/atlassian-mcp/references/authentication-patterns.md +0 -520
  395. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/atlassian-mcp/references/common-workflows.md +0 -660
  396. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/atlassian-mcp/references/confluence-operations.md +0 -528
  397. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/atlassian-mcp/references/jira-queries.md +0 -421
  398. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/atlassian-mcp/references/mcp-server-setup.md +0 -292
  399. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/building-mcp-server-on-cloudflare/SKILL.md +0 -258
  400. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/building-mcp-server-on-cloudflare/references/examples.md +0 -115
  401. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/building-mcp-server-on-cloudflare/references/oauth-setup.md +0 -338
  402. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/building-mcp-server-on-cloudflare/references/tool-patterns.md +0 -29
  403. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/building-mcp-server-on-cloudflare/references/troubleshooting.md +0 -317
  404. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/datadog-automation/SKILL.md +0 -235
  405. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/github-automation/SKILL.md +0 -227
  406. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/LICENSE.txt +0 -202
  407. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/SKILL.md +0 -176
  408. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/reference/evaluation.md +0 -602
  409. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/reference/mcp_best_practices.md +0 -915
  410. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/reference/node_mcp_server.md +0 -916
  411. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/reference/python_mcp_server.md +0 -752
  412. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/scripts/connections.py +0 -151
  413. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/scripts/evaluation.py +0 -373
  414. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
  415. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/scripts/requirements.txt +0 -2
  416. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-developer/SKILL.md +0 -85
  417. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-developer/references/protocol.md +0 -244
  418. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-developer/references/python-sdk.md +0 -367
  419. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-developer/references/resources.md +0 -554
  420. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-developer/references/tools.md +0 -480
  421. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-developer/references/typescript-sdk.md +0 -350
  422. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/POWER.md +0 -242
  423. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/SKILL.md +0 -240
  424. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-expert/POWER.md +0 -89
  425. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-expert/SKILL.md +0 -77
  426. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-expert/references/bloc-state.md +0 -259
  427. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-expert/references/engineering-principles.md +0 -82
  428. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-expert/references/gorouter-navigation.md +0 -157
  429. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-expert/references/performance.md +0 -99
  430. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-expert/references/project-structure.md +0 -77
  431. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-expert/references/riverpod-state.md +0 -404
  432. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-expert/references/widget-patterns.md +0 -123
  433. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-security-reviewer/POWER.md +0 -204
  434. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-security-reviewer/SKILL.md +0 -180
  435. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-security-reviewer/references/log_redaction.md +0 -17
  436. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-security-reviewer/references/network_hardening.md +0 -13
  437. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-security-reviewer/references/secret-scanning.md +0 -123
  438. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-security-reviewer/references/secure_storage_policy.md +0 -16
  439. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-security-reviewer/references/vulnerability-patterns.md +0 -189
  440. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-security-reviewer/templates/security_review_response.md +0 -31
  441. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-test-master/POWER.md +0 -527
  442. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-test-master/SKILL.md +0 -513
  443. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-test-master/references/golden-testing.md +0 -444
  444. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-test-master/references/integration-testing.md +0 -688
  445. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-test-master/references/property-testing.md +0 -408
  446. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-test-master/references/riverpod-testing.md +0 -606
  447. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-test-master/references/test-utilities.md +0 -566
  448. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-test-master/references/unit-testing.md +0 -511
  449. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-test-master/references/widget-testing.md +0 -601
  450. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/git-commit/POWER.md +0 -47
  451. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/git-commit/SKILL.md +0 -46
  452. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/gorouter-restoration/POWER.md +0 -227
  453. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/gorouter-restoration/SKILL.md +0 -217
  454. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/gorouter-restoration/references/guard_patterns.md +0 -14
  455. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/gorouter-restoration/references/tab_preservation.md +0 -12
  456. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/gorouter-restoration/templates/guard_redirect.md +0 -30
  457. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/gorouter-restoration/templates/stateful_shell_skeleton.md +0 -40
  458. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/mcp.json +0 -11
  459. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/microservices-architect/POWER.md +0 -109
  460. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/microservices-architect/SKILL.md +0 -93
  461. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/microservices-architect/references/communication.md +0 -499
  462. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/microservices-architect/references/data.md +0 -721
  463. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/microservices-architect/references/decomposition.md +0 -344
  464. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/microservices-architect/references/observability.md +0 -805
  465. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/microservices-architect/references/patterns.md +0 -603
  466. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/POWER.md +0 -130
  467. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/SKILL.md +0 -114
  468. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/references/authentication.md +0 -461
  469. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/references/controllers-routing.md +0 -114
  470. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/references/dtos-validation.md +0 -156
  471. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/references/migration-from-express.md +0 -1240
  472. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/references/secure-sessions.md +0 -56
  473. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/references/services-di.md +0 -143
  474. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/references/strangler-fig-pattern.md +0 -47
  475. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/references/testing-patterns.md +0 -189
  476. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/oneup-design/POWER.md +0 -72
  477. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/oneup-design/SKILL.md +0 -71
  478. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/oneup-design/references/colors.md +0 -41
  479. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/oneup-design/references/components.md +0 -53
  480. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/oneup-design/references/spacing.md +0 -84
  481. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/openapi-docs/POWER.md +0 -78
  482. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/openapi-docs/SKILL.md +0 -68
  483. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/openapi-docs/references/crud-templates.md +0 -43
  484. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/openapi-docs/references/framework-express.md +0 -19
  485. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/openapi-docs/references/framework-fastapi.md +0 -20
  486. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/openapi-docs/references/framework-nestjs.md +0 -20
  487. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/openapi-docs/references/framework-raw-openapi.md +0 -14
  488. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/openapi-docs/references/openapi-checklist.md +0 -33
  489. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/openapi-docs/references/stoplight-ui.md +0 -21
  490. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/references/steering.md +0 -26
  491. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/sentry-automation/SKILL.md +0 -232
  492. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/atlassian-mcp/SKILL.md +0 -88
  493. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/atlassian-mcp/references/authentication-patterns.md +0 -520
  494. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/atlassian-mcp/references/common-workflows.md +0 -660
  495. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/atlassian-mcp/references/confluence-operations.md +0 -528
  496. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/atlassian-mcp/references/jira-queries.md +0 -421
  497. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/atlassian-mcp/references/mcp-server-setup.md +0 -292
  498. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/building-mcp-server-on-cloudflare/SKILL.md +0 -258
  499. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/building-mcp-server-on-cloudflare/references/examples.md +0 -115
  500. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/building-mcp-server-on-cloudflare/references/oauth-setup.md +0 -338
  501. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/building-mcp-server-on-cloudflare/references/tool-patterns.md +0 -29
  502. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/building-mcp-server-on-cloudflare/references/troubleshooting.md +0 -317
  503. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/datadog-automation/SKILL.md +0 -235
  504. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/github-automation/SKILL.md +0 -227
  505. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/LICENSE.txt +0 -202
  506. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/SKILL.md +0 -176
  507. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/reference/evaluation.md +0 -602
  508. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/reference/mcp_best_practices.md +0 -915
  509. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/reference/node_mcp_server.md +0 -916
  510. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/reference/python_mcp_server.md +0 -752
  511. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/scripts/connections.py +0 -151
  512. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/scripts/evaluation.py +0 -373
  513. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
  514. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/scripts/requirements.txt +0 -2
  515. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-developer/SKILL.md +0 -85
  516. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-developer/references/protocol.md +0 -244
  517. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-developer/references/python-sdk.md +0 -367
  518. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-developer/references/resources.md +0 -554
  519. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-developer/references/tools.md +0 -480
  520. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-developer/references/typescript-sdk.md +0 -350
  521. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/POWER.md +0 -242
  522. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/SKILL.md +0 -240
  523. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-expert/POWER.md +0 -89
  524. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-expert/SKILL.md +0 -77
  525. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-expert/references/bloc-state.md +0 -259
  526. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-expert/references/engineering-principles.md +0 -82
  527. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-expert/references/gorouter-navigation.md +0 -157
  528. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-expert/references/performance.md +0 -99
  529. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-expert/references/project-structure.md +0 -77
  530. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-expert/references/riverpod-state.md +0 -404
  531. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-expert/references/widget-patterns.md +0 -123
  532. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-security-reviewer/POWER.md +0 -204
  533. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-security-reviewer/SKILL.md +0 -180
  534. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-security-reviewer/references/log_redaction.md +0 -17
  535. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-security-reviewer/references/network_hardening.md +0 -13
  536. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-security-reviewer/references/secret-scanning.md +0 -123
  537. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-security-reviewer/references/secure_storage_policy.md +0 -16
  538. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-security-reviewer/references/vulnerability-patterns.md +0 -189
  539. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-security-reviewer/templates/security_review_response.md +0 -31
  540. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-test-master/POWER.md +0 -527
  541. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-test-master/SKILL.md +0 -513
  542. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-test-master/references/golden-testing.md +0 -444
  543. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-test-master/references/integration-testing.md +0 -688
  544. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-test-master/references/property-testing.md +0 -408
  545. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-test-master/references/riverpod-testing.md +0 -606
  546. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-test-master/references/test-utilities.md +0 -566
  547. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-test-master/references/unit-testing.md +0 -511
  548. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-test-master/references/widget-testing.md +0 -601
  549. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/git-commit/POWER.md +0 -47
  550. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/git-commit/SKILL.md +0 -46
  551. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/gorouter-restoration/POWER.md +0 -227
  552. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/gorouter-restoration/SKILL.md +0 -217
  553. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/gorouter-restoration/references/guard_patterns.md +0 -14
  554. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/gorouter-restoration/references/tab_preservation.md +0 -12
  555. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/gorouter-restoration/templates/guard_redirect.md +0 -30
  556. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/gorouter-restoration/templates/stateful_shell_skeleton.md +0 -40
  557. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/mcp.json +0 -11
  558. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/microservices-architect/POWER.md +0 -109
  559. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/microservices-architect/SKILL.md +0 -93
  560. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/microservices-architect/references/communication.md +0 -499
  561. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/microservices-architect/references/data.md +0 -721
  562. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/microservices-architect/references/decomposition.md +0 -344
  563. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/microservices-architect/references/observability.md +0 -805
  564. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/microservices-architect/references/patterns.md +0 -603
  565. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/POWER.md +0 -130
  566. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/SKILL.md +0 -114
  567. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/references/authentication.md +0 -461
  568. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/references/controllers-routing.md +0 -114
  569. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/references/dtos-validation.md +0 -156
  570. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/references/migration-from-express.md +0 -1240
  571. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/references/secure-sessions.md +0 -56
  572. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/references/services-di.md +0 -143
  573. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/references/strangler-fig-pattern.md +0 -47
  574. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/references/testing-patterns.md +0 -189
  575. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/oneup-design/POWER.md +0 -72
  576. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/oneup-design/SKILL.md +0 -71
  577. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/oneup-design/references/colors.md +0 -41
  578. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/oneup-design/references/components.md +0 -53
  579. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/oneup-design/references/spacing.md +0 -84
  580. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/openapi-docs/POWER.md +0 -78
  581. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/openapi-docs/SKILL.md +0 -68
  582. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/openapi-docs/references/crud-templates.md +0 -43
  583. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/openapi-docs/references/framework-express.md +0 -19
  584. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/openapi-docs/references/framework-fastapi.md +0 -20
  585. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/openapi-docs/references/framework-nestjs.md +0 -20
  586. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/openapi-docs/references/framework-raw-openapi.md +0 -14
  587. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/openapi-docs/references/openapi-checklist.md +0 -33
  588. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/openapi-docs/references/stoplight-ui.md +0 -21
  589. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/references/steering.md +0 -26
  590. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/sentry-automation/SKILL.md +0 -232
@@ -0,0 +1,1488 @@
1
+ #!/usr/bin/env node
2
+
3
+ // src/config/index.ts
4
+ import { readFileSync } from "fs";
5
+ import path from "path";
6
+ import { fileURLToPath } from "url";
7
+
8
+ // src/config/schema.ts
9
+ import { z } from "zod";
10
+ var ServerConfigSchema = z.object({
11
+ server: z.object({
12
+ name: z.string(),
13
+ version: z.string(),
14
+ description: z.string().optional()
15
+ }),
16
+ vault: z.object({
17
+ roots: z.array(z.string()).min(1),
18
+ summaryMaxLength: z.number().int().positive().default(200)
19
+ }),
20
+ transport: z.object({
21
+ default: z.enum(["stdio", "streamable-http"]).default("stdio"),
22
+ http: z.object({
23
+ port: z.number().int().positive().default(3100),
24
+ host: z.string().default("127.0.0.1")
25
+ }).optional()
26
+ })
27
+ });
28
+ var FORBIDDEN_KEYS = [
29
+ "apiKey",
30
+ "api_key",
31
+ "secret",
32
+ "token",
33
+ "password",
34
+ "credential"
35
+ ];
36
+ function rejectCredentialFields(raw) {
37
+ const json = JSON.stringify(raw);
38
+ for (const key of FORBIDDEN_KEYS) {
39
+ if (json.includes(`"${key}"`)) {
40
+ throw new Error(
41
+ `Server config.json must not contain credential field "${key}". Store credentials in cbx_config.json instead.`
42
+ );
43
+ }
44
+ }
45
+ }
46
+
47
+ // src/utils/logger.ts
48
+ var LEVEL_ORDER = {
49
+ debug: 0,
50
+ info: 1,
51
+ warn: 2,
52
+ error: 3
53
+ };
54
+ var currentLevel = "info";
55
+ function setLogLevel(level) {
56
+ currentLevel = level;
57
+ }
58
+ function shouldLog(level) {
59
+ return LEVEL_ORDER[level] >= LEVEL_ORDER[currentLevel];
60
+ }
61
+ function ts() {
62
+ return (/* @__PURE__ */ new Date()).toISOString();
63
+ }
64
+ var logger = {
65
+ debug(msg, data) {
66
+ if (shouldLog("debug")) {
67
+ process.stderr.write(
68
+ `[${ts()}] DEBUG ${msg}${data ? ` ${JSON.stringify(data)}` : ""}
69
+ `
70
+ );
71
+ }
72
+ },
73
+ info(msg, data) {
74
+ if (shouldLog("info")) {
75
+ process.stderr.write(
76
+ `[${ts()}] INFO ${msg}${data ? ` ${JSON.stringify(data)}` : ""}
77
+ `
78
+ );
79
+ }
80
+ },
81
+ warn(msg, data) {
82
+ if (shouldLog("warn")) {
83
+ process.stderr.write(
84
+ `[${ts()}] WARN ${msg}${data ? ` ${JSON.stringify(data)}` : ""}
85
+ `
86
+ );
87
+ }
88
+ },
89
+ error(msg, data) {
90
+ if (shouldLog("error")) {
91
+ process.stderr.write(
92
+ `[${ts()}] ERROR ${msg}${data ? ` ${JSON.stringify(data)}` : ""}
93
+ `
94
+ );
95
+ }
96
+ },
97
+ /** Raw line to stderr (no timestamp/level prefix). Used for startup banners. */
98
+ raw(msg) {
99
+ process.stderr.write(`${msg}
100
+ `);
101
+ }
102
+ };
103
+
104
+ // src/config/index.ts
105
+ var __dirname = path.dirname(fileURLToPath(import.meta.url));
106
+ var PKG_ROOT = path.basename(__dirname) === "config" ? path.resolve(__dirname, "../..") : path.resolve(__dirname, "..");
107
+ var DEFAULT_CONFIG_PATH = path.resolve(PKG_ROOT, "config.json");
108
+ function loadServerConfig(configPath) {
109
+ const resolved = configPath ?? DEFAULT_CONFIG_PATH;
110
+ logger.debug(`Loading server config from ${resolved}`);
111
+ let raw;
112
+ try {
113
+ raw = readFileSync(resolved, "utf8");
114
+ } catch {
115
+ throw new Error(`Cannot read server config: ${resolved}`);
116
+ }
117
+ const parsed = JSON.parse(raw);
118
+ rejectCredentialFields(parsed);
119
+ const result = ServerConfigSchema.safeParse(parsed);
120
+ if (!result.success) {
121
+ throw new Error(`Invalid server config: ${result.error.message}`);
122
+ }
123
+ return result.data;
124
+ }
125
+
126
+ // src/vault/scanner.ts
127
+ import { readdir, stat } from "fs/promises";
128
+ import path2 from "path";
129
+ async function scanVaultRoots(roots, basePath) {
130
+ const skills = [];
131
+ for (const rootRel of roots) {
132
+ const rootAbs = path2.resolve(basePath, rootRel);
133
+ let entries;
134
+ try {
135
+ entries = await readdir(rootAbs);
136
+ } catch {
137
+ logger.warn(`Vault root not found, skipping: ${rootAbs}`);
138
+ continue;
139
+ }
140
+ for (const entry of entries) {
141
+ if (entry.startsWith(".")) continue;
142
+ const entryPath = path2.join(rootAbs, entry);
143
+ const entryStat = await stat(entryPath).catch(() => null);
144
+ if (!entryStat?.isDirectory()) continue;
145
+ const skillFile = path2.join(entryPath, "SKILL.md");
146
+ const skillStat = await stat(skillFile).catch(() => null);
147
+ if (!skillStat?.isFile()) continue;
148
+ skills.push({
149
+ id: entry,
150
+ category: deriveCategory(entry),
151
+ path: skillFile
152
+ });
153
+ }
154
+ }
155
+ logger.info(`Vault scan complete: ${skills.length} skills discovered`);
156
+ return skills;
157
+ }
158
+ function deriveCategory(skillId) {
159
+ const categoryMap = {
160
+ flutter: "mobile",
161
+ drift: "mobile",
162
+ gorouter: "mobile",
163
+ riverpod: "mobile",
164
+ react: "frontend",
165
+ next: "frontend",
166
+ nextjs: "frontend",
167
+ tailwind: "frontend",
168
+ vue: "frontend",
169
+ frontend: "frontend",
170
+ nestjs: "backend",
171
+ fastapi: "backend",
172
+ fastify: "backend",
173
+ nodejs: "backend",
174
+ golang: "backend",
175
+ rust: "backend",
176
+ python: "backend",
177
+ javascript: "backend",
178
+ typescript: "backend",
179
+ java: "backend",
180
+ kotlin: "backend",
181
+ csharp: "backend",
182
+ database: "data",
183
+ graphql: "data",
184
+ api: "api",
185
+ openapi: "api",
186
+ devops: "devops",
187
+ terraform: "devops",
188
+ deployment: "devops",
189
+ vercel: "devops",
190
+ security: "security",
191
+ penetration: "security",
192
+ "red-team": "security",
193
+ vulnerability: "security",
194
+ secure: "security",
195
+ test: "testing",
196
+ playwright: "testing",
197
+ qa: "testing",
198
+ tdd: "testing",
199
+ "find-bugs": "testing",
200
+ "fix-review": "testing",
201
+ monitoring: "observability",
202
+ sentry: "observability",
203
+ datadog: "observability",
204
+ performance: "performance",
205
+ "web-perf": "performance",
206
+ git: "tooling",
207
+ lint: "tooling",
208
+ cli: "tooling",
209
+ "clean-code": "practices",
210
+ plan: "practices",
211
+ brainstorm: "practices",
212
+ behavioral: "practices",
213
+ refactor: "practices",
214
+ architecture: "architecture",
215
+ microservices: "architecture",
216
+ "design-system": "design",
217
+ "mobile-design": "design",
218
+ "ui-ux": "design",
219
+ "web-design": "design",
220
+ "ux-ui": "design",
221
+ accessibility: "design",
222
+ documentation: "documentation",
223
+ "code-documenter": "documentation",
224
+ changelog: "documentation",
225
+ game: "game-dev",
226
+ seo: "marketing",
227
+ geo: "marketing",
228
+ i18n: "localization",
229
+ mcp: "mcp",
230
+ prompt: "ai",
231
+ "vercel-ai": "ai",
232
+ stripe: "payments",
233
+ saas: "saas"
234
+ };
235
+ const lower = skillId.toLowerCase();
236
+ for (const [prefix, category] of Object.entries(categoryMap)) {
237
+ if (lower.startsWith(prefix)) return category;
238
+ }
239
+ return "general";
240
+ }
241
+
242
+ // src/vault/manifest.ts
243
+ import { readFile } from "fs/promises";
244
+ function buildManifest(skills) {
245
+ const categorySet = /* @__PURE__ */ new Set();
246
+ for (const skill of skills) {
247
+ categorySet.add(skill.category);
248
+ }
249
+ return {
250
+ categories: [...categorySet].sort(),
251
+ skills
252
+ };
253
+ }
254
+ async function extractDescription(skillPath, maxLength) {
255
+ try {
256
+ const content = await readFile(skillPath, "utf8");
257
+ return parseDescriptionFromFrontmatter(content, maxLength);
258
+ } catch (err) {
259
+ logger.debug(`Failed to read description from ${skillPath}: ${err}`);
260
+ return void 0;
261
+ }
262
+ }
263
+ function parseDescriptionFromFrontmatter(content, maxLength) {
264
+ const fmMatch = content.match(/^---\s*\n([\s\S]*?)\n---/);
265
+ if (!fmMatch) return void 0;
266
+ const frontmatter = fmMatch[1];
267
+ const descMatch = frontmatter.match(/^description:\s*(.+)$/m);
268
+ if (!descMatch) return void 0;
269
+ let desc = descMatch[1].trim();
270
+ if (desc.startsWith('"') && desc.endsWith('"') || desc.startsWith("'") && desc.endsWith("'")) {
271
+ desc = desc.slice(1, -1);
272
+ }
273
+ if (desc.length > maxLength) {
274
+ return desc.slice(0, maxLength - 3) + "...";
275
+ }
276
+ return desc;
277
+ }
278
+ async function readFullSkillContent(skillPath) {
279
+ return readFile(skillPath, "utf8");
280
+ }
281
+ async function enrichWithDescriptions(skills, maxLength) {
282
+ return Promise.all(
283
+ skills.map(async (skill) => {
284
+ if (skill.description) return skill;
285
+ const description = await extractDescription(skill.path, maxLength);
286
+ return { ...skill, description };
287
+ })
288
+ );
289
+ }
290
+
291
+ // src/server.ts
292
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
293
+ import { z as z12 } from "zod";
294
+
295
+ // src/tools/skillListCategories.ts
296
+ import { z as z2 } from "zod";
297
+ var skillListCategoriesName = "skill_list_categories";
298
+ var skillListCategoriesDescription = "List all skill categories available in the vault. Returns category names and skill counts.";
299
+ var skillListCategoriesSchema = z2.object({});
300
+ function handleSkillListCategories(manifest) {
301
+ const categoryCounts = {};
302
+ for (const skill of manifest.skills) {
303
+ categoryCounts[skill.category] = (categoryCounts[skill.category] ?? 0) + 1;
304
+ }
305
+ const categories = manifest.categories.map((cat) => ({
306
+ category: cat,
307
+ skillCount: categoryCounts[cat] ?? 0
308
+ }));
309
+ return {
310
+ content: [
311
+ {
312
+ type: "text",
313
+ text: JSON.stringify(
314
+ { categories, totalSkills: manifest.skills.length },
315
+ null,
316
+ 2
317
+ )
318
+ }
319
+ ]
320
+ };
321
+ }
322
+
323
+ // src/tools/skillBrowseCategory.ts
324
+ import { z as z3 } from "zod";
325
+
326
+ // src/utils/errors.ts
327
+ import { McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js";
328
+ function invalidInput(message) {
329
+ throw new McpError(ErrorCode.InvalidParams, message);
330
+ }
331
+ function configNotFound() {
332
+ throw new McpError(
333
+ ErrorCode.InternalError,
334
+ "cbx_config.json not found. Run cbx workflows config --scope global --show to diagnose."
335
+ );
336
+ }
337
+ function unknownPostmanMode(url) {
338
+ throw new McpError(
339
+ ErrorCode.InvalidParams,
340
+ `Unknown Postman MCP URL in config: "${url}". Expected one of: https://mcp.postman.com/minimal, https://mcp.postman.com/code, https://mcp.postman.com/mcp`
341
+ );
342
+ }
343
+ function notFound(entity, id) {
344
+ throw new McpError(ErrorCode.InvalidParams, `${entity} not found: "${id}"`);
345
+ }
346
+
347
+ // src/tools/skillBrowseCategory.ts
348
+ var skillBrowseCategoryName = "skill_browse_category";
349
+ var skillBrowseCategoryDescription = "Browse skills within a specific category. Returns skill IDs and short descriptions.";
350
+ var skillBrowseCategorySchema = z3.object({
351
+ category: z3.string().describe("The category name to browse (from skill_list_categories)")
352
+ });
353
+ async function handleSkillBrowseCategory(args, manifest, summaryMaxLength) {
354
+ const { category } = args;
355
+ if (!manifest.categories.includes(category)) {
356
+ notFound("Category", category);
357
+ }
358
+ const matching = manifest.skills.filter((s) => s.category === category);
359
+ const enriched = await enrichWithDescriptions(matching, summaryMaxLength);
360
+ const skills = enriched.map((s) => ({
361
+ id: s.id,
362
+ description: s.description ?? "(no description)"
363
+ }));
364
+ return {
365
+ content: [
366
+ {
367
+ type: "text",
368
+ text: JSON.stringify(
369
+ { category, skills, count: skills.length },
370
+ null,
371
+ 2
372
+ )
373
+ }
374
+ ]
375
+ };
376
+ }
377
+
378
+ // src/tools/skillSearch.ts
379
+ import { z as z4 } from "zod";
380
+ var skillSearchName = "skill_search";
381
+ var skillSearchDescription = "Search skills by keyword. Matches against skill IDs and descriptions. Returns matching skills with short descriptions.";
382
+ var skillSearchSchema = z4.object({
383
+ query: z4.string().min(1).describe(
384
+ "Search keyword or phrase to match against skill IDs and descriptions"
385
+ )
386
+ });
387
+ async function handleSkillSearch(args, manifest, summaryMaxLength) {
388
+ const { query } = args;
389
+ const lower = query.toLowerCase();
390
+ let matches = manifest.skills.filter(
391
+ (s) => s.id.toLowerCase().includes(lower)
392
+ );
393
+ if (matches.length === 0) {
394
+ const enriched = await enrichWithDescriptions(
395
+ manifest.skills,
396
+ summaryMaxLength
397
+ );
398
+ matches = enriched.filter(
399
+ (s) => s.id.toLowerCase().includes(lower) || s.description && s.description.toLowerCase().includes(lower)
400
+ );
401
+ } else {
402
+ matches = await enrichWithDescriptions(matches, summaryMaxLength);
403
+ }
404
+ const results = matches.map((s) => ({
405
+ id: s.id,
406
+ category: s.category,
407
+ description: s.description ?? "(no description)"
408
+ }));
409
+ return {
410
+ content: [
411
+ {
412
+ type: "text",
413
+ text: JSON.stringify(
414
+ { query, results, count: results.length },
415
+ null,
416
+ 2
417
+ )
418
+ }
419
+ ]
420
+ };
421
+ }
422
+
423
+ // src/tools/skillGet.ts
424
+ import { z as z5 } from "zod";
425
+ var skillGetName = "skill_get";
426
+ var skillGetDescription = "Get the full content of a specific skill by ID. Returns the complete SKILL.md file content.";
427
+ var skillGetSchema = z5.object({
428
+ id: z5.string().describe("The skill ID (directory name) to retrieve")
429
+ });
430
+ async function handleSkillGet(args, manifest) {
431
+ const { id } = args;
432
+ const skill = manifest.skills.find((s) => s.id === id);
433
+ if (!skill) {
434
+ notFound("Skill", id);
435
+ }
436
+ const content = await readFullSkillContent(skill.path);
437
+ return {
438
+ content: [
439
+ {
440
+ type: "text",
441
+ text: content
442
+ }
443
+ ]
444
+ };
445
+ }
446
+
447
+ // src/tools/postmanGetMode.ts
448
+ import { z as z6 } from "zod";
449
+
450
+ // src/cbxConfig/paths.ts
451
+ import path3 from "path";
452
+ import os from "os";
453
+ import { existsSync } from "fs";
454
+ function globalConfigPath() {
455
+ return path3.join(os.homedir(), ".cbx", "cbx_config.json");
456
+ }
457
+ function projectConfigPath(workspaceRoot) {
458
+ const root = workspaceRoot ?? process.cwd();
459
+ return path3.join(root, "cbx_config.json");
460
+ }
461
+ function resolveConfigPath(scope, workspaceRoot) {
462
+ if (scope === "global") {
463
+ return { path: globalConfigPath(), scope: "global" };
464
+ }
465
+ if (scope === "project") {
466
+ return { path: projectConfigPath(workspaceRoot), scope: "project" };
467
+ }
468
+ const projectPath = projectConfigPath(workspaceRoot);
469
+ if (existsSync(projectPath)) {
470
+ return { path: projectPath, scope: "project" };
471
+ }
472
+ return { path: globalConfigPath(), scope: "global" };
473
+ }
474
+
475
+ // src/cbxConfig/reader.ts
476
+ import { readFileSync as readFileSync2, existsSync as existsSync2 } from "fs";
477
+ import { parse as parseJsonc } from "jsonc-parser";
478
+ function readConfigFile(filePath) {
479
+ if (!existsSync2(filePath)) return null;
480
+ try {
481
+ const raw = readFileSync2(filePath, "utf8");
482
+ return parseJsonc(raw);
483
+ } catch (err) {
484
+ logger.warn(`Failed to parse config at ${filePath}: ${err}`);
485
+ return null;
486
+ }
487
+ }
488
+ function mergeConfigs(base, override) {
489
+ const result = { ...base };
490
+ for (const [key, value] of Object.entries(override)) {
491
+ if (value !== void 0 && value !== null && typeof value === "object" && !Array.isArray(value)) {
492
+ result[key] = mergeConfigs(
493
+ result[key] ?? {},
494
+ value
495
+ );
496
+ } else {
497
+ result[key] = value;
498
+ }
499
+ }
500
+ return result;
501
+ }
502
+ function readScopedConfig(scope, workspaceRoot) {
503
+ const configPath = scope === "global" ? globalConfigPath() : projectConfigPath(workspaceRoot);
504
+ const config = readConfigFile(configPath);
505
+ if (!config) return null;
506
+ return { config, scope, path: configPath };
507
+ }
508
+ function readEffectiveConfig(scope, workspaceRoot) {
509
+ if (scope === "global" || scope === "project") {
510
+ return readScopedConfig(scope, workspaceRoot);
511
+ }
512
+ const globalConf = readConfigFile(globalConfigPath());
513
+ const projectPath = projectConfigPath(workspaceRoot);
514
+ const projectConf = readConfigFile(projectPath);
515
+ if (!globalConf && !projectConf) return null;
516
+ const base = globalConf ?? {};
517
+ const override = projectConf ?? {};
518
+ const config = mergeConfigs(base, override);
519
+ const resolved = resolveConfigPath("auto", workspaceRoot);
520
+ return {
521
+ config,
522
+ scope: resolved.scope,
523
+ path: resolved.path
524
+ };
525
+ }
526
+
527
+ // src/cbxConfig/writer.ts
528
+ import {
529
+ readFileSync as readFileSync3,
530
+ writeFileSync,
531
+ renameSync,
532
+ mkdirSync,
533
+ existsSync as existsSync3
534
+ } from "fs";
535
+ import path4 from "path";
536
+ import { parse as parseJsonc2 } from "jsonc-parser";
537
+ function writeConfigField(fieldPath, value, scope, workspaceRoot) {
538
+ const resolved = resolveConfigPath(scope, workspaceRoot);
539
+ const configPath = resolved.path;
540
+ let config = {};
541
+ if (existsSync3(configPath)) {
542
+ try {
543
+ const raw = readFileSync3(configPath, "utf8");
544
+ config = parseJsonc2(raw);
545
+ } catch {
546
+ logger.warn(
547
+ `Cannot parse existing config at ${configPath}, creating new`
548
+ );
549
+ }
550
+ }
551
+ const parts = fieldPath.split(".");
552
+ let current = config;
553
+ for (let i = 0; i < parts.length - 1; i++) {
554
+ const key = parts[i];
555
+ if (typeof current[key] !== "object" || current[key] === null) {
556
+ current[key] = {};
557
+ }
558
+ current = current[key];
559
+ }
560
+ current[parts[parts.length - 1]] = value;
561
+ const dir = path4.dirname(configPath);
562
+ if (!existsSync3(dir)) {
563
+ mkdirSync(dir, { recursive: true });
564
+ }
565
+ const tmpPath = `${configPath}.tmp.${Date.now()}`;
566
+ writeFileSync(tmpPath, JSON.stringify(config, null, 2) + "\n", "utf8");
567
+ renameSync(tmpPath, configPath);
568
+ logger.debug(`Config field "${fieldPath}" written to ${configPath}`);
569
+ return { writtenPath: configPath, scope: resolved.scope };
570
+ }
571
+
572
+ // src/cbxConfig/serviceConfig.ts
573
+ var DEFAULT_POSTMAN_URL = "https://mcp.postman.com/minimal";
574
+ var DEFAULT_STITCH_URL = "https://stitch.googleapis.com/mcp";
575
+ var DEFAULT_PROFILE_NAME = "default";
576
+ var DEFAULT_POSTMAN_ENV_VAR = "POSTMAN_API_KEY";
577
+ var DEFAULT_STITCH_ENV_VAR = "STITCH_API_KEY";
578
+ function asRecord(value) {
579
+ if (!value || typeof value !== "object" || Array.isArray(value)) return null;
580
+ return value;
581
+ }
582
+ function normalizeName(value, fallback = DEFAULT_PROFILE_NAME) {
583
+ const normalized = typeof value === "string" ? value.trim() : "";
584
+ return normalized || fallback;
585
+ }
586
+ function normalizeEnvVar(value, fallback) {
587
+ const normalized = typeof value === "string" ? value.trim() : "";
588
+ return normalized || fallback;
589
+ }
590
+ function normalizeOptionalString(value) {
591
+ if (value === null || value === void 0) return null;
592
+ const normalized = String(value).trim();
593
+ return normalized || null;
594
+ }
595
+ function parsePostmanState(config) {
596
+ const section = asRecord(config.postman) ?? {};
597
+ const mcpUrl = normalizeOptionalString(section.mcpUrl) ?? DEFAULT_POSTMAN_URL;
598
+ const fallbackEnvVar = normalizeEnvVar(
599
+ section.apiKeyEnvVar,
600
+ DEFAULT_POSTMAN_ENV_VAR
601
+ );
602
+ const rawProfiles = Array.isArray(section.profiles) ? section.profiles : [];
603
+ const profiles = [];
604
+ for (const rawProfile of rawProfiles) {
605
+ const profile = asRecord(rawProfile);
606
+ if (!profile) continue;
607
+ profiles.push({
608
+ name: normalizeName(profile.name, DEFAULT_PROFILE_NAME),
609
+ apiKeyEnvVar: normalizeEnvVar(profile.apiKeyEnvVar, fallbackEnvVar),
610
+ workspaceId: normalizeOptionalString(
611
+ profile.workspaceId ?? profile.defaultWorkspaceId
612
+ ),
613
+ hasInlineApiKey: typeof profile.apiKey === "string" && profile.apiKey.trim().length > 0
614
+ });
615
+ }
616
+ if (profiles.length === 0) {
617
+ profiles.push({
618
+ name: DEFAULT_PROFILE_NAME,
619
+ apiKeyEnvVar: fallbackEnvVar,
620
+ workspaceId: normalizeOptionalString(section.defaultWorkspaceId),
621
+ hasInlineApiKey: typeof section.apiKey === "string" && section.apiKey.trim().length > 0
622
+ });
623
+ }
624
+ const requestedActive = normalizeOptionalString(section.activeProfileName);
625
+ const activeProfile = profiles.find((profile) => profile.name === requestedActive) ?? profiles[0];
626
+ return {
627
+ mcpUrl,
628
+ activeProfileName: activeProfile?.name ?? null,
629
+ activeProfile: activeProfile ?? null,
630
+ profiles
631
+ };
632
+ }
633
+ function parseStitchState(config) {
634
+ const section = asRecord(config.stitch) ?? {};
635
+ const mcpUrl = normalizeOptionalString(section.mcpUrl) ?? DEFAULT_STITCH_URL;
636
+ const fallbackEnvVar = normalizeEnvVar(
637
+ section.apiKeyEnvVar,
638
+ DEFAULT_STITCH_ENV_VAR
639
+ );
640
+ const rawProfiles = section.profiles;
641
+ const profiles = [];
642
+ if (Array.isArray(rawProfiles)) {
643
+ for (const rawProfile of rawProfiles) {
644
+ const profile = asRecord(rawProfile);
645
+ if (!profile) continue;
646
+ profiles.push({
647
+ name: normalizeName(profile.name, DEFAULT_PROFILE_NAME),
648
+ apiKeyEnvVar: normalizeEnvVar(profile.apiKeyEnvVar, fallbackEnvVar),
649
+ url: normalizeOptionalString(profile.url),
650
+ hasInlineApiKey: typeof profile.apiKey === "string" && profile.apiKey.trim().length > 0
651
+ });
652
+ }
653
+ } else if (asRecord(rawProfiles)) {
654
+ for (const [profileName, rawProfile] of Object.entries(
655
+ rawProfiles
656
+ )) {
657
+ const profile = asRecord(rawProfile);
658
+ if (!profile) continue;
659
+ profiles.push({
660
+ name: normalizeName(profileName, DEFAULT_PROFILE_NAME),
661
+ apiKeyEnvVar: normalizeEnvVar(profile.apiKeyEnvVar, fallbackEnvVar),
662
+ url: normalizeOptionalString(profile.url),
663
+ hasInlineApiKey: typeof profile.apiKey === "string" && profile.apiKey.trim().length > 0
664
+ });
665
+ }
666
+ }
667
+ if (profiles.length === 0) {
668
+ profiles.push({
669
+ name: DEFAULT_PROFILE_NAME,
670
+ apiKeyEnvVar: fallbackEnvVar,
671
+ url: normalizeOptionalString(section.url) ?? mcpUrl,
672
+ hasInlineApiKey: typeof section.apiKey === "string" && section.apiKey.trim().length > 0
673
+ });
674
+ }
675
+ const requestedActive = normalizeOptionalString(section.activeProfileName);
676
+ const activeProfile = profiles.find((profile) => profile.name === requestedActive) ?? profiles[0];
677
+ return {
678
+ mcpUrl,
679
+ activeProfileName: activeProfile?.name ?? null,
680
+ activeProfile: activeProfile ?? null,
681
+ profiles,
682
+ useSystemGcloud: Boolean(section.useSystemGcloud)
683
+ };
684
+ }
685
+
686
+ // src/tools/postmanModes.ts
687
+ var POSTMAN_MODES = {
688
+ minimal: "https://mcp.postman.com/minimal",
689
+ code: "https://mcp.postman.com/code",
690
+ full: "https://mcp.postman.com/mcp"
691
+ };
692
+ var URL_TO_MODE = new Map(
693
+ Object.entries(POSTMAN_MODES).map(([mode, url]) => [
694
+ url,
695
+ mode
696
+ ])
697
+ );
698
+ function urlToMode(url) {
699
+ return URL_TO_MODE.get(url);
700
+ }
701
+ function isValidMode(mode) {
702
+ return mode in POSTMAN_MODES;
703
+ }
704
+
705
+ // src/tools/postmanGetMode.ts
706
+ var postmanGetModeName = "postman_get_mode";
707
+ var postmanGetModeDescription = "Get the current Postman MCP mode from cbx_config.json. Returns the friendly mode name and URL.";
708
+ var postmanGetModeSchema = z6.object({
709
+ scope: z6.enum(["global", "project", "auto"]).optional().describe(
710
+ "Config scope to read. Default: auto (project if exists, else global)"
711
+ )
712
+ });
713
+ function handlePostmanGetMode(args) {
714
+ const scope = args.scope ?? "auto";
715
+ const effective = readEffectiveConfig(scope);
716
+ if (!effective) {
717
+ configNotFound();
718
+ }
719
+ const postmanState = parsePostmanState(effective.config);
720
+ const url = postmanState.mcpUrl;
721
+ if (!url) {
722
+ return {
723
+ content: [
724
+ {
725
+ type: "text",
726
+ text: JSON.stringify(
727
+ {
728
+ mode: null,
729
+ url: null,
730
+ scope: effective.scope,
731
+ message: "Postman mcpUrl not configured. Use postman_set_mode to set one."
732
+ },
733
+ null,
734
+ 2
735
+ )
736
+ }
737
+ ]
738
+ };
739
+ }
740
+ const mode = urlToMode(url);
741
+ if (!mode) {
742
+ unknownPostmanMode(url);
743
+ }
744
+ return {
745
+ content: [
746
+ {
747
+ type: "text",
748
+ text: JSON.stringify(
749
+ {
750
+ mode,
751
+ url,
752
+ scope: effective.scope,
753
+ availableModes: Object.keys(POSTMAN_MODES)
754
+ },
755
+ null,
756
+ 2
757
+ )
758
+ }
759
+ ]
760
+ };
761
+ }
762
+
763
+ // src/tools/postmanSetMode.ts
764
+ import { z as z7 } from "zod";
765
+ var postmanSetModeName = "postman_set_mode";
766
+ var postmanSetModeDescription = "Set the Postman MCP mode in cbx_config.json. Modes: minimal, code, full.";
767
+ var postmanSetModeSchema = z7.object({
768
+ mode: z7.enum(["minimal", "code", "full"]).describe("Postman MCP mode to set: minimal, code, or full"),
769
+ scope: z7.enum(["global", "project", "auto"]).optional().describe(
770
+ "Config scope to write. Default: auto (project if exists, else global)"
771
+ )
772
+ });
773
+ function handlePostmanSetMode(args) {
774
+ const { mode } = args;
775
+ const scope = args.scope ?? "auto";
776
+ if (!isValidMode(mode)) {
777
+ invalidInput(
778
+ `Invalid Postman mode: "${mode}". Valid modes: minimal, code, full`
779
+ );
780
+ }
781
+ const url = POSTMAN_MODES[mode];
782
+ const result = writeConfigField(
783
+ "postman.mcpUrl",
784
+ url,
785
+ scope
786
+ );
787
+ return {
788
+ content: [
789
+ {
790
+ type: "text",
791
+ text: JSON.stringify(
792
+ {
793
+ mode,
794
+ url,
795
+ scope: result.scope,
796
+ writtenPath: result.writtenPath,
797
+ note: "Postman MCP mode updated. Restart your MCP client to pick up the change."
798
+ },
799
+ null,
800
+ 2
801
+ )
802
+ }
803
+ ]
804
+ };
805
+ }
806
+
807
+ // src/tools/postmanGetStatus.ts
808
+ import { z as z8 } from "zod";
809
+ var postmanGetStatusName = "postman_get_status";
810
+ var postmanGetStatusDescription = "Get full Postman configuration status including mode, URL, and workspace ID.";
811
+ var postmanGetStatusSchema = z8.object({
812
+ scope: z8.enum(["global", "project", "auto"]).optional().describe(
813
+ "Config scope to read. Default: auto (project if exists, else global)"
814
+ )
815
+ });
816
+ function handlePostmanGetStatus(args) {
817
+ const scope = args.scope ?? "auto";
818
+ const effective = readEffectiveConfig(scope);
819
+ if (!effective) {
820
+ configNotFound();
821
+ }
822
+ const postman = parsePostmanState(effective.config);
823
+ const activeProfile = postman.activeProfile;
824
+ const url = postman.mcpUrl ?? null;
825
+ const mode = url ? urlToMode(url) ?? "unknown" : null;
826
+ return {
827
+ content: [
828
+ {
829
+ type: "text",
830
+ text: JSON.stringify(
831
+ {
832
+ configured: !!url,
833
+ mode,
834
+ url,
835
+ defaultWorkspaceId: activeProfile?.workspaceId ?? null,
836
+ activeProfileName: postman.activeProfileName,
837
+ profileCount: postman.profiles.length,
838
+ apiKeyEnvVar: activeProfile?.apiKeyEnvVar ?? null,
839
+ scope: effective.scope,
840
+ configPath: effective.path,
841
+ availableModes: Object.keys(POSTMAN_MODES)
842
+ },
843
+ null,
844
+ 2
845
+ )
846
+ }
847
+ ]
848
+ };
849
+ }
850
+
851
+ // src/tools/stitchGetMode.ts
852
+ import { z as z9 } from "zod";
853
+ var stitchGetModeName = "stitch_get_mode";
854
+ var stitchGetModeDescription = "Get the active Stitch profile name and URL from cbx_config.json. Never exposes API keys.";
855
+ var stitchGetModeSchema = z9.object({
856
+ scope: z9.enum(["global", "project", "auto"]).optional().describe(
857
+ "Config scope to read. Default: auto (project if exists, else global)"
858
+ )
859
+ });
860
+ function handleStitchGetMode(args) {
861
+ const scope = args.scope ?? "auto";
862
+ const effective = readEffectiveConfig(scope);
863
+ if (!effective) {
864
+ configNotFound();
865
+ }
866
+ const stitch = parseStitchState(effective.config);
867
+ const activeProfileName = stitch.activeProfileName;
868
+ const profileNames = stitch.profiles.map((profile) => profile.name);
869
+ const activeUrl = stitch.activeProfile?.url ?? null;
870
+ return {
871
+ content: [
872
+ {
873
+ type: "text",
874
+ text: JSON.stringify(
875
+ {
876
+ activeProfileName,
877
+ activeUrl,
878
+ availableProfiles: profileNames,
879
+ scope: effective.scope,
880
+ note: "API keys are never exposed through this tool."
881
+ },
882
+ null,
883
+ 2
884
+ )
885
+ }
886
+ ]
887
+ };
888
+ }
889
+
890
+ // src/tools/stitchSetProfile.ts
891
+ import { z as z10 } from "zod";
892
+ var stitchSetProfileName = "stitch_set_profile";
893
+ var stitchSetProfileDescription = "Set the active Stitch profile in cbx_config.json. The profile must already exist in the config.";
894
+ var stitchSetProfileSchema = z10.object({
895
+ profileName: z10.string().min(1).describe("Name of the Stitch profile to activate"),
896
+ scope: z10.enum(["global", "project", "auto"]).optional().describe(
897
+ "Config scope to write. Default: auto (project if exists, else global)"
898
+ )
899
+ });
900
+ function handleStitchSetProfile(args) {
901
+ const { profileName } = args;
902
+ const scope = args.scope ?? "auto";
903
+ const effective = readEffectiveConfig(scope);
904
+ if (!effective) {
905
+ configNotFound();
906
+ }
907
+ const stitch = parseStitchState(effective.config);
908
+ const profileNames = stitch.profiles.map((profile) => profile.name);
909
+ const targetProfile = stitch.profiles.find((profile) => profile.name === profileName) ?? null;
910
+ if (!targetProfile) {
911
+ invalidInput(
912
+ `Stitch profile "${profileName}" not found. Available profiles: ${profileNames.join(", ") || "(none)"}`
913
+ );
914
+ }
915
+ const result = writeConfigField(
916
+ "stitch.activeProfileName",
917
+ profileName,
918
+ scope
919
+ );
920
+ return {
921
+ content: [
922
+ {
923
+ type: "text",
924
+ text: JSON.stringify(
925
+ {
926
+ activeProfileName: profileName,
927
+ url: targetProfile.url ?? null,
928
+ scope: result.scope,
929
+ writtenPath: result.writtenPath,
930
+ note: "Stitch active profile updated. Restart your MCP client to pick up the change."
931
+ },
932
+ null,
933
+ 2
934
+ )
935
+ }
936
+ ]
937
+ };
938
+ }
939
+
940
+ // src/tools/stitchGetStatus.ts
941
+ import { z as z11 } from "zod";
942
+ var stitchGetStatusName = "stitch_get_status";
943
+ var stitchGetStatusDescription = "Get full Stitch configuration status including active profile, all profile names, and URLs. Never exposes API keys.";
944
+ var stitchGetStatusSchema = z11.object({
945
+ scope: z11.enum(["global", "project", "auto"]).optional().describe(
946
+ "Config scope to read. Default: auto (project if exists, else global)"
947
+ )
948
+ });
949
+ function handleStitchGetStatus(args) {
950
+ const scope = args.scope ?? "auto";
951
+ const effective = readEffectiveConfig(scope);
952
+ if (!effective) {
953
+ configNotFound();
954
+ }
955
+ const stitch = parseStitchState(effective.config);
956
+ const activeProfileName = stitch.activeProfileName;
957
+ const profileSummaries = stitch.profiles.map((profile) => ({
958
+ name: profile.name,
959
+ url: profile.url ?? null,
960
+ apiKeyEnvVar: profile.apiKeyEnvVar,
961
+ hasApiKey: profile.hasInlineApiKey,
962
+ hasInlineApiKey: profile.hasInlineApiKey,
963
+ isActive: profile.name === activeProfileName
964
+ }));
965
+ return {
966
+ content: [
967
+ {
968
+ type: "text",
969
+ text: JSON.stringify(
970
+ {
971
+ configured: profileSummaries.length > 0,
972
+ activeProfileName,
973
+ profiles: profileSummaries,
974
+ totalProfiles: profileSummaries.length,
975
+ mcpUrl: stitch.mcpUrl,
976
+ useSystemGcloud: Boolean(stitch.useSystemGcloud),
977
+ scope: effective.scope,
978
+ configPath: effective.path,
979
+ note: "API keys are never exposed. Env-var aliases are reported for runtime configuration."
980
+ },
981
+ null,
982
+ 2
983
+ )
984
+ }
985
+ ]
986
+ };
987
+ }
988
+
989
+ // src/upstream/passthrough.ts
990
+ import { mkdir, writeFile } from "fs/promises";
991
+ import path5 from "path";
992
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
993
+ import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
994
+ function resolveCatalogDir(configPath) {
995
+ const configDir = path5.dirname(configPath);
996
+ if (path5.basename(configDir) === ".cbx") {
997
+ return path5.join(configDir, "mcp", "catalog");
998
+ }
999
+ return path5.join(configDir, ".cbx", "mcp", "catalog");
1000
+ }
1001
+ function getServiceAuth(config, service) {
1002
+ if (service === "postman") {
1003
+ const state2 = parsePostmanState(config);
1004
+ const activeProfile2 = state2.activeProfile;
1005
+ const envVar2 = activeProfile2?.apiKeyEnvVar ?? "POSTMAN_API_KEY";
1006
+ const token2 = process.env[envVar2]?.trim();
1007
+ if (!token2) {
1008
+ return {
1009
+ mcpUrl: state2.mcpUrl,
1010
+ activeProfileName: state2.activeProfileName,
1011
+ envVar: envVar2,
1012
+ headers: {},
1013
+ configured: false,
1014
+ error: `Missing Postman key env var: ${envVar2}`
1015
+ };
1016
+ }
1017
+ return {
1018
+ mcpUrl: state2.mcpUrl,
1019
+ activeProfileName: state2.activeProfileName,
1020
+ envVar: envVar2,
1021
+ headers: { Authorization: `Bearer ${token2}` },
1022
+ configured: Boolean(state2.mcpUrl)
1023
+ };
1024
+ }
1025
+ const state = parseStitchState(config);
1026
+ const activeProfile = state.activeProfile;
1027
+ const envVar = activeProfile?.apiKeyEnvVar ?? "STITCH_API_KEY";
1028
+ const token = process.env[envVar]?.trim();
1029
+ if (!token && !state.useSystemGcloud) {
1030
+ return {
1031
+ mcpUrl: state.mcpUrl,
1032
+ activeProfileName: state.activeProfileName,
1033
+ envVar,
1034
+ headers: {},
1035
+ configured: false,
1036
+ error: `Missing Stitch key env var: ${envVar}`
1037
+ };
1038
+ }
1039
+ return {
1040
+ mcpUrl: state.mcpUrl,
1041
+ activeProfileName: state.activeProfileName,
1042
+ envVar,
1043
+ headers: token ? { "X-Goog-Api-Key": token } : {},
1044
+ configured: Boolean(state.mcpUrl)
1045
+ };
1046
+ }
1047
+ async function withUpstreamClient({
1048
+ url,
1049
+ headers,
1050
+ fn
1051
+ }) {
1052
+ const client = new Client(
1053
+ {
1054
+ name: "cubis-foundry-mcp-passthrough",
1055
+ version: "0.1.0"
1056
+ },
1057
+ {
1058
+ capabilities: {}
1059
+ }
1060
+ );
1061
+ const transport = new StreamableHTTPClientTransport(new URL(url), {
1062
+ requestInit: { headers }
1063
+ });
1064
+ await client.connect(transport);
1065
+ try {
1066
+ return await fn(client);
1067
+ } finally {
1068
+ await client.close();
1069
+ }
1070
+ }
1071
+ async function persistCatalog(catalog) {
1072
+ if (!catalog.configPath) return;
1073
+ const catalogDir = resolveCatalogDir(catalog.configPath);
1074
+ const catalogPath = path5.join(catalogDir, `${catalog.service}.json`);
1075
+ const payload = {
1076
+ schemaVersion: 1,
1077
+ generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
1078
+ generatedBy: "cubis-foundry-mcp startup discovery",
1079
+ service: catalog.service,
1080
+ scope: catalog.scope,
1081
+ mcpUrl: catalog.mcpUrl,
1082
+ activeProfileName: catalog.activeProfileName,
1083
+ envVar: catalog.envVar,
1084
+ toolCount: catalog.toolCount,
1085
+ tools: catalog.tools.map((tool) => ({
1086
+ name: tool.name,
1087
+ description: tool.description ?? null,
1088
+ inputSchema: tool.inputSchema ?? null,
1089
+ outputSchema: tool.outputSchema ?? null
1090
+ })),
1091
+ discoveryError: catalog.discoveryError ?? null
1092
+ };
1093
+ await mkdir(catalogDir, { recursive: true });
1094
+ await writeFile(catalogPath, `${JSON.stringify(payload, null, 2)}
1095
+ `, "utf8");
1096
+ }
1097
+ async function discoverUpstreamCatalogs() {
1098
+ const effective = readEffectiveConfig("auto");
1099
+ if (!effective) {
1100
+ const missing = {
1101
+ service: "postman",
1102
+ configured: false,
1103
+ mcpUrl: null,
1104
+ activeProfileName: null,
1105
+ envVar: null,
1106
+ scope: null,
1107
+ configPath: null,
1108
+ toolCount: 0,
1109
+ tools: [],
1110
+ discoveryError: "cbx_config.json not found"
1111
+ };
1112
+ const missingStitch = { ...missing, service: "stitch" };
1113
+ return {
1114
+ postman: missing,
1115
+ stitch: missingStitch
1116
+ };
1117
+ }
1118
+ const baseInfo = {
1119
+ scope: effective.scope,
1120
+ configPath: effective.path
1121
+ };
1122
+ const discoverOne = async (service) => {
1123
+ const auth = getServiceAuth(effective.config, service);
1124
+ const catalog = {
1125
+ service,
1126
+ configured: auth.configured,
1127
+ mcpUrl: auth.mcpUrl,
1128
+ activeProfileName: auth.activeProfileName,
1129
+ envVar: auth.envVar,
1130
+ scope: baseInfo.scope,
1131
+ configPath: baseInfo.configPath,
1132
+ toolCount: 0,
1133
+ tools: [],
1134
+ discoveryError: auth.error
1135
+ };
1136
+ if (!auth.configured || !auth.mcpUrl || auth.error) {
1137
+ await persistCatalog(catalog);
1138
+ return catalog;
1139
+ }
1140
+ try {
1141
+ const listed = await withUpstreamClient({
1142
+ url: auth.mcpUrl,
1143
+ headers: auth.headers,
1144
+ fn: async (client) => client.listTools()
1145
+ });
1146
+ const rawTools = Array.isArray(listed.tools) ? listed.tools : [];
1147
+ catalog.tools = rawTools.map((tool) => {
1148
+ const name = typeof tool?.name === "string" ? tool.name.trim() : "";
1149
+ if (!name) return null;
1150
+ return {
1151
+ name,
1152
+ namespacedName: `${service}.${name}`,
1153
+ description: typeof tool?.description === "string" ? tool.description : void 0,
1154
+ inputSchema: tool?.inputSchema ?? void 0,
1155
+ outputSchema: tool?.outputSchema ?? void 0
1156
+ };
1157
+ }).filter((tool) => Boolean(tool));
1158
+ catalog.toolCount = catalog.tools.length;
1159
+ } catch (error) {
1160
+ catalog.discoveryError = `Tool discovery failed: ${String(error)}`;
1161
+ }
1162
+ await persistCatalog(catalog);
1163
+ return catalog;
1164
+ };
1165
+ return {
1166
+ postman: await discoverOne("postman"),
1167
+ stitch: await discoverOne("stitch")
1168
+ };
1169
+ }
1170
+ async function callUpstreamTool({
1171
+ service,
1172
+ name,
1173
+ argumentsValue
1174
+ }) {
1175
+ const effective = readEffectiveConfig("auto");
1176
+ if (!effective) {
1177
+ throw new Error("cbx_config.json not found");
1178
+ }
1179
+ const auth = getServiceAuth(effective.config, service);
1180
+ if (!auth.configured || !auth.mcpUrl) {
1181
+ throw new Error(auth.error || `${service} is not configured`);
1182
+ }
1183
+ if (auth.error) {
1184
+ throw new Error(auth.error);
1185
+ }
1186
+ return withUpstreamClient({
1187
+ url: auth.mcpUrl,
1188
+ headers: auth.headers,
1189
+ fn: async (client) => client.callTool({
1190
+ name,
1191
+ arguments: argumentsValue
1192
+ })
1193
+ });
1194
+ }
1195
+
1196
+ // src/server.ts
1197
+ function toolCallErrorResult({
1198
+ service,
1199
+ namespacedName,
1200
+ error
1201
+ }) {
1202
+ return {
1203
+ isError: true,
1204
+ content: [
1205
+ {
1206
+ type: "text",
1207
+ text: JSON.stringify(
1208
+ {
1209
+ service,
1210
+ tool: namespacedName,
1211
+ error: String(error)
1212
+ },
1213
+ null,
1214
+ 2
1215
+ )
1216
+ }
1217
+ ]
1218
+ };
1219
+ }
1220
+ async function createServer({
1221
+ config,
1222
+ manifest
1223
+ }) {
1224
+ const server = new McpServer({
1225
+ name: config.server.name,
1226
+ version: config.server.version
1227
+ });
1228
+ const maxLen = config.vault.summaryMaxLength;
1229
+ server.tool(
1230
+ skillListCategoriesName,
1231
+ skillListCategoriesDescription,
1232
+ skillListCategoriesSchema.shape,
1233
+ async () => handleSkillListCategories(manifest)
1234
+ );
1235
+ server.tool(
1236
+ skillBrowseCategoryName,
1237
+ skillBrowseCategoryDescription,
1238
+ skillBrowseCategorySchema.shape,
1239
+ async (args) => handleSkillBrowseCategory(args, manifest, maxLen)
1240
+ );
1241
+ server.tool(
1242
+ skillSearchName,
1243
+ skillSearchDescription,
1244
+ skillSearchSchema.shape,
1245
+ async (args) => handleSkillSearch(args, manifest, maxLen)
1246
+ );
1247
+ server.tool(
1248
+ skillGetName,
1249
+ skillGetDescription,
1250
+ skillGetSchema.shape,
1251
+ async (args) => handleSkillGet(args, manifest)
1252
+ );
1253
+ server.tool(
1254
+ postmanGetModeName,
1255
+ postmanGetModeDescription,
1256
+ postmanGetModeSchema.shape,
1257
+ async (args) => handlePostmanGetMode(args)
1258
+ );
1259
+ server.tool(
1260
+ postmanSetModeName,
1261
+ postmanSetModeDescription,
1262
+ postmanSetModeSchema.shape,
1263
+ async (args) => handlePostmanSetMode(args)
1264
+ );
1265
+ server.tool(
1266
+ postmanGetStatusName,
1267
+ postmanGetStatusDescription,
1268
+ postmanGetStatusSchema.shape,
1269
+ async (args) => handlePostmanGetStatus(args)
1270
+ );
1271
+ server.tool(
1272
+ stitchGetModeName,
1273
+ stitchGetModeDescription,
1274
+ stitchGetModeSchema.shape,
1275
+ async (args) => handleStitchGetMode(args)
1276
+ );
1277
+ server.tool(
1278
+ stitchSetProfileName,
1279
+ stitchSetProfileDescription,
1280
+ stitchSetProfileSchema.shape,
1281
+ async (args) => handleStitchSetProfile(args)
1282
+ );
1283
+ server.tool(
1284
+ stitchGetStatusName,
1285
+ stitchGetStatusDescription,
1286
+ stitchGetStatusSchema.shape,
1287
+ async (args) => handleStitchGetStatus(args)
1288
+ );
1289
+ const upstreamCatalogs = await discoverUpstreamCatalogs();
1290
+ const dynamicArgsShape = z12.object({}).passthrough().shape;
1291
+ for (const catalog of [upstreamCatalogs.postman, upstreamCatalogs.stitch]) {
1292
+ for (const tool of catalog.tools) {
1293
+ const namespaced = tool.namespacedName;
1294
+ server.tool(
1295
+ namespaced,
1296
+ `[${catalog.service} passthrough] ${tool.description || tool.name}`,
1297
+ dynamicArgsShape,
1298
+ async (args) => {
1299
+ try {
1300
+ const result = await callUpstreamTool({
1301
+ service: catalog.service,
1302
+ name: tool.name,
1303
+ argumentsValue: args && typeof args === "object" ? args : {}
1304
+ });
1305
+ return {
1306
+ content: result.content ?? [],
1307
+ structuredContent: result.structuredContent,
1308
+ isError: Boolean(result.isError)
1309
+ };
1310
+ } catch (error) {
1311
+ return toolCallErrorResult({
1312
+ service: catalog.service,
1313
+ namespacedName: namespaced,
1314
+ error
1315
+ });
1316
+ }
1317
+ }
1318
+ );
1319
+ }
1320
+ }
1321
+ return server;
1322
+ }
1323
+
1324
+ // src/transports/stdio.ts
1325
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
1326
+ function createStdioTransport() {
1327
+ return new StdioServerTransport();
1328
+ }
1329
+
1330
+ // src/transports/streamableHttp.ts
1331
+ import { createServer as createServer2 } from "http";
1332
+ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
1333
+ function createStreamableHttpTransport(options) {
1334
+ const transport = new StreamableHTTPServerTransport({
1335
+ sessionIdGenerator: () => crypto.randomUUID()
1336
+ });
1337
+ const httpServer = createServer2(async (req, res) => {
1338
+ const url = new URL(req.url ?? "/", `http://${req.headers.host}`);
1339
+ if (url.pathname !== "/mcp") {
1340
+ res.writeHead(404, { "Content-Type": "text/plain" });
1341
+ res.end("Not Found");
1342
+ return;
1343
+ }
1344
+ await transport.handleRequest(req, res);
1345
+ });
1346
+ httpServer.listen(options.port, options.host, () => {
1347
+ logger.info(
1348
+ `Streamable HTTP transport listening on http://${options.host}:${options.port}/mcp`
1349
+ );
1350
+ });
1351
+ return { transport, httpServer };
1352
+ }
1353
+
1354
+ // src/index.ts
1355
+ import path6 from "path";
1356
+ import { fileURLToPath as fileURLToPath2 } from "url";
1357
+ var __dirname2 = path6.dirname(fileURLToPath2(import.meta.url));
1358
+ function parseArgs(argv) {
1359
+ let transport = "stdio";
1360
+ let scanOnly = false;
1361
+ let debug = false;
1362
+ let configPath;
1363
+ for (let i = 2; i < argv.length; i++) {
1364
+ const arg = argv[i];
1365
+ if (arg === "--transport" && argv[i + 1]) {
1366
+ const val = argv[++i];
1367
+ if (val === "http" || val === "streamable-http") {
1368
+ transport = "http";
1369
+ } else if (val === "stdio") {
1370
+ transport = "stdio";
1371
+ } else {
1372
+ logger.error(`Unknown transport: ${val}. Use "stdio" or "http".`);
1373
+ process.exit(1);
1374
+ }
1375
+ } else if (arg === "--scan-only") {
1376
+ scanOnly = true;
1377
+ } else if (arg === "--debug") {
1378
+ debug = true;
1379
+ } else if (arg === "--config" && argv[i + 1]) {
1380
+ configPath = argv[++i];
1381
+ }
1382
+ }
1383
+ return { transport, scanOnly, debug, configPath };
1384
+ }
1385
+ function printStartupBanner(skillCount, categoryCount, transportName) {
1386
+ logger.raw("\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510");
1387
+ logger.raw("\u2502 Cubis Foundry MCP Server \u2502");
1388
+ logger.raw("\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524");
1389
+ logger.raw(`\u2502 Vault: 2004/35/~245/~80,160/99.7% \u2502`);
1390
+ logger.raw(`\u2502 Skills loaded: ${String(skillCount).padEnd(29)}\u2502`);
1391
+ logger.raw(`\u2502 Categories: ${String(categoryCount).padEnd(32)}\u2502`);
1392
+ logger.raw(`\u2502 Transport: ${transportName.padEnd(33)}\u2502`);
1393
+ logger.raw("\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518");
1394
+ }
1395
+ function printConfigStatus() {
1396
+ try {
1397
+ const effective = readEffectiveConfig("auto");
1398
+ if (!effective) {
1399
+ logger.warn(
1400
+ "cbx_config.json not found. Postman/Stitch tools will return config-not-found errors."
1401
+ );
1402
+ return;
1403
+ }
1404
+ const config = effective.config;
1405
+ const postmanState = parsePostmanState(config);
1406
+ const postmanUrl = postmanState.mcpUrl;
1407
+ if (postmanUrl) {
1408
+ const mode = urlToMode(postmanUrl) ?? "unknown";
1409
+ logger.info(`Postman mode: ${mode} (${postmanUrl})`);
1410
+ } else {
1411
+ logger.info("Postman: not configured");
1412
+ }
1413
+ const stitchState = parseStitchState(config);
1414
+ const stitchProfile = stitchState.activeProfileName;
1415
+ if (stitchProfile && stitchState.activeProfile?.url) {
1416
+ const url = stitchState.activeProfile.url ?? "(no URL)";
1417
+ logger.info(`Stitch profile: ${stitchProfile} (${url})`);
1418
+ } else {
1419
+ logger.info("Stitch: not configured");
1420
+ }
1421
+ logger.info(`Config scope: ${effective.scope} (${effective.path})`);
1422
+ } catch {
1423
+ logger.warn("Failed to read cbx_config.json status");
1424
+ }
1425
+ }
1426
+ async function main() {
1427
+ const args = parseArgs(process.argv);
1428
+ if (args.debug) {
1429
+ setLogLevel("debug");
1430
+ }
1431
+ const serverConfig = loadServerConfig(args.configPath);
1432
+ const basePath = path6.resolve(__dirname2, "..");
1433
+ const skills = await scanVaultRoots(serverConfig.vault.roots, basePath);
1434
+ const manifest = buildManifest(skills);
1435
+ await enrichWithDescriptions(
1436
+ manifest.skills,
1437
+ serverConfig.vault.summaryMaxLength
1438
+ );
1439
+ if (args.scanOnly) {
1440
+ logger.info(
1441
+ `Scan complete: ${manifest.skills.length} skills in ${manifest.categories.length} categories`
1442
+ );
1443
+ for (const cat of manifest.categories) {
1444
+ const count = manifest.skills.filter((s) => s.category === cat).length;
1445
+ logger.info(` ${cat}: ${count} skills`);
1446
+ }
1447
+ process.exit(0);
1448
+ }
1449
+ const transportName = args.transport === "http" ? `Streamable HTTP :${serverConfig.transport.http?.port ?? 3100}` : "stdio";
1450
+ printStartupBanner(
1451
+ manifest.skills.length,
1452
+ manifest.categories.length,
1453
+ transportName
1454
+ );
1455
+ printConfigStatus();
1456
+ const mcpServer = await createServer({ config: serverConfig, manifest });
1457
+ if (args.transport === "http") {
1458
+ const httpOpts = {
1459
+ port: serverConfig.transport.http?.port ?? 3100,
1460
+ host: serverConfig.transport.http?.host ?? "127.0.0.1"
1461
+ };
1462
+ const { transport, httpServer } = createStreamableHttpTransport(httpOpts);
1463
+ await mcpServer.connect(transport);
1464
+ const shutdown = async () => {
1465
+ logger.info("Shutting down HTTP transport...");
1466
+ httpServer.close();
1467
+ await mcpServer.close();
1468
+ process.exit(0);
1469
+ };
1470
+ process.on("SIGINT", shutdown);
1471
+ process.on("SIGTERM", shutdown);
1472
+ } else {
1473
+ const transport = createStdioTransport();
1474
+ await mcpServer.connect(transport);
1475
+ const shutdown = async () => {
1476
+ logger.info("Shutting down stdio transport...");
1477
+ await mcpServer.close();
1478
+ process.exit(0);
1479
+ };
1480
+ process.on("SIGINT", shutdown);
1481
+ process.on("SIGTERM", shutdown);
1482
+ }
1483
+ logger.info("MCP server ready. Waiting for connections...");
1484
+ }
1485
+ main().catch((err) => {
1486
+ logger.error(`Fatal startup error: ${err}`);
1487
+ process.exit(1);
1488
+ });