agentfootprint 7.1.0 → 7.2.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/CLAUDE.md +1 -1
- package/dist/esm/lib/context-ledger/contextLedger.d.ts +35 -0
- package/dist/esm/lib/context-ledger/contextLedger.js +309 -0
- package/dist/esm/lib/context-ledger/contextLedger.js.map +1 -0
- package/dist/esm/lib/context-ledger/gates.d.ts +63 -0
- package/dist/esm/lib/context-ledger/gates.js +105 -0
- package/dist/esm/lib/context-ledger/gates.js.map +1 -0
- package/dist/esm/lib/context-ledger/index.d.ts +10 -0
- package/dist/esm/lib/context-ledger/index.js +10 -0
- package/dist/esm/lib/context-ledger/index.js.map +1 -0
- package/dist/esm/lib/context-ledger/types.d.ts +107 -0
- package/dist/esm/lib/context-ledger/types.js +28 -0
- package/dist/esm/lib/context-ledger/types.js.map +1 -0
- package/dist/esm/observe.d.ts +2 -0
- package/dist/esm/observe.js +4 -0
- package/dist/esm/observe.js.map +1 -1
- package/dist/lib/context-ledger/contextLedger.js +313 -0
- package/dist/lib/context-ledger/contextLedger.js.map +1 -0
- package/dist/lib/context-ledger/gates.js +111 -0
- package/dist/lib/context-ledger/gates.js.map +1 -0
- package/dist/lib/context-ledger/index.js +17 -0
- package/dist/lib/context-ledger/index.js.map +1 -0
- package/dist/lib/context-ledger/types.js +29 -0
- package/dist/lib/context-ledger/types.js.map +1 -0
- package/dist/observe.js +9 -1
- package/dist/observe.js.map +1 -1
- package/dist/types/lib/context-ledger/contextLedger.d.ts +36 -0
- package/dist/types/lib/context-ledger/contextLedger.d.ts.map +1 -0
- package/dist/types/lib/context-ledger/gates.d.ts +64 -0
- package/dist/types/lib/context-ledger/gates.d.ts.map +1 -0
- package/dist/types/lib/context-ledger/index.d.ts +11 -0
- package/dist/types/lib/context-ledger/index.d.ts.map +1 -0
- package/dist/types/lib/context-ledger/types.d.ts +108 -0
- package/dist/types/lib/context-ledger/types.d.ts.map +1 -0
- package/dist/types/observe.d.ts +2 -0
- package/dist/types/observe.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* context-ledger/types.ts — the bookkeeper's vocabulary.
|
|
4
|
+
*
|
|
5
|
+
* WHY THIS LIBRARY EXISTS: context engineering fails in one predictable
|
|
6
|
+
* direction — "include everything to be safe". Every injection, skill and
|
|
7
|
+
* tool schema costs tokens EVERY turn, whether or not it ever mattered. The
|
|
8
|
+
* ledger keeps score across runs: which pieces EARNED their tokens (were
|
|
9
|
+
* called, activated, or sat on the answer's dependency slice) and which
|
|
10
|
+
* never did. Its rows feed the L2 gates (gatedTools predicate, skill-graph
|
|
11
|
+
* EntryScorer, injection demotion) so future turns include less — the
|
|
12
|
+
* mechanism that makes lesser models viable.
|
|
13
|
+
*
|
|
14
|
+
* HONESTY (the discipline everything here inherits):
|
|
15
|
+
* - Every counter is a STRUCTURAL fact from the run's own commit log —
|
|
16
|
+
* offers are recorded commits, uses are recorded calls/activations/slice
|
|
17
|
+
* membership. Nothing is inferred from model internals.
|
|
18
|
+
* - Each kind's `used` definition is explicit ({@link UsedSignal}) and rides
|
|
19
|
+
* every count — a consumer can always see WHY a piece counted as used.
|
|
20
|
+
* - Slice membership is slot-granular (all injections sharing a slot share
|
|
21
|
+
* its write) — the signal name says so: `'answer-slice(slot)'`.
|
|
22
|
+
* - `approxTokens*` is a serialized-length estimate (JSON chars ÷ 4), named
|
|
23
|
+
* so nobody mistakes it for a tokenizer count.
|
|
24
|
+
* - The ledger never claims causation. `earnRate` is bookkeeping;
|
|
25
|
+
* ablation (context-bisect) can upgrade individual claims when you pay
|
|
26
|
+
* for it.
|
|
27
|
+
*/
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/context-ledger/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG"}
|
package/dist/observe.js
CHANGED
|
@@ -46,7 +46,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
46
46
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
47
47
|
};
|
|
48
48
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
-
exports.formatRouteHop = exports.routeRecorder = exports.toolChoiceRecorder = exports.buildChoiceContext = exports.typedEmit = exports.agentThinkingTrace = exports.toolLineageRecorder = exports.attachStatus = exports.LoggingDomains = exports.attachLogging = exports.skillRecorder = exports.permissionRecorder = exports.memoryRecorder = exports.evalRecorder = exports.contextEvaluatedRecorder = exports.toolsRecorder = exports.costRecorder = exports.LiveAgentTurnTracker = exports.LiveToolTracker = exports.LiveLLMTracker = exports.LiveStateRecorder = exports.liveStateRecorder = exports.attachLocalObservability = exports.traceToStepGraph = exports.redactContent = exports.serializeTrace = exports.buildStepGraphFromEvents = exports.buildStepGraph = exports.attachFlowchart = exports.runStepRecorder = exports.RunStepRecorder = exports.buildRunSteps = exports.BoundaryRecorder = exports.boundaryRecorder = exports.agentRecorder = exports.compositionRecorder = exports.streamRecorder = exports.ContextRecorder = void 0;
|
|
49
|
+
exports.ledgerGated = exports.ledgerEntryScorer = exports.ledgerToolGate = exports.contextLedger = exports.formatRouteHop = exports.routeRecorder = exports.toolChoiceRecorder = exports.buildChoiceContext = exports.typedEmit = exports.agentThinkingTrace = exports.toolLineageRecorder = exports.attachStatus = exports.LoggingDomains = exports.attachLogging = exports.skillRecorder = exports.permissionRecorder = exports.memoryRecorder = exports.evalRecorder = exports.contextEvaluatedRecorder = exports.toolsRecorder = exports.costRecorder = exports.LiveAgentTurnTracker = exports.LiveToolTracker = exports.LiveLLMTracker = exports.LiveStateRecorder = exports.liveStateRecorder = exports.attachLocalObservability = exports.traceToStepGraph = exports.redactContent = exports.serializeTrace = exports.buildStepGraphFromEvents = exports.buildStepGraph = exports.attachFlowchart = exports.runStepRecorder = exports.RunStepRecorder = exports.buildRunSteps = exports.BoundaryRecorder = exports.boundaryRecorder = exports.agentRecorder = exports.compositionRecorder = exports.streamRecorder = exports.ContextRecorder = void 0;
|
|
50
50
|
// Tier 1 — context + stream
|
|
51
51
|
var ContextRecorder_js_1 = require("./recorders/core/ContextRecorder.js");
|
|
52
52
|
Object.defineProperty(exports, "ContextRecorder", { enumerable: true, get: function () { return ContextRecorder_js_1.ContextRecorder; } });
|
|
@@ -132,4 +132,12 @@ Object.defineProperty(exports, "toolChoiceRecorder", { enumerable: true, get: fu
|
|
|
132
132
|
var RouteRecorder_js_1 = require("./recorders/observability/RouteRecorder.js");
|
|
133
133
|
Object.defineProperty(exports, "routeRecorder", { enumerable: true, get: function () { return RouteRecorder_js_1.routeRecorder; } });
|
|
134
134
|
Object.defineProperty(exports, "formatRouteHop", { enumerable: true, get: function () { return RouteRecorder_js_1.formatRouteHop; } });
|
|
135
|
+
// context-ledger — which context pieces EARNED their tokens? Post-run
|
|
136
|
+
// bookkeeping (offers/uses/outcomes from the commit log) feeding the gating
|
|
137
|
+
// seams. See src/lib/context-ledger/README.md.
|
|
138
|
+
var index_js_1 = require("./lib/context-ledger/index.js");
|
|
139
|
+
Object.defineProperty(exports, "contextLedger", { enumerable: true, get: function () { return index_js_1.contextLedger; } });
|
|
140
|
+
Object.defineProperty(exports, "ledgerToolGate", { enumerable: true, get: function () { return index_js_1.ledgerToolGate; } });
|
|
141
|
+
Object.defineProperty(exports, "ledgerEntryScorer", { enumerable: true, get: function () { return index_js_1.ledgerEntryScorer; } });
|
|
142
|
+
Object.defineProperty(exports, "ledgerGated", { enumerable: true, get: function () { return index_js_1.ledgerGated; } });
|
|
135
143
|
//# sourceMappingURL=observe.js.map
|
package/dist/observe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observe.js","sourceRoot":"","sources":["../src/observe.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;;;;;;;;;;;;;;;;;AAEH,4BAA4B;AAC5B,0EAAmG;AAA1F,qHAAA,eAAe,OAAA;AACxB,wEAAgG;AAAvF,mHAAA,cAAc,OAAA;AAEvB,+BAA+B;AAC/B,kFAGiD;AAF/C,6HAAA,mBAAmB,OAAA;AAGrB,sEAA6F;AAApF,iHAAA,aAAa,OAAA;AACtB,qFAkBuD;AAjBrD,uHAAA,gBAAgB,OAAA;AAChB,uHAAA,gBAAgB,OAAA;AAiBlB,mFAWsD;AAVpD,mHAAA,aAAa,OAAA;AACb,qHAAA,eAAe,OAAA;AACf,qHAAA,eAAe,OAAA;AASjB,uFAWwD;AAVtD,uHAAA,eAAe,OAAA;AACf,sHAAA,cAAc,OAAA;AACd,gIAAA,wBAAwB,OAAA;AAU1B,8EAA8E;AAC9E,gFAAgF;AAChF,iEAAiE;AACjE,+DAQ4C;AAP1C,0GAAA,cAAc,OAAA;AACd,yGAAA,aAAa,OAAA;AACb,4GAAA,gBAAgB,OAAA;AAOlB,mFAAmF;AACnF,yFAIyD;AAHvD,iIAAA,wBAAwB,OAAA;AAK1B,uFAUwD;AATtD,yHAAA,iBAAiB,OAAA;AACjB,yHAAA,iBAAiB,OAAA;AACjB,sHAAA,cAAc,OAAA;AACd,uHAAA,eAAe,OAAA;AACf,4HAAA,oBAAoB,OAAA;AAOtB,6BAA6B;AAC7B,oEAA0F;AAAjF,+GAAA,YAAY,OAAA;AACrB,sEAA6F;AAApF,iHAAA,aAAa,OAAA;AACtB,4FAGsD;AAFpD,uIAAA,wBAAwB,OAAA;AAG1B,oEAA0F;AAAjF,+GAAA,YAAY,OAAA;AACrB,wEAAgG;AAAvF,mHAAA,cAAc,OAAA;AACvB,gFAGgD;AAF9C,2HAAA,kBAAkB,OAAA;AAGpB,sEAA6F;AAApF,iHAAA,aAAa,OAAA;AACtB,mFAMsD;AALpD,mHAAA,aAAa,OAAA;AACb,oHAAA,cAAc,OAAA;AAKhB,iFAIqD;AAHnD,iHAAA,YAAY,OAAA;AAId,4EAA4E;AAC5E,gFAAgF;AAChF,2FAO0D;AANxD,6HAAA,mBAAmB,OAAA;AAOrB,gFAAgF;AAChF,gFAAgF;AAChF,yGASiE;AAR/D,mIAAA,kBAAkB,OAAA;AAUpB,uDAAuD;AACvD,8DAA0D;AAAjD,yGAAA,SAAS,OAAA;AAElB,kEAAkE;AAClE,uEAAuE;AACvE,4EAA4E;AAC5E,6EAA6E;AAC7E,4EAA4E;AAC5E,wEAAwE;AACxE,6CAA2B;AAC3B,sEAAsE;AACtE,uEAAuE;AACvE,qEAAqE;AACrE,oEAAoE;AACpE,yFASyD;AARvD,2HAAA,kBAAkB,OAAA;AAClB,2HAAA,kBAAkB,OAAA;AASpB,+EASoD;AARlD,iHAAA,aAAa,OAAA;AACb,kHAAA,cAAc,OAAA"}
|
|
1
|
+
{"version":3,"file":"observe.js","sourceRoot":"","sources":["../src/observe.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;;;;;;;;;;;;;;;;;AAEH,4BAA4B;AAC5B,0EAAmG;AAA1F,qHAAA,eAAe,OAAA;AACxB,wEAAgG;AAAvF,mHAAA,cAAc,OAAA;AAEvB,+BAA+B;AAC/B,kFAGiD;AAF/C,6HAAA,mBAAmB,OAAA;AAGrB,sEAA6F;AAApF,iHAAA,aAAa,OAAA;AACtB,qFAkBuD;AAjBrD,uHAAA,gBAAgB,OAAA;AAChB,uHAAA,gBAAgB,OAAA;AAiBlB,mFAWsD;AAVpD,mHAAA,aAAa,OAAA;AACb,qHAAA,eAAe,OAAA;AACf,qHAAA,eAAe,OAAA;AASjB,uFAWwD;AAVtD,uHAAA,eAAe,OAAA;AACf,sHAAA,cAAc,OAAA;AACd,gIAAA,wBAAwB,OAAA;AAU1B,8EAA8E;AAC9E,gFAAgF;AAChF,iEAAiE;AACjE,+DAQ4C;AAP1C,0GAAA,cAAc,OAAA;AACd,yGAAA,aAAa,OAAA;AACb,4GAAA,gBAAgB,OAAA;AAOlB,mFAAmF;AACnF,yFAIyD;AAHvD,iIAAA,wBAAwB,OAAA;AAK1B,uFAUwD;AATtD,yHAAA,iBAAiB,OAAA;AACjB,yHAAA,iBAAiB,OAAA;AACjB,sHAAA,cAAc,OAAA;AACd,uHAAA,eAAe,OAAA;AACf,4HAAA,oBAAoB,OAAA;AAOtB,6BAA6B;AAC7B,oEAA0F;AAAjF,+GAAA,YAAY,OAAA;AACrB,sEAA6F;AAApF,iHAAA,aAAa,OAAA;AACtB,4FAGsD;AAFpD,uIAAA,wBAAwB,OAAA;AAG1B,oEAA0F;AAAjF,+GAAA,YAAY,OAAA;AACrB,wEAAgG;AAAvF,mHAAA,cAAc,OAAA;AACvB,gFAGgD;AAF9C,2HAAA,kBAAkB,OAAA;AAGpB,sEAA6F;AAApF,iHAAA,aAAa,OAAA;AACtB,mFAMsD;AALpD,mHAAA,aAAa,OAAA;AACb,oHAAA,cAAc,OAAA;AAKhB,iFAIqD;AAHnD,iHAAA,YAAY,OAAA;AAId,4EAA4E;AAC5E,gFAAgF;AAChF,2FAO0D;AANxD,6HAAA,mBAAmB,OAAA;AAOrB,gFAAgF;AAChF,gFAAgF;AAChF,yGASiE;AAR/D,mIAAA,kBAAkB,OAAA;AAUpB,uDAAuD;AACvD,8DAA0D;AAAjD,yGAAA,SAAS,OAAA;AAElB,kEAAkE;AAClE,uEAAuE;AACvE,4EAA4E;AAC5E,6EAA6E;AAC7E,4EAA4E;AAC5E,wEAAwE;AACxE,6CAA2B;AAC3B,sEAAsE;AACtE,uEAAuE;AACvE,qEAAqE;AACrE,oEAAoE;AACpE,yFASyD;AARvD,2HAAA,kBAAkB,OAAA;AAClB,2HAAA,kBAAkB,OAAA;AASpB,+EASoD;AARlD,iHAAA,aAAa,OAAA;AACb,kHAAA,cAAc,OAAA;AAShB,sEAAsE;AACtE,4EAA4E;AAC5E,+CAA+C;AAC/C,0DAA8G;AAArG,yGAAA,aAAa,OAAA;AAAE,0GAAA,cAAc,OAAA;AAAE,6GAAA,iBAAiB,OAAA;AAAE,uGAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* contextLedger — the post-run bookkeeper (see types.ts for the WHY).
|
|
3
|
+
*
|
|
4
|
+
* DESIGN: a pure POST-RUN analyzer over the run's own commit log — no live
|
|
5
|
+
* recorder lifecycle, no event-order coupling. Everything it counts is
|
|
6
|
+
* already durably recorded by the engine (dogfooding: offers come from
|
|
7
|
+
* `commitValueAt` folds, answer attribution from `sliceForKey` — the same
|
|
8
|
+
* canonical queries every triage surface uses):
|
|
9
|
+
*
|
|
10
|
+
* offers — the context IN EFFECT at each LLM call. Call marker: a
|
|
11
|
+
* commit that wrote `totalInputTokens` (monotonic — never
|
|
12
|
+
* net-change-dropped) and did NOT write `userMessage` (which
|
|
13
|
+
* only the seed writes). At each call index, fold
|
|
14
|
+
* `activeInjections` + `dynamicToolSchemas`, and add the
|
|
15
|
+
* STATIC tool registry (duck-read from the runner's public
|
|
16
|
+
* `getUIGroup().extra.toolNames` — static registries live in a
|
|
17
|
+
* closure, never in scope state). NOTE offers are deliberately
|
|
18
|
+
* NOT "per context-key commit": the net-change filter drops
|
|
19
|
+
* identical re-commits, so stable context appears once in the
|
|
20
|
+
* log while still being offered (and paying tokens) per call.
|
|
21
|
+
* Static-registry tools count offers with approxTokens 0 in L1
|
|
22
|
+
* (their schema JSON isn't in the log) — earnRate, the gate
|
|
23
|
+
* signal, is unaffected; dynamicToolSchemas carries real sizes.
|
|
24
|
+
* uses — tool: assistant messages' toolCalls in the final history;
|
|
25
|
+
* skill: `activatedInjectionIds`;
|
|
26
|
+
* injection: its SLOT's write sits on the final answer's
|
|
27
|
+
* backward slice (slot-granular, labeled).
|
|
28
|
+
* outcome — consumer label per run, credited to every offered piece.
|
|
29
|
+
*
|
|
30
|
+
* The slot→slice join needs NO id conventions: for each slot key
|
|
31
|
+
* (INJECTION_KEYS.*), `findLastWriter` names the commit that fed the final
|
|
32
|
+
* LLM call; membership of that writer in the answer slice IS the signal.
|
|
33
|
+
*/
|
|
34
|
+
import type { ContextLedger } from './types.js';
|
|
35
|
+
export declare function contextLedger(): ContextLedger;
|
|
36
|
+
//# sourceMappingURL=contextLedger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextLedger.d.ts","sourceRoot":"","sources":["../../../../src/lib/context-ledger/contextLedger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAaH,OAAO,KAAK,EACV,aAAa,EAMd,MAAM,YAAY,CAAC;AAwEpB,wBAAgB,aAAa,IAAI,aAAa,CAmO7C"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* context-ledger/gates.ts — L2: the ledger's rows feed what gets included.
|
|
3
|
+
*
|
|
4
|
+
* Three gates, one policy, each hooking an EXISTING seam (no new framework
|
|
5
|
+
* surface): `gatedTools(inner, predicate)` for tools, `skillGraph().entryBy`
|
|
6
|
+
* for skills, and a rule-trigger wrapper for injections.
|
|
7
|
+
*
|
|
8
|
+
* THE POLICY PRINCIPLE — demote, never starve: a piece the ledger judges
|
|
9
|
+
* poorly is demoted, but every `refreshEvery`-th decision lets it through
|
|
10
|
+
* anyway ("parole"), so it keeps generating fresh ledger data. Without
|
|
11
|
+
* parole a piece demoted once could never earn again — a self-fulfilling
|
|
12
|
+
* verdict. And the ledger never judges a piece it barely knows: below
|
|
13
|
+
* `minOffers` everything passes.
|
|
14
|
+
*/
|
|
15
|
+
import type { EntryScorer } from '../injection-engine/entryScorer.js';
|
|
16
|
+
import type { Injection } from '../injection-engine/types.js';
|
|
17
|
+
import type { ToolGatePredicate } from '../../tool-providers/types.js';
|
|
18
|
+
import type { ContextLedger } from './types.js';
|
|
19
|
+
/**
|
|
20
|
+
* When the ledger is allowed to judge, and how harshly.
|
|
21
|
+
* Plain-named knobs — a bookkeeper's rules, not ML hyperparameters.
|
|
22
|
+
*/
|
|
23
|
+
export interface LedgerPolicy {
|
|
24
|
+
/** Don't judge a piece until it has been offered this many times. Default 5. */
|
|
25
|
+
readonly minOffers?: number;
|
|
26
|
+
/** Demote below this used÷offered rate. Default 0.05 (essentially "never used"). */
|
|
27
|
+
readonly earnRateFloor?: number;
|
|
28
|
+
/**
|
|
29
|
+
* Parole: let a demoted piece through anyway every Nth demotion decision,
|
|
30
|
+
* so it keeps earning fresh data. Default 10. `Infinity` disables parole
|
|
31
|
+
* (NOT recommended — a starved piece can never redeem itself).
|
|
32
|
+
*/
|
|
33
|
+
readonly refreshEvery?: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* TOOL GATE — plug into the existing provider combinator:
|
|
37
|
+
*
|
|
38
|
+
* ```ts
|
|
39
|
+
* import { gatedTools, staticTools } from 'agentfootprint/tool-providers';
|
|
40
|
+
* builder.toolProvider(gatedTools(staticTools(tools), ledgerToolGate(ledger)));
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* Unused tool schemas are usually the biggest silent token cost — this is
|
|
44
|
+
* the gate to start with.
|
|
45
|
+
*/
|
|
46
|
+
export declare function ledgerToolGate(ledger: ContextLedger, policy?: LedgerPolicy): ToolGatePredicate;
|
|
47
|
+
/**
|
|
48
|
+
* SKILL GATE — an `EntryScorer` for `skillGraph().entryBy(...)` that wraps
|
|
49
|
+
* another scorer (keyword, embedding, …) and demotes candidates the ledger
|
|
50
|
+
* says never earn. Demotion multiplies the inner score toward the floor —
|
|
51
|
+
* ranking pressure, not exclusion — and parole restores full weight
|
|
52
|
+
* periodically, so a demoted skill can still win when nothing else fits.
|
|
53
|
+
*/
|
|
54
|
+
export declare function ledgerEntryScorer(ledger: ContextLedger, inner: EntryScorer, policy?: LedgerPolicy): EntryScorer;
|
|
55
|
+
/**
|
|
56
|
+
* INJECTION GATE — wrap ONE injection so the ledger's verdict joins its
|
|
57
|
+
* trigger. `always` becomes a ledger-backed rule; an existing `rule` is
|
|
58
|
+
* AND-ed with the verdict. `on-tool-return` / `llm-activated` are returned
|
|
59
|
+
* UNCHANGED (they are already demand-driven — the ledger has nothing to
|
|
60
|
+
* add). `always` pieces are exempt unless you explicitly wrap them — the
|
|
61
|
+
* safety-first default from the design.
|
|
62
|
+
*/
|
|
63
|
+
export declare function ledgerGated(injection: Injection, ledger: ContextLedger, policy?: LedgerPolicy): Injection;
|
|
64
|
+
//# sourceMappingURL=gates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gates.d.ts","sourceRoot":"","sources":["../../../../src/lib/context-ledger/gates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAkC,MAAM,oCAAoC,CAAC;AACtG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,YAAY,CAAC;AAE3D;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,gFAAgF;IAChF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,oFAAoF;IACpF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAChC;AA2BD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,iBAAiB,CAG9F;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,YAAY,GACpB,WAAW,CAqBb;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CACzB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,aAAa,EACrB,MAAM,CAAC,EAAE,YAAY,GACpB,SAAS,CAeX"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* context-ledger — which context pieces EARNED their tokens?
|
|
3
|
+
*
|
|
4
|
+
* Post-run bookkeeping over the run's own commit log (offers, structural
|
|
5
|
+
* uses, consumer outcomes) whose rows feed the gating seams so future turns
|
|
6
|
+
* include less. See README.md for the honesty model and the L2 gates.
|
|
7
|
+
*/
|
|
8
|
+
export { contextLedger } from './contextLedger.js';
|
|
9
|
+
export type { ContextLedger, LedgerJSON, LedgerRow, PieceKind, RecordedRun, UsedSignal, } from './types.js';
|
|
10
|
+
export { ledgerToolGate, ledgerEntryScorer, ledgerGated, type LedgerPolicy } from './gates.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/context-ledger/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EACV,aAAa,EACb,UAAU,EACV,SAAS,EACT,SAAS,EACT,WAAW,EACX,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* context-ledger/types.ts — the bookkeeper's vocabulary.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS LIBRARY EXISTS: context engineering fails in one predictable
|
|
5
|
+
* direction — "include everything to be safe". Every injection, skill and
|
|
6
|
+
* tool schema costs tokens EVERY turn, whether or not it ever mattered. The
|
|
7
|
+
* ledger keeps score across runs: which pieces EARNED their tokens (were
|
|
8
|
+
* called, activated, or sat on the answer's dependency slice) and which
|
|
9
|
+
* never did. Its rows feed the L2 gates (gatedTools predicate, skill-graph
|
|
10
|
+
* EntryScorer, injection demotion) so future turns include less — the
|
|
11
|
+
* mechanism that makes lesser models viable.
|
|
12
|
+
*
|
|
13
|
+
* HONESTY (the discipline everything here inherits):
|
|
14
|
+
* - Every counter is a STRUCTURAL fact from the run's own commit log —
|
|
15
|
+
* offers are recorded commits, uses are recorded calls/activations/slice
|
|
16
|
+
* membership. Nothing is inferred from model internals.
|
|
17
|
+
* - Each kind's `used` definition is explicit ({@link UsedSignal}) and rides
|
|
18
|
+
* every count — a consumer can always see WHY a piece counted as used.
|
|
19
|
+
* - Slice membership is slot-granular (all injections sharing a slot share
|
|
20
|
+
* its write) — the signal name says so: `'answer-slice(slot)'`.
|
|
21
|
+
* - `approxTokens*` is a serialized-length estimate (JSON chars ÷ 4), named
|
|
22
|
+
* so nobody mistakes it for a tokenizer count.
|
|
23
|
+
* - The ledger never claims causation. `earnRate` is bookkeeping;
|
|
24
|
+
* ablation (context-bisect) can upgrade individual claims when you pay
|
|
25
|
+
* for it.
|
|
26
|
+
*/
|
|
27
|
+
/** What kind of context piece a row tracks. Skills are injections with
|
|
28
|
+
* flavor 'skill' — split out because their `used` signal differs. */
|
|
29
|
+
export type PieceKind = 'injection' | 'skill' | 'tool';
|
|
30
|
+
/**
|
|
31
|
+
* The per-kind structural definition of "used" — explicit, never blended:
|
|
32
|
+
* - `'tool-called'` — an assistant message actually called the tool.
|
|
33
|
+
* - `'skill-activated'` — the run activated the skill
|
|
34
|
+
* (`activatedInjectionIds`).
|
|
35
|
+
* - `'answer-slice(slot)'` — the injection's SLOT write sits on the final
|
|
36
|
+
* answer's backward dependency slice
|
|
37
|
+
* (slot-granular by construction).
|
|
38
|
+
*/
|
|
39
|
+
export type UsedSignal = 'tool-called' | 'skill-activated' | 'answer-slice(slot)';
|
|
40
|
+
/** One context piece's accumulated bookkeeping across recorded runs. */
|
|
41
|
+
export interface LedgerRow {
|
|
42
|
+
/** Injection/skill id, or tool name. Unique within its kind. */
|
|
43
|
+
readonly id: string;
|
|
44
|
+
readonly kind: PieceKind;
|
|
45
|
+
/** Offer events — once per iteration the piece was in context, across runs. */
|
|
46
|
+
readonly offered: number;
|
|
47
|
+
/** Serialized-length token ESTIMATE spent on those offers (chars ÷ 4). */
|
|
48
|
+
readonly approxTokensSpent: number;
|
|
49
|
+
/** Structural uses (per-kind definition — see breakdown in usedVia). */
|
|
50
|
+
readonly used: number;
|
|
51
|
+
/** Which signal(s) produced the `used` count, and how many each. */
|
|
52
|
+
readonly usedVia: Readonly<Partial<Record<UsedSignal, number>>>;
|
|
53
|
+
/** Distinct recorded runs in which the piece was offered at least once. */
|
|
54
|
+
readonly runsSeen: number;
|
|
55
|
+
/**
|
|
56
|
+
* Outcome labels of runs where the piece was OFFERED (label → run count).
|
|
57
|
+
* Labels are consumer-supplied via {@link ContextLedger.recordOutcome}
|
|
58
|
+
* (thumbs, eval scores bucketed by the consumer, triage verdicts).
|
|
59
|
+
* Presence-correlation bookkeeping — NOT a causal claim.
|
|
60
|
+
*/
|
|
61
|
+
readonly outcomes: Readonly<Record<string, number>>;
|
|
62
|
+
/** used ÷ offered (0 when never offered). THE headline number. */
|
|
63
|
+
readonly earnRate: number;
|
|
64
|
+
}
|
|
65
|
+
/** What `recordRun` extracted from one run — returned for inspection/tests. */
|
|
66
|
+
export interface RecordedRun {
|
|
67
|
+
/** Handle for {@link ContextLedger.recordOutcome}. */
|
|
68
|
+
readonly runRef: string;
|
|
69
|
+
/** Piece ids offered in this run (kind-qualified internal keys). */
|
|
70
|
+
readonly offeredPieces: readonly string[];
|
|
71
|
+
/** True when the answer slice could be computed (finalContent + reads). */
|
|
72
|
+
readonly sliceAvailable: boolean;
|
|
73
|
+
}
|
|
74
|
+
/** JSON-safe persisted shape (consumer owns storage). */
|
|
75
|
+
export interface LedgerJSON {
|
|
76
|
+
readonly version: 1;
|
|
77
|
+
readonly rows: readonly LedgerRow[];
|
|
78
|
+
readonly runsRecorded: number;
|
|
79
|
+
}
|
|
80
|
+
/** Minimal runner surface the ledger reads (any agentfootprint Runner). */
|
|
81
|
+
export interface RunnerLike {
|
|
82
|
+
getLastSnapshot(): unknown;
|
|
83
|
+
}
|
|
84
|
+
export interface ContextLedger {
|
|
85
|
+
/**
|
|
86
|
+
* Ingest one FINISHED run: walk its commit log for offers (activeInjections
|
|
87
|
+
* / dynamicToolSchemas per iteration), uses (assistant tool calls,
|
|
88
|
+
* activatedInjectionIds, the final answer's dependency slice), and
|
|
89
|
+
* accumulate. Accepts a runner (reads `getLastSnapshot()`) or a snapshot.
|
|
90
|
+
*/
|
|
91
|
+
recordRun(source: RunnerLike | unknown): RecordedRun | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* Label a recorded run's outcome ('good'/'bad'/any consumer label —
|
|
94
|
+
* thumbs, bucketed eval score, triage verdict). Defaults to the most
|
|
95
|
+
* recently recorded run. Increments the label for every piece OFFERED in
|
|
96
|
+
* that run.
|
|
97
|
+
*/
|
|
98
|
+
recordOutcome(label: string, runRef?: string): boolean;
|
|
99
|
+
/** All rows, worst earnRate first (the review order that matters). */
|
|
100
|
+
rows(): readonly LedgerRow[];
|
|
101
|
+
/** One row (by kind + id). */
|
|
102
|
+
row(kind: PieceKind, id: string): LedgerRow | undefined;
|
|
103
|
+
/** JSON-safe export (consumer persists). */
|
|
104
|
+
exportJSON(): LedgerJSON;
|
|
105
|
+
/** Merge a previously exported ledger in (counts add). */
|
|
106
|
+
importJSON(json: LedgerJSON): void;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/lib/context-ledger/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH;sEACsE;AACtE,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,aAAa,GAAG,iBAAiB,GAAG,oBAAoB,CAAC;AAElF,wEAAwE;AACxE,MAAM,WAAW,SAAS;IACxB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,wEAAwE;IACxE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAChE,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,+EAA+E;AAC/E,MAAM,WAAW,WAAW;IAC1B,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,2EAA2E;IAC3E,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAED,yDAAyD;AACzD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,2EAA2E;AAC3E,MAAM,WAAW,UAAU;IACzB,eAAe,IAAI,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;IACjE;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACvD,sEAAsE;IACtE,IAAI,IAAI,SAAS,SAAS,EAAE,CAAC;IAC7B,8BAA8B;IAC9B,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACxD,4CAA4C;IAC5C,UAAU,IAAI,UAAU,CAAC;IACzB,0DAA0D;IAC1D,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;CACpC"}
|
package/dist/types/observe.d.ts
CHANGED
|
@@ -55,4 +55,6 @@ export { typedEmit } from './recorders/core/typedEmit.js';
|
|
|
55
55
|
export * from "./debug.js";
|
|
56
56
|
export { buildChoiceContext, toolChoiceRecorder, type OfferedTool, type ToolChoiceCall, type ToolChoiceRecorderHandle, type ToolChoiceRecorderOptions, type ToolChoiceSkipReason, type ToolChoiceSummary, } from './recorders/observability/ToolChoiceRecorder.js';
|
|
57
57
|
export { routeRecorder, formatRouteHop, type RouteRecorderHandle, type RouteRecorderOptions, type RouteHop, type RouteOutcome, type RouteTrip, type RouteTripKind, } from './recorders/observability/RouteRecorder.js';
|
|
58
|
+
export { contextLedger, ledgerToolGate, ledgerEntryScorer, ledgerGated } from './lib/context-ledger/index.js';
|
|
59
|
+
export type { ContextLedger, LedgerJSON, LedgerPolicy, LedgerRow, PieceKind, RecordedRun, UsedSignal, } from './lib/context-ledger/index.js';
|
|
58
60
|
//# sourceMappingURL=observe.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../../src/observe.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../../src/observe.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentfootprint",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.2.0",
|
|
4
4
|
"description": "The explainable agent framework — backtrack a wrong answer to the exact context that caused it (evidence, not guesses). Built on footprintjs.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Sanjay Krishna Anbalagan",
|