@devtrack-solution/codesdd 1.2.2 → 1.2.3

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 (345) hide show
  1. package/.sdd/skills/curated/api-clean-flask-langgraph/SKILL.md +17 -17
  2. package/.sdd/skills/curated/devtrack-api/SKILL.md +160 -28
  3. package/.sdd/skills/curated/devtrack-api/agents/openai.yaml +1 -1
  4. package/.sdd/skills/curated/devtrack-api/references/architecture-governance.md +8 -7
  5. package/.sdd/skills/curated/devtrack-api/references/consumer-sync-policy.md +93 -0
  6. package/.sdd/skills/curated/devtrack-api/references/contract-pack.yaml +317 -0
  7. package/.sdd/skills/curated/devtrack-api/references/field-validation-protocol.md +95 -0
  8. package/.sdd/skills/curated/devtrack-api/references/foundation-layout.md +295 -0
  9. package/.sdd/skills/curated/devtrack-api/references/implementation-checklist.md +4 -4
  10. package/.sdd/skills/curated/devtrack-api/references/imports-lint.md +4 -0
  11. package/.sdd/skills/curated/devtrack-api/references/testing-validation.md +2 -2
  12. package/LICENSE +1 -1
  13. package/README.md +243 -51
  14. package/bin/codesdd.js +3 -2
  15. package/dist/cli/index.d.ts +2 -2
  16. package/dist/cli/index.js +11 -558
  17. package/dist/cli/program.d.ts +14 -0
  18. package/dist/cli/program.js +645 -0
  19. package/dist/commands/change.js +5 -5
  20. package/dist/commands/completion.d.ts +1 -1
  21. package/dist/commands/completion.js +9 -2
  22. package/dist/commands/config.js +159 -20
  23. package/dist/commands/feedback.js +1 -1
  24. package/dist/commands/schema.d.ts +63 -0
  25. package/dist/commands/schema.js +12 -12
  26. package/dist/commands/sdd/backlog.d.ts +3 -0
  27. package/dist/commands/sdd/backlog.js +54 -0
  28. package/dist/commands/sdd/execution.js +147 -16
  29. package/dist/commands/sdd/plugin.d.ts +3 -0
  30. package/dist/commands/sdd/plugin.js +153 -0
  31. package/dist/commands/sdd/shared.js +2 -23
  32. package/dist/commands/sdd/skills.js +7 -0
  33. package/dist/commands/sdd.js +69 -12
  34. package/dist/commands/spec.js +9 -9
  35. package/dist/commands/validate.js +6 -6
  36. package/dist/commands/workflow/instructions.js +6 -6
  37. package/dist/commands/workflow/new-change.js +3 -3
  38. package/dist/commands/workflow/shared.d.ts +1 -1
  39. package/dist/commands/workflow/shared.js +4 -4
  40. package/dist/core/archive.js +15 -5
  41. package/dist/core/artifact-graph/instruction-loader.d.ts +1 -1
  42. package/dist/core/artifact-graph/instruction-loader.js +3 -3
  43. package/dist/core/artifact-graph/resolver.d.ts +4 -4
  44. package/dist/core/artifact-graph/resolver.js +6 -6
  45. package/dist/core/branding.js +3 -3
  46. package/dist/core/cli/command-matrix.js +10 -1
  47. package/dist/core/cli-command-quality.d.ts +27 -0
  48. package/dist/core/cli-command-quality.js +171 -0
  49. package/dist/core/command-generation/adapters/costrict.d.ts +1 -1
  50. package/dist/core/command-generation/adapters/costrict.js +2 -2
  51. package/dist/core/command-generation/types.d.ts +1 -1
  52. package/dist/core/completions/command-registry.d.ts +1 -1
  53. package/dist/core/completions/command-registry.js +155 -12
  54. package/dist/core/completions/completion-provider.d.ts +14 -1
  55. package/dist/core/completions/completion-provider.js +29 -1
  56. package/dist/core/completions/generators/bash-generator.d.ts +1 -1
  57. package/dist/core/completions/generators/bash-generator.js +20 -12
  58. package/dist/core/completions/generators/fish-generator.d.ts +9 -1
  59. package/dist/core/completions/generators/fish-generator.js +39 -25
  60. package/dist/core/completions/generators/powershell-generator.d.ts +1 -1
  61. package/dist/core/completions/generators/powershell-generator.js +21 -11
  62. package/dist/core/completions/generators/zsh-generator.d.ts +3 -6
  63. package/dist/core/completions/generators/zsh-generator.js +21 -42
  64. package/dist/core/completions/installers/bash-installer.js +6 -6
  65. package/dist/core/completions/installers/fish-installer.js +1 -1
  66. package/dist/core/completions/installers/powershell-installer.js +14 -14
  67. package/dist/core/completions/installers/zsh-installer.d.ts +7 -1
  68. package/dist/core/completions/installers/zsh-installer.js +36 -8
  69. package/dist/core/completions/templates/bash-templates.d.ts +1 -1
  70. package/dist/core/completions/templates/bash-templates.js +12 -6
  71. package/dist/core/completions/templates/fish-templates.d.ts +2 -2
  72. package/dist/core/completions/templates/fish-templates.js +20 -9
  73. package/dist/core/completions/templates/powershell-templates.d.ts +1 -1
  74. package/dist/core/completions/templates/powershell-templates.js +13 -4
  75. package/dist/core/completions/templates/zsh-templates.d.ts +1 -1
  76. package/dist/core/completions/templates/zsh-templates.js +18 -9
  77. package/dist/core/config-schema.d.ts +3 -1
  78. package/dist/core/config-schema.js +26 -1
  79. package/dist/core/config.d.ts +3 -3
  80. package/dist/core/config.js +4 -4
  81. package/dist/core/global-config.d.ts +41 -12
  82. package/dist/core/global-config.js +344 -27
  83. package/dist/core/index.d.ts +1 -1
  84. package/dist/core/index.js +2 -2
  85. package/dist/core/init.d.ts +6 -1
  86. package/dist/core/init.js +99 -77
  87. package/dist/core/legacy-cleanup.d.ts +17 -17
  88. package/dist/core/legacy-cleanup.js +96 -79
  89. package/dist/core/list.js +18 -4
  90. package/dist/core/migration.d.ts +3 -1
  91. package/dist/core/migration.js +7 -8
  92. package/dist/core/parsers/change-parser.js +1 -1
  93. package/dist/core/parsers/markdown-parser.js +2 -2
  94. package/dist/core/profile-sync-drift.d.ts +1 -1
  95. package/dist/core/profile-sync-drift.js +13 -13
  96. package/dist/core/project-config.d.ts +4 -4
  97. package/dist/core/project-config.js +11 -11
  98. package/dist/core/schemas/change.schema.d.ts +1 -1
  99. package/dist/core/schemas/change.schema.js +1 -1
  100. package/dist/core/schemas/spec.schema.d.ts +1 -1
  101. package/dist/core/schemas/spec.schema.js +1 -1
  102. package/dist/core/sdd/adr.js +23 -1
  103. package/dist/core/sdd/agent-binding.d.ts +346 -0
  104. package/dist/core/sdd/agent-binding.js +343 -0
  105. package/dist/core/sdd/backlog-cli.d.ts +16 -0
  106. package/dist/core/sdd/backlog-cli.js +146 -0
  107. package/dist/core/sdd/backlog-conflict-policy.d.ts +58 -0
  108. package/dist/core/sdd/backlog-conflict-policy.js +230 -0
  109. package/dist/core/sdd/backlog-projection.d.ts +8 -0
  110. package/dist/core/sdd/backlog-projection.js +89 -0
  111. package/dist/core/sdd/backlog-provider-contract.d.ts +252 -0
  112. package/dist/core/sdd/backlog-provider-contract.js +158 -0
  113. package/dist/core/sdd/bootstrap.js +2 -2
  114. package/dist/core/sdd/check.d.ts +42 -0
  115. package/dist/core/sdd/check.js +22 -22
  116. package/dist/core/sdd/contract.d.ts +13 -0
  117. package/dist/core/sdd/contract.js +36 -0
  118. package/dist/core/sdd/coordination/coordination-adapters.d.ts +38 -0
  119. package/dist/core/sdd/coordination/coordination-adapters.js +139 -1
  120. package/dist/core/sdd/deepagent-contracts.d.ts +276 -0
  121. package/dist/core/sdd/deepagent-contracts.js +173 -0
  122. package/dist/core/sdd/deepagents/adr-governor.d.ts +2 -0
  123. package/dist/core/sdd/deepagents/adr-governor.js +30 -0
  124. package/dist/core/sdd/deepagents/backend.d.ts +63 -0
  125. package/dist/core/sdd/deepagents/backend.js +174 -0
  126. package/dist/core/sdd/deepagents/codesdd-tools.d.ts +39 -0
  127. package/dist/core/sdd/deepagents/codesdd-tools.js +83 -0
  128. package/dist/core/sdd/deepagents/evidence-mapper.d.ts +86 -0
  129. package/dist/core/sdd/deepagents/evidence-mapper.js +178 -0
  130. package/dist/core/sdd/deepagents/model-provider.d.ts +53 -0
  131. package/dist/core/sdd/deepagents/model-provider.js +379 -0
  132. package/dist/core/sdd/deepagents/policy-enforcement.d.ts +30 -0
  133. package/dist/core/sdd/deepagents/policy-enforcement.js +90 -0
  134. package/dist/core/sdd/deepagents/policy.d.ts +75 -0
  135. package/dist/core/sdd/deepagents/policy.js +358 -0
  136. package/dist/core/sdd/deepagents/quality-witness.d.ts +3 -0
  137. package/dist/core/sdd/deepagents/quality-witness.js +77 -0
  138. package/dist/core/sdd/deepagents/reversa-subagents.d.ts +75 -0
  139. package/dist/core/sdd/deepagents/reversa-subagents.js +182 -0
  140. package/dist/core/sdd/deepagents/runtime-factory.d.ts +90 -0
  141. package/dist/core/sdd/deepagents/runtime-factory.js +231 -0
  142. package/dist/core/sdd/deepagents/runtime-loader.d.ts +16 -0
  143. package/dist/core/sdd/deepagents/runtime-loader.js +65 -0
  144. package/dist/core/sdd/default-bootstrap-files.d.ts +2 -2
  145. package/dist/core/sdd/default-bootstrap-files.js +36 -2
  146. package/dist/core/sdd/default-skills.d.ts +30 -0
  147. package/dist/core/sdd/default-skills.js +181 -5
  148. package/dist/core/sdd/devtrack-api-appliance.d.ts +84 -0
  149. package/dist/core/sdd/devtrack-api-appliance.js +257 -0
  150. package/dist/core/sdd/devtrack-api-architecture.d.ts +31 -0
  151. package/dist/core/sdd/devtrack-api-architecture.js +608 -0
  152. package/dist/core/sdd/devtrack-api-import-boundary.d.ts +19 -0
  153. package/dist/core/sdd/devtrack-api-import-boundary.js +32 -0
  154. package/dist/core/sdd/diagnose.d.ts +59 -0
  155. package/dist/core/sdd/diagnose.js +37 -37
  156. package/dist/core/sdd/docs-sync.js +33 -5
  157. package/dist/core/sdd/domain/post-active-validation.d.ts +7 -0
  158. package/dist/core/sdd/domain/post-active-validation.js +61 -0
  159. package/dist/core/sdd/domain/transition-engine.js +1 -0
  160. package/dist/core/sdd/entity-reference.d.ts +5 -0
  161. package/dist/core/sdd/entity-reference.js +22 -0
  162. package/dist/core/sdd/governance-backfill.d.ts +31 -0
  163. package/dist/core/sdd/governance-backfill.js +359 -0
  164. package/dist/core/sdd/governance-parser.d.ts +21 -0
  165. package/dist/core/sdd/governance-parser.js +91 -0
  166. package/dist/core/sdd/governance-schemas.d.ts +245 -0
  167. package/dist/core/sdd/governance-schemas.js +143 -0
  168. package/dist/core/sdd/{import-openspec.d.ts → import-legacy-spec.d.ts} +7 -7
  169. package/dist/core/sdd/{import-openspec.js → import-legacy-spec.js} +21 -29
  170. package/dist/core/sdd/init.d.ts +3 -0
  171. package/dist/core/sdd/init.js +6 -3
  172. package/dist/core/sdd/json-schema.js +100 -6
  173. package/dist/core/sdd/knowledge-graph.d.ts +45 -0
  174. package/dist/core/sdd/knowledge-graph.js +288 -0
  175. package/dist/core/sdd/legacy-operations.js +431 -43
  176. package/dist/core/sdd/lenses.d.ts +1 -0
  177. package/dist/core/sdd/lenses.js +29 -1
  178. package/dist/core/sdd/migrate-workspace.js +56 -2
  179. package/dist/core/sdd/migrate.d.ts +1 -1
  180. package/dist/core/sdd/migrate.js +36 -2
  181. package/dist/core/sdd/package-structure-gate.d.ts +83 -0
  182. package/dist/core/sdd/package-structure-gate.js +362 -0
  183. package/dist/core/sdd/parallel-feat-automation.d.ts +152 -0
  184. package/dist/core/sdd/parallel-feat-automation.js +212 -0
  185. package/dist/core/sdd/plugin-broker.d.ts +558 -0
  186. package/dist/core/sdd/plugin-broker.js +482 -0
  187. package/dist/core/sdd/plugin-certification.d.ts +79 -0
  188. package/dist/core/sdd/plugin-certification.js +453 -0
  189. package/dist/core/sdd/plugin-cli.d.ts +109 -0
  190. package/dist/core/sdd/plugin-cli.js +198 -0
  191. package/dist/core/sdd/plugin-evidence.d.ts +275 -0
  192. package/dist/core/sdd/plugin-evidence.js +307 -0
  193. package/dist/core/sdd/plugin-manifest.d.ts +164 -0
  194. package/dist/core/sdd/plugin-manifest.js +215 -0
  195. package/dist/core/sdd/plugin-policy-pack.d.ts +88 -0
  196. package/dist/core/sdd/plugin-policy-pack.js +236 -0
  197. package/dist/core/sdd/plugin-policy.d.ts +68 -0
  198. package/dist/core/sdd/plugin-policy.js +212 -0
  199. package/dist/core/sdd/plugin-registry.d.ts +311 -0
  200. package/dist/core/sdd/plugin-registry.js +138 -0
  201. package/dist/core/sdd/plugin-skill-binding.d.ts +151 -0
  202. package/dist/core/sdd/plugin-skill-binding.js +339 -0
  203. package/dist/core/sdd/quality-artifact-manifest-validator.d.ts +28 -0
  204. package/dist/core/sdd/quality-artifact-manifest-validator.js +167 -0
  205. package/dist/core/sdd/quality-evidence-renderer.d.ts +65 -0
  206. package/dist/core/sdd/quality-evidence-renderer.js +218 -0
  207. package/dist/core/sdd/quality-scenario-runner.d.ts +42 -0
  208. package/dist/core/sdd/quality-scenario-runner.js +613 -0
  209. package/dist/core/sdd/quality-validation.d.ts +547 -0
  210. package/dist/core/sdd/quality-validation.js +239 -0
  211. package/dist/core/sdd/resolve-project-root.d.ts +2 -2
  212. package/dist/core/sdd/resolve-project-root.js +11 -5
  213. package/dist/core/sdd/sanitize.d.ts +30 -1
  214. package/dist/core/sdd/sanitize.js +23 -23
  215. package/dist/core/sdd/services/agent-run.service.d.ts +65 -0
  216. package/dist/core/sdd/services/agent-run.service.js +189 -0
  217. package/dist/core/sdd/services/breakdown.service.js +2 -1
  218. package/dist/core/sdd/services/context.service.js +18 -16
  219. package/dist/core/sdd/services/debate.service.js +15 -2
  220. package/dist/core/sdd/services/feature-lint.service.d.ts +22 -0
  221. package/dist/core/sdd/services/feature-lint.service.js +105 -5
  222. package/dist/core/sdd/services/finalize.service.d.ts +80 -0
  223. package/dist/core/sdd/services/finalize.service.js +323 -24
  224. package/dist/core/sdd/services/frontend-gap.service.js +22 -7
  225. package/dist/core/sdd/services/governance-control-plane-runtime-adapters.d.ts +17 -0
  226. package/dist/core/sdd/services/governance-control-plane-runtime-adapters.js +38 -0
  227. package/dist/core/sdd/services/governance-control-plane.service.d.ts +66 -0
  228. package/dist/core/sdd/services/governance-control-plane.service.js +134 -0
  229. package/dist/core/sdd/services/ingest-deposito.service.js +1 -1
  230. package/dist/core/sdd/services/legacy-capability.service.d.ts +10 -7
  231. package/dist/core/sdd/services/legacy-capability.service.js +38 -21
  232. package/dist/core/sdd/services/mcp-runtime.service.d.ts +123 -8
  233. package/dist/core/sdd/services/mcp-runtime.service.js +1085 -33
  234. package/dist/core/sdd/services/onboard.service.js +2 -1
  235. package/dist/core/sdd/services/rebuild.service.js +6 -1
  236. package/dist/core/sdd/services/skills-sync.service.d.ts +17 -5
  237. package/dist/core/sdd/services/skills-sync.service.js +55 -2
  238. package/dist/core/sdd/services/start.service.js +6 -4
  239. package/dist/core/sdd/skill-bundles-curation-schema.d.ts +66 -0
  240. package/dist/core/sdd/skill-bundles-curation-schema.js +52 -0
  241. package/dist/core/sdd/skill-evidence.d.ts +19 -0
  242. package/dist/core/sdd/skill-evidence.js +38 -0
  243. package/dist/core/sdd/skill-policy-pool.d.ts +46 -0
  244. package/dist/core/sdd/skill-policy-pool.js +185 -0
  245. package/dist/core/sdd/state.d.ts +22 -0
  246. package/dist/core/sdd/state.js +66 -41
  247. package/dist/core/sdd/structural-health.d.ts +42 -42
  248. package/dist/core/sdd/types.d.ts +33 -7
  249. package/dist/core/sdd/types.js +17 -0
  250. package/dist/core/sdd/upgrade-to-codesdd.d.ts +45 -0
  251. package/dist/core/sdd/upgrade-to-codesdd.js +179 -0
  252. package/dist/core/sdd/workspace-schemas.d.ts +285 -14
  253. package/dist/core/sdd/workspace-schemas.js +148 -0
  254. package/dist/core/sdd/write-manifest.js +22 -4
  255. package/dist/core/shared/skill-generation.d.ts +1 -1
  256. package/dist/core/shared/skill-generation.js +15 -15
  257. package/dist/core/shared/tool-detection.d.ts +3 -3
  258. package/dist/core/shared/tool-detection.js +14 -14
  259. package/dist/core/specs-apply.js +6 -6
  260. package/dist/core/templates/index.d.ts +1 -1
  261. package/dist/core/templates/index.js +1 -1
  262. package/dist/core/templates/workflows/apply-change.js +14 -14
  263. package/dist/core/templates/workflows/archive-change.js +32 -32
  264. package/dist/core/templates/workflows/bulk-archive-change.js +25 -25
  265. package/dist/core/templates/workflows/continue-change.js +12 -12
  266. package/dist/core/templates/workflows/explore.js +29 -29
  267. package/dist/core/templates/workflows/feedback.js +6 -6
  268. package/dist/core/templates/workflows/ff-change.js +24 -24
  269. package/dist/core/templates/workflows/new-change.js +20 -20
  270. package/dist/core/templates/workflows/onboard.js +33 -33
  271. package/dist/core/templates/workflows/propose.js +23 -23
  272. package/dist/core/templates/workflows/sdd.js +8 -8
  273. package/dist/core/templates/workflows/sync-specs.js +19 -19
  274. package/dist/core/templates/workflows/verify-change.js +17 -17
  275. package/dist/core/update.d.ts +2 -2
  276. package/dist/core/update.js +16 -15
  277. package/dist/core/validation/constants.d.ts +1 -1
  278. package/dist/core/validation/constants.js +1 -1
  279. package/dist/core/view.js +11 -11
  280. package/dist/telemetry/config.d.ts +2 -1
  281. package/dist/telemetry/config.js +17 -8
  282. package/dist/telemetry/index.d.ts +10 -2
  283. package/dist/telemetry/index.js +40 -7
  284. package/dist/ui/ascii-patterns.d.ts +2 -2
  285. package/dist/ui/ascii-patterns.js +2 -2
  286. package/dist/ui/welcome-screen.js +2 -2
  287. package/dist/utils/change-metadata.d.ts +4 -4
  288. package/dist/utils/change-metadata.js +6 -6
  289. package/dist/utils/change-utils.d.ts +3 -3
  290. package/dist/utils/change-utils.js +5 -5
  291. package/dist/utils/file-system.js +1 -1
  292. package/dist/utils/interactive.js +1 -1
  293. package/dist/utils/item-discovery.js +4 -4
  294. package/dist/utils/legacy-spec-compat.d.ts +2 -0
  295. package/dist/utils/legacy-spec-compat.js +2 -0
  296. package/dist/utils/shell-detection.d.ts +1 -0
  297. package/dist/utils/shell-detection.js +16 -0
  298. package/package.json +27 -17
  299. package/schemas/sdd/1-spec.schema.json +1 -1
  300. package/schemas/sdd/2-plan.schema.json +73 -1
  301. package/schemas/sdd/3-tasks.schema.json +73 -1
  302. package/schemas/sdd/4-changelog.schema.json +1 -1
  303. package/schemas/sdd/5-quality.schema.json +442 -2
  304. package/schemas/sdd/adr.schema.json +148 -0
  305. package/schemas/sdd/agent-binding-adapter.schema.json +210 -0
  306. package/schemas/sdd/agent-binding-resolution.schema.json +338 -0
  307. package/schemas/sdd/backlog-projection-plan.schema.json +180 -0
  308. package/schemas/sdd/backlog-provider-contract.schema.json +260 -0
  309. package/schemas/sdd/codesdd-plugin.schema.json +474 -0
  310. package/schemas/sdd/debate.schema.json +244 -0
  311. package/schemas/sdd/deepagent-decision-evidence.schema.json +58 -0
  312. package/schemas/sdd/deepagent-env-contract.schema.json +143 -0
  313. package/schemas/sdd/deepagent-quality-evidence.schema.json +108 -0
  314. package/schemas/sdd/deepagent-run-evidence.schema.json +192 -0
  315. package/schemas/sdd/deepagent-run-plan.schema.json +197 -0
  316. package/schemas/sdd/deepagent-run-request.schema.json +321 -0
  317. package/schemas/sdd/deepagent-subagent-evidence.schema.json +110 -0
  318. package/schemas/sdd/deepagent-tool-call-evidence.schema.json +78 -0
  319. package/schemas/sdd/discarded.schema.json +127 -0
  320. package/schemas/sdd/epic.schema.json +147 -0
  321. package/schemas/sdd/insight.schema.json +136 -0
  322. package/schemas/sdd/parallel-feat-automation-plan.schema.json +215 -0
  323. package/schemas/sdd/parallel-feat-automation-request.schema.json +109 -0
  324. package/schemas/sdd/plugin-artifact-manifest.schema.json +150 -0
  325. package/schemas/sdd/plugin-compliance-index.schema.json +136 -0
  326. package/schemas/sdd/plugin-dry-run-plan.schema.json +260 -0
  327. package/schemas/sdd/plugin-evidence-manifest.schema.json +569 -0
  328. package/schemas/sdd/plugin-policy-evaluation.schema.json +92 -0
  329. package/schemas/sdd/plugin-policy-pack-evaluation.schema.json +94 -0
  330. package/schemas/sdd/plugin-policy-pack.schema.json +196 -0
  331. package/schemas/sdd/plugin-registry.schema.json +558 -0
  332. package/schemas/sdd/plugin-rollback-manifest.schema.json +87 -0
  333. package/schemas/sdd/plugin-runtime-invocation-plan.schema.json +845 -0
  334. package/schemas/sdd/plugin-skill-binding-resolution.schema.json +305 -0
  335. package/schemas/sdd/plugin-skill-binding.schema.json +88 -0
  336. package/schemas/sdd/plugin-validation-manifest.schema.json +123 -0
  337. package/schemas/sdd/quality-architecture-schema.schema.json +216 -0
  338. package/schemas/sdd/quality-evidence-bundle.schema.json +1228 -0
  339. package/schemas/sdd/quality-run.schema.json +197 -0
  340. package/schemas/sdd/quality-scenario.schema.json +252 -0
  341. package/schemas/sdd/workspace-catalog.schema.json +9841 -22
  342. package/schemas/spec-driven/schema.yaml +4 -4
  343. package/schemas/spec-driven/templates/proposal.md +1 -1
  344. package/dist/utils/openspec-compat.d.ts +0 -2
  345. package/dist/utils/openspec-compat.js +0 -2
