@devtrack-solution/codesdd 1.2.2 → 1.2.4-rc3

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 (413) hide show
  1. package/.sdd/skills/curated/api-clean-flask-langgraph/SKILL.md +17 -17
  2. package/.sdd/skills/curated/devtrack-api/SKILL.md +170 -31
  3. package/.sdd/skills/curated/devtrack-api/agents/claude-code.yaml +8 -0
  4. package/.sdd/skills/curated/devtrack-api/agents/codex.yaml +8 -0
  5. package/.sdd/skills/curated/devtrack-api/agents/cursor.yaml +8 -0
  6. package/.sdd/skills/curated/devtrack-api/agents/gemini.yaml +8 -0
  7. package/.sdd/skills/curated/devtrack-api/agents/kimi.yaml +8 -0
  8. package/.sdd/skills/curated/devtrack-api/agents/openai.yaml +4 -2
  9. package/.sdd/skills/curated/devtrack-api/agents/opencode.yaml +10 -0
  10. package/.sdd/skills/curated/devtrack-api/references/application-presentation.md +2 -2
  11. package/.sdd/skills/curated/devtrack-api/references/architecture-governance.md +8 -7
  12. package/.sdd/skills/curated/devtrack-api/references/consumer-sync-policy.md +93 -0
  13. package/.sdd/skills/curated/devtrack-api/references/contract-pack.yaml +372 -0
  14. package/.sdd/skills/curated/devtrack-api/references/domain-modeling.md +13 -13
  15. package/.sdd/skills/curated/devtrack-api/references/field-validation-protocol.md +95 -0
  16. package/.sdd/skills/curated/devtrack-api/references/foundation-layout.md +294 -0
  17. package/.sdd/skills/curated/devtrack-api/references/implementation-checklist.md +5 -5
  18. package/.sdd/skills/curated/devtrack-api/references/imports-lint.md +4 -0
  19. package/.sdd/skills/curated/devtrack-api/references/portable-agent-contract.md +41 -0
  20. package/.sdd/skills/curated/devtrack-api/references/testing-validation.md +2 -2
  21. package/.sdd/skills/curated/devtrack-api/references/typeorm-infrastructure.md +7 -9
  22. package/LICENSE +1 -1
  23. package/README.md +399 -53
  24. package/bin/codesdd.js +3 -2
  25. package/dist/applications/sdd/index.d.ts +16 -0
  26. package/dist/applications/sdd/index.js +16 -0
  27. package/dist/cli/index.d.ts +2 -2
  28. package/dist/cli/index.js +11 -558
  29. package/dist/cli/program.d.ts +14 -0
  30. package/dist/cli/program.js +645 -0
  31. package/dist/commands/change.js +5 -5
  32. package/dist/commands/completion.d.ts +1 -1
  33. package/dist/commands/completion.js +9 -2
  34. package/dist/commands/config.js +320 -20
  35. package/dist/commands/feedback.js +1 -1
  36. package/dist/commands/schema.d.ts +63 -0
  37. package/dist/commands/schema.js +12 -12
  38. package/dist/commands/sdd/backlog.d.ts +3 -0
  39. package/dist/commands/sdd/backlog.js +54 -0
  40. package/dist/commands/sdd/execution.js +489 -28
  41. package/dist/commands/sdd/plugin.d.ts +3 -0
  42. package/dist/commands/sdd/plugin.js +158 -0
  43. package/dist/commands/sdd/shared.d.ts +1 -0
  44. package/dist/commands/sdd/shared.js +11 -22
  45. package/dist/commands/sdd/skills.js +7 -0
  46. package/dist/commands/sdd.js +107 -15
  47. package/dist/commands/spec.js +9 -9
  48. package/dist/commands/validate.js +6 -6
  49. package/dist/commands/workflow/instructions.js +6 -6
  50. package/dist/commands/workflow/new-change.js +3 -3
  51. package/dist/commands/workflow/shared.d.ts +1 -1
  52. package/dist/commands/workflow/shared.js +4 -4
  53. package/dist/core/archive.js +15 -5
  54. package/dist/core/artifact-graph/instruction-loader.d.ts +1 -1
  55. package/dist/core/artifact-graph/instruction-loader.js +3 -3
  56. package/dist/core/artifact-graph/resolver.d.ts +4 -4
  57. package/dist/core/artifact-graph/resolver.js +6 -6
  58. package/dist/core/branding.js +3 -3
  59. package/dist/core/cli/command-matrix.js +19 -1
  60. package/dist/core/cli-command-quality.d.ts +27 -0
  61. package/dist/core/cli-command-quality.js +180 -0
  62. package/dist/core/command-generation/adapters/costrict.d.ts +1 -1
  63. package/dist/core/command-generation/adapters/costrict.js +2 -2
  64. package/dist/core/command-generation/types.d.ts +1 -1
  65. package/dist/core/completions/command-registry.d.ts +1 -1
  66. package/dist/core/completions/command-registry.js +200 -12
  67. package/dist/core/completions/completion-provider.d.ts +14 -1
  68. package/dist/core/completions/completion-provider.js +29 -1
  69. package/dist/core/completions/generators/bash-generator.d.ts +1 -1
  70. package/dist/core/completions/generators/bash-generator.js +20 -12
  71. package/dist/core/completions/generators/fish-generator.d.ts +9 -1
  72. package/dist/core/completions/generators/fish-generator.js +39 -25
  73. package/dist/core/completions/generators/powershell-generator.d.ts +1 -1
  74. package/dist/core/completions/generators/powershell-generator.js +21 -11
  75. package/dist/core/completions/generators/zsh-generator.d.ts +3 -6
  76. package/dist/core/completions/generators/zsh-generator.js +21 -42
  77. package/dist/core/completions/installers/bash-installer.js +6 -6
  78. package/dist/core/completions/installers/fish-installer.js +1 -1
  79. package/dist/core/completions/installers/powershell-installer.js +14 -14
  80. package/dist/core/completions/installers/zsh-installer.d.ts +7 -1
  81. package/dist/core/completions/installers/zsh-installer.js +36 -8
  82. package/dist/core/completions/templates/bash-templates.d.ts +1 -1
  83. package/dist/core/completions/templates/bash-templates.js +12 -6
  84. package/dist/core/completions/templates/fish-templates.d.ts +2 -2
  85. package/dist/core/completions/templates/fish-templates.js +20 -9
  86. package/dist/core/completions/templates/powershell-templates.d.ts +1 -1
  87. package/dist/core/completions/templates/powershell-templates.js +13 -4
  88. package/dist/core/completions/templates/zsh-templates.d.ts +1 -1
  89. package/dist/core/completions/templates/zsh-templates.js +18 -9
  90. package/dist/core/config-schema.d.ts +20 -1
  91. package/dist/core/config-schema.js +70 -2
  92. package/dist/core/config.d.ts +3 -3
  93. package/dist/core/config.js +4 -4
  94. package/dist/core/global-config.d.ts +57 -12
  95. package/dist/core/global-config.js +344 -27
  96. package/dist/core/index.d.ts +1 -1
  97. package/dist/core/index.js +2 -2
  98. package/dist/core/init.d.ts +6 -1
  99. package/dist/core/init.js +99 -77
  100. package/dist/core/legacy-cleanup.d.ts +17 -17
  101. package/dist/core/legacy-cleanup.js +96 -79
  102. package/dist/core/list.js +18 -4
  103. package/dist/core/migration.d.ts +3 -1
  104. package/dist/core/migration.js +7 -8
  105. package/dist/core/parsers/change-parser.js +1 -1
  106. package/dist/core/parsers/markdown-parser.js +2 -2
  107. package/dist/core/profile-sync-drift.d.ts +1 -1
  108. package/dist/core/profile-sync-drift.js +13 -13
  109. package/dist/core/project-config.d.ts +4 -4
  110. package/dist/core/project-config.js +11 -11
  111. package/dist/core/schemas/change.schema.d.ts +1 -1
  112. package/dist/core/schemas/change.schema.js +1 -1
  113. package/dist/core/schemas/spec.schema.d.ts +1 -1
  114. package/dist/core/schemas/spec.schema.js +1 -1
  115. package/dist/core/sdd/adr.js +23 -1
  116. package/dist/core/sdd/agent-binding.d.ts +346 -0
  117. package/dist/core/sdd/agent-binding.js +343 -0
  118. package/dist/core/sdd/agent-runtime-contract.d.ts +204 -0
  119. package/dist/core/sdd/agent-runtime-contract.js +200 -0
  120. package/dist/core/sdd/backlog-cli.d.ts +16 -0
  121. package/dist/core/sdd/backlog-cli.js +146 -0
  122. package/dist/core/sdd/backlog-conflict-policy.d.ts +58 -0
  123. package/dist/core/sdd/backlog-conflict-policy.js +230 -0
  124. package/dist/core/sdd/backlog-projection.d.ts +8 -0
  125. package/dist/core/sdd/backlog-projection.js +89 -0
  126. package/dist/core/sdd/backlog-provider-contract.d.ts +252 -0
  127. package/dist/core/sdd/backlog-provider-contract.js +158 -0
  128. package/dist/core/sdd/bootstrap.js +2 -2
  129. package/dist/core/sdd/check.d.ts +44 -0
  130. package/dist/core/sdd/check.js +62 -24
  131. package/dist/core/sdd/contract.d.ts +13 -0
  132. package/dist/core/sdd/contract.js +36 -0
  133. package/dist/core/sdd/coordination/coordination-adapters.d.ts +53 -8
  134. package/dist/core/sdd/coordination/coordination-adapters.js +182 -16
  135. package/dist/core/sdd/coordination/index.d.ts +1 -0
  136. package/dist/core/sdd/coordination/index.js +1 -0
  137. package/dist/core/sdd/coordination/redis-runtime.d.ts +131 -0
  138. package/dist/core/sdd/coordination/redis-runtime.js +698 -0
  139. package/dist/core/sdd/deepagent-contracts.d.ts +370 -0
  140. package/dist/core/sdd/deepagent-contracts.js +235 -0
  141. package/dist/core/sdd/deepagents/adr-governor.d.ts +2 -0
  142. package/dist/core/sdd/deepagents/adr-governor.js +30 -0
  143. package/dist/core/sdd/deepagents/backend.d.ts +63 -0
  144. package/dist/core/sdd/deepagents/backend.js +174 -0
  145. package/dist/core/sdd/deepagents/codesdd-tools.d.ts +39 -0
  146. package/dist/core/sdd/deepagents/codesdd-tools.js +83 -0
  147. package/dist/core/sdd/deepagents/evidence-mapper.d.ts +86 -0
  148. package/dist/core/sdd/deepagents/evidence-mapper.js +178 -0
  149. package/dist/core/sdd/deepagents/model-provider.d.ts +53 -0
  150. package/dist/core/sdd/deepagents/model-provider.js +379 -0
  151. package/dist/core/sdd/deepagents/policy-enforcement.d.ts +30 -0
  152. package/dist/core/sdd/deepagents/policy-enforcement.js +90 -0
  153. package/dist/core/sdd/deepagents/policy.d.ts +75 -0
  154. package/dist/core/sdd/deepagents/policy.js +358 -0
  155. package/dist/core/sdd/deepagents/quality-witness.d.ts +3 -0
  156. package/dist/core/sdd/deepagents/quality-witness.js +77 -0
  157. package/dist/core/sdd/deepagents/reversa-subagents.d.ts +75 -0
  158. package/dist/core/sdd/deepagents/reversa-subagents.js +182 -0
  159. package/dist/core/sdd/deepagents/runtime-factory.d.ts +90 -0
  160. package/dist/core/sdd/deepagents/runtime-factory.js +231 -0
  161. package/dist/core/sdd/deepagents/runtime-loader.d.ts +16 -0
  162. package/dist/core/sdd/deepagents/runtime-loader.js +65 -0
  163. package/dist/core/sdd/default-bootstrap-files.d.ts +3 -3
  164. package/dist/core/sdd/default-bootstrap-files.js +50 -10
  165. package/dist/core/sdd/default-skills.d.ts +30 -0
  166. package/dist/core/sdd/default-skills.js +288 -8
  167. package/dist/core/sdd/devtrack-api-appliance.d.ts +91 -0
  168. package/dist/core/sdd/devtrack-api-appliance.js +280 -0
  169. package/dist/core/sdd/devtrack-api-architecture.d.ts +31 -0
  170. package/dist/core/sdd/devtrack-api-architecture.js +608 -0
  171. package/dist/core/sdd/devtrack-api-import-boundary.d.ts +19 -0
  172. package/dist/core/sdd/devtrack-api-import-boundary.js +32 -0
  173. package/dist/core/sdd/diagnose.d.ts +59 -0
  174. package/dist/core/sdd/diagnose.js +37 -37
  175. package/dist/core/sdd/docs-sync.js +54 -20
  176. package/dist/core/sdd/domain/capability-diff.d.ts +63 -0
  177. package/dist/core/sdd/domain/capability-diff.js +200 -0
  178. package/dist/core/sdd/domain/change-safety-guardrails.d.ts +74 -0
  179. package/dist/core/sdd/domain/change-safety-guardrails.js +333 -0
  180. package/dist/core/sdd/domain/post-active-validation.d.ts +7 -0
  181. package/dist/core/sdd/domain/post-active-validation.js +61 -0
  182. package/dist/core/sdd/domain/semantic-intent-classifier.d.ts +29 -0
  183. package/dist/core/sdd/domain/semantic-intent-classifier.js +117 -0
  184. package/dist/core/sdd/domain/transition-engine.js +1 -0
  185. package/dist/core/sdd/entity-reference.d.ts +5 -0
  186. package/dist/core/sdd/entity-reference.js +22 -0
  187. package/dist/core/sdd/foundation-artifact-map-validator.d.ts +16 -0
  188. package/dist/core/sdd/foundation-artifact-map-validator.js +71 -0
  189. package/dist/core/sdd/foundation-layer-manifest.d.ts +24 -0
  190. package/dist/core/sdd/foundation-layer-manifest.js +117 -0
  191. package/dist/core/sdd/governance-backfill.d.ts +31 -0
  192. package/dist/core/sdd/governance-backfill.js +359 -0
  193. package/dist/core/sdd/governance-parser.d.ts +21 -0
  194. package/dist/core/sdd/governance-parser.js +91 -0
  195. package/dist/core/sdd/governance-schemas.d.ts +245 -0
  196. package/dist/core/sdd/governance-schemas.js +143 -0
  197. package/dist/core/sdd/{import-openspec.d.ts → import-legacy-spec.d.ts} +7 -7
  198. package/dist/core/sdd/{import-openspec.js → import-legacy-spec.js} +21 -29
  199. package/dist/core/sdd/init.d.ts +3 -0
  200. package/dist/core/sdd/init.js +6 -3
  201. package/dist/core/sdd/intent-guard.d.ts +22 -0
  202. package/dist/core/sdd/intent-guard.js +67 -0
  203. package/dist/core/sdd/json-schema.js +108 -6
  204. package/dist/core/sdd/knowledge-graph.d.ts +45 -0
  205. package/dist/core/sdd/knowledge-graph.js +288 -0
  206. package/dist/core/sdd/legacy-operations.js +507 -44
  207. package/dist/core/sdd/lenses.d.ts +1 -0
  208. package/dist/core/sdd/lenses.js +29 -1
  209. package/dist/core/sdd/migrate-workspace.js +95 -2
  210. package/dist/core/sdd/migrate.d.ts +1 -1
  211. package/dist/core/sdd/migrate.js +36 -2
  212. package/dist/core/sdd/package-security-gates.d.ts +21 -0
  213. package/dist/core/sdd/package-security-gates.js +119 -0
  214. package/dist/core/sdd/package-structure-gate.d.ts +83 -0
  215. package/dist/core/sdd/package-structure-gate.js +357 -0
  216. package/dist/core/sdd/parallel-feat-automation.d.ts +330 -0
  217. package/dist/core/sdd/parallel-feat-automation.js +424 -0
  218. package/dist/core/sdd/plugin-broker.d.ts +777 -0
  219. package/dist/core/sdd/plugin-broker.js +492 -0
  220. package/dist/core/sdd/plugin-certification.d.ts +79 -0
  221. package/dist/core/sdd/plugin-certification.js +453 -0
  222. package/dist/core/sdd/plugin-cli.d.ts +139 -0
  223. package/dist/core/sdd/plugin-cli.js +265 -0
  224. package/dist/core/sdd/plugin-evidence.d.ts +348 -0
  225. package/dist/core/sdd/plugin-evidence.js +307 -0
  226. package/dist/core/sdd/plugin-manifest.d.ts +232 -0
  227. package/dist/core/sdd/plugin-manifest.js +225 -0
  228. package/dist/core/sdd/plugin-policy-pack.d.ts +88 -0
  229. package/dist/core/sdd/plugin-policy-pack.js +236 -0
  230. package/dist/core/sdd/plugin-policy.d.ts +68 -0
  231. package/dist/core/sdd/plugin-policy.js +212 -0
  232. package/dist/core/sdd/plugin-registry.d.ts +447 -0
  233. package/dist/core/sdd/plugin-registry.js +138 -0
  234. package/dist/core/sdd/plugin-sdk-contract.d.ts +363 -0
  235. package/dist/core/sdd/plugin-sdk-contract.js +268 -0
  236. package/dist/core/sdd/plugin-skill-binding.d.ts +151 -0
  237. package/dist/core/sdd/plugin-skill-binding.js +339 -0
  238. package/dist/core/sdd/quality-artifact-manifest-validator.d.ts +28 -0
  239. package/dist/core/sdd/quality-artifact-manifest-validator.js +167 -0
  240. package/dist/core/sdd/quality-evidence-renderer.d.ts +65 -0
  241. package/dist/core/sdd/quality-evidence-renderer.js +218 -0
  242. package/dist/core/sdd/quality-scenario-runner.d.ts +42 -0
  243. package/dist/core/sdd/quality-scenario-runner.js +613 -0
  244. package/dist/core/sdd/quality-validation.d.ts +620 -0
  245. package/dist/core/sdd/quality-validation.js +239 -0
  246. package/dist/core/sdd/release-readiness.d.ts +19 -0
  247. package/dist/core/sdd/release-readiness.js +472 -0
  248. package/dist/core/sdd/resolve-project-root.d.ts +2 -2
  249. package/dist/core/sdd/resolve-project-root.js +11 -5
  250. package/dist/core/sdd/runtime-boundary-contract.d.ts +45 -0
  251. package/dist/core/sdd/runtime-boundary-contract.js +90 -0
  252. package/dist/core/sdd/sanitize.d.ts +30 -1
  253. package/dist/core/sdd/sanitize.js +23 -23
  254. package/dist/core/sdd/sdk-agent-plugin-quality-gates.d.ts +150 -0
  255. package/dist/core/sdd/sdk-agent-plugin-quality-gates.js +258 -0
  256. package/dist/core/sdd/services/agent-run.service.d.ts +97 -0
  257. package/dist/core/sdd/services/agent-run.service.js +261 -0
  258. package/dist/core/sdd/services/breakdown.service.js +2 -1
  259. package/dist/core/sdd/services/capability-diff.service.d.ts +18 -0
  260. package/dist/core/sdd/services/capability-diff.service.js +26 -0
  261. package/dist/core/sdd/services/change-safety-preflight.service.d.ts +17 -0
  262. package/dist/core/sdd/services/change-safety-preflight.service.js +17 -0
  263. package/dist/core/sdd/services/context.service.d.ts +43 -340
  264. package/dist/core/sdd/services/context.service.js +341 -25
  265. package/dist/core/sdd/services/debate.service.js +15 -2
  266. package/dist/core/sdd/services/feature-lint.service.d.ts +22 -0
  267. package/dist/core/sdd/services/feature-lint.service.js +105 -5
  268. package/dist/core/sdd/services/finalize.service.d.ts +105 -0
  269. package/dist/core/sdd/services/finalize.service.js +499 -38
  270. package/dist/core/sdd/services/frontend-gap.service.js +22 -7
  271. package/dist/core/sdd/services/frontend-impact.service.d.ts +1 -1
  272. package/dist/core/sdd/services/governance-control-plane-runtime-adapters.d.ts +17 -0
  273. package/dist/core/sdd/services/governance-control-plane-runtime-adapters.js +38 -0
  274. package/dist/core/sdd/services/governance-control-plane.service.d.ts +66 -0
  275. package/dist/core/sdd/services/governance-control-plane.service.js +134 -0
  276. package/dist/core/sdd/services/ingest-deposito.service.js +1 -1
  277. package/dist/core/sdd/services/legacy-capability.service.d.ts +10 -7
  278. package/dist/core/sdd/services/legacy-capability.service.js +38 -21
  279. package/dist/core/sdd/services/mcp-runtime.service.d.ts +123 -8
  280. package/dist/core/sdd/services/mcp-runtime.service.js +1085 -33
  281. package/dist/core/sdd/services/onboard.service.js +2 -1
  282. package/dist/core/sdd/services/rebuild.service.js +6 -1
  283. package/dist/core/sdd/services/semantic-intent-classifier.service.d.ts +6 -0
  284. package/dist/core/sdd/services/semantic-intent-classifier.service.js +7 -0
  285. package/dist/core/sdd/services/skills-sync.service.d.ts +17 -5
  286. package/dist/core/sdd/services/skills-sync.service.js +55 -2
  287. package/dist/core/sdd/services/start.service.js +6 -4
  288. package/dist/core/sdd/skill-bundles-curation-schema.d.ts +66 -0
  289. package/dist/core/sdd/skill-bundles-curation-schema.js +52 -0
  290. package/dist/core/sdd/skill-evidence.d.ts +19 -0
  291. package/dist/core/sdd/skill-evidence.js +38 -0
  292. package/dist/core/sdd/skill-policy-pool.d.ts +46 -0
  293. package/dist/core/sdd/skill-policy-pool.js +185 -0
  294. package/dist/core/sdd/state.d.ts +23 -0
  295. package/dist/core/sdd/state.js +313 -66
  296. package/dist/core/sdd/store/sdd-stores.js +2 -2
  297. package/dist/core/sdd/structural-health.d.ts +55 -55
  298. package/dist/core/sdd/types.d.ts +60 -19
  299. package/dist/core/sdd/types.js +21 -0
  300. package/dist/core/sdd/upgrade-to-codesdd.d.ts +45 -0
  301. package/dist/core/sdd/upgrade-to-codesdd.js +179 -0
  302. package/dist/core/sdd/views.js +17 -0
  303. package/dist/core/sdd/workspace-schemas.d.ts +670 -19
  304. package/dist/core/sdd/workspace-schemas.js +285 -5
  305. package/dist/core/sdd/write-manifest.js +22 -4
  306. package/dist/core/shared/skill-generation.d.ts +1 -1
  307. package/dist/core/shared/skill-generation.js +15 -15
  308. package/dist/core/shared/tool-detection.d.ts +3 -3
  309. package/dist/core/shared/tool-detection.js +14 -14
  310. package/dist/core/specs-apply.js +6 -6
  311. package/dist/core/templates/index.d.ts +1 -1
  312. package/dist/core/templates/index.js +1 -1
  313. package/dist/core/templates/workflows/apply-change.js +14 -14
  314. package/dist/core/templates/workflows/archive-change.js +32 -32
  315. package/dist/core/templates/workflows/bulk-archive-change.js +25 -25
  316. package/dist/core/templates/workflows/continue-change.js +12 -12
  317. package/dist/core/templates/workflows/explore.js +29 -29
  318. package/dist/core/templates/workflows/feedback.js +6 -6
  319. package/dist/core/templates/workflows/ff-change.js +24 -24
  320. package/dist/core/templates/workflows/new-change.js +20 -20
  321. package/dist/core/templates/workflows/onboard.js +33 -33
  322. package/dist/core/templates/workflows/propose.js +23 -23
  323. package/dist/core/templates/workflows/sdd.js +8 -8
  324. package/dist/core/templates/workflows/sync-specs.js +19 -19
  325. package/dist/core/templates/workflows/verify-change.js +17 -17
  326. package/dist/core/update.d.ts +2 -2
  327. package/dist/core/update.js +16 -15
  328. package/dist/core/validation/constants.d.ts +1 -1
  329. package/dist/core/validation/constants.js +1 -1
  330. package/dist/core/view.js +11 -11
  331. package/dist/domains/sdd/index.d.ts +6 -0
  332. package/dist/domains/sdd/index.js +6 -0
  333. package/dist/infrastructures/sdd/index.d.ts +7 -0
  334. package/dist/infrastructures/sdd/index.js +6 -0
  335. package/dist/presentations/cli/sdd/index.d.ts +3 -0
  336. package/dist/presentations/cli/sdd/index.js +3 -0
  337. package/dist/shared/sdd/index.d.ts +3 -0
  338. package/dist/shared/sdd/index.js +2 -0
  339. package/dist/telemetry/config.d.ts +2 -1
  340. package/dist/telemetry/config.js +17 -8
  341. package/dist/telemetry/index.d.ts +10 -2
  342. package/dist/telemetry/index.js +40 -7
  343. package/dist/ui/ascii-patterns.d.ts +2 -2
  344. package/dist/ui/ascii-patterns.js +2 -2
  345. package/dist/ui/welcome-screen.js +2 -2
  346. package/dist/utils/change-metadata.d.ts +4 -4
  347. package/dist/utils/change-metadata.js +6 -6
  348. package/dist/utils/change-utils.d.ts +3 -3
  349. package/dist/utils/change-utils.js +5 -5
  350. package/dist/utils/file-system.js +1 -1
  351. package/dist/utils/interactive.js +1 -1
  352. package/dist/utils/item-discovery.js +4 -4
  353. package/dist/utils/legacy-spec-compat.d.ts +2 -0
  354. package/dist/utils/legacy-spec-compat.js +2 -0
  355. package/dist/utils/shell-detection.d.ts +1 -0
  356. package/dist/utils/shell-detection.js +16 -0
  357. package/package.json +34 -21
  358. package/schemas/sdd/1-spec.schema.json +1 -1
  359. package/schemas/sdd/2-plan.schema.json +280 -3
  360. package/schemas/sdd/3-tasks.schema.json +73 -1
  361. package/schemas/sdd/4-changelog.schema.json +1 -1
  362. package/schemas/sdd/5-quality.schema.json +701 -5
  363. package/schemas/sdd/adr.schema.json +148 -0
  364. package/schemas/sdd/agent-binding-adapter.schema.json +210 -0
  365. package/schemas/sdd/agent-binding-resolution.schema.json +338 -0
  366. package/schemas/sdd/agent-runtime-command-plan.schema.json +212 -0
  367. package/schemas/sdd/agent-runtime-opencode-run-evidence.schema.json +270 -0
  368. package/schemas/sdd/backlog-projection-plan.schema.json +180 -0
  369. package/schemas/sdd/backlog-provider-contract.schema.json +260 -0
  370. package/schemas/sdd/codesdd-plugin.schema.json +645 -0
  371. package/schemas/sdd/debate.schema.json +244 -0
  372. package/schemas/sdd/deepagent-decision-evidence.schema.json +58 -0
  373. package/schemas/sdd/deepagent-env-contract.schema.json +143 -0
  374. package/schemas/sdd/deepagent-quality-evidence.schema.json +108 -0
  375. package/schemas/sdd/deepagent-run-evidence.schema.json +192 -0
  376. package/schemas/sdd/deepagent-run-plan.schema.json +197 -0
  377. package/schemas/sdd/deepagent-run-request.schema.json +637 -0
  378. package/schemas/sdd/deepagent-subagent-evidence.schema.json +110 -0
  379. package/schemas/sdd/deepagent-tool-call-evidence.schema.json +78 -0
  380. package/schemas/sdd/discarded.schema.json +127 -0
  381. package/schemas/sdd/epic.schema.json +147 -0
  382. package/schemas/sdd/insight.schema.json +136 -0
  383. package/schemas/sdd/parallel-feat-automation-plan.schema.json +304 -0
  384. package/schemas/sdd/parallel-feat-automation-request.schema.json +109 -0
  385. package/schemas/sdd/parallel-feat-scheduler-request.schema.json +116 -0
  386. package/schemas/sdd/parallel-feat-scheduler-result.schema.json +404 -0
  387. package/schemas/sdd/plugin-artifact-manifest.schema.json +259 -0
  388. package/schemas/sdd/plugin-artifact-map.schema.json +223 -0
  389. package/schemas/sdd/plugin-compliance-index.schema.json +136 -0
  390. package/schemas/sdd/plugin-dry-run-plan.schema.json +260 -0
  391. package/schemas/sdd/plugin-evidence-manifest.schema.json +678 -0
  392. package/schemas/sdd/plugin-language-runtime.schema.json +103 -0
  393. package/schemas/sdd/plugin-package-governance.schema.json +74 -0
  394. package/schemas/sdd/plugin-policy-evaluation.schema.json +92 -0
  395. package/schemas/sdd/plugin-policy-pack-evaluation.schema.json +94 -0
  396. package/schemas/sdd/plugin-policy-pack.schema.json +196 -0
  397. package/schemas/sdd/plugin-registry.schema.json +729 -0
  398. package/schemas/sdd/plugin-rollback-manifest.schema.json +87 -0
  399. package/schemas/sdd/plugin-runtime-invocation-plan.schema.json +954 -0
  400. package/schemas/sdd/plugin-skill-binding-resolution.schema.json +305 -0
  401. package/schemas/sdd/plugin-skill-binding.schema.json +88 -0
  402. package/schemas/sdd/plugin-validation-manifest.schema.json +123 -0
  403. package/schemas/sdd/quality-architecture-schema.schema.json +216 -0
  404. package/schemas/sdd/quality-evidence-bundle.schema.json +1337 -0
  405. package/schemas/sdd/quality-run.schema.json +197 -0
  406. package/schemas/sdd/quality-scenario.schema.json +252 -0
  407. package/schemas/sdd/sdk-agent-plugin-quality-gate-input.schema.json +168 -0
  408. package/schemas/sdd/sdk-agent-plugin-quality-gate-report.schema.json +160 -0
  409. package/schemas/sdd/workspace-catalog.schema.json +13232 -35
  410. package/schemas/spec-driven/schema.yaml +4 -4
  411. package/schemas/spec-driven/templates/proposal.md +1 -1
  412. package/dist/utils/openspec-compat.d.ts +0 -2
  413. package/dist/utils/openspec-compat.js +0 -2
