@vauban-org/agent-sdk 0.17.3 → 0.17.4
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-step-persistence.d.ts","sourceRoot":"","sources":["../../../src/orchestration/ooda/run-step-persistence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"run-step-persistence.d.ts","sourceRoot":"","sources":["../../../src/orchestration/ooda/run-step-persistence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAqBhD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,aAAa,CAAC;IACpB,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAiC7B;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA4B/B;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,IAAI,CAAC,CAcf"}
|
|
@@ -14,7 +14,22 @@
|
|
|
14
14
|
*
|
|
15
15
|
* @public
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
let _computeLeafHash = null;
|
|
18
|
+
async function getComputeLeafHash() {
|
|
19
|
+
if (_computeLeafHash !== null)
|
|
20
|
+
return _computeLeafHash;
|
|
21
|
+
try {
|
|
22
|
+
const mod = await import("@vauban-org/proof-core");
|
|
23
|
+
_computeLeafHash = mod.computeLeafHash;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// proof-core not installed (optional peer) — fall back to sync node:crypto SHA-256
|
|
27
|
+
const { createHash } = await import("node:crypto");
|
|
28
|
+
_computeLeafHash = (payload) => createHash("sha256").update(JSON.stringify(payload)).digest("hex");
|
|
29
|
+
}
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
31
|
+
return _computeLeafHash;
|
|
32
|
+
}
|
|
18
33
|
/**
|
|
19
34
|
* Insert a `run_step` row in `pending` state and return the freshly
|
|
20
35
|
* minted UUID. Caller is responsible for finishing it via
|
|
@@ -62,6 +77,7 @@ export async function completeRunStep(db, stepId, payload) {
|
|
|
62
77
|
Array.isArray(payload)) {
|
|
63
78
|
throw new Error("[ooda] completeRunStep: payload must be a plain object");
|
|
64
79
|
}
|
|
80
|
+
const computeLeafHash = await getComputeLeafHash();
|
|
65
81
|
const leafHash = computeLeafHash(payload);
|
|
66
82
|
await db.query(`UPDATE run_step
|
|
67
83
|
SET status = 'done',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-step-persistence.js","sourceRoot":"","sources":["../../../src/orchestration/ooda/run-step-persistence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"run-step-persistence.js","sourceRoot":"","sources":["../../../src/orchestration/ooda/run-step-persistence.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -15,10 +15,28 @@
|
|
|
15
15
|
* @public
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
-
import { computeLeafHash } from "@vauban-org/proof-core";
|
|
19
18
|
import type { DbClient } from "../../tracking/agent-run-tracker.js";
|
|
20
19
|
import type { OODAPhaseKind } from "./types.js";
|
|
21
20
|
|
|
21
|
+
// Lazy singleton — proof-core is an optional peerDep; SHA-256 fallback when absent
|
|
22
|
+
type LeafHashFn = (payload: Record<string, unknown>) => string;
|
|
23
|
+
let _computeLeafHash: LeafHashFn | null = null;
|
|
24
|
+
|
|
25
|
+
async function getComputeLeafHash(): Promise<LeafHashFn> {
|
|
26
|
+
if (_computeLeafHash !== null) return _computeLeafHash;
|
|
27
|
+
try {
|
|
28
|
+
const mod = await import("@vauban-org/proof-core") as { computeLeafHash: LeafHashFn };
|
|
29
|
+
_computeLeafHash = mod.computeLeafHash;
|
|
30
|
+
} catch {
|
|
31
|
+
// proof-core not installed (optional peer) — fall back to sync node:crypto SHA-256
|
|
32
|
+
const { createHash } = await import("node:crypto");
|
|
33
|
+
_computeLeafHash = (payload) =>
|
|
34
|
+
createHash("sha256").update(JSON.stringify(payload)).digest("hex");
|
|
35
|
+
}
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
37
|
+
return _computeLeafHash!;
|
|
38
|
+
}
|
|
39
|
+
|
|
22
40
|
export interface InsertRunStepInput {
|
|
23
41
|
type: OODAPhaseKind;
|
|
24
42
|
/** Human-readable phase tag (e.g. "observe", "orient", "decide", "act"). */
|
|
@@ -97,6 +115,7 @@ export async function completeRunStep(
|
|
|
97
115
|
throw new Error("[ooda] completeRunStep: payload must be a plain object");
|
|
98
116
|
}
|
|
99
117
|
|
|
118
|
+
const computeLeafHash = await getComputeLeafHash();
|
|
100
119
|
const leafHash = computeLeafHash(payload);
|
|
101
120
|
|
|
102
121
|
await db.query(
|