agentfootprint 10.1.0 → 10.2.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/CAPABILITIES.md +1 -0
- package/dist/adapters/llm/AnthropicProvider.js +17 -1
- package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/adapters/llm/anthropicMessageProjection.js +26 -1
- package/dist/adapters/llm/anthropicMessageProjection.js.map +1 -1
- package/dist/adapters/llm/anthropicMessagesWire.js +42 -37
- package/dist/adapters/llm/anthropicMessagesWire.js.map +1 -1
- package/dist/adapters/llm/anthropicReplayLayout.js +63 -12
- package/dist/adapters/llm/anthropicReplayLayout.js.map +1 -1
- package/dist/adapters/llm/anthropicToolArguments.js +122 -0
- package/dist/adapters/llm/anthropicToolArguments.js.map +1 -0
- package/dist/adapters/types.js.map +1 -1
- package/dist/answer-validation/validate.js +7 -107
- package/dist/answer-validation/validate.js.map +1 -1
- package/dist/core/Agent.js +5 -0
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/agent/arguments/resolve.js +4 -0
- package/dist/core/agent/arguments/resolve.js.map +1 -1
- package/dist/core/agent/arguments/subflow.js +1 -0
- package/dist/core/agent/arguments/subflow.js.map +1 -1
- package/dist/core/agent/findings/types.js.map +1 -1
- package/dist/core/agent/findings/verificationCheck.js +99 -0
- package/dist/core/agent/findings/verificationCheck.js.map +1 -0
- package/dist/core/agent/findings/verificationCheckpoint.js +110 -0
- package/dist/core/agent/findings/verificationCheckpoint.js.map +1 -0
- package/dist/core/agent/findings/verificationConfig.js +119 -0
- package/dist/core/agent/findings/verificationConfig.js.map +1 -0
- package/dist/core/agent/findings/verificationRow.js +181 -0
- package/dist/core/agent/findings/verificationRow.js.map +1 -0
- package/dist/core/agent/findings/verificationState.js +152 -0
- package/dist/core/agent/findings/verificationState.js.map +1 -0
- package/dist/core/agent/findings/verificationTypes.js +23 -0
- package/dist/core/agent/findings/verificationTypes.js.map +1 -0
- package/dist/core/agent/outputEnforcement.js +5 -0
- package/dist/core/agent/outputEnforcement.js.map +1 -1
- package/dist/core/agent/stages/toolCalls.js +20 -3
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/core/agent/toolArgsValidation.js +12 -1
- package/dist/core/agent/toolArgsValidation.js.map +1 -1
- package/dist/core/runCheckpoint.js +45 -4
- package/dist/core/runCheckpoint.js.map +1 -1
- package/dist/esm/adapters/llm/AnthropicProvider.js +17 -1
- package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/esm/adapters/llm/anthropicMessageProjection.js +26 -1
- package/dist/esm/adapters/llm/anthropicMessageProjection.js.map +1 -1
- package/dist/esm/adapters/llm/anthropicMessagesWire.d.ts +9 -3
- package/dist/esm/adapters/llm/anthropicMessagesWire.js +42 -37
- package/dist/esm/adapters/llm/anthropicMessagesWire.js.map +1 -1
- package/dist/esm/adapters/llm/anthropicReplayLayout.d.ts +1 -1
- package/dist/esm/adapters/llm/anthropicReplayLayout.js +63 -12
- package/dist/esm/adapters/llm/anthropicReplayLayout.js.map +1 -1
- package/dist/esm/adapters/llm/anthropicToolArguments.d.ts +31 -0
- package/dist/esm/adapters/llm/anthropicToolArguments.js +118 -0
- package/dist/esm/adapters/llm/anthropicToolArguments.js.map +1 -0
- package/dist/esm/adapters/types.d.ts +17 -0
- package/dist/esm/adapters/types.js.map +1 -1
- package/dist/esm/answer-validation/validate.js +1 -101
- package/dist/esm/answer-validation/validate.js.map +1 -1
- package/dist/esm/core/Agent.js +5 -0
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/agent/arguments/resolve.d.ts +1 -0
- package/dist/esm/core/agent/arguments/resolve.js +4 -0
- package/dist/esm/core/agent/arguments/resolve.js.map +1 -1
- package/dist/esm/core/agent/arguments/subflow.js +1 -0
- package/dist/esm/core/agent/arguments/subflow.js.map +1 -1
- package/dist/esm/core/agent/findings/types.d.ts +2 -1
- package/dist/esm/core/agent/findings/types.js.map +1 -1
- package/dist/esm/core/agent/findings/verificationCheck.d.ts +24 -0
- package/dist/esm/core/agent/findings/verificationCheck.js +95 -0
- package/dist/esm/core/agent/findings/verificationCheck.js.map +1 -0
- package/dist/esm/core/agent/findings/verificationCheckpoint.d.ts +10 -0
- package/dist/esm/core/agent/findings/verificationCheckpoint.js +104 -0
- package/dist/esm/core/agent/findings/verificationCheckpoint.js.map +1 -0
- package/dist/esm/core/agent/findings/verificationConfig.d.ts +30 -0
- package/dist/esm/core/agent/findings/verificationConfig.js +115 -0
- package/dist/esm/core/agent/findings/verificationConfig.js.map +1 -0
- package/dist/esm/core/agent/findings/verificationRow.d.ts +16 -0
- package/dist/esm/core/agent/findings/verificationRow.js +174 -0
- package/dist/esm/core/agent/findings/verificationRow.js.map +1 -0
- package/dist/esm/core/agent/findings/verificationState.d.ts +39 -0
- package/dist/esm/core/agent/findings/verificationState.js +143 -0
- package/dist/esm/core/agent/findings/verificationState.js.map +1 -0
- package/dist/esm/core/agent/findings/verificationTypes.d.ts +55 -0
- package/dist/esm/core/agent/findings/verificationTypes.js +20 -0
- package/dist/esm/core/agent/findings/verificationTypes.js.map +1 -0
- package/dist/esm/core/agent/outputEnforcement.js +5 -0
- package/dist/esm/core/agent/outputEnforcement.js.map +1 -1
- package/dist/esm/core/agent/stages/toolCalls.js +21 -4
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/agent/toolArgsValidation.d.ts +2 -0
- package/dist/esm/core/agent/toolArgsValidation.js +10 -0
- package/dist/esm/core/agent/toolArgsValidation.js.map +1 -1
- package/dist/esm/core/agent/types.d.ts +1 -0
- package/dist/esm/core/runCheckpoint.d.ts +11 -1
- package/dist/esm/core/runCheckpoint.js +45 -4
- package/dist/esm/core/runCheckpoint.js.map +1 -1
- package/dist/esm/integrity/claim-binding/admit.d.ts +12 -0
- package/dist/esm/integrity/claim-binding/admit.js +204 -0
- package/dist/esm/integrity/claim-binding/admit.js.map +1 -0
- package/dist/esm/integrity/claim-binding/bindEvidence.d.ts +8 -0
- package/dist/esm/integrity/claim-binding/bindEvidence.js +144 -0
- package/dist/esm/integrity/claim-binding/bindEvidence.js.map +1 -0
- package/dist/esm/integrity/claim-binding/capture.d.ts +25 -0
- package/dist/esm/integrity/claim-binding/capture.js +143 -0
- package/dist/esm/integrity/claim-binding/capture.js.map +1 -0
- package/dist/esm/integrity/claim-binding/scope.d.ts +23 -0
- package/dist/esm/integrity/claim-binding/scope.js +149 -0
- package/dist/esm/integrity/claim-binding/scope.js.map +1 -0
- package/dist/esm/integrity/claim-binding/types.d.ts +99 -0
- package/dist/esm/integrity/claim-binding/types.js +23 -0
- package/dist/esm/integrity/claim-binding/types.js.map +1 -0
- package/dist/esm/integrity/unsupported-claim/check.js +33 -55
- package/dist/esm/integrity/unsupported-claim/check.js.map +1 -1
- package/dist/esm/integrity/unsupported-claim/evaluate.d.ts +18 -0
- package/dist/esm/integrity/unsupported-claim/evaluate.js +34 -0
- package/dist/esm/integrity/unsupported-claim/evaluate.js.map +1 -0
- package/dist/esm/lib/boundedJson.d.ts +3 -0
- package/dist/esm/lib/boundedJson.js +104 -0
- package/dist/esm/lib/boundedJson.js.map +1 -0
- package/dist/esm/lib/time-travel/receipt.js +4 -0
- package/dist/esm/lib/time-travel/receipt.js.map +1 -1
- package/dist/esm/memory/identity/encode.d.ts +7 -0
- package/dist/esm/memory/identity/encode.js +14 -0
- package/dist/esm/memory/identity/encode.js.map +1 -1
- package/dist/esm/redaction/conversation.js +3 -0
- package/dist/esm/redaction/conversation.js.map +1 -1
- package/dist/esm/redaction/knownStrings.js +8 -0
- package/dist/esm/redaction/knownStrings.js.map +1 -1
- package/dist/esm/thinking/replay.d.ts +6 -1
- package/dist/esm/thinking/replay.js.map +1 -1
- package/dist/integrity/claim-binding/admit.js +211 -0
- package/dist/integrity/claim-binding/admit.js.map +1 -0
- package/dist/integrity/claim-binding/bindEvidence.js +148 -0
- package/dist/integrity/claim-binding/bindEvidence.js.map +1 -0
- package/dist/integrity/claim-binding/capture.js +152 -0
- package/dist/integrity/claim-binding/capture.js.map +1 -0
- package/dist/integrity/claim-binding/scope.js +159 -0
- package/dist/integrity/claim-binding/scope.js.map +1 -0
- package/dist/integrity/claim-binding/types.js +26 -0
- package/dist/integrity/claim-binding/types.js.map +1 -0
- package/dist/integrity/unsupported-claim/check.js +32 -54
- package/dist/integrity/unsupported-claim/check.js.map +1 -1
- package/dist/integrity/unsupported-claim/evaluate.js +38 -0
- package/dist/integrity/unsupported-claim/evaluate.js.map +1 -0
- package/dist/lib/boundedJson.js +109 -0
- package/dist/lib/boundedJson.js.map +1 -0
- package/dist/lib/time-travel/receipt.js +4 -0
- package/dist/lib/time-travel/receipt.js.map +1 -1
- package/dist/memory/identity/encode.js +16 -1
- package/dist/memory/identity/encode.js.map +1 -1
- package/dist/redaction/conversation.js +3 -0
- package/dist/redaction/conversation.js.map +1 -1
- package/dist/redaction/knownStrings.js +8 -0
- package/dist/redaction/knownStrings.js.map +1 -1
- package/dist/thinking/replay.js.map +1 -1
- package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/anthropicMessageProjection.d.ts.map +1 -1
- package/dist/types/adapters/llm/anthropicMessagesWire.d.ts +9 -3
- package/dist/types/adapters/llm/anthropicMessagesWire.d.ts.map +1 -1
- package/dist/types/adapters/llm/anthropicReplayLayout.d.ts +1 -1
- package/dist/types/adapters/llm/anthropicReplayLayout.d.ts.map +1 -1
- package/dist/types/adapters/llm/anthropicToolArguments.d.ts +32 -0
- package/dist/types/adapters/llm/anthropicToolArguments.d.ts.map +1 -0
- package/dist/types/adapters/types.d.ts +17 -0
- package/dist/types/adapters/types.d.ts.map +1 -1
- package/dist/types/answer-validation/validate.d.ts.map +1 -1
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/agent/arguments/resolve.d.ts +1 -0
- package/dist/types/core/agent/arguments/resolve.d.ts.map +1 -1
- package/dist/types/core/agent/arguments/subflow.d.ts.map +1 -1
- package/dist/types/core/agent/findings/types.d.ts +2 -1
- package/dist/types/core/agent/findings/types.d.ts.map +1 -1
- package/dist/types/core/agent/findings/verificationCheck.d.ts +25 -0
- package/dist/types/core/agent/findings/verificationCheck.d.ts.map +1 -0
- package/dist/types/core/agent/findings/verificationCheckpoint.d.ts +11 -0
- package/dist/types/core/agent/findings/verificationCheckpoint.d.ts.map +1 -0
- package/dist/types/core/agent/findings/verificationConfig.d.ts +31 -0
- package/dist/types/core/agent/findings/verificationConfig.d.ts.map +1 -0
- package/dist/types/core/agent/findings/verificationRow.d.ts +17 -0
- package/dist/types/core/agent/findings/verificationRow.d.ts.map +1 -0
- package/dist/types/core/agent/findings/verificationState.d.ts +40 -0
- package/dist/types/core/agent/findings/verificationState.d.ts.map +1 -0
- package/dist/types/core/agent/findings/verificationTypes.d.ts +56 -0
- package/dist/types/core/agent/findings/verificationTypes.d.ts.map +1 -0
- package/dist/types/core/agent/outputEnforcement.d.ts.map +1 -1
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/core/agent/toolArgsValidation.d.ts +2 -0
- package/dist/types/core/agent/toolArgsValidation.d.ts.map +1 -1
- package/dist/types/core/agent/types.d.ts +1 -0
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/core/runCheckpoint.d.ts +11 -1
- package/dist/types/core/runCheckpoint.d.ts.map +1 -1
- package/dist/types/integrity/claim-binding/admit.d.ts +13 -0
- package/dist/types/integrity/claim-binding/admit.d.ts.map +1 -0
- package/dist/types/integrity/claim-binding/bindEvidence.d.ts +9 -0
- package/dist/types/integrity/claim-binding/bindEvidence.d.ts.map +1 -0
- package/dist/types/integrity/claim-binding/capture.d.ts +26 -0
- package/dist/types/integrity/claim-binding/capture.d.ts.map +1 -0
- package/dist/types/integrity/claim-binding/scope.d.ts +24 -0
- package/dist/types/integrity/claim-binding/scope.d.ts.map +1 -0
- package/dist/types/integrity/claim-binding/types.d.ts +100 -0
- package/dist/types/integrity/claim-binding/types.d.ts.map +1 -0
- package/dist/types/integrity/unsupported-claim/check.d.ts.map +1 -1
- package/dist/types/integrity/unsupported-claim/evaluate.d.ts +19 -0
- package/dist/types/integrity/unsupported-claim/evaluate.d.ts.map +1 -0
- package/dist/types/lib/boundedJson.d.ts +4 -0
- package/dist/types/lib/boundedJson.d.ts.map +1 -0
- package/dist/types/lib/time-travel/receipt.d.ts.map +1 -1
- package/dist/types/memory/identity/encode.d.ts +7 -0
- package/dist/types/memory/identity/encode.d.ts.map +1 -1
- package/dist/types/redaction/conversation.d.ts.map +1 -1
- package/dist/types/redaction/knownStrings.d.ts.map +1 -1
- package/dist/types/thinking/replay.d.ts +6 -1
- package/dist/types/thinking/replay.d.ts.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.evidenceSnapshot = exports.finalizeEvidence = exports.captureReturnedEvidence = exports.captureDispatch = exports.readResultIdentity = exports.resultIdentityOf = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Internal dispatch/return/delivery receipt boundary, not mounted in the Agent.
|
|
6
|
+
* The eventual runtime adapter reserves a namespace/run/ordinal before await,
|
|
7
|
+
* captures at actual execute, then finalizes against the authorized served value.
|
|
8
|
+
*/
|
|
9
|
+
const encode_js_1 = require("../../memory/identity/encode.js");
|
|
10
|
+
const boundedJson_js_1 = require("../../lib/boundedJson.js");
|
|
11
|
+
const canonicalJson_js_1 = require("../../lib/canonicalJson.js");
|
|
12
|
+
const envelope_js_1 = require("../../lib/semantics/envelope.js");
|
|
13
|
+
const ledger_js_1 = require("../unsupported-claim/ledger.js");
|
|
14
|
+
const scope_js_1 = require("./scope.js");
|
|
15
|
+
function resultIdentityOf(identity) {
|
|
16
|
+
if (!(0, scope_js_1.boundedText)(identity.namespace) ||
|
|
17
|
+
!(0, scope_js_1.boundedText)(identity.runId) ||
|
|
18
|
+
!Number.isSafeInteger(identity.ordinal) ||
|
|
19
|
+
identity.ordinal < 1)
|
|
20
|
+
throw new Error('Invalid runtime result identity.');
|
|
21
|
+
return `claim-result/${(0, encode_js_1.encodeIdentityField)(identity.namespace)}/${(0, encode_js_1.encodeIdentityField)(identity.runId)}/${identity.ordinal}`;
|
|
22
|
+
}
|
|
23
|
+
exports.resultIdentityOf = resultIdentityOf;
|
|
24
|
+
/** Decode only canonical runtime result occurrences; no lookup or authority is inferred. */
|
|
25
|
+
function readResultIdentity(raw) {
|
|
26
|
+
if (typeof raw !== 'string' || raw.length > scope_js_1.BINDING_LIMITS.resultIdText)
|
|
27
|
+
throw new TypeError('Invalid saved result identity.');
|
|
28
|
+
const parts = raw.split('/');
|
|
29
|
+
if (parts.length !== 4 || parts[0] !== 'claim-result')
|
|
30
|
+
throw new TypeError('Invalid saved result identity.');
|
|
31
|
+
const identity = Object.freeze({
|
|
32
|
+
namespace: (0, encode_js_1.decodePresentIdentityField)(parts[1]),
|
|
33
|
+
runId: (0, encode_js_1.decodePresentIdentityField)(parts[2]),
|
|
34
|
+
ordinal: Number(parts[3]),
|
|
35
|
+
});
|
|
36
|
+
if (resultIdentityOf(identity) !== raw)
|
|
37
|
+
throw new TypeError('Noncanonical saved result identity.');
|
|
38
|
+
return identity;
|
|
39
|
+
}
|
|
40
|
+
exports.readResultIdentity = readResultIdentity;
|
|
41
|
+
/** Capture selected scope now; a later mutation of args cannot change it. */
|
|
42
|
+
function captureDispatch(identity, tool, executedArgs, declaration) {
|
|
43
|
+
declaration = (0, scope_js_1.scopeDeclarationOf)(declaration);
|
|
44
|
+
const id = resultIdentityOf(identity);
|
|
45
|
+
if (!(0, scope_js_1.boundedText)(tool.toolName) ||
|
|
46
|
+
!(0, scope_js_1.boundedText)(tool.toolCallId) ||
|
|
47
|
+
!Number.isSafeInteger(tool.iteration) ||
|
|
48
|
+
tool.iteration < 0)
|
|
49
|
+
throw new Error('Invalid tool identity.');
|
|
50
|
+
const common = {
|
|
51
|
+
identity: { ...identity },
|
|
52
|
+
id,
|
|
53
|
+
toolName: tool.toolName,
|
|
54
|
+
toolCallId: tool.toolCallId,
|
|
55
|
+
iteration: tool.iteration,
|
|
56
|
+
scopeDeclaration: { id: declaration.id, version: declaration.version },
|
|
57
|
+
...(declaration.periodDimension !== undefined && {
|
|
58
|
+
periodDimension: declaration.periodDimension,
|
|
59
|
+
}),
|
|
60
|
+
};
|
|
61
|
+
try {
|
|
62
|
+
return (0, boundedJson_js_1.copyJson)({ ...common, scope: (0, scope_js_1.executedScope)(executedArgs, declaration) }, scope_js_1.BINDING_LIMITS.scopeBytes * 2, true);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return (0, boundedJson_js_1.copyJson)({ ...common, unavailable: 'missing-scope' }, scope_js_1.BINDING_LIMITS.scopeBytes * 2, true);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.captureDispatch = captureDispatch;
|
|
69
|
+
/** Preserve the returned reading before any async result rule can mutate it. */
|
|
70
|
+
function captureReturnedEvidence(dispatch, original) {
|
|
71
|
+
try {
|
|
72
|
+
const semantics = (0, envelope_js_1.readSemantics)((0, boundedJson_js_1.copyJson)(original, scope_js_1.BINDING_LIMITS.resultBytes, true));
|
|
73
|
+
if (semantics === undefined)
|
|
74
|
+
throw new Error('No recognized evidence.');
|
|
75
|
+
return Object.freeze({ resultId: dispatch.id, semantics });
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return Object.freeze({ resultId: dispatch.id, unavailable: 'invalid-evidence' });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.captureReturnedEvidence = captureReturnedEvidence;
|
|
82
|
+
/**
|
|
83
|
+
* returned is the return-time copy from that invocation. served is
|
|
84
|
+
* the final model-facing payload AFTER all governance, placement and caps.
|
|
85
|
+
* Visibility is a trusted adapter decision; equality alone grants no access.
|
|
86
|
+
* Rewrites need a future explicit association, and are unavailable here.
|
|
87
|
+
*/
|
|
88
|
+
function finalizeEvidence(dispatch, returned, served, access) {
|
|
89
|
+
const unavailable = (reason) => (0, boundedJson_js_1.copyJson)({
|
|
90
|
+
identity: dispatch.identity,
|
|
91
|
+
id: dispatch.id,
|
|
92
|
+
toolName: dispatch.toolName,
|
|
93
|
+
toolCallId: dispatch.toolCallId,
|
|
94
|
+
iteration: dispatch.iteration,
|
|
95
|
+
scopeDeclaration: dispatch.scopeDeclaration,
|
|
96
|
+
unavailable: reason,
|
|
97
|
+
}, scope_js_1.BINDING_LIMITS.scopeBytes * 2, true);
|
|
98
|
+
if (dispatch.id !== resultIdentityOf(dispatch.identity))
|
|
99
|
+
return unavailable('invalid-evidence');
|
|
100
|
+
if (access.completed !== true)
|
|
101
|
+
return unavailable('incomplete-result');
|
|
102
|
+
if (access.resultVisible !== true || access.scopeVisible !== true)
|
|
103
|
+
return unavailable('withheld-evidence');
|
|
104
|
+
if (dispatch.unavailable !== undefined)
|
|
105
|
+
return unavailable(dispatch.unavailable);
|
|
106
|
+
if (returned.resultId !== dispatch.id)
|
|
107
|
+
return unavailable('unassociated-result');
|
|
108
|
+
if (returned.unavailable !== undefined)
|
|
109
|
+
return unavailable(returned.unavailable);
|
|
110
|
+
try {
|
|
111
|
+
const raw = (0, boundedJson_js_1.copyJson)(returned.semantics, scope_js_1.BINDING_LIMITS.resultBytes, true);
|
|
112
|
+
const semantics = (0, envelope_js_1.readSemantics)(raw);
|
|
113
|
+
if (semantics === undefined)
|
|
114
|
+
return unavailable('invalid-evidence');
|
|
115
|
+
const model = typeof served === 'string'
|
|
116
|
+
? JSON.parse(served.length <= scope_js_1.BINDING_LIMITS.resultBytes ? served : '')
|
|
117
|
+
: served;
|
|
118
|
+
const allowed = (0, boundedJson_js_1.copyJson)(model, scope_js_1.BINDING_LIMITS.resultBytes, true);
|
|
119
|
+
const projection = (0, boundedJson_js_1.copyJson)((0, envelope_js_1.semanticsForModel)(semantics), scope_js_1.BINDING_LIMITS.resultBytes, true);
|
|
120
|
+
if ((0, canonicalJson_js_1.canonicalJson)(allowed) !== (0, canonicalJson_js_1.canonicalJson)(projection))
|
|
121
|
+
return unavailable('unassociated-result');
|
|
122
|
+
const period = (0, envelope_js_1.periodOfSemantics)(semantics);
|
|
123
|
+
return (0, boundedJson_js_1.copyJson)({
|
|
124
|
+
...dispatch,
|
|
125
|
+
facts: (0, ledger_js_1.claimRowsOf)(semantics, {
|
|
126
|
+
toolName: dispatch.toolName,
|
|
127
|
+
toolCallId: dispatch.toolCallId,
|
|
128
|
+
iteration: dispatch.iteration,
|
|
129
|
+
}),
|
|
130
|
+
...((semantics.coverage !== undefined || period !== undefined) && {
|
|
131
|
+
coverage: (0, envelope_js_1.coverageOfSemantics)(semantics),
|
|
132
|
+
}),
|
|
133
|
+
...(period !== undefined && { period }),
|
|
134
|
+
}, scope_js_1.BINDING_LIMITS.resultBytes, true);
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return unavailable('invalid-evidence');
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
exports.finalizeEvidence = finalizeEvidence;
|
|
141
|
+
/** Freeze the caller's completed evidence universe at the declaration moment. */
|
|
142
|
+
function evidenceSnapshot(namespace, verifiedRunIds, results) {
|
|
143
|
+
if (!(0, scope_js_1.boundedText)(namespace) ||
|
|
144
|
+
verifiedRunIds.length > scope_js_1.BINDING_LIMITS.results ||
|
|
145
|
+
!verifiedRunIds.every(scope_js_1.boundedText) ||
|
|
146
|
+
new Set(verifiedRunIds).size !== verifiedRunIds.length ||
|
|
147
|
+
results.length > scope_js_1.BINDING_LIMITS.results)
|
|
148
|
+
throw new Error('Invalid evidence snapshot boundary.');
|
|
149
|
+
return (0, boundedJson_js_1.copyJson)({ version: 1, namespace, runIds: verifiedRunIds, results }, scope_js_1.BINDING_LIMITS.snapshotBytes, true);
|
|
150
|
+
}
|
|
151
|
+
exports.evidenceSnapshot = evidenceSnapshot;
|
|
152
|
+
//# sourceMappingURL=capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../src/integrity/claim-binding/capture.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,+DAAkG;AAClG,6DAAoD;AACpD,iEAA2D;AAC3D,iEAKyC;AACzC,8DAA6D;AAC7D,yCAA4F;AAU5F,SAAgB,gBAAgB,CAAC,QAAwB;IACvD,IACE,CAAC,IAAA,sBAAW,EAAC,QAAQ,CAAC,SAAS,CAAC;QAChC,CAAC,IAAA,sBAAW,EAAC,QAAQ,CAAC,KAAK,CAAC;QAC5B,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC;QACvC,QAAQ,CAAC,OAAO,GAAG,CAAC;QAEpB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,OAAO,gBAAgB,IAAA,+BAAmB,EAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAA,+BAAmB,EACnF,QAAQ,CAAC,KAAK,CACf,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC1B,CAAC;AAXD,4CAWC;AAED,4FAA4F;AAC5F,SAAgB,kBAAkB,CAAC,GAAY;IAC7C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,yBAAc,CAAC,YAAY;QACrE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,cAAc;QACnD,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,SAAS,EAAE,IAAA,sCAA0B,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/C,KAAK,EAAE,IAAA,sCAA0B,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC1B,CAAC,CAAC;IACH,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,GAAG;QACpC,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAC;IAC7D,OAAO,QAAQ,CAAC;AAClB,CAAC;AAdD,gDAcC;AAED,6EAA6E;AAC7E,SAAgB,eAAe,CAC7B,QAAwB,EACxB,IAA4F,EAC5F,YAAqB,EACrB,WAA6B;IAE7B,WAAW,GAAG,IAAA,6BAAkB,EAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACtC,IACE,CAAC,IAAA,sBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC;QAC3B,CAAC,IAAA,sBAAW,EAAC,IAAI,CAAC,UAAU,CAAC;QAC7B,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,CAAC;QAElB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG;QACb,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE;QACzB,EAAE;QACF,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,gBAAgB,EAAE,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE;QACtE,GAAG,CAAC,WAAW,CAAC,eAAe,KAAK,SAAS,IAAI;YAC/C,eAAe,EAAE,WAAW,CAAC,eAAe;SAC7C,CAAC;KACH,CAAC;IACF,IAAI,CAAC;QACH,OAAO,IAAA,yBAAQ,EACb,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,IAAA,wBAAa,EAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAC9D,yBAAc,CAAC,UAAU,GAAG,CAAC,EAC7B,IAAI,CACe,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAA,yBAAQ,EACb,EAAE,GAAG,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,EAC3C,yBAAc,CAAC,UAAU,GAAG,CAAC,EAC7B,IAAI,CACe,CAAC;IACxB,CAAC;AACH,CAAC;AAvCD,0CAuCC;AAED,gFAAgF;AAChF,SAAgB,uBAAuB,CACrC,QAA0B,EAC1B,QAAiB;IAEjB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAA,2BAAa,EAAC,IAAA,yBAAQ,EAAC,QAAQ,EAAE,yBAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;QACtF,IAAI,SAAS,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACxE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAXD,0DAWC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAC9B,QAA0B,EAC1B,QAA0B,EAC1B,MAAe,EACf,MAIC;IAED,MAAM,WAAW,GAAG,CAAC,MAAqC,EAAkB,EAAE,CAC5E,IAAA,yBAAQ,EACN;QACE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,WAAW,EAAE,MAAM;KACpB,EACD,yBAAc,CAAC,UAAU,GAAG,CAAC,EAC7B,IAAI,CACa,CAAC;IACtB,IAAI,QAAQ,CAAC,EAAE,KAAK,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAChG,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI;QAAE,OAAO,WAAW,CAAC,mBAAmB,CAAC,CAAC;IACvE,IAAI,MAAM,CAAC,aAAa,KAAK,IAAI,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI;QAC/D,OAAO,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAC1C,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACjF,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE;QAAE,OAAO,WAAW,CAAC,qBAAqB,CAAC,CAAC;IACjF,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS;QAAE,OAAO,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACjF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,yBAAQ,EAAC,QAAQ,CAAC,SAAS,EAAE,yBAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,IAAA,2BAAa,EAAC,GAAG,CAAC,CAAC;QACrC,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,WAAW,CAAC,kBAAkB,CAAC,CAAC;QACpE,MAAM,KAAK,GACT,OAAO,MAAM,KAAK,QAAQ;YACxB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,yBAAc,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,CAAC,CAAC,MAAM,CAAC;QACb,MAAM,OAAO,GAAG,IAAA,yBAAQ,EAAC,KAAK,EAAE,yBAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,IAAA,yBAAQ,EAAC,IAAA,+BAAiB,EAAC,SAAS,CAAC,EAAE,yBAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC5F,IAAI,IAAA,gCAAa,EAAC,OAAO,CAAC,KAAK,IAAA,gCAAa,EAAC,UAAU,CAAC;YACtD,OAAO,WAAW,CAAC,qBAAqB,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAA,+BAAiB,EAAC,SAAS,CAAC,CAAC;QAC5C,OAAO,IAAA,yBAAQ,EACb;YACE,GAAG,QAAQ;YACX,KAAK,EAAE,IAAA,uBAAW,EAAC,SAAS,EAAE;gBAC5B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,SAAS,EAAE,QAAQ,CAAC,SAAS;aAC9B,CAAC;YACF,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,CAAC,IAAI;gBAChE,QAAQ,EAAE,IAAA,iCAAmB,EAAC,SAAS,CAAC;aACzC,CAAC;YACF,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;SACxC,EACD,yBAAc,CAAC,WAAW,EAC1B,IAAI,CACa,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AA/DD,4CA+DC;AAED,iFAAiF;AACjF,SAAgB,gBAAgB,CAC9B,SAAiB,EACjB,cAAiC,EACjC,OAAkC;IAElC,IACE,CAAC,IAAA,sBAAW,EAAC,SAAS,CAAC;QACvB,cAAc,CAAC,MAAM,GAAG,yBAAc,CAAC,OAAO;QAC9C,CAAC,cAAc,CAAC,KAAK,CAAC,sBAAW,CAAC;QAClC,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM;QACtD,OAAO,CAAC,MAAM,GAAG,yBAAc,CAAC,OAAO;QAEvC,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,OAAO,IAAA,yBAAQ,EACb,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,EAC1D,yBAAc,CAAC,aAAa,EAC5B,IAAI,CACe,CAAC;AACxB,CAAC;AAlBD,4CAkBC"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.queriedPeriodMatches = exports.scopesMatch = exports.executedScope = exports.scopeDeclarationOf = exports.ownConfigArray = exports.boundedResultId = exports.boundedText = exports.BINDING_LIMITS = void 0;
|
|
4
|
+
/** Authored scope projection over the arguments actually delivered to execute. */
|
|
5
|
+
const boundedJson_js_1 = require("../../lib/boundedJson.js");
|
|
6
|
+
const canonicalJson_js_1 = require("../../lib/canonicalJson.js");
|
|
7
|
+
const instant_js_1 = require("../../core/time/instant.js");
|
|
8
|
+
const period_js_1 = require("../../core/agent/coverage/period.js");
|
|
9
|
+
exports.BINDING_LIMITS = Object.freeze({
|
|
10
|
+
text: 512,
|
|
11
|
+
resultIdText: 3104,
|
|
12
|
+
dimensions: 16,
|
|
13
|
+
path: 16,
|
|
14
|
+
scopeBytes: 8192,
|
|
15
|
+
resultBytes: 256 * 1024,
|
|
16
|
+
snapshotBytes: 1024 * 1024,
|
|
17
|
+
results: 256,
|
|
18
|
+
});
|
|
19
|
+
function boundedText(value) {
|
|
20
|
+
return typeof value === 'string' && value.trim() !== '' && value.length <= exports.BINDING_LIMITS.text;
|
|
21
|
+
}
|
|
22
|
+
exports.boundedText = boundedText;
|
|
23
|
+
function boundedResultId(value) {
|
|
24
|
+
return (typeof value === 'string' &&
|
|
25
|
+
value.startsWith('claim-result/') &&
|
|
26
|
+
value.length <= exports.BINDING_LIMITS.resultIdText);
|
|
27
|
+
}
|
|
28
|
+
exports.boundedResultId = boundedResultId;
|
|
29
|
+
/** Shallow descriptor-only admission for authored arrays containing callbacks. */
|
|
30
|
+
function ownConfigArray(value, maximum) {
|
|
31
|
+
if (!Array.isArray(value) || Object.getPrototypeOf(value) !== Array.prototype)
|
|
32
|
+
throw new Error('Expected a plain configuration array.');
|
|
33
|
+
const length = Object.getOwnPropertyDescriptor(value, 'length')?.value;
|
|
34
|
+
if (typeof length !== 'number' ||
|
|
35
|
+
!Number.isSafeInteger(length) ||
|
|
36
|
+
length > maximum ||
|
|
37
|
+
Reflect.ownKeys(value).length !== length + 1)
|
|
38
|
+
throw new Error('Invalid configuration array.');
|
|
39
|
+
const items = [];
|
|
40
|
+
for (let index = 0; index < length; index++) {
|
|
41
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
|
|
42
|
+
if (!descriptor?.enumerable || !('value' in descriptor))
|
|
43
|
+
throw new Error('Expected dense configuration data.');
|
|
44
|
+
items.push(descriptor.value);
|
|
45
|
+
}
|
|
46
|
+
return Object.freeze(items);
|
|
47
|
+
}
|
|
48
|
+
exports.ownConfigArray = ownConfigArray;
|
|
49
|
+
/** Inspect authored configuration without evaluating getters or inherited fields. */
|
|
50
|
+
function scopeDeclarationOf(raw) {
|
|
51
|
+
const source = (0, boundedJson_js_1.ownData)(raw, ['id', 'version', 'dimensions', 'periodDimension']);
|
|
52
|
+
const sourceDimensions = ownConfigArray(source.dimensions, exports.BINDING_LIMITS.dimensions);
|
|
53
|
+
if (!boundedText(source.id) || !boundedText(source.version) || sourceDimensions.length === 0)
|
|
54
|
+
throw new Error('Invalid scope declaration.');
|
|
55
|
+
const names = new Set();
|
|
56
|
+
const dimensions = sourceDimensions.map((rawDimension) => {
|
|
57
|
+
const dimension = (0, boundedJson_js_1.ownData)(rawDimension, ['name', 'argumentPath', 'default', 'normalize']);
|
|
58
|
+
const path = (0, boundedJson_js_1.copyJson)(dimension.argumentPath, exports.BINDING_LIMITS.scopeBytes, true);
|
|
59
|
+
if (!boundedText(dimension.name) ||
|
|
60
|
+
names.has(dimension.name) ||
|
|
61
|
+
!Array.isArray(path) ||
|
|
62
|
+
path.length === 0 ||
|
|
63
|
+
path.length > exports.BINDING_LIMITS.path ||
|
|
64
|
+
!path.every(boundedText) ||
|
|
65
|
+
(Object.hasOwn(dimension, 'normalize') && typeof dimension.normalize !== 'function'))
|
|
66
|
+
throw new Error('Invalid scope dimension.');
|
|
67
|
+
names.add(dimension.name);
|
|
68
|
+
return Object.freeze({
|
|
69
|
+
name: dimension.name,
|
|
70
|
+
argumentPath: path,
|
|
71
|
+
...(Object.hasOwn(dimension, 'default') && {
|
|
72
|
+
default: (0, boundedJson_js_1.copyJson)(dimension.default, exports.BINDING_LIMITS.scopeBytes, true),
|
|
73
|
+
}),
|
|
74
|
+
...(typeof dimension.normalize === 'function' && {
|
|
75
|
+
normalize: dimension.normalize,
|
|
76
|
+
}),
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
if (Object.hasOwn(source, 'periodDimension') &&
|
|
80
|
+
(!boundedText(source.periodDimension) || !names.has(source.periodDimension)))
|
|
81
|
+
throw new Error('Invalid period dimension.');
|
|
82
|
+
return Object.freeze({
|
|
83
|
+
id: source.id,
|
|
84
|
+
version: source.version,
|
|
85
|
+
dimensions: Object.freeze(dimensions),
|
|
86
|
+
...(typeof source.periodDimension === 'string' && { periodDimension: source.periodDimension }),
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
exports.scopeDeclarationOf = scopeDeclarationOf;
|
|
90
|
+
/** Own data properties only: inherited names and accessors supply no scope. */
|
|
91
|
+
function argumentAt(args, path) {
|
|
92
|
+
if (path.length === 0 || path.length > exports.BINDING_LIMITS.path || !path.every(boundedText))
|
|
93
|
+
throw new Error('Invalid scope path.');
|
|
94
|
+
let cursor = args;
|
|
95
|
+
for (const key of path) {
|
|
96
|
+
if (cursor === null || typeof cursor !== 'object')
|
|
97
|
+
return undefined;
|
|
98
|
+
const descriptor = Object.getOwnPropertyDescriptor(cursor, key);
|
|
99
|
+
if (descriptor === undefined) {
|
|
100
|
+
if (key in cursor)
|
|
101
|
+
throw new Error('Inherited scope is not executed own-data.');
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
if (!descriptor.enumerable || !('value' in descriptor))
|
|
105
|
+
throw new Error('Scope requires own data.');
|
|
106
|
+
cursor = descriptor.value;
|
|
107
|
+
}
|
|
108
|
+
return cursor;
|
|
109
|
+
}
|
|
110
|
+
function executedScope(args, declaration) {
|
|
111
|
+
declaration = scopeDeclarationOf(declaration);
|
|
112
|
+
const scope = {};
|
|
113
|
+
for (const dimension of declaration.dimensions) {
|
|
114
|
+
if (!boundedText(dimension.name) || Object.hasOwn(scope, dimension.name))
|
|
115
|
+
throw new Error('Invalid scope dimension.');
|
|
116
|
+
let value = argumentAt(args, dimension.argumentPath);
|
|
117
|
+
if (value === undefined && Object.hasOwn(dimension, 'default'))
|
|
118
|
+
value = dimension.default;
|
|
119
|
+
if (value === undefined)
|
|
120
|
+
throw new Error('Required scope is missing.');
|
|
121
|
+
// Detach BEFORE invoking an authored normalizer: it cannot mutate dispatch.
|
|
122
|
+
value = (0, boundedJson_js_1.copyJson)(value, exports.BINDING_LIMITS.scopeBytes, true);
|
|
123
|
+
if (dimension.normalize !== undefined)
|
|
124
|
+
value = dimension.normalize(value);
|
|
125
|
+
Object.defineProperty(scope, dimension.name, {
|
|
126
|
+
value: (0, boundedJson_js_1.copyJson)(value, exports.BINDING_LIMITS.scopeBytes, true),
|
|
127
|
+
enumerable: true,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
if (declaration.periodDimension !== undefined &&
|
|
131
|
+
!Object.hasOwn(scope, declaration.periodDimension))
|
|
132
|
+
throw new Error('The period dimension is missing.');
|
|
133
|
+
return (0, boundedJson_js_1.copyJson)(scope, exports.BINDING_LIMITS.scopeBytes, true);
|
|
134
|
+
}
|
|
135
|
+
exports.executedScope = executedScope;
|
|
136
|
+
/** Exact declared dimensions; no inferred subset, defaults or currency conversion. */
|
|
137
|
+
function scopesMatch(evidence, intended) {
|
|
138
|
+
const expected = (0, boundedJson_js_1.ownData)((0, boundedJson_js_1.copyJson)(intended, exports.BINDING_LIMITS.scopeBytes, true));
|
|
139
|
+
return (0, canonicalJson_js_1.canonicalJson)(evidence) === (0, canonicalJson_js_1.canonicalJson)(expected);
|
|
140
|
+
}
|
|
141
|
+
exports.scopesMatch = scopesMatch;
|
|
142
|
+
/** The existing period/instant owners decide validity and temporal equivalence. */
|
|
143
|
+
function queriedPeriodMatches(scopeValue, period) {
|
|
144
|
+
const query = (0, boundedJson_js_1.ownData)(scopeValue, ['from', 'to']);
|
|
145
|
+
if ((0, period_js_1.periodProblem)({ queried: query, held: 'unknown' }, 'camel') !== undefined)
|
|
146
|
+
return false;
|
|
147
|
+
const from = (0, instant_js_1.instantOf)(query.from, 'lenient');
|
|
148
|
+
const to = (0, instant_js_1.instantOf)(query.to, 'lenient');
|
|
149
|
+
const actualFrom = (0, instant_js_1.instantOf)(period.queried.from, 'lenient');
|
|
150
|
+
const actualTo = (0, instant_js_1.instantOf)(period.queried.to, 'lenient');
|
|
151
|
+
return (from !== undefined &&
|
|
152
|
+
to !== undefined &&
|
|
153
|
+
actualFrom !== undefined &&
|
|
154
|
+
actualTo !== undefined &&
|
|
155
|
+
(0, instant_js_1.compareInstants)(from, actualFrom) === 0 &&
|
|
156
|
+
(0, instant_js_1.compareInstants)(to, actualTo) === 0);
|
|
157
|
+
}
|
|
158
|
+
exports.queriedPeriodMatches = queriedPeriodMatches;
|
|
159
|
+
//# sourceMappingURL=scope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../../src/integrity/claim-binding/scope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BINDING_REASONS = void 0;
|
|
4
|
+
exports.BINDING_REASONS = Object.freeze([
|
|
5
|
+
'invalid-claim',
|
|
6
|
+
'unknown-rule',
|
|
7
|
+
'invalid-rule',
|
|
8
|
+
'missing-result',
|
|
9
|
+
'ambiguous-result',
|
|
10
|
+
'foreign-result',
|
|
11
|
+
'incomplete-result',
|
|
12
|
+
'withheld-evidence',
|
|
13
|
+
'unassociated-result',
|
|
14
|
+
'invalid-evidence',
|
|
15
|
+
'missing-scope',
|
|
16
|
+
'scope-mismatch',
|
|
17
|
+
'scope-version-mismatch',
|
|
18
|
+
'missing-fact',
|
|
19
|
+
'ambiguous-fact',
|
|
20
|
+
'unasserted-value',
|
|
21
|
+
'coverage-undeclared',
|
|
22
|
+
'coverage-partial',
|
|
23
|
+
'coverage-unknown',
|
|
24
|
+
'coverage-stale',
|
|
25
|
+
]);
|
|
26
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/integrity/claim-binding/types.ts"],"names":[],"mappings":";;;AAgCa,QAAA,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C,eAAe;IACf,cAAc;IACd,cAAc;IACd,gBAAgB;IAChB,kBAAkB;IAClB,gBAAgB;IAChB,mBAAmB;IACnB,mBAAmB;IACnB,qBAAqB;IACrB,kBAAkB;IAClB,eAAe;IACf,gBAAgB;IAChB,wBAAwB;IACxB,cAAc;IACd,gBAAgB;IAChB,kBAAkB;IAClB,qBAAqB;IACrB,kBAAkB;IAClB,kBAAkB;IAClB,gBAAgB;CACR,CAAC,CAAC"}
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.unsupportedClaimsOf = void 0;
|
|
37
37
|
const types_js_1 = require("../assertion/types.js");
|
|
38
|
-
const
|
|
38
|
+
const evaluate_js_1 = require("./evaluate.js");
|
|
39
39
|
/** Minimal dot-path read; `undefined` for any miss along the way. */
|
|
40
40
|
function readPath(answer, path) {
|
|
41
41
|
let cursor = answer;
|
|
@@ -46,14 +46,6 @@ function readPath(answer, path) {
|
|
|
46
46
|
}
|
|
47
47
|
return cursor;
|
|
48
48
|
}
|
|
49
|
-
const isDoubt = (value) => value === null || value === 'unknown';
|
|
50
|
-
/** The stated one-direction leniency: '30' claims 30. */
|
|
51
|
-
function numericallyEqual(claimed, settled) {
|
|
52
|
-
return (typeof settled === 'number' &&
|
|
53
|
-
typeof claimed === 'string' &&
|
|
54
|
-
claimed.trim() !== '' &&
|
|
55
|
-
Number(claimed) === settled);
|
|
56
|
-
}
|
|
57
49
|
/**
|
|
58
50
|
* Compare the parsed answer's declared claims against the ledger.
|
|
59
51
|
* Pure; the caller files findings and dispositions.
|
|
@@ -70,26 +62,38 @@ function unsupportedClaimsOf(declared, ledger, answer, epoch) {
|
|
|
70
62
|
}
|
|
71
63
|
const rows = ledger.filter((r) => r.entity === claim.entity && r.field === claim.field);
|
|
72
64
|
const settledRow = rows[rows.length - 1];
|
|
73
|
-
if (settledRow === undefined
|
|
74
|
-
// Never collected
|
|
65
|
+
if (settledRow === undefined) {
|
|
66
|
+
// Never collected — incomparable, never an accusation.
|
|
75
67
|
dispositions.push({ claim: claim.answerField, disposition: 'unreachable' });
|
|
76
68
|
continue;
|
|
77
69
|
}
|
|
78
70
|
const subject = { kind: 'entity', id: claim.entity };
|
|
79
|
-
const settledValue = (0, types_js_1.comparableValueOf)(settledRow.value);
|
|
80
71
|
const ledgerProvenance = `${settledRow.toolName} (call ${settledRow.toolCallId}, iteration ` +
|
|
81
72
|
`${String(settledRow.iteration)})` +
|
|
82
73
|
(settledRow.measuredAt !== undefined ? `, measured_at ${String(settledRow.measuredAt)}` : '');
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
74
|
+
const evidence = {
|
|
75
|
+
subject,
|
|
76
|
+
predicate: claim.field,
|
|
77
|
+
value: settledRow.value,
|
|
78
|
+
epoch,
|
|
79
|
+
stratum: 'asserted',
|
|
80
|
+
provenance: ledgerProvenance,
|
|
81
|
+
};
|
|
82
|
+
const assertion = {
|
|
83
|
+
subject,
|
|
84
|
+
predicate: claim.field,
|
|
85
|
+
value: claimed,
|
|
86
|
+
epoch,
|
|
87
|
+
stratum: 'asserted',
|
|
88
|
+
provenance: `answer field '${claim.answerField}'`,
|
|
89
|
+
};
|
|
90
|
+
const evaluation = (0, evaluate_js_1.evaluateClaimPair)(evidence, assertion);
|
|
91
|
+
if (evaluation === 'evidence-unavailable') {
|
|
92
|
+
dispositions.push({ claim: claim.answerField, disposition: 'unreachable' });
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const settledValue = (0, types_js_1.comparableValueOf)(settledRow.value);
|
|
96
|
+
if (evaluation === 'doubt-against-value') {
|
|
93
97
|
// The model declined to claim a fact the run verified — an advisory.
|
|
94
98
|
findings.push({
|
|
95
99
|
kind: 'unsupported-claim',
|
|
@@ -100,16 +104,7 @@ function unsupportedClaimsOf(declared, ledger, answer, epoch) {
|
|
|
100
104
|
// predicate their identities collide and the second is deduplicated
|
|
101
105
|
// away, leaving the event channel disagreeing with the ledger.
|
|
102
106
|
predicate: claim.field,
|
|
103
|
-
witnesses: [
|
|
104
|
-
{
|
|
105
|
-
subject,
|
|
106
|
-
predicate: claim.field,
|
|
107
|
-
value: settledRow.value,
|
|
108
|
-
epoch,
|
|
109
|
-
stratum: 'asserted',
|
|
110
|
-
provenance: ledgerProvenance,
|
|
111
|
-
},
|
|
112
|
-
],
|
|
107
|
+
witnesses: [evidence],
|
|
113
108
|
epoch,
|
|
114
109
|
message: `The answer's '${claim.answerField}' says ${JSON.stringify(claimed)} while the run ` +
|
|
115
110
|
`verified ${claim.field}(${claim.entity}) = ${JSON.stringify(settledValue)} ` +
|
|
@@ -119,28 +114,15 @@ function unsupportedClaimsOf(declared, ledger, answer, epoch) {
|
|
|
119
114
|
dispositions.push({ claim: claim.answerField, disposition: 'checked-pass' });
|
|
120
115
|
continue;
|
|
121
116
|
}
|
|
122
|
-
if (
|
|
117
|
+
if (evaluation !== 'conflict') {
|
|
118
|
+
// Preserve the existing diagnostic mapping, including both-doubt and
|
|
119
|
+
// claim-nonparticipating. checked-pass here is NOT a support certificate.
|
|
123
120
|
dispositions.push({ claim: claim.answerField, disposition: 'checked-pass' });
|
|
124
121
|
continue;
|
|
125
122
|
}
|
|
126
|
-
// The algebra decides "contradict" — the fences apply for free.
|
|
127
123
|
const witnesses = [
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
predicate: claim.field,
|
|
131
|
-
value: settledRow.value,
|
|
132
|
-
epoch,
|
|
133
|
-
stratum: 'asserted',
|
|
134
|
-
provenance: ledgerProvenance,
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
subject,
|
|
138
|
-
predicate: claim.field,
|
|
139
|
-
value: claimed,
|
|
140
|
-
epoch,
|
|
141
|
-
stratum: 'asserted',
|
|
142
|
-
provenance: `answer field '${claim.answerField}'`,
|
|
143
|
-
},
|
|
124
|
+
evidence,
|
|
125
|
+
assertion,
|
|
144
126
|
// Earlier values ride as QUOTED history: legitimately superseded, on
|
|
145
127
|
// the record so a reader sees the fact's whole life, never firing.
|
|
146
128
|
...rows.slice(0, -1).map((r) => ({
|
|
@@ -151,10 +133,6 @@ function unsupportedClaimsOf(declared, ledger, answer, epoch) {
|
|
|
151
133
|
provenance: `${r.toolName} (call ${r.toolCallId}, iteration ${String(r.iteration)})`,
|
|
152
134
|
})),
|
|
153
135
|
];
|
|
154
|
-
if ((0, conflicts_js_1.conflictsOf)(witnesses).length === 0) {
|
|
155
|
-
dispositions.push({ claim: claim.answerField, disposition: 'checked-pass' });
|
|
156
|
-
continue;
|
|
157
|
-
}
|
|
158
136
|
findings.push({
|
|
159
137
|
kind: 'unsupported-claim',
|
|
160
138
|
seam: 'claim',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/integrity/unsupported-claim/check.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;;;AAGH,
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/integrity/unsupported-claim/check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.evaluateClaimPair = void 0;
|
|
4
|
+
const types_js_1 = require("../assertion/types.js");
|
|
5
|
+
const conflicts_js_1 = require("../assertion/conflicts.js");
|
|
6
|
+
const isDoubt = (value) => value === null || value === 'unknown';
|
|
7
|
+
/** The existing one-direction leniency: a raw numeric string claims a number. */
|
|
8
|
+
function numericallyEqual(claimed, settled) {
|
|
9
|
+
return (typeof settled === 'number' &&
|
|
10
|
+
typeof claimed === 'string' &&
|
|
11
|
+
claimed.trim() !== '' &&
|
|
12
|
+
Number(claimed) === settled);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Evaluate an explicitly selected evidence/claim pair, without selecting or
|
|
16
|
+
* rewriting either assertion. Adapters must establish that the asserted pair
|
|
17
|
+
* concerns the same subject, predicate and epoch before interpreting a result.
|
|
18
|
+
* No rule here establishes scope, completeness, authorisation or truth.
|
|
19
|
+
*/
|
|
20
|
+
function evaluateClaimPair(evidence, claim) {
|
|
21
|
+
if (!(0, types_js_1.participates)(evidence.value))
|
|
22
|
+
return 'evidence-unavailable';
|
|
23
|
+
const settled = (0, types_js_1.comparableValueOf)(evidence.value);
|
|
24
|
+
// RAW claimed null/'unknown' is doubt; a known(...) wrapper follows the
|
|
25
|
+
// algebra below. Unwrapping both sides here would change the old contract.
|
|
26
|
+
if (isDoubt(claim.value))
|
|
27
|
+
return isDoubt(settled) ? 'both-doubt' : 'doubt-against-value';
|
|
28
|
+
if (numericallyEqual(claim.value, settled))
|
|
29
|
+
return 'numeric-leniency';
|
|
30
|
+
const conflict = (0, conflicts_js_1.conflictsOf)([evidence, claim]).length !== 0;
|
|
31
|
+
// Classify the absence without converting it into positive agreement. Do
|
|
32
|
+
// this AFTER the algebra so its existing serialization failures still occur.
|
|
33
|
+
if (!(0, types_js_1.participates)(claim.value))
|
|
34
|
+
return 'claim-nonparticipating';
|
|
35
|
+
return conflict ? 'conflict' : 'no-conflict';
|
|
36
|
+
}
|
|
37
|
+
exports.evaluateClaimPair = evaluateClaimPair;
|
|
38
|
+
//# sourceMappingURL=evaluate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../../src/integrity/unsupported-claim/evaluate.ts"],"names":[],"mappings":";;;AAUA,oDAAwE;AACxE,4DAAwD;AAWxD,MAAM,OAAO,GAAG,CAAC,KAAc,EAAW,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AAEnF,iFAAiF;AACjF,SAAS,gBAAgB,CAAC,OAAgB,EAAE,OAAgB;IAC1D,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;QACrB,MAAM,CAAC,OAAO,CAAC,KAAK,OAAO,CAC5B,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,QAAmB,EAAE,KAAgB;IACrE,IAAI,CAAC,IAAA,uBAAY,EAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,sBAAsB,CAAC;IAEjE,MAAM,OAAO,GAAG,IAAA,4BAAiB,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,wEAAwE;IACxE,2EAA2E;IAC3E,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,qBAAqB,CAAC;IACzF,IAAI,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;QAAE,OAAO,kBAAkB,CAAC;IAEtE,MAAM,QAAQ,GAAG,IAAA,0BAAW,EAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7D,yEAAyE;IACzE,6EAA6E;IAC7E,IAAI,CAAC,IAAA,uBAAY,EAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,wBAAwB,CAAC;IAChE,OAAO,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC;AAC/C,CAAC;AAdD,8CAcC"}
|