@planu/cli 4.14.1 → 5.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/LICENSE +55 -12
  3. package/README.md +10 -2
  4. package/dist/cli/commands/install.d.ts +1 -12
  5. package/dist/cli/commands/install.js +9 -65
  6. package/dist/cli/commands/job.js +4 -3
  7. package/dist/cli/commands/spec.js +12 -3
  8. package/dist/cli/commands/validate.js +2 -2
  9. package/dist/cli/router.js +1 -3
  10. package/dist/config/environment-schema.json +1 -3
  11. package/dist/config/official-sdd-tools.d.ts +4 -0
  12. package/dist/config/official-sdd-tools.js +35 -0
  13. package/dist/config/product-public.d.ts +139 -3
  14. package/dist/config/product-public.js +8 -1
  15. package/dist/config/product-public.json +7 -36
  16. package/dist/config/registries/hosts/codex.json +20 -363
  17. package/dist/config/release-policy.json +84 -2
  18. package/dist/config/runtime-policy.json +12 -1
  19. package/dist/config/skill-templates/planu-resume-work.md +2 -2
  20. package/dist/core/index.d.ts +1 -1
  21. package/dist/core/spec-validator.d.ts +4 -4
  22. package/dist/core/spec-validator.js +33 -19
  23. package/dist/engine/abortable-process-runner.d.ts +20 -2
  24. package/dist/engine/abortable-process-runner.js +243 -74
  25. package/dist/engine/ambiguity-scorer.js +4 -26
  26. package/dist/engine/auth/scope-mapper.js +1 -7
  27. package/dist/engine/autopilot/state-updater.js +4 -4
  28. package/dist/engine/cascade-hooks/hooks/review-enricher.hook.js +9 -6
  29. package/dist/engine/cascade-hooks/state-drift-detector.d.ts +3 -3
  30. package/dist/engine/cascade-hooks/state-drift-detector.js +1 -1
  31. package/dist/engine/ci-generator/planu-config.js +1 -7
  32. package/dist/engine/clarification-gate/gate.d.ts +3 -3
  33. package/dist/engine/code-scanner/layer-scanner.js +6 -22
  34. package/dist/engine/core-bridge.d.ts +3 -3
  35. package/dist/engine/cost-guardrails.d.ts +1 -1
  36. package/dist/engine/cost-guardrails.js +1 -1
  37. package/dist/engine/criterion-identity.d.ts +1 -0
  38. package/dist/engine/criterion-identity.js +7 -0
  39. package/dist/engine/dashboard/data-loader.js +2 -7
  40. package/dist/engine/dashboard/templates-layout.js +0 -3
  41. package/dist/engine/dashboard/templates-project.js +1 -13
  42. package/dist/engine/docs-site-generator/data-collector.d.ts +1 -1
  43. package/dist/engine/docs-site-generator/data-collector.js +7 -28
  44. package/dist/engine/docs-site-generator/tools-renderer.js +3 -10
  45. package/dist/engine/evidence-gates/artifact-reader.d.ts +12 -1
  46. package/dist/engine/evidence-gates/artifact-reader.js +174 -4
  47. package/dist/engine/evidence-gates/evidence-autofill.d.ts +10 -0
  48. package/dist/engine/evidence-gates/evidence-autofill.js +148 -0
  49. package/dist/engine/evidence-gates/evidence-skeletons.d.ts +19 -0
  50. package/dist/engine/evidence-gates/evidence-skeletons.js +69 -0
  51. package/dist/engine/evidence-gates/lifecycle-gate.js +4 -3
  52. package/dist/engine/evidence-gates/reconciliation-freshness.d.ts +11 -0
  53. package/dist/engine/evidence-gates/reconciliation-freshness.js +72 -0
  54. package/dist/engine/evidence-index/done-drift.d.ts +1 -1
  55. package/dist/engine/evidence-index/done-drift.js +40 -18
  56. package/dist/engine/execution/context.js +3 -0
  57. package/dist/engine/execution/durable-job-heartbeat-runtime.d.ts +4 -0
  58. package/dist/engine/execution/durable-job-heartbeat-runtime.js +400 -0
  59. package/dist/engine/execution/job-runtime.d.ts +30 -0
  60. package/dist/engine/execution/job-runtime.js +114 -6
  61. package/dist/engine/execution/operation-journal.js +10 -4
  62. package/dist/engine/execution/public-job-sanitizer.d.ts +4 -0
  63. package/dist/engine/execution/public-job-sanitizer.js +31 -0
  64. package/dist/engine/execution/validate-job-executor.d.ts +12 -1
  65. package/dist/engine/execution/validate-job-executor.js +549 -86
  66. package/dist/engine/execution/validate-job-payload.js +107 -50
  67. package/dist/engine/execution/validate-job-recovery.js +1 -1
  68. package/dist/engine/execution/validate-worker-runtime.d.ts +5 -0
  69. package/dist/engine/execution/validate-worker-runtime.js +90 -2
  70. package/dist/engine/execution/validate-worker-thread.js +17 -24
  71. package/dist/engine/handoff-artifacts/schemas.d.ts +2 -1
  72. package/dist/engine/handoff-artifacts/schemas.js +33 -0
  73. package/dist/engine/handoff-packager.d.ts +19 -0
  74. package/dist/engine/handoff-packager.js +415 -13
  75. package/dist/engine/hooks/effort-configurator.js +1 -1
  76. package/dist/engine/impact-detector/test-break-predictor.js +3 -3
  77. package/dist/engine/impact-detector/tool-registration.js +1 -1
  78. package/dist/engine/implementation-contract/renderer.js +23 -8
  79. package/dist/engine/lifecycle-reconciliation-io.d.ts +11 -0
  80. package/dist/engine/lifecycle-reconciliation-io.js +180 -0
  81. package/dist/engine/lifecycle-reconciliation.d.ts +16 -0
  82. package/dist/engine/lifecycle-reconciliation.js +406 -0
  83. package/dist/engine/local-first/tool-classification.js +2 -0
  84. package/dist/engine/macos-keychain-native-port.d.ts +5 -0
  85. package/dist/engine/macos-keychain-native-port.js +19 -7
  86. package/dist/engine/migrations/remove-commercial-state.d.ts +3 -0
  87. package/dist/engine/migrations/remove-commercial-state.js +343 -0
  88. package/dist/engine/minimality/policy-loader.js +247 -6
  89. package/dist/engine/network-policy.js +1 -0
  90. package/dist/engine/planu-core.darwin-arm64.node.manifest.json +7 -7
  91. package/dist/engine/planu-core.darwin-arm64.node.sbom.json +20 -20
  92. package/dist/engine/planu-core.darwin-x64.node.manifest.json +7 -7
  93. package/dist/engine/planu-core.darwin-x64.node.sbom.json +20 -20
  94. package/dist/engine/planu-core.linux-arm64-gnu.node.manifest.json +7 -7
  95. package/dist/engine/planu-core.linux-arm64-gnu.node.sbom.json +20 -20
  96. package/dist/engine/planu-core.linux-arm64-musl.node.manifest.json +7 -7
  97. package/dist/engine/planu-core.linux-arm64-musl.node.sbom.json +20 -20
  98. package/dist/engine/planu-core.linux-x64-gnu.node.manifest.json +7 -7
  99. package/dist/engine/planu-core.linux-x64-gnu.node.sbom.json +20 -20
  100. package/dist/engine/planu-core.linux-x64-musl.node.manifest.json +7 -7
  101. package/dist/engine/planu-core.linux-x64-musl.node.sbom.json +20 -20
  102. package/dist/engine/planu-core.win32-arm64-msvc.node.manifest.json +7 -7
  103. package/dist/engine/planu-core.win32-arm64-msvc.node.sbom.json +20 -20
  104. package/dist/engine/planu-core.win32-x64-msvc.node.manifest.json +7 -7
  105. package/dist/engine/planu-core.win32-x64-msvc.node.sbom.json +20 -20
  106. package/dist/engine/readiness-checker.d.ts +1 -16
  107. package/dist/engine/readiness-checker.js +27 -88
  108. package/dist/engine/reverse-engineer/api-detector.js +2 -13
  109. package/dist/engine/reverse-engineer/complexity-analyzer.js +2 -13
  110. package/dist/engine/reverse-engineer/config-analyzer.js +2 -13
  111. package/dist/engine/reverse-engineer/dependency-graph.js +2 -13
  112. package/dist/engine/reverse-engineer/test-analyzer.js +2 -13
  113. package/dist/engine/reverse-engineer/walk-ignore.d.ts +3 -0
  114. package/dist/engine/reverse-engineer/walk-ignore.js +26 -0
  115. package/dist/engine/runtime-policy.d.ts +2 -0
  116. package/dist/engine/runtime-policy.js +42 -5
  117. package/dist/engine/runtime-security/rate-limiter.js +0 -1
  118. package/dist/engine/safety/contained-project-file.d.ts +3 -0
  119. package/dist/engine/safety/contained-project-file.js +23 -0
  120. package/dist/engine/scope-boundaries/contradiction-checker.js +63 -1
  121. package/dist/engine/scope-boundaries/scope-validator.js +45 -7
  122. package/dist/engine/session/checkpoint-writer.js +0 -9
  123. package/dist/engine/spec-format/acceptance-criteria.d.ts +6 -2
  124. package/dist/engine/spec-format/acceptance-criteria.js +82 -22
  125. package/dist/engine/spec-format/markdown-sections.d.ts +14 -0
  126. package/dist/engine/spec-format/markdown-sections.js +105 -0
  127. package/dist/engine/spec-format/read-technical-section.js +33 -5
  128. package/dist/engine/spec-format/technical-md-populator.js +3 -2
  129. package/dist/engine/spec-format/text-fences.js +20 -2
  130. package/dist/engine/spec-format/unified-spec-builder.d.ts +7 -0
  131. package/dist/engine/spec-format/unified-spec-builder.js +202 -0
  132. package/dist/engine/spec-migrator/canonical-deduplicator.d.ts +18 -0
  133. package/dist/engine/spec-migrator/canonical-deduplicator.js +479 -0
  134. package/dist/engine/spec-migrator/filesystem-import.d.ts +4 -8
  135. package/dist/engine/spec-migrator/filesystem-import.js +121 -14
  136. package/dist/engine/spec-migrator/frontmatter-parser.js +32 -15
  137. package/dist/engine/spec-migrator/index.d.ts +1 -0
  138. package/dist/engine/spec-migrator/index.js +1 -0
  139. package/dist/engine/spec-state-machine/transition-spec.d.ts +6 -1
  140. package/dist/engine/spec-state-machine/transition-spec.js +10 -1
  141. package/dist/engine/spec-state-syncer.js +1 -1
  142. package/dist/engine/technical-enricher/index.js +16 -8
  143. package/dist/engine/technical-enricher/render-enriched.d.ts +1 -0
  144. package/dist/engine/technical-enricher/render-enriched.js +42 -14
  145. package/dist/engine/telemetry/health-checker.js +53 -17
  146. package/dist/engine/telemetry/telemetry-client.js +26 -8
  147. package/dist/engine/text-signal-boundaries.d.ts +2 -0
  148. package/dist/engine/text-signal-boundaries.js +25 -2
  149. package/dist/engine/time/relative-date.d.ts +3 -0
  150. package/dist/engine/time/relative-date.js +16 -0
  151. package/dist/engine/timing/budget.d.ts +11 -0
  152. package/dist/engine/timing/budget.js +31 -9
  153. package/dist/engine/token-optimizer/analytics.d.ts +1 -1
  154. package/dist/engine/token-optimizer/analytics.js +5 -6
  155. package/dist/engine/usage-tracker/core.d.ts +2 -2
  156. package/dist/engine/usage-tracker/core.js +1 -2
  157. package/dist/engine/usage-tracker/index.d.ts +0 -3
  158. package/dist/engine/usage-tracker/index.js +0 -3
  159. package/dist/engine/usage-tracker/stats.d.ts +2 -2
  160. package/dist/engine/usage-tracker/stats.js +1 -28
  161. package/dist/engine/validation/durable-validation.d.ts +1 -1
  162. package/dist/engine/validation/durable-validation.js +3 -82
  163. package/dist/engine/validation/validation-freshness.d.ts +11 -1
  164. package/dist/engine/validation/validation-freshness.js +231 -91
  165. package/dist/engine/validation/validation-receipt.d.ts +9 -6
  166. package/dist/engine/validation/validation-receipt.js +84 -24
  167. package/dist/engine/validation/validation-source-digest.d.ts +2 -0
  168. package/dist/engine/validation/validation-source-digest.js +86 -0
  169. package/dist/engine/validation/validation-submission.d.ts +5 -4
  170. package/dist/engine/validation/validation-submission.js +25 -11
  171. package/dist/engine/validation/validation-worktree.d.ts +21 -0
  172. package/dist/engine/validation/validation-worktree.js +260 -0
  173. package/dist/engine/validation-impact-planner.d.ts +14 -2
  174. package/dist/engine/validation-impact-planner.js +0 -3
  175. package/dist/engine/validator/dor-dod.d.ts +1 -0
  176. package/dist/engine/validator/dor-dod.js +5 -3
  177. package/dist/engine/validator/extractors.d.ts +1 -5
  178. package/dist/engine/validator/extractors.js +24 -69
  179. package/dist/engine/validator/spec-compliance-runner.d.ts +12 -24
  180. package/dist/engine/validator/spec-compliance-runner.js +429 -211
  181. package/dist/engine/validator.js +35 -22
  182. package/dist/index.js +4 -16
  183. package/dist/resources/usage-stats-resource.js +2 -18
  184. package/dist/security/adapters/linux-secret-service.js +7 -3
  185. package/dist/security/adapters/windows-credential-manager.js +6 -4
  186. package/dist/server/routes/specs.js +13 -1
  187. package/dist/storage/base-store.d.ts +1 -1
  188. package/dist/storage/base-store.js +1 -1
  189. package/dist/storage/feedback-remote.d.ts +2 -3
  190. package/dist/storage/feedback-remote.js +45 -31
  191. package/dist/storage/global-store.d.ts +1 -17
  192. package/dist/storage/global-store.js +1 -42
  193. package/dist/storage/index.d.ts +0 -2
  194. package/dist/storage/index.js +0 -2
  195. package/dist/storage/migrations/canonical-storage.js +124 -11
  196. package/dist/storage/runtime-db.d.ts +9 -0
  197. package/dist/storage/runtime-db.js +64 -8
  198. package/dist/storage/spec-store.d.ts +14 -2
  199. package/dist/storage/spec-store.js +104 -14
  200. package/dist/storage/status-store/atomic-status-write.d.ts +5 -0
  201. package/dist/storage/status-store/atomic-status-write.js +57 -0
  202. package/dist/storage/status-store/file-lock.js +30 -11
  203. package/dist/storage/status-store/self-healing.js +3 -3
  204. package/dist/storage/status-store/version-sync.d.ts +2 -1
  205. package/dist/storage/status-store/version-sync.js +35 -40
  206. package/dist/storage/usage-store.d.ts +1 -5
  207. package/dist/storage/usage-store.js +0 -35
  208. package/dist/tools/auto-update-handler.d.ts +3 -3
  209. package/dist/tools/auto-update-handler.js +3 -3
  210. package/dist/tools/challenge-spec/resilience-challenge-scenarios.d.ts +2 -1
  211. package/dist/tools/challenge-spec/resilience-challenge-scenarios.js +10 -7
  212. package/dist/tools/challenge-spec/scenario-collector.js +1 -1
  213. package/dist/tools/challenge-spec/scenarios-data.js +1 -1
  214. package/dist/tools/challenge-spec/scenarios-utils.d.ts +1 -1
  215. package/dist/tools/challenge-spec/scenarios-utils.js +35 -11
  216. package/dist/tools/challenge-spec-helpers.d.ts +10 -1
  217. package/dist/tools/challenge-spec-helpers.js +63 -22
  218. package/dist/tools/challenge-spec.js +23 -8
  219. package/dist/tools/check-readiness.js +38 -14
  220. package/dist/tools/configure-telemetry.js +30 -2
  221. package/dist/tools/create-spec/spec-builder.d.ts +7 -0
  222. package/dist/tools/create-spec/spec-builder.js +19 -15
  223. package/dist/tools/create-spec.d.ts +1 -0
  224. package/dist/tools/create-spec.js +584 -309
  225. package/dist/tools/git/branch-ops.d.ts +1 -1
  226. package/dist/tools/git/branch-ops.js +3 -2
  227. package/dist/tools/init-project/handler.js +10 -12
  228. package/dist/tools/init-project/host-assets-writer.js +26 -1
  229. package/dist/tools/init-project/lint-scaffolder.d.ts +3 -3
  230. package/dist/tools/init-project/migration-runner.d.ts +2 -4
  231. package/dist/tools/init-project/migration-runner.js +3 -2
  232. package/dist/tools/init-project/portable-index-reconciler.d.ts +4 -0
  233. package/dist/tools/init-project/portable-index-reconciler.js +14 -0
  234. package/dist/tools/init-project/result-builder.js +1 -3
  235. package/dist/tools/jobs/handlers.js +38 -6
  236. package/dist/tools/list-specs.js +5 -26
  237. package/dist/tools/merge-risk-handler.js +2 -2
  238. package/dist/tools/package-handoff.js +2 -0
  239. package/dist/tools/reconcile-spec.js +0 -27
  240. package/dist/tools/register-agent-squad-tools.js +2 -2
  241. package/dist/tools/register-platform-tools/design-stack-tools.js +11 -11
  242. package/dist/tools/register-platform-tools/lifecycle-infra-tools.js +7 -7
  243. package/dist/tools/register-sdd-tools.d.ts +1 -1
  244. package/dist/tools/register-sdd-tools.js +2 -29
  245. package/dist/tools/register-spec-tools/analysis-tools.js +8 -8
  246. package/dist/tools/register-spec-tools/core-spec-tools.js +29 -19
  247. package/dist/tools/safe-handler.d.ts +5 -13
  248. package/dist/tools/safe-handler.js +7 -23
  249. package/dist/tools/schemas/index.d.ts +1 -1
  250. package/dist/tools/schemas/index.js +1 -1
  251. package/dist/tools/schemas/output-schemas.d.ts +0 -23
  252. package/dist/tools/schemas/output-schemas.js +0 -28
  253. package/dist/tools/schemas/spec.d.ts +4 -0
  254. package/dist/tools/schemas/spec.js +3 -0
  255. package/dist/tools/schemas/validate-output-schema.d.ts +11 -0
  256. package/dist/tools/schemas/validate-output-schema.js +7 -0
  257. package/dist/tools/spec-prompt-handler.js +3 -3
  258. package/dist/tools/sync-spec-state-handler.d.ts +1 -1
  259. package/dist/tools/sync-spec-state-handler.js +50 -2
  260. package/dist/tools/tool-entry.d.ts +4 -4
  261. package/dist/tools/tool-entry.js +3 -3
  262. package/dist/tools/tool-registry/core-tools.js +31 -15
  263. package/dist/tools/tool-registry/group-infra.js +27 -110
  264. package/dist/tools/tool-registry/group-quality-compliance.js +26 -26
  265. package/dist/tools/tool-registry/inventory.d.ts +2 -0
  266. package/dist/tools/tool-registry/inventory.js +2 -0
  267. package/dist/tools/tool-registry-helpers.d.ts +3 -3
  268. package/dist/tools/tool-registry-helpers.js +3 -3
  269. package/dist/tools/tool-usage-report/registered-tools.d.ts +1 -1
  270. package/dist/tools/tool-usage-report/registered-tools.js +3 -15
  271. package/dist/tools/update-status/approval-gates.js +3 -0
  272. package/dist/tools/update-status/batch.d.ts +6 -2
  273. package/dist/tools/update-status/batch.js +58 -1
  274. package/dist/tools/update-status/dod-gates.d.ts +16 -1
  275. package/dist/tools/update-status/dod-gates.js +191 -1
  276. package/dist/tools/update-status/done-receipt-verifier.d.ts +8 -0
  277. package/dist/tools/update-status/done-receipt-verifier.js +75 -27
  278. package/dist/tools/update-status/evidence-gate.d.ts +4 -0
  279. package/dist/tools/update-status/evidence-gate.js +103 -3
  280. package/dist/tools/update-status/file-sync.d.ts +4 -3
  281. package/dist/tools/update-status/file-sync.js +57 -6
  282. package/dist/tools/update-status/index.d.ts +25 -1
  283. package/dist/tools/update-status/index.js +292 -78
  284. package/dist/tools/update-status/response-builder.js +3 -3
  285. package/dist/tools/update-status/side-effects.d.ts +2 -0
  286. package/dist/tools/update-status/side-effects.js +2 -2
  287. package/dist/tools/update-status/transition-guard.js +45 -16
  288. package/dist/tools/update-status-actions.d.ts +4 -2
  289. package/dist/tools/update-status-actions.js +16 -14
  290. package/dist/tools/usage-report.js +1 -16
  291. package/dist/tools/usage-stats.js +1 -18
  292. package/dist/tools/usage-tracking.d.ts +4 -0
  293. package/dist/tools/usage-tracking.js +20 -0
  294. package/dist/tools/validate-lint.d.ts +1 -0
  295. package/dist/tools/validate-lint.js +1 -1
  296. package/dist/tools/validate.d.ts +2 -1
  297. package/dist/tools/validate.js +114 -34
  298. package/dist/tools/workspace-dashboard-handler.js +38 -0
  299. package/dist/transports/http-transport.js +6 -8
  300. package/dist/transports/mcp-types.d.ts +0 -2
  301. package/dist/transports/session-context.js +1 -1
  302. package/dist/types/cascade-hooks.d.ts +1 -1
  303. package/dist/types/ci.d.ts +0 -4
  304. package/dist/types/clarification-token.d.ts +1 -1
  305. package/dist/types/claude-code-runtime.d.ts +0 -27
  306. package/dist/types/commercial-migration.d.ts +17 -0
  307. package/dist/types/commercial-migration.js +2 -0
  308. package/dist/types/common/primitives.d.ts +0 -2
  309. package/dist/types/core-bridge.d.ts +4 -10
  310. package/dist/types/dashboard.d.ts +3 -7
  311. package/dist/types/docs.d.ts +0 -1
  312. package/dist/types/durable-job.d.ts +4 -4
  313. package/dist/types/durable-validation.d.ts +100 -2
  314. package/dist/types/durable-validation.js +165 -1
  315. package/dist/types/errors/structured-error.d.ts +3 -3
  316. package/dist/types/estimation.d.ts +2 -0
  317. package/dist/types/evidence-autofill.d.ts +34 -0
  318. package/dist/types/evidence-autofill.js +2 -0
  319. package/dist/types/evidence-gates.d.ts +9 -1
  320. package/dist/types/execution.d.ts +2 -0
  321. package/dist/types/gemini-integration.d.ts +0 -11
  322. package/dist/types/handoff-artifacts.d.ts +41 -0
  323. package/dist/types/hooks-advanced.d.ts +0 -13
  324. package/dist/types/impact-detection.d.ts +2 -2
  325. package/dist/types/index.d.ts +3 -6
  326. package/dist/types/index.js +2 -5
  327. package/dist/types/kiro-integration.d.ts +0 -6
  328. package/dist/types/network-policy.d.ts +1 -1
  329. package/dist/types/project/lint-scaffolder.d.ts +1 -1
  330. package/dist/types/runtime-policy.d.ts +11 -0
  331. package/dist/types/session-safeguard.d.ts +0 -31
  332. package/dist/types/spec/canonical-repair.d.ts +81 -0
  333. package/dist/types/spec/canonical-repair.js +2 -0
  334. package/dist/types/spec/core.d.ts +20 -0
  335. package/dist/types/spec/index.d.ts +1 -0
  336. package/dist/types/spec/index.js +1 -0
  337. package/dist/types/spec/inputs.d.ts +35 -1
  338. package/dist/types/spec-format.d.ts +25 -1
  339. package/dist/types/telemetry.d.ts +4 -1
  340. package/dist/types/transition-log.d.ts +1 -1
  341. package/dist/types/transport.d.ts +0 -2
  342. package/dist/types/usage.d.ts +1 -36
  343. package/dist/types/usage.js +1 -1
  344. package/dist/types/validate-worker.d.ts +6 -0
  345. package/dist/types/validation-receipt.d.ts +1 -1
  346. package/dist/types/validation.d.ts +10 -4
  347. package/package.json +17 -12
  348. package/planu-native.json +1 -1
  349. package/planu-plugin.json +23 -40
  350. package/scripts/lib/pending-release-file.mjs +93 -0
  351. package/src/i18n/messages/en.json +0 -41
  352. package/src/i18n/messages/es.json +0 -41
  353. package/src/i18n/messages/pt.json +0 -41
  354. package/dist/cli/commands/activate.d.ts +0 -14
  355. package/dist/cli/commands/activate.js +0 -174
  356. package/dist/config/license-plans.json +0 -251
  357. package/dist/config/product-public.ts +0 -148
  358. package/dist/config/server-instructions.ts +0 -121
  359. package/dist/config/version-defaults.ts +0 -76
  360. package/dist/config/version.ts +0 -21
  361. package/dist/engine/ai-integration/gemini/settings-generator.d.ts +0 -4
  362. package/dist/engine/ai-integration/gemini/settings-generator.js +0 -195
  363. package/dist/engine/ai-integration/kiro/hooks-generator.d.ts +0 -6
  364. package/dist/engine/ai-integration/kiro/hooks-generator.js +0 -75
  365. package/dist/engine/hooks/full-spectrum-generator.d.ts +0 -32
  366. package/dist/engine/hooks/full-spectrum-generator.js +0 -117
  367. package/dist/engine/license-validator/config-loader.d.ts +0 -5
  368. package/dist/engine/license-validator/config-loader.js +0 -16
  369. package/dist/engine/license-validator/core.d.ts +0 -15
  370. package/dist/engine/license-validator/core.js +0 -151
  371. package/dist/engine/license-validator/fingerprint.d.ts +0 -3
  372. package/dist/engine/license-validator/fingerprint.js +0 -17
  373. package/dist/engine/license-validator/lemon-squeezy.d.ts +0 -5
  374. package/dist/engine/license-validator/lemon-squeezy.js +0 -55
  375. package/dist/engine/license-validator.d.ts +0 -5
  376. package/dist/engine/license-validator.js +0 -6
  377. package/dist/engine/product-intelligence/index.d.ts +0 -7
  378. package/dist/engine/product-intelligence/index.js +0 -211
  379. package/dist/engine/session/auto-save.d.ts +0 -18
  380. package/dist/engine/session/auto-save.js +0 -98
  381. package/dist/engine/session/context-snapshot.d.ts +0 -8
  382. package/dist/engine/session/context-snapshot.js +0 -49
  383. package/dist/engine/session/memory-sync.d.ts +0 -12
  384. package/dist/engine/session/memory-sync.js +0 -34
  385. package/dist/engine/session/session-diff.d.ts +0 -11
  386. package/dist/engine/session/session-diff.js +0 -42
  387. package/dist/engine/session/session-merge.d.ts +0 -12
  388. package/dist/engine/session/session-merge.js +0 -55
  389. package/dist/engine/session-safeguard/checkpoint-runner.d.ts +0 -4
  390. package/dist/engine/session-safeguard/checkpoint-runner.js +0 -70
  391. package/dist/engine/session-safeguard/learnings-buffer.d.ts +0 -15
  392. package/dist/engine/session-safeguard/learnings-buffer.js +0 -91
  393. package/dist/engine/session-safeguard/precompaction-drain.d.ts +0 -10
  394. package/dist/engine/session-safeguard/precompaction-drain.js +0 -82
  395. package/dist/engine/session-safeguard/unpushed-detector.d.ts +0 -7
  396. package/dist/engine/session-safeguard/unpushed-detector.js +0 -59
  397. package/dist/engine/spec-changelog/core.d.ts +0 -16
  398. package/dist/engine/spec-changelog/core.js +0 -176
  399. package/dist/engine/spec-changelog/diff.d.ts +0 -18
  400. package/dist/engine/spec-changelog/diff.js +0 -121
  401. package/dist/engine/spec-changelog/index.d.ts +0 -3
  402. package/dist/engine/spec-changelog/index.js +0 -4
  403. package/dist/engine/trial-engine.d.ts +0 -5
  404. package/dist/engine/trial-engine.js +0 -14
  405. package/dist/engine/usage-tracker/rate-check.d.ts +0 -7
  406. package/dist/engine/usage-tracker/rate-check.js +0 -18
  407. package/dist/engine/usage-tracker/rate-limiter.d.ts +0 -14
  408. package/dist/engine/usage-tracker/rate-limiter.js +0 -73
  409. package/dist/engine/usage-tracker/trial.d.ts +0 -27
  410. package/dist/engine/usage-tracker/trial.js +0 -49
  411. package/dist/engine/webhook/event-handlers.d.ts +0 -25
  412. package/dist/engine/webhook/event-handlers.js +0 -89
  413. package/dist/engine/webhook/index.d.ts +0 -4
  414. package/dist/engine/webhook/index.js +0 -5
  415. package/dist/engine/webhook/server.d.ts +0 -12
  416. package/dist/engine/webhook/server.js +0 -249
  417. package/dist/engine/webhook/signature.d.ts +0 -16
  418. package/dist/engine/webhook/signature.js +0 -49
  419. package/dist/storage/license-store.d.ts +0 -6
  420. package/dist/storage/license-store.js +0 -63
  421. package/dist/storage/session-store.d.ts +0 -20
  422. package/dist/storage/session-store.js +0 -136
  423. package/dist/tools/activate-license.d.ts +0 -6
  424. package/dist/tools/activate-license.js +0 -132
  425. package/dist/tools/checkpoint-handler.d.ts +0 -3
  426. package/dist/tools/checkpoint-handler.js +0 -130
  427. package/dist/tools/export-session.d.ts +0 -3
  428. package/dist/tools/export-session.js +0 -90
  429. package/dist/tools/license-gate.d.ts +0 -18
  430. package/dist/tools/license-gate.js +0 -222
  431. package/dist/tools/license-status.d.ts +0 -3
  432. package/dist/tools/license-status.js +0 -93
  433. package/dist/tools/list-sessions.d.ts +0 -3
  434. package/dist/tools/list-sessions.js +0 -46
  435. package/dist/tools/planu-session-checkpoint.d.ts +0 -6
  436. package/dist/tools/planu-session-checkpoint.js +0 -42
  437. package/dist/tools/restore-session.d.ts +0 -3
  438. package/dist/tools/restore-session.js +0 -71
  439. package/dist/tools/spec-history.d.ts +0 -3
  440. package/dist/tools/spec-history.js +0 -59
  441. package/dist/tools/webhook.d.ts +0 -6
  442. package/dist/tools/webhook.js +0 -150
  443. package/dist/types/changelog.d.ts +0 -49
  444. package/dist/types/changelog.js +0 -3
  445. package/dist/types/licensing.d.ts +0 -109
  446. package/dist/types/licensing.js +0 -4
  447. package/dist/types/product-intelligence.d.ts +0 -60
  448. package/dist/types/product-intelligence.js +0 -3
  449. package/dist/types/session.d.ts +0 -84
  450. package/dist/types/session.js +0 -3
  451. package/dist/types/webhook.d.ts +0 -62
  452. package/dist/types/webhook.js +0 -4
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "supportedNativeTargets": 8,
4
+ "gitIdentity": { "name": "planudev", "email": "hello@planu.dev" },
4
5
  "quality": { "branchCoverageMinimum": 88.1, "mutationScoreMinimum": 80 },
