agentfootprint 9.25.0 → 9.26.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/AGENTS.md +1 -1
- package/CLAUDE.md +7 -1
- package/ai-instructions/claude-code/SKILL.md +1 -1
- package/dist/adapters/code/local.js +102 -2
- package/dist/adapters/code/local.js.map +1 -1
- package/dist/adapters/hosting/agentcore.js +11 -0
- package/dist/adapters/hosting/agentcore.js.map +1 -1
- package/dist/adapters/identity/jwks.js +277 -0
- package/dist/adapters/identity/jwks.js.map +1 -0
- package/dist/adapters/types.js +18 -1
- package/dist/adapters/types.js.map +1 -1
- package/dist/artifacts/index.js +6 -1
- package/dist/artifacts/index.js.map +1 -1
- package/dist/artifacts/recordingArtifact.js +88 -0
- package/dist/artifacts/recordingArtifact.js.map +1 -0
- package/dist/core/Agent.js +176 -0
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/agent/repeatedCall.js +190 -0
- package/dist/core/agent/repeatedCall.js.map +1 -0
- package/dist/core/agent/stages/toolCalls.js +50 -0
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/core/codeRunnerTool.js +149 -12
- package/dist/core/codeRunnerTool.js.map +1 -1
- package/dist/esm/adapters/code/local.d.ts +16 -0
- package/dist/esm/adapters/code/local.js +102 -2
- package/dist/esm/adapters/code/local.js.map +1 -1
- package/dist/esm/adapters/hosting/agentcore.js +11 -0
- package/dist/esm/adapters/hosting/agentcore.js.map +1 -1
- package/dist/esm/adapters/identity/jwks.d.ts +124 -0
- package/dist/esm/adapters/identity/jwks.js +249 -0
- package/dist/esm/adapters/identity/jwks.js.map +1 -0
- package/dist/esm/adapters/types.d.ts +86 -0
- package/dist/esm/adapters/types.js +16 -0
- package/dist/esm/adapters/types.js.map +1 -1
- package/dist/esm/artifacts/index.d.ts +1 -0
- package/dist/esm/artifacts/index.js +1 -0
- package/dist/esm/artifacts/index.js.map +1 -1
- package/dist/esm/artifacts/recordingArtifact.d.ts +76 -0
- package/dist/esm/artifacts/recordingArtifact.js +83 -0
- package/dist/esm/artifacts/recordingArtifact.js.map +1 -0
- package/dist/esm/core/Agent.d.ts +66 -2
- package/dist/esm/core/Agent.js +176 -0
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/agent/repeatedCall.d.ts +150 -0
- package/dist/esm/core/agent/repeatedCall.js +184 -0
- package/dist/esm/core/agent/repeatedCall.js.map +1 -0
- package/dist/esm/core/agent/stages/toolCalls.d.ts +12 -0
- package/dist/esm/core/agent/stages/toolCalls.js +50 -0
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/agent/types.d.ts +82 -0
- package/dist/esm/core/codeRunnerTool.d.ts +31 -0
- package/dist/esm/core/codeRunnerTool.js +149 -12
- package/dist/esm/core/codeRunnerTool.js.map +1 -1
- package/dist/esm/events/payloads.d.ts +22 -0
- package/dist/esm/events/registry.d.ts +3 -1
- package/dist/esm/events/registry.js +2 -0
- package/dist/esm/events/registry.js.map +1 -1
- package/dist/esm/hosting/admission.d.ts +180 -0
- package/dist/esm/hosting/admission.js +188 -0
- package/dist/esm/hosting/admission.js.map +1 -0
- package/dist/esm/hosting/artifactWire.d.ts +8 -5
- package/dist/esm/hosting/artifactWire.js +14 -9
- package/dist/esm/hosting/artifactWire.js.map +1 -1
- package/dist/esm/hosting/envelope.d.ts +34 -0
- package/dist/esm/hosting/envelope.js +81 -0
- package/dist/esm/hosting/envelope.js.map +1 -1
- package/dist/esm/hosting/errors.d.ts +131 -0
- package/dist/esm/hosting/errors.js +195 -0
- package/dist/esm/hosting/errors.js.map +1 -1
- package/dist/esm/hosting/httpHost.d.ts +21 -0
- package/dist/esm/hosting/httpHost.js +44 -2
- package/dist/esm/hosting/httpHost.js.map +1 -1
- package/dist/esm/hosting/identityVerification.d.ts +154 -0
- package/dist/esm/hosting/identityVerification.js +135 -0
- package/dist/esm/hosting/identityVerification.js.map +1 -0
- package/dist/esm/hosting/index.d.ts +12 -3
- package/dist/esm/hosting/index.js +16 -2
- package/dist/esm/hosting/index.js.map +1 -1
- package/dist/esm/hosting/memorySessions.d.ts +9 -0
- package/dist/esm/hosting/memorySessions.js +86 -0
- package/dist/esm/hosting/memorySessions.js.map +1 -1
- package/dist/esm/hosting/nodeHost.js +8 -0
- package/dist/esm/hosting/nodeHost.js.map +1 -1
- package/dist/esm/hosting/sessionWire.d.ts +126 -0
- package/dist/esm/hosting/sessionWire.js +95 -0
- package/dist/esm/hosting/sessionWire.js.map +1 -0
- package/dist/esm/hosting/sqliteSessions.js +122 -5
- package/dist/esm/hosting/sqliteSessions.js.map +1 -1
- package/dist/esm/hosting/standingAgent.js +299 -8
- package/dist/esm/hosting/standingAgent.js.map +1 -1
- package/dist/esm/hosting/types.d.ts +166 -6
- package/dist/esm/hosting/types.js.map +1 -1
- package/dist/esm/hosting/wireOps.d.ts +52 -0
- package/dist/esm/hosting/wireOps.js +60 -0
- package/dist/esm/hosting/wireOps.js.map +1 -0
- package/dist/esm/identity.d.ts +1 -0
- package/dist/esm/identity.js +6 -0
- package/dist/esm/identity.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +5 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/events/registry.js +2 -0
- package/dist/events/registry.js.map +1 -1
- package/dist/hosting/admission.js +194 -0
- package/dist/hosting/admission.js.map +1 -0
- package/dist/hosting/artifactWire.js +14 -9
- package/dist/hosting/artifactWire.js.map +1 -1
- package/dist/hosting/envelope.js +84 -1
- package/dist/hosting/envelope.js.map +1 -1
- package/dist/hosting/errors.js +203 -1
- package/dist/hosting/errors.js.map +1 -1
- package/dist/hosting/httpHost.js +43 -1
- package/dist/hosting/httpHost.js.map +1 -1
- package/dist/hosting/identityVerification.js +140 -0
- package/dist/hosting/identityVerification.js.map +1 -0
- package/dist/hosting/index.js +38 -1
- package/dist/hosting/index.js.map +1 -1
- package/dist/hosting/memorySessions.js +86 -0
- package/dist/hosting/memorySessions.js.map +1 -1
- package/dist/hosting/nodeHost.js +8 -0
- package/dist/hosting/nodeHost.js.map +1 -1
- package/dist/hosting/sessionWire.js +100 -0
- package/dist/hosting/sessionWire.js.map +1 -0
- package/dist/hosting/sqliteSessions.js +121 -4
- package/dist/hosting/sqliteSessions.js.map +1 -1
- package/dist/hosting/standingAgent.js +297 -6
- package/dist/hosting/standingAgent.js.map +1 -1
- package/dist/hosting/types.js.map +1 -1
- package/dist/hosting/wireOps.js +65 -0
- package/dist/hosting/wireOps.js.map +1 -0
- package/dist/identity.js +9 -1
- package/dist/identity.js.map +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/types/adapters/code/local.d.ts +16 -0
- package/dist/types/adapters/code/local.d.ts.map +1 -1
- package/dist/types/adapters/hosting/agentcore.d.ts.map +1 -1
- package/dist/types/adapters/identity/jwks.d.ts +125 -0
- package/dist/types/adapters/identity/jwks.d.ts.map +1 -0
- package/dist/types/adapters/types.d.ts +86 -0
- package/dist/types/adapters/types.d.ts.map +1 -1
- package/dist/types/artifacts/index.d.ts +1 -0
- package/dist/types/artifacts/index.d.ts.map +1 -1
- package/dist/types/artifacts/recordingArtifact.d.ts +77 -0
- package/dist/types/artifacts/recordingArtifact.d.ts.map +1 -0
- package/dist/types/core/Agent.d.ts +66 -2
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/agent/repeatedCall.d.ts +151 -0
- package/dist/types/core/agent/repeatedCall.d.ts.map +1 -0
- package/dist/types/core/agent/stages/toolCalls.d.ts +12 -0
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/core/agent/types.d.ts +82 -0
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/core/codeRunnerTool.d.ts +31 -0
- package/dist/types/core/codeRunnerTool.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +22 -0
- package/dist/types/events/payloads.d.ts.map +1 -1
- package/dist/types/events/registry.d.ts +3 -1
- package/dist/types/events/registry.d.ts.map +1 -1
- package/dist/types/hosting/admission.d.ts +181 -0
- package/dist/types/hosting/admission.d.ts.map +1 -0
- package/dist/types/hosting/artifactWire.d.ts +8 -5
- package/dist/types/hosting/artifactWire.d.ts.map +1 -1
- package/dist/types/hosting/envelope.d.ts +34 -0
- package/dist/types/hosting/envelope.d.ts.map +1 -1
- package/dist/types/hosting/errors.d.ts +131 -0
- package/dist/types/hosting/errors.d.ts.map +1 -1
- package/dist/types/hosting/httpHost.d.ts +21 -0
- package/dist/types/hosting/httpHost.d.ts.map +1 -1
- package/dist/types/hosting/identityVerification.d.ts +155 -0
- package/dist/types/hosting/identityVerification.d.ts.map +1 -0
- package/dist/types/hosting/index.d.ts +12 -3
- package/dist/types/hosting/index.d.ts.map +1 -1
- package/dist/types/hosting/memorySessions.d.ts +9 -0
- package/dist/types/hosting/memorySessions.d.ts.map +1 -1
- package/dist/types/hosting/nodeHost.d.ts.map +1 -1
- package/dist/types/hosting/sessionWire.d.ts +127 -0
- package/dist/types/hosting/sessionWire.d.ts.map +1 -0
- package/dist/types/hosting/sqliteSessions.d.ts.map +1 -1
- package/dist/types/hosting/standingAgent.d.ts.map +1 -1
- package/dist/types/hosting/types.d.ts +166 -6
- package/dist/types/hosting/types.d.ts.map +1 -1
- package/dist/types/hosting/wireOps.d.ts +53 -0
- package/dist/types/hosting/wireOps.d.ts.map +1 -0
- package/dist/types/identity.d.ts +1 -0
- package/dist/types/identity.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +6 -1
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* major bump. See agentfootprint_v2_detailed_design.md for rules.
|
|
17
17
|
*/
|
|
18
18
|
import type { AgentfootprintEventEnvelope } from './types.js';
|
|
19
|
-
import type { AgentHandoffPayload, AgentIterationEndPayload, AgentIterationStartPayload, AgentRouteDecidedPayload, AgentTurnEndPayload, AgentTurnStartPayload, CompositionEnterPayload, CompositionExitPayload, ConditionalRouteDecidedPayload, ContextBudgetPressurePayload, ContextEvaluatedPayload, ContextEvictedPayload, ContextInjectedPayload, ContextSlotComposedPayload, CostLimitHitPayload, CostTickPayload, EmbeddingGeneratedPayload, ErrorFatalPayload, ErrorRecoveredPayload, ErrorRetriedPayload, EvalScorePayload, EvalThresholdCrossedPayload, AgentOutputSchemaValidationFailedPayload, AgentOutputContractUnmetPayload, AgentOutputSchemaRetryPayload, AgentThinkingParseFailedPayload, StreamThinkingDeltaPayload, StreamThinkingEndPayload, FallbackTriggeredPayload, LLMEndPayload, LLMStartPayload, LLMTokenPayload, LoopIterationExitPayload, LoopIterationStartPayload, MemoryAttachedPayload, MemoryDetachedPayload, MemoryRetrievedPayload, MemoryStrategyAppliedPayload, MemoryWrittenPayload, ParallelBranchCompletePayload, ParallelForkStartPayload, ParallelMergeEndPayload, PauseRequestPayload, PauseResumePayload, CheckInRequestPayload, CheckInDecisionPayload, PermissionCheckPayload, PermissionGateClosedPayload, PermissionHaltPayload, PermissionGateOpenedPayload, CredentialRequestedPayload, CredentialAcquiredPayload, CredentialAuthorizationRequiredPayload, CredentialFailedPayload, ReliabilityFailFastPayload, ReliabilityRetriedPayload, ReliabilityRecoveredPayload, RiskFlaggedPayload, SkillActivatedPayload, SkillDeactivatedPayload, SkillEscalatedPayload, SkillRejectedPayload, SkillRerouteSupersededPayload, SkillRouteConflictPayload, SkillStepAdvancedPayload, SkillStepSkippedPayload, SkillStepsUnfinishedPayload, SkillTurnRoutedPayload, ToolEffectPayload, ToolResultRefusedPayload, ToolEndPayload, ToolsActivatedPayload, ToolsDeactivatedPayload, ToolsDiscoveryStartedPayload, ToolsDiscoveryCompletedPayload, ToolsDiscoveryFailedPayload, ToolsShadowedPayload, ToolsSessionStartedPayload, ToolsSessionReusedPayload, ToolsSessionClosedPayload, ToolsSessionCloseFailedPayload, ToolsOfferedPayload, ToolStartPayload, ValidationArgsInvalidPayload, MiddlewareDecisionPayload, ArtifactMintedPayload, ArtifactResolvedPayload, ArtifactExpiredPayload, ArtifactRefusedPayload, ArtifactPresentedPayload } from './payloads.js';
|
|
19
|
+
import type { AgentHandoffPayload, AgentIterationEndPayload, AgentIterationStartPayload, AgentRouteDecidedPayload, AgentTurnEndPayload, AgentTurnStartPayload, CompositionEnterPayload, CompositionExitPayload, ConditionalRouteDecidedPayload, ContextBudgetPressurePayload, ContextEvaluatedPayload, ContextEvictedPayload, ContextInjectedPayload, ContextSlotComposedPayload, CostLimitHitPayload, CostTickPayload, EmbeddingGeneratedPayload, ErrorFatalPayload, ErrorRecoveredPayload, ErrorRetriedPayload, EvalScorePayload, EvalThresholdCrossedPayload, AgentOutputSchemaValidationFailedPayload, AgentOutputContractUnmetPayload, AgentOutputSchemaRetryPayload, AgentThinkingParseFailedPayload, StreamThinkingDeltaPayload, StreamThinkingEndPayload, FallbackTriggeredPayload, LLMEndPayload, LLMStartPayload, LLMTokenPayload, LoopIterationExitPayload, LoopIterationStartPayload, MemoryAttachedPayload, MemoryDetachedPayload, MemoryRetrievedPayload, MemoryStrategyAppliedPayload, MemoryWrittenPayload, ParallelBranchCompletePayload, ParallelForkStartPayload, ParallelMergeEndPayload, PauseRequestPayload, PauseResumePayload, CheckInRequestPayload, CheckInDecisionPayload, PermissionCheckPayload, PermissionGateClosedPayload, PermissionHaltPayload, PermissionGateOpenedPayload, CredentialRequestedPayload, CredentialAcquiredPayload, CredentialAuthorizationRequiredPayload, CredentialFailedPayload, ReliabilityFailFastPayload, ReliabilityRetriedPayload, ReliabilityRecoveredPayload, RiskFlaggedPayload, SkillActivatedPayload, SkillDeactivatedPayload, SkillEscalatedPayload, SkillRejectedPayload, SkillRerouteSupersededPayload, SkillRouteConflictPayload, SkillStepAdvancedPayload, SkillStepSkippedPayload, SkillStepsUnfinishedPayload, SkillTurnRoutedPayload, ToolEffectPayload, ToolRepeatedCallPayload, ToolResultRefusedPayload, ToolEndPayload, ToolsActivatedPayload, ToolsDeactivatedPayload, ToolsDiscoveryStartedPayload, ToolsDiscoveryCompletedPayload, ToolsDiscoveryFailedPayload, ToolsShadowedPayload, ToolsSessionStartedPayload, ToolsSessionReusedPayload, ToolsSessionClosedPayload, ToolsSessionCloseFailedPayload, ToolsOfferedPayload, ToolStartPayload, ValidationArgsInvalidPayload, MiddlewareDecisionPayload, ArtifactMintedPayload, ArtifactResolvedPayload, ArtifactExpiredPayload, ArtifactRefusedPayload, ArtifactPresentedPayload } from './payloads.js';
|
|
20
20
|
export declare const EVENT_NAMES: {
|
|
21
21
|
readonly composition: {
|
|
22
22
|
readonly enter: "agentfootprint.composition.enter";
|
|
@@ -77,6 +77,7 @@ export declare const EVENT_NAMES: {
|
|
|
77
77
|
readonly sessionCloseFailed: "agentfootprint.tools.session_close_failed";
|
|
78
78
|
readonly effect: "agentfootprint.tools.effect";
|
|
79
79
|
readonly resultRefused: "agentfootprint.tools.result_refused";
|
|
80
|
+
readonly repeatedCall: "agentfootprint.tools.repeated_call";
|
|
80
81
|
};
|
|
81
82
|
readonly skill: {
|
|
82
83
|
readonly activated: "agentfootprint.skill.activated";
|
|
@@ -199,6 +200,7 @@ export interface AgentfootprintEventMap {
|
|
|
199
200
|
'agentfootprint.tools.session_closed': AgentfootprintEventEnvelope<'agentfootprint.tools.session_closed', ToolsSessionClosedPayload>;
|
|
200
201
|
'agentfootprint.tools.effect': AgentfootprintEventEnvelope<'agentfootprint.tools.effect', ToolEffectPayload>;
|
|
201
202
|
'agentfootprint.tools.result_refused': AgentfootprintEventEnvelope<'agentfootprint.tools.result_refused', ToolResultRefusedPayload>;
|
|
203
|
+
'agentfootprint.tools.repeated_call': AgentfootprintEventEnvelope<'agentfootprint.tools.repeated_call', ToolRepeatedCallPayload>;
|
|
202
204
|
'agentfootprint.tools.session_close_failed': AgentfootprintEventEnvelope<'agentfootprint.tools.session_close_failed', ToolsSessionCloseFailedPayload>;
|
|
203
205
|
'agentfootprint.skill.activated': AgentfootprintEventEnvelope<'agentfootprint.skill.activated', SkillActivatedPayload>;
|
|
204
206
|
'agentfootprint.skill.deactivated': AgentfootprintEventEnvelope<'agentfootprint.skill.deactivated', SkillDeactivatedPayload>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/events/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,8BAA8B,EAC9B,4BAA4B,EAC5B,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,EACnB,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,2BAA2B,EAC3B,wCAAwC,EACxC,+BAA+B,EAC/B,6BAA6B,EAC7B,+BAA+B,EAC/B,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,aAAa,EACb,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,4BAA4B,EAC5B,oBAAoB,EACpB,6BAA6B,EAC7B,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,EACzB,sCAAsC,EACtC,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,EAC3B,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,4BAA4B,EAC5B,8BAA8B,EAC9B,2BAA2B,EAC3B,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,EAC9B,mBAAmB,EACnB,gBAAgB,EAChB,4BAA4B,EAC5B,yBAAyB,EACzB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,eAAe,CAAC;AAKvB,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/events/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,8BAA8B,EAC9B,4BAA4B,EAC5B,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,EACnB,eAAe,EACf,yBAAyB,EACzB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,2BAA2B,EAC3B,wCAAwC,EACxC,+BAA+B,EAC/B,6BAA6B,EAC7B,+BAA+B,EAC/B,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,aAAa,EACb,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,4BAA4B,EAC5B,oBAAoB,EACpB,6BAA6B,EAC7B,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,EACzB,sCAAsC,EACtC,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,EAC3B,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,4BAA4B,EAC5B,8BAA8B,EAC9B,2BAA2B,EAC3B,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,EAC9B,mBAAmB,EACnB,gBAAgB,EAChB,4BAA4B,EAC5B,yBAAyB,EACzB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,eAAe,CAAC;AAKvB,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsId,CAAC;AAKX,MAAM,WAAW,sBAAsB;IAErC,kCAAkC,EAAE,2BAA2B,CAC7D,kCAAkC,EAClC,uBAAuB,CACxB,CAAC;IACF,iCAAiC,EAAE,2BAA2B,CAC5D,iCAAiC,EACjC,sBAAsB,CACvB,CAAC;IACF,uCAAuC,EAAE,2BAA2B,CAClE,uCAAuC,EACvC,wBAAwB,CACzB,CAAC;IACF,4CAA4C,EAAE,2BAA2B,CACvE,4CAA4C,EAC5C,6BAA6B,CAC9B,CAAC;IACF,sCAAsC,EAAE,2BAA2B,CACjE,sCAAsC,EACtC,uBAAuB,CACxB,CAAC;IACF,0CAA0C,EAAE,2BAA2B,CACrE,0CAA0C,EAC1C,8BAA8B,CAC/B,CAAC;IACF,4CAA4C,EAAE,2BAA2B,CACvE,4CAA4C,EAC5C,yBAAyB,CAC1B,CAAC;IACF,2CAA2C,EAAE,2BAA2B,CACtE,2CAA2C,EAC3C,wBAAwB,CACzB,CAAC;IAEF,iCAAiC,EAAE,2BAA2B,CAC5D,iCAAiC,EACjC,qBAAqB,CACtB,CAAC;IACF,+BAA+B,EAAE,2BAA2B,CAC1D,+BAA+B,EAC/B,mBAAmB,CACpB,CAAC;IACF,sCAAsC,EAAE,2BAA2B,CACjE,sCAAsC,EACtC,0BAA0B,CAC3B,CAAC;IACF,oCAAoC,EAAE,2BAA2B,CAC/D,oCAAoC,EACpC,wBAAwB,CACzB,CAAC;IACF,oCAAoC,EAAE,2BAA2B,CAC/D,oCAAoC,EACpC,wBAAwB,CACzB,CAAC;IACF,8BAA8B,EAAE,2BAA2B,CACzD,8BAA8B,EAC9B,mBAAmB,CACpB,CAAC;IACF,sDAAsD,EAAE,2BAA2B,CACjF,sDAAsD,EACtD,wCAAwC,CACzC,CAAC;IACF,4CAA4C,EAAE,2BAA2B,CACvE,4CAA4C,EAC5C,+BAA+B,CAChC,CAAC;IACF,0CAA0C,EAAE,2BAA2B,CACrE,0CAA0C,EAC1C,6BAA6B,CAC9B,CAAC;IACF,4CAA4C,EAAE,2BAA2B,CACvE,4CAA4C,EAC5C,+BAA+B,CAChC,CAAC;IAEF,iCAAiC,EAAE,2BAA2B,CAC5D,iCAAiC,EACjC,eAAe,CAChB,CAAC;IACF,+BAA+B,EAAE,2BAA2B,CAC1D,+BAA+B,EAC/B,aAAa,CACd,CAAC;IACF,6BAA6B,EAAE,2BAA2B,CACxD,6BAA6B,EAC7B,eAAe,CAChB,CAAC;IACF,kCAAkC,EAAE,2BAA2B,CAC7D,kCAAkC,EAClC,gBAAgB,CACjB,CAAC;IACF,gCAAgC,EAAE,2BAA2B,CAC3D,gCAAgC,EAChC,cAAc,CACf,CAAC;IACF,sCAAsC,EAAE,2BAA2B,CACjE,sCAAsC,EACtC,0BAA0B,CAC3B,CAAC;IACF,oCAAoC,EAAE,2BAA2B,CAC/D,oCAAoC,EACpC,wBAAwB,CACzB,CAAC;IAEF,iCAAiC,EAAE,2BAA2B,CAC5D,iCAAiC,EACjC,sBAAsB,CACvB,CAAC;IACF,gCAAgC,EAAE,2BAA2B,CAC3D,gCAAgC,EAChC,qBAAqB,CACtB,CAAC;IACF,sCAAsC,EAAE,2BAA2B,CACjE,sCAAsC,EACtC,0BAA0B,CAC3B,CAAC;IACF,wCAAwC,EAAE,2BAA2B,CACnE,wCAAwC,EACxC,4BAA4B,CAC7B,CAAC;IACF,kCAAkC,EAAE,2BAA2B,CAC7D,kCAAkC,EAClC,uBAAuB,CACxB,CAAC;IAEF,wCAAwC,EAAE,2BAA2B,CACnE,wCAAwC,EACxC,4BAA4B,CAC7B,CAAC;IACF,gCAAgC,EAAE,2BAA2B,CAC3D,gCAAgC,EAChC,qBAAqB,CACtB,CAAC;IACF,iCAAiC,EAAE,2BAA2B,CAC5D,iCAAiC,EACjC,sBAAsB,CACvB,CAAC;IACF,gCAAgC,EAAE,2BAA2B,CAC3D,gCAAgC,EAChC,qBAAqB,CACtB,CAAC;IACF,+BAA+B,EAAE,2BAA2B,CAC1D,+BAA+B,EAC/B,oBAAoB,CACrB,CAAC;IAEF,8BAA8B,EAAE,2BAA2B,CACzD,8BAA8B,EAC9B,mBAAmB,CACpB,CAAC;IACF,gCAAgC,EAAE,2BAA2B,CAC3D,gCAAgC,EAChC,qBAAqB,CACtB,CAAC;IACF,kCAAkC,EAAE,2BAA2B,CAC7D,kCAAkC,EAClC,uBAAuB,CACxB,CAAC;IACF,wCAAwC,EAAE,2BAA2B,CACnE,wCAAwC,EACxC,4BAA4B,CAC7B,CAAC;IACF,0CAA0C,EAAE,2BAA2B,CACrE,0CAA0C,EAC1C,8BAA8B,CAC/B,CAAC;IACF,uCAAuC,EAAE,2BAA2B,CAClE,uCAAuC,EACvC,2BAA2B,CAC5B,CAAC;IACF,+BAA+B,EAAE,2BAA2B,CAC1D,+BAA+B,EAC/B,oBAAoB,CACrB,CAAC;IACF,sCAAsC,EAAE,2BAA2B,CACjE,sCAAsC,EACtC,0BAA0B,CAC3B,CAAC;IACF,qCAAqC,EAAE,2BAA2B,CAChE,qCAAqC,EACrC,yBAAyB,CAC1B,CAAC;IACF,qCAAqC,EAAE,2BAA2B,CAChE,qCAAqC,EACrC,yBAAyB,CAC1B,CAAC;IACF,6BAA6B,EAAE,2BAA2B,CACxD,6BAA6B,EAC7B,iBAAiB,CAClB,CAAC;IACF,qCAAqC,EAAE,2BAA2B,CAChE,qCAAqC,EACrC,wBAAwB,CACzB,CAAC;IACF,oCAAoC,EAAE,2BAA2B,CAC/D,oCAAoC,EACpC,uBAAuB,CACxB,CAAC;IACF,2CAA2C,EAAE,2BAA2B,CACtE,2CAA2C,EAC3C,8BAA8B,CAC/B,CAAC;IAEF,gCAAgC,EAAE,2BAA2B,CAC3D,gCAAgC,EAChC,qBAAqB,CACtB,CAAC;IACF,kCAAkC,EAAE,2BAA2B,CAC7D,kCAAkC,EAClC,uBAAuB,CACxB,CAAC;IACF,+BAA+B,EAAE,2BAA2B,CAC1D,+BAA+B,EAC/B,oBAAoB,CACrB,CAAC;IACF,yCAAyC,EAAE,2BAA2B,CACpE,yCAAyC,EACzC,6BAA6B,CAC9B,CAAC;IACF,qCAAqC,EAAE,2BAA2B,CAChE,qCAAqC,EACrC,yBAAyB,CAC1B,CAAC;IACF,kCAAkC,EAAE,2BAA2B,CAC7D,kCAAkC,EAClC,sBAAsB,CACvB,CAAC;IACF,oCAAoC,EAAE,2BAA2B,CAC/D,oCAAoC,EACpC,wBAAwB,CACzB,CAAC;IACF,mCAAmC,EAAE,2BAA2B,CAC9D,mCAAmC,EACnC,uBAAuB,CACxB,CAAC;IACF,uCAAuC,EAAE,2BAA2B,CAClE,uCAAuC,EACvC,2BAA2B,CAC5B,CAAC;IACF,gCAAgC,EAAE,2BAA2B,CAC3D,gCAAgC,EAChC,qBAAqB,CACtB,CAAC;IAEF,wCAAwC,EAAE,2BAA2B,CACnE,wCAAwC,EACxC,4BAA4B,CAC7B,CAAC;IAEF,iCAAiC,EAAE,2BAA2B,CAC5D,iCAAiC,EACjC,sBAAsB,CACvB,CAAC;IACF,uCAAuC,EAAE,2BAA2B,CAClE,uCAAuC,EACvC,2BAA2B,CAC5B,CAAC;IACF,uCAAuC,EAAE,2BAA2B,CAClE,uCAAuC,EACvC,2BAA2B,CAC5B,CAAC;IACF,gCAAgC,EAAE,2BAA2B,CAC3D,gCAAgC,EAChC,qBAAqB,CACtB,CAAC;IAEF,qCAAqC,EAAE,2BAA2B,CAChE,qCAAqC,EACrC,0BAA0B,CAC3B,CAAC;IACF,oCAAoC,EAAE,2BAA2B,CAC/D,oCAAoC,EACpC,yBAAyB,CAC1B,CAAC;IACF,kDAAkD,EAAE,2BAA2B,CAC7E,kDAAkD,EAClD,sCAAsC,CACvC,CAAC;IACF,kCAAkC,EAAE,2BAA2B,CAC7D,kCAAkC,EAClC,uBAAuB,CACxB,CAAC;IAEF,6BAA6B,EAAE,2BAA2B,CACxD,6BAA6B,EAC7B,kBAAkB,CACnB,CAAC;IACF,mCAAmC,EAAE,2BAA2B,CAC9D,mCAAmC,EACnC,wBAAwB,CACzB,CAAC;IAEF,0BAA0B,EAAE,2BAA2B,CACrD,0BAA0B,EAC1B,eAAe,CAChB,CAAC;IACF,+BAA+B,EAAE,2BAA2B,CAC1D,+BAA+B,EAC/B,mBAAmB,CACpB,CAAC;IAEF,2BAA2B,EAAE,2BAA2B,CACtD,2BAA2B,EAC3B,gBAAgB,CACjB,CAAC;IACF,uCAAuC,EAAE,2BAA2B,CAClE,uCAAuC,EACvC,2BAA2B,CAC5B,CAAC;IAEF,8BAA8B,EAAE,2BAA2B,CACzD,8BAA8B,EAC9B,mBAAmB,CACpB,CAAC;IACF,gCAAgC,EAAE,2BAA2B,CAC3D,gCAAgC,EAChC,qBAAqB,CACtB,CAAC;IACF,4BAA4B,EAAE,2BAA2B,CACvD,4BAA4B,EAC5B,iBAAiB,CAClB,CAAC;IAEF,sCAAsC,EAAE,2BAA2B,CACjE,sCAAsC,EACtC,0BAA0B,CAC3B,CAAC;IACF,oCAAoC,EAAE,2BAA2B,CAC/D,oCAAoC,EACpC,yBAAyB,CAC1B,CAAC;IACF,sCAAsC,EAAE,2BAA2B,CACjE,sCAAsC,EACtC,2BAA2B,CAC5B,CAAC;IAEF,8BAA8B,EAAE,2BAA2B,CACzD,8BAA8B,EAC9B,mBAAmB,CACpB,CAAC;IACF,6BAA6B,EAAE,2BAA2B,CACxD,6BAA6B,EAC7B,kBAAkB,CACnB,CAAC;IAEF,gCAAgC,EAAE,2BAA2B,CAC3D,gCAAgC,EAChC,qBAAqB,CACtB,CAAC;IACF,iCAAiC,EAAE,2BAA2B,CAC5D,iCAAiC,EACjC,sBAAsB,CACvB,CAAC;IAEF,oCAAoC,EAAE,2BAA2B,CAC/D,oCAAoC,EACpC,yBAAyB,CAC1B,CAAC;IAEF,oCAAoC,EAAE,2BAA2B,CAC/D,oCAAoC,EACpC,yBAAyB,CAC1B,CAAC;IAEF,iCAAiC,EAAE,2BAA2B,CAC5D,iCAAiC,EACjC,qBAAqB,CACtB,CAAC;IACF,mCAAmC,EAAE,2BAA2B,CAC9D,mCAAmC,EACnC,uBAAuB,CACxB,CAAC;IACF,kCAAkC,EAAE,2BAA2B,CAC7D,kCAAkC,EAClC,sBAAsB,CACvB,CAAC;IACF,kCAAkC,EAAE,2BAA2B,CAC7D,kCAAkC,EAClC,sBAAsB,CACvB,CAAC;IACF,oCAAoC,EAAE,2BAA2B,CAC/D,oCAAoC,EACpC,wBAAwB,CACzB,CAAC;CACH;AAED,8EAA8E;AAC9E,MAAM,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,MAAM,sBAAsB,CAAC,CAAC;AAEvF,yEAAyE;AACzE,MAAM,MAAM,uBAAuB,GAAG,MAAM,sBAAsB,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,uBAAuB,EA4FpD,CAAC"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* hosting/admission — decide whether a request runs, before it costs anything.
|
|
3
|
+
*
|
|
4
|
+
* A standing agent's cheapest refusal is the one made before the first model
|
|
5
|
+
* call. Everything else the composer does about load is about ORDER —
|
|
6
|
+
* `onConcurrentInvoke` decides whether a session's second turn waits or is
|
|
7
|
+
* refused, the pool decides which instance answers — and none of it can say
|
|
8
|
+
* "this person has had twenty turns in the last hour and that is enough".
|
|
9
|
+
*
|
|
10
|
+
* That question needs two things the composer already has and never joined: WHO
|
|
11
|
+
* is asking (verified, since 9.26) and what that person has spent (the token
|
|
12
|
+
* and cost events every run already emits). This module is the join, plus the
|
|
13
|
+
* seam where an operator's own rule goes.
|
|
14
|
+
*
|
|
15
|
+
* ── One decision, three answers, no fourth ───────────────────────────────────
|
|
16
|
+
* `'allow'` · `{ queue: true }` · `{ refuse: '<sentence>' }`. Deliberately not
|
|
17
|
+
* "delay by N ms" (a sleep is a thread the caller is paying for), not "degrade
|
|
18
|
+
* to a cheaper model" (that is the run's business, and silently answering from
|
|
19
|
+
* a different brain is the accepted-and-silently-wrong failure), and not a
|
|
20
|
+
* numeric priority (a priority means a scheduler, and this is a door).
|
|
21
|
+
*
|
|
22
|
+
* ── The refusal is the operator's sentence, and that is deliberate ───────────
|
|
23
|
+
* The policy WRITES the words. A limit and its reset are facts only the
|
|
24
|
+
* operator has, and a library-authored "rate limit exceeded" is a support
|
|
25
|
+
* ticket rather than something a caller can act on. `turnsPerHour` shows the
|
|
26
|
+
* shape: name the limit, name when it resets, name what to do.
|
|
27
|
+
*
|
|
28
|
+
* ── What "spend" honestly means here ─────────────────────────────────────────
|
|
29
|
+
* PER PROCESS. This ledger counts what THIS process served, in a rolling
|
|
30
|
+
* window, in memory. Two replicas keep two windows; a restart forgets. That is
|
|
31
|
+
* not a defect to be apologised for — it is what an in-process accountant can
|
|
32
|
+
* truthfully claim — and it is stated on {@link RecentSpend} so nobody builds a
|
|
33
|
+
* billing control on it by accident. A deployment that needs one number across
|
|
34
|
+
* a fleet writes a `decide` that reads its own store; the seam is the same.
|
|
35
|
+
*/
|
|
36
|
+
import type { VerifiedIdentity } from './identityVerification.js';
|
|
37
|
+
/**
|
|
38
|
+
* What one caller has spent inside the rolling window, as THIS PROCESS saw it.
|
|
39
|
+
*
|
|
40
|
+
* Every field is a measurement, never an estimate — with one stated exception
|
|
41
|
+
* noted on `usd`. A number this ledger cannot know is absent rather than zero:
|
|
42
|
+
* zero is a claim, and "we did not measure that" is a different fact.
|
|
43
|
+
*/
|
|
44
|
+
export interface RecentSpend {
|
|
45
|
+
/** Turns admitted for this caller inside the window. */
|
|
46
|
+
readonly turns: number;
|
|
47
|
+
/** Prompt tokens billed to this caller's runs, summed from `stream.llm_end`. */
|
|
48
|
+
readonly inputTokens: number;
|
|
49
|
+
/** Completion tokens, from the same source. */
|
|
50
|
+
readonly outputTokens: number;
|
|
51
|
+
/**
|
|
52
|
+
* Estimated USD, summed from `cost.tick`.
|
|
53
|
+
*
|
|
54
|
+
* **Absent unless a `pricingTable` is configured on the agent** — money is
|
|
55
|
+
* something only a pricing table can turn tokens into, and a zero here would
|
|
56
|
+
* read as "this caller has spent nothing" when the truth is "nobody is
|
|
57
|
+
* counting". Estimated, because the pricing table is a local table and the
|
|
58
|
+
* invoice is the vendor's.
|
|
59
|
+
*/
|
|
60
|
+
readonly usd?: number;
|
|
61
|
+
/** How far back this window looks, in milliseconds. */
|
|
62
|
+
readonly windowMs: number;
|
|
63
|
+
/**
|
|
64
|
+
* Whether the window is complete for this caller — `false` when the process
|
|
65
|
+
* has been up for LESS than `windowMs`, so the numbers cover a shorter
|
|
66
|
+
* period than they claim to.
|
|
67
|
+
*
|
|
68
|
+
* A policy that refuses on a partial window refuses on less evidence than it
|
|
69
|
+
* thinks it has; one that ignores this is choosing to, which is fine, but it
|
|
70
|
+
* should be a choice.
|
|
71
|
+
*/
|
|
72
|
+
readonly complete: boolean;
|
|
73
|
+
}
|
|
74
|
+
/** What an admission decision is handed. */
|
|
75
|
+
export interface AdmissionContext {
|
|
76
|
+
/**
|
|
77
|
+
* WHO is asking, when the door verified anybody. `undefined` for an
|
|
78
|
+
* anonymous request and for a door with no verifier — never a claimed-but-
|
|
79
|
+
* unproven user, because a policy that budgeted an unverified name would
|
|
80
|
+
* budget whatever name the next request invented.
|
|
81
|
+
*/
|
|
82
|
+
readonly identity?: VerifiedIdentity;
|
|
83
|
+
/** The conversation this request belongs to, when it named one. */
|
|
84
|
+
readonly sessionId?: string;
|
|
85
|
+
/** This caller's rolling-window spend. See {@link RecentSpend}. */
|
|
86
|
+
readonly recentSpend: RecentSpend;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* What a policy answers.
|
|
90
|
+
*
|
|
91
|
+
* - `'allow'` — run it now (the shape of every request before this option
|
|
92
|
+
* existed).
|
|
93
|
+
* - `{ queue: true }` — run it, but behind whatever this session already has
|
|
94
|
+
* in flight, even where the host would otherwise refuse a second concurrent
|
|
95
|
+
* turn. A back-pressure valve that costs latency instead of a failure.
|
|
96
|
+
* - `{ refuse }` — do not run it, and answer with this sentence.
|
|
97
|
+
*/
|
|
98
|
+
export type AdmissionVerdict = 'allow' | {
|
|
99
|
+
readonly queue: true;
|
|
100
|
+
} | {
|
|
101
|
+
readonly refuse: string;
|
|
102
|
+
};
|
|
103
|
+
/** The seam. One method, so a policy is a function with a name. */
|
|
104
|
+
export interface AdmissionPolicy {
|
|
105
|
+
decide(context: AdmissionContext): AdmissionVerdict | Promise<AdmissionVerdict>;
|
|
106
|
+
}
|
|
107
|
+
export interface TurnsPerHourOptions {
|
|
108
|
+
/** How many turns one caller may start per hour. */
|
|
109
|
+
readonly limit: number;
|
|
110
|
+
/**
|
|
111
|
+
* What an ANONYMOUS caller may start per hour. Default: the same `limit`.
|
|
112
|
+
*
|
|
113
|
+
* Worth setting separately at a door built with `allowAnonymous`, where
|
|
114
|
+
* every anonymous request shares one bucket: the shared bucket makes a
|
|
115
|
+
* per-user limit into a global one for that lane, which is a fact rather
|
|
116
|
+
* than a bug, and this is the dial for it.
|
|
117
|
+
*/
|
|
118
|
+
readonly anonymousLimit?: number;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* The reference policy: N turns per caller per hour, refused with the limit and
|
|
122
|
+
* its reset in the sentence.
|
|
123
|
+
*
|
|
124
|
+
* It is deliberately the SIMPLEST honest rule — a count, a window, a sentence —
|
|
125
|
+
* because its job is to show the shape rather than to be everybody's policy.
|
|
126
|
+
* Read it and write yours: a real deployment's rule is usually "this plan, this
|
|
127
|
+
* endpoint, this time of day", which is exactly the knowledge a library does
|
|
128
|
+
* not have.
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* await standingAgent({
|
|
132
|
+
* agent, sessions, host,
|
|
133
|
+
* identity: { verify }, // required for a PER-USER bound
|
|
134
|
+
* admission: turnsPerHour({ limit: 60 }),
|
|
135
|
+
* });
|
|
136
|
+
*/
|
|
137
|
+
export declare function turnsPerHour(options: TurnsPerHourOptions): AdmissionPolicy;
|
|
138
|
+
/**
|
|
139
|
+
* The rolling-window ledger the composer feeds and a policy reads.
|
|
140
|
+
*
|
|
141
|
+
* Bounded twice, because an unbounded map keyed by caller-supplied strings is a
|
|
142
|
+
* memory leak with an attacker's finger on it: entries older than the window
|
|
143
|
+
* are dropped on every read, and the number of distinct callers held is capped
|
|
144
|
+
* (the least-recently-touched is evicted). Evicting a caller costs that caller
|
|
145
|
+
* a forgotten window — they are admitted where they might have been refused,
|
|
146
|
+
* which is the safe direction for a bound whose alternative is falling over.
|
|
147
|
+
*/
|
|
148
|
+
export interface SpendLedger {
|
|
149
|
+
/** Note that a turn was admitted for this caller. */
|
|
150
|
+
admit(key: string): void;
|
|
151
|
+
/** Add measured usage to this caller's most recent turn. */
|
|
152
|
+
add(key: string, usage: {
|
|
153
|
+
inputTokens?: number;
|
|
154
|
+
outputTokens?: number;
|
|
155
|
+
usd?: number;
|
|
156
|
+
}): void;
|
|
157
|
+
/** This caller's window, as of now. */
|
|
158
|
+
read(key: string): RecentSpend;
|
|
159
|
+
/** How many distinct callers are currently held (diagnostic). */
|
|
160
|
+
readonly size: number;
|
|
161
|
+
}
|
|
162
|
+
export interface SpendLedgerOptions {
|
|
163
|
+
/** Window length in ms. Default one hour — what `turnsPerHour` promises. */
|
|
164
|
+
readonly windowMs?: number;
|
|
165
|
+
/** Distinct callers held before the least-recently-touched is evicted. */
|
|
166
|
+
readonly maxCallers?: number;
|
|
167
|
+
/** @internal Test seam — the clock. */
|
|
168
|
+
readonly _now?: () => number;
|
|
169
|
+
}
|
|
170
|
+
export declare function spendLedger(options?: SpendLedgerOptions): SpendLedger;
|
|
171
|
+
/**
|
|
172
|
+
* The ledger key for one caller.
|
|
173
|
+
*
|
|
174
|
+
* A verified user is keyed by the id the TOKEN proved. Everyone else shares one
|
|
175
|
+
* anonymous bucket — and sharing is the honest answer rather than a weakness:
|
|
176
|
+
* there is no other fact to key on. A session id would let a caller mint a
|
|
177
|
+
* fresh budget by asking for a new conversation, and an IP address is neither
|
|
178
|
+
* available to this port nor a person.
|
|
179
|
+
*/
|
|
180
|
+
export declare function spendKeyFor(identity: VerifiedIdentity | undefined): string;
|
|
181
|
+
//# sourceMappingURL=admission.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admission.d.ts","sourceRoot":"","sources":["../../../src/hosting/admission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+CAA+C;IAC/C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;;;;;OAQG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,4CAA4C;AAC5C,MAAM,WAAW,gBAAgB;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IACrC,mEAAmE;IACnE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhG,mEAAmE;AACnE,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACjF;AAID,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;;;;OAOG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAKD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,eAAe,CAmC1E;AAeD;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,4DAA4D;IAC5D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7F,uCAAuC;IACvC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;IAC/B,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAKD,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,0EAA0E;IAC1E,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,uCAAuC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,MAAM,CAAC;CAC9B;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,CAuFzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,SAAS,GAAG,MAAM,CAE1E"}
|
|
@@ -36,9 +36,9 @@
|
|
|
36
36
|
*/
|
|
37
37
|
import type { ArtifactMeta } from '../artifacts/types.js';
|
|
38
38
|
/** The wire spelling of `head` — metadata only, the render-by-ref decision. */
|
|
39
|
-
export declare const ARTIFACT_HEAD_OP
|
|
39
|
+
export declare const ARTIFACT_HEAD_OP: "artifact-head";
|
|
40
40
|
/** The wire spelling of `get` — metadata + payload. */
|
|
41
|
-
export declare const ARTIFACT_GET_OP
|
|
41
|
+
export declare const ARTIFACT_GET_OP: "artifact-get";
|
|
42
42
|
/**
|
|
43
43
|
* One artifact operation, as a request carries it — the port-side shape
|
|
44
44
|
* behind the wire's `{ op, ref }`.
|
|
@@ -71,9 +71,12 @@ export interface ArtifactWireResult {
|
|
|
71
71
|
* Read an artifact operation out of a request body, if the body names one.
|
|
72
72
|
*
|
|
73
73
|
* Returns `undefined` for a body with no `op` field — an ordinary invoke,
|
|
74
|
-
* untouched
|
|
75
|
-
*
|
|
76
|
-
* that
|
|
74
|
+
* untouched — and for an op that belongs to ANOTHER domain's reader (the
|
|
75
|
+
* session-history ops, 9.26.0): declining is not the same as refusing, and a
|
|
76
|
+
* reader that claimed a neighbour's op would be the fork this grammar has one
|
|
77
|
+
* owner to prevent. Throws {@link InvalidWireOpError} for an `op` nobody
|
|
78
|
+
* speaks, and for a known op whose `ref` is missing or blank: a request that
|
|
79
|
+
* NAMED an operation must never quietly become something else.
|
|
77
80
|
*
|
|
78
81
|
* Exported for custom {@link import('./httpHost.js').HttpWire} dialects, so a
|
|
79
82
|
* third dialect reads the ops exactly as the two shipped ones do.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifactWire.d.ts","sourceRoot":"","sources":["../../../src/hosting/artifactWire.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"artifactWire.d.ts","sourceRoot":"","sources":["../../../src/hosting/artifactWire.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAI1D,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,iBAAwB,CAAC;AACtD,uDAAuD;AACvD,eAAO,MAAM,eAAe,gBAAuB,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5B,4CAA4C;IAC5C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC;IAC5B,4BAA4B;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,8CAA8C;IAC9C,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACtC,mBAAmB,GAAG,SAAS,CAkBjC;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,kBAAkB,GAAG;IAC5D,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACtD,CAQA"}
|
|
@@ -40,6 +40,7 @@
|
|
|
40
40
|
*/
|
|
41
41
|
import { type AgentRunCheckpoint } from '../core/runCheckpoint.js';
|
|
42
42
|
import type { CheckpointEnvelope, ConversationEnvelope, PausedRun, PausedRunEnvelope } from './types.js';
|
|
43
|
+
import type { TranscriptMessage } from './sessionWire.js';
|
|
43
44
|
/**
|
|
44
45
|
* Pack a conversation checkpoint for storage.
|
|
45
46
|
*
|
|
@@ -121,4 +122,37 @@ export declare function readPausedRun(envelope: unknown): PausedRun;
|
|
|
121
122
|
* }
|
|
122
123
|
*/
|
|
123
124
|
export declare function checkEnvelope(envelope: unknown, sessionId?: string): CheckpointEnvelope;
|
|
125
|
+
/**
|
|
126
|
+
* WHO a stored session belongs to — the `principal` on the conversation the
|
|
127
|
+
* envelope carries, or `undefined` when it names nobody (9.26.0).
|
|
128
|
+
*
|
|
129
|
+
* The ONE derivation, so a store's owner index and the composer's ownership
|
|
130
|
+
* check can never disagree about what "belongs to" means. It is read from the
|
|
131
|
+
* conversation's own identity — the tuple `standingAgent` composed from the
|
|
132
|
+
* request's verified user — and NOT from anything a caller supplied at persist
|
|
133
|
+
* time: a store that indexed on a claimed owner would be a store where owning
|
|
134
|
+
* a session is a matter of asking.
|
|
135
|
+
*
|
|
136
|
+
* A conversation that ran anonymously, or under a derived session-namespace
|
|
137
|
+
* rung with no principal, has no owner. That is a FACT, not a gap to fill: a
|
|
138
|
+
* session nobody signed for is a session nobody can list, and inventing an
|
|
139
|
+
* owner would be inventing an entitlement.
|
|
140
|
+
*
|
|
141
|
+
* Reads both formats, so a session that is mid-question is owned exactly as
|
|
142
|
+
* firmly as one that is finished. Returns `undefined` rather than throwing on
|
|
143
|
+
* a shape it cannot read — an index is a convenience, and refusing to WRITE a
|
|
144
|
+
* conversation because its owner could not be derived would be the tail
|
|
145
|
+
* wagging the dog. (Every reader of the index still checks ownership itself.)
|
|
146
|
+
*/
|
|
147
|
+
export declare function envelopeOwner(envelope: unknown): string | undefined;
|
|
148
|
+
/**
|
|
149
|
+
* The stored conversation's messages, projected to what a person may read back
|
|
150
|
+
* (9.26.0): user and assistant TEXT, in stored order.
|
|
151
|
+
*
|
|
152
|
+
* Everything else is deliberately dropped — see {@link TranscriptMessage} for
|
|
153
|
+
* the full list and the reason. Non-string content (a provider's structured
|
|
154
|
+
* block) is dropped rather than stringified: a transcript is what was said, and
|
|
155
|
+
* `[object Object]` is not something anybody said.
|
|
156
|
+
*/
|
|
157
|
+
export declare function envelopeTranscript(envelope: unknown): readonly TranscriptMessage[];
|
|
124
158
|
//# sourceMappingURL=envelope.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../../src/hosting/envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAGH,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,SAAS,EACT,iBAAiB,EAClB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../../src/hosting/envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAGH,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,SAAS,EACT,iBAAiB,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAK1D;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,kBAAkB,GAAG,oBAAoB,CAE/E;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,iBAAiB,CAErE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,kBAAkB,CAUlE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAQ1D;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAOvF;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAInE;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,iBAAiB,EAAE,CAYlF"}
|
|
@@ -269,6 +269,137 @@ export declare class UnreadableEnvelopeError extends TypeError {
|
|
|
269
269
|
*/
|
|
270
270
|
withSession(sessionId: string): UnreadableEnvelopeError;
|
|
271
271
|
}
|
|
272
|
+
/**
|
|
273
|
+
* WHY a presented credential did not identify anybody — the whole vocabulary a
|
|
274
|
+
* refusal is allowed to say about a token.
|
|
275
|
+
*
|
|
276
|
+
* Every value here is a fact about the CHECK, never about the secret. That is
|
|
277
|
+
* the point of enumerating them at all: an operator needs to act differently on
|
|
278
|
+
* each one, and `expired` versus `wrong-audience` versus `unverifiable` is the
|
|
279
|
+
* entire difference between "the client should refresh", "the client is pointed
|
|
280
|
+
* at the wrong API" and "somebody is presenting something we cannot check" —
|
|
281
|
+
* none of which requires printing one character of the token.
|
|
282
|
+
*
|
|
283
|
+
* - `'no-token'` — no `Authorization: Bearer …` arrived at all.
|
|
284
|
+
* - `'expired'` — the token's own lifetime is over.
|
|
285
|
+
* - `'not-yet-valid'` — its `nbf` is in the future (a clock-skew smell).
|
|
286
|
+
* - `'wrong-audience'` — it was minted for a different API.
|
|
287
|
+
* - `'wrong-issuer'` — it came from an IdP this door does not accept.
|
|
288
|
+
* - `'unverifiable'` — the signature did not check out, no key matched, the
|
|
289
|
+
* algorithm is not allowed, or it is not a token at all. Deliberately ONE
|
|
290
|
+
* class: distinguishing "bad signature" from "unknown key" tells whoever is
|
|
291
|
+
* probing which half of a forgery to fix.
|
|
292
|
+
* - `'claimed-another-user'` — a valid token, and a request that signed
|
|
293
|
+
* somebody else's name beside it.
|
|
294
|
+
*/
|
|
295
|
+
export type IdentityFailureClass = 'no-token' | 'expired' | 'not-yet-valid' | 'wrong-audience' | 'wrong-issuer' | 'unverifiable' | 'claimed-another-user';
|
|
296
|
+
/**
|
|
297
|
+
* The caller could not be identified, and this door was configured to insist.
|
|
298
|
+
*
|
|
299
|
+
* **The message never contains the token.** Not truncated, not hashed, not "the
|
|
300
|
+
* first eight characters". A bearer token in a refusal is a bearer token in the
|
|
301
|
+
* reply body, in the log line, in the trace and in every sink attached — one
|
|
302
|
+
* echo and the credential has been published. What travels is
|
|
303
|
+
* {@link IdentityFailureClass} and the sentence that tells the caller what to
|
|
304
|
+
* do about it.
|
|
305
|
+
*/
|
|
306
|
+
export declare class IdentityNotVerifiedError extends Error {
|
|
307
|
+
readonly code: "ERR_IDENTITY_NOT_VERIFIED";
|
|
308
|
+
/** What went wrong, in the one vocabulary. Never the token. */
|
|
309
|
+
readonly failure: IdentityFailureClass;
|
|
310
|
+
/** Did the request also NAME a user it could not prove? The impersonation
|
|
311
|
+
* shape, kept as a fact so a sink can count it separately. */
|
|
312
|
+
readonly claimedUser: boolean;
|
|
313
|
+
constructor(failure: IdentityFailureClass, claimedUser: boolean);
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* The verifier itself could not do its job — its key set was unreachable, its
|
|
317
|
+
* introspection endpoint timed out.
|
|
318
|
+
*
|
|
319
|
+
* A DIFFERENT fact from a token that failed, and the difference is who is at
|
|
320
|
+
* fault: this is the deployment's outage, not the caller's bad credential, and
|
|
321
|
+
* answering it with a 401 would send every client off to re-authenticate
|
|
322
|
+
* against an identity provider that is already down. It maps to 503.
|
|
323
|
+
*/
|
|
324
|
+
export declare class VerifierUnavailableError extends Error {
|
|
325
|
+
readonly code: "ERR_IDENTITY_VERIFIER_UNAVAILABLE";
|
|
326
|
+
/** Which verifier could not answer — its name, never its configuration. */
|
|
327
|
+
readonly verifier: string;
|
|
328
|
+
constructor(verifier: string, detail?: string);
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* An admission policy refused this request before any work started.
|
|
332
|
+
*
|
|
333
|
+
* The policy authors the sentence — this class only carries it — because the
|
|
334
|
+
* limit and its reset are the operator's facts, not the library's. What this
|
|
335
|
+
* class guarantees is the SHAPE: a refusal that names a limit is a refusal a
|
|
336
|
+
* client can act on, and one that says "denied" is a support ticket.
|
|
337
|
+
*/
|
|
338
|
+
export declare class AdmissionRefusedError extends Error {
|
|
339
|
+
readonly code: "ERR_ADMISSION_REFUSED";
|
|
340
|
+
/** WHO was refused, when the request identified anybody. Never a token. */
|
|
341
|
+
readonly userId?: string;
|
|
342
|
+
constructor(reason: string, userId?: string);
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* A session-history operation arrived at a door that does not verify identity.
|
|
346
|
+
*
|
|
347
|
+
* Listing a person's conversations is answering "which sessions belong to
|
|
348
|
+
* you?", and a door that reads WHO from an unverified header would answer that
|
|
349
|
+
* for anyone who guesses a user id — enumeration with a friendly interface.
|
|
350
|
+
* So the ops are refused outright rather than served under a claimed name.
|
|
351
|
+
*/
|
|
352
|
+
export declare class SessionOpNeedsIdentityError extends Error {
|
|
353
|
+
readonly code: "ERR_SESSION_OP_NEEDS_IDENTITY";
|
|
354
|
+
/** The op that was refused. */
|
|
355
|
+
readonly op: string;
|
|
356
|
+
constructor(op: string);
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* A session-history operation arrived at a session store that keeps no
|
|
360
|
+
* owner index.
|
|
361
|
+
*
|
|
362
|
+
* The two members are OPTIONAL on the port on purpose — most stores are a
|
|
363
|
+
* key/value map and owe nobody a secondary index — so this refusal names the
|
|
364
|
+
* store's limitation instead of pretending the answer is "you have no
|
|
365
|
+
* sessions". An empty list and an unanswerable question are different facts,
|
|
366
|
+
* and only one of them is safe to render as "nothing here".
|
|
367
|
+
*/
|
|
368
|
+
export declare class SessionIndexUnavailableError extends Error {
|
|
369
|
+
readonly code: "ERR_SESSION_INDEX_UNAVAILABLE";
|
|
370
|
+
readonly op: string;
|
|
371
|
+
constructor(op: string, missing: string);
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* The ONE answer for a session the caller may not have — read OR continued.
|
|
375
|
+
*
|
|
376
|
+
* A session that does not exist, one that belongs to somebody else, and one
|
|
377
|
+
* whose stored conversation names no owner all end here, byte-identical but
|
|
378
|
+
* for the id the caller already knew. Told apart, they would be an oracle for
|
|
379
|
+
* which session ids are real — the same law
|
|
380
|
+
* {@link ArtifactNotFoundError} follows, for the same reason.
|
|
381
|
+
*
|
|
382
|
+
* Raised by BOTH doors that open a session at a verifying host: the two
|
|
383
|
+
* session-history ops, and an ordinary turn that named somebody else's session
|
|
384
|
+
* (9.26.0). One refusal, so the answer cannot depend on which door a caller
|
|
385
|
+
* knocked at — the mistake this class of hole is always made of.
|
|
386
|
+
*/
|
|
387
|
+
export declare class SessionNotFoundError extends Error {
|
|
388
|
+
readonly code: "ERR_SESSION_NOT_FOUND";
|
|
389
|
+
/** The id that was asked for — the caller's own string, nothing learned. */
|
|
390
|
+
readonly sessionId: string;
|
|
391
|
+
constructor(sessionId: string);
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* A session-history result resolved and the reply cannot describe it.
|
|
395
|
+
*
|
|
396
|
+
* The {@link ArtifactNotCarriedError} shape, for the other new terminal.
|
|
397
|
+
*/
|
|
398
|
+
export declare class SessionsNotCarriedError extends Error {
|
|
399
|
+
readonly code: "ERR_SESSIONS_NOT_CARRIED";
|
|
400
|
+
readonly op: string;
|
|
401
|
+
constructor(op: string, hostName?: string);
|
|
402
|
+
}
|
|
272
403
|
/**
|
|
273
404
|
* Assert that a host can do something, and throw a corrective error naming the
|
|
274
405
|
* adapter when it cannot.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/hosting/errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/hosting/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -69,6 +69,7 @@
|
|
|
69
69
|
/// <reference types="node" />
|
|
70
70
|
import type { IncomingMessage, Server, ServerResponse } from 'node:http';
|
|
71
71
|
import type { ArtifactWireRequest, ArtifactWireResult } from './artifactWire.js';
|
|
72
|
+
import type { SessionWireRequest, SessionWireResult } from './sessionWire.js';
|
|
72
73
|
import type { AgentHost, ConversationHandler, ConversationHost, ConversationLimits, HostCapability, HostHandle, HostHandler, PendingAsk } from './types.js';
|
|
73
74
|
import { type ConversationHandshake, type HandshakeFacts } from './webSocketConversation.js';
|
|
74
75
|
export type { ConversationHandshake, HandshakeFacts };
|
|
@@ -126,6 +127,15 @@ export interface HttpWire {
|
|
|
126
127
|
* with the named not-carried refusal.
|
|
127
128
|
*/
|
|
128
129
|
readonly artifact?: ArtifactWireRequest;
|
|
130
|
+
/**
|
|
131
|
+
* A session-history operation this request carries instead of a message
|
|
132
|
+
* (9.26.0). Read it with `readSessionWireOp(facts.body)` — the one owner
|
|
133
|
+
* of the `{ op: 'session-list' | 'session-transcript', sessionId? }`
|
|
134
|
+
* grammar. A dialect that returns it must also implement
|
|
135
|
+
* {@link HttpWire.sessions}, or every resolved listing answers with the
|
|
136
|
+
* named not-carried refusal.
|
|
137
|
+
*/
|
|
138
|
+
readonly session?: SessionWireRequest;
|
|
129
139
|
/**
|
|
130
140
|
* Headers to put on THIS request's reply, whatever terminal it ends with
|
|
131
141
|
* (9.10.0).
|
|
@@ -171,6 +181,17 @@ export interface HttpWire {
|
|
|
171
181
|
* `ArtifactNotCarriedError` refusal instead of an improvised body.
|
|
172
182
|
*/
|
|
173
183
|
artifact?(result: ArtifactWireResult): unknown;
|
|
184
|
+
/**
|
|
185
|
+
* Body for a RESOLVED session-history operation (9.26.0) — the caller's own
|
|
186
|
+
* sessions for a list, one owned session's messages for a transcript.
|
|
187
|
+
* Compose it with `sessionWireBody(result)` (both shipped dialects do) so
|
|
188
|
+
* clients read one shape.
|
|
189
|
+
*
|
|
190
|
+
* Optional exactly as `artifact` is: a wire without it keeps compiling, and
|
|
191
|
+
* a resolved listing on such a wire is answered with the named
|
|
192
|
+
* `SessionsNotCarriedError` refusal instead of an improvised body.
|
|
193
|
+
*/
|
|
194
|
+
sessions?(result: SessionWireResult): unknown;
|
|
174
195
|
/**
|
|
175
196
|
* Pull the port's vocabulary out of one conversation handshake — the session
|
|
176
197
|
* this conversation claims, any header mapping this dialect performs, and the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpHost.d.ts","sourceRoot":"","sources":["../../../src/hosting/httpHost.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAIzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"httpHost.d.ts","sourceRoot":"","sources":["../../../src/hosting/httpHost.ts"],"names":[],"mappings":"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"}
|