agentfootprint 9.41.0 → 9.44.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 +30 -1
- package/CLAUDE.md +3 -1
- package/ai-instructions/claude-code/SKILL.md +31 -1
- package/dist/adapters/hosting/agentcore.js +163 -23
- package/dist/adapters/hosting/agentcore.js.map +1 -1
- package/dist/adapters/hosting/firestoreSessions.js +184 -14
- package/dist/adapters/hosting/firestoreSessions.js.map +1 -1
- package/dist/adapters/hosting/googleAgentEngine.js +29 -0
- package/dist/adapters/hosting/googleAgentEngine.js.map +1 -1
- package/dist/artifacts/conformance/cases.js +20 -0
- package/dist/artifacts/conformance/cases.js.map +1 -1
- package/dist/artifacts/scopePath.js +41 -1
- package/dist/artifacts/scopePath.js.map +1 -1
- package/dist/core/Agent.js +17 -1
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/agent/AgentBuilder.js +56 -1
- package/dist/core/agent/AgentBuilder.js.map +1 -1
- package/dist/core/agent/buildAgentChart.js +5 -1
- package/dist/core/agent/buildAgentChart.js.map +1 -1
- package/dist/core/agent/buildDynamicAgentChart.js +5 -1
- package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/core/agent/coverage/absent.js +163 -0
- package/dist/core/agent/coverage/absent.js.map +1 -0
- package/dist/core/agent/coverage/answer.js +90 -0
- package/dist/core/agent/coverage/answer.js.map +1 -0
- package/dist/core/agent/coverage/evidence.js +90 -0
- package/dist/core/agent/coverage/evidence.js.map +1 -0
- package/dist/core/agent/coverage/index.js +37 -0
- package/dist/core/agent/coverage/index.js.map +1 -0
- package/dist/core/agent/coverage/items.js +91 -0
- package/dist/core/agent/coverage/items.js.map +1 -0
- package/dist/core/agent/coverage/ledger.js +131 -0
- package/dist/core/agent/coverage/ledger.js.map +1 -0
- package/dist/core/agent/coverage/read.js +56 -0
- package/dist/core/agent/coverage/read.js.map +1 -0
- package/dist/core/agent/coverage/types.js +15 -0
- package/dist/core/agent/coverage/types.js.map +1 -0
- package/dist/core/agent/evidence/evidenceIndex.js +18 -1
- package/dist/core/agent/evidence/evidenceIndex.js.map +1 -1
- package/dist/core/agent/stages/prepareFinal.js +44 -3
- package/dist/core/agent/stages/prepareFinal.js.map +1 -1
- package/dist/core/agent/stages/toolCalls.js +109 -3
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/core/agent/toolEffects.js +1 -1
- package/dist/core/outputFallback.js.map +1 -1
- package/dist/debug.js +49 -25
- package/dist/debug.js.map +1 -1
- package/dist/esm/adapters/hosting/agentcore.d.ts +8 -0
- package/dist/esm/adapters/hosting/agentcore.js +163 -23
- package/dist/esm/adapters/hosting/agentcore.js.map +1 -1
- package/dist/esm/adapters/hosting/firestoreSessions.d.ts +162 -14
- package/dist/esm/adapters/hosting/firestoreSessions.js +182 -13
- package/dist/esm/adapters/hosting/firestoreSessions.js.map +1 -1
- package/dist/esm/adapters/hosting/googleAgentEngine.d.ts +16 -1
- package/dist/esm/adapters/hosting/googleAgentEngine.js +29 -0
- package/dist/esm/adapters/hosting/googleAgentEngine.js.map +1 -1
- package/dist/esm/artifacts/conformance/cases.js +20 -0
- package/dist/esm/artifacts/conformance/cases.js.map +1 -1
- package/dist/esm/artifacts/scopePath.d.ts +31 -0
- package/dist/esm/artifacts/scopePath.js +41 -1
- package/dist/esm/artifacts/scopePath.js.map +1 -1
- package/dist/esm/core/Agent.d.ts +8 -1
- package/dist/esm/core/Agent.js +18 -2
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/agent/AgentBuilder.d.ts +43 -0
- package/dist/esm/core/agent/AgentBuilder.js +56 -1
- package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
- package/dist/esm/core/agent/buildAgentChart.d.ts +9 -0
- package/dist/esm/core/agent/buildAgentChart.js +6 -2
- package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
- package/dist/esm/core/agent/buildDynamicAgentChart.js +6 -2
- package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/esm/core/agent/coverage/absent.d.ts +104 -0
- package/dist/esm/core/agent/coverage/absent.js +157 -0
- package/dist/esm/core/agent/coverage/absent.js.map +1 -0
- package/dist/esm/core/agent/coverage/answer.d.ts +46 -0
- package/dist/esm/core/agent/coverage/answer.js +86 -0
- package/dist/esm/core/agent/coverage/answer.js.map +1 -0
- package/dist/esm/core/agent/coverage/evidence.d.ts +68 -0
- package/dist/esm/core/agent/coverage/evidence.js +86 -0
- package/dist/esm/core/agent/coverage/evidence.js.map +1 -0
- package/dist/esm/core/agent/coverage/index.d.ts +17 -0
- package/dist/esm/core/agent/coverage/index.js +17 -0
- package/dist/esm/core/agent/coverage/index.js.map +1 -0
- package/dist/esm/core/agent/coverage/items.d.ts +35 -0
- package/dist/esm/core/agent/coverage/items.js +85 -0
- package/dist/esm/core/agent/coverage/items.js.map +1 -0
- package/dist/esm/core/agent/coverage/ledger.d.ts +80 -0
- package/dist/esm/core/agent/coverage/ledger.js +125 -0
- package/dist/esm/core/agent/coverage/ledger.js.map +1 -0
- package/dist/esm/core/agent/coverage/read.d.ts +51 -0
- package/dist/esm/core/agent/coverage/read.js +52 -0
- package/dist/esm/core/agent/coverage/read.js.map +1 -0
- package/dist/esm/core/agent/coverage/types.d.ts +142 -0
- package/dist/esm/core/agent/coverage/types.js +14 -0
- package/dist/esm/core/agent/coverage/types.js.map +1 -0
- package/dist/esm/core/agent/evidence/evidenceIndex.d.ts +7 -0
- package/dist/esm/core/agent/evidence/evidenceIndex.js +18 -1
- package/dist/esm/core/agent/evidence/evidenceIndex.js.map +1 -1
- package/dist/esm/core/agent/stages/prepareFinal.d.ts +18 -0
- package/dist/esm/core/agent/stages/prepareFinal.js +42 -2
- package/dist/esm/core/agent/stages/prepareFinal.js.map +1 -1
- package/dist/esm/core/agent/stages/toolCalls.js +109 -3
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/agent/toolEffects.d.ts +2 -2
- package/dist/esm/core/agent/toolEffects.js +1 -1
- package/dist/esm/core/agent/types.d.ts +14 -0
- package/dist/esm/core/outputFallback.d.ts +15 -1
- package/dist/esm/core/outputFallback.js.map +1 -1
- package/dist/esm/debug.d.ts +1 -0
- package/dist/esm/debug.js +7 -0
- package/dist/esm/debug.js.map +1 -1
- package/dist/esm/events/dispatcher.d.ts +1 -1
- package/dist/esm/events/dispatcher.js.map +1 -1
- package/dist/esm/events/payloads.d.ts +82 -0
- package/dist/esm/events/registry.d.ts +11 -1
- package/dist/esm/events/registry.js +10 -0
- package/dist/esm/events/registry.js.map +1 -1
- package/dist/esm/hosting/conformance/cases.d.ts +2 -1
- package/dist/esm/hosting/conformance/cases.js +229 -22
- package/dist/esm/hosting/conformance/cases.js.map +1 -1
- package/dist/esm/hosting/conformance/types.d.ts +7 -7
- package/dist/esm/hosting/errors.d.ts +28 -0
- package/dist/esm/hosting/errors.js +40 -0
- package/dist/esm/hosting/errors.js.map +1 -1
- package/dist/esm/hosting/index.d.ts +11 -3
- package/dist/esm/hosting/index.js +15 -2
- package/dist/esm/hosting/index.js.map +1 -1
- package/dist/esm/hosting/memorySessions.js +39 -0
- package/dist/esm/hosting/memorySessions.js.map +1 -1
- package/dist/esm/hosting/sessionRetention.d.ts +56 -0
- package/dist/esm/hosting/sessionRetention.js +69 -0
- package/dist/esm/hosting/sessionRetention.js.map +1 -0
- package/dist/esm/hosting/sqliteSessions.d.ts +11 -1
- package/dist/esm/hosting/sqliteSessions.js +51 -0
- package/dist/esm/hosting/sqliteSessions.js.map +1 -1
- package/dist/esm/hosting/types.d.ts +184 -0
- package/dist/esm/hosting/types.js +9 -0
- package/dist/esm/hosting/types.js.map +1 -1
- package/dist/esm/hosting-providers.d.ts +15 -11
- package/dist/esm/hosting-providers.js +21 -11
- package/dist/esm/hosting-providers.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +18 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/context-bisect/arms/apply.d.ts +54 -0
- package/dist/esm/lib/context-bisect/arms/apply.js +41 -0
- package/dist/esm/lib/context-bisect/arms/apply.js.map +1 -0
- package/dist/esm/lib/context-bisect/arms/compare.d.ts +27 -0
- package/dist/esm/lib/context-bisect/arms/compare.js +112 -0
- package/dist/esm/lib/context-bisect/arms/compare.js.map +1 -0
- package/dist/esm/lib/context-bisect/arms/index.d.ts +16 -0
- package/dist/esm/lib/context-bisect/arms/index.js +16 -0
- package/dist/esm/lib/context-bisect/arms/index.js.map +1 -0
- package/dist/esm/lib/context-bisect/arms/manifest.d.ts +79 -0
- package/dist/esm/lib/context-bisect/arms/manifest.js +199 -0
- package/dist/esm/lib/context-bisect/arms/manifest.js.map +1 -0
- package/dist/esm/lib/context-bisect/arms/probe.d.ts +54 -0
- package/dist/esm/lib/context-bisect/arms/probe.js +125 -0
- package/dist/esm/lib/context-bisect/arms/probe.js.map +1 -0
- package/dist/esm/lib/context-bisect/arms/types.d.ts +319 -0
- package/dist/esm/lib/context-bisect/arms/types.js +67 -0
- package/dist/esm/lib/context-bisect/arms/types.js.map +1 -0
- package/dist/esm/lib/context-bisect/arms/validate.d.ts +26 -0
- package/dist/esm/lib/context-bisect/arms/validate.js +122 -0
- package/dist/esm/lib/context-bisect/arms/validate.js.map +1 -0
- package/dist/esm/lib/context-bisect/arms/verdict.d.ts +53 -0
- package/dist/esm/lib/context-bisect/arms/verdict.js +103 -0
- package/dist/esm/lib/context-bisect/arms/verdict.js.map +1 -0
- package/dist/esm/lib/context-bisect/index.d.ts +1 -0
- package/dist/esm/lib/context-bisect/index.js +5 -0
- package/dist/esm/lib/context-bisect/index.js.map +1 -1
- package/dist/esm/lib/injection-engine/index.d.ts +1 -1
- package/dist/esm/lib/injection-engine/index.js +3 -1
- package/dist/esm/lib/injection-engine/index.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillExamples.d.ts +16 -13
- package/dist/esm/lib/injection-engine/skillExamples.js +16 -60
- package/dist/esm/lib/injection-engine/skillExamples.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillGraph.d.ts +50 -0
- package/dist/esm/lib/injection-engine/skillGraph.js +52 -1
- package/dist/esm/lib/injection-engine/skillGraph.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillGraphCheckup.d.ts +6 -5
- package/dist/esm/lib/injection-engine/skillGraphCheckup.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillNeverRoutes.d.ts +131 -0
- package/dist/esm/lib/injection-engine/skillNeverRoutes.js +228 -0
- package/dist/esm/lib/injection-engine/skillNeverRoutes.js.map +1 -0
- package/dist/esm/lib/injection-engine/skillPartition.d.ts +69 -0
- package/dist/esm/lib/injection-engine/skillPartition.js +273 -0
- package/dist/esm/lib/injection-engine/skillPartition.js.map +1 -0
- package/dist/esm/lib/injection-engine/skillsFromDir.d.ts +83 -3
- package/dist/esm/lib/injection-engine/skillsFromDir.js +118 -7
- package/dist/esm/lib/injection-engine/skillsFromDir.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillsFromDirRoutes.d.ts +105 -0
- package/dist/esm/lib/injection-engine/skillsFromDirRoutes.js +169 -0
- package/dist/esm/lib/injection-engine/skillsFromDirRoutes.js.map +1 -0
- package/dist/esm/lib/injection-engine/startRuleClaim.d.ts +91 -0
- package/dist/esm/lib/injection-engine/startRuleClaim.js +78 -0
- package/dist/esm/lib/injection-engine/startRuleClaim.js.map +1 -0
- package/dist/esm/lib/injection-engine/toolOutcome.d.ts +12 -3
- package/dist/esm/lib/injection-engine/toolOutcome.js +2 -1
- package/dist/esm/lib/injection-engine/toolOutcome.js.map +1 -1
- package/dist/events/dispatcher.js.map +1 -1
- package/dist/events/registry.js +10 -0
- package/dist/events/registry.js.map +1 -1
- package/dist/hosting/conformance/cases.js +229 -22
- package/dist/hosting/conformance/cases.js.map +1 -1
- package/dist/hosting/errors.js +42 -1
- package/dist/hosting/errors.js.map +1 -1
- package/dist/hosting/index.js +18 -2
- package/dist/hosting/index.js.map +1 -1
- package/dist/hosting/memorySessions.js +39 -0
- package/dist/hosting/memorySessions.js.map +1 -1
- package/dist/hosting/sessionRetention.js +73 -0
- package/dist/hosting/sessionRetention.js.map +1 -0
- package/dist/hosting/sqliteSessions.js +51 -0
- package/dist/hosting/sqliteSessions.js.map +1 -1
- package/dist/hosting/types.js +10 -1
- package/dist/hosting/types.js.map +1 -1
- package/dist/hosting-providers.js +21 -11
- package/dist/hosting-providers.js.map +1 -1
- package/dist/index.js +72 -43
- package/dist/index.js.map +1 -1
- package/dist/lib/context-bisect/arms/apply.js +45 -0
- package/dist/lib/context-bisect/arms/apply.js.map +1 -0
- package/dist/lib/context-bisect/arms/compare.js +116 -0
- package/dist/lib/context-bisect/arms/compare.js.map +1 -0
- package/dist/lib/context-bisect/arms/index.js +35 -0
- package/dist/lib/context-bisect/arms/index.js.map +1 -0
- package/dist/lib/context-bisect/arms/manifest.js +207 -0
- package/dist/lib/context-bisect/arms/manifest.js.map +1 -0
- package/dist/lib/context-bisect/arms/probe.js +132 -0
- package/dist/lib/context-bisect/arms/probe.js.map +1 -0
- package/dist/lib/context-bisect/arms/types.js +68 -0
- package/dist/lib/context-bisect/arms/types.js.map +1 -0
- package/dist/lib/context-bisect/arms/validate.js +128 -0
- package/dist/lib/context-bisect/arms/validate.js.map +1 -0
- package/dist/lib/context-bisect/arms/verdict.js +107 -0
- package/dist/lib/context-bisect/arms/verdict.js.map +1 -0
- package/dist/lib/context-bisect/index.js +23 -1
- package/dist/lib/context-bisect/index.js.map +1 -1
- package/dist/lib/injection-engine/index.js +4 -1
- package/dist/lib/injection-engine/index.js.map +1 -1
- package/dist/lib/injection-engine/skillExamples.js +24 -68
- package/dist/lib/injection-engine/skillExamples.js.map +1 -1
- package/dist/lib/injection-engine/skillGraph.js +52 -1
- package/dist/lib/injection-engine/skillGraph.js.map +1 -1
- package/dist/lib/injection-engine/skillGraphCheckup.js.map +1 -1
- package/dist/lib/injection-engine/skillNeverRoutes.js +234 -0
- package/dist/lib/injection-engine/skillNeverRoutes.js.map +1 -0
- package/dist/lib/injection-engine/skillPartition.js +277 -0
- package/dist/lib/injection-engine/skillPartition.js.map +1 -0
- package/dist/lib/injection-engine/skillsFromDir.js +121 -9
- package/dist/lib/injection-engine/skillsFromDir.js.map +1 -1
- package/dist/lib/injection-engine/skillsFromDirRoutes.js +174 -0
- package/dist/lib/injection-engine/skillsFromDirRoutes.js.map +1 -0
- package/dist/lib/injection-engine/startRuleClaim.js +85 -0
- package/dist/lib/injection-engine/startRuleClaim.js.map +1 -0
- package/dist/lib/injection-engine/toolOutcome.js +2 -1
- package/dist/lib/injection-engine/toolOutcome.js.map +1 -1
- package/dist/types/adapters/hosting/agentcore.d.ts +8 -0
- package/dist/types/adapters/hosting/agentcore.d.ts.map +1 -1
- package/dist/types/adapters/hosting/firestoreSessions.d.ts +162 -14
- package/dist/types/adapters/hosting/firestoreSessions.d.ts.map +1 -1
- package/dist/types/adapters/hosting/googleAgentEngine.d.ts +16 -1
- package/dist/types/adapters/hosting/googleAgentEngine.d.ts.map +1 -1
- package/dist/types/artifacts/conformance/cases.d.ts.map +1 -1
- package/dist/types/artifacts/scopePath.d.ts +31 -0
- package/dist/types/artifacts/scopePath.d.ts.map +1 -1
- package/dist/types/core/Agent.d.ts +8 -1
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/agent/AgentBuilder.d.ts +43 -0
- package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
- package/dist/types/core/agent/buildAgentChart.d.ts +9 -0
- package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/coverage/absent.d.ts +105 -0
- package/dist/types/core/agent/coverage/absent.d.ts.map +1 -0
- package/dist/types/core/agent/coverage/answer.d.ts +47 -0
- package/dist/types/core/agent/coverage/answer.d.ts.map +1 -0
- package/dist/types/core/agent/coverage/evidence.d.ts +69 -0
- package/dist/types/core/agent/coverage/evidence.d.ts.map +1 -0
- package/dist/types/core/agent/coverage/index.d.ts +18 -0
- package/dist/types/core/agent/coverage/index.d.ts.map +1 -0
- package/dist/types/core/agent/coverage/items.d.ts +36 -0
- package/dist/types/core/agent/coverage/items.d.ts.map +1 -0
- package/dist/types/core/agent/coverage/ledger.d.ts +81 -0
- package/dist/types/core/agent/coverage/ledger.d.ts.map +1 -0
- package/dist/types/core/agent/coverage/read.d.ts +52 -0
- package/dist/types/core/agent/coverage/read.d.ts.map +1 -0
- package/dist/types/core/agent/coverage/types.d.ts +143 -0
- package/dist/types/core/agent/coverage/types.d.ts.map +1 -0
- package/dist/types/core/agent/evidence/evidenceIndex.d.ts +7 -0
- package/dist/types/core/agent/evidence/evidenceIndex.d.ts.map +1 -1
- package/dist/types/core/agent/stages/prepareFinal.d.ts +18 -0
- package/dist/types/core/agent/stages/prepareFinal.d.ts.map +1 -1
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/core/agent/toolEffects.d.ts +2 -2
- package/dist/types/core/agent/types.d.ts +14 -0
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/core/outputFallback.d.ts +15 -1
- package/dist/types/core/outputFallback.d.ts.map +1 -1
- package/dist/types/debug.d.ts +1 -0
- package/dist/types/debug.d.ts.map +1 -1
- package/dist/types/events/dispatcher.d.ts +1 -1
- package/dist/types/events/dispatcher.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +82 -0
- package/dist/types/events/payloads.d.ts.map +1 -1
- package/dist/types/events/registry.d.ts +11 -1
- package/dist/types/events/registry.d.ts.map +1 -1
- package/dist/types/hosting/conformance/cases.d.ts +2 -1
- package/dist/types/hosting/conformance/cases.d.ts.map +1 -1
- package/dist/types/hosting/conformance/types.d.ts +7 -7
- package/dist/types/hosting/conformance/types.d.ts.map +1 -1
- package/dist/types/hosting/errors.d.ts +28 -0
- package/dist/types/hosting/errors.d.ts.map +1 -1
- package/dist/types/hosting/index.d.ts +11 -3
- package/dist/types/hosting/index.d.ts.map +1 -1
- package/dist/types/hosting/memorySessions.d.ts.map +1 -1
- package/dist/types/hosting/sessionRetention.d.ts +57 -0
- package/dist/types/hosting/sessionRetention.d.ts.map +1 -0
- package/dist/types/hosting/sqliteSessions.d.ts +11 -1
- package/dist/types/hosting/sqliteSessions.d.ts.map +1 -1
- package/dist/types/hosting/types.d.ts +184 -0
- package/dist/types/hosting/types.d.ts.map +1 -1
- package/dist/types/hosting-providers.d.ts +15 -11
- package/dist/types/hosting-providers.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/context-bisect/arms/apply.d.ts +55 -0
- package/dist/types/lib/context-bisect/arms/apply.d.ts.map +1 -0
- package/dist/types/lib/context-bisect/arms/compare.d.ts +28 -0
- package/dist/types/lib/context-bisect/arms/compare.d.ts.map +1 -0
- package/dist/types/lib/context-bisect/arms/index.d.ts +17 -0
- package/dist/types/lib/context-bisect/arms/index.d.ts.map +1 -0
- package/dist/types/lib/context-bisect/arms/manifest.d.ts +80 -0
- package/dist/types/lib/context-bisect/arms/manifest.d.ts.map +1 -0
- package/dist/types/lib/context-bisect/arms/probe.d.ts +55 -0
- package/dist/types/lib/context-bisect/arms/probe.d.ts.map +1 -0
- package/dist/types/lib/context-bisect/arms/types.d.ts +320 -0
- package/dist/types/lib/context-bisect/arms/types.d.ts.map +1 -0
- package/dist/types/lib/context-bisect/arms/validate.d.ts +27 -0
- package/dist/types/lib/context-bisect/arms/validate.d.ts.map +1 -0
- package/dist/types/lib/context-bisect/arms/verdict.d.ts +54 -0
- package/dist/types/lib/context-bisect/arms/verdict.d.ts.map +1 -0
- package/dist/types/lib/context-bisect/index.d.ts +1 -0
- package/dist/types/lib/context-bisect/index.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/index.d.ts +1 -1
- package/dist/types/lib/injection-engine/index.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillExamples.d.ts +16 -13
- package/dist/types/lib/injection-engine/skillExamples.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillGraph.d.ts +50 -0
- package/dist/types/lib/injection-engine/skillGraph.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillGraphCheckup.d.ts +6 -5
- package/dist/types/lib/injection-engine/skillGraphCheckup.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillNeverRoutes.d.ts +132 -0
- package/dist/types/lib/injection-engine/skillNeverRoutes.d.ts.map +1 -0
- package/dist/types/lib/injection-engine/skillPartition.d.ts +70 -0
- package/dist/types/lib/injection-engine/skillPartition.d.ts.map +1 -0
- package/dist/types/lib/injection-engine/skillsFromDir.d.ts +83 -3
- package/dist/types/lib/injection-engine/skillsFromDir.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillsFromDirRoutes.d.ts +106 -0
- package/dist/types/lib/injection-engine/skillsFromDirRoutes.d.ts.map +1 -0
- package/dist/types/lib/injection-engine/startRuleClaim.d.ts +92 -0
- package/dist/types/lib/injection-engine/startRuleClaim.d.ts.map +1 -0
- package/dist/types/lib/injection-engine/toolOutcome.d.ts +12 -3
- package/dist/types/lib/injection-engine/toolOutcome.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* skillsFromDirRoutes — the `routes:` half of the on-disk runbook grammar.
|
|
4
|
+
*
|
|
5
|
+
* ## What a file may say about routing, and why it is this little
|
|
6
|
+
*
|
|
7
|
+
* `skillsFromDir` reads prose, `tools:` and `steps:` — everything about ONE
|
|
8
|
+
* skill — and stopped exactly where the value was supposed to start: the
|
|
9
|
+
* routing. A directory of runbooks still had to be hand-wired into a graph in
|
|
10
|
+
* code, which is the work the graph exists to remove.
|
|
11
|
+
*
|
|
12
|
+
* This module adds the missing key under the SAME security law the tools list
|
|
13
|
+
* follows: **the file PICKS, it never DEFINES.**
|
|
14
|
+
*
|
|
15
|
+
* ---
|
|
16
|
+
* name: billing
|
|
17
|
+
* tools: lookup_order, issue_refund
|
|
18
|
+
* routes:
|
|
19
|
+
* - escalation: on issue_refund status=denied
|
|
20
|
+
* - receipts: on issue_refund
|
|
21
|
+
* - audit
|
|
22
|
+
* ---
|
|
23
|
+
*
|
|
24
|
+
* A route names a SKILL ID and, optionally, a guard. Both halves are picks:
|
|
25
|
+
*
|
|
26
|
+
* • the id is resolved against the skills THIS DIRECTORY declares — an id
|
|
27
|
+
* nothing here declares is refused at load, by name, listing what is
|
|
28
|
+
* available. Never a half-graph: one bad id fails the whole load, because
|
|
29
|
+
* a graph missing one edge routes silently wrong, which is worse than a
|
|
30
|
+
* graph that refuses to exist;
|
|
31
|
+
* • the guard is one of the two DATA conditions a route already has
|
|
32
|
+
* (`onToolReturn`, `onToolStatus`), and the tool it names must be one of
|
|
33
|
+
* this file's own `tools:` — the same law `steps:` follows, for the same
|
|
34
|
+
* reason (an edge out of this skill fires on this skill's work).
|
|
35
|
+
*
|
|
36
|
+
* Nothing is evaluated, imported or resolved as a path. The strings can only
|
|
37
|
+
* MATCH — against ids the loader already read off disk and against a closed
|
|
38
|
+
* status vocabulary.
|
|
39
|
+
*
|
|
40
|
+
* ## What a file CANNOT express, said plainly
|
|
41
|
+
*
|
|
42
|
+
* A `when:` predicate is CODE. There is no honest way for a markdown file to
|
|
43
|
+
* carry it: reading one would mean evaluating a string, which is the one thing
|
|
44
|
+
* this loader exists never to do. So the grammar has no `when` and no
|
|
45
|
+
* expression language of any kind — a conditional a file cannot express is a
|
|
46
|
+
* conditional that stays in code:
|
|
47
|
+
*
|
|
48
|
+
* skillGraph({ skills, steps: [{ from: 'billing', to: 'escalation',
|
|
49
|
+
* when: r => JSON.parse(r.result).tier > 2 }] });
|
|
50
|
+
*
|
|
51
|
+
* Anything that is not one of the three forms is refused with the whole grammar
|
|
52
|
+
* quoted, rather than half-understood by a parser inventing a mini-language.
|
|
53
|
+
*
|
|
54
|
+
* Zone: HOST (it belongs to the file loader). Pure over strings all the same —
|
|
55
|
+
* it reads no filesystem; `skillsFromDir.ts` hands it the parsed lines.
|
|
56
|
+
*/
|
|
57
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
58
|
+
exports.toGraphSteps = exports.readDeclaredRoutes = void 0;
|
|
59
|
+
const toolOutcome_js_1 = require("./toolOutcome.js");
|
|
60
|
+
/** The grammar, quoted back by every refusal — one string, so the three forms
|
|
61
|
+
* can never be described two different ways. */
|
|
62
|
+
const ROUTE_GRAMMAR = ' - <skill> (no guard — a model edge: the graph draws it and ' +
|
|
63
|
+
'read_skill may take it)\n' +
|
|
64
|
+
" - <skill>: on <tool_name> (this skill's own tool returned)\n" +
|
|
65
|
+
' - <skill>: status=denied (a tool of this skill declared that outcome)\n' +
|
|
66
|
+
' - <skill>: on <tool_name> status=denied,failure\n' +
|
|
67
|
+
`Statuses: ${toolOutcome_js_1.TOOL_RESULT_STATUSES.join(', ')}.`;
|
|
68
|
+
/** `on <tool>`, `status=a,b`, or both in that order. Anything else is refused. */
|
|
69
|
+
const GUARD_RE = /^(?:on\s+([A-Za-z0-9_-]+))?\s*(?:status=([A-Za-z,\s]+))?$/;
|
|
70
|
+
/**
|
|
71
|
+
* Read one file's `routes:` items into declared routes, refusing every shape
|
|
72
|
+
* the grammar does not carry. Pure; every message names the file and the line,
|
|
73
|
+
* because "malformed routes" over a directory of forty runbooks has told the
|
|
74
|
+
* author nothing.
|
|
75
|
+
*
|
|
76
|
+
* @param items the `routes:` block-list items, in file order.
|
|
77
|
+
* @param file the path, quoted by every refusal.
|
|
78
|
+
* @param toolNames this file's own `tools:` — a guard may only name one of
|
|
79
|
+
* them (undefined when the file declared no tools at all).
|
|
80
|
+
*/
|
|
81
|
+
function readDeclaredRoutes(items, file, toolNames) {
|
|
82
|
+
if (items.length === 0) {
|
|
83
|
+
throw new Error(`skillsFromDir: '${file}' declares 'routes' with no items. Say what you mean and omit ` +
|
|
84
|
+
`the key — a skill that routes nowhere is byte-identical to one that never heard of ` +
|
|
85
|
+
`routes. Otherwise:\nroutes:\n${ROUTE_GRAMMAR}`);
|
|
86
|
+
}
|
|
87
|
+
const declared = new Set(toolNames ?? []);
|
|
88
|
+
const seen = new Set();
|
|
89
|
+
return items.map((item) => {
|
|
90
|
+
if (item.key.length === 0) {
|
|
91
|
+
throw new Error(`skillsFromDir: '${file}' line ${item.line}: this route names no skill. Every route ` +
|
|
92
|
+
`is:\n${ROUTE_GRAMMAR}`);
|
|
93
|
+
}
|
|
94
|
+
if (seen.has(item.key)) {
|
|
95
|
+
throw new Error(`skillsFromDir: '${file}' line ${item.line}: routes to '${item.key}' twice. Two edges ` +
|
|
96
|
+
`between the same pair means the first one that fires wins and the second is dead ` +
|
|
97
|
+
`wiring — keep the guard you meant, and drop the other.`);
|
|
98
|
+
}
|
|
99
|
+
seen.add(item.key);
|
|
100
|
+
const guard = item.value?.trim() ?? '';
|
|
101
|
+
if (guard.length === 0)
|
|
102
|
+
return { to: item.key, line: item.line };
|
|
103
|
+
const parsed = GUARD_RE.exec(guard);
|
|
104
|
+
const toolName = parsed?.[1];
|
|
105
|
+
const statusList = parsed?.[2];
|
|
106
|
+
if (parsed === null || (toolName === undefined && statusList === undefined)) {
|
|
107
|
+
throw new Error(`skillsFromDir: '${file}' line ${item.line}: the route to '${item.key}' declares the ` +
|
|
108
|
+
`guard '${guard}', which this grammar cannot express. A SKILL.md PICKS, it never ` +
|
|
109
|
+
`DEFINES — a \`when\` predicate is code, and nothing in a SKILL.md is ever ` +
|
|
110
|
+
`evaluated, so the only guards a file can carry are the two DATA conditions a route ` +
|
|
111
|
+
`already has:\n${ROUTE_GRAMMAR}\nA conditional a file cannot express stays in code: ` +
|
|
112
|
+
`skillGraph({ skills, steps: [{ from: '<this skill>', to: '${item.key}', when: r => ` +
|
|
113
|
+
`… }] }).`);
|
|
114
|
+
}
|
|
115
|
+
if (toolName !== undefined && !declared.has(toolName)) {
|
|
116
|
+
throw new Error(`skillsFromDir: '${file}' line ${item.line}: the route to '${item.key}' fires on ` +
|
|
117
|
+
`'${toolName}', which is not in this file's 'tools'${toolNames === undefined ? ' (this file declares none)' : ` (${toolNames.join(', ')})`}. An edge out of this skill fires on THIS skill's work, so it may only name a tool ` +
|
|
118
|
+
`the skill carries — add it to 'tools:', fix the name, or declare this edge in code ` +
|
|
119
|
+
`where the whole agent's tools are in hand.`);
|
|
120
|
+
}
|
|
121
|
+
const statuses = (statusList ?? '')
|
|
122
|
+
.split(',')
|
|
123
|
+
.map((s) => s.trim())
|
|
124
|
+
.filter((s) => s.length > 0);
|
|
125
|
+
for (const status of statuses) {
|
|
126
|
+
if (!toolOutcome_js_1.TOOL_RESULT_STATUSES.includes(status)) {
|
|
127
|
+
throw new Error(`skillsFromDir: '${file}' line ${item.line}: the route to '${item.key}' names the ` +
|
|
128
|
+
`status '${status}', which is not one this library has. The vocabulary is closed ` +
|
|
129
|
+
`so both sides spell an outcome identically: ${toolOutcome_js_1.TOOL_RESULT_STATUSES.join(', ')}.`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
to: item.key,
|
|
134
|
+
...(toolName !== undefined && { onToolReturn: toolName }),
|
|
135
|
+
...(statuses.length > 0 && { onToolStatus: statuses }),
|
|
136
|
+
line: item.line,
|
|
137
|
+
};
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
exports.readDeclaredRoutes = readDeclaredRoutes;
|
|
141
|
+
/**
|
|
142
|
+
* Resolve one file's declared routes into graph steps, refusing an id no
|
|
143
|
+
* SKILL.md in the directory declares.
|
|
144
|
+
*
|
|
145
|
+
* The refusal lists what IS available and fails the whole load. A route to a
|
|
146
|
+
* name nothing declares is the one mistake that cannot be reported later: the
|
|
147
|
+
* loader would return a skill set the graph then wires with a missing edge, and
|
|
148
|
+
* a graph that silently does not route is exactly the failure the check-up
|
|
149
|
+
* exists to prevent. Half a graph is not a smaller version of the graph.
|
|
150
|
+
*
|
|
151
|
+
* @param from the id of the skill whose file declared these routes.
|
|
152
|
+
* @param file that skill's path, quoted by the refusal.
|
|
153
|
+
* @param known every skill id the directory declared.
|
|
154
|
+
*/
|
|
155
|
+
function toGraphSteps(from, routes, file, known) {
|
|
156
|
+
return routes.map((route) => {
|
|
157
|
+
if (!known.has(route.to)) {
|
|
158
|
+
const available = [...known].sort().join(', ');
|
|
159
|
+
throw new Error(`skillsFromDir: '${file}' line ${route.line} routes to '${route.to}', which no ` +
|
|
160
|
+
`SKILL.md in this directory declares. A route NAMES a skill; a file can never ` +
|
|
161
|
+
`define one, so an unresolved id would leave you a graph with a missing edge that ` +
|
|
162
|
+
`nothing routes and nothing reports. Available skills: ${available}. Fix the name, ` +
|
|
163
|
+
`add the skill folder, or declare this edge in code.`);
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
from,
|
|
167
|
+
to: route.to,
|
|
168
|
+
...(route.onToolReturn !== undefined && { onToolReturn: route.onToolReturn }),
|
|
169
|
+
...(route.onToolStatus !== undefined && { onToolStatus: route.onToolStatus }),
|
|
170
|
+
};
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
exports.toGraphSteps = toGraphSteps;
|
|
174
|
+
//# sourceMappingURL=skillsFromDirRoutes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skillsFromDirRoutes.js","sourceRoot":"","sources":["../../../src/lib/injection-engine/skillsFromDirRoutes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* startRuleClaim — WHO CLAIMS A PHRASE. The one place that answers it.
|
|
4
|
+
*
|
|
5
|
+
* Two check-ups ask the same question of a graph's start rules and want
|
|
6
|
+
* opposite answers:
|
|
7
|
+
*
|
|
8
|
+
* • `skillExamples.ts` declares a phrase and asserts THIS rule claims it;
|
|
9
|
+
* • `skillNeverRoutes.ts` declares a phrase and asserts NO rule claims it.
|
|
10
|
+
*
|
|
11
|
+
* The question underneath is identical — run the compiled conditions over one
|
|
12
|
+
* concrete phrase, on the context a turn's first iteration really hands a start
|
|
13
|
+
* rule, and see who says yes. Two copies of that would drift the moment one of
|
|
14
|
+
* them learned something about the router the other did not, and the two would
|
|
15
|
+
* then disagree about the same graph. So it lives here, once, and the modules
|
|
16
|
+
* that report keep only their own sentences.
|
|
17
|
+
*
|
|
18
|
+
* Nothing here decides SEVERITY or writes a message — that is the reporting
|
|
19
|
+
* module's job, because the same "no" means different things to a positive and
|
|
20
|
+
* a negative assertion. This module only runs predicates and names conditions.
|
|
21
|
+
*
|
|
22
|
+
* Zone: PURE CORE (no engine, no loop). Pinned by
|
|
23
|
+
* `test/lib/injection-engine/skill-graph-fence.test.ts`.
|
|
24
|
+
*/
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.claimLaws = exports.describeCondition = exports.COLD_CONTEXT_PHRASE = exports.coldContext = exports.runsOn = void 0;
|
|
27
|
+
const skillMatch_js_1 = require("./skillMatch.js");
|
|
28
|
+
/**
|
|
29
|
+
* Run one entry's condition over one phrase, on a COLD-START context — the
|
|
30
|
+
* context a turn's first iteration really hands a start rule: iteration 1, the
|
|
31
|
+
* phrase as `userMessage`, no history, no cursor, no tool results. A throw is
|
|
32
|
+
* reported as `'threw'` and treated as a no-match by every caller, which is
|
|
33
|
+
* exactly what the cursor resolver does with it at run time (so a claim made
|
|
34
|
+
* here stays true of the run).
|
|
35
|
+
*
|
|
36
|
+
* An entry with NO condition matches everything: that is the cold walk's law
|
|
37
|
+
* (`if (!e.when) return { to: e.id }`), not a shortcut.
|
|
38
|
+
*/
|
|
39
|
+
function runsOn(entry, phrase) {
|
|
40
|
+
if (entry.when === undefined)
|
|
41
|
+
return 'match';
|
|
42
|
+
try {
|
|
43
|
+
return entry.when(coldContext(phrase)) ? 'match' : 'no-match';
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return 'threw';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.runsOn = runsOn;
|
|
50
|
+
/** The one context every predicate in a phrase check is judged on. */
|
|
51
|
+
function coldContext(userMessage) {
|
|
52
|
+
return { iteration: 1, userMessage, history: [], activatedInjectionIds: [] };
|
|
53
|
+
}
|
|
54
|
+
exports.coldContext = coldContext;
|
|
55
|
+
/** The one context every predicate here is judged on, spelled out for the
|
|
56
|
+
* reader of a message — a check that names its own inputs can be argued with;
|
|
57
|
+
* one that hides them can only be guessed at. Kept as ONE string so every
|
|
58
|
+
* message describes the SAME context {@link coldContext} really builds. */
|
|
59
|
+
exports.COLD_CONTEXT_PHRASE = 'a COLD-START context (iteration 1, the phrase as `userMessage`, empty `history`, no ' +
|
|
60
|
+
'cursor and no activated injections)';
|
|
61
|
+
/** How a rule's condition is named in a message: the data matcher quoted back,
|
|
62
|
+
* the honest word for opaque code — or, for an entry that declares neither,
|
|
63
|
+
* what having no condition MEANS. Naming a `when` predicate an unconditional
|
|
64
|
+
* entry does not have is how a report describes a graph nobody wrote. */
|
|
65
|
+
function describeCondition(entry) {
|
|
66
|
+
if (entry.match !== undefined)
|
|
67
|
+
return `its matcher \`${(0, skillMatch_js_1.plainMatchCaption)(entry.match)}\``;
|
|
68
|
+
return entry.when === undefined
|
|
69
|
+
? 'declares no `match` and no `when`, so it claims every message'
|
|
70
|
+
: 'its `when` predicate';
|
|
71
|
+
}
|
|
72
|
+
exports.describeCondition = describeCondition;
|
|
73
|
+
/** Build both laws' claim finders over one entry list, in declaration order. */
|
|
74
|
+
function claimLaws(entries) {
|
|
75
|
+
const nonIntent = entries
|
|
76
|
+
.map((entry, index) => ({ entry, index }))
|
|
77
|
+
.filter(({ entry }) => entry.match?.kind !== 'intent');
|
|
78
|
+
const ruleClaimants = nonIntent.filter(({ entry }) => entry.when !== undefined);
|
|
79
|
+
return {
|
|
80
|
+
underColdWalk: (phrase) => nonIntent.find(({ entry }) => runsOn(entry, phrase) === 'match'),
|
|
81
|
+
underCascade: (phrase) => ruleClaimants.find(({ entry }) => runsOn(entry, phrase) === 'match'),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
exports.claimLaws = claimLaws;
|
|
85
|
+
//# sourceMappingURL=startRuleClaim.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startRuleClaim.js","sourceRoot":"","sources":["../../../src/lib/injection-engine/startRuleClaim.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;;AAGH,mDAAyE;AAiBzE;;;;;;;;;;GAUG;AACH,SAAgB,MAAM,CAAC,KAAoB,EAAE,MAAc;IACzD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAC7C,IAAI,CAAC;QACH,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAPD,wBAOC;AAED,sEAAsE;AACtE,SAAgB,WAAW,CAAC,WAAmB;IAC7C,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,qBAAqB,EAAE,EAAE,EAAE,CAAC;AAC/E,CAAC;AAFD,kCAEC;AAED;;;4EAG4E;AAC/D,QAAA,mBAAmB,GAC9B,sFAAsF;IACtF,qCAAqC,CAAC;AAQxC;;;0EAG0E;AAC1E,SAAgB,iBAAiB,CAAC,KAAoB;IACpD,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,iBAAiB,IAAA,iCAAiB,EAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;IAC1F,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS;QAC7B,CAAC,CAAC,+DAA+D;QACjE,CAAC,CAAC,sBAAsB,CAAC;AAC7B,CAAC;AALD,8CAKC;AAwBD,gFAAgF;AAChF,SAAgB,SAAS,CAAC,OAAiC;IACzD,MAAM,SAAS,GAAG,OAAO;SACtB,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;SACzC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAChF,OAAO;QACL,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC;QAC3F,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC;KAC/F,CAAC;AACJ,CAAC;AATD,8BASC"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* tool-effects module for one string union: the loop's vocabulary embedded
|
|
12
12
|
* in the graph's contract, pointing the dependency the wrong way.
|
|
13
13
|
*
|
|
14
|
-
* So the
|
|
14
|
+
* So the words moved DOWN here — a module with zero imports that both
|
|
15
15
|
* sides read. `core/agent/toolEffects.ts` re-exports them under the same
|
|
16
16
|
* names, so every existing import path is unchanged; that module remains
|
|
17
17
|
* the owner of the ENVELOPE grammar (the two effect kinds, the recognizer,
|
|
@@ -30,5 +30,6 @@ exports.TOOL_RESULT_STATUSES = [
|
|
|
30
30
|
'invalid',
|
|
31
31
|
'partial',
|
|
32
32
|
'pending',
|
|
33
|
+
'absent',
|
|
33
34
|
];
|
|
34
35
|
//# sourceMappingURL=toolOutcome.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolOutcome.js","sourceRoot":"","sources":["../../../src/lib/injection-engine/toolOutcome.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;
|
|
1
|
+
{"version":3,"file":"toolOutcome.js","sourceRoot":"","sources":["../../../src/lib/injection-engine/toolOutcome.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AA0BH,mEAAmE;AACtD,QAAA,oBAAoB,GAAgC;IAC/D,SAAS;IACT,SAAS;IACT,QAAQ;IACR,SAAS;IACT,SAAS;IACT,SAAS;IACT,QAAQ;CACT,CAAC"}
|
|
@@ -320,6 +320,14 @@ export type AgentCoreSessionsOptions = AgentCoreFileSessionsOptions | AgentCoreM
|
|
|
320
320
|
* refused by name too (`UnreadableEnvelopeError`), never answered with a fresh
|
|
321
321
|
* start. Only a session that was never written hydrates as `undefined`.
|
|
322
322
|
*
|
|
323
|
+
* **The two modes differ on retention (9.42.0), and the difference is
|
|
324
|
+
* reported rather than smoothed over.** `'session-storage'` owns its file, so
|
|
325
|
+
* it implements the port's optional `retention()` as a sweep you call.
|
|
326
|
+
* `'memory'` appends events to a service whose expiry belongs to the memory
|
|
327
|
+
* resource an operator configured, and this shim has no delete on its surface
|
|
328
|
+
* — so it implements no retention member at all, and `sessionRetention()`
|
|
329
|
+
* refuses BY NAME rather than reporting a sweep that would delete nothing.
|
|
330
|
+
*
|
|
323
331
|
* @example Survive a stop/resume, no AWS SDK required
|
|
324
332
|
* agentCoreSessions({ store: 'session-storage' });
|
|
325
333
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentcore.d.ts","sourceRoot":"","sources":["../../../../src/adapters/hosting/agentcore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;;AAMH,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACd,QAAQ,EAER,QAAQ,EACT,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"agentcore.d.ts","sourceRoot":"","sources":["../../../../src/adapters/hosting/agentcore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;;AAMH,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACd,QAAQ,EAER,QAAQ,EACT,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAIjB,MAAM,wBAAwB,CAAC;AA0GhC,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;OAOG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC;IAC9B;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,WAAW,EAAE,MAAM,CAAC;IAC7C;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,CACrB,GAAG,EAAE,OAAO,WAAW,EAAE,eAAe,EACxC,GAAG,EAAE,OAAO,WAAW,EAAE,cAAc,KACpC,IAAI,CAAC;CACX;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,OAAO,GAAG,QAAQ,CAuEnE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,cAAc,GAAG,qBAAqB,CAgBtF;AA0FD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,2BAAgC,GAAG,QAAQ,CAyBxF;AAID;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GAAG,QAAQ,CAAC;AAEjE,+DAA+D;AAC/D,eAAO,MAAM,4BAA4B,2BAA2B,CAAC;AAErE,wCAAwC;AACxC,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,kEAAkE;AAClE,MAAM,WAAW,qBAAqB;IACpC,gCAAgC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;;;;OAOG;IACH,WAAW,CAAC,KAAK,EAAE;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,kBAAkB,CAAC;KAC9B,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClB,8EAA8E;IAC9E,UAAU,CAAC,KAAK,EAAE;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,SAAS,qBAAqB,EAAE,CAAA;KAAE,CAAC,CAAC;CAC3D;AAED,yCAAyC;AACzC,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,MAAM,CAAC,EAAE,0BAA0B,CAAC;IAC7C,iEAAiE;IACjE,QAAQ,CAAC,OAAO,CAAC,EAAE,0BAA0B,CAAC;IAC9C,gGAAgG;IAChG,QAAQ,CAAC,IAAI,CAAC,EAAE,gCAAgC,CAAC;CAClD;AAED,6CAA6C;AAC7C,MAAM,MAAM,wBAAwB,GAChC,4BAA4B,GAC5B,8BAA8B,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,gBAAgB,CAErF;AAkRD,0EAA0E;AAC1E,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,sBAAsB,CAAC,EAAE,KAAK,MAAM,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK;QACrE,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KACtC,CAAC;IACF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,KAAK,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAC9D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,KAAK,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAC9D"}
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
* containers, one conversation" answer Google has.
|
|
12
12
|
*
|
|
13
13
|
* ── The shape, said plainly ─────────────────────────────────────────────────
|
|
14
|
-
* One collection. One document per session.
|
|
14
|
+
* One collection. One document per session. Seven fields:
|
|
15
15
|
*
|
|
16
|
-
* sessionId · format · savedAt · envelope · owner · messageCount
|
|
16
|
+
* sessionId · format · savedAt · envelope · owner · messageCount · expiresAt
|
|
17
17
|
*
|
|
18
18
|
* That is the SQLite table, moved. It is deliberately the same shape, because
|
|
19
19
|
* the two stores implement the same port under the same laws, and a reader who
|
|
@@ -95,6 +95,45 @@
|
|
|
95
95
|
* in, and names those fields rather than restating the service's message — see
|
|
96
96
|
* {@link firestoreFailure} for why no Google text is ever echoed here.
|
|
97
97
|
*
|
|
98
|
+
* ── Retention: a SECOND timestamp, not a converted one (9.42.0) ─────────────
|
|
99
|
+
* A native Firestore TTL policy deletes a document when a field of type
|
|
100
|
+
* **Timestamp** is in the past. `savedAt` is a NUMBER — epoch milliseconds —
|
|
101
|
+
* so until this release an operator could not point a policy at this
|
|
102
|
+
* collection at all without a library change. The fix is a second field,
|
|
103
|
+
* `expiresAt`, written as a `Date` (the client stores one as a Timestamp) on
|
|
104
|
+
* every persist, holding `savedAt + expireAfterMs`. Give the store no
|
|
105
|
+
* `expireAfterMs` and the field is written as `null`, which a TTL policy
|
|
106
|
+
* ignores, and nothing about this release changes.
|
|
107
|
+
*
|
|
108
|
+
* **`savedAt` was NOT converted, and that is the load-bearing decision.** It is
|
|
109
|
+
* the ordering key of the composite index, the field the listing sorts by, and
|
|
110
|
+
* the first half of every cursor this store has ever minted (`<savedAt>:<docId>`,
|
|
111
|
+
* parsed with `parseFloat` and handed back to `startAfter` as a number).
|
|
112
|
+
* Converting it would have meant a new index, a new cursor grammar, and every
|
|
113
|
+
* pagination token issued by an earlier release becoming unreadable — but the
|
|
114
|
+
* decisive one is quieter: **Firestore's value ordering sorts by TYPE first.**
|
|
115
|
+
* Every number sorts before every timestamp. A collection holding old
|
|
116
|
+
* number-`savedAt` documents beside new timestamp-`savedAt` ones would list
|
|
117
|
+
* them in two blocks, all of one type then all of the other, with a person's
|
|
118
|
+
* conversations silently out of order by the type of the field rather than by
|
|
119
|
+
* when they were written. A second field costs one small write per turn and
|
|
120
|
+
* has no such shadow.
|
|
121
|
+
*
|
|
122
|
+
* So the migration consequence, plainly:
|
|
123
|
+
*
|
|
124
|
+
* • **Every document already stored stays readable and listable.** Nothing
|
|
125
|
+
* about `savedAt`, the index, the cursor or the query changed, and a
|
|
126
|
+
* document written by 9.33–9.41 is read by this release unchanged.
|
|
127
|
+
* • **Old documents do not start expiring.** They carry no `expiresAt`, and
|
|
128
|
+
* a TTL policy ignores a document whose field is missing. A conversation
|
|
129
|
+
* that is still being used gains one on its next turn; a conversation
|
|
130
|
+
* nobody ever writes to again keeps living. If those matter, delete them
|
|
131
|
+
* by hand once (a query on `savedAt` plus `forget`, or a `gcloud`
|
|
132
|
+
* bulk-delete) — this adapter will not walk your collection behind your
|
|
133
|
+
* back.
|
|
134
|
+
* • **The policy is still yours to create.** `retention().enableWith` prints
|
|
135
|
+
* the exact command with your collection and database in it.
|
|
136
|
+
*
|
|
98
137
|
* ── The ceiling, since a store should name its own ──────────────────────────
|
|
99
138
|
* A Firestore document is capped at 1 MiB. A conversation whose stored envelope
|
|
100
139
|
* approaches that is refused BY NAME before the write
|
|
@@ -122,8 +161,29 @@
|
|
|
122
161
|
* for it. So the write is a transaction.
|
|
123
162
|
*
|
|
124
163
|
* ── How much of this is verified ────────────────────────────────────────────
|
|
125
|
-
* **
|
|
126
|
-
* against a
|
|
164
|
+
* **Field-validated except the ownership refusal (2026-08).** An independent
|
|
165
|
+
* field trial ran THIS adapter against a real Firestore and exercised seven of
|
|
166
|
+
* its eight areas live: the round trip, the server-side indexed listing with
|
|
167
|
+
* its document-name tiebreak and real cursor, the missing-index refusal, the
|
|
168
|
+
* hashed document name, the size ceiling, ownership derived from the envelope,
|
|
169
|
+
* and `forget`.
|
|
170
|
+
*
|
|
171
|
+
* The eighth is named because under-claiming and over-claiming are the same
|
|
172
|
+
* defect: **the refusal of a turn signed by somebody else** — the
|
|
173
|
+
* `resolveSessionOwner` conflict this file's `persist` raises out of the
|
|
174
|
+
* transaction — was NOT exercised, because it did not exist when the trial
|
|
175
|
+
* ran. It is held by tests here, including the contested-write case of the
|
|
176
|
+
* shared conformance battery, and by nothing in the field. Two writers racing
|
|
177
|
+
* for one fresh session against a real Firestore, with the real client's
|
|
178
|
+
* transaction retry underneath, is exactly the shape a double models by
|
|
179
|
+
* assumption; the sibling Vertex adapter's equivalent was found in the field
|
|
180
|
+
* and not in a test suite.
|
|
181
|
+
*
|
|
182
|
+
* This section said "NOT field-validated. Nothing here has been run against a
|
|
183
|
+
* live Firestore" for two releases after that stopped being true. Under-claiming
|
|
184
|
+
* is the safe direction and it is still the same defect class the trials keep
|
|
185
|
+
* reporting: a status that does not track the evidence is a status nobody can
|
|
186
|
+
* use, whichever way it is wrong.
|
|
127
187
|
*
|
|
128
188
|
* The pin is the `firestoreSessions` row of `GOOGLE_SURFACE_PINS` in
|
|
129
189
|
* `test/adapters/google/googlePin.ts`, asserted by
|
|
@@ -148,7 +208,8 @@
|
|
|
148
208
|
* everywhere. That the row spells those members the way Google does is held by a
|
|
149
209
|
* hand check against a real install, not by a test that runs here.
|
|
150
210
|
*
|
|
151
|
-
* The DESIGN
|
|
211
|
+
* The DESIGN was informed, before any of that, by an EARLIER and separate trial
|
|
212
|
+
* of a DIFFERENT Firestore
|
|
152
213
|
* session adapter, which ran against a real Firestore and passed eight ownership
|
|
153
214
|
* and history checks — and whose own report named the defect this adapter does
|
|
154
215
|
* not reproduce: that adapter read every document for one owner, sorted them in
|
|
@@ -158,7 +219,7 @@
|
|
|
158
219
|
* real service; it proves nothing about this file's query, cursor, transaction
|
|
159
220
|
* or index, because that adapter had none of them.
|
|
160
221
|
*/
|
|
161
|
-
import type { SessionLifecycle } from '../../hosting/types.js';
|
|
222
|
+
import type { SessionExpiryPolicy, SessionLifecycle } from '../../hosting/types.js';
|
|
162
223
|
/** One document as it came back. `firestore.d.ts` line 1605. */
|
|
163
224
|
export interface FirestoreDocumentSnapshotLike {
|
|
164
225
|
/** A PROPERTY, not a method — `readonly exists: boolean`. */
|
|
@@ -282,6 +343,39 @@ export interface FirestoreSessionsOptions {
|
|
|
282
343
|
* still loading the module?" is a fair question to have answered here.
|
|
283
344
|
*/
|
|
284
345
|
readonly firestore?: FirestoreLike;
|
|
346
|
+
/**
|
|
347
|
+
* How long after its last turn a conversation should expire, in
|
|
348
|
+
* milliseconds. Omit and nothing expires (9.42.0).
|
|
349
|
+
*
|
|
350
|
+
* Setting it makes every write stamp {@link EXPIRES_AT_FIELD} —
|
|
351
|
+
* `savedAt + expireAfterMs`, as a timestamp — which is the field a **native
|
|
352
|
+
* Firestore TTL policy** reads. The policy itself is yours to enable, once,
|
|
353
|
+
* with the command {@link FirestoreSessions.retention} hands you; this store
|
|
354
|
+
* writes what it reads and never deletes a document on a clock of its own.
|
|
355
|
+
* Both halves are needed and neither is silent about the other: with no
|
|
356
|
+
* policy the field is inert data, and with no `expireAfterMs` the policy has
|
|
357
|
+
* nothing to act on.
|
|
358
|
+
*
|
|
359
|
+
* **The clock is the conversation's own `savedAt`, not this process's.** So
|
|
360
|
+
* the expiry is IDLE time: every turn pushes it out, and a conversation dies
|
|
361
|
+
* `expireAfterMs` after somebody last spoke, which is what a session
|
|
362
|
+
* retention rule almost always means. It also makes the stamp a pure
|
|
363
|
+
* function of the envelope — the same conversation stamps the same instant
|
|
364
|
+
* on any machine, whatever its clock says.
|
|
365
|
+
*
|
|
366
|
+
* **It does not reach backwards.** Documents written before this was
|
|
367
|
+
* configured carry no expiry field, and a TTL policy ignores a document
|
|
368
|
+
* whose field is missing — so old conversations expire only once they are
|
|
369
|
+
* written again. See the module header for what to do about the ones that
|
|
370
|
+
* never will be.
|
|
371
|
+
*
|
|
372
|
+
* Named `expireAfterMs` rather than `ttlMs` deliberately, even though the
|
|
373
|
+
* artifact stores in this package spell their dial the second way: theirs is
|
|
374
|
+
* stamped once at mint and measured from creation, and this one is measured
|
|
375
|
+
* from the LAST turn and moves on every write. One word for two clocks would
|
|
376
|
+
* be the cheaper name and the more expensive mistake.
|
|
377
|
+
*/
|
|
378
|
+
readonly expireAfterMs?: number;
|
|
285
379
|
/**
|
|
286
380
|
* @internal Test seam only — the `@google-cloud/firestore` module, injected.
|
|
287
381
|
* Lets the suite exercise every path (including the refusals) without a
|
|
@@ -292,6 +386,34 @@ export interface FirestoreSessionsOptions {
|
|
|
292
386
|
}
|
|
293
387
|
/** Where sessions live when the caller names no collection. */
|
|
294
388
|
export declare const DEFAULT_SESSION_COLLECTION = "agentfootprint_sessions";
|
|
389
|
+
/**
|
|
390
|
+
* The document field a native TTL policy is configured against (9.42.0).
|
|
391
|
+
*
|
|
392
|
+
* A SECOND field beside `savedAt`, never a change to it — see the module
|
|
393
|
+
* header for why converting the ordering key would have re-sorted every
|
|
394
|
+
* conversation already in the collection.
|
|
395
|
+
*
|
|
396
|
+
* Exported because an operator has to type this name into the console or the
|
|
397
|
+
* `gcloud` line, and a field name that lives only inside a string literal is a
|
|
398
|
+
* field name somebody will mistype at 2am.
|
|
399
|
+
*/
|
|
400
|
+
export declare const EXPIRES_AT_FIELD = "expiresAt";
|
|
401
|
+
/**
|
|
402
|
+
* The one step that turns the TTL policy on, with this store's own collection
|
|
403
|
+
* and database already in it.
|
|
404
|
+
*
|
|
405
|
+
* One spelling, shared by the retention answer and the documentation that
|
|
406
|
+
* quotes it, for the same reason the missing-index refusal prints the whole
|
|
407
|
+
* `gcloud` line: the person reading it can fix this in sixty seconds, and only
|
|
408
|
+
* if nobody makes them go and look up the flags first.
|
|
409
|
+
*
|
|
410
|
+
* `--database` is always printed, including for `(default)`, where gcloud
|
|
411
|
+
* would have assumed it — a project may hold several databases, and a policy
|
|
412
|
+
* created on the wrong one leaves conversations living forever with nothing to
|
|
413
|
+
* suggest why. Single-quoted, because `(default)` is bare parentheses and a
|
|
414
|
+
* syntax error in every shell this will be pasted into.
|
|
415
|
+
*/
|
|
416
|
+
export declare function ttlPolicyCommand(collection: string, database?: string): string;
|
|
295
417
|
/**
|
|
296
418
|
* Firestore's hard ceiling on one document, in bytes. Not ours — the service's.
|
|
297
419
|
*
|
|
@@ -321,6 +443,21 @@ export interface FirestoreSessions extends SessionLifecycle {
|
|
|
321
443
|
readonly collection: string;
|
|
322
444
|
/** Forget one session. A session that was never there is not an error. */
|
|
323
445
|
forget(sessionId: string): Promise<void>;
|
|
446
|
+
/**
|
|
447
|
+
* How conversations here stop existing: **the backend does it**, on a native
|
|
448
|
+
* TTL policy an operator enables once, against {@link EXPIRES_AT_FIELD}
|
|
449
|
+
* (9.42.0).
|
|
450
|
+
*
|
|
451
|
+
* Narrowed from the port's optional member to a required one, and to the one
|
|
452
|
+
* arm this store can be: a caller holding a `FirestoreSessions` needs no
|
|
453
|
+
* feature check and no branch, and gets a compile error rather than a
|
|
454
|
+
* runtime surprise if they reach for a sweep that does not exist here.
|
|
455
|
+
*
|
|
456
|
+
* `active` says whether this store was built with `expireAfterMs` and is
|
|
457
|
+
* therefore stamping anything; `enableWith` is the exact command, with this
|
|
458
|
+
* store's collection and database already filled in.
|
|
459
|
+
*/
|
|
460
|
+
retention(): SessionExpiryPolicy;
|
|
324
461
|
/**
|
|
325
462
|
* The document name one session id maps to — the sha-256 above.
|
|
326
463
|
*
|
|
@@ -401,20 +538,31 @@ export declare class EnvelopeTooLargeError extends Error {
|
|
|
401
538
|
* Conversations in Firestore — a fleet-shared session store with no instance to
|
|
402
539
|
* run.
|
|
403
540
|
*
|
|
404
|
-
* **Status:
|
|
405
|
-
*
|
|
406
|
-
*
|
|
407
|
-
*
|
|
408
|
-
*
|
|
409
|
-
*
|
|
410
|
-
*
|
|
411
|
-
*
|
|
541
|
+
* **Status: field-validated except the ownership refusal (2026-08).** An
|
|
542
|
+
* independent field trial ran this adapter against a real Firestore and
|
|
543
|
+
* exercised seven of its eight areas live — round trip, indexed and cursored
|
|
544
|
+
* listing, the missing-index refusal, the hashed document name, the size
|
|
545
|
+
* ceiling, derived ownership and `forget`. The eighth, the refusal of a turn
|
|
546
|
+
* signed by somebody ELSE, was added after the trial and is held by tests
|
|
547
|
+
* here and by nothing in the field. Every SDK member it calls was read off a
|
|
548
|
+
* real install of `@google-cloud/firestore` 9.0.0 and hand-verified there; the
|
|
549
|
+
* test that re-checks those names against the real package SKIPS in this
|
|
550
|
+
* repository, because the package is deliberately not installed here. What
|
|
551
|
+
* runs in CI is the dispatch pin. See the module header for the full account.
|
|
412
552
|
*
|
|
413
553
|
* @throws FirestoreIndexMissingError from `listByUser` until the composite index
|
|
414
554
|
* exists — see the module header for the exact index.
|
|
415
555
|
* @throws EnvelopeTooLargeError from `persist` for a conversation above
|
|
416
556
|
* {@link FIRESTORE_MAX_ENVELOPE_BYTES}. Never truncated.
|
|
417
557
|
*
|
|
558
|
+
* @example Conversations that expire 30 days after their last turn
|
|
559
|
+
* const sessions = firestoreSessions({
|
|
560
|
+
* project: 'my-project',
|
|
561
|
+
* expireAfterMs: 30 * 24 * 60 * 60 * 1000,
|
|
562
|
+
* });
|
|
563
|
+
* // Then, ONCE, as an operator — the store prints the exact command:
|
|
564
|
+
* console.log(sessions.retention().enableWith);
|
|
565
|
+
*
|
|
418
566
|
* @example A standing agent whose conversations are shared across instances
|
|
419
567
|
* import { standingAgent, nodeHost } from 'agentfootprint/hosting';
|
|
420
568
|
* import { firestoreSessions } from 'agentfootprint/hosting';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firestoreSessions.d.ts","sourceRoot":"","sources":["../../../../src/adapters/hosting/firestoreSessions.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"firestoreSessions.d.ts","sourceRoot":"","sources":["../../../../src/adapters/hosting/firestoreSessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
* be read must never be answered with a fresh start — that failure is
|
|
101
101
|
* indistinguishable, from the outside, from a brand-new user.
|
|
102
102
|
*/
|
|
103
|
-
import type { CheckpointEnvelope, SessionLifecycle } from '../../hosting/types.js';
|
|
103
|
+
import type { CheckpointEnvelope, SessionExpiryPolicy, SessionLifecycle } from '../../hosting/types.js';
|
|
104
104
|
import { type AiPlatformConnection } from '../google/aiPlatform.js';
|
|
105
105
|
/**
|
|
106
106
|
* The `sessionState` key the envelope lives under.
|
|
@@ -195,6 +195,21 @@ export interface AgentEngineSessions extends SessionLifecycle {
|
|
|
195
195
|
readonly parent: string;
|
|
196
196
|
/** Forget one session. A session that was never there is not an error. */
|
|
197
197
|
forget(sessionId: string): Promise<void>;
|
|
198
|
+
/**
|
|
199
|
+
* How conversations here stop existing: **the service does it**, on the
|
|
200
|
+
* `ttl` this store was built with (9.42.0).
|
|
201
|
+
*
|
|
202
|
+
* Narrowed from the port's optional member to a required one, and to the one
|
|
203
|
+
* arm this store can be — a caller holding an `AgentEngineSessions` needs no
|
|
204
|
+
* feature check, and reaching for a sweep that does not exist here is a
|
|
205
|
+
* compile error rather than a surprise at 3am.
|
|
206
|
+
*
|
|
207
|
+
* There is nothing to call and nothing for a cron job to do. `active` says
|
|
208
|
+
* whether a `ttl` was given at all; `enableWith` says what to pass and
|
|
209
|
+
* repeats the two facts a caller has to plan around — the service's 24-hour
|
|
210
|
+
* floor, and that the value is sent on CREATE only.
|
|
211
|
+
*/
|
|
212
|
+
retention(): SessionExpiryPolicy;
|
|
198
213
|
/**
|
|
199
214
|
* Stop using this store. Idempotent, and **final** — reading or writing
|
|
200
215
|
* afterwards refuses by name rather than quietly reconnecting, because a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"googleAgentEngine.d.ts","sourceRoot":"","sources":["../../../../src/adapters/hosting/googleAgentEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqGG;AAKH,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAGjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAUL,KAAK,oBAAoB,EAI1B,MAAM,yBAAyB,CAAC;AAIjC;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,4BAA4B,CAAC;AAE3D,+CAA+C;AAC/C,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,KAAK,MAAM,CAAC,CAAC;IACzF;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,6DAA6D;AAC7D,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAE1D;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC;;;;;;;;OAQG;IACH,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,mBAAmB,
|
|
1
|
+
{"version":3,"file":"googleAgentEngine.d.ts","sourceRoot":"","sources":["../../../../src/adapters/hosting/googleAgentEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqGG;AAKH,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAGjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAUL,KAAK,oBAAoB,EAI1B,MAAM,yBAAyB,CAAC;AAIjC;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,4BAA4B,CAAC;AAE3D,+CAA+C;AAC/C,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,KAAK,MAAM,CAAC,CAAC;IACzF;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;OAOG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,6DAA6D;AAC7D,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAE1D;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC;;;;;;;;;;;;;OAaG;IACH,SAAS,IAAI,mBAAmB,CAAC;IACjC;;;;;;;;OAQG;IACH,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,mBAAmB,CAiV5F"}
|