@planu/cli 5.3.22 → 5.3.23
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.
- package/CHANGELOG.md +6 -0
- package/dist/engine/planu-core.darwin-arm64.node.manifest.json +7 -7
- package/dist/engine/planu-core.darwin-arm64.node.sbom.json +4 -4
- package/dist/engine/planu-core.darwin-x64.node.manifest.json +7 -7
- package/dist/engine/planu-core.darwin-x64.node.sbom.json +4 -4
- package/dist/engine/planu-core.linux-arm64-gnu.node.manifest.json +7 -7
- package/dist/engine/planu-core.linux-arm64-gnu.node.sbom.json +4 -4
- package/dist/engine/planu-core.linux-arm64-musl.node.manifest.json +7 -7
- package/dist/engine/planu-core.linux-arm64-musl.node.sbom.json +4 -4
- package/dist/engine/planu-core.linux-x64-gnu.node.manifest.json +7 -7
- package/dist/engine/planu-core.linux-x64-gnu.node.sbom.json +4 -4
- package/dist/engine/planu-core.linux-x64-musl.node.manifest.json +7 -7
- package/dist/engine/planu-core.linux-x64-musl.node.sbom.json +4 -4
- package/dist/engine/planu-core.win32-arm64-msvc.node.manifest.json +7 -7
- package/dist/engine/planu-core.win32-arm64-msvc.node.sbom.json +4 -4
- package/dist/engine/planu-core.win32-x64-msvc.node.manifest.json +7 -7
- package/dist/engine/planu-core.win32-x64-msvc.node.sbom.json +4 -4
- package/dist/tools/create-spec.d.ts +21 -0
- package/dist/tools/create-spec.js +92 -2
- package/package.json +9 -9
- package/planu-native.json +1 -1
- package/planu-plugin.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
|
-
"cliVersion": "5.3.
|
|
4
|
-
"engineVersion": "5.3.
|
|
5
|
-
"buildId": "1-5.3.
|
|
3
|
+
"cliVersion": "5.3.23",
|
|
4
|
+
"engineVersion": "5.3.23",
|
|
5
|
+
"buildId": "1-5.3.23-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": "
|
|
20
|
+
"artifactSha256": "df04e55326ab8279dfddd1e0607a66b7b4fa6e0893f32c9c5adff2326a60a2a0",
|
|
21
21
|
"sbom": {
|
|
22
22
|
"format": "CycloneDX-1.5",
|
|
23
23
|
"path": "planu-core.darwin-arm64.node.sbom.json",
|
|
24
|
-
"sha256": "
|
|
24
|
+
"sha256": "be63f58e999d18e1ba92aea4ddbd6eeab4dcf8de3a574d30d78b0eb18f6dd654"
|
|
25
25
|
},
|
|
26
26
|
"provenance": {
|
|
27
27
|
"builder": "scripts/build-rust-local.sh",
|
|
28
|
-
"sourceCommit": "
|
|
28
|
+
"sourceCommit": "269abdfd76527c0cc945512d5d69ce483e38a97d",
|
|
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": "
|
|
37
|
+
"value": "jEbAh2q227j0tKF5GzCx49OKaaBSZwkjGFSgODdawYyMMzQJR/8bwBQl4eZaRMRalLv4O5VCrT87z6oIwf53AQ=="
|
|
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.
|
|
7
|
+
"bom-ref": "pkg:cargo/planu-core@5.3.23",
|
|
8
8
|
"type": "library",
|
|
9
9
|
"name": "planu-core",
|
|
10
|
-
"version": "5.3.
|
|
10
|
+
"version": "5.3.23",
|
|
11
11
|
"hashes": [
|
|
12
12
|
{
|
|
13
13
|
"alg": "SHA-256",
|
|
14
|
-
"content": "
|
|
14
|
+
"content": "df04e55326ab8279dfddd1e0607a66b7b4fa6e0893f32c9c5adff2326a60a2a0"
|
|
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.
|
|
1109
|
+
"ref": "pkg:cargo/planu-core@5.3.23",
|
|
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.
|
|
4
|
-
"engineVersion": "5.3.
|
|
5
|
-
"buildId": "1-5.3.
|
|
3
|
+
"cliVersion": "5.3.23",
|
|
4
|
+
"engineVersion": "5.3.23",
|
|
5
|
+
"buildId": "1-5.3.23-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": "
|
|
20
|
+
"artifactSha256": "3c8382e950e1dd36777d61fa7b60bc01d1af28fb33834bd94e48b499510a3d4e",
|
|
21
21
|
"sbom": {
|
|
22
22
|
"format": "CycloneDX-1.5",
|
|
23
23
|
"path": "planu-core.darwin-x64.node.sbom.json",
|
|
24
|
-
"sha256": "
|
|
24
|
+
"sha256": "1b319f2b236037e49c739cf5e240629987526680ce6f1784aca3067ab6144ac4"
|
|
25
25
|
},
|
|
26
26
|
"provenance": {
|
|
27
27
|
"builder": "scripts/build-rust-local.sh",
|
|
28
|
-
"sourceCommit": "
|
|
28
|
+
"sourceCommit": "269abdfd76527c0cc945512d5d69ce483e38a97d",
|
|
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": "
|
|
37
|
+
"value": "JpzKHUqqDdXB83C4dEwzlMntsYfBkkpt/oGrayfIT7v9UpUZ9T2+gIckQ0t9eLzhkfvjrScu/SxaN/+YuBSeAw=="
|
|
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.
|
|
7
|
+
"bom-ref": "pkg:cargo/planu-core@5.3.23",
|
|
8
8
|
"type": "library",
|
|
9
9
|
"name": "planu-core",
|
|
10
|
-
"version": "5.3.
|
|
10
|
+
"version": "5.3.23",
|
|
11
11
|
"hashes": [
|
|
12
12
|
{
|
|
13
13
|
"alg": "SHA-256",
|
|
14
|
-
"content": "
|
|
14
|
+
"content": "3c8382e950e1dd36777d61fa7b60bc01d1af28fb33834bd94e48b499510a3d4e"
|
|
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.
|
|
1109
|
+
"ref": "pkg:cargo/planu-core@5.3.23",
|
|
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.
|
|
4
|
-
"engineVersion": "5.3.
|
|
5
|
-
"buildId": "1-5.3.
|
|
3
|
+
"cliVersion": "5.3.23",
|
|
4
|
+
"engineVersion": "5.3.23",
|
|
5
|
+
"buildId": "1-5.3.23-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": "
|
|
19
|
+
"artifactSha256": "581c4631563fd02aad49300b604d8becb71b6eec6d515e8525724f5e8a76d3e7",
|
|
20
20
|
"sbom": {
|
|
21
21
|
"format": "CycloneDX-1.5",
|
|
22
22
|
"path": "planu-core.linux-arm64-gnu.node.sbom.json",
|
|
23
|
-
"sha256": "
|
|
23
|
+
"sha256": "d24b2ccaf35573cd5cb80fc16bd902aee49c23510d6517831164a38763a90608"
|
|
24
24
|
},
|
|
25
25
|
"provenance": {
|
|
26
26
|
"builder": "scripts/build-rust-local.sh",
|
|
27
|
-
"sourceCommit": "
|
|
27
|
+
"sourceCommit": "269abdfd76527c0cc945512d5d69ce483e38a97d",
|
|
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": "
|
|
36
|
+
"value": "raQa9KCXmVn19QcQHXWWqd4TUl2+Ma2FIqr0FK7SSQV6FCSfiDB+kTUsO0eaXrRRgg15hyQWik5LWS/MWku0Dg=="
|
|
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.
|
|
7
|
+
"bom-ref": "pkg:cargo/planu-core@5.3.23",
|
|
8
8
|
"type": "library",
|
|
9
9
|
"name": "planu-core",
|
|
10
|
-
"version": "5.3.
|
|
10
|
+
"version": "5.3.23",
|
|
11
11
|
"hashes": [
|
|
12
12
|
{
|
|
13
13
|
"alg": "SHA-256",
|
|
14
|
-
"content": "
|
|
14
|
+
"content": "581c4631563fd02aad49300b604d8becb71b6eec6d515e8525724f5e8a76d3e7"
|
|
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.
|
|
1109
|
+
"ref": "pkg:cargo/planu-core@5.3.23",
|
|
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.
|
|
4
|
-
"engineVersion": "5.3.
|
|
5
|
-
"buildId": "1-5.3.
|
|
3
|
+
"cliVersion": "5.3.23",
|
|
4
|
+
"engineVersion": "5.3.23",
|
|
5
|
+
"buildId": "1-5.3.23-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": "
|
|
19
|
+
"artifactSha256": "f7161362df7874b4560ff697df62d350bb24e7d53540cd5a6ee92e2fe7478f36",
|
|
20
20
|
"sbom": {
|
|
21
21
|
"format": "CycloneDX-1.5",
|
|
22
22
|
"path": "planu-core.linux-arm64-musl.node.sbom.json",
|
|
23
|
-
"sha256": "
|
|
23
|
+
"sha256": "81da3a46f573b41a15d0407cd887c12c5cd6cbc8a8afe6a4c43159815c2361a0"
|
|
24
24
|
},
|
|
25
25
|
"provenance": {
|
|
26
26
|
"builder": "scripts/build-rust-local.sh",
|
|
27
|
-
"sourceCommit": "
|
|
27
|
+
"sourceCommit": "269abdfd76527c0cc945512d5d69ce483e38a97d",
|
|
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": "
|
|
36
|
+
"value": "2trXRLuXKSXjQH7wa6wJ/w2TLkj1AaabBArFyWzO0Kg578fHTXbPtTirjOCKKX2kOu3YikOqYcGtRko0fqzWBA=="
|
|
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.
|
|
7
|
+
"bom-ref": "pkg:cargo/planu-core@5.3.23",
|
|
8
8
|
"type": "library",
|
|
9
9
|
"name": "planu-core",
|
|
10
|
-
"version": "5.3.
|
|
10
|
+
"version": "5.3.23",
|
|
11
11
|
"hashes": [
|
|
12
12
|
{
|
|
13
13
|
"alg": "SHA-256",
|
|
14
|
-
"content": "
|
|
14
|
+
"content": "f7161362df7874b4560ff697df62d350bb24e7d53540cd5a6ee92e2fe7478f36"
|
|
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.
|
|
1109
|
+
"ref": "pkg:cargo/planu-core@5.3.23",
|
|
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.
|
|
4
|
-
"engineVersion": "5.3.
|
|
5
|
-
"buildId": "1-5.3.
|
|
3
|
+
"cliVersion": "5.3.23",
|
|
4
|
+
"engineVersion": "5.3.23",
|
|
5
|
+
"buildId": "1-5.3.23-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": "
|
|
19
|
+
"artifactSha256": "7dc81ad00268ae85e7f5421d33d0c83b3b1f51bc43290f3cb0d2b89bafd9c4e7",
|
|
20
20
|
"sbom": {
|
|
21
21
|
"format": "CycloneDX-1.5",
|
|
22
22
|
"path": "planu-core.linux-x64-gnu.node.sbom.json",
|
|
23
|
-
"sha256": "
|
|
23
|
+
"sha256": "80ffb59c763c08d107de1e6ddb1bd2ceb6d77d705d060af6ad154a7a5dd8a4cd"
|
|
24
24
|
},
|
|
25
25
|
"provenance": {
|
|
26
26
|
"builder": "scripts/build-rust-local.sh",
|
|
27
|
-
"sourceCommit": "
|
|
27
|
+
"sourceCommit": "269abdfd76527c0cc945512d5d69ce483e38a97d",
|
|
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": "
|
|
36
|
+
"value": "jvFw6dFcAM34ZZVPqtPZ5DjV/ZovZGrmKkTP4lIgJomxnlp4T7XTxacU57Q7rXPypfxyt94m/WkZvdCkonm+AA=="
|
|
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.
|
|
7
|
+
"bom-ref": "pkg:cargo/planu-core@5.3.23",
|
|
8
8
|
"type": "library",
|
|
9
9
|
"name": "planu-core",
|
|
10
|
-
"version": "5.3.
|
|
10
|
+
"version": "5.3.23",
|
|
11
11
|
"hashes": [
|
|
12
12
|
{
|
|
13
13
|
"alg": "SHA-256",
|
|
14
|
-
"content": "
|
|
14
|
+
"content": "7dc81ad00268ae85e7f5421d33d0c83b3b1f51bc43290f3cb0d2b89bafd9c4e7"
|
|
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.
|
|
1109
|
+
"ref": "pkg:cargo/planu-core@5.3.23",
|
|
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.
|
|
4
|
-
"engineVersion": "5.3.
|
|
5
|
-
"buildId": "1-5.3.
|
|
3
|
+
"cliVersion": "5.3.23",
|
|
4
|
+
"engineVersion": "5.3.23",
|
|
5
|
+
"buildId": "1-5.3.23-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": "
|
|
19
|
+
"artifactSha256": "4d54714a12ef1863a00369ac90da8d7ae3548818dc838d66dd856e00c073a298",
|
|
20
20
|
"sbom": {
|
|
21
21
|
"format": "CycloneDX-1.5",
|
|
22
22
|
"path": "planu-core.linux-x64-musl.node.sbom.json",
|
|
23
|
-
"sha256": "
|
|
23
|
+
"sha256": "16140edf7ef98106200cd68aed27910378b7896412f10e110bb3128861e73f9b"
|
|
24
24
|
},
|
|
25
25
|
"provenance": {
|
|
26
26
|
"builder": "scripts/build-rust-local.sh",
|
|
27
|
-
"sourceCommit": "
|
|
27
|
+
"sourceCommit": "269abdfd76527c0cc945512d5d69ce483e38a97d",
|
|
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": "
|
|
36
|
+
"value": "Uzzec4U5e20u2dFSwP11L+cTyMyUWQ/4QqA+VtTD8ZOqIC7nfuFHajyE15/jWiODhNv6N4DEqAafrJ7En8gdDg=="
|
|
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.
|
|
7
|
+
"bom-ref": "pkg:cargo/planu-core@5.3.23",
|
|
8
8
|
"type": "library",
|
|
9
9
|
"name": "planu-core",
|
|
10
|
-
"version": "5.3.
|
|
10
|
+
"version": "5.3.23",
|
|
11
11
|
"hashes": [
|
|
12
12
|
{
|
|
13
13
|
"alg": "SHA-256",
|
|
14
|
-
"content": "
|
|
14
|
+
"content": "4d54714a12ef1863a00369ac90da8d7ae3548818dc838d66dd856e00c073a298"
|
|
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.
|
|
1109
|
+
"ref": "pkg:cargo/planu-core@5.3.23",
|
|
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.
|
|
4
|
-
"engineVersion": "5.3.
|
|
5
|
-
"buildId": "1-5.3.
|
|
3
|
+
"cliVersion": "5.3.23",
|
|
4
|
+
"engineVersion": "5.3.23",
|
|
5
|
+
"buildId": "1-5.3.23-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": "
|
|
19
|
+
"artifactSha256": "f5e3c5aa3482f0f68f6c0306b83e46a957fa5a3d72adf0a42667e1a7c64557b4",
|
|
20
20
|
"sbom": {
|
|
21
21
|
"format": "CycloneDX-1.5",
|
|
22
22
|
"path": "planu-core.win32-arm64-msvc.node.sbom.json",
|
|
23
|
-
"sha256": "
|
|
23
|
+
"sha256": "4e64e359b4286ff8a5f46fe93dffa96d61c867ae041ad3f9a63257f97d73df32"
|
|
24
24
|
},
|
|
25
25
|
"provenance": {
|
|
26
26
|
"builder": "scripts/build-rust-local.sh",
|
|
27
|
-
"sourceCommit": "
|
|
27
|
+
"sourceCommit": "269abdfd76527c0cc945512d5d69ce483e38a97d",
|
|
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": "
|
|
36
|
+
"value": "qo/Huts1HZBt65FaVIFISGQEWQl4ltLwbUQwatHHIEFkdCV9IS7dZV/FeSGFFkGaELdEgjT0RBW6DnifQMvgBg=="
|
|
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.
|
|
7
|
+
"bom-ref": "pkg:cargo/planu-core@5.3.23",
|
|
8
8
|
"type": "library",
|
|
9
9
|
"name": "planu-core",
|
|
10
|
-
"version": "5.3.
|
|
10
|
+
"version": "5.3.23",
|
|
11
11
|
"hashes": [
|
|
12
12
|
{
|
|
13
13
|
"alg": "SHA-256",
|
|
14
|
-
"content": "
|
|
14
|
+
"content": "f5e3c5aa3482f0f68f6c0306b83e46a957fa5a3d72adf0a42667e1a7c64557b4"
|
|
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.
|
|
1109
|
+
"ref": "pkg:cargo/planu-core@5.3.23",
|
|
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.
|
|
4
|
-
"engineVersion": "5.3.
|
|
5
|
-
"buildId": "1-5.3.
|
|
3
|
+
"cliVersion": "5.3.23",
|
|
4
|
+
"engineVersion": "5.3.23",
|
|
5
|
+
"buildId": "1-5.3.23-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": "
|
|
19
|
+
"artifactSha256": "ff194a262e31bd30f9225c3980a9d2b52048c683ba55e9fca7263f41cb7ccdf5",
|
|
20
20
|
"sbom": {
|
|
21
21
|
"format": "CycloneDX-1.5",
|
|
22
22
|
"path": "planu-core.win32-x64-msvc.node.sbom.json",
|
|
23
|
-
"sha256": "
|
|
23
|
+
"sha256": "5453a2e1fe0092ec6a24a64b8950bdf1764a3e4a0c9241992d003c0b681401ea"
|
|
24
24
|
},
|
|
25
25
|
"provenance": {
|
|
26
26
|
"builder": "scripts/build-rust-local.sh",
|
|
27
|
-
"sourceCommit": "
|
|
27
|
+
"sourceCommit": "269abdfd76527c0cc945512d5d69ce483e38a97d",
|
|
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": "
|
|
36
|
+
"value": "PUxswH5ZDjX5DdMMdF1I8emOHdaeug54P2D87YYqnWrOMbVPJ+PzXHTDrJA+J1CjbI1tpGNajl5raINMwHbaBA=="
|
|
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.
|
|
7
|
+
"bom-ref": "pkg:cargo/planu-core@5.3.23",
|
|
8
8
|
"type": "library",
|
|
9
9
|
"name": "planu-core",
|
|
10
|
-
"version": "5.3.
|
|
10
|
+
"version": "5.3.23",
|
|
11
11
|
"hashes": [
|
|
12
12
|
{
|
|
13
13
|
"alg": "SHA-256",
|
|
14
|
-
"content": "
|
|
14
|
+
"content": "ff194a262e31bd30f9225c3980a9d2b52048c683ba55e9fca7263f41cb7ccdf5"
|
|
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.
|
|
1109
|
+
"ref": "pkg:cargo/planu-core@5.3.23",
|
|
1110
1110
|
"dependsOn": [
|
|
1111
1111
|
"pkg:cargo/core-foundation@0.10.1",
|
|
1112
1112
|
"pkg:cargo/hmac@0.12.1",
|
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
import type { CreateSpecInput, ToolResult } from '../types/index.js';
|
|
2
2
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
|
+
import { type LeanFileEntry } from '../engine/spec-format/lean-technical-generator.js';
|
|
4
|
+
import { type AutopilotAnalysis } from './create-spec/autopilot-analyzer.js';
|
|
5
|
+
import type { TechnicalReferenceGroundingRecord } from '../types/spec-grounding.js';
|
|
6
|
+
export declare function groundTechnicalFiles(input: {
|
|
7
|
+
files: {
|
|
8
|
+
create: LeanFileEntry[];
|
|
9
|
+
modify: LeanFileEntry[];
|
|
10
|
+
test: LeanFileEntry[];
|
|
11
|
+
};
|
|
12
|
+
projectPath: string;
|
|
13
|
+
userInput: string;
|
|
14
|
+
autopilot: AutopilotAnalysis;
|
|
15
|
+
}): Promise<{
|
|
16
|
+
files: {
|
|
17
|
+
create: LeanFileEntry[];
|
|
18
|
+
modify: LeanFileEntry[];
|
|
19
|
+
test: LeanFileEntry[];
|
|
20
|
+
};
|
|
21
|
+
records: TechnicalReferenceGroundingRecord[];
|
|
22
|
+
advisoryFiles: LeanFileEntry[];
|
|
23
|
+
}>;
|
|
3
24
|
export declare function resolveGroundedVerificationCommands(projectPath: string, testPaths: string[]): Promise<string[]>;
|
|
4
25
|
export declare function handleCreateSpec(inputParams: CreateSpecInput, server?: McpServer): Promise<ToolResult>;
|
|
5
26
|
//# sourceMappingURL=create-spec.d.ts.map
|
|
@@ -102,7 +102,7 @@ async function resolveTechnicalFiles(input) {
|
|
|
102
102
|
}
|
|
103
103
|
return { create: [], modify: [], test: [] };
|
|
104
104
|
}
|
|
105
|
-
async function groundTechnicalFiles(input) {
|
|
105
|
+
export async function groundTechnicalFiles(input) {
|
|
106
106
|
const userInput = input.userInput.toLowerCase();
|
|
107
107
|
const autopilotPaths = new Set([
|
|
108
108
|
...input.autopilot.suggestedFiles.modify.map((file) => file.path),
|
|
@@ -118,7 +118,7 @@ async function groundTechnicalFiles(input) {
|
|
|
118
118
|
const advisoryFiles = [];
|
|
119
119
|
for (const section of ['create', 'modify', 'test']) {
|
|
120
120
|
for (const file of input.files[section]) {
|
|
121
|
-
const pathInUserInput = userInput
|
|
121
|
+
const pathInUserInput = pathSurvivesNegativeClauseCheck(userInput, file.path.toLowerCase());
|
|
122
122
|
const exists = await pathExists(pathJoin(input.projectPath, file.path));
|
|
123
123
|
const fromAutopilot = autopilotPaths.has(file.path);
|
|
124
124
|
const derivedTest = section === 'test' && isDerivedFromGroundedSource(file.path, grounded.modify);
|
|
@@ -146,6 +146,96 @@ async function groundTechnicalFiles(input) {
|
|
|
146
146
|
}
|
|
147
147
|
return { files: grounded, records, advisoryFiles };
|
|
148
148
|
}
|
|
149
|
+
const NEGATIVE_WORK_CLAUSE_RE = /\b(?:remains? unchanged|is not touched|not touched|must not (?:change|be changed|be modified|touch|be touched)|unchanged|out of scope)\b/;
|
|
150
|
+
const CLAUSE_DELIMITERS = ['\n', '. ', '; ', ', and ', ', but '];
|
|
151
|
+
const SENTENCE_DELIMITERS = ['\n', '. '];
|
|
152
|
+
const BACK_REFERENCE_SUBJECT_RE = /^(?:and\s+|but\s+)?(?:it|they|this|that|these|those)\s+(?:must|remains?|stays?|is|are|was|were|should|shall|will|cannot|can|does|do)\b/;
|
|
153
|
+
const PATH_LIKE_TOKEN_RE = /\S+\/\S*\.\w+/;
|
|
154
|
+
const CLAUSE_SPLIT_RE = new RegExp(CLAUSE_DELIMITERS.map((delimiter) => delimiter.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|'), 'g');
|
|
155
|
+
function computeDelimitedBounds(text, matchIndex, matchLength, delimiters) {
|
|
156
|
+
const startCandidates = delimiters.map((delimiter) => {
|
|
157
|
+
const index = text.lastIndexOf(delimiter, matchIndex);
|
|
158
|
+
return index === -1 ? -1 : index + delimiter.length;
|
|
159
|
+
});
|
|
160
|
+
const start = Math.max(0, ...startCandidates);
|
|
161
|
+
const searchAfter = matchIndex + matchLength;
|
|
162
|
+
const endCandidates = delimiters
|
|
163
|
+
.map((delimiter) => text.indexOf(delimiter, searchAfter))
|
|
164
|
+
.filter((value) => value !== -1);
|
|
165
|
+
const end = endCandidates.length > 0 ? Math.min(...endCandidates) : text.length;
|
|
166
|
+
return [start, end];
|
|
167
|
+
}
|
|
168
|
+
function findClauseBounds(text, matchIndex, matchLength) {
|
|
169
|
+
return computeDelimitedBounds(text, matchIndex, matchLength, CLAUSE_DELIMITERS);
|
|
170
|
+
}
|
|
171
|
+
function findSentenceBounds(text, matchIndex, matchLength) {
|
|
172
|
+
return computeDelimitedBounds(text, matchIndex, matchLength, SENTENCE_DELIMITERS);
|
|
173
|
+
}
|
|
174
|
+
function splitClausesWithOffsets(sentence, sentenceStart) {
|
|
175
|
+
const clauses = [];
|
|
176
|
+
let cursor = 0;
|
|
177
|
+
CLAUSE_SPLIT_RE.lastIndex = 0;
|
|
178
|
+
let delimiterMatch = CLAUSE_SPLIT_RE.exec(sentence);
|
|
179
|
+
while (delimiterMatch !== null) {
|
|
180
|
+
clauses.push([sentence.slice(cursor, delimiterMatch.index), sentenceStart + cursor]);
|
|
181
|
+
cursor = delimiterMatch.index + delimiterMatch[0].length;
|
|
182
|
+
delimiterMatch = CLAUSE_SPLIT_RE.exec(sentence);
|
|
183
|
+
}
|
|
184
|
+
clauses.push([sentence.slice(cursor), sentenceStart + cursor]);
|
|
185
|
+
return clauses;
|
|
186
|
+
}
|
|
187
|
+
function sentenceHasBackReferencedNegation(userInput, matchIndex, matchLength) {
|
|
188
|
+
const [sentenceStart, sentenceEnd] = findSentenceBounds(userInput, matchIndex, matchLength);
|
|
189
|
+
const sentence = userInput.slice(sentenceStart, sentenceEnd);
|
|
190
|
+
const clauses = splitClausesWithOffsets(sentence, sentenceStart);
|
|
191
|
+
const matchEnd = matchIndex + matchLength;
|
|
192
|
+
const currentClauseIndex = clauses.findIndex(([clauseText, clauseStart]) => matchIndex >= clauseStart && matchEnd <= clauseStart + clauseText.length);
|
|
193
|
+
if (currentClauseIndex === -1) {
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
const currentClauseEntry = clauses[currentClauseIndex];
|
|
197
|
+
if (currentClauseEntry === undefined) {
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
const [currentClauseText, currentClauseStart] = currentClauseEntry;
|
|
201
|
+
const currentClauseTail = currentClauseText.slice(matchEnd - currentClauseStart);
|
|
202
|
+
if (PATH_LIKE_TOKEN_RE.test(currentClauseTail)) {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
for (let index = currentClauseIndex + 1; index < clauses.length; index += 1) {
|
|
206
|
+
const clauseEntry = clauses[index];
|
|
207
|
+
if (clauseEntry === undefined) {
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
const [clauseText] = clauseEntry;
|
|
211
|
+
if (PATH_LIKE_TOKEN_RE.test(clauseText)) {
|
|
212
|
+
return false;
|
|
213
|
+
}
|
|
214
|
+
const trimmedClause = clauseText.replace(/^\s+/, '');
|
|
215
|
+
if (BACK_REFERENCE_SUBJECT_RE.test(trimmedClause) &&
|
|
216
|
+
NEGATIVE_WORK_CLAUSE_RE.test(trimmedClause)) {
|
|
217
|
+
return true;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
function pathSurvivesNegativeClauseCheck(userInput, lowerPath) {
|
|
223
|
+
let searchFrom = 0;
|
|
224
|
+
for (;;) {
|
|
225
|
+
const matchIndex = userInput.indexOf(lowerPath, searchFrom);
|
|
226
|
+
if (matchIndex === -1) {
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
const [clauseStart, clauseEnd] = findClauseBounds(userInput, matchIndex, lowerPath.length);
|
|
230
|
+
const clause = userInput.slice(clauseStart, clauseEnd);
|
|
231
|
+
const ownClauseNegated = NEGATIVE_WORK_CLAUSE_RE.test(clause);
|
|
232
|
+
const backReferencedNegation = sentenceHasBackReferencedNegation(userInput, matchIndex, lowerPath.length);
|
|
233
|
+
if (!ownClauseNegated && !backReferencedNegation) {
|
|
234
|
+
return true;
|
|
235
|
+
}
|
|
236
|
+
searchFrom = matchIndex + lowerPath.length;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
149
239
|
function isDerivedFromGroundedSource(testPath, modifyFiles) {
|
|
150
240
|
return modifyFiles.some((file) => {
|
|
151
241
|
const withoutSrc = file.path.startsWith('src/') ? file.path.slice(4) : file.path;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@planu/cli",
|
|
3
|
-
"version": "5.3.
|
|
3
|
+
"version": "5.3.23",
|
|
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",
|
|
@@ -36,14 +36,14 @@
|
|
|
36
36
|
"packageName": "@planu/core"
|
|
37
37
|
},
|
|
38
38
|
"optionalDependencies": {
|
|
39
|
-
"@planu/core-darwin-arm64": "5.3.
|
|
40
|
-
"@planu/core-darwin-x64": "5.3.
|
|
41
|
-
"@planu/core-linux-arm64-gnu": "5.3.
|
|
42
|
-
"@planu/core-linux-arm64-musl": "5.3.
|
|
43
|
-
"@planu/core-linux-x64-gnu": "5.3.
|
|
44
|
-
"@planu/core-linux-x64-musl": "5.3.
|
|
45
|
-
"@planu/core-win32-arm64-msvc": "5.3.
|
|
46
|
-
"@planu/core-win32-x64-msvc": "5.3.
|
|
39
|
+
"@planu/core-darwin-arm64": "5.3.23",
|
|
40
|
+
"@planu/core-darwin-x64": "5.3.23",
|
|
41
|
+
"@planu/core-linux-arm64-gnu": "5.3.23",
|
|
42
|
+
"@planu/core-linux-arm64-musl": "5.3.23",
|
|
43
|
+
"@planu/core-linux-x64-gnu": "5.3.23",
|
|
44
|
+
"@planu/core-linux-x64-musl": "5.3.23",
|
|
45
|
+
"@planu/core-win32-arm64-msvc": "5.3.23",
|
|
46
|
+
"@planu/core-win32-x64-msvc": "5.3.23"
|
|
47
47
|
},
|
|
48
48
|
"engines": {
|
|
49
49
|
"node": ">=24.0.0"
|
package/planu-native.json
CHANGED
package/planu-plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
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": "5.3.
|
|
5
|
+
"version": "5.3.23",
|
|
6
6
|
"icon": "assets/plugin/icon.svg",
|
|
7
7
|
"command": ["npx", "@planu/cli@latest"],
|
|
8
8
|
"packageName": "@planu/cli",
|