@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
@@ -7,40 +7,9 @@ export type AutopushResult = {
7
7
  reason: 'disabled' | 'nothing-to-push' | 'diverged' | 'no-upstream';
8
8
  message: string;
9
9
  };
10
- export interface UnpushedCommitInfo {
11
- count: number;
12
- branch: string;
13
- /** Hours since the oldest unpushed commit was authored. */
14
- oldestAgeHours: number;
15
- }
16
10
  export interface SessionContextFreshnessResult {
17
11
  stale: boolean;
18
12
  /** Age in days of session-context.md relative to newest spec.md (negative means session-context is newer). */
19
13
  ageDays: number;
20
14
  }
21
- export type LearningCategory = 'bug' | 'pattern' | 'decision' | 'estimate';
22
- export type LearningSource = 'autopilot' | 'user';
23
- export interface LearningEntry {
24
- timestamp: string;
25
- category: LearningCategory;
26
- content: string;
27
- source: LearningSource;
28
- }
29
- export interface LearningsBuffer {
30
- version: 1;
31
- entries: LearningEntry[];
32
- }
33
- export interface CheckpointRunnerOptions {
34
- projectPath: string;
35
- dryRun?: boolean;
36
- autopush?: boolean;
37
- autopushBranches?: string[];
38
- }
39
- export interface CheckpointResult {
40
- sessionContextRefreshed: boolean;
41
- learningsFlushed: number;
42
- unpushedCommits: UnpushedCommitInfo | null;
43
- pushed?: AutopushResult;
44
- humanSummary: string;
45
- }
46
15
  //# sourceMappingURL=session-safeguard.d.ts.map
@@ -0,0 +1,81 @@
1
+ import type { SpecStatus } from '../common/index.js';
2
+ import type { Spec } from './core.js';
3
+ export interface LifecycleOverride {
4
+ readonly canonicalUuid: string;
5
+ readonly retainedStatus: SpecStatus;
6
+ readonly reason: string;
7
+ }
8
+ export interface CanonicalRepairManifest {
9
+ readonly projectId: string;
10
+ readonly sourceDigest: string;
11
+ readonly sourceProjectAliases: readonly string[];
12
+ readonly canonicalSourceProjectAlias: string;
13
+ readonly foreignOwnerSingletonIds: readonly string[];
14
+ readonly lifecycleOverrides?: Readonly<Record<string, LifecycleOverride>>;
15
+ }
16
+ export interface CanonicalRepairPlan {
17
+ readonly changed: boolean;
18
+ readonly projectId: string;
19
+ readonly sourceDigest: string;
20
+ readonly manifestDigest: string;
21
+ readonly planDigest: string;
22
+ readonly resultDigest: string;
23
+ readonly duplicateGroups: number;
24
+ readonly foreignOwnerSingletons: number;
25
+ readonly fieldChanges: readonly Record<string, unknown>[];
26
+ readonly artifactId: string;
27
+ readonly resultBytes: Buffer;
28
+ readonly finalizationDegraded?: boolean;
29
+ }
30
+ export interface CanonicalRepairReview {
31
+ readonly reviewer: string;
32
+ readonly verdict: string;
33
+ readonly sourceDigest: string;
34
+ readonly manifestDigest: string;
35
+ readonly planDigest: string;
36
+ readonly resultDigest: string;
37
+ }
38
+ export interface RepairCanonicalStoreInput {
39
+ readonly projectId: string;
40
+ readonly manifestPath: string;
41
+ readonly dryRun?: boolean;
42
+ readonly reviewPath?: string;
43
+ readonly expectedSourceDigest?: string;
44
+ readonly expectedManifestDigest?: string;
45
+ readonly expectedPlanDigest?: string;
46
+ readonly expectedResultDigest?: string;
47
+ readonly authorizationReason?: string;
48
+ /** Test-only I/O seam; normal callers always use durable filesystem operations. */
49
+ readonly io?: CanonicalRepairIo;
50
+ }
51
+ export interface CanonicalRepairIo {
52
+ readonly readFile?: (path: string) => Promise<Buffer>;
53
+ readonly writeAtomic?: (path: string, bytes: Buffer | string) => Promise<void>;
54
+ readonly mkdir?: (path: string) => Promise<void>;
55
+ readonly withLock?: <T>(projectId: string, fn: () => Promise<T>) => Promise<T>;
56
+ }
57
+ export interface CanonicalRepairReceipt {
58
+ readonly schemaVersion: 1;
59
+ readonly state: 'prepared' | 'committed';
60
+ readonly projectId: string;
61
+ readonly reviewer: string;
62
+ readonly verdict: string;
63
+ readonly authorizationReason: string;
64
+ readonly sourceDigest: string;
65
+ readonly manifestDigest: string;
66
+ readonly planDigest: string;
67
+ readonly resultDigest: string;
68
+ readonly backupArtifactId: string;
69
+ readonly backupDigest: string;
70
+ readonly removedRows: readonly Spec[];
71
+ readonly singletonOwnershipChanges: readonly Record<string, unknown>[];
72
+ readonly retainedUuids: readonly Record<string, unknown>[];
73
+ readonly aliasesAdded: readonly Record<string, unknown>[];
74
+ readonly fieldChanges: readonly Record<string, unknown>[];
75
+ }
76
+ /** Internal parsed representation of the legacy or enveloped canonical store. */
77
+ export interface CanonicalRepairRawStore {
78
+ readonly envelope: boolean;
79
+ readonly rows: Spec[];
80
+ }
81
+ //# sourceMappingURL=canonical-repair.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=canonical-repair.js.map
@@ -15,8 +15,16 @@ export interface StatusHistoryEntry {
15
15
  readonly transitionId?: string;
16
16
  /** Optional work scheduled after the durable transition boundary. */
17
17
  readonly pendingBackgroundActions?: readonly string[];
18
+ /** Opaque binding to the repository root authorized to execute pending work. */
19
+ readonly transitionRootBinding?: string;
18
20
  /** Durable execution state for optional post-commit work. */
19
21
  readonly postCommitTasks?: readonly PostCommitTaskReceipt[];
22
+ /** SPEC-1232 request bound in the same canonical status mutation. */
23
+ readonly reconciliationRequestId?: string;
24
+ /** SPEC-1232 deterministic request/evidence binding digest. */
25
+ readonly reconciliationBindingDigest?: string;
26
+ /** Lifecycle trigger persisted with the canonical transition receipt. */
27
+ readonly trigger?: string;
20
28
  }