5
6
  "native": {
6
7
  "blockingCommands": [
@@ -13,12 +14,93 @@
13
14
  ],
14
15
  "performance": { "samples": 30, "warmups": 5, "p95RatioMaximum": 1.1, "rssP95RatioMaximum": 1.15 }
15
16
  },
17
+ "releaseOptimization": {
18
+ "rustNightlyToolchain": "nightly-2026-04-14",
19
+ "releaseSloSeconds": { "warm": 1500, "cold": 2100, "recovery": 180 },
20
+ "sourceReceiptInputPatterns": [
21
+ "(^|/)package\\.json$",
22
+ "(^|/)(pnpm-lock\\.yaml|Cargo\\.toml|Cargo\\.lock|rust-toolchain(?:\\.toml)?)$",
23
+ "^scripts/",
24
+ "^src/config/release-policy\\.json$"
25
+ ],
26
+ "sourceQualityPlan": [
27
+ { "id": "validate", "executable": "pnpm", "args": ["validate"], "timeoutSeconds": 1800 },
28
+ { "id": "strict", "executable": "pnpm", "args": ["check:strict"], "timeoutSeconds": 1800 },
29
+ { "id": "reliability", "executable": "pnpm", "args": ["check:reliability"], "timeoutSeconds": 1800 },
30
+ { "id": "dependency-freshness", "executable": "pnpm", "args": ["check:deps:fresh"], "timeoutSeconds": 1800 },
31
+ { "id": "coverage", "executable": "pnpm", "args": ["test:coverage"], "timeoutSeconds": 1800 },
32
+ { "id": "mutation", "executable": "pnpm", "args": ["audit:mutation"], "timeoutSeconds": 1800 },
33
+ {
34
+ "id": "rust-format",
35
+ "executable": "cargo",
36
+ "args": ["fmt", "--manifest-path", "rust/planu-core/Cargo.toml", "--all", "--", "--check"],
37
+ "timeoutSeconds": 1800
38
+ },
39
+ {
40
+ "id": "rust-clippy",
41
+ "executable": "cargo",
42
+ "args": [
43
+ "clippy",
44
+ "--manifest-path",
45
+ "rust/planu-core/Cargo.toml",
46
+ "--all-targets",
47
+ "--all-features",
48
+ "--",
49
+ "-D",
50
+ "warnings"
51
+ ],
52
+ "timeoutSeconds": 1800
53
+ },
54
+ {
55
+ "id": "rust-test",
56
+ "executable": "cargo",
57
+ "args": ["test", "--manifest-path", "rust/planu-core/Cargo.toml", "--all-features"],
58
+ "timeoutSeconds": 1800
59
+ },
60
+ {
61
+ "id": "rust-audit",
62
+ "executable": "cargo",
63
+ "args": ["audit", "--file", "rust/planu-core/Cargo.lock"],
64
+ "timeoutSeconds": 1800
65
+ },
66
+ {
67
+ "id": "rust-policy",
68
+ "executable": "cargo",
69
+ "args": [
70
+ "deny",
71
+ "--manifest-path",
72
+ "rust/planu-core/Cargo.toml",
73
+ "check",
74
+ "--config",
75
+ "rust/planu-core/deny.toml"
76
+ ],
77
+ "timeoutSeconds": 1800
78
+ },
79
+ {
80
+ "id": "rust-fuzz",
81
+ "executable": "cargo",
82
+ "args": [
83
+ "+nightly-2026-04-14",
84
+ "fuzz",
85
+ "run",
86
+ "public-inputs",
87
+ "--fuzz-dir",
88
+ "rust/planu-core/fuzz",
89
+ "--",
90
+ "-max_total_time=60"
91
+ ],
92
+ "timeoutSeconds": 1800
93
+ }
94
+ ],
95
+ "effectiveLinkers": [
96
+ { "id": "CC", "command": "clang" },
97
+ { "id": "CXX", "command": "clang++" }
98
+ ]
99
+ },
16
100
  "workflowActions": {
17
101
  "actions/checkout": "d23441a48e516b6c34aea4fa41551a30e30af803",
18
102
  "actions/setup-node": "249970729cb0ef3589644e2896645e5dc5ba9c38",
19
103
  "actions/upload-artifact": "b7c566a772e6b6bfb58ed0dc250532a479d7789f",
20
- "actions/download-artifact": "018cc2cf5baa6db3ef3c5f8a56943fffe632ef53",
21
- "actions/attest": "f7c74d28b9d84cb8768d0b8ca14a4bac6ef463e6",
22
104
  "pnpm/action-setup": "fc06bc1257f339d1d5d8b3a19a8cae5388b55320",
23
105
  "dtolnay/rust-toolchain": "2c7215f132e9ebf062739d9130488b56d53c060c",
24
106
  "Swatinem/rust-cache": "e18b497796c12c097a38f9edb9d0641fb99eee32"
@@ -28,11 +28,22 @@
28
28
  },
