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.
Files changed (215) 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 +63 -12
  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 +9 -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.d.ts +1 -1
  50. package/dist/esm/adapters/llm/anthropicReplayLayout.js +63 -12
  51. package/dist/esm/adapters/llm/anthropicReplayLayout.js.map +1 -1
  52. package/dist/esm/adapters/llm/anthropicToolArguments.d.ts +31 -0
  53. package/dist/esm/adapters/llm/anthropicToolArguments.js +118 -0
  54. package/dist/esm/adapters/llm/anthropicToolArguments.js.map +1 -0
  55. package/dist/esm/adapters/types.d.ts +17 -0
  56. package/dist/esm/adapters/types.js.map +1 -1
  57. package/dist/esm/answer-validation/validate.js +1 -101
  58. package/dist/esm/answer-validation/validate.js.map +1 -1
  59. package/dist/esm/core/Agent.js +5 -0
  60. package/dist/esm/core/Agent.js.map +1 -1
  61. package/dist/esm/core/agent/arguments/resolve.d.ts +1 -0
  62. package/dist/esm/core/agent/arguments/resolve.js +4 -0
  63. package/dist/esm/core/agent/arguments/resolve.js.map +1 -1
  64. package/dist/esm/core/agent/arguments/subflow.js +1 -0
  65. package/dist/esm/core/agent/arguments/subflow.js.map +1 -1
  66. package/dist/esm/core/agent/findings/types.d.ts +2 -1
  67. package/dist/esm/core/agent/findings/types.js.map +1 -1
  68. package/dist/esm/core/agent/findings/verificationCheck.d.ts +24 -0
  69. package/dist/esm/core/agent/findings/verificationCheck.js +95 -0
  70. package/dist/esm/core/agent/findings/verificationCheck.js.map +1 -0
  71. package/dist/esm/core/agent/findings/verificationCheckpoint.d.ts +10 -0
  72. package/dist/esm/core/agent/findings/verificationCheckpoint.js +104 -0
  73. package/dist/esm/core/agent/findings/verificationCheckpoint.js.map +1 -0
  74. package/dist/esm/core/agent/findings/verificationConfig.d.ts +30 -0
  75. package/dist/esm/core/agent/findings/verificationConfig.js +115 -0
  76. package/dist/esm/core/agent/findings/verificationConfig.js.map +1 -0
  77. package/dist/esm/core/agent/findings/verificationRow.d.ts +16 -0
  78. package/dist/esm/core/agent/findings/verificationRow.js +174 -0
  79. package/dist/esm/core/agent/findings/verificationRow.js.map +1 -0
  80. package/dist/esm/core/agent/findings/verificationState.d.ts +39 -0
  81. package/dist/esm/core/agent/findings/verificationState.js +143 -0
  82. package/dist/esm/core/agent/findings/verificationState.js.map +1 -0
  83. package/dist/esm/core/agent/findings/verificationTypes.d.ts +55 -0
  84. package/dist/esm/core/agent/findings/verificationTypes.js +20 -0
  85. package/dist/esm/core/agent/findings/verificationTypes.js.map +1 -0
  86. package/dist/esm/core/agent/outputEnforcement.js +5 -0
  87. package/dist/esm/core/agent/outputEnforcement.js.map +1 -1
  88. package/dist/esm/core/agent/stages/toolCalls.js +21 -4
  89. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  90. package/dist/esm/core/agent/toolArgsValidation.d.ts +2 -0
  91. package/dist/esm/core/agent/toolArgsValidation.js +10 -0
  92. package/dist/esm/core/agent/toolArgsValidation.js.map +1 -1
  93. package/dist/esm/core/agent/types.d.ts +1 -0
  94. package/dist/esm/core/runCheckpoint.d.ts +11 -1
  95. package/dist/esm/core/runCheckpoint.js +45 -4
  96. package/dist/esm/core/runCheckpoint.js.map +1 -1
  97. package/dist/esm/integrity/claim-binding/admit.d.ts +12 -0
  98. package/dist/esm/integrity/claim-binding/admit.js +204 -0
  99. package/dist/esm/integrity/claim-binding/admit.js.map +1 -0
  100. package/dist/esm/integrity/claim-binding/bindEvidence.d.ts +8 -0
  101. package/dist/esm/integrity/claim-binding/bindEvidence.js +144 -0
  102. package/dist/esm/integrity/claim-binding/bindEvidence.js.map +1 -0
  103. package/dist/esm/integrity/claim-binding/capture.d.ts +25 -0
  104. package/dist/esm/integrity/claim-binding/capture.js +143 -0
  105. package/dist/esm/integrity/claim-binding/capture.js.map +1 -0
  106. package/dist/esm/integrity/claim-binding/scope.d.ts +23 -0
  107. package/dist/esm/integrity/claim-binding/scope.js +149 -0
  108. package/dist/esm/integrity/claim-binding/scope.js.map +1 -0
  109. package/dist/esm/integrity/claim-binding/types.d.ts +99 -0
  110. package/dist/esm/integrity/claim-binding/types.js +23 -0
  111. package/dist/esm/integrity/claim-binding/types.js.map +1 -0
  112. package/dist/esm/integrity/unsupported-claim/check.js +33 -55
  113. package/dist/esm/integrity/unsupported-claim/check.js.map +1 -1
  114. package/dist/esm/integrity/unsupported-claim/evaluate.d.ts +18 -0
  115. package/dist/esm/integrity/unsupported-claim/evaluate.js +34 -0
  116. package/dist/esm/integrity/unsupported-claim/evaluate.js.map +1 -0
  117. package/dist/esm/lib/boundedJson.d.ts +3 -0
  118. package/dist/esm/lib/boundedJson.js +104 -0
  119. package/dist/esm/lib/boundedJson.js.map +1 -0
  120. package/dist/esm/lib/time-travel/receipt.js +4 -0
  121. package/dist/esm/lib/time-travel/receipt.js.map +1 -1
  122. package/dist/esm/memory/identity/encode.d.ts +7 -0
  123. package/dist/esm/memory/identity/encode.js +14 -0
  124. package/dist/esm/memory/identity/encode.js.map +1 -1
  125. package/dist/esm/redaction/conversation.js +3 -0
  126. package/dist/esm/redaction/conversation.js.map +1 -1
  127. package/dist/esm/redaction/knownStrings.js +8 -0
  128. package/dist/esm/redaction/knownStrings.js.map +1 -1
  129. package/dist/esm/thinking/replay.d.ts +6 -1
  130. package/dist/esm/thinking/replay.js.map +1 -1
  131. package/dist/integrity/claim-binding/admit.js +211 -0
  132. package/dist/integrity/claim-binding/admit.js.map +1 -0
  133. package/dist/integrity/claim-binding/bindEvidence.js +148 -0
  134. package/dist/integrity/claim-binding/bindEvidence.js.map +1 -0
  135. package/dist/integrity/claim-binding/capture.js +152 -0
  136. package/dist/integrity/claim-binding/capture.js.map +1 -0
  137. package/dist/integrity/claim-binding/scope.js +159 -0
  138. package/dist/integrity/claim-binding/scope.js.map +1 -0
  139. package/dist/integrity/claim-binding/types.js +26 -0
  140. package/dist/integrity/claim-binding/types.js.map +1 -0
  141. package/dist/integrity/unsupported-claim/check.js +32 -54
  142. package/dist/integrity/unsupported-claim/check.js.map +1 -1
  143. package/dist/integrity/unsupported-claim/evaluate.js +38 -0
  144. package/dist/integrity/unsupported-claim/evaluate.js.map +1 -0
  145. package/dist/lib/boundedJson.js +109 -0
  146. package/dist/lib/boundedJson.js.map +1 -0
  147. package/dist/lib/time-travel/receipt.js +4 -0
  148. package/dist/lib/time-travel/receipt.js.map +1 -1
  149. package/dist/memory/identity/encode.js +16 -1
  150. package/dist/memory/identity/encode.js.map +1 -1
  151. package/dist/redaction/conversation.js +3 -0
  152. package/dist/redaction/conversation.js.map +1 -1
  153. package/dist/redaction/knownStrings.js +8 -0
  154. package/dist/redaction/knownStrings.js.map +1 -1
  155. package/dist/thinking/replay.js.map +1 -1
  156. package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
  157. package/dist/types/adapters/llm/anthropicMessageProjection.d.ts.map +1 -1
  158. package/dist/types/adapters/llm/anthropicMessagesWire.d.ts +9 -3
  159. package/dist/types/adapters/llm/anthropicMessagesWire.d.ts.map +1 -1
  160. package/dist/types/adapters/llm/anthropicReplayLayout.d.ts +1 -1
  161. package/dist/types/adapters/llm/anthropicReplayLayout.d.ts.map +1 -1
  162. package/dist/types/adapters/llm/anthropicToolArguments.d.ts +32 -0
  163. package/dist/types/adapters/llm/anthropicToolArguments.d.ts.map +1 -0
  164. package/dist/types/adapters/types.d.ts +17 -0
  165. package/dist/types/adapters/types.d.ts.map +1 -1
  166. package/dist/types/answer-validation/validate.d.ts.map +1 -1
  167. package/dist/types/core/Agent.d.ts.map +1 -1
  168. package/dist/types/core/agent/arguments/resolve.d.ts +1 -0
  169. package/dist/types/core/agent/arguments/resolve.d.ts.map +1 -1
  170. package/dist/types/core/agent/arguments/subflow.d.ts.map +1 -1
  171. package/dist/types/core/agent/findings/types.d.ts +2 -1
  172. package/dist/types/core/agent/findings/types.d.ts.map +1 -1
  173. package/dist/types/core/agent/findings/verificationCheck.d.ts +25 -0
  174. package/dist/types/core/agent/findings/verificationCheck.d.ts.map +1 -0
  175. package/dist/types/core/agent/findings/verificationCheckpoint.d.ts +11 -0
  176. package/dist/types/core/agent/findings/verificationCheckpoint.d.ts.map +1 -0
  177. package/dist/types/core/agent/findings/verificationConfig.d.ts +31 -0
  178. package/dist/types/core/agent/findings/verificationConfig.d.ts.map +1 -0
  179. package/dist/types/core/agent/findings/verificationRow.d.ts +17 -0
  180. package/dist/types/core/agent/findings/verificationRow.d.ts.map +1 -0
  181. package/dist/types/core/agent/findings/verificationState.d.ts +40 -0
  182. package/dist/types/core/agent/findings/verificationState.d.ts.map +1 -0
  183. package/dist/types/core/agent/findings/verificationTypes.d.ts +56 -0
  184. package/dist/types/core/agent/findings/verificationTypes.d.ts.map +1 -0
  185. package/dist/types/core/agent/outputEnforcement.d.ts.map +1 -1
  186. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  187. package/dist/types/core/agent/toolArgsValidation.d.ts +2 -0
  188. package/dist/types/core/agent/toolArgsValidation.d.ts.map +1 -1
  189. package/dist/types/core/agent/types.d.ts +1 -0
  190. package/dist/types/core/agent/types.d.ts.map +1 -1
  191. package/dist/types/core/runCheckpoint.d.ts +11 -1
  192. package/dist/types/core/runCheckpoint.d.ts.map +1 -1
  193. package/dist/types/integrity/claim-binding/admit.d.ts +13 -0
  194. package/dist/types/integrity/claim-binding/admit.d.ts.map +1 -0
  195. package/dist/types/integrity/claim-binding/bindEvidence.d.ts +9 -0
  196. package/dist/types/integrity/claim-binding/bindEvidence.d.ts.map +1 -0
  197. package/dist/types/integrity/claim-binding/capture.d.ts +26 -0
  198. package/dist/types/integrity/claim-binding/capture.d.ts.map +1 -0
  199. package/dist/types/integrity/claim-binding/scope.d.ts +24 -0
  200. package/dist/types/integrity/claim-binding/scope.d.ts.map +1 -0
  201. package/dist/types/integrity/claim-binding/types.d.ts +100 -0
  202. package/dist/types/integrity/claim-binding/types.d.ts.map +1 -0
  203. package/dist/types/integrity/unsupported-claim/check.d.ts.map +1 -1
  204. package/dist/types/integrity/unsupported-claim/evaluate.d.ts +19 -0
  205. package/dist/types/integrity/unsupported-claim/evaluate.d.ts.map +1 -0
  206. package/dist/types/lib/boundedJson.d.ts +4 -0
  207. package/dist/types/lib/boundedJson.d.ts.map +1 -0
  208. package/dist/types/lib/time-travel/receipt.d.ts.map +1 -1
  209. package/dist/types/memory/identity/encode.d.ts +7 -0
  210. package/dist/types/memory/identity/encode.d.ts.map +1 -1
  211. package/dist/types/redaction/conversation.d.ts.map +1 -1
  212. package/dist/types/redaction/knownStrings.d.ts.map +1 -1
  213. package/dist/types/thinking/replay.d.ts +6 -1
  214. package/dist/types/thinking/replay.d.ts.map +1 -1
  215. package/package.json +3 -2
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isClaimVerificationRow = exports.readClaimVerificationRow = exports.readClaimIdentity = exports.claimIdentityOf = exports.VERIFICATION_LIMITS = void 0;
4
+ /**
5
+ * Strict saved claim-verification protocol. Role: validate and detach a recorded
6
+ * check, never reconstruct evidence or rerun its checker. Storage authenticity
7
+ * and caller authorization are the surrounding checkpoint owner's responsibility.
8
+ */
9
+ const boundedJson_js_1 = require("../../../lib/boundedJson.js");
10
+ const canonicalJson_js_1 = require("../../../lib/canonicalJson.js");
11
+ const encode_js_1 = require("../../../memory/identity/encode.js");
12
+ const types_js_1 = require("../../../integrity/assertion/types.js");
13
+ const scope_js_1 = require("../../../integrity/claim-binding/scope.js");
14
+ const admit_js_1 = require("../../../integrity/claim-binding/admit.js");
15
+ const capture_js_1 = require("../../../integrity/claim-binding/capture.js");
16
+ const period_js_1 = require("../coverage/period.js");
17
+ const types_js_2 = require("./types.js");
18
+ const verificationTypes_js_1 = require("./verificationTypes.js");
19
+ /** Reuse receipt bounds; declared values have the compact binding-request cap. */
20
+ exports.VERIFICATION_LIMITS = Object.freeze({
21
+ rowBytes: scope_js_1.BINDING_LIMITS.resultBytes,
22
+ valueBytes: scope_js_1.BINDING_LIMITS.scopeBytes,
23
+ identityText: scope_js_1.BINDING_LIMITS.resultIdText + 'claim-verification'.length - 'claim-result'.length,
24
+ });
25
+ /** A runtime-reserved claim occurrence cannot collide with a result occurrence. */
26
+ function claimIdentityOf(raw) {
27
+ const identity = (0, boundedJson_js_1.ownData)(raw, ['namespace', 'runId', 'ordinal']);
28
+ if (!(0, scope_js_1.boundedText)(identity.namespace) ||
29
+ !(0, scope_js_1.boundedText)(identity.runId) ||
30
+ typeof identity.ordinal !== 'number' ||
31
+ !Number.isSafeInteger(identity.ordinal) ||
32
+ identity.ordinal < 1)
33
+ throw new TypeError('Invalid runtime claim identity.');
34
+ return `claim-verification/${(0, encode_js_1.encodeIdentityField)(identity.namespace)}/${(0, encode_js_1.encodeIdentityField)(identity.runId)}/${identity.ordinal}`;
35
+ }
36
+ exports.claimIdentityOf = claimIdentityOf;
37
+ /** Canonical claim tuple reader, shared with checkpoint lineage/counter checks. */
38
+ function readClaimIdentity(value) {
39
+ if (typeof value !== 'string' || value.length > exports.VERIFICATION_LIMITS.identityText)
40
+ throw new TypeError('Invalid saved claim identity.');
41
+ const parts = value.split('/');
42
+ if (parts.length !== 4 || parts[0] !== 'claim-verification')
43
+ throw new TypeError('Invalid saved claim identity.');
44
+ const identity = {
45
+ namespace: (0, encode_js_1.decodePresentIdentityField)(parts[1]),
46
+ runId: (0, encode_js_1.decodePresentIdentityField)(parts[2]),
47
+ ordinal: Number(parts[3]),
48
+ };
49
+ if (value !== claimIdentityOf(identity))
50
+ throw new TypeError('Noncanonical saved claim identity.');
51
+ return Object.freeze(identity);
52
+ }
53
+ exports.readClaimIdentity = readClaimIdentity;
54
+ function integer(value, minimum) {
55
+ return typeof value === 'number' && Number.isSafeInteger(value) && value >= minimum;
56
+ }
57
+ function eligibleAssertion(raw) {
58
+ const assertion = (0, boundedJson_js_1.ownData)(raw, ['subject', 'predicate', 'value', 'stratum', 'provenance']);
59
+ const subject = (0, boundedJson_js_1.ownData)(assertion.subject, ['kind', 'id']);
60
+ const comparable = (0, types_js_1.comparableValueOf)(assertion.value);
61
+ if (subject.kind !== 'entity' ||
62
+ !(0, scope_js_1.boundedText)(subject.id) ||
63
+ !(0, scope_js_1.boundedText)(assertion.predicate) ||
64
+ assertion.stratum !== 'asserted' ||
65
+ typeof assertion.provenance !== 'string' ||
66
+ !Object.hasOwn(assertion, 'value') ||
67
+ !(0, types_js_1.participates)(assertion.value) ||
68
+ comparable === null ||
69
+ comparable === undefined ||
70
+ comparable === 'unknown')
71
+ throw new TypeError('Invalid eligible assertion.');
72
+ return assertion;
73
+ }
74
+ function validateResolved(row, claimIdentity) {
75
+ const resolved = (0, boundedJson_js_1.ownData)(row.resolved, [
76
+ 'resultId',
77
+ 'rule',
78
+ 'scope',
79
+ 'coverage',
80
+ 'period',
81
+ 'evidence',
82
+ 'claim',
83
+ ]);
84
+ const rule = (0, boundedJson_js_1.ownData)(resolved.rule, ['id', 'version']);
85
+ const scope = (0, boundedJson_js_1.ownData)((0, boundedJson_js_1.copyJson)(resolved.scope, scope_js_1.BINDING_LIMITS.scopeBytes, true));
86
+ const resultIdentity = (0, capture_js_1.readResultIdentity)(resolved.resultId);
87
+ if (resultIdentity.namespace !== claimIdentity.namespace ||
88
+ resolved.resultId !== row.declaredResult ||
89
+ !(0, scope_js_1.boundedText)(rule.id) ||
90
+ rule.id !== row.declaredRule ||
91
+ !(0, scope_js_1.boundedText)(rule.version) ||
92
+ Object.keys(scope).length === 0 ||
93
+ Object.keys(scope).length > scope_js_1.BINDING_LIMITS.dimensions ||
94
+ !Object.keys(scope).every(scope_js_1.boundedText))
95
+ throw new TypeError('Invalid verification association.');
96
+ (0, admit_js_1.validateCoverage)(resolved.coverage);
97
+ if (Object.hasOwn(resolved, 'period') && (0, period_js_1.periodProblem)(resolved.period, 'camel') !== undefined)
98
+ throw new TypeError('Invalid verification period.');
99
+ const evidence = eligibleAssertion(resolved.evidence);
100
+ const claim = eligibleAssertion(resolved.claim);
101
+ if ((0, canonicalJson_js_1.canonicalJson)(evidence.subject) !== (0, canonicalJson_js_1.canonicalJson)(claim.subject) ||
102
+ evidence.predicate !== claim.predicate ||
103
+ evidence.provenance !== `result ${resolved.resultId}` ||
104
+ claim.provenance !== `rule ${rule.id}` ||
105
+ (0, canonicalJson_js_1.canonicalJson)(claim.value) !== (0, canonicalJson_js_1.canonicalJson)(row.declaredValue))
106
+ throw new TypeError('Invalid verification pair association.');
107
+ }
108
+ /** Validate the recorded protocol without evaluating whether its value agrees. */
109
+ function readClaimVerificationRow(raw) {
110
+ const detached = (0, boundedJson_js_1.copyJson)(raw, exports.VERIFICATION_LIMITS.rowBytes, true);
111
+ const row = (0, boundedJson_js_1.ownData)(detached, [
112
+ 'kind',
113
+ 'claimId',
114
+ 'declaredOn',
115
+ 'standing',
116
+ 'iteration',
117
+ 'turn',
118
+ 'checker',
119
+ 'declaredResult',
120
+ 'declaredRule',
121
+ 'declaredValue',
122
+ 'outcome',
123
+ 'reason',
124
+ 'resolved',
125
+ ]);
126
+ const checker = (0, boundedJson_js_1.ownData)(row.checker, ['id', 'version']);
127
+ const claimIdentity = readClaimIdentity(row.claimId);
128
+ if (row.kind !== 'claim-verification' ||
129
+ typeof row.standing !== 'string' ||
130
+ !types_js_2.STANDING_VALUES.includes(row.standing) ||
131
+ !integer(row.iteration, 0) ||
132
+ (Object.hasOwn(row, 'turn') && !integer(row.turn, 1)) ||
133
+ checker.id !== 'claim-pair' ||
134
+ checker.version !== 1 ||
135
+ !Object.hasOwn(row, 'declaredValue') ||
136
+ (Object.hasOwn(row, 'declaredResult') &&
137
+ (typeof row.declaredResult !== 'string' ||
138
+ row.declaredResult.length > scope_js_1.BINDING_LIMITS.resultIdText)) ||
139
+ (Object.hasOwn(row, 'declaredRule') && !(0, scope_js_1.boundedText)(row.declaredRule)))
140
+ throw new TypeError('Invalid claim-verification row.');
141
+ (0, boundedJson_js_1.copyJson)(row.declaredValue, exports.VERIFICATION_LIMITS.valueBytes, true);
142
+ if (row.declaredOn !== 'answer') {
143
+ const at = (0, boundedJson_js_1.ownData)(row.declaredOn, ['toolCallId']);
144
+ if (!(0, scope_js_1.boundedText)(at.toolCallId))
145
+ throw new TypeError('Invalid claim declaration location.');
146
+ }
147
+ if (row.outcome === 'unverified') {
148
+ if (typeof row.reason !== 'string' ||
149
+ !verificationTypes_js_1.VERIFICATION_UNVERIFIED_REASONS.includes(row.reason) ||
150
+ Object.hasOwn(row, 'resolved') ||
151
+ (row.standing === 'noise' && row.reason !== 'ineligible-noise') ||
152
+ (row.reason === 'ineligible-noise' && row.standing !== 'noise') ||
153
+ (row.reason === 'missing-check' && Object.hasOwn(row, 'declaredRule')) ||
154
+ (!['missing-check', 'malformed-check', 'ineligible-noise'].includes(row.reason) &&
155
+ (!Object.hasOwn(row, 'declaredRule') ||
156
+ (row.reason !== 'missing-result' && !Object.hasOwn(row, 'declaredResult')))))
157
+ throw new TypeError('Invalid unverified claim row.');
158
+ }
159
+ else {
160
+ if (row.standing === 'noise' ||
161
+ !((row.outcome === 'supported' &&
162
+ (row.reason === 'no-conflict' || row.reason === 'numeric-leniency')) ||
163
+ (row.outcome === 'contradicted' && row.reason === 'conflict')))
164
+ throw new TypeError('Invalid compared claim row.');
165
+ validateResolved(row, claimIdentity);
166
+ }
167
+ return detached;
168
+ }
169
+ exports.readClaimVerificationRow = readClaimVerificationRow;
170
+ /** Non-throwing checkpoint union guard; admission uses the same strict reader. */
171
+ function isClaimVerificationRow(raw) {
172
+ try {
173
+ readClaimVerificationRow(raw);
174
+ return true;
175
+ }
176
+ catch {
177
+ return false;
178
+ }
179
+ }
180
+ exports.isClaimVerificationRow = isClaimVerificationRow;
181
+ //# sourceMappingURL=verificationRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verificationRow.js","sourceRoot":"","sources":["../../../../src/core/agent/findings/verificationRow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.retainVerificationEvidence = exports.reserveClaimIdentity = exports.reserveResultIdentity = exports.continueVerificationState = exports.createVerificationState = exports.readVerificationState = void 0;
4
+ /**
5
+ * Private, immutable evidence carrier for the explicit findings verifier.
6
+ * Role: reservation and bounded retention; no schema, events or Agent wiring.
7
+ * The checkpoint owner authenticates provenance and supplies the ledger's
8
+ * largest claim ordinal. Shape validation alone never authorizes a record.
9
+ */
10
+ const admit_js_1 = require("../../../integrity/claim-binding/admit.js");
11
+ const capture_js_1 = require("../../../integrity/claim-binding/capture.js");
12
+ const scope_js_1 = require("../../../integrity/claim-binding/scope.js");
13
+ const boundedJson_js_1 = require("../../../lib/boundedJson.js");
14
+ const verificationRow_js_1 = require("./verificationRow.js");
15
+ const positiveOrdinal = (value) => typeof value === 'number' && Number.isSafeInteger(value) && value > 0;
16
+ /**
17
+ * Read only after the checkpoint's owner/namespace authority is established.
18
+ * The caller MUST derive largestClaimOrdinal from its validated claim rows;
19
+ * this carrier does not contain those rows and cannot infer their maximum.
20
+ * Stage commits clone changed state. At entry, admit the tracked raw value
21
+ * and publish this detached carrier before the batch; subsequent raw reads
22
+ * can reuse its immutable evidence. A live scope proxy is not that identity.
23
+ */
24
+ function readVerificationState(raw, largestClaimOrdinal) {
25
+ const source = (0, boundedJson_js_1.ownData)(raw, [
26
+ 'version',
27
+ 'evidence',
28
+ 'nextResultOrdinal',
29
+ 'nextClaimOrdinal',
30
+ 'limited',
31
+ ]);
32
+ if (source.version !== 1 ||
33
+ !positiveOrdinal(source.nextResultOrdinal) ||
34
+ !positiveOrdinal(source.nextClaimOrdinal) ||
35
+ !Number.isSafeInteger(largestClaimOrdinal) ||
36
+ largestClaimOrdinal < 0 ||
37
+ source.nextClaimOrdinal <= largestClaimOrdinal ||
38
+ (Object.hasOwn(source, 'limited') && source.limited !== true))
39
+ throw new Error('Invalid findings verification carrier.');
40
+ const evidence = (0, admit_js_1.readEvidenceSnapshot)(source.evidence);
41
+ if (evidence.runIds.length === 0)
42
+ throw new Error('Verification carrier requires its recorded run lineage.');
43
+ const ordinals = new Set();
44
+ for (const result of evidence.results) {
45
+ if (result.identity.namespace !== evidence.namespace ||
46
+ !evidence.runIds.includes(result.identity.runId) ||
47
+ result.identity.ordinal >= source.nextResultOrdinal ||
48
+ ordinals.has(result.identity.ordinal))
49
+ throw new Error('Invalid verification receipt lineage or ordinal.');
50
+ ordinals.add(result.identity.ordinal);
51
+ }
52
+ return Object.freeze({
53
+ version: 1,
54
+ evidence,
55
+ nextResultOrdinal: source.nextResultOrdinal,
56
+ nextClaimOrdinal: source.nextClaimOrdinal,
57
+ ...(source.limited === true && { limited: true }),
58
+ });
59
+ }
60
+ exports.readVerificationState = readVerificationState;
61
+ /** Called only when opted in. No randomness is consumed at module load. */
62
+ function createVerificationState(runId, namespaceSource = () => globalThis.crypto.randomUUID()) {
63
+ const namespace = namespaceSource();
64
+ if (!(0, scope_js_1.boundedText)(runId) || !(0, scope_js_1.boundedText)(namespace))
65
+ throw new Error('Invalid verification recording identity.');
66
+ return readVerificationState({
67
+ version: 1,
68
+ evidence: { version: 1, namespace, runIds: [runId], results: [] },
69
+ nextResultOrdinal: 1,
70
+ nextClaimOrdinal: 1,
71
+ }, 0);
72
+ }
73
+ exports.createVerificationState = createVerificationState;
74
+ const limited = (state) => state.limited === true ? state : Object.freeze({ ...state, limited: true });
75
+ /** A resume keeps its namespace/counters, including when a process reuses runId. */
76
+ function continueVerificationState(state, runId) {
77
+ if (!(0, scope_js_1.boundedText)(runId))
78
+ throw new Error('Invalid verification run identity.');
79
+ if (state.evidence.runIds.includes(runId))
80
+ return state;
81
+ if (state.evidence.runIds.length >= scope_js_1.BINDING_LIMITS.results)
82
+ throw new Error('Verification run lineage capacity exhausted.');
83
+ try {
84
+ const evidence = (0, admit_js_1.readEvidenceSnapshot)({
85
+ ...state.evidence,
86
+ runIds: [...state.evidence.runIds, runId],
87
+ });
88
+ return Object.freeze({ ...state, evidence });
89
+ }
90
+ catch {
91
+ // Identity cannot be reserved for an unrecorded run. The input is an
92
+ // admitted carrier; adding one bounded run can exceed only its budget.
93
+ // Refuse this continuation rather than evicting old lineage or evidence.
94
+ throw new Error('Verification run lineage capacity exhausted.');
95
+ }
96
+ }
97
+ exports.continueVerificationState = continueVerificationState;
98
+ /** Publish the returned state before awaiting execution, even if it later fails. */
99
+ function reserveResultIdentity(state, runId) {
100
+ state = continueVerificationState(state, runId);
101
+ const ordinal = state.nextResultOrdinal;
102
+ if (!positiveOrdinal(ordinal) || ordinal === Number.MAX_SAFE_INTEGER)
103
+ throw new Error('Verification result identity capacity exhausted.');
104
+ const identity = Object.freeze({ namespace: state.evidence.namespace, runId, ordinal });
105
+ return Object.freeze({
106
+ state: Object.freeze({ ...state, nextResultOrdinal: ordinal + 1 }),
107
+ identity,
108
+ id: (0, capture_js_1.resultIdentityOf)(identity),
109
+ });
110
+ }
111
+ exports.reserveResultIdentity = reserveResultIdentity;
112
+ /** One occurrence, not a text key. The caller publishes state before evaluation. */
113
+ function reserveClaimIdentity(state, runId) {
114
+ state = continueVerificationState(state, runId);
115
+ const ordinal = state.nextClaimOrdinal;
116
+ if (!positiveOrdinal(ordinal) || ordinal === Number.MAX_SAFE_INTEGER)
117
+ throw new Error('Verification claim identity capacity exhausted.');
118
+ return Object.freeze({
119
+ state: Object.freeze({ ...state, nextClaimOrdinal: ordinal + 1 }),
120
+ ordinal,
121
+ id: (0, verificationRow_js_1.claimIdentityOf)({ namespace: state.evidence.namespace, runId, ordinal }),
122
+ });
123
+ }
124
+ exports.reserveClaimIdentity = reserveClaimIdentity;
125
+ /**
126
+ * Retain only a finalized, previously reserved receipt. Capacity refusal is
127
+ * sticky and never replaces an earlier result; the writer reports the limit.
128
+ */
129
+ function retainVerificationEvidence(state, receipt) {
130
+ if (state.limited === true)
131
+ return state;
132
+ const singleton = (0, admit_js_1.readEvidenceSnapshot)({ ...state.evidence, results: [receipt] });
133
+ const admitted = singleton.results[0];
134
+ if (admitted.identity.namespace !== state.evidence.namespace ||
135
+ !state.evidence.runIds.includes(admitted.identity.runId) ||
136
+ admitted.identity.ordinal >= state.nextResultOrdinal ||
137
+ state.evidence.results.some((prior) => prior.identity.ordinal === admitted.identity.ordinal))
138
+ throw new Error('Verification receipt was not uniquely reserved in this recording.');
139
+ if (state.evidence.results.length >= scope_js_1.BINDING_LIMITS.results)
140
+ return limited(state);
141
+ try {
142
+ const evidence = (0, admit_js_1.appendEvidenceSnapshot)(state.evidence, singleton);
143
+ return Object.freeze({ ...state, evidence });
144
+ }
145
+ catch {
146
+ // Both the carrier and individual receipt were already admitted. Their
147
+ // combined bytes exceed the snapshot cap; preserve the earlier snapshot.
148
+ return limited(state);
149
+ }
150
+ }
151
+ exports.retainVerificationEvidence = retainVerificationEvidence;
152
+ //# sourceMappingURL=verificationState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verificationState.js","sourceRoot":"","sources":["../../../../src/core/agent/findings/verificationState.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VERIFICATION_UNVERIFIED_REASONS = void 0;
4
+ /**
5
+ * Internal typed-finding protocol: model declarations and library checks stay
6
+ * separate. A supported row concerns only its resolved rule and executed scope;
7
+ * it is not verification of arbitrary prose or an entire answer.
8
+ * Role: plain data shared by the pure writer and the strict saved-row reader.
9
+ */
10
+ const types_js_1 = require("../../../integrity/claim-binding/types.js");
11
+ exports.VERIFICATION_UNVERIFIED_REASONS = Object.freeze([
12
+ ...types_js_1.BINDING_REASONS,
13
+ 'missing-check',
14
+ 'malformed-check',
15
+ 'ineligible-noise',
16
+ 'assertion-mismatch',
17
+ 'retention-limit',
18
+ 'evidence-unavailable',
19
+ 'claim-nonparticipating',
20
+ 'doubt-against-value',
21
+ 'both-doubt',
22
+ ]);
23
+ //# sourceMappingURL=verificationTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verificationTypes.js","sourceRoot":"","sources":["../../../../src/core/agent/findings/verificationTypes.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,wEAA4E;AAK/D,QAAA,+BAA+B,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3D,GAAG,0BAAe;IAClB,eAAe;IACf,iBAAiB;IACjB,kBAAkB;IAClB,oBAAoB;IACpB,iBAAiB;IACjB,sBAAsB;IACtB,wBAAwB;IACxB,qBAAqB;IACrB,YAAY;CACJ,CAAC,CAAC"}
@@ -39,6 +39,7 @@ exports.judgeAnswer = exports.resolveJsonSchema = exports.readSchemaToolAnswer =
39
39
  const helpers_js_1 = require("../slots/helpers.js");
