@planu/cli 5.3.24 → 5.3.26

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 (59) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +1 -1
  3. package/dist/config/legacy-artifacts.json +26 -0
  4. package/dist/config/official-sdd-tools.d.ts +1 -1
  5. package/dist/config/official-sdd-tools.js +1 -0
  6. package/dist/config/registries/hosts/codex.json +2 -1
  7. package/dist/engine/planu-core.darwin-arm64.node.manifest.json +7 -7
  8. package/dist/engine/planu-core.darwin-arm64.node.sbom.json +4 -4
  9. package/dist/engine/planu-core.darwin-x64.node.manifest.json +7 -7
  10. package/dist/engine/planu-core.darwin-x64.node.sbom.json +4 -4
  11. package/dist/engine/planu-core.linux-arm64-gnu.node.manifest.json +7 -7
  12. package/dist/engine/planu-core.linux-arm64-gnu.node.sbom.json +4 -4
  13. package/dist/engine/planu-core.linux-arm64-musl.node.manifest.json +7 -7
  14. package/dist/engine/planu-core.linux-arm64-musl.node.sbom.json +4 -4
  15. package/dist/engine/planu-core.linux-x64-gnu.node.manifest.json +7 -7
  16. package/dist/engine/planu-core.linux-x64-gnu.node.sbom.json +4 -4
  17. package/dist/engine/planu-core.linux-x64-musl.node.manifest.json +7 -7
  18. package/dist/engine/planu-core.linux-x64-musl.node.sbom.json +4 -4
  19. package/dist/engine/planu-core.win32-arm64-msvc.node.manifest.json +7 -7
  20. package/dist/engine/planu-core.win32-arm64-msvc.node.sbom.json +4 -4
  21. package/dist/engine/planu-core.win32-x64-msvc.node.manifest.json +7 -7
  22. package/dist/engine/planu-core.win32-x64-msvc.node.sbom.json +4 -4
  23. package/dist/engine/safety/assert-within-project.d.ts +2 -0
  24. package/dist/engine/safety/assert-within-project.js +14 -0
  25. package/dist/engine/scope-boundaries/contradiction-checker.js +9 -3
  26. package/dist/engine/spec-format/read-technical-section.js +3 -2
  27. package/dist/engine/spec-format/unified-spec-builder.js +27 -0
  28. package/dist/engine/spec-migrator/index.d.ts +0 -1
  29. package/dist/engine/spec-migrator/index.js +0 -1
  30. package/dist/engine/spec-migrator/legacy-classifier.d.ts +4 -0
  31. package/dist/engine/spec-migrator/legacy-classifier.js +70 -0
  32. package/dist/engine/spec-migrator/planu-canonical-policy.js +14 -9
  33. package/dist/engine/spec-migrator/strict-planu-cleanup.d.ts +4 -2
  34. package/dist/engine/spec-migrator/strict-planu-cleanup.js +64 -53
  35. package/dist/storage/spec-store.js +6 -0
  36. package/dist/tools/export-spec.js +18 -15
  37. package/dist/tools/heal-spec-docs.js +15 -12
  38. package/dist/tools/init-project/git-setup.js +44 -40
  39. package/dist/tools/init-project/handler.js +2 -1
  40. package/dist/tools/init-project/migration-runner.d.ts +2 -1
  41. package/dist/tools/init-project/migration-runner.js +18 -5
  42. package/dist/tools/init-project/result-builder.js +9 -0
  43. package/dist/tools/list-specs.js +39 -0
  44. package/dist/tools/migrate-legacy-spec.d.ts +10 -0
  45. package/dist/tools/migrate-legacy-spec.js +133 -0
  46. package/dist/tools/register-spec-tools/analysis-tools.js +2 -0
  47. package/dist/tools/schema-generator-handler.js +3 -0
  48. package/dist/tools/schemas/output-schemas.d.ts +28 -0
  49. package/dist/tools/schemas/output-schemas.js +13 -0
  50. package/dist/tools/spec-export-handler.js +21 -8
  51. package/dist/tools/storage-bundle-handler.js +35 -4
  52. package/dist/types/project/planu-config.d.ts +3 -0
  53. package/dist/types/spec/core.d.ts +0 -7
  54. package/dist/types/spec-format.d.ts +17 -0
  55. package/package.json +9 -9
  56. package/planu-native.json +1 -1
  57. package/planu-plugin.json +3 -2
  58. package/dist/engine/spec-migrator/unified-migration.d.ts +0 -18
  59. package/dist/engine/spec-migrator/unified-migration.js +0 -105
