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

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 (378) hide show
  1. package/dist/_virtual/rolldown_runtime.js +1 -22
  2. package/dist/adapters/ai.js +1 -82
  3. package/dist/adapters/factory.js +1 -36
  4. package/dist/adapters/fs.js +1 -118
  5. package/dist/adapters/git.js +1 -54
  6. package/dist/adapters/index.js +1 -7
  7. package/dist/adapters/logger.js +1 -80
  8. package/dist/adapters/watcher.js +1 -69
  9. package/dist/adapters/workspace.js +2 -190
  10. package/dist/ai/agents/claude-code-agent.js +9 -146
  11. package/dist/ai/agents/cursor-agent.js +17 -286
  12. package/dist/ai/agents/index.js +1 -5
  13. package/dist/ai/agents/openai-codex-agent.js +8 -140
  14. package/dist/ai/agents/orchestrator.js +1 -142
  15. package/dist/ai/agents/simple-agent.js +4 -80
  16. package/dist/ai/client.js +1 -162
  17. package/dist/ai/index.js +1 -27
  18. package/dist/ai/prompts/code-generation.js +13 -55
  19. package/dist/ai/prompts/index.js +1 -12
  20. package/dist/ai/prompts/spec-creation.js +20 -61
  21. package/dist/ai/providers.js +1 -40
  22. package/dist/formatters/index.js +1 -18
  23. package/dist/formatters/json.js +1 -71
  24. package/dist/formatters/sarif.js +1 -163
  25. package/dist/formatters/text.js +2 -208
  26. package/dist/index.js +1 -81
  27. package/dist/node_modules/@ai-sdk/anthropic/dist/index.js +1 -0
  28. package/dist/node_modules/@ai-sdk/openai/dist/index.js +11 -0
  29. package/dist/node_modules/@ai-sdk/provider/dist/index.js +3 -0
  30. package/dist/node_modules/@ai-sdk/provider-utils/dist/index.js +5 -0
  31. package/dist/node_modules/chalk/source/index.js +2 -0
  32. package/dist/node_modules/chalk/source/utilities.js +4 -0
  33. package/dist/node_modules/chalk/source/vendor/ansi-styles/index.js +1 -0
  34. package/dist/node_modules/chalk/source/vendor/supports-color/browser.js +1 -0
  35. package/dist/node_modules/cli-cursor/index.js +1 -0
  36. package/dist/node_modules/cli-spinners/index.js +1 -0
  37. package/dist/node_modules/cli-spinners/spinners.js +1 -0
  38. package/dist/node_modules/eventsource-parser/dist/index.js +5 -0
  39. package/dist/node_modules/eventsource-parser/dist/stream.js +1 -0
  40. package/dist/node_modules/get-east-asian-width/index.js +1 -0
  41. package/dist/node_modules/get-east-asian-width/lookup.js +1 -0
  42. package/dist/node_modules/is-interactive/index.js +1 -0
  43. package/dist/node_modules/is-unicode-supported/index.js +1 -0
  44. package/dist/node_modules/log-symbols/browser-symbols.js +1 -0
  45. package/dist/node_modules/mimic-function/index.js +1 -0
  46. package/dist/node_modules/onetime/index.js +1 -0
  47. package/dist/node_modules/ora/index.js +6 -0
  48. package/dist/node_modules/restore-cursor/index.js +1 -0
  49. package/dist/node_modules/signal-exit/dist/mjs/index.js +1 -0
  50. package/dist/node_modules/signal-exit/dist/mjs/signals.js +1 -0
  51. package/dist/node_modules/stdin-discarder/index.js +1 -0
  52. package/dist/node_modules/string-width/index.js +1 -0
  53. package/dist/node_modules/strip-ansi/index.js +1 -0
  54. package/dist/node_modules/strip-ansi/node_modules/ansi-regex/index.js +1 -0
  55. package/dist/services/agent-guide/adapters/claude-code.js +3 -144
  56. package/dist/services/agent-guide/adapters/cursor-cli.js +3 -135
  57. package/dist/services/agent-guide/adapters/generic-mcp.js +3 -159
  58. package/dist/services/agent-guide/adapters/index.js +1 -30
  59. package/dist/services/agent-guide/agent-guide-service.js +1 -148
  60. package/dist/services/agent-guide/index.js +1 -5
  61. package/dist/services/build.js +1 -140
  62. package/dist/services/ci-check/ci-check-service.js +1 -393
  63. package/dist/services/ci-check/index.js +1 -2
  64. package/dist/services/ci-check/types.js +1 -28
  65. package/dist/services/clean.js +1 -71
  66. package/dist/services/config.js +1 -76
  67. package/dist/services/deps.js +1 -62
  68. package/dist/services/diff.js +1 -33
  69. package/dist/services/doctor/checks/ai.js +2 -118
  70. package/dist/services/doctor/checks/cli.js +1 -146
  71. package/dist/services/doctor/checks/config.js +1 -170
  72. package/dist/services/doctor/checks/deps.js +1 -180
  73. package/dist/services/doctor/checks/index.js +1 -6
  74. package/dist/services/doctor/checks/mcp.js +1 -144
  75. package/dist/services/doctor/checks/workspace.js +1 -243
  76. package/dist/services/doctor/doctor-service.js +2 -115
  77. package/dist/services/doctor/index.js +1 -2
  78. package/dist/services/doctor/types.js +1 -26
  79. package/dist/services/implementation/discovery.js +2 -143
  80. package/dist/services/implementation/index.js +1 -2
  81. package/dist/services/implementation/resolver.js +1 -223
  82. package/dist/services/index.js +1 -53
  83. package/dist/services/integrity-diagram.js +6 -274
  84. package/dist/services/integrity.js +1 -272
  85. package/dist/services/list.js +1 -35
  86. package/dist/services/openapi/export-service.js +2 -51
  87. package/dist/services/openapi/import-service.js +1 -75
  88. package/dist/services/openapi/index.js +1 -4
  89. package/dist/services/openapi/sync-service.js +1 -121
  90. package/dist/services/openapi/validate-service.js +1 -130
  91. package/dist/services/regenerator.js +1 -23
  92. package/dist/services/registry.js +1 -73
  93. package/dist/services/setup/config-generators.js +26 -113
  94. package/dist/services/setup/file-merger.js +2 -60
  95. package/dist/services/setup/index.js +1 -4
  96. package/dist/services/setup/setup-service.js +1 -95
  97. package/dist/services/setup/targets/agents-md.js +1 -46
  98. package/dist/services/setup/targets/cli-config.js +1 -59
  99. package/dist/services/setup/targets/cursor-rules.js +1 -47
  100. package/dist/services/setup/targets/mcp-claude.js +1 -59
  101. package/dist/services/setup/targets/mcp-cursor.js +1 -58
  102. package/dist/services/setup/targets/vscode-settings.js +1 -62
  103. package/dist/services/setup/types.js +1 -26
  104. package/dist/services/sync.js +1 -62
  105. package/dist/services/test.js +1 -30
  106. package/dist/services/validate-implementation.js +1 -69
  107. package/dist/services/validate.js +1 -47
  108. package/dist/services/verification-cache/adapters/filesystem.js +1 -121
  109. package/dist/services/verification-cache/adapters/in-memory.js +1 -45
  110. package/dist/services/verification-cache/adapters/index.js +1 -3
  111. package/dist/services/verification-cache/adapters/workspace-state.js +1 -90
  112. package/dist/services/verification-cache/cache-service.js +1 -255
  113. package/dist/services/verification-cache/index.js +1 -6
  114. package/dist/services/verification-cache/types.js +1 -15
  115. package/dist/services/verify/ai-verifier.js +9 -336
  116. package/dist/services/verify/behavior-verifier.js +1 -185
  117. package/dist/services/verify/index.js +1 -4
  118. package/dist/services/verify/structure-verifier.js +2 -195
  119. package/dist/services/verify/verify-service.js +3 -203
  120. package/dist/services/watch.js +1 -31
  121. package/dist/services/workspace-info.js +2 -102
  122. package/dist/templates/app-config.template.js +28 -101
  123. package/dist/templates/data-view.template.js +27 -42
  124. package/dist/templates/event.template.js +14 -29
  125. package/dist/templates/experiment.template.js +51 -77
  126. package/dist/templates/handler.template.js +17 -53
  127. package/dist/templates/index.js +1 -36
  128. package/dist/templates/integration.template.js +50 -134
  129. package/dist/templates/knowledge.template.js +21 -62
  130. package/dist/templates/migration.template.js +26 -50
  131. package/dist/templates/operation.template.js +28 -44
  132. package/dist/templates/presentation.template.js +20 -46
  133. package/dist/templates/telemetry.template.js +53 -74
  134. package/dist/templates/workflow-runner.template.js +6 -12
  135. package/dist/templates/workflow.template.js +24 -51
  136. package/package.json +10 -16
  137. package/dist/adapters/ai.d.ts +0 -11
  138. package/dist/adapters/factory.d.ts +0 -28
  139. package/dist/adapters/fs.d.ts +0 -10
  140. package/dist/adapters/git.d.ts +0 -10
  141. package/dist/adapters/logger.d.ts +0 -17
  142. package/dist/adapters/watcher.d.ts +0 -10
  143. package/dist/adapters/workspace.d.ts +0 -93
  144. package/dist/ai/agents/claude-code-agent.d.ts +0 -21
  145. package/dist/ai/agents/cursor-agent.d.ts +0 -67
  146. package/dist/ai/agents/openai-codex-agent.d.ts +0 -21
  147. package/dist/ai/agents/orchestrator.d.ts +0 -49
  148. package/dist/ai/agents/simple-agent.d.ts +0 -16
  149. package/dist/ai/agents/types.d.ts +0 -35
  150. package/dist/ai/client.d.ts +0 -82
  151. package/dist/ai/index.d.ts +0 -16
  152. package/dist/ai/prompts/code-generation.d.ts +0 -25
  153. package/dist/ai/prompts/index.d.ts +0 -9
  154. package/dist/ai/prompts/spec-creation.d.ts +0 -28
  155. package/dist/ai/providers.d.ts +0 -28
  156. package/dist/formatters/index.d.ts +0 -10
  157. package/dist/formatters/json.d.ts +0 -88
  158. package/dist/formatters/sarif.d.ts +0 -100
  159. package/dist/formatters/text.d.ts +0 -34
  160. package/dist/index.d.ts +0 -66
  161. package/dist/libs/ai-providers/dist/factory.js +0 -154
  162. package/dist/libs/ai-providers/dist/index.js +0 -4
  163. package/dist/libs/ai-providers/dist/legacy.js +0 -72
  164. package/dist/libs/ai-providers/dist/models.js +0 -287
  165. package/dist/libs/ai-providers/dist/validation.js +0 -1
  166. package/dist/libs/contracts/dist/capabilities/openbanking.js +0 -88
  167. package/dist/libs/contracts/dist/client/index.js +0 -5
  168. package/dist/libs/contracts/dist/client/react/feature-render.js +0 -2
  169. package/dist/libs/contracts/dist/client/react/form-render.js +0 -4
  170. package/dist/libs/contracts/dist/client/react/index.js +0 -4
  171. package/dist/libs/contracts/dist/contract-registry/index.js +0 -1
  172. package/dist/libs/contracts/dist/contract-registry/schemas.js +0 -60
  173. package/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +0 -16
  174. package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +0 -16
  175. package/dist/libs/contracts/dist/docs/index.js +0 -29
  176. package/dist/libs/contracts/dist/docs/presentations.js +0 -71
  177. package/dist/libs/contracts/dist/docs/registry.js +0 -44
  178. package/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -16
  179. package/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -16
  180. package/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -16
  181. package/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -16
  182. package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -16
  183. package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +0 -80
  184. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +0 -57
  185. package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +0 -16
  186. package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +0 -357
  187. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +0 -37
  188. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +0 -16
  189. package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +0 -20
  190. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +0 -48
  191. package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +0 -79
  192. package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +0 -84
  193. package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +0 -45
  194. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +0 -67
  195. package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +0 -40
  196. package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +0 -69
  197. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +0 -47
  198. package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +0 -62
  199. package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +0 -155
  200. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +0 -20
  201. package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +0 -101
  202. package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +0 -20
  203. package/dist/libs/contracts/dist/events.js +0 -8
  204. package/dist/libs/contracts/dist/experiments/evaluator.js +0 -1
  205. package/dist/libs/contracts/dist/index.js +0 -72
  206. package/dist/libs/contracts/dist/install.js +0 -2
  207. package/dist/libs/contracts/dist/integrations/contracts.js +0 -377
  208. package/dist/libs/contracts/dist/integrations/index.js +0 -18
  209. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +0 -228
  210. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +0 -159
  211. package/dist/libs/contracts/dist/integrations/openbanking/contracts/index.js +0 -3
  212. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +0 -210
  213. package/dist/libs/contracts/dist/integrations/openbanking/models.js +0 -242
  214. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +0 -13
  215. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +0 -52
  216. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +0 -75
  217. package/dist/libs/contracts/dist/integrations/providers/gmail.js +0 -87
  218. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +0 -66
  219. package/dist/libs/contracts/dist/integrations/providers/index.js +0 -11
  220. package/dist/libs/contracts/dist/integrations/providers/mistral.js +0 -68
  221. package/dist/libs/contracts/dist/integrations/providers/postmark.js +0 -68
  222. package/dist/libs/contracts/dist/integrations/providers/powens.js +0 -116
  223. package/dist/libs/contracts/dist/integrations/providers/qdrant.js +0 -73
  224. package/dist/libs/contracts/dist/integrations/providers/registry.js +0 -10
  225. package/dist/libs/contracts/dist/integrations/providers/stripe.js +0 -83
  226. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +0 -61
  227. package/dist/libs/contracts/dist/jsonschema.js +0 -24
  228. package/dist/libs/contracts/dist/knowledge/contracts.js +0 -306
  229. package/dist/libs/contracts/dist/knowledge/index.js +0 -7
  230. package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +0 -34
  231. package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +0 -34
  232. package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +0 -38
  233. package/dist/libs/contracts/dist/knowledge/spaces/index.js +0 -6
  234. package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +0 -34
  235. package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +0 -37
  236. package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +0 -34
  237. package/dist/libs/contracts/dist/llm/exporters.js +0 -352
  238. package/dist/libs/contracts/dist/llm/index.js +0 -2
  239. package/dist/libs/contracts/dist/llm/prompts.js +0 -211
  240. package/dist/libs/contracts/dist/onboarding-base.js +0 -196
  241. package/dist/libs/contracts/dist/openapi.js +0 -75
  242. package/dist/libs/contracts/dist/ownership.js +0 -21
  243. package/dist/libs/contracts/dist/presentations.js +0 -1
  244. package/dist/libs/contracts/dist/presentations.v2.js +0 -11
  245. package/dist/libs/contracts/dist/prompt.js +0 -1
  246. package/dist/libs/contracts/dist/promptRegistry.js +0 -1
  247. package/dist/libs/contracts/dist/regenerator/index.js +0 -2
  248. package/dist/libs/contracts/dist/regenerator/service.js +0 -92
  249. package/dist/libs/contracts/dist/regenerator/utils.js +0 -51
  250. package/dist/libs/contracts/dist/registry.js +0 -208
  251. package/dist/libs/contracts/dist/resources.js +0 -1
  252. package/dist/libs/contracts/dist/schema/dist/EnumType.js +0 -2
  253. package/dist/libs/contracts/dist/schema/dist/FieldType.js +0 -49
  254. package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
  255. package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +0 -34
  256. package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
  257. package/dist/libs/contracts/dist/schema/dist/entity/index.js +0 -2
  258. package/dist/libs/contracts/dist/schema/dist/entity/types.js +0 -1
  259. package/dist/libs/contracts/dist/schema/dist/index.js +0 -6
  260. package/dist/libs/contracts/dist/server/graphql-pothos.js +0 -6
  261. package/dist/libs/contracts/dist/server/index.js +0 -8
  262. package/dist/libs/contracts/dist/server/mcp/createMcpServer.js +0 -4
  263. package/dist/libs/contracts/dist/server/mcp/registerPresentations.js +0 -2
  264. package/dist/libs/contracts/dist/server/mcp/registerPrompts.js +0 -1
  265. package/dist/libs/contracts/dist/server/mcp/registerResources.js +0 -2
  266. package/dist/libs/contracts/dist/server/mcp/registerTools.js +0 -1
  267. package/dist/libs/contracts/dist/server/provider-mcp.js +0 -1
  268. package/dist/libs/contracts/dist/server/rest-elysia.js +0 -1
  269. package/dist/libs/contracts/dist/server/rest-express.js +0 -1
  270. package/dist/libs/contracts/dist/server/rest-generic.js +0 -1
  271. package/dist/libs/contracts/dist/server/rest-next-app.js +0 -1
  272. package/dist/libs/contracts/dist/server/rest-next-pages.js +0 -1
  273. package/dist/libs/contracts/dist/spec.js +0 -35
  274. package/dist/libs/contracts/dist/telemetry/index.js +0 -1
  275. package/dist/libs/contracts/dist/telemetry/tracker.js +0 -1
  276. package/dist/libs/contracts/dist/tests/index.js +0 -1
  277. package/dist/libs/contracts/dist/tests/runner.js +0 -150
  278. package/dist/libs/contracts/dist/workflow/index.js +0 -1
  279. package/dist/libs/contracts/dist/workflow/runner.js +0 -1
  280. package/dist/libs/contracts-transformers/dist/common/utils.js +0 -47
  281. package/dist/libs/contracts-transformers/dist/openapi/exporter.js +0 -1
  282. package/dist/libs/contracts-transformers/dist/openapi/importer.js +0 -255
  283. package/dist/libs/contracts-transformers/dist/openapi/index.js +0 -4
  284. package/dist/libs/contracts-transformers/dist/openapi/parser.js +0 -231
  285. package/dist/libs/contracts-transformers/dist/openapi/schema-converter.js +0 -201
  286. package/dist/modules/contractspec-workspace/dist/ai/code-generation.js +0 -137
  287. package/dist/modules/contractspec-workspace/dist/ai/spec-creation.js +0 -101
  288. package/dist/modules/contractspec-workspace/dist/analysis/deps/graph.js +0 -84
  289. package/dist/modules/contractspec-workspace/dist/analysis/deps/parse-imports.js +0 -30
  290. package/dist/modules/contractspec-workspace/dist/analysis/diff/semantic.js +0 -96
  291. package/dist/modules/contractspec-workspace/dist/analysis/feature-scan.js +0 -151
  292. package/dist/modules/contractspec-workspace/dist/analysis/spec-scan.js +0 -344
  293. package/dist/modules/contractspec-workspace/dist/analysis/validate/spec-structure.js +0 -122
  294. package/dist/modules/contractspec-workspace/dist/templates/app-config.js +0 -105
  295. package/dist/modules/contractspec-workspace/dist/templates/data-view.js +0 -68
  296. package/dist/modules/contractspec-workspace/dist/templates/event.js +0 -38
  297. package/dist/modules/contractspec-workspace/dist/templates/experiment.js +0 -87
  298. package/dist/modules/contractspec-workspace/dist/templates/handler.js +0 -95
  299. package/dist/modules/contractspec-workspace/dist/templates/integration-utils.js +0 -104
  300. package/dist/modules/contractspec-workspace/dist/templates/integration.js +0 -62
  301. package/dist/modules/contractspec-workspace/dist/templates/knowledge.js +0 -68
  302. package/dist/modules/contractspec-workspace/dist/templates/migration.js +0 -60
  303. package/dist/modules/contractspec-workspace/dist/templates/operation.js +0 -100
  304. package/dist/modules/contractspec-workspace/dist/templates/presentation.js +0 -78
  305. package/dist/modules/contractspec-workspace/dist/templates/telemetry.js +0 -89
  306. package/dist/modules/contractspec-workspace/dist/templates/utils.js +0 -38
  307. package/dist/modules/contractspec-workspace/dist/templates/workflow-runner.js +0 -48
  308. package/dist/modules/contractspec-workspace/dist/templates/workflow.js +0 -67
  309. package/dist/modules/contractspec-workspace/dist/types/generation-types.js +0 -20
  310. package/dist/ports/ai.d.ts +0 -58
  311. package/dist/ports/fs.d.ts +0 -80
  312. package/dist/ports/git.d.ts +0 -32
  313. package/dist/ports/logger.d.ts +0 -87
  314. package/dist/ports/watcher.d.ts +0 -51
  315. package/dist/services/agent-guide/adapters/claude-code.d.ts +0 -34
  316. package/dist/services/agent-guide/adapters/cursor-cli.d.ts +0 -38
  317. package/dist/services/agent-guide/adapters/generic-mcp.d.ts +0 -52
  318. package/dist/services/agent-guide/adapters/index.d.ts +0 -22
  319. package/dist/services/agent-guide/agent-guide-service.d.ts +0 -55
  320. package/dist/services/agent-guide/types.d.ts +0 -57
  321. package/dist/services/build.d.ts +0 -58
  322. package/dist/services/ci-check/ci-check-service.d.ts +0 -15
  323. package/dist/services/ci-check/types.d.ts +0 -142
  324. package/dist/services/clean.d.ts +0 -40
  325. package/dist/services/config.d.ts +0 -25
  326. package/dist/services/deps.d.ts +0 -52
  327. package/dist/services/diff.d.ts +0 -33
  328. package/dist/services/doctor/doctor-service.d.ts +0 -23
  329. package/dist/services/doctor/types.d.ts +0 -117
  330. package/dist/services/implementation/discovery.d.ts +0 -29
  331. package/dist/services/implementation/resolver.d.ts +0 -43
  332. package/dist/services/implementation/types.d.ts +0 -78
  333. package/dist/services/integrity-diagram.d.ts +0 -35
  334. package/dist/services/integrity.d.ts +0 -133
  335. package/dist/services/list.d.ts +0 -30
  336. package/dist/services/openapi/export-service.d.ts +0 -52
  337. package/dist/services/openapi/import-service.d.ts +0 -15
  338. package/dist/services/openapi/sync-service.d.ts +0 -18
  339. package/dist/services/openapi/types.d.ts +0 -184
  340. package/dist/services/openapi/validate-service.d.ts +0 -15
  341. package/dist/services/regenerator.d.ts +0 -17
  342. package/dist/services/registry.d.ts +0 -52
  343. package/dist/services/setup/config-generators.d.ts +0 -41
  344. package/dist/services/setup/file-merger.d.ts +0 -26
  345. package/dist/services/setup/setup-service.d.ts +0 -11
  346. package/dist/services/setup/types.d.ts +0 -84
  347. package/dist/services/sync.d.ts +0 -40
  348. package/dist/services/test.d.ts +0 -14
  349. package/dist/services/validate-implementation.d.ts +0 -31
  350. package/dist/services/validate.d.ts +0 -40
  351. package/dist/services/verification-cache/adapters/filesystem.d.ts +0 -45
  352. package/dist/services/verification-cache/adapters/in-memory.d.ts +0 -26
  353. package/dist/services/verification-cache/adapters/workspace-state.d.ts +0 -48
  354. package/dist/services/verification-cache/cache-service.d.ts +0 -69
  355. package/dist/services/verification-cache/types.d.ts +0 -123
  356. package/dist/services/verify/ai-verifier.d.ts +0 -24
  357. package/dist/services/verify/behavior-verifier.d.ts +0 -11
  358. package/dist/services/verify/structure-verifier.d.ts +0 -11
  359. package/dist/services/verify/types.d.ts +0 -136
  360. package/dist/services/verify/verify-service.d.ts +0 -59
  361. package/dist/services/watch.d.ts +0 -24
  362. package/dist/services/workspace-info.d.ts +0 -61
  363. package/dist/templates/app-config.template.d.ts +0 -6
  364. package/dist/templates/data-view.template.d.ts +0 -6
  365. package/dist/templates/event.template.d.ts +0 -10
  366. package/dist/templates/experiment.template.d.ts +0 -6
  367. package/dist/templates/handler.template.d.ts +0 -15
  368. package/dist/templates/index.d.ts +0 -20
  369. package/dist/templates/integration.template.d.ts +0 -6
  370. package/dist/templates/knowledge.template.d.ts +0 -6
  371. package/dist/templates/migration.template.d.ts +0 -6
  372. package/dist/templates/operation.template.d.ts +0 -10
  373. package/dist/templates/presentation.template.d.ts +0 -10
  374. package/dist/templates/telemetry.template.d.ts +0 -6
  375. package/dist/templates/workflow-runner.template.d.ts +0 -15
  376. package/dist/templates/workflow.template.d.ts +0 -6
  377. package/dist/types/config.d.ts +0 -33
  378. package/dist/types.d.ts +0 -323
