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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/dist/_virtual/rolldown_runtime.js +1 -22
  2. package/dist/adapters/ai.js +1 -82
  3. package/dist/adapters/factory.js +1 -36
  4. package/dist/adapters/fs.js +1 -118
  5. package/dist/adapters/git.js +1 -54
  6. package/dist/adapters/index.js +1 -7
  7. package/dist/adapters/logger.js +1 -80
  8. package/dist/adapters/watcher.js +1 -69
  9. package/dist/adapters/workspace.js +2 -190
  10. package/dist/ai/agents/claude-code-agent.js +9 -146
  11. package/dist/ai/agents/cursor-agent.js +17 -286
  12. package/dist/ai/agents/index.js +1 -5
  13. package/dist/ai/agents/openai-codex-agent.js +8 -140
  14. package/dist/ai/agents/orchestrator.js +1 -142
  15. package/dist/ai/agents/simple-agent.js +4 -80
  16. package/dist/ai/client.js +1 -162
  17. package/dist/ai/index.js +1 -27
  18. package/dist/ai/prompts/code-generation.js +13 -55
  19. package/dist/ai/prompts/index.js +1 -12
  20. package/dist/ai/prompts/spec-creation.js +20 -61
  21. package/dist/ai/providers.js +1 -40
  22. package/dist/formatters/index.js +1 -18
  23. package/dist/formatters/json.js +1 -71
  24. package/dist/formatters/sarif.js +1 -163
  25. package/dist/formatters/text.js +2 -208
  26. package/dist/index.js +1 -81
  27. package/dist/services/agent-guide/adapters/claude-code.js +3 -144
  28. package/dist/services/agent-guide/adapters/cursor-cli.js +3 -135
  29. package/dist/services/agent-guide/adapters/generic-mcp.js +3 -159
  30. package/dist/services/agent-guide/adapters/index.js +1 -30
  31. package/dist/services/agent-guide/agent-guide-service.js +1 -148
  32. package/dist/services/agent-guide/index.js +1 -5
  33. package/dist/services/build.js +1 -140
  34. package/dist/services/ci-check/ci-check-service.js +1 -393
  35. package/dist/services/ci-check/index.js +1 -2
  36. package/dist/services/ci-check/types.js +1 -28
  37. package/dist/services/clean.js +1 -71
  38. package/dist/services/config.js +1 -76
  39. package/dist/services/deps.js +1 -62
  40. package/dist/services/diff.js +1 -33
  41. package/dist/services/doctor/checks/ai.js +2 -118
  42. package/dist/services/doctor/checks/cli.js +1 -146
  43. package/dist/services/doctor/checks/config.js +1 -170
  44. package/dist/services/doctor/checks/deps.js +1 -180
  45. package/dist/services/doctor/checks/index.js +1 -6
  46. package/dist/services/doctor/checks/mcp.js +1 -144
  47. package/dist/services/doctor/checks/workspace.js +1 -243
  48. package/dist/services/doctor/doctor-service.js +2 -115
  49. package/dist/services/doctor/index.js +1 -2
  50. package/dist/services/doctor/types.js +1 -26
  51. package/dist/services/implementation/discovery.js +2 -143
  52. package/dist/services/implementation/index.js +1 -2
  53. package/dist/services/implementation/resolver.js +1 -223
  54. package/dist/services/index.js +1 -53
  55. package/dist/services/integrity-diagram.js +6 -274
  56. package/dist/services/integrity.js +1 -272
  57. package/dist/services/list.js +1 -35
  58. package/dist/services/openapi/export-service.js +2 -51
  59. package/dist/services/openapi/import-service.js +1 -75
  60. package/dist/services/openapi/index.js +1 -4
  61. package/dist/services/openapi/sync-service.js +1 -121
  62. package/dist/services/openapi/validate-service.js +1 -130
  63. package/dist/services/regenerator.js +1 -23
  64. package/dist/services/registry.js +1 -73
  65. package/dist/services/setup/config-generators.js +26 -113
  66. package/dist/services/setup/file-merger.js +2 -60
  67. package/dist/services/setup/index.js +1 -4
  68. package/dist/services/setup/setup-service.js +1 -95
  69. package/dist/services/setup/targets/agents-md.js +1 -46
  70. package/dist/services/setup/targets/cli-config.js +1 -59
  71. package/dist/services/setup/targets/cursor-rules.js +1 -47
  72. package/dist/services/setup/targets/mcp-claude.js +1 -59
  73. package/dist/services/setup/targets/mcp-cursor.js +1 -58
  74. package/dist/services/setup/targets/vscode-settings.js +1 -62
  75. package/dist/services/setup/types.js +1 -26
  76. package/dist/services/sync.js +1 -62
  77. package/dist/services/test.js +1 -30
  78. package/dist/services/validate-implementation.js +1 -69
  79. package/dist/services/validate.js +1 -47
  80. package/dist/services/verification-cache/adapters/filesystem.js +1 -121
  81. package/dist/services/verification-cache/adapters/in-memory.js +1 -45
  82. package/dist/services/verification-cache/adapters/index.js +1 -3
  83. package/dist/services/verification-cache/adapters/workspace-state.js +1 -90
  84. package/dist/services/verification-cache/cache-service.js +1 -255
  85. package/dist/services/verification-cache/index.js +1 -6
  86. package/dist/services/verification-cache/types.js +1 -15
  87. package/dist/services/verify/ai-verifier.js +9 -336
  88. package/dist/services/verify/behavior-verifier.js +1 -185
  89. package/dist/services/verify/index.js +1 -4
  90. package/dist/services/verify/structure-verifier.js +2 -195
  91. package/dist/services/verify/verify-service.js +3 -203
  92. package/dist/services/watch.js +1 -31
  93. package/dist/services/workspace-info.js +2 -102
  94. package/dist/templates/app-config.template.js +28 -101
  95. package/dist/templates/data-view.template.js +27 -42
  96. package/dist/templates/event.template.js +14 -29
  97. package/dist/templates/experiment.template.js +51 -77
  98. package/dist/templates/handler.template.js +17 -53
  99. package/dist/templates/index.js +1 -36
  100. package/dist/templates/integration.template.js +50 -134
  101. package/dist/templates/knowledge.template.js +21 -62
  102. package/dist/templates/migration.template.js +26 -50
  103. package/dist/templates/operation.template.js +28 -44
  104. package/dist/templates/presentation.template.js +20 -46
  105. package/dist/templates/telemetry.template.js +53 -74
  106. package/dist/templates/workflow-runner.template.js +6 -12
  107. package/dist/templates/workflow.template.js +24 -51
  108. package/package.json +10 -15
  109. package/dist/adapters/ai.d.ts +0 -11
  110. package/dist/adapters/factory.d.ts +0 -28
  111. package/dist/adapters/fs.d.ts +0 -10
  112. package/dist/adapters/git.d.ts +0 -10
  113. package/dist/adapters/logger.d.ts +0 -17
  114. package/dist/adapters/watcher.d.ts +0 -10
  115. package/dist/adapters/workspace.d.ts +0 -93
  116. package/dist/ai/agents/claude-code-agent.d.ts +0 -21
  117. package/dist/ai/agents/cursor-agent.d.ts +0 -67
  118. package/dist/ai/agents/openai-codex-agent.d.ts +0 -21
  119. package/dist/ai/agents/orchestrator.d.ts +0 -49
  120. package/dist/ai/agents/simple-agent.d.ts +0 -16
  121. package/dist/ai/agents/types.d.ts +0 -35
  122. package/dist/ai/client.d.ts +0 -82
  123. package/dist/ai/index.d.ts +0 -16
  124. package/dist/ai/prompts/code-generation.d.ts +0 -25
  125. package/dist/ai/prompts/index.d.ts +0 -9
  126. package/dist/ai/prompts/spec-creation.d.ts +0 -28
  127. package/dist/ai/providers.d.ts +0 -28
  128. package/dist/formatters/index.d.ts +0 -10
  129. package/dist/formatters/json.d.ts +0 -88
  130. package/dist/formatters/sarif.d.ts +0 -100
  131. package/dist/formatters/text.d.ts +0 -34
  132. package/dist/index.d.ts +0 -66
  133. package/dist/libs/ai-providers/dist/factory.js +0 -154
  134. package/dist/libs/ai-providers/dist/index.js +0 -4
  135. package/dist/libs/ai-providers/dist/legacy.js +0 -72
  136. package/dist/libs/ai-providers/dist/models.js +0 -287
  137. package/dist/libs/ai-providers/dist/validation.js +0 -1
  138. package/dist/libs/contracts/dist/capabilities/openbanking.js +0 -88
  139. package/dist/libs/contracts/dist/client/index.js +0 -5
  140. package/dist/libs/contracts/dist/client/react/feature-render.js +0 -2
  141. package/dist/libs/contracts/dist/client/react/form-render.js +0 -4
  142. package/dist/libs/contracts/dist/client/react/index.js +0 -4
  143. package/dist/libs/contracts/dist/contract-registry/index.js +0 -1
  144. package/dist/libs/contracts/dist/contract-registry/schemas.js +0 -60
  145. package/dist/libs/contracts/dist/docs/PUBLISHING.docblock.js +0 -16
  146. package/dist/libs/contracts/dist/docs/accessibility_wcag_compliance_specs.docblock.js +0 -16
  147. package/dist/libs/contracts/dist/docs/index.js +0 -29
  148. package/dist/libs/contracts/dist/docs/presentations.js +0 -71
  149. package/dist/libs/contracts/dist/docs/registry.js +0 -44
  150. package/dist/libs/contracts/dist/docs/tech/PHASE_1_QUICKSTART.docblock.js +0 -16
  151. package/dist/libs/contracts/dist/docs/tech/PHASE_2_AI_NATIVE_OPERATIONS.docblock.js +0 -16
  152. package/dist/libs/contracts/dist/docs/tech/PHASE_3_AUTO_EVOLUTION.docblock.js +0 -16
  153. package/dist/libs/contracts/dist/docs/tech/PHASE_4_PERSONALIZATION_ENGINE.docblock.js +0 -16
  154. package/dist/libs/contracts/dist/docs/tech/PHASE_5_ZERO_TOUCH_OPERATIONS.docblock.js +0 -16
  155. package/dist/libs/contracts/dist/docs/tech/auth/better-auth-nextjs.docblock.js +0 -80
  156. package/dist/libs/contracts/dist/docs/tech/contracts/openapi-export.docblock.js +0 -57
  157. package/dist/libs/contracts/dist/docs/tech/lifecycle-stage-system.docblock.js +0 -16
  158. package/dist/libs/contracts/dist/docs/tech/llm/llm-integration.docblock.js +0 -357
  159. package/dist/libs/contracts/dist/docs/tech/mcp-endpoints.docblock.js +0 -37
  160. package/dist/libs/contracts/dist/docs/tech/presentation-runtime.docblock.js +0 -16
  161. package/dist/libs/contracts/dist/docs/tech/schema/README.docblock.js +0 -20
  162. package/dist/libs/contracts/dist/docs/tech/studio/learning-events.docblock.js +0 -48
  163. package/dist/libs/contracts/dist/docs/tech/studio/learning-journeys.docblock.js +0 -79
  164. package/dist/libs/contracts/dist/docs/tech/studio/platform-admin-panel.docblock.js +0 -84
  165. package/dist/libs/contracts/dist/docs/tech/studio/project-access-teams.docblock.js +0 -45
  166. package/dist/libs/contracts/dist/docs/tech/studio/project-routing.docblock.js +0 -67
  167. package/dist/libs/contracts/dist/docs/tech/studio/sandbox-unlogged.docblock.js +0 -40
  168. package/dist/libs/contracts/dist/docs/tech/studio/team-invitations.docblock.js +0 -69
  169. package/dist/libs/contracts/dist/docs/tech/studio/workspace-ops.docblock.js +0 -47
  170. package/dist/libs/contracts/dist/docs/tech/studio/workspaces.docblock.js +0 -62
  171. package/dist/libs/contracts/dist/docs/tech/telemetry-ingest.docblock.js +0 -155
  172. package/dist/libs/contracts/dist/docs/tech/templates/runtime.docblock.js +0 -20
  173. package/dist/libs/contracts/dist/docs/tech/vscode-extension.docblock.js +0 -101
  174. package/dist/libs/contracts/dist/docs/tech/workflows/overview.docblock.js +0 -20
  175. package/dist/libs/contracts/dist/events.js +0 -8
  176. package/dist/libs/contracts/dist/experiments/evaluator.js +0 -1
  177. package/dist/libs/contracts/dist/index.js +0 -72
  178. package/dist/libs/contracts/dist/install.js +0 -2
  179. package/dist/libs/contracts/dist/integrations/contracts.js +0 -377
  180. package/dist/libs/contracts/dist/integrations/index.js +0 -18
  181. package/dist/libs/contracts/dist/integrations/openbanking/contracts/accounts.js +0 -228
  182. package/dist/libs/contracts/dist/integrations/openbanking/contracts/balances.js +0 -159
  183. package/dist/libs/contracts/dist/integrations/openbanking/contracts/index.js +0 -3
  184. package/dist/libs/contracts/dist/integrations/openbanking/contracts/transactions.js +0 -210
  185. package/dist/libs/contracts/dist/integrations/openbanking/models.js +0 -242
  186. package/dist/libs/contracts/dist/integrations/openbanking/telemetry.js +0 -13
  187. package/dist/libs/contracts/dist/integrations/providers/elevenlabs.js +0 -52
  188. package/dist/libs/contracts/dist/integrations/providers/gcs-storage.js +0 -75
  189. package/dist/libs/contracts/dist/integrations/providers/gmail.js +0 -87
  190. package/dist/libs/contracts/dist/integrations/providers/google-calendar.js +0 -66
  191. package/dist/libs/contracts/dist/integrations/providers/index.js +0 -11
  192. package/dist/libs/contracts/dist/integrations/providers/mistral.js +0 -68
  193. package/dist/libs/contracts/dist/integrations/providers/postmark.js +0 -68
  194. package/dist/libs/contracts/dist/integrations/providers/powens.js +0 -116
  195. package/dist/libs/contracts/dist/integrations/providers/qdrant.js +0 -73
  196. package/dist/libs/contracts/dist/integrations/providers/registry.js +0 -10
  197. package/dist/libs/contracts/dist/integrations/providers/stripe.js +0 -83
  198. package/dist/libs/contracts/dist/integrations/providers/twilio-sms.js +0 -61
  199. package/dist/libs/contracts/dist/jsonschema.js +0 -24
  200. package/dist/libs/contracts/dist/knowledge/contracts.js +0 -306
  201. package/dist/libs/contracts/dist/knowledge/index.js +0 -7
  202. package/dist/libs/contracts/dist/knowledge/spaces/email-threads.js +0 -34
  203. package/dist/libs/contracts/dist/knowledge/spaces/financial-docs.js +0 -34
  204. package/dist/libs/contracts/dist/knowledge/spaces/financial-overview.js +0 -38
  205. package/dist/libs/contracts/dist/knowledge/spaces/index.js +0 -6
  206. package/dist/libs/contracts/dist/knowledge/spaces/product-canon.js +0 -34
  207. package/dist/libs/contracts/dist/knowledge/spaces/support-faq.js +0 -37
  208. package/dist/libs/contracts/dist/knowledge/spaces/uploaded-docs.js +0 -34
  209. package/dist/libs/contracts/dist/llm/exporters.js +0 -352
  210. package/dist/libs/contracts/dist/llm/index.js +0 -2
  211. package/dist/libs/contracts/dist/llm/prompts.js +0 -211
  212. package/dist/libs/contracts/dist/onboarding-base.js +0 -196
  213. package/dist/libs/contracts/dist/openapi.js +0 -75
  214. package/dist/libs/contracts/dist/ownership.js +0 -21
  215. package/dist/libs/contracts/dist/presentations.js +0 -1
  216. package/dist/libs/contracts/dist/presentations.v2.js +0 -11
  217. package/dist/libs/contracts/dist/prompt.js +0 -1
  218. package/dist/libs/contracts/dist/promptRegistry.js +0 -1
  219. package/dist/libs/contracts/dist/regenerator/index.js +0 -2
  220. package/dist/libs/contracts/dist/regenerator/service.js +0 -92
  221. package/dist/libs/contracts/dist/regenerator/utils.js +0 -51
  222. package/dist/libs/contracts/dist/registry.js +0 -208
  223. package/dist/libs/contracts/dist/resources.js +0 -1
  224. package/dist/libs/contracts/dist/schema/dist/EnumType.js +0 -2
  225. package/dist/libs/contracts/dist/schema/dist/FieldType.js +0 -49
  226. package/dist/libs/contracts/dist/schema/dist/ScalarTypeEnum.js +0 -236
  227. package/dist/libs/contracts/dist/schema/dist/SchemaModel.js +0 -34
  228. package/dist/libs/contracts/dist/schema/dist/entity/defineEntity.js +0 -1
  229. package/dist/libs/contracts/dist/schema/dist/entity/index.js +0 -2
  230. package/dist/libs/contracts/dist/schema/dist/entity/types.js +0 -1
  231. package/dist/libs/contracts/dist/schema/dist/index.js +0 -6
  232. package/dist/libs/contracts/dist/server/graphql-pothos.js +0 -6
  233. package/dist/libs/contracts/dist/server/index.js +0 -8
  234. package/dist/libs/contracts/dist/server/mcp/createMcpServer.js +0 -4
  235. package/dist/libs/contracts/dist/server/mcp/registerPresentations.js +0 -2
  236. package/dist/libs/contracts/dist/server/mcp/registerPrompts.js +0 -1
  237. package/dist/libs/contracts/dist/server/mcp/registerResources.js +0 -2
  238. package/dist/libs/contracts/dist/server/mcp/registerTools.js +0 -1
  239. package/dist/libs/contracts/dist/server/provider-mcp.js +0 -1
  240. package/dist/libs/contracts/dist/server/rest-elysia.js +0 -1
  241. package/dist/libs/contracts/dist/server/rest-express.js +0 -1
  242. package/dist/libs/contracts/dist/server/rest-generic.js +0 -1
  243. package/dist/libs/contracts/dist/server/rest-next-app.js +0 -1
  244. package/dist/libs/contracts/dist/server/rest-next-pages.js +0 -1
  245. package/dist/libs/contracts/dist/spec.js +0 -35
  246. package/dist/libs/contracts/dist/telemetry/index.js +0 -1
  247. package/dist/libs/contracts/dist/telemetry/tracker.js +0 -1
  248. package/dist/libs/contracts/dist/tests/index.js +0 -1
  249. package/dist/libs/contracts/dist/tests/runner.js +0 -150
  250. package/dist/libs/contracts/dist/workflow/index.js +0 -1
  251. package/dist/libs/contracts/dist/workflow/runner.js +0 -1
  252. package/dist/libs/contracts-transformers/dist/common/utils.js +0 -47
  253. package/dist/libs/contracts-transformers/dist/openapi/exporter.js +0 -1
  254. package/dist/libs/contracts-transformers/dist/openapi/importer.js +0 -255
  255. package/dist/libs/contracts-transformers/dist/openapi/index.js +0 -4
  256. package/dist/libs/contracts-transformers/dist/openapi/parser.js +0 -231
  257. package/dist/libs/contracts-transformers/dist/openapi/schema-converter.js +0 -201
  258. package/dist/modules/contractspec-workspace/dist/ai/code-generation.js +0 -137
  259. package/dist/modules/contractspec-workspace/dist/ai/spec-creation.js +0 -101
  260. package/dist/modules/contractspec-workspace/dist/analysis/deps/graph.js +0 -84
  261. package/dist/modules/contractspec-workspace/dist/analysis/deps/parse-imports.js +0 -30
  262. package/dist/modules/contractspec-workspace/dist/analysis/diff/semantic.js +0 -96
  263. package/dist/modules/contractspec-workspace/dist/analysis/feature-scan.js +0 -151
  264. package/dist/modules/contractspec-workspace/dist/analysis/spec-scan.js +0 -344
  265. package/dist/modules/contractspec-workspace/dist/analysis/validate/spec-structure.js +0 -122
  266. package/dist/modules/contractspec-workspace/dist/templates/app-config.js +0 -105
  267. package/dist/modules/contractspec-workspace/dist/templates/data-view.js +0 -68
  268. package/dist/modules/contractspec-workspace/dist/templates/event.js +0 -38
  269. package/dist/modules/contractspec-workspace/dist/templates/experiment.js +0 -87
  270. package/dist/modules/contractspec-workspace/dist/templates/handler.js +0 -95
  271. package/dist/modules/contractspec-workspace/dist/templates/integration-utils.js +0 -104
  272. package/dist/modules/contractspec-workspace/dist/templates/integration.js +0 -62
  273. package/dist/modules/contractspec-workspace/dist/templates/knowledge.js +0 -68
  274. package/dist/modules/contractspec-workspace/dist/templates/migration.js +0 -60
  275. package/dist/modules/contractspec-workspace/dist/templates/operation.js +0 -100
  276. package/dist/modules/contractspec-workspace/dist/templates/presentation.js +0 -78
  277. package/dist/modules/contractspec-workspace/dist/templates/telemetry.js +0 -89
  278. package/dist/modules/contractspec-workspace/dist/templates/utils.js +0 -38
  279. package/dist/modules/contractspec-workspace/dist/templates/workflow-runner.js +0 -48
  280. package/dist/modules/contractspec-workspace/dist/templates/workflow.js +0 -67
  281. package/dist/modules/contractspec-workspace/dist/types/generation-types.js +0 -20
  282. package/dist/ports/ai.d.ts +0 -58
  283. package/dist/ports/fs.d.ts +0 -80
  284. package/dist/ports/git.d.ts +0 -32
  285. package/dist/ports/logger.d.ts +0 -87
  286. package/dist/ports/watcher.d.ts +0 -51
  287. package/dist/services/agent-guide/adapters/claude-code.d.ts +0 -34
  288. package/dist/services/agent-guide/adapters/cursor-cli.d.ts +0 -38
  289. package/dist/services/agent-guide/adapters/generic-mcp.d.ts +0 -52
  290. package/dist/services/agent-guide/adapters/index.d.ts +0 -22
  291. package/dist/services/agent-guide/agent-guide-service.d.ts +0 -55
  292. package/dist/services/agent-guide/types.d.ts +0 -57
  293. package/dist/services/build.d.ts +0 -58
  294. package/dist/services/ci-check/ci-check-service.d.ts +0 -15
  295. package/dist/services/ci-check/types.d.ts +0 -142
  296. package/dist/services/clean.d.ts +0 -40
  297. package/dist/services/config.d.ts +0 -25
  298. package/dist/services/deps.d.ts +0 -52
  299. package/dist/services/diff.d.ts +0 -33
  300. package/dist/services/doctor/doctor-service.d.ts +0 -23
  301. package/dist/services/doctor/types.d.ts +0 -117
  302. package/dist/services/implementation/discovery.d.ts +0 -29
  303. package/dist/services/implementation/resolver.d.ts +0 -43
  304. package/dist/services/implementation/types.d.ts +0 -78
  305. package/dist/services/integrity-diagram.d.ts +0 -35
  306. package/dist/services/integrity.d.ts +0 -133
  307. package/dist/services/list.d.ts +0 -30
  308. package/dist/services/openapi/export-service.d.ts +0 -52
  309. package/dist/services/openapi/import-service.d.ts +0 -15
  310. package/dist/services/openapi/sync-service.d.ts +0 -18
  311. package/dist/services/openapi/types.d.ts +0 -184
  312. package/dist/services/openapi/validate-service.d.ts +0 -15
  313. package/dist/services/regenerator.d.ts +0 -17
  314. package/dist/services/registry.d.ts +0 -52
  315. package/dist/services/setup/config-generators.d.ts +0 -41
  316. package/dist/services/setup/file-merger.d.ts +0 -26
  317. package/dist/services/setup/setup-service.d.ts +0 -11
  318. package/dist/services/setup/types.d.ts +0 -84
  319. package/dist/services/sync.d.ts +0 -40
  320. package/dist/services/test.d.ts +0 -14
  321. package/dist/services/validate-implementation.d.ts +0 -31
  322. package/dist/services/validate.d.ts +0 -40
  323. package/dist/services/verification-cache/adapters/filesystem.d.ts +0 -45
  324. package/dist/services/verification-cache/adapters/in-memory.d.ts +0 -26
  325. package/dist/services/verification-cache/adapters/workspace-state.d.ts +0 -48
  326. package/dist/services/verification-cache/cache-service.d.ts +0 -69
  327. package/dist/services/verification-cache/types.d.ts +0 -123
  328. package/dist/services/verify/ai-verifier.d.ts +0 -24
  329. package/dist/services/verify/behavior-verifier.d.ts +0 -11
  330. package/dist/services/verify/structure-verifier.d.ts +0 -11
  331. package/dist/services/verify/types.d.ts +0 -136
  332. package/dist/services/verify/verify-service.d.ts +0 -59
  333. package/dist/services/watch.d.ts +0 -24
  334. package/dist/services/workspace-info.d.ts +0 -61
  335. package/dist/templates/app-config.template.d.ts +0 -6
  336. package/dist/templates/data-view.template.d.ts +0 -6
  337. package/dist/templates/event.template.d.ts +0 -10
  338. package/dist/templates/experiment.template.d.ts +0 -6
  339. package/dist/templates/handler.template.d.ts +0 -15
  340. package/dist/templates/index.d.ts +0 -20
  341. package/dist/templates/integration.template.d.ts +0 -6
  342. package/dist/templates/knowledge.template.d.ts +0 -6
  343. package/dist/templates/migration.template.d.ts +0 -6
  344. package/dist/templates/operation.template.d.ts +0 -10
  345. package/dist/templates/presentation.template.d.ts +0 -10
  346. package/dist/templates/telemetry.template.d.ts +0 -6
  347. package/dist/templates/workflow-runner.template.d.ts +0 -15
  348. package/dist/templates/workflow.template.d.ts +0 -6
  349. package/dist/types/config.d.ts +0 -33
  350. package/dist/types.d.ts +0 -323