package/CHANGELOG.md CHANGED
@@ -1,3 +1,18 @@
1
+ ## [5.3.26] - 2026-08-19
2
+
3
+ ### Bug Fixes
4
+ - fix(spec-1569-1572): host-LLM legacy migration, gitignore allowlist, scope+section guards
5
+
6
+ ### Chores
7
+ - chore(spec-1569-1572): mark legacy-migration and guard specs done
8
+
9
+
10
+ ## [5.3.25] - 2026-08-18
11
+
12
+ ### Bug Fixes
13
+ - fix(spec-1562,1568): contain client output paths across all writers and default spec array fields
14
+
15
+
1
16
  ## [5.3.24] - 2026-08-18
2
17
 
3
18
  ### Bug Fixes
package/README.md CHANGED
@@ -21,7 +21,7 @@ Planu is a Spec Driven Development stack for AI coding agents: an MCP server and
21
21
  - **Local change detection** — observes project changes without requiring a hosted configuration service.
22
22
  - **Unified Spec Format** — Requirements and technical details in a single, context-efficient `spec.md`.
23
23
  - **Atomic Integrity** — Indestructible writes and **Freeze-on-done** immutability (P0).
24
- - **29 official MCP tools** for the public SDD surface, with advanced workflows kept in skills, CLI commands, and internal pipelines.
24
+ - **30 official MCP tools** for the public SDD surface, with advanced workflows kept in skills, CLI commands, and internal pipelines.
25
25
  - **Multi-agent compatible** — Optimized for Claude Code, Cursor, Windsurf, and Gemini CLI.
26
26
 
27
27
  ---
@@ -0,0 +1,26 @@
1
+ [
2
+ {
3
+ "id": "technical-md",
4
+ "pattern": "technical.md",
5
+ "classification": "content-bearing",
6
+ "targetSection": "Technical"
7
+ },
8
+ { "id": "plan-md", "pattern": "plan.md", "classification": "content-bearing", "targetSection": "Technical" },
9
+ { "id": "plan-md-upper", "pattern": "PLAN.md", "classification": "content-bearing", "targetSection": "Technical" },
10
+ {
11
+ "id": "ficha-tecnica-md",
12
+ "pattern": "FICHA-TECNICA.md",
13
+ "classification": "content-bearing",
14
+ "targetSection": "Technical"
15
+ },
16
+ { "id": "progress-md", "pattern": "progress.md", "classification": "content-bearing", "targetSection": "Progress" },
17
+ {
18
+ "id": "progress-md-upper",
19
+ "pattern": "PROGRESS.md",
20
+ "classification": "content-bearing",
21
+ "targetSection": "Progress"
22
+ },
23
+ { "id": "hu-md", "pattern": "HU.md", "classification": "content-bearing", "targetSection": "Problem" },
24
+ { "id": "child-plans-dir", "pattern": "child-plans", "classification": "transient" },
25
+ { "id": "behavior-evidence-json", "pattern": "behavior-evidence.json", "classification": "transient" }
26
+ ]
@@ -1,4 +1,4 @@
1
1
  /** Single editable authority for the official local SDD tool surface. */
2
- export declare const OFFICIAL_SDD_TOOL_NAMES: readonly ['planu_status', 'session_checkpoint', 'facilitate', 'init_project', 'clarify_requirements', 'create_spec', 'list_specs', 'challenge_spec', 'check_readiness', 'update_status', 'update_status_batch', 'package_handoff', 'validate', 'get_job', 'watch_job', 'cancel_job', 'restart_job', 'reconcile_spec', 'create_rule', 'create_skill', 'skill_search', 'configure_code_graph', 'code_graph_status', 'submit_feedback', 'triage_feedback', 'resolve_feedback', 'sync_feedback', 'feedback_status', 'bump_spec_version'];
2
+ export declare const OFFICIAL_SDD_TOOL_NAMES: readonly ['planu_status', 'session_checkpoint', 'facilitate', 'init_project', 'clarify_requirements', 'create_spec', 'list_specs', 'challenge_spec', 'check_readiness', 'update_status', 'update_status_batch', 'package_handoff', 'validate', 'get_job', 'watch_job', 'cancel_job', 'restart_job', 'reconcile_spec', 'create_rule', 'create_skill', 'skill_search', 'configure_code_graph', 'code_graph_status', 'submit_feedback', 'triage_feedback', 'resolve_feedback', 'sync_feedback', 'feedback_status', 'bump_spec_version', 'migrate_legacy_spec'];
3
3
  export declare function readCanonicalToolNames(): string[];
