@planu/cli 4.14.1 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (424) hide show
  1. package/CHANGELOG.md +35 -1
  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 +2 -2
  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 +1 -1
  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 +10 -1
  46. package/dist/engine/evidence-gates/artifact-reader.js +115 -2
  47. package/dist/engine/evidence-gates/lifecycle-gate.js +4 -3
  48. package/dist/engine/evidence-gates/reconciliation-freshness.d.ts +11 -0
  49. package/dist/engine/evidence-gates/reconciliation-freshness.js +72 -0
  50. package/dist/engine/evidence-index/done-drift.d.ts +1 -1
  51. package/dist/engine/evidence-index/done-drift.js +40 -18
  52. package/dist/engine/execution/context.js +3 -0
  53. package/dist/engine/execution/durable-job-heartbeat-runtime.d.ts +4 -0
  54. package/dist/engine/execution/durable-job-heartbeat-runtime.js +400 -0
  55. package/dist/engine/execution/job-runtime.d.ts +30 -0
  56. package/dist/engine/execution/job-runtime.js +114 -6
  57. package/dist/engine/execution/public-job-sanitizer.d.ts +4 -0
  58. package/dist/engine/execution/public-job-sanitizer.js +31 -0
  59. package/dist/engine/execution/validate-job-executor.d.ts +12 -1
  60. package/dist/engine/execution/validate-job-executor.js +549 -86
  61. package/dist/engine/execution/validate-job-payload.js +107 -50
  62. package/dist/engine/execution/validate-job-recovery.js +1 -1
  63. package/dist/engine/execution/validate-worker-runtime.d.ts +5 -0
  64. package/dist/engine/execution/validate-worker-runtime.js +90 -2
  65. package/dist/engine/execution/validate-worker-thread.js +17 -24
  66. package/dist/engine/handoff-artifacts/schemas.d.ts +2 -1
  67. package/dist/engine/handoff-artifacts/schemas.js +33 -0
  68. package/dist/engine/handoff-packager.d.ts +19 -0
  69. package/dist/engine/handoff-packager.js +415 -13
  70. package/dist/engine/hooks/effort-configurator.js +1 -1
  71. package/dist/engine/impact-detector/test-break-predictor.js +3 -3
  72. package/dist/engine/impact-detector/tool-registration.js +1 -1
  73. package/dist/engine/implementation-contract/renderer.js +23 -8
  74. package/dist/engine/lifecycle-reconciliation-io.d.ts +11 -0
  75. package/dist/engine/lifecycle-reconciliation-io.js +180 -0
  76. package/dist/engine/lifecycle-reconciliation.d.ts +16 -0
  77. package/dist/engine/lifecycle-reconciliation.js +406 -0
  78. package/dist/engine/local-first/tool-classification.js +2 -0
  79. package/dist/engine/macos-keychain-native-port.d.ts +5 -0
  80. package/dist/engine/macos-keychain-native-port.js +19 -7
  81. package/dist/engine/migrations/remove-commercial-state.d.ts +3 -0
  82. package/dist/engine/migrations/remove-commercial-state.js +343 -0
  83. package/dist/engine/network-policy.js +1 -0
  84. package/dist/engine/planu-core.darwin-arm64.node.manifest.json +7 -7
  85. package/dist/engine/planu-core.darwin-arm64.node.sbom.json +10 -10
  86. package/dist/engine/planu-core.darwin-x64.node.manifest.json +7 -7
  87. package/dist/engine/planu-core.darwin-x64.node.sbom.json +10 -10
  88. package/dist/engine/planu-core.linux-arm64-gnu.node.manifest.json +7 -7
  89. package/dist/engine/planu-core.linux-arm64-gnu.node.sbom.json +10 -10
  90. package/dist/engine/planu-core.linux-arm64-musl.node.manifest.json +7 -7
  91. package/dist/engine/planu-core.linux-arm64-musl.node.sbom.json +10 -10
  92. package/dist/engine/planu-core.linux-x64-gnu.node.manifest.json +7 -7
  93. package/dist/engine/planu-core.linux-x64-gnu.node.sbom.json +10 -10
  94. package/dist/engine/planu-core.linux-x64-musl.node.manifest.json +7 -7
  95. package/dist/engine/planu-core.linux-x64-musl.node.sbom.json +10 -10
  96. package/dist/engine/planu-core.win32-arm64-msvc.node.manifest.json +7 -7
  97. package/dist/engine/planu-core.win32-arm64-msvc.node.sbom.json +10 -10
  98. package/dist/engine/planu-core.win32-x64-msvc.node.manifest.json +7 -7
  99. package/dist/engine/planu-core.win32-x64-msvc.node.sbom.json +10 -10
  100. package/dist/engine/readiness-checker.d.ts +1 -16
  101. package/dist/engine/readiness-checker.js +27 -88
  102. package/dist/engine/runtime-policy.d.ts +2 -0
  103. package/dist/engine/runtime-policy.js +42 -5
  104. package/dist/engine/runtime-security/rate-limiter.js +0 -1
  105. package/dist/engine/safety/contained-project-file.d.ts +3 -0
  106. package/dist/engine/safety/contained-project-file.js +23 -0
  107. package/dist/engine/scope-boundaries/contradiction-checker.js +63 -1
  108. package/dist/engine/scope-boundaries/scope-validator.js +45 -7
  109. package/dist/engine/session/checkpoint-writer.js +0 -9
  110. package/dist/engine/spec-format/acceptance-criteria.d.ts +6 -2
  111. package/dist/engine/spec-format/acceptance-criteria.js +77 -18
  112. package/dist/engine/spec-format/markdown-sections.d.ts +14 -0
  113. package/dist/engine/spec-format/markdown-sections.js +105 -0
  114. package/dist/engine/spec-format/read-technical-section.js +33 -5
  115. package/dist/engine/spec-format/technical-md-populator.js +3 -2
  116. package/dist/engine/spec-format/unified-spec-builder.d.ts +7 -0
  117. package/dist/engine/spec-format/unified-spec-builder.js +202 -0
  118. package/dist/engine/spec-migrator/canonical-deduplicator.d.ts +18 -0
  119. package/dist/engine/spec-migrator/canonical-deduplicator.js +479 -0
  120. package/dist/engine/spec-migrator/filesystem-import.d.ts +4 -8
  121. package/dist/engine/spec-migrator/filesystem-import.js +121 -14
  122. package/dist/engine/spec-migrator/frontmatter-parser.js +32 -15
  123. package/dist/engine/spec-migrator/index.d.ts +1 -0
  124. package/dist/engine/spec-migrator/index.js +1 -0
  125. package/dist/engine/spec-state-machine/transition-spec.d.ts +6 -1
  126. package/dist/engine/spec-state-machine/transition-spec.js +10 -1
  127. package/dist/engine/technical-enricher/index.js +16 -8
  128. package/dist/engine/technical-enricher/render-enriched.d.ts +1 -0
  129. package/dist/engine/technical-enricher/render-enriched.js +42 -14
  130. package/dist/engine/telemetry/health-checker.js +53 -17
  131. package/dist/engine/telemetry/telemetry-client.js +26 -8
  132. package/dist/engine/text-signal-boundaries.d.ts +2 -0
  133. package/dist/engine/text-signal-boundaries.js +25 -2
  134. package/dist/engine/time/relative-date.d.ts +3 -0
  135. package/dist/engine/time/relative-date.js +16 -0
  136. package/dist/engine/timing/budget.d.ts +11 -0
  137. package/dist/engine/timing/budget.js +27 -9
  138. package/dist/engine/token-optimizer/analytics.d.ts +1 -1
  139. package/dist/engine/token-optimizer/analytics.js +5 -6
  140. package/dist/engine/usage-tracker/core.d.ts +2 -2
  141. package/dist/engine/usage-tracker/core.js +1 -2
  142. package/dist/engine/usage-tracker/index.d.ts +0 -3
  143. package/dist/engine/usage-tracker/index.js +0 -3
  144. package/dist/engine/usage-tracker/stats.d.ts +2 -2
  145. package/dist/engine/usage-tracker/stats.js +1 -28
  146. package/dist/engine/validation/durable-validation.d.ts +1 -1
  147. package/dist/engine/validation/durable-validation.js +3 -82
  148. package/dist/engine/validation/validation-freshness.d.ts +11 -1
  149. package/dist/engine/validation/validation-freshness.js +231 -91
  150. package/dist/engine/validation/validation-receipt.d.ts +9 -6
  151. package/dist/engine/validation/validation-receipt.js +84 -24
  152. package/dist/engine/validation/validation-source-digest.d.ts +2 -0
  153. package/dist/engine/validation/validation-source-digest.js +86 -0
  154. package/dist/engine/validation/validation-submission.d.ts +5 -4
  155. package/dist/engine/validation/validation-submission.js +25 -11
  156. package/dist/engine/validation/validation-worktree.d.ts +21 -0
  157. package/dist/engine/validation/validation-worktree.js +260 -0
  158. package/dist/engine/validation-impact-planner.d.ts +14 -2
  159. package/dist/engine/validation-impact-planner.js +0 -3
  160. package/dist/engine/validator/dor-dod.d.ts +1 -0
  161. package/dist/engine/validator/dor-dod.js +5 -3
  162. package/dist/engine/validator/extractors.d.ts +1 -5
  163. package/dist/engine/validator/extractors.js +24 -69
  164. package/dist/engine/validator/spec-compliance-runner.d.ts +12 -24
  165. package/dist/engine/validator/spec-compliance-runner.js +429 -211
  166. package/dist/engine/validator.js +35 -22
  167. package/dist/index.js +4 -16
  168. package/dist/resources/usage-stats-resource.js +2 -18
  169. package/dist/security/adapters/linux-secret-service.js +7 -3
  170. package/dist/security/adapters/windows-credential-manager.js +6 -4
  171. package/dist/server/routes/specs.js +10 -0
  172. package/dist/storage/base-store.d.ts +1 -1
  173. package/dist/storage/base-store.js +1 -1
  174. package/dist/storage/feedback-remote.d.ts +2 -3
  175. package/dist/storage/feedback-remote.js +45 -31
  176. package/dist/storage/global-store.d.ts +1 -17
  177. package/dist/storage/global-store.js +1 -42
  178. package/dist/storage/index.d.ts +0 -2
  179. package/dist/storage/index.js +0 -2
  180. package/dist/storage/migrations/canonical-storage.js +124 -11
  181. package/dist/storage/runtime-db.d.ts +9 -0
  182. package/dist/storage/runtime-db.js +64 -8
  183. package/dist/storage/spec-store.d.ts +14 -2
  184. package/dist/storage/spec-store.js +104 -14
  185. package/dist/storage/status-store/atomic-status-write.d.ts +5 -0
  186. package/dist/storage/status-store/atomic-status-write.js +57 -0
  187. package/dist/storage/status-store/file-lock.js +30 -11
  188. package/dist/storage/status-store/self-healing.js +3 -3
  189. package/dist/storage/status-store/version-sync.d.ts +2 -1
  190. package/dist/storage/status-store/version-sync.js +35 -40
  191. package/dist/storage/usage-store.d.ts +1 -5
  192. package/dist/storage/usage-store.js +0 -35
  193. package/dist/tools/auto-update-handler.d.ts +3 -3
  194. package/dist/tools/auto-update-handler.js +3 -3
  195. package/dist/tools/challenge-spec/resilience-challenge-scenarios.d.ts +2 -1
  196. package/dist/tools/challenge-spec/resilience-challenge-scenarios.js +10 -7
  197. package/dist/tools/challenge-spec/scenario-collector.js +1 -1
  198. package/dist/tools/challenge-spec/scenarios-data.js +1 -1
  199. package/dist/tools/challenge-spec/scenarios-utils.d.ts +1 -1
  200. package/dist/tools/challenge-spec/scenarios-utils.js +35 -11
  201. package/dist/tools/challenge-spec.js +5 -5
  202. package/dist/tools/check-readiness.js +1 -1
  203. package/dist/tools/configure-telemetry.js +30 -2
  204. package/dist/tools/create-spec/spec-builder.js +0 -11
  205. package/dist/tools/create-spec.d.ts +1 -0
  206. package/dist/tools/create-spec.js +444 -239
  207. package/dist/tools/git/branch-ops.d.ts +1 -1
  208. package/dist/tools/git/branch-ops.js +3 -2
  209. package/dist/tools/init-project/handler.js +10 -12
  210. package/dist/tools/init-project/host-assets-writer.js +26 -1
  211. package/dist/tools/init-project/lint-scaffolder.d.ts +3 -3
  212. package/dist/tools/init-project/migration-runner.d.ts +2 -4
  213. package/dist/tools/init-project/migration-runner.js +3 -2
  214. package/dist/tools/init-project/portable-index-reconciler.d.ts +4 -0
  215. package/dist/tools/init-project/portable-index-reconciler.js +14 -0
  216. package/dist/tools/init-project/result-builder.js +1 -3
  217. package/dist/tools/jobs/handlers.js +38 -6
  218. package/dist/tools/list-specs.js +5 -26
  219. package/dist/tools/merge-risk-handler.js +2 -2
  220. package/dist/tools/package-handoff.js +2 -0
  221. package/dist/tools/reconcile-spec.js +0 -27
  222. package/dist/tools/register-agent-squad-tools.js +2 -2
  223. package/dist/tools/register-platform-tools/design-stack-tools.js +11 -11
  224. package/dist/tools/register-platform-tools/lifecycle-infra-tools.js +7 -7
  225. package/dist/tools/register-sdd-tools.d.ts +1 -1
  226. package/dist/tools/register-sdd-tools.js +2 -29
  227. package/dist/tools/register-spec-tools/analysis-tools.js +8 -8
  228. package/dist/tools/register-spec-tools/core-spec-tools.js +17 -8
  229. package/dist/tools/safe-handler.d.ts +5 -13
  230. package/dist/tools/safe-handler.js +7 -23
  231. package/dist/tools/schemas/index.d.ts +1 -1
  232. package/dist/tools/schemas/index.js +1 -1
  233. package/dist/tools/schemas/output-schemas.d.ts +0 -23
  234. package/dist/tools/schemas/output-schemas.js +0 -28
  235. package/dist/tools/schemas/spec.d.ts +4 -0
  236. package/dist/tools/schemas/spec.js +3 -0
  237. package/dist/tools/schemas/validate-output-schema.d.ts +11 -0
  238. package/dist/tools/schemas/validate-output-schema.js +7 -0
  239. package/dist/tools/spec-prompt-handler.js +3 -3
  240. package/dist/tools/sync-spec-state-handler.d.ts +1 -1
  241. package/dist/tools/sync-spec-state-handler.js +1 -1
  242. package/dist/tools/tool-entry.d.ts +4 -4
  243. package/dist/tools/tool-entry.js +3 -3
  244. package/dist/tools/tool-registry/core-tools.js +31 -15
  245. package/dist/tools/tool-registry/group-infra.js +27 -110
  246. package/dist/tools/tool-registry/group-quality-compliance.js +26 -26
  247. package/dist/tools/tool-registry/inventory.d.ts +2 -0
  248. package/dist/tools/tool-registry/inventory.js +2 -0
  249. package/dist/tools/tool-registry-helpers.d.ts +3 -3
  250. package/dist/tools/tool-registry-helpers.js +3 -3
  251. package/dist/tools/tool-usage-report/registered-tools.d.ts +1 -1
  252. package/dist/tools/tool-usage-report/registered-tools.js +3 -15
  253. package/dist/tools/update-status/approval-gates.js +3 -0
  254. package/dist/tools/update-status/done-receipt-verifier.js +40 -27
  255. package/dist/tools/update-status/evidence-gate.js +36 -1
  256. package/dist/tools/update-status/file-sync.d.ts +2 -1
  257. package/dist/tools/update-status/file-sync.js +57 -6
  258. package/dist/tools/update-status/index.d.ts +2 -0
  259. package/dist/tools/update-status/index.js +95 -58
  260. package/dist/tools/update-status/response-builder.js +3 -3
  261. package/dist/tools/update-status/side-effects.d.ts +2 -0
  262. package/dist/tools/update-status/side-effects.js +2 -2
  263. package/dist/tools/update-status/transition-guard.js +32 -15
  264. package/dist/tools/update-status-actions.d.ts +4 -2
  265. package/dist/tools/update-status-actions.js +16 -14
  266. package/dist/tools/usage-report.js +1 -16
  267. package/dist/tools/usage-stats.js +1 -18
  268. package/dist/tools/usage-tracking.d.ts +4 -0
  269. package/dist/tools/usage-tracking.js +20 -0
  270. package/dist/tools/validate-lint.d.ts +1 -0
  271. package/dist/tools/validate-lint.js +1 -1
  272. package/dist/tools/validate.d.ts +2 -1
  273. package/dist/tools/validate.js +114 -34
  274. package/dist/transports/http-transport.js +6 -8
  275. package/dist/transports/mcp-types.d.ts +0 -2
  276. package/dist/transports/session-context.js +1 -1
  277. package/dist/types/cascade-hooks.d.ts +1 -1
  278. package/dist/types/ci.d.ts +0 -4
  279. package/dist/types/clarification-token.d.ts +1 -1
  280. package/dist/types/claude-code-runtime.d.ts +0 -27
  281. package/dist/types/commercial-migration.d.ts +17 -0
  282. package/dist/types/commercial-migration.js +2 -0
  283. package/dist/types/common/primitives.d.ts +0 -2
  284. package/dist/types/core-bridge.d.ts +4 -10
  285. package/dist/types/dashboard.d.ts +3 -7
  286. package/dist/types/docs.d.ts +0 -1
  287. package/dist/types/durable-job.d.ts +4 -4
  288. package/dist/types/durable-validation.d.ts +100 -2
  289. package/dist/types/durable-validation.js +165 -1
  290. package/dist/types/errors/structured-error.d.ts +3 -3
  291. package/dist/types/estimation.d.ts +2 -0
  292. package/dist/types/evidence-gates.d.ts +9 -1
  293. package/dist/types/execution.d.ts +2 -0
  294. package/dist/types/gemini-integration.d.ts +0 -11
  295. package/dist/types/handoff-artifacts.d.ts +41 -0
  296. package/dist/types/hooks-advanced.d.ts +0 -13
  297. package/dist/types/impact-detection.d.ts +2 -2
  298. package/dist/types/index.d.ts +2 -6
  299. package/dist/types/index.js +1 -5
  300. package/dist/types/kiro-integration.d.ts +0 -6
  301. package/dist/types/network-policy.d.ts +1 -1
  302. package/dist/types/project/lint-scaffolder.d.ts +1 -1
  303. package/dist/types/runtime-policy.d.ts +11 -0
  304. package/dist/types/session-safeguard.d.ts +0 -31
  305. package/dist/types/spec/canonical-repair.d.ts +81 -0
  306. package/dist/types/spec/canonical-repair.js +2 -0
  307. package/dist/types/spec/core.d.ts +14 -0
  308. package/dist/types/spec/index.d.ts +1 -0
  309. package/dist/types/spec/index.js +1 -0
  310. package/dist/types/spec/inputs.d.ts +29 -0
  311. package/dist/types/spec-format.d.ts +24 -0
  312. package/dist/types/telemetry.d.ts +4 -1
  313. package/dist/types/transport.d.ts +0 -2
  314. package/dist/types/usage.d.ts +1 -36
  315. package/dist/types/usage.js +1 -1
  316. package/dist/types/validate-worker.d.ts +6 -0
  317. package/dist/types/validation-receipt.d.ts +1 -1
  318. package/dist/types/validation.d.ts +2 -2
  319. package/package.json +16 -12
  320. package/planu-native.json +1 -1
  321. package/planu-plugin.json +23 -40
  322. package/scripts/lib/pending-release-file.mjs +93 -0
  323. package/src/i18n/messages/en.json +0 -41
  324. package/src/i18n/messages/es.json +0 -41
  325. package/src/i18n/messages/pt.json +0 -41
  326. package/dist/cli/commands/activate.d.ts +0 -14
  327. package/dist/cli/commands/activate.js +0 -174
  328. package/dist/config/license-plans.json +0 -251
  329. package/dist/config/product-public.ts +0 -148
  330. package/dist/config/server-instructions.ts +0 -121
  331. package/dist/config/version-defaults.ts +0 -76
  332. package/dist/config/version.ts +0 -21
  333. package/dist/engine/ai-integration/gemini/settings-generator.d.ts +0 -4
  334. package/dist/engine/ai-integration/gemini/settings-generator.js +0 -195
  335. package/dist/engine/ai-integration/kiro/hooks-generator.d.ts +0 -6
  336. package/dist/engine/ai-integration/kiro/hooks-generator.js +0 -75
  337. package/dist/engine/hooks/full-spectrum-generator.d.ts +0 -32
  338. package/dist/engine/hooks/full-spectrum-generator.js +0 -117
  339. package/dist/engine/license-validator/config-loader.d.ts +0 -5
  340. package/dist/engine/license-validator/config-loader.js +0 -16
  341. package/dist/engine/license-validator/core.d.ts +0 -15
  342. package/dist/engine/license-validator/core.js +0 -151
  343. package/dist/engine/license-validator/fingerprint.d.ts +0 -3
  344. package/dist/engine/license-validator/fingerprint.js +0 -17
  345. package/dist/engine/license-validator/lemon-squeezy.d.ts +0 -5
  346. package/dist/engine/license-validator/lemon-squeezy.js +0 -55
  347. package/dist/engine/license-validator.d.ts +0 -5
  348. package/dist/engine/license-validator.js +0 -6
  349. package/dist/engine/product-intelligence/index.d.ts +0 -7
  350. package/dist/engine/product-intelligence/index.js +0 -211
  351. package/dist/engine/session/auto-save.d.ts +0 -18
  352. package/dist/engine/session/auto-save.js +0 -98
  353. package/dist/engine/session/context-snapshot.d.ts +0 -8
  354. package/dist/engine/session/context-snapshot.js +0 -49
  355. package/dist/engine/session/memory-sync.d.ts +0 -12
  356. package/dist/engine/session/memory-sync.js +0 -34
  357. package/dist/engine/session/session-diff.d.ts +0 -11
  358. package/dist/engine/session/session-diff.js +0 -42
  359. package/dist/engine/session/session-merge.d.ts +0 -12
  360. package/dist/engine/session/session-merge.js +0 -55
  361. package/dist/engine/session-safeguard/checkpoint-runner.d.ts +0 -4
  362. package/dist/engine/session-safeguard/checkpoint-runner.js +0 -70
  363. package/dist/engine/session-safeguard/learnings-buffer.d.ts +0 -15
  364. package/dist/engine/session-safeguard/learnings-buffer.js +0 -91
  365. package/dist/engine/session-safeguard/precompaction-drain.d.ts +0 -10
  366. package/dist/engine/session-safeguard/precompaction-drain.js +0 -82
  367. package/dist/engine/session-safeguard/unpushed-detector.d.ts +0 -7
  368. package/dist/engine/session-safeguard/unpushed-detector.js +0 -59
  369. package/dist/engine/spec-changelog/core.d.ts +0 -16
  370. package/dist/engine/spec-changelog/core.js +0 -176
  371. package/dist/engine/spec-changelog/diff.d.ts +0 -18
  372. package/dist/engine/spec-changelog/diff.js +0 -121
  373. package/dist/engine/spec-changelog/index.d.ts +0 -3
  374. package/dist/engine/spec-changelog/index.js +0 -4
  375. package/dist/engine/trial-engine.d.ts +0 -5
  376. package/dist/engine/trial-engine.js +0 -14
  377. package/dist/engine/usage-tracker/rate-check.d.ts +0 -7
  378. package/dist/engine/usage-tracker/rate-check.js +0 -18
  379. package/dist/engine/usage-tracker/rate-limiter.d.ts +0 -14
  380. package/dist/engine/usage-tracker/rate-limiter.js +0 -73
  381. package/dist/engine/usage-tracker/trial.d.ts +0 -27
  382. package/dist/engine/usage-tracker/trial.js +0 -49
  383. package/dist/engine/webhook/event-handlers.d.ts +0 -25
  384. package/dist/engine/webhook/event-handlers.js +0 -89
  385. package/dist/engine/webhook/index.d.ts +0 -4
  386. package/dist/engine/webhook/index.js +0 -5
  387. package/dist/engine/webhook/server.d.ts +0 -12
  388. package/dist/engine/webhook/server.js +0 -249
  389. package/dist/engine/webhook/signature.d.ts +0 -16
  390. package/dist/engine/webhook/signature.js +0 -49
  391. package/dist/storage/license-store.d.ts +0 -6
  392. package/dist/storage/license-store.js +0 -63
  393. package/dist/storage/session-store.d.ts +0 -20
  394. package/dist/storage/session-store.js +0 -136
  395. package/dist/tools/activate-license.d.ts +0 -6
  396. package/dist/tools/activate-license.js +0 -132
  397. package/dist/tools/checkpoint-handler.d.ts +0 -3
  398. package/dist/tools/checkpoint-handler.js +0 -130
  399. package/dist/tools/export-session.d.ts +0 -3
  400. package/dist/tools/export-session.js +0 -90
  401. package/dist/tools/license-gate.d.ts +0 -18
  402. package/dist/tools/license-gate.js +0 -222
  403. package/dist/tools/license-status.d.ts +0 -3
  404. package/dist/tools/license-status.js +0 -93
  405. package/dist/tools/list-sessions.d.ts +0 -3
  406. package/dist/tools/list-sessions.js +0 -46
  407. package/dist/tools/planu-session-checkpoint.d.ts +0 -6
  408. package/dist/tools/planu-session-checkpoint.js +0 -42
  409. package/dist/tools/restore-session.d.ts +0 -3
  410. package/dist/tools/restore-session.js +0 -71
  411. package/dist/tools/spec-history.d.ts +0 -3
  412. package/dist/tools/spec-history.js +0 -59
  413. package/dist/tools/webhook.d.ts +0 -6
  414. package/dist/tools/webhook.js +0 -150
  415. package/dist/types/changelog.d.ts +0 -49
  416. package/dist/types/changelog.js +0 -3
  417. package/dist/types/licensing.d.ts +0 -109
  418. package/dist/types/licensing.js +0 -4
  419. package/dist/types/product-intelligence.d.ts +0 -60
  420. package/dist/types/product-intelligence.js +0 -3
  421. package/dist/types/session.d.ts +0 -84
  422. package/dist/types/session.js +0 -3
  423. package/dist/types/webhook.d.ts +0 -62
  424. package/dist/types/webhook.js +0 -4
