@lssm/bundle.contractspec-workspace 0.0.0-canary-20251217080011 → 0.0.0-canary-20251219202229

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 (502) hide show
  1. package/LICENSE +21 -0
  2. package/dist/adapters/ai.d.ts +7 -8
  3. package/dist/adapters/ai.d.ts.map +1 -0
  4. package/dist/adapters/factory.d.ts +20 -21
  5. package/dist/adapters/factory.d.ts.map +1 -0
  6. package/dist/adapters/fs.d.ts +6 -7
  7. package/dist/adapters/fs.d.ts.map +1 -0
  8. package/dist/adapters/git.d.ts +6 -7
  9. package/dist/adapters/git.d.ts.map +1 -0
  10. package/dist/adapters/index.d.ts +11 -0
  11. package/dist/adapters/index.d.ts.map +1 -0
  12. package/dist/adapters/logger.d.ts +9 -8
  13. package/dist/adapters/logger.d.ts.map +1 -0
  14. package/dist/adapters/watcher.d.ts +6 -7
  15. package/dist/adapters/watcher.d.ts.map +1 -0
  16. package/dist/adapters/workspace.d.ts +37 -39
  17. package/dist/adapters/workspace.d.ts.map +1 -0
  18. package/dist/ai/agents/claude-code-agent.d.ts +20 -20
  19. package/dist/ai/agents/claude-code-agent.d.ts.map +1 -0
  20. package/dist/ai/agents/cursor-agent.d.ts +66 -66
  21. package/dist/ai/agents/cursor-agent.d.ts.map +1 -0
  22. package/dist/ai/agents/index.d.ts +10 -0
  23. package/dist/ai/agents/index.d.ts.map +1 -0
  24. package/dist/ai/agents/openai-codex-agent.d.ts +20 -20
  25. package/dist/ai/agents/openai-codex-agent.d.ts.map +1 -0
  26. package/dist/ai/agents/orchestrator.d.ts +48 -48
  27. package/dist/ai/agents/orchestrator.d.ts.map +1 -0
  28. package/dist/ai/agents/simple-agent.d.ts +15 -15
  29. package/dist/ai/agents/simple-agent.d.ts.map +1 -0
  30. package/dist/ai/agents/types.d.ts +26 -28
  31. package/dist/ai/agents/types.d.ts.map +1 -0
  32. package/dist/ai/client.d.ts +74 -78
  33. package/dist/ai/client.d.ts.map +1 -0
  34. package/dist/ai/index.d.ts +8 -16
  35. package/dist/ai/index.d.ts.map +1 -0
  36. package/dist/ai/prompts/code-generation.d.ts +6 -10
  37. package/dist/ai/prompts/code-generation.d.ts.map +1 -0
  38. package/dist/ai/prompts/index.d.ts +6 -9
  39. package/dist/ai/prompts/index.d.ts.map +1 -0
  40. package/dist/ai/prompts/spec-creation.d.ts +7 -13
  41. package/dist/ai/prompts/spec-creation.d.ts.map +1 -0
  42. package/dist/ai/providers.d.ts +13 -12
  43. package/dist/ai/providers.d.ts.map +1 -0
  44. package/dist/formatters/index.d.ts +7 -10
  45. package/dist/formatters/index.d.ts.map +1 -0
  46. package/dist/formatters/json.d.ts +65 -63
  47. package/dist/formatters/json.d.ts.map +1 -0
  48. package/dist/formatters/sarif.d.ts +77 -72
  49. package/dist/formatters/sarif.d.ts.map +1 -0
  50. package/dist/formatters/text.d.ts +21 -19
  51. package/dist/formatters/text.d.ts.map +1 -0
  52. package/dist/index.d.ts +14 -66
  53. package/dist/index.d.ts.map +1 -0
  54. package/dist/index.js +4531 -81
  55. package/dist/ports/ai.d.ts +41 -38
  56. package/dist/ports/ai.d.ts.map +1 -0
  57. package/dist/ports/fs.d.ts +63 -65
  58. package/dist/ports/fs.d.ts.map +1 -0
  59. package/dist/ports/git.d.ts +19 -21
  60. package/dist/ports/git.d.ts.map +1 -0
  61. package/dist/ports/index.d.ts +10 -0
  62. package/dist/ports/index.d.ts.map +1 -0
  63. package/dist/ports/logger.d.ts +58 -65
  64. package/dist/ports/logger.d.ts.map +1 -0
  65. package/dist/ports/watcher.d.ts +24 -26
  66. package/dist/ports/watcher.d.ts.map +1 -0
  67. package/dist/services/agent-guide/adapters/claude-code.d.ts +30 -28
  68. package/dist/services/agent-guide/adapters/claude-code.d.ts.map +1 -0
  69. package/dist/services/agent-guide/adapters/cursor-cli.d.ts +34 -32
  70. package/dist/services/agent-guide/adapters/cursor-cli.d.ts.map +1 -0
  71. package/dist/services/agent-guide/adapters/generic-mcp.d.ts +47 -45
  72. package/dist/services/agent-guide/adapters/generic-mcp.d.ts.map +1 -0
  73. package/dist/services/agent-guide/adapters/index.d.ts +15 -13
  74. package/dist/services/agent-guide/adapters/index.d.ts.map +1 -0
  75. package/dist/services/agent-guide/agent-guide-service.d.ts +48 -45
  76. package/dist/services/agent-guide/agent-guide-service.d.ts.map +1 -0
  77. package/dist/services/agent-guide/index.d.ts +12 -0
  78. package/dist/services/agent-guide/index.d.ts.map +1 -0
  79. package/dist/services/agent-guide/types.d.ts +46 -47
  80. package/dist/services/agent-guide/types.d.ts.map +1 -0
  81. package/dist/services/build.d.ts +41 -39
  82. package/dist/services/build.d.ts.map +1 -0
  83. package/dist/services/ci-check/ci-check-service.d.ts +13 -11
  84. package/dist/services/ci-check/ci-check-service.d.ts.map +1 -0
  85. package/dist/services/ci-check/index.d.ts +6 -0
  86. package/dist/services/ci-check/index.d.ts.map +1 -0
  87. package/dist/services/ci-check/types.d.ts +100 -102
  88. package/dist/services/ci-check/types.d.ts.map +1 -0
  89. package/dist/services/clean.d.ts +38 -37
  90. package/dist/services/clean.d.ts.map +1 -0
  91. package/dist/services/config.d.ts +14 -15
  92. package/dist/services/config.d.ts.map +1 -0
  93. package/dist/services/deps.d.ts +29 -30
  94. package/dist/services/deps.d.ts.map +1 -0
  95. package/dist/services/diff.d.ts +20 -21
  96. package/dist/services/diff.d.ts.map +1 -0
  97. package/dist/services/doctor/checks/ai.d.ts +10 -0
  98. package/dist/services/doctor/checks/ai.d.ts.map +1 -0
  99. package/dist/services/doctor/checks/cli.d.ts +10 -0
  100. package/dist/services/doctor/checks/cli.d.ts.map +1 -0
  101. package/dist/services/doctor/checks/config.d.ts +10 -0
  102. package/dist/services/doctor/checks/config.d.ts.map +1 -0
  103. package/dist/services/doctor/checks/deps.d.ts +10 -0
  104. package/dist/services/doctor/checks/deps.d.ts.map +1 -0
  105. package/dist/services/doctor/checks/index.d.ts +10 -0
  106. package/dist/services/doctor/checks/index.d.ts.map +1 -0
  107. package/dist/services/doctor/checks/mcp.d.ts +10 -0
  108. package/dist/services/doctor/checks/mcp.d.ts.map +1 -0
  109. package/dist/services/doctor/checks/workspace.d.ts +12 -0
  110. package/dist/services/doctor/checks/workspace.d.ts.map +1 -0
  111. package/dist/services/doctor/doctor-service.d.ts +14 -13
  112. package/dist/services/doctor/doctor-service.d.ts.map +1 -0
  113. package/dist/services/doctor/index.d.ts +8 -0
  114. package/dist/services/doctor/index.d.ts.map +1 -0
  115. package/dist/services/doctor/types.d.ts +70 -72
  116. package/dist/services/doctor/types.d.ts.map +1 -0
  117. package/dist/services/implementation/discovery.d.ts +16 -14
  118. package/dist/services/implementation/discovery.d.ts.map +1 -0
  119. package/dist/services/implementation/index.d.ts +7 -0
  120. package/dist/services/implementation/index.d.ts.map +1 -0
  121. package/dist/services/implementation/resolver.d.ts +31 -27
  122. package/dist/services/implementation/resolver.d.ts.map +1 -0
  123. package/dist/services/implementation/types.d.ts +55 -56
  124. package/dist/services/implementation/types.d.ts.map +1 -0
  125. package/dist/services/index.d.ts +28 -0
  126. package/dist/services/index.d.ts.map +1 -0
  127. package/dist/services/integrity-diagram.d.ts +29 -25
  128. package/dist/services/integrity-diagram.d.ts.map +1 -0
  129. package/dist/services/integrity.d.ts +100 -96
  130. package/dist/services/integrity.d.ts.map +1 -0
  131. package/dist/services/list.d.ts +18 -19
  132. package/dist/services/list.d.ts.map +1 -0
  133. package/dist/services/openapi/export-service.d.ts +39 -40
  134. package/dist/services/openapi/export-service.d.ts.map +1 -0
  135. package/dist/services/openapi/import-service.d.ts +10 -11
  136. package/dist/services/openapi/import-service.d.ts.map +1 -0
  137. package/dist/services/openapi/index.d.ts +10 -0
  138. package/dist/services/openapi/index.d.ts.map +1 -0
  139. package/dist/services/openapi/sync-service.d.ts +12 -13
  140. package/dist/services/openapi/sync-service.d.ts.map +1 -0
  141. package/dist/services/openapi/types.d.ts +141 -143
  142. package/dist/services/openapi/types.d.ts.map +1 -0
  143. package/dist/services/openapi/validate-service.d.ts +10 -11
  144. package/dist/services/openapi/validate-service.d.ts.map +1 -0
  145. package/dist/services/regenerator.d.ts +18 -16
  146. package/dist/services/regenerator.d.ts.map +1 -0
  147. package/dist/services/registry.d.ts +25 -26
  148. package/dist/services/registry.d.ts.map +1 -0
  149. package/dist/services/setup/config-generators.d.ts +14 -13
  150. package/dist/services/setup/config-generators.d.ts.map +1 -0
  151. package/dist/services/setup/file-merger.d.ts +5 -7
  152. package/dist/services/setup/file-merger.d.ts.map +1 -0
  153. package/dist/services/setup/index.d.ts +10 -0
  154. package/dist/services/setup/index.d.ts.map +1 -0
  155. package/dist/services/setup/setup-service.d.ts +10 -8
  156. package/dist/services/setup/setup-service.d.ts.map +1 -0
  157. package/dist/services/setup/targets/agents-md.d.ts +12 -0
  158. package/dist/services/setup/targets/agents-md.d.ts.map +1 -0
  159. package/dist/services/setup/targets/cli-config.d.ts +12 -0
  160. package/dist/services/setup/targets/cli-config.d.ts.map +1 -0
  161. package/dist/services/setup/targets/cursor-rules.d.ts +10 -0
  162. package/dist/services/setup/targets/cursor-rules.d.ts.map +1 -0
  163. package/dist/services/setup/targets/index.d.ts +10 -0
  164. package/dist/services/setup/targets/index.d.ts.map +1 -0
  165. package/dist/services/setup/targets/mcp-claude.d.ts +11 -0
  166. package/dist/services/setup/targets/mcp-claude.d.ts.map +1 -0
  167. package/dist/services/setup/targets/mcp-cursor.d.ts +10 -0
  168. package/dist/services/setup/targets/mcp-cursor.d.ts.map +1 -0
  169. package/dist/services/setup/targets/vscode-settings.d.ts +13 -0
  170. package/dist/services/setup/targets/vscode-settings.d.ts.map +1 -0
  171. package/dist/services/setup/types.d.ts +51 -53
  172. package/dist/services/setup/types.d.ts.map +1 -0
  173. package/dist/services/sync.d.ts +37 -35
  174. package/dist/services/sync.d.ts.map +1 -0
  175. package/dist/services/test.d.ts +15 -13
  176. package/dist/services/test.d.ts.map +1 -0
  177. package/dist/services/validate-implementation.d.ts +30 -28
  178. package/dist/services/validate-implementation.d.ts.map +1 -0
  179. package/dist/services/validate.d.ts +23 -24
  180. package/dist/services/validate.d.ts.map +1 -0
  181. package/dist/services/verification-cache/adapters/filesystem.d.ts +40 -38
  182. package/dist/services/verification-cache/adapters/filesystem.d.ts.map +1 -0
  183. package/dist/services/verification-cache/adapters/in-memory.d.ts +21 -19
  184. package/dist/services/verification-cache/adapters/in-memory.d.ts.map +1 -0
  185. package/dist/services/verification-cache/adapters/index.d.ts +7 -0
  186. package/dist/services/verification-cache/adapters/index.d.ts.map +1 -0
  187. package/dist/services/verification-cache/adapters/workspace-state.d.ts +39 -37
  188. package/dist/services/verification-cache/adapters/workspace-state.d.ts.map +1 -0
  189. package/dist/services/verification-cache/cache-service.d.ts +55 -53
  190. package/dist/services/verification-cache/cache-service.d.ts.map +1 -0
  191. package/dist/services/verification-cache/index.d.ts +7 -0
  192. package/dist/services/verification-cache/index.d.ts.map +1 -0
  193. package/dist/services/verification-cache/types.d.ts +84 -85
  194. package/dist/services/verification-cache/types.d.ts.map +1 -0
  195. package/dist/services/verify/ai-verifier.d.ts +13 -11
  196. package/dist/services/verify/ai-verifier.d.ts.map +1 -0
  197. package/dist/services/verify/behavior-verifier.d.ts +10 -8
  198. package/dist/services/verify/behavior-verifier.d.ts.map +1 -0
  199. package/dist/services/verify/index.d.ts +18 -0
  200. package/dist/services/verify/index.d.ts.map +1 -0
  201. package/dist/services/verify/structure-verifier.d.ts +12 -8
  202. package/dist/services/verify/structure-verifier.d.ts.map +1 -0
  203. package/dist/services/verify/types.d.ts +114 -115
  204. package/dist/services/verify/types.d.ts.map +1 -0
  205. package/dist/services/verify/verify-service.d.ts +51 -49
  206. package/dist/services/verify/verify-service.d.ts.map +1 -0
  207. package/dist/services/watch.d.ts +22 -21
  208. package/dist/services/watch.d.ts.map +1 -0
  209. package/dist/services/workspace-info.d.ts +40 -37
  210. package/dist/services/workspace-info.d.ts.map +1 -0
  211. package/dist/templates/app-config.template.d.ts +3 -6
  212. package/dist/templates/app-config.template.d.ts.map +1 -0
  213. package/dist/templates/data-view.template.d.ts +3 -6
  214. package/dist/templates/data-view.template.d.ts.map +1 -0
  215. package/dist/templates/event.template.d.ts +3 -7
  216. package/dist/templates/event.template.d.ts.map +1 -0
  217. package/dist/templates/experiment.template.d.ts +3 -6
  218. package/dist/templates/experiment.template.d.ts.map +1 -0
  219. package/dist/templates/handler.template.d.ts +4 -6
  220. package/dist/templates/handler.template.d.ts.map +1 -0
  221. package/dist/templates/index.d.ts +17 -20
  222. package/dist/templates/index.d.ts.map +1 -0
  223. package/dist/templates/integration.template.d.ts +3 -6
  224. package/dist/templates/integration.template.d.ts.map +1 -0
  225. package/dist/templates/knowledge.template.d.ts +3 -6
  226. package/dist/templates/knowledge.template.d.ts.map +1 -0
  227. package/dist/templates/migration.template.d.ts +3 -6
  228. package/dist/templates/migration.template.d.ts.map +1 -0
  229. package/dist/templates/operation.template.d.ts +3 -7
  230. package/dist/templates/operation.template.d.ts.map +1 -0
  231. package/dist/templates/operation.template.test.d.ts +2 -0
  232. package/dist/templates/operation.template.test.d.ts.map +1 -0
  233. package/dist/templates/presentation.template.d.ts +3 -7
  234. package/dist/templates/presentation.template.d.ts.map +1 -0
  235. package/dist/templates/telemetry.template.d.ts +3 -6
  236. package/dist/templates/telemetry.template.d.ts.map +1 -0
  237. package/dist/templates/workflow-runner.template.d.ts +7 -13
  238. package/dist/templates/workflow-runner.template.d.ts.map +1 -0
  239. package/dist/templates/workflow.template.d.ts +3 -6
  240. package/dist/templates/workflow.template.d.ts.map +1 -0
  241. package/dist/types/config.d.ts +18 -20
  242. package/dist/types/config.d.ts.map +1 -0
  243. package/dist/types/index.d.ts +5 -0
  244. package/dist/types/index.d.ts.map +1 -0
  245. package/dist/types.d.ts +338 -311
  246. package/dist/types.d.ts.map +1 -0
  247. package/package.json +16 -15
  248. package/dist/_virtual/rolldown_runtime.js +0 -22
  249. package/dist/adapters/ai.js +0 -82
  250. package/dist/adapters/factory.js +0 -36
  251. package/dist/adapters/fs.js +0 -118
  252. package/dist/adapters/git.js +0 -54
  253. package/dist/adapters/index.js +0 -7
  254. package/dist/adapters/logger.js +0 -80
  255. package/dist/adapters/watcher.js +0 -69
  256. package/dist/adapters/workspace.js +0 -190
  257. package/dist/ai/agents/claude-code-agent.js +0 -181
  258. package/dist/ai/agents/cursor-agent.js +0 -437
  259. package/dist/ai/agents/index.js +0 -5
  260. package/dist/ai/agents/openai-codex-agent.js +0 -166
  261. package/dist/ai/agents/orchestrator.js +0 -142
  262. package/dist/ai/agents/simple-agent.js +0 -91
  263. package/dist/ai/client.js +0 -162
  264. package/dist/ai/index.js +0 -27
  265. package/dist/ai/prompts/code-generation.js +0 -142
  266. package/dist/ai/prompts/index.js +0 -12
  267. package/dist/ai/prompts/spec-creation.js +0 -110
  268. package/dist/ai/providers.js +0 -40
  269. package/dist/formatters/index.js +0 -18
  270. package/dist/formatters/json.js +0 -71
  271. package/dist/formatters/sarif.js +0 -163
  272. package/dist/formatters/text.js +0 -208
  273. package/dist/libs/ai-providers/dist/factory.js +0 -154
  274. package/dist/libs/ai-providers/dist/index.js +0 -4
  275. package/dist/libs/ai-providers/dist/legacy.js +0 -72
  276. package/dist/libs/ai-providers/dist/models.js +0 -287
  277. package/dist/libs/ai-providers/dist/validation.js +0 -1
  278. package/dist/libs/contracts/dist/capabilities/openbanking.js +0 -88
  279. package/dist/libs/contracts/dist/client/index.js +0 -5
  280. package/dist/libs/contracts/dist/client/react/feature-render.js +0 -2
  281. package/dist/libs/contracts/dist/client/react/form-render.js +0 -4
  282. package/dist/libs/contracts/dist/client/react/index.js +0 -4
  283. package/dist/libs/contracts/dist/contract-registry/index.js +0 -1
  284. package/dist/libs/contracts/dist/contract-registry/schemas.js +0 -60
  285. package/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +0 -16
  286. package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +0 -16
  287. package/dist/libs/contracts/dist/docs/index.js +0 -29
  288. package/dist/libs/contracts/dist/docs/presentations.js +0 -71
  289. package/dist/libs/contracts/dist/docs/registry.js +0 -44
  290. package/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -16
  291. package/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -16
  292. package/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -16
  293. package/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -16
  294. package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -16
  295. package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +0 -80
  296. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +0 -57
  297. package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +0 -16
  298. package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +0 -357
  299. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +0 -37
  300. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +0 -16
  301. package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +0 -20
  302. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +0 -48
  303. package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +0 -79
  304. package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +0 -84
  305. package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +0 -45
  306. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +0 -67
  307. package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +0 -40
  308. package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +0 -69
  309. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +0 -47
  310. package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +0 -62
  311. package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +0 -155
  312. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +0 -20
  313. package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +0 -101
  314. package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +0 -20
  315. package/dist/libs/contracts/dist/events.js +0 -8
  316. package/dist/libs/contracts/dist/experiments/evaluator.js +0 -1
  317. package/dist/libs/contracts/dist/index.js +0 -72
  318. package/dist/libs/contracts/dist/install.js +0 -2
  319. package/dist/libs/contracts/dist/integrations/contracts.js +0 -377
  320. package/dist/libs/contracts/dist/integrations/index.js +0 -18
  321. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +0 -228
  322. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +0 -159
  323. package/dist/libs/contracts/dist/integrations/openbanking/contracts/index.js +0 -3
  324. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +0 -210
  325. package/dist/libs/contracts/dist/integrations/openbanking/models.js +0 -242
  326. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +0 -13
  327. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +0 -52
  328. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +0 -75
  329. package/dist/libs/contracts/dist/integrations/providers/gmail.js +0 -87
  330. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +0 -66
  331. package/dist/libs/contracts/dist/integrations/providers/index.js +0 -11
  332. package/dist/libs/contracts/dist/integrations/providers/mistral.js +0 -68
  333. package/dist/libs/contracts/dist/integrations/providers/postmark.js +0 -68
  334. package/dist/libs/contracts/dist/integrations/providers/powens.js +0 -116
  335. package/dist/libs/contracts/dist/integrations/providers/qdrant.js +0 -73
  336. package/dist/libs/contracts/dist/integrations/providers/registry.js +0 -10
  337. package/dist/libs/contracts/dist/integrations/providers/stripe.js +0 -83
  338. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +0 -61
  339. package/dist/libs/contracts/dist/jsonschema.js +0 -24
  340. package/dist/libs/contracts/dist/knowledge/contracts.js +0 -306
  341. package/dist/libs/contracts/dist/knowledge/index.js +0 -7
  342. package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +0 -34
  343. package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +0 -34
  344. package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +0 -38
  345. package/dist/libs/contracts/dist/knowledge/spaces/index.js +0 -6
  346. package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +0 -34
  347. package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +0 -37
  348. package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +0 -34
  349. package/dist/libs/contracts/dist/llm/exporters.js +0 -352
  350. package/dist/libs/contracts/dist/llm/index.js +0 -2
  351. package/dist/libs/contracts/dist/llm/prompts.js +0 -211
  352. package/dist/libs/contracts/dist/onboarding-base.js +0 -196
  353. package/dist/libs/contracts/dist/openapi.js +0 -75
  354. package/dist/libs/contracts/dist/ownership.js +0 -21
  355. package/dist/libs/contracts/dist/presentations.js +0 -1
  356. package/dist/libs/contracts/dist/presentations.v2.js +0 -11
  357. package/dist/libs/contracts/dist/prompt.js +0 -1
  358. package/dist/libs/contracts/dist/promptRegistry.js +0 -1
  359. package/dist/libs/contracts/dist/regenerator/index.js +0 -2
  360. package/dist/libs/contracts/dist/regenerator/service.js +0 -92
  361. package/dist/libs/contracts/dist/regenerator/utils.js +0 -51
  362. package/dist/libs/contracts/dist/registry.js +0 -208
  363. package/dist/libs/contracts/dist/resources.js +0 -1
  364. package/dist/libs/contracts/dist/schema/dist/EnumType.js +0 -2
  365. package/dist/libs/contracts/dist/schema/dist/FieldType.js +0 -49
  366. package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
  367. package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +0 -34
  368. package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
  369. package/dist/libs/contracts/dist/schema/dist/entity/index.js +0 -2
  370. package/dist/libs/contracts/dist/schema/dist/entity/types.js +0 -1
  371. package/dist/libs/contracts/dist/schema/dist/index.js +0 -6
  372. package/dist/libs/contracts/dist/server/graphql-pothos.js +0 -6
  373. package/dist/libs/contracts/dist/server/index.js +0 -8
  374. package/dist/libs/contracts/dist/server/mcp/createMcpServer.js +0 -4
  375. package/dist/libs/contracts/dist/server/mcp/registerPresentations.js +0 -2
  376. package/dist/libs/contracts/dist/server/mcp/registerPrompts.js +0 -1
  377. package/dist/libs/contracts/dist/server/mcp/registerResources.js +0 -2
  378. package/dist/libs/contracts/dist/server/mcp/registerTools.js +0 -1
  379. package/dist/libs/contracts/dist/server/provider-mcp.js +0 -1
  380. package/dist/libs/contracts/dist/server/rest-elysia.js +0 -1
  381. package/dist/libs/contracts/dist/server/rest-express.js +0 -1
  382. package/dist/libs/contracts/dist/server/rest-generic.js +0 -1
  383. package/dist/libs/contracts/dist/server/rest-next-app.js +0 -1
  384. package/dist/libs/contracts/dist/server/rest-next-pages.js +0 -1
  385. package/dist/libs/contracts/dist/spec.js +0 -35
  386. package/dist/libs/contracts/dist/telemetry/index.js +0 -1
  387. package/dist/libs/contracts/dist/telemetry/tracker.js +0 -1
  388. package/dist/libs/contracts/dist/tests/index.js +0 -1
  389. package/dist/libs/contracts/dist/tests/runner.js +0 -150
  390. package/dist/libs/contracts/dist/workflow/index.js +0 -1
  391. package/dist/libs/contracts/dist/workflow/runner.js +0 -1
  392. package/dist/libs/contracts-transformers/dist/common/utils.js +0 -47
  393. package/dist/libs/contracts-transformers/dist/openapi/exporter.js +0 -1
  394. package/dist/libs/contracts-transformers/dist/openapi/importer.js +0 -255
  395. package/dist/libs/contracts-transformers/dist/openapi/index.js +0 -4
  396. package/dist/libs/contracts-transformers/dist/openapi/parser.js +0 -231
  397. package/dist/libs/contracts-transformers/dist/openapi/schema-converter.js +0 -201
  398. package/dist/modules/contractspec-workspace/dist/ai/code-generation.js +0 -137
  399. package/dist/modules/contractspec-workspace/dist/ai/spec-creation.js +0 -101
  400. package/dist/modules/contractspec-workspace/dist/analysis/deps/graph.js +0 -84
  401. package/dist/modules/contractspec-workspace/dist/analysis/deps/parse-imports.js +0 -30
  402. package/dist/modules/contractspec-workspace/dist/analysis/diff/semantic.js +0 -96
  403. package/dist/modules/contractspec-workspace/dist/analysis/feature-scan.js +0 -151
  404. package/dist/modules/contractspec-workspace/dist/analysis/spec-scan.js +0 -344
  405. package/dist/modules/contractspec-workspace/dist/analysis/validate/spec-structure.js +0 -122
  406. package/dist/modules/contractspec-workspace/dist/templates/app-config.js +0 -105
  407. package/dist/modules/contractspec-workspace/dist/templates/data-view.js +0 -68
  408. package/dist/modules/contractspec-workspace/dist/templates/event.js +0 -38
  409. package/dist/modules/contractspec-workspace/dist/templates/experiment.js +0 -87
  410. package/dist/modules/contractspec-workspace/dist/templates/handler.js +0 -95
  411. package/dist/modules/contractspec-workspace/dist/templates/integration-utils.js +0 -104
  412. package/dist/modules/contractspec-workspace/dist/templates/integration.js +0 -62
  413. package/dist/modules/contractspec-workspace/dist/templates/knowledge.js +0 -68
  414. package/dist/modules/contractspec-workspace/dist/templates/migration.js +0 -60
  415. package/dist/modules/contractspec-workspace/dist/templates/operation.js +0 -100
  416. package/dist/modules/contractspec-workspace/dist/templates/presentation.js +0 -78
  417. package/dist/modules/contractspec-workspace/dist/templates/telemetry.js +0 -89
  418. package/dist/modules/contractspec-workspace/dist/templates/utils.js +0 -38
  419. package/dist/modules/contractspec-workspace/dist/templates/workflow-runner.js +0 -48
  420. package/dist/modules/contractspec-workspace/dist/templates/workflow.js +0 -67
  421. package/dist/modules/contractspec-workspace/dist/types/generation-types.js +0 -20
  422. package/dist/services/agent-guide/adapters/claude-code.js +0 -144
  423. package/dist/services/agent-guide/adapters/cursor-cli.js +0 -135
  424. package/dist/services/agent-guide/adapters/generic-mcp.js +0 -159
  425. package/dist/services/agent-guide/adapters/index.js +0 -30
  426. package/dist/services/agent-guide/agent-guide-service.js +0 -148
  427. package/dist/services/agent-guide/index.js +0 -5
  428. package/dist/services/build.js +0 -140
  429. package/dist/services/ci-check/ci-check-service.js +0 -393
  430. package/dist/services/ci-check/index.js +0 -2
  431. package/dist/services/ci-check/types.js +0 -28
  432. package/dist/services/clean.js +0 -71
  433. package/dist/services/config.js +0 -76
  434. package/dist/services/deps.js +0 -62
  435. package/dist/services/diff.js +0 -33
  436. package/dist/services/doctor/checks/ai.js +0 -118
  437. package/dist/services/doctor/checks/cli.js +0 -146
  438. package/dist/services/doctor/checks/config.js +0 -170
  439. package/dist/services/doctor/checks/deps.js +0 -180
  440. package/dist/services/doctor/checks/index.js +0 -6
  441. package/dist/services/doctor/checks/mcp.js +0 -144
  442. package/dist/services/doctor/checks/workspace.js +0 -243
  443. package/dist/services/doctor/doctor-service.js +0 -115
  444. package/dist/services/doctor/index.js +0 -2
  445. package/dist/services/doctor/types.js +0 -26
  446. package/dist/services/implementation/discovery.js +0 -143
  447. package/dist/services/implementation/index.js +0 -2
  448. package/dist/services/implementation/resolver.js +0 -223
  449. package/dist/services/index.js +0 -53
  450. package/dist/services/integrity-diagram.js +0 -274
  451. package/dist/services/integrity.js +0 -272
  452. package/dist/services/list.js +0 -35
  453. package/dist/services/openapi/export-service.js +0 -51
  454. package/dist/services/openapi/import-service.js +0 -75
  455. package/dist/services/openapi/index.js +0 -4
  456. package/dist/services/openapi/sync-service.js +0 -121
  457. package/dist/services/openapi/validate-service.js +0 -130
  458. package/dist/services/regenerator.js +0 -23
  459. package/dist/services/registry.js +0 -73
  460. package/dist/services/setup/config-generators.js +0 -237
  461. package/dist/services/setup/file-merger.js +0 -60
  462. package/dist/services/setup/index.js +0 -4
  463. package/dist/services/setup/setup-service.js +0 -95
  464. package/dist/services/setup/targets/agents-md.js +0 -46
  465. package/dist/services/setup/targets/cli-config.js +0 -59
  466. package/dist/services/setup/targets/cursor-rules.js +0 -47
  467. package/dist/services/setup/targets/mcp-claude.js +0 -59
  468. package/dist/services/setup/targets/mcp-cursor.js +0 -58
  469. package/dist/services/setup/targets/vscode-settings.js +0 -62
  470. package/dist/services/setup/types.js +0 -26
  471. package/dist/services/sync.js +0 -62
  472. package/dist/services/test.js +0 -30
  473. package/dist/services/validate-implementation.js +0 -69
  474. package/dist/services/validate.js +0 -47
  475. package/dist/services/verification-cache/adapters/filesystem.js +0 -121
  476. package/dist/services/verification-cache/adapters/in-memory.js +0 -45
  477. package/dist/services/verification-cache/adapters/index.js +0 -3
  478. package/dist/services/verification-cache/adapters/workspace-state.js +0 -90
  479. package/dist/services/verification-cache/cache-service.js +0 -255
  480. package/dist/services/verification-cache/index.js +0 -6
  481. package/dist/services/verification-cache/types.js +0 -15
  482. package/dist/services/verify/ai-verifier.js +0 -403
  483. package/dist/services/verify/behavior-verifier.js +0 -185
  484. package/dist/services/verify/index.js +0 -4
  485. package/dist/services/verify/structure-verifier.js +0 -195
  486. package/dist/services/verify/verify-service.js +0 -203
  487. package/dist/services/watch.js +0 -31
  488. package/dist/services/workspace-info.js +0 -102
  489. package/dist/templates/app-config.template.js +0 -106
  490. package/dist/templates/data-view.template.js +0 -69
  491. package/dist/templates/event.template.js +0 -39
  492. package/dist/templates/experiment.template.js +0 -88
  493. package/dist/templates/handler.template.js +0 -99
  494. package/dist/templates/index.js +0 -36
  495. package/dist/templates/integration.template.js +0 -159
  496. package/dist/templates/knowledge.template.js +0 -74
  497. package/dist/templates/migration.template.js +0 -61
  498. package/dist/templates/operation.template.js +0 -104
  499. package/dist/templates/presentation.template.js +0 -79
  500. package/dist/templates/telemetry.template.js +0 -90
  501. package/dist/templates/workflow-runner.template.js +0 -49
  502. package/dist/templates/workflow.template.js +0 -68