4
4
  //# sourceMappingURL=official-sdd-tools.d.ts.map
@@ -29,6 +29,7 @@ export const OFFICIAL_SDD_TOOL_NAMES = [
29
29
  'sync_feedback',
30
30
  'feedback_status',
31
31
  'bump_spec_version',
32
+ 'migrate_legacy_spec',
32
33
  ];
33
34
  export function readCanonicalToolNames() {
34
35
  return [...OFFICIAL_SDD_TOOL_NAMES];
@@ -31,7 +31,8 @@
31
31
  "resolve_feedback",
32
32
  "sync_feedback",
33
33
  "feedback_status",
34
- "bump_spec_version"
34
+ "bump_spec_version",
35
+ "migrate_legacy_spec"
35
36
  ],
36
37
  "unsupportedTools": ["challenge_spec", "red_team"],
37
38
  "restrictedTools": {
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "5.3.24",
4
- "engineVersion": "5.3.24",
5
- "buildId": "1-5.3.24-aarch64-apple-darwin",
3
+ "cliVersion": "5.3.26",
4
+ "engineVersion": "5.3.26",
5
+ "buildId": "1-5.3.26-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": "2df1b275f0d3987ef6fa75a7d46b274c798aece674ff001ab7fb7af169cfc1f3",
20
+ "artifactSha256": "b2d852dc52754af4bb30c62703566f1904ef5d36905a500ee93dd659d2a5e1e2",
21
21
  "sbom": {
22
22
  "format": "CycloneDX-1.5",
23
23
  "path": "planu-core.darwin-arm64.node.sbom.json",
24
- "sha256": "9899ebee8d32c9b58992bd9a95647e85bd86ac76ee64c34f534f5ce18ec33c2c"
24
+ "sha256": "f40d46dc1cafb9791a5abb6b22715025ed1a46ebbece82949b770e92009a33d0"
25
25
  },
26
26
  "provenance": {
27
27
  "builder": "scripts/build-rust-local.sh",
28
- "sourceCommit": "888ffb9504055a10ea38d0c31dd0c9881139e88c",
28
+ "sourceCommit": "2419aedc35345da335c3469eaf80b19f428fd53b",
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": "0/ir1zotrdZMQ3fKgbpHGoU6fXXo8qZp+Ugs18Oslbxb6vVvRBuj2UoKofDsyPGjx2mHadvTUPX42B/EZd1SAg=="
37
+ "value": "chGhyQXfG6qVz8U+TCAugdrFAW9pvbketCjVF0BESmKZlIMKyzq15V3r8QSuBOGqCs3OtuORM0R6VRJEreHlAA=="
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@5.3.24",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.26",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.24",
10
+ "version": "5.3.26",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "2df1b275f0d3987ef6fa75a7d46b274c798aece674ff001ab7fb7af169cfc1f3"
14
+ "content": "b2d852dc52754af4bb30c62703566f1904ef5d36905a500ee93dd659d2a5e1e2"
15
15
  }
16
16
  ]
17
17
  }
@@ -1106,7 +1106,7 @@
1106
1106
  "dependsOn": []
1107
1107
  },