29
29
  "validation": {
30
30
  "defaultDeadlineMs": 1800000,
31
+ "durableLintTimeoutMs": 150000,
32
+ "complianceCommandTimeoutMs": 900000,
33
+ "noProgressTimeoutMs": 960000,
31
34
  "submissionLockWaitMs": 180,
32
35
  "submissionLockPollMs": 5,
33
36
  "workerLeaseMs": 30000,
34
37
  "workerHeartbeatMs": 1000,
35
- "workerConcurrency": 2
38
+ "workerConcurrency": 2,
39
+ "heartbeatStartupTimeoutMs": 5000,
40
+ "heartbeatShutdownTimeoutMs": 5000,
41
+ "heartbeatDatabaseBusyTimeoutMs": 250,
42
+ "freshnessLeaseTtlMs": 2100000,
43
+ "freshnessInvalidationCoalesceMs": 25,
44
+ "receiptPublicationDeadlineMs": 20000,
45
+ "receiptCheckpointLogMaxBytes": 1048576,
46
+ "receiptCheckpointResultMaxBytes": 4194304
36
47
  },
37
48
  "postCommit": {
38
49
  "defaultTaskTimeoutMs": 10000,
@@ -26,7 +26,7 @@ Use this skill at the start of a session, or when returning to a project after a
26
26
  1. **Check status** — calls `planu_status` to see all active specs
27
27
  2. **Find in-progress** — identifies specs with status `implementing` or `review`
28
28
  3. **Load context** — reads the spec's `spec.md` and any inline `## Technical`, `## Files`, and `## Progress` sections
29
- 4. **Restore session** — calls `restore_session` or `session_checkpoint` to recover the previous session state
29
+ 4. **Read checkpoint** — reads `planu/session-context.md` to recover the saved session context
30
30
  5. **Report** — summarizes exactly where to resume: which files were being modified, which criteria are still open
31
31
 
32
32
  ## What you get
@@ -48,4 +48,4 @@ User: "resume work" (or start a new session)
48
48
 
49
49
  - Run this skill at the start of every session when you have in-progress specs
50
50
  - If multiple specs are in-progress, the skill picks the most recently modified one
51
- - Use `session_checkpoint` at the end of each session to make resumption smoother
51
+ - Use `session_checkpoint` at the end of each session to save bounded context for the next one
@@ -14,7 +14,7 @@ export { generateLeanTechnicalContent } from '../engine/spec-format/lean-technic
14
14
  export { checkSpecReadiness } from '../engine/readiness-checker.js';
15
15
  export { scoreSpecQuality } from '../engine/spec-quality-scorer.js';
16
16
  export { validateSpecFormat } from './spec-validator.js';
17
- export type { ValidationResult, ValidationError, ValidationWarning, ValidateSpecFormatOptions, ValidationSource, } from '../types/validation.js';
17
+ export type { SpecValidationResult as ValidationResult, ValidationError, ValidationWarning, ValidateSpecFormatOptions, ValidationSource, } from '../types/validation.js';
18
18
  export { estimateSpec, inferDifficulty, calculateAccuracy } from '../engine/estimator.js';
19
19
  export { calculateEstimation } from '../engine/estimator.js';
20
20
  export { analyzeProject, quickAnalyze } from '../engine/analyzer.js';
@@ -1,12 +1,12 @@
1
1
  import type { Spec } from '../types/spec/core.js';
2
- import type { ValidationResult, ValidateSpecFormatOptions } from '../types/validation.js';
3
- export type { ValidationResult, ValidationError, ValidationWarning, ValidateSpecFormatOptions, ValidationSource, } from '../types/validation.js';
2
+ import type { SpecValidationResult, ValidateSpecFormatOptions } from '../types/validation.js';
3
+ export type { SpecValidationResult as ValidationResult, ValidationError, ValidationWarning, ValidateSpecFormatOptions, ValidationSource, } from '../types/validation.js';
4
4
  /**
5
5
  * Validate a spec's format against the unified spec.md schema (SPEC-630).
6
6
  * Reads spec.specPath from disk, runs structural + semantic checks, returns
7
- * a single ValidationResult.
7
+ * a single SpecValidationResult.
8
8
  *
9
9
  * Pure function: no global side effects, no MCP SDK dependency, no telemetry.
10
10
  */
11
- export declare function validateSpecFormat(spec: Pick<Spec, 'id' | 'specPath' | 'difficulty' | 'tags' | 'dependencies' | 'scope' | 'target' | 'type' | 'title'>, opts?: ValidateSpecFormatOptions): Promise<ValidationResult>;
11
+ export declare function validateSpecFormat(spec: Pick<Spec, 'id' | 'specPath' | 'difficulty' | 'tags' | 'dependencies' | 'scope' | 'target' | 'type' | 'title'>, opts?: ValidateSpecFormatOptions): Promise<SpecValidationResult>;
12
12
  //# sourceMappingURL=spec-validator.d.ts.map
@@ -6,6 +6,8 @@ import { readFile } from 'node:fs/promises';
6
6
  import { checkSpecReadiness } from '../engine/readiness-checker.js';
7
7
  import { scoreSpecQuality } from '../engine/spec-quality-scorer.js';
8
8
  import { parseFrontmatter, stripFrontmatter } from '../engine/frontmatter-parser.js';
9
+ import { extractNormalizedAcceptanceCriteria } from '../engine/spec-format/acceptance-criteria.js';
10
+ import { parseFrontmatterScenarios } from '../engine/validator/spec-compliance-runner.js';
9
11
  // ── Required frontmatter fields ──────────────────────────────────────────────
10
12
  const REQUIRED_FRONTMATTER_FIELDS = ['id', 'title', 'status', 'type', 'target', 'scope'];
11
13
  // ── Required body sections (SPEC-785 aligned with lean-spec-generator output) ─
@@ -133,11 +135,25 @@ function mapQualityToValidation(dimensions) {
133
135
  }
134
136
  return warnings;
135
137
  }
