agentfootprint 10.1.1 → 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.
Files changed (208) hide show
  1. package/CAPABILITIES.md +1 -0
  2. package/dist/adapters/llm/AnthropicProvider.js +17 -1
  3. package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
  4. package/dist/adapters/llm/anthropicMessageProjection.js +26 -1
  5. package/dist/adapters/llm/anthropicMessageProjection.js.map +1 -1
  6. package/dist/adapters/llm/anthropicMessagesWire.js +42 -37
  7. package/dist/adapters/llm/anthropicMessagesWire.js.map +1 -1
  8. package/dist/adapters/llm/anthropicReplayLayout.js +1 -0
  9. package/dist/adapters/llm/anthropicReplayLayout.js.map +1 -1
  10. package/dist/adapters/llm/anthropicToolArguments.js +122 -0
  11. package/dist/adapters/llm/anthropicToolArguments.js.map +1 -0
  12. package/dist/adapters/types.js.map +1 -1
  13. package/dist/answer-validation/validate.js +7 -107
  14. package/dist/answer-validation/validate.js.map +1 -1
  15. package/dist/core/Agent.js +5 -0
  16. package/dist/core/Agent.js.map +1 -1
  17. package/dist/core/agent/arguments/resolve.js +4 -0
  18. package/dist/core/agent/arguments/resolve.js.map +1 -1
  19. package/dist/core/agent/arguments/subflow.js +1 -0
  20. package/dist/core/agent/arguments/subflow.js.map +1 -1
  21. package/dist/core/agent/findings/types.js.map +1 -1
  22. package/dist/core/agent/findings/verificationCheck.js +99 -0
  23. package/dist/core/agent/findings/verificationCheck.js.map +1 -0
  24. package/dist/core/agent/findings/verificationCheckpoint.js +110 -0
  25. package/dist/core/agent/findings/verificationCheckpoint.js.map +1 -0
  26. package/dist/core/agent/findings/verificationConfig.js +119 -0
  27. package/dist/core/agent/findings/verificationConfig.js.map +1 -0
  28. package/dist/core/agent/findings/verificationRow.js +181 -0
  29. package/dist/core/agent/findings/verificationRow.js.map +1 -0
  30. package/dist/core/agent/findings/verificationState.js +152 -0
  31. package/dist/core/agent/findings/verificationState.js.map +1 -0
  32. package/dist/core/agent/findings/verificationTypes.js +23 -0
  33. package/dist/core/agent/findings/verificationTypes.js.map +1 -0
  34. package/dist/core/agent/outputEnforcement.js +5 -0
  35. package/dist/core/agent/outputEnforcement.js.map +1 -1
  36. package/dist/core/agent/stages/toolCalls.js +20 -3
  37. package/dist/core/agent/stages/toolCalls.js.map +1 -1
  38. package/dist/core/agent/toolArgsValidation.js +12 -1
  39. package/dist/core/agent/toolArgsValidation.js.map +1 -1
  40. package/dist/core/runCheckpoint.js +45 -4
  41. package/dist/core/runCheckpoint.js.map +1 -1
  42. package/dist/esm/adapters/llm/AnthropicProvider.js +17 -1
  43. package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
  44. package/dist/esm/adapters/llm/anthropicMessageProjection.js +26 -1
  45. package/dist/esm/adapters/llm/anthropicMessageProjection.js.map +1 -1
  46. package/dist/esm/adapters/llm/anthropicMessagesWire.d.ts +4 -3
  47. package/dist/esm/adapters/llm/anthropicMessagesWire.js +42 -37
  48. package/dist/esm/adapters/llm/anthropicMessagesWire.js.map +1 -1
  49. package/dist/esm/adapters/llm/anthropicReplayLayout.js +1 -0
  50. package/dist/esm/adapters/llm/anthropicReplayLayout.js.map +1 -1
  51. package/dist/esm/adapters/llm/anthropicToolArguments.d.ts +31 -0
  52. package/dist/esm/adapters/llm/anthropicToolArguments.js +118 -0
  53. package/dist/esm/adapters/llm/anthropicToolArguments.js.map +1 -0
  54. package/dist/esm/adapters/types.d.ts +17 -0
  55. package/dist/esm/adapters/types.js.map +1 -1
  56. package/dist/esm/answer-validation/validate.js +1 -101
  57. package/dist/esm/answer-validation/validate.js.map +1 -1
  58. package/dist/esm/core/Agent.js +5 -0
  59. package/dist/esm/core/Agent.js.map +1 -1
  60. package/dist/esm/core/agent/arguments/resolve.d.ts +1 -0
  61. package/dist/esm/core/agent/arguments/resolve.js +4 -0
  62. package/dist/esm/core/agent/arguments/resolve.js.map +1 -1
  63. package/dist/esm/core/agent/arguments/subflow.js +1 -0
  64. package/dist/esm/core/agent/arguments/subflow.js.map +1 -1
  65. package/dist/esm/core/agent/findings/types.d.ts +2 -1
  66. package/dist/esm/core/agent/findings/types.js.map +1 -1
  67. package/dist/esm/core/agent/findings/verificationCheck.d.ts +24 -0
  68. package/dist/esm/core/agent/findings/verificationCheck.js +95 -0
  69. package/dist/esm/core/agent/findings/verificationCheck.js.map +1 -0
  70. package/dist/esm/core/agent/findings/verificationCheckpoint.d.ts +10 -0
  71. package/dist/esm/core/agent/findings/verificationCheckpoint.js +104 -0
  72. package/dist/esm/core/agent/findings/verificationCheckpoint.js.map +1 -0
  73. package/dist/esm/core/agent/findings/verificationConfig.d.ts +30 -0
  74. package/dist/esm/core/agent/findings/verificationConfig.js +115 -0
  75. package/dist/esm/core/agent/findings/verificationConfig.js.map +1 -0
  76. package/dist/esm/core/agent/findings/verificationRow.d.ts +16 -0
  77. package/dist/esm/core/agent/findings/verificationRow.js +174 -0
  78. package/dist/esm/core/agent/findings/verificationRow.js.map +1 -0
  79. package/dist/esm/core/agent/findings/verificationState.d.ts +39 -0
  80. package/dist/esm/core/agent/findings/verificationState.js +143 -0
  81. package/dist/esm/core/agent/findings/verificationState.js.map +1 -0
  82. package/dist/esm/core/agent/findings/verificationTypes.d.ts +55 -0
  83. package/dist/esm/core/agent/findings/verificationTypes.js +20 -0
  84. package/dist/esm/core/agent/findings/verificationTypes.js.map +1 -0
  85. package/dist/esm/core/agent/outputEnforcement.js +5 -0
  86. package/dist/esm/core/agent/outputEnforcement.js.map +1 -1
  87. package/dist/esm/core/agent/stages/toolCalls.js +21 -4
  88. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  89. package/dist/esm/core/agent/toolArgsValidation.d.ts +2 -0
  90. package/dist/esm/core/agent/toolArgsValidation.js +10 -0
  91. package/dist/esm/core/agent/toolArgsValidation.js.map +1 -1
  92. package/dist/esm/core/agent/types.d.ts +1 -0
  93. package/dist/esm/core/runCheckpoint.d.ts +11 -1
  94. package/dist/esm/core/runCheckpoint.js +45 -4
  95. package/dist/esm/core/runCheckpoint.js.map +1 -1
  96. package/dist/esm/integrity/claim-binding/admit.d.ts +12 -0
  97. package/dist/esm/integrity/claim-binding/admit.js +204 -0
  98. package/dist/esm/integrity/claim-binding/admit.js.map +1 -0
  99. package/dist/esm/integrity/claim-binding/bindEvidence.d.ts +8 -0
  100. package/dist/esm/integrity/claim-binding/bindEvidence.js +144 -0
  101. package/dist/esm/integrity/claim-binding/bindEvidence.js.map +1 -0
  102. package/dist/esm/integrity/claim-binding/capture.d.ts +25 -0
  103. package/dist/esm/integrity/claim-binding/capture.js +143 -0
  104. package/dist/esm/integrity/claim-binding/capture.js.map +1 -0
  105. package/dist/esm/integrity/claim-binding/scope.d.ts +23 -0
  106. package/dist/esm/integrity/claim-binding/scope.js +149 -0
  107. package/dist/esm/integrity/claim-binding/scope.js.map +1 -0
  108. package/dist/esm/integrity/claim-binding/types.d.ts +99 -0
  109. package/dist/esm/integrity/claim-binding/types.js +23 -0
  110. package/dist/esm/integrity/claim-binding/types.js.map +1 -0
  111. package/dist/esm/integrity/unsupported-claim/check.js +33 -55
  112. package/dist/esm/integrity/unsupported-claim/check.js.map +1 -1
  113. package/dist/esm/integrity/unsupported-claim/evaluate.d.ts +18 -0
  114. package/dist/esm/integrity/unsupported-claim/evaluate.js +34 -0
  115. package/dist/esm/integrity/unsupported-claim/evaluate.js.map +1 -0
  116. package/dist/esm/lib/boundedJson.d.ts +3 -0
  117. package/dist/esm/lib/boundedJson.js +104 -0
  118. package/dist/esm/lib/boundedJson.js.map +1 -0
  119. package/dist/esm/lib/time-travel/receipt.js +4 -0
  120. package/dist/esm/lib/time-travel/receipt.js.map +1 -1
  121. package/dist/esm/memory/identity/encode.d.ts +7 -0
  122. package/dist/esm/memory/identity/encode.js +14 -0
  123. package/dist/esm/memory/identity/encode.js.map +1 -1
  124. package/dist/esm/redaction/conversation.js +3 -0
  125. package/dist/esm/redaction/conversation.js.map +1 -1
  126. package/dist/esm/redaction/knownStrings.js +5 -0
  127. package/dist/esm/redaction/knownStrings.js.map +1 -1
  128. package/dist/integrity/claim-binding/admit.js +211 -0
  129. package/dist/integrity/claim-binding/admit.js.map +1 -0
  130. package/dist/integrity/claim-binding/bindEvidence.js +148 -0
  131. package/dist/integrity/claim-binding/bindEvidence.js.map +1 -0
  132. package/dist/integrity/claim-binding/capture.js +152 -0
  133. package/dist/integrity/claim-binding/capture.js.map +1 -0
  134. package/dist/integrity/claim-binding/scope.js +159 -0
  135. package/dist/integrity/claim-binding/scope.js.map +1 -0
  136. package/dist/integrity/claim-binding/types.js +26 -0
  137. package/dist/integrity/claim-binding/types.js.map +1 -0
  138. package/dist/integrity/unsupported-claim/check.js +32 -54
  139. package/dist/integrity/unsupported-claim/check.js.map +1 -1
  140. package/dist/integrity/unsupported-claim/evaluate.js +38 -0
  141. package/dist/integrity/unsupported-claim/evaluate.js.map +1 -0
  142. package/dist/lib/boundedJson.js +109 -0
  143. package/dist/lib/boundedJson.js.map +1 -0
  144. package/dist/lib/time-travel/receipt.js +4 -0
  145. package/dist/lib/time-travel/receipt.js.map +1 -1
  146. package/dist/memory/identity/encode.js +16 -1
  147. package/dist/memory/identity/encode.js.map +1 -1
  148. package/dist/redaction/conversation.js +3 -0
  149. package/dist/redaction/conversation.js.map +1 -1
  150. package/dist/redaction/knownStrings.js +5 -0
  151. package/dist/redaction/knownStrings.js.map +1 -1
  152. package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
  153. package/dist/types/adapters/llm/anthropicMessageProjection.d.ts.map +1 -1
  154. package/dist/types/adapters/llm/anthropicMessagesWire.d.ts +4 -3
  155. package/dist/types/adapters/llm/anthropicMessagesWire.d.ts.map +1 -1
  156. package/dist/types/adapters/llm/anthropicReplayLayout.d.ts.map +1 -1
  157. package/dist/types/adapters/llm/anthropicToolArguments.d.ts +32 -0
  158. package/dist/types/adapters/llm/anthropicToolArguments.d.ts.map +1 -0
  159. package/dist/types/adapters/types.d.ts +17 -0
  160. package/dist/types/adapters/types.d.ts.map +1 -1
  161. package/dist/types/answer-validation/validate.d.ts.map +1 -1
  162. package/dist/types/core/Agent.d.ts.map +1 -1
  163. package/dist/types/core/agent/arguments/resolve.d.ts +1 -0
  164. package/dist/types/core/agent/arguments/resolve.d.ts.map +1 -1
  165. package/dist/types/core/agent/arguments/subflow.d.ts.map +1 -1
  166. package/dist/types/core/agent/findings/types.d.ts +2 -1
  167. package/dist/types/core/agent/findings/types.d.ts.map +1 -1
  168. package/dist/types/core/agent/findings/verificationCheck.d.ts +25 -0
  169. package/dist/types/core/agent/findings/verificationCheck.d.ts.map +1 -0
  170. package/dist/types/core/agent/findings/verificationCheckpoint.d.ts +11 -0
  171. package/dist/types/core/agent/findings/verificationCheckpoint.d.ts.map +1 -0
  172. package/dist/types/core/agent/findings/verificationConfig.d.ts +31 -0
  173. package/dist/types/core/agent/findings/verificationConfig.d.ts.map +1 -0
  174. package/dist/types/core/agent/findings/verificationRow.d.ts +17 -0
  175. package/dist/types/core/agent/findings/verificationRow.d.ts.map +1 -0
  176. package/dist/types/core/agent/findings/verificationState.d.ts +40 -0
  177. package/dist/types/core/agent/findings/verificationState.d.ts.map +1 -0
  178. package/dist/types/core/agent/findings/verificationTypes.d.ts +56 -0
  179. package/dist/types/core/agent/findings/verificationTypes.d.ts.map +1 -0
  180. package/dist/types/core/agent/outputEnforcement.d.ts.map +1 -1
  181. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  182. package/dist/types/core/agent/toolArgsValidation.d.ts +2 -0
  183. package/dist/types/core/agent/toolArgsValidation.d.ts.map +1 -1
  184. package/dist/types/core/agent/types.d.ts +1 -0
  185. package/dist/types/core/agent/types.d.ts.map +1 -1
  186. package/dist/types/core/runCheckpoint.d.ts +11 -1
  187. package/dist/types/core/runCheckpoint.d.ts.map +1 -1
  188. package/dist/types/integrity/claim-binding/admit.d.ts +13 -0
  189. package/dist/types/integrity/claim-binding/admit.d.ts.map +1 -0
  190. package/dist/types/integrity/claim-binding/bindEvidence.d.ts +9 -0
  191. package/dist/types/integrity/claim-binding/bindEvidence.d.ts.map +1 -0
  192. package/dist/types/integrity/claim-binding/capture.d.ts +26 -0
  193. package/dist/types/integrity/claim-binding/capture.d.ts.map +1 -0
  194. package/dist/types/integrity/claim-binding/scope.d.ts +24 -0
  195. package/dist/types/integrity/claim-binding/scope.d.ts.map +1 -0
  196. package/dist/types/integrity/claim-binding/types.d.ts +100 -0
  197. package/dist/types/integrity/claim-binding/types.d.ts.map +1 -0
  198. package/dist/types/integrity/unsupported-claim/check.d.ts.map +1 -1
  199. package/dist/types/integrity/unsupported-claim/evaluate.d.ts +19 -0
  200. package/dist/types/integrity/unsupported-claim/evaluate.d.ts.map +1 -0
  201. package/dist/types/lib/boundedJson.d.ts +4 -0
  202. package/dist/types/lib/boundedJson.d.ts.map +1 -0
  203. package/dist/types/lib/time-travel/receipt.d.ts.map +1 -1
  204. package/dist/types/memory/identity/encode.d.ts +7 -0
  205. package/dist/types/memory/identity/encode.d.ts.map +1 -1
  206. package/dist/types/redaction/conversation.d.ts.map +1 -1
  207. package/dist/types/redaction/knownStrings.d.ts.map +1 -1
  208. package/package.json +2 -1
@@ -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":"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"}
@@ -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 conflicts_js_1 = require("../assertion/conflicts.js");
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 || !(0, types_js_1.participates)(settledRow.value)) {
74
- // Never collected, or collected as an honest unknown — incomparable.
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
- if (isDoubt(claimed)) {
84
- // …unless the RUN settled a non-reading too. Reporting `null` for a
85
- // fact whose settled value is `null` is agreement, not doubt — the
86
- // model declined nothing. Checked here rather than by falling through
87
- // to the comparison below, because the advisory's whole premise is
88
- // "a verified value existed and the answer declined it".
89
- if (isDoubt(settledValue)) {
90
- dispositions.push({ claim: claim.answerField, disposition: 'checked-pass' });
91
- continue;
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 (numericallyEqual(claimed, settledValue)) {
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
- subject,
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":"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"}
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"}