1108
1108
  {
1109
- "ref": "pkg:cargo/planu-core@5.3.24",
1109
+ "ref": "pkg:cargo/planu-core@5.3.26",
1110
1110
  "dependsOn": [
1111
1111
  "pkg:cargo/core-foundation@0.10.1",
1112
1112
  "pkg:cargo/hmac@0.12.1",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "5.3.24",
4
- "engineVersion": "5.3.24",
5
- "buildId": "1-5.3.24-x86_64-apple-darwin",
3
+ "cliVersion": "5.3.26",
4
+ "engineVersion": "5.3.26",
5
+ "buildId": "1-5.3.26-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": "136a1351ca4278942b7c5b0130eb7cdfee35b85b667888d4041bffcd0b213ace",
20
+ "artifactSha256": "6a08bbe0d147a81c8f9094651912b89f2a7bbd9d4ab09e8f713db3493469ba68",
21
21
  "sbom": {
22
22
  "format": "CycloneDX-1.5",
23
23
  "path": "planu-core.darwin-x64.node.sbom.json",
24
- "sha256": "3f8f6cace3e98634bc5fb5b8debb71c45507b890b4aa918437358cf16b55d776"
24
+ "sha256": "2aa4b1f6dfe3be29bfafa818692dd08f629763eb02b7f0119a0ba828c5de11d8"
25
25
  },
26
26
  "provenance": {
27
27
  "builder": "scripts/build-rust-local.sh",
28
- "sourceCommit": "888ffb9504055a10ea38d0c31dd0c9881139e88c",
28
+ "sourceCommit": "2419aedc35345da335c3469eaf80b19f428fd53b",
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": "Aj0I1f16YmStyyCshvbh7h+leFhLBtGAOv5Jy8lCH5oXVc2RBirqfHNAU/4yQ1vFu3JTl3H5hIaa1Kc1LwQtCg=="
37
+ "value": "gVWSBJ6t5K9Jl6iC3VDEqApdsZXpGKK/+Qv75Ijp6JinDPZvqO8ESVeO4RonNELQljv5r0DFgvR+5Z+IfsNxAg=="
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@5.3.24",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.26",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.24",
10
+ "version": "5.3.26",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "136a1351ca4278942b7c5b0130eb7cdfee35b85b667888d4041bffcd0b213ace"
14
+ "content": "6a08bbe0d147a81c8f9094651912b89f2a7bbd9d4ab09e8f713db3493469ba68"
15
15
  }
16
16
  ]
17
17
  }
@@ -1106,7 +1106,7 @@
1106
1106
  "dependsOn": []
1107
1107
  },
1108
1108
  {
1109
- "ref": "pkg:cargo/planu-core@5.3.24",
1109
+ "ref": "pkg:cargo/planu-core@5.3.26",
1110
1110
  "dependsOn": [
1111
1111
  "pkg:cargo/core-foundation@0.10.1",
1112
1112
  "pkg:cargo/hmac@0.12.1",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "5.3.24",
4
- "engineVersion": "5.3.24",
5
- "buildId": "1-5.3.24-aarch64-unknown-linux-gnu",
3
+ "cliVersion": "5.3.26",
4
+ "engineVersion": "5.3.26",
5
+ "buildId": "1-5.3.26-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": "5c16c2a04af25efc03e74eecfacaad43f5835dfb01f0a898f6d2b93efd9a3c33",
19
+ "artifactSha256": "1d9dfeccdff69d18bbddbd0824dca6742c4a3ecd9e66b52cace270eddb900444",
20
20
  "sbom": {
21
21
  "format": "CycloneDX-1.5",
22
22
  "path": "planu-core.linux-arm64-gnu.node.sbom.json",
23
- "sha256": "48a3812ed288b4801a82bf40f37d02e48e014a90f58f7bc955c2b480749cd44e"
23
+ "sha256": "9b9271f9439cc9be0737167da1453b37dd2607891da718aa4dd355edf57286fe"
24
24
  },
25
25
  "provenance": {
26
26
  "builder": "scripts/build-rust-local.sh",
27
- "sourceCommit": "888ffb9504055a10ea38d0c31dd0c9881139e88c",
27
+ "sourceCommit": "2419aedc35345da335c3469eaf80b19f428fd53b",
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": "ogNVi4bjUVYnZ3o32PbiLKjRM4FhpcRuLoWSBpHe+vMe/M+oL+aZAX3M86UdTHoxEtUm32rJJPBBXA3CpQzIBQ=="
36
+ "value": "bo+EsDcaAkbFJiPyt3Fdenl+cKnPfTysWT7PfJKVAxYpdyWFv9prn7G7Hb8LwVjgsUulNv/v7+Uwx+R0O9ywBw=="
37
37
  }
38
38
  }
@@ -4,14 +4,14 @@
4
4
  "version": 1,
5
5
  "metadata": {
6
6
  "component": {
7
- "bom-ref": "pkg:cargo/planu-core@5.3.24",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.26",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.24",
10
+ "version": "5.3.26",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "5c16c2a04af25efc03e74eecfacaad43f5835dfb01f0a898f6d2b93efd9a3c33"
14
+ "content": "1d9dfeccdff69d18bbddbd0824dca6742c4a3ecd9e66b52cace270eddb900444"
15
15
  }
16
16
  ]
17
17
  }