@@ -2,10 +2,11 @@ import path from 'node:path';
2
2
  import { promises as fs } from 'node:fs';
3
3
  import { fileURLToPath } from 'node:url';
4
4
  import { parse as parseYaml, stringify as stringifyYaml } from 'yaml';
5
- import { resolveOpenSpecLiveSubpath } from './services/legacy-capability.service.js';
5
+ import { resolveLegacySpecLiveSubpath } from './services/legacy-capability.service.js';
6
6
  import { ArchitectureStateSchema, BacklogStateSchema, DiscoveryIndexStateSchema, FinalizeQueueStateSchema, IntegrationContractsStateSchema, FrontendDecisionsStateSchema, UnblockEventsStateSchema, TransitionLogStateSchema, AuditHistoryStateSchema, FrontendGapsStateSchema, FrontendMapStateSchema, RepoMapStateSchema, SourceIndexStateSchema, SkillCatalogStateSchema, SkillRoutingStateSchema, ServiceCatalogStateSchema, TechStackStateSchema, TechDebtStateSchema, NamingContractStateSchema, } from './types.js';
7
7
  import { CLI_NAME } from '../branding.js';
8
- import { DEFAULT_CURATED_SKILL_CATALOG, BUILT_IN_SDD_SKILLS, buildCuratedBundlesMarkdown, } from './default-skills.js';
8
+ import { CURRENT_SDD_STATE_VERSION, buildSddContractConfig } from './contract.js';
9
+ import { DEFAULT_CURATED_SKILL_CATALOG, BUILT_IN_SDD_SKILLS, buildCuratedBundlesMarkdown, buildCuratedBundlesCurationData, } from './default-skills.js';
9
10
  import { buildSddInternalReadme, PROMPT_00_COMECE_POR_AQUI_MD, PROMPT_01_INGESTAO_DEPOSITO_MD, PROMPT_02_NORMALIZAR_PLANEJAMENTO_MD, PROMPT_03_EXECUCAO_FEATURE_MD, PROMPT_04_CONSOLIDACAO_FINALIZE_MD, PROMPTS_README_MD, TEMPLATE_1_SPEC_MD, TEMPLATE_2_PLAN_MD, TEMPLATE_QUALITY_MD, TEMPLATE_3_TASKS_MD, TEMPLATE_4_CHANGELOG_MD, } from './default-bootstrap-files.js';