@@ -0,0 +1,67 @@
1
+ import { z } from 'zod';
2
+ import { CLI_NAME } from '../branding.js';
3
+ const FEATURE_REF_PATTERN = /^FEAT-\d{4}$/;
4
+ const changeIntentPattern = /\b(add|alter|apply|build|change|code|commit|create|delete|edit|execute|fix|generate|implement|install|move|refactor|remove|rename|resolve|run|scaffold|update|write|ajust|altere|aplique|corrija|crie|edite|execute|faca|faça|gere|implemente|mova|remova|renomeie|resolva|rode|atualize)\b/i;
5
+ const readOnlyPattern = /\b(read-only|readonly|no edit|no edits|sem editar|somente leitura|apenas leia|apenas leitura|explique|explique-me|analise|review|status|estado atual|listar|list|show|mostrar)\b/i;
6
+ const outsideSddPattern = /\b(skip codesdd|sem codesdd|fora do codesdd|outside codesdd|do not use codesdd|nao use codesdd|não use codesdd)\b/i;
7
+ export const sddIntentGuardInputSchema = z.object({
8
+ request: z.string().min(1),
9
+ featureRef: z.string().regex(FEATURE_REF_PATTERN).optional(),
10
+ });
11
+ export const sddIntentGuardResultSchema = z.object({
12
+ request: z.string(),
13
+ classification: z.enum(['change_request', 'read_only', 'outside_codesdd']),
14
+ requires_codesdd_planning: z.boolean(),
15
+ feature_ref: z.string().regex(FEATURE_REF_PATTERN).optional(),
16
+ reason: z.string(),
17
+ required_commands: z.array(z.string()),
18
+ warnings: z.array(z.string()),
19
+ });
20
+ export function evaluateSddIntentGuard(input) {
21
+ const parsed = sddIntentGuardInputSchema.parse(input);
22
+ const request = parsed.request.trim();
23
+ const explicitlyOutside = outsideSddPattern.test(request);
24
+ const readOnly = readOnlyPattern.test(request) && !changeIntentPattern.test(request);
25
+ const changeRequest = changeIntentPattern.test(request) && !explicitlyOutside;
26
+ if (explicitlyOutside) {
27
+ return sddIntentGuardResultSchema.parse({
28
+ request,
29
+ classification: 'outside_codesdd',
30
+ requires_codesdd_planning: false,
31
+ feature_ref: parsed.featureRef,
32
+ reason: 'The request explicitly opts out of CodeSDD handling.',
33
+ required_commands: [],
34
+ warnings: ['Only honor this opt-out when it does not conflict with repository governance policy.'],
35
+ });
36
+ }
37
+ if (!changeRequest || readOnly) {
38
+ return sddIntentGuardResultSchema.parse({
39
+ request,
40
+ classification: 'read_only',
41
+ requires_codesdd_planning: false,
42
+ feature_ref: parsed.featureRef,
43
+ reason: 'The request is read-only and does not imply implementation, edits, validation, execution, or finalize.',
44
+ required_commands: [],
45
+ warnings: [],
46
+ });
47
+ }
48
+ const featureCommand = parsed.featureRef
49
+ ? `${CLI_NAME} sdd context ${parsed.featureRef}`
50
+ : `${CLI_NAME} sdd context <FEAT-ID>`;
51
+ return sddIntentGuardResultSchema.parse({
52
+ request,
53
+ classification: 'change_request',
54
+ requires_codesdd_planning: true,
55
+ feature_ref: parsed.featureRef,
56
+ reason: 'The request implies implementation, edits, validation, execution, or finalize in an initialized CodeSDD repository.',
57
+ required_commands: [
58
+ `${CLI_NAME} sdd onboard system`,
59
+ `${CLI_NAME} sdd next`,
60
+ featureCommand,
61
+ ],
62
+ warnings: parsed.featureRef
63
+ ? []
64
+ : ['Bind this request to the active or ready FEAT returned by CodeSDD before coding.'],
65
+ });
66
+ }
67
+ //# sourceMappingURL=intent-guard.js.map
@@ -1,34 +1,50 @@
1
1
  import { toJSONSchema } from 'zod';