@@ -0,0 +1,343 @@
1
+ import { lstat, readFile, readdir, unlink } from 'node:fs/promises';
2
+ import { homedir } from 'node:os';
3
+ import { basename, dirname, isAbsolute, join } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { atomicWriteFile } from '../safety/atomic-write-file.js';
6
+ import { withUpgradeLock } from '../auto-updater/upgrade-lock.js';
7
+ import { deleteSecretField } from '../../security/secret-field.js';
8
+ import { isSecretReference, parseSecretReference } from '../../security/secret-provider.js';
9
+ import { globalDataDir } from '../../storage/base-store.js';
10
+ import { resolveStorageLayout } from '../../storage/storage-layout.js';
11
+ const TOP_LEVEL_USAGE_KEYS = [
12
+ 'trialState',
13
+ 'firstRunAt',
14
+ 'dailyLimit',
15
+ 'dailyCalls',
16
+ 'remainingDailyCalls',
17
+ 'currentTier',
18
+ 'callsByTier',
19
+ 'daysSinceFirstRun',
20
+ 'isTrialActive',
21
+ 'trialDaysLeft',
22
+ ];
23
+ const EVENT_USAGE_KEYS = ['tier', 'trial', 'quota', 'dailyLimit', 'remainingDailyCalls'];
24
+ const COMMERCIAL_HOST_ENV_KEYS = [
25
+ 'SDD_LICENSE_KEY',
26
+ 'SDD_OWNER_TOKEN',
27
+ 'PLANU_LICENSE_KEY',
28
+ 'PLANU_SKIP_TRIAL',
29
+ ];
30
+ const ARCHIVED_USAGE = /^usage-\d{4}-\d{2}-\d{2}\.json$/u;
31
+ function nodeError(error, code) {
32
+ return error instanceof Error && 'code' in error && error.code === code;
33
+ }
34
+ function cleanupCode(error) {
35
+ if (error instanceof Error && error.message.includes('symlink')) {
36
+ return 'SYMLINK_REJECTED';
37
+ }
38
+ if (error instanceof SyntaxError ||
39
+ (error instanceof Error && error.message.includes('malformed'))) {
40
+ return 'MALFORMED_JSON';
41
+ }
42
+ if (nodeError(error, 'EACCES') || nodeError(error, 'EPERM') || nodeError(error, 'EROFS')) {
43
+ return 'WRITE_DENIED';
44
+ }
45
+ if (error instanceof Error && error.message.includes('lock')) {
46
+ return 'LOCK_UNAVAILABLE';
47
+ }
48
+ return 'CLEANUP_FAILED';
49
+ }
50
+ async function regularFile(path) {
51
+ try {
52
+ const info = await lstat(path);
53
+ if (info.isSymbolicLink()) {
54
+ throw new Error('[Planu] cleanup symlink rejected');
55
+ }
56
+ if (!info.isFile()) {
57
+ throw new Error('[Planu] cleanup non-file rejected');
58
+ }
59
+ return true;
60
+ }
61
+ catch (error) {
62
+ if (nodeError(error, 'ENOENT')) {
63
+ return false;
64
+ }
65
+ throw error;
66
+ }
67
+ }
68
+ async function parseJsonFile(path) {
69
+ if (!(await regularFile(path))) {
70
+ return undefined;
71
+ }
72
+ try {
73
+ return JSON.parse(await readFile(path, 'utf8'));
74
+ }
75
+ catch (error) {
76
+ throw new Error('[Planu] cleanup malformed JSON', { cause: error });
77
+ }
78
+ }
79
+ function omitKnownKeys(record, keys) {
80
+ const forbidden = new Set(keys);
81
+ const entries = Object.entries(record).filter(([key]) => !forbidden.has(key));
82
+ return {
83
+ value: Object.fromEntries(entries),
84
+ changed: entries.length !== Object.keys(record).length,
85
+ };
86
+ }
87
+ function stripCommercialUsage(value) {
88
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
89
+ return { value, changed: false };
90
+ }
91
+ const root = value;
92
+ const topLevel = omitKnownKeys(root, TOP_LEVEL_USAGE_KEYS);
93
+ let changed = topLevel.changed;
94
+ let events = topLevel.value.events;
95
+ if (Array.isArray(root.events)) {
96
+ const sourceEvents = root.events;
97
+ events = sourceEvents.map((event) => {
98
+ if (event === null || typeof event !== 'object' || Array.isArray(event)) {
99
+ return event;
100
+ }
101
+ const sanitized = omitKnownKeys(event, EVENT_USAGE_KEYS);
102
+ changed = sanitized.changed || changed;
103
+ return sanitized.value;
104
+ });
105
+ }
106
+ return {
107
+ value: Array.isArray(root.events) ? { ...topLevel.value, events } : topLevel.value,
108
+ changed,
109
+ };
110
+ }
111
+ async function rewriteJson(path, value, assertFence) {
112
+ await assertFence();
113
+ await atomicWriteFile(path, `${JSON.stringify(value, null, 2)}\n`);
114
+ }
115
+ async function cleanUsage(path, assertFence) {
116
+ const document = await parseJsonFile(path);
117
+ const sanitized = stripCommercialUsage(document);
118
+ if (document === undefined || !sanitized.changed) {
119
+ return 0;
120
+ }
121
+ await rewriteJson(path, sanitized.value, assertFence);
122
+ return 1;
123
+ }
124
+ async function cleanHost(path, assertFence) {
125
+ const document = await parseJsonFile(path);
126
+ if (document === undefined || document === null || typeof document !== 'object') {
127
+ return 0;
128
+ }
129
+ const root = document;
130
+ const sanitizeContainer = (value) => {
131
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
132
+ return { value, changed: false };
133
+ }
134
+ const container = value;
135
+ const planu = container.planu;
136
+ if (planu === null || typeof planu !== 'object' || Array.isArray(planu)) {
137
+ return { value, changed: false };
138
+ }
139
+ const entry = planu;
140
+ const env = entry.env;
141
+ if (env === null || typeof env !== 'object' || Array.isArray(env)) {
142
+ return { value, changed: false };
143
+ }
144
+ const sanitized = omitKnownKeys(env, COMMERCIAL_HOST_ENV_KEYS);
145
+ return {
146
+ value: sanitized.changed
147
+ ? { ...container, planu: { ...entry, env: sanitized.value } }
148
+ : value,
149
+ changed: sanitized.changed,
150
+ };
151
+ };
152
+ const mcpServers = sanitizeContainer(root.mcpServers);
153
+ const contextServers = sanitizeContainer(root.context_servers);
154
+ const changed = mcpServers.changed || contextServers.changed;
155
+ const sanitizedRoot = {
156
+ ...root,
157
+ ...(Object.hasOwn(root, 'mcpServers') ? { mcpServers: mcpServers.value } : {}),
158
+ ...(Object.hasOwn(root, 'context_servers') ? { context_servers: contextServers.value } : {}),
159
+ };
160
+ if (!changed) {
161
+ return 0;
162
+ }
163
+ await rewriteJson(path, sanitizedRoot, assertFence);
164
+ return 1;
165
+ }
166
+ async function removeFile(path, assertFence) {
167
+ if (!(await regularFile(path))) {
168
+ return 0;
169
+ }
170
+ await assertFence();
171
+ await unlink(path);
172
+ return 1;
173
+ }
174
+ async function matchingFiles(directory, predicate) {
175
+ try {
176
+ return (await readdir(directory)).filter(predicate).map((name) => join(directory, name));
177
+ }
178
+ catch (error) {
179
+ if (nodeError(error, 'ENOENT')) {
180
+ return [];
181
+ }
182
+ throw error;
183
+ }
184
+ }
185
+ async function licenseBackups(licensePath) {
186
+ const file = basename(licensePath);
187
+ const stem = file.endsWith('.json') ? file.slice(0, -5) : file;
188
+ return matchingFiles(dirname(licensePath), (entry) => entry === `${file}.bak` ||
189
+ (entry.startsWith(`${file}.bak.`) && /^\d+$/u.test(entry.slice(file.length + 5))) ||
190
+ (entry.startsWith(`${stem}.backup-`) && entry.endsWith('.json')));
191
+ }
192
+ async function hostPathsFromManifest(path) {
193
+ try {
194
+ const document = await parseJsonFile(path);
195
+ if (document === undefined || document === null || typeof document !== 'object') {
196
+ return [];
197
+ }
198
+ const records = document.installations;
199
+ if (!Array.isArray(records)) {
200
+ return [];
201
+ }
202
+ return records.flatMap((record) => {
203
+ if (record === null || typeof record !== 'object') {
204
+ return [];
205
+ }
206
+ const configPath = record.configPath;
207
+ return typeof configPath === 'string' && isAbsolute(configPath) ? [configPath] : [];
208
+ });
209
+ }
210
+ catch {
211
+ return [];
212
+ }
213
+ }
214
+ function defaultLegacyDataPaths() {
215
+ const packageRoot = fileURLToPath(new URL('../../../', import.meta.url));
216
+ return [
217
+ join(packageRoot, 'data', 'global'),
218
+ join(homedir(), '.planu', 'data', 'global'),
219
+ join(homedir(), '.planu'),
220
+ ];
221
+ }
222
+ function defaultHostConfigPaths(home, project) {
223
+ return [
224
+ join(home, '.claude.json'),
225
+ join(home, '.cursor', 'mcp.json'),
226
+ join(home, '.codeium', 'windsurf', 'mcp_config.json'),
227
+ join(home, '.config', 'zed', 'settings.json'),
228
+ join(home, '.vscode', 'globalStorage', 'saoudrizwan.claude-dev', 'settings', 'cline_mcp_settings.json'),
229
+ join(home, '.continue', 'config.json'),
230
+ join(project, '.claude.json'),
231
+ join(project, '.cursor', 'mcp.json'),
232
+ join(project, '.windsurf', 'mcp.json'),
233
+ join(project, '.zed', 'settings.json'),
234
+ join(project, '.continue', 'config.json'),
235
+ ];
236
+ }
237
+ async function cleanDataDirectory(dataPath, assertFence, strict) {
238
+ const errors = [];
239
+ const attempt = async (operation, kind) => {
240
+ try {
241
+ const count = await operation();
242
+ if (kind === 'remove') {
243
+ removedFiles += count;
244
+ }
245
+ else {
246
+ updatedFiles += count;
247
+ }
248
+ }
249
+ catch (error) {
250
+ const code = cleanupCode(error);
251
+ errors.push(code);
252
+ if (strict) {
253
+ throw new Error(`[Planu] commercial cleanup failed: ${code}`, { cause: error });
254
+ }
255
+ }
256
+ };
257
+ let removedFiles = 0;
258
+ let updatedFiles = 0;
259
+ const licensePath = join(dataPath, 'license.json');
260
+ await attempt(async () => {
261
+ const licenseDocument = await parseJsonFile(licensePath);
262
+ if (licenseDocument && typeof licenseDocument === 'object') {
263
+ const reference = licenseDocument.licenseKey;
264
+ if (isSecretReference(reference) && parseSecretReference(reference).purpose === 'license') {
265
+ await assertFence();
266
+ await deleteSecretField(reference);
267
+ }
268
+ }
269
+ return removeFile(licensePath, assertFence);
270
+ }, 'remove');
271
+ await attempt(async () => {
272
+ let count = 0;
273
+ for (const backup of await licenseBackups(licensePath)) {
274
+ count += await removeFile(backup, assertFence);
275
+ }
276
+ return count;
277
+ }, 'remove');
278
+ await attempt(() => removeFile(join(dataPath, 'first-run.json'), assertFence), 'remove');
279
+ await attempt(() => cleanUsage(join(dataPath, 'usage.json'), assertFence), 'update');
280
+ let archives = [];
281
+ try {
282
+ archives = await matchingFiles(dataPath, (name) => ARCHIVED_USAGE.test(name));
283
+ }
284
+ catch (error) {
285
+ errors.push(cleanupCode(error));
286
+ }
287
+ for (const archive of archives) {
288
+ await attempt(() => cleanUsage(archive, assertFence), 'update');
289
+ }
290
+ return { removedFiles, updatedFiles, errors };
291
+ }
292
+ export async function removeCommercialState(options = {}) {
293
+ const layout = resolveStorageLayout();
294
+ const lockPath = options.lockPath ?? layout.installationManifest;
295
+ const errors = [];
296
+ const run = options.lockRunner ?? withUpgradeLock;
297
+ try {
298
+ return await run(lockPath, async (assertFence) => {
299
+ let removedFiles = 0;
300
+ let updatedFiles = 0;
301
+ const dataPaths = new Set([
302
+ options.globalDataPath ?? globalDataDir(),
303
+ ...(options.legacyGlobalDataPaths ?? defaultLegacyDataPaths()),
304
+ ]);
305
+ const hostPaths = new Set([
306
+ ...(options.hostConfigPaths ?? []),
307
+ ...defaultHostConfigPaths(options.homeDirectory ?? homedir(), options.projectDirectory ?? process.cwd()),
308
+ ...(await hostPathsFromManifest(layout.installationManifest)),
309
+ ]);
310
+ const attempt = async (operation) => {
311
+ try {
312
+ const result = await operation();
313
+ removedFiles += result.removedFiles ?? 0;
314
+ updatedFiles += result.updatedFiles ?? 0;
315
+ }
316
+ catch (error) {
317
+ const code = cleanupCode(error);
318
+ errors.push(code);
319
+ if (options.strict) {
320
+ throw new Error(`[Planu] commercial cleanup failed: ${code}`, { cause: error });
321
+ }
322
+ }
323
+ };
324
+ for (const path of dataPaths) {
325
+ const result = await cleanDataDirectory(path, assertFence, options.strict === true);
326
+ removedFiles += result.removedFiles;
327
+ updatedFiles += result.updatedFiles;
328
+ errors.push(...result.errors);
329
+ }
330
+ for (const path of hostPaths) {
331
+ await attempt(async () => ({ updatedFiles: await cleanHost(path, assertFence) }));
332
+ }
333
+ return { removedFiles, updatedFiles, errors };
334
+ });
335
+ }
336
+ catch (error) {
337
+ if (options.strict) {
338
+ throw error;
339
+ }
340
+ return { removedFiles: 0, updatedFiles: 0, errors: [cleanupCode(error)] };
341
+ }
342
+ }
343
+ //# sourceMappingURL=remove-commercial-state.js.map
@@ -49,6 +49,7 @@ function environmentConsent() {
49
49
  }
