@contractspec/lib.contracts-spec 2.0.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 (1058) hide show
  1. package/README.md +3 -0
  2. package/dist/app-config/app-config.capability.d.ts +1 -0
  3. package/dist/app-config/app-config.capability.js +730 -0
  4. package/dist/app-config/app-config.contracts.d.ts +239 -0
  5. package/dist/app-config/app-config.contracts.js +713 -0
  6. package/dist/app-config/app-config.contracts.test.d.ts +1 -0
  7. package/dist/app-config/app-config.feature.d.ts +5 -0
  8. package/dist/app-config/app-config.feature.js +255 -0
  9. package/dist/app-config/branding.d.ts +52 -0
  10. package/dist/app-config/branding.js +1 -0
  11. package/dist/app-config/branding.test.d.ts +1 -0
  12. package/dist/app-config/docs/app-config.docblock.d.ts +2 -0
  13. package/dist/app-config/docs/app-config.docblock.js +383 -0
  14. package/dist/app-config/events.d.ts +115 -0
  15. package/dist/app-config/events.js +386 -0
  16. package/dist/app-config/events.test.d.ts +1 -0
  17. package/dist/app-config/index.d.ts +9 -0
  18. package/dist/app-config/index.js +2899 -0
  19. package/dist/app-config/lifecycle-contracts.d.ts +265 -0
  20. package/dist/app-config/lifecycle-contracts.js +870 -0
  21. package/dist/app-config/lifecycle-contracts.test.d.ts +1 -0
  22. package/dist/app-config/lifecycle.d.ts +23 -0
  23. package/dist/app-config/lifecycle.js +1 -0
  24. package/dist/app-config/lifecycle.test.d.ts +1 -0
  25. package/dist/app-config/runtime.d.ts +111 -0
  26. package/dist/app-config/runtime.js +734 -0
  27. package/dist/app-config/runtime.test.d.ts +1 -0
  28. package/dist/app-config/spec.d.ts +169 -0
  29. package/dist/app-config/spec.js +229 -0
  30. package/dist/app-config/spec.test.d.ts +1 -0
  31. package/dist/app-config/validation.d.ts +43 -0
  32. package/dist/app-config/validation.js +650 -0
  33. package/dist/app-config/validation.test.d.ts +1 -0
  34. package/dist/capabilities/capabilities.d.ts +96 -0
  35. package/dist/capabilities/capabilities.js +217 -0
  36. package/dist/capabilities/capabilities.test.d.ts +1 -0
  37. package/dist/capabilities/context.d.ts +110 -0
  38. package/dist/capabilities/context.js +101 -0
  39. package/dist/capabilities/context.test.d.ts +1 -0
  40. package/dist/capabilities/docs/capabilities.docblock.d.ts +2 -0
  41. package/dist/capabilities/docs/capabilities.docblock.js +353 -0
  42. package/dist/capabilities/guards.d.ts +121 -0
  43. package/dist/capabilities/guards.js +177 -0
  44. package/dist/capabilities/index.d.ts +6 -0
  45. package/dist/capabilities/index.js +739 -0
  46. package/dist/capabilities/meeting-recorder.d.ts +5 -0
  47. package/dist/capabilities/meeting-recorder.js +154 -0
  48. package/dist/capabilities/openbanking.d.ts +5 -0
  49. package/dist/capabilities/openbanking.js +166 -0
  50. package/dist/capabilities/validation.d.ts +79 -0
  51. package/dist/capabilities/validation.js +185 -0
  52. package/dist/capabilities/validation.test.d.ts +1 -0
  53. package/dist/contract-registry/index.d.ts +3 -0
  54. package/dist/contract-registry/index.js +129 -0
  55. package/dist/contract-registry/schemas.d.ts +120 -0
  56. package/dist/contract-registry/schemas.js +129 -0
  57. package/dist/contract-registry/schemas.test.d.ts +1 -0
  58. package/dist/contract-registry/types.d.ts +42 -0
  59. package/dist/contract-registry/types.js +1 -0
  60. package/dist/data-views/data-views.d.ts +4 -0
  61. package/dist/data-views/data-views.js +232 -0
  62. package/dist/data-views/data-views.test.d.ts +1 -0
  63. package/dist/data-views/docs/data-views.docblock.d.ts +2 -0
  64. package/dist/data-views/docs/data-views.docblock.js +164 -0
  65. package/dist/data-views/index.d.ts +4 -0
  66. package/dist/data-views/index.js +232 -0
  67. package/dist/data-views/query-generator.d.ts +35 -0
  68. package/dist/data-views/query-generator.js +89 -0
  69. package/dist/data-views/registry.d.ts +12 -0
  70. package/dist/data-views/registry.js +226 -0
  71. package/dist/data-views/registry.test.d.ts +1 -0
  72. package/dist/data-views/report/contractVerificationTable.d.ts +4 -0
  73. package/dist/data-views/report/contractVerificationTable.js +240 -0
  74. package/dist/data-views/report/contractVerificationTable.test.d.ts +1 -0
  75. package/dist/data-views/runtime.d.ts +25 -0
  76. package/dist/data-views/runtime.js +108 -0
  77. package/dist/data-views/runtime.test.d.ts +1 -0
  78. package/dist/data-views/spec.d.ts +22 -0
  79. package/dist/data-views/spec.js +38 -0
  80. package/dist/data-views/spec.test.d.ts +1 -0
  81. package/dist/data-views/types.d.ts +152 -0
  82. package/dist/data-views/types.js +1 -0
  83. package/dist/data-views/types.test.d.ts +1 -0
  84. package/dist/docs/accessibility_wcag_compliance_specs.docblock.d.ts +2 -0
  85. package/dist/docs/accessibility_wcag_compliance_specs.docblock.js +513 -0
  86. package/dist/docs/capabilities/documentationSystem.capability.d.ts +1 -0
  87. package/dist/docs/capabilities/documentationSystem.capability.js +784 -0
  88. package/dist/docs/capabilities/index.d.ts +1 -0
  89. package/dist/docs/capabilities/index.js +784 -0
  90. package/dist/docs/commands/docsGenerate.command.d.ts +88 -0
  91. package/dist/docs/commands/docsGenerate.command.js +802 -0
  92. package/dist/docs/commands/docsPublish.command.d.ts +57 -0
  93. package/dist/docs/commands/docsPublish.command.js +781 -0
  94. package/dist/docs/commands/index.d.ts +2 -0
  95. package/dist/docs/commands/index.js +906 -0
  96. package/dist/docs/constants.d.ts +4 -0
  97. package/dist/docs/constants.js +78 -0
  98. package/dist/docs/contracts.d.ts +430 -0
  99. package/dist/docs/contracts.js +1611 -0
  100. package/dist/docs/ensure-docblocks.d.ts +1 -0
  101. package/dist/docs/ensure-docblocks.js +264 -0
  102. package/dist/docs/events/docsGenerated.event.d.ts +56 -0
  103. package/dist/docs/events/docsGenerated.event.js +533 -0
  104. package/dist/docs/events/docsPublished.event.d.ts +64 -0
  105. package/dist/docs/events/docsPublished.event.js +534 -0
  106. package/dist/docs/events/index.d.ts +2 -0
  107. package/dist/docs/events/index.js +567 -0
  108. package/dist/docs/forms/docsSearch.form.d.ts +16 -0
  109. package/dist/docs/forms/docsSearch.form.js +676 -0
  110. package/dist/docs/forms/index.d.ts +1 -0
  111. package/dist/docs/forms/index.js +676 -0
  112. package/dist/docs/index.d.ts +40 -0
  113. package/dist/docs/index.js +4719 -0
  114. package/dist/docs/meta.docs.d.ts +2 -0
  115. package/dist/docs/meta.docs.js +176 -0
  116. package/dist/docs/presentations/docsLayout.presentation.d.ts +2 -0
  117. package/dist/docs/presentations/docsLayout.presentation.js +527 -0
  118. package/dist/docs/presentations/docsReferencePage.presentation.d.ts +2 -0
  119. package/dist/docs/presentations/docsReferencePage.presentation.js +527 -0
  120. package/dist/docs/presentations/index.d.ts +2 -0
  121. package/dist/docs/presentations/index.js +555 -0
  122. package/dist/docs/presentations.d.ts +27 -0
  123. package/dist/docs/presentations.js +97 -0
  124. package/dist/docs/presentations.test.d.ts +1 -0
  125. package/dist/docs/queries/contractReference.query.d.ts +211 -0
  126. package/dist/docs/queries/contractReference.query.js +752 -0
  127. package/dist/docs/queries/docsIndex.query.d.ts +266 -0
  128. package/dist/docs/queries/docsIndex.query.js +752 -0
  129. package/dist/docs/queries/index.d.ts +2 -0
  130. package/dist/docs/queries/index.js +827 -0
  131. package/dist/docs/registry.d.ts +19 -0
  132. package/dist/docs/registry.js +153 -0
  133. package/dist/docs/registry.test.d.ts +1 -0
  134. package/dist/docs/tech/auth/better-auth-nextjs.docblock.d.ts +2 -0
  135. package/dist/docs/tech/auth/better-auth-nextjs.docblock.js +221 -0
  136. package/dist/docs/tech/cli.docblock.d.ts +2 -0
  137. package/dist/docs/tech/cli.docblock.js +291 -0
  138. package/dist/docs/tech/contracts/README.docblock.d.ts +2 -0
  139. package/dist/docs/tech/contracts/README.docblock.js +164 -0
  140. package/dist/docs/tech/contracts/migrations.docblock.d.ts +2 -0
  141. package/dist/docs/tech/contracts/migrations.docblock.js +164 -0
  142. package/dist/docs/tech/contracts/openapi-export.docblock.d.ts +2 -0
  143. package/dist/docs/tech/contracts/openapi-export.docblock.js +201 -0
  144. package/dist/docs/tech/contracts/openapi-import.docblock.d.ts +2 -0
  145. package/dist/docs/tech/contracts/openapi-import.docblock.js +207 -0
  146. package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.d.ts +2 -0
  147. package/dist/docs/tech/contracts/ops-to-presentation-linking.docblock.js +225 -0
  148. package/dist/docs/tech/contracts/overlays.docblock.d.ts +2 -0
  149. package/dist/docs/tech/contracts/overlays.docblock.js +231 -0
  150. package/dist/docs/tech/contracts/tests.docblock.d.ts +2 -0
  151. package/dist/docs/tech/contracts/tests.docblock.js +164 -0
  152. package/dist/docs/tech/contracts/themes.docblock.d.ts +2 -0
  153. package/dist/docs/tech/contracts/themes.docblock.js +257 -0
  154. package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.d.ts +2 -0
  155. package/dist/docs/tech/contracts/vertical-pocket-family-office.docblock.js +269 -0
  156. package/dist/docs/tech/docs-system.docblock.d.ts +1 -0
  157. package/dist/docs/tech/docs-system.docblock.js +264 -0
  158. package/dist/docs/tech/lifecycle-stage-system.docblock.d.ts +2 -0
  159. package/dist/docs/tech/lifecycle-stage-system.docblock.js +376 -0
  160. package/dist/docs/tech/llm/llm-integration.docblock.d.ts +7 -0
  161. package/dist/docs/tech/llm/llm-integration.docblock.js +482 -0
  162. package/dist/docs/tech/mcp-endpoints.docblock.d.ts +2 -0
  163. package/dist/docs/tech/mcp-endpoints.docblock.js +185 -0
  164. package/dist/docs/tech/presentation-runtime.docblock.d.ts +2 -0
  165. package/dist/docs/tech/presentation-runtime.docblock.js +221 -0
  166. package/dist/docs/tech/report-verification-table.docblock.d.ts +1 -0
  167. package/dist/docs/tech/report-verification-table.docblock.js +191 -0
  168. package/dist/docs/tech/report-verification-table.test.d.ts +1 -0
  169. package/dist/docs/tech/schema/README.docblock.d.ts +2 -0
  170. package/dist/docs/tech/schema/README.docblock.js +164 -0
  171. package/dist/docs/tech/studio/learning-events.docblock.d.ts +2 -0
  172. package/dist/docs/tech/studio/learning-events.docblock.js +190 -0
  173. package/dist/docs/tech/studio/learning-journeys.docblock.d.ts +2 -0
  174. package/dist/docs/tech/studio/learning-journeys.docblock.js +227 -0
  175. package/dist/docs/tech/studio/platform-admin-panel.docblock.d.ts +2 -0
  176. package/dist/docs/tech/studio/platform-admin-panel.docblock.js +226 -0
  177. package/dist/docs/tech/studio/project-access-teams.docblock.d.ts +2 -0
  178. package/dist/docs/tech/studio/project-access-teams.docblock.js +200 -0
  179. package/dist/docs/tech/studio/project-routing.docblock.d.ts +2 -0
  180. package/dist/docs/tech/studio/project-routing.docblock.js +209 -0
  181. package/dist/docs/tech/studio/sandbox-unlogged.docblock.d.ts +2 -0
  182. package/dist/docs/tech/studio/sandbox-unlogged.docblock.js +183 -0
  183. package/dist/docs/tech/studio/team-invitations.docblock.d.ts +2 -0
  184. package/dist/docs/tech/studio/team-invitations.docblock.js +228 -0
  185. package/dist/docs/tech/studio/workspace-ops.docblock.d.ts +2 -0
  186. package/dist/docs/tech/studio/workspace-ops.docblock.js +189 -0
  187. package/dist/docs/tech/studio/workspaces.docblock.d.ts +2 -0
  188. package/dist/docs/tech/studio/workspaces.docblock.js +204 -0
  189. package/dist/docs/tech/telemetry-ingest.docblock.d.ts +2 -0
  190. package/dist/docs/tech/telemetry-ingest.docblock.js +305 -0
  191. package/dist/docs/tech/vscode-extension.docblock.d.ts +2 -0
  192. package/dist/docs/tech/vscode-extension.docblock.js +241 -0
  193. package/dist/docs/tech-contracts.docs.d.ts +2 -0
  194. package/dist/docs/tech-contracts.docs.js +239 -0
  195. package/dist/docs/types.d.ts +37 -0
  196. package/dist/docs/types.js +1 -0
  197. package/dist/docs/views/contractReference.dataView.d.ts +2 -0
  198. package/dist/docs/views/contractReference.dataView.js +838 -0
  199. package/dist/docs/views/docsIndex.dataView.d.ts +2 -0
  200. package/dist/docs/views/docsIndex.dataView.js +832 -0
  201. package/dist/docs/views/exampleCatalog.dataView.d.ts +2 -0
  202. package/dist/docs/views/exampleCatalog.dataView.js +816 -0
  203. package/dist/docs/views/index.d.ts +3 -0
  204. package/dist/docs/views/index.js +1031 -0
  205. package/dist/events.d.ts +142 -0
  206. package/dist/events.js +228 -0
  207. package/dist/events.test.d.ts +1 -0
  208. package/dist/examples/define.d.ts +5 -0
  209. package/dist/examples/define.js +36 -0
  210. package/dist/examples/docs/examples.docblock.d.ts +2 -0
  211. package/dist/examples/docs/examples.docblock.js +307 -0
  212. package/dist/examples/index.d.ts +7 -0
  213. package/dist/examples/index.js +604 -0
  214. package/dist/examples/registry.d.ts +38 -0
  215. package/dist/examples/registry.js +286 -0
  216. package/dist/examples/registry.test.d.ts +1 -0
  217. package/dist/examples/schema.d.ts +278 -0
  218. package/dist/examples/schema.js +166 -0
  219. package/dist/examples/schema.test.d.ts +1 -0
  220. package/dist/examples/types.d.ts +162 -0
  221. package/dist/examples/types.js +77 -0
  222. package/dist/examples/types.test.d.ts +1 -0
  223. package/dist/examples/validation.d.ts +61 -0
  224. package/dist/examples/validation.js +287 -0
  225. package/dist/examples/validation.test.d.ts +1 -0
  226. package/dist/experiments/docs/experiments.docblock.d.ts +2 -0
  227. package/dist/experiments/docs/experiments.docblock.js +291 -0
  228. package/dist/experiments/evaluator.d.ts +33 -0
  229. package/dist/experiments/evaluator.js +155 -0
  230. package/dist/experiments/evaluator.test.d.ts +1 -0
  231. package/dist/experiments/spec-resolver.d.ts +12 -0
  232. package/dist/experiments/spec-resolver.js +1 -0
  233. package/dist/experiments/spec.d.ts +79 -0
  234. package/dist/experiments/spec.js +227 -0
  235. package/dist/experiments/spec.test.d.ts +1 -0
  236. package/dist/features/index.d.ts +5 -0
  237. package/dist/features/index.js +275 -0
  238. package/dist/features/install.d.ts +14 -0
  239. package/dist/features/install.js +95 -0
  240. package/dist/features/install.test.d.ts +1 -0
  241. package/dist/features/registry.d.ts +21 -0
  242. package/dist/features/registry.js +192 -0
  243. package/dist/features/registry.test.d.ts +1 -0
  244. package/dist/features/types.d.ts +82 -0
  245. package/dist/features/types.js +36 -0
  246. package/dist/features/types.test.d.ts +1 -0
  247. package/dist/features/validation.d.ts +4 -0
  248. package/dist/features/validation.js +48 -0
  249. package/dist/features/validation.test.d.ts +1 -0
  250. package/dist/features.capabilities.test.d.ts +1 -0
  251. package/dist/forms/docs/forms.docblock.d.ts +2 -0
  252. package/dist/forms/docs/forms.docblock.js +164 -0
  253. package/dist/forms/forms.d.ts +264 -0
  254. package/dist/forms/forms.js +332 -0
  255. package/dist/forms/index.d.ts +1 -0
  256. package/dist/forms/index.js +332 -0
  257. package/dist/index.d.ts +36 -0
  258. package/dist/index.js +2195 -0
  259. package/dist/install.d.ts +75 -0
  260. package/dist/install.js +60 -0
  261. package/dist/integrations/binding.d.ts +14 -0
  262. package/dist/integrations/binding.js +1 -0
  263. package/dist/integrations/connection.d.ts +47 -0
  264. package/dist/integrations/connection.js +1 -0
  265. package/dist/integrations/docs/integrations.docblock.d.ts +2 -0
  266. package/dist/integrations/docs/integrations.docblock.js +140 -0
  267. package/dist/integrations/health.d.ts +17 -0
  268. package/dist/integrations/health.js +103 -0
  269. package/dist/integrations/health.test.d.ts +1 -0
  270. package/dist/integrations/index.d.ts +11 -0
  271. package/dist/integrations/index.js +3293 -0
  272. package/dist/integrations/integrations.capability.d.ts +1 -0
  273. package/dist/integrations/integrations.capability.js +48 -0
  274. package/dist/integrations/integrations.feature.d.ts +5 -0
  275. package/dist/integrations/integrations.feature.js +63 -0
  276. package/dist/integrations/meeting-recorder/contracts/index.d.ts +7 -0
  277. package/dist/integrations/meeting-recorder/contracts/index.js +504 -0
  278. package/dist/integrations/meeting-recorder/contracts/meetings.d.ts +451 -0
  279. package/dist/integrations/meeting-recorder/contracts/meetings.js +249 -0
  280. package/dist/integrations/meeting-recorder/contracts/transcripts.d.ts +166 -0
  281. package/dist/integrations/meeting-recorder/contracts/transcripts.js +317 -0
  282. package/dist/integrations/meeting-recorder/contracts/webhooks.d.ts +85 -0
  283. package/dist/integrations/meeting-recorder/contracts/webhooks.js +202 -0
  284. package/dist/integrations/meeting-recorder/meeting-recorder.capability.d.ts +1 -0
  285. package/dist/integrations/meeting-recorder/meeting-recorder.capability.js +48 -0
  286. package/dist/integrations/meeting-recorder/meeting-recorder.feature.d.ts +5 -0
  287. package/dist/integrations/meeting-recorder/meeting-recorder.feature.js +63 -0
  288. package/dist/integrations/meeting-recorder/models.d.ts +402 -0
  289. package/dist/integrations/meeting-recorder/models.js +152 -0
  290. package/dist/integrations/meeting-recorder/telemetry.d.ts +13 -0
  291. package/dist/integrations/meeting-recorder/telemetry.js +84 -0
  292. package/dist/integrations/openbanking/contracts/accounts.d.ts +282 -0
  293. package/dist/integrations/openbanking/contracts/accounts.js +358 -0
  294. package/dist/integrations/openbanking/contracts/balances.d.ts +158 -0
  295. package/dist/integrations/openbanking/contracts/balances.js +322 -0
  296. package/dist/integrations/openbanking/contracts/index.d.ts +7 -0
  297. package/dist/integrations/openbanking/contracts/index.js +674 -0
  298. package/dist/integrations/openbanking/contracts/transactions.d.ts +206 -0
  299. package/dist/integrations/openbanking/contracts/transactions.js +328 -0
  300. package/dist/integrations/openbanking/guards.d.ts +8 -0
  301. package/dist/integrations/openbanking/guards.js +72 -0
  302. package/dist/integrations/openbanking/guards.test.d.ts +1 -0
  303. package/dist/integrations/openbanking/models.d.ts +223 -0
  304. package/dist/integrations/openbanking/models.js +140 -0
  305. package/dist/integrations/openbanking/openbanking.capability.d.ts +1 -0
  306. package/dist/integrations/openbanking/openbanking.capability.js +48 -0
  307. package/dist/integrations/openbanking/openbanking.feature.d.ts +5 -0
  308. package/dist/integrations/openbanking/openbanking.feature.js +65 -0
  309. package/dist/integrations/openbanking/telemetry.d.ts +12 -0
  310. package/dist/integrations/openbanking/telemetry.js +81 -0
  311. package/dist/integrations/operations.d.ts +430 -0
  312. package/dist/integrations/operations.js +327 -0
  313. package/dist/integrations/operations.test.d.ts +1 -0
  314. package/dist/integrations/providers/analytics-reader.d.ts +103 -0
  315. package/dist/integrations/providers/analytics-reader.js +1 -0
  316. package/dist/integrations/providers/analytics-writer.d.ts +6 -0
  317. package/dist/integrations/providers/analytics-writer.js +1 -0
  318. package/dist/integrations/providers/analytics.d.ts +47 -0
  319. package/dist/integrations/providers/analytics.js +1 -0
  320. package/dist/integrations/providers/calendar.d.ts +75 -0
  321. package/dist/integrations/providers/calendar.js +1 -0
  322. package/dist/integrations/providers/database.d.ts +12 -0
  323. package/dist/integrations/providers/database.js +1 -0
  324. package/dist/integrations/providers/elevenlabs.d.ts +3 -0
  325. package/dist/integrations/providers/elevenlabs.js +116 -0
  326. package/dist/integrations/providers/email.d.ts +83 -0
  327. package/dist/integrations/providers/email.js +1 -0
  328. package/dist/integrations/providers/embedding.d.ts +21 -0
  329. package/dist/integrations/providers/embedding.js +1 -0
  330. package/dist/integrations/providers/fal.d.ts +3 -0
  331. package/dist/integrations/providers/fal.js +142 -0
  332. package/dist/integrations/providers/fathom.d.ts +3 -0
  333. package/dist/integrations/providers/fathom.js +156 -0
  334. package/dist/integrations/providers/fireflies.d.ts +3 -0
  335. package/dist/integrations/providers/fireflies.js +136 -0
  336. package/dist/integrations/providers/gcs-storage.d.ts +3 -0
  337. package/dist/integrations/providers/gcs-storage.js +127 -0
  338. package/dist/integrations/providers/gmail.d.ts +3 -0
  339. package/dist/integrations/providers/gmail.js +139 -0
  340. package/dist/integrations/providers/google-calendar.d.ts +3 -0
  341. package/dist/integrations/providers/google-calendar.js +122 -0
  342. package/dist/integrations/providers/gradium.d.ts +3 -0
  343. package/dist/integrations/providers/gradium.js +140 -0
  344. package/dist/integrations/providers/granola.d.ts +3 -0
  345. package/dist/integrations/providers/granola.js +137 -0
  346. package/dist/integrations/providers/index.d.ts +38 -0
  347. package/dist/integrations/providers/index.js +2124 -0
  348. package/dist/integrations/providers/jira.d.ts +3 -0
  349. package/dist/integrations/providers/jira.js +138 -0
  350. package/dist/integrations/providers/linear.d.ts +3 -0
  351. package/dist/integrations/providers/linear.js +137 -0
  352. package/dist/integrations/providers/llm.d.ts +79 -0
  353. package/dist/integrations/providers/llm.js +1 -0
  354. package/dist/integrations/providers/meeting-recorder.d.ts +129 -0
  355. package/dist/integrations/providers/meeting-recorder.js +1 -0
  356. package/dist/integrations/providers/mistral.d.ts +3 -0
  357. package/dist/integrations/providers/mistral.js +124 -0
  358. package/dist/integrations/providers/notion.d.ts +3 -0
  359. package/dist/integrations/providers/notion.js +143 -0
  360. package/dist/integrations/providers/openbanking.d.ts +125 -0
  361. package/dist/integrations/providers/openbanking.js +1 -0
  362. package/dist/integrations/providers/payments.d.ts +106 -0
  363. package/dist/integrations/providers/payments.js +1 -0
  364. package/dist/integrations/providers/posthog-llm-telemetry.d.ts +51 -0
  365. package/dist/integrations/providers/posthog-llm-telemetry.js +206 -0
  366. package/dist/integrations/providers/posthog.d.ts +3 -0
  367. package/dist/integrations/providers/posthog.js +136 -0
  368. package/dist/integrations/providers/postmark.d.ts +3 -0
  369. package/dist/integrations/providers/postmark.js +128 -0
  370. package/dist/integrations/providers/powens.d.ts +3 -0
  371. package/dist/integrations/providers/powens.js +154 -0
  372. package/dist/integrations/providers/project-management.d.ts +32 -0
  373. package/dist/integrations/providers/project-management.js +1 -0
  374. package/dist/integrations/providers/providers.test.d.ts +1 -0
  375. package/dist/integrations/providers/qdrant.d.ts +3 -0
  376. package/dist/integrations/providers/qdrant.js +131 -0
  377. package/dist/integrations/providers/registry.d.ts +6 -0
  378. package/dist/integrations/providers/registry.js +1908 -0
  379. package/dist/integrations/providers/sms.d.ts +31 -0
  380. package/dist/integrations/providers/sms.js +1 -0
  381. package/dist/integrations/providers/storage.d.ts +57 -0
  382. package/dist/integrations/providers/storage.js +1 -0
  383. package/dist/integrations/providers/stripe.d.ts +3 -0
  384. package/dist/integrations/providers/stripe.js +135 -0
  385. package/dist/integrations/providers/supabase-postgres.d.ts +3 -0
  386. package/dist/integrations/providers/supabase-postgres.js +117 -0
  387. package/dist/integrations/providers/supabase-vector.d.ts +3 -0
  388. package/dist/integrations/providers/supabase-vector.js +137 -0
  389. package/dist/integrations/providers/tldv.d.ts +3 -0
  390. package/dist/integrations/providers/tldv.js +136 -0
  391. package/dist/integrations/providers/twilio-sms.d.ts +3 -0
  392. package/dist/integrations/providers/twilio-sms.js +121 -0
  393. package/dist/integrations/providers/vector-store.d.ts +39 -0
  394. package/dist/integrations/providers/vector-store.js +1 -0
  395. package/dist/integrations/providers/voice.d.ts +31 -0
  396. package/dist/integrations/providers/voice.js +1 -0
  397. package/dist/integrations/runtime.d.ts +95 -0
  398. package/dist/integrations/runtime.js +239 -0
  399. package/dist/integrations/runtime.test.d.ts +1 -0
  400. package/dist/integrations/secrets/aws-secret-manager.d.ts +28 -0
  401. package/dist/integrations/secrets/aws-secret-manager.js +376 -0
  402. package/dist/integrations/secrets/env-secret-provider.d.ts +28 -0
  403. package/dist/integrations/secrets/env-secret-provider.js +189 -0
  404. package/dist/integrations/secrets/gcp-secret-manager.d.ts +29 -0
  405. package/dist/integrations/secrets/gcp-secret-manager.js +377 -0
  406. package/dist/integrations/secrets/index.d.ts +6 -0
  407. package/dist/integrations/secrets/index.js +1159 -0
  408. package/dist/integrations/secrets/manager.d.ts +44 -0
  409. package/dist/integrations/secrets/manager.js +213 -0
  410. package/dist/integrations/secrets/provider.d.ts +49 -0
  411. package/dist/integrations/secrets/provider.js +104 -0
  412. package/dist/integrations/secrets/provider.test.d.ts +1 -0
  413. package/dist/integrations/secrets/scaleway-secret-manager.d.ts +35 -0
  414. package/dist/integrations/secrets/scaleway-secret-manager.js +405 -0
  415. package/dist/integrations/secrets-types.d.ts +14 -0
  416. package/dist/integrations/secrets-types.js +1 -0
  417. package/dist/integrations/spec.d.ts +72 -0
  418. package/dist/integrations/spec.js +52 -0
  419. package/dist/integrations/spec.test.d.ts +1 -0
  420. package/dist/jobs/define-job.d.ts +15 -0
  421. package/dist/jobs/define-job.js +41 -0
  422. package/dist/jobs/gcp-cloud-tasks.d.ts +38 -0
  423. package/dist/jobs/gcp-cloud-tasks.js +103 -0
  424. package/dist/jobs/gcp-pubsub.d.ts +22 -0
  425. package/dist/jobs/gcp-pubsub.js +91 -0
  426. package/dist/jobs/handlers/gmail-sync-handler.d.ts +5 -0
  427. package/dist/jobs/handlers/gmail-sync-handler.js +40 -0
  428. package/dist/jobs/handlers/handlers.test.d.ts +1 -0
  429. package/dist/jobs/handlers/index.d.ts +5 -0
  430. package/dist/jobs/handlers/index.js +83 -0
  431. package/dist/jobs/handlers/ping-handler.d.ts +6 -0
  432. package/dist/jobs/handlers/ping-handler.js +47 -0
  433. package/dist/jobs/handlers/storage-document-handler.d.ts +8 -0
  434. package/dist/jobs/handlers/storage-document-handler.js +47 -0
  435. package/dist/jobs/index.d.ts +2 -0
  436. package/dist/jobs/index.js +64 -0
  437. package/dist/jobs/memory-queue.d.ts +14 -0
  438. package/dist/jobs/memory-queue.js +129 -0
  439. package/dist/jobs/queue.d.ts +126 -0
  440. package/dist/jobs/queue.js +55 -0
  441. package/dist/jobs/queue.test.d.ts +1 -0
  442. package/dist/jobs/scaleway-sqs-queue.d.ts +27 -0
  443. package/dist/jobs/scaleway-sqs-queue.js +222 -0
  444. package/dist/jsonschema.d.ts +39 -0
  445. package/dist/jsonschema.js +73 -0
  446. package/dist/jsonschema.test.d.ts +1 -0
  447. package/dist/knowledge/binding.d.ts +22 -0
  448. package/dist/knowledge/binding.js +1 -0
  449. package/dist/knowledge/docs/knowledge.docblock.d.ts +2 -0
  450. package/dist/knowledge/docs/knowledge.docblock.js +301 -0
  451. package/dist/knowledge/index.d.ts +4 -0
  452. package/dist/knowledge/index.js +467 -0
  453. package/dist/knowledge/ingestion/document-processor.d.ts +22 -0
  454. package/dist/knowledge/ingestion/document-processor.js +95 -0
  455. package/dist/knowledge/ingestion/embedding-service.d.ts +8 -0
  456. package/dist/knowledge/ingestion/embedding-service.js +57 -0
  457. package/dist/knowledge/ingestion/gmail-adapter.d.ts +14 -0
  458. package/dist/knowledge/ingestion/gmail-adapter.js +103 -0
  459. package/dist/knowledge/ingestion/index.d.ts +5 -0
  460. package/dist/knowledge/ingestion/index.js +252 -0
  461. package/dist/knowledge/ingestion/ingestion.test.d.ts +1 -0
  462. package/dist/knowledge/ingestion/storage-adapter.d.ts +11 -0
  463. package/dist/knowledge/ingestion/storage-adapter.js +62 -0
  464. package/dist/knowledge/ingestion/vector-indexer.d.ts +14 -0
  465. package/dist/knowledge/ingestion/vector-indexer.js +63 -0
  466. package/dist/knowledge/knowledge.capability.d.ts +1 -0
  467. package/dist/knowledge/knowledge.capability.js +726 -0
  468. package/dist/knowledge/knowledge.feature.d.ts +5 -0
  469. package/dist/knowledge/knowledge.feature.js +300 -0
  470. package/dist/knowledge/operations.d.ts +311 -0
  471. package/dist/knowledge/operations.js +619 -0
  472. package/dist/knowledge/operations.test.d.ts +1 -0
  473. package/dist/knowledge/query/index.d.ts +1 -0
  474. package/dist/knowledge/query/index.js +110 -0
  475. package/dist/knowledge/query/service.d.ts +25 -0
  476. package/dist/knowledge/query/service.js +110 -0
  477. package/dist/knowledge/query/service.test.d.ts +1 -0
  478. package/dist/knowledge/runtime.d.ts +28 -0
  479. package/dist/knowledge/runtime.js +91 -0
  480. package/dist/knowledge/runtime.test.d.ts +1 -0
  481. package/dist/knowledge/source.d.ts +29 -0
  482. package/dist/knowledge/source.js +1 -0
  483. package/dist/knowledge/spaces/email-threads.d.ts +3 -0
  484. package/dist/knowledge/spaces/email-threads.js +102 -0
  485. package/dist/knowledge/spaces/financial-docs.d.ts +3 -0
  486. package/dist/knowledge/spaces/financial-docs.js +102 -0
  487. package/dist/knowledge/spaces/financial-overview.d.ts +3 -0
  488. package/dist/knowledge/spaces/financial-overview.js +102 -0
  489. package/dist/knowledge/spaces/index.d.ts +6 -0
  490. package/dist/knowledge/spaces/index.js +273 -0
  491. package/dist/knowledge/spaces/product-canon.d.ts +3 -0
  492. package/dist/knowledge/spaces/product-canon.js +102 -0
  493. package/dist/knowledge/spaces/spaces.test.d.ts +1 -0
  494. package/dist/knowledge/spaces/support-faq.d.ts +3 -0
  495. package/dist/knowledge/spaces/support-faq.js +103 -0
  496. package/dist/knowledge/spaces/uploaded-docs.d.ts +3 -0
  497. package/dist/knowledge/spaces/uploaded-docs.js +102 -0
  498. package/dist/knowledge/spec.d.ts +42 -0
  499. package/dist/knowledge/spec.js +228 -0
  500. package/dist/knowledge/spec.test.d.ts +1 -0
  501. package/dist/llm/exporters.d.ts +68 -0
  502. package/dist/llm/exporters.js +1011 -0
  503. package/dist/llm/index.d.ts +12 -0
  504. package/dist/llm/index.js +1465 -0
  505. package/dist/llm/prompts.d.ts +53 -0
  506. package/dist/llm/prompts.js +1456 -0
  507. package/dist/llm/types.d.ts +212 -0
  508. package/dist/llm/types.js +1 -0
  509. package/dist/markdown.d.ts +16 -0
  510. package/dist/markdown.js +529 -0
  511. package/dist/migrations.d.ts +48 -0
  512. package/dist/migrations.js +67 -0
  513. package/dist/migrations.test.d.ts +1 -0
  514. package/dist/model-registry.d.ts +9 -0
  515. package/dist/model-registry.js +64 -0
  516. package/dist/model-registry.test.d.ts +1 -0
  517. package/dist/node/app-config/app-config.capability.js +730 -0
  518. package/dist/node/app-config/app-config.contracts.js +713 -0
  519. package/dist/node/app-config/app-config.feature.js +255 -0
  520. package/dist/node/app-config/branding.js +0 -0
  521. package/dist/node/app-config/docs/app-config.docblock.js +383 -0
  522. package/dist/node/app-config/events.js +386 -0
  523. package/dist/node/app-config/index.js +2899 -0
  524. package/dist/node/app-config/lifecycle-contracts.js +870 -0
  525. package/dist/node/app-config/lifecycle.js +0 -0
  526. package/dist/node/app-config/runtime.js +734 -0
  527. package/dist/node/app-config/spec.js +229 -0
  528. package/dist/node/app-config/validation.js +650 -0
  529. package/dist/node/capabilities/capabilities.js +217 -0
  530. package/dist/node/capabilities/context.js +101 -0
  531. package/dist/node/capabilities/docs/capabilities.docblock.js +353 -0
  532. package/dist/node/capabilities/guards.js +177 -0
  533. package/dist/node/capabilities/index.js +739 -0
  534. package/dist/node/capabilities/meeting-recorder.js +154 -0
  535. package/dist/node/capabilities/openbanking.js +166 -0
  536. package/dist/node/capabilities/validation.js +185 -0
  537. package/dist/node/contract-registry/index.js +129 -0
  538. package/dist/node/contract-registry/schemas.js +129 -0
  539. package/dist/node/contract-registry/types.js +0 -0
  540. package/dist/node/data-views/data-views.js +232 -0
  541. package/dist/node/data-views/docs/data-views.docblock.js +164 -0
  542. package/dist/node/data-views/index.js +232 -0
  543. package/dist/node/data-views/query-generator.js +89 -0
  544. package/dist/node/data-views/registry.js +226 -0
  545. package/dist/node/data-views/report/contractVerificationTable.js +240 -0
  546. package/dist/node/data-views/runtime.js +108 -0
  547. package/dist/node/data-views/spec.js +38 -0
  548. package/dist/node/data-views/types.js +0 -0
  549. package/dist/node/docs/accessibility_wcag_compliance_specs.docblock.js +513 -0
  550. package/dist/node/docs/capabilities/documentationSystem.capability.js +784 -0
  551. package/dist/node/docs/capabilities/index.js +784 -0
  552. package/dist/node/docs/commands/docsGenerate.command.js +802 -0
  553. package/dist/node/docs/commands/docsPublish.command.js +781 -0
  554. package/dist/node/docs/commands/index.js +906 -0
  555. package/dist/node/docs/constants.js +78 -0
  556. package/dist/node/docs/contracts.js +1611 -0
  557. package/dist/node/docs/ensure-docblocks.js +264 -0
  558. package/dist/node/docs/events/docsGenerated.event.js +533 -0
  559. package/dist/node/docs/events/docsPublished.event.js +534 -0
  560. package/dist/node/docs/events/index.js +567 -0
  561. package/dist/node/docs/forms/docsSearch.form.js +676 -0
  562. package/dist/node/docs/forms/index.js +676 -0
  563. package/dist/node/docs/index.js +4719 -0
  564. package/dist/node/docs/meta.docs.js +176 -0
  565. package/dist/node/docs/presentations/docsLayout.presentation.js +527 -0
  566. package/dist/node/docs/presentations/docsReferencePage.presentation.js +527 -0
  567. package/dist/node/docs/presentations/index.js +555 -0
  568. package/dist/node/docs/presentations.js +97 -0
  569. package/dist/node/docs/queries/contractReference.query.js +752 -0
  570. package/dist/node/docs/queries/docsIndex.query.js +752 -0
  571. package/dist/node/docs/queries/index.js +827 -0
  572. package/dist/node/docs/registry.js +153 -0
  573. package/dist/node/docs/tech/auth/better-auth-nextjs.docblock.js +221 -0
  574. package/dist/node/docs/tech/cli.docblock.js +291 -0
  575. package/dist/node/docs/tech/contracts/README.docblock.js +164 -0
  576. package/dist/node/docs/tech/contracts/migrations.docblock.js +164 -0
  577. package/dist/node/docs/tech/contracts/openapi-export.docblock.js +201 -0
  578. package/dist/node/docs/tech/contracts/openapi-import.docblock.js +207 -0
  579. package/dist/node/docs/tech/contracts/ops-to-presentation-linking.docblock.js +225 -0
  580. package/dist/node/docs/tech/contracts/overlays.docblock.js +231 -0
  581. package/dist/node/docs/tech/contracts/tests.docblock.js +164 -0
  582. package/dist/node/docs/tech/contracts/themes.docblock.js +257 -0
  583. package/dist/node/docs/tech/contracts/vertical-pocket-family-office.docblock.js +269 -0
  584. package/dist/node/docs/tech/docs-system.docblock.js +264 -0
  585. package/dist/node/docs/tech/lifecycle-stage-system.docblock.js +376 -0
  586. package/dist/node/docs/tech/llm/llm-integration.docblock.js +482 -0
  587. package/dist/node/docs/tech/mcp-endpoints.docblock.js +185 -0
  588. package/dist/node/docs/tech/presentation-runtime.docblock.js +221 -0
  589. package/dist/node/docs/tech/report-verification-table.docblock.js +191 -0
  590. package/dist/node/docs/tech/schema/README.docblock.js +164 -0
  591. package/dist/node/docs/tech/studio/learning-events.docblock.js +190 -0
  592. package/dist/node/docs/tech/studio/learning-journeys.docblock.js +227 -0
  593. package/dist/node/docs/tech/studio/platform-admin-panel.docblock.js +226 -0
  594. package/dist/node/docs/tech/studio/project-access-teams.docblock.js +200 -0
  595. package/dist/node/docs/tech/studio/project-routing.docblock.js +209 -0
  596. package/dist/node/docs/tech/studio/sandbox-unlogged.docblock.js +183 -0
  597. package/dist/node/docs/tech/studio/team-invitations.docblock.js +228 -0
  598. package/dist/node/docs/tech/studio/workspace-ops.docblock.js +189 -0
  599. package/dist/node/docs/tech/studio/workspaces.docblock.js +204 -0
  600. package/dist/node/docs/tech/telemetry-ingest.docblock.js +305 -0
  601. package/dist/node/docs/tech/vscode-extension.docblock.js +241 -0
  602. package/dist/node/docs/tech-contracts.docs.js +239 -0
  603. package/dist/node/docs/types.js +0 -0
  604. package/dist/node/docs/views/contractReference.dataView.js +838 -0
  605. package/dist/node/docs/views/docsIndex.dataView.js +832 -0
  606. package/dist/node/docs/views/exampleCatalog.dataView.js +816 -0
  607. package/dist/node/docs/views/index.js +1031 -0
  608. package/dist/node/events.js +228 -0
  609. package/dist/node/examples/define.js +36 -0
  610. package/dist/node/examples/docs/examples.docblock.js +307 -0
  611. package/dist/node/examples/index.js +604 -0
  612. package/dist/node/examples/registry.js +286 -0
  613. package/dist/node/examples/schema.js +166 -0
  614. package/dist/node/examples/types.js +77 -0
  615. package/dist/node/examples/validation.js +287 -0
  616. package/dist/node/experiments/docs/experiments.docblock.js +291 -0
  617. package/dist/node/experiments/evaluator.js +155 -0
  618. package/dist/node/experiments/spec-resolver.js +0 -0
  619. package/dist/node/experiments/spec.js +227 -0
  620. package/dist/node/features/index.js +275 -0
  621. package/dist/node/features/install.js +95 -0
  622. package/dist/node/features/registry.js +192 -0
  623. package/dist/node/features/types.js +36 -0
  624. package/dist/node/features/validation.js +48 -0
  625. package/dist/node/forms/docs/forms.docblock.js +164 -0
  626. package/dist/node/forms/forms.js +332 -0
  627. package/dist/node/forms/index.js +332 -0
  628. package/dist/node/index.js +2195 -0
  629. package/dist/node/install.js +60 -0
  630. package/dist/node/integrations/binding.js +0 -0
  631. package/dist/node/integrations/connection.js +0 -0
  632. package/dist/node/integrations/docs/integrations.docblock.js +140 -0
  633. package/dist/node/integrations/health.js +103 -0
  634. package/dist/node/integrations/index.js +3293 -0
  635. package/dist/node/integrations/integrations.capability.js +48 -0
  636. package/dist/node/integrations/integrations.feature.js +63 -0
  637. package/dist/node/integrations/meeting-recorder/contracts/index.js +504 -0
  638. package/dist/node/integrations/meeting-recorder/contracts/meetings.js +249 -0
  639. package/dist/node/integrations/meeting-recorder/contracts/transcripts.js +317 -0
  640. package/dist/node/integrations/meeting-recorder/contracts/webhooks.js +202 -0
  641. package/dist/node/integrations/meeting-recorder/meeting-recorder.capability.js +48 -0
  642. package/dist/node/integrations/meeting-recorder/meeting-recorder.feature.js +63 -0
  643. package/dist/node/integrations/meeting-recorder/models.js +152 -0
  644. package/dist/node/integrations/meeting-recorder/telemetry.js +84 -0
  645. package/dist/node/integrations/openbanking/contracts/accounts.js +358 -0
  646. package/dist/node/integrations/openbanking/contracts/balances.js +322 -0
  647. package/dist/node/integrations/openbanking/contracts/index.js +674 -0
  648. package/dist/node/integrations/openbanking/contracts/transactions.js +328 -0
  649. package/dist/node/integrations/openbanking/guards.js +72 -0
  650. package/dist/node/integrations/openbanking/models.js +140 -0
  651. package/dist/node/integrations/openbanking/openbanking.capability.js +48 -0
  652. package/dist/node/integrations/openbanking/openbanking.feature.js +65 -0
  653. package/dist/node/integrations/openbanking/telemetry.js +81 -0
  654. package/dist/node/integrations/operations.js +327 -0
  655. package/dist/node/integrations/providers/analytics-reader.js +0 -0
  656. package/dist/node/integrations/providers/analytics-writer.js +0 -0
  657. package/dist/node/integrations/providers/analytics.js +0 -0
  658. package/dist/node/integrations/providers/calendar.js +0 -0
  659. package/dist/node/integrations/providers/database.js +0 -0
  660. package/dist/node/integrations/providers/elevenlabs.js +116 -0
  661. package/dist/node/integrations/providers/email.js +0 -0
  662. package/dist/node/integrations/providers/embedding.js +0 -0
  663. package/dist/node/integrations/providers/fal.js +142 -0
  664. package/dist/node/integrations/providers/fathom.js +156 -0
  665. package/dist/node/integrations/providers/fireflies.js +136 -0
  666. package/dist/node/integrations/providers/gcs-storage.js +127 -0
  667. package/dist/node/integrations/providers/gmail.js +139 -0
  668. package/dist/node/integrations/providers/google-calendar.js +122 -0
  669. package/dist/node/integrations/providers/gradium.js +140 -0
  670. package/dist/node/integrations/providers/granola.js +137 -0
  671. package/dist/node/integrations/providers/index.js +2124 -0
  672. package/dist/node/integrations/providers/jira.js +138 -0
  673. package/dist/node/integrations/providers/linear.js +137 -0
  674. package/dist/node/integrations/providers/llm.js +0 -0
  675. package/dist/node/integrations/providers/meeting-recorder.js +0 -0
  676. package/dist/node/integrations/providers/mistral.js +124 -0
  677. package/dist/node/integrations/providers/notion.js +143 -0
  678. package/dist/node/integrations/providers/openbanking.js +0 -0
  679. package/dist/node/integrations/providers/payments.js +0 -0
  680. package/dist/node/integrations/providers/posthog-llm-telemetry.js +206 -0
  681. package/dist/node/integrations/providers/posthog.js +136 -0
  682. package/dist/node/integrations/providers/postmark.js +128 -0
  683. package/dist/node/integrations/providers/powens.js +154 -0
  684. package/dist/node/integrations/providers/project-management.js +0 -0
  685. package/dist/node/integrations/providers/qdrant.js +131 -0
  686. package/dist/node/integrations/providers/registry.js +1908 -0
  687. package/dist/node/integrations/providers/sms.js +0 -0
  688. package/dist/node/integrations/providers/storage.js +0 -0
  689. package/dist/node/integrations/providers/stripe.js +135 -0
  690. package/dist/node/integrations/providers/supabase-postgres.js +117 -0
  691. package/dist/node/integrations/providers/supabase-vector.js +137 -0
  692. package/dist/node/integrations/providers/tldv.js +136 -0
  693. package/dist/node/integrations/providers/twilio-sms.js +121 -0
  694. package/dist/node/integrations/providers/vector-store.js +0 -0
  695. package/dist/node/integrations/providers/voice.js +0 -0
  696. package/dist/node/integrations/runtime.js +239 -0
  697. package/dist/node/integrations/secrets/aws-secret-manager.js +376 -0
  698. package/dist/node/integrations/secrets/env-secret-provider.js +189 -0
  699. package/dist/node/integrations/secrets/gcp-secret-manager.js +377 -0
  700. package/dist/node/integrations/secrets/index.js +1159 -0
  701. package/dist/node/integrations/secrets/manager.js +213 -0
  702. package/dist/node/integrations/secrets/provider.js +104 -0
  703. package/dist/node/integrations/secrets/scaleway-secret-manager.js +405 -0
  704. package/dist/node/integrations/secrets-types.js +0 -0
  705. package/dist/node/integrations/spec.js +52 -0
  706. package/dist/node/jobs/define-job.js +41 -0
  707. package/dist/node/jobs/gcp-cloud-tasks.js +103 -0
  708. package/dist/node/jobs/gcp-pubsub.js +91 -0
  709. package/dist/node/jobs/handlers/gmail-sync-handler.js +40 -0
  710. package/dist/node/jobs/handlers/index.js +83 -0
  711. package/dist/node/jobs/handlers/ping-handler.js +47 -0
  712. package/dist/node/jobs/handlers/storage-document-handler.js +47 -0
  713. package/dist/node/jobs/index.js +64 -0
  714. package/dist/node/jobs/memory-queue.js +129 -0
  715. package/dist/node/jobs/queue.js +55 -0
  716. package/dist/node/jobs/scaleway-sqs-queue.js +222 -0
  717. package/dist/node/jsonschema.js +73 -0
  718. package/dist/node/knowledge/binding.js +0 -0
  719. package/dist/node/knowledge/docs/knowledge.docblock.js +301 -0
  720. package/dist/node/knowledge/index.js +467 -0
  721. package/dist/node/knowledge/ingestion/document-processor.js +95 -0
  722. package/dist/node/knowledge/ingestion/embedding-service.js +57 -0
  723. package/dist/node/knowledge/ingestion/gmail-adapter.js +103 -0
  724. package/dist/node/knowledge/ingestion/index.js +252 -0
  725. package/dist/node/knowledge/ingestion/storage-adapter.js +62 -0
  726. package/dist/node/knowledge/ingestion/vector-indexer.js +63 -0
  727. package/dist/node/knowledge/knowledge.capability.js +726 -0
  728. package/dist/node/knowledge/knowledge.feature.js +300 -0
  729. package/dist/node/knowledge/operations.js +619 -0
  730. package/dist/node/knowledge/query/index.js +110 -0
  731. package/dist/node/knowledge/query/service.js +110 -0
  732. package/dist/node/knowledge/runtime.js +91 -0
  733. package/dist/node/knowledge/source.js +0 -0
  734. package/dist/node/knowledge/spaces/email-threads.js +102 -0
  735. package/dist/node/knowledge/spaces/financial-docs.js +102 -0
  736. package/dist/node/knowledge/spaces/financial-overview.js +102 -0
  737. package/dist/node/knowledge/spaces/index.js +273 -0
  738. package/dist/node/knowledge/spaces/product-canon.js +102 -0
  739. package/dist/node/knowledge/spaces/support-faq.js +103 -0
  740. package/dist/node/knowledge/spaces/uploaded-docs.js +102 -0
  741. package/dist/node/knowledge/spec.js +228 -0
  742. package/dist/node/llm/exporters.js +1011 -0
  743. package/dist/node/llm/index.js +1465 -0
  744. package/dist/node/llm/prompts.js +1456 -0
  745. package/dist/node/llm/types.js +0 -0
  746. package/dist/node/markdown.js +529 -0
  747. package/dist/node/migrations.js +67 -0
  748. package/dist/node/model-registry.js +64 -0
  749. package/dist/node/onboarding-base.js +597 -0
  750. package/dist/node/openapi.js +151 -0
  751. package/dist/node/operations/index.js +408 -0
  752. package/dist/node/operations/operation.js +51 -0
  753. package/dist/node/operations/registry.js +405 -0
  754. package/dist/node/operations/report/getContractVerificationStatus.js +170 -0
  755. package/dist/node/operations/report/index.js +305 -0
  756. package/dist/node/ownership.js +73 -0
  757. package/dist/node/policy/context.js +206 -0
  758. package/dist/node/policy/docs/policy.docblock.js +313 -0
  759. package/dist/node/policy/engine.js +325 -0
  760. package/dist/node/policy/guards.js +387 -0
  761. package/dist/node/policy/index.js +1313 -0
  762. package/dist/node/policy/opa-adapter.js +110 -0
  763. package/dist/node/policy/registry.js +221 -0
  764. package/dist/node/policy/spec.js +0 -0
  765. package/dist/node/policy/validation.js +391 -0
  766. package/dist/node/presentations/docs/presentations-conventions.docblock.js +171 -0
  767. package/dist/node/presentations/index.js +227 -0
  768. package/dist/node/presentations/presentations.js +38 -0
  769. package/dist/node/presentations/registry.js +221 -0
  770. package/dist/node/presentations/transform-engine.js +600 -0
  771. package/dist/node/product-intent/contract-patch-intent.js +68 -0
  772. package/dist/node/product-intent/contract-spec-patch.js +75 -0
  773. package/dist/node/product-intent/evidence.js +45 -0
  774. package/dist/node/product-intent/findings.js +81 -0
  775. package/dist/node/product-intent/impact-report.js +62 -0
  776. package/dist/node/product-intent/index.js +742 -0
  777. package/dist/node/product-intent/insights.js +63 -0
  778. package/dist/node/product-intent/opportunity-brief.js +106 -0
  779. package/dist/node/product-intent/problems.js +55 -0
  780. package/dist/node/product-intent/registry.js +242 -0
  781. package/dist/node/product-intent/runtime.js +320 -0
  782. package/dist/node/product-intent/spec.js +425 -0
  783. package/dist/node/product-intent/task-pack.js +69 -0
  784. package/dist/node/product-intent/tickets.js +57 -0
  785. package/dist/node/product-intent/types.js +378 -0
  786. package/dist/node/product-intent/ui-wireframe.js +73 -0
  787. package/dist/node/prompt.js +38 -0
  788. package/dist/node/promptRegistry.js +63 -0
  789. package/dist/node/regenerator/adapters.js +0 -0
  790. package/dist/node/regenerator/docs/regenerator.docblock.js +164 -0
  791. package/dist/node/regenerator/executor.js +157 -0
  792. package/dist/node/regenerator/index.js +341 -0
  793. package/dist/node/regenerator/service.js +183 -0
  794. package/dist/node/regenerator/sinks.js +64 -0
  795. package/dist/node/regenerator/types.js +0 -0
  796. package/dist/node/regenerator/utils.js +87 -0
  797. package/dist/node/registry-utils.js +163 -0
  798. package/dist/node/registry.js +215 -0
  799. package/dist/node/resources.js +83 -0
  800. package/dist/node/schema-to-markdown.js +278 -0
  801. package/dist/node/serialization/index.js +179 -0
  802. package/dist/node/serialization/serializers.js +180 -0
  803. package/dist/node/serialization/types.js +0 -0
  804. package/dist/node/telemetry/anomaly.js +91 -0
  805. package/dist/node/telemetry/docs/telemetry.docblock.js +164 -0
  806. package/dist/node/telemetry/index.js +417 -0
  807. package/dist/node/telemetry/spec.js +261 -0
  808. package/dist/node/telemetry/tracker.js +129 -0
  809. package/dist/node/tests/index.js +231 -0
  810. package/dist/node/tests/runner.js +189 -0
  811. package/dist/node/tests/spec.js +74 -0
  812. package/dist/node/themes.js +225 -0
  813. package/dist/node/translations/catalog.js +0 -0
  814. package/dist/node/translations/index.js +533 -0
  815. package/dist/node/translations/registry.js +170 -0
  816. package/dist/node/translations/spec.js +36 -0
  817. package/dist/node/translations/tenant.js +0 -0
  818. package/dist/node/translations/validation.js +392 -0
  819. package/dist/node/types.js +0 -0
  820. package/dist/node/versioning/index.js +274 -0
  821. package/dist/node/versioning/refs.js +99 -0
  822. package/dist/node/versioning/types.js +55 -0
  823. package/dist/node/versioning/utils.js +184 -0
  824. package/dist/node/workflow/adapters/db-adapter.js +127 -0
  825. package/dist/node/workflow/adapters/file-adapter.js +38 -0
  826. package/dist/node/workflow/adapters/index.js +194 -0
  827. package/dist/node/workflow/adapters/memory-store.js +93 -0
  828. package/dist/node/workflow/context.js +247 -0
  829. package/dist/node/workflow/expression.js +157 -0
  830. package/dist/node/workflow/index.js +1546 -0
  831. package/dist/node/workflow/overview.docblock.js +164 -0
  832. package/dist/node/workflow/runner.js +532 -0
  833. package/dist/node/workflow/sla-monitor.js +84 -0
  834. package/dist/node/workflow/spec.js +221 -0
  835. package/dist/node/workflow/state.js +0 -0
  836. package/dist/node/workflow/validation.js +425 -0
  837. package/dist/node/workspace-config/contractsrc-schema.js +344 -0
  838. package/dist/node/workspace-config/contractsrc-types.js +0 -0
  839. package/dist/node/workspace-config/index.js +325 -0
  840. package/dist/node/workspace-config/workspace-config.docblock.js +188 -0
  841. package/dist/onboarding-base.d.ts +131 -0
  842. package/dist/onboarding-base.js +597 -0
  843. package/dist/openapi.d.ts +33 -0
  844. package/dist/openapi.js +151 -0
  845. package/dist/operations/index.d.ts +2 -0
  846. package/dist/operations/index.js +408 -0
  847. package/dist/operations/operation.d.ts +191 -0
  848. package/dist/operations/operation.js +51 -0
  849. package/dist/operations/registry.d.ts +58 -0
  850. package/dist/operations/registry.js +405 -0
  851. package/dist/operations/report/getContractVerificationStatus.d.ts +68 -0
  852. package/dist/operations/report/getContractVerificationStatus.js +170 -0
  853. package/dist/operations/report/getContractVerificationStatus.test.d.ts +1 -0
  854. package/dist/operations/report/index.d.ts +10 -0
  855. package/dist/operations/report/index.js +305 -0
  856. package/dist/operations/report/index.test.d.ts +1 -0
  857. package/dist/ownership.d.ts +211 -0
  858. package/dist/ownership.js +73 -0
  859. package/dist/ownership.test.d.ts +1 -0
  860. package/dist/policy/context.d.ts +234 -0
  861. package/dist/policy/context.js +206 -0
  862. package/dist/policy/context.test.d.ts +1 -0
  863. package/dist/policy/docs/policy.docblock.d.ts +2 -0
  864. package/dist/policy/docs/policy.docblock.js +313 -0
  865. package/dist/policy/engine.d.ts +36 -0
  866. package/dist/policy/engine.js +325 -0
  867. package/dist/policy/engine.test.d.ts +1 -0
  868. package/dist/policy/guards.d.ts +156 -0
  869. package/dist/policy/guards.js +387 -0
  870. package/dist/policy/guards.test.d.ts +1 -0
  871. package/dist/policy/index.d.ts +12 -0
  872. package/dist/policy/index.js +1313 -0
  873. package/dist/policy/opa-adapter.d.ts +41 -0
  874. package/dist/policy/opa-adapter.js +110 -0
  875. package/dist/policy/opa-adapter.test.d.ts +1 -0
  876. package/dist/policy/registry.d.ts +5 -0
  877. package/dist/policy/registry.js +221 -0
  878. package/dist/policy/spec.d.ts +102 -0
  879. package/dist/policy/spec.js +1 -0
  880. package/dist/policy/validation.d.ts +84 -0
  881. package/dist/policy/validation.js +391 -0
  882. package/dist/policy/validation.test.d.ts +1 -0
  883. package/dist/presentations/docs/presentations-conventions.docblock.d.ts +2 -0
  884. package/dist/presentations/docs/presentations-conventions.docblock.js +171 -0
  885. package/dist/presentations/index.d.ts +2 -0
  886. package/dist/presentations/index.js +227 -0
  887. package/dist/presentations/presentations.d.ts +52 -0
  888. package/dist/presentations/presentations.js +38 -0
  889. package/dist/presentations/registry.d.ts +6 -0
  890. package/dist/presentations/registry.js +221 -0
  891. package/dist/presentations/transform-engine.d.ts +62 -0
  892. package/dist/presentations/transform-engine.js +600 -0
  893. package/dist/presentations/transform-engine.test.d.ts +1 -0
  894. package/dist/product-intent/contract-patch-intent.d.ts +100 -0
  895. package/dist/product-intent/contract-patch-intent.js +68 -0
  896. package/dist/product-intent/contract-spec-patch.d.ts +86 -0
  897. package/dist/product-intent/contract-spec-patch.js +75 -0
  898. package/dist/product-intent/evidence.d.ts +14 -0
  899. package/dist/product-intent/evidence.js +45 -0
  900. package/dist/product-intent/findings.d.ts +57 -0
  901. package/dist/product-intent/findings.js +81 -0
  902. package/dist/product-intent/impact-report.d.ts +57 -0
  903. package/dist/product-intent/impact-report.js +62 -0
  904. package/dist/product-intent/index.d.ts +13 -0
  905. package/dist/product-intent/index.js +742 -0
  906. package/dist/product-intent/insights.d.ts +62 -0
  907. package/dist/product-intent/insights.js +63 -0
  908. package/dist/product-intent/opportunity-brief.d.ts +192 -0
  909. package/dist/product-intent/opportunity-brief.js +106 -0
  910. package/dist/product-intent/problems.d.ts +59 -0
  911. package/dist/product-intent/problems.js +55 -0
  912. package/dist/product-intent/registry.d.ts +28 -0
  913. package/dist/product-intent/registry.js +242 -0
  914. package/dist/product-intent/registry.test.d.ts +1 -0
  915. package/dist/product-intent/runtime.d.ts +92 -0
  916. package/dist/product-intent/runtime.js +320 -0
  917. package/dist/product-intent/runtime.test.d.ts +1 -0
  918. package/dist/product-intent/spec.d.ts +664 -0
  919. package/dist/product-intent/spec.js +425 -0
  920. package/dist/product-intent/task-pack.d.ts +98 -0
  921. package/dist/product-intent/task-pack.js +69 -0
  922. package/dist/product-intent/tickets.d.ts +67 -0
  923. package/dist/product-intent/tickets.js +57 -0
  924. package/dist/product-intent/types.d.ts +11 -0
  925. package/dist/product-intent/types.js +378 -0
  926. package/dist/product-intent/ui-wireframe.d.ts +100 -0
  927. package/dist/product-intent/ui-wireframe.js +73 -0
  928. package/dist/prompt.d.ts +49 -0
  929. package/dist/prompt.js +38 -0
  930. package/dist/prompt.test.d.ts +1 -0
  931. package/dist/promptRegistry.d.ts +11 -0
  932. package/dist/promptRegistry.js +63 -0
  933. package/dist/promptRegistry.test.d.ts +1 -0
  934. package/dist/regenerator/adapters.d.ts +15 -0
  935. package/dist/regenerator/adapters.js +1 -0
  936. package/dist/regenerator/docs/regenerator.docblock.d.ts +2 -0
  937. package/dist/regenerator/docs/regenerator.docblock.js +164 -0
  938. package/dist/regenerator/executor.d.ts +66 -0
  939. package/dist/regenerator/executor.js +157 -0
  940. package/dist/regenerator/executor.test.d.ts +1 -0
  941. package/dist/regenerator/index.d.ts +6 -0
  942. package/dist/regenerator/index.js +341 -0
  943. package/dist/regenerator/service.d.ts +29 -0
  944. package/dist/regenerator/service.js +183 -0
  945. package/dist/regenerator/service.test.d.ts +1 -0
  946. package/dist/regenerator/sinks.d.ts +23 -0
  947. package/dist/regenerator/sinks.js +64 -0
  948. package/dist/regenerator/sinks.test.d.ts +1 -0
  949. package/dist/regenerator/types.d.ts +103 -0
  950. package/dist/regenerator/types.js +1 -0
  951. package/dist/regenerator/utils.d.ts +6 -0
  952. package/dist/regenerator/utils.js +87 -0
  953. package/dist/registry-utils.d.ts +105 -0
  954. package/dist/registry-utils.js +163 -0
  955. package/dist/registry-utils.test.d.ts +1 -0
  956. package/dist/registry.d.ts +27 -0
  957. package/dist/registry.js +215 -0
  958. package/dist/resources.d.ts +60 -0
  959. package/dist/resources.js +83 -0
  960. package/dist/schema-to-markdown.d.ts +56 -0
  961. package/dist/schema-to-markdown.js +278 -0
  962. package/dist/serialization/index.d.ts +10 -0
  963. package/dist/serialization/index.js +179 -0
  964. package/dist/serialization/serializers.d.ts +35 -0
  965. package/dist/serialization/serializers.js +180 -0
  966. package/dist/serialization/types.d.ts +100 -0
  967. package/dist/serialization/types.js +1 -0
  968. package/dist/telemetry/anomaly.d.ts +23 -0
  969. package/dist/telemetry/anomaly.js +91 -0
  970. package/dist/telemetry/anomaly.test.d.ts +1 -0
  971. package/dist/telemetry/docs/telemetry.docblock.d.ts +2 -0
  972. package/dist/telemetry/docs/telemetry.docblock.js +164 -0
  973. package/dist/telemetry/index.d.ts +3 -0
  974. package/dist/telemetry/index.js +417 -0
  975. package/dist/telemetry/spec.d.ts +87 -0
  976. package/dist/telemetry/spec.js +261 -0
  977. package/dist/telemetry/spec.test.d.ts +1 -0
  978. package/dist/telemetry/tracker.d.ts +48 -0
  979. package/dist/telemetry/tracker.js +129 -0
  980. package/dist/telemetry/tracker.test.d.ts +1 -0
  981. package/dist/tests/index.d.ts +2 -0
  982. package/dist/tests/index.js +231 -0
  983. package/dist/tests/runner.d.ts +38 -0
  984. package/dist/tests/runner.js +189 -0
  985. package/dist/tests/runner.test.d.ts +1 -0
  986. package/dist/tests/spec.d.ts +82 -0
  987. package/dist/tests/spec.js +74 -0
  988. package/dist/tests/spec.test.d.ts +1 -0
  989. package/dist/themes.d.ts +50 -0
  990. package/dist/themes.js +225 -0
  991. package/dist/themes.test.d.ts +1 -0
  992. package/dist/translations/catalog.d.ts +25 -0
  993. package/dist/translations/catalog.js +1 -0
  994. package/dist/translations/index.d.ts +44 -0
  995. package/dist/translations/index.js +533 -0
  996. package/dist/translations/registry.d.ts +172 -0
  997. package/dist/translations/registry.js +170 -0
  998. package/dist/translations/registry.test.d.ts +1 -0
  999. package/dist/translations/spec.d.ts +153 -0
  1000. package/dist/translations/spec.js +36 -0
  1001. package/dist/translations/spec.test.d.ts +1 -0
  1002. package/dist/translations/tenant.d.ts +11 -0
  1003. package/dist/translations/tenant.js +1 -0
  1004. package/dist/translations/validation.d.ts +106 -0
  1005. package/dist/translations/validation.js +392 -0
  1006. package/dist/translations/validation.test.d.ts +1 -0
  1007. package/dist/types.d.ts +212 -0
  1008. package/dist/types.js +1 -0
  1009. package/dist/versioning/index.d.ts +9 -0
  1010. package/dist/versioning/index.js +274 -0
  1011. package/dist/versioning/refs.d.ts +176 -0
  1012. package/dist/versioning/refs.js +99 -0
  1013. package/dist/versioning/refs.test.d.ts +4 -0
  1014. package/dist/versioning/types.d.ts +130 -0
  1015. package/dist/versioning/types.js +55 -0
  1016. package/dist/versioning/utils.d.ts +93 -0
  1017. package/dist/versioning/utils.js +184 -0
  1018. package/dist/versioning/utils.test.d.ts +4 -0
  1019. package/dist/workflow/adapters/db-adapter.d.ts +43 -0
  1020. package/dist/workflow/adapters/db-adapter.js +127 -0
  1021. package/dist/workflow/adapters/file-adapter.d.ts +10 -0
  1022. package/dist/workflow/adapters/file-adapter.js +38 -0
  1023. package/dist/workflow/adapters/index.d.ts +3 -0
  1024. package/dist/workflow/adapters/index.js +194 -0
  1025. package/dist/workflow/adapters/memory-store.d.ts +13 -0
  1026. package/dist/workflow/adapters/memory-store.js +93 -0
  1027. package/dist/workflow/context.d.ts +217 -0
  1028. package/dist/workflow/context.js +247 -0
  1029. package/dist/workflow/context.test.d.ts +1 -0
  1030. package/dist/workflow/expression.d.ts +6 -0
  1031. package/dist/workflow/expression.js +157 -0
  1032. package/dist/workflow/expression.test.d.ts +1 -0
  1033. package/dist/workflow/index.d.ts +13 -0
  1034. package/dist/workflow/index.js +1546 -0
  1035. package/dist/workflow/overview.docblock.d.ts +2 -0
  1036. package/dist/workflow/overview.docblock.js +164 -0
  1037. package/dist/workflow/runner.d.ts +71 -0
  1038. package/dist/workflow/runner.js +532 -0
  1039. package/dist/workflow/runner.test.d.ts +1 -0
  1040. package/dist/workflow/sla-monitor.d.ts +16 -0
  1041. package/dist/workflow/sla-monitor.js +84 -0
  1042. package/dist/workflow/spec.d.ts +81 -0
  1043. package/dist/workflow/spec.js +221 -0
  1044. package/dist/workflow/state.d.ts +31 -0
  1045. package/dist/workflow/state.js +1 -0
  1046. package/dist/workflow/validation.d.ts +87 -0
  1047. package/dist/workflow/validation.js +425 -0
  1048. package/dist/workflow/validation.test.d.ts +1 -0
  1049. package/dist/workspace-config/contractsrc-schema.d.ts +144 -0
  1050. package/dist/workspace-config/contractsrc-schema.js +344 -0
  1051. package/dist/workspace-config/contractsrc-schema.test.d.ts +1 -0
  1052. package/dist/workspace-config/contractsrc-types.d.ts +342 -0
  1053. package/dist/workspace-config/contractsrc-types.js +1 -0
  1054. package/dist/workspace-config/index.d.ts +5 -0
  1055. package/dist/workspace-config/index.js +325 -0
  1056. package/dist/workspace-config/workspace-config.docblock.d.ts +2 -0
  1057. package/dist/workspace-config/workspace-config.docblock.js +188 -0
  1058. package/package.json +4426 -0
