agentfootprint 9.86.0 → 9.87.1
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/CHANGELOG.md +319 -8
- package/README.md +14 -0
- package/canonical-notes.json +1 -1
- package/dist/artifacts/placement.js +4 -0
- package/dist/artifacts/placement.js.map +1 -1
- package/dist/artifacts/present.js +6 -0
- package/dist/artifacts/present.js.map +1 -1
- package/dist/artifacts/wants.js +8 -0
- package/dist/artifacts/wants.js.map +1 -1
- package/dist/core/Agent.js +21 -7
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/LLMCall.js +2 -1
- package/dist/core/LLMCall.js.map +1 -1
- package/dist/core/agent/buildMessageApiChart.js +2 -1
- package/dist/core/agent/buildMessageApiChart.js.map +1 -1
- package/dist/core/agent/buildToolRegistry.js +4 -0
- package/dist/core/agent/buildToolRegistry.js.map +1 -1
- package/dist/core/agent/coverage/answer.js +4 -0
- package/dist/core/agent/coverage/answer.js.map +1 -1
- package/dist/core/agent/coverage/ledger.js +8 -2
- package/dist/core/agent/coverage/ledger.js.map +1 -1
- package/dist/core/agent/evidence/evidenceIndex.js +3 -0
- package/dist/core/agent/evidence/evidenceIndex.js.map +1 -1
- package/dist/core/agent/evidence/gate.js +3 -0
- package/dist/core/agent/evidence/gate.js.map +1 -1
- package/dist/core/agent/outputEnforcement.js +3 -0
- package/dist/core/agent/outputEnforcement.js.map +1 -1
- package/dist/core/agent/presentTool.js +3 -0
- package/dist/core/agent/presentTool.js.map +1 -1
- package/dist/core/agent/repeatedCall.js +3 -0
- package/dist/core/agent/repeatedCall.js.map +1 -1
- package/dist/core/agent/resultCeiling.js +3 -0
- package/dist/core/agent/resultCeiling.js.map +1 -1
- package/dist/core/agent/selfCallNotice.js +5 -0
- package/dist/core/agent/selfCallNotice.js.map +1 -1
- package/dist/core/agent/stagedRefs.js +5 -0
- package/dist/core/agent/stagedRefs.js.map +1 -1
- package/dist/core/agent/stages/callLLM.js +9 -0
- package/dist/core/agent/stages/callLLM.js.map +1 -1
- package/dist/core/agent/stages/evidenceRecheck.js +6 -0
- package/dist/core/agent/stages/evidenceRecheck.js.map +1 -1
- package/dist/core/agent/stages/stepNudge.js +5 -0
- package/dist/core/agent/stages/stepNudge.js.map +1 -1
- package/dist/core/agent/stages/toolCalls.js +136 -20
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/core/agent/stages/wrapUp.js +19 -4
- package/dist/core/agent/stages/wrapUp.js.map +1 -1
- package/dist/core/agent/window/notice.js +6 -0
- package/dist/core/agent/window/notice.js.map +1 -1
- package/dist/core/agent/window/summarize.js +4 -0
- package/dist/core/agent/window/summarize.js.map +1 -1
- package/dist/core/runbook/recording.js +3 -2
- package/dist/core/runbook/recording.js.map +1 -1
- package/dist/core/runbook/verdicts.js +3 -0
- package/dist/core/runbook/verdicts.js.map +1 -1
- package/dist/core/slots/buildToolsSlot.js +11 -0
- package/dist/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/esm/artifacts/placement.js +4 -0
- package/dist/esm/artifacts/placement.js.map +1 -1
- package/dist/esm/artifacts/present.js +6 -0
- package/dist/esm/artifacts/present.js.map +1 -1
- package/dist/esm/artifacts/wants.js +8 -0
- package/dist/esm/artifacts/wants.js.map +1 -1
- package/dist/esm/core/Agent.js +21 -7
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/LLMCall.js +2 -1
- package/dist/esm/core/LLMCall.js.map +1 -1
- package/dist/esm/core/agent/buildMessageApiChart.d.ts +2 -1
- package/dist/esm/core/agent/buildMessageApiChart.js +2 -1
- package/dist/esm/core/agent/buildMessageApiChart.js.map +1 -1
- package/dist/esm/core/agent/buildToolRegistry.js +4 -0
- package/dist/esm/core/agent/buildToolRegistry.js.map +1 -1
- package/dist/esm/core/agent/coverage/answer.js +4 -0
- package/dist/esm/core/agent/coverage/answer.js.map +1 -1
- package/dist/esm/core/agent/coverage/ledger.d.ts +5 -0
- package/dist/esm/core/agent/coverage/ledger.js +8 -2
- package/dist/esm/core/agent/coverage/ledger.js.map +1 -1
- package/dist/esm/core/agent/evidence/evidenceIndex.js +3 -0
- package/dist/esm/core/agent/evidence/evidenceIndex.js.map +1 -1
- package/dist/esm/core/agent/evidence/gate.js +3 -0
- package/dist/esm/core/agent/evidence/gate.js.map +1 -1
- package/dist/esm/core/agent/outputEnforcement.js +3 -0
- package/dist/esm/core/agent/outputEnforcement.js.map +1 -1
- package/dist/esm/core/agent/presentTool.js +3 -0
- package/dist/esm/core/agent/presentTool.js.map +1 -1
- package/dist/esm/core/agent/repeatedCall.js +3 -0
- package/dist/esm/core/agent/repeatedCall.js.map +1 -1
- package/dist/esm/core/agent/resultCeiling.js +3 -0
- package/dist/esm/core/agent/resultCeiling.js.map +1 -1
- package/dist/esm/core/agent/selfCallNotice.js +5 -0
- package/dist/esm/core/agent/selfCallNotice.js.map +1 -1
- package/dist/esm/core/agent/stagedRefs.js +5 -0
- package/dist/esm/core/agent/stagedRefs.js.map +1 -1
- package/dist/esm/core/agent/stages/callLLM.js +9 -0
- package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
- package/dist/esm/core/agent/stages/evidenceRecheck.js +6 -0
- package/dist/esm/core/agent/stages/evidenceRecheck.js.map +1 -1
- package/dist/esm/core/agent/stages/stepNudge.js +5 -0
- package/dist/esm/core/agent/stages/stepNudge.js.map +1 -1
- package/dist/esm/core/agent/stages/toolCalls.d.ts +16 -2
- package/dist/esm/core/agent/stages/toolCalls.js +136 -20
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/agent/stages/wrapUp.d.ts +11 -0
- package/dist/esm/core/agent/stages/wrapUp.js +19 -4
- package/dist/esm/core/agent/stages/wrapUp.js.map +1 -1
- package/dist/esm/core/agent/types.d.ts +5 -4
- package/dist/esm/core/agent/window/notice.js +6 -0
- package/dist/esm/core/agent/window/notice.js.map +1 -1
- package/dist/esm/core/agent/window/summarize.js +4 -0
- package/dist/esm/core/agent/window/summarize.js.map +1 -1
- package/dist/esm/core/runbook/recording.js +3 -2
- package/dist/esm/core/runbook/recording.js.map +1 -1
- package/dist/esm/core/runbook/verdicts.js +3 -0
- package/dist/esm/core/runbook/verdicts.js.map +1 -1
- package/dist/esm/core/slots/buildToolsSlot.js +11 -0
- package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/esm/events/eventTail.js +4 -0
- package/dist/esm/events/eventTail.js.map +1 -1
- package/dist/esm/events/payloads.d.ts +8 -0
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +9 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/integrity/disposition/ledger.js +0 -0
- package/dist/esm/integrity/disposition/ledger.js.map +1 -1
- package/dist/esm/lib/context-ledger/contextLedger.js +3 -0
- package/dist/esm/lib/context-ledger/contextLedger.js.map +1 -1
- package/dist/esm/lib/injection-engine/evaluator.js +3 -0
- package/dist/esm/lib/injection-engine/evaluator.js.map +1 -1
- package/dist/esm/lib/injection-engine/promptTemplate.js +4 -0
- package/dist/esm/lib/injection-engine/promptTemplate.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillGraph.js +17 -0
- package/dist/esm/lib/injection-engine/skillGraph.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillSteps.js +26 -2
- package/dist/esm/lib/injection-engine/skillSteps.js.map +1 -1
- package/dist/esm/lib/injection-engine/skillToolDescriptors.js +26 -0
- package/dist/esm/lib/injection-engine/skillToolDescriptors.js.map +1 -1
- package/dist/esm/lib/iterationBudget.js +4 -0
- package/dist/esm/lib/iterationBudget.js.map +1 -1
- package/dist/esm/lib/rag/defineRAG.js +4 -0
- package/dist/esm/lib/rag/defineRAG.js.map +1 -1
- package/dist/esm/lib/saidByPerson.js +4 -0
- package/dist/esm/lib/saidByPerson.js.map +1 -1
- package/dist/esm/lib/semantics/envelope.js +3 -0
- package/dist/esm/lib/semantics/envelope.js.map +1 -1
- package/dist/esm/lib/spokenIds.js +5 -0
- package/dist/esm/lib/spokenIds.js.map +1 -1
- package/dist/esm/lib/time-travel/index.d.ts +8 -0
- package/dist/esm/lib/time-travel/index.js +9 -0
- package/dist/esm/lib/time-travel/index.js.map +1 -0
- package/dist/esm/lib/time-travel/milestoneStops.d.ts +128 -0
- package/dist/esm/lib/time-travel/milestoneStops.js +179 -0
- package/dist/esm/lib/time-travel/milestoneStops.js.map +1 -0
- package/dist/esm/lib/trace-toolpack/debugPrompt.js +3 -0
- package/dist/esm/lib/trace-toolpack/debugPrompt.js.map +1 -1
- package/dist/esm/lib/trace-toolpack/traceToolpack.js +26 -14
- package/dist/esm/lib/trace-toolpack/traceToolpack.js.map +1 -1
- package/dist/esm/maps/engagement/lease.js +4 -0
- package/dist/esm/maps/engagement/lease.js.map +1 -1
- package/dist/esm/maps/engagement/parkCard.js +5 -0
- package/dist/esm/maps/engagement/parkCard.js.map +1 -1
- package/dist/esm/memory/beats/formatAsNarrative.js +4 -0
- package/dist/esm/memory/beats/formatAsNarrative.js.map +1 -1
- package/dist/esm/memory/causal/loadSnapshot.js +4 -0
- package/dist/esm/memory/causal/loadSnapshot.js.map +1 -1
- package/dist/esm/memory/facts/formatFacts.js +4 -0
- package/dist/esm/memory/facts/formatFacts.js.map +1 -1
- package/dist/esm/memory/stages/formatDefault.js +4 -0
- package/dist/esm/memory/stages/formatDefault.js.map +1 -1
- package/dist/esm/recorders/observability/FlowchartRecorder.js +3 -0
- package/dist/esm/recorders/observability/FlowchartRecorder.js.map +1 -1
- package/dist/esm/recorders/observability/recordRun.js +5 -0
- package/dist/esm/recorders/observability/recordRun.js.map +1 -1
- package/dist/esm/tool-providers/gatedTools.js +7 -0
- package/dist/esm/tool-providers/gatedTools.js.map +1 -1
- package/dist/esm/tool-providers/skillScopedTools.js +6 -0
- package/dist/esm/tool-providers/skillScopedTools.js.map +1 -1
- package/dist/events/eventTail.js +4 -0
- package/dist/events/eventTail.js.map +1 -1
- package/dist/index.js +115 -102
- package/dist/index.js.map +1 -1
- package/dist/integrity/disposition/ledger.js +0 -0
- package/dist/integrity/disposition/ledger.js.map +1 -1
- package/dist/lib/context-ledger/contextLedger.js +3 -0
- package/dist/lib/context-ledger/contextLedger.js.map +1 -1
- package/dist/lib/injection-engine/evaluator.js +3 -0
- package/dist/lib/injection-engine/evaluator.js.map +1 -1
- package/dist/lib/injection-engine/promptTemplate.js +4 -0
- package/dist/lib/injection-engine/promptTemplate.js.map +1 -1
- package/dist/lib/injection-engine/skillGraph.js +17 -0
- package/dist/lib/injection-engine/skillGraph.js.map +1 -1
- package/dist/lib/injection-engine/skillSteps.js +26 -2
- package/dist/lib/injection-engine/skillSteps.js.map +1 -1
- package/dist/lib/injection-engine/skillToolDescriptors.js +26 -0
- package/dist/lib/injection-engine/skillToolDescriptors.js.map +1 -1
- package/dist/lib/iterationBudget.js +4 -0
- package/dist/lib/iterationBudget.js.map +1 -1
- package/dist/lib/rag/defineRAG.js +4 -0
- package/dist/lib/rag/defineRAG.js.map +1 -1
- package/dist/lib/saidByPerson.js +4 -0
- package/dist/lib/saidByPerson.js.map +1 -1
- package/dist/lib/semantics/envelope.js +3 -0
- package/dist/lib/semantics/envelope.js.map +1 -1
- package/dist/lib/spokenIds.js +5 -0
- package/dist/lib/spokenIds.js.map +1 -1
- package/dist/lib/time-travel/index.js +15 -0
- package/dist/lib/time-travel/index.js.map +1 -0
- package/dist/lib/time-travel/milestoneStops.js +184 -0
- package/dist/lib/time-travel/milestoneStops.js.map +1 -0
- package/dist/lib/trace-toolpack/debugPrompt.js +3 -0
- package/dist/lib/trace-toolpack/debugPrompt.js.map +1 -1
- package/dist/lib/trace-toolpack/traceToolpack.js +26 -14
- package/dist/lib/trace-toolpack/traceToolpack.js.map +1 -1
- package/dist/maps/engagement/lease.js +4 -0
- package/dist/maps/engagement/lease.js.map +1 -1
- package/dist/maps/engagement/parkCard.js +5 -0
- package/dist/maps/engagement/parkCard.js.map +1 -1
- package/dist/memory/beats/formatAsNarrative.js +4 -0
- package/dist/memory/beats/formatAsNarrative.js.map +1 -1
- package/dist/memory/causal/loadSnapshot.js +4 -0
- package/dist/memory/causal/loadSnapshot.js.map +1 -1
- package/dist/memory/facts/formatFacts.js +4 -0
- package/dist/memory/facts/formatFacts.js.map +1 -1
- package/dist/memory/stages/formatDefault.js +4 -0
- package/dist/memory/stages/formatDefault.js.map +1 -1
- package/dist/recorders/observability/FlowchartRecorder.js +3 -0
- package/dist/recorders/observability/FlowchartRecorder.js.map +1 -1
- package/dist/recorders/observability/recordRun.js +5 -0
- package/dist/recorders/observability/recordRun.js.map +1 -1
- package/dist/tool-providers/gatedTools.js +7 -0
- package/dist/tool-providers/gatedTools.js.map +1 -1
- package/dist/tool-providers/skillScopedTools.js +6 -0
- package/dist/tool-providers/skillScopedTools.js.map +1 -1
- package/dist/types/artifacts/placement.d.ts.map +1 -1
- package/dist/types/artifacts/present.d.ts.map +1 -1
- package/dist/types/artifacts/wants.d.ts.map +1 -1
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/LLMCall.d.ts.map +1 -1
- package/dist/types/core/agent/buildMessageApiChart.d.ts +2 -1
- package/dist/types/core/agent/buildMessageApiChart.d.ts.map +1 -1
- package/dist/types/core/agent/buildToolRegistry.d.ts.map +1 -1
- package/dist/types/core/agent/coverage/answer.d.ts.map +1 -1
- package/dist/types/core/agent/coverage/ledger.d.ts +5 -0
- package/dist/types/core/agent/coverage/ledger.d.ts.map +1 -1
- package/dist/types/core/agent/evidence/evidenceIndex.d.ts.map +1 -1
- package/dist/types/core/agent/evidence/gate.d.ts.map +1 -1
- package/dist/types/core/agent/outputEnforcement.d.ts.map +1 -1
- package/dist/types/core/agent/presentTool.d.ts.map +1 -1
- package/dist/types/core/agent/repeatedCall.d.ts.map +1 -1
- package/dist/types/core/agent/resultCeiling.d.ts.map +1 -1
- package/dist/types/core/agent/selfCallNotice.d.ts.map +1 -1
- package/dist/types/core/agent/stagedRefs.d.ts.map +1 -1
- package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
- package/dist/types/core/agent/stages/evidenceRecheck.d.ts.map +1 -1
- package/dist/types/core/agent/stages/stepNudge.d.ts.map +1 -1
- package/dist/types/core/agent/stages/toolCalls.d.ts +16 -2
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/core/agent/stages/wrapUp.d.ts +11 -0
- package/dist/types/core/agent/stages/wrapUp.d.ts.map +1 -1
- package/dist/types/core/agent/types.d.ts +5 -4
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/core/agent/window/notice.d.ts.map +1 -1
- package/dist/types/core/agent/window/summarize.d.ts.map +1 -1
- package/dist/types/core/runbook/recording.d.ts.map +1 -1
- package/dist/types/core/runbook/verdicts.d.ts.map +1 -1
- package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
- package/dist/types/events/eventTail.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +8 -0
- package/dist/types/events/payloads.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/integrity/disposition/ledger.d.ts.map +1 -1
- package/dist/types/lib/context-ledger/contextLedger.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/evaluator.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/promptTemplate.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillGraph.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillSteps.d.ts.map +1 -1
- package/dist/types/lib/injection-engine/skillToolDescriptors.d.ts.map +1 -1
- package/dist/types/lib/iterationBudget.d.ts.map +1 -1
- package/dist/types/lib/rag/defineRAG.d.ts.map +1 -1
- package/dist/types/lib/saidByPerson.d.ts.map +1 -1
- package/dist/types/lib/semantics/envelope.d.ts.map +1 -1
- package/dist/types/lib/spokenIds.d.ts.map +1 -1
- package/dist/types/lib/time-travel/index.d.ts +9 -0
- package/dist/types/lib/time-travel/index.d.ts.map +1 -0
- package/dist/types/lib/time-travel/milestoneStops.d.ts +129 -0
- package/dist/types/lib/time-travel/milestoneStops.d.ts.map +1 -0
- package/dist/types/lib/trace-toolpack/debugPrompt.d.ts.map +1 -1
- package/dist/types/lib/trace-toolpack/traceToolpack.d.ts.map +1 -1
- package/dist/types/maps/engagement/lease.d.ts.map +1 -1
- package/dist/types/maps/engagement/parkCard.d.ts.map +1 -1
- package/dist/types/memory/beats/formatAsNarrative.d.ts.map +1 -1
- package/dist/types/memory/causal/loadSnapshot.d.ts.map +1 -1
- package/dist/types/memory/facts/formatFacts.d.ts.map +1 -1
- package/dist/types/memory/stages/formatDefault.d.ts.map +1 -1
- package/dist/types/recorders/observability/FlowchartRecorder.d.ts.map +1 -1
- package/dist/types/recorders/observability/recordRun.d.ts.map +1 -1
- package/dist/types/tool-providers/gatedTools.d.ts.map +1 -1
- package/dist/types/tool-providers/skillScopedTools.d.ts.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,308 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [9.87.1] - 2026-09-06
|
|
11
|
+
|
|
12
|
+
9.87.0 never reached npm. Its publish job failed the docs site's byte budget —
|
|
13
|
+
`export bytes: 621.21 MB exceeds 617.00 MB` — after six new routes (the
|
|
14
|
+
time-travel guide and the API pages for `milestoneStops`,
|
|
15
|
+
`milestoneStopsStrategy`, `milestoneOf`) added 5.47 MB to a static export
|
|
16
|
+
that had 1.26 MB of headroom left. No library code changes in this release.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **The site-budget ceilings are re-baselined** the way the script's own history
|
|
21
|
+
says to: ~2% over the measured export (634 MB, 6,750 files), with the reason
|
|
22
|
+
written beside the number in `docs-next/scripts/check-site-budget.mjs`. The
|
|
23
|
+
gate did its job — growth nobody was watching is exactly what it exists to
|
|
24
|
+
stop — and the number to look at next is the ~0.9 MB a single docs route
|
|
25
|
+
costs, not the ceiling.
|
|
26
|
+
|
|
27
|
+
## [9.87.0] - 2026-09-06
|
|
28
|
+
|
|
29
|
+
The agent now supplies the stops for its own runs.
|
|
30
|
+
|
|
31
|
+
footprintjs 9.17.0 opens a reader's cursor over a finished commit log —
|
|
32
|
+
`timeTravel(snapshot, { strategy })` — with a fold at every stop, and a seam that
|
|
33
|
+
says where the cursor may rest. It ships one strategy, `commitStops`, which stops
|
|
34
|
+
on every executed stage: the truth, and unreadable. A two-turn agent in
|
|
35
|
+
`reactMode: 'dynamic'` commits **42** bundles, and most of them are called
|
|
36
|
+
`context`, `sf-cache` or `sf-thinking`.
|
|
37
|
+
|
|
38
|
+
`milestoneFor` has classified stage ids into `iteration` · `slot` · `llm-turn` ·
|
|
39
|
+
`tool-call` · `decision` for releases, and every consumer that wanted a milestone
|
|
40
|
+
slider mapped that classifier onto commits itself. This release does that join
|
|
41
|
+
once, on the seam: the same 42-commit run yields **15** stops — Run start →
|
|
42
|
+
Iteration → System prompt → Messages → Tools → LLM turn → Route → Tool call →
|
|
43
|
+
Iteration → … → Run end.
|
|
44
|
+
|
|
45
|
+
### Added
|
|
46
|
+
|
|
47
|
+
- **`milestoneStops` / `milestoneStopsStrategy` / `milestoneOf`** (`src/lib/time-travel/`,
|
|
48
|
+
exported from the root barrel). A footprintjs `TimeTravelStrategy` built by
|
|
49
|
+
FILTERING footprintjs's own per-stage axis rather than re-deriving it: it calls
|
|
50
|
+
`commitStops` and keeps the stages `milestoneFor` classifies, so the collapsing
|
|
51
|
+
that axis already solved — one stop per `runtimeStageId` at its first commit
|
|
52
|
+
(mounts and fork children commit more than once), the mount set read off the
|
|
53
|
+
execution tree, the `'start'` / `'end'` bookends, the id-less commit that
|
|
54
|
+
carries a subflow's `inputMapper` seed — is used, not repeated. A stage that
|
|
55
|
+
classifies `null` contributes no stop and its commits fold into the stop before
|
|
56
|
+
it, so the survivors still partition the log end to end and `stateAt(stop)`
|
|
57
|
+
stays "the state that existed when the next milestone started".
|
|
58
|
+
|
|
59
|
+
- **Both chart shapes, one strategy.** The classifier reads the LOCAL segment of
|
|
60
|
+
a stage id, so nothing has to tell it which log it is holding. Under
|
|
61
|
+
`reactMode: 'dynamic'` the `call-llm` bundle is on the run's own log and the
|
|
62
|
+
llm-turn stop is on the outer cursor. Under `'dynamic-grouped'` the same run
|
|
63
|
+
commits **10** bundles outside — the `sf-llm-call` mounts, which become the
|
|
64
|
+
iteration stops — and `drill(mountRuntimeStageId)` opens that turn's own
|
|
65
|
+
cursor, where the same strategy finds **7** stops including its LLM turn.
|
|
66
|
+
|
|
67
|
+
- **`examples/observability/23-time-travel-milestones.ts`** — the same agent run
|
|
68
|
+
at both chart shapes, printing each axis, the skill the run stood in at each
|
|
69
|
+
turn, `changedSince` between two turns, a mark that survives a jump, and a
|
|
70
|
+
refused jump that leaves the cursor put. It also calls `milestoneStops` on the
|
|
71
|
+
log directly, for the reader who holds a recording rather than a cursor, and
|
|
72
|
+
shows the two axes agree. Offline, mock provider.
|
|
73
|
+
|
|
74
|
+
- **`docs-next/content/docs/debug/time-travel.mdx`** — why milestones rather than
|
|
75
|
+
one-stop-per-stage, the three questions the cursor answers, and where the LLM
|
|
76
|
+
turn lives in each chart shape.
|
|
77
|
+
|
|
78
|
+
### Changed
|
|
79
|
+
|
|
80
|
+
- **`footprintjs` is now `^9.17.0`** (peer + dev), for `timeTravel`,
|
|
81
|
+
`commitStops` and the `TimeTravelStrategy` seam.
|
|
82
|
+
|
|
83
|
+
### Honest notes
|
|
84
|
+
|
|
85
|
+
- **The milestone kind is a function, not a field.** footprintjs's `Stop` is a
|
|
86
|
+
closed shape with no slot a strategy may write its own vocabulary into, and its
|
|
87
|
+
`kind` is the port's own `StopKind` (`'commit' | 'mount' | 'start' | 'end'`),
|
|
88
|
+
not ours to overload. So the kind travels the only way it honestly can:
|
|
89
|
+
`milestoneOf(stop)` re-derives it from the stop's `runtimeStageId` with the
|
|
90
|
+
same classifier that put the stop on the axis — one source of truth, read
|
|
91
|
+
twice. If a later footprintjs gives `Stop` an extension slot, `milestoneOf`
|
|
92
|
+
becomes a one-line reader of it.
|
|
93
|
+
|
|
94
|
+
- **Which keys are visible where, in the grouped shape.** The settled skill
|
|
95
|
+
cursor for turn *k* is on the OUTER axis, at iteration *k* (`currentSkillId`).
|
|
96
|
+
Inside the drill, `currentSkillId` is the value the turn STARTED from — it
|
|
97
|
+
crosses the mount as a read-only input — and the move the turn made is
|
|
98
|
+
`nextSkillCursor`, merged back out by the outputMapper. Both logs are truthful
|
|
99
|
+
about different questions, and `test/lib/time-travel/milestone-stops.test.ts`
|
|
100
|
+
pins both rather than picking the flattering one.
|
|
101
|
+
|
|
102
|
+
- **`'start'` is not the fold base on this axis.** footprintjs's `'start'`
|
|
103
|
+
bookend is the state before any stage ran; this one also absorbs every stage
|
|
104
|
+
that ran before the FIRST milestone, because the stops must still partition
|
|
105
|
+
the log. Measured on a two-turn `dynamic` run: `commitStops`' start folds
|
|
106
|
+
commits `-1..-1` and 0 keys, `milestoneStops`' start folds `-1..0` and 32 —
|
|
107
|
+
`seed`'s writes have already landed. So `stateAt(startStop)` here is the state
|
|
108
|
+
the first milestone READ, not the run's raw base, and a renderer keyed on
|
|
109
|
+
`kind === 'start'` to show "what the run began with" is showing post-seed
|
|
110
|
+
state. Said in the folder README, on the docs page, and pinned by a test.
|
|
111
|
+
|
|
112
|
+
- **A resumed run gets an axis of its own.** The cursor reads the snapshot it is
|
|
113
|
+
handed, and a resume is its own execution with its own log: after
|
|
114
|
+
`agent.resume(checkpoint, answer)`, `getSnapshot()` carries the resumed half —
|
|
115
|
+
the axis begins at the stage the resume re-entered and the pre-pause
|
|
116
|
+
milestones are not on it. They are on the snapshot taken at the pause. The
|
|
117
|
+
strategy itself holds across the break (both axes tile, both keep unique
|
|
118
|
+
stops); it is the snapshot that split, not the cursor.
|
|
119
|
+
|
|
120
|
+
- **A log with no milestones is not an empty log.** A non-empty log the
|
|
121
|
+
classifier recognises nothing in — a non-agent chart handed this strategy —
|
|
122
|
+
yields the two bookends and nothing between them, and every `jumpTo` refuses
|
|
123
|
+
with `'miss'`. An EMPTY log yields `[]`. Two different facts, two different
|
|
124
|
+
answers.
|
|
125
|
+
|
|
126
|
+
- **The performance guards get a stated allowance under coverage.** v8
|
|
127
|
+
instrumentation is not machine load: it is a per-call counter, so it taxes the
|
|
128
|
+
two sides of a ratio in proportion to how many calls each makes, and a
|
|
129
|
+
comparison between two differently-shaped paths moves even on an idle machine.
|
|
130
|
+
Measured on this suite, the tightest guard sat ~2.8× under its ceiling
|
|
131
|
+
uninstrumented and ~1.1× under it with `--coverage` — which is why it went red
|
|
132
|
+
under whole-suite parallelism and green on a re-run. `test:coverage` now sets
|
|
133
|
+
`AF_COVERAGE=1` and `test/helpers/perf.ts` widens the ceilings by a documented
|
|
134
|
+
3× when it sees it. The plain `npm test` ceilings are unchanged, which is where
|
|
135
|
+
a real regression is still caught; the multiplier is a floor on effort, not a
|
|
136
|
+
promise that instrumentation costs exactly 3×.
|
|
137
|
+
|
|
138
|
+
- **17 tests over real runs**, not fixtures: the axis in both chart shapes, the
|
|
139
|
+
partition property (every commit belongs to exactly one stop), a jump that
|
|
140
|
+
lands and a miss that names a nearest without moving, the skill graph read
|
|
141
|
+
along the commits with the wire as witness (the skill whose body rode turn *k*
|
|
142
|
+
is the one that iteration's own log settled on), marks that survive jumps and
|
|
143
|
+
never appear in the recording, what `'start'` folds on this axis versus the
|
|
144
|
+
port's, a resumed run's axis, and a log with no milestones in it. One more
|
|
145
|
+
file — 5 tests in `milestone-stops-contract.test.ts` — mocks `commitStops` to check the one
|
|
146
|
+
assumption this strategy makes of footprintjs — that a non-empty log yields
|
|
147
|
+
`[start, …stages, end]` — is refused loudly rather than silently mistaken for
|
|
148
|
+
an empty axis.
|
|
149
|
+
|
|
150
|
+
## [9.86.1] - 2026-09-06
|
|
151
|
+
|
|
152
|
+
The release that removed hand-counted lists shipped with one, and with main red.
|
|
153
|
+
|
|
154
|
+
`chore: release v9.86.0` failed CI (run 34008382993, the `coverage` job) while both
|
|
155
|
+
plain `test` jobs and the local release gate passed. Two tests parse every file
|
|
156
|
+
under `src/` with the TypeScript compiler and were called fresh inside every `it`
|
|
157
|
+
— seven parses in one suite, three in the other — and under the coverage job's
|
|
158
|
+
v8 instrumentation each parse took 5.3–6.2 s on the CI runner, past vitest's 5 s
|
|
159
|
+
default. Locally the same parse takes about a second. The release script ran
|
|
160
|
+
`npm test` and never `npm run test:coverage`, so the one command that would have
|
|
161
|
+
shown the failure was the one it did not run. Both walks now parse `src/` once per
|
|
162
|
+
suite and carry a 60 s budget of their own, and Gate 4 of `scripts/release.sh` runs
|
|
163
|
+
`npm run test:coverage` — the instrumented run is a superset of the plain one, so
|
|
164
|
+
the gate now sees what CI sees.
|
|
165
|
+
|
|
166
|
+
Everything else here is one review of 9.86.0, taken finding by finding.
|
|
167
|
+
|
|
168
|
+
### Fixed
|
|
169
|
+
|
|
170
|
+
- **The `'guard'` refusal asserted a fact it did not have.** With no menu
|
|
171
|
+
outstanding, `composeReadSkillRefusal` ended every refusal with "Declared routes
|
|
172
|
+
moved the cursor instead." The gate handed it a boolean derived from two of
|
|
173
|
+
`TurnRoute.by`'s six values, so the clause was composed for the other four too:
|
|
174
|
+
false for `'continuity'` (the cursor was carried over from the previous turn and
|
|
175
|
+
nothing moved it — the verdict every follow-up produces under `{ strictness:
|
|
176
|
+
'guard', continuity: 'conversation' }`), false for `'menu'` resolved by the
|
|
177
|
+
model's own pick, and unprovable for `'none'`. The composer now takes
|
|
178
|
+
`turnStartedBy: TurnRoute['by']` and says one past fact per value — "the turn's
|
|
179
|
+
start had already been resolved decisively", "the cursor had been carried over
|
|
180
|
+
from the previous turn", "the menu had already been resolved by an earlier
|
|
181
|
+
pick", "the menu had been resolved by the configured decider before the turn's
|
|
182
|
+
first call" — and nothing for `'none'`. The old tail is gone from every arm.
|
|
183
|
+
|
|
184
|
+
- **Two refusals named a cursor the role may not be told about.** The `read_skill`
|
|
185
|
+
description withholds a hidden cursor's name by its own law, and the gate's
|
|
186
|
+
refusal printed the same id raw in two clauses ("was not reachable from 'alpha'.
|
|
187
|
+
Skills reachable from 'alpha' when that call was made: …"). The cursor now goes
|
|
188
|
+
through the same filter as the hops: a hidden cursor is anchored as "the skill
|
|
189
|
+
the cursor stood in" — the skill is real and merely unnamed — and "the turn's
|
|
190
|
+
start" is kept for a genuine cold start, which is a different fact. The
|
|
191
|
+
`propose-transition` refusal in the tool-effects judge had the same leak twice
|
|
192
|
+
over: it composed "(reachable: beta, gamma)" from the raw hop set and "from
|
|
193
|
+
'alpha'" from the raw cursor, and that sentence is appended to the tool result
|
|
194
|
+
the model reads. It reads `scope.hiddenSkillIds` now, names the filtered hops,
|
|
195
|
+
omits the clause when the filter emptied them, and anchors a hidden cursor the
|
|
196
|
+
same way. `skill.rejected.currentSkillId` stays raw on purpose: it is the
|
|
197
|
+
operator's record on the event channel, not a sentence the model reads.
|
|
198
|
+
|
|
199
|
+
- **A same-batch STAY did not compete for the transition slot.** The law is "first
|
|
200
|
+
ACCEPTED proposal wins; later proposals to OTHER targets are superseded", and a
|
|
201
|
+
stay is accepted — but it `continue`d past the bookkeeping, so a tool that judged
|
|
202
|
+
its data first and said "stay" lost to a sibling later in call order that said
|
|
203
|
+
"move", with two `'accepted'` events in one batch, the cursor moved, and no
|
|
204
|
+
`route_conflict` on the record. A stay judged first now holds the slot (writing
|
|
205
|
+
nothing to `pendingToolTransition`, because a stay moves nothing) and the later
|
|
206
|
+
hop is `'superseded'` with the batch's `route_conflict` naming the stay as the
|
|
207
|
+
winner; a stay judged after an accepted hop is the one superseded. Two stays are
|
|
208
|
+
both accepted, as two hops to one target are.
|
|
209
|
+
|
|
210
|
+
- **Both 9.86.0 frames pointed with the word the same release repaired elsewhere.**
|
|
211
|
+
The wrap-up instruction read "exhausted before this call … This call was for the
|
|
212
|
+
final answer" and the stepped-skill nudge "This call was for running them". A
|
|
213
|
+
frame is written into the `iteration_end` payload the checkpoint snapshots and
|
|
214
|
+
restored verbatim by `applyContinuation`, so on the next `.continue()` turn —
|
|
215
|
+
tools back on the wire — a model resolves "this call" to the call it is
|
|
216
|
+
answering and reads "no tools were offered on it" about a request that offers
|
|
217
|
+
them. They now name the call: "the wrap-up call this message opened … That call
|
|
218
|
+
was for the final answer", and "This message asked for them to be run". The
|
|
219
|
+
checker only knew `on this call`; a bare `this call` row catches the shape now,
|
|
220
|
+
and it found nine more: seven `inspect_tool_call` result lines and the
|
|
221
|
+
`inspect_tool_run` retention note, all anchored to `call '<id>'`; the coverage
|
|
222
|
+
ledger's `COVERAGE_NOTE` ("ground the call this result answers did not look at";
|
|
223
|
+
`canonical-notes.json` is regenerated by the build); and the runbook
|
|
224
|
+
`recording_note`. The checkIn-resume refusal in the tool-calls stage — "cannot be
|
|
225
|
+
retried this turn … Answer without it, or finish", a forecast plus a standing
|
|
226
|
+
order on a persistent result — is a past fact about the resumed call now.
|
|
227
|
+
|
|
228
|
+
### Changed
|
|
229
|
+
|
|
230
|
+
- **The shape rows match the grammar they claim.** A second probe of seventeen
|
|
231
|
+
sentences written AGAINST the rows — the plainest forecast forms, not the ones the
|
|
232
|
+
rows had been derived from — walked past all four 9.86.0 shape rows: the
|
|
233
|
+
effect-verb row knew no future or modal tense ("will move you", "can switch
|
|
234
|
+
you"), the cursor row wanted a quote right after `in ` ("You are in skill
|
|
235
|
+
'alpha'", "You're in 'alpha'", "Your current skill is 'alpha'"), the copula row
|
|
236
|
+
knew six nouns ("is enabled", "is mounted", "are offered", "is off the wire",
|
|
237
|
+
"have been withheld"), and a headed list ("Available tools: calc, probe.")
|
|
238
|
+
has no copula at all. The rows are widened, a headed-inventory row and a
|
|
239
|
+
next-call-forecast row are added, and the seventeen sit beside the fifteen in
|
|
240
|
+
`test/modelFacingSurfaces.test.ts` so the next narrowing fails by name. The
|
|
241
|
+
`src/` walk then flagged **twenty-five** more literals: ten are repaired above,
|
|
242
|
+
fourteen are host-facing errors and check-up warnings now classified, and one —
|
|
243
|
+
an integrity finding's frame line — joins the work list. The ledger stands at
|
|
244
|
+
**ninety-one files / one hundred and seventy-eight literals**, with
|
|
245
|
+
**thirty-four** unrepaired across thirteen entries; the suite computes those
|
|
246
|
+
numbers.
|
|
247
|
+
|
|
248
|
+
- **A row may no longer exempt every lifetime.** `provableWhen` naming both
|
|
249
|
+
lifetimes compiled, carried an argument, and disabled the row everywhere — the
|
|
250
|
+
exemption-with-no-argument defect in a new coat. The suite asserts a strict
|
|
251
|
+
subset now. The header of `test/helpers/modelFacingClaims.ts` also says what
|
|
252
|
+
"may speak in the present" means beside the `now` row: present TENSE reported
|
|
253
|
+
as the state of the request, not the deictic adverbs, which point at the moment
|
|
254
|
+
of reading on every surface.
|
|
255
|
+
|
|
256
|
+
- **The divergence walk's summary block is checked whole.** Only `walk.cases` was
|
|
257
|
+
read back; the other five numbers were written on update and never compared.
|
|
258
|
+
All six are now derived from the recorded case outcomes and the row set. The
|
|
259
|
+
placeholder gate also refuses `TODOs` and `to-do`, and the header names five
|
|
260
|
+
defects, not three. A `claim-swallowed` row's auto-composed `cause` says "names
|
|
261
|
+
this claimant as the winner of a wire it never reached" when the shadow report
|
|
262
|
+
names the swallowed claimant itself — the framework's `skill-scoped:self-explain`
|
|
263
|
+
provider — instead of "describes a different pair", which it does not.
|
|
264
|
+
|
|
265
|
+
- **Anchors in the walk's baseline and the design note name symbols, not lines.**
|
|
266
|
+
The ten 9.86.0 rows cited `buildToolRegistry.ts` line ranges from the 9.85.0 tree
|
|
267
|
+
that the same release had moved by about twenty-nine lines, beside a
|
|
268
|
+
`buildToolsSlot.ts` line from HEAD. They name the checks now (`holders.includes
|
|
269
|
+
(PRESENT_TOOL_NAME)`, the `seenNames` loop, the `sharedSkillTools` backfill), and
|
|
270
|
+
the baseline's `note` says so. The `present-vs-mcp` row no longer claims the MCP
|
|
271
|
+
cell proves the blind spot is the provider channel: both claimants mount through
|
|
272
|
+
`staticTools()`, so the cell shows an MCP catalog inherits that seam unchanged and
|
|
273
|
+
nothing more.
|
|
274
|
+
|
|
275
|
+
- **`scripts/release.sh` Gate 4 runs `npm run test:coverage`.** See the opening.
|
|
276
|
+
|
|
277
|
+
### Docs
|
|
278
|
+
|
|
279
|
+
- `docs/design/2026-09-recorded-not-built.md`: entry 1's "16 baseline rows" is 22
|
|
280
|
+
(18 with a provider's or a skill's tool dead, 4 with the framework's own), the
|
|
281
|
+
appendix lists it as the third corrected sentence, and the row paragraph says
|
|
282
|
+
four-and-six rather than eight-and-two.
|
|
283
|
+
- `docs/api-reference/interfaces/AgentOptions.md`, tracked and last regenerated at
|
|
284
|
+
9.58.0, still quoted the pre-9.86.0 wrap-up sentence ("Do not request tools");
|
|
285
|
+
the quote is updated in place, as are the three other copies.
|
|
286
|
+
- The skill-graph quickstart says a host wiring its own `read_skill` under a
|
|
287
|
+
`tree()` must set `ReadSkillOffer.treeRouted`, and why.
|
|
288
|
+
|
|
289
|
+
### Changelog corrections
|
|
290
|
+
|
|
291
|
+
Four sentences in 9.86.0 are corrected in place, each marked where it stands:
|
|
292
|
+
|
|
293
|
+
- _"Eight of the ten are already-recorded seams … Two are defects"_ — four rows
|
|
294
|
+
reach recorded seams and six record the two new defects.
|
|
295
|
+
- `ToolRegistryArtifacts.toolDeclaringSkills` and `AgentState.hiddenSkillIds` were
|
|
296
|
+
listed under Added as if public; neither type is exported from any door.
|
|
297
|
+
- `unknownToolResult` was called "exported"; it is a module export inside the
|
|
298
|
+
tool-calls stage and not on any door.
|
|
299
|
+
- The `report-misattributed` bullet did not say that `reported` — a field the
|
|
300
|
+
ratchet compares — changed body on nine unrenamed rows.
|
|
301
|
+
|
|
302
|
+
### Deliberately not changed
|
|
303
|
+
|
|
304
|
+
- **The two permission-denied arms** ("This will not change during this run — do
|
|
305
|
+
not call it again") stay on the unrepaired ledger. Making the sentence true means
|
|
306
|
+
latching a denial per run, a behaviour change with no field finding behind it;
|
|
307
|
+
rewording it is that entry's own packet.
|
|
308
|
+
- **The `now` row keeps no exemption.** The header now argues the same thing the
|
|
309
|
+
row does, rather than the row being softened.
|
|
310
|
+
- **`skill.rejected.currentSkillId`** is not role-filtered — see above.
|
|
311
|
+
|
|
10
312
|
## [9.86.0] - 2026-09-05
|
|
11
313
|
|
|
12
314
|
Every hand-counted list in 9.84.0 and 9.85.0 was short by one or two.
|
|
@@ -75,7 +377,9 @@ the cursor?", and one scope key answers "which skill ids may this role see?".
|
|
|
75
377
|
refers back to that call.
|
|
76
378
|
|
|
77
379
|
- **`Unknown tool: X` told the model it was wrong and never what would have
|
|
78
|
-
worked.** Both dispatch doors now compose one
|
|
380
|
+
worked.** Both dispatch doors now compose one `unknownToolResult` (a module
|
|
381
|
+
export inside the tool-calls stage, not on any package door — _corrected in
|
|
382
|
+
9.86.1_), which
|
|
79
383
|
names the dispatch roster: `Unknown tool 'X' on that call. Tool names that
|
|
80
384
|
resolved to an implementation on that call: …`, or, with an empty roster, that
|
|
81
385
|
none did. The leading `Unknown tool` token is preserved, so every matcher on it
|
|
@@ -226,10 +530,12 @@ the cursor?", and one scope key answers "which skill ids may this role see?".
|
|
|
226
530
|
`todo`/`tbd`/`fixme`/`xxx` on a word boundary in any case, or under forty
|
|
227
531
|
characters — a floor on effort, not a measure of truth).
|
|
228
532
|
|
|
229
|
-
|
|
230
|
-
never been crossed, and say so.
|
|
231
|
-
|
|
232
|
-
rather than
|
|
533
|
+
Four of the ten reach seams the 9.85.0 baseline already recorded, through a
|
|
534
|
+
source that had never been crossed, and say so. Six record two defects nobody
|
|
535
|
+
had recorded — four rows for entry 4 and two for entry 5 of
|
|
536
|
+
`docs/design/2026-09-recorded-not-built.md` — rather than papering over them
|
|
537
|
+
(_corrected in 9.86.1: this paragraph said "eight of the ten" and "two", a
|
|
538
|
+
count of defects presented as a count of rows_): `.selfExplain()` reserves its trace-tool names against
|
|
233
539
|
`this.registry` and never `this.injectionList`, making it the one auto-attach
|
|
234
540
|
family with no net at all against a skill's `tools: []`; and the misattributed
|
|
235
541
|
shadow report can now name a `skill-scoped:self-explain` provider — one the
|
|
@@ -239,14 +545,18 @@ the cursor?", and one scope key answers "which skill ids may this role see?".
|
|
|
239
545
|
event's meaning lives in its `schemaFromId`/`dispatchToId`, and the row was keyed
|
|
240
546
|
on case + tool + epoch, so two reports naming different sources in one epoch — a
|
|
241
547
|
strictly worse fact than one wrong report — collapsed into one `Map` entry and
|
|
242
|
-
vanished.
|
|
548
|
+
vanished. The `reported` column of every row now carries the `*Id` halves too
|
|
549
|
+
(`schemaFrom=provider(static) dispatchTo=skill(desk-active)`), which is why nine
|
|
550
|
+
rows whose ids did not move changed body in the same re-record (_added in
|
|
551
|
+
9.86.1; the re-record changed a compared field and the entry did not say so_).
|
|
243
552
|
|
|
244
553
|
- **`SkillRejectedPayload.allowed` is what the model was actually told.** Role-
|
|
245
554
|
filtered rather than the graph's raw set. Shape unchanged; only agents with a
|
|
246
555
|
`PermissionChecker` governing `'skill_read'` see any difference. The field's own
|
|
247
556
|
JSDoc says so at the call site, which is the doc a consumer actually reads.
|
|
248
557
|
|
|
249
|
-
- **`ToolRegistryArtifacts.toolDeclaringSkills`** —
|
|
558
|
+
- **`ToolRegistryArtifacts.toolDeclaringSkills`** (internal — `ToolRegistryArtifacts`
|
|
559
|
+
is not exported from any door; _corrected in 9.86.1_) — tool name → the ids of the
|
|
250
560
|
skills whose `inject.tools` carry it, recorded on the walk `buildToolRegistry`
|
|
251
561
|
was already doing and thrown away. Empty for an agent whose skills carry no
|
|
252
562
|
tools. Its one consumer is the unknown-tool roster's role filter; it exists so
|
|
@@ -258,7 +568,8 @@ the cursor?", and one scope key answers "which skill ids may this role see?".
|
|
|
258
568
|
Deliberately not a fourth `outcome`, so an exhaustive consumer switch keeps
|
|
259
569
|
compiling.
|
|
260
570
|
|
|
261
|
-
- **`AgentState.hiddenSkillIds?: readonly string[]`** —
|
|
571
|
+
- **`AgentState.hiddenSkillIds?: readonly string[]`** (internal — `AgentState` is
|
|
572
|
+
not exported from any door; _corrected in 9.86.1_) — the per-iteration
|
|
262
573
|
role-hidden set, written by the tools slot and read by the `read_skill` gate.
|
|
263
574
|
|
|
264
575
|
- **`ReadSkillOffer.treeRouted?: boolean`** — declares the mounted graph a decision
|
package/README.md
CHANGED
|
@@ -37,6 +37,20 @@
|
|
|
37
37
|
|
|
38
38
|
---
|
|
39
39
|
|
|
40
|
+
## Map, Walker, Trace, Fold, Lens
|
|
41
|
+
|
|
42
|
+
Five words for the five jobs every file in this library does.
|
|
43
|
+
|
|
44
|
+
- **Map** — what could happen: the chart an `Agent` or `LLMCall` declares, the skills and the edges between them. Still; a run never changes it.
|
|
45
|
+
- **Walker** — what is happening: the ReAct loop, one stage at a time, with its cursor and its guards.
|
|
46
|
+
- **Trace** — what happened and why: the typed event stream and the commit log, written as the run happens, never reconstructed after.
|
|
47
|
+
- **Fold** — what may be claimed now: everything derived from that record — the evidence corpus, the reachable set, the influence ranking, the context ledger — each computed by one owner and handed out detached.
|
|
48
|
+
- **Lens** — what this reader is served: for an agent that means **the wire** — the system prompt, the messages and the tool list the model actually gets, plus every sentence composed into them. A Lens may leave something out; it may never say the run holds nothing when it does.
|
|
49
|
+
|
|
50
|
+
Every folder under `src/` opens its README with its role. The map of the whole tree, with the laws and worked examples, is [docs/design/map-walker-trace-fold-lens.md](docs/design/map-walker-trace-fold-lens.md).
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
40
54
|
## The new error class
|
|
41
55
|
|
|
42
56
|
For decades, software had two kinds of errors — and developers never needed deep
|
package/canonical-notes.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$comment": "GENERATED by scripts/gen-canonical-notes.mjs from this package's own built exports - do not edit by hand. These are the strings a tool written in another language must reproduce byte for byte: the static notes each result shape carries, the reserved marker keys that make those shapes recognizable, and the coverage block's heading. Keys are the exported constant names, so the same value is reachable as a TypeScript import from the package's main entry point. The package version lives in package.json.",
|
|
3
3
|
"notes": {
|
|
4
4
|
"ABSENCE_NOTE": "The search ran and matched nothing. This is an ANSWER, not an error: nothing failed, nothing was substituted for what was asked, and calling this tool again with the same arguments returns this same result. `checked` is the ground this answer covers; anything under `not_checked` or `cannot_cover` is ground it does NOT cover, and reaching that needs a different question, not a retry.",
|
|
5
|
-
"COVERAGE_NOTE": "This result covers only what `checked` lists. `not_checked` is ground
|
|
5
|
+
"COVERAGE_NOTE": "This result covers only what `checked` lists. `not_checked` is ground the call this result answers did not look at, and `cannot_cover` is ground this tool can never see — a clean result here is NOT evidence about either, and no retry changes `cannot_cover`. Carry these limits into any answer you build on this result.",
|
|
6
6
|
"SEMANTICS_NOTE": "Typed data, not prose. `grain` and `provenance` are caveats that travel with the numbers: check `is_counter` before summing values from a series, read `measured_at` (and `age_seconds`) as how old the data is, and treat everything under `not_covered` as ground this result does NOT cover — a clean look here says nothing about it."
|
|
7
7
|
},
|
|
8
8
|
"markers": {
|
|
@@ -80,6 +80,10 @@ function isPlacedToolResult(value) {
|
|
|
80
80
|
typeof value.reason === 'string');
|
|
81
81
|
}
|
|
82
82
|
exports.isPlacedToolResult = isPlacedToolResult;
|
|
83
|
+
// LENS · tool-result · persistent-history
|
|
84
|
+
// reads: ref/kind/mediaType/bytes ← the ArtifactMeta the dispatch layer minted; size and threshold ← its measure
|
|
85
|
+
// it SUBSTITUTES the result the model would have read, so the ticket and the reason travel together.
|
|
86
|
+
// law: may omit, never deny; every clause anchored to the call it was composed on.
|
|
83
87
|
/** Compose the ticket from the mint the dispatch layer performed. */
|
|
84
88
|
function placedToolResult(toolName, meta, sizeChars, maxInlineChars) {
|
|
85
89
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"placement.js","sourceRoot":"","sources":["../../src/artifacts/placement.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;;;AAyBH;;;GAGG;AACH,SAAgB,uBAAuB,CACrC,IAAY,EACZ,SAAwC;IAExC,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO;IACpC,MAAM,KAAK,GAAG,SAAS,CAAC,cAAc,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,0EAA0E;YAC/E,mBAAmB,MAAM,CAAC,KAAK,CAAC,qDAAqD;YACrF,iFAAiF;YACjF,sFAAsF;YACtF,+CAA+C,CAClD,CAAC;IACJ,CAAC;AACH,CAAC;AAfD,0DAeC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,gBAAgB,CAAC,QAAgB,EAAE,QAAiB;IAClE,OAAO,QAAQ,IAAI,eAAe,QAAQ,EAAE,CAAC;AAC/C,CAAC;AAFD,4CAEC;AAsBD,4EAA4E;AAC5E,SAAgB,kBAAkB,CAAC,KAAc;IAC/C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAA8B,CAAC,MAAM,KAAK,IAAI;QAC/C,OAAQ,KAA2B,CAAC,GAAG,KAAK,QAAQ;QACpD,OAAQ,KAA8B,CAAC,MAAM,KAAK,QAAQ,CAC3D,CAAC;AACJ,CAAC;AARD,gDAQC;AAED,qEAAqE;AACrE,SAAgB,gBAAgB,CAC9B,QAAgB,EAChB,IAAkB,EAClB,SAAiB,EACjB,cAAsB;IAEtB,OAAO;QACL,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EACJ,GAAG,QAAQ,aAAa,SAAS,oBAAoB,cAAc,kBAAkB;YACrF,yDAAyD,IAAI,CAAC,GAAG,IAAI;YACrE,IAAI,IAAI,CAAC,IAAI,mEAAmE;YAChF,WAAW,IAAI,CAAC,GAAG,qCAAqC,IAAI,CAAC,IAAI,aAAa;YAC9E,mBAAmB,IAAI,CAAC,GAAG,yDAAyD;YACpF,sCAAsC;KACzC,CAAC;AACJ,CAAC;AApBD,4CAoBC"}
|
|
1
|
+
{"version":3,"file":"placement.js","sourceRoot":"","sources":["../../src/artifacts/placement.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;;;AAyBH;;;GAGG;AACH,SAAgB,uBAAuB,CACrC,IAAY,EACZ,SAAwC;IAExC,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO;IACpC,MAAM,KAAK,GAAG,SAAS,CAAC,cAAc,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,0EAA0E;YAC/E,mBAAmB,MAAM,CAAC,KAAK,CAAC,qDAAqD;YACrF,iFAAiF;YACjF,sFAAsF;YACtF,+CAA+C,CAClD,CAAC;IACJ,CAAC;AACH,CAAC;AAfD,0DAeC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,gBAAgB,CAAC,QAAgB,EAAE,QAAiB;IAClE,OAAO,QAAQ,IAAI,eAAe,QAAQ,EAAE,CAAC;AAC/C,CAAC;AAFD,4CAEC;AAsBD,4EAA4E;AAC5E,SAAgB,kBAAkB,CAAC,KAAc;IAC/C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACb,KAA8B,CAAC,MAAM,KAAK,IAAI;QAC/C,OAAQ,KAA2B,CAAC,GAAG,KAAK,QAAQ;QACpD,OAAQ,KAA8B,CAAC,MAAM,KAAK,QAAQ,CAC3D,CAAC;AACJ,CAAC;AARD,gDAQC;AAED,0CAA0C;AAC1C,iHAAiH;AACjH,qGAAqG;AACrG,mFAAmF;AACnF,qEAAqE;AACrE,SAAgB,gBAAgB,CAC9B,QAAgB,EAChB,IAAkB,EAClB,SAAiB,EACjB,cAAsB;IAEtB,OAAO;QACL,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EACJ,GAAG,QAAQ,aAAa,SAAS,oBAAoB,cAAc,kBAAkB;YACrF,yDAAyD,IAAI,CAAC,GAAG,IAAI;YACrE,IAAI,IAAI,CAAC,IAAI,mEAAmE;YAChF,WAAW,IAAI,CAAC,GAAG,qCAAqC,IAAI,CAAC,IAAI,aAAa;YAC9E,mBAAmB,IAAI,CAAC,GAAG,yDAAyD;YACpF,sCAAsC;KACzC,CAAC;AACJ,CAAC;AApBD,4CAoBC"}
|
|
@@ -40,6 +40,12 @@ const PRESENT_LIST_LIMIT = 10;
|
|
|
40
40
|
function describeRef(meta) {
|
|
41
41
|
return `${meta.ref} [${meta.kind} · ${meta.bytes} bytes${meta.label !== undefined ? ` · '${meta.label}'` : ''}]`;
|
|
42
42
|
}
|
|
43
|
+
// LENS · tool-result · persistent-history
|
|
44
|
+
// reads: the artifact's meta ← store.head(scope, ref); the live refs ← store.list(scope, {limit:10})
|
|
45
|
+
// both from the ArtifactStore port, the sole owner of those facts
|
|
46
|
+
// the source is LIVE, so every clause is past tense and bound to the named call: a census rendered into a
|
|
47
|
+
// result is re-read after the store has changed.
|
|
48
|
+
// law: may omit, never deny; every clause anchored to the call it was composed on.
|
|
43
49
|
/**
|
|
44
50
|
* Resolve one `present` call over the port — ONE law for every dispatch
|
|
45
51
|
* door. `head`, never `get`: presenting is the render-by-ref decision, and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"present.js","sourceRoot":"","sources":["../../src/artifacts/present.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"present.js","sourceRoot":"","sources":["../../src/artifacts/present.ts"],"names":[],"mappings":"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"}
|
package/dist/artifacts/wants.js
CHANGED
|
@@ -161,6 +161,11 @@ function liveRefsClause(kind, live) {
|
|
|
161
161
|
.map(describeLiveRef)
|
|
162
162
|
.join(', ')}. Pass one of these.`;
|
|
163
163
|
}
|
|
164
|
+
// LENS · tool-result · persistent-history
|
|
165
|
+
// reads: whether a ref resolves and its kind ← store.get; the live refs of a kind ← store.list, bounded 10/200
|
|
166
|
+
// LIVE source, same repair as present.ts: past tense, bound to the named call. inputSchema.required is
|
|
167
|
+
// read again here as a deliberate second belt (`wants.ts` · requiredArgNames), not as a re-derivation of a fold.
|
|
168
|
+
// law: may omit, never deny; every clause anchored to the call it was composed on.
|
|
164
169
|
/**
|
|
165
170
|
* Resolve one tool's declared `wants` against the run's scope — the whole
|
|
166
171
|
* Leg-1 law in one place, shared by every dispatch door.
|
|
@@ -290,6 +295,9 @@ async function resolveToolWants(store, scope, toolName, wants, args, inputSchema
|
|
|
290
295
|
return { ok: true, args: nextArgs, wanted, resolved: resolvedList };
|
|
291
296
|
}
|
|
292
297
|
exports.resolveToolWants = resolveToolWants;
|
|
298
|
+
// LENS · tool-result · persistent-history
|
|
299
|
+
// reads: the tool's own wants declaration only — it states configuration and cannot go stale
|
|
300
|
+
// law: may omit, never deny; every clause anchored to the call it was composed on.
|
|
293
301
|
/**
|
|
294
302
|
* The teaching refusal for a `wants`-declaring tool dispatched where NO
|
|
295
303
|
* artifact store is attached — fail-closed, naming the config fix, because
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wants.js","sourceRoot":"","sources":["../../src/artifacts/wants.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wants.js","sourceRoot":"","sources":["../../src/artifacts/wants.ts"],"names":[],"mappings":"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"}
|
package/dist/core/Agent.js
CHANGED
|
@@ -1988,6 +1988,9 @@ class Agent extends RunnerBase_js_1.RunnerBase {
|
|
|
1988
1988
|
!this.skillGraphEdgeTargets.has(i.id))
|
|
1989
1989
|
.map((i) => i.id);
|
|
1990
1990
|
}
|
|
1991
|
+
// FOLD (resolver) · assembles the ReadSkillOffer the read_skill DESCRIPTION (a Lens) is built from:
|
|
1992
|
+
// grantable ← makeReachableSkills ∪ openSkillIds, cursor ← scope, hidden ← hiddenSkillIdsNow.
|
|
1993
|
+
// It assembles; it never composes a sentence. The sentence is skillToolDescriptors.describeOffer.
|
|
1991
1994
|
/**
|
|
1992
1995
|
* The per-iteration `read_skill` offer builder — or `undefined` to leave the tool
|
|
1993
1996
|
* exactly as it has always been (8.5.0).
|
|
@@ -2075,6 +2078,11 @@ class Agent extends RunnerBase_js_1.RunnerBase {
|
|
|
2075
2078
|
governsSkillVisibility() {
|
|
2076
2079
|
return (0, types_js_2.checkerGoverns)(this.permissionChecker, 'skill_read');
|
|
2077
2080
|
}
|
|
2081
|
+
// FOLD (resolver) · computes "which skill ids may this caller be told about".
|
|
2082
|
+
// The OWNER of the published fact is src/core/slots/buildToolsSlot.ts · discoverStage, which
|
|
2083
|
+
// resolves it once per iteration and publishes it on scope; every model-facing composer reads THAT.
|
|
2084
|
+
// Second caller: the turn router (stages/routeTurn.ts · resolveHidden) resolves it again, with different
|
|
2085
|
+
// failure semantics, and publishes nothing — two sweeps of one policy question per turn.
|
|
2078
2086
|
/**
|
|
2079
2087
|
* Which skills the caller's role may NOT see, asked once per iteration
|
|
2080
2088
|
* (9.11.0).
|
|
@@ -3116,13 +3124,19 @@ class Agent extends RunnerBase_js_1.RunnerBase {
|
|
|
3116
3124
|
// so concurrent runs don't share state.
|
|
3117
3125
|
const providerToolCache = { current: [] };
|
|
3118
3126
|
const readSkillFor = this.readSkillOfferFor();
|
|
3119
|
-
// Per-role skill visibility.
|
|
3120
|
-
//
|
|
3121
|
-
//
|
|
3122
|
-
//
|
|
3123
|
-
// `
|
|
3124
|
-
//
|
|
3125
|
-
//
|
|
3127
|
+
// Per-role skill visibility. The RESOLVER is handed to the tools slot, which
|
|
3128
|
+
// is the fact's one owner: it resolves the ids once per iteration and
|
|
3129
|
+
// publishes them on scope (`buildToolsSlot.ts` · `discoverStage`). Since 9.86.0 the
|
|
3130
|
+
// description is NOT the only reader — the read_skill gate's refusals, the
|
|
3131
|
+
// `skill.rejected` payload, the propose-transition refusal and the dispatch
|
|
3132
|
+
// roster all filter through that published set
|
|
3133
|
+
// (`stages/toolCalls.ts` · "── Skill-graph read_skill GATE" the gate, `toolCalls.ts` ·
|
|
3134
|
+
// "── THE REFUSAL SPEAKS WITH THE FILTERED SETS" the propose-transition refusal,
|
|
3135
|
+
// `toolCalls.ts` · `dispatchRoster`). Nothing is cached here: an
|
|
3136
|
+
// earlier draft of 9.84.0 cached the resolved ids so the gate could filter
|
|
3137
|
+
// the self-call notice's move offer through them; the notice no longer names
|
|
3138
|
+
// a destination at all (see `selfCallNotice`), so there is nothing left to
|
|
3139
|
+
// filter and the cache went with the clause that needed it.
|
|
3126
3140
|
const hiddenSkillIds = this.hiddenSkillIdsNow();
|
|
3127
3141
|
// Registration-time owner stamps (9.60.0) — the identity edges the
|
|
3128
3142
|
// integrity checks read. Built once per chart from the registry.
|