@nexart/ai-execution 0.8.0 → 0.9.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/dist/index.cjs +85 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +67 -3
- package/dist/index.d.ts +67 -3
- package/dist/index.mjs +83 -1
- package/dist/index.mjs.map +1 -1
- package/dist/providers/anthropic.d.cts +1 -1
- package/dist/providers/anthropic.d.ts +1 -1
- package/dist/providers/openai.d.cts +1 -1
- package/dist/providers/openai.d.ts +1 -1
- package/dist/providers/wrap.d.cts +1 -1
- package/dist/providers/wrap.d.ts +1 -1
- package/dist/{types-CcqCDPrD.d.cts → types-C5t12OK8.d.cts} +2 -0
- package/dist/{types-CcqCDPrD.d.ts → types-C5t12OK8.d.ts} +2 -0
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -33,6 +33,7 @@ __export(src_exports, {
|
|
|
33
33
|
CerAttestationError: () => CerAttestationError,
|
|
34
34
|
CerVerificationError: () => CerVerificationError,
|
|
35
35
|
CerVerifyCode: () => CerVerifyCode,
|
|
36
|
+
ReasonCode: () => ReasonCode,
|
|
36
37
|
RunBuilder: () => RunBuilder,
|
|
37
38
|
attest: () => attest,
|
|
38
39
|
attestIfNeeded: () => attestIfNeeded,
|
|
@@ -65,6 +66,7 @@ __export(src_exports, {
|
|
|
65
66
|
toCanonicalJson: () => toCanonicalJson,
|
|
66
67
|
validateProfile: () => validateProfile,
|
|
67
68
|
verify: () => verifyCer,
|
|
69
|
+
verifyAiCerBundleDetailed: () => verifyAiCerBundleDetailed,
|
|
68
70
|
verifyAief: () => verifyAief,
|
|
69
71
|
verifyBundleAttestation: () => verifyBundleAttestation,
|
|
70
72
|
verifyCer: () => verifyCer,
|
|
@@ -459,7 +461,7 @@ function certifyDecision(params) {
|
|
|
459
461
|
conversationId: params.conversationId,
|
|
460
462
|
prevStepHash: params.prevStepHash
|
|
461
463
|
});
|
|
462
|
-
return sealCer(snapshot, { meta: params.meta });
|
|
464
|
+
return sealCer(snapshot, { createdAt: params.createdAt, meta: params.meta });
|
|
463
465
|
}
|
|
464
466
|
|
|
465
467
|
// src/run.ts
|
|
@@ -2540,11 +2542,92 @@ async function certifyAndAttestRun(steps, options) {
|
|
|
2540
2542
|
finalStepHash: runSummary.finalStepHash
|
|
2541
2543
|
};
|
|
2542
2544
|
}
|
|
2545
|
+
|
|
2546
|
+
// src/cerProtocol.ts
|
|
2547
|
+
var ReasonCode = {
|
|
2548
|
+
BUNDLE_HASH_MISMATCH: "BUNDLE_HASH_MISMATCH",
|
|
2549
|
+
NODE_SIGNATURE_INVALID: "NODE_SIGNATURE_INVALID",
|
|
2550
|
+
NODE_SIGNATURE_MISSING: "NODE_SIGNATURE_MISSING",
|
|
2551
|
+
RECEIPT_HASH_MISMATCH: "RECEIPT_HASH_MISMATCH",
|
|
2552
|
+
SCHEMA_VERSION_UNSUPPORTED: "SCHEMA_VERSION_UNSUPPORTED",
|
|
2553
|
+
RECORD_NOT_FOUND: "RECORD_NOT_FOUND",
|
|
2554
|
+
BUNDLE_CORRUPTED: "BUNDLE_CORRUPTED"
|
|
2555
|
+
};
|
|
2556
|
+
|
|
2557
|
+
// src/verifyDetailed.ts
|
|
2558
|
+
function mapCerCodeToReasonCodes(cerCode) {
|
|
2559
|
+
switch (cerCode) {
|
|
2560
|
+
case CerVerifyCode.CERTIFICATE_HASH_MISMATCH:
|
|
2561
|
+
case CerVerifyCode.SNAPSHOT_HASH_MISMATCH:
|
|
2562
|
+
case CerVerifyCode.INPUT_HASH_MISMATCH:
|
|
2563
|
+
case CerVerifyCode.OUTPUT_HASH_MISMATCH:
|
|
2564
|
+
return [ReasonCode.BUNDLE_HASH_MISMATCH];
|
|
2565
|
+
case CerVerifyCode.SCHEMA_ERROR:
|
|
2566
|
+
return [ReasonCode.SCHEMA_VERSION_UNSUPPORTED];
|
|
2567
|
+
case CerVerifyCode.CANONICALIZATION_ERROR:
|
|
2568
|
+
case CerVerifyCode.UNKNOWN_ERROR:
|
|
2569
|
+
case CerVerifyCode.INVALID_SHA256_FORMAT:
|
|
2570
|
+
return [ReasonCode.BUNDLE_CORRUPTED];
|
|
2571
|
+
case CerVerifyCode.ATTESTATION_INVALID_SIGNATURE:
|
|
2572
|
+
case CerVerifyCode.ATTESTATION_KEY_FORMAT_UNSUPPORTED:
|
|
2573
|
+
case CerVerifyCode.ATTESTATION_KEY_NOT_FOUND:
|
|
2574
|
+
return [ReasonCode.NODE_SIGNATURE_INVALID];
|
|
2575
|
+
case CerVerifyCode.ATTESTATION_MISSING:
|
|
2576
|
+
return [ReasonCode.NODE_SIGNATURE_MISSING];
|
|
2577
|
+
default:
|
|
2578
|
+
return [];
|
|
2579
|
+
}
|
|
2580
|
+
}
|
|
2581
|
+
function verifyAiCerBundleDetailed(bundle) {
|
|
2582
|
+
const verifiedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
2583
|
+
const verifier = "@nexart/ai-execution";
|
|
2584
|
+
if (!bundle || typeof bundle !== "object" || Array.isArray(bundle)) {
|
|
2585
|
+
return {
|
|
2586
|
+
status: "FAILED",
|
|
2587
|
+
checks: { bundleIntegrity: "FAIL", nodeSignature: "SKIPPED", receiptConsistency: "SKIPPED" },
|
|
2588
|
+
reasonCodes: [ReasonCode.BUNDLE_CORRUPTED],
|
|
2589
|
+
certificateHash: "",
|
|
2590
|
+
bundleType: "",
|
|
2591
|
+
verifiedAt,
|
|
2592
|
+
verifier
|
|
2593
|
+
};
|
|
2594
|
+
}
|
|
2595
|
+
const b = bundle;
|
|
2596
|
+
const bundleType = typeof b["bundleType"] === "string" ? b["bundleType"] : "";
|
|
2597
|
+
const certificateHash = typeof b["certificateHash"] === "string" ? b["certificateHash"] : "";
|
|
2598
|
+
if (bundleType !== "cer.ai.execution.v1") {
|
|
2599
|
+
return {
|
|
2600
|
+
status: "FAILED",
|
|
2601
|
+
checks: { bundleIntegrity: "FAIL", nodeSignature: "SKIPPED", receiptConsistency: "SKIPPED" },
|
|
2602
|
+
reasonCodes: [ReasonCode.SCHEMA_VERSION_UNSUPPORTED],
|
|
2603
|
+
certificateHash,
|
|
2604
|
+
bundleType,
|
|
2605
|
+
verifiedAt,
|
|
2606
|
+
verifier
|
|
2607
|
+
};
|
|
2608
|
+
}
|
|
2609
|
+
const cerResult = verifyCer(bundle);
|
|
2610
|
+
const bundleIntegrity = cerResult.ok ? "PASS" : "FAIL";
|
|
2611
|
+
const attestationPresent = hasAttestation(bundle);
|
|
2612
|
+
const nodeSignature = attestationPresent ? "PASS" : "SKIPPED";
|
|
2613
|
+
const receiptConsistency = attestationPresent ? "PASS" : "SKIPPED";
|
|
2614
|
+
const reasonCodes = cerResult.ok ? [] : mapCerCodeToReasonCodes(cerResult.code);
|
|
2615
|
+
return {
|
|
2616
|
+
status: cerResult.ok ? "VERIFIED" : "FAILED",
|
|
2617
|
+
checks: { bundleIntegrity, nodeSignature, receiptConsistency },
|
|
2618
|
+
reasonCodes,
|
|
2619
|
+
certificateHash,
|
|
2620
|
+
bundleType,
|
|
2621
|
+
verifiedAt,
|
|
2622
|
+
verifier
|
|
2623
|
+
};
|
|
2624
|
+
}
|
|
2543
2625
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2544
2626
|
0 && (module.exports = {
|
|
2545
2627
|
CerAttestationError,
|
|
2546
2628
|
CerVerificationError,
|
|
2547
2629
|
CerVerifyCode,
|
|
2630
|
+
ReasonCode,
|
|
2548
2631
|
RunBuilder,
|
|
2549
2632
|
attest,
|
|
2550
2633
|
attestIfNeeded,
|
|
@@ -2577,6 +2660,7 @@ async function certifyAndAttestRun(steps, options) {
|
|
|
2577
2660
|
toCanonicalJson,
|
|
2578
2661
|
validateProfile,
|
|
2579
2662
|
verify,
|
|
2663
|
+
verifyAiCerBundleDetailed,
|
|
2580
2664
|
verifyAief,
|
|
2581
2665
|
verifyBundleAttestation,
|
|
2582
2666
|
verifyCer,
|