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

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 (510) 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 +4532 -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 +29 -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/quickstart/dependencies.d.ts +32 -0
  146. package/dist/services/quickstart/dependencies.d.ts.map +1 -0
  147. package/dist/services/quickstart/index.d.ts +10 -0
  148. package/dist/services/quickstart/index.d.ts.map +1 -0
  149. package/dist/services/quickstart/quickstart-service.d.ts +21 -0
  150. package/dist/services/quickstart/quickstart-service.d.ts.map +1 -0
  151. package/dist/services/quickstart/types.d.ts +78 -0
  152. package/dist/services/quickstart/types.d.ts.map +1 -0
  153. package/dist/services/regenerator.d.ts +18 -16
  154. package/dist/services/regenerator.d.ts.map +1 -0
  155. package/dist/services/registry.d.ts +25 -26
  156. package/dist/services/registry.d.ts.map +1 -0
  157. package/dist/services/setup/config-generators.d.ts +14 -13
  158. package/dist/services/setup/config-generators.d.ts.map +1 -0
  159. package/dist/services/setup/file-merger.d.ts +5 -7
  160. package/dist/services/setup/file-merger.d.ts.map +1 -0
  161. package/dist/services/setup/index.d.ts +10 -0
  162. package/dist/services/setup/index.d.ts.map +1 -0
  163. package/dist/services/setup/setup-service.d.ts +10 -8
  164. package/dist/services/setup/setup-service.d.ts.map +1 -0
  165. package/dist/services/setup/targets/agents-md.d.ts +12 -0
  166. package/dist/services/setup/targets/agents-md.d.ts.map +1 -0
  167. package/dist/services/setup/targets/cli-config.d.ts +12 -0
  168. package/dist/services/setup/targets/cli-config.d.ts.map +1 -0
  169. package/dist/services/setup/targets/cursor-rules.d.ts +10 -0
  170. package/dist/services/setup/targets/cursor-rules.d.ts.map +1 -0
  171. package/dist/services/setup/targets/index.d.ts +10 -0
  172. package/dist/services/setup/targets/index.d.ts.map +1 -0
  173. package/dist/services/setup/targets/mcp-claude.d.ts +11 -0
  174. package/dist/services/setup/targets/mcp-claude.d.ts.map +1 -0
  175. package/dist/services/setup/targets/mcp-cursor.d.ts +10 -0
  176. package/dist/services/setup/targets/mcp-cursor.d.ts.map +1 -0
  177. package/dist/services/setup/targets/vscode-settings.d.ts +13 -0
  178. package/dist/services/setup/targets/vscode-settings.d.ts.map +1 -0
  179. package/dist/services/setup/types.d.ts +51 -53
  180. package/dist/services/setup/types.d.ts.map +1 -0
  181. package/dist/services/sync.d.ts +37 -35
  182. package/dist/services/sync.d.ts.map +1 -0
  183. package/dist/services/test.d.ts +15 -13
  184. package/dist/services/test.d.ts.map +1 -0
  185. package/dist/services/validate-implementation.d.ts +30 -28
  186. package/dist/services/validate-implementation.d.ts.map +1 -0
  187. package/dist/services/validate.d.ts +23 -24
  188. package/dist/services/validate.d.ts.map +1 -0
  189. package/dist/services/verification-cache/adapters/filesystem.d.ts +40 -38
  190. package/dist/services/verification-cache/adapters/filesystem.d.ts.map +1 -0
  191. package/dist/services/verification-cache/adapters/in-memory.d.ts +21 -19
  192. package/dist/services/verification-cache/adapters/in-memory.d.ts.map +1 -0
  193. package/dist/services/verification-cache/adapters/index.d.ts +7 -0
  194. package/dist/services/verification-cache/adapters/index.d.ts.map +1 -0
  195. package/dist/services/verification-cache/adapters/workspace-state.d.ts +39 -37
  196. package/dist/services/verification-cache/adapters/workspace-state.d.ts.map +1 -0
  197. package/dist/services/verification-cache/cache-service.d.ts +55 -53
  198. package/dist/services/verification-cache/cache-service.d.ts.map +1 -0
  199. package/dist/services/verification-cache/index.d.ts +7 -0
  200. package/dist/services/verification-cache/index.d.ts.map +1 -0
  201. package/dist/services/verification-cache/types.d.ts +84 -85
  202. package/dist/services/verification-cache/types.d.ts.map +1 -0
  203. package/dist/services/verify/ai-verifier.d.ts +13 -11
  204. package/dist/services/verify/ai-verifier.d.ts.map +1 -0
  205. package/dist/services/verify/behavior-verifier.d.ts +10 -8
  206. package/dist/services/verify/behavior-verifier.d.ts.map +1 -0
  207. package/dist/services/verify/index.d.ts +18 -0
  208. package/dist/services/verify/index.d.ts.map +1 -0
  209. package/dist/services/verify/structure-verifier.d.ts +12 -8
  210. package/dist/services/verify/structure-verifier.d.ts.map +1 -0
  211. package/dist/services/verify/types.d.ts +114 -115
  212. package/dist/services/verify/types.d.ts.map +1 -0
  213. package/dist/services/verify/verify-service.d.ts +51 -49
  214. package/dist/services/verify/verify-service.d.ts.map +1 -0
  215. package/dist/services/watch.d.ts +22 -21
  216. package/dist/services/watch.d.ts.map +1 -0
  217. package/dist/services/workspace-info.d.ts +40 -37
  218. package/dist/services/workspace-info.d.ts.map +1 -0
  219. package/dist/templates/app-config.template.d.ts +3 -6
  220. package/dist/templates/app-config.template.d.ts.map +1 -0
  221. package/dist/templates/data-view.template.d.ts +3 -6
  222. package/dist/templates/data-view.template.d.ts.map +1 -0
  223. package/dist/templates/event.template.d.ts +3 -7
  224. package/dist/templates/event.template.d.ts.map +1 -0
  225. package/dist/templates/experiment.template.d.ts +3 -6
  226. package/dist/templates/experiment.template.d.ts.map +1 -0
  227. package/dist/templates/handler.template.d.ts +4 -6
  228. package/dist/templates/handler.template.d.ts.map +1 -0
  229. package/dist/templates/index.d.ts +17 -20
  230. package/dist/templates/index.d.ts.map +1 -0
  231. package/dist/templates/integration.template.d.ts +3 -6
  232. package/dist/templates/integration.template.d.ts.map +1 -0
  233. package/dist/templates/knowledge.template.d.ts +3 -6
  234. package/dist/templates/knowledge.template.d.ts.map +1 -0
  235. package/dist/templates/migration.template.d.ts +3 -6
  236. package/dist/templates/migration.template.d.ts.map +1 -0
  237. package/dist/templates/operation.template.d.ts +3 -7
  238. package/dist/templates/operation.template.d.ts.map +1 -0
  239. package/dist/templates/operation.template.test.d.ts +2 -0
  240. package/dist/templates/operation.template.test.d.ts.map +1 -0
  241. package/dist/templates/presentation.template.d.ts +3 -7
  242. package/dist/templates/presentation.template.d.ts.map +1 -0
  243. package/dist/templates/telemetry.template.d.ts +3 -6
  244. package/dist/templates/telemetry.template.d.ts.map +1 -0
  245. package/dist/templates/workflow-runner.template.d.ts +7 -13
  246. package/dist/templates/workflow-runner.template.d.ts.map +1 -0
  247. package/dist/templates/workflow.template.d.ts +3 -6
  248. package/dist/templates/workflow.template.d.ts.map +1 -0
  249. package/dist/types/config.d.ts +18 -20
  250. package/dist/types/config.d.ts.map +1 -0
  251. package/dist/types/index.d.ts +5 -0
  252. package/dist/types/index.d.ts.map +1 -0
  253. package/dist/types.d.ts +338 -311
  254. package/dist/types.d.ts.map +1 -0
  255. package/package.json +22 -15
  256. package/dist/_virtual/rolldown_runtime.js +0 -22
  257. package/dist/adapters/ai.js +0 -82
  258. package/dist/adapters/factory.js +0 -36
  259. package/dist/adapters/fs.js +0 -118
  260. package/dist/adapters/git.js +0 -54
  261. package/dist/adapters/index.js +0 -7
  262. package/dist/adapters/logger.js +0 -80
  263. package/dist/adapters/watcher.js +0 -69
  264. package/dist/adapters/workspace.js +0 -190
  265. package/dist/ai/agents/claude-code-agent.js +0 -181
  266. package/dist/ai/agents/cursor-agent.js +0 -437
  267. package/dist/ai/agents/index.js +0 -5
  268. package/dist/ai/agents/openai-codex-agent.js +0 -166
  269. package/dist/ai/agents/orchestrator.js +0 -142
  270. package/dist/ai/agents/simple-agent.js +0 -91
  271. package/dist/ai/client.js +0 -162
  272. package/dist/ai/index.js +0 -27
  273. package/dist/ai/prompts/code-generation.js +0 -142
  274. package/dist/ai/prompts/index.js +0 -12
  275. package/dist/ai/prompts/spec-creation.js +0 -110
  276. package/dist/ai/providers.js +0 -40
  277. package/dist/formatters/index.js +0 -18
  278. package/dist/formatters/json.js +0 -71
  279. package/dist/formatters/sarif.js +0 -163
  280. package/dist/formatters/text.js +0 -208
  281. package/dist/libs/ai-providers/dist/factory.js +0 -154
  282. package/dist/libs/ai-providers/dist/index.js +0 -4
  283. package/dist/libs/ai-providers/dist/legacy.js +0 -72
  284. package/dist/libs/ai-providers/dist/models.js +0 -287
  285. package/dist/libs/ai-providers/dist/validation.js +0 -1
  286. package/dist/libs/contracts/dist/capabilities/openbanking.js +0 -88
  287. package/dist/libs/contracts/dist/client/index.js +0 -5
  288. package/dist/libs/contracts/dist/client/react/feature-render.js +0 -2
  289. package/dist/libs/contracts/dist/client/react/form-render.js +0 -4
  290. package/dist/libs/contracts/dist/client/react/index.js +0 -4
  291. package/dist/libs/contracts/dist/contract-registry/index.js +0 -1
  292. package/dist/libs/contracts/dist/contract-registry/schemas.js +0 -60
  293. package/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +0 -16
  294. package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +0 -16
  295. package/dist/libs/contracts/dist/docs/index.js +0 -29
  296. package/dist/libs/contracts/dist/docs/presentations.js +0 -71
  297. package/dist/libs/contracts/dist/docs/registry.js +0 -44
  298. package/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -16
  299. package/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -16
  300. package/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -16
  301. package/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -16
  302. package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -16
  303. package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +0 -80
  304. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +0 -57
  305. package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +0 -16
  306. package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +0 -357
  307. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +0 -37
  308. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +0 -16
  309. package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +0 -20
  310. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +0 -48
  311. package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +0 -79
  312. package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +0 -84
  313. package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +0 -45
  314. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +0 -67
  315. package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +0 -40
  316. package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +0 -69
  317. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +0 -47
  318. package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +0 -62
  319. package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +0 -155
  320. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +0 -20
  321. package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +0 -101
  322. package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +0 -20
  323. package/dist/libs/contracts/dist/events.js +0 -8
  324. package/dist/libs/contracts/dist/experiments/evaluator.js +0 -1
  325. package/dist/libs/contracts/dist/index.js +0 -72
  326. package/dist/libs/contracts/dist/install.js +0 -2
  327. package/dist/libs/contracts/dist/integrations/contracts.js +0 -377
  328. package/dist/libs/contracts/dist/integrations/index.js +0 -18
  329. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +0 -228
  330. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +0 -159
  331. package/dist/libs/contracts/dist/integrations/openbanking/contracts/index.js +0 -3
  332. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +0 -210
  333. package/dist/libs/contracts/dist/integrations/openbanking/models.js +0 -242
  334. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +0 -13
  335. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +0 -52
  336. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +0 -75
  337. package/dist/libs/contracts/dist/integrations/providers/gmail.js +0 -87
  338. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +0 -66
  339. package/dist/libs/contracts/dist/integrations/providers/index.js +0 -11
  340. package/dist/libs/contracts/dist/integrations/providers/mistral.js +0 -68
  341. package/dist/libs/contracts/dist/integrations/providers/postmark.js +0 -68
  342. package/dist/libs/contracts/dist/integrations/providers/powens.js +0 -116
  343. package/dist/libs/contracts/dist/integrations/providers/qdrant.js +0 -73
  344. package/dist/libs/contracts/dist/integrations/providers/registry.js +0 -10
  345. package/dist/libs/contracts/dist/integrations/providers/stripe.js +0 -83
  346. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +0 -61
  347. package/dist/libs/contracts/dist/jsonschema.js +0 -24
  348. package/dist/libs/contracts/dist/knowledge/contracts.js +0 -306
  349. package/dist/libs/contracts/dist/knowledge/index.js +0 -7
  350. package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +0 -34
  351. package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +0 -34
  352. package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +0 -38
  353. package/dist/libs/contracts/dist/knowledge/spaces/index.js +0 -6
  354. package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +0 -34
  355. package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +0 -37
  356. package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +0 -34
  357. package/dist/libs/contracts/dist/llm/exporters.js +0 -352
  358. package/dist/libs/contracts/dist/llm/index.js +0 -2
  359. package/dist/libs/contracts/dist/llm/prompts.js +0 -211
  360. package/dist/libs/contracts/dist/onboarding-base.js +0 -196
  361. package/dist/libs/contracts/dist/openapi.js +0 -75
  362. package/dist/libs/contracts/dist/ownership.js +0 -21
  363. package/dist/libs/contracts/dist/presentations.js +0 -1
  364. package/dist/libs/contracts/dist/presentations.v2.js +0 -11
  365. package/dist/libs/contracts/dist/prompt.js +0 -1
  366. package/dist/libs/contracts/dist/promptRegistry.js +0 -1
  367. package/dist/libs/contracts/dist/regenerator/index.js +0 -2
  368. package/dist/libs/contracts/dist/regenerator/service.js +0 -92
  369. package/dist/libs/contracts/dist/regenerator/utils.js +0 -51
  370. package/dist/libs/contracts/dist/registry.js +0 -208
  371. package/dist/libs/contracts/dist/resources.js +0 -1
  372. package/dist/libs/contracts/dist/schema/dist/EnumType.js +0 -2
  373. package/dist/libs/contracts/dist/schema/dist/FieldType.js +0 -49
  374. package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
  375. package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +0 -34
  376. package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
  377. package/dist/libs/contracts/dist/schema/dist/entity/index.js +0 -2
  378. package/dist/libs/contracts/dist/schema/dist/entity/types.js +0 -1
  379. package/dist/libs/contracts/dist/schema/dist/index.js +0 -6
  380. package/dist/libs/contracts/dist/server/graphql-pothos.js +0 -6
  381. package/dist/libs/contracts/dist/server/index.js +0 -8
  382. package/dist/libs/contracts/dist/server/mcp/createMcpServer.js +0 -4
  383. package/dist/libs/contracts/dist/server/mcp/registerPresentations.js +0 -2
  384. package/dist/libs/contracts/dist/server/mcp/registerPrompts.js +0 -1
  385. package/dist/libs/contracts/dist/server/mcp/registerResources.js +0 -2
  386. package/dist/libs/contracts/dist/server/mcp/registerTools.js +0 -1
  387. package/dist/libs/contracts/dist/server/provider-mcp.js +0 -1
  388. package/dist/libs/contracts/dist/server/rest-elysia.js +0 -1
  389. package/dist/libs/contracts/dist/server/rest-express.js +0 -1
  390. package/dist/libs/contracts/dist/server/rest-generic.js +0 -1
  391. package/dist/libs/contracts/dist/server/rest-next-app.js +0 -1
  392. package/dist/libs/contracts/dist/server/rest-next-pages.js +0 -1
  393. package/dist/libs/contracts/dist/spec.js +0 -35
  394. package/dist/libs/contracts/dist/telemetry/index.js +0 -1
  395. package/dist/libs/contracts/dist/telemetry/tracker.js +0 -1
  396. package/dist/libs/contracts/dist/tests/index.js +0 -1
  397. package/dist/libs/contracts/dist/tests/runner.js +0 -150
  398. package/dist/libs/contracts/dist/workflow/index.js +0 -1
  399. package/dist/libs/contracts/dist/workflow/runner.js +0 -1
  400. package/dist/libs/contracts-transformers/dist/common/utils.js +0 -47
  401. package/dist/libs/contracts-transformers/dist/openapi/exporter.js +0 -1
  402. package/dist/libs/contracts-transformers/dist/openapi/importer.js +0 -255
  403. package/dist/libs/contracts-transformers/dist/openapi/index.js +0 -4
  404. package/dist/libs/contracts-transformers/dist/openapi/parser.js +0 -231
  405. package/dist/libs/contracts-transformers/dist/openapi/schema-converter.js +0 -201
  406. package/dist/modules/contractspec-workspace/dist/ai/code-generation.js +0 -137
  407. package/dist/modules/contractspec-workspace/dist/ai/spec-creation.js +0 -101
  408. package/dist/modules/contractspec-workspace/dist/analysis/deps/graph.js +0 -84
  409. package/dist/modules/contractspec-workspace/dist/analysis/deps/parse-imports.js +0 -30
  410. package/dist/modules/contractspec-workspace/dist/analysis/diff/semantic.js +0 -96
  411. package/dist/modules/contractspec-workspace/dist/analysis/feature-scan.js +0 -151
  412. package/dist/modules/contractspec-workspace/dist/analysis/spec-scan.js +0 -344
  413. package/dist/modules/contractspec-workspace/dist/analysis/validate/spec-structure.js +0 -122
  414. package/dist/modules/contractspec-workspace/dist/templates/app-config.js +0 -105
  415. package/dist/modules/contractspec-workspace/dist/templates/data-view.js +0 -68
  416. package/dist/modules/contractspec-workspace/dist/templates/event.js +0 -38
  417. package/dist/modules/contractspec-workspace/dist/templates/experiment.js +0 -87
  418. package/dist/modules/contractspec-workspace/dist/templates/handler.js +0 -95
  419. package/dist/modules/contractspec-workspace/dist/templates/integration-utils.js +0 -104
  420. package/dist/modules/contractspec-workspace/dist/templates/integration.js +0 -62
  421. package/dist/modules/contractspec-workspace/dist/templates/knowledge.js +0 -68
  422. package/dist/modules/contractspec-workspace/dist/templates/migration.js +0 -60
  423. package/dist/modules/contractspec-workspace/dist/templates/operation.js +0 -100
  424. package/dist/modules/contractspec-workspace/dist/templates/presentation.js +0 -78
  425. package/dist/modules/contractspec-workspace/dist/templates/telemetry.js +0 -89
  426. package/dist/modules/contractspec-workspace/dist/templates/utils.js +0 -38
  427. package/dist/modules/contractspec-workspace/dist/templates/workflow-runner.js +0 -48
  428. package/dist/modules/contractspec-workspace/dist/templates/workflow.js +0 -67
  429. package/dist/modules/contractspec-workspace/dist/types/generation-types.js +0 -20
  430. package/dist/services/agent-guide/adapters/claude-code.js +0 -144
  431. package/dist/services/agent-guide/adapters/cursor-cli.js +0 -135
  432. package/dist/services/agent-guide/adapters/generic-mcp.js +0 -159
  433. package/dist/services/agent-guide/adapters/index.js +0 -30
  434. package/dist/services/agent-guide/agent-guide-service.js +0 -148
  435. package/dist/services/agent-guide/index.js +0 -5
  436. package/dist/services/build.js +0 -140
  437. package/dist/services/ci-check/ci-check-service.js +0 -393
  438. package/dist/services/ci-check/index.js +0 -2
  439. package/dist/services/ci-check/types.js +0 -28
  440. package/dist/services/clean.js +0 -71
  441. package/dist/services/config.js +0 -76
  442. package/dist/services/deps.js +0 -62
  443. package/dist/services/diff.js +0 -33
  444. package/dist/services/doctor/checks/ai.js +0 -118
  445. package/dist/services/doctor/checks/cli.js +0 -146
  446. package/dist/services/doctor/checks/config.js +0 -170
  447. package/dist/services/doctor/checks/deps.js +0 -180
  448. package/dist/services/doctor/checks/index.js +0 -6
  449. package/dist/services/doctor/checks/mcp.js +0 -144
  450. package/dist/services/doctor/checks/workspace.js +0 -243
  451. package/dist/services/doctor/doctor-service.js +0 -115
  452. package/dist/services/doctor/index.js +0 -2
  453. package/dist/services/doctor/types.js +0 -26
  454. package/dist/services/implementation/discovery.js +0 -143
  455. package/dist/services/implementation/index.js +0 -2
  456. package/dist/services/implementation/resolver.js +0 -223
  457. package/dist/services/index.js +0 -53
  458. package/dist/services/integrity-diagram.js +0 -274
  459. package/dist/services/integrity.js +0 -272
  460. package/dist/services/list.js +0 -35
  461. package/dist/services/openapi/export-service.js +0 -51
  462. package/dist/services/openapi/import-service.js +0 -75
  463. package/dist/services/openapi/index.js +0 -4
  464. package/dist/services/openapi/sync-service.js +0 -121
  465. package/dist/services/openapi/validate-service.js +0 -130
  466. package/dist/services/regenerator.js +0 -23
  467. package/dist/services/registry.js +0 -73
  468. package/dist/services/setup/config-generators.js +0 -237
  469. package/dist/services/setup/file-merger.js +0 -60
  470. package/dist/services/setup/index.js +0 -4
  471. package/dist/services/setup/setup-service.js +0 -95
  472. package/dist/services/setup/targets/agents-md.js +0 -46
  473. package/dist/services/setup/targets/cli-config.js +0 -59
  474. package/dist/services/setup/targets/cursor-rules.js +0 -47
  475. package/dist/services/setup/targets/mcp-claude.js +0 -59
  476. package/dist/services/setup/targets/mcp-cursor.js +0 -58
  477. package/dist/services/setup/targets/vscode-settings.js +0 -62
  478. package/dist/services/setup/types.js +0 -26
  479. package/dist/services/sync.js +0 -62
  480. package/dist/services/test.js +0 -30
  481. package/dist/services/validate-implementation.js +0 -69
  482. package/dist/services/validate.js +0 -47
  483. package/dist/services/verification-cache/adapters/filesystem.js +0 -121
  484. package/dist/services/verification-cache/adapters/in-memory.js +0 -45
  485. package/dist/services/verification-cache/adapters/index.js +0 -3
  486. package/dist/services/verification-cache/adapters/workspace-state.js +0 -90
  487. package/dist/services/verification-cache/cache-service.js +0 -255
  488. package/dist/services/verification-cache/index.js +0 -6
  489. package/dist/services/verification-cache/types.js +0 -15
  490. package/dist/services/verify/ai-verifier.js +0 -403
  491. package/dist/services/verify/behavior-verifier.js +0 -185
  492. package/dist/services/verify/index.js +0 -4
  493. package/dist/services/verify/structure-verifier.js +0 -195
  494. package/dist/services/verify/verify-service.js +0 -203
  495. package/dist/services/watch.js +0 -31
  496. package/dist/services/workspace-info.js +0 -102
  497. package/dist/templates/app-config.template.js +0 -106
  498. package/dist/templates/data-view.template.js +0 -69
  499. package/dist/templates/event.template.js +0 -39
  500. package/dist/templates/experiment.template.js +0 -88
  501. package/dist/templates/handler.template.js +0 -99
  502. package/dist/templates/index.js +0 -36
  503. package/dist/templates/integration.template.js +0 -159
  504. package/dist/templates/knowledge.template.js +0 -74
  505. package/dist/templates/migration.template.js +0 -61
  506. package/dist/templates/operation.template.js +0 -104
  507. package/dist/templates/presentation.template.js +0 -79
  508. package/dist/templates/telemetry.template.js +0 -90
  509. package/dist/templates/workflow-runner.template.js +0 -49
  510. package/dist/templates/workflow.template.js +0 -68
@@ -1,23 +0,0 @@
1
- import { RegeneratorService } from "../libs/contracts/dist/regenerator/service.js";
2
- import "../libs/contracts/dist/regenerator/index.js";
3
-
4
- //#region src/services/regenerator.ts
5
- /**
6
- * Regenerator service.
7
- *
8
- * Thin wrapper around `@lssm/lib.contracts/regenerator` for reuse across CLI/VSCode/web.
9
- * This service does not perform module loading; callers provide resolved contexts/rules/sink.
10
- */
11
- function createRegeneratorService(options) {
12
- return new RegeneratorService({
13
- contexts: options.contexts,
14
- adapters: options.adapters ?? {},
15
- rules: options.rules,
16
- sink: options.sink,
17
- pollIntervalMs: options.pollIntervalMs,
18
- batchDurationMs: options.batchDurationMs
19
- });
20
- }
21
-
22
- //#endregion
23
- export { createRegeneratorService };
@@ -1,73 +0,0 @@
1
- //#region src/services/registry.ts
2
- /**
3
- * Registry client for interacting with ContractSpec registry.
4
- */
5
- var RegistryClient = class {
6
- registryUrl;
7
- constructor(opts) {
8
- this.registryUrl = opts.registryUrl.replace(/\/+$/, "");
9
- }
10
- /**
11
- * Make GET request to registry.
12
- */
13
- async getJson(path) {
14
- const url = `${this.registryUrl}${path.startsWith("/") ? "" : "/"}${path}`;
15
- let res;
16
- try {
17
- res = await fetch(url, {
18
- method: "GET",
19
- headers: { Accept: "application/json" }
20
- });
21
- } catch (error) {
22
- throw new Error(`Registry request failed: ${url} (${error instanceof Error ? error.message : String(error)})`);
23
- }
24
- if (!res.ok) {
25
- const text = await res.text().catch(() => "");
26
- throw new Error(`Registry request failed: ${res.status} ${res.statusText} ${text}`);
27
- }
28
- return await res.json();
29
- }
30
- };
31
- /**
32
- * Resolve registry URL from options or environment.
33
- */
34
- function resolveRegistryUrl(cliRegistryUrl) {
35
- return cliRegistryUrl || process.env.CONTRACTSPEC_REGISTRY_URL || "http://localhost:8090";
36
- }
37
- /**
38
- * Add spec to registry.
39
- */
40
- async function addToRegistry(specPath, options, adapters) {
41
- const { logger } = adapters;
42
- const registryUrl = resolveRegistryUrl(options.registryUrl);
43
- logger.info(`Adding spec to registry: ${specPath}`, { registryUrl });
44
- await new RegistryClient({ registryUrl }).getJson(`/specs/add?path=${encodeURIComponent(specPath)}`);
45
- logger.info("Spec added to registry successfully");
46
- }
47
- /**
48
- * List specs from registry.
49
- */
50
- async function listFromRegistry(options, adapters) {
51
- const { logger } = adapters;
52
- const registryUrl = resolveRegistryUrl(options.registryUrl);
53
- logger.info("Listing specs from registry", { registryUrl });
54
- const client = new RegistryClient({ registryUrl });
55
- const filter = options.filter ? `?filter=${encodeURIComponent(options.filter)}` : "";
56
- const specs = await client.getJson(`/specs${filter}`);
57
- logger.info(`Found ${specs.length} specs`);
58
- return specs;
59
- }
60
- /**
61
- * Search registry for specs.
62
- */
63
- async function searchRegistry(query, options, adapters) {
64
- const { logger } = adapters;
65
- const registryUrl = resolveRegistryUrl(options.registryUrl);
66
- logger.info(`Searching registry: ${query}`, { registryUrl });
67
- const results = await new RegistryClient({ registryUrl }).getJson(`/specs/search?q=${encodeURIComponent(query)}`);
68
- logger.info(`Found ${results.length} results`);
69
- return results;
70
- }
71
-
72
- //#endregion
73
- export { RegistryClient, addToRegistry, listFromRegistry, resolveRegistryUrl, searchRegistry };
@@ -1,237 +0,0 @@
1
- //#region src/services/setup/config-generators.ts
2
- /**
3
- * Generate .contractsrc.json content.
4
- *
5
- * Adapts defaults based on monorepo scope.
6
- */
7
- function generateContractsrcConfig(options) {
8
- const isPackageLevel = options.isMonorepo && options.scope === "package";
9
- return {
10
- $schema: "https://contractspec.dev/schemas/contractsrc.json",
11
- aiProvider: "claude",
12
- aiModel: "claude-sonnet-4-20250514",
13
- agentMode: "claude-code",
14
- outputDir: "./src",
15
- conventions: {
16
- operations: "contracts/operations",
17
- events: "contracts/events",
18
- presentations: "contracts/presentations",
19
- forms: "contracts/forms",
20
- features: "contracts/features"
21
- },
22
- defaultOwners: options.defaultOwners ?? ["@team"],
23
- defaultTags: [],
24
- ...isPackageLevel && options.packageName ? { package: options.packageName } : {}
25
- };
26
- }
27
- /**
28
- * Generate .vscode/settings.json ContractSpec settings.
29
- */
30
- function generateVscodeSettings() {
31
- return {
32
- "contractspec.validation.enabled": true,
33
- "contractspec.validation.validateOnSave": true,
34
- "contractspec.validation.validateOnOpen": true,
35
- "contractspec.codeLens.enabled": true,
36
- "contractspec.diagnostics.showWarnings": true,
37
- "contractspec.diagnostics.showHints": true,
38
- "contractspec.integrity.enabled": true,
39
- "contractspec.integrity.checkOnSave": true
40
- };
41
- }
42
- /**
43
- * Generate .cursor/mcp.json content.
44
- */
45
- function generateCursorMcpConfig() {
46
- return { mcpServers: { "contractspec-local": {
47
- command: "bunx",
48
- args: ["contractspec-mcp"]
49
- } } };
50
- }
51
- /**
52
- * Generate Claude Desktop MCP config.
53
- * Returns the mcpServers section to merge into claude_desktop_config.json.
54
- */
55
- function generateClaudeMcpConfig() {
56
- return { mcpServers: { "contractspec-local": {
57
- command: "bunx",
58
- args: ["contractspec-mcp"]
59
- } } };
60
- }
61
- /**
62
- * Generate .cursor/rules/contractspec.mdc content.
63
- *
64
- * Adapts paths based on monorepo scope.
65
- */
66
- function generateCursorRules(options) {
67
- const projectName = options.projectName ?? "this project";
68
- const basePath = options.isMonorepo && options.scope === "package" && options.packageRoot ? `${options.packageRoot.split("/").slice(-2).join("/")}/src/contracts` : "src/contracts";
69
- return `# ContractSpec Development Rules
70
-
71
- This project uses ContractSpec for spec-first development. Follow these guidelines when working with AI agents.
72
-
73
- ## Spec-First Principle
74
-
75
- - **Always update contracts first** before changing implementation code.
76
- - Contracts are the source of truth for operations, events, and presentations.
77
- - Implementation code should be generated or derived from contracts.
78
- ${options.isMonorepo ? `\n## Monorepo Structure\n\nThis is a monorepo. Contracts may exist at:\n- Package level: \`packages/*/src/contracts/\`\n- Workspace level: \`src/contracts/\`\n\nCheck the appropriate level based on the feature scope.\n` : ""}
79
- ## Contract Locations
80
-
81
- Contracts are located in:
82
- - \`${basePath}/operations/\` - Command and query specs
83
- - \`${basePath}/events/\` - Event specs
84
- - \`${basePath}/presentations/\` - UI presentation specs
85
- - \`${basePath}/features/\` - Feature module specs
86
-
87
- ## When Making Changes
88
-
89
- 1. **Before coding**: Check if a contract exists for the feature.
90
- 2. **If contract exists**: Update the contract first, then regenerate code.
91
- 3. **If no contract**: Create a new contract using \`contractspec create\`.
92
- 4. **After changes**: Validate with \`contractspec validate\`.
93
-
94
- ## Key Commands
95
-
96
- - \`contractspec create\` - Scaffold new specs
97
- - \`contractspec validate\` - Validate specs
98
- - \`contractspec build\` - Generate implementation code
99
- - \`contractspec integrity\` - Check contract health
100
-
101
- ## Contract Structure
102
-
103
- Operations follow this pattern:
104
- \`\`\`typescript
105
- defineCommand({
106
- meta: { name: 'service.action', version: 1, ... },
107
- io: { input: InputSchema, output: OutputSchema },
108
- policy: { auth: 'user', ... },
109
- handler: async (args, ctx) => { ... }
110
- });
111
- \`\`\`
112
-
113
- ## Rules for ${projectName}
114
-
115
- - All API endpoints must have a corresponding operation contract.
116
- - Events must be declared in contracts before being emitted.
117
- - UI components should reference presentation contracts.
118
- - Feature flags should be defined in feature modules.
119
- `;
120
- }
121
- /**
122
- * Generate AGENTS.md content.
123
- *
124
- * Adapts paths and instructions based on monorepo scope.
125
- */
126
- function generateAgentsMd(options) {
127
- const projectName = options.projectName ?? "This Project";
128
- const isPackageLevel = options.isMonorepo && options.scope === "package";
129
- const contractPath = "src/contracts/";
130
- return `# AI Agent Guide
131
-
132
- This repository uses **ContractSpec** for spec-first development. AI agents should follow these guidelines.
133
-
134
- ## Project: ${projectName}
135
-
136
- ## ContractSpec Overview
137
-
138
- ContractSpec is a deterministic, spec-first compiler that keeps AI-written software coherent, safe, and regenerable.
139
-
140
- ### Key Principles
141
-
142
- 1. **Contracts are the source of truth** - Always check/update contracts before modifying implementation.
143
- 2. **Safe regeneration** - Code can be regenerated from specs without breaking invariants.
144
- 3. **Multi-surface consistency** - API, events, and UI stay in sync via shared contracts.
145
- ${options.isMonorepo ? `
146
- ## Monorepo Structure
147
-
148
- This is a monorepo. Contracts can exist at multiple levels:
149
-
150
- | Level | Location | Use Case |
151
- |-------|----------|----------|
152
- | Package | \`packages/*/src/contracts/\` | Package-specific contracts |
153
- | Workspace | \`src/contracts/\` | Shared cross-package contracts |
154
-
155
- When adding a contract, consider:
156
- - Is this specific to one package? → Add at package level
157
- - Is this shared across packages? → Add at workspace level
158
-
159
- ### Current Scope
160
-
161
- ${isPackageLevel ? `You are working at the **package level**: \`${options.packageName ?? options.packageRoot}\`` : "You are working at the **workspace level**."}
162
- ` : ""}
163
- ## Working in This Repository
164
-
165
- ### Before Making Changes
166
-
167
- 1. Check for existing contracts in \`${contractPath}\`
168
- 2. If a contract exists, update it first
169
- 3. Regenerate implementation with \`contractspec build\`
170
- 4. Validate with \`contractspec validate\`
171
-
172
- ### Creating New Features
173
-
174
- 1. Create a feature spec: \`contractspec create --type=feature\`
175
- 2. Add operations: \`contractspec create --type=operation\`
176
- 3. Add events if needed: \`contractspec create --type=event\`
177
- 4. Build implementation: \`contractspec build\`
178
-
179
- ### Contract Locations
180
-
181
- | Type | Location |
182
- |------|----------|
183
- | Operations | \`${contractPath}operations/\` |
184
- | Events | \`${contractPath}events/\` |
185
- | Presentations | \`${contractPath}presentations/\` |
186
- | Features | \`${contractPath}features/\` |
187
-
188
- ## MCP Tools Available
189
-
190
- The ContractSpec MCP server provides these tools:
191
-
192
- - \`integrity.analyze\` - Check contract health
193
- - \`specs.list\` - List all specs
194
- - \`specs.validate\` - Validate a spec file
195
- - \`specs.create\` - Create new specs
196
- - \`deps.analyze\` - Analyze dependencies
197
-
198
- ## Common Tasks
199
-
200
- ### Add a new API endpoint
201
-
202
- \`\`\`bash
203
- contractspec create --type=operation --name=myService.newAction
204
- \`\`\`
205
-
206
- ### Add a new event
207
-
208
- \`\`\`bash
209
- contractspec create --type=event --name=entity.changed
210
- \`\`\`
211
-
212
- ### Check contract integrity
213
-
214
- \`\`\`bash
215
- contractspec integrity
216
- \`\`\`
217
-
218
- ## Nested AGENTS.md
219
-
220
- More specific instructions may exist in subdirectories. Check for \`AGENTS.md\` files in the relevant package or module.
221
- `;
222
- }
223
- /**
224
- * Get the file path for Claude Desktop config based on platform.
225
- */
226
- function getClaudeDesktopConfigPath() {
227
- const platform = process.platform;
228
- const homeDir = process.env["HOME"] ?? process.env["USERPROFILE"] ?? "";
229
- switch (platform) {
230
- case "darwin": return `${homeDir}/Library/Application Support/Claude/claude_desktop_config.json`;
231
- case "win32": return `${process.env["APPDATA"] ?? homeDir}/Claude/claude_desktop_config.json`;
232
- default: return `${homeDir}/.config/claude/claude_desktop_config.json`;
233
- }
234
- }
235
-
236
- //#endregion
237
- export { generateAgentsMd, generateClaudeMcpConfig, generateContractsrcConfig, generateCursorMcpConfig, generateCursorRules, generateVscodeSettings, getClaudeDesktopConfigPath };
@@ -1,60 +0,0 @@
1
- //#region src/services/setup/file-merger.ts
2
- /**
3
- * File merger utilities.
4
- *
5
- * Deep-merges JSON files without losing user settings.
6
- */
7
- /**
8
- * Deep merge two objects, preserving existing user values.
9
- * New keys are added, but existing keys are NOT overwritten.
10
- */
11
- function deepMergePreserve(existing, defaults) {
12
- const result = { ...existing };
13
- for (const key of Object.keys(defaults)) {
14
- const existingValue = existing[key];
15
- const defaultValue = defaults[key];
16
- if (existingValue === void 0) result[key] = defaultValue;
17
- else if (isPlainObject(existingValue) && isPlainObject(defaultValue)) result[key] = deepMergePreserve(existingValue, defaultValue);
18
- }
19
- return result;
20
- }
21
- /**
22
- * Deep merge two objects, with new values taking precedence.
23
- * Used when we want to update existing configs.
24
- */
25
- function deepMergeOverwrite(existing, updates) {
26
- const result = { ...existing };
27
- for (const key of Object.keys(updates)) {
28
- const existingValue = existing[key];
29
- const updateValue = updates[key];
30
- if (updateValue === void 0) continue;
31
- if (isPlainObject(existingValue) && isPlainObject(updateValue)) result[key] = deepMergeOverwrite(existingValue, updateValue);
32
- else result[key] = updateValue;
33
- }
34
- return result;
35
- }
36
- /**
37
- * Check if a value is a plain object (not array, null, or other).
38
- */
39
- function isPlainObject(value) {
40
- return typeof value === "object" && value !== null && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype;
41
- }
42
- /**
43
- * Parse JSON safely, returning null on failure.
44
- */
45
- function safeParseJson(content) {
46
- try {
47
- return JSON.parse(content);
48
- } catch {
49
- return null;
50
- }
51
- }
52
- /**
53
- * Format JSON with consistent indentation.
54
- */
55
- function formatJson(obj) {
56
- return JSON.stringify(obj, null, 2) + "\n";
57
- }
58
-
59
- //#endregion
60
- export { deepMergeOverwrite, deepMergePreserve, formatJson, safeParseJson };
@@ -1,4 +0,0 @@
1
- import { ALL_SETUP_TARGETS, SETUP_TARGET_LABELS } from "./types.js";
2
- import { generateAgentsMd, generateClaudeMcpConfig, generateContractsrcConfig, generateCursorMcpConfig, generateCursorRules, generateVscodeSettings, getClaudeDesktopConfigPath } from "./config-generators.js";
3
- import { deepMergeOverwrite, deepMergePreserve, formatJson, safeParseJson } from "./file-merger.js";
4
- import { runSetup } from "./setup-service.js";
@@ -1,95 +0,0 @@
1
- import { findPackageRoot, findWorkspaceRoot, getPackageName, isMonorepo } from "../../adapters/workspace.js";
2
- import { ALL_SETUP_TARGETS, SETUP_TARGET_LABELS } from "./types.js";
3
- import { setupCliConfig } from "./targets/cli-config.js";
4
- import { setupVscodeSettings } from "./targets/vscode-settings.js";
5
- import { setupMcpCursor } from "./targets/mcp-cursor.js";
6
- import { setupMcpClaude } from "./targets/mcp-claude.js";
7
- import { setupCursorRules } from "./targets/cursor-rules.js";
8
- import { setupAgentsMd } from "./targets/agents-md.js";
9
-
10
- //#region src/services/setup/setup-service.ts
11
- /**
12
- * Default prompt callbacks that always accept defaults.
13
- */
14
- const defaultPrompts = {
15
- confirm: async () => true,
16
- multiSelect: async (_msg, options) => options.filter((o) => o.selected !== false).map((o) => o.value),
17
- input: async (_msg, defaultValue) => defaultValue ?? ""
18
- };
19
- /**
20
- * Run the ContractSpec setup.
21
- */
22
- async function runSetup(fs, options, prompts = defaultPrompts) {
23
- const results = [];
24
- const targets = options.targets.length > 0 ? options.targets : ALL_SETUP_TARGETS;
25
- const workspaceRoot = options.workspaceRoot;
26
- const detectedWorkspaceRoot = findWorkspaceRoot(workspaceRoot);
27
- const packageRoot = options.packageRoot ?? findPackageRoot(workspaceRoot);
28
- const monorepo = options.isMonorepo ?? isMonorepo(detectedWorkspaceRoot);
29
- const packageName = options.packageName ?? (monorepo ? getPackageName(packageRoot) : void 0);
30
- let scope = options.scope ?? "workspace";
31
- const isDifferentRoots = packageRoot !== detectedWorkspaceRoot;
32
- if (monorepo && options.interactive && isDifferentRoots) scope = (await prompts.multiSelect(`Monorepo detected. Configure at which level?`, [{
33
- value: "package",
34
- label: `Package level (${packageName ?? packageRoot})`,
35
- selected: true
36
- }, {
37
- value: "workspace",
38
- label: `Workspace level (${detectedWorkspaceRoot})`
39
- }]))[0] ?? "package";
40
- let selectedTargets = targets;
41
- if (options.interactive) selectedTargets = await prompts.multiSelect("Select components to configure:", ALL_SETUP_TARGETS.map((t) => ({
42
- value: t,
43
- label: SETUP_TARGET_LABELS[t],
44
- selected: targets.includes(t)
45
- })));
46
- let projectName = options.projectName;
47
- if (options.interactive && !projectName) {
48
- const defaultName = scope === "package" && packageName ? packageName : workspaceRoot.split("/").pop() ?? "my-project";
49
- projectName = await prompts.input("Project name:", defaultName);
50
- }
51
- const setupOptions = {
52
- ...options,
53
- workspaceRoot: detectedWorkspaceRoot,
54
- packageRoot,
55
- isMonorepo: monorepo,
56
- scope,
57
- packageName,
58
- projectName,
59
- targets: selectedTargets
60
- };
61
- for (const target of selectedTargets) {
62
- const result = await setupTarget(fs, target, setupOptions, prompts);
63
- results.push(result);
64
- }
65
- const succeeded = results.filter((r) => r.action !== "error").length;
66
- const failed = results.filter((r) => r.action === "error").length;
67
- const scopeInfo = monorepo ? ` (${scope} level)` : "";
68
- return {
69
- success: failed === 0,
70
- files: results,
71
- summary: `Setup complete${scopeInfo}: ${succeeded} configured, ${failed} failed.`
72
- };
73
- }
74
- /**
75
- * Setup a single target.
76
- */
77
- async function setupTarget(fs, target, options, prompts) {
78
- switch (target) {
79
- case "cli-config": return setupCliConfig(fs, options, prompts);
80
- case "vscode-settings": return setupVscodeSettings(fs, options, prompts);
81
- case "mcp-cursor": return setupMcpCursor(fs, options, prompts);
82
- case "mcp-claude": return setupMcpClaude(fs, options, prompts);
83
- case "cursor-rules": return setupCursorRules(fs, options, prompts);
84
- case "agents-md": return setupAgentsMd(fs, options, prompts);
85
- default: return {
86
- target,
87
- filePath: "",
88
- action: "error",
89
- message: `Unknown target: ${target}`
90
- };
91
- }
92
- }
93
-
94
- //#endregion
95
- export { runSetup };
@@ -1,46 +0,0 @@
1
- import { generateAgentsMd } from "../config-generators.js";
2
-
3
- //#region src/services/setup/targets/agents-md.ts
4
- /**
5
- * Setup AGENTS.md
6
- *
7
- * In monorepo with package scope, creates AGENTS.md at package root.
8
- */
9
- async function setupAgentsMd(fs, options, prompts) {
10
- const targetRoot = options.isMonorepo && options.scope === "package" ? options.packageRoot ?? options.workspaceRoot : options.workspaceRoot;
11
- const filePath = fs.join(targetRoot, "AGENTS.md");
12
- try {
13
- const exists = await fs.exists(filePath);
14
- const content = generateAgentsMd(options);
15
- if (exists) if (options.interactive) {
16
- if (!await prompts.confirm(`${filePath} exists. Overwrite?`)) return {
17
- target: "agents-md",
18
- filePath,
19
- action: "skipped",
20
- message: "User kept existing AGENTS.md"
21
- };
22
- } else return {
23
- target: "agents-md",
24
- filePath,
25
- action: "skipped",
26
- message: "File already exists"
27
- };
28
- await fs.writeFile(filePath, content);
29
- return {
30
- target: "agents-md",
31
- filePath,
32
- action: exists ? "merged" : "created",
33
- message: exists ? "Updated AGENTS.md" : "Created AGENTS.md"
34
- };
35
- } catch (error) {
36
- return {
37
- target: "agents-md",
38
- filePath,
39
- action: "error",
40
- message: error instanceof Error ? error.message : "Unknown error"
41
- };
42
- }
43
- }
44
-
45
- //#endregion
46
- export { setupAgentsMd };
@@ -1,59 +0,0 @@
1
- import { generateContractsrcConfig } from "../config-generators.js";
2
- import { deepMergePreserve, formatJson, safeParseJson } from "../file-merger.js";
3
-
4
- //#region src/services/setup/targets/cli-config.ts
5
- /**
6
- * Setup .contractsrc.json
7
- *
8
- * In monorepo with package scope, creates config at package root.
9
- */
10
- async function setupCliConfig(fs, options, prompts) {
11
- const targetRoot = options.isMonorepo && options.scope === "package" ? options.packageRoot ?? options.workspaceRoot : options.workspaceRoot;
12
- const filePath = fs.join(targetRoot, ".contractsrc.json");
13
- try {
14
- const exists = await fs.exists(filePath);
15
- const defaults = generateContractsrcConfig(options);
16
- if (exists) {
17
- const existing = safeParseJson(await fs.readFile(filePath));
18
- if (!existing) return {
19
- target: "cli-config",
20
- filePath,
21
- action: "error",
22
- message: "Existing file is not valid JSON"
23
- };
24
- if (options.interactive) {
25
- if (!await prompts.confirm(`${filePath} exists. Merge ContractSpec defaults?`)) return {
26
- target: "cli-config",
27
- filePath,
28
- action: "skipped",
29
- message: "User skipped merge"
30
- };
31
- }
32
- const merged = deepMergePreserve(existing, defaults);
33
- await fs.writeFile(filePath, formatJson(merged));
34
- return {
35
- target: "cli-config",
36
- filePath,
37
- action: "merged",
38
- message: "Merged with existing configuration"
39
- };
40
- }
41
- await fs.writeFile(filePath, formatJson(defaults));
42
- return {
43
- target: "cli-config",
44
- filePath,
45
- action: "created",
46
- message: "Created CLI configuration"
47
- };
48
- } catch (error) {
49
- return {
50
- target: "cli-config",
51
- filePath,
52
- action: "error",
53
- message: error instanceof Error ? error.message : "Unknown error"
54
- };
55
- }
56
- }
57
-
58
- //#endregion
59
- export { setupCliConfig };
@@ -1,47 +0,0 @@
1
- import { generateCursorRules } from "../config-generators.js";
2
-
3
- //#region src/services/setup/targets/cursor-rules.ts
4
- /**
5
- * Setup .cursor/rules/contractspec.mdc
6
- */
7
- async function setupCursorRules(fs, options, prompts) {
8
- const rulesDir = fs.join(options.workspaceRoot, ".cursor", "rules");
9
- const filePath = fs.join(rulesDir, "contractspec.mdc");
10
- try {
11
- const cursorDir = fs.join(options.workspaceRoot, ".cursor");
12
- if (!await fs.exists(cursorDir)) await fs.mkdir(cursorDir);
13
- if (!await fs.exists(rulesDir)) await fs.mkdir(rulesDir);
14
- const exists = await fs.exists(filePath);
15
- const content = generateCursorRules(options);
16
- if (exists) if (options.interactive) {
17
- if (!await prompts.confirm(`${filePath} exists. Overwrite with latest rules?`)) return {
18
- target: "cursor-rules",
19
- filePath,
20
- action: "skipped",
21
- message: "User kept existing rules"
22
- };
23
- } else return {
24
- target: "cursor-rules",
25
- filePath,
26
- action: "skipped",
27
- message: "File already exists"
28
- };
29
- await fs.writeFile(filePath, content);
30
- return {
31
- target: "cursor-rules",
32
- filePath,
33
- action: exists ? "merged" : "created",
34
- message: exists ? "Updated Cursor rules" : "Created Cursor rules"
35
- };
36
- } catch (error) {
37
- return {
38
- target: "cursor-rules",
39
- filePath,
40
- action: "error",
41
- message: error instanceof Error ? error.message : "Unknown error"
42
- };
43
- }
44
- }
45
-
46
- //#endregion
47
- export { setupCursorRules };