@@ -1,144 +0,0 @@
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,243 +0,0 @@
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,115 +0,0 @@
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,2 +0,0 @@
1
- import { ALL_CHECK_CATEGORIES, CHECK_CATEGORY_LABELS } from "./types.js";
2
- import { formatCheckResult, formatDoctorSummary, runDoctor } from "./doctor-service.js";
@@ -1,26 +0,0 @@
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,143 +0,0 @@
1
- //#region src/services/implementation/discovery.ts
2
- /**
3
- * Patterns for detecting spec references in source code.
4
- */
5
- const SPEC_REFERENCE_PATTERNS = {
6
- namedImport: /import\s*\{[^}]*\b(\w+(?:Spec|Contract|Command|Query))\b[^}]*\}\s*from/g,
7
- defaultImport: /import\s+(\w+(?:Spec|Contract|Command|Query))\s+from/g,
8
- contractHandler: /ContractHandler\s*<\s*typeof\s+(\w+)\s*>/g,
9
- typeofSpec: /typeof\s+(\w+(?:Spec|Contract|Command|Query))\b/g,
10
- specAssignment: /(?:spec|contract)\s*[:=]\s*(\w+(?:Spec|Contract|Command|Query))\b/gi
11
- };
12
- /**
13
- * File patterns that indicate implementation types.
14
- */
15
- const IMPLEMENTATION_TYPE_PATTERNS = {
16
- ".handler.ts": "handler",
17
- ".handler.tsx": "handler",
18
- ".service.ts": "service",
19
- ".service.tsx": "service",
20
- ".test.ts": "test",
21
- ".test.tsx": "test",
22
- ".spec.ts": "test",
23
- ".spec.tsx": "test",
24
- ".component.tsx": "component",
25
- ".tsx": "component",
26
- ".form.tsx": "form",
27
- ".hook.ts": "hook",
28
- ".hook.tsx": "hook"
29
- };
30
- /**
31
- * Infer implementation type from file path.
32
- */
33
- function inferImplementationType(filePath) {
34
- const lowerPath = filePath.toLowerCase();
35
- for (const [pattern, type] of Object.entries(IMPLEMENTATION_TYPE_PATTERNS)) if (lowerPath.endsWith(pattern)) return type;
36
- if (lowerPath.includes("/handlers/")) return "handler";
37
- if (lowerPath.includes("/services/")) return "service";
38
- if (lowerPath.includes("/components/")) return "component";
39
- if (lowerPath.includes("/forms/")) return "form";
40
- if (lowerPath.includes("/hooks/")) return "hook";
41
- if (lowerPath.includes("/__tests__/")) return "test";
42
- return "other";
43
- }
44
- /**
45
- * Extract spec references from source code.
46
- */
47
- function extractSpecReferences(code, filePath) {
48
- const matches = [];
49
- const seenSpecs = /* @__PURE__ */ new Set();
50
- const addMatch = (specName, referenceType, lineNumber) => {
51
- const key = `${specName}:${referenceType}`;
52
- if (seenSpecs.has(key)) return;
53
- seenSpecs.add(key);
54
- matches.push({
55
- filePath,
56
- specName,
57
- referenceType,
58
- lineNumber,
59
- inferredType: inferImplementationType(filePath)
60
- });
61
- };
62
- const getLineNumber = (position) => {
63
- return code.substring(0, position).split("\n").length;
64
- };
65
- let match;
66
- const handlerPattern = new RegExp(SPEC_REFERENCE_PATTERNS.contractHandler);
67
- while ((match = handlerPattern.exec(code)) !== null) addMatch(match[1], "handler", getLineNumber(match.index));
68
- const typeofPattern = new RegExp(SPEC_REFERENCE_PATTERNS.typeofSpec);
69
- while ((match = typeofPattern.exec(code)) !== null) addMatch(match[1], "typeof", getLineNumber(match.index));
70
- const namedPattern = new RegExp(SPEC_REFERENCE_PATTERNS.namedImport);
71
- while ((match = namedPattern.exec(code)) !== null) {
72
- const specNames = match[0].match(/\b(\w+(?:Spec|Contract|Command|Query))\b/g);
73
- if (specNames) for (const name of specNames) addMatch(name, "import", getLineNumber(match.index));
74
- }
75
- const defaultPattern = new RegExp(SPEC_REFERENCE_PATTERNS.defaultImport);
76
- while ((match = defaultPattern.exec(code)) !== null) addMatch(match[1], "import", getLineNumber(match.index));
77
- const assignPattern = new RegExp(SPEC_REFERENCE_PATTERNS.specAssignment);
78
- while ((match = assignPattern.exec(code)) !== null) addMatch(match[1], "unknown", getLineNumber(match.index));
79
- return matches;
80
- }
81
- /**
82
- * Default glob patterns for implementation files.
83
- */
84
- const DEFAULT_INCLUDE_PATTERNS = ["**/*.ts", "**/*.tsx"];
85
- const DEFAULT_EXCLUDE_PATTERNS = [
86
- "**/node_modules/**",
87
- "**/dist/**",
88
- "**/.git/**",
89
- "**/*.d.ts",
90
- "**/*.contracts.ts",
91
- "**/*.spec.ts",
92
- "**/*.feature.ts",
93
- "**/*.event.ts",
94
- "**/*.presentation.ts"
95
- ];
96
- /**
97
- * Discover implementations that reference a specific spec.
98
- */
99
- async function discoverImplementationsForSpec(specName, adapters, options = {}) {
100
- const { fs } = adapters;
101
- const includePatterns = options.includePatterns ?? DEFAULT_INCLUDE_PATTERNS;
102
- const excludePatterns = options.excludePatterns ?? DEFAULT_EXCLUDE_PATTERNS;
103
- const allMatches = [];
104
- for (const pattern of includePatterns) {
105
- const files = await fs.glob({
106
- pattern,
107
- ignore: excludePatterns
108
- });
109
- for (const filePath of files) try {
110
- const matchingRefs = extractSpecReferences(await fs.readFile(filePath), filePath).filter((ref) => ref.specName === specName);
111
- allMatches.push(...matchingRefs);
112
- } catch {}
113
- }
114
- return allMatches;
115
- }
116
- /**
117
- * Discover all spec references in the workspace.
118
- * Returns a map of spec name to implementation references.
119
- */
120
- async function discoverAllImplementations(adapters, options = {}) {
121
- const { fs } = adapters;
122
- const includePatterns = options.includePatterns ?? DEFAULT_INCLUDE_PATTERNS;
123
- const excludePatterns = options.excludePatterns ?? DEFAULT_EXCLUDE_PATTERNS;
124
- const specToImplementations = /* @__PURE__ */ new Map();
125
- for (const pattern of includePatterns) {
126
- const files = await fs.glob({
127
- pattern,
128
- ignore: excludePatterns
129
- });
130
- for (const filePath of files) try {
131
- const references = extractSpecReferences(await fs.readFile(filePath), filePath);
132
- for (const ref of references) {
133
- const existing = specToImplementations.get(ref.specName) ?? [];
134
- existing.push(ref);
135
- specToImplementations.set(ref.specName, existing);
136
- }
137
- } catch {}
138
- }
139
- return specToImplementations;
140
- }
141
-
142
- //#endregion
143
- export { discoverAllImplementations, discoverImplementationsForSpec, extractSpecReferences, inferImplementationType };
@@ -1,2 +0,0 @@
1
- import { discoverAllImplementations, discoverImplementationsForSpec, extractSpecReferences, inferImplementationType } from "./discovery.js";
2
- import { getImplementationSummary, resolveAllImplementations, resolveImplementations } from "./resolver.js";