@lssm/bundle.contractspec-workspace 0.0.0-canary-20251217083314 → 1.41.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/dist/_virtual/rolldown_runtime.js +1 -22
  2. package/dist/adapters/ai.js +1 -82
  3. package/dist/adapters/factory.js +1 -36
  4. package/dist/adapters/fs.js +1 -118
  5. package/dist/adapters/git.js +1 -54
  6. package/dist/adapters/index.js +1 -7
  7. package/dist/adapters/logger.js +1 -80
  8. package/dist/adapters/watcher.js +1 -69
  9. package/dist/adapters/workspace.js +2 -190
  10. package/dist/ai/agents/claude-code-agent.js +9 -146
  11. package/dist/ai/agents/cursor-agent.js +17 -286
  12. package/dist/ai/agents/index.js +1 -5
  13. package/dist/ai/agents/openai-codex-agent.js +8 -140
  14. package/dist/ai/agents/orchestrator.js +1 -142
  15. package/dist/ai/agents/simple-agent.js +4 -80
  16. package/dist/ai/client.js +1 -162
  17. package/dist/ai/index.js +1 -27
  18. package/dist/ai/prompts/code-generation.js +13 -55
  19. package/dist/ai/prompts/index.js +1 -12
  20. package/dist/ai/prompts/spec-creation.js +20 -61
  21. package/dist/ai/providers.js +1 -40
  22. package/dist/formatters/index.js +1 -18
  23. package/dist/formatters/json.js +1 -71
  24. package/dist/formatters/sarif.js +1 -163
  25. package/dist/formatters/text.js +2 -208
  26. package/dist/index.js +1 -81
  27. package/dist/services/agent-guide/adapters/claude-code.js +3 -144
  28. package/dist/services/agent-guide/adapters/cursor-cli.js +3 -135
  29. package/dist/services/agent-guide/adapters/generic-mcp.js +3 -159
  30. package/dist/services/agent-guide/adapters/index.js +1 -30
  31. package/dist/services/agent-guide/agent-guide-service.js +1 -148
  32. package/dist/services/agent-guide/index.js +1 -5
  33. package/dist/services/build.js +1 -140
  34. package/dist/services/ci-check/ci-check-service.js +1 -393
  35. package/dist/services/ci-check/index.js +1 -2
  36. package/dist/services/ci-check/types.js +1 -28
  37. package/dist/services/clean.js +1 -71
  38. package/dist/services/config.js +1 -76
  39. package/dist/services/deps.js +1 -62
  40. package/dist/services/diff.js +1 -33
  41. package/dist/services/doctor/checks/ai.js +2 -118
  42. package/dist/services/doctor/checks/cli.js +1 -146
  43. package/dist/services/doctor/checks/config.js +1 -170
  44. package/dist/services/doctor/checks/deps.js +1 -180
  45. package/dist/services/doctor/checks/index.js +1 -6
  46. package/dist/services/doctor/checks/mcp.js +1 -144
  47. package/dist/services/doctor/checks/workspace.js +1 -243
  48. package/dist/services/doctor/doctor-service.js +2 -115
  49. package/dist/services/doctor/index.js +1 -2
  50. package/dist/services/doctor/types.js +1 -26
  51. package/dist/services/implementation/discovery.js +2 -143
  52. package/dist/services/implementation/index.js +1 -2
  53. package/dist/services/implementation/resolver.js +1 -223
  54. package/dist/services/index.js +1 -53
  55. package/dist/services/integrity-diagram.js +6 -274
  56. package/dist/services/integrity.js +1 -272
  57. package/dist/services/list.js +1 -35
  58. package/dist/services/openapi/export-service.js +2 -51
  59. package/dist/services/openapi/import-service.js +1 -75
  60. package/dist/services/openapi/index.js +1 -4
  61. package/dist/services/openapi/sync-service.js +1 -121
  62. package/dist/services/openapi/validate-service.js +1 -130
  63. package/dist/services/regenerator.js +1 -23
  64. package/dist/services/registry.js +1 -73
  65. package/dist/services/setup/config-generators.js +26 -113
  66. package/dist/services/setup/file-merger.js +2 -60
  67. package/dist/services/setup/index.js +1 -4
  68. package/dist/services/setup/setup-service.js +1 -95
  69. package/dist/services/setup/targets/agents-md.js +1 -46
  70. package/dist/services/setup/targets/cli-config.js +1 -59
  71. package/dist/services/setup/targets/cursor-rules.js +1 -47
  72. package/dist/services/setup/targets/mcp-claude.js +1 -59
  73. package/dist/services/setup/targets/mcp-cursor.js +1 -58
  74. package/dist/services/setup/targets/vscode-settings.js +1 -62
  75. package/dist/services/setup/types.js +1 -26
  76. package/dist/services/sync.js +1 -62
  77. package/dist/services/test.js +1 -30
  78. package/dist/services/validate-implementation.js +1 -69
  79. package/dist/services/validate.js +1 -47
  80. package/dist/services/verification-cache/adapters/filesystem.js +1 -121
  81. package/dist/services/verification-cache/adapters/in-memory.js +1 -45
  82. package/dist/services/verification-cache/adapters/index.js +1 -3
  83. package/dist/services/verification-cache/adapters/workspace-state.js +1 -90
  84. package/dist/services/verification-cache/cache-service.js +1 -255
  85. package/dist/services/verification-cache/index.js +1 -6
  86. package/dist/services/verification-cache/types.js +1 -15
  87. package/dist/services/verify/ai-verifier.js +9 -336
  88. package/dist/services/verify/behavior-verifier.js +1 -185
  89. package/dist/services/verify/index.js +1 -4
  90. package/dist/services/verify/structure-verifier.js +2 -195
  91. package/dist/services/verify/verify-service.js +3 -203
  92. package/dist/services/watch.js +1 -31
  93. package/dist/services/workspace-info.js +2 -102
  94. package/dist/templates/app-config.template.js +28 -101
  95. package/dist/templates/data-view.template.js +27 -42
  96. package/dist/templates/event.template.js +14 -29
  97. package/dist/templates/experiment.template.js +51 -77
  98. package/dist/templates/handler.template.js +17 -53
  99. package/dist/templates/index.js +1 -36
  100. package/dist/templates/integration.template.js +50 -134
  101. package/dist/templates/knowledge.template.js +21 -62
  102. package/dist/templates/migration.template.js +26 -50
  103. package/dist/templates/operation.template.js +28 -44
  104. package/dist/templates/presentation.template.js +20 -46
  105. package/dist/templates/telemetry.template.js +53 -74
  106. package/dist/templates/workflow-runner.template.js +6 -12
  107. package/dist/templates/workflow.template.js +24 -51
  108. package/package.json +10 -15
  109. package/dist/adapters/ai.d.ts +0 -11
  110. package/dist/adapters/factory.d.ts +0 -28
  111. package/dist/adapters/fs.d.ts +0 -10
  112. package/dist/adapters/git.d.ts +0 -10
  113. package/dist/adapters/logger.d.ts +0 -17
  114. package/dist/adapters/watcher.d.ts +0 -10
  115. package/dist/adapters/workspace.d.ts +0 -93
  116. package/dist/ai/agents/claude-code-agent.d.ts +0 -21
  117. package/dist/ai/agents/cursor-agent.d.ts +0 -67
  118. package/dist/ai/agents/openai-codex-agent.d.ts +0 -21
  119. package/dist/ai/agents/orchestrator.d.ts +0 -49
  120. package/dist/ai/agents/simple-agent.d.ts +0 -16
  121. package/dist/ai/agents/types.d.ts +0 -35
  122. package/dist/ai/client.d.ts +0 -82
  123. package/dist/ai/index.d.ts +0 -16
  124. package/dist/ai/prompts/code-generation.d.ts +0 -25
  125. package/dist/ai/prompts/index.d.ts +0 -9
  126. package/dist/ai/prompts/spec-creation.d.ts +0 -28
  127. package/dist/ai/providers.d.ts +0 -28
  128. package/dist/formatters/index.d.ts +0 -10
  129. package/dist/formatters/json.d.ts +0 -88
  130. package/dist/formatters/sarif.d.ts +0 -100
  131. package/dist/formatters/text.d.ts +0 -34
  132. package/dist/index.d.ts +0 -66
  133. package/dist/libs/ai-providers/dist/factory.js +0 -154
  134. package/dist/libs/ai-providers/dist/index.js +0 -4
  135. package/dist/libs/ai-providers/dist/legacy.js +0 -72
  136. package/dist/libs/ai-providers/dist/models.js +0 -287
  137. package/dist/libs/ai-providers/dist/validation.js +0 -1
  138. package/dist/libs/contracts/dist/capabilities/openbanking.js +0 -88
  139. package/dist/libs/contracts/dist/client/index.js +0 -5
  140. package/dist/libs/contracts/dist/client/react/feature-render.js +0 -2
  141. package/dist/libs/contracts/dist/client/react/form-render.js +0 -4
  142. package/dist/libs/contracts/dist/client/react/index.js +0 -4
  143. package/dist/libs/contracts/dist/contract-registry/index.js +0 -1
  144. package/dist/libs/contracts/dist/contract-registry/schemas.js +0 -60
  145. package/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +0 -16
  146. package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +0 -16
  147. package/dist/libs/contracts/dist/docs/index.js +0 -29
  148. package/dist/libs/contracts/dist/docs/presentations.js +0 -71
  149. package/dist/libs/contracts/dist/docs/registry.js +0 -44
  150. package/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -16
  151. package/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -16
  152. package/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -16
  153. package/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -16
  154. package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -16
  155. package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +0 -80
  156. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +0 -57
  157. package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +0 -16
  158. package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +0 -357
  159. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +0 -37
  160. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +0 -16
  161. package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +0 -20
  162. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +0 -48
  163. package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +0 -79
  164. package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +0 -84
  165. package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +0 -45
  166. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +0 -67
  167. package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +0 -40
  168. package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +0 -69
  169. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +0 -47
  170. package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +0 -62
  171. package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +0 -155
  172. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +0 -20
  173. package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +0 -101
  174. package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +0 -20
  175. package/dist/libs/contracts/dist/events.js +0 -8
  176. package/dist/libs/contracts/dist/experiments/evaluator.js +0 -1
  177. package/dist/libs/contracts/dist/index.js +0 -72
  178. package/dist/libs/contracts/dist/install.js +0 -2
  179. package/dist/libs/contracts/dist/integrations/contracts.js +0 -377
  180. package/dist/libs/contracts/dist/integrations/index.js +0 -18
  181. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +0 -228
  182. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +0 -159
  183. package/dist/libs/contracts/dist/integrations/openbanking/contracts/index.js +0 -3
  184. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +0 -210
  185. package/dist/libs/contracts/dist/integrations/openbanking/models.js +0 -242
  186. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +0 -13
  187. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +0 -52
  188. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +0 -75
  189. package/dist/libs/contracts/dist/integrations/providers/gmail.js +0 -87
  190. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +0 -66
  191. package/dist/libs/contracts/dist/integrations/providers/index.js +0 -11
  192. package/dist/libs/contracts/dist/integrations/providers/mistral.js +0 -68
  193. package/dist/libs/contracts/dist/integrations/providers/postmark.js +0 -68
  194. package/dist/libs/contracts/dist/integrations/providers/powens.js +0 -116
  195. package/dist/libs/contracts/dist/integrations/providers/qdrant.js +0 -73
  196. package/dist/libs/contracts/dist/integrations/providers/registry.js +0 -10
  197. package/dist/libs/contracts/dist/integrations/providers/stripe.js +0 -83
  198. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +0 -61
  199. package/dist/libs/contracts/dist/jsonschema.js +0 -24
  200. package/dist/libs/contracts/dist/knowledge/contracts.js +0 -306
  201. package/dist/libs/contracts/dist/knowledge/index.js +0 -7
  202. package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +0 -34
  203. package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +0 -34
  204. package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +0 -38
  205. package/dist/libs/contracts/dist/knowledge/spaces/index.js +0 -6
  206. package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +0 -34
  207. package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +0 -37
  208. package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +0 -34
  209. package/dist/libs/contracts/dist/llm/exporters.js +0 -352
  210. package/dist/libs/contracts/dist/llm/index.js +0 -2
  211. package/dist/libs/contracts/dist/llm/prompts.js +0 -211
  212. package/dist/libs/contracts/dist/onboarding-base.js +0 -196
  213. package/dist/libs/contracts/dist/openapi.js +0 -75
  214. package/dist/libs/contracts/dist/ownership.js +0 -21
  215. package/dist/libs/contracts/dist/presentations.js +0 -1
  216. package/dist/libs/contracts/dist/presentations.v2.js +0 -11
  217. package/dist/libs/contracts/dist/prompt.js +0 -1
  218. package/dist/libs/contracts/dist/promptRegistry.js +0 -1
  219. package/dist/libs/contracts/dist/regenerator/index.js +0 -2
  220. package/dist/libs/contracts/dist/regenerator/service.js +0 -92
  221. package/dist/libs/contracts/dist/regenerator/utils.js +0 -51
  222. package/dist/libs/contracts/dist/registry.js +0 -208
  223. package/dist/libs/contracts/dist/resources.js +0 -1
  224. package/dist/libs/contracts/dist/schema/dist/EnumType.js +0 -2
  225. package/dist/libs/contracts/dist/schema/dist/FieldType.js +0 -49
  226. package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
  227. package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +0 -34
  228. package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
  229. package/dist/libs/contracts/dist/schema/dist/entity/index.js +0 -2
  230. package/dist/libs/contracts/dist/schema/dist/entity/types.js +0 -1
  231. package/dist/libs/contracts/dist/schema/dist/index.js +0 -6
  232. package/dist/libs/contracts/dist/server/graphql-pothos.js +0 -6
  233. package/dist/libs/contracts/dist/server/index.js +0 -8
  234. package/dist/libs/contracts/dist/server/mcp/createMcpServer.js +0 -4
  235. package/dist/libs/contracts/dist/server/mcp/registerPresentations.js +0 -2
  236. package/dist/libs/contracts/dist/server/mcp/registerPrompts.js +0 -1
  237. package/dist/libs/contracts/dist/server/mcp/registerResources.js +0 -2
  238. package/dist/libs/contracts/dist/server/mcp/registerTools.js +0 -1
  239. package/dist/libs/contracts/dist/server/provider-mcp.js +0 -1
  240. package/dist/libs/contracts/dist/server/rest-elysia.js +0 -1
  241. package/dist/libs/contracts/dist/server/rest-express.js +0 -1
  242. package/dist/libs/contracts/dist/server/rest-generic.js +0 -1
  243. package/dist/libs/contracts/dist/server/rest-next-app.js +0 -1
  244. package/dist/libs/contracts/dist/server/rest-next-pages.js +0 -1
  245. package/dist/libs/contracts/dist/spec.js +0 -35
  246. package/dist/libs/contracts/dist/telemetry/index.js +0 -1
  247. package/dist/libs/contracts/dist/telemetry/tracker.js +0 -1
  248. package/dist/libs/contracts/dist/tests/index.js +0 -1
  249. package/dist/libs/contracts/dist/tests/runner.js +0 -150
  250. package/dist/libs/contracts/dist/workflow/index.js +0 -1
  251. package/dist/libs/contracts/dist/workflow/runner.js +0 -1
  252. package/dist/libs/contracts-transformers/dist/common/utils.js +0 -47
  253. package/dist/libs/contracts-transformers/dist/openapi/exporter.js +0 -1
  254. package/dist/libs/contracts-transformers/dist/openapi/importer.js +0 -255
  255. package/dist/libs/contracts-transformers/dist/openapi/index.js +0 -4
  256. package/dist/libs/contracts-transformers/dist/openapi/parser.js +0 -231
  257. package/dist/libs/contracts-transformers/dist/openapi/schema-converter.js +0 -201
  258. package/dist/modules/contractspec-workspace/dist/ai/code-generation.js +0 -137
  259. package/dist/modules/contractspec-workspace/dist/ai/spec-creation.js +0 -101
  260. package/dist/modules/contractspec-workspace/dist/analysis/deps/graph.js +0 -84
  261. package/dist/modules/contractspec-workspace/dist/analysis/deps/parse-imports.js +0 -30
  262. package/dist/modules/contractspec-workspace/dist/analysis/diff/semantic.js +0 -96
  263. package/dist/modules/contractspec-workspace/dist/analysis/feature-scan.js +0 -151
  264. package/dist/modules/contractspec-workspace/dist/analysis/spec-scan.js +0 -344
  265. package/dist/modules/contractspec-workspace/dist/analysis/validate/spec-structure.js +0 -122
  266. package/dist/modules/contractspec-workspace/dist/templates/app-config.js +0 -105
  267. package/dist/modules/contractspec-workspace/dist/templates/data-view.js +0 -68
  268. package/dist/modules/contractspec-workspace/dist/templates/event.js +0 -38
  269. package/dist/modules/contractspec-workspace/dist/templates/experiment.js +0 -87
  270. package/dist/modules/contractspec-workspace/dist/templates/handler.js +0 -95
  271. package/dist/modules/contractspec-workspace/dist/templates/integration-utils.js +0 -104
  272. package/dist/modules/contractspec-workspace/dist/templates/integration.js +0 -62
  273. package/dist/modules/contractspec-workspace/dist/templates/knowledge.js +0 -68
  274. package/dist/modules/contractspec-workspace/dist/templates/migration.js +0 -60
  275. package/dist/modules/contractspec-workspace/dist/templates/operation.js +0 -100
  276. package/dist/modules/contractspec-workspace/dist/templates/presentation.js +0 -78
  277. package/dist/modules/contractspec-workspace/dist/templates/telemetry.js +0 -89
  278. package/dist/modules/contractspec-workspace/dist/templates/utils.js +0 -38
  279. package/dist/modules/contractspec-workspace/dist/templates/workflow-runner.js +0 -48
  280. package/dist/modules/contractspec-workspace/dist/templates/workflow.js +0 -67
  281. package/dist/modules/contractspec-workspace/dist/types/generation-types.js +0 -20
  282. package/dist/ports/ai.d.ts +0 -58
  283. package/dist/ports/fs.d.ts +0 -80
  284. package/dist/ports/git.d.ts +0 -32
  285. package/dist/ports/logger.d.ts +0 -87
  286. package/dist/ports/watcher.d.ts +0 -51
  287. package/dist/services/agent-guide/adapters/claude-code.d.ts +0 -34
  288. package/dist/services/agent-guide/adapters/cursor-cli.d.ts +0 -38
  289. package/dist/services/agent-guide/adapters/generic-mcp.d.ts +0 -52
  290. package/dist/services/agent-guide/adapters/index.d.ts +0 -22
  291. package/dist/services/agent-guide/agent-guide-service.d.ts +0 -55
  292. package/dist/services/agent-guide/types.d.ts +0 -57
  293. package/dist/services/build.d.ts +0 -58
  294. package/dist/services/ci-check/ci-check-service.d.ts +0 -15
  295. package/dist/services/ci-check/types.d.ts +0 -142
  296. package/dist/services/clean.d.ts +0 -40
  297. package/dist/services/config.d.ts +0 -25
  298. package/dist/services/deps.d.ts +0 -52
  299. package/dist/services/diff.d.ts +0 -33
  300. package/dist/services/doctor/doctor-service.d.ts +0 -23
  301. package/dist/services/doctor/types.d.ts +0 -117
  302. package/dist/services/implementation/discovery.d.ts +0 -29
  303. package/dist/services/implementation/resolver.d.ts +0 -43
  304. package/dist/services/implementation/types.d.ts +0 -78
  305. package/dist/services/integrity-diagram.d.ts +0 -35
  306. package/dist/services/integrity.d.ts +0 -133
  307. package/dist/services/list.d.ts +0 -30
  308. package/dist/services/openapi/export-service.d.ts +0 -52
  309. package/dist/services/openapi/import-service.d.ts +0 -15
  310. package/dist/services/openapi/sync-service.d.ts +0 -18
  311. package/dist/services/openapi/types.d.ts +0 -184
  312. package/dist/services/openapi/validate-service.d.ts +0 -15
  313. package/dist/services/regenerator.d.ts +0 -17
  314. package/dist/services/registry.d.ts +0 -52
  315. package/dist/services/setup/config-generators.d.ts +0 -41
  316. package/dist/services/setup/file-merger.d.ts +0 -26
  317. package/dist/services/setup/setup-service.d.ts +0 -11
  318. package/dist/services/setup/types.d.ts +0 -84
  319. package/dist/services/sync.d.ts +0 -40
  320. package/dist/services/test.d.ts +0 -14
  321. package/dist/services/validate-implementation.d.ts +0 -31
  322. package/dist/services/validate.d.ts +0 -40
  323. package/dist/services/verification-cache/adapters/filesystem.d.ts +0 -45
  324. package/dist/services/verification-cache/adapters/in-memory.d.ts +0 -26
  325. package/dist/services/verification-cache/adapters/workspace-state.d.ts +0 -48
  326. package/dist/services/verification-cache/cache-service.d.ts +0 -69
  327. package/dist/services/verification-cache/types.d.ts +0 -123
  328. package/dist/services/verify/ai-verifier.d.ts +0 -24
  329. package/dist/services/verify/behavior-verifier.d.ts +0 -11
  330. package/dist/services/verify/structure-verifier.d.ts +0 -11
  331. package/dist/services/verify/types.d.ts +0 -136
  332. package/dist/services/verify/verify-service.d.ts +0 -59
  333. package/dist/services/watch.d.ts +0 -24
  334. package/dist/services/workspace-info.d.ts +0 -61
  335. package/dist/templates/app-config.template.d.ts +0 -6
  336. package/dist/templates/data-view.template.d.ts +0 -6
  337. package/dist/templates/event.template.d.ts +0 -10
  338. package/dist/templates/experiment.template.d.ts +0 -6
  339. package/dist/templates/handler.template.d.ts +0 -15
  340. package/dist/templates/index.d.ts +0 -20
  341. package/dist/templates/integration.template.d.ts +0 -6
  342. package/dist/templates/knowledge.template.d.ts +0 -6
  343. package/dist/templates/migration.template.d.ts +0 -6
  344. package/dist/templates/operation.template.d.ts +0 -10
  345. package/dist/templates/presentation.template.d.ts +0 -10
  346. package/dist/templates/telemetry.template.d.ts +0 -6
  347. package/dist/templates/workflow-runner.template.d.ts +0 -15
  348. package/dist/templates/workflow.template.d.ts +0 -6
  349. package/dist/types/config.d.ts +0 -33
  350. package/dist/types.d.ts +0 -323