50
50
  function isNetworkPurpose(value) {
51
51
  return (value === 'dependency-audit' ||
52
+ value === 'feedback' ||
52
53
  value === 'integration' ||
53
54
  value === 'oauth' ||
54
55
  value === 'registry' ||
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "4.14.1",
4
- "engineVersion": "4.14.1",
5
- "buildId": "1-4.14.1-aarch64-apple-darwin",
3
+ "cliVersion": "5.0.0",
4
+ "engineVersion": "5.0.0",
5
+ "buildId": "1-5.0.0-aarch64-apple-darwin",
6
6
  "protocolAbi": 1,
7
7
  "capabilityAbi": 2,
8
8
  "nodeApiAbi": 4,
@@ -17,15 +17,15 @@
17
17
  "platform": "darwin",
18
18
  "arch": "arm64",
19
19
  "libc": null,
20
- "artifactSha256": "5e2c55c2f381c543c0909efb8bc183ba9bbd44f8c4f5faacc61bb6d0a603e794",
20
+ "artifactSha256": "d276727c4cddf005cbeb70bda9f34d3c4dcb7d3412cbd0e9c7b98c662c0bdac0",
21
21
  "sbom": {
22
22
  "format": "CycloneDX-1.5",
23
23
  "path": "planu-core.darwin-arm64.node.sbom.json",
24
- "sha256": "04829beb5af09b1b805f3454bf58f9cbff09b6d6b08a18f9cf0591172d7cc413"
24
+ "sha256": "3716a15b7f30bb64bf0c741dbc9c1042fb0bc66a35ebbcb54fda80b88bf0190f"
25
25
  },
26
26
  "provenance": {
27
27
  "builder": "scripts/build-rust-local.sh",
28
- "sourceCommit": "6f1f1f95b8f68ae5e9987ef924987e1e9112b27a",
28
+ "sourceCommit": "b0d7149aa13f1e9d4aebd7df741cf38d5726f376",
29
29
  "sourceTreeDirty": false,
30
30
  "sourceDateEpoch": 1,
31
31
  "rustToolchain": "rustc 1.95.0 (59807616e 2026-04-14)",
@@ -34,6 +34,6 @@
34
34
  "signature": {
35
35
  "algorithm": "Ed25519",
36
36
  "keyId": "e2ee765cb5ad9fbdc433ece332bce26d746d5e350b3acde0721a4c8c6337ff7b",
37
- "value": "vi1PiQ/jDc4F21zckyqwUSUPqCDb1qsp/UY7HO+a2puJBml0yh8WJKhvcQZ6RRyDZDrApq078WcNsGhncR+EBg=="
37
+ "value": "I9bHVmPRkBD2GdyS/HGW3zPavsTvN2DgBmAfBNhTcryNe6N25vyb4D/dIfw5BtZZ/pL0R1tbfolQKI1zvqlqBg=="
38
38
  }
39
39
  }
@@ -4,14 +4,14 @@
4
4
  "version": 1,
5
5
  "metadata": {
6
6
  "component": {
7
- "bom-ref": "pkg:cargo/planu-core@4.14.1",
7
+ "bom-ref": "pkg:cargo/planu-core@5.0.0",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "4.14.1",
10
+ "version": "5.0.0",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "5e2c55c2f381c543c0909efb8bc183ba9bbd44f8c4f5faacc61bb6d0a603e794"
14
+ "content": "d276727c4cddf005cbeb70bda9f34d3c4dcb7d3412cbd0e9c7b98c662c0bdac0"
15
15
  }
16
16
  ]
17
17
  }
@@ -19,9 +19,9 @@
19
19
  "components": [
20
20
  {
21
21
  "type": "library",
22
- "bom-ref": "pkg:cargo/aho-corasick@1.1.4",
22
+ "bom-ref": "pkg:cargo/aho-corasick@1.1.5",
23
23
  "name": "aho-corasick",
24
- "version": "1.1.4",
24
+ "version": "1.1.5",
25
25
  "externalReferences": [
26
26
  {
27
27
  "type": "distribution",
@@ -955,7 +955,7 @@
955
955
  ],
956
956
  "dependencies": [
957
957
  {
958
- "ref": "pkg:cargo/aho-corasick@1.1.4",
958
+ "ref": "pkg:cargo/aho-corasick@1.1.5",
959
959
  "dependsOn": [
960
960
  "pkg:cargo/memchr@2.8.3"
961
961
  ]
@@ -1048,7 +1048,7 @@
1048
1048
  {
1049
1049
  "ref": "pkg:cargo/globset@0.4.19",
1050
1050
  "dependsOn": [
1051
- "pkg:cargo/aho-corasick@1.1.4",
1051
+ "pkg:cargo/aho-corasick@1.1.5",
1052
1052
  "pkg:cargo/bstr@1.13.0",
1053
1053
  "pkg:cargo/log@0.4.33",
1054
1054
  "pkg:cargo/regex-automata@0.4.16",
@@ -1106,7 +1106,7 @@
1106
1106
  "dependsOn": []
1107
1107
  },
1108
1108
  {
1109
- "ref": "pkg:cargo/planu-core@4.14.1",
1109
+ "ref": "pkg:cargo/planu-core@5.0.0",
1110
1110
  "dependsOn": [
1111
1111
  "pkg:cargo/core-foundation@0.10.1",
1112
1112
  "pkg:cargo/hmac@0.12.1",
@@ -1153,7 +1153,7 @@
1153
1153
  {
1154
1154
  "ref": "pkg:cargo/regex-automata@0.4.16",
1155
1155
  "dependsOn": [
1156
- "pkg:cargo/aho-corasick@1.1.4",
1156
+ "pkg:cargo/aho-corasick@1.1.5",
1157
1157
  "pkg:cargo/memchr@2.8.3",
1158
1158
  "pkg:cargo/regex-syntax@0.8.11"
1159
1159
  ]
@@ -1165,7 +1165,7 @@
1165
1165
  {
1166
1166
  "ref": "pkg:cargo/regex@1.12.3",
1167
1167
  "dependsOn": [
1168
- "pkg:cargo/aho-corasick@1.1.4",
1168
+ "pkg:cargo/aho-corasick@1.1.5",
1169
1169
  "pkg:cargo/memchr@2.8.3",
1170
1170
  "pkg:cargo/regex-automata@0.4.16",
1171
1171
  "pkg:cargo/regex-syntax@0.8.11"
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "4.14.1",
4
- "engineVersion": "4.14.1",
5
- "buildId": "1-4.14.1-x86_64-apple-darwin",
3
+ "cliVersion": "5.0.0",
4
+ "engineVersion": "5.0.0",
5
+ "buildId": "1-5.0.0-x86_64-apple-darwin",
6
6
  "protocolAbi": 1,
7
7
  "capabilityAbi": 2,
8
8
  "nodeApiAbi": 4,
@@ -17,15 +17,15 @@
17
17
  "platform": "darwin",
18
18
  "arch": "x64",
19
19
  "libc": null,
20
- "artifactSha256": "2e14070f47213e77ececc8356d5ab4958e4a112fb111d435a7e4a863798652ee",
20
+ "artifactSha256": "2a60a40be81b9ca7cd5361b7e09b1c3987859c7d5a6b99ced609b53e761b4893",
21
21
  "sbom": {
22
22
  "format": "CycloneDX-1.5",
23
23
  "path": "planu-core.darwin-x64.node.sbom.json",
24
- "sha256": "95fa5c13261a93392b7282618d176f6eabf25f99e0040093bab9f24143ebcd5b"
24
+ "sha256": "d39947f0c747ec5ec03ed9565e1b9ef1115b3f1766262d89353b84bfbcd52e70"
25
25
  },
26
26
  "provenance": {
27
27
  "builder": "scripts/build-rust-local.sh",
28
- "sourceCommit": "6f1f1f95b8f68ae5e9987ef924987e1e9112b27a",
28
+ "sourceCommit": "b0d7149aa13f1e9d4aebd7df741cf38d5726f376",
29
29
  "sourceTreeDirty": false,
30
30
  "sourceDateEpoch": 1,
31
31
  "rustToolchain": "rustc 1.95.0 (59807616e 2026-04-14)",
@@ -34,6 +34,6 @@
34
34
  "signature": {
35
35
  "algorithm": "Ed25519",
36
36
  "keyId": "e2ee765cb5ad9fbdc433ece332bce26d746d5e350b3acde0721a4c8c6337ff7b",
37
- "value": "MZBcitfBBFES/26bEys2oh3kjw1tIvhmqEyFi9NIrtbLZ2gYVd65+mOrMr5cHxy3tRPY4iSC5taCm1mN4yovAw=="
37
+ "value": "3o+oKVFgk4jbJLsRmVmxRUgQpZa9Tl+UHSob7J8swJGZo13M1Gsx+fombBfmhZXNnfeehp4aiEnRiQQ2FIWLAg=="
38
38
  }
39
39
  }
@@ -4,14 +4,14 @@
4
4
  "version": 1,
5
5
  "metadata": {
6
6
  "component": {
7
- "bom-ref": "pkg:cargo/planu-core@4.14.1",
7
+ "bom-ref": "pkg:cargo/planu-core@5.0.0",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "4.14.1",
10
+ "version": "5.0.0",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "2e14070f47213e77ececc8356d5ab4958e4a112fb111d435a7e4a863798652ee"
14
+ "content": "2a60a40be81b9ca7cd5361b7e09b1c3987859c7d5a6b99ced609b53e761b4893"
15
15
  }
16
16
  ]
17
17
  }
@@ -19,9 +19,9 @@
19
19
  "components": [
20
20
  {
21
21
  "type": "library",
22
- "bom-ref": "pkg:cargo/aho-corasick@1.1.4",
22
+ "bom-ref": "pkg:cargo/aho-corasick@1.1.5",
23
23
  "name": "aho-corasick",
24
- "version": "1.1.4",
24
+ "version": "1.1.5",
25
25
  "externalReferences": [
26
26
  {
27
27
  "type": "distribution",
@@ -955,7 +955,7 @@
955
955
  ],
956
956
  "dependencies": [
957
957
  {
958
- "ref": "pkg:cargo/aho-corasick@1.1.4",
958
+ "ref": "pkg:cargo/aho-corasick@1.1.5",
959
959
  "dependsOn": [
960
960
  "pkg:cargo/memchr@2.8.3"
961
961
  ]
@@ -1048,7 +1048,7 @@
1048
1048
  {
1049
1049
  "ref": "pkg:cargo/globset@0.4.19",
1050
1050
  "dependsOn": [
1051
- "pkg:cargo/aho-corasick@1.1.4",
1051
+ "pkg:cargo/aho-corasick@1.1.5",
1052
1052
  "pkg:cargo/bstr@1.13.0",
1053
1053
  "pkg:cargo/log@0.4.33",
1054
1054
  "pkg:cargo/regex-automata@0.4.16",
@@ -1106,7 +1106,7 @@
1106
1106
  "dependsOn": []
1107
1107
  },
1108
1108
  {
1109
- "ref": "pkg:cargo/planu-core@4.14.1",
1109
+ "ref": "pkg:cargo/planu-core@5.0.0",
1110
1110
  "dependsOn": [
1111
1111
  "pkg:cargo/core-foundation@0.10.1",
1112
1112
  "pkg:cargo/hmac@0.12.1",
@@ -1153,7 +1153,7 @@
1153
1153
  {
1154
1154
  "ref": "pkg:cargo/regex-automata@0.4.16",
1155
1155
  "dependsOn": [
1156
- "pkg:cargo/aho-corasick@1.1.4",
1156
+ "pkg:cargo/aho-corasick@1.1.5",
1157
1157
  "pkg:cargo/memchr@2.8.3",
1158
1158
  "pkg:cargo/regex-syntax@0.8.11"
1159
1159
  ]
@@ -1165,7 +1165,7 @@
1165
1165
  {
1166
1166
  "ref": "pkg:cargo/regex@1.12.3",
1167
1167
  "dependsOn": [
1168
- "pkg:cargo/aho-corasick@1.1.4",
1168
+ "pkg:cargo/aho-corasick@1.1.5",
1169
1169
  "pkg:cargo/memchr@2.8.3",
1170
1170
  "pkg:cargo/regex-automata@0.4.16",
1171
1171
  "pkg:cargo/regex-syntax@0.8.11"
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "4.14.1",
4
- "engineVersion": "4.14.1",
5
- "buildId": "1-4.14.1-aarch64-unknown-linux-gnu",
3
+ "cliVersion": "5.0.0",
4
+ "engineVersion": "5.0.0",
5
+ "buildId": "1-5.0.0-aarch64-unknown-linux-gnu",
6
6
  "protocolAbi": 1,
7
7
  "capabilityAbi": 2,
8
8
  "nodeApiAbi": 4,
@@ -16,15 +16,15 @@
16
16
  "platform": "linux",
17
17
  "arch": "arm64",
18
18
  "libc": "glibc",
19
- "artifactSha256": "7b2674568f17b8f6028f9c818fb27120e2fc8af019cceb1cddc28ff000464b33",
19
+ "artifactSha256": "580ec92f1fb034b280b35c2d394b4d18c7803fae7d03b874ba9a1c64ee869721",
20
20
  "sbom": {
21
21
  "format": "CycloneDX-1.5",
22
22
  "path": "planu-core.linux-arm64-gnu.node.sbom.json",
23
- "sha256": "87ec5a6e82cc40ad7d1099a094001e957439136c3db225d54dbb26c38a0f9be3"
23
+ "sha256": "2ac8dbb0048589ade03208731db1dbe1e16cc32190edbeea49dd06b253e921e3"
24
24
  },
25
25
  "provenance": {
26
26
  "builder": "scripts/build-rust-local.sh",
27
- "sourceCommit": "6f1f1f95b8f68ae5e9987ef924987e1e9112b27a",
27
+ "sourceCommit": "b0d7149aa13f1e9d4aebd7df741cf38d5726f376",
28
28
  "sourceTreeDirty": false,
29
29
  "sourceDateEpoch": 1,
30
30
  "rustToolchain": "rustc 1.95.0 (59807616e 2026-04-14)",
@@ -33,6 +33,6 @@
33
33
  "signature": {
34
34
  "algorithm": "Ed25519",
35
35
  "keyId": "e2ee765cb5ad9fbdc433ece332bce26d746d5e350b3acde0721a4c8c6337ff7b",
36
- "value": "9oo9TAoyxROAwZulw5JAxc4dwiVkgbkjIG2UG0rIGOZqghdgD3GnYRwPAho18dg/y1cGnH74pnTNWrPibaJGBw=="
36
+ "value": "Y+W+JFj6bDKCI18mpVqp6oceV6zaNjLbp9LCnLIt08pt/JynFvui7ZJC1Epd+rxd28swAFZQlSeJC7wTyh02Dg=="
37
37
  }
38
38
  }