138
+ function countCanonicalBddScenarios(raw) {
139
+ const criteria = extractNormalizedAcceptanceCriteria(raw, { allowLegacyBodyFallback: false });
140
+ const bodyCriteria = criteria.filter((criterion) => criterion.source === 'body');
141
+ const bddCandidates = bodyCriteria.length > 0
142
+ ? bodyCriteria.map((criterion) => criterion.text)
143
+ : parseFrontmatterScenarios(raw).map((scenario) => scenario.steps?.map((step) => `${step.keyword} ${step.text}`).join(' ') ??
144
+ scenario.title);
145
+ return {
146
+ criteriaCount: criteria.length,
147
+ bddScenarioCount: bddCandidates.filter((criterion) => /\b(?:given|dado)\b/i.test(criterion) &&
148
+ /\b(?:when|cuando)\b/i.test(criterion) &&
149
+ /\b(?:then|entonces)\b/i.test(criterion)).length,
150
+ };
151
+ }
136
152
  // ── Public API ───────────────────────────────────────────────────────────────
137
153
  /**
138
154
  * Validate a spec's format against the unified spec.md schema (SPEC-630).
139
155
  * Reads spec.specPath from disk, runs structural + semantic checks, returns
140
- * a single ValidationResult.
156
+ * a single SpecValidationResult.
141
157
  *
142
158
  * Pure function: no global side effects, no MCP SDK dependency, no telemetry.
143
159
  */