@@ -1106,7 +1106,7 @@
1106
1106
  "dependsOn": []
1107
1107
  },
1108
1108
  {
1109
- "ref": "pkg:cargo/planu-core@5.3.24",
1109
+ "ref": "pkg:cargo/planu-core@5.3.26",
1110
1110
  "dependsOn": [
1111
1111
  "pkg:cargo/core-foundation@0.10.1",
1112
1112
  "pkg:cargo/hmac@0.12.1",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "5.3.24",
4
- "engineVersion": "5.3.24",
5
- "buildId": "1-5.3.24-aarch64-unknown-linux-musl",
3
+ "cliVersion": "5.3.26",
4
+ "engineVersion": "5.3.26",
5
+ "buildId": "1-5.3.26-aarch64-unknown-linux-musl",
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": "musl",
19
- "artifactSha256": "8a4cd204fed117c35b4daea2d03d7f36c5ac2309967ed1d0f48e4291c19a705f",
19
+ "artifactSha256": "998d8d6076161d998a11a57c2c06f291e4f73caa638bd530c6391926456c9e88",
20
20
  "sbom": {
21
21
  "format": "CycloneDX-1.5",
22
22
  "path": "planu-core.linux-arm64-musl.node.sbom.json",
23
- "sha256": "812aeaa48a5c2d31b1b108a005eb47586f8a3cf48de44ee7a43b356d7626a286"
23
+ "sha256": "1d0bc13dc8e4c207ae2a6eb857b1be214cce702f2be06b1538078e54a2285f8d"
24
24
  },
25
25
  "provenance": {
26
26
  "builder": "scripts/build-rust-local.sh",
27
- "sourceCommit": "888ffb9504055a10ea38d0c31dd0c9881139e88c",
27
+ "sourceCommit": "2419aedc35345da335c3469eaf80b19f428fd53b",
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": "3w2XPj4GH8F/UdRBJMNWiOacR+v5h2H/aof6SqdJDADu5S2sGg0IEolD9m7sB3HE/ZgPL7iulY4KPckXGMNnAQ=="
36
+ "value": "E3FUnw4F0Mo18fXF12PdntrhwZ5PpG3jrUnwRIo+xL62Ij5XDe0CiF8n9cSBALGLSUCeytaeYPWYsPjq5DO3CQ=="
37
37
  }
38
38
  }
@@ -4,14 +4,14 @@
4
4
  "version": 1,
5
5
  "metadata": {
6
6
  "component": {
7
- "bom-ref": "pkg:cargo/planu-core@5.3.24",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.26",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.24",
10
+ "version": "5.3.26",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "8a4cd204fed117c35b4daea2d03d7f36c5ac2309967ed1d0f48e4291c19a705f"
14
+ "content": "998d8d6076161d998a11a57c2c06f291e4f73caa638bd530c6391926456c9e88"
15
15
  }
16
16
  ]
17
17
  }
@@ -1106,7 +1106,7 @@
1106
1106
  "dependsOn": []
1107
1107
  },