10
11
  import { SddWriteTransaction } from './transaction.js';
11
12
  const LEGACY_LAYOUT_FOLDERS = {
@@ -38,13 +39,13 @@ const PT_BR_LAYOUT_FOLDERS = {
38
39
  active: 'execucao',
39
40
  archived: 'arquivados',
40
41
  };
41
- function skillSubfoldersForLayout(layout) {
42
+ export function skillSubfoldersForLayout(layout) {
42
43
  if (layout === 'pt-BR') {
43
44
  return { curated: 'skills', bundles: 'pacotes' };
44
45
  }
45
46
  return { curated: 'curated', bundles: 'bundles' };
46
47
  }
47
- function defaultFoldersForLayout(layout) {
48
+ export function defaultFoldersForLayout(layout) {
48
49
  if (layout === 'pt-BR') {
49
50
  return { ...PT_BR_LAYOUT_FOLDERS };
50
51
  }
@@ -95,10 +96,10 @@ const CANONICAL_FOLDER_OPTIONS = {
95
96
  archived: ['arquivados'],
96
97
  },
97
98
  };
98
- function isRecord(value) {
99
+ export function isRecord(value) {
99
100
  return !!value && typeof value === 'object' && !Array.isArray(value);
100
101
  }
101
- function mergeRuntimeConfig(raw) {
102
+ export function mergeRuntimeConfig(raw) {
102
103
  if (!isRecord(raw)) {
103
104
  return {
104
105
  ...DEFAULT_SDD_CONFIG,
@@ -163,7 +164,7 @@ function mergeRuntimeConfig(raw) {
163
164
  },
164
165
  };
165
166
  }
166
- function validateRuntimeConfig(config) {
167
+ export function validateRuntimeConfig(config) {
167
168
  const allowed = CANONICAL_FOLDER_OPTIONS[config.layout];
168
169
  const invalidEntries = Object.entries(config.folders).flatMap(([key, value]) => {
169
170
  const folderKey = key;
@@ -179,7 +180,7 @@ function validateRuntimeConfig(config) {
179
180
  throw new Error(`Configuracao SDD invalida em .sdd/config.yaml: folders fora do canonico para layout ${config.layout}: ${invalidEntries.join('; ')}`);
180
181
  }
181
182
  }
182
- function defaultRuntimeConfig() {
183
+ export function defaultRuntimeConfig() {
183
184
  return {
184
185
  ...DEFAULT_SDD_CONFIG,
185
186
  folders: { ...DEFAULT_SDD_CONFIG.folders },
@@ -187,7 +188,7 @@ function defaultRuntimeConfig() {
187
188
  views: { autoRender: DEFAULT_SDD_CONFIG.views.autoRender },
188
189
  };
189
190
  }
190
- async function fileExists(filePath) {
191
+ export async function fileExists(filePath) {
191
192
  try {
192
193
  await fs.access(filePath);
193
194
  return true;
@@ -199,7 +200,7 @@ async function fileExists(filePath) {
199
200
  async function ensureDir(dirPath) {
200
201
  await fs.mkdir(dirPath, { recursive: true });
201
202
  }
202
- async function firstExistingFile(paths) {
203
+ export async function firstExistingFile(paths) {
203
204
  for (const filePath of paths) {
204
205
  if (await fileExists(filePath)) {
205
206
  return filePath;
@@ -207,17 +208,27 @@ async function firstExistingFile(paths) {
207
208
  }
208
209
  return null;
209
210
  }
210
- async function readYamlObject(filePath) {
211
+ export async function readYamlObject(filePath) {
211
212
  const parsed = parseYaml(await fs.readFile(filePath, 'utf-8'));
212
213
  return isRecord(parsed) ? parsed : {};
213
214
  }
214
- function buildSddConfigDocument(existing, config) {
215
+ const LEGACY_GENERATED_BY_PREFIXES = [`${'open'}sdd`, `${'open'}spec`];
216
+ export function isLegacyGeneratedBy(value) {
217
+ if (typeof value !== 'string')
218
+ return false;
219
+ return LEGACY_GENERATED_BY_PREFIXES.some((prefix) => new RegExp(`^${prefix}\\s`, 'i').test(value));
220
+ }
221
+ export function buildSddConfigDocument(existing, config) {
215
222
  const next = { ...existing };
216
223
  delete next.sdd;
217
224
  next.version = typeof next.version === 'number' ? next.version : 1;
218
- next.state_version = typeof next.state_version === 'number' ? next.state_version : 2;
225
+ const stateVersion = typeof next.state_version === 'number' ? next.state_version : CURRENT_SDD_STATE_VERSION;
226
+ next.state_version = stateVersion;
227
+ if (stateVersion >= CURRENT_SDD_STATE_VERSION) {
228
+ next.sdd_contract = buildSddContractConfig();
229
+ }
219
230
  next.generatedBy =
220
- typeof next.generatedBy === 'string' && !next.generatedBy.startsWith('openspec ')
231
+ typeof next.generatedBy === 'string' && !isLegacyGeneratedBy(next.generatedBy)
221
232
  ? next.generatedBy
222
233
  : `${CLI_NAME} sdd init`;
223
234
  next.meta_evolution = isRecord(next.meta_evolution)
@@ -237,10 +248,10 @@ function buildSddConfigDocument(existing, config) {
237
248
  next.views = { autoRender: config.views.autoRender };
238
249
  return next;
239
250
  }
240
- async function removeSddRuntimeConfigFromOpenSpecConfig(projectRoot) {
251
+ export async function removeSddRuntimeConfigFromLegacySpecConfig(projectRoot) {
241
252
  const legacyConfigPath = await firstExistingFile([
242
- resolveOpenSpecLiveSubpath(projectRoot, 'config.yaml'),
243
- resolveOpenSpecLiveSubpath(projectRoot, 'config.yml'),
253
+ resolveLegacySpecLiveSubpath(projectRoot, 'config.yaml'),
254
+ resolveLegacySpecLiveSubpath(projectRoot, 'config.yml'),
244
255
  ]);
245
256
  if (!legacyConfigPath) {
246
257
  return;
@@ -263,8 +274,8 @@ export async function loadProjectSddConfig(projectRoot) {
263
274
  return config;
264
275
  }
265
276
  const legacyConfigPath = await firstExistingFile([
266
- resolveOpenSpecLiveSubpath(projectRoot, 'config.yaml'),
267
- resolveOpenSpecLiveSubpath(projectRoot, 'config.yml'),
277
+ resolveLegacySpecLiveSubpath(projectRoot, 'config.yaml'),
278
+ resolveLegacySpecLiveSubpath(projectRoot, 'config.yml'),
268
279
  ]);
269
280
  if (legacyConfigPath) {
270
281
  const legacyRoot = await readYamlObject(legacyConfigPath);
@@ -289,8 +300,8 @@ export async function upsertProjectSddConfig(projectRoot, overrides) {
289
300
  }
290
301
  else {
291
302
  const legacyConfigPath = await firstExistingFile([
292
- resolveOpenSpecLiveSubpath(projectRoot, 'config.yaml'),
293
- resolveOpenSpecLiveSubpath(projectRoot, 'config.yml'),
303
+ resolveLegacySpecLiveSubpath(projectRoot, 'config.yaml'),
304
+ resolveLegacySpecLiveSubpath(projectRoot, 'config.yml'),
294
305
  ]);
295
306
  if (legacyConfigPath) {
296
307
  const legacyRoot = await readYamlObject(legacyConfigPath);
@@ -310,7 +321,7 @@ export async function upsertProjectSddConfig(projectRoot, overrides) {
310
321
  }
311
322
  validateRuntimeConfig(mergedSdd);
312
323
  await fs.writeFile(configPath, stringifyYaml(buildSddConfigDocument(rootConfig, mergedSdd)), 'utf-8');
313
- await removeSddRuntimeConfigFromOpenSpecConfig(projectRoot);
324
+ await removeSddRuntimeConfigFromLegacySpecConfig(projectRoot);
314
325
  return mergedSdd;
315
326
  }
316
327
  export function resolveSddPaths(projectRoot, config) {
@@ -431,13 +442,13 @@ async function writeFileIfMissing(filePath, content) {
431
442
  await fs.mkdir(path.dirname(filePath), { recursive: true });
432
443
  await fs.writeFile(filePath, content, 'utf-8');
433
444
  }
434
- function isBuiltInSkillSourceTree(definition) {
445
+ export function isBuiltInSkillSourceTree(definition) {
435
446
  return (typeof definition === 'object' &&
436
447
  definition !== null &&
437
448
  'kind' in definition &&
438
449
  definition.kind === 'source-tree');
439
450
  }
440
- function adaptSkillContentForLayout(content, paths, config) {
451
+ export function adaptSkillContentForLayout(content, paths, config) {
441
452
  if (config.layout === 'en-US') {
442
453
  return content;
443
454
  }
@@ -450,7 +461,7 @@ function adaptSkillContentForLayout(content, paths, config) {
450
461
  .replaceAll('/attachments/', '/anexos/')
451
462
  .replaceAll('/legacy/', '/legado/');
452
463
  }
453
- async function listTreeFiles(rootDir) {
464
+ export async function listTreeFiles(rootDir) {
454
465
  async function walk(currentDir, relativePrefix) {
455
466
  const entries = await fs.readdir(currentDir, { withFileTypes: true });
456
467
  const files = [];
@@ -474,7 +485,7 @@ async function listTreeFiles(rootDir) {
474
485
  files.sort((a, b) => a.localeCompare(b));
475
486
  return files;
476
487
  }
477
- async function resolveBuiltInSourceRoot(paths, sourceRoot) {
488
+ export async function resolveBuiltInSourceRoot(paths, sourceRoot) {
478
489
  const normalized = sourceRoot.trim();
479
490
  if (!normalized) {
480
491
  return null;
@@ -495,7 +506,7 @@ async function resolveBuiltInSourceRoot(paths, sourceRoot) {
495
506
  }
496
507
  return null;
497
508
  }
498
- async function materializeBuiltInSkill(paths, config, skillId, definition) {
509
+ export async function materializeBuiltInSkill(paths, config, skillId, definition) {
499
510
  if (typeof definition === 'string') {
500
511
  const materializedContent = adaptSkillContentForLayout(definition, paths, config);
501
512
  await writeFileIfMissing(path.join(paths.skillsCuratedDir, skillId, 'SKILL.md'), materializedContent);
@@ -523,7 +534,7 @@ async function materializeBuiltInSkill(paths, config, skillId, definition) {
523
534
  await writeFileIfMissing(targetFile, adaptSkillContentForLayout(content, paths, config));
524
535
  }
525
536
  }
526
- async function ensureCuratedSkillCatalog(filePath) {
537
+ export async function ensureCuratedSkillCatalog(filePath) {
527
538
  if (!(await fileExists(filePath))) {
528
539
  await fs.writeFile(filePath, stringifyYaml(DEFAULT_CURATED_SKILL_CATALOG), 'utf-8');
529
540
  return;
@@ -573,7 +584,8 @@ async function ensureCuratedSkillCatalog(filePath) {
573
584
  export async function ensureBaseFiles(paths, config) {
574
585
  await writeYamlIfMissing(paths.configFile, {
575
586
  version: 1,
576
- state_version: 2,
587
+ state_version: CURRENT_SDD_STATE_VERSION,
588
+ sdd_contract: buildSddContractConfig(),
577
589
  generatedBy: `${CLI_NAME} sdd init`,
578
590
  meta_evolution: {
579
591
  enabled: true,
@@ -615,8 +627,8 @@ export async function ensureBaseFiles(paths, config) {
615
627
  version: 1,
616
628
  default_skills: ['architecture', 'concise-planning', 'context-window-management'],
617
629
  routes: [
618
- { domain: 'backend', skills: ['architecture', 'api-design-principles'], bundles: [] },
619
- { domain: 'api', skills: ['api-design-principles', 'api-clean-flask-langgraph'], bundles: ['python-agentic-backend'] },
630
+ { domain: 'backend', skills: ['devtrack-api', 'architecture', 'api-design-principles'], bundles: ['architecture-backend'] },
631
+ { domain: 'api', skills: ['devtrack-api', 'api-design-principles'], bundles: ['architecture-backend'] },
620
632
  { domain: 'python', skills: ['api-clean-flask-langgraph', 'architecture'], bundles: ['python-agentic-backend'] },
621
633
  { domain: 'flask', skills: ['api-clean-flask-langgraph'], bundles: ['python-agentic-backend'] },
622
634
  { domain: 'nestjs', skills: ['devtrack-api', 'architecture'], bundles: ['architecture-backend'] },
@@ -642,6 +654,11 @@ export async function ensureBaseFiles(paths, config) {
642
654
  prompts: 'prompts',
643
655
  }));
644
656
  await writeFileIfMissing(path.join(paths.skillsBundlesDir, config.layout === 'en-US' ? 'curation-en-us.md' : 'curadoria-pt-br.md'), buildCuratedBundlesMarkdown());
657
+ // EPIC-0072 wave 1 (FEAT-0284) — emit a schema-validated YAML form alongside
658
+ // the Markdown view so consumers can read typed data without scraping headings.
659
+ // The .md remains the human-readable view; the .yaml is the structured contract.
660
+ const curationLayout = config.layout === 'pt-BR' ? 'pt-BR' : 'en-US';
661
+ await writeFileIfMissing(path.join(paths.skillsBundlesDir, config.layout === 'en-US' ? 'curation-en-us.yaml' : 'curadoria-pt-br.yaml'), stringifyYaml(buildCuratedBundlesCurationData(curationLayout)));
645
662
  for (const [skillId, definition] of Object.entries(BUILT_IN_SDD_SKILLS)) {
646
663
  await materializeBuiltInSkill(paths, config, skillId, definition);
647
664
  }
@@ -711,8 +728,8 @@ export async function loadStateSnapshot(paths, config) {
711
728
  version: 1,
712
729
  default_skills: ['architecture', 'concise-planning', 'context-window-management'],
713
730
  routes: [
714
- { domain: 'backend', skills: ['architecture', 'api-design-principles'], bundles: [] },
715
- { domain: 'api', skills: ['api-design-principles', 'api-clean-flask-langgraph'], bundles: ['python-agentic-backend'] },
731
+ { domain: 'backend', skills: ['devtrack-api', 'architecture', 'api-design-principles'], bundles: ['architecture-backend'] },
732
+ { domain: 'api', skills: ['devtrack-api', 'api-design-principles'], bundles: ['architecture-backend'] },
716
733
  { domain: 'python', skills: ['api-clean-flask-langgraph', 'architecture'], bundles: ['python-agentic-backend'] },
717
734
  { domain: 'flask', skills: ['api-clean-flask-langgraph'], bundles: ['python-agentic-backend'] },
718
735
  { domain: 'nestjs', skills: ['devtrack-api', 'architecture'], bundles: ['architecture-backend'] },
@@ -814,6 +831,14 @@ export function defaultNamingContractState() {
814
831
  '.sdd/discovery/**',
815
832
  'test/core/sdd/fixtures/**',
816
833
  ];
834
+ const legacyPrefix = 'open';
835
+ const legacySpec = `${legacyPrefix}spec`;
836
+ const legacySdd = `${legacyPrefix}sdd`;
837
+ const legacyTitlePrefix = `${legacyPrefix[0].toUpperCase()}${legacyPrefix.slice(1)}`;
838
+ const legacySpecTitle = `${legacyTitlePrefix}Spec`;
839
+ const legacySddTitle = `${legacyTitlePrefix}SDD`;
840
+ const legacySpecCamel = `${legacyPrefix}Spec`;
841
+ const legacySddCamel = `${legacyPrefix}SDD`;
817
842
  return {
818
843
  version: 1,
819
844
  product_name: 'CodeSDD',
@@ -830,13 +855,13 @@ export function defaultNamingContractState() {
830
855
  package_name: '@devtrack-solution/codesdd',
831
856
  },
832
857
  forbidden_terms: [
833
- { term: 'openspec', scope: 'all', severity: 'warning', allowlist_paths: [...sharedAllowlist] },
834
- { term: 'OpenSpec', scope: 'all', severity: 'warning', allowlist_paths: [...sharedAllowlist] },
835
- { term: 'openSpec', scope: 'all', severity: 'warning', allowlist_paths: [...sharedAllowlist] },
858
+ { term: legacySpec, scope: 'all', severity: 'warning', allowlist_paths: [...sharedAllowlist] },
859
+ { term: legacySpecTitle, scope: 'all', severity: 'warning', allowlist_paths: [...sharedAllowlist] },
860
+ { term: legacySpecCamel, scope: 'all', severity: 'warning', allowlist_paths: [...sharedAllowlist] },
836
861
  ],
837
862
  allowlist: [
838
863
  { path_pattern: '.sdd/archived/**', reason: 'Archived SDD artifacts retain legacy terminology', owner: 'sdd-core' },
839
- { path_pattern: '.sdd/sources/legacy/spec-corpus/**', reason: 'Legacy OpenSpec import sources', owner: 'sdd-core' },
864
+ { path_pattern: '.sdd/sources/legacy/spec-corpus/**', reason: 'Imported legacy corpus sources', owner: 'sdd-core' },
840
865
  { path_pattern: 'node_modules/**', reason: 'Third-party dependencies', owner: 'sdd-core' },
841
866
  { path_pattern: 'dist/**', reason: 'Build output', owner: 'sdd-core' },
842
867
  { path_pattern: 'coverage/**', reason: 'Test coverage artifacts', owner: 'sdd-core' },
@@ -844,7 +869,7 @@ export function defaultNamingContractState() {
844
869
  ],
845
870
  rename_rules: [
846
871
  {
847
- from: 'OpenSDD',
872
+ from: legacySddTitle,
848
873
  to: 'CodeSDD',
849
874
  scope: 'all',
850
875
  phase: 'identity-introduction',
@@ -853,7 +878,7 @@ export function defaultNamingContractState() {
853
878
  path_globs: ['README.md', 'docs/**', 'src/**', 'test/**', '.sdd/state/**'],
854
879
  },
855
880
  {
856
- from: 'opensdd',
881
+ from: legacySdd,
857
882
  to: 'codesdd',
858
883
  scope: 'all',
859
884
  phase: 'identity-introduction',
@@ -862,7 +887,7 @@ export function defaultNamingContractState() {
862
887
  path_globs: ['package.json', 'bin/**', 'src/**', 'test/**', 'docs/**'],
863
888
  },
864
889
  {
865
- from: '@devtrack-solution/codesdd',
890
+ from: `@devtrack-solution/${legacySdd}-cli`,
866
891
  to: '@devtrack-solution/codesdd',
867
892
  scope: 'all',
868
893
  phase: 'package-identity',
@@ -874,7 +899,7 @@ export function defaultNamingContractState() {
874
899
  zero_residue_gate: {
875
900
  enabled: true,
876
901
  enforcement: 'warning',
877
- terms: ['openspec', 'OpenSpec', 'openSpec', 'opensdd', 'OpenSDD', 'openSDD'],
902
+ terms: [legacySpec, legacySpecTitle, legacySpecCamel, legacySdd, legacySddTitle, legacySddCamel],
878
903
  allowlist_paths: [...sharedAllowlist],
879
904
  removal_phase: 'compatibility-shutdown',
880
905
  },
@@ -34,26 +34,26 @@ export declare const StructuralFindingSeveritySchema: z.ZodEnum<{
34
34
  }>;
35
35
  export declare const StructuralFindingCategorySchema: z.ZodEnum<{
36
36
  metadata: "metadata";
37
+ integrity: "integrity";
38
+ naming: "naming";
39
+ references: "references";
37
40
  lifecycle: "lifecycle";
38
41
  render: "render";
39
- references: "references";
40
- integrity: "integrity";
41
42
  boundary: "boundary";
42
- naming: "naming";
43
43
  }>;
44
44
  export declare const StructuralSanitizerDispositionSchema: z.ZodEnum<{
45
+ blocked: "blocked";
45
46
  manual: "manual";
46
47
  safe: "safe";
47
- blocked: "blocked";
48
48
  noop: "noop";
49
49
  }>;
50
50
  export declare const StructuralLifecycleStateTokenSchema: z.ZodEnum<{
51
51
  done: "done";
52
+ ready: "ready";
53
+ blocked: "blocked";
52
54
  planned: "planned";
53
55
  in_progress: "in_progress";
54
56
  archived: "archived";
55
- blocked: "blocked";
56
- ready: "ready";
57
57
  }>;
58
58
  export declare const StructuralNavigationNodeKindSchema: z.ZodEnum<{
59
59
  epic: "epic";
@@ -102,17 +102,17 @@ export declare const StructuralTokenRegistrySchema: z.ZodObject<{
102
102
  }>>;
103
103
  finding_categories: z.ZodArray<z.ZodEnum<{
104
104
  metadata: "metadata";
105
+ integrity: "integrity";
106
+ naming: "naming";
107
+ references: "references";
105
108
  lifecycle: "lifecycle";
106
109
  render: "render";
107
- references: "references";
108
- integrity: "integrity";
109
110
  boundary: "boundary";
110
- naming: "naming";
111
111
  }>>;
112
112
  sanitizer_dispositions: z.ZodArray<z.ZodEnum<{
113
+ blocked: "blocked";
113
114
  manual: "manual";
114
115
  safe: "safe";
115
- blocked: "blocked";
116
116
  noop: "noop";
117
117
  }>>;
118
118
  }, z.core.$strip>;
@@ -139,8 +139,8 @@ export declare const StructuralCommandInvocationSchema: z.ZodObject<{
139
139
  }>;
140
140
  mode: z.ZodEnum<{
141
141
  apply: "apply";
142
- dry_run: "dry_run";
143
142
  read: "read";
143
+ dry_run: "dry_run";
144
144
  }>;
145
145
  args: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
146
146
  }, z.core.$strip>;
@@ -149,12 +149,12 @@ export declare const StructuralFindingSchema: z.ZodObject<{
149
149
  rule_id: z.ZodString;
150
150
  category: z.ZodEnum<{
151
151
  metadata: "metadata";
152
+ integrity: "integrity";
153
+ naming: "naming";
154
+ references: "references";
152
155
  lifecycle: "lifecycle";
153
156
  render: "render";
154
- references: "references";
155
- integrity: "integrity";
156
157
  boundary: "boundary";
157
- naming: "naming";
158
158
  }>;
159
159
  severity: z.ZodEnum<{
160
160
  error: "error";
@@ -167,9 +167,9 @@ export declare const StructuralFindingSchema: z.ZodObject<{
167
167
  location: z.ZodOptional<z.ZodString>;
168
168
  sanitizer: z.ZodObject<{
169
169
  disposition: z.ZodEnum<{
170
+ blocked: "blocked";
170
171
  manual: "manual";
171
172
  safe: "safe";
172
- blocked: "blocked";
173
173
  noop: "noop";
174
174
  }>;
175
175
  reason: z.ZodString;
@@ -186,12 +186,12 @@ export declare const StructuralDiagnosticReportSchema: z.ZodObject<{
186
186
  rule_id: z.ZodString;
187
187
  category: z.ZodEnum<{
188
188
  metadata: "metadata";
189
+ integrity: "integrity";
190
+ naming: "naming";
191
+ references: "references";
189
192
  lifecycle: "lifecycle";
190
193
  render: "render";
191
- references: "references";
192
- integrity: "integrity";
193
194
  boundary: "boundary";
194
- naming: "naming";
195
195
  }>;
196
196
  severity: z.ZodEnum<{
197
197
  error: "error";
@@ -204,9 +204,9 @@ export declare const StructuralDiagnosticReportSchema: z.ZodObject<{
204
204
  location: z.ZodOptional<z.ZodString>;
205
205
  sanitizer: z.ZodObject<{
206
206
  disposition: z.ZodEnum<{
207
+ blocked: "blocked";
207
208
  manual: "manual";
208
209
  safe: "safe";
209
- blocked: "blocked";
210
210
  noop: "noop";
211
211
  }>;
212
212
  reason: z.ZodString;
@@ -223,12 +223,12 @@ export declare const StructuralDiagnosticReportSchema: z.ZodObject<{
223
223
  }> & z.core.$partial, z.ZodNumber>>;
224
224
  by_category: z.ZodDefault<z.ZodRecord<z.ZodEnum<{
225
225
  metadata: "metadata";
226
+ integrity: "integrity";
227
+ naming: "naming";
228
+ references: "references";
226
229
  lifecycle: "lifecycle";
227
230
  render: "render";
228
- references: "references";
229
- integrity: "integrity";
230
231
  boundary: "boundary";
231
- naming: "naming";
232
232
  }> & z.core.$partial, z.ZodNumber>>;
233
233
  }, z.core.$strip>;
234
234
  }, z.core.$strip>;
@@ -236,18 +236,18 @@ export declare const StructuralSanitizerActionSchema: z.ZodObject<{
236
236
  action_id: z.ZodString;
237
237
  finding_id: z.ZodString;
238
238
  disposition: z.ZodEnum<{
239
+ blocked: "blocked";
239
240
  manual: "manual";
240
241
  safe: "safe";
241
- blocked: "blocked";
242
242
  noop: "noop";
243
243
  }>;
244
244
  operation: z.ZodEnum<{
245
+ skip: "skip";
245
246
  mkdir: "mkdir";
246
247
  render: "render";
247
248
  move: "move";
248
249
  register: "register";
249
250
  manual_review: "manual_review";
250
- skip: "skip";
251
251
  }>;
252
252
  from_path: z.ZodOptional<z.ZodString>;
253
253
  to_path: z.ZodOptional<z.ZodString>;
@@ -270,24 +270,24 @@ export declare const StructuralSanitizerTransactionOperationSchema: z.ZodObject<
270
270
  action_id: z.ZodString;
271
271
  finding_id: z.ZodString;
272
272
  disposition: z.ZodEnum<{
273
+ blocked: "blocked";
273
274
  manual: "manual";
274
275
  safe: "safe";
275
- blocked: "blocked";
276
276
  noop: "noop";
277
277
  }>;
278
278
  operation: z.ZodEnum<{
279
+ skip: "skip";
279
280
  mkdir: "mkdir";
280
281
  render: "render";
281
282
  move: "move";
282
283
  register: "register";
283
284
  manual_review: "manual_review";
284
- skip: "skip";
285
285
  }>;
286
286
  status: z.ZodEnum<{
287
- skipped: "skipped";
288
- failed: "failed";
289
287
  applied: "applied";
290
288
  rolled_back: "rolled_back";
289
+ failed: "failed";
290
+ skipped: "skipped";
291
291
  }>;
292
292
  from_path: z.ZodOptional<z.ZodString>;
293
293
  to_path: z.ZodOptional<z.ZodString>;
@@ -325,24 +325,24 @@ export declare const StructuralSanitizerTransactionManifestSchema: z.ZodObject<{
325
325
  action_id: z.ZodString;
326
326
  finding_id: z.ZodString;
327
327
  disposition: z.ZodEnum<{
328
+ blocked: "blocked";
328
329
  manual: "manual";
329
330
  safe: "safe";
330
- blocked: "blocked";
331
331
  noop: "noop";
332
332
  }>;
333
333
  operation: z.ZodEnum<{
334
+ skip: "skip";
334
335
  mkdir: "mkdir";
335
336
  render: "render";
336
337
  move: "move";
337
338
  register: "register";
338
339
  manual_review: "manual_review";
339
- skip: "skip";
340
340
  }>;
341
341
  status: z.ZodEnum<{
342
- skipped: "skipped";
343
- failed: "failed";
344
342
  applied: "applied";
345
343
  rolled_back: "rolled_back";
344
+ failed: "failed";
345
+ skipped: "skipped";
346
346
  }>;
347
347
  from_path: z.ZodOptional<z.ZodString>;
348
348
  to_path: z.ZodOptional<z.ZodString>;
@@ -382,18 +382,18 @@ export declare const StructuralSanitizerReportSchema: z.ZodObject<{
382
382
  action_id: z.ZodString;
383
383
  finding_id: z.ZodString;
384
384
  disposition: z.ZodEnum<{
385
+ blocked: "blocked";
385
386
  manual: "manual";
386
387
  safe: "safe";
387
- blocked: "blocked";
388
388
  noop: "noop";
389
389
  }>;
390
390
  operation: z.ZodEnum<{
391
+ skip: "skip";
391
392
  mkdir: "mkdir";
392
393
  render: "render";
393
394
  move: "move";
394
395
  register: "register";
395
396
  manual_review: "manual_review";
396
- skip: "skip";
397
397
  }>;
398
398
  from_path: z.ZodOptional<z.ZodString>;
399
399
  to_path: z.ZodOptional<z.ZodString>;
@@ -403,18 +403,18 @@ export declare const StructuralSanitizerReportSchema: z.ZodObject<{
403
403
  action_id: z.ZodString;
404
404
  finding_id: z.ZodString;
405
405
  disposition: z.ZodEnum<{
406
+ blocked: "blocked";
406
407
  manual: "manual";
407
408
  safe: "safe";
408
- blocked: "blocked";
409
409
  noop: "noop";
410
410
  }>;
411
411
  operation: z.ZodEnum<{
412
+ skip: "skip";
412
413
  mkdir: "mkdir";
413
414
  render: "render";
414
415
  move: "move";
415
416
  register: "register";
416
417
  manual_review: "manual_review";
417
- skip: "skip";
418
418
  }>;
419
419
  from_path: z.ZodOptional<z.ZodString>;
420
420
  to_path: z.ZodOptional<z.ZodString>;
@@ -444,11 +444,11 @@ export declare const StructuralLifecycleEntrySchema: z.ZodObject<{
444
444
  }>>;
445
445
  state_token: z.ZodEnum<{
446
446
  done: "done";
447
+ ready: "ready";
448
+ blocked: "blocked";
447
449
  planned: "planned";
448
450
  in_progress: "in_progress";
449
451
  archived: "archived";
450
- blocked: "blocked";
451
- ready: "ready";
452
452
  }>;
453
453
  }, z.core.$strip>;
454
454
  export declare const StructuralDirectoryStateMappingSchema: z.ZodObject<{
@@ -459,19 +459,19 @@ export declare const StructuralDirectoryStateMappingSchema: z.ZodObject<{
459
459
  archived: "archived";
460
460
  }>, z.ZodArray<z.ZodEnum<{
461
461
  done: "done";
462
+ ready: "ready";
463
+ blocked: "blocked";
462
464
  planned: "planned";
463
465
  in_progress: "in_progress";
464
466
  archived: "archived";
465
- blocked: "blocked";
466
- ready: "ready";
467
467
  }>>>;
468
468
  state_to_root: z.ZodRecord<z.ZodEnum<{
469
469
  done: "done";
470
+ ready: "ready";
471
+ blocked: "blocked";
470
472
  planned: "planned";
471
473
  in_progress: "in_progress";
472
474
  archived: "archived";
473
- blocked: "blocked";
474
- ready: "ready";
475
475
  }>, z.ZodEnum<{
476
476
  active: "active";
477
477
  planned: "planned";