@@ -1,33 +1 @@
1
- import { computeSemanticDiff } from "../modules/contractspec-workspace/dist/analysis/diff/semantic.js";
2
-
3
- //#region src/services/diff.ts
4
- /**
5
- * Diff service.
6
- */
7
- /**
8
- * Compare two spec files semantically.
9
- */
10
- async function compareSpecs(spec1Path, spec2Path, adapters, options = {}) {
11
- const { fs, git } = adapters;
12
- if (!await fs.exists(spec1Path)) throw new Error(`Spec file not found: ${spec1Path}`);
13
- const spec1Code = await fs.readFile(spec1Path);
14
- let spec2Code;
15
- let spec2Label;
16
- if (options.baseline) {
17
- spec2Code = await git.showFile(options.baseline, spec1Path);
18
- spec2Label = `${options.baseline}:${spec1Path}`;
19
- } else {
20
- if (!await fs.exists(spec2Path)) throw new Error(`Spec file not found: ${spec2Path}`);
21
- spec2Code = await fs.readFile(spec2Path);
22
- spec2Label = spec2Path;
23
- }
24
- const differences = computeSemanticDiff(spec1Code, spec1Path, spec2Code, spec2Label, { breakingOnly: options.breakingOnly });
25
- return {
26
- spec1: spec1Path,
27
- spec2: spec2Label,
28
- differences
29
- };
30
- }
31
-
32
- //#endregion
33
- export { compareSpecs };
1
+ import{computeSemanticDiff as e}from"@lssm/module.contractspec-workspace";async function t(t,n,r,i={}){let{fs:a,git:o}=r;if(!await a.exists(t))throw Error(`Spec file not found: ${t}`);let s=await a.readFile(t),c,l;if(i.baseline)c=await o.showFile(i.baseline,t),l=`${i.baseline}:${t}`;else{if(!await a.exists(n))throw Error(`Spec file not found: ${n}`);c=await a.readFile(n),l=n}let u=e(s,t,c,l,{breakingOnly:i.breakingOnly});return{spec1:t,spec2:l,differences:u}}export{t as compareSpecs};
@@ -1,118 +1,2 @@
1
- //#region src/services/doctor/checks/ai.ts
2
- /**
3
- * Run AI provider-related health checks.
4
- */
5
- async function runAiChecks(fs, ctx, prompts) {
6
- const results = [];
7
- const providerResult = await checkAiProvider(fs, ctx);
8
- results.push(providerResult);
9
- if (providerResult.status === "pass") results.push(await checkApiKey(fs, ctx, prompts));
10
- return results;
11
- }
12
- /**
13
- * Check which AI provider is configured.
14
- */
15
- async function checkAiProvider(fs, ctx) {
16
- const configPath = fs.join(ctx.workspaceRoot, ".contractsrc.json");
17
- try {
18
- if (!await fs.exists(configPath)) return {
19
- category: "ai",
20
- name: "AI Provider",
21
- status: "skip",
22
- message: "No config file found"
23
- };
24
- const content = await fs.readFile(configPath);
25
- const config = JSON.parse(content);
26
- return {
27
- category: "ai",
28
- name: "AI Provider",
29
- status: "pass",
30
- message: `Provider: ${config.aiProvider ?? "claude"}, Model: ${config.aiModel ?? "default"}`
31
- };
32
- } catch {
33
- return {
34
- category: "ai",
35
- name: "AI Provider",
36
- status: "skip",
37
- message: "Could not read AI config"
38
- };
39
- }
40
- }
41
- /**
42
- * Check if API key is set for the configured provider.
43
- */
44
- async function checkApiKey(fs, ctx, prompts) {
45
- const configPath = fs.join(ctx.workspaceRoot, ".contractsrc.json");
46
- try {
47
- const content = await fs.readFile(configPath);
48
- const provider = JSON.parse(content).aiProvider ?? "claude";
49
- const envVar = {
50
- claude: "ANTHROPIC_API_KEY",
51
- openai: "OPENAI_API_KEY",
52
- ollama: "",
53
- custom: "CONTRACTSPEC_LLM_API_KEY"
54
- }[provider];
55
- if (!envVar) return {
56
- category: "ai",
57
- name: "API Key",
58
- status: "pass",
59
- message: `${provider} does not require an API key`
60
- };
61
- if (!!process.env[envVar]) return {
62
- category: "ai",
63
- name: "API Key",
64
- status: "pass",
65
- message: `${envVar} is set`
66
- };
67
- return {
68
- category: "ai",
69
- name: "API Key",
70
- status: "warn",
71
- message: `${envVar} not set`,
72
- details: `Set ${envVar} in your environment to use AI features`,
73
- fix: prompts ? {
74
- description: `Set ${envVar} environment variable`,
75
- apply: async () => {
76
- const key = await prompts.input(`Enter your ${provider} API key:`, { password: true });
77
- if (!key) return {
78
- success: false,
79
- message: "No API key provided"
80
- };
81
- const envPath = fs.join(ctx.workspaceRoot, ".env");
82
- try {
83
- let envContent = "";
84
- if (await fs.exists(envPath)) {
85
- envContent = await fs.readFile(envPath);
86
- if (envContent.includes(`${envVar}=`)) return {
87
- success: false,
88
- message: `${envVar} already in .env, update manually`
89
- };
90
- envContent += "\n";
91
- }
92
- envContent += `${envVar}=${key}\n`;
93
- await fs.writeFile(envPath, envContent);
94
- return {
95
- success: true,
96
- message: `Added ${envVar} to .env (restart required)`
97
- };
98
- } catch (error) {
99
- return {
100
- success: false,
101
- message: `Failed: ${error instanceof Error ? error.message : String(error)}`
102
- };
103
- }
104
- }
105
- } : void 0
106
- };
107
- } catch {
108
- return {
109
- category: "ai",
110
- name: "API Key",
111
- status: "skip",
112
- message: "Could not check API key"
113
- };
114
- }
115
- }
116
-
117
- //#endregion
118
- export { runAiChecks };
1
+ async function e(e,r,i){let a=[],o=await t(e,r);return a.push(o),o.status===`pass`&&a.push(await n(e,r,i)),a}async function t(e,t){let n=e.join(t.workspaceRoot,`.contractsrc.json`);try{if(!await e.exists(n))return{category:`ai`,name:`AI Provider`,status:`skip`,message:`No config file found`};let t=await e.readFile(n),r=JSON.parse(t);return{category:`ai`,name:`AI Provider`,status:`pass`,message:`Provider: ${r.aiProvider??`claude`}, Model: ${r.aiModel??`default`}`}}catch{return{category:`ai`,name:`AI Provider`,status:`skip`,message:`Could not read AI config`}}}async function n(e,t,n){let r=e.join(t.workspaceRoot,`.contractsrc.json`);try{let i=await e.readFile(r),a=JSON.parse(i).aiProvider??`claude`,o={claude:`ANTHROPIC_API_KEY`,openai:`OPENAI_API_KEY`,ollama:``,custom:`CONTRACTSPEC_LLM_API_KEY`}[a];return o?process.env[o]?{category:`ai`,name:`API Key`,status:`pass`,message:`${o} is set`}:{category:`ai`,name:`API Key`,status:`warn`,message:`${o} not set`,details:`Set ${o} in your environment to use AI features`,fix:n?{description:`Set ${o} environment variable`,apply:async()=>{let r=await n.input(`Enter your ${a} API key:`,{password:!0});if(!r)return{success:!1,message:`No API key provided`};let i=e.join(t.workspaceRoot,`.env`);try{let t=``;if(await e.exists(i)){if(t=await e.readFile(i),t.includes(`${o}=`))return{success:!1,message:`${o} already in .env, update manually`};t+=`
2
+ `}return t+=`${o}=${r}\n`,await e.writeFile(i,t),{success:!0,message:`Added ${o} to .env (restart required)`}}catch(e){return{success:!1,message:`Failed: ${e instanceof Error?e.message:String(e)}`}}}}:void 0}:{category:`ai`,name:`API Key`,status:`pass`,message:`${a} does not require an API key`}}catch{return{category:`ai`,name:`API Key`,status:`skip`,message:`Could not check API key`}}}export{e as runAiChecks};
@@ -1,146 +1 @@
1
- import { exec } from "node:child_process";
2
- import { promisify } from "node:util";
3
-
4
- //#region src/services/doctor/checks/cli.ts
5
- /**
6
- * CLI installation health checks.
7
- */
8
- const execAsync = promisify(exec);
9
- /**
10
- * Run CLI-related health checks.
11
- */
12
- async function runCliChecks(fs, ctx) {
13
- const results = [];
14
- results.push(await checkCliAccessible(ctx));
15
- results.push(await checkCliVersion(ctx));
16
- results.push(await checkCliInstallLocation(fs, ctx));
17
- return results;
18
- }
19
- /**
20
- * Check if the CLI is accessible.
21
- */
22
- async function checkCliAccessible(ctx) {
23
- try {
24
- await execAsync("npx contractspec --version", {
25
- cwd: ctx.workspaceRoot,
26
- timeout: 1e4
27
- });
28
- return {
29
- category: "cli",
30
- name: "CLI Accessible",
31
- status: "pass",
32
- message: "ContractSpec CLI is accessible"
33
- };
34
- } catch {
35
- return {
36
- category: "cli",
37
- name: "CLI Accessible",
38
- status: "fail",
39
- message: "ContractSpec CLI is not accessible",
40
- details: "Could not run \"npx contractspec --version\"",
41
- fix: {
42
- description: "Install ContractSpec CLI globally",
43
- apply: async () => {
44
- try {
45
- await execAsync("npm install -g @lssm/app.cli-contracts", {
46
- cwd: ctx.workspaceRoot,
47
- timeout: 6e4
48
- });
49
- return {
50
- success: true,
51
- message: "CLI installed globally"
52
- };
53
- } catch (error) {
54
- return {
55
- success: false,
56
- message: `Failed to install: ${error instanceof Error ? error.message : String(error)}`
57
- };
58
- }
59
- }
60
- }
61
- };
62
- }
63
- }
64
- /**
65
- * Check CLI version.
66
- */
67
- async function checkCliVersion(ctx) {
68
- try {
69
- const { stdout } = await execAsync("npx contractspec --version", {
70
- cwd: ctx.workspaceRoot,
71
- timeout: 1e4
72
- });
73
- return {
74
- category: "cli",
75
- name: "CLI Version",
76
- status: "pass",
77
- message: `CLI version: ${stdout.trim()}`
78
- };
79
- } catch {
80
- return {
81
- category: "cli",
82
- name: "CLI Version",
83
- status: "skip",
84
- message: "Could not determine CLI version"
85
- };
86
- }
87
- }
88
- /**
89
- * Check if CLI is installed locally in the project.
90
- */
91
- async function checkCliInstallLocation(fs, ctx) {
92
- const packageJsonPath = fs.join(ctx.workspaceRoot, "package.json");
93
- try {
94
- if (!await fs.exists(packageJsonPath)) return {
95
- category: "cli",
96
- name: "Local Installation",
97
- status: "skip",
98
- message: "No package.json found"
99
- };
100
- const content = await fs.readFile(packageJsonPath);
101
- const pkg = JSON.parse(content);
102
- if (pkg.dependencies?.["@lssm/app.cli-contracts"] !== void 0 || pkg.devDependencies?.["@lssm/app.cli-contracts"] !== void 0) return {
103
- category: "cli",
104
- name: "Local Installation",
105
- status: "pass",
106
- message: "CLI is installed as a project dependency"
107
- };
108
- return {
109
- category: "cli",
110
- name: "Local Installation",
111
- status: "warn",
112
- message: "CLI is not installed as a project dependency",
113
- details: "Consider adding @lssm/app.cli-contracts to devDependencies",
114
- fix: {
115
- description: "Add CLI as a dev dependency",
116
- apply: async () => {
117
- try {
118
- await execAsync("npm install -D @lssm/app.cli-contracts", {
119
- cwd: ctx.workspaceRoot,
120
- timeout: 6e4
121
- });
122
- return {
123
- success: true,
124
- message: "CLI added as dev dependency"
125
- };
126
- } catch (error) {
127
- return {
128
- success: false,
129
- message: `Failed to install: ${error instanceof Error ? error.message : String(error)}`
130
- };
131
- }
132
- }
133
- }
134
- };
135
- } catch {
136
- return {
137
- category: "cli",
138
- name: "Local Installation",
139
- status: "skip",
140
- message: "Could not check local installation"
141
- };
142
- }
143
- }
144
-
145
- //#endregion
146
- export { runCliChecks };
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}async function i(e){try{return await n(`npx contractspec --version`,{cwd:e.workspaceRoot,timeout:1e4}),{category:`cli`,name:`CLI Accessible`,status:`pass`,message:`ContractSpec CLI is accessible`}}catch{return{category:`cli`,name:`CLI Accessible`,status:`fail`,message:`ContractSpec CLI is not accessible`,details:`Could not run "npx contractspec --version"`,fix:{description:`Install ContractSpec CLI globally`,apply:async()=>{try{return await n(`npm install -g @lssm/app.cli-contracts`,{cwd:e.workspaceRoot,timeout:6e4}),{success:!0,message:`CLI installed globally`}}catch(e){return{success:!1,message:`Failed to install: ${e instanceof Error?e.message:String(e)}`}}}}}}}async function a(e){try{let{stdout:t}=await n(`npx contractspec --version`,{cwd:e.workspaceRoot,timeout:1e4});return{category:`cli`,name:`CLI Version`,status:`pass`,message:`CLI version: ${t.trim()}`}}catch{return{category:`cli`,name:`CLI Version`,status:`skip`,message:`Could not determine CLI version`}}}async function o(e,t){let r=e.join(t.workspaceRoot,`package.json`);try{if(!await e.exists(r))return{category:`cli`,name:`Local Installation`,status:`skip`,message:`No package.json found`};let i=await e.readFile(r),a=JSON.parse(i);return a.dependencies?.[`@lssm/app.cli-contracts`]!==void 0||a.devDependencies?.[`@lssm/app.cli-contracts`]!==void 0?{category:`cli`,name:`Local Installation`,status:`pass`,message:`CLI is installed as a project dependency`}:{category:`cli`,name:`Local Installation`,status:`warn`,message:`CLI is not installed as a project dependency`,details:`Consider adding @lssm/app.cli-contracts to devDependencies`,fix:{description:`Add CLI as a dev dependency`,apply:async()=>{try{return await n(`npm install -D @lssm/app.cli-contracts`,{cwd:t.workspaceRoot,timeout:6e4}),{success:!0,message:`CLI added as dev dependency`}}catch(e){return{success:!1,message:`Failed to install: ${e instanceof Error?e.message:String(e)}`}}}}}}catch{return{category:`cli`,name:`Local Installation`,status:`skip`,message:`Could not check local installation`}}}export{r as runCliChecks};
@@ -1,170 +1 @@
1
- import { generateContractsrcConfig } from "../../setup/config-generators.js";
2
- import { formatJson } from "../../setup/file-merger.js";
3
-
4
- //#region src/services/doctor/checks/config.ts
5
- /**
6
- * Run configuration-related health checks.
7
- */
8
- async function runConfigChecks(fs, ctx) {
9
- const results = [];
10
- results.push(await checkContractsrcExists(fs, ctx));
11
- results.push(await checkContractsrcValid(fs, ctx));
12
- results.push(await checkContractsrcFields(fs, ctx));
13
- return results;
14
- }
15
- /**
16
- * Check if .contractsrc.json exists.
17
- */
18
- async function checkContractsrcExists(fs, ctx) {
19
- const configPath = fs.join(ctx.workspaceRoot, ".contractsrc.json");
20
- if (await fs.exists(configPath)) return {
21
- category: "config",
22
- name: "Config File Exists",
23
- status: "pass",
24
- message: ".contractsrc.json found"
25
- };
26
- return {
27
- category: "config",
28
- name: "Config File Exists",
29
- status: "fail",
30
- message: ".contractsrc.json not found",
31
- fix: {
32
- description: "Create .contractsrc.json with defaults",
33
- apply: async () => {
34
- try {
35
- const defaults = generateContractsrcConfig({
36
- workspaceRoot: ctx.workspaceRoot,
37
- interactive: false,
38
- targets: []
39
- });
40
- await fs.writeFile(configPath, formatJson(defaults));
41
- return {
42
- success: true,
43
- message: "Created .contractsrc.json"
44
- };
45
- } catch (error) {
46
- return {
47
- success: false,
48
- message: `Failed to create: ${error instanceof Error ? error.message : String(error)}`
49
- };
50
- }
51
- }
52
- }
53
- };
54
- }
55
- /**
56
- * Check if .contractsrc.json is valid JSON.
57
- */
58
- async function checkContractsrcValid(fs, ctx) {
59
- const configPath = fs.join(ctx.workspaceRoot, ".contractsrc.json");
60
- if (!await fs.exists(configPath)) return {
61
- category: "config",
62
- name: "Config Valid JSON",
63
- status: "skip",
64
- message: "Config file does not exist"
65
- };
66
- try {
67
- const content = await fs.readFile(configPath);
68
- JSON.parse(content);
69
- return {
70
- category: "config",
71
- name: "Config Valid JSON",
72
- status: "pass",
73
- message: ".contractsrc.json is valid JSON"
74
- };
75
- } catch (error) {
76
- return {
77
- category: "config",
78
- name: "Config Valid JSON",
79
- status: "fail",
80
- message: ".contractsrc.json is not valid JSON",
81
- details: error instanceof Error ? error.message : String(error),
82
- fix: {
83
- description: "Replace with valid default config",
84
- apply: async () => {
85
- try {
86
- const defaults = generateContractsrcConfig({
87
- workspaceRoot: ctx.workspaceRoot,
88
- interactive: false,
89
- targets: []
90
- });
91
- await fs.writeFile(configPath, formatJson(defaults));
92
- return {
93
- success: true,
94
- message: "Replaced with valid config"
95
- };
96
- } catch (err) {
97
- return {
98
- success: false,
99
- message: `Failed: ${err instanceof Error ? err.message : String(err)}`
100
- };
101
- }
102
- }
103
- }
104
- };
105
- }
106
- }
107
- /**
108
- * Check required fields in .contractsrc.json.
109
- */
110
- async function checkContractsrcFields(fs, ctx) {
111
- const configPath = fs.join(ctx.workspaceRoot, ".contractsrc.json");
112
- if (!await fs.exists(configPath)) return {
113
- category: "config",
114
- name: "Config Fields",
115
- status: "skip",
116
- message: "Config file does not exist"
117
- };
118
- try {
119
- const content = await fs.readFile(configPath);
120
- const config = JSON.parse(content);
121
- const missingFields = [];
122
- if (!config["outputDir"]) missingFields.push("outputDir");
123
- if (!config["conventions"]) missingFields.push("conventions");
124
- if (missingFields.length === 0) return {
125
- category: "config",
126
- name: "Config Fields",
127
- status: "pass",
128
- message: "All recommended fields present"
129
- };
130
- return {
131
- category: "config",
132
- name: "Config Fields",
133
- status: "warn",
134
- message: `Missing recommended fields: ${missingFields.join(", ")}`,
135
- fix: {
136
- description: "Add missing fields with defaults",
137
- apply: async () => {
138
- try {
139
- const defaults = generateContractsrcConfig({
140
- workspaceRoot: ctx.workspaceRoot,
141
- interactive: false,
142
- targets: []
143
- });
144
- for (const field of missingFields) if (defaults[field] !== void 0) config[field] = defaults[field];
145
- await fs.writeFile(configPath, formatJson(config));
146
- return {
147
- success: true,
148
- message: "Added missing fields"
149
- };
150
- } catch (err) {
151
- return {
152
- success: false,
153
- message: `Failed: ${err instanceof Error ? err.message : String(err)}`
154
- };
155
- }
156
- }
157
- }
158
- };
159
- } catch {
160
- return {
161
- category: "config",
162
- name: "Config Fields",
163
- status: "skip",
164
- message: "Could not parse config"
165
- };
166
- }
167
- }
168
-
169
- //#endregion
170
- export { runConfigChecks };
1
+ import{generateContractsrcConfig as e}from"../../setup/config-generators.js";import{formatJson as t}from"../../setup/file-merger.js";async function n(e,t){let n=[];return n.push(await r(e,t)),n.push(await i(e,t)),n.push(await a(e,t)),n}async function r(n,r){let i=n.join(r.workspaceRoot,`.contractsrc.json`);return await n.exists(i)?{category:`config`,name:`Config File Exists`,status:`pass`,message:`.contractsrc.json found`}:{category:`config`,name:`Config File Exists`,status:`fail`,message:`.contractsrc.json not found`,fix:{description:`Create .contractsrc.json with defaults`,apply:async()=>{try{let a=e({workspaceRoot:r.workspaceRoot,interactive:!1,targets:[]});return await n.writeFile(i,t(a)),{success:!0,message:`Created .contractsrc.json`}}catch(e){return{success:!1,message:`Failed to create: ${e instanceof Error?e.message:String(e)}`}}}}}}async function i(n,r){let i=n.join(r.workspaceRoot,`.contractsrc.json`);if(!await n.exists(i))return{category:`config`,name:`Config Valid JSON`,status:`skip`,message:`Config file does not exist`};try{let e=await n.readFile(i);return JSON.parse(e),{category:`config`,name:`Config Valid JSON`,status:`pass`,message:`.contractsrc.json is valid JSON`}}catch(a){return{category:`config`,name:`Config Valid JSON`,status:`fail`,message:`.contractsrc.json is not valid JSON`,details:a instanceof Error?a.message:String(a),fix:{description:`Replace with valid default config`,apply:async()=>{try{let a=e({workspaceRoot:r.workspaceRoot,interactive:!1,targets:[]});return await n.writeFile(i,t(a)),{success:!0,message:`Replaced with valid config`}}catch(e){return{success:!1,message:`Failed: ${e instanceof Error?e.message:String(e)}`}}}}}}}async function a(n,r){let i=n.join(r.workspaceRoot,`.contractsrc.json`);if(!await n.exists(i))return{category:`config`,name:`Config Fields`,status:`skip`,message:`Config file does not exist`};try{let a=await n.readFile(i),o=JSON.parse(a),s=[];return o.outputDir||s.push(`outputDir`),o.conventions||s.push(`conventions`),s.length===0?{category:`config`,name:`Config Fields`,status:`pass`,message:`All recommended fields present`}:{category:`config`,name:`Config Fields`,status:`warn`,message:`Missing recommended fields: ${s.join(`, `)}`,fix:{description:`Add missing fields with defaults`,apply:async()=>{try{let a=e({workspaceRoot:r.workspaceRoot,interactive:!1,targets:[]});for(let e of s)a[e]!==void 0&&(o[e]=a[e]);return await n.writeFile(i,t(o)),{success:!0,message:`Added missing fields`}}catch(e){return{success:!1,message:`Failed: ${e instanceof Error?e.message:String(e)}`}}}}}}catch{return{category:`config`,name:`Config Fields`,status:`skip`,message:`Could not parse config`}}}export{n as runConfigChecks};
@@ -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";