1108
1108
  {
1109
- "ref": "pkg:cargo/planu-core@5.3.24",
1109
+ "ref": "pkg:cargo/planu-core@5.3.26",
1110
1110
  "dependsOn": [
1111
1111
  "pkg:cargo/core-foundation@0.10.1",
1112
1112
  "pkg:cargo/hmac@0.12.1",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "5.3.24",
4
- "engineVersion": "5.3.24",
5
- "buildId": "1-5.3.24-x86_64-unknown-linux-gnu",
3
+ "cliVersion": "5.3.26",
4
+ "engineVersion": "5.3.26",
5
+ "buildId": "1-5.3.26-x86_64-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": "x64",
18
18
  "libc": "glibc",
19
- "artifactSha256": "a9158723fa6e3e5972ffc03b6115035c1f0dd6be8b109b4ae1f7f5dad54f9062",
19
+ "artifactSha256": "82aad07391992062c26f860f5ef9beab126048cae4c56c1c3eb097c7edad674d",
20
20
  "sbom": {
21
21
  "format": "CycloneDX-1.5",
22
22
  "path": "planu-core.linux-x64-gnu.node.sbom.json",
23
- "sha256": "34a5c6540f4234a5ac3d4b3d1be2ff50e28b294161a4b4190996e28b3defc899"
23
+ "sha256": "2e5cd34fb3b8e6bf81f6da6c09a7a777f274ee7c6a55696d7541622383e250e1"
24
24
  },
25
25
  "provenance": {
26
26
  "builder": "scripts/build-rust-local.sh",
27
- "sourceCommit": "888ffb9504055a10ea38d0c31dd0c9881139e88c",
27
+ "sourceCommit": "2419aedc35345da335c3469eaf80b19f428fd53b",
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": "Gz3e+x1vn4R0ppFCaBwO4vQH1RqrV3PvTp7/Zi6V0mu3u6o1GYmo7JrLvlmR4I34IWkfO+cG6Hk/Ls++j7dnBw=="
36
+ "value": "di+vGzqgsPMmHH/6UFcIElY003sMfb/Q/MduHuxY06aY6JT82QNuLNx1mkV3+MYhJhynyMsaBxt7Vin/FTPUBA=="
37
37
  }
38
38
  }
@@ -4,14 +4,14 @@
4
4
  "version": 1,
5
5
  "metadata": {
6
6
  "component": {
7
- "bom-ref": "pkg:cargo/planu-core@5.3.24",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.26",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.24",
10
+ "version": "5.3.26",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "a9158723fa6e3e5972ffc03b6115035c1f0dd6be8b109b4ae1f7f5dad54f9062"
14
+ "content": "82aad07391992062c26f860f5ef9beab126048cae4c56c1c3eb097c7edad674d"
15
15
  }
16
16
  ]
17
17
  }
@@ -1106,7 +1106,7 @@
1106
1106
  "dependsOn": []
1107
1107
  },
1108
1108
  {
1109
- "ref": "pkg:cargo/planu-core@5.3.24",
1109
+ "ref": "pkg:cargo/planu-core@5.3.26",
1110
1110
  "dependsOn": [
1111
1111
  "pkg:cargo/core-foundation@0.10.1",
1112
1112
  "pkg:cargo/hmac@0.12.1",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "5.3.24",
4
- "engineVersion": "5.3.24",
5
- "buildId": "1-5.3.24-x86_64-unknown-linux-musl",
3
+ "cliVersion": "5.3.26",
4
+ "engineVersion": "5.3.26",
5
+ "buildId": "1-5.3.26-x86_64-unknown-linux-musl",
6
6
  "protocolAbi": 1,
7
7
  "capabilityAbi": 2,
8
8
  "nodeApiAbi": 4,
@@ -16,15 +16,15 @@
16
16
  "platform": "linux",
17
17
  "arch": "x64",
18
18
  "libc": "musl",
19
- "artifactSha256": "165e48d9d7bb68965782b9f690af378cee9651c9c1b9ab31e6b9fa4bedad514a",
19
+ "artifactSha256": "91d71782f92e585b90444463370ec9d600b25a52a1d892b903676d4c8fddd2ad",
20
20
  "sbom": {
21
21
  "format": "CycloneDX-1.5",
22
22
  "path": "planu-core.linux-x64-musl.node.sbom.json",
23
- "sha256": "101e2eca5854d33b36a9570a10e8f4816f43961ad899863110ba4d2596cf89dc"
23
+ "sha256": "5fa1e3aed4b54c4fef050d7a541c2bbbed4ffec3fc21667818df15572087e7a4"
24
24
  },
25
25
  "provenance": {
26
26
  "builder": "scripts/build-rust-local.sh",
27
- "sourceCommit": "888ffb9504055a10ea38d0c31dd0c9881139e88c",
27
+ "sourceCommit": "2419aedc35345da335c3469eaf80b19f428fd53b",
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": "bHo9hflPuXFXSTyWqcxf2rV+OlBmqGvUMOgp4WV7TfKOC1nCUV7Ay/1LJXlgqN/XykbfHC8821FpHWLXQSnJDQ=="
36
+ "value": "N+t5MBnx7wr/JyNeJ+8887ZHguXLM9IgP8UT+p5CqZsooNBCHKXErn9vUyRWNHdR8bJ0zqVIOnWMq44Lmh/PDw=="
37
37
  }
38
38
  }
@@ -4,14 +4,14 @@
4
4
  "version": 1,
5
5
  "metadata": {
6
6
  "component": {
7
- "bom-ref": "pkg:cargo/planu-core@5.3.24",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.26",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.24",
10
+ "version": "5.3.26",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "165e48d9d7bb68965782b9f690af378cee9651c9c1b9ab31e6b9fa4bedad514a"
14
+ "content": "91d71782f92e585b90444463370ec9d600b25a52a1d892b903676d4c8fddd2ad"
15
15
  }
16
16
  ]
17
17
  }
