@planu/cli 5.1.1 → 5.3.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.
- package/CHANGELOG.md +54 -0
- package/dist/cli/commands/doctor.d.ts +22 -0
- package/dist/cli/commands/doctor.js +176 -2
- package/dist/config/environment-schema.json +161 -21
- package/dist/config/release-policy.json +0 -8
- package/dist/engine/autopilot/bootstrap.js +27 -0
- package/dist/engine/core-bridge.d.ts +28 -0
- package/dist/engine/core-bridge.js +67 -0
- package/dist/engine/drift-monitor.js +16 -18
- package/dist/engine/living-spec/hash-tracker.js +26 -28
- 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/engine/spec-language/english-only.d.ts +14 -0
- package/dist/engine/spec-language/english-only.js +58 -0
- package/dist/engine/spec-migrator/criteria-scanner.js +11 -13
- package/dist/engine/spec-migrator/drift-detector.js +10 -12
- package/dist/engine/validation/validation-freshness.d.ts +20 -1
- package/dist/engine/validation/validation-freshness.js +181 -21
- package/dist/engine/validator/analyzer.d.ts +5 -2
- package/dist/engine/validator/analyzer.js +81 -23
- package/dist/engine/validator/deep-code-checker.d.ts +10 -0
- package/dist/engine/validator/deep-code-checker.js +33 -0
- package/dist/engine/validator/test-evidence-grounding.d.ts +56 -0
- package/dist/engine/validator/test-evidence-grounding.js +187 -0
- package/dist/engine/validator.js +15 -4
- package/dist/engine/vector-store/tfidf.d.ts +13 -9
- package/dist/engine/vector-store/tfidf.js +26 -0
- package/dist/engine/worker-config-loader.d.ts +1 -1
- package/dist/engine/worker-config-loader.js +1 -11
- package/dist/engine/workers/schema.d.ts +0 -8
- package/dist/engine/workers/schema.js +0 -1
- package/dist/i18n/index.d.ts +18 -0
- package/dist/i18n/index.js +40 -1
- package/dist/storage/global-store.d.ts +9 -0
- package/dist/storage/global-store.js +23 -0
- package/dist/storage/semantic-index-store.d.ts +23 -0
- package/dist/storage/semantic-index-store.js +105 -0
- package/dist/storage/status-store/self-healing.js +15 -17
- package/dist/tools/challenge-spec/scenarios-utils.js +5 -1
- package/dist/tools/create-spec.js +60 -15
- package/dist/tools/init-project/handler.js +78 -25
- package/dist/tools/learn.js +10 -8
- package/dist/tools/registry/auth.js +1 -11
- package/dist/tools/semantic-search-handler.js +5 -6
- package/dist/tools/status-handler.js +19 -6
- package/dist/tools/validate.js +6 -2
- package/dist/tools/validation-loop-handler.js +16 -15
- package/dist/types/analysis.d.ts +2 -0
- package/dist/types/spec-language-translation.d.ts +18 -0
- package/dist/types/spec-language-translation.js +5 -0
- package/dist/types/spec-registry.d.ts +0 -2
- package/dist/types/status.d.ts +2 -0
- package/dist/types/validation-receipt.d.ts +7 -0
- package/dist/types/vector-store.d.ts +18 -0
- package/dist/types/workers.d.ts +0 -3
- package/package.json +20 -20
- package/planu-native.json +8 -29
- package/planu-plugin.json +1 -1
- package/dist/engine/security/cve-refresher.d.ts +0 -12
- package/dist/engine/security/cve-refresher.js +0 -128
|
@@ -12,6 +12,7 @@ import { detectMusl } from './native-platform.js';
|
|
|
12
12
|
import { findDuplicateBlocks } from './core-bridge-duplicate-blocks.js';
|
|
13
13
|
import { appendGapEntry, verifyGapsChain } from './core-bridge-gaps.js';
|
|
14
14
|
import { reportClassifiedDegradation } from '../errors/classified-degradation.js';
|
|
15
|
+
import { runNativeWorkerOperation } from './execution/native-worker-runtime.js';
|
|
15
16
|
export { negotiateNativeRuntime, NATIVE_CAPABILITY_ABI, NATIVE_NODE_API_ABI, NATIVE_PROTOCOL_ABI, RUNTIME_STORAGE_SCHEMA, };
|
|
16
17
|
const require = createRequire(import.meta.url);
|
|
17
18
|
const reportedDegradations = new Set();
|
|
@@ -678,9 +679,75 @@ export function fastSelectCompactGraphSlice(seeds, nodes, edges, policy, overrid
|
|
|
678
679
|
}
|
|
679
680
|
return tsSelectCompactGraphSlice(seeds, nodes, edges, limits);
|
|
680
681
|
}
|
|
682
|
+
// Main-thread dispatch strategy (SPEC-1344) -----------------------------------
|
|
683
|
+
// getNative() deliberately returns null on the main thread so long native FFI
|
|
684
|
+
// calls never block the event loop (see comment above getNative()). For hot
|
|
685
|
+
// paths that need acceleration anyway, dispatchViaWorker() moves the call onto
|
|
686
|
+
// the existing native-worker-dispatch.ts runtime (a worker thread, where
|
|
687
|
+
// isMainThread is false and native loads normally). If the worker fails to
|
|
688
|
+
// spawn, times out, or the operation isn't allowlisted, it falls back to the
|
|
689
|
+
// caller-supplied synchronous implementation so behavior never regresses.
|
|
690
|
+
const WORKER_DISPATCH_TIMEOUT_MS = 30_000;
|
|
691
|
+
const DEGRADATION_NOTICE_THRESHOLD_MS = 2_000;
|
|
692
|
+
async function dispatchViaWorker(operation, payload, projectId, syncFallback) {
|
|
693
|
+
const start = Date.now();
|
|
694
|
+
if (isMainThread && process.env.DISABLE_NATIVE_CORE !== '1') {
|
|
695
|
+
try {
|
|
696
|
+
const value = (await runNativeWorkerOperation({
|
|
697
|
+
operation,
|
|
698
|
+
payload,
|
|
699
|
+
projectId,
|
|
700
|
+
deadlineAt: start + WORKER_DISPATCH_TIMEOUT_MS,
|
|
701
|
+
}));
|
|
702
|
+
return { value };
|
|
703
|
+
}
|
|
704
|
+
catch (error) {
|
|
705
|
+
/* reliability-optional: NATIVE_WORKER_DISPATCH_FAILED — falls through to sync fallback */
|
|
706
|
+
reportOnce(`NATIVE_WORKER_DISPATCH_FAILED:${operation}`, () => {
|
|
707
|
+
reportClassifiedDegradation('NATIVE_WORKER_DISPATCH_FAILED', error instanceof Error ? error : FALLBACK_ERROR);
|
|
708
|
+
});
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
const value = syncFallback();
|
|
712
|
+
const elapsedMs = Date.now() - start;
|
|
713
|
+
if (elapsedMs > DEGRADATION_NOTICE_THRESHOLD_MS) {
|
|
714
|
+
return {
|
|
715
|
+
value,
|
|
716
|
+
degradationNotice: `native engine unavailable — run planu doctor (fallback took ${String(elapsedMs)}ms)`,
|
|
717
|
+
};
|
|
718
|
+
}
|
|
719
|
+
return { value };
|
|
720
|
+
}
|
|
721
|
+
/** Worker-dispatched variant of {@link fastDetectDriftParallel} for main-thread callers. */
|
|
722
|
+
export async function fastDetectDriftParallelAsync(rootPath, keywords) {
|
|
723
|
+
return dispatchViaWorker('detect-drift', { rootPath, keywords }, fastHashProjectPath(rootPath), () => fastDetectDriftParallel(rootPath, keywords));
|
|
724
|
+
}
|
|
725
|
+
/** Worker-dispatched variant of {@link fastScanAndHashFiles} for main-thread callers. */
|
|
726
|
+
export async function fastScanAndHashFilesAsync(rootPath) {
|
|
727
|
+
return dispatchViaWorker('scan-and-hash-files', { rootPath }, fastHashProjectPath(rootPath), () => fastScanAndHashFiles(rootPath));
|
|
728
|
+
}
|
|
729
|
+
/** Worker-dispatched variant of {@link fastScanProjectMetadata} for main-thread callers. */
|
|
730
|
+
export async function fastScanProjectMetadataAsync(rootPath) {
|
|
731
|
+
return dispatchViaWorker('scan-project-metadata', { rootPath }, fastHashProjectPath(rootPath), () => fastScanProjectMetadata(rootPath));
|
|
732
|
+
}
|
|
733
|
+
/** Worker-dispatched variant of {@link fastScanSpecs} for main-thread callers. */
|
|
734
|
+
export async function fastScanSpecsAsync(rootPath) {
|
|
735
|
+
return dispatchViaWorker('scan-specs', { rootPath }, fastHashProjectPath(rootPath), () => fastScanSpecs(rootPath));
|
|
736
|
+
}
|
|
681
737
|
export const isNativeActive = () => getNative() !== null;
|
|
682
738
|
export const nativeLoadDiagnostic = () => {
|
|
683
739
|
refreshNativeCapabilityDiagnostic();
|
|
684
740
|
return loadDiagnostic;
|
|
685
741
|
};
|
|
742
|
+
/**
|
|
743
|
+
* Force a native load attempt regardless of the calling thread and return the
|
|
744
|
+
* resulting diagnostic. `nativeLoadDiagnostic()` alone only reports load state
|
|
745
|
+
* that some other main-thread-bypassing caller already triggered (e.g. the
|
|
746
|
+
* macOS Keychain port); this is the main-thread-safe way to actually probe
|
|
747
|
+
* native availability, used by `planu doctor`.
|
|
748
|
+
*/
|
|
749
|
+
export const probeNativeLoad = () => {
|
|
750
|
+
loadNative();
|
|
751
|
+
return nativeLoadDiagnostic();
|
|
752
|
+
};
|
|
686
753
|
//# sourceMappingURL=core-bridge.js.map
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import { readFile, stat } from 'node:fs/promises';
|
|
4
4
|
import path from 'node:path';
|
|
5
|
-
import {
|
|
5
|
+
import { fastScanProjectMetadataAsync, fastDetectDriftParallelAsync, } from './core-bridge.js';
|
|
6
6
|
import { readSpecTechnicalSection } from './spec-format/read-technical-section.js';
|
|
7
7
|
// ---------------------------------------------------------------------------
|
|
8
8
|
// Config builder
|
|
@@ -41,13 +41,11 @@ export async function computeSummaryReport(projectPath, specList, config, rules,
|
|
|
41
41
|
const alerts = [];
|
|
42
42
|
let drifted = 0;
|
|
43
43
|
let clean = 0;
|
|
44
|
-
// Layer 3 (AC coverage) Optimization:
|
|
45
|
-
//
|
|
46
|
-
//
|
|
47
|
-
const
|
|
48
|
-
const metadataMap =
|
|
49
|
-
? new Map(fastScanProjectMetadata(projectPath).map((m) => [m.path, m]))
|
|
50
|
-
: undefined;
|
|
44
|
+
// Layer 3 (AC coverage) Optimization: a single project-wide metadata scan
|
|
45
|
+
// (worker-dispatched when native is available) is much faster than doing it
|
|
46
|
+
// spec-by-spec.
|
|
47
|
+
const { value: projectMetadata } = await fastScanProjectMetadataAsync(projectPath);
|
|
48
|
+
const metadataMap = new Map(projectMetadata.map((m) => [m.path, m]));
|
|
51
49
|
for (const specId of specList) {
|
|
52
50
|
const technicalPath = specTechnicalPaths?.get(specId);
|
|
53
51
|
const { score: healthScore } = await computeDriftScore(projectPath, specId, undefined, technicalPath, metadataMap);
|
|
@@ -272,19 +270,19 @@ async function computeAcCoverageScore(criteria, filePaths) {
|
|
|
272
270
|
return 100;
|
|
273
271
|
}
|
|
274
272
|
let foundTerms;
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
273
|
+
const firstFile = existingFiles[0];
|
|
274
|
+
if (!firstFile) {
|
|
275
|
+
return 100;
|
|
276
|
+
}
|
|
277
|
+
try {
|
|
278
|
+
// Worker-dispatched (native when available) parallel search across the WHOLE
|
|
279
|
+
// project rooted at the first file's dir — much faster than reading files
|
|
280
|
+
// one by one, and never blocks the main thread's event loop.
|
|
283
281
|
const rootPath = path.dirname(firstFile); // Use first file's dir as heuristic
|
|
284
|
-
const result =
|
|
282
|
+
const { value: result } = await fastDetectDriftParallelAsync(rootPath, [...allTerms]);
|
|
285
283
|
foundTerms = new Set(result.foundKeywords);
|
|
286
284
|
}
|
|
287
|
-
|
|
285
|
+
catch {
|
|
288
286
|
// Fallback: Read all implementation files once
|
|
289
287
|
const fileContents = [];
|
|
290
288
|
for (const filePath of existingFiles) {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { createHash } from 'node:crypto';
|
|
4
4
|
import { readFile, stat } from 'node:fs/promises';
|
|
5
5
|
import { join } from 'node:path';
|
|
6
|
-
import {
|
|
6
|
+
import { fastScanAndHashFilesAsync } from '../core-bridge.js';
|
|
7
7
|
/**
|
|
8
8
|
* Compute SHA-256 hash of a file's content.
|
|
9
9
|
*/
|
|
@@ -34,38 +34,36 @@ export async function createFileHashEntry(projectPath, relativePath) {
|
|
|
34
34
|
* Create hash entries for multiple files.
|
|
35
35
|
*/
|
|
36
36
|
export async function createFileHashEntries(projectPath, relativePaths) {
|
|
37
|
-
// Try native
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
// File might have disappeared between scan and stat
|
|
58
|
-
}
|
|
37
|
+
// Try the accelerated bulk-hash path (worker-dispatched native, or the TS fallback).
|
|
38
|
+
try {
|
|
39
|
+
const { value: results } = await fastScanAndHashFilesAsync(projectPath);
|
|
40
|
+
const resultMap = new Map(results.map((r) => [r.path, r.hash]));
|
|
41
|
+
const entries = [];
|
|
42
|
+
for (const rel of relativePaths) {
|
|
43
|
+
const fullPath = join(projectPath, rel);
|
|
44
|
+
const hash = resultMap.get(fullPath);
|
|
45
|
+
if (hash) {
|
|
46
|
+
try {
|
|
47
|
+
const s = await stat(fullPath);
|
|
48
|
+
entries.push({
|
|
49
|
+
file: rel,
|
|
50
|
+
hash,
|
|
51
|
+
size: s.size,
|
|
52
|
+
snapshotAt: new Date().toISOString(),
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// File might have disappeared between scan and stat
|
|
59
57
|
}
|
|
60
|
-
}
|
|
61
|
-
if (entries.length > 0) {
|
|
62
|
-
return entries;
|
|
63
58
|
}
|
|
64
59
|
}
|
|
65
|
-
|
|
66
|
-
|
|
60
|
+
if (entries.length > 0) {
|
|
61
|
+
return entries;
|
|
67
62
|
}
|
|
68
63
|
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
console.warn('[Planu-RS] Bulk hash failed, falling back to Node.', err);
|
|
66
|
+
}
|
|
69
67
|
const entries = [];
|
|
70
68
|
for (const relativePath of relativePaths) {
|
|
71
69
|
const entry = await createFileHashEntry(projectPath, relativePath);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
|
-
"cliVersion": "5.
|
|
4
|
-
"engineVersion": "5.
|
|
5
|
-
"buildId": "1-5.
|
|
3
|
+
"cliVersion": "5.3.0",
|
|
4
|
+
"engineVersion": "5.3.0",
|
|
5
|
+
"buildId": "1-5.3.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": "
|
|
20
|
+
"artifactSha256": "07ca15496c8d00f9b1d56fc7147677079936735e0424cf94e55f3b76fd1a4557",
|
|
21
21
|
"sbom": {
|
|
22
22
|
"format": "CycloneDX-1.5",
|
|
23
23
|
"path": "planu-core.darwin-arm64.node.sbom.json",
|
|
24
|
-
"sha256": "
|
|
24
|
+
"sha256": "e53a5bcc426cd99534ce6f7e7934c810c8947959bc954791530bbf204206f595"
|
|
25
25
|
},
|
|
26
26
|
"provenance": {
|
|
27
27
|
"builder": "scripts/build-rust-local.sh",
|
|
28
|
-
"sourceCommit": "
|
|
28
|
+
"sourceCommit": "0bfc16bd342cfaa8ee48da5d9a1484df65bca782",
|
|
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": "xvRryyeJ5xYiQfQvv4CpxlvDfuUBXdeeTJGxnjoXsl9xzG2lpqT8ChZAcJrde0DEfyzfUkMYS24z2tk/3rapCQ=="
|
|
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.
|
|
7
|
+
"bom-ref": "pkg:cargo/planu-core@5.3.0",
|
|
8
8
|
"type": "library",
|
|
9
9
|
"name": "planu-core",
|
|
10
|
-
"version": "5.
|
|
10
|
+
"version": "5.3.0",
|
|
11
11
|
"hashes": [
|
|
12
12
|
{
|
|
13
13
|
"alg": "SHA-256",
|
|
14
|
-
"content": "
|
|
14
|
+
"content": "07ca15496c8d00f9b1d56fc7147677079936735e0424cf94e55f3b76fd1a4557"
|
|
15
15
|
}
|
|
16
16
|
]
|
|
17
17
|
}
|
|
@@ -1106,7 +1106,7 @@
|
|
|
1106
1106
|
"dependsOn": []
|
|
1107
1107
|
},
|
|
1108
1108
|
{
|
|
1109
|
-
"ref": "pkg:cargo/planu-core@5.
|
|
1109
|
+
"ref": "pkg:cargo/planu-core@5.3.0",
|
|
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.
|
|
4
|
-
"engineVersion": "5.
|
|
5
|
-
"buildId": "1-5.
|
|
3
|
+
"cliVersion": "5.3.0",
|
|
4
|
+
"engineVersion": "5.3.0",
|
|
5
|
+
"buildId": "1-5.3.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": "
|
|
20
|
+
"artifactSha256": "ac6926aab84f664e90e0fe75598b5a175a9952f57143c0a7cc560b00c8fc144c",
|
|
21
21
|
"sbom": {
|
|
22
22
|
"format": "CycloneDX-1.5",
|
|
23
23
|
"path": "planu-core.darwin-x64.node.sbom.json",
|
|
24
|
-
"sha256": "
|
|
24
|
+
"sha256": "39d80491638f2d1049abd0d2eecd79b231bce01d54752fe5dfad915112a56180"
|
|
25
25
|
},
|
|
26
26
|
"provenance": {
|
|
27
27
|
"builder": "scripts/build-rust-local.sh",
|
|
28
|
-
"sourceCommit": "
|
|
28
|
+
"sourceCommit": "0bfc16bd342cfaa8ee48da5d9a1484df65bca782",
|
|
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": "NjrWMYeOEazMOJpQQFUI+bOzrlvWKvBNehPqMqSHcQwW+TXNU/jn6EBbJKrkbywWNwdyE/UwCTZon7bi0ZaTAQ=="
|
|
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.
|
|
7
|
+
"bom-ref": "pkg:cargo/planu-core@5.3.0",
|
|
8
8
|
"type": "library",
|
|
9
9
|
"name": "planu-core",
|
|
10
|
-
"version": "5.
|
|
10
|
+
"version": "5.3.0",
|
|
11
11
|
"hashes": [
|
|
12
12
|
{
|
|
13
13
|
"alg": "SHA-256",
|
|
14
|
-
"content": "
|
|
14
|
+
"content": "ac6926aab84f664e90e0fe75598b5a175a9952f57143c0a7cc560b00c8fc144c"
|
|
15
15
|
}
|
|
16
16
|
]
|
|
17
17
|
}
|
|
@@ -1106,7 +1106,7 @@
|
|
|
1106
1106
|
"dependsOn": []
|
|
1107
1107
|
},
|
|
1108
1108
|
{
|
|
1109
|
-
"ref": "pkg:cargo/planu-core@5.
|
|
1109
|
+
"ref": "pkg:cargo/planu-core@5.3.0",
|
|
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.
|
|
4
|
-
"engineVersion": "5.
|
|
5
|
-
"buildId": "1-5.
|
|
3
|
+
"cliVersion": "5.3.0",
|
|
4
|
+
"engineVersion": "5.3.0",
|
|
5
|
+
"buildId": "1-5.3.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": "
|
|
19
|
+
"artifactSha256": "e81c28d359720a6e89c79c5425b0a60ffefd133f89774729a39252332a7d8098",
|
|
20
20
|
"sbom": {
|
|
21
21
|
"format": "CycloneDX-1.5",
|
|
22
22
|
"path": "planu-core.linux-arm64-gnu.node.sbom.json",
|
|
23
|
-
"sha256": "
|
|
23
|
+
"sha256": "6a9041cc34a0207f9cc42268313ab93bdce4df29f6152c2ec35d7eedc3fdc20f"
|
|
24
24
|
},
|
|
25
25
|
"provenance": {
|
|
26
26
|
"builder": "scripts/build-rust-local.sh",
|
|
27
|
-
"sourceCommit": "
|
|
27
|
+
"sourceCommit": "0bfc16bd342cfaa8ee48da5d9a1484df65bca782",
|
|
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": "nvRlOzgPcI6wLyjx8m+Pz/kbAeA1AF5DyiJ1OE55S7tOhpeiAoH+0YdYKIawJe5AdhVWHP6IYc81N1c7tnrGBg=="
|
|
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.
|
|
7
|
+
"bom-ref": "pkg:cargo/planu-core@5.3.0",
|
|
8
8
|
"type": "library",
|
|
9
9
|
"name": "planu-core",
|
|
10
|
-
"version": "5.
|
|
10
|
+
"version": "5.3.0",
|
|
11
11
|
"hashes": [
|
|
12
12
|
{
|
|
13
13
|
"alg": "SHA-256",
|
|
14
|
-
"content": "
|
|
14
|
+
"content": "e81c28d359720a6e89c79c5425b0a60ffefd133f89774729a39252332a7d8098"
|
|
15
15
|
}
|
|
16
16
|
]
|
|
17
17
|
}
|
|
@@ -1106,7 +1106,7 @@
|
|
|
1106
1106
|
"dependsOn": []
|
|
1107
1107
|
},
|
|
1108
1108
|
{
|
|
1109
|
-
"ref": "pkg:cargo/planu-core@5.
|
|
1109
|
+
"ref": "pkg:cargo/planu-core@5.3.0",
|
|
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.
|
|
4
|
-
"engineVersion": "5.
|
|
5
|
-
"buildId": "1-5.
|
|
3
|
+
"cliVersion": "5.3.0",
|
|
4
|
+
"engineVersion": "5.3.0",
|
|
5
|
+
"buildId": "1-5.3.0-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": "b0d4c6c83b85af40d685e0e005624c34b2a20d295f74c58615293322b42ba965",
|
|
20
20
|
"sbom": {
|
|
21
21
|
"format": "CycloneDX-1.5",
|
|
22
22
|
"path": "planu-core.linux-arm64-musl.node.sbom.json",
|
|
23
|
-
"sha256": "
|
|
23
|
+
"sha256": "16178e0bb9e2714e0e06b3a58c29fad539bf3c4c72eedd5f42fd4878fbf0079e"
|
|
24
24
|
},
|
|
25
25
|
"provenance": {
|
|
26
26
|
"builder": "scripts/build-rust-local.sh",
|
|
27
|
-
"sourceCommit": "
|
|
27
|
+
"sourceCommit": "0bfc16bd342cfaa8ee48da5d9a1484df65bca782",
|
|
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": "mwwwq8vQTDPmmIZ4ssE1UjYXd6UnhDmchDD+x/vqjr6HAIW2I4+q1mrf6vQ7X1ln/J+9lxJymJlyu4dA0QBTDQ=="
|
|
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.
|
|
7
|
+
"bom-ref": "pkg:cargo/planu-core@5.3.0",
|
|
8
8
|
"type": "library",
|
|
9
9
|
"name": "planu-core",
|
|
10
|
-
"version": "5.
|
|
10
|
+
"version": "5.3.0",
|
|
11
11
|
"hashes": [
|
|
12
12
|
{
|
|
13
13
|
"alg": "SHA-256",
|
|
14
|
-
"content": "
|
|
14
|
+
"content": "b0d4c6c83b85af40d685e0e005624c34b2a20d295f74c58615293322b42ba965"
|
|
15
15
|
}
|
|
16
16
|
]
|
|
17
17
|
}
|
|
@@ -1106,7 +1106,7 @@
|
|
|
1106
1106
|
"dependsOn": []
|
|
1107
1107
|
},
|
|
1108
1108
|
{
|
|
1109
|
-
"ref": "pkg:cargo/planu-core@5.
|
|
1109
|
+
"ref": "pkg:cargo/planu-core@5.3.0",
|
|
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.
|
|
4
|
-
"engineVersion": "5.
|
|
5
|
-
"buildId": "1-5.
|
|
3
|
+
"cliVersion": "5.3.0",
|
|
4
|
+
"engineVersion": "5.3.0",
|
|
5
|
+
"buildId": "1-5.3.0-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": "9981b33dbbe44fcab6da8e909a24d6b21317cfdd771946e65dba41879bb2972c",
|
|
20
20
|
"sbom": {
|
|
21
21
|
"format": "CycloneDX-1.5",
|
|
22
22
|
"path": "planu-core.linux-x64-gnu.node.sbom.json",
|
|
23
|
-
"sha256": "
|
|
23
|
+
"sha256": "a1a11390578e9504f2552572f013ef11c11b5c09d65ad3fd6c01f4cba17d3304"
|
|
24
24
|
},
|
|
25
25
|
"provenance": {
|
|
26
26
|
"builder": "scripts/build-rust-local.sh",
|
|
27
|
-
"sourceCommit": "
|
|
27
|
+
"sourceCommit": "0bfc16bd342cfaa8ee48da5d9a1484df65bca782",
|
|
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": "GcnOf/uVsph+kbzNir1EE5CBIzYB1bxBPIKm5BwVbmVSi7niwWlAuTgD8rHChM6yS47Y3Ms8nIxfy8oGXD3bBw=="
|
|
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.
|
|
7
|
+
"bom-ref": "pkg:cargo/planu-core@5.3.0",
|
|
8
8
|
"type": "library",
|
|
9
9
|
"name": "planu-core",
|
|
10
|
-
"version": "5.
|
|
10
|
+
"version": "5.3.0",
|
|
11
11
|
"hashes": [
|
|
12
12
|
{
|
|
13
13
|
"alg": "SHA-256",
|
|
14
|
-
"content": "
|
|
14
|
+
"content": "9981b33dbbe44fcab6da8e909a24d6b21317cfdd771946e65dba41879bb2972c"
|
|
15
15
|
}
|
|
16
16
|
]
|
|
17
17
|
}
|
|
@@ -1106,7 +1106,7 @@
|
|
|
1106
1106
|
"dependsOn": []
|
|
1107
1107
|
},
|
|
1108
1108
|
{
|
|
1109
|
-
"ref": "pkg:cargo/planu-core@5.
|
|
1109
|
+
"ref": "pkg:cargo/planu-core@5.3.0",
|
|
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.
|
|
4
|
-
"engineVersion": "5.
|
|
5
|
-
"buildId": "1-5.
|
|
3
|
+
"cliVersion": "5.3.0",
|
|
4
|
+
"engineVersion": "5.3.0",
|
|
5
|
+
"buildId": "1-5.3.0-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": "a3c5cd549a2eb667ff1c150faf23f1cfe22e87f7e556b0aa7209aa13a18f45e9",
|
|
20
20
|
"sbom": {
|
|
21
21
|
"format": "CycloneDX-1.5",
|
|
22
22
|
"path": "planu-core.linux-x64-musl.node.sbom.json",
|
|
23
|
-
"sha256": "
|
|
23
|
+
"sha256": "9890f076625256c5408d5ffec463f0935b8d7005e61d0b29761144f5cb40e17a"
|
|
24
24
|
},
|
|
25
25
|
"provenance": {
|
|
26
26
|
"builder": "scripts/build-rust-local.sh",
|
|
27
|
-
"sourceCommit": "
|
|
27
|
+
"sourceCommit": "0bfc16bd342cfaa8ee48da5d9a1484df65bca782",
|
|
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": "ZZXH8px6SzGDX2vLSXgEitX+Mu7eyXQ3kJeb9jFqMFLHInwMGMHtNY/LQgDvbOyzJAfskZUFf3JkqaTK6/9VDw=="
|
|
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.
|
|
7
|
+
"bom-ref": "pkg:cargo/planu-core@5.3.0",
|
|
8
8
|
"type": "library",
|
|
9
9
|
"name": "planu-core",
|
|
10
|
-
"version": "5.
|
|
10
|
+
"version": "5.3.0",
|
|
11
11
|
"hashes": [
|
|
12
12
|
{
|
|
13
13
|
"alg": "SHA-256",
|
|
14
|
-
"content": "
|
|
14
|
+
"content": "a3c5cd549a2eb667ff1c150faf23f1cfe22e87f7e556b0aa7209aa13a18f45e9"
|
|
15
15
|
}
|
|
16
16
|
]
|
|
17
17
|
}
|
|
@@ -1106,7 +1106,7 @@
|
|
|
1106
1106
|
"dependsOn": []
|
|
1107
1107
|
},
|
|
1108
1108
|
{
|
|
1109
|
-
"ref": "pkg:cargo/planu-core@5.
|
|
1109
|
+
"ref": "pkg:cargo/planu-core@5.3.0",
|
|
1110
1110
|
"dependsOn": [
|
|
1111
1111
|
"pkg:cargo/core-foundation@0.10.1",
|
|
1112
1112
|
"pkg:cargo/hmac@0.12.1",
|