agentfootprint 10.1.1 → 10.3.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 +2 -0
- package/dist/adapters/llm/AnthropicProvider.js +28 -3
- package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/adapters/llm/BrowserAnthropicProvider.js +11 -2
- package/dist/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
- package/dist/adapters/llm/MockProvider.js +11 -1
- package/dist/adapters/llm/MockProvider.js.map +1 -1
- package/dist/adapters/llm/anthropicMessageProjection.js +26 -1
- package/dist/adapters/llm/anthropicMessageProjection.js.map +1 -1
- package/dist/adapters/llm/anthropicMessagesWire.js +61 -37
- package/dist/adapters/llm/anthropicMessagesWire.js.map +1 -1
- package/dist/adapters/llm/anthropicModels.js +48 -14
- package/dist/adapters/llm/anthropicModels.js.map +1 -1
- package/dist/adapters/llm/anthropicReplayLayout.js +1 -0
- package/dist/adapters/llm/anthropicReplayLayout.js.map +1 -1
- package/dist/adapters/llm/anthropicToolArguments.js +122 -0
- package/dist/adapters/llm/anthropicToolArguments.js.map +1 -0
- package/dist/adapters/llm/wireManifest.js +8 -2
- package/dist/adapters/llm/wireManifest.js.map +1 -1
- package/dist/adapters/nativeOutputSchema.js +80 -0
- package/dist/adapters/nativeOutputSchema.js.map +1 -0
- package/dist/adapters/requestRefusal.js +2 -0
- package/dist/adapters/requestRefusal.js.map +1 -1
- package/dist/adapters/types.js.map +1 -1
- package/dist/answer-validation/validate.js +7 -107
- package/dist/answer-validation/validate.js.map +1 -1
- package/dist/core/Agent.js +79 -22
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/agent/AgentBuilder.js +23 -0
- package/dist/core/agent/AgentBuilder.js.map +1 -1
- package/dist/core/agent/arguments/resolve.js +4 -0
- package/dist/core/agent/arguments/resolve.js.map +1 -1
- package/dist/core/agent/arguments/subflow.js +1 -0
- package/dist/core/agent/arguments/subflow.js.map +1 -1
- package/dist/core/agent/buildDynamicAgentChart.js +5 -0
- package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/core/agent/findings/reserved.js +50 -1
- package/dist/core/agent/findings/reserved.js.map +1 -1
- package/dist/core/agent/findings/types.js.map +1 -1
- package/dist/core/agent/findings/verificationCheck.js +99 -0
- package/dist/core/agent/findings/verificationCheck.js.map +1 -0
- package/dist/core/agent/findings/verificationCheckpoint.js +110 -0
- package/dist/core/agent/findings/verificationCheckpoint.js.map +1 -0
- package/dist/core/agent/findings/verificationConfig.js +119 -0
- package/dist/core/agent/findings/verificationConfig.js.map +1 -0
- package/dist/core/agent/findings/verificationRow.js +181 -0
- package/dist/core/agent/findings/verificationRow.js.map +1 -0
- package/dist/core/agent/findings/verificationState.js +152 -0
- package/dist/core/agent/findings/verificationState.js.map +1 -0
- package/dist/core/agent/findings/verificationTypes.js +23 -0
- package/dist/core/agent/findings/verificationTypes.js.map +1 -0
- package/dist/core/agent/nativeOutputFormat.js +389 -0
- package/dist/core/agent/nativeOutputFormat.js.map +1 -0
- package/dist/core/agent/outputEnforcement.js +40 -1
- package/dist/core/agent/outputEnforcement.js.map +1 -1
- package/dist/core/agent/stages/answerValidation.js +14 -4
- package/dist/core/agent/stages/answerValidation.js.map +1 -1
- package/dist/core/agent/stages/callLLM.js +24 -0
- package/dist/core/agent/stages/callLLM.js.map +1 -1
- package/dist/core/agent/stages/outputRetry.js +1 -0
- package/dist/core/agent/stages/outputRetry.js.map +1 -1
- package/dist/core/agent/stages/route.js +33 -10
- package/dist/core/agent/stages/route.js.map +1 -1
- package/dist/core/agent/stages/toolCalls.js +20 -3
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/core/agent/toolArgsValidation.js +12 -1
- package/dist/core/agent/toolArgsValidation.js.map +1 -1
- package/dist/core/outputSchema.js.map +1 -1
- package/dist/core/runCheckpoint.js +45 -4
- package/dist/core/runCheckpoint.js.map +1 -1
- package/dist/esm/adapters/llm/AnthropicProvider.d.ts +3 -0
- package/dist/esm/adapters/llm/AnthropicProvider.js +29 -4
- package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.d.ts +3 -0
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.js +12 -3
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
- package/dist/esm/adapters/llm/MockProvider.d.ts +7 -0
- package/dist/esm/adapters/llm/MockProvider.js +11 -1
- package/dist/esm/adapters/llm/MockProvider.js.map +1 -1
- package/dist/esm/adapters/llm/anthropicMessageProjection.js +26 -1
- package/dist/esm/adapters/llm/anthropicMessageProjection.js.map +1 -1
- package/dist/esm/adapters/llm/anthropicMessagesWire.d.ts +17 -3
- package/dist/esm/adapters/llm/anthropicMessagesWire.js +61 -37
- package/dist/esm/adapters/llm/anthropicMessagesWire.js.map +1 -1
- package/dist/esm/adapters/llm/anthropicModels.d.ts +36 -3
- package/dist/esm/adapters/llm/anthropicModels.js +46 -13
- package/dist/esm/adapters/llm/anthropicModels.js.map +1 -1
- package/dist/esm/adapters/llm/anthropicReplayLayout.js +1 -0
- package/dist/esm/adapters/llm/anthropicReplayLayout.js.map +1 -1
- package/dist/esm/adapters/llm/anthropicToolArguments.d.ts +31 -0
- package/dist/esm/adapters/llm/anthropicToolArguments.js +118 -0
- package/dist/esm/adapters/llm/anthropicToolArguments.js.map +1 -0
- package/dist/esm/adapters/llm/wireManifest.d.ts +9 -1
- package/dist/esm/adapters/llm/wireManifest.js +8 -2
- package/dist/esm/adapters/llm/wireManifest.js.map +1 -1
- package/dist/esm/adapters/nativeOutputSchema.d.ts +66 -0
- package/dist/esm/adapters/nativeOutputSchema.js +75 -0
- package/dist/esm/adapters/nativeOutputSchema.js.map +1 -0
- package/dist/esm/adapters/requestRefusal.js +2 -0
- package/dist/esm/adapters/requestRefusal.js.map +1 -1
- package/dist/esm/adapters/types.d.ts +57 -0
- package/dist/esm/adapters/types.js.map +1 -1
- package/dist/esm/answer-validation/validate.js +1 -101
- package/dist/esm/answer-validation/validate.js.map +1 -1
- package/dist/esm/core/Agent.d.ts +16 -0
- package/dist/esm/core/Agent.js +79 -22
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/agent/AgentBuilder.js +23 -0
- package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
- package/dist/esm/core/agent/arguments/resolve.d.ts +1 -0
- package/dist/esm/core/agent/arguments/resolve.js +4 -0
- package/dist/esm/core/agent/arguments/resolve.js.map +1 -1
- package/dist/esm/core/agent/arguments/subflow.js +1 -0
- package/dist/esm/core/agent/arguments/subflow.js.map +1 -1
- package/dist/esm/core/agent/buildDynamicAgentChart.js +5 -0
- package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/esm/core/agent/findings/reserved.d.ts +16 -0
- package/dist/esm/core/agent/findings/reserved.js +48 -0
- package/dist/esm/core/agent/findings/reserved.js.map +1 -1
- package/dist/esm/core/agent/findings/types.d.ts +2 -1
- package/dist/esm/core/agent/findings/types.js.map +1 -1
- package/dist/esm/core/agent/findings/verificationCheck.d.ts +24 -0
- package/dist/esm/core/agent/findings/verificationCheck.js +95 -0
- package/dist/esm/core/agent/findings/verificationCheck.js.map +1 -0
- package/dist/esm/core/agent/findings/verificationCheckpoint.d.ts +10 -0
- package/dist/esm/core/agent/findings/verificationCheckpoint.js +104 -0
- package/dist/esm/core/agent/findings/verificationCheckpoint.js.map +1 -0
- package/dist/esm/core/agent/findings/verificationConfig.d.ts +30 -0
- package/dist/esm/core/agent/findings/verificationConfig.js +115 -0
- package/dist/esm/core/agent/findings/verificationConfig.js.map +1 -0
- package/dist/esm/core/agent/findings/verificationRow.d.ts +16 -0
- package/dist/esm/core/agent/findings/verificationRow.js +174 -0
- package/dist/esm/core/agent/findings/verificationRow.js.map +1 -0
- package/dist/esm/core/agent/findings/verificationState.d.ts +39 -0
- package/dist/esm/core/agent/findings/verificationState.js +143 -0
- package/dist/esm/core/agent/findings/verificationState.js.map +1 -0
- package/dist/esm/core/agent/findings/verificationTypes.d.ts +55 -0
- package/dist/esm/core/agent/findings/verificationTypes.js +20 -0
- package/dist/esm/core/agent/findings/verificationTypes.js.map +1 -0
- package/dist/esm/core/agent/nativeOutputFormat.d.ts +85 -0
- package/dist/esm/core/agent/nativeOutputFormat.js +384 -0
- package/dist/esm/core/agent/nativeOutputFormat.js.map +1 -0
- package/dist/esm/core/agent/outputEnforcement.d.ts +33 -1
- package/dist/esm/core/agent/outputEnforcement.js +38 -0
- package/dist/esm/core/agent/outputEnforcement.js.map +1 -1
- package/dist/esm/core/agent/stages/answerValidation.d.ts +1 -1
- package/dist/esm/core/agent/stages/answerValidation.js +14 -4
- package/dist/esm/core/agent/stages/answerValidation.js.map +1 -1
- package/dist/esm/core/agent/stages/callLLM.d.ts +9 -1
- package/dist/esm/core/agent/stages/callLLM.js +24 -0
- package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
- package/dist/esm/core/agent/stages/outputRetry.js +1 -0
- package/dist/esm/core/agent/stages/outputRetry.js.map +1 -1
- package/dist/esm/core/agent/stages/route.js +34 -11
- package/dist/esm/core/agent/stages/route.js.map +1 -1
- package/dist/esm/core/agent/stages/toolCalls.js +21 -4
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/agent/toolArgsValidation.d.ts +2 -0
- package/dist/esm/core/agent/toolArgsValidation.js +10 -0
- package/dist/esm/core/agent/toolArgsValidation.js.map +1 -1
- package/dist/esm/core/agent/types.d.ts +20 -3
- package/dist/esm/core/outputSchema.d.ts +30 -3
- package/dist/esm/core/outputSchema.js.map +1 -1
- package/dist/esm/core/runCheckpoint.d.ts +11 -1
- package/dist/esm/core/runCheckpoint.js +45 -4
- package/dist/esm/core/runCheckpoint.js.map +1 -1
- package/dist/esm/integrity/claim-binding/admit.d.ts +12 -0
- package/dist/esm/integrity/claim-binding/admit.js +204 -0
- package/dist/esm/integrity/claim-binding/admit.js.map +1 -0
- package/dist/esm/integrity/claim-binding/bindEvidence.d.ts +8 -0
- package/dist/esm/integrity/claim-binding/bindEvidence.js +144 -0
- package/dist/esm/integrity/claim-binding/bindEvidence.js.map +1 -0
- package/dist/esm/integrity/claim-binding/capture.d.ts +25 -0
- package/dist/esm/integrity/claim-binding/capture.js +143 -0
- package/dist/esm/integrity/claim-binding/capture.js.map +1 -0
- package/dist/esm/integrity/claim-binding/scope.d.ts +23 -0
- package/dist/esm/integrity/claim-binding/scope.js +149 -0
- package/dist/esm/integrity/claim-binding/scope.js.map +1 -0
- package/dist/esm/integrity/claim-binding/types.d.ts +99 -0
- package/dist/esm/integrity/claim-binding/types.js +23 -0
- package/dist/esm/integrity/claim-binding/types.js.map +1 -0
- package/dist/esm/integrity/unsupported-claim/check.js +33 -55
- package/dist/esm/integrity/unsupported-claim/check.js.map +1 -1
- package/dist/esm/integrity/unsupported-claim/evaluate.d.ts +18 -0
- package/dist/esm/integrity/unsupported-claim/evaluate.js +34 -0
- package/dist/esm/integrity/unsupported-claim/evaluate.js.map +1 -0
- package/dist/esm/lib/boundedJson.d.ts +3 -0
- package/dist/esm/lib/boundedJson.js +104 -0
- package/dist/esm/lib/boundedJson.js.map +1 -0
- package/dist/esm/lib/time-travel/receipt.d.ts +11 -0
- package/dist/esm/lib/time-travel/receipt.js +12 -2
- package/dist/esm/lib/time-travel/receipt.js.map +1 -1
- package/dist/esm/memory/identity/encode.d.ts +7 -0
- package/dist/esm/memory/identity/encode.js +14 -0
- package/dist/esm/memory/identity/encode.js.map +1 -1
- package/dist/esm/providers.d.ts +1 -0
- package/dist/esm/providers.js +1 -0
- package/dist/esm/providers.js.map +1 -1
- package/dist/esm/redaction/conversation.js +3 -0
- package/dist/esm/redaction/conversation.js.map +1 -1
- package/dist/esm/redaction/knownStrings.js +5 -0
- package/dist/esm/redaction/knownStrings.js.map +1 -1
- package/dist/esm/resilience/withCircuitBreaker.js +7 -0
- package/dist/esm/resilience/withCircuitBreaker.js.map +1 -1
- package/dist/esm/resilience/withFallback.js +10 -0
- package/dist/esm/resilience/withFallback.js.map +1 -1
- package/dist/esm/resilience/withRetry.js +8 -0
- package/dist/esm/resilience/withRetry.js.map +1 -1
- package/dist/integrity/claim-binding/admit.js +211 -0
- package/dist/integrity/claim-binding/admit.js.map +1 -0
- package/dist/integrity/claim-binding/bindEvidence.js +148 -0
- package/dist/integrity/claim-binding/bindEvidence.js.map +1 -0
- package/dist/integrity/claim-binding/capture.js +152 -0
- package/dist/integrity/claim-binding/capture.js.map +1 -0
- package/dist/integrity/claim-binding/scope.js +159 -0
- package/dist/integrity/claim-binding/scope.js.map +1 -0
- package/dist/integrity/claim-binding/types.js +26 -0
- package/dist/integrity/claim-binding/types.js.map +1 -0
- package/dist/integrity/unsupported-claim/check.js +32 -54
- package/dist/integrity/unsupported-claim/check.js.map +1 -1
- package/dist/integrity/unsupported-claim/evaluate.js +38 -0
- package/dist/integrity/unsupported-claim/evaluate.js.map +1 -0
- package/dist/lib/boundedJson.js +109 -0
- package/dist/lib/boundedJson.js.map +1 -0
- package/dist/lib/time-travel/receipt.js +12 -2
- package/dist/lib/time-travel/receipt.js.map +1 -1
- package/dist/memory/identity/encode.js +16 -1
- package/dist/memory/identity/encode.js.map +1 -1
- package/dist/providers.js +4 -1
- package/dist/providers.js.map +1 -1
- package/dist/redaction/conversation.js +3 -0
- package/dist/redaction/conversation.js.map +1 -1
- package/dist/redaction/knownStrings.js +5 -0
- package/dist/redaction/knownStrings.js.map +1 -1
- package/dist/resilience/withCircuitBreaker.js +7 -0
- package/dist/resilience/withCircuitBreaker.js.map +1 -1
- package/dist/resilience/withFallback.js +10 -0
- package/dist/resilience/withFallback.js.map +1 -1
- package/dist/resilience/withRetry.js +8 -0
- package/dist/resilience/withRetry.js.map +1 -1
- package/dist/types/adapters/llm/AnthropicProvider.d.ts +3 -0
- package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts +3 -0
- package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/MockProvider.d.ts +7 -0
- package/dist/types/adapters/llm/MockProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/anthropicMessageProjection.d.ts.map +1 -1
- package/dist/types/adapters/llm/anthropicMessagesWire.d.ts +17 -3
- package/dist/types/adapters/llm/anthropicMessagesWire.d.ts.map +1 -1
- package/dist/types/adapters/llm/anthropicModels.d.ts +36 -3
- package/dist/types/adapters/llm/anthropicModels.d.ts.map +1 -1
- package/dist/types/adapters/llm/anthropicReplayLayout.d.ts.map +1 -1
- package/dist/types/adapters/llm/anthropicToolArguments.d.ts +32 -0
- package/dist/types/adapters/llm/anthropicToolArguments.d.ts.map +1 -0
- package/dist/types/adapters/llm/wireManifest.d.ts +9 -1
- package/dist/types/adapters/llm/wireManifest.d.ts.map +1 -1
- package/dist/types/adapters/nativeOutputSchema.d.ts +67 -0
- package/dist/types/adapters/nativeOutputSchema.d.ts.map +1 -0
- package/dist/types/adapters/requestRefusal.d.ts.map +1 -1
- package/dist/types/adapters/types.d.ts +57 -0
- package/dist/types/adapters/types.d.ts.map +1 -1
- package/dist/types/answer-validation/validate.d.ts.map +1 -1
- package/dist/types/core/Agent.d.ts +16 -0
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
- package/dist/types/core/agent/arguments/resolve.d.ts +1 -0
- package/dist/types/core/agent/arguments/resolve.d.ts.map +1 -1
- package/dist/types/core/agent/arguments/subflow.d.ts.map +1 -1
- package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/findings/reserved.d.ts +16 -0
- package/dist/types/core/agent/findings/reserved.d.ts.map +1 -1
- package/dist/types/core/agent/findings/types.d.ts +2 -1
- package/dist/types/core/agent/findings/types.d.ts.map +1 -1
- package/dist/types/core/agent/findings/verificationCheck.d.ts +25 -0
- package/dist/types/core/agent/findings/verificationCheck.d.ts.map +1 -0
- package/dist/types/core/agent/findings/verificationCheckpoint.d.ts +11 -0
- package/dist/types/core/agent/findings/verificationCheckpoint.d.ts.map +1 -0
- package/dist/types/core/agent/findings/verificationConfig.d.ts +31 -0
- package/dist/types/core/agent/findings/verificationConfig.d.ts.map +1 -0
- package/dist/types/core/agent/findings/verificationRow.d.ts +17 -0
- package/dist/types/core/agent/findings/verificationRow.d.ts.map +1 -0
- package/dist/types/core/agent/findings/verificationState.d.ts +40 -0
- package/dist/types/core/agent/findings/verificationState.d.ts.map +1 -0
- package/dist/types/core/agent/findings/verificationTypes.d.ts +56 -0
- package/dist/types/core/agent/findings/verificationTypes.d.ts.map +1 -0
- package/dist/types/core/agent/nativeOutputFormat.d.ts +86 -0
- package/dist/types/core/agent/nativeOutputFormat.d.ts.map +1 -0
- package/dist/types/core/agent/outputEnforcement.d.ts +33 -1
- package/dist/types/core/agent/outputEnforcement.d.ts.map +1 -1
- package/dist/types/core/agent/stages/answerValidation.d.ts +1 -1
- package/dist/types/core/agent/stages/answerValidation.d.ts.map +1 -1
- package/dist/types/core/agent/stages/callLLM.d.ts +9 -1
- package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
- package/dist/types/core/agent/stages/outputRetry.d.ts.map +1 -1
- package/dist/types/core/agent/stages/route.d.ts.map +1 -1
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/core/agent/toolArgsValidation.d.ts +2 -0
- package/dist/types/core/agent/toolArgsValidation.d.ts.map +1 -1
- package/dist/types/core/agent/types.d.ts +20 -3
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/core/outputSchema.d.ts +30 -3
- package/dist/types/core/outputSchema.d.ts.map +1 -1
- package/dist/types/core/runCheckpoint.d.ts +11 -1
- package/dist/types/core/runCheckpoint.d.ts.map +1 -1
- package/dist/types/integrity/claim-binding/admit.d.ts +13 -0
- package/dist/types/integrity/claim-binding/admit.d.ts.map +1 -0
- package/dist/types/integrity/claim-binding/bindEvidence.d.ts +9 -0
- package/dist/types/integrity/claim-binding/bindEvidence.d.ts.map +1 -0
- package/dist/types/integrity/claim-binding/capture.d.ts +26 -0
- package/dist/types/integrity/claim-binding/capture.d.ts.map +1 -0
- package/dist/types/integrity/claim-binding/scope.d.ts +24 -0
- package/dist/types/integrity/claim-binding/scope.d.ts.map +1 -0
- package/dist/types/integrity/claim-binding/types.d.ts +100 -0
- package/dist/types/integrity/claim-binding/types.d.ts.map +1 -0
- package/dist/types/integrity/unsupported-claim/check.d.ts.map +1 -1
- package/dist/types/integrity/unsupported-claim/evaluate.d.ts +19 -0
- package/dist/types/integrity/unsupported-claim/evaluate.d.ts.map +1 -0
- package/dist/types/lib/boundedJson.d.ts +4 -0
- package/dist/types/lib/boundedJson.d.ts.map +1 -0
- package/dist/types/lib/time-travel/receipt.d.ts +11 -0
- package/dist/types/lib/time-travel/receipt.d.ts.map +1 -1
- package/dist/types/memory/identity/encode.d.ts +7 -0
- package/dist/types/memory/identity/encode.d.ts.map +1 -1
- package/dist/types/providers.d.ts +1 -0
- package/dist/types/providers.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/resilience/withCircuitBreaker.d.ts.map +1 -1
- package/dist/types/resilience/withFallback.d.ts.map +1 -1
- package/dist/types/resilience/withRetry.d.ts.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admit.js","sourceRoot":"","sources":["../../../../src/integrity/claim-binding/admit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ClaimBinding, ClaimBindingRule, EvidenceSnapshot } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The model supplies only result/value/rule. Snapshot lineage, rule registry
|
|
4
|
+
* and intendedScope are runtime/app inputs. A bound pair is not a verdict.
|
|
5
|
+
* JSON-restored snapshots must originate from the caller's verified recording;
|
|
6
|
+
* this module validates shape and associations, not signatures or ownership.
|
|
7
|
+
*/
|
|
8
|
+
export declare function bindClaim(rawClaim: unknown, snapshot: EvidenceSnapshot, rules: readonly ClaimBindingRule[], intendedScope?: unknown): ClaimBinding;
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/** Exact evidence selection and eligibility, before the shared pair evaluator. */
|
|
2
|
+
import { copyJson, ownData } from '../../lib/boundedJson.js';
|
|
3
|
+
import { participates, comparableValueOf } from '../assertion/types.js';
|
|
4
|
+
import { periodVerdict } from '../../core/agent/coverage/period.js';
|
|
5
|
+
import { resultIdentityOf } from './capture.js';
|
|
6
|
+
import { BINDING_LIMITS, boundedText, boundedResultId, queriedPeriodMatches, scopesMatch, ownConfigArray, } from './scope.js';
|
|
7
|
+
import { bindingRuleOf, readEvidenceSnapshot } from './admit.js';
|
|
8
|
+
const unverified = (reason) => ({ kind: 'unverified', reason });
|
|
9
|
+
const isDoubt = (value) => value === null || value === 'unknown' || value === undefined;
|
|
10
|
+
/**
|
|
11
|
+
* The model supplies only result/value/rule. Snapshot lineage, rule registry
|
|
12
|
+
* and intendedScope are runtime/app inputs. A bound pair is not a verdict.
|
|
13
|
+
* JSON-restored snapshots must originate from the caller's verified recording;
|
|
14
|
+
* this module validates shape and associations, not signatures or ownership.
|
|
15
|
+
*/
|
|
16
|
+
export function bindClaim(rawClaim, snapshot, rules, intendedScope) {
|
|
17
|
+
let claim;
|
|
18
|
+
try {
|
|
19
|
+
claim = ownData(copyJson(rawClaim, BINDING_LIMITS.scopeBytes, true), [
|
|
20
|
+
'result',
|
|
21
|
+
'value',
|
|
22
|
+
'rule',
|
|
23
|
+
]);
|
|
24
|
+
if (!boundedResultId(claim.result) ||
|
|
25
|
+
!boundedText(claim.rule) ||
|
|
26
|
+
!Object.hasOwn(claim, 'value'))
|
|
27
|
+
return unverified('invalid-claim');
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return unverified('invalid-claim');
|
|
31
|
+
}
|
|
32
|
+
let matchingRules;
|
|
33
|
+
try {
|
|
34
|
+
matchingRules = ownConfigArray(rules, BINDING_LIMITS.results)
|
|
35
|
+
.map(bindingRuleOf)
|
|
36
|
+
.filter((rule) => rule.id === claim.rule);
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return unverified('invalid-rule');
|
|
40
|
+
}
|
|
41
|
+
if (matchingRules.length === 0)
|
|
42
|
+
return unverified('unknown-rule');
|
|
43
|
+
if (matchingRules.length !== 1)
|
|
44
|
+
return unverified('invalid-rule');
|
|
45
|
+
const rule = matchingRules[0];
|
|
46
|
+
if (rule === undefined)
|
|
47
|
+
return unverified('invalid-rule');
|
|
48
|
+
try {
|
|
49
|
+
const saved = readEvidenceSnapshot(snapshot);
|
|
50
|
+
const matches = saved.results.filter((result) => result.id === claim.result);
|
|
51
|
+
if (matches.length === 0)
|
|
52
|
+
return unverified('missing-result');
|
|
53
|
+
if (matches.length !== 1)
|
|
54
|
+
return unverified('ambiguous-result');
|
|
55
|
+
const result = matches[0];
|
|
56
|
+
if (result === undefined || result.id !== resultIdentityOf(result.identity))
|
|
57
|
+
return unverified('invalid-evidence');
|
|
58
|
+
if (result.identity.namespace !== saved.namespace ||
|
|
59
|
+
!saved.runIds.includes(result.identity.runId))
|
|
60
|
+
return unverified('foreign-result');
|
|
61
|
+
if (result.unavailable !== undefined)
|
|
62
|
+
return unverified(result.unavailable);
|
|
63
|
+
if (result.toolName !== rule.toolName)
|
|
64
|
+
return unverified('invalid-rule');
|
|
65
|
+
if (result.scopeDeclaration.id !== rule.scopeDeclaration.id ||
|
|
66
|
+
result.scopeDeclaration.version !== rule.scopeDeclaration.version)
|
|
67
|
+
return unverified('scope-version-mismatch');
|
|
68
|
+
if (result.scope === undefined)
|
|
69
|
+
return unverified('missing-scope');
|
|
70
|
+
const dimensions = rule.scopeDeclaration.dimensions.map((dimension) => dimension.name);
|
|
71
|
+
if (!dimensions.every(boundedText) ||
|
|
72
|
+
new Set(dimensions).size !== dimensions.length ||
|
|
73
|
+
dimensions.some((name) => !Object.hasOwn(result.scope, name)) ||
|
|
74
|
+
Object.keys(result.scope).some((name) => !dimensions.includes(name)))
|
|
75
|
+
return unverified('missing-scope');
|
|
76
|
+
if (result.periodDimension !== rule.scopeDeclaration.periodDimension)
|
|
77
|
+
return unverified('scope-version-mismatch');
|
|
78
|
+
if (intendedScope !== undefined && !scopesMatch(result.scope, intendedScope))
|
|
79
|
+
return unverified('scope-mismatch');
|
|
80
|
+
const entity = typeof rule.fact.entity === 'string'
|
|
81
|
+
? rule.fact.entity
|
|
82
|
+
: result.scope[rule.fact.entity.scopeDimension];
|
|
83
|
+
if (!boundedText(entity) || !boundedText(rule.fact.field))
|
|
84
|
+
return unverified('invalid-rule');
|
|
85
|
+
if (!Array.isArray(result.facts))
|
|
86
|
+
return unverified('invalid-evidence');
|
|
87
|
+
const facts = result.facts.filter((fact) => fact.entity === entity && fact.field === rule.fact.field);
|
|
88
|
+
if (facts.length === 0)
|
|
89
|
+
return unverified('missing-fact');
|
|
90
|
+
if (facts.length !== 1)
|
|
91
|
+
return unverified('ambiguous-fact');
|
|
92
|
+
const fact = facts[0];
|
|
93
|
+
if (fact === undefined || !participates(fact.value) || !participates(claim.value))
|
|
94
|
+
return unverified('unasserted-value');
|
|
95
|
+
// Absence/doubt needs a separately authored absence rule in a later slice.
|
|
96
|
+
if (isDoubt(comparableValueOf(fact.value)) || isDoubt(comparableValueOf(claim.value)))
|
|
97
|
+
return unverified('unasserted-value');
|
|
98
|
+
if (result.period !== undefined) {
|
|
99
|
+
const verdict = periodVerdict(result.period);
|
|
100
|
+
if (verdict === 'unknown')
|
|
101
|
+
return unverified('coverage-unknown');
|
|
102
|
+
if (verdict !== 'covered')
|
|
103
|
+
return unverified('coverage-partial');
|
|
104
|
+
}
|
|
105
|
+
if (result.periodDimension !== undefined) {
|
|
106
|
+
if (result.period === undefined)
|
|
107
|
+
return unverified('coverage-undeclared');
|
|
108
|
+
if (!queriedPeriodMatches(result.scope[result.periodDimension], result.period))
|
|
109
|
+
return unverified('scope-mismatch');
|
|
110
|
+
}
|
|
111
|
+
if (rule.coverage === undefined || result.coverage === undefined)
|
|
112
|
+
return unverified('coverage-undeclared');
|
|
113
|
+
const completeness = rule.coverage({
|
|
114
|
+
scope: result.scope,
|
|
115
|
+
coverage: result.coverage,
|
|
116
|
+
...(result.period !== undefined && { period: result.period }),
|
|
117
|
+
});
|
|
118
|
+
if (completeness === 'partial')
|
|
119
|
+
return unverified('coverage-partial');
|
|
120
|
+
if (completeness === 'stale')
|
|
121
|
+
return unverified('coverage-stale');
|
|
122
|
+
if (completeness !== 'complete')
|
|
123
|
+
return unverified('coverage-unknown');
|
|
124
|
+
const common = {
|
|
125
|
+
subject: { kind: 'entity', id: entity },
|
|
126
|
+
predicate: rule.fact.field,
|
|
127
|
+
stratum: 'asserted',
|
|
128
|
+
};
|
|
129
|
+
return copyJson({
|
|
130
|
+
kind: 'bound',
|
|
131
|
+
resultId: result.id,
|
|
132
|
+
rule: { id: rule.id, version: rule.version },
|
|
133
|
+
scope: result.scope,
|
|
134
|
+
coverage: result.coverage,
|
|
135
|
+
...(result.period !== undefined && { period: result.period }),
|
|
136
|
+
evidence: { ...common, value: fact.value, provenance: `result ${result.id}` },
|
|
137
|
+
claim: { ...common, value: claim.value, provenance: `rule ${rule.id}` },
|
|
138
|
+
}, BINDING_LIMITS.resultBytes, true);
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
return unverified('invalid-evidence');
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=bindEvidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bindEvidence.js","sourceRoot":"","sources":["../../../../src/integrity/claim-binding/bindEvidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { CapturedDispatch, EvidenceSnapshot, ResultEvidence, ResultIdentity, ReturnedEvidence, ScopeDeclaration } from './types.js';
|
|
2
|
+
export declare function resultIdentityOf(identity: ResultIdentity): string;
|
|
3
|
+
/** Decode only canonical runtime result occurrences; no lookup or authority is inferred. */
|
|
4
|
+
export declare function readResultIdentity(raw: unknown): ResultIdentity;
|
|
5
|
+
/** Capture selected scope now; a later mutation of args cannot change it. */
|
|
6
|
+
export declare function captureDispatch(identity: ResultIdentity, tool: {
|
|
7
|
+
readonly toolName: string;
|
|
8
|
+
readonly toolCallId: string;
|
|
9
|
+
readonly iteration: number;
|
|
10
|
+
}, executedArgs: unknown, declaration: ScopeDeclaration): CapturedDispatch;
|
|
11
|
+
/** Preserve the returned reading before any async result rule can mutate it. */
|
|
12
|
+
export declare function captureReturnedEvidence(dispatch: CapturedDispatch, original: unknown): ReturnedEvidence;
|
|
13
|
+
/**
|
|
14
|
+
* returned is the return-time copy from that invocation. served is
|
|
15
|
+
* the final model-facing payload AFTER all governance, placement and caps.
|
|
16
|
+
* Visibility is a trusted adapter decision; equality alone grants no access.
|
|
17
|
+
* Rewrites need a future explicit association, and are unavailable here.
|
|
18
|
+
*/
|
|
19
|
+
export declare function finalizeEvidence(dispatch: CapturedDispatch, returned: ReturnedEvidence, served: unknown, access: {
|
|
20
|
+
readonly completed: boolean;
|
|
21
|
+
readonly resultVisible: boolean;
|
|
22
|
+
readonly scopeVisible: boolean;
|
|
23
|
+
}): ResultEvidence;
|
|
24
|
+
/** Freeze the caller's completed evidence universe at the declaration moment. */
|
|
25
|
+
export declare function evidenceSnapshot(namespace: string, verifiedRunIds: readonly string[], results: readonly ResultEvidence[]): EvidenceSnapshot;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal dispatch/return/delivery receipt boundary, not mounted in the Agent.
|
|
3
|
+
* The eventual runtime adapter reserves a namespace/run/ordinal before await,
|
|
4
|
+
* captures at actual execute, then finalizes against the authorized served value.
|
|
5
|
+
*/
|
|
6
|
+
import { decodePresentIdentityField, encodeIdentityField } from '../../memory/identity/encode.js';
|
|
7
|
+
import { copyJson } from '../../lib/boundedJson.js';
|
|
8
|
+
import { canonicalJson } from '../../lib/canonicalJson.js';
|
|
9
|
+
import { readSemantics, semanticsForModel, coverageOfSemantics, periodOfSemantics, } from '../../lib/semantics/envelope.js';
|
|
10
|
+
import { claimRowsOf } from '../unsupported-claim/ledger.js';
|
|
11
|
+
import { BINDING_LIMITS, boundedText, executedScope, scopeDeclarationOf } from './scope.js';
|
|
12
|
+
export function resultIdentityOf(identity) {
|
|
13
|
+
if (!boundedText(identity.namespace) ||
|
|
14
|
+
!boundedText(identity.runId) ||
|
|
15
|
+
!Number.isSafeInteger(identity.ordinal) ||
|
|
16
|
+
identity.ordinal < 1)
|
|
17
|
+
throw new Error('Invalid runtime result identity.');
|
|
18
|
+
return `claim-result/${encodeIdentityField(identity.namespace)}/${encodeIdentityField(identity.runId)}/${identity.ordinal}`;
|
|
19
|
+
}
|
|
20
|
+
/** Decode only canonical runtime result occurrences; no lookup or authority is inferred. */
|
|
21
|
+
export function readResultIdentity(raw) {
|
|
22
|
+
if (typeof raw !== 'string' || raw.length > BINDING_LIMITS.resultIdText)
|
|
23
|
+
throw new TypeError('Invalid saved result identity.');
|
|
24
|
+
const parts = raw.split('/');
|
|
25
|
+
if (parts.length !== 4 || parts[0] !== 'claim-result')
|
|
26
|
+
throw new TypeError('Invalid saved result identity.');
|
|
27
|
+
const identity = Object.freeze({
|
|
28
|
+
namespace: decodePresentIdentityField(parts[1]),
|
|
29
|
+
runId: decodePresentIdentityField(parts[2]),
|
|
30
|
+
ordinal: Number(parts[3]),
|
|
31
|
+
});
|
|
32
|
+
if (resultIdentityOf(identity) !== raw)
|
|
33
|
+
throw new TypeError('Noncanonical saved result identity.');
|
|
34
|
+
return identity;
|
|
35
|
+
}
|
|
36
|
+
/** Capture selected scope now; a later mutation of args cannot change it. */
|
|
37
|
+
export function captureDispatch(identity, tool, executedArgs, declaration) {
|
|
38
|
+
declaration = scopeDeclarationOf(declaration);
|
|
39
|
+
const id = resultIdentityOf(identity);
|
|
40
|
+
if (!boundedText(tool.toolName) ||
|
|
41
|
+
!boundedText(tool.toolCallId) ||
|
|
42
|
+
!Number.isSafeInteger(tool.iteration) ||
|
|
43
|
+
tool.iteration < 0)
|
|
44
|
+
throw new Error('Invalid tool identity.');
|
|
45
|
+
const common = {
|
|
46
|
+
identity: { ...identity },
|
|
47
|
+
id,
|
|
48
|
+
toolName: tool.toolName,
|
|
49
|
+
toolCallId: tool.toolCallId,
|
|
50
|
+
iteration: tool.iteration,
|
|
51
|
+
scopeDeclaration: { id: declaration.id, version: declaration.version },
|
|
52
|
+
...(declaration.periodDimension !== undefined && {
|
|
53
|
+
periodDimension: declaration.periodDimension,
|
|
54
|
+
}),
|
|
55
|
+
};
|
|
56
|
+
try {
|
|
57
|
+
return copyJson({ ...common, scope: executedScope(executedArgs, declaration) }, BINDING_LIMITS.scopeBytes * 2, true);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return copyJson({ ...common, unavailable: 'missing-scope' }, BINDING_LIMITS.scopeBytes * 2, true);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/** Preserve the returned reading before any async result rule can mutate it. */
|
|
64
|
+
export function captureReturnedEvidence(dispatch, original) {
|
|
65
|
+
try {
|
|
66
|
+
const semantics = readSemantics(copyJson(original, BINDING_LIMITS.resultBytes, true));
|
|
67
|
+
if (semantics === undefined)
|
|
68
|
+
throw new Error('No recognized evidence.');
|
|
69
|
+
return Object.freeze({ resultId: dispatch.id, semantics });
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return Object.freeze({ resultId: dispatch.id, unavailable: 'invalid-evidence' });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* returned is the return-time copy from that invocation. served is
|
|
77
|
+
* the final model-facing payload AFTER all governance, placement and caps.
|
|
78
|
+
* Visibility is a trusted adapter decision; equality alone grants no access.
|
|
79
|
+
* Rewrites need a future explicit association, and are unavailable here.
|
|
80
|
+
*/
|
|
81
|
+
export function finalizeEvidence(dispatch, returned, served, access) {
|
|
82
|
+
const unavailable = (reason) => copyJson({
|
|
83
|
+
identity: dispatch.identity,
|
|
84
|
+
id: dispatch.id,
|
|
85
|
+
toolName: dispatch.toolName,
|
|
86
|
+
toolCallId: dispatch.toolCallId,
|
|
87
|
+
iteration: dispatch.iteration,
|
|
88
|
+
scopeDeclaration: dispatch.scopeDeclaration,
|
|
89
|
+
unavailable: reason,
|
|
90
|
+
}, BINDING_LIMITS.scopeBytes * 2, true);
|
|
91
|
+
if (dispatch.id !== resultIdentityOf(dispatch.identity))
|
|
92
|
+
return unavailable('invalid-evidence');
|
|
93
|
+
if (access.completed !== true)
|
|
94
|
+
return unavailable('incomplete-result');
|
|
95
|
+
if (access.resultVisible !== true || access.scopeVisible !== true)
|
|
96
|
+
return unavailable('withheld-evidence');
|
|
97
|
+
if (dispatch.unavailable !== undefined)
|
|
98
|
+
return unavailable(dispatch.unavailable);
|
|
99
|
+
if (returned.resultId !== dispatch.id)
|
|
100
|
+
return unavailable('unassociated-result');
|
|
101
|
+
if (returned.unavailable !== undefined)
|
|
102
|
+
return unavailable(returned.unavailable);
|
|
103
|
+
try {
|
|
104
|
+
const raw = copyJson(returned.semantics, BINDING_LIMITS.resultBytes, true);
|
|
105
|
+
const semantics = readSemantics(raw);
|
|
106
|
+
if (semantics === undefined)
|
|
107
|
+
return unavailable('invalid-evidence');
|
|
108
|
+
const model = typeof served === 'string'
|
|
109
|
+
? JSON.parse(served.length <= BINDING_LIMITS.resultBytes ? served : '')
|
|
110
|
+
: served;
|
|
111
|
+
const allowed = copyJson(model, BINDING_LIMITS.resultBytes, true);
|
|
112
|
+
const projection = copyJson(semanticsForModel(semantics), BINDING_LIMITS.resultBytes, true);
|
|
113
|
+
if (canonicalJson(allowed) !== canonicalJson(projection))
|
|
114
|
+
return unavailable('unassociated-result');
|
|
115
|
+
const period = periodOfSemantics(semantics);
|
|
116
|
+
return copyJson({
|
|
117
|
+
...dispatch,
|
|
118
|
+
facts: claimRowsOf(semantics, {
|
|
119
|
+
toolName: dispatch.toolName,
|
|
120
|
+
toolCallId: dispatch.toolCallId,
|
|
121
|
+
iteration: dispatch.iteration,
|
|
122
|
+
}),
|
|
123
|
+
...((semantics.coverage !== undefined || period !== undefined) && {
|
|
124
|
+
coverage: coverageOfSemantics(semantics),
|
|
125
|
+
}),
|
|
126
|
+
...(period !== undefined && { period }),
|
|
127
|
+
}, BINDING_LIMITS.resultBytes, true);
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
return unavailable('invalid-evidence');
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/** Freeze the caller's completed evidence universe at the declaration moment. */
|
|
134
|
+
export function evidenceSnapshot(namespace, verifiedRunIds, results) {
|
|
135
|
+
if (!boundedText(namespace) ||
|
|
136
|
+
verifiedRunIds.length > BINDING_LIMITS.results ||
|
|
137
|
+
!verifiedRunIds.every(boundedText) ||
|
|
138
|
+
new Set(verifiedRunIds).size !== verifiedRunIds.length ||
|
|
139
|
+
results.length > BINDING_LIMITS.results)
|
|
140
|
+
throw new Error('Invalid evidence snapshot boundary.');
|
|
141
|
+
return copyJson({ version: 1, namespace, runIds: verifiedRunIds, results }, BINDING_LIMITS.snapshotBytes, true);
|
|
142
|
+
}
|
|
143
|
+
//# 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,23 @@
|
|
|
1
|
+
import type { DeclaredPeriod } from '../../core/agent/coverage/period.js';
|
|
2
|
+
import type { ScopeDeclaration } from './types.js';
|
|
3
|
+
export declare const BINDING_LIMITS: Readonly<{
|
|
4
|
+
text: 512;
|
|
5
|
+
resultIdText: 3104;
|
|
6
|
+
dimensions: 16;
|
|
7
|
+
path: 16;
|
|
8
|
+
scopeBytes: 8192;
|
|
9
|
+
resultBytes: number;
|
|
10
|
+
snapshotBytes: number;
|
|
11
|
+
results: 256;
|
|
12
|
+
}>;
|
|
13
|
+
export declare function boundedText(value: unknown): value is string;
|
|
14
|
+
export declare function boundedResultId(value: unknown): value is string;
|
|
15
|
+
/** Shallow descriptor-only admission for authored arrays containing callbacks. */
|
|
16
|
+
export declare function ownConfigArray(value: unknown, maximum: number): readonly unknown[];
|
|
17
|
+
/** Inspect authored configuration without evaluating getters or inherited fields. */
|
|
18
|
+
export declare function scopeDeclarationOf(raw: unknown): ScopeDeclaration;
|
|
19
|
+
export declare function executedScope(args: unknown, declaration: ScopeDeclaration): Readonly<Record<string, unknown>>;
|
|
20
|
+
/** Exact declared dimensions; no inferred subset, defaults or currency conversion. */
|
|
21
|
+
export declare function scopesMatch(evidence: Readonly<Record<string, unknown>>, intended: unknown): boolean;
|
|
22
|
+
/** The existing period/instant owners decide validity and temporal equivalence. */
|
|
23
|
+
export declare function queriedPeriodMatches(scopeValue: unknown, period: DeclaredPeriod): boolean;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/** Authored scope projection over the arguments actually delivered to execute. */
|
|
2
|
+
import { copyJson, ownData } from '../../lib/boundedJson.js';
|
|
3
|
+
import { canonicalJson } from '../../lib/canonicalJson.js';
|
|
4
|
+
import { compareInstants, instantOf } from '../../core/time/instant.js';
|
|
5
|
+
import { periodProblem } from '../../core/agent/coverage/period.js';
|
|
6
|
+
export const BINDING_LIMITS = Object.freeze({
|
|
7
|
+
text: 512,
|
|
8
|
+
resultIdText: 3104,
|
|
9
|
+
dimensions: 16,
|
|
10
|
+
path: 16,
|
|
11
|
+
scopeBytes: 8192,
|
|
12
|
+
resultBytes: 256 * 1024,
|
|
13
|
+
snapshotBytes: 1024 * 1024,
|
|
14
|
+
results: 256,
|
|
15
|
+
});
|
|
16
|
+
export function boundedText(value) {
|
|
17
|
+
return typeof value === 'string' && value.trim() !== '' && value.length <= BINDING_LIMITS.text;
|
|
18
|
+
}
|
|
19
|
+
export function boundedResultId(value) {
|
|
20
|
+
return (typeof value === 'string' &&
|
|
21
|
+
value.startsWith('claim-result/') &&
|
|
22
|
+
value.length <= BINDING_LIMITS.resultIdText);
|
|
23
|
+
}
|
|
24
|
+
/** Shallow descriptor-only admission for authored arrays containing callbacks. */
|
|
25
|
+
export function ownConfigArray(value, maximum) {
|
|
26
|
+
if (!Array.isArray(value) || Object.getPrototypeOf(value) !== Array.prototype)
|
|
27
|
+
throw new Error('Expected a plain configuration array.');
|
|
28
|
+
const length = Object.getOwnPropertyDescriptor(value, 'length')?.value;
|
|
29
|
+
if (typeof length !== 'number' ||
|
|
30
|
+
!Number.isSafeInteger(length) ||
|
|
31
|
+
length > maximum ||
|
|
32
|
+
Reflect.ownKeys(value).length !== length + 1)
|
|
33
|
+
throw new Error('Invalid configuration array.');
|
|
34
|
+
const items = [];
|
|
35
|
+
for (let index = 0; index < length; index++) {
|
|
36
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, String(index));
|
|
37
|
+
if (!descriptor?.enumerable || !('value' in descriptor))
|
|
38
|
+
throw new Error('Expected dense configuration data.');
|
|
39
|
+
items.push(descriptor.value);
|
|
40
|
+
}
|
|
41
|
+
return Object.freeze(items);
|
|
42
|
+
}
|
|
43
|
+
/** Inspect authored configuration without evaluating getters or inherited fields. */
|
|
44
|
+
export function scopeDeclarationOf(raw) {
|
|
45
|
+
const source = ownData(raw, ['id', 'version', 'dimensions', 'periodDimension']);
|
|
46
|
+
const sourceDimensions = ownConfigArray(source.dimensions, BINDING_LIMITS.dimensions);
|
|
47
|
+
if (!boundedText(source.id) || !boundedText(source.version) || sourceDimensions.length === 0)
|
|
48
|
+
throw new Error('Invalid scope declaration.');
|
|
49
|
+
const names = new Set();
|
|
50
|
+
const dimensions = sourceDimensions.map((rawDimension) => {
|
|
51
|
+
const dimension = ownData(rawDimension, ['name', 'argumentPath', 'default', 'normalize']);
|
|
52
|
+
const path = copyJson(dimension.argumentPath, BINDING_LIMITS.scopeBytes, true);
|
|
53
|
+
if (!boundedText(dimension.name) ||
|
|
54
|
+
names.has(dimension.name) ||
|
|
55
|
+
!Array.isArray(path) ||
|
|
56
|
+
path.length === 0 ||
|
|
57
|
+
path.length > BINDING_LIMITS.path ||
|
|
58
|
+
!path.every(boundedText) ||
|
|
59
|
+
(Object.hasOwn(dimension, 'normalize') && typeof dimension.normalize !== 'function'))
|
|
60
|
+
throw new Error('Invalid scope dimension.');
|
|
61
|
+
names.add(dimension.name);
|
|
62
|
+
return Object.freeze({
|
|
63
|
+
name: dimension.name,
|
|
64
|
+
argumentPath: path,
|
|
65
|
+
...(Object.hasOwn(dimension, 'default') && {
|
|
66
|
+
default: copyJson(dimension.default, BINDING_LIMITS.scopeBytes, true),
|
|
67
|
+
}),
|
|
68
|
+
...(typeof dimension.normalize === 'function' && {
|
|
69
|
+
normalize: dimension.normalize,
|
|
70
|
+
}),
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
if (Object.hasOwn(source, 'periodDimension') &&
|
|
74
|
+
(!boundedText(source.periodDimension) || !names.has(source.periodDimension)))
|
|
75
|
+
throw new Error('Invalid period dimension.');
|
|
76
|
+
return Object.freeze({
|
|
77
|
+
id: source.id,
|
|
78
|
+
version: source.version,
|
|
79
|
+
dimensions: Object.freeze(dimensions),
|
|
80
|
+
...(typeof source.periodDimension === 'string' && { periodDimension: source.periodDimension }),
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
/** Own data properties only: inherited names and accessors supply no scope. */
|
|
84
|
+
function argumentAt(args, path) {
|
|
85
|
+
if (path.length === 0 || path.length > BINDING_LIMITS.path || !path.every(boundedText))
|
|
86
|
+
throw new Error('Invalid scope path.');
|
|
87
|
+
let cursor = args;
|
|
88
|
+
for (const key of path) {
|
|
89
|
+
if (cursor === null || typeof cursor !== 'object')
|
|
90
|
+
return undefined;
|
|
91
|
+
const descriptor = Object.getOwnPropertyDescriptor(cursor, key);
|
|
92
|
+
if (descriptor === undefined) {
|
|
93
|
+
if (key in cursor)
|
|
94
|
+
throw new Error('Inherited scope is not executed own-data.');
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
if (!descriptor.enumerable || !('value' in descriptor))
|
|
98
|
+
throw new Error('Scope requires own data.');
|
|
99
|
+
cursor = descriptor.value;
|
|
100
|
+
}
|
|
101
|
+
return cursor;
|
|
102
|
+
}
|
|
103
|
+
export function executedScope(args, declaration) {
|
|
104
|
+
declaration = scopeDeclarationOf(declaration);
|
|
105
|
+
const scope = {};
|
|
106
|
+
for (const dimension of declaration.dimensions) {
|
|
107
|
+
if (!boundedText(dimension.name) || Object.hasOwn(scope, dimension.name))
|
|
108
|
+
throw new Error('Invalid scope dimension.');
|
|
109
|
+
let value = argumentAt(args, dimension.argumentPath);
|
|
110
|
+
if (value === undefined && Object.hasOwn(dimension, 'default'))
|
|
111
|
+
value = dimension.default;
|
|
112
|
+
if (value === undefined)
|
|
113
|
+
throw new Error('Required scope is missing.');
|
|
114
|
+
// Detach BEFORE invoking an authored normalizer: it cannot mutate dispatch.
|
|
115
|
+
value = copyJson(value, BINDING_LIMITS.scopeBytes, true);
|
|
116
|
+
if (dimension.normalize !== undefined)
|
|
117
|
+
value = dimension.normalize(value);
|
|
118
|
+
Object.defineProperty(scope, dimension.name, {
|
|
119
|
+
value: copyJson(value, BINDING_LIMITS.scopeBytes, true),
|
|
120
|
+
enumerable: true,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
if (declaration.periodDimension !== undefined &&
|
|
124
|
+
!Object.hasOwn(scope, declaration.periodDimension))
|
|
125
|
+
throw new Error('The period dimension is missing.');
|
|
126
|
+
return copyJson(scope, BINDING_LIMITS.scopeBytes, true);
|
|
127
|
+
}
|
|
128
|
+
/** Exact declared dimensions; no inferred subset, defaults or currency conversion. */
|
|
129
|
+
export function scopesMatch(evidence, intended) {
|
|
130
|
+
const expected = ownData(copyJson(intended, BINDING_LIMITS.scopeBytes, true));
|
|
131
|
+
return canonicalJson(evidence) === canonicalJson(expected);
|
|
132
|
+
}
|
|
133
|
+
/** The existing period/instant owners decide validity and temporal equivalence. */
|
|
134
|
+
export function queriedPeriodMatches(scopeValue, period) {
|
|
135
|
+
const query = ownData(scopeValue, ['from', 'to']);
|
|
136
|
+
if (periodProblem({ queried: query, held: 'unknown' }, 'camel') !== undefined)
|
|
137
|
+
return false;
|
|
138
|
+
const from = instantOf(query.from, 'lenient');
|
|
139
|
+
const to = instantOf(query.to, 'lenient');
|
|
140
|
+
const actualFrom = instantOf(period.queried.from, 'lenient');
|
|
141
|
+
const actualTo = instantOf(period.queried.to, 'lenient');
|
|
142
|
+
return (from !== undefined &&
|
|
143
|
+
to !== undefined &&
|
|
144
|
+
actualFrom !== undefined &&
|
|
145
|
+
actualTo !== undefined &&
|
|
146
|
+
compareInstants(from, actualFrom) === 0 &&
|
|
147
|
+
compareInstants(to, actualTo) === 0);
|
|
148
|
+
}
|
|
149
|
+
//# 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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"}
|