agentfootprint 12.2.0 → 13.0.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/code/output.js +8 -29
- package/dist/adapters/code/output.js.map +1 -1
- package/dist/adapters/observability/audit.js +151 -159
- package/dist/adapters/observability/audit.js.map +1 -1
- package/dist/adapters/observability/auditBounding.js +411 -0
- package/dist/adapters/observability/auditBounding.js.map +1 -0
- package/dist/adapters/observability/auditKeptByContract.js +107 -0
- package/dist/adapters/observability/auditKeptByContract.js.map +1 -0
- package/dist/adapters/observability/auditShapes.js +1731 -0
- package/dist/adapters/observability/auditShapes.js.map +1 -0
- package/dist/answer-account/account.js +92 -15
- package/dist/answer-account/account.js.map +1 -1
- package/dist/answer-account/facts/calls.js +7 -9
- package/dist/answer-account/facts/calls.js.map +1 -1
- package/dist/answer-account/facts/checked.js +2 -2
- package/dist/answer-account/facts/checked.js.map +1 -1
- package/dist/answer-account/facts/common.js +40 -7
- package/dist/answer-account/facts/common.js.map +1 -1
- package/dist/answer-account/facts/found.js +1 -1
- package/dist/answer-account/facts/found.js.map +1 -1
- package/dist/answer-account/facts/howSure.js +21 -3
- package/dist/answer-account/facts/howSure.js.map +1 -1
- package/dist/answer-account/facts/inView.js +3 -4
- package/dist/answer-account/facts/inView.js.map +1 -1
- package/dist/answer-account/facts/pausedLeg.js +1 -1
- package/dist/answer-account/facts/pausedLeg.js.map +1 -1
- package/dist/answer-account/facts/scripts.js +222 -0
- package/dist/answer-account/facts/scripts.js.map +1 -0
- package/dist/answer-account/facts/understood.js +5 -5
- package/dist/answer-account/facts/understood.js.map +1 -1
- package/dist/answer-account/pointerKey.js +1 -1
- package/dist/answer-account/shown.js +25 -7
- package/dist/answer-account/shown.js.map +1 -1
- package/dist/answer-account/signals.js +1 -1
- package/dist/answer-account/signals.js.map +1 -1
- package/dist/answer-account/size.js +152 -0
- package/dist/answer-account/size.js.map +1 -0
- package/dist/answer-account/templates.js +39 -1
- package/dist/answer-account/templates.js.map +1 -1
- package/dist/core/Agent.js +25 -1
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/agent/AgentBuilder.js +85 -1
- package/dist/core/agent/AgentBuilder.js.map +1 -1
- package/dist/core/agent/arguments/ask.js +85 -2
- package/dist/core/agent/arguments/ask.js.map +1 -1
- package/dist/core/agent/arguments/partialWindow.js +120 -0
- package/dist/core/agent/arguments/partialWindow.js.map +1 -0
- package/dist/core/agent/assessment/assess.js +37 -0
- package/dist/core/agent/assessment/assess.js.map +1 -1
- package/dist/core/agent/assessment/compose.js +5 -1
- package/dist/core/agent/assessment/compose.js.map +1 -1
- package/dist/core/agent/assessment/reasons.js +7 -0
- package/dist/core/agent/assessment/reasons.js.map +1 -1
- package/dist/core/agent/assessment/witness.js +37 -4
- package/dist/core/agent/assessment/witness.js.map +1 -1
- package/dist/core/agent/buildAgentChart.js.map +1 -1
- package/dist/core/agent/evidence/codeRegions.js +279 -0
- package/dist/core/agent/evidence/codeRegions.js.map +1 -0
- package/dist/core/agent/evidence/gate.js +13 -2
- package/dist/core/agent/evidence/gate.js.map +1 -1
- package/dist/core/agent/evidence/recovery.js +11 -2
- package/dist/core/agent/evidence/recovery.js.map +1 -1
- package/dist/core/agent/findings/types.js.map +1 -1
- package/dist/core/agent/scripts/attachment.js +375 -0
- package/dist/core/agent/scripts/attachment.js.map +1 -0
- package/dist/core/agent/scripts/inert.js +88 -0
- package/dist/core/agent/scripts/inert.js.map +1 -0
- package/dist/core/agent/scripts/judge.js +41 -0
- package/dist/core/agent/scripts/judge.js.map +1 -0
- package/dist/core/agent/scripts/label.js +143 -0
- package/dist/core/agent/scripts/label.js.map +1 -0
- package/dist/core/agent/scripts/match.js +233 -0
- package/dist/core/agent/scripts/match.js.map +1 -0
- package/dist/core/agent/scripts/recovery.js +81 -0
- package/dist/core/agent/scripts/recovery.js.map +1 -0
- package/dist/core/agent/scripts/rows.js +221 -0
- package/dist/core/agent/scripts/rows.js.map +1 -0
- package/dist/core/agent/scripts/types.js +22 -0
- package/dist/core/agent/scripts/types.js.map +1 -0
- package/dist/core/agent/scripts/wrapper.js +63 -0
- package/dist/core/agent/scripts/wrapper.js.map +1 -0
- package/dist/core/agent/stages/argumentAsk.js +161 -19
- package/dist/core/agent/stages/argumentAsk.js.map +1 -1
- package/dist/core/agent/stages/evidenceRecheck.js +4 -1
- package/dist/core/agent/stages/evidenceRecheck.js.map +1 -1
- package/dist/core/agent/stages/prepareFinal.js +65 -10
- package/dist/core/agent/stages/prepareFinal.js.map +1 -1
- package/dist/core/agent/stages/route.js +53 -3
- package/dist/core/agent/stages/route.js.map +1 -1
- package/dist/core/agent/stages/seed.js +14 -1
- package/dist/core/agent/stages/seed.js.map +1 -1
- package/dist/core/agent/stages/toolCalls.js +339 -18
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/core/codeRunnerTool.js +32 -3
- package/dist/core/codeRunnerTool.js.map +1 -1
- package/dist/core/runCheckpoint.js +19 -6
- package/dist/core/runCheckpoint.js.map +1 -1
- package/dist/esm/adapters/code/output.d.ts +1 -4
- package/dist/esm/adapters/code/output.js +3 -24
- package/dist/esm/adapters/code/output.js.map +1 -1
- package/dist/esm/adapters/observability/audit.d.ts +79 -12
- package/dist/esm/adapters/observability/audit.js +132 -142
- package/dist/esm/adapters/observability/audit.js.map +1 -1
- package/dist/esm/adapters/observability/auditBounding.d.ts +215 -0
- package/dist/esm/adapters/observability/auditBounding.js +390 -0
- package/dist/esm/adapters/observability/auditBounding.js.map +1 -0
- package/dist/esm/adapters/observability/auditKeptByContract.d.ts +65 -0
- package/dist/esm/adapters/observability/auditKeptByContract.js +103 -0
- package/dist/esm/adapters/observability/auditKeptByContract.js.map +1 -0
- package/dist/esm/adapters/observability/auditShapes.d.ts +78 -0
- package/dist/esm/adapters/observability/auditShapes.js +1726 -0
- package/dist/esm/adapters/observability/auditShapes.js.map +1 -0
- package/dist/esm/answer-account/account.js +91 -14
- package/dist/esm/answer-account/account.js.map +1 -1
- package/dist/esm/answer-account/facts/calls.d.ts +0 -2
- package/dist/esm/answer-account/facts/calls.js +1 -3
- package/dist/esm/answer-account/facts/calls.js.map +1 -1
- package/dist/esm/answer-account/facts/checked.js +2 -2
- package/dist/esm/answer-account/facts/checked.js.map +1 -1
- package/dist/esm/answer-account/facts/common.d.ts +16 -4
- package/dist/esm/answer-account/facts/common.js +38 -6
- package/dist/esm/answer-account/facts/common.js.map +1 -1
- package/dist/esm/answer-account/facts/found.js +2 -2
- package/dist/esm/answer-account/facts/found.js.map +1 -1
- package/dist/esm/answer-account/facts/howSure.d.ts +1 -1
- package/dist/esm/answer-account/facts/howSure.js +22 -4
- package/dist/esm/answer-account/facts/howSure.js.map +1 -1
- package/dist/esm/answer-account/facts/inView.js +1 -2
- package/dist/esm/answer-account/facts/inView.js.map +1 -1
- package/dist/esm/answer-account/facts/pausedLeg.js +2 -2
- package/dist/esm/answer-account/facts/pausedLeg.js.map +1 -1
- package/dist/esm/answer-account/facts/scripts.d.ts +34 -0
- package/dist/esm/answer-account/facts/scripts.js +218 -0
- package/dist/esm/answer-account/facts/scripts.js.map +1 -0
- package/dist/esm/answer-account/facts/understood.js +2 -2
- package/dist/esm/answer-account/facts/understood.js.map +1 -1
- package/dist/esm/answer-account/pointerKey.d.ts +1 -1
- package/dist/esm/answer-account/pointerKey.js +1 -1
- package/dist/esm/answer-account/shown.d.ts +9 -2
- package/dist/esm/answer-account/shown.js +25 -7
- package/dist/esm/answer-account/shown.js.map +1 -1
- package/dist/esm/answer-account/signals.js +2 -2
- package/dist/esm/answer-account/signals.js.map +1 -1
- package/dist/esm/answer-account/size.d.ts +59 -0
- package/dist/esm/answer-account/size.js +147 -0
- package/dist/esm/answer-account/size.js.map +1 -0
- package/dist/esm/answer-account/templates.d.ts +29 -1
- package/dist/esm/answer-account/templates.js +39 -1
- package/dist/esm/answer-account/templates.js.map +1 -1
- package/dist/esm/core/Agent.d.ts +8 -1
- package/dist/esm/core/Agent.js +25 -1
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/agent/AgentBuilder.d.ts +52 -0
- package/dist/esm/core/agent/AgentBuilder.js +85 -1
- package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
- package/dist/esm/core/agent/arguments/ask.d.ts +11 -0
- package/dist/esm/core/agent/arguments/ask.js +83 -1
- package/dist/esm/core/agent/arguments/ask.js.map +1 -1
- package/dist/esm/core/agent/arguments/partialWindow.d.ts +42 -0
- package/dist/esm/core/agent/arguments/partialWindow.js +111 -0
- package/dist/esm/core/agent/arguments/partialWindow.js.map +1 -0
- package/dist/esm/core/agent/assessment/assess.js +37 -0
- package/dist/esm/core/agent/assessment/assess.js.map +1 -1
- package/dist/esm/core/agent/assessment/compose.d.ts +3 -1
- package/dist/esm/core/agent/assessment/compose.js +5 -1
- package/dist/esm/core/agent/assessment/compose.js.map +1 -1
- package/dist/esm/core/agent/assessment/reasons.js +7 -0
- package/dist/esm/core/agent/assessment/reasons.js.map +1 -1
- package/dist/esm/core/agent/assessment/types.d.ts +12 -2
- package/dist/esm/core/agent/assessment/witness.d.ts +44 -4
- package/dist/esm/core/agent/assessment/witness.js +35 -3
- package/dist/esm/core/agent/assessment/witness.js.map +1 -1
- package/dist/esm/core/agent/buildAgentChart.d.ts +9 -0
- package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
- package/dist/esm/core/agent/evidence/codeRegions.d.ts +130 -0
- package/dist/esm/core/agent/evidence/codeRegions.js +275 -0
- package/dist/esm/core/agent/evidence/codeRegions.js.map +1 -0
- package/dist/esm/core/agent/evidence/gate.d.ts +3 -0
- package/dist/esm/core/agent/evidence/gate.js +12 -2
- package/dist/esm/core/agent/evidence/gate.js.map +1 -1
- package/dist/esm/core/agent/evidence/recovery.d.ts +5 -1
- package/dist/esm/core/agent/evidence/recovery.js +11 -2
- package/dist/esm/core/agent/evidence/recovery.js.map +1 -1
- package/dist/esm/core/agent/evidence/types.d.ts +35 -0
- package/dist/esm/core/agent/findings/types.d.ts +3 -2
- package/dist/esm/core/agent/findings/types.js.map +1 -1
- package/dist/esm/core/agent/scripts/attachment.d.ts +179 -0
- package/dist/esm/core/agent/scripts/attachment.js +361 -0
- package/dist/esm/core/agent/scripts/attachment.js.map +1 -0
- package/dist/esm/core/agent/scripts/inert.d.ts +38 -0
- package/dist/esm/core/agent/scripts/inert.js +84 -0
- package/dist/esm/core/agent/scripts/inert.js.map +1 -0
- package/dist/esm/core/agent/scripts/judge.d.ts +36 -0
- package/dist/esm/core/agent/scripts/judge.js +37 -0
- package/dist/esm/core/agent/scripts/judge.js.map +1 -0
- package/dist/esm/core/agent/scripts/label.d.ts +103 -0
- package/dist/esm/core/agent/scripts/label.js +136 -0
- package/dist/esm/core/agent/scripts/label.js.map +1 -0
- package/dist/esm/core/agent/scripts/match.d.ts +99 -0
- package/dist/esm/core/agent/scripts/match.js +226 -0
- package/dist/esm/core/agent/scripts/match.js.map +1 -0
- package/dist/esm/core/agent/scripts/recovery.d.ts +54 -0
- package/dist/esm/core/agent/scripts/recovery.js +77 -0
- package/dist/esm/core/agent/scripts/recovery.js.map +1 -0
- package/dist/esm/core/agent/scripts/rows.d.ts +143 -0
- package/dist/esm/core/agent/scripts/rows.js +211 -0
- package/dist/esm/core/agent/scripts/rows.js.map +1 -0
- package/dist/esm/core/agent/scripts/types.d.ts +91 -0
- package/dist/esm/core/agent/scripts/types.js +21 -0
- package/dist/esm/core/agent/scripts/types.js.map +1 -0
- package/dist/esm/core/agent/scripts/wrapper.d.ts +36 -0
- package/dist/esm/core/agent/scripts/wrapper.js +58 -0
- package/dist/esm/core/agent/scripts/wrapper.js.map +1 -0
- package/dist/esm/core/agent/stages/argumentAsk.d.ts +4 -1
- package/dist/esm/core/agent/stages/argumentAsk.js +164 -22
- package/dist/esm/core/agent/stages/argumentAsk.js.map +1 -1
- package/dist/esm/core/agent/stages/evidenceRecheck.js +4 -1
- package/dist/esm/core/agent/stages/evidenceRecheck.js.map +1 -1
- package/dist/esm/core/agent/stages/prepareFinal.d.ts +11 -0
- package/dist/esm/core/agent/stages/prepareFinal.js +65 -10
- package/dist/esm/core/agent/stages/prepareFinal.js.map +1 -1
- package/dist/esm/core/agent/stages/route.js +53 -3
- package/dist/esm/core/agent/stages/route.js.map +1 -1
- package/dist/esm/core/agent/stages/seed.js +14 -1
- package/dist/esm/core/agent/stages/seed.js.map +1 -1
- package/dist/esm/core/agent/stages/toolCalls.d.ts +14 -0
- package/dist/esm/core/agent/stages/toolCalls.js +337 -16
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/agent/types.d.ts +41 -0
- package/dist/esm/core/codeRunnerTool.d.ts +23 -0
- package/dist/esm/core/codeRunnerTool.js +31 -2
- package/dist/esm/core/codeRunnerTool.js.map +1 -1
- package/dist/esm/core/runCheckpoint.js +16 -3
- package/dist/esm/core/runCheckpoint.js.map +1 -1
- package/dist/esm/events/payloads.d.ts +46 -1
- package/dist/esm/hosting/answerAccounts.js +4 -2
- package/dist/esm/hosting/answerAccounts.js.map +1 -1
- package/dist/esm/hosting/artifactWire.d.ts +3 -2
- package/dist/esm/hosting/artifactWire.js.map +1 -1
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/boundedJson.d.ts +24 -0
- package/dist/esm/lib/boundedJson.js +45 -2
- package/dist/esm/lib/boundedJson.js.map +1 -1
- package/dist/esm/lib/scriptRecord.d.ts +139 -0
- package/dist/esm/lib/scriptRecord.js +18 -0
- package/dist/esm/lib/scriptRecord.js.map +1 -0
- package/dist/esm/lib/utf8.d.ts +36 -0
- package/dist/esm/lib/utf8.js +70 -0
- package/dist/esm/lib/utf8.js.map +1 -0
- package/dist/esm/mcp/toolExtras.d.ts +9 -0
- package/dist/esm/mcp/toolExtras.js +6 -0
- package/dist/esm/mcp/toolExtras.js.map +1 -1
- package/dist/esm/redaction/conversation.js +10 -0
- package/dist/esm/redaction/conversation.js.map +1 -1
- package/dist/esm/redaction/knownStrings.js +34 -0
- package/dist/esm/redaction/knownStrings.js.map +1 -1
- package/dist/esm/semantics/coverage/answer.d.ts +12 -1
- package/dist/esm/semantics/coverage/answer.js +26 -3
- package/dist/esm/semantics/coverage/answer.js.map +1 -1
- package/dist/esm/tools/script.d.ts +85 -0
- package/dist/esm/tools/script.js +157 -0
- package/dist/esm/tools/script.js.map +1 -0
- package/dist/esm/tools/tools.d.ts +30 -0
- package/dist/esm/tools/tools.js +4 -0
- package/dist/esm/tools/tools.js.map +1 -1
- package/dist/hosting/answerAccounts.js +4 -2
- package/dist/hosting/answerAccounts.js.map +1 -1
- package/dist/hosting/artifactWire.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/boundedJson.js +48 -3
- package/dist/lib/boundedJson.js.map +1 -1
- package/dist/lib/scriptRecord.js +19 -0
- package/dist/lib/scriptRecord.js.map +1 -0
- package/dist/lib/utf8.js +77 -0
- package/dist/lib/utf8.js.map +1 -0
- package/dist/mcp/toolExtras.js +6 -0
- package/dist/mcp/toolExtras.js.map +1 -1
- package/dist/redaction/conversation.js +10 -0
- package/dist/redaction/conversation.js.map +1 -1
- package/dist/redaction/knownStrings.js +34 -0
- package/dist/redaction/knownStrings.js.map +1 -1
- package/dist/semantics/coverage/answer.js +26 -3
- package/dist/semantics/coverage/answer.js.map +1 -1
- package/dist/tools/script.js +163 -0
- package/dist/tools/script.js.map +1 -0
- package/dist/tools/tools.js +4 -0
- package/dist/tools/tools.js.map +1 -1
- package/dist/types/adapters/code/output.d.ts +1 -4
- package/dist/types/adapters/code/output.d.ts.map +1 -1
- package/dist/types/adapters/observability/audit.d.ts +79 -12
- package/dist/types/adapters/observability/audit.d.ts.map +1 -1
- package/dist/types/adapters/observability/auditBounding.d.ts +216 -0
- package/dist/types/adapters/observability/auditBounding.d.ts.map +1 -0
- package/dist/types/adapters/observability/auditKeptByContract.d.ts +66 -0
- package/dist/types/adapters/observability/auditKeptByContract.d.ts.map +1 -0
- package/dist/types/adapters/observability/auditShapes.d.ts +79 -0
- package/dist/types/adapters/observability/auditShapes.d.ts.map +1 -0
- package/dist/types/answer-account/account.d.ts.map +1 -1
- package/dist/types/answer-account/facts/calls.d.ts +0 -2
- package/dist/types/answer-account/facts/calls.d.ts.map +1 -1
- package/dist/types/answer-account/facts/checked.d.ts.map +1 -1
- package/dist/types/answer-account/facts/common.d.ts +16 -4
- package/dist/types/answer-account/facts/common.d.ts.map +1 -1
- package/dist/types/answer-account/facts/found.d.ts.map +1 -1
- package/dist/types/answer-account/facts/howSure.d.ts +1 -1
- package/dist/types/answer-account/facts/howSure.d.ts.map +1 -1
- package/dist/types/answer-account/facts/inView.d.ts.map +1 -1
- package/dist/types/answer-account/facts/pausedLeg.d.ts.map +1 -1
- package/dist/types/answer-account/facts/scripts.d.ts +35 -0
- package/dist/types/answer-account/facts/scripts.d.ts.map +1 -0
- package/dist/types/answer-account/facts/understood.d.ts.map +1 -1
- package/dist/types/answer-account/pointerKey.d.ts +1 -1
- package/dist/types/answer-account/shown.d.ts +9 -2
- package/dist/types/answer-account/shown.d.ts.map +1 -1
- package/dist/types/answer-account/signals.d.ts.map +1 -1
- package/dist/types/answer-account/size.d.ts +60 -0
- package/dist/types/answer-account/size.d.ts.map +1 -0
- package/dist/types/answer-account/templates.d.ts +29 -1
- package/dist/types/answer-account/templates.d.ts.map +1 -1
- package/dist/types/core/Agent.d.ts +8 -1
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/agent/AgentBuilder.d.ts +52 -0
- package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
- package/dist/types/core/agent/arguments/ask.d.ts +11 -0
- package/dist/types/core/agent/arguments/ask.d.ts.map +1 -1
- package/dist/types/core/agent/arguments/partialWindow.d.ts +43 -0
- package/dist/types/core/agent/arguments/partialWindow.d.ts.map +1 -0
- package/dist/types/core/agent/assessment/assess.d.ts.map +1 -1
- package/dist/types/core/agent/assessment/compose.d.ts +3 -1
- package/dist/types/core/agent/assessment/compose.d.ts.map +1 -1
- package/dist/types/core/agent/assessment/reasons.d.ts.map +1 -1
- package/dist/types/core/agent/assessment/types.d.ts +12 -2
- package/dist/types/core/agent/assessment/types.d.ts.map +1 -1
- package/dist/types/core/agent/assessment/witness.d.ts +44 -4
- package/dist/types/core/agent/assessment/witness.d.ts.map +1 -1
- package/dist/types/core/agent/buildAgentChart.d.ts +9 -0
- package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/evidence/codeRegions.d.ts +131 -0
- package/dist/types/core/agent/evidence/codeRegions.d.ts.map +1 -0
- package/dist/types/core/agent/evidence/gate.d.ts +3 -0
- package/dist/types/core/agent/evidence/gate.d.ts.map +1 -1
- package/dist/types/core/agent/evidence/recovery.d.ts +5 -1
- package/dist/types/core/agent/evidence/recovery.d.ts.map +1 -1
- package/dist/types/core/agent/evidence/types.d.ts +35 -0
- package/dist/types/core/agent/evidence/types.d.ts.map +1 -1
- package/dist/types/core/agent/findings/types.d.ts +3 -2
- package/dist/types/core/agent/findings/types.d.ts.map +1 -1
- package/dist/types/core/agent/scripts/attachment.d.ts +180 -0
- package/dist/types/core/agent/scripts/attachment.d.ts.map +1 -0
- package/dist/types/core/agent/scripts/inert.d.ts +39 -0
- package/dist/types/core/agent/scripts/inert.d.ts.map +1 -0
- package/dist/types/core/agent/scripts/judge.d.ts +37 -0
- package/dist/types/core/agent/scripts/judge.d.ts.map +1 -0
- package/dist/types/core/agent/scripts/label.d.ts +104 -0
- package/dist/types/core/agent/scripts/label.d.ts.map +1 -0
- package/dist/types/core/agent/scripts/match.d.ts +100 -0
- package/dist/types/core/agent/scripts/match.d.ts.map +1 -0
- package/dist/types/core/agent/scripts/recovery.d.ts +55 -0
- package/dist/types/core/agent/scripts/recovery.d.ts.map +1 -0
- package/dist/types/core/agent/scripts/rows.d.ts +144 -0
- package/dist/types/core/agent/scripts/rows.d.ts.map +1 -0
- package/dist/types/core/agent/scripts/types.d.ts +92 -0
- package/dist/types/core/agent/scripts/types.d.ts.map +1 -0
- package/dist/types/core/agent/scripts/wrapper.d.ts +37 -0
- package/dist/types/core/agent/scripts/wrapper.d.ts.map +1 -0
- package/dist/types/core/agent/stages/argumentAsk.d.ts +4 -1
- package/dist/types/core/agent/stages/argumentAsk.d.ts.map +1 -1
- package/dist/types/core/agent/stages/evidenceRecheck.d.ts.map +1 -1
- package/dist/types/core/agent/stages/prepareFinal.d.ts +11 -0
- package/dist/types/core/agent/stages/prepareFinal.d.ts.map +1 -1
- package/dist/types/core/agent/stages/route.d.ts.map +1 -1
- package/dist/types/core/agent/stages/seed.d.ts.map +1 -1
- package/dist/types/core/agent/stages/toolCalls.d.ts +14 -0
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/core/agent/types.d.ts +41 -0
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/core/codeRunnerTool.d.ts +23 -0
- package/dist/types/core/codeRunnerTool.d.ts.map +1 -1
- package/dist/types/core/runCheckpoint.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +46 -1
- package/dist/types/events/payloads.d.ts.map +1 -1
- package/dist/types/hosting/answerAccounts.d.ts.map +1 -1
- package/dist/types/hosting/artifactWire.d.ts +3 -2
- package/dist/types/hosting/artifactWire.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/boundedJson.d.ts +24 -0
- package/dist/types/lib/boundedJson.d.ts.map +1 -1
- package/dist/types/lib/scriptRecord.d.ts +140 -0
- package/dist/types/lib/scriptRecord.d.ts.map +1 -0
- package/dist/types/lib/utf8.d.ts +37 -0
- package/dist/types/lib/utf8.d.ts.map +1 -0
- package/dist/types/mcp/toolExtras.d.ts +9 -0
- package/dist/types/mcp/toolExtras.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/semantics/coverage/answer.d.ts +12 -1
- package/dist/types/semantics/coverage/answer.d.ts.map +1 -1
- package/dist/types/tools/script.d.ts +86 -0
- package/dist/types/tools/script.d.ts.map +1 -0
- package/dist/types/tools/tools.d.ts +30 -0
- package/dist/types/tools/tools.d.ts.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,390 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* auditBounding — HOW the audit chain's bounded mode bounds a value: the
|
|
3
|
+
* markers, the sanitizer, the leaves and the combinators every shape is built
|
|
4
|
+
* from (`auditShapes.ts` says WHAT each event keeps; `auditKeptByContract.ts`
|
|
5
|
+
* names what a record keeps although it may carry a run's value).
|
|
6
|
+
*
|
|
7
|
+
* Pattern: small pure rules composed into shapes; every rule records what it is
|
|
8
|
+
* (`ruleKind`), so a test can walk a shape beside the type it bounds
|
|
9
|
+
* and hand every rule what its kind forbids.
|
|
10
|
+
* Role: the bounding layer `auditExport({ payloadMode: 'bounded' })` runs
|
|
11
|
+
* every payload and every record's meta through (`audit.ts`). No I/O,
|
|
12
|
+
* no clock.
|
|
13
|
+
* Emits: N/A.
|
|
14
|
+
*
|
|
15
|
+
* THE RULE, the one `otel.ts` maps spans by: **structure is kept, content is
|
|
16
|
+
* a marker**, bounding is CLOSED by default, and every kept value is CHECKED:
|
|
17
|
+
*
|
|
18
|
+
* - Every registered event has a shape that names every field of its
|
|
19
|
+
* payload type (`shapeOf` is exhaustive by type: a field added to a
|
|
20
|
+
* payload does not compile until it is classified).
|
|
21
|
+
* - A field a shape does not name, a value that is not the declared shape,
|
|
22
|
+
* and every field of an event type the registry does not declare, is a
|
|
23
|
+
* marker.
|
|
24
|
+
* - A type says what a field holds; it cannot say what ARRIVES. So nothing is
|
|
25
|
+
* kept on a type's word: a kept leaf checks at runtime the kind its type
|
|
26
|
+
* promises — `num` a number, `bool` a boolean, `str` a string, `oneOf` one
|
|
27
|
+
* of the words it lists — and anything else is a marker. No container is
|
|
28
|
+
* kept whole: an object is a `shapeOf` (or a `recordOf`), a list a
|
|
29
|
+
* `listOf`, every child ruled, so a child the type does not declare is a
|
|
30
|
+
* marker however it got there (structural typing lets an object carry one).
|
|
31
|
+
* The type walker (`test/type-regressions/AuditBoundingDepth.test.ts`)
|
|
32
|
+
* holds every rule to the type beneath it; the runtime sweep
|
|
33
|
+
* (`test/observability-providers/audit-bounded-sweep.test.ts`) hands every
|
|
34
|
+
* rule what its kind forbids.
|
|
35
|
+
* - Names are data. A key is kept as an own key of the record, whatever it is
|
|
36
|
+
* (a name `Object.prototype` holds included: an assignment would drop
|
|
37
|
+
* `__proto__`, or re-prototype the record), and no rule table is ever asked
|
|
38
|
+
* for a name it merely inherits.
|
|
39
|
+
*
|
|
40
|
+
* Content becomes `'[N chars]'` (a string), `'[type: …]'` (anything else),
|
|
41
|
+
* `'[keys: …]'` (a free-form record: its key names, never its values), or a
|
|
42
|
+
* count (`'[N messages]'`, `'[N blocks]'`, `'[N summaries]'`). A kept string is
|
|
43
|
+
* capped at 256 characters, a list at 32 items.
|
|
44
|
+
*/
|
|
45
|
+
import { isErrorValue, wireError } from '../../lib/wireJson.js';
|
|
46
|
+
// ─── JSON sanitization (verbatim mode, and the genesis record) ───────
|
|
47
|
+
/** Caps mirror otel.ts's bounding discipline (defense-in-depth — the
|
|
48
|
+
* registry payloads are mostly bounded upstream). */
|
|
49
|
+
const MAX_STRING_CHARS = 256;
|
|
50
|
+
const MAX_LIST_ITEMS = 32;
|
|
51
|
+
const MAX_DEPTH = 8;
|
|
52
|
+
/** A string capped like every string the chain keeps. */
|
|
53
|
+
function capped(text) {
|
|
54
|
+
return text.length > MAX_STRING_CHARS ? `${text.slice(0, MAX_STRING_CHARS - 1)}…` : text;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* A record whose every key is an OWN data property — `__proto__` included.
|
|
58
|
+
* `out[key] = value` would drop a `__proto__` key whose value is not an object
|
|
59
|
+
* and re-prototype the record when it is; either way the key is lost.
|
|
60
|
+
*/
|
|
61
|
+
function ownRecord(entries) {
|
|
62
|
+
return Object.fromEntries(entries);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Convert any value to a JSON-safe, size-bounded tree:
|
|
66
|
+
* strings capped, arrays capped with an overflow marker, cycles
|
|
67
|
+
* broken, depth capped, Date → ISO, bigint → string, non-finite →
|
|
68
|
+
* null, functions/symbols/undefined dropped (objects) or null
|
|
69
|
+
* (arrays). Every key an own key. Output always canonicalizes without
|
|
70
|
+
* throwing.
|
|
71
|
+
*/
|
|
72
|
+
export function sanitizeJson(value, depth = 0, seen = new Set()) {
|
|
73
|
+
if (value === null)
|
|
74
|
+
return null;
|
|
75
|
+
switch (typeof value) {
|
|
76
|
+
case 'string':
|
|
77
|
+
return capped(value);
|
|
78
|
+
case 'number':
|
|
79
|
+
return Number.isFinite(value) ? value : null;
|
|
80
|
+
case 'boolean':
|
|
81
|
+
return value;
|
|
82
|
+
case 'bigint':
|
|
83
|
+
return String(value);
|
|
84
|
+
case 'undefined':
|
|
85
|
+
case 'function':
|
|
86
|
+
case 'symbol':
|
|
87
|
+
return undefined;
|
|
88
|
+
default:
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
const obj = value;
|
|
92
|
+
if (obj instanceof Date)
|
|
93
|
+
return obj.toISOString();
|
|
94
|
+
// The wire rule (`lib/wireJson.ts`): name, message, code, cause — never an
|
|
95
|
+
// Error's custom properties (an axios error's request headers).
|
|
96
|
+
if (isErrorValue(obj))
|
|
97
|
+
return sanitizeJson(wireError(obj), depth, seen);
|
|
98
|
+
if (depth >= MAX_DEPTH)
|
|
99
|
+
return '[truncated: depth]';
|
|
100
|
+
if (seen.has(obj))
|
|
101
|
+
return '[circular]';
|
|
102
|
+
seen.add(obj);
|
|
103
|
+
try {
|
|
104
|
+
if (Array.isArray(obj)) {
|
|
105
|
+
const list = obj.slice(0, MAX_LIST_ITEMS).map((item) => {
|
|
106
|
+
const sanitized = sanitizeJson(item, depth + 1, seen);
|
|
107
|
+
return sanitized === undefined ? null : sanitized;
|
|
108
|
+
});
|
|
109
|
+
if (obj.length > MAX_LIST_ITEMS)
|
|
110
|
+
list.push(`…+${obj.length - MAX_LIST_ITEMS} more`);
|
|
111
|
+
return list;
|
|
112
|
+
}
|
|
113
|
+
const entries = [];
|
|
114
|
+
for (const [key, entry] of Object.entries(obj)) {
|
|
115
|
+
const sanitized = sanitizeJson(entry, depth + 1, seen);
|
|
116
|
+
if (sanitized !== undefined)
|
|
117
|
+
entries.push([key, sanitized]);
|
|
118
|
+
}
|
|
119
|
+
return ownRecord(entries);
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
seen.delete(obj);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/** A value's kind — `undefined` for one JSON has no word for (a function, a symbol, a bigint). */
|
|
126
|
+
export function valueKindOf(value) {
|
|
127
|
+
if (value === null)
|
|
128
|
+
return 'null';
|
|
129
|
+
if (Array.isArray(value))
|
|
130
|
+
return 'array';
|
|
131
|
+
switch (typeof value) {
|
|
132
|
+
case 'string':
|
|
133
|
+
return 'string';
|
|
134
|
+
case 'number':
|
|
135
|
+
return 'number';
|
|
136
|
+
case 'boolean':
|
|
137
|
+
return 'boolean';
|
|
138
|
+
case 'object':
|
|
139
|
+
return 'object';
|
|
140
|
+
default:
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
const KINDS = new WeakMap();
|
|
145
|
+
const described = (rule, kind) => {
|
|
146
|
+
KINDS.set(rule, kind);
|
|
147
|
+
return rule;
|
|
148
|
+
};
|
|
149
|
+
/** What a rule is — `undefined` only for a function this module did not build. */
|
|
150
|
+
export function ruleKind(rule) {
|
|
151
|
+
return KINDS.get(rule);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* The value kinds a rule KEEPS something of at its own position — what
|
|
155
|
+
* `either` dispatches on. A marker accepts none: it keeps nothing of any value.
|
|
156
|
+
*
|
|
157
|
+
* @internal
|
|
158
|
+
*/
|
|
159
|
+
export function acceptedKinds(rule) {
|
|
160
|
+
const k = KINDS.get(rule);
|
|
161
|
+
switch (k?.kind) {
|
|
162
|
+
case 'leaf':
|
|
163
|
+
return new Set([k.accepts]);
|
|
164
|
+
case 'oneOf':
|
|
165
|
+
return new Set([...k.values].map((value) => valueKindOf(value)));
|
|
166
|
+
case 'shape':
|
|
167
|
+
case 'record':
|
|
168
|
+
return new Set(['object']);
|
|
169
|
+
case 'list':
|
|
170
|
+
return new Set(['array']);
|
|
171
|
+
case 'orList':
|
|
172
|
+
return new Set(['array', ...acceptedKinds(k.item)]);
|
|
173
|
+
case 'nullOr':
|
|
174
|
+
return new Set(['null', ...acceptedKinds(k.inner)]);
|
|
175
|
+
case 'either':
|
|
176
|
+
return new Set(k.alternatives.flatMap((alternative) => [...acceptedKinds(alternative)]));
|
|
177
|
+
case 'when':
|
|
178
|
+
return new Set([...acceptedKinds(k.then), ...acceptedKinds(k.otherwise)]);
|
|
179
|
+
case 'byContract':
|
|
180
|
+
return acceptedKinds(k.inner);
|
|
181
|
+
default:
|
|
182
|
+
return new Set();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// ─── Markers — keep nothing of the value ─────────────────────────────
|
|
186
|
+
export function typeofOf(value) {
|
|
187
|
+
return value === null ? 'null' : typeof value;
|
|
188
|
+
}
|
|
189
|
+
/** `'[23 chars]'` — length evidence without content. */
|
|
190
|
+
export function charsMarker(value) {
|
|
191
|
+
return typeof value === 'string' ? `[${value.length} chars]` : `[type: ${typeofOf(value)}]`;
|
|
192
|
+
}
|
|
193
|
+
/** `'[keys: a, b, c]'` — shape evidence for free-form Records. */
|
|
194
|
+
export function keysMarker(value) {
|
|
195
|
+
if (value === null || typeof value !== 'object')
|
|
196
|
+
return `[type: ${typeofOf(value)}]`;
|
|
197
|
+
const keys = Object.keys(value).slice(0, MAX_LIST_ITEMS);
|
|
198
|
+
return `[keys: ${keys.join(', ')}]`;
|
|
199
|
+
}
|
|
200
|
+
/** `'[type: object]'` — what kind of value, nothing of it (a tool's result). */
|
|
201
|
+
export const typeMarker = (value) => `[type: ${typeofOf(value)}]`;
|
|
202
|
+
/** A list's length, in the words of what it holds; anything else by `charsMarker`. */
|
|
203
|
+
const countMarker = (noun) => described((value) => (Array.isArray(value) ? `[${value.length} ${noun}]` : charsMarker(value)), {
|
|
204
|
+
kind: 'marker',
|
|
205
|
+
marks: 'count',
|
|
206
|
+
});
|
|
207
|
+
described(charsMarker, { kind: 'marker', marks: 'chars' });
|
|
208
|
+
described(keysMarker, { kind: 'marker', marks: 'keys' });
|
|
209
|
+
described(typeMarker, { kind: 'marker', marks: 'type' });
|
|
210
|
+
/** `'[3 messages]'` — a conversation's history. */
|
|
211
|
+
export const messagesMarker = countMarker('messages');
|
|
212
|
+
/** `'[2 blocks]'` — the model's thinking blocks. */
|
|
213
|
+
export const blocksMarker = countMarker('blocks');
|
|
214
|
+
/** `'[4 summaries]'` — the previews of what a slot dropped. */
|
|
215
|
+
export const summariesMarker = countMarker('summaries');
|
|
216
|
+
// ─── Leaves — a value of the declared kind, checked ──────────────────
|
|
217
|
+
/** A count, a duration, a score, an index: kept when it IS a number (non-finite as `null`). */
|
|
218
|
+
export const num = described((value) => typeof value === 'number' ? (Number.isFinite(value) ? value : null) : charsMarker(value), { kind: 'leaf', accepts: 'number' });
|
|
219
|
+
/** A flag or a verdict: kept when it IS a boolean. */
|
|
220
|
+
export const bool = described((value) => (typeof value === 'boolean' ? value : charsMarker(value)), { kind: 'leaf', accepts: 'boolean' });
|
|
221
|
+
/**
|
|
222
|
+
* The record's own word — an id, a name, a code, a label the app declared: kept
|
|
223
|
+
* when it IS a string, capped. Where the type is a closed union of words, use
|
|
224
|
+
* `oneOf`, which keeps only those words.
|
|
225
|
+
*/
|
|
226
|
+
export const str = described((value) => (typeof value === 'string' ? capped(value) : charsMarker(value)), { kind: 'leaf', accepts: 'string' });
|
|
227
|
+
/**
|
|
228
|
+
* One of the listed words (or numbers, or booleans): kept when the value IS one
|
|
229
|
+
* of them — so what it keeps is always a word this table wrote. Anything else
|
|
230
|
+
* is a marker.
|
|
231
|
+
*/
|
|
232
|
+
export function oneOf(...values) {
|
|
233
|
+
const words = new Set(values);
|
|
234
|
+
return described((value) => (words.has(value) ? value : charsMarker(value)), {
|
|
235
|
+
kind: 'oneOf',
|
|
236
|
+
values: new Set(words),
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* An object of a known shape, every field ruled (exhaustive by type, so a field
|
|
241
|
+
* added to `T` does not compile until it is). A field the rules do not name is
|
|
242
|
+
* a marker: whatever the value carries at runtime is bounded until someone
|
|
243
|
+
* decides it is the record's own words. Anything but an object is a marker too.
|
|
244
|
+
*/
|
|
245
|
+
export function shapeOf(rules) {
|
|
246
|
+
const byField = new Map(Object.entries(rules));
|
|
247
|
+
return described((value) => {
|
|
248
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
|
249
|
+
return charsMarker(value);
|
|
250
|
+
}
|
|
251
|
+
const entries = [];
|
|
252
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
253
|
+
if (entry === undefined)
|
|
254
|
+
continue; // absent, as JSON has it
|
|
255
|
+
const bounded = (byField.get(key) ?? charsMarker)(entry);
|
|
256
|
+
if (bounded !== undefined)
|
|
257
|
+
entries.push([key, bounded]);
|
|
258
|
+
}
|
|
259
|
+
return ownRecord(entries);
|
|
260
|
+
}, { kind: 'shape', fields: new Map(byField) });
|
|
261
|
+
}
|
|
262
|
+
/** A list: each entry by `rule`, capped at 32 like every list. Anything else is a marker. */
|
|
263
|
+
export function listOf(rule) {
|
|
264
|
+
return described((value) => {
|
|
265
|
+
if (!Array.isArray(value))
|
|
266
|
+
return charsMarker(value);
|
|
267
|
+
const out = [];
|
|
268
|
+
for (let i = 0; i < Math.min(value.length, MAX_LIST_ITEMS); i++) {
|
|
269
|
+
out.push(rule(value[i]) ?? null);
|
|
270
|
+
}
|
|
271
|
+
if (value.length > MAX_LIST_ITEMS)
|
|
272
|
+
out.push(`…+${value.length - MAX_LIST_ITEMS} more`);
|
|
273
|
+
return out;
|
|
274
|
+
}, { kind: 'list', item: rule });
|
|
275
|
+
}
|
|
276
|
+
/** A map with open keys: every key kept (a key is a name), every value by `rule`. Anything else is a marker. */
|
|
277
|
+
export function recordOf(rule) {
|
|
278
|
+
return described((value) => {
|
|
279
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
|
280
|
+
return charsMarker(value);
|
|
281
|
+
}
|
|
282
|
+
const entries = [];
|
|
283
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
284
|
+
if (entry === undefined)
|
|
285
|
+
continue;
|
|
286
|
+
const bounded = rule(entry);
|
|
287
|
+
if (bounded !== undefined)
|
|
288
|
+
entries.push([key, bounded]);
|
|
289
|
+
}
|
|
290
|
+
return ownRecord(entries);
|
|
291
|
+
}, { kind: 'record', value: rule });
|
|
292
|
+
}
|
|
293
|
+
/** One value, or a list of them, each by `rule` — a guard's declared value is either. */
|
|
294
|
+
export function orList(rule) {
|
|
295
|
+
const list = listOf(rule);
|
|
296
|
+
return described((value) => (Array.isArray(value) ? list(value) : rule(value)), {
|
|
297
|
+
kind: 'orList',
|
|
298
|
+
item: rule,
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
/** `null` stays `null` (a declared "none"); anything else by `rule`. */
|
|
302
|
+
export function nullOr(rule) {
|
|
303
|
+
return described((value) => (value === null ? null : rule(value)), {
|
|
304
|
+
kind: 'nullOr',
|
|
305
|
+
inner: rule,
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* A value of one of several kinds — a library word or a window, a facet word or
|
|
310
|
+
* a filter: the first alternative that accepts the value's kind bounds it. A
|
|
311
|
+
* value no alternative accepts is a marker.
|
|
312
|
+
*/
|
|
313
|
+
export function either(...alternatives) {
|
|
314
|
+
const accepting = alternatives.map((alternative) => ({
|
|
315
|
+
rule: alternative,
|
|
316
|
+
kinds: acceptedKinds(alternative),
|
|
317
|
+
}));
|
|
318
|
+
return described((value) => {
|
|
319
|
+
const kind = valueKindOf(value);
|
|
320
|
+
const chosen = kind === undefined ? undefined : accepting.find((alt) => alt.kinds.has(kind))?.rule;
|
|
321
|
+
return (chosen ?? charsMarker)(value);
|
|
322
|
+
}, { kind: 'either', alternatives: [...alternatives] });
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* One rule or another, by a test of the value itself, the reason written down —
|
|
326
|
+
* the few places a field is structure only for some values (a name this
|
|
327
|
+
* strategy has seen run, the engine's own decision evidence).
|
|
328
|
+
*/
|
|
329
|
+
export function when(why, test, then, otherwise) {
|
|
330
|
+
return described((value) => (test(value) ? then : otherwise)(value), {
|
|
331
|
+
kind: 'when',
|
|
332
|
+
why,
|
|
333
|
+
then,
|
|
334
|
+
otherwise,
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* A position a bounded record keeps although its value may come from the run —
|
|
339
|
+
* one of the exceptions `auditKeptByContract.ts` names, in one place. The rule
|
|
340
|
+
* inside still checks the value like every other: an exception keeps a value of
|
|
341
|
+
* its declared kind, never whatever arrives.
|
|
342
|
+
*/
|
|
343
|
+
export function byContract(exception, rule) {
|
|
344
|
+
return described((value) => rule(value), { kind: 'byContract', exception, inner: rule });
|
|
345
|
+
}
|
|
346
|
+
/** An event type the registry does not declare (a consumer's own `emit`): every field a marker. */
|
|
347
|
+
export const unknownEventShape = shapeOf({});
|
|
348
|
+
// ─── The tools this strategy has seen run ────────────────────────────
|
|
349
|
+
/** Names kept, and calls awaiting their end — each bounded, names and ids only. */
|
|
350
|
+
const MAX_TOOL_NAMES = 1024;
|
|
351
|
+
const MAX_OPEN_CALLS = 1024;
|
|
352
|
+
/**
|
|
353
|
+
* Tool names this strategy has seen RUN — a `stream.tool_end` without `error`,
|
|
354
|
+
* `notExecuted` or `notDispatched`, matched to its `tool_start` by
|
|
355
|
+
* `toolCallId` — so a tool this agent holds, by construction. What a
|
|
356
|
+
* `tryInsteadTool` name is recognized against (`otel.ts` keeps the same set).
|
|
357
|
+
*/
|
|
358
|
+
export function createToolRunTracker() {
|
|
359
|
+
const open = new Map();
|
|
360
|
+
const ran = new Set();
|
|
361
|
+
return {
|
|
362
|
+
observe(type, payload) {
|
|
363
|
+
if (payload === null || typeof payload !== 'object')
|
|
364
|
+
return;
|
|
365
|
+
const p = payload;
|
|
366
|
+
if (typeof p.toolCallId !== 'string' || p.notDispatched !== undefined)
|
|
367
|
+
return;
|
|
368
|
+
if (type === 'agentfootprint.stream.tool_start' && typeof p.toolName === 'string') {
|
|
369
|
+
if (open.size >= MAX_OPEN_CALLS) {
|
|
370
|
+
const [oldest] = open.keys();
|
|
371
|
+
if (oldest !== undefined)
|
|
372
|
+
open.delete(oldest);
|
|
373
|
+
}
|
|
374
|
+
open.set(p.toolCallId, p.toolName);
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
377
|
+
if (type !== 'agentfootprint.stream.tool_end')
|
|
378
|
+
return;
|
|
379
|
+
const name = open.get(p.toolCallId);
|
|
380
|
+
open.delete(p.toolCallId);
|
|
381
|
+
const failed = p.error !== undefined && p.error !== false;
|
|
382
|
+
if (name === undefined || failed || p.notExecuted === true)
|
|
383
|
+
return;
|
|
384
|
+
if (ran.size < MAX_TOOL_NAMES || ran.has(name))
|
|
385
|
+
ran.add(name);
|
|
386
|
+
},
|
|
387
|
+
ran: (name) => ran.has(name),
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
//# sourceMappingURL=auditBounding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auditBounding.js","sourceRoot":"","sources":["../../../../src/adapters/observability/auditBounding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* auditKeptByContract — what a BOUNDED audit record keeps although its value
|
|
3
|
+
* may come from the run: the named exceptions to "structure is kept, content
|
|
4
|
+
* is a marker", in one place.
|
|
5
|
+
*
|
|
6
|
+
* Pattern: a closed list of named exceptions (`KEPT_BY_CONTRACT`), each a rule
|
|
7
|
+
* built from `auditBounding.ts` and wrapped in `byContract`, so a walker
|
|
8
|
+
* finds every one by name.
|
|
9
|
+
* Role: `auditShapes.ts` places these rules in the event shapes and the meta
|
|
10
|
+
* shape; no other rule keeps a value the run composed.
|
|
11
|
+
* Emits: N/A.
|
|
12
|
+
*
|
|
13
|
+
* An exception is a POSITION, never a pass-through: each one still checks its
|
|
14
|
+
* value like every other rule — it keeps a value of its declared kind (a
|
|
15
|
+
* string, or decide() evidence's own shape, field by field), and a value of any
|
|
16
|
+
* other kind, or a child its type does not declare, is a marker.
|
|
17
|
+
*
|
|
18
|
+
* Adding an exception, or placing one somewhere new, changes the pin in
|
|
19
|
+
* `test/observability-providers/audit-bounded-sweep.test.ts` — a reviewed
|
|
20
|
+
* change, never a silent one. The module documentation of `audit.ts`, the
|
|
21
|
+
* observability README and the exporters page state the same list.
|
|
22
|
+
*/
|
|
23
|
+
import type { DecisionEvidence, SelectionEvidence } from 'footprintjs';
|
|
24
|
+
import { type BoundRule } from './auditBounding.js';
|
|
25
|
+
/** The exceptions, by name — what each keeps, and why the record keeps it. */
|
|
26
|
+
export declare const KEPT_BY_CONTRACT: {
|
|
27
|
+
readonly 'meta-identity': "who a run is for — the session id, principal and tenant the caller named — on each record's meta: the who of an audit record";
|
|
28
|
+
readonly 'decide-evidence': "decide()/select() evidence an app emits on `composition.route_decided`, as the engine summarized it: rule labels, branches, operators, thresholds and verdicts, each field checked";
|
|
29
|
+
readonly 'decision-summary': "the engine's summary of a value a decision rule read (decide() evidence, a skill guard's condition) — redaction-aware: under an agent's `redact` a selected key is the placeholder; otherwise the summary shows the value";
|
|
30
|
+
readonly 'policy-reason-tag': "a permission policy's telemetry `reason` tag (`permission.check`, `permission.halt`) — the policy's own word";
|
|
31
|
+
readonly 'app-reason-word': "the reason word an app attaches to a lifecycle event it emits itself (`skill.deactivated`, `tools.offered`, `permission.gate_closed`) — the app’s own words, as written";
|
|
32
|
+
readonly 'seen-tool-name': "a `tryInsteadTool` name, once this strategy has seen that tool run";
|
|
33
|
+
};
|
|
34
|
+
/** The name of a kept-by-contract exception. */
|
|
35
|
+
export type KeptByContract = keyof typeof KEPT_BY_CONTRACT;
|
|
36
|
+
/** decide()/select() evidence, as footprintjs declares it. */
|
|
37
|
+
export type DecideEvidence = DecisionEvidence | SelectionEvidence;
|
|
38
|
+
/**
|
|
39
|
+
* What a decide() filter compares against — a value the app declared, or a
|
|
40
|
+
* list of them — as this record keeps it. Anything else is a marker.
|
|
41
|
+
*/
|
|
42
|
+
export type DecideThreshold = string | number | boolean | null | readonly (string | number | boolean | null)[];
|
|
43
|
+
/** A value the app declared: a word, a number or a flag — or a declared "none". */
|
|
44
|
+
export declare const declaredValue: BoundRule;
|
|
45
|
+
/** `meta.sessionId`, `meta.principal`, `meta.tenant`: the caller's own names for who. */
|
|
46
|
+
export declare const metaIdentity: BoundRule;
|
|
47
|
+
/** The engine's summary of a value a rule read. */
|
|
48
|
+
export declare const decisionSummary: BoundRule;
|
|
49
|
+
/** A permission policy's telemetry tag. */
|
|
50
|
+
export declare const policyReasonTag: BoundRule;
|
|
51
|
+
/** A reason word an app attaches to a lifecycle event it emits itself. */
|
|
52
|
+
export declare const appReasonWord: BoundRule;
|
|
53
|
+
/**
|
|
54
|
+
* A `tryInsteadTool` name: kept only once this strategy has seen that tool run —
|
|
55
|
+
* a tool the agent holds, by construction (`otel.ts` · `coverageAttrs`, the same
|
|
56
|
+
* rule); otherwise it is the tool author's word for a tool this agent may not
|
|
57
|
+
* hold.
|
|
58
|
+
*/
|
|
59
|
+
export declare function seenToolName(toolRan: (name: string) => boolean): BoundRule;
|
|
60
|
+
/**
|
|
61
|
+
* `composition.route_decided.evidence`: decide() evidence is kept by contract,
|
|
62
|
+
* as its own shape; any other evidence (a router's own `{ reason }`) is a
|
|
63
|
+
* free-form record — its key names only.
|
|
64
|
+
*/
|
|
65
|
+
export declare const routeEvidence: BoundRule;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* auditKeptByContract — what a BOUNDED audit record keeps although its value
|
|
3
|
+
* may come from the run: the named exceptions to "structure is kept, content
|
|
4
|
+
* is a marker", in one place.
|
|
5
|
+
*
|
|
6
|
+
* Pattern: a closed list of named exceptions (`KEPT_BY_CONTRACT`), each a rule
|
|
7
|
+
* built from `auditBounding.ts` and wrapped in `byContract`, so a walker
|
|
8
|
+
* finds every one by name.
|
|
9
|
+
* Role: `auditShapes.ts` places these rules in the event shapes and the meta
|
|
10
|
+
* shape; no other rule keeps a value the run composed.
|
|
11
|
+
* Emits: N/A.
|
|
12
|
+
*
|
|
13
|
+
* An exception is a POSITION, never a pass-through: each one still checks its
|
|
14
|
+
* value like every other rule — it keeps a value of its declared kind (a
|
|
15
|
+
* string, or decide() evidence's own shape, field by field), and a value of any
|
|
16
|
+
* other kind, or a child its type does not declare, is a marker.
|
|
17
|
+
*
|
|
18
|
+
* Adding an exception, or placing one somewhere new, changes the pin in
|
|
19
|
+
* `test/observability-providers/audit-bounded-sweep.test.ts` — a reviewed
|
|
20
|
+
* change, never a silent one. The module documentation of `audit.ts`, the
|
|
21
|
+
* observability README and the exporters page state the same list.
|
|
22
|
+
*/
|
|
23
|
+
import { bool, byContract, charsMarker, either, keysMarker, listOf, nullOr, num, oneOf, orList, shapeOf, str, when, } from './auditBounding.js';
|
|
24
|
+
/** The exceptions, by name — what each keeps, and why the record keeps it. */
|
|
25
|
+
export const KEPT_BY_CONTRACT = {
|
|
26
|
+
'meta-identity': "who a run is for — the session id, principal and tenant the caller named — on each record's meta: the who of an audit record",
|
|
27
|
+
'decide-evidence': 'decide()/select() evidence an app emits on `composition.route_decided`, as the engine summarized it: rule labels, branches, operators, thresholds and verdicts, each field checked',
|
|
28
|
+
'decision-summary': "the engine's summary of a value a decision rule read (decide() evidence, a skill guard's condition) — redaction-aware: under an agent's `redact` a selected key is the placeholder; otherwise the summary shows the value",
|
|
29
|
+
'policy-reason-tag': "a permission policy's telemetry `reason` tag (`permission.check`, `permission.halt`) — the policy's own word",
|
|
30
|
+
'app-reason-word': 'the reason word an app attaches to a lifecycle event it emits itself (`skill.deactivated`, `tools.offered`, `permission.gate_closed`) — the app’s own words, as written',
|
|
31
|
+
'seen-tool-name': 'a `tryInsteadTool` name, once this strategy has seen that tool run',
|
|
32
|
+
};
|
|
33
|
+
const exception = (name, rule) => byContract(name, rule);
|
|
34
|
+
/** A value the app declared: a word, a number or a flag — or a declared "none". */
|
|
35
|
+
export const declaredValue = nullOr(either(str, num, bool));
|
|
36
|
+
// ─── The exceptions ──────────────────────────────────────────────────
|
|
37
|
+
/** `meta.sessionId`, `meta.principal`, `meta.tenant`: the caller's own names for who. */
|
|
38
|
+
export const metaIdentity = exception('meta-identity', str);
|
|
39
|
+
/** The engine's summary of a value a rule read. */
|
|
40
|
+
export const decisionSummary = exception('decision-summary', str);
|
|
41
|
+
/** A permission policy's telemetry tag. */
|
|
42
|
+
export const policyReasonTag = exception('policy-reason-tag', str);
|
|
43
|
+
/** A reason word an app attaches to a lifecycle event it emits itself. */
|
|
44
|
+
export const appReasonWord = exception('app-reason-word', str);
|
|
45
|
+
/**
|
|
46
|
+
* A `tryInsteadTool` name: kept only once this strategy has seen that tool run —
|
|
47
|
+
* a tool the agent holds, by construction (`otel.ts` · `coverageAttrs`, the same
|
|
48
|
+
* rule); otherwise it is the tool author's word for a tool this agent may not
|
|
49
|
+
* hold.
|
|
50
|
+
*/
|
|
51
|
+
export function seenToolName(toolRan) {
|
|
52
|
+
return when('a name this strategy has seen run is a tool the agent holds', (value) => typeof value === 'string' && toolRan(value), exception('seen-tool-name', str), charsMarker);
|
|
53
|
+
}
|
|
54
|
+
/** One rule's evidence: what it read or compared, its verdict; a rule's thrown message is a marker. */
|
|
55
|
+
const boundRuleEvidence = shapeOf({
|
|
56
|
+
type: oneOf('filter', 'function'),
|
|
57
|
+
ruleIndex: num,
|
|
58
|
+
branch: str,
|
|
59
|
+
matched: bool,
|
|
60
|
+
label: str,
|
|
61
|
+
inputs: listOf(shapeOf({ key: str, valueSummary: decisionSummary, redacted: bool })),
|
|
62
|
+
conditions: listOf(shapeOf({
|
|
63
|
+
key: str,
|
|
64
|
+
op: str,
|
|
65
|
+
threshold: orList(declaredValue),
|
|
66
|
+
actualSummary: decisionSummary,
|
|
67
|
+
result: bool,
|
|
68
|
+
redacted: bool,
|
|
69
|
+
})),
|
|
70
|
+
// A `when` that threw: its message can echo the value it read.
|
|
71
|
+
matchError: charsMarker,
|
|
72
|
+
});
|
|
73
|
+
/** decide()/select() evidence: every field footprintjs declares, each checked. */
|
|
74
|
+
const boundDecideEvidence = shapeOf({
|
|
75
|
+
retryLoop: shapeOf({
|
|
76
|
+
id: str,
|
|
77
|
+
series: str,
|
|
78
|
+
attempt: num,
|
|
79
|
+
of: num,
|
|
80
|
+
effect: oneOf('applied', 'none', 'unknown'),
|
|
81
|
+
reconciled: bool,
|
|
82
|
+
next: oneOf('done', 'retry', 'stop'),
|
|
83
|
+
reason: str,
|
|
84
|
+
}),
|
|
85
|
+
rules: listOf(boundRuleEvidence),
|
|
86
|
+
chosen: str,
|
|
87
|
+
default: str,
|
|
88
|
+
defaultLabel: str,
|
|
89
|
+
selected: listOf(str),
|
|
90
|
+
});
|
|
91
|
+
/** decide() evidence carries its own `rules` list — `otel.ts`'s test too. */
|
|
92
|
+
const isDecideEvidence = (value) => typeof value === 'object' &&
|
|
93
|
+
value !== null &&
|
|
94
|
+
!Array.isArray(value) &&
|
|
95
|
+
Object.hasOwn(value, 'rules') &&
|
|
96
|
+
Array.isArray(value.rules);
|
|
97
|
+
/**
|
|
98
|
+
* `composition.route_decided.evidence`: decide() evidence is kept by contract,
|
|
99
|
+
* as its own shape; any other evidence (a router's own `{ reason }`) is a
|
|
100
|
+
* free-form record — its key names only.
|
|
101
|
+
*/
|
|
102
|
+
export const routeEvidence = when("decide() evidence is the engine's, kept by contract; any other is a record", isDecideEvidence, exception('decide-evidence', boundDecideEvidence), keysMarker);
|
|
103
|
+
//# sourceMappingURL=auditKeptByContract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auditKeptByContract.js","sourceRoot":"","sources":["../../../../src/adapters/observability/auditKeptByContract.ts"],"names":[],"mappings":"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"}
|