@@ -1106,7 +1106,7 @@
1106
1106
  "dependsOn": []
1107
1107
  },
1108
1108
  {
1109
- "ref": "pkg:cargo/planu-core@5.3.24",
1109
+ "ref": "pkg:cargo/planu-core@5.3.26",
1110
1110
  "dependsOn": [
1111
1111
  "pkg:cargo/core-foundation@0.10.1",
1112
1112
  "pkg:cargo/hmac@0.12.1",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "5.3.24",
4
- "engineVersion": "5.3.24",
5
- "buildId": "1-5.3.24-aarch64-pc-windows-msvc",
3
+ "cliVersion": "5.3.26",
4
+ "engineVersion": "5.3.26",
5
+ "buildId": "1-5.3.26-aarch64-pc-windows-msvc",
6
6
  "protocolAbi": 1,
7
7
  "capabilityAbi": 2,
8
8
  "nodeApiAbi": 4,
@@ -16,15 +16,15 @@
16
16
  "platform": "win32",
17
17
  "arch": "arm64",
18
18
  "libc": null,
19
- "artifactSha256": "363abf41c92e4a6d5e4f7cc821185cca9a84fe5fb99006b8e01d16d106bbfa52",
19
+ "artifactSha256": "42242fb16dcedcff4ccdc5a8d359279ba985a916eab84e803b98d1840cc2a59e",
20
20
  "sbom": {
21
21
  "format": "CycloneDX-1.5",
22
22
  "path": "planu-core.win32-arm64-msvc.node.sbom.json",
23
- "sha256": "5f31abd4a8f741b8a72701f428fa777b41a504c1c095f903bdf54b5ccd93b74e"
23
+ "sha256": "cbdd51f8b9ff70711b39912839dc7d03b1670056ab8909aa46d2b90ad5e25cbb"
24
24
  },
25
25
  "provenance": {
26
26
  "builder": "scripts/build-rust-local.sh",
27
- "sourceCommit": "888ffb9504055a10ea38d0c31dd0c9881139e88c",
27
+ "sourceCommit": "2419aedc35345da335c3469eaf80b19f428fd53b",
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": "Dj6P860+E1Yi4MGQd3lnA6OmAmf5EvL8mZqfiI81OwYH19GQwnKnBUi5vjh64I781B1lyOwUOPjU+jLpJ8lhCQ=="
36
+ "value": "lYI+Oujs1RPS2A9qzkJC5Jf2ISaSxjMJkXH44GgpLJfNXsvSYTBFx6lq+gpzo2R0tiUvF7JSWG4+WfI2I5KYCg=="
37
37
  }
38
38
  }
@@ -4,14 +4,14 @@
4
4
  "version": 1,
5
5
  "metadata": {
6
6
  "component": {
7
- "bom-ref": "pkg:cargo/planu-core@5.3.24",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.26",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.24",
10
+ "version": "5.3.26",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "363abf41c92e4a6d5e4f7cc821185cca9a84fe5fb99006b8e01d16d106bbfa52"
14
+ "content": "42242fb16dcedcff4ccdc5a8d359279ba985a916eab84e803b98d1840cc2a59e"
15
15
  }
16
16
  ]
17
17
  }
@@ -1106,7 +1106,7 @@
1106
1106
  "dependsOn": []
1107
1107
  },