2
2
  import { workspaceChangelogSchema, workspacePlanSchema, workspaceQualitySchema, workspaceSpecSchema, workspaceTasksSchema, } from './workspace-schemas.js';
3
+ import { buildPluginManifestJsonSchema } from './plugin-manifest.js';
4
+ import { pluginRegistryStateSchema } from './plugin-registry.js';
5
+ import { pluginArtifactManifestSchema, pluginDryRunExecutionPlanSchema, pluginRollbackManifestSchema, pluginRuntimeInvocationPlanSchema, } from './plugin-broker.js';
6
+ import { pluginPolicyEvaluationSchema } from './plugin-policy.js';
7
+ import { pluginPolicyPackEvaluationSchema, pluginPolicyPackSchema } from './plugin-policy-pack.js';
8
+ import { pluginComplianceIndexSchema, pluginEvidenceManifestSchema, pluginValidationManifestSchema, } from './plugin-evidence.js';
9
+ import { buildPluginSdkJsonSchemas } from './plugin-sdk-contract.js';
10
+ import { pluginSkillBindingResolutionSchema, pluginSkillBindingSchema, } from './plugin-skill-binding.js';
11
+ import { agentBindingAdapterSchema, agentBindingResolutionSchema, } from './agent-binding.js';
12
+ import { buildAgentRuntimeJsonSchemas } from './agent-runtime-contract.js';
13
+ import { parallelFeatAutomationPlanSchema, parallelFeatAutomationRequestSchema, parallelFeatSchedulerRequestSchema, parallelFeatSchedulerResultSchema, } from './parallel-feat-automation.js';
14
+ import { backlogProjectionPlanSchema, backlogProviderContractSchema, } from './backlog-provider-contract.js';
15
+ import { qualityArchitectureSchema, qualityEvidenceBundleSchema, qualityRunSchema, qualityScenarioSchema, } from './quality-validation.js';
16
+ import { buildSdkAgentPluginQualityGateJsonSchemas } from './sdk-agent-plugin-quality-gates.js';
17
+ import { deepagentDecisionEvidenceSchema, deepagentEnvContractSchema, deepagentQualityEvidenceSchema, deepagentRunEvidenceSchema, deepagentRunPlanSchema, deepagentRunRequestSchema, deepagentSubagentEvidenceSchema, deepagentToolCallEvidenceSchema, } from './deepagent-contracts.js';
18
+ import { adrFrontmatterSchema, debateFrontmatterSchema, discardedFrontmatterSchema, epicFrontmatterSchema, insightFrontmatterSchema, } from './governance-schemas.js';
3
19
  const JSON_SCHEMA_DRAFT = 'https://json-schema.org/draft/2020-12/schema';