@@ -1,144 +1 @@
1
- import { generateCursorMcpConfig, getClaudeDesktopConfigPath } from "../../setup/config-generators.js";
2
- import { deepMergePreserve, formatJson } from "../../setup/file-merger.js";
3
-
4
- //#region src/services/doctor/checks/mcp.ts
5
- /**
6
- * Run MCP-related health checks.
7
- */
8
- async function runMcpChecks(fs, ctx) {
9
- const results = [];
10
- results.push(await checkCursorMcpConfig(fs, ctx));
11
- results.push(await checkCursorMcpServer(fs, ctx));
12
- results.push(await checkClaudeMcpConfig(fs, ctx));
13
- return results;
14
- }
15
- /**
16
- * Check if .cursor/mcp.json exists.
17
- */
18
- async function checkCursorMcpConfig(fs, ctx) {
19
- const configPath = fs.join(ctx.workspaceRoot, ".cursor", "mcp.json");
20
- if (await fs.exists(configPath)) return {
21
- category: "mcp",
22
- name: "Cursor MCP Config",
23
- status: "pass",
24
- message: ".cursor/mcp.json found"
25
- };
26
- return {
27
- category: "mcp",
28
- name: "Cursor MCP Config",
29
- status: "warn",
30
- message: ".cursor/mcp.json not found",
31
- details: "MCP integration with Cursor will not work",
32
- fix: {
33
- description: "Create .cursor/mcp.json",
34
- apply: async () => {
35
- try {
36
- const cursorDir = fs.join(ctx.workspaceRoot, ".cursor");
37
- if (!await fs.exists(cursorDir)) await fs.mkdir(cursorDir);
38
- const defaults = generateCursorMcpConfig();
39
- await fs.writeFile(configPath, formatJson(defaults));
40
- return {
41
- success: true,
42
- message: "Created .cursor/mcp.json"
43
- };
44
- } catch (error) {
45
- return {
46
- success: false,
47
- message: `Failed: ${error instanceof Error ? error.message : String(error)}`
48
- };
49
- }
50
- }
51
- }
52
- };
53
- }
54
- /**
55
- * Check if ContractSpec MCP server is registered in Cursor config.
56
- */
57
- async function checkCursorMcpServer(fs, ctx) {
58
- const configPath = fs.join(ctx.workspaceRoot, ".cursor", "mcp.json");
59
- if (!await fs.exists(configPath)) return {
60
- category: "mcp",
61
- name: "MCP Server Registered",
62
- status: "skip",
63
- message: "Cursor MCP config does not exist"
64
- };
65
- try {
66
- const content = await fs.readFile(configPath);
67
- const config = JSON.parse(content);
68
- if (config.mcpServers?.["contractspec-local"] !== void 0) return {
69
- category: "mcp",
70
- name: "MCP Server Registered",
71
- status: "pass",
72
- message: "ContractSpec MCP server is registered"
73
- };
74
- return {
75
- category: "mcp",
76
- name: "MCP Server Registered",
77
- status: "fail",
78
- message: "ContractSpec MCP server not registered",
79
- fix: {
80
- description: "Register ContractSpec MCP server",
81
- apply: async () => {
82
- try {
83
- const merged = deepMergePreserve(config, generateCursorMcpConfig());
84
- await fs.writeFile(configPath, formatJson(merged));
85
- return {
86
- success: true,
87
- message: "Registered MCP server"
88
- };
89
- } catch (error) {
90
- return {
91
- success: false,
92
- message: `Failed: ${error instanceof Error ? error.message : String(error)}`
93
- };
94
- }
95
- }
96
- }
97
- };
98
- } catch {
99
- return {
100
- category: "mcp",
101
- name: "MCP Server Registered",
102
- status: "skip",
103
- message: "Could not parse Cursor MCP config"
104
- };
105
- }
106
- }
107
- /**
108
- * Check Claude Desktop MCP config (optional).
109
- */
110
- async function checkClaudeMcpConfig(fs, ctx) {
111
- const configPath = getClaudeDesktopConfigPath();
112
- try {
113
- if (!await fs.exists(configPath)) return {
114
- category: "mcp",
115
- name: "Claude Desktop MCP",
116
- status: "skip",
117
- message: "Claude Desktop config not found (optional)"
118
- };
119
- const content = await fs.readFile(configPath);
120
- if (JSON.parse(content).mcpServers?.["contractspec-local"] !== void 0) return {
121
- category: "mcp",
122
- name: "Claude Desktop MCP",
123
- status: "pass",
124
- message: "ContractSpec registered in Claude Desktop"
125
- };
126
- return {
127
- category: "mcp",
128
- name: "Claude Desktop MCP",
129
- status: "warn",
130
- message: "ContractSpec not registered in Claude Desktop",
131
- details: "Optional: Run setup to configure Claude Desktop"
132
- };
133
- } catch {
134
- return {
135
- category: "mcp",
136
- name: "Claude Desktop MCP",
137
- status: "skip",
138
- message: "Could not check Claude Desktop config"
139
- };
140
- }
141
- }
142
-
143
- //#endregion
144
- export { runMcpChecks };
1
+ import{generateCursorMcpConfig as e,getClaudeDesktopConfigPath as t}from"../../setup/config-generators.js";import{deepMergePreserve as n,formatJson as r}from"../../setup/file-merger.js";async function i(e,t){let n=[];return n.push(await a(e,t)),n.push(await o(e,t)),n.push(await s(e,t)),n}async function a(t,n){let i=t.join(n.workspaceRoot,`.cursor`,`mcp.json`);return await t.exists(i)?{category:`mcp`,name:`Cursor MCP Config`,status:`pass`,message:`.cursor/mcp.json found`}:{category:`mcp`,name:`Cursor MCP Config`,status:`warn`,message:`.cursor/mcp.json not found`,details:`MCP integration with Cursor will not work`,fix:{description:`Create .cursor/mcp.json`,apply:async()=>{try{let a=t.join(n.workspaceRoot,`.cursor`);await t.exists(a)||await t.mkdir(a);let o=e();return await t.writeFile(i,r(o)),{success:!0,message:`Created .cursor/mcp.json`}}catch(e){return{success:!1,message:`Failed: ${e instanceof Error?e.message:String(e)}`}}}}}}async function o(t,i){let a=t.join(i.workspaceRoot,`.cursor`,`mcp.json`);if(!await t.exists(a))return{category:`mcp`,name:`MCP Server Registered`,status:`skip`,message:`Cursor MCP config does not exist`};try{let i=await t.readFile(a),o=JSON.parse(i);return o.mcpServers?.[`contractspec-local`]===void 0?{category:`mcp`,name:`MCP Server Registered`,status:`fail`,message:`ContractSpec MCP server not registered`,fix:{description:`Register ContractSpec MCP server`,apply:async()=>{try{let i=n(o,e());return await t.writeFile(a,r(i)),{success:!0,message:`Registered MCP server`}}catch(e){return{success:!1,message:`Failed: ${e instanceof Error?e.message:String(e)}`}}}}}:{category:`mcp`,name:`MCP Server Registered`,status:`pass`,message:`ContractSpec MCP server is registered`}}catch{return{category:`mcp`,name:`MCP Server Registered`,status:`skip`,message:`Could not parse Cursor MCP config`}}}async function s(e,n){let r=t();try{if(!await e.exists(r))return{category:`mcp`,name:`Claude Desktop MCP`,status:`skip`,message:`Claude Desktop config not found (optional)`};let t=await e.readFile(r);return JSON.parse(t).mcpServers?.[`contractspec-local`]===void 0?{category:`mcp`,name:`Claude Desktop MCP`,status:`warn`,message:`ContractSpec not registered in Claude Desktop`,details:`Optional: Run setup to configure Claude Desktop`}:{category:`mcp`,name:`Claude Desktop MCP`,status:`pass`,message:`ContractSpec registered in Claude Desktop`}}catch{return{category:`mcp`,name:`Claude Desktop MCP`,status:`skip`,message:`Could not check Claude Desktop config`}}}export{i as runMcpChecks};
@@ -1,243 +1 @@
1
- //#region src/services/doctor/checks/workspace.ts
2
- /**
3
- * Common contract directory paths to check.
4
- */
5
- const CONTRACT_PATHS = [
6
- "src/contracts",
7
- "contracts",
8
- "src/specs",
9
- "specs"
10
- ];
11
- /**
12
- * Run workspace-related health checks.
13
- */
14
- async function runWorkspaceChecks(fs, ctx) {
15
- const results = [];
16
- results.push(checkMonorepoStatus(ctx));
17
- results.push(await checkValidWorkspace(fs, ctx));
18
- results.push(await checkContractsDirectory(fs, ctx));
19
- results.push(await checkContractFiles(fs, ctx));
20
- results.push(await checkOutputDirectory(fs, ctx));
21
- return results;
22
- }
23
- /**
24
- * Report monorepo detection status.
25
- */
26
- function checkMonorepoStatus(ctx) {
27
- if (ctx.isMonorepo) {
28
- const pkgInfo = ctx.packageName ? ` in package "${ctx.packageName}"` : "";
29
- const locationInfo = ctx.packageRoot !== ctx.workspaceRoot ? ` (package root: ${ctx.packageRoot})` : "";
30
- return {
31
- category: "workspace",
32
- name: "Monorepo Detection",
33
- status: "pass",
34
- message: `Monorepo detected${pkgInfo}`,
35
- details: ctx.verbose ? `Workspace root: ${ctx.workspaceRoot}${locationInfo}` : void 0
36
- };
37
- }
38
- return {
39
- category: "workspace",
40
- name: "Monorepo Detection",
41
- status: "pass",
42
- message: "Single project (not a monorepo)"
43
- };
44
- }
45
- /**
46
- * Check if this is a valid workspace.
47
- */
48
- async function checkValidWorkspace(fs, ctx) {
49
- const pathsToCheck = ctx.isMonorepo ? [ctx.packageRoot, ctx.workspaceRoot] : [ctx.workspaceRoot];
50
- for (const root of pathsToCheck) {
51
- const packageJsonPath = fs.join(root, "package.json");
52
- if (await fs.exists(packageJsonPath)) return {
53
- category: "workspace",
54
- name: "Valid Workspace",
55
- status: "pass",
56
- message: "package.json found",
57
- details: ctx.verbose && ctx.isMonorepo ? `Found at: ${root}` : void 0
58
- };
59
- }
60
- return {
61
- category: "workspace",
62
- name: "Valid Workspace",
63
- status: "fail",
64
- message: "No package.json found",
65
- details: "This does not appear to be a Node.js/TypeScript project"
66
- };
67
- }
68
- /**
69
- * Check if contracts directory exists.
70
- *
71
- * In monorepo: checks current package first, then workspace root.
72
- */
73
- async function checkContractsDirectory(fs, ctx) {
74
- const searchRoots = ctx.isMonorepo ? [ctx.packageRoot, ctx.workspaceRoot] : [ctx.workspaceRoot];
75
- const targetRoot = ctx.isMonorepo ? ctx.packageRoot : ctx.workspaceRoot;
76
- for (const root of searchRoots) for (const path of CONTRACT_PATHS) {
77
- const fullPath = fs.join(root, path);
78
- if (await fs.exists(fullPath)) {
79
- const relativeTo = root === ctx.packageRoot ? "package" : "workspace";
80
- return {
81
- category: "workspace",
82
- name: "Contracts Directory",
83
- status: "pass",
84
- message: `Contracts directory found: ${path}`,
85
- details: ctx.isMonorepo ? `Found at ${relativeTo} level` : void 0
86
- };
87
- }
88
- }
89
- const createPath = ctx.isMonorepo ? "src/contracts" : "src/contracts";
90
- const locationHint = ctx.isMonorepo ? ` in package "${ctx.packageName ?? ctx.packageRoot}"` : "";
91
- return {
92
- category: "workspace",
93
- name: "Contracts Directory",
94
- status: "warn",
95
- message: "No contracts directory found",
96
- details: `Create ${createPath}/${locationHint} to organize your specs`,
97
- fix: {
98
- description: `Create ${createPath}/ directory${locationHint}`,
99
- apply: async () => {
100
- try {
101
- const contractsDir = fs.join(targetRoot, "src", "contracts");
102
- await fs.mkdir(contractsDir);
103
- return {
104
- success: true,
105
- message: `Created ${createPath}/`
106
- };
107
- } catch (error) {
108
- return {
109
- success: false,
110
- message: `Failed: ${error instanceof Error ? error.message : String(error)}`
111
- };
112
- }
113
- }
114
- }
115
- };
116
- }
117
- /**
118
- * Check if any contract files exist.
119
- *
120
- * In monorepo: searches from current package root.
121
- */
122
- async function checkContractFiles(fs, ctx) {
123
- try {
124
- const patterns = [
125
- "**/*.contracts.ts",
126
- "**/*.event.ts",
127
- "**/*.presentation.ts",
128
- "**/*.feature.ts"
129
- ];
130
- const searchRoot = ctx.isMonorepo ? ctx.packageRoot : ctx.workspaceRoot;
131
- const files = await fs.glob({
132
- patterns,
133
- ignore: ["node_modules/**", "dist/**"],
134
- cwd: searchRoot
135
- });
136
- if (files.length > 0) {
137
- const locationInfo = ctx.isMonorepo ? " (in current package)" : "";
138
- return {
139
- category: "workspace",
140
- name: "Contract Files",
141
- status: "pass",
142
- message: `Found ${files.length} contract file(s)${locationInfo}`,
143
- details: ctx.verbose ? files.slice(0, 5).join(", ") : void 0
144
- };
145
- }
146
- return {
147
- category: "workspace",
148
- name: "Contract Files",
149
- status: "warn",
150
- message: ctx.isMonorepo ? `No contract files found in package "${ctx.packageName ?? "current"}"` : "No contract files found",
151
- details: "Create specs using \"contractspec create\" or VS Code command"
152
- };
153
- } catch {
154
- return {
155
- category: "workspace",
156
- name: "Contract Files",
157
- status: "skip",
158
- message: "Could not search for contract files"
159
- };
160
- }
161
- }
162
- /**
163
- * Find the config file, checking package level first in monorepos.
164
- */
165
- async function findConfigFile(fs, ctx) {
166
- if (ctx.isMonorepo && ctx.packageRoot !== ctx.workspaceRoot) {
167
- const pkgConfigPath = fs.join(ctx.packageRoot, ".contractsrc.json");
168
- if (await fs.exists(pkgConfigPath)) return {
169
- path: pkgConfigPath,
170
- root: ctx.packageRoot,
171
- level: "package"
172
- };
173
- }
174
- const wsConfigPath = fs.join(ctx.workspaceRoot, ".contractsrc.json");
175
- if (await fs.exists(wsConfigPath)) return {
176
- path: wsConfigPath,
177
- root: ctx.workspaceRoot,
178
- level: "workspace"
179
- };
180
- return null;
181
- }
182
- /**
183
- * Check if output directory is configured and exists.
184
- *
185
- * In monorepo: checks package-level config first, then workspace-level.
186
- * Resolves outputDir relative to the config file location.
187
- */
188
- async function checkOutputDirectory(fs, ctx) {
189
- try {
190
- const configInfo = await findConfigFile(fs, ctx);
191
- if (!configInfo) return {
192
- category: "workspace",
193
- name: "Output Directory",
194
- status: "skip",
195
- message: ctx.isMonorepo ? "No config file found at package or workspace level" : "No config file to check output directory"
196
- };
197
- const content = await fs.readFile(configInfo.path);
198
- const outputDir = JSON.parse(content).outputDir ?? "./src";
199
- const outputPath = fs.join(configInfo.root, outputDir);
200
- const levelInfo = ctx.isMonorepo ? ` (${configInfo.level} level)` : "";
201
- if (await fs.exists(outputPath)) return {
202
- category: "workspace",
203
- name: "Output Directory",
204
- status: "pass",
205
- message: `Output directory exists: ${outputDir}${levelInfo}`,
206
- details: ctx.verbose ? `Resolved to: ${outputPath}` : void 0
207
- };
208
- return {
209
- category: "workspace",
210
- name: "Output Directory",
211
- status: "warn",
212
- message: `Output directory not found: ${outputDir}${levelInfo}`,
213
- details: ctx.verbose ? `Expected at: ${outputPath}` : void 0,
214
- fix: {
215
- description: `Create ${outputDir} directory`,
216
- apply: async () => {
217
- try {
218
- await fs.mkdir(outputPath);
219
- return {
220
- success: true,
221
- message: `Created ${outputDir}`
222
- };
223
- } catch (error) {
224
- return {
225
- success: false,
226
- message: `Failed: ${error instanceof Error ? error.message : String(error)}`
227
- };
228
- }
229
- }
230
- }
231
- };
232
- } catch {
233
- return {
234
- category: "workspace",
235
- name: "Output Directory",
236
- status: "skip",
237
- message: "Could not check output directory"
238
- };
239
- }
240
- }
241
-
242
- //#endregion
243
- export { runWorkspaceChecks };
1
+ const e=[`src/contracts`,`contracts`,`src/specs`,`specs`];async function t(e,t){let o=[];return o.push(n(t)),o.push(await r(e,t)),o.push(await i(e,t)),o.push(await a(e,t)),o.push(await s(e,t)),o}function n(e){if(e.isMonorepo){let t=e.packageName?` in package "${e.packageName}"`:``,n=e.packageRoot===e.workspaceRoot?``:` (package root: ${e.packageRoot})`;return{category:`workspace`,name:`Monorepo Detection`,status:`pass`,message:`Monorepo detected${t}`,details:e.verbose?`Workspace root: ${e.workspaceRoot}${n}`:void 0}}return{category:`workspace`,name:`Monorepo Detection`,status:`pass`,message:`Single project (not a monorepo)`}}async function r(e,t){let n=t.isMonorepo?[t.packageRoot,t.workspaceRoot]:[t.workspaceRoot];for(let r of n){let n=e.join(r,`package.json`);if(await e.exists(n))return{category:`workspace`,name:`Valid Workspace`,status:`pass`,message:`package.json found`,details:t.verbose&&t.isMonorepo?`Found at: ${r}`:void 0}}return{category:`workspace`,name:`Valid Workspace`,status:`fail`,message:`No package.json found`,details:`This does not appear to be a Node.js/TypeScript project`}}async function i(t,n){let r=n.isMonorepo?[n.packageRoot,n.workspaceRoot]:[n.workspaceRoot],i=n.isMonorepo?n.packageRoot:n.workspaceRoot;for(let i of r)for(let r of e){let e=t.join(i,r);if(await t.exists(e)){let e=i===n.packageRoot?`package`:`workspace`;return{category:`workspace`,name:`Contracts Directory`,status:`pass`,message:`Contracts directory found: ${r}`,details:n.isMonorepo?`Found at ${e} level`:void 0}}}let a=(n.isMonorepo,`src/contracts`),o=n.isMonorepo?` in package "${n.packageName??n.packageRoot}"`:``;return{category:`workspace`,name:`Contracts Directory`,status:`warn`,message:`No contracts directory found`,details:`Create ${a}/${o} to organize your specs`,fix:{description:`Create ${a}/ directory${o}`,apply:async()=>{try{let e=t.join(i,`src`,`contracts`);return await t.mkdir(e),{success:!0,message:`Created ${a}/`}}catch(e){return{success:!1,message:`Failed: ${e instanceof Error?e.message:String(e)}`}}}}}}async function a(e,t){try{let n=[`**/*.contracts.ts`,`**/*.event.ts`,`**/*.presentation.ts`,`**/*.feature.ts`],r=t.isMonorepo?t.packageRoot:t.workspaceRoot,i=await e.glob({patterns:n,ignore:[`node_modules/**`,`dist/**`],cwd:r});if(i.length>0){let e=t.isMonorepo?` (in current package)`:``;return{category:`workspace`,name:`Contract Files`,status:`pass`,message:`Found ${i.length} contract file(s)${e}`,details:t.verbose?i.slice(0,5).join(`, `):void 0}}return{category:`workspace`,name:`Contract Files`,status:`warn`,message:t.isMonorepo?`No contract files found in package "${t.packageName??`current`}"`:`No contract files found`,details:`Create specs using "contractspec create" or VS Code command`}}catch{return{category:`workspace`,name:`Contract Files`,status:`skip`,message:`Could not search for contract files`}}}async function o(e,t){if(t.isMonorepo&&t.packageRoot!==t.workspaceRoot){let n=e.join(t.packageRoot,`.contractsrc.json`);if(await e.exists(n))return{path:n,root:t.packageRoot,level:`package`}}let n=e.join(t.workspaceRoot,`.contractsrc.json`);return await e.exists(n)?{path:n,root:t.workspaceRoot,level:`workspace`}:null}async function s(e,t){try{let n=await o(e,t);if(!n)return{category:`workspace`,name:`Output Directory`,status:`skip`,message:t.isMonorepo?`No config file found at package or workspace level`:`No config file to check output directory`};let r=await e.readFile(n.path),i=JSON.parse(r).outputDir??`./src`,a=e.join(n.root,i),s=t.isMonorepo?` (${n.level} level)`:``;return await e.exists(a)?{category:`workspace`,name:`Output Directory`,status:`pass`,message:`Output directory exists: ${i}${s}`,details:t.verbose?`Resolved to: ${a}`:void 0}:{category:`workspace`,name:`Output Directory`,status:`warn`,message:`Output directory not found: ${i}${s}`,details:t.verbose?`Expected at: ${a}`:void 0,fix:{description:`Create ${i} directory`,apply:async()=>{try{return await e.mkdir(a),{success:!0,message:`Created ${i}`}}catch(e){return{success:!1,message:`Failed: ${e instanceof Error?e.message:String(e)}`}}}}}}catch{return{category:`workspace`,name:`Output Directory`,status:`skip`,message:`Could not check output directory`}}}export{t as runWorkspaceChecks};
@@ -1,115 +1,2 @@
1
- import { findPackageRoot, findWorkspaceRoot, getPackageName, isMonorepo } from "../../adapters/workspace.js";
2
- import { ALL_CHECK_CATEGORIES, CHECK_CATEGORY_LABELS } from "./types.js";
3
- import { runCliChecks } from "./checks/cli.js";
4
- import { runConfigChecks } from "./checks/config.js";
5
- import { runMcpChecks } from "./checks/mcp.js";
6
- import { runDepsChecks } from "./checks/deps.js";
7
- import { runWorkspaceChecks } from "./checks/workspace.js";
8
- import { runAiChecks } from "./checks/ai.js";
9
- import "./checks/index.js";
10
-
11
- //#region src/services/doctor/doctor-service.ts
12
- /**
13
- * Default prompt callbacks that always decline fixes.
14
- */
15
- const defaultPrompts = {
16
- confirm: async () => false,
17
- input: async () => ""
18
- };
19
- /**
20
- * Run all health checks and optionally apply fixes.
21
- */
22
- async function runDoctor(adapters, options, prompts = defaultPrompts) {
23
- const { fs, logger } = adapters;
24
- const categories = options.categories ?? ALL_CHECK_CATEGORIES;
25
- const workspaceRoot = findWorkspaceRoot(options.workspaceRoot);
26
- const packageRoot = findPackageRoot(options.workspaceRoot);
27
- const monorepo = isMonorepo(workspaceRoot);
28
- const packageName = monorepo ? getPackageName(packageRoot) : void 0;
29
- const ctx = {
30
- workspaceRoot,
31
- packageRoot,
32
- isMonorepo: monorepo,
33
- packageName,
34
- verbose: options.verbose ?? false
35
- };
36
- if (monorepo) {
37
- const pkgInfo = packageName ? ` (package: ${packageName})` : "";
38
- logger.info(`Detected monorepo${pkgInfo}`);
39
- }
40
- const allResults = [];
41
- for (const category of categories) {
42
- if (options.skipAi && category === "ai") continue;
43
- logger.info(`Checking ${CHECK_CATEGORY_LABELS[category]}...`);
44
- const categoryResults = await runCategoryChecks(category, fs, ctx, prompts);
45
- for (const result of categoryResults) {
46
- if (result.fix && (result.status === "fail" || result.status === "warn")) {
47
- if (options.autoFix ? true : await prompts.confirm(`Fix "${result.name}"? ${result.fix.description}`)) {
48
- logger.info(`Applying fix: ${result.fix.description}`);
49
- const fixResult = await result.fix.apply();
50
- if (fixResult.success) {
51
- logger.info(`✓ ${fixResult.message}`);
52
- result.status = "pass";
53
- result.message = `Fixed: ${fixResult.message}`;
54
- result.fix = void 0;
55
- } else logger.warn(`✗ ${fixResult.message}`);
56
- }
57
- }
58
- allResults.push(result);
59
- }
60
- }
61
- const passed = allResults.filter((r) => r.status === "pass").length;
62
- const warnings = allResults.filter((r) => r.status === "warn").length;
63
- const failures = allResults.filter((r) => r.status === "fail").length;
64
- return {
65
- checks: allResults,
66
- passed,
67
- warnings,
68
- failures,
69
- skipped: allResults.filter((r) => r.status === "skip").length,
70
- healthy: failures === 0
71
- };
72
- }
73
- /**
74
- * Run checks for a specific category.
75
- */
76
- async function runCategoryChecks(category, fs, ctx, prompts) {
77
- switch (category) {
78
- case "cli": return runCliChecks(fs, ctx);
79
- case "config": return runConfigChecks(fs, ctx);
80
- case "mcp": return runMcpChecks(fs, ctx);
81
- case "deps": return runDepsChecks(fs, ctx);
82
- case "workspace": return runWorkspaceChecks(fs, ctx);
83
- case "ai": return runAiChecks(fs, ctx, prompts);
84
- default: return [];
85
- }
86
- }
87
- /**
88
- * Get a summary string for the doctor result.
89
- */
90
- function formatDoctorSummary(result) {
91
- const lines = [];
92
- lines.push("");
93
- lines.push("=== Health Check Summary ===");
94
- lines.push("");
95
- if (result.healthy) lines.push("✓ All checks passed!");
96
- else lines.push("✗ Some issues found");
97
- lines.push("");
98
- lines.push(` Passed: ${result.passed}`);
99
- lines.push(` Warnings: ${result.warnings}`);
100
- lines.push(` Failures: ${result.failures}`);
101
- lines.push(` Skipped: ${result.skipped}`);
102
- return lines.join("\n");
103
- }
104
- /**
105
- * Format a single check result for display.
106
- */
107
- function formatCheckResult(result) {
108
- let line = `${result.status === "pass" ? "✓" : result.status === "warn" ? "⚠" : result.status === "fail" ? "✗" : "○"} ${result.name}: ${result.message}`;
109
- if (result.details) line += `\n ${result.details}`;
110
- if (result.fix) line += `\n Fix available: ${result.fix.description}`;
111
- return line;
112
- }
113
-
114
- //#endregion
115
- export { formatCheckResult, formatDoctorSummary, runDoctor };
1
+ import{findPackageRoot as e,findWorkspaceRoot as t,getPackageName as n,isMonorepo as r}from"../../adapters/workspace.js";import{ALL_CHECK_CATEGORIES as i,CHECK_CATEGORY_LABELS as a}from"./types.js";import{runCliChecks as o}from"./checks/cli.js";import{runConfigChecks as s}from"./checks/config.js";import{runMcpChecks as c}from"./checks/mcp.js";import{runDepsChecks as l}from"./checks/deps.js";import{runWorkspaceChecks as u}from"./checks/workspace.js";import{runAiChecks as d}from"./checks/ai.js";import"./checks/index.js";const f={confirm:async()=>!1,input:async()=>``};async function p(o,s,c=f){let{fs:l,logger:u}=o,d=s.categories??i,p=t(s.workspaceRoot),h=e(s.workspaceRoot),g=r(p),_=g?n(h):void 0,v={workspaceRoot:p,packageRoot:h,isMonorepo:g,packageName:_,verbose:s.verbose??!1};if(g){let e=_?` (package: ${_})`:``;u.info(`Detected monorepo${e}`)}let y=[];for(let e of d){if(s.skipAi&&e===`ai`)continue;u.info(`Checking ${a[e]}...`);let t=await m(e,l,v,c);for(let e of t){if(e.fix&&(e.status===`fail`||e.status===`warn`)&&(s.autoFix||await c.confirm(`Fix "${e.name}"? ${e.fix.description}`))){u.info(`Applying fix: ${e.fix.description}`);let t=await e.fix.apply();t.success?(u.info(`✓ ${t.message}`),e.status=`pass`,e.message=`Fixed: ${t.message}`,e.fix=void 0):u.warn(`✗ ${t.message}`)}y.push(e)}}let b=y.filter(e=>e.status===`pass`).length,x=y.filter(e=>e.status===`warn`).length,S=y.filter(e=>e.status===`fail`).length;return{checks:y,passed:b,warnings:x,failures:S,skipped:y.filter(e=>e.status===`skip`).length,healthy:S===0}}async function m(e,t,n,r){switch(e){case`cli`:return o(t,n);case`config`:return s(t,n);case`mcp`:return c(t,n);case`deps`:return l(t,n);case`workspace`:return u(t,n);case`ai`:return d(t,n,r);default:return[]}}function h(e){let t=[];return t.push(``),t.push(`=== Health Check Summary ===`),t.push(``),e.healthy?t.push(`✓ All checks passed!`):t.push(`✗ Some issues found`),t.push(``),t.push(` Passed: ${e.passed}`),t.push(` Warnings: ${e.warnings}`),t.push(` Failures: ${e.failures}`),t.push(` Skipped: ${e.skipped}`),t.join(`
2
+ `)}function g(e){let t=`${e.status===`pass`?`✓`:e.status===`warn`?`⚠`:e.status===`fail`?`✗`:`○`} ${e.name}: ${e.message}`;return e.details&&(t+=`\n ${e.details}`),e.fix&&(t+=`\n Fix available: ${e.fix.description}`),t}export{g as formatCheckResult,h as formatDoctorSummary,p as runDoctor};
@@ -1,2 +1 @@
1
- import { ALL_CHECK_CATEGORIES, CHECK_CATEGORY_LABELS } from "./types.js";
2
- import { formatCheckResult, formatDoctorSummary, runDoctor } from "./doctor-service.js";
1
+ import{ALL_CHECK_CATEGORIES as e,CHECK_CATEGORY_LABELS as t}from"./types.js";import{formatCheckResult as n,formatDoctorSummary as r,runDoctor as i}from"./doctor-service.js";
@@ -1,26 +1 @@
1
- //#region src/services/doctor/types.ts
2
- /**
3
- * All available check categories.
4
- */
5
- const ALL_CHECK_CATEGORIES = [
6
- "cli",
7
- "config",
8
- "mcp",
9
- "deps",
10
- "workspace",
11
- "ai"
12
- ];
13
- /**
14
- * Human-readable labels for check categories.
15
- */
16
- const CHECK_CATEGORY_LABELS = {
17
- cli: "CLI Installation",
18
- config: "Configuration Files",
19
- mcp: "MCP Server",
20
- deps: "Dependencies",
21
- workspace: "Workspace Structure",
22
- ai: "AI Provider"
23
- };
24
-
25
- //#endregion
26
- export { ALL_CHECK_CATEGORIES, CHECK_CATEGORY_LABELS };
1
+ const e=[`cli`,`config`,`mcp`,`deps`,`workspace`,`ai`],t={cli:`CLI Installation`,config:`Configuration Files`,mcp:`MCP Server`,deps:`Dependencies`,workspace:`Workspace Structure`,ai:`AI Provider`};export{e as ALL_CHECK_CATEGORIES,t as CHECK_CATEGORY_LABELS};