1108
1108
  {
1109
- "ref": "pkg:cargo/planu-core@5.3.24",
1109
+ "ref": "pkg:cargo/planu-core@5.3.26",
1110
1110
  "dependsOn": [
1111
1111
  "pkg:cargo/core-foundation@0.10.1",
1112
1112
  "pkg:cargo/hmac@0.12.1",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "cliVersion": "5.3.24",
4
- "engineVersion": "5.3.24",
5
- "buildId": "1-5.3.24-x86_64-pc-windows-msvc",
3
+ "cliVersion": "5.3.26",
4
+ "engineVersion": "5.3.26",
5
+ "buildId": "1-5.3.26-x86_64-pc-windows-msvc",
6
6
  "protocolAbi": 1,
7
7
  "capabilityAbi": 2,
8
8
  "nodeApiAbi": 4,
@@ -16,15 +16,15 @@
16
16
  "platform": "win32",
17
17
  "arch": "x64",
18
18
  "libc": null,
19
- "artifactSha256": "0b6374ac67d414e13e2e02be6be96a388ed9096f517587f812c533c5fb37992f",
19
+ "artifactSha256": "a83417f73e4210940eef71c672d093af314be694ac60b961be41cf126f16ab8b",
20
20
  "sbom": {
21
21
  "format": "CycloneDX-1.5",
22
22
  "path": "planu-core.win32-x64-msvc.node.sbom.json",
23
- "sha256": "aaaafe7c267638012a520782ad059014a0641b55005e2a09a5bace53a00d3d3e"
23
+ "sha256": "a7eb5568757d44ba58a01b986573da423b7caa512d122e0de42fbe4f8a6d23c6"
24
24
  },
25
25
  "provenance": {
26
26
  "builder": "scripts/build-rust-local.sh",
27
- "sourceCommit": "888ffb9504055a10ea38d0c31dd0c9881139e88c",
27
+ "sourceCommit": "2419aedc35345da335c3469eaf80b19f428fd53b",
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": "zUMqIwI3WSWZ0QbesWdiZfnIlwAnwkhfwN2Us0lmUCtoKOtQEkqckxNZCY7tuxbzhS091T5LUp7Y+HOUeUViCg=="
36
+ "value": "cOjoj33opvadNE+ow9eezowf1I8vVGssK+KioLL5P2HfMP6UmwG0MVJNCpGj4h6JMF+qnu4/k7WMEVHmEcSgAA=="
37
37
  }
38
38
  }
@@ -4,14 +4,14 @@
4
4
  "version": 1,
5
5
  "metadata": {
6
6
  "component": {
7
- "bom-ref": "pkg:cargo/planu-core@5.3.24",
7
+ "bom-ref": "pkg:cargo/planu-core@5.3.26",
8
8
  "type": "library",
9
9
  "name": "planu-core",
10
- "version": "5.3.24",
10
+ "version": "5.3.26",
11
11
  "hashes": [
12
12
  {
13
13
  "alg": "SHA-256",
14
- "content": "0b6374ac67d414e13e2e02be6be96a388ed9096f517587f812c533c5fb37992f"
14
+ "content": "a83417f73e4210940eef71c672d093af314be694ac60b961be41cf126f16ab8b"
15
15
  }
16
16
  ]
17
17
  }
@@ -1106,7 +1106,7 @@
1106
1106
  "dependsOn": []
1107
1107
  },
1108
1108
  {
1109
- "ref": "pkg:cargo/planu-core@5.3.24",
1109
+ "ref": "pkg:cargo/planu-core@5.3.26",
1110
1110
  "dependsOn": [
1111
1111
  "pkg:cargo/core-foundation@0.10.1",
1112
1112
  "pkg:cargo/hmac@0.12.1",
@@ -0,0 +1,2 @@
1
+ export declare function assertPathWithinBase(baseDir: string, candidatePath: string): string;
2
+ //# sourceMappingURL=assert-within-project.d.ts.map
@@ -0,0 +1,14 @@
1
+ import { isAbsolute, relative, resolve } from 'node:path';
2
+ export function assertPathWithinBase(baseDir, candidatePath) {
3
+ const resolvedBase = resolve(baseDir);
4
+ const resolvedCandidate = resolve(candidatePath);
5
+ const rel = relative(resolvedBase, resolvedCandidate);
6
+ if (rel === '') {
7
+ return resolvedCandidate;
8
+ }
9
+ if (rel.startsWith('..') || isAbsolute(rel)) {
10
+ throw new Error(`Path escapes the project directory: resolved candidate "${resolvedCandidate}" is not within base "${resolvedBase}".`);
11
+ }
12
+ return resolvedCandidate;
13
+ }
14
+ //# sourceMappingURL=assert-within-project.js.map