4
20
  const WORKSPACE_JSON_SCHEMA_DESCRIPTORS = [
5
21
  {
6
22
  fileName: '1-spec.yaml',
7
- title: 'OpenSDD Workspace Spec',
23
+ title: 'CodeSDD Workspace Spec',
8
24
  description: 'Machine-readable contract for the active/planned/archived FEAT spec workspace document.',
9
25
  schema: workspaceSpecSchema,
10
26
  },
11
27
  {
12
28
  fileName: '2-plan.yaml',
13
- title: 'OpenSDD Workspace Plan',
29
+ title: 'CodeSDD Workspace Plan',
14
30
  description: 'Machine-readable contract for the FEAT execution plan workspace document.',
15
31
  schema: workspacePlanSchema,
16
32
  },
17
33
  {
18
34
  fileName: '3-tasks.yaml',
19
- title: 'OpenSDD Workspace Tasks',
35
+ title: 'CodeSDD Workspace Tasks',
20
36
  description: 'Machine-readable contract for the phased FEAT task roadmap workspace document.',
21
37
  schema: workspaceTasksSchema,
22
38
  },
23
39
  {
24
40
  fileName: '4-changelog.yaml',
25
- title: 'OpenSDD Workspace Changelog',
41
+ title: 'CodeSDD Workspace Changelog',
26
42
  description: 'Machine-readable contract for the FEAT execution changelog workspace document.',
27
43
  schema: workspaceChangelogSchema,
28
44
  },
29
45
  {
30
46
  fileName: '5-quality.yaml',
31
- title: 'OpenSDD Workspace Quality',
47
+ title: 'CodeSDD Workspace Quality',
32
48
  description: 'Machine-readable contract for the FEAT quality evidence and remediation workspace document.',
33
49
  schema: workspaceQualitySchema,
34
50
  },
@@ -51,9 +67,95 @@ export function buildWorkspaceJsonSchemaCatalog() {
51
67
  return {
52
68
  $schema: JSON_SCHEMA_DRAFT,
53
69
  schema_version: 1,
54
- contract: 'opensdd-workspace-documents',
70
+ contract: 'codesdd-workspace-documents',
55
71
  generated_from: 'src/core/sdd/workspace-schemas.ts',
56
72
  documents: buildWorkspaceJsonSchemas(),
73
+ plugin_manifests: {
74
+ 'codesdd-plugin.yaml': buildPluginManifestJsonSchema(),
75
+ },
76
+ plugin_sdk_contracts: buildPluginSdkJsonSchemas(),
77
+ plugin_registries: {
78
+ 'plugin-registry.yaml': normalizeJsonSchemaDocument(toJSONSchema(pluginRegistryStateSchema), 'CodeSDD Plugin Registry State', 'Machine-readable state contract for registered CodeSDD enterprise plugins.'),
79
+ },
80
+ plugin_broker_plans: {
81
+ 'plugin-dry-run-plan.yaml': normalizeJsonSchemaDocument(toJSONSchema(pluginDryRunExecutionPlanSchema), 'CodeSDD Plugin Dry-Run Execution Plan', 'Machine-readable dry-run broker plan contract for a resolved CodeSDD enterprise plugin capability.'),
82
+ },
83
+ plugin_policy_evaluations: {
84
+ 'plugin-policy-evaluation.yaml': normalizeJsonSchemaDocument(toJSONSchema(pluginPolicyEvaluationSchema), 'CodeSDD Plugin Policy Evaluation', 'Machine-readable trust policy evaluation result for a CodeSDD enterprise plugin request.'),
85
+ },
86
+ plugin_runtime_invocations: {
87
+ 'plugin-runtime-invocation-plan.yaml': normalizeJsonSchemaDocument(toJSONSchema(pluginRuntimeInvocationPlanSchema), 'CodeSDD Plugin Runtime Invocation Plan', 'Machine-readable runtime invocation envelope and authorization plan for a CodeSDD enterprise plugin capability.'),
88
+ },
89
+ plugin_artifact_manifests: {
90
+ 'plugin-artifact-manifest.yaml': normalizeJsonSchemaDocument(toJSONSchema(pluginArtifactManifestSchema), 'CodeSDD Plugin Artifact Manifest', 'Machine-readable artifact output contract for a CodeSDD enterprise plugin invocation.'),
91
+ },
92
+ plugin_rollback_manifests: {
93
+ 'plugin-rollback-manifest.yaml': normalizeJsonSchemaDocument(toJSONSchema(pluginRollbackManifestSchema), 'CodeSDD Plugin Rollback Manifest', 'Machine-readable rollback evidence contract for a CodeSDD enterprise plugin invocation.'),
94
+ },
95
+ plugin_policy_packs: {
96
+ 'plugin-policy-pack.yaml': normalizeJsonSchemaDocument(toJSONSchema(pluginPolicyPackSchema), 'CodeSDD Plugin Policy Pack', 'Machine-readable enterprise policy pack contract for plugin supply-chain, dependency, security, and execution governance.'),
97
+ },
98
+ plugin_policy_pack_evaluations: {
99
+ 'plugin-policy-pack-evaluation.yaml': normalizeJsonSchemaDocument(toJSONSchema(pluginPolicyPackEvaluationSchema), 'CodeSDD Plugin Policy Pack Evaluation', 'Machine-readable policy pack evaluation result for a CodeSDD enterprise plugin manifest.'),
100
+ },
101
+ plugin_evidence_manifests: {
102
+ 'plugin-evidence-manifest.yaml': normalizeJsonSchemaDocument(toJSONSchema(pluginEvidenceManifestSchema), 'CodeSDD Plugin Evidence Manifest', 'Machine-readable evidence manifest contract for a CodeSDD enterprise plugin operation.'),
103
+ },
104
+ plugin_validation_manifests: {
105
+ 'plugin-validation-manifest.yaml': normalizeJsonSchemaDocument(toJSONSchema(pluginValidationManifestSchema), 'CodeSDD Plugin Validation Manifest', 'Machine-readable validation evidence contract for a CodeSDD enterprise plugin operation.'),
106
+ },
107
+ plugin_compliance_indexes: {
108
+ 'plugin-compliance-index.yaml': normalizeJsonSchemaDocument(toJSONSchema(pluginComplianceIndexSchema), 'CodeSDD Plugin Compliance Index', 'Machine-readable compliance score and criterion index for a CodeSDD enterprise plugin operation.'),
109
+ },
110
+ plugin_skill_bindings: {
111
+ 'plugin-skill-binding.yaml': normalizeJsonSchemaDocument(toJSONSchema(pluginSkillBindingSchema), 'CodeSDD Plugin Skill Binding', 'Machine-readable mapping from an SDD skill to compatible CodeSDD enterprise plugin capabilities.'),
112
+ },
113
+ plugin_skill_binding_resolutions: {
114
+ 'plugin-skill-binding-resolution.yaml': normalizeJsonSchemaDocument(toJSONSchema(pluginSkillBindingResolutionSchema), 'CodeSDD Plugin Skill Binding Resolution', 'Machine-readable resolution result for a FEAT recommended skill, plugin binding, and requested capability.'),
115
+ },
116
+ agent_binding_adapters: {
117
+ 'agent-binding-adapter.yaml': normalizeJsonSchemaDocument(toJSONSchema(agentBindingAdapterSchema), 'CodeSDD Agent Binding Adapter', 'Machine-readable provider adapter contract for Codex, OpenCode, Claude Code, CloudCode, and test agent bindings.'),
118
+ },
119
+ agent_binding_resolutions: {
120
+ 'agent-binding-resolution.yaml': normalizeJsonSchemaDocument(toJSONSchema(agentBindingResolutionSchema), 'CodeSDD Agent Binding Resolution', 'Machine-readable resolution result for selecting a compatible coding-agent adapter for a FEAT task.'),
121
+ },
122
+ agent_runtime_contracts: buildAgentRuntimeJsonSchemas(),
123
+ parallel_feat_automation: {
124
+ 'parallel-feat-automation-request.yaml': normalizeJsonSchemaDocument(toJSONSchema(parallelFeatAutomationRequestSchema), 'CodeSDD Parallel FEAT Automation Request', 'Machine-readable input contract for planning safe parallel FEAT execution waves.'),
125
+ 'parallel-feat-automation-plan.yaml': normalizeJsonSchemaDocument(toJSONSchema(parallelFeatAutomationPlanSchema), 'CodeSDD Parallel FEAT Automation Plan', 'Machine-readable execution plan for safe parallel FEAT waves, quality gates, and commit boundaries.'),
126
+ 'parallel-feat-scheduler-request.yaml': normalizeJsonSchemaDocument(toJSONSchema(parallelFeatSchedulerRequestSchema), 'CodeSDD Parallel FEAT Scheduler Request', 'Machine-readable input contract for dependency-aware chained FEAT wave scheduling.'),
127
+ 'parallel-feat-scheduler-result.yaml': normalizeJsonSchemaDocument(toJSONSchema(parallelFeatSchedulerResultSchema), 'CodeSDD Parallel FEAT Scheduler Result', 'Machine-readable scheduler result linking chained FEAT waves, blocked dependencies, and the execution plan.'),
128
+ },
129
+ backlog_integrations: {
130
+ 'backlog-provider-contract.yaml': normalizeJsonSchemaDocument(toJSONSchema(backlogProviderContractSchema), 'CodeSDD Backlog Provider Contract', 'Machine-readable provider contract for projecting canonical CodeSDD backlog state to external planning tools.'),
131
+ 'backlog-projection-plan.yaml': normalizeJsonSchemaDocument(toJSONSchema(backlogProjectionPlanSchema), 'CodeSDD Backlog Projection Plan', 'Machine-readable dry-run or apply projection plan for external backlog/task-management providers.'),
132
+ },
133
+ quality_validation: {
134
+ 'quality-scenario.yaml': normalizeJsonSchemaDocument(toJSONSchema(qualityScenarioSchema), 'CodeSDD Quality Scenario', 'Machine-readable golden scenario contract for enterprise CodeSDD quality validation runs.'),
135
+ 'quality-run.yaml': normalizeJsonSchemaDocument(toJSONSchema(qualityRunSchema), 'CodeSDD Quality Run', 'Machine-readable execution record for a CodeSDD quality validation scenario.'),
136
+ 'quality-architecture-schema.yaml': normalizeJsonSchemaDocument(toJSONSchema(qualityArchitectureSchema), 'CodeSDD Quality Architecture Schema', 'Machine-readable architecture gateway contract for generated product validation.'),
137
+ 'quality-evidence-bundle.yaml': normalizeJsonSchemaDocument(toJSONSchema(qualityEvidenceBundleSchema), 'CodeSDD Quality Evidence Bundle', 'Machine-readable evidence bundle contract tying scenario, run, artifacts, checksums, findings, and exceptions together.'),
138
+ ...buildSdkAgentPluginQualityGateJsonSchemas(),
139
+ },
140
+ deepagent_execution: {
141
+ 'deepagent-run-request.yaml': normalizeJsonSchemaDocument(toJSONSchema(deepagentRunRequestSchema), 'CodeSDD DeepAgent Run Request', 'Machine-readable request contract for governed DeepAgents execution with scoped tools, write policy, env contract, and expected evidence.'),
142
+ 'deepagent-run-plan.yaml': normalizeJsonSchemaDocument(toJSONSchema(deepagentRunPlanSchema), 'CodeSDD DeepAgent Run Plan', 'Machine-readable tactical plan contract for DeepAgents runs with subagent routing, approvals, validation matrix, and residual risks.'),
143
+ 'deepagent-run-evidence.yaml': normalizeJsonSchemaDocument(toJSONSchema(deepagentRunEvidenceSchema), 'CodeSDD DeepAgent Run Evidence', 'Machine-readable evidence contract for DeepAgents run execution status, artifacts, validations, decisions, and finalize intent.'),
144
+ 'deepagent-subagent-evidence.yaml': normalizeJsonSchemaDocument(toJSONSchema(deepagentSubagentEvidenceSchema), 'CodeSDD DeepAgent Subagent Evidence', 'Machine-readable subagent execution evidence contract with prompt purpose, tools, skills, structured output, confidence, and risks.'),
145
+ 'deepagent-tool-call-evidence.yaml': normalizeJsonSchemaDocument(toJSONSchema(deepagentToolCallEvidenceSchema), 'CodeSDD DeepAgent Tool Call Evidence', 'Machine-readable tool call evidence contract with policy gates, HITL decisions, state access class, and execution results.'),
146
+ 'deepagent-quality-evidence.yaml': normalizeJsonSchemaDocument(toJSONSchema(deepagentQualityEvidenceSchema), 'CodeSDD DeepAgent Quality Evidence', 'Machine-readable requirement-to-validation evidence matrix contract for DeepAgents runs, including residual risk traceability.'),
147
+ 'deepagent-decision-evidence.yaml': normalizeJsonSchemaDocument(toJSONSchema(deepagentDecisionEvidenceSchema), 'CodeSDD DeepAgent Decision Evidence', 'Machine-readable decision trace contract for DeepAgents runs, including alternatives, approvals, ADR requirement, and rationale.'),
148
+ 'deepagent-env-contract.yaml': normalizeJsonSchemaDocument(toJSONSchema(deepagentEnvContractSchema), 'CodeSDD DeepAgent Environment Contract', 'Machine-readable execution environment contract for DeepAgents runs, including env allowlist, secrets references, pass-through rules, and blocked paths.'),
149
+ },
150
+ governance_discovery: {
151
+ 'insight.yaml': normalizeJsonSchemaDocument(toJSONSchema(insightFrontmatterSchema), 'CodeSDD Insight Frontmatter', 'Machine-readable frontmatter contract for INS governance artifacts with Markdown body compatibility.'),
152
+ 'debate.yaml': normalizeJsonSchemaDocument(toJSONSchema(debateFrontmatterSchema), 'CodeSDD Debate Frontmatter', 'Machine-readable frontmatter contract for DEB governance artifacts with Markdown body compatibility.'),
153
+ 'epic.yaml': normalizeJsonSchemaDocument(toJSONSchema(epicFrontmatterSchema), 'CodeSDD Epic Frontmatter', 'Machine-readable frontmatter contract for EPIC governance artifacts with Markdown body compatibility.'),
154
+ 'discarded.yaml': normalizeJsonSchemaDocument(toJSONSchema(discardedFrontmatterSchema), 'CodeSDD Discarded Frontmatter', 'Machine-readable frontmatter contract for discarded governance artifacts with Markdown body compatibility.'),
155
+ },
156
+ governance_decisions: {
157
+ 'adr.yaml': normalizeJsonSchemaDocument(toJSONSchema(adrFrontmatterSchema), 'CodeSDD ADR Frontmatter', 'Machine-readable frontmatter contract for ADR governance artifacts with Markdown body compatibility.'),
158
+ },
57
159
  };
58
160
  }
59
161
  //# sourceMappingURL=json-schema.js.map
@@ -0,0 +1,45 @@
1
+ export type GraphDirection = 'outbound' | 'inbound' | 'both';
2
+ export interface DuckDbExecutor {
3
+ run(sql: string, params?: readonly unknown[]): Promise<void>;
4
+ all<T>(sql: string, params?: readonly unknown[]): Promise<T[]>;
5
+ close(): Promise<void>;
6
+ }
7
+ export interface TreeSitterSymbolIndexRecord {
8
+ id?: string;
9
+ kind: string;
10
+ name: string;
11
+ startLine: number;
12
+ endLine: number;
13
+ parentId?: string;
14
+ references?: string[];
15
+ signature?: string;
16
+ }
17
+ export interface TreeSitterFileIndexPayload {
18
+ filePath: string;
19
+ language: string;
20
+ symbols: TreeSitterSymbolIndexRecord[];
21
+ }
22
+ export interface GraphTraversalRow {
23
+ depth: number;
24
+ source_id: string;
25
+ target_id: string;
26
+ relation: string;
27
+ }
28
+ export type DuckDbDatabase = {
29
+ run(sql: string, params: unknown[], cb: (error: Error | null) => void): void;
30
+ all(sql: string, params: unknown[], cb: (error: Error | null, rows?: Array<Record<string, unknown>>) => void): void;
31
+ close?: (cb: (error: Error | null) => void) => void;
32
+ };
33
+ export declare function resolveDuckDbConstructor(mod: unknown): new (databasePath: string) => DuckDbDatabase;
34
+ export declare function createDuckDbExecutor(databasePath: string): Promise<DuckDbExecutor>;
35
+ export declare function normalizeGraphPath(value: string): string;
36
+ export declare function hashSymbolId(filePath: string, symbolKey: string): string;
37
+ export declare function traversalSql(direction: Exclude<GraphDirection, 'both'>): string;
38
+ export declare class DuckDbKnowledgeGraph {
39
+ private readonly executor;
40
+ constructor(executor: DuckDbExecutor);
41
+ initialize(): Promise<void>;
42
+ indexTreeSitterFile(payload: TreeSitterFileIndexPayload): Promise<void>;
43
+ traverse(startNodeId: string, maxDepth: number, direction?: GraphDirection): Promise<GraphTraversalRow[]>;
44
+ }
45
+ //# sourceMappingURL=knowledge-graph.d.ts.map
@@ -0,0 +1,288 @@
1
+ import { createHash } from 'node:crypto';
2
+ export function resolveDuckDbConstructor(mod) {
3
+ const candidate = mod.default ?? mod;
4
+ if (typeof candidate === 'object' && candidate && 'Database' in candidate) {
5
+ const ctor = candidate.Database;
6
+ if (typeof ctor === 'function') {
7
+ return ctor;
8
+ }
9
+ }
10
+ if (typeof candidate === 'function') {
11
+ return candidate;
12
+ }
13
+ throw new Error('Unable to resolve DuckDB Database constructor from installed module.');
14
+ }
15
+ export async function createDuckDbExecutor(databasePath) {
16
+ let mod;
17
+ try {
18
+ const duckDbModuleName = 'duckdb';
19
+ mod = await import(duckDbModuleName);
20
+ }
21
+ catch {
22
+ throw new Error('DuckDB runtime is unavailable. Install the "duckdb" package to enable embedded knowledge graph queries.');
23
+ }
24
+ const DatabaseCtor = resolveDuckDbConstructor(mod);
25
+ const db = new DatabaseCtor(databasePath);
26
+ return {
27
+ run(sql, params = []) {
28
+ return new Promise((resolve, reject) => {
29
+ db.run(sql, [...params], (error) => {
30
+ if (error) {
31
+ reject(error);
32
+ return;
33
+ }
34
+ resolve();
35
+ });
36
+ });
37
+ },
38
+ all(sql, params = []) {
39
+ return new Promise((resolve, reject) => {
40
+ db.all(sql, [...params], (error, rows) => {
41
+ if (error) {
42
+ reject(error);
43
+ return;
44
+ }
45
+ resolve((rows ?? []));
46
+ });
47
+ });
48
+ },
49
+ close() {
50
+ if (!db.close) {
51
+ return Promise.resolve();
52
+ }
53
+ return new Promise((resolve, reject) => {
54
+ db.close((error) => {
55
+ if (error) {
56
+ reject(error);
57
+ return;
58
+ }
59
+ resolve();
60
+ });
61
+ });
62
+ },
63
+ };
64
+ }
65
+ export function normalizeGraphPath(value) {
66
+ return value.replace(/\\/g, '/');
67
+ }
68
+ export function hashSymbolId(filePath, symbolKey) {
69
+ return createHash('sha1').update(`${normalizeGraphPath(filePath)}::${symbolKey}`).digest('hex');
70
+ }
71
+ export function traversalSql(direction) {
72
+ if (direction === 'outbound') {
73
+ return `
74
+ WITH RECURSIVE walk(depth, source_id, target_id, relation, visited) AS (
75
+ SELECT 1, source_id, target_id, relation, '|' || source_id || '|' || target_id || '|'
76
+ FROM adjacency_outbound
77
+ WHERE source_id = ?
78
+ UNION ALL
79
+ SELECT
80
+ walk.depth + 1,
81
+ next.source_id,
82
+ next.target_id,
83
+ next.relation,
84
+ walk.visited || next.target_id || '|'
85
+ FROM walk
86
+ JOIN adjacency_outbound AS next
87
+ ON next.source_id = walk.target_id
88
+ WHERE walk.depth < ?
89
+ AND instr(walk.visited, '|' || next.target_id || '|') = 0
90
+ )
91
+ SELECT depth, source_id, target_id, relation
92
+ FROM walk
93
+ ORDER BY depth, source_id, target_id, relation;
94
+ `.trim();
95
+ }
96
+ return `
97
+ WITH RECURSIVE walk(depth, source_id, target_id, relation, visited) AS (
98
+ SELECT 1, source_id, target_id, relation, '|' || target_id || '|' || source_id || '|'
99
+ FROM adjacency_inbound
100
+ WHERE target_id = ?
101
+ UNION ALL
102
+ SELECT
103
+ walk.depth + 1,
104
+ next.source_id,
105
+ next.target_id,
106
+ next.relation,
107
+ walk.visited || next.source_id || '|'
108
+ FROM walk
109
+ JOIN adjacency_inbound AS next
110
+ ON next.target_id = walk.source_id
111
+ WHERE walk.depth < ?
112
+ AND instr(walk.visited, '|' || next.source_id || '|') = 0
113
+ )
114
+ SELECT depth, source_id, target_id, relation
115
+ FROM walk
116
+ ORDER BY depth, source_id, target_id, relation;
117
+ `.trim();
118
+ }
119
+ export class DuckDbKnowledgeGraph {
120
+ executor;
121
+ constructor(executor) {
122
+ this.executor = executor;
123
+ }
124
+ async initialize() {
125
+ await this.executor.run(`
126
+ CREATE TABLE IF NOT EXISTS nodes (
127
+ id VARCHAR PRIMARY KEY,
128
+ kind VARCHAR NOT NULL,
129
+ name VARCHAR NOT NULL,
130
+ file_path VARCHAR NOT NULL,
131
+ language VARCHAR NOT NULL,
132
+ signature VARCHAR,
133
+ start_line INTEGER,
134
+ end_line INTEGER,
135
+ updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
136
+ );
137
+ `.trim());
138
+ await this.executor.run(`
139
+ CREATE TABLE IF NOT EXISTS edges (
140
+ source_id VARCHAR NOT NULL,
141
+ target_id VARCHAR NOT NULL,
142
+ relation VARCHAR NOT NULL,
143
+ file_path VARCHAR NOT NULL,
144
+ weight INTEGER DEFAULT 1,
145
+ PRIMARY KEY (source_id, target_id, relation)
146
+ );
147
+ `.trim());
148
+ await this.executor.run(`
149
+ CREATE TABLE IF NOT EXISTS adjacency_outbound (
150
+ source_id VARCHAR NOT NULL,
151
+ target_id VARCHAR NOT NULL,
152
+ relation VARCHAR NOT NULL,
153
+ file_path VARCHAR NOT NULL,
154
+ PRIMARY KEY (source_id, target_id, relation)
155
+ );
156
+ `.trim());
157
+ await this.executor.run(`
158
+ CREATE TABLE IF NOT EXISTS adjacency_inbound (
159
+ target_id VARCHAR NOT NULL,
160
+ source_id VARCHAR NOT NULL,
161
+ relation VARCHAR NOT NULL,
162
+ file_path VARCHAR NOT NULL,
163
+ PRIMARY KEY (target_id, source_id, relation)
164
+ );
165
+ `.trim());
166
+ }
167
+ async indexTreeSitterFile(payload) {
168
+ const normalizedPath = normalizeGraphPath(payload.filePath);
169
+ const fileNodeId = `file:${normalizedPath}`;
170
+ const symbolNodeIds = new Map();
171
+ const edges = new Map();
172
+ for (const symbol of payload.symbols) {
173
+ const symbolKey = symbol.id ?? `${symbol.kind}:${symbol.name}:${symbol.startLine}:${symbol.endLine}`;
174
+ const nodeId = `symbol:${hashSymbolId(normalizedPath, symbolKey)}`;
175
+ symbolNodeIds.set(symbolKey, nodeId);
176
+ if (symbol.id) {
177
+ symbolNodeIds.set(symbol.id, nodeId);
178
+ }
179
+ edges.set(`${fileNodeId}|${nodeId}|contains`, {
180
+ sourceId: fileNodeId,
181
+ targetId: nodeId,
182
+ relation: 'contains',
183
+ });
184
+ }
185
+ for (const symbol of payload.symbols) {
186
+ const symbolKey = symbol.id ?? `${symbol.kind}:${symbol.name}:${symbol.startLine}:${symbol.endLine}`;
187
+ const nodeId = symbolNodeIds.get(symbolKey);
188
+ if (!nodeId) {
189
+ continue;
190
+ }
191
+ if (symbol.parentId) {
192
+ const parentNodeId = symbolNodeIds.get(symbol.parentId);
193
+ if (parentNodeId) {
194
+ edges.set(`${parentNodeId}|${nodeId}|contains`, {
195
+ sourceId: parentNodeId,
196
+ targetId: nodeId,
197
+ relation: 'contains',
198
+ });
199
+ }
200
+ }
201
+ for (const referenceId of symbol.references ?? []) {
202
+ const targetNodeId = symbolNodeIds.get(referenceId);
203
+ if (!targetNodeId) {
204
+ continue;
205
+ }
206
+ edges.set(`${nodeId}|${targetNodeId}|references`, {
207
+ sourceId: nodeId,
208
+ targetId: targetNodeId,
209
+ relation: 'references',
210
+ });
211
+ }
212
+ }
213
+ await this.executor.run('BEGIN TRANSACTION');
214
+ try {
215
+ await this.executor.run('DELETE FROM adjacency_outbound WHERE file_path = ?', [normalizedPath]);
216
+ await this.executor.run('DELETE FROM adjacency_inbound WHERE file_path = ?', [normalizedPath]);
217
+ await this.executor.run('DELETE FROM edges WHERE file_path = ?', [normalizedPath]);
218
+ await this.executor.run('DELETE FROM nodes WHERE file_path = ?', [normalizedPath]);
219
+ await this.executor.run(`
220
+ INSERT INTO nodes (id, kind, name, file_path, language, signature, start_line, end_line)
221
+ VALUES (?, 'file', ?, ?, ?, NULL, NULL, NULL)
222
+ `.trim(), [fileNodeId, normalizedPath, normalizedPath, payload.language]);
223
+ for (const symbol of payload.symbols) {
224
+ const symbolKey = symbol.id ?? `${symbol.kind}:${symbol.name}:${symbol.startLine}:${symbol.endLine}`;
225
+ const nodeId = symbolNodeIds.get(symbolKey);
226
+ if (!nodeId) {
227
+ continue;
228
+ }
229
+ await this.executor.run(`
230
+ INSERT INTO nodes (id, kind, name, file_path, language, signature, start_line, end_line)
231
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
232
+ `.trim(), [
233
+ nodeId,
234
+ symbol.kind,
235
+ symbol.name,
236
+ normalizedPath,
237
+ payload.language,
238
+ symbol.signature ?? null,
239
+ symbol.startLine,
240
+ symbol.endLine,
241
+ ]);
242
+ }
243
+ for (const edge of edges.values()) {
244
+ await this.executor.run(`
245
+ INSERT INTO edges (source_id, target_id, relation, file_path)
246
+ VALUES (?, ?, ?, ?)
247
+ `.trim(), [edge.sourceId, edge.targetId, edge.relation, normalizedPath]);
248
+ await this.executor.run(`
249
+ INSERT INTO adjacency_outbound (source_id, target_id, relation, file_path)
250
+ VALUES (?, ?, ?, ?)
251
+ `.trim(), [edge.sourceId, edge.targetId, edge.relation, normalizedPath]);
252
+ await this.executor.run(`
253
+ INSERT INTO adjacency_inbound (target_id, source_id, relation, file_path)
254
+ VALUES (?, ?, ?, ?)
255
+ `.trim(), [edge.targetId, edge.sourceId, edge.relation, normalizedPath]);
256
+ }
257
+ await this.executor.run('COMMIT');
258
+ }
259
+ catch (error) {
260
+ await this.executor.run('ROLLBACK');
261
+ throw error;
262
+ }
263
+ }
264
+ async traverse(startNodeId, maxDepth, direction = 'outbound') {
265
+ if (!Number.isInteger(maxDepth) || maxDepth < 1) {
266
+ throw new Error('maxDepth must be an integer greater than or equal to 1.');
267
+ }
268
+ if (direction === 'both') {
269
+ const outbound = await this.executor.all(traversalSql('outbound'), [startNodeId, maxDepth]);
270
+ const inbound = await this.executor.all(traversalSql('inbound'), [startNodeId, maxDepth]);
271
+ const merged = new Map();
272
+ for (const row of [...outbound, ...inbound]) {
273
+ merged.set(`${row.depth}|${row.source_id}|${row.target_id}|${row.relation}`, row);
274
+ }
275
+ return [...merged.values()].sort((left, right) => {
276
+ if (left.depth !== right.depth)
277
+ return left.depth - right.depth;
278
+ if (left.source_id !== right.source_id)
279
+ return left.source_id.localeCompare(right.source_id);
280
+ if (left.target_id !== right.target_id)
281
+ return left.target_id.localeCompare(right.target_id);
282
+ return left.relation.localeCompare(right.relation);
283
+ });
284
+ }
285
+ return this.executor.all(traversalSql(direction), [startNodeId, maxDepth]);
286
+ }
287
+ }
288
+ //# sourceMappingURL=knowledge-graph.js.map