@@ -0,0 +1,1456 @@
1
+ // @bun
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
7
+ var __toCommonJS = (from) => {
8
+ var entry = __moduleCache.get(from), desc;
9
+ if (entry)
10
+ return entry;
11
+ entry = __defProp({}, "__esModule", { value: true });
12
+ if (from && typeof from === "object" || typeof from === "function")
13
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ }));
17
+ __moduleCache.set(from, entry);
18
+ return entry;
19
+ };
20
+ var __export = (target, all) => {
21
+ for (var name in all)
22
+ __defProp(target, name, {
23
+ get: all[name],
24
+ enumerable: true,
25
+ configurable: true,
26
+ set: (newValue) => all[name] = () => newValue
27
+ });
28
+ };
29
+ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
30
+ var __require = import.meta.require;
31
+
32
+ // src/registry-utils.ts
33
+ var exports_registry_utils = {};
34
+ __export(exports_registry_utils, {
35
+ groupByToArray: () => groupByToArray,
36
+ groupByMultiple: () => groupByMultiple,
37
+ groupBy: () => groupBy,
38
+ getUniqueTags: () => getUniqueTags,
39
+ getUniqueOwners: () => getUniqueOwners,
40
+ getUniqueDomains: () => getUniqueDomains,
41
+ filterBy: () => filterBy,
42
+ GroupingStrategies: () => GroupingStrategies
43
+ });
44
+ function filterBy(items, filter) {
45
+ return items.filter((item) => {
46
+ if (filter.tags?.length) {
47
+ const hasMatchingTag = filter.tags.some((tag) => item.meta.tags?.includes(tag));
48
+ if (!hasMatchingTag)
49
+ return false;
50
+ }
51
+ if (filter.owners?.length) {
52
+ const hasMatchingOwner = filter.owners.some((owner) => item.meta.owners?.includes(owner));
53
+ if (!hasMatchingOwner)
54
+ return false;
55
+ }
56
+ if (filter.stability?.length) {
57
+ if (!filter.stability.includes(item.meta.stability ?? "stable")) {
58
+ return false;
59
+ }
60
+ }
61
+ if (filter.domain) {
62
+ const itemDomain = GroupingStrategies.byDomain(item);
63
+ if (itemDomain !== filter.domain)
64
+ return false;
65
+ }
66
+ if (filter.keyPattern) {
67
+ const name = item.meta.key ?? item.meta.key ?? "";
68
+ const pattern = filter.keyPattern.replace(/\*/g, ".*").replace(/\?/g, ".");
69
+ const regex = new RegExp(`^${pattern}$`, "i");
70
+ if (!regex.test(name))
71
+ return false;
72
+ }
73
+ return true;
74
+ });
75
+ }
76
+ function groupBy(items, keyFn) {
77
+ const groups = new Map;
78
+ for (const item of items) {
79
+ const key = keyFn(item);
80
+ const existing = groups.get(key);
81
+ if (existing) {
82
+ existing.push(item);
83
+ } else {
84
+ groups.set(key, [item]);
85
+ }
86
+ }
87
+ return groups;
88
+ }
89
+ function groupByToArray(items, keyFn) {
90
+ const map = groupBy(items, keyFn);
91
+ return Array.from(map.entries()).map(([key, items2]) => ({ key, items: items2 }));
92
+ }
93
+ function groupByMultiple(items, keysFn) {
94
+ const groups = new Map;
95
+ for (const item of items) {
96
+ const keys = keysFn(item);
97
+ for (const key of keys) {
98
+ const existing = groups.get(key);
99
+ if (existing) {
100
+ existing.push(item);
101
+ } else {
102
+ groups.set(key, [item]);
103
+ }
104
+ }
105
+ }
106
+ return groups;
107
+ }
108
+ function getUniqueTags(items) {
109
+ const tags = new Set;
110
+ for (const item of items) {
111
+ for (const tag of item.meta.tags ?? []) {
112
+ tags.add(tag);
113
+ }
114
+ }
115
+ return Array.from(tags).sort();
116
+ }
117
+ function getUniqueOwners(items) {
118
+ const owners = new Set;
119
+ for (const item of items) {
120
+ for (const owner of item.meta.owners ?? []) {
121
+ owners.add(owner);
122
+ }
123
+ }
124
+ return Array.from(owners).sort();
125
+ }
126
+ function getUniqueDomains(items) {
127
+ const domains = new Set;
128
+ for (const item of items) {
129
+ domains.add(GroupingStrategies.byDomain(item));
130
+ }
131
+ return Array.from(domains).sort();
132
+ }
133
+ var GroupingStrategies;
134
+ var init_registry_utils = __esm(() => {
135
+ GroupingStrategies = {
136
+ byTag: (item) => item.meta.tags?.[0] ?? "untagged",
137
+ byAllTags: (item) => item.meta.tags?.length ? item.meta.tags : ["untagged"],
138
+ byOwner: (item) => item.meta.owners?.[0] ?? "unowned",
139
+ byDomain: (item) => {
140
+ const name = item.meta.key ?? item.meta.key ?? "";
141
+ return name.split(".")[0] ?? "default";
142
+ },
143
+ byStability: (item) => item.meta.stability ?? "stable",
144
+ byUrlPath: (level) => (item) => {
145
+ if (!item.path)
146
+ return "root";
147
+ const segments = item.path.split("/").filter(Boolean);
148
+ return segments.slice(0, level).join("/") || "root";
149
+ }
150
+ };
151
+ });
152
+
153
+ // src/operations/operation.ts
154
+ var isEmitDeclRef = (e) => ("ref" in e);
155
+ var defineCommand = (spec) => ({
156
+ ...spec,
157
+ meta: { ...spec.meta, kind: "command" },
158
+ policy: {
159
+ ...spec.policy,
160
+ idempotent: spec.policy?.["policy"]?.idempotent ?? false
161
+ }
162
+ });
163
+ var defineQuery = (spec) => ({
164
+ ...spec,
165
+ meta: { ...spec.meta, kind: "query" },
166
+ policy: { ...spec.policy, idempotent: true }
167
+ });
168
+
169
+ // src/registry.ts
170
+ init_registry_utils();
171
+ import { compareVersions } from "compare-versions";
172
+ var keyOfSpecContract = (spec) => `${spec.meta.key}.v${spec.meta.version}`;
173
+
174
+ class SpecContractRegistry {
175
+ contractType;
176
+ items = new Map;
177
+ constructor(contractType, items) {
178
+ this.contractType = contractType;
179
+ if (items) {
180
+ items.forEach((p) => this.register(p));
181
+ }
182
+ }
183
+ register(p) {
184
+ const key = keyOfSpecContract(p);
185
+ if (this.items.has(key))
186
+ throw new Error(`Duplicate contract \`${this.contractType}\` ${key}`);
187
+ this.items.set(key, p);
188
+ return this;
189
+ }
190
+ count() {
191
+ return this.items.size;
192
+ }
193
+ list() {
194
+ return [...this.items.values()];
195
+ }
196
+ get(key, version) {
197
+ if (version != null)
198
+ return this.items.get(`${key}.v${version}`);
199
+ let candidate;
200
+ for (const [k, p] of this.items.entries()) {
201
+ if (!k.startsWith(`${key}.v`))
202
+ continue;
203
+ if (!candidate || compareVersions(p.meta.version, candidate.meta.version) > 0) {
204
+ candidate = p;
205
+ }
206
+ }
207
+ return candidate;
208
+ }
209
+ has(key, version) {
210
+ return !!this.get(key, version);
211
+ }
212
+ filter(criteria) {
213
+ return filterBy(this.list(), criteria);
214
+ }
215
+ listByTag(tag) {
216
+ return this.list().filter((p) => p.meta.tags?.includes(tag));
217
+ }
218
+ listByOwner(owner) {
219
+ return this.list().filter((p) => p.meta.owners?.includes(owner));
220
+ }
221
+ groupBy(keyFn) {
222
+ return groupBy(this.list(), keyFn);
223
+ }
224
+ getUniqueTags() {
225
+ return getUniqueTags(this.list());
226
+ }
227
+ }
228
+
229
+ // src/events.ts
230
+ function defineEvent(e) {
231
+ return e;
232
+ }
233
+ var eventKey = (key, version) => `${key}.v${version}`;
234
+
235
+ class EventRegistry extends SpecContractRegistry {
236
+ constructor(items) {
237
+ super("event", items);
238
+ }
239
+ }
240
+
241
+ // src/operations/registry.ts
242
+ function opKey(key, version) {
243
+ return `${key}.v${version}`;
244
+ }
245
+
246
+ class OperationSpecRegistry extends SpecContractRegistry {
247
+ handlers = new Map;
248
+ constructor(items) {
249
+ super("operation", items);
250
+ }
251
+ bind(spec, handler) {
252
+ const key = opKey(spec.meta.key, spec.meta.version);
253
+ if (!this.items.has(key))
254
+ throw new Error(`Cannot bind; spec not found: ${key}`);
255
+ if (this.handlers.has(key))
256
+ throw new Error(`Handler already bound for ${key}`);
257
+ this.handlers.set(key, handler);
258
+ return this;
259
+ }
260
+ getHandler(key, version) {
261
+ const spec = this.get(key, version);
262
+ if (!spec)
263
+ return;
264
+ return this.handlers.get(opKey(spec.meta.key, spec.meta.version));
265
+ }
266
+ listBound() {
267
+ const out = [];
268
+ for (const [k, spec] of this.items.entries()) {
269
+ const h = this.handlers.get(k);
270
+ if (h)
271
+ out.push({ spec, handler: h });
272
+ }
273
+ return out;
274
+ }
275
+ async execute(key, version, rawInput, ctx) {
276
+ const baseSpec = this.get(key, version);
277
+ if (!baseSpec)
278
+ throw new Error(`Spec not found for ${key}${version ? `.v${version}` : ""}`);
279
+ const spec = await ctx.specVariantResolver?.resolve({
280
+ name: baseSpec.meta.key,
281
+ version: baseSpec.meta.version,
282
+ kind: baseSpec.meta.kind
283
+ }, ctx) ?? baseSpec;
284
+ let handlerKey = opKey(spec.meta.key, spec.meta.version);
285
+ let handler = this.handlers.get(handlerKey);
286
+ if (!handler) {
287
+ const fallbackKey = opKey(baseSpec.meta.key, baseSpec.meta.version);
288
+ handler = this.handlers.get(fallbackKey);
289
+ handlerKey = fallbackKey;
290
+ }
291
+ if (!handler)
292
+ throw new Error(`No handler bound for ${handlerKey}`);
293
+ const parsedInput = spec.io.input?.getZod().parse(rawInput);
294
+ if (ctx.decide) {
295
+ const [service, command] = spec.meta.key.split(".");
296
+ if (!service || !command)
297
+ throw new Error(`Invalid spec name: ${spec.meta.key}`);
298
+ const decision = await ctx.decide({
299
+ service,
300
+ command,
301
+ version: spec.meta.version,
302
+ actor: ctx.actor ?? "anonymous",
303
+ channel: ctx.channel,
304
+ roles: ctx.roles,
305
+ organizationId: ctx.organizationId,
306
+ userId: ctx.userId,
307
+ flags: []
308
+ });
309
+ if (decision.effect === "deny") {
310
+ throw new Error(`PolicyDenied: ${spec.meta.key}.v${spec.meta.version}`);
311
+ }
312
+ if (decision.rateLimit && ctx.rateLimit) {
313
+ const key2 = decision.rateLimit.key ?? "default";
314
+ const rpm = decision.rateLimit.rpm ?? 60;
315
+ await ctx.rateLimit(key2, 1, rpm);
316
+ }
317
+ }
318
+ const allowedEvents = new Map;
319
+ if (spec.sideEffects?.emits) {
320
+ for (const e of spec.sideEffects.emits) {
321
+ if (isEmitDeclRef(e)) {
322
+ const eventSpec = ctx.eventSpecResolver?.get(e.ref.key, e.ref.version);
323
+ if (eventSpec) {
324
+ allowedEvents.set(`${e.ref.key}.v${e.ref.version}`, eventSpec.payload);
325
+ }
326
+ } else {
327
+ allowedEvents.set(`${e.key}.v${e.version}`, e.payload);
328
+ }
329
+ }
330
+ }
331
+ const emitGuard = async (eventName, eventVersion, payload) => {
332
+ const key2 = eventKey(eventName, eventVersion);
333
+ const schema = allowedEvents.get(key2);
334
+ if (!schema)
335
+ throw new Error(`UndeclaredEvent: ${key2} not allowed by ${opKey(spec.meta.key, spec.meta.version)}`);
336
+ const parsed = schema.getZod().parse(payload);
337
+ await ctx.eventPublisher?.({
338
+ key: eventName,
339
+ version: eventVersion,
340
+ payload: parsed,
341
+ traceId: ctx.traceId
342
+ });
343
+ };
344
+ if (ctx.appConfig) {
345
+ if (!ctx.branding) {
346
+ ctx.branding = ctx.appConfig.branding;
347
+ }
348
+ if (!ctx.translation) {
349
+ ctx.translation = { config: ctx.appConfig.translation };
350
+ } else if (!ctx.translation.config) {
351
+ ctx.translation = {
352
+ ...ctx.translation,
353
+ config: ctx.appConfig.translation
354
+ };
355
+ }
356
+ }
357
+ const telemetryContext = ctx.telemetry;
358
+ const trackTelemetry = async (trigger, details) => {
359
+ if (!telemetryContext || !trigger?.event)
360
+ return;
361
+ try {
362
+ const props = trigger.properties?.(details) ?? {};
363
+ await telemetryContext.track(trigger.event.key, trigger.event.version ?? "1.0.0", props, {
364
+ tenantId: ctx.organizationId ?? undefined,
365
+ organizationId: ctx.organizationId,
366
+ userId: ctx.userId,
367
+ actor: ctx.actor,
368
+ channel: ctx.channel,
369
+ metadata: ctx.traceId ? { traceId: ctx.traceId } : undefined
370
+ });
371
+ } catch (_error) {}
372
+ };
373
+ let result;
374
+ try {
375
+ result = await handler(parsedInput, {
376
+ ...ctx,
377
+ __emitGuard__: emitGuard
378
+ });
379
+ } catch (error) {
380
+ if (spec.telemetry?.failure) {
381
+ await trackTelemetry(spec.telemetry.failure, {
382
+ input: parsedInput ?? rawInput,
383
+ error
384
+ });
385
+ }
386
+ throw error;
387
+ }
388
+ if (spec.telemetry?.success) {
389
+ await trackTelemetry(spec.telemetry.success, {
390
+ input: parsedInput ?? rawInput,
391
+ output: result
392
+ });
393
+ }
394
+ const outputModel = spec.io.output;
395
+ if (outputModel?.getZod) {
396
+ const parsedOutput = outputModel.getZod().parse(result);
397
+ return parsedOutput;
398
+ }
399
+ return result;
400
+ }
401
+ }
402
+ // src/jsonschema.ts
403
+ import z from "zod";
404
+ function jsonSchemaForSpec(spec) {
405
+ return {
406
+ input: spec.io.input ? z.toJSONSchema(spec.io.input.getZod()) : null,
407
+ output: spec.io.output ? z.toJSONSchema(spec.io.output.getZod()) : null,
408
+ meta: {
409
+ name: spec.meta.key,
410
+ version: spec.meta.version,
411
+ kind: spec.meta.kind,
412
+ description: spec.meta.description,
413
+ tags: spec.meta.tags ?? [],
414
+ stability: spec.meta.stability ?? "stable"
415
+ }
416
+ };
417
+ }
418
+ function defaultRestPath(name, version) {
419
+ return `/${name.replace(/\./g, "/")}/v${version}`;
420
+ }
421
+ function sanitizeMcpName(name) {
422
+ const sanitized = name.replace(/\./g, "_");
423
+ return sanitized.slice(0, 64);
424
+ }
425
+ function defaultMcpTool(name, version) {
426
+ const safeName = name.replace(/\./g, "_");
427
+ const safeVersion = version.replace(/\./g, "_");
428
+ return `${safeName}-v${safeVersion}`;
429
+ }
430
+ function defaultMcpPrompt(key) {
431
+ return sanitizeMcpName(key);
432
+ }
433
+ function defaultGqlField(name, version) {
434
+ return `${name.replace(/\./g, "_")}_v${version}`;
435
+ }
436
+
437
+ // src/llm/exporters.ts
438
+ var DEFAULT_SPEC_OPTIONS = {
439
+ format: "full",
440
+ includeSchemas: true,
441
+ includeScenarios: true,
442
+ includeExamples: true,
443
+ includePolicy: true,
444
+ includeSideEffects: true
445
+ };
446
+ var DEFAULT_FEATURE_OPTIONS = {
447
+ ...DEFAULT_SPEC_OPTIONS,
448
+ includeRelatedSpecs: true,
449
+ includeRelatedEvents: true,
450
+ includeRelatedPresentations: true
451
+ };
452
+ function operationSpecToContextMarkdown(spec) {
453
+ const m = spec.meta;
454
+ const lines = [];
455
+ lines.push(`# ${m.key} (v${m.version})`);
456
+ lines.push("");
457
+ lines.push(`> ${m.description}`);
458
+ lines.push("");
459
+ lines.push(`**Type:** ${m.kind} | **Stability:** ${m.stability}`);
460
+ lines.push("");
461
+ lines.push("## Goal");
462
+ lines.push("");
463
+ lines.push(m.goal);
464
+ lines.push("");
465
+ lines.push("## Context");
466
+ lines.push("");
467
+ lines.push(m.context);
468
+ lines.push("");
469
+ if (spec.acceptance?.scenarios?.length) {
470
+ lines.push("## Acceptance Criteria");
471
+ lines.push("");
472
+ for (const s of spec.acceptance.scenarios) {
473
+ lines.push(`### ${s.key}`);
474
+ lines.push("");
475
+ lines.push("**Given:**");
476
+ for (const g of s.given)
477
+ lines.push(`- ${g}`);
478
+ lines.push("");
479
+ lines.push("**When:**");
480
+ for (const w of s.when)
481
+ lines.push(`- ${w}`);
482
+ lines.push("");
483
+ lines.push("**Then:**");
484
+ for (const t of s.then)
485
+ lines.push(`- ${t}`);
486
+ lines.push("");
487
+ }
488
+ }
489
+ return lines.join(`
490
+ `);
491
+ }
492
+ function operationSpecToFullMarkdown(spec, options = {}) {
493
+ const opts = { ...DEFAULT_SPEC_OPTIONS, ...options };
494
+ const m = spec.meta;
495
+ const lines = [];
496
+ lines.push(`# ${m.key}.v${m.version}`);
497
+ lines.push("");
498
+ lines.push(`> ${m.description}`);
499
+ lines.push("");
500
+ lines.push("## Metadata");
501
+ lines.push("");
502
+ lines.push("| Field | Value |");
503
+ lines.push("|-------|-------|");
504
+ lines.push(`| Kind | ${m.kind} |`);
505
+ lines.push(`| Stability | ${m.stability} |`);
506
+ lines.push(`| Owners | ${m.owners.join(", ")} |`);
507
+ lines.push(`| Tags | ${m.tags.join(", ")} |`);
508
+ lines.push("");
509
+ lines.push("## Goal");
510
+ lines.push("");
511
+ lines.push(m.goal);
512
+ lines.push("");
513
+ lines.push("## Context");
514
+ lines.push("");
515
+ lines.push(m.context);
516
+ lines.push("");
517
+ if (opts.includeSchemas) {
518
+ lines.push("## Input/Output");
519
+ lines.push("");
520
+ if (spec.io.input) {
521
+ lines.push("### Input Schema");
522
+ lines.push("");
523
+ lines.push("```json");
524
+ try {
525
+ const schema = jsonSchemaForSpec(spec);
526
+ lines.push(JSON.stringify(schema.input ?? {}, null, 2));
527
+ } catch {
528
+ lines.push("// Schema generation not available");
529
+ }
530
+ lines.push("```");
531
+ lines.push("");
532
+ }
533
+ lines.push("### Output Schema");
534
+ lines.push("");
535
+ lines.push("```json");
536
+ try {
537
+ const schema = jsonSchemaForSpec(spec);
538
+ lines.push(JSON.stringify(schema.output ?? {}, null, 2));
539
+ } catch {
540
+ lines.push("// Schema generation not available");
541
+ }
542
+ lines.push("```");
543
+ lines.push("");
544
+ if (spec.io.errors && Object.keys(spec.io.errors).length) {
545
+ lines.push("### Error Codes");
546
+ lines.push("");
547
+ lines.push("| Code | HTTP | Description | When |");
548
+ lines.push("|------|------|-------------|------|");
549
+ for (const [code, err] of Object.entries(spec.io.errors)) {
550
+ lines.push(`| \`${code}\` | ${err.http ?? 400} | ${err.description} | ${err.when} |`);
551
+ }
552
+ lines.push("");
553
+ }
554
+ }
555
+ if (opts.includePolicy) {
556
+ lines.push("## Policy");
557
+ lines.push("");
558
+ lines.push(`- **Auth Required:** ${spec.policy.auth}`);
559
+ lines.push(`- **Idempotent:** ${spec.policy.idempotent ?? m.kind === "query"}`);
560
+ if (spec.policy.rateLimit) {
561
+ lines.push(`- **Rate Limit:** ${spec.policy.rateLimit.rpm} rpm per ${spec.policy.rateLimit.key}`);
562
+ }
563
+ if (spec.policy.flags?.length) {
564
+ lines.push(`- **Feature Flags:** ${spec.policy.flags.join(", ")}`);
565
+ }
566
+ if (spec.policy.pii?.length) {
567
+ lines.push(`- **PII Fields:** ${spec.policy.pii.join(", ")}`);
568
+ }
569
+ if (spec.policy.escalate) {
570
+ lines.push(`- **Escalation:** ${spec.policy.escalate}`);
571
+ }
572
+ lines.push("");
573
+ }
574
+ if (opts.includeSideEffects && spec.sideEffects) {
575
+ if (spec.sideEffects.emits?.length) {
576
+ lines.push("## Events Emitted");
577
+ lines.push("");
578
+ for (const e of spec.sideEffects.emits) {
579
+ if (isEmitDeclRef(e)) {
580
+ lines.push(`- \`${e.ref.key}.v${e.ref.version}\` \u2014 ${e.when}`);
581
+ } else {
582
+ lines.push(`- \`${e.key}.v${e.version}\` \u2014 ${e.when}`);
583
+ }
584
+ }
585
+ lines.push("");
586
+ }
587
+ if (spec.sideEffects.analytics?.length) {
588
+ lines.push("## Analytics Events");
589
+ lines.push("");
590
+ for (const a of spec.sideEffects.analytics) {
591
+ lines.push(`- ${a}`);
592
+ }
593
+ lines.push("");
594
+ }
595
+ }
596
+ if (opts.includeScenarios && spec.acceptance?.scenarios?.length) {
597
+ lines.push("## Acceptance Scenarios");
598
+ lines.push("");
599
+ for (const s of spec.acceptance.scenarios) {
600
+ lines.push(`### ${s.key}`);
601
+ lines.push("");
602
+ lines.push("**Given:**");
603
+ for (const g of s.given)
604
+ lines.push(`- ${g}`);
605
+ lines.push("");
606
+ lines.push("**When:**");
607
+ for (const w of s.when)
608
+ lines.push(`- ${w}`);
609
+ lines.push("");
610
+ lines.push("**Then:**");
611
+ for (const t of s.then)
612
+ lines.push(`- ${t}`);
613
+ lines.push("");
614
+ }
615
+ }
616
+ if (opts.includeExamples && spec.acceptance?.examples?.length) {
617
+ lines.push("## Examples");
618
+ lines.push("");
619
+ for (const ex of spec.acceptance.examples) {
620
+ lines.push(`### ${ex.key}`);
621
+ lines.push("");
622
+ lines.push("**Input:**");
623
+ lines.push("```json");
624
+ lines.push(JSON.stringify(ex.input, null, 2));
625
+ lines.push("```");
626
+ lines.push("");
627
+ lines.push("**Output:**");
628
+ lines.push("```json");
629
+ lines.push(JSON.stringify(ex.output, null, 2));
630
+ lines.push("```");
631
+ lines.push("");
632
+ }
633
+ }
634
+ if (spec.transport) {
635
+ lines.push("## Transport Configuration");
636
+ lines.push("");
637
+ if (spec.transport.rest) {
638
+ lines.push(`- **REST:** ${spec.transport.rest.method ?? "POST"} ${spec.transport.rest.path ?? "auto"}`);
639
+ }
640
+ if (spec.transport.gql) {
641
+ lines.push(`- **GraphQL:** ${spec.transport.gql.field ?? "auto"}`);
642
+ }
643
+ if (spec.transport.mcp) {
644
+ lines.push(`- **MCP Tool:** ${spec.transport.mcp.toolName ?? "auto"}`);
645
+ }
646
+ lines.push("");
647
+ }
648
+ return lines.join(`
649
+ `);
650
+ }
651
+ function operationSpecToAgentPrompt(spec, options) {
652
+ const taskType = options?.taskType ?? "implement";
653
+ const m = spec.meta;
654
+ const lines = [];
655
+ const taskVerb = {
656
+ implement: "Implement",
657
+ test: "Write tests for",
658
+ refactor: "Refactor",
659
+ review: "Review"
660
+ }[taskType];
661
+ lines.push(`# Task: ${taskVerb} ${m.key}.v${m.version}`);
662
+ lines.push("");
663
+ lines.push("## Context");
664
+ lines.push("");
665
+ lines.push(`You are working on a ContractSpec-driven codebase. This spec defines a ${m.kind} operation.`);
666
+ lines.push("");
667
+ lines.push(`**Goal:** ${m.goal}`);
668
+ lines.push("");
669
+ lines.push(`**Background:** ${m.context}`);
670
+ lines.push("");
671
+ lines.push("## Specification");
672
+ lines.push("");
673
+ lines.push(operationSpecToFullMarkdown(spec));
674
+ lines.push("");
675
+ lines.push("## Instructions");
676
+ lines.push("");
677
+ if (taskType === "implement") {
678
+ lines.push("Implement this specification following these requirements:");
679
+ lines.push("");
680
+ lines.push("1. **Type Safety**: Use TypeScript with strict typing. No `any` types.");
681
+ lines.push("2. **Input Validation**: Validate input against the schema before processing.");
682
+ lines.push("3. **Error Handling**: Implement all error cases defined in the spec.");
683
+ lines.push("4. **Events**: Emit events as specified in sideEffects.emits.");
684
+ lines.push("5. **Policy**: Respect auth, rate limits, and feature flags.");
685
+ lines.push("6. **Idempotency**: " + (spec.policy.idempotent ? "This operation MUST be idempotent." : "This operation may have side effects."));
686
+ lines.push("");
687
+ if (spec.policy.pii?.length) {
688
+ lines.push("**PII Handling**: The following fields contain PII and must be handled carefully:");
689
+ for (const field of spec.policy.pii) {
690
+ lines.push(`- ${field}`);
691
+ }
692
+ lines.push("");
693
+ }
694
+ } else if (taskType === "test") {
695
+ lines.push("Write comprehensive tests for this specification:");
696
+ lines.push("");
697
+ lines.push("1. Test all acceptance scenarios defined in the spec.");
698
+ lines.push("2. Test all error cases with appropriate assertions.");
699
+ lines.push("3. Test edge cases and boundary conditions.");
700
+ lines.push("4. Verify events are emitted correctly.");
701
+ lines.push('5. Use descriptive test names following the pattern: "should [behavior] when [condition]"');
702
+ lines.push("");
703
+ } else if (taskType === "refactor") {
704
+ lines.push("Refactor this implementation while preserving all behavior:");
705
+ lines.push("");
706
+ lines.push("1. Maintain compliance with the specification.");
707
+ lines.push("2. Improve code clarity and maintainability.");
708
+ lines.push("3. Reduce complexity where possible.");
709
+ lines.push("4. Ensure all existing tests still pass.");
710
+ lines.push("");
711
+ } else if (taskType === "review") {
712
+ lines.push("Review this implementation against the specification:");
713
+ lines.push("");
714
+ lines.push("1. Verify input/output types match the schema.");
715
+ lines.push("2. Check all error cases are handled.");
716
+ lines.push("3. Verify events are emitted as specified.");
717
+ lines.push("4. Check policy compliance (auth, rate limits).");
718
+ lines.push("5. Report any deviations from the spec.");
719
+ lines.push("");
720
+ }
721
+ if (options?.existingCode) {
722
+ lines.push("## Existing Code");
723
+ lines.push("");
724
+ lines.push("```typescript");
725
+ lines.push(options.existingCode);
726
+ lines.push("```");
727
+ lines.push("");
728
+ }
729
+ lines.push("## Expected Output");
730
+ lines.push("");
731
+ if (taskType === "implement" || taskType === "refactor") {
732
+ lines.push("Provide a complete TypeScript implementation. Include:");
733
+ lines.push("- Type definitions for input/output");
734
+ lines.push("- Handler function with proper error handling");
735
+ lines.push("- JSDoc comments explaining the implementation");
736
+ } else if (taskType === "test") {
737
+ lines.push("Provide a complete test file using the testing framework available (prefer Vitest).");
738
+ } else if (taskType === "review") {
739
+ lines.push("Provide a structured review with:");
740
+ lines.push("- Compliance status (pass/fail for each requirement)");
741
+ lines.push("- Issues found with severity (error/warning/info)");
742
+ lines.push("- Suggestions for improvement");
743
+ }
744
+ lines.push("");
745
+ return lines.join(`
746
+ `);
747
+ }
748
+ function featureToMarkdown(feature, deps, options = {}) {
749
+ const opts = { ...DEFAULT_FEATURE_OPTIONS, ...options };
750
+ const m = feature.meta;
751
+ const lines = [];
752
+ lines.push(`# Feature: ${m.title ?? m.key}`);
753
+ lines.push("");
754
+ if (m.description) {
755
+ lines.push(`> ${m.description}`);
756
+ lines.push("");
757
+ }
758
+ lines.push("## Overview");
759
+ lines.push("");
760
+ lines.push(`- **Key:** \`${m.key}\``);
761
+ lines.push(`- **Stability:** ${m.stability}`);
762
+ lines.push(`- **Owners:** ${m.owners.join(", ")}`);
763
+ if (m.tags?.length) {
764
+ lines.push(`- **Tags:** ${m.tags.join(", ")}`);
765
+ }
766
+ lines.push("");
767
+ if (feature.operations?.length) {
768
+ lines.push("## Operations");
769
+ lines.push("");
770
+ lines.push("| Name | Version | Type |");
771
+ lines.push("|------|---------|------|");
772
+ for (const op of feature.operations) {
773
+ const spec = deps?.specs?.get(op.key, op.version);
774
+ const kind = spec?.meta.kind ?? "unknown";
775
+ lines.push(`| ${op.key} | v${op.version} | ${kind} |`);
776
+ }
777
+ lines.push("");
778
+ if (opts.includeRelatedSpecs && deps?.specs) {
779
+ lines.push("### Operation Details");
780
+ lines.push("");
781
+ for (const op of feature.operations) {
782
+ const spec = deps.specs.get(op.key, op.version);
783
+ if (spec) {
784
+ lines.push(`---`);
785
+ lines.push("");
786
+ lines.push(operationSpecToFullMarkdown(spec, opts));
787
+ }
788
+ }
789
+ }
790
+ }
791
+ if (feature.events?.length) {
792
+ lines.push("## Events");
793
+ lines.push("");
794
+ lines.push("| Name | Version |");
795
+ lines.push("|------|---------|");
796
+ for (const evt of feature.events) {
797
+ lines.push(`| ${evt.key} | v${evt.version} |`);
798
+ }
799
+ lines.push("");
800
+ }
801
+ if (feature.presentations?.length) {
802
+ lines.push("## Presentations");
803
+ lines.push("");
804
+ lines.push("| Name | Version |");
805
+ lines.push("|------|---------|");
806
+ for (const pres of feature.presentations) {
807
+ lines.push(`| ${pres.key} | v${pres.version} |`);
808
+ }
809
+ lines.push("");
810
+ if (opts.includeRelatedPresentations && deps?.presentations) {
811
+ lines.push("### Presentation Details");
812
+ lines.push("");
813
+ for (const pres of feature.presentations) {
814
+ const p = deps.presentations.get(pres.key, pres.version);
815
+ if (p) {
816
+ lines.push(`#### ${pres.key}.v${pres.version}`);
817
+ lines.push("");
818
+ lines.push(`- **Type:** ${p.source.type}`);
819
+ if (p.source.type === "component") {
820
+ lines.push(`- **Component:** ${p.source.componentKey}`);
821
+ }
822
+ lines.push("");
823
+ }
824
+ }
825
+ }
826
+ }
827
+ if (feature.capabilities) {
828
+ if (feature.capabilities.provides?.length) {
829
+ lines.push("## Capabilities Provided");
830
+ lines.push("");
831
+ for (const cap of feature.capabilities.provides) {
832
+ lines.push(`- \`${cap.key}.v${cap.version}\``);
833
+ }
834
+ lines.push("");
835
+ }
836
+ if (feature.capabilities.requires?.length) {
837
+ lines.push("## Capabilities Required");
838
+ lines.push("");
839
+ for (const cap of feature.capabilities.requires) {
840
+ lines.push(`- \`${cap.key}\`${cap.version ? `.v${cap.version}` : ""} (${cap.optional ? "optional" : "required"})`);
841
+ }
842
+ lines.push("");
843
+ }
844
+ }
845
+ return lines.join(`
846
+ `);
847
+ }
848
+ function presentationToMarkdown(presentation) {
849
+ const m = presentation.meta;
850
+ const lines = [];
851
+ lines.push(`# Presentation: ${m.key}.v${m.version}`);
852
+ lines.push("");
853
+ if (m.description) {
854
+ lines.push(`> ${m.description}`);
855
+ lines.push("");
856
+ }
857
+ lines.push("## Metadata");
858
+ lines.push("");
859
+ lines.push(`- **Name:** ${m.key}`);
860
+ lines.push(`- **Version:** ${m.version}`);
861
+ if (m.stability)
862
+ lines.push(`- **Stability:** ${m.stability}`);
863
+ if (m.owners?.length)
864
+ lines.push(`- **Owners:** ${m.owners.join(", ")}`);
865
+ if (m.tags?.length)
866
+ lines.push(`- **Tags:** ${m.tags.join(", ")}`);
867
+ lines.push("");
868
+ lines.push("## Source");
869
+ lines.push("");
870
+ lines.push(`- **Type:** ${presentation.source.type}`);
871
+ if (presentation.source.type === "component") {
872
+ lines.push(`- **Framework:** ${presentation.source.framework}`);
873
+ lines.push(`- **Component Key:** ${presentation.source.componentKey}`);
874
+ }
875
+ lines.push("");
876
+ lines.push("## Supported Targets");
877
+ lines.push("");
878
+ for (const target of presentation.targets) {
879
+ lines.push(`- ${target}`);
880
+ }
881
+ lines.push("");
882
+ if (presentation.policy) {
883
+ lines.push("## Policy");
884
+ lines.push("");
885
+ if (presentation.policy.flags?.length) {
886
+ lines.push(`- **Feature Flags:** ${presentation.policy.flags.join(", ")}`);
887
+ }
888
+ if (presentation.policy.pii?.length) {
889
+ lines.push(`- **PII Fields:** ${presentation.policy.pii.join(", ")}`);
890
+ }
891
+ lines.push("");
892
+ }
893
+ return lines.join(`
894
+ `);
895
+ }
896
+ function eventToMarkdown(event) {
897
+ const lines = [];
898
+ lines.push(`# Event: ${event.meta.key}.v${event.meta.version}`);
899
+ lines.push("");
900
+ lines.push("## Metadata");
901
+ lines.push("");
902
+ lines.push(`- **Name:** ${event.meta.key}`);
903
+ lines.push(`- **Version:** ${event.meta.version}`);
904
+ if (event.meta.description)
905
+ lines.push(`- **Description:** ${event.meta.description}`);
906
+ lines.push("");
907
+ lines.push("## Payload Schema");
908
+ lines.push("");
909
+ lines.push("```json");
910
+ try {
911
+ const zodSchema = event.payload.getZod();
912
+ if ("shape" in zodSchema && zodSchema.shape) {
913
+ const shape = zodSchema.shape;
914
+ const fields = Object.keys(shape);
915
+ lines.push(JSON.stringify({ fields }, null, 2));
916
+ } else {
917
+ lines.push("// Payload schema available at runtime");
918
+ }
919
+ } catch {
920
+ lines.push("// Schema details available at runtime");
921
+ }
922
+ lines.push("```");
923
+ lines.push("");
924
+ return lines.join(`
925
+ `);
926
+ }
927
+ function docBlockToMarkdown(doc) {
928
+ const lines = [];
929
+ lines.push(`# ${doc.title}`);
930
+ lines.push("");
931
+ if (doc.summary) {
932
+ lines.push(`> ${doc.summary}`);
933
+ lines.push("");
934
+ }
935
+ lines.push("## Metadata");
936
+ lines.push("");
937
+ lines.push(`- **ID:** ${doc.id}`);
938
+ lines.push(`- **Kind:** ${doc.kind ?? "reference"}`);
939
+ lines.push(`- **Visibility:** ${doc.visibility ?? "public"}`);
940
+ if (doc.tags?.length)
941
+ lines.push(`- **Tags:** ${doc.tags.join(", ")}`);
942
+ if (doc.owners?.length)
943
+ lines.push(`- **Owners:** ${doc.owners.join(", ")}`);
944
+ if (doc.domain)
945
+ lines.push(`- **Domain:** ${doc.domain}`);
946
+ lines.push("");
947
+ lines.push("## Content");
948
+ lines.push("");
949
+ lines.push(doc.body);
950
+ lines.push("");
951
+ if (doc.links?.length) {
952
+ lines.push("## Related Links");
953
+ lines.push("");
954
+ for (const link of doc.links) {
955
+ lines.push(`- [${link.label}](${link.href})`);
956
+ }
957
+ lines.push("");
958
+ }
959
+ return lines.join(`
960
+ `);
961
+ }
962
+ function exportSpec(spec, options = {}) {
963
+ const format = options.format ?? "full";
964
+ let markdown;
965
+ switch (format) {
966
+ case "context":
967
+ markdown = operationSpecToContextMarkdown(spec);
968
+ break;
969
+ case "prompt":
970
+ markdown = operationSpecToAgentPrompt(spec);
971
+ break;
972
+ case "full":
973
+ default:
974
+ markdown = operationSpecToFullMarkdown(spec, options);
975
+ break;
976
+ }
977
+ return {
978
+ spec,
979
+ markdown,
980
+ format,
981
+ meta: {
982
+ specName: spec.meta.key,
983
+ specVersion: spec.meta.version,
984
+ exportedAt: new Date().toISOString(),
985
+ wordCount: markdown.split(/\s+/).length
986
+ }
987
+ };
988
+ }
989
+ function exportFeature(feature, deps, options = {}) {
990
+ const format = options.format ?? "full";
991
+ const markdown = featureToMarkdown(feature, deps, options);
992
+ return {
993
+ feature,
994
+ markdown,
995
+ format,
996
+ includedSpecs: feature.operations?.map((o) => `${o.key}.v${o.version}`) ?? [],
997
+ includedEvents: feature.events?.map((e) => `${e.key}.v${e.version}`) ?? [],
998
+ includedPresentations: feature.presentations?.map((p) => `${p.key}.v${p.version}`) ?? []
999
+ };
1000
+ }
1001
+
1002
+ // src/llm/prompts.ts
1003
+ var AGENT_SYSTEM_PROMPTS = {
1004
+ "claude-code": `You are an expert TypeScript developer working with ContractSpec, a spec-first development framework.
1005
+
1006
+ Your code follows these principles:
1007
+ - Type-safe with comprehensive TypeScript types (no \`any\`)
1008
+ - Well-documented with JSDoc comments
1009
+ - Production-ready with proper error handling
1010
+ - Following SOLID principles and clean code practices
1011
+ - Modular and testable
1012
+
1013
+ When implementing specs:
1014
+ 1. Validate input against the schema before processing
1015
+ 2. Handle all error cases defined in the spec
1016
+ 3. Emit events as specified in sideEffects
1017
+ 4. Respect policy constraints (auth, rate limits, PII handling)
1018
+ 5. Follow the acceptance scenarios as your implementation guide
1019
+
1020
+ Generate clean, idiomatic TypeScript that exactly matches the specification.`,
1021
+ "cursor-cli": `You are implementing features for a ContractSpec-driven codebase.
1022
+
1023
+ ContractSpec is a spec-first framework where specifications define:
1024
+ - Operations (commands and queries) with typed I/O
1025
+ - Events that operations emit
1026
+ - Presentations for UI components
1027
+ - Features that group related specs
1028
+
1029
+ When working with specs:
1030
+ - Read the spec carefully before implementing
1031
+ - Match the input/output types exactly
1032
+ - Implement all error cases
1033
+ - Follow the acceptance scenarios
1034
+ - Respect policy constraints
1035
+
1036
+ Use the project's existing patterns and conventions.`,
1037
+ "generic-mcp": `You are a code generation assistant working with ContractSpec specifications.
1038
+
1039
+ ContractSpec specs define:
1040
+ - meta: name, version, kind (command/query), description, goal, context
1041
+ - io: input schema, output schema, error definitions
1042
+ - policy: auth level, rate limits, feature flags, PII handling
1043
+ - sideEffects: events to emit, analytics, audit
1044
+ - acceptance: scenarios and examples
1045
+
1046
+ Your task is to generate or modify code that complies with the given specification.
1047
+ Follow the spec exactly and handle all defined cases.`
1048
+ };
1049
+ function generateImplementationPrompt(spec, agent, options) {
1050
+ const systemPrompt = AGENT_SYSTEM_PROMPTS[agent];
1051
+ const specMarkdown = operationSpecToFullMarkdown(spec);
1052
+ let taskPrompt;
1053
+ if (agent === "claude-code") {
1054
+ taskPrompt = `## Implementation Task
1055
+
1056
+ Implement the following ContractSpec operation:
1057
+
1058
+ ${specMarkdown}
1059
+
1060
+ ${options?.targetPath ? `**Target file:** \`${options.targetPath}\`
1061
+ ` : ""}
1062
+ ${options?.existingCode ? `**Existing code to modify:**
1063
+ \`\`\`typescript
1064
+ ${options.existingCode}
1065
+ \`\`\`
1066
+ ` : ""}
1067
+
1068
+ Generate a complete, production-ready TypeScript implementation that:
1069
+ 1. Exports a handler function matching the spec signature
1070
+ 2. Validates input using the schema
1071
+ 3. Handles all defined error cases
1072
+ 4. Emits events as specified
1073
+ 5. Includes JSDoc documentation
1074
+
1075
+ Provide ONLY the TypeScript code.`;
1076
+ } else if (agent === "cursor-cli") {
1077
+ taskPrompt = `Implement this ContractSpec operation.
1078
+
1079
+ ${specMarkdown}
1080
+
1081
+ ${options?.targetPath ? `Target: ${options.targetPath}
1082
+ ` : ""}
1083
+
1084
+ Requirements:
1085
+ - TypeScript with strict types
1086
+ - Handle all error cases
1087
+ - Emit specified events
1088
+ - Follow acceptance scenarios`;
1089
+ } else {
1090
+ taskPrompt = operationSpecToAgentPrompt(spec, {
1091
+ taskType: "implement",
1092
+ existingCode: options?.existingCode
1093
+ });
1094
+ }
1095
+ return {
1096
+ agent,
1097
+ systemPrompt,
1098
+ taskPrompt
1099
+ };
1100
+ }
1101
+ function generateTestPrompt(spec, agent, options) {
1102
+ const framework = options?.testFramework ?? "vitest";
1103
+ const specMarkdown = operationSpecToFullMarkdown(spec);
1104
+ const taskPrompt = `## Test Generation Task
1105
+
1106
+ Generate comprehensive tests for this specification:
1107
+
1108
+ ${specMarkdown}
1109
+
1110
+ ${options?.implementationCode ? `**Implementation:**
1111
+ \`\`\`typescript
1112
+ ${options.implementationCode}
1113
+ \`\`\`
1114
+ ` : ""}
1115
+
1116
+ **Test Framework:** ${framework}
1117
+
1118
+ Generate tests that:
1119
+ 1. Cover all acceptance scenarios from the spec
1120
+ 2. Test all defined error cases
1121
+ 3. Verify input validation
1122
+ 4. Check event emissions
1123
+ 5. Test edge cases
1124
+
1125
+ Use descriptive test names: "should [behavior] when [condition]"
1126
+
1127
+ Provide a complete test file.`;
1128
+ return {
1129
+ agent,
1130
+ systemPrompt: AGENT_SYSTEM_PROMPTS[agent],
1131
+ taskPrompt
1132
+ };
1133
+ }
1134
+ function generateReviewPrompt(spec, agent, implementationCode) {
1135
+ const specMarkdown = operationSpecToFullMarkdown(spec);
1136
+ const taskPrompt = `## Code Review Task
1137
+
1138
+ Review this implementation against its specification:
1139
+
1140
+ **Specification:**
1141
+ ${specMarkdown}
1142
+
1143
+ **Implementation:**
1144
+ \`\`\`typescript
1145
+ ${implementationCode}
1146
+ \`\`\`
1147
+
1148
+ Provide a structured review:
1149
+
1150
+ ### Compliance Check
1151
+ - [ ] Input types match spec
1152
+ - [ ] Output types match spec
1153
+ - [ ] All error cases handled
1154
+ - [ ] Events emitted correctly
1155
+ - [ ] Policy constraints respected
1156
+
1157
+ ### Issues Found
1158
+ List any issues with severity (error/warning/info)
1159
+
1160
+ ### Suggestions
1161
+ List improvements and recommendations
1162
+
1163
+ Be thorough and precise. Focus on spec compliance first, then code quality.`;
1164
+ return {
1165
+ agent,
1166
+ systemPrompt: AGENT_SYSTEM_PROMPTS[agent],
1167
+ taskPrompt
1168
+ };
1169
+ }
1170
+ function generateVerificationPrompt(spec, implementationCode) {
1171
+ const specMarkdown = operationSpecToFullMarkdown(spec);
1172
+ const taskPrompt = `## Semantic Verification Task
1173
+
1174
+ Verify that this implementation fulfills the specification's intent.
1175
+
1176
+ **Specification:**
1177
+ ${specMarkdown}
1178
+
1179
+ **Implementation:**
1180
+ \`\`\`typescript
1181
+ ${implementationCode}
1182
+ \`\`\`
1183
+
1184
+ Analyze and respond with JSON:
1185
+
1186
+ \`\`\`json
1187
+ {
1188
+ "passed": true/false,
1189
+ "score": 0-100,
1190
+ "compliance": {
1191
+ "inputTypes": { "match": true/false, "issues": [] },
1192
+ "outputTypes": { "match": true/false, "issues": [] },
1193
+ "errorHandling": { "coverage": "full/partial/none", "missing": [] },
1194
+ "eventEmission": { "correct": true/false, "issues": [] },
1195
+ "policyCompliance": { "auth": true/false, "rateLimit": true/false, "pii": true/false }
1196
+ },
1197
+ "scenarios": [
1198
+ { "name": "scenario name", "covered": true/false, "notes": "" }
1199
+ ],
1200
+ "issues": [
1201
+ { "severity": "error/warning/info", "category": "type/export/import/scenario/error_handling/semantic", "message": "", "suggestion": "" }
1202
+ ],
1203
+ "summary": "Brief summary of verification results"
1204
+ }
1205
+ \`\`\``;
1206
+ return {
1207
+ agent: "generic-mcp",
1208
+ taskPrompt
1209
+ };
1210
+ }
1211
+ function generateImplementationPlan(spec, options) {
1212
+ const m = spec.meta;
1213
+ const fileStructure = [];
1214
+ const basePath = options?.projectRoot ?? "src";
1215
+ const specPath = m.key.replace(/\./g, "/");
1216
+ if (m.kind === "command" || m.kind === "query") {
1217
+ fileStructure.push({
1218
+ path: `${basePath}/${specPath}/handler.ts`,
1219
+ purpose: "Main handler implementation",
1220
+ type: "create"
1221
+ }, {
1222
+ path: `${basePath}/${specPath}/types.ts`,
1223
+ purpose: "Type definitions",
1224
+ type: "create"
1225
+ }, {
1226
+ path: `${basePath}/${specPath}/handler.test.ts`,
1227
+ purpose: "Handler tests",
1228
+ type: "create"
1229
+ });
1230
+ }
1231
+ const steps = [];
1232
+ let order = 1;
1233
+ steps.push({
1234
+ order: order++,
1235
+ title: "Define Types",
1236
+ description: "Create TypeScript types for input, output, and internal data structures",
1237
+ acceptanceCriteria: [
1238
+ "Input type matches spec schema exactly",
1239
+ "Output type matches spec schema exactly",
1240
+ "Error types defined for all error cases"
1241
+ ]
1242
+ });
1243
+ steps.push({
1244
+ order: order++,
1245
+ title: "Implement Input Validation",
1246
+ description: "Add validation logic for the input payload",
1247
+ acceptanceCriteria: [
1248
+ "All required fields are validated",
1249
+ "Type constraints are enforced",
1250
+ "Validation errors return appropriate error codes"
1251
+ ]
1252
+ });
1253
+ steps.push({
1254
+ order: order++,
1255
+ title: "Implement Core Logic",
1256
+ description: "Implement the main business logic of the operation",
1257
+ acceptanceCriteria: spec.acceptance?.scenarios?.map((s) => s.key) ?? [
1258
+ "Operation completes successfully for valid input"
1259
+ ]
1260
+ });
1261
+ if (spec.io.errors && Object.keys(spec.io.errors).length > 0) {
1262
+ steps.push({
1263
+ order: order++,
1264
+ title: "Implement Error Handling",
1265
+ description: "Handle all defined error cases",
1266
+ acceptanceCriteria: Object.entries(spec.io.errors).map(([code, err]) => `Handle ${code}: ${err.when}`)
1267
+ });
1268
+ }
1269
+ if (spec.sideEffects?.emits?.length) {
1270
+ steps.push({
1271
+ order: order++,
1272
+ title: "Implement Event Emission",
1273
+ description: "Emit events as specified",
1274
+ acceptanceCriteria: spec.sideEffects.emits.map((e) => {
1275
+ if ("ref" in e) {
1276
+ return `Emit ${e.ref.key}.v${e.ref.version} when ${e.when}`;
1277
+ }
1278
+ return `Emit ${e.key}.v${e.version} when ${e.when}`;
1279
+ })
1280
+ });
1281
+ }
1282
+ steps.push({
1283
+ order: order++,
1284
+ title: "Write Tests",
1285
+ description: "Create comprehensive test suite",
1286
+ acceptanceCriteria: [
1287
+ "All acceptance scenarios covered",
1288
+ "All error cases tested",
1289
+ "Edge cases handled",
1290
+ "Events verified"
1291
+ ]
1292
+ });
1293
+ const constraints = {
1294
+ policy: [],
1295
+ security: [],
1296
+ pii: []
1297
+ };
1298
+ constraints.policy.push(`Auth level: ${spec.policy.auth}`);
1299
+ if (spec.policy.idempotent !== undefined) {
1300
+ constraints.policy.push(`Idempotent: ${spec.policy.idempotent}`);
1301
+ }
1302
+ if (spec.policy.rateLimit) {
1303
+ constraints.policy.push(`Rate limit: ${spec.policy.rateLimit.rpm} rpm per ${spec.policy.rateLimit.key}`);
1304
+ }
1305
+ if (spec.policy.flags?.length) {
1306
+ constraints.policy.push(`Feature flags required: ${spec.policy.flags.join(", ")}`);
1307
+ }
1308
+ if (spec.policy.escalate) {
1309
+ constraints.security.push(`Escalation required: ${spec.policy.escalate}`);
1310
+ }
1311
+ if (spec.policy.pii?.length) {
1312
+ constraints.pii = spec.policy.pii;
1313
+ }
1314
+ const verificationChecklist = [
1315
+ "Input validation works for all cases",
1316
+ "Output matches expected schema",
1317
+ "All error cases return correct codes",
1318
+ "Events are emitted with correct payloads",
1319
+ "Auth requirements are enforced",
1320
+ "Rate limiting is applied (if applicable)",
1321
+ "PII fields are handled correctly",
1322
+ "All acceptance scenarios pass",
1323
+ "Tests provide adequate coverage"
1324
+ ];
1325
+ return {
1326
+ target: {
1327
+ type: "spec",
1328
+ key: m.key,
1329
+ version: m.version
1330
+ },
1331
+ context: {
1332
+ goal: m.goal,
1333
+ description: m.description,
1334
+ background: m.context
1335
+ },
1336
+ specMarkdown: operationSpecToFullMarkdown(spec),
1337
+ fileStructure,
1338
+ steps,
1339
+ constraints,
1340
+ verificationChecklist
1341
+ };
1342
+ }
1343
+ function formatPlanForAgent(plan, agent) {
1344
+ let taskPrompt;
1345
+ if (agent === "claude-code") {
1346
+ taskPrompt = `## Implementation Plan: ${plan.target.key}.v${plan.target.version}
1347
+
1348
+ ### Context
1349
+ **Goal:** ${plan.context.goal}
1350
+
1351
+ **Background:** ${plan.context.background}
1352
+
1353
+ ### Specification
1354
+ ${plan.specMarkdown}
1355
+
1356
+ ### File Structure
1357
+ ${plan.fileStructure.map((f) => `- \`${f.path}\` (${f.type}): ${f.purpose}`).join(`
1358
+ `)}
1359
+
1360
+ ### Implementation Steps
1361
+ ${plan.steps.map((s) => `
1362
+ #### Step ${s.order}: ${s.title}
1363
+ ${s.description}
1364
+
1365
+ **Acceptance Criteria:**
1366
+ ${s.acceptanceCriteria.map((c) => `- [ ] ${c}`).join(`
1367
+ `)}
1368
+ `).join(`
1369
+ `)}
1370
+
1371
+ ### Constraints
1372
+ ${plan.constraints.policy.length ? `**Policy:**
1373
+ ${plan.constraints.policy.map((p) => `- ${p}`).join(`
1374
+ `)}
1375
+ ` : ""}
1376
+ ${plan.constraints.security.length ? `**Security:**
1377
+ ${plan.constraints.security.map((s) => `- ${s}`).join(`
1378
+ `)}
1379
+ ` : ""}
1380
+ ${plan.constraints.pii.length ? `**PII Handling:**
1381
+ ${plan.constraints.pii.map((p) => `- ${p}`).join(`
1382
+ `)}
1383
+ ` : ""}
1384
+
1385
+ ### Verification Checklist
1386
+ ${plan.verificationChecklist.map((c) => `- [ ] ${c}`).join(`
1387
+ `)}
1388
+
1389
+ Implement this plan step by step.`;
1390
+ } else if (agent === "cursor-cli") {
1391
+ taskPrompt = `# ${plan.target.key}.v${plan.target.version}
1392
+
1393
+ ${plan.context.goal}
1394
+
1395
+ ## Spec
1396
+ ${plan.specMarkdown}
1397
+
1398
+ ## Files to create
1399
+ ${plan.fileStructure.map((f) => `${f.type}: ${f.path}`).join(`
1400
+ `)}
1401
+
1402
+ ## Steps
1403
+ ${plan.steps.map((s) => `${s.order}. ${s.title}`).join(`
1404
+ `)}`;
1405
+ } else {
1406
+ taskPrompt = `Implementation plan for ${plan.target.key}.v${plan.target.version}
1407
+
1408
+ ${plan.specMarkdown}
1409
+
1410
+ Steps:
1411
+ ${plan.steps.map((s) => `${s.order}. ${s.title}: ${s.description}`).join(`
1412
+ `)}`;
1413
+ }
1414
+ return {
1415
+ agent,
1416
+ systemPrompt: AGENT_SYSTEM_PROMPTS[agent],
1417
+ taskPrompt
1418
+ };
1419
+ }
1420
+ function generateFixViolationsPrompt(spec, implementationCode, violations) {
1421
+ const specMarkdown = operationSpecToFullMarkdown(spec);
1422
+ const violationsList = violations.map((v, i) => `${i + 1}. ${v.message}${v.suggestion ? `
1423
+ Suggestion: ${v.suggestion}` : ""}`).join(`
1424
+ `);
1425
+ const taskPrompt = `## Fix Specification Violations
1426
+
1427
+ The following implementation has violations against its specification:
1428
+
1429
+ **Specification:**
1430
+ ${specMarkdown}
1431
+
1432
+ **Current Implementation:**
1433
+ \`\`\`typescript
1434
+ ${implementationCode}
1435
+ \`\`\`
1436
+
1437
+ **Violations Found:**
1438
+ ${violationsList}
1439
+
1440
+ Fix ALL violations while maintaining existing functionality.
1441
+ Provide the corrected implementation.`;
1442
+ return {
1443
+ agent: "generic-mcp",
1444
+ taskPrompt
1445
+ };
1446
+ }
1447
+ export {
1448
+ generateVerificationPrompt,
1449
+ generateTestPrompt,
1450
+ generateReviewPrompt,
1451
+ generateImplementationPrompt,
1452
+ generateImplementationPlan,
1453
+ generateFixViolationsPrompt,
1454
+ formatPlanForAgent,
1455
+ AGENT_SYSTEM_PROMPTS
1456
+ };