40
40
  const outputSchema_js_1 = require("../outputSchema.js");
41
41
  const saidByPerson_js_1 = require("../../lib/saidByPerson.js");
42
+ const toolArgsValidation_js_1 = require("./toolArgsValidation.js");
42
43
  /**
43
44
  * Append one row to the run's output-attempt ledger.
44
45
  *
@@ -143,6 +144,10 @@ function readSchemaToolAnswer(response) {
143
144
  const call = response.toolCalls.find((tc) => tc.name === exports.SCHEMA_TOOL_NAME);
144
145
  if (!call)
145
146
  return undefined;
147
+ // A fixed non-JSON refusal follows the existing output-attempt/retry path.
148
+ // Even a parser accepting {} must never validate an SDK repair as an answer.
149
+ if (call.argumentsFailure !== undefined)
150
+ return (0, toolArgsValidation_js_1.formatToolArgIssues)(call.name, (0, toolArgsValidation_js_1.streamedToolArgIssues)(call.argumentsFailure));
146
151
  return JSON.stringify(call.args);
147
152
  }
148
153
  exports.readSchemaToolAnswer = readSchemaToolAnswer;
@@ -1 +1 @@
1
- {"version":3,"file":"outputEnforcement.js","sourceRoot":"","sources":["../../../src/core/agent/outputEnforcement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outputEnforcement.js","sourceRoot":"","sources":["../../../src/core/agent/outputEnforcement.ts"],"names":[],"mappings":"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"}
@@ -3165,7 +3165,19 @@ function buildToolCallsHandler(deps) {
3165
3165
  }
3166
3166
  // Tool-args validation (#9) and the inputs layer's refusals share one
3167
3167
  // flag: the call is refused for its ARGUMENTS and lands in one shape.
3168
- let argsRejected = false;
3168
+ let argsRejected = tc.argumentsFailure !== undefined;
3169
+ if (!denied && tc.argumentsFailure !== undefined) {
3170
+ const issues = (0, toolArgsValidation_js_1.streamedToolArgIssues)(tc.argumentsFailure);
3171
+ (0, typedEmit_js_1.typedEmit)(scope, 'agentfootprint.validation.args_invalid', {
3172
+ toolName: tc.name,
3173
+ toolCallId: tc.id,
3174
+ iteration,
3175
+ issues,
3176
+ enforced: true,
3177
+ });
3178
+ error = true;
3179
+ result = (0, toolArgsValidation_js_1.formatToolArgIssues)(tc.name, issues);
3180
+ }
3169
3181
  // A check-in that tripped in a batch whose one human question was the
3170
3182
  // inputs layer's ask (`oneQuestionAsked`) — refused, never asked.
3171
3183
  let checkInRefused = false;
@@ -3180,9 +3192,11 @@ function buildToolCallsHandler(deps) {
3180
3192
  // the layer NOT mounted — any call whose tool declares rules (fail
3181
3193
  // closed). Neither applies to a tool that declares nothing — and
3182
3194
  // neither awaits for one (`unmountedRules` answers it synchronously).
3183
- const unmounted = unmountedRules(tool, tc.name);
3195
+ const unmounted = argsRejected ? undefined : unmountedRules(tool, tc.name);
3184
3196
  warnUnmountedToolPeriod(tool, tc.name);
3185
- const rulesRefusal = resolution?.refused ?? (unmounted === undefined ? undefined : await unmounted);
3197
+ const rulesRefusal = argsRejected
3198
+ ? undefined
3199
+ : resolution?.refused ?? (unmounted === undefined ? undefined : await unmounted);
3186
3200
  if (!denied && rulesRefusal !== undefined) {
3187
3201
  argsRejected = true;
3188
3202
  error = true;
@@ -4275,6 +4289,9 @@ function buildToolCallsHandler(deps) {
4275
4289
  toolCallId: tc.id,
4276
4290
  toolName: tc.name,
4277
4291
  ...(layerNote !== '' && { toolChars: deliveredResult.length }),
4292
+ ...(tc.argumentsFailure !== undefined && {
4293
+ toolArgumentsFailure: { ...tc.argumentsFailure },
4294
+ }),
4278
4295
  });
4279
4296
  // ── Dynamic ReAct wiring ───────────────────────────────
4280
4297
  //