@@ -168,22 +184,16 @@ export async function validateSpecFormat(spec, opts) {
168
184
  allWarnings.push(...unifiedResult.warnings);
169
185
  // ── 4. Readiness check ───────────────────────────────────────────────────
170
186
  let readinessScore = 0;
171
- let bddScenarioCount = 0;
172
- let criteriaCount = 0;
187
+ let readinessReport;
188
+ // The canonical metrics are independent from the readiness checker. Keep
189
+ // them truthful even when that best-effort checker throws.
190
+ const { criteriaCount, bddScenarioCount } = countCanonicalBddScenarios(raw);
173
191
  try {
174
192
  // Cast to Spec since checkSpecReadiness needs the full type but only reads
175
193
  // the fields available on the Pick type we receive.
176
- const report = await checkSpecReadiness(spec, readinessMode);
177
- readinessScore = report.score;
178
- // Count scenarios from frontmatter block
179
- bddScenarioCount = (raw.match(/^\s+-\s+title:/gm) ?? []).length;
180
- // Count criteria lines (checkbox or GIVEN/WHEN/THEN)
181
- const bodyLines = body.split('\n');
182
- criteriaCount = bodyLines.filter((l) => /^- \[[ x]\]/i.test(l.trim()) || /^- .*\bgiven\b.*\bwhen\b.*\bthen\b/i.test(l.trim())).length;
183
- if (criteriaCount === 0) {
184
- criteriaCount = bddScenarioCount;
185
- }
186
- const mapped = mapReadinessToValidation(report.issues.blockers, report.issues.warnings);
194
+ readinessReport = await checkSpecReadiness(spec, readinessMode);
195
+ readinessScore = readinessReport.score;
196
+ const mapped = mapReadinessToValidation(readinessReport.issues.blockers, readinessReport.issues.warnings);
187
197
  allErrors.push(...mapped.errors);
188
198
  allWarnings.push(...mapped.warnings);
189
199
  }
@@ -197,11 +207,12 @@ export async function validateSpecFormat(spec, opts) {
197
207
  return { valid, errors: allErrors, warnings: allWarnings };
198
208
  }
199
209
  // ── 5. Quality scoring ───────────────────────────────────────────────────
200
- let qualityScore = 0;
201
- let qualityGrade = 'F';
210
+ let qualityScore;
211
+ let qualityGrade;
212
+ let qualityReport;
202
213
  if (!skipQuality) {
203
214
  try {
204
- const qualityReport = await scoreSpecQuality(spec);
215
+ qualityReport = await scoreSpecQuality(spec);
205
216
  qualityScore = qualityReport.score.total;
206
217
  qualityGrade = qualityReport.score.grade;
207
218
  const qualityWarnings = mapQualityToValidation(qualityReport.dimensions);
@@ -226,11 +237,14 @@ export async function validateSpecFormat(spec, opts) {
226
237
  warnings: allWarnings,
227
238
  metrics: {
228
239
  readinessScore,
229
- qualityScore,
230
- qualityGrade,
231
240
  bddScenarioCount,
232
241
  criteriaCount,
242
+ ...(qualityScore === undefined || qualityGrade === undefined
243
+ ? {}
244
+ : { qualityScore, qualityGrade }),
233
245
  },
246
+ readinessReport,
247
+ qualityReport,
234
248
  };
235
249
  }
236
250
  //# sourceMappingURL=spec-validator.js.map
@@ -1,8 +1,26 @@
1
+ import { spawn } from 'node:child_process';
1
2
  import type { AbortableProcessOptions, AbortableProcessResult } from '../types/abortable-process.js';
3
+ export declare const PROCESS_TERMINATION_GRACE_MS = 75;
4
+ export declare const PROCESS_TREE_EXTINCTION_TIMEOUT_MS = 1000;
5
+ export declare const PROCESS_CHILD_CLOSE_TIMEOUT_MS = 1000;
6
+ /** Isolates platform-specific process supervision in unit tests without changing host state. */
7
+ export declare function configureAbortableProcessRunnerForTests(options?: {
8
+ platform?: NodeJS.Platform;
9
+ spawnProcess?: typeof spawn;
10
+ isProcessGroupAlive?: (pid: number) => boolean;
11
+ }): void;
12
+ export declare class ProcessTreeTerminationError extends Error {
13
+ readonly code = "PROCESS_TREE_TERMINATION_UNVERIFIED";
14
+ constructor();
15
+ }
16
+ export declare class ChildProcessCloseTimeoutError extends Error {
17
+ readonly code = "PROCESS_CLOSE_UNOBSERVED";
18
+ constructor();
19
+ }
2
20
  /**
3
21
  * Runs a validation command in its own process group. Cancellation and timeouts
4
- * terminate the complete group and settle only after the child has closed, so a
5
- * cancelled gate cannot keep writing output or publish late evidence.
22
+ * terminate the complete group and settle only after child closure or a bounded,
23
+ * typed close-observation failure, so a cancelled gate cannot publish late evidence.
6
24
  */
7
25
  export declare function runAbortableProcess(command: string, args: string[], options: AbortableProcessOptions): Promise<AbortableProcessResult>;
8
26
  //# sourceMappingURL=abortable-process-runner.d.ts.map