21
29
  export type PostCommitTaskStatus = 'pending' | 'running' | 'done' | 'failed';
22
30
  export interface PostCommitTaskReceipt {
@@ -41,6 +49,12 @@ export interface Spec {
41
49
  id: string;
42
50
  /** SPEC-601: Globally unique identifier for cross-project portability. */
43
51
  uuid?: string;
52
+ /**
53
+ * Historical canonical UUIDs retained after an administrative identity repair.
54
+ * An alias is an identity, not display metadata: it must be unique across the
55
+ * complete canonical store and may never duplicate a primary UUID.
56
+ */
57
+ uuidAliases?: string[];
44
58
  title: string;
45
59
  slug: string;
46
60
  feature?: string;
@@ -401,5 +415,11 @@ export interface SyncReport {
401
415
  specId: string;
402
416
  reason: string;
403
417
  }[];
418
+ /** SPEC-1351: Store entries whose spec.md is missing on disk, quarantined during this sync. */
419
+ ghosts?: {
420
+ specId: string;
421
+ specPath: string;
422
+ reason: string;
423
+ }[];
404
424
  }
405
425
  //# sourceMappingURL=core.d.ts.map
@@ -1,4 +1,5 @@
1
1
  export * from './core.js';
2
+ export * from './canonical-repair.js';
2
3
  export * from './clarification.js';
3
4
  export * from './inputs.js';
4
5
  export * from './agent.js';
@@ -1,6 +1,7 @@
1
1
  // Planu — Spec types barrel
2
2
  // Re-exports all spec types from domain sub-files.
3
3
  export * from './core.js';
4
+ export * from './canonical-repair.js';
4
5
  export * from './clarification.js';
5
6
  export * from './inputs.js';
6
7
  export * from './agent.js';
@@ -2,6 +2,9 @@ import type { SpecStatus, SpecType, SpecScope, SpecTarget, ToolResult } from '..
2
2
  import type { Actuals } from '../estimation.js';
3
3
  import type { ProjectKnowledge } from '../project.js';
4
4
  import type { Spec, ChecklistCategory, SpecDiagram, SpecSplitSuggestion, ReconcileChange } from './core.js';
5
+ export interface ReconciliationInvocationContext {
6
+ surface: 'local-mcp' | 'http' | 'dashboard' | 'direct' | 'unknown';
7
+ }
5
8
  export interface CreateSpecInput {
6
9
  title: string;
7
10
  description: string;
@@ -67,7 +70,8 @@ export interface UpdateStatusInput {
67
70
  arbitratedBy?: string;
68
71
  /** True when implementation drift requires reconcile_spec before done. */
69
72
  reconcileRequired?: boolean;
70
- actuals?: Actuals;
73
+ /** SPEC-1356: all fields optional — missing values are auto-filled by the done gate. */
74
+ actuals?: Partial<Actuals>;
71
75
  autoCreateBranch?: boolean;
72
76
  reviewNotes?: string;
73
77
  force?: boolean;
@@ -89,6 +93,16 @@ export interface UpdateStatusInput {
89
93
  * Must be ≥30 characters explaining why the spec is being reopened.
90
94
  */
91
95
  reason?: string;
96
+ /** Stable idempotency key for a trusted implementing → review reconciliation. */
97
+ reconciliationRequestId?: string;
98
+ /** Latest canonical implementing transition receipt expected by reconciliation. */
99
+ expectedImplementingTransitionId?: string;
100
+ /**
101
+ * SHA-256 of the exact validation-report.json bytes. Required as approved
102
+ * implementation evidence for done; for review it belongs only to the complete
103
+ * trusted local-MCP reconciliation tuple.
104
+ */
105
+ implementationReviewDigest?: string;
92
106
  /**
93
107
  * SPEC-769: Force-approve a spec that scored below 70 on the readiness gate.
94
108
  * When true, the transition proceeds and qualityWarnings[] is written to spec.md frontmatter.
@@ -200,6 +214,26 @@ export interface SpecMigrationDeps {
200
214
  listSpecs: (projectId: string) => Promise<Spec[]>;
201
215
  updateSpec: (projectId: string, specId: string, updates: Partial<Spec>) => Promise<Spec>;
202
216
  }
217
+ export type FilesystemImportFailureCode = 'READ_FAILED' | 'INVALID_CONTRACT' | 'CREATE_FAILED' | 'INCOMPATIBLE_IDENTITY';
218
+ export interface FilesystemImportFailure {
219
+ specId: string;
220
+ path: string;
221
+ code: FilesystemImportFailureCode;
222
+ }
223
+ export interface FilesystemImportResult {
224
+ importedCount: number;
225
+ importedSpecIds: string[];
226
+ failures: FilesystemImportFailure[];
227
+ errors: string[];
228
+ }
229
+ export interface FilesystemImportDeps {
230
+ listSpecs: (projectId: string) => Promise<Spec[]>;
231
+ createSpec: (projectId: string, spec: Spec) => Promise<Spec>;
232
+ getSpecFresh?: (projectId: string, specId: string) => Promise<Spec | null>;
233
+ }
234
+ export interface PortableIndexReconciliationResult extends FilesystemImportResult {
235
+ repositoryFilesChanged: string[];
236
+ }
203
237
  export type ChallengeSpecFocus = 'failures' | 'concurrency' | 'scale' | 'security' | 'data-consistency';
204
238
  export type { ScopeFilter, ScopeFilterConfig } from './core.js';
205
239
  export interface SplitAnalysisInput {
@@ -90,7 +90,7 @@ export interface StrictPlanuValidationOptions {
90
90
  }
91
91
  export interface UpdateStatusBatchInput {
92
92
  specIds: string[];
93
- status: SpecStatus;
93
+ status: Exclude<SpecStatus, 'done'>;
94
94
  projectId?: string;
95
95
  projectPath?: string;
96
96
  dryRun?: boolean;
@@ -152,4 +152,28 @@ export interface ImplementationContractIssue {
152
152
  code: 'contract_missing' | 'contract_subsection_missing' | 'contract_subsection_empty' | 'contract_filler' | 'contract_needs_decision' | 'contract_unmapped_criterion' | 'contract_manual_verification_vague';
153
153
  message: string;
154
154
  }
155
+ export type UnifiedSpecCandidateIssueCode = 'MISSING_REQUIRED_SECTION' | 'DUPLICATE_REQUIRED_SECTION' | 'MISORDERED_REQUIRED_SECTION' | 'EMBEDDED_REQUIRED_SECTION' | 'UNRESOLVED_CONTRACT_PLACEHOLDER' | 'MISSING_EXECUTABLE_CRITERIA' | 'UNGROUNDED_FILE_OWNERSHIP';
156
+ export interface UnifiedSpecCandidateIssue {
157
+ code: UnifiedSpecCandidateIssueCode;
158
+ message: string;
159
+ section?: string;
160
+ path?: string;
161
+ }
162
+ export interface UnifiedSpecCandidateValidation {
163
+ valid: boolean;
164
+ issues: UnifiedSpecCandidateIssue[];
165
+ }
166
+ export interface CanonicalUnifiedSpecInput {
167
+ leanSpecBody: string;
168
+ sourceDescription: string;
169
+ technicalBody: string;
170
+ implementationContract: string;
171
+ criteria: LeanCriterion[];
172
+ files: {
173
+ create: LeanFileEntry[];
174
+ modify: LeanFileEntry[];
175
+ test: LeanFileEntry[];
176
+ };
177
+ outOfScope: string[];
178
+ }
155
179
  //# sourceMappingURL=spec-format.d.ts.map
@@ -4,7 +4,7 @@ export interface GeoData {
4
4
  city: string;
5
5
  timezone: string;
6
6
  }
7
- export type TelemetryEventName = 'init_project' | 'create_spec' | 'tool_used' | 'tool_error' | 'tool_blocked' | 'trial_started'
7
+ export type TelemetryEventName = 'init_project' | 'create_spec' | 'tool_used' | 'tool_error' | 'tool_blocked'
8
8
  /** SPEC-705: Emitted when agent parallelism is downgraded due to host RAM constraints. */
9
9
  | 'ram_guardrail_downgrade'
10
10
  /** SPEC-727: Emitted when a panel is aborted because two specialists share the same (modelId, promptHash). */
@@ -31,7 +31,10 @@ export interface ConfigureTelemetryInput {
31
31
  }
32
32
  export interface TelemetryResult {
33
33
  action: string;
34
+ /** Current versioned consent, independent from runtime delivery configuration. */
34
35
  enabled: boolean;
36
+ /** A valid endpoint and a non-empty operator token are both available. */
37
+ configured: boolean;
35
38
  consentVersion?: number;
36
39
  message: string;
37
40
  }
@@ -1,5 +1,5 @@
1
1
  /** Event types recorded in the transition log. */
2
- export type TransitionEventType = 'transitioned_to_terminal' | 'frontmatter_resealed' | 'reopen' | 'terminal_drift_detected' | 'transition' | 'handoff.intake' | 'handoff.spec.lock' | 'handoff.review_feedback' | 'handoff.implementation-report' | 'handoff.validation-report' | 'retro_audit' | 'tdd_red_locked' | 'tdd_green_achieved' | 'status_reconciled' | 'housekeeping';
2
+ export type TransitionEventType = 'transitioned_to_terminal' | 'frontmatter_resealed' | 'reopen' | 'terminal_drift_detected' | 'transition' | 'handoff.intake' | 'handoff.spec.lock' | 'handoff.review_feedback' | 'handoff.implementation-report' | 'handoff.validation-report' | 'retro_audit' | 'tdd_red_locked' | 'tdd_green_achieved' | 'status_reconciled' | 'housekeeping' | 'ghost_spec_quarantined';
3
3
  /** SPEC-734: Outcome of a gate execution in a transition. */
4
4
  export type GateOutcome = 'pass' | 'fail' | 'skip' | 'forced';
5
5
  /** SPEC-734: Result of verifying the hash chain integrity of a project's transition log. */
@@ -1,7 +1,5 @@
1
1
  export type TransportType = 'stdio' | 'http';
2
2
  export interface HttpSessionContext {
3
- /** License key provided via HTTP header for this session */
4
- licenseKey?: string;
5
3
  /** MCP session ID */
6
4
  sessionId: string;
7
5
  /** Aborts when the active HTTP response loses its client connection. */
@@ -1,30 +1,15 @@
1
- import type { PricingTier } from './common/primitives.js';
2
1
  export interface UsageEvent {
3
2
  /** Tool name that was called */
4
3
  readonly toolName: string;
5
- /** Tier at the time of the call */
6
- readonly tier: PricingTier;
7
4
  /** ISO 8601 timestamp */
8
5
  readonly timestamp: string;
9
- /** Whether the call succeeded (not blocked by license gate) */
6
+ /** Whether the call succeeded */
10
7
  readonly success: boolean;
11
8
  }
12
9
  export interface UsageLog {
13
10
  /** Array of usage events */
14
11
  readonly events: readonly UsageEvent[];
15
12
  }
16
- export interface DailyUsage {
17
- /** Date string YYYY-MM-DD */
18
- readonly date: string;
19
- /** Number of tool calls today */
20
- readonly callCount: number;
21
- /** ISO 8601 timestamp of the last tool call */
22
- readonly lastCallAt: string;
23
- }
24
- export interface TrialState {
25
- /** ISO 8601 timestamp of the first Planu execution ever */
26
- readonly firstRunAt: string;
27
- }
28
13
  export interface ToolHealthEntry {
29
14
  readonly name: string;
30
15
  readonly totalCalls: number;
@@ -38,8 +23,6 @@ export interface UsageStats {
38
23
  readonly totalCalls: number;
39
24
  /** Calls grouped by tool name */
40
25
  readonly callsByTool: Record<string, number>;
41
- /** Calls grouped by tier */
42
- readonly callsByTier: Record<string, number>;
43
26
  /** Top N most-used tools */
44
27
  readonly topTools: readonly {
45
28
  readonly name: string;
@@ -49,29 +32,11 @@ export interface UsageStats {
49
32
  readonly activeSpecs: number;
50
33
  /** Number of active projects */
51
34
  readonly activeProjects: number;
52
- /** Current tier */
53
- readonly currentTier: PricingTier;
54
- /** Days since first run */
55
- readonly daysSinceFirstRun: number;
56
- /** Whether in trial period */
57
- readonly isTrialActive: boolean;
58
- /** Remaining daily calls (Starter only, -1 for unlimited) */
59
- readonly remainingDailyCalls: number;
60
35
  /** Per-tool health breakdown — sorted by error rate descending (most broken first) */
61
36
  readonly toolHealthBreakdown: readonly ToolHealthEntry[];
62
37
  /** Tool names with 0 calls in the reporting period (candidates for removal) */
63
38
  readonly deadTools: readonly string[];
64
39
  }
65
- export interface RateLimitResult {
66
- /** Whether the call is allowed */
67
- readonly allowed: boolean;
68
- /** If not allowed, the reason */
69
- readonly reason: 'daily_limit' | 'cooldown' | null;
70
- /** Human-readable message */
71
- readonly message: string;
72
- /** Remaining daily calls (-1 = unlimited) */
73
- readonly remainingCalls: number;
74
- }
75
40
  export interface UsageStatsInput {
76
41
  readonly period?: '7d' | '30d' | 'all';
77
42
  }
@@ -1,4 +1,4 @@
1
1
  // types/usage.ts — Usage tracking and analytics types for Planu SDD MCP Server.
2
- // Supports local telemetry, trial enforcement, rate limiting, and usage reporting.
2
+ // Supports neutral local telemetry and usage reporting.
3
3
  export {};
4
4
  //# sourceMappingURL=usage.js.map
@@ -37,6 +37,12 @@ export interface ValidateWorkerProgress {
37
37
  readonly phase: string;
38
38
  readonly command: string;
39
39
  readonly durationMs: number;
40
+ /** Number of validation gates that have reached a terminal state. */
41
+ readonly completedGates: number;
42
+ /** Stable gate count for the current validation run. */
43
+ readonly totalGates: number;
44
+ /** ISO timestamp of the most recent semantic progress transition. */
45
+ readonly lastProgressAt: string;
40
46
  readonly filesScanned?: number;
41
47
  readonly status: 'running' | 'passed' | 'failed' | 'cancelled';
42
48
  readonly remediation?: string;
@@ -93,7 +93,7 @@ export interface ValidationReceiptPersistence {
93
93
  readCurrent(projectId: string, specId: string): Promise<ValidationReceipt | undefined>;
94
94
  readCurrentBindings(projectId: string, specId: string): Promise<ValidationReceiptBindings | undefined>;
95
95
  projectCurrentBindings(bindings: ValidationReceiptBindings): Promise<void>;
96
- invalidateCurrentBindings(projectId: string, specId: string): Promise<void>;
96
+ invalidateCurrentBindings(projectId: string, specId: string, receiptId?: string): Promise<void>;
97
97
  readLog(logDigest: string): Promise<Buffer | undefined>;
98
98
  logPath(logDigest: string): string;
99
99
  }
@@ -1,3 +1,5 @@
1
+ import type { ReadinessReport } from './readiness.js';
2
+ import type { SpecQualityReport } from './spec-quality.js';
1
3
  /**
2
4
  * Origin validator that produced the issue.
3
5
  */
@@ -18,24 +20,28 @@ export interface ValidationError {
18
20
  }
19
21
  /**
20
22
  * A non-blocking issue. Same shape as ValidationError; severity is implicit
21
- * from array placement in ValidationResult.
23
+ * from array placement in SpecValidationResult.
22
24
  */
23
25
  export type ValidationWarning = ValidationError;
24
26
  /**
25
27
  * Unified result returned by validateSpecFormat().
26
28
  */
27
- export interface ValidationResult {
29
+ export interface SpecValidationResult {
28
30
  valid: boolean;
29
31
  errors: ValidationError[];
30
32
  warnings: ValidationWarning[];
31
33
  /** Optional summary metrics for callers that want them without re-running scorers. */
32
34
  metrics?: {
33
35
  readinessScore: number;
34
- qualityScore: number;
35
- qualityGrade: 'A' | 'B' | 'C' | 'D' | 'F';
36
+ qualityScore?: number;
37
+ qualityGrade?: 'A' | 'B' | 'C' | 'D' | 'F';
36
38
  bddScenarioCount: number;
37
39
  criteriaCount: number;
38
40
  };
41
+ /** Readiness evidence generated during this validation invocation. */
42
+ readinessReport?: ReadinessReport;
43
+ /** Quality evidence generated during this validation invocation, when available. */
44
+ qualityReport?: SpecQualityReport;
39
45
  }
40
46
  /**
41
47
  * Options for validateSpecFormat().
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@planu/cli",
3
- "version": "4.14.1",
3
+ "version": "5.1.1",
4
4
  "description": "Planu — MCP Server for Spec Driven Development with native Rust acceleration for hot paths. Cross-platform (Linux/macOS/Windows, x64/arm64, glibc/musl).",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -12,6 +12,7 @@
12
12
  "dist/",
13
13
  "!dist/**/*.map",
14
14
  "!dist/engine/*.node",
15
+ "scripts/lib/pending-release-file.mjs",
15
16
  "src/i18n/messages/",
16
17
  "planu-native.json",
17
18
  "planu-plugin.json",
@@ -34,14 +35,14 @@
34
35
  "packageName": "@planu/core"
35
36
  },
36
37
  "optionalDependencies": {
37
- "@planu/core-darwin-arm64": "4.14.1",
38
- "@planu/core-darwin-x64": "4.14.1",
39
- "@planu/core-linux-arm64-gnu": "4.14.1",
40
- "@planu/core-linux-arm64-musl": "4.14.1",
41
- "@planu/core-linux-x64-gnu": "4.14.1",
42
- "@planu/core-linux-x64-musl": "4.14.1",
43
- "@planu/core-win32-arm64-msvc": "4.14.1",
44
- "@planu/core-win32-x64-msvc": "4.14.1"
38
+ "@planu/core-darwin-arm64": "5.1.1",
39
+ "@planu/core-darwin-x64": "5.1.1",
40
+ "@planu/core-linux-arm64-gnu": "5.1.1",
41
+ "@planu/core-linux-arm64-musl": "5.1.1",
42
+ "@planu/core-linux-x64-gnu": "5.1.1",
43
+ "@planu/core-linux-x64-musl": "5.1.1",
44
+ "@planu/core-win32-arm64-msvc": "5.1.1",
45
+ "@planu/core-win32-x64-msvc": "5.1.1"
45
46
  },
46
47
  "engines": {
47
48
  "node": ">=24.0.0"
@@ -53,6 +54,9 @@
53
54
  "build:rust:check-tools": "bash scripts/build-rust-local.sh --check-tools",
54
55
  "check:native-version-parity": "node scripts/check-native-version-parity.mjs",
55
56
  "check:release-authorities": "node scripts/check-release-authorities.mjs",
57
+ "check:commercial-surfaces": "node scripts/check-commercial-surfaces.mjs",
58
+ "check:tool-registration": "bash scripts/check-tool-registration.sh",
59
+ "generate:host-tool-registry": "node scripts/generate-host-tool-registry.mjs",
56
60
  "release:local": "bash scripts/release-local.sh",
57
61
  "release:local:all": "bash scripts/release-local.sh --all",
58
62
  "release:publish": "bash scripts/release-local.sh --all --publish",
@@ -73,6 +77,7 @@
73
77
  "test": "vitest run",
74
78
  "test:watch": "vitest",
75
79
  "test:coverage": "vitest run --coverage --testTimeout=60000 --maxWorkers=4",
80
+ "test:release-gate": "vitest run --exclude 'tests/integration/**'",
76
81
  "test:integration": "vitest run tests/integration",
77
82
  "test:website:unit": "vitest run tests/website tests/scripts/generate-website-proof.test.ts tests/scripts/website-tool-counts.test.ts",
78
83
  "test:website:browser": "playwright test --config playwright.website.config.ts",
@@ -81,8 +86,8 @@
81
86
  "native:project-graph:e2e": "PLANU_NATIVE_E2E=1 vitest run tests/integration/native-project-graph-e2e.test.ts",
82
87
  "native:project-graph:benchmark": "node scripts/benchmark-native-performance.mjs --operation project_graph_query --samples 30 --warmups 5 --project-path . --spec-id SPEC-1119 --json",
83
88
  "benchmark:execution-kernel": "pnpm build && node scripts/benchmark-execution-kernel.mjs",
84
- "check": "pnpm typecheck && pnpm lint && pnpm format:check && pnpm check:release-authorities && pnpm check:public-privacy && pnpm check:website-proof && pnpm check:donation-assets && pnpm check:website-public-assets",
85
- "check:strict": "pnpm check && pnpm check:environment-schema && pnpm audit:hardcodes && pnpm audit:deadcode && pnpm audit:circular && pnpm audit:types && pnpm audit:security && pnpm audit:licenses && pnpm audit:i18n",
89
+ "check": "pnpm typecheck && pnpm lint && pnpm format:check && pnpm check:release-authorities && pnpm check:commercial-surfaces && pnpm check:tool-registration && pnpm check:public-privacy && pnpm check:website-proof && pnpm check:donation-assets && pnpm check:website-public-assets",
90
+ "check:strict": "pnpm check && pnpm generate:host-tool-registry -- --check && pnpm check:native-version-parity && pnpm check:environment-schema && pnpm audit:hardcodes && pnpm audit:deadcode && pnpm audit:circular && pnpm audit:types && pnpm audit:security && pnpm audit:licenses && pnpm audit:i18n",
86
91
  "check:reliability": "node scripts/check-reliability-policies.mjs",
87
92
  "check:environment-schema": "node scripts/check-environment-schema.mjs",
88
93
  "test:contracts": "vitest run tests/contracts tests/integration/package-consumer-hono.test.ts",
@@ -113,7 +118,7 @@
113
118
  "prepublishOnly": "bash scripts/prepublish-guard.sh",
114
119
  "prepack": "pnpm build:ts && pnpm package:size",
115
120
  "test:debug": "vitest run --inspect-brk --single-thread",
116
- "validate": "pnpm typecheck && pnpm verify:typescript-migration && pnpm lint && pnpm format:check && pnpm test",
121
+ "validate": "pnpm build && pnpm typecheck && pnpm verify:typescript-migration && pnpm lint && pnpm format:check && pnpm test:release-gate",
117
122
  "docker:build": "docker build -t planu .",
118
123
  "docker:run": "docker compose up",
119
124
  "publish:blog": "node scripts/publish-blog.mjs",
package/planu-native.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dev.planu.native",
3
3
  "displayName": "Planu Native Lightweight Surface",
4
- "version": "4.14.1",
4
+ "version": "5.1.1",
5
5
  "packageName": "@planu/cli",
6
6
  "modes": {
7
7
  "lightweight": {
package/planu-plugin.json CHANGED
@@ -2,66 +2,49 @@
2
2
  "name": "dev.planu.cli",
3
3
  "displayName": "Planu — Spec Driven Development",
4
4
  "description": "Manage software specs, estimations, and autonomous SDD workflows. Language-agnostic MCP server for Claude Code.",
5
- "version": "4.14.1",
5
+ "version": "5.1.1",
6
6
  "icon": "assets/plugin/icon.svg",
7
- "command": [
8
- "npx",
9
- "@planu/cli@latest"
10
- ],
7
+ "command": ["npx", "@planu/cli@latest"],
11
8
  "packageName": "@planu/cli",
12
9
  "capabilities": {
13
10
  "tools": [
14
11
  "planu_status",
12
+ "session_checkpoint",
15
13
  "facilitate",
16
14
  "init_project",
17
15
  "clarify_requirements",
18
16
  "create_spec",
17
+ "list_specs",
19
18
  "challenge_spec",
20
19
  "check_readiness",
21
20
  "update_status",
21
+ "update_status_batch",
22
22
  "package_handoff",
23
23
  "validate",
24
+ "get_job",
25
+ "watch_job",
26
+ "cancel_job",
27
+ "restart_job",
24
28
  "reconcile_spec",
25
29
  "create_rule",
26
30
  "create_skill",
27
- "skill_search"
31
+ "skill_search",
32
+ "configure_code_graph",
33
+ "code_graph_status",
34
+ "submit_feedback",
35
+ "triage_feedback",
36
+ "resolve_feedback",
37
+ "sync_feedback",
38
+ "feedback_status"
28
39
  ],
29
- "resources": [
30
- "planu://specs/list",
31
- "planu://specs/{id}",
32
- "planu://project/status",
33
- "planu://roadmap"
34
- ],
35
- "prompts": [
36
- "create-spec-from-idea",
37
- "review-spec-readiness",
38
- "generate-implementation-plan"
39
- ],
40
- "subagents": [
41
- "sdd-orchestrator",
42
- "spec-challenger",
43
- "test-generator"
44
- ]
45
- },
46
- "compatibility": {
47
- "minimumHostVersion": "1.0.0",
48
- "requiredFeatures": [
49
- "mcp-tools",
50
- "file-editing"
51
- ]
40
+ "resources": ["planu://specs/list", "planu://specs/{id}", "planu://project/status", "planu://roadmap"],
41
+ "prompts": ["create-spec-from-idea", "review-spec-readiness", "generate-implementation-plan"],
42
+ "subagents": ["sdd-orchestrator", "spec-challenger", "test-generator"]
52
43
  },
44
+ "compatibility": { "minimumHostVersion": "1.0.0", "requiredFeatures": ["mcp-tools", "file-editing"] },
53
45
  "repository": "https://github.com/planu-dev/planu",
54
46
  "author": "Planu",
55
- "license": "MIT",
47
+ "license": "SEE LICENSE IN LICENSE",
56
48
  "homepage": "https://planu.dev",
57
- "keywords": [
58
- "sdd",
59
- "spec-driven-development",
60
- "mcp",
61
- "specs",
62
- "planning",
63
- "ai",
64
- "bdd",
65
- "tdd"
66
- ]
49
+ "keywords": ["sdd", "spec-driven-development", "mcp", "specs", "planning", "ai", "bdd", "tdd"]
67
50
  }