@@ -1,180 +1 @@
1
- import { exec } from "node:child_process";
2
- import { promisify } from "node:util";
3
-
4
- //#region src/services/doctor/checks/deps.ts
5
- /**
6
- * Dependencies health checks.
7
- */
8
- const execAsync = promisify(exec);
9
- /**
10
- * Run dependency-related health checks.
11
- */
12
- async function runDepsChecks(fs, ctx) {
13
- const results = [];
14
- results.push(await checkNodeJs(ctx));
15
- results.push(await checkBun(ctx));
16
- results.push(await checkPackageManager(fs, ctx));
17
- results.push(await checkNodeModules(fs, ctx));
18
- return results;
19
- }
20
- /**
21
- * Check if Node.js is available.
22
- */
23
- async function checkNodeJs(ctx) {
24
- try {
25
- const { stdout } = await execAsync("node --version", {
26
- cwd: ctx.workspaceRoot,
27
- timeout: 5e3
28
- });
29
- return {
30
- category: "deps",
31
- name: "Node.js",
32
- status: "pass",
33
- message: `Node.js ${stdout.trim()} available`
34
- };
35
- } catch {
36
- return {
37
- category: "deps",
38
- name: "Node.js",
39
- status: "fail",
40
- message: "Node.js not found",
41
- details: "Install Node.js from https://nodejs.org"
42
- };
43
- }
44
- }
45
- /**
46
- * Check if Bun is available.
47
- */
48
- async function checkBun(ctx) {
49
- try {
50
- const { stdout } = await execAsync("bun --version", {
51
- cwd: ctx.workspaceRoot,
52
- timeout: 5e3
53
- });
54
- return {
55
- category: "deps",
56
- name: "Bun Runtime",
57
- status: "pass",
58
- message: `Bun ${stdout.trim()} available`
59
- };
60
- } catch {
61
- return {
62
- category: "deps",
63
- name: "Bun Runtime",
64
- status: "warn",
65
- message: "Bun not found (optional but recommended)",
66
- details: "Install Bun from https://bun.sh for faster execution"
67
- };
68
- }
69
- }
70
- /**
71
- * Detect and check the package manager.
72
- */
73
- async function checkPackageManager(fs, ctx) {
74
- const lockFiles = [
75
- {
76
- file: "bun.lockb",
77
- name: "bun"
78
- },
79
- {
80
- file: "pnpm-lock.yaml",
81
- name: "pnpm"
82
- },
83
- {
84
- file: "yarn.lock",
85
- name: "yarn"
86
- },
87
- {
88
- file: "package-lock.json",
89
- name: "npm"
90
- }
91
- ];
92
- let detectedManager = null;
93
- for (const { file, name } of lockFiles) {
94
- const lockPath = fs.join(ctx.workspaceRoot, file);
95
- if (await fs.exists(lockPath)) {
96
- detectedManager = name;
97
- break;
98
- }
99
- }
100
- if (!detectedManager) return {
101
- category: "deps",
102
- name: "Package Manager",
103
- status: "warn",
104
- message: "No lock file found",
105
- details: "Run npm install, yarn, pnpm install, or bun install"
106
- };
107
- try {
108
- await execAsync(`${detectedManager} --version`, {
109
- cwd: ctx.workspaceRoot,
110
- timeout: 5e3
111
- });
112
- return {
113
- category: "deps",
114
- name: "Package Manager",
115
- status: "pass",
116
- message: `Using ${detectedManager}`
117
- };
118
- } catch {
119
- return {
120
- category: "deps",
121
- name: "Package Manager",
122
- status: "fail",
123
- message: `${detectedManager} detected but not available`,
124
- details: `Install ${detectedManager} or use a different package manager`
125
- };
126
- }
127
- }
128
- /**
129
- * Check if node_modules exists.
130
- */
131
- async function checkNodeModules(fs, ctx) {
132
- const nodeModulesPath = fs.join(ctx.workspaceRoot, "node_modules");
133
- if (await fs.exists(nodeModulesPath)) return {
134
- category: "deps",
135
- name: "Dependencies Installed",
136
- status: "pass",
137
- message: "node_modules directory exists"
138
- };
139
- return {
140
- category: "deps",
141
- name: "Dependencies Installed",
142
- status: "fail",
143
- message: "node_modules not found",
144
- details: "Run your package manager install command",
145
- fix: {
146
- description: "Install dependencies",
147
- apply: async () => {
148
- try {
149
- try {
150
- await execAsync("bun install", {
151
- cwd: ctx.workspaceRoot,
152
- timeout: 12e4
153
- });
154
- return {
155
- success: true,
156
- message: "Installed with bun"
157
- };
158
- } catch {
159
- await execAsync("npm install", {
160
- cwd: ctx.workspaceRoot,
161
- timeout: 12e4
162
- });
163
- return {
164
- success: true,
165
- message: "Installed with npm"
166
- };
167
- }
168
- } catch (error) {
169
- return {
170
- success: false,
171
- message: `Failed: ${error instanceof Error ? error.message : String(error)}`
172
- };
173
- }
174
- }
175
- }
176
- };
177
- }
178
-
179
- //#endregion
180
- export { runDepsChecks };
1
+ import{exec as e}from"node:child_process";import{promisify as t}from"node:util";const n=t(e);async function r(e,t){let n=[];return n.push(await i(t)),n.push(await a(t)),n.push(await o(e,t)),n.push(await s(e,t)),n}async function i(e){try{let{stdout:t}=await n(`node --version`,{cwd:e.workspaceRoot,timeout:5e3});return{category:`deps`,name:`Node.js`,status:`pass`,message:`Node.js ${t.trim()} available`}}catch{return{category:`deps`,name:`Node.js`,status:`fail`,message:`Node.js not found`,details:`Install Node.js from https://nodejs.org`}}}async function a(e){try{let{stdout:t}=await n(`bun --version`,{cwd:e.workspaceRoot,timeout:5e3});return{category:`deps`,name:`Bun Runtime`,status:`pass`,message:`Bun ${t.trim()} available`}}catch{return{category:`deps`,name:`Bun Runtime`,status:`warn`,message:`Bun not found (optional but recommended)`,details:`Install Bun from https://bun.sh for faster execution`}}}async function o(e,t){let r=[{file:`bun.lockb`,name:`bun`},{file:`pnpm-lock.yaml`,name:`pnpm`},{file:`yarn.lock`,name:`yarn`},{file:`package-lock.json`,name:`npm`}],i=null;for(let{file:n,name:a}of r){let r=e.join(t.workspaceRoot,n);if(await e.exists(r)){i=a;break}}if(!i)return{category:`deps`,name:`Package Manager`,status:`warn`,message:`No lock file found`,details:`Run npm install, yarn, pnpm install, or bun install`};try{return await n(`${i} --version`,{cwd:t.workspaceRoot,timeout:5e3}),{category:`deps`,name:`Package Manager`,status:`pass`,message:`Using ${i}`}}catch{return{category:`deps`,name:`Package Manager`,status:`fail`,message:`${i} detected but not available`,details:`Install ${i} or use a different package manager`}}}async function s(e,t){let r=e.join(t.workspaceRoot,`node_modules`);return await e.exists(r)?{category:`deps`,name:`Dependencies Installed`,status:`pass`,message:`node_modules directory exists`}:{category:`deps`,name:`Dependencies Installed`,status:`fail`,message:`node_modules not found`,details:`Run your package manager install command`,fix:{description:`Install dependencies`,apply:async()=>{try{try{return await n(`bun install`,{cwd:t.workspaceRoot,timeout:12e4}),{success:!0,message:`Installed with bun`}}catch{return await n(`npm install`,{cwd:t.workspaceRoot,timeout:12e4}),{success:!0,message:`Installed with npm`}}}catch(e){return{success:!1,message:`Failed: ${e instanceof Error?e.message:String(e)}`}}}}}}export{r as runDepsChecks};
@@ -1,6 +1 @@
1
- import { runCliChecks } from "./cli.js";
2
- import { runConfigChecks } from "./config.js";
3
- import { runMcpChecks } from "./mcp.js";
4
- import { runDepsChecks } from "./deps.js";
5
- import { runWorkspaceChecks } from "./workspace.js";
6
- import { runAiChecks } from "./ai.js";
1
+ import{runCliChecks as e}from"./cli.js";import{runConfigChecks as t}from"./config.js";import{runMcpChecks as n}from"./mcp.js";import{runDepsChecks as r}from"./deps.js";import{runWorkspaceChecks as i}from"./workspace.js";import{runAiChecks as a}from"./ai.js";
@@ -1,144 +1 @@
1
- import { generateCursorMcpConfig, getClaudeDesktopConfigPath } from "../../setup/config-generators.js";
2
- import { deepMergePreserve, formatJson } from "../../setup/file-merger.js";
3
-
4
- //#region src/services/doctor/checks/mcp.ts
5
- /**
6
- * Run MCP-related health checks.
7
- */
8
- async function runMcpChecks(fs, ctx) {
9
- const results = [];
10
- results.push(await checkCursorMcpConfig(fs, ctx));
11
- results.push(await checkCursorMcpServer(fs, ctx));
12
- results.push(await checkClaudeMcpConfig(fs, ctx));
13
- return results;
14
- }
15
- /**
16
- * Check if .cursor/mcp.json exists.
17
- */
18
- async function checkCursorMcpConfig(fs, ctx) {
19
- const configPath = fs.join(ctx.workspaceRoot, ".cursor", "mcp.json");
20
- if (await fs.exists(configPath)) return {
21
- category: "mcp",
22
- name: "Cursor MCP Config",
23
- status: "pass",
24
- message: ".cursor/mcp.json found"
25
- };
26
- return {
27
- category: "mcp",
28
- name: "Cursor MCP Config",
29
- status: "warn",
30
- message: ".cursor/mcp.json not found",
31
- details: "MCP integration with Cursor will not work",
32
- fix: {
33
- description: "Create .cursor/mcp.json",
34
- apply: async () => {
35
- try {
36
- const cursorDir = fs.join(ctx.workspaceRoot, ".cursor");
37
- if (!await fs.exists(cursorDir)) await fs.mkdir(cursorDir);
38
- const defaults = generateCursorMcpConfig();
39
- await fs.writeFile(configPath, formatJson(defaults));
40
- return {
41
- success: true,
42
- message: "Created .cursor/mcp.json"
43
- };
44
- } catch (error) {
45
- return {
46
- success: false,
47
- message: `Failed: ${error instanceof Error ? error.message : String(error)}`
48
- };
49
- }
50
- }
51
- }
52
- };
53
- }
54
- /**
55
- * Check if ContractSpec MCP server is registered in Cursor config.
56
- */
57
- async function checkCursorMcpServer(fs, ctx) {
58
- const configPath = fs.join(ctx.workspaceRoot, ".cursor", "mcp.json");
59
- if (!await fs.exists(configPath)) return {
60
- category: "mcp",
61
- name: "MCP Server Registered",
62
- status: "skip",
63
- message: "Cursor MCP config does not exist"
64
- };
65
- try {
66
- const content = await fs.readFile(configPath);
67
- const config = JSON.parse(content);
68
- if (config.mcpServers?.["contractspec-local"] !== void 0) return {
69
- category: "mcp",
70
- name: "MCP Server Registered",
71
- status: "pass",
72
- message: "ContractSpec MCP server is registered"
73
- };
74
- return {
75
- category: "mcp",
76
- name: "MCP Server Registered",
77
- status: "fail",
78
- message: "ContractSpec MCP server not registered",
79
- fix: {
80
- description: "Register ContractSpec MCP server",
81
- apply: async () => {
82
- try {
83
- const merged = deepMergePreserve(config, generateCursorMcpConfig());
84
- await fs.writeFile(configPath, formatJson(merged));
85
- return {
86
- success: true,
87
- message: "Registered MCP server"
88
- };
89
- } catch (error) {
90
- return {
91
- success: false,
92
- message: `Failed: ${error instanceof Error ? error.message : String(error)}`
93
- };
94
- }
95
- }
96
- }
97
- };
98
- } catch {
99
- return {
100
- category: "mcp",
101
- name: "MCP Server Registered",
102
- status: "skip",
103
- message: "Could not parse Cursor MCP config"
104
- };
105
- }
106
- }
107
- /**
108
- * Check Claude Desktop MCP config (optional).
109
- */
110
- async function checkClaudeMcpConfig(fs, ctx) {
111
- const configPath = getClaudeDesktopConfigPath();
112
- try {
113
- if (!await fs.exists(configPath)) return {
114
- category: "mcp",
115
- name: "Claude Desktop MCP",
116
- status: "skip",
117
- message: "Claude Desktop config not found (optional)"
118
- };
119
- const content = await fs.readFile(configPath);
120
- if (JSON.parse(content).mcpServers?.["contractspec-local"] !== void 0) return {
121
- category: "mcp",
122
- name: "Claude Desktop MCP",
123
- status: "pass",
124
- message: "ContractSpec registered in Claude Desktop"
125
- };
126
- return {
127
- category: "mcp",
128
- name: "Claude Desktop MCP",
129
- status: "warn",
130
- message: "ContractSpec not registered in Claude Desktop",
131
- details: "Optional: Run setup to configure Claude Desktop"
132
- };
133
- } catch {
134
- return {
135
- category: "mcp",
136
- name: "Claude Desktop MCP",
137
- status: "skip",
138
- message: "Could not check Claude Desktop config"
139
- };
140
- }
141
- }
142
-
143
- //#endregion
144
- export { runMcpChecks };
1
+ import{generateCursorMcpConfig as e,getClaudeDesktopConfigPath as t}from"../../setup/config-generators.js";import{deepMergePreserve as n,formatJson as r}from"../../setup/file-merger.js";async function i(e,t){let n=[];return n.push(await a(e,t)),n.push(await o(e,t)),n.push(await s(e,t)),n}async function a(t,n){let i=t.join(n.workspaceRoot,`.cursor`,`mcp.json`);return await t.exists(i)?{category:`mcp`,name:`Cursor MCP Config`,status:`pass`,message:`.cursor/mcp.json found`}:{category:`mcp`,name:`Cursor MCP Config`,status:`warn`,message:`.cursor/mcp.json not found`,details:`MCP integration with Cursor will not work`,fix:{description:`Create .cursor/mcp.json`,apply:async()=>{try{let a=t.join(n.workspaceRoot,`.cursor`);await t.exists(a)||await t.mkdir(a);let o=e();return await t.writeFile(i,r(o)),{success:!0,message:`Created .cursor/mcp.json`}}catch(e){return{success:!1,message:`Failed: ${e instanceof Error?e.message:String(e)}`}}}}}}async function o(t,i){let a=t.join(i.workspaceRoot,`.cursor`,`mcp.json`);if(!await t.exists(a))return{category:`mcp`,name:`MCP Server Registered`,status:`skip`,message:`Cursor MCP config does not exist`};try{let i=await t.readFile(a),o=JSON.parse(i);return o.mcpServers?.[`contractspec-local`]===void 0?{category:`mcp`,name:`MCP Server Registered`,status:`fail`,message:`ContractSpec MCP server not registered`,fix:{description:`Register ContractSpec MCP server`,apply:async()=>{try{let i=n(o,e());return await t.writeFile(a,r(i)),{success:!0,message:`Registered MCP server`}}catch(e){return{success:!1,message:`Failed: ${e instanceof Error?e.message:String(e)}`}}}}}:{category:`mcp`,name:`MCP Server Registered`,status:`pass`,message:`ContractSpec MCP server is registered`}}catch{return{category:`mcp`,name:`MCP Server Registered`,status:`skip`,message:`Could not parse Cursor MCP config`}}}async function s(e,n){let r=t();try{if(!await e.exists(r))return{category:`mcp`,name:`Claude Desktop MCP`,status:`skip`,message:`Claude Desktop config not found (optional)`};let t=await e.readFile(r);return JSON.parse(t).mcpServers?.[`contractspec-local`]===void 0?{category:`mcp`,name:`Claude Desktop MCP`,status:`warn`,message:`ContractSpec not registered in Claude Desktop`,details:`Optional: Run setup to configure Claude Desktop`}:{category:`mcp`,name:`Claude Desktop MCP`,status:`pass`,message:`ContractSpec registered in Claude Desktop`}}catch{return{category:`mcp`,name:`Claude Desktop MCP`,status:`skip`,message:`Could not check Claude Desktop config`}}}export{i as runMcpChecks};
@@ -1,243 +1 @@
1
- //#region src/services/doctor/checks/workspace.ts
2
- /**
3
- * Common contract directory paths to check.
4
- */
5
- const CONTRACT_PATHS = [
6
- "src/contracts",
7
- "contracts",
8
- "src/specs",
9
- "specs"
10
- ];
11
- /**
12
- * Run workspace-related health checks.
13
- */
14
- async function runWorkspaceChecks(fs, ctx) {
15
- const results = [];
16
- results.push(checkMonorepoStatus(ctx));
17
- results.push(await checkValidWorkspace(fs, ctx));
18
- results.push(await checkContractsDirectory(fs, ctx));
19
- results.push(await checkContractFiles(fs, ctx));
20
- results.push(await checkOutputDirectory(fs, ctx));
21
- return results;
22
- }
23
- /**
24
- * Report monorepo detection status.
25
- */
26
- function checkMonorepoStatus(ctx) {
27
- if (ctx.isMonorepo) {
28
- const pkgInfo = ctx.packageName ? ` in package "${ctx.packageName}"` : "";
29
- const locationInfo = ctx.packageRoot !== ctx.workspaceRoot ? ` (package root: ${ctx.packageRoot})` : "";
30
- return {
31
- category: "workspace",
32
- name: "Monorepo Detection",
33
- status: "pass",
34
- message: `Monorepo detected${pkgInfo}`,
35
- details: ctx.verbose ? `Workspace root: ${ctx.workspaceRoot}${locationInfo}` : void 0
36
- };
37
- }
38
- return {
39
- category: "workspace",
40
- name: "Monorepo Detection",
41
- status: "pass",
42
- message: "Single project (not a monorepo)"
43
- };
44
- }
45
- /**
46
- * Check if this is a valid workspace.
47
- */
48
- async function checkValidWorkspace(fs, ctx) {
49
- const pathsToCheck = ctx.isMonorepo ? [ctx.packageRoot, ctx.workspaceRoot] : [ctx.workspaceRoot];
50
- for (const root of pathsToCheck) {
51
- const packageJsonPath = fs.join(root, "package.json");
52
- if (await fs.exists(packageJsonPath)) return {
53
- category: "workspace",
54
- name: "Valid Workspace",
55
- status: "pass",
56
- message: "package.json found",
57
- details: ctx.verbose && ctx.isMonorepo ? `Found at: ${root}` : void 0
58
- };
59
- }
60
- return {
61
- category: "workspace",
62
- name: "Valid Workspace",
63
- status: "fail",
64
- message: "No package.json found",
65
- details: "This does not appear to be a Node.js/TypeScript project"
66
- };
67
- }
68
- /**
69
- * Check if contracts directory exists.
70
- *
71
- * In monorepo: checks current package first, then workspace root.
72
- */
73
- async function checkContractsDirectory(fs, ctx) {
74
- const searchRoots = ctx.isMonorepo ? [ctx.packageRoot, ctx.workspaceRoot] : [ctx.workspaceRoot];
75
- const targetRoot = ctx.isMonorepo ? ctx.packageRoot : ctx.workspaceRoot;
76
- for (const root of searchRoots) for (const path of CONTRACT_PATHS) {
77
- const fullPath = fs.join(root, path);
78
- if (await fs.exists(fullPath)) {
79
- const relativeTo = root === ctx.packageRoot ? "package" : "workspace";
80
- return {
81
- category: "workspace",
82
- name: "Contracts Directory",
83
- status: "pass",
84
- message: `Contracts directory found: ${path}`,
85
- details: ctx.isMonorepo ? `Found at ${relativeTo} level` : void 0
86
- };
87
- }
88
- }
89
- const createPath = ctx.isMonorepo ? "src/contracts" : "src/contracts";
90
- const locationHint = ctx.isMonorepo ? ` in package "${ctx.packageName ?? ctx.packageRoot}"` : "";
91
- return {
92
- category: "workspace",
93
- name: "Contracts Directory",
94
- status: "warn",
95
- message: "No contracts directory found",
96
- details: `Create ${createPath}/${locationHint} to organize your specs`,
97
- fix: {
98
- description: `Create ${createPath}/ directory${locationHint}`,
99
- apply: async () => {
100
- try {
101
- const contractsDir = fs.join(targetRoot, "src", "contracts");
102
- await fs.mkdir(contractsDir);
103
- return {
104
- success: true,
105
- message: `Created ${createPath}/`
106
- };
107
- } catch (error) {
108
- return {
109
- success: false,
110
- message: `Failed: ${error instanceof Error ? error.message : String(error)}`
111
- };
112
- }
113
- }
114
- }
115
- };
116
- }
117
- /**
118
- * Check if any contract files exist.
119
- *
120
- * In monorepo: searches from current package root.
121
- */
122
- async function checkContractFiles(fs, ctx) {
123
- try {
124
- const patterns = [
125
- "**/*.contracts.ts",
126
- "**/*.event.ts",
127
- "**/*.presentation.ts",
128
- "**/*.feature.ts"
129
- ];
130
- const searchRoot = ctx.isMonorepo ? ctx.packageRoot : ctx.workspaceRoot;
131
- const files = await fs.glob({
132
- patterns,
133
- ignore: ["node_modules/**", "dist/**"],
134
- cwd: searchRoot
135
- });
136
- if (files.length > 0) {
137
- const locationInfo = ctx.isMonorepo ? " (in current package)" : "";
138
- return {
139
- category: "workspace",
140
- name: "Contract Files",
141
- status: "pass",
142
- message: `Found ${files.length} contract file(s)${locationInfo}`,
143
- details: ctx.verbose ? files.slice(0, 5).join(", ") : void 0
144
- };
145
- }
146
- return {
147
- category: "workspace",
148
- name: "Contract Files",
149
- status: "warn",
150
- message: ctx.isMonorepo ? `No contract files found in package "${ctx.packageName ?? "current"}"` : "No contract files found",
151
- details: "Create specs using \"contractspec create\" or VS Code command"
152
- };
153
- } catch {
154
- return {
155
- category: "workspace",
156
- name: "Contract Files",
157
- status: "skip",
158
- message: "Could not search for contract files"
159
- };
160
- }
161
- }
162
- /**
163
- * Find the config file, checking package level first in monorepos.
164
- */
165
- async function findConfigFile(fs, ctx) {
166
- if (ctx.isMonorepo && ctx.packageRoot !== ctx.workspaceRoot) {
167
- const pkgConfigPath = fs.join(ctx.packageRoot, ".contractsrc.json");
168
- if (await fs.exists(pkgConfigPath)) return {
169
- path: pkgConfigPath,
170
- root: ctx.packageRoot,
171
- level: "package"
172
- };
173
- }
174
- const wsConfigPath = fs.join(ctx.workspaceRoot, ".contractsrc.json");
175
- if (await fs.exists(wsConfigPath)) return {
176
- path: wsConfigPath,
177
- root: ctx.workspaceRoot,
178
- level: "workspace"
179
- };
180
- return null;
181
- }
182
- /**
183
- * Check if output directory is configured and exists.
184
- *
185
- * In monorepo: checks package-level config first, then workspace-level.
186
- * Resolves outputDir relative to the config file location.
187
- */
188
- async function checkOutputDirectory(fs, ctx) {
189
- try {
190
- const configInfo = await findConfigFile(fs, ctx);
191
- if (!configInfo) return {
192
- category: "workspace",
193
- name: "Output Directory",
194
- status: "skip",
195
- message: ctx.isMonorepo ? "No config file found at package or workspace level" : "No config file to check output directory"
196
- };
197
- const content = await fs.readFile(configInfo.path);
198
- const outputDir = JSON.parse(content).outputDir ?? "./src";
199
- const outputPath = fs.join(configInfo.root, outputDir);
200
- const levelInfo = ctx.isMonorepo ? ` (${configInfo.level} level)` : "";
201
- if (await fs.exists(outputPath)) return {
202
- category: "workspace",
203
- name: "Output Directory",
204
- status: "pass",
205
- message: `Output directory exists: ${outputDir}${levelInfo}`,
206
- details: ctx.verbose ? `Resolved to: ${outputPath}` : void 0
207
- };
208
- return {
209
- category: "workspace",
210
- name: "Output Directory",
211
- status: "warn",
212
- message: `Output directory not found: ${outputDir}${levelInfo}`,
213
- details: ctx.verbose ? `Expected at: ${outputPath}` : void 0,
214
- fix: {
215
- description: `Create ${outputDir} directory`,
216
- apply: async () => {
217
- try {
218
- await fs.mkdir(outputPath);
219
- return {
220
- success: true,
221
- message: `Created ${outputDir}`
222
- };
223
- } catch (error) {
224
- return {
225
- success: false,
226
- message: `Failed: ${error instanceof Error ? error.message : String(error)}`
227
- };
228
- }
229
- }
230
- }
231
- };
232
- } catch {
233
- return {
234
- category: "workspace",
235
- name: "Output Directory",
236
- status: "skip",
237
- message: "Could not check output directory"
238
- };
239
- }
240
- }
241
-
242
- //#endregion
243
- export { runWorkspaceChecks };
1
+ const e=[`src/contracts`,`contracts`,`src/specs`,`specs`];async function t(e,t){let o=[];return o.push(n(t)),o.push(await r(e,t)),o.push(await i(e,t)),o.push(await a(e,t)),o.push(await s(e,t)),o}function n(e){if(e.isMonorepo){let t=e.packageName?` in package "${e.packageName}"`:``,n=e.packageRoot===e.workspaceRoot?``:` (package root: ${e.packageRoot})`;return{category:`workspace`,name:`Monorepo Detection`,status:`pass`,message:`Monorepo detected${t}`,details:e.verbose?`Workspace root: ${e.workspaceRoot}${n}`:void 0}}return{category:`workspace`,name:`Monorepo Detection`,status:`pass`,message:`Single project (not a monorepo)`}}async function r(e,t){let n=t.isMonorepo?[t.packageRoot,t.workspaceRoot]:[t.workspaceRoot];for(let r of n){let n=e.join(r,`package.json`);if(await e.exists(n))return{category:`workspace`,name:`Valid Workspace`,status:`pass`,message:`package.json found`,details:t.verbose&&t.isMonorepo?`Found at: ${r}`:void 0}}return{category:`workspace`,name:`Valid Workspace`,status:`fail`,message:`No package.json found`,details:`This does not appear to be a Node.js/TypeScript project`}}async function i(t,n){let r=n.isMonorepo?[n.packageRoot,n.workspaceRoot]:[n.workspaceRoot],i=n.isMonorepo?n.packageRoot:n.workspaceRoot;for(let i of r)for(let r of e){let e=t.join(i,r);if(await t.exists(e)){let e=i===n.packageRoot?`package`:`workspace`;return{category:`workspace`,name:`Contracts Directory`,status:`pass`,message:`Contracts directory found: ${r}`,details:n.isMonorepo?`Found at ${e} level`:void 0}}}let a=(n.isMonorepo,`src/contracts`),o=n.isMonorepo?` in package "${n.packageName??n.packageRoot}"`:``;return{category:`workspace`,name:`Contracts Directory`,status:`warn`,message:`No contracts directory found`,details:`Create ${a}/${o} to organize your specs`,fix:{description:`Create ${a}/ directory${o}`,apply:async()=>{try{let e=t.join(i,`src`,`contracts`);return await t.mkdir(e),{success:!0,message:`Created ${a}/`}}catch(e){return{success:!1,message:`Failed: ${e instanceof Error?e.message:String(e)}`}}}}}}async function a(e,t){try{let n=[`**/*.contracts.ts`,`**/*.event.ts`,`**/*.presentation.ts`,`**/*.feature.ts`],r=t.isMonorepo?t.packageRoot:t.workspaceRoot,i=await e.glob({patterns:n,ignore:[`node_modules/**`,`dist/**`],cwd:r});if(i.length>0){let e=t.isMonorepo?` (in current package)`:``;return{category:`workspace`,name:`Contract Files`,status:`pass`,message:`Found ${i.length} contract file(s)${e}`,details:t.verbose?i.slice(0,5).join(`, `):void 0}}return{category:`workspace`,name:`Contract Files`,status:`warn`,message:t.isMonorepo?`No contract files found in package "${t.packageName??`current`}"`:`No contract files found`,details:`Create specs using "contractspec create" or VS Code command`}}catch{return{category:`workspace`,name:`Contract Files`,status:`skip`,message:`Could not search for contract files`}}}async function o(e,t){if(t.isMonorepo&&t.packageRoot!==t.workspaceRoot){let n=e.join(t.packageRoot,`.contractsrc.json`);if(await e.exists(n))return{path:n,root:t.packageRoot,level:`package`}}let n=e.join(t.workspaceRoot,`.contractsrc.json`);return await e.exists(n)?{path:n,root:t.workspaceRoot,level:`workspace`}:null}async function s(e,t){try{let n=await o(e,t);if(!n)return{category:`workspace`,name:`Output Directory`,status:`skip`,message:t.isMonorepo?`No config file found at package or workspace level`:`No config file to check output directory`};let r=await e.readFile(n.path),i=JSON.parse(r).outputDir??`./src`,a=e.join(n.root,i),s=t.isMonorepo?` (${n.level} level)`:``;return await e.exists(a)?{category:`workspace`,name:`Output Directory`,status:`pass`,message:`Output directory exists: ${i}${s}`,details:t.verbose?`Resolved to: ${a}`:void 0}:{category:`workspace`,name:`Output Directory`,status:`warn`,message:`Output directory not found: ${i}${s}`,details:t.verbose?`Expected at: ${a}`:void 0,fix:{description:`Create ${i} directory`,apply:async()=>{try{return await e.mkdir(a),{success:!0,message:`Created ${i}`}}catch(e){return{success:!1,message:`Failed: ${e instanceof Error?e.message:String(e)}`}}}}}}catch{return{category:`workspace`,name:`Output Directory`,status:`skip`,message:`Could not check output directory`}}}export{t as runWorkspaceChecks};