agentfootprint 9.135.1 → 9.136.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/dist/esm/lib/context-bisect/localize.d.ts +8 -1
- package/dist/esm/lib/context-bisect/localize.js +29 -6
- package/dist/esm/lib/context-bisect/localize.js.map +1 -1
- package/dist/esm/lib/context-bisect/loop-recall.js +3 -2
- package/dist/esm/lib/context-bisect/loop-recall.js.map +1 -1
- package/dist/esm/lib/context-bisect/sliceToBacktrackTrace.js +12 -9
- package/dist/esm/lib/context-bisect/sliceToBacktrackTrace.js.map +1 -1
- package/dist/esm/lib/context-bisect/trajectory.d.ts +11 -1
- package/dist/esm/lib/context-bisect/trajectory.js +34 -19
- package/dist/esm/lib/context-bisect/trajectory.js.map +1 -1
- package/dist/esm/lib/context-bisect/types.d.ts +9 -1
- package/dist/esm/lib/context-bisect/types.js.map +1 -1
- package/dist/esm/lib/context-bisect/variable-recall.js +0 -0
- package/dist/esm/lib/context-bisect/variable-recall.js.map +1 -1
- package/dist/esm/lib/context-ledger/contextLedger.d.ts +6 -0
- package/dist/esm/lib/context-ledger/contextLedger.js +45 -14
- package/dist/esm/lib/context-ledger/contextLedger.js.map +1 -1
- package/dist/esm/lib/context-ledger/types.d.ts +10 -0
- package/dist/esm/lib/trace-toolpack/traceToolpack.js +70 -35
- package/dist/esm/lib/trace-toolpack/traceToolpack.js.map +1 -1
- package/dist/lib/context-bisect/localize.js +28 -5
- package/dist/lib/context-bisect/localize.js.map +1 -1
- package/dist/lib/context-bisect/loop-recall.js +3 -2
- package/dist/lib/context-bisect/loop-recall.js.map +1 -1
- package/dist/lib/context-bisect/sliceToBacktrackTrace.js +12 -9
- package/dist/lib/context-bisect/sliceToBacktrackTrace.js.map +1 -1
- package/dist/lib/context-bisect/trajectory.js +33 -18
- package/dist/lib/context-bisect/trajectory.js.map +1 -1
- package/dist/lib/context-bisect/types.js.map +1 -1
- package/dist/lib/context-bisect/variable-recall.js +0 -0
- package/dist/lib/context-bisect/variable-recall.js.map +1 -1
- package/dist/lib/context-ledger/contextLedger.js +44 -13
- package/dist/lib/context-ledger/contextLedger.js.map +1 -1
- package/dist/lib/trace-toolpack/traceToolpack.js +69 -34
- package/dist/lib/trace-toolpack/traceToolpack.js.map +1 -1
- package/dist/types/lib/context-bisect/localize.d.ts +8 -1
- package/dist/types/lib/context-bisect/localize.d.ts.map +1 -1
- package/dist/types/lib/context-bisect/loop-recall.d.ts.map +1 -1
- package/dist/types/lib/context-bisect/sliceToBacktrackTrace.d.ts.map +1 -1
- package/dist/types/lib/context-bisect/trajectory.d.ts +11 -1
- package/dist/types/lib/context-bisect/trajectory.d.ts.map +1 -1
- package/dist/types/lib/context-bisect/types.d.ts +9 -1
- package/dist/types/lib/context-bisect/types.d.ts.map +1 -1
- package/dist/types/lib/context-bisect/variable-recall.d.ts.map +1 -1
- package/dist/types/lib/context-ledger/contextLedger.d.ts +6 -0
- package/dist/types/lib/context-ledger/contextLedger.d.ts.map +1 -1
- package/dist/types/lib/context-ledger/types.d.ts +10 -0
- package/dist/types/lib/context-ledger/types.d.ts.map +1 -1
- package/dist/types/lib/trace-toolpack/traceToolpack.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -30,6 +30,12 @@
|
|
|
30
30
|
* The slot→slice join needs NO id conventions: for each slot key
|
|
31
31
|
* (INJECTION_KEYS.*), `findLastWriter` names the commit that fed the final
|
|
32
32
|
* LLM call; membership of that writer in the answer slice IS the signal.
|
|
33
|
+
*
|
|
34
|
+
* Every read goes through footprintjs's BASIS twins (`commitValueAtWithBasis`,
|
|
35
|
+
* `findLastWriterWithBasis`): an answer that rests on nested rows, the
|
|
36
|
+
* pre-run state, a redaction or a delete says so on `RecordedRun.basis`
|
|
37
|
+
* (per key, absent when every answer was exact) instead of being counted as
|
|
38
|
+
* if it were exact.
|
|
33
39
|
*/
|
|
34
40
|
import type { ContextLedger } from './types.js';
|
|
35
41
|
export declare function contextLedger(): ContextLedger;
|
|
@@ -30,8 +30,14 @@
|
|
|
30
30
|
* The slot→slice join needs NO id conventions: for each slot key
|
|
31
31
|
* (INJECTION_KEYS.*), `findLastWriter` names the commit that fed the final
|
|
32
32
|
* LLM call; membership of that writer in the answer slice IS the signal.
|
|
33
|
+
*
|
|
34
|
+
* Every read goes through footprintjs's BASIS twins (`commitValueAtWithBasis`,
|
|
35
|
+
* `findLastWriterWithBasis`): an answer that rests on nested rows, the
|
|
36
|
+
* pre-run state, a redaction or a delete says so on `RecordedRun.basis`
|
|
37
|
+
* (per key, absent when every answer was exact) instead of being counted as
|
|
38
|
+
* if it were exact.
|
|
33
39
|
*/
|
|
34
|
-
import {
|
|
40
|
+
import { commitValueAtWithBasis, findLastWriterWithBasis, flattenCausalDAG, keysReadFromExecutionTree, sliceForKey, } from 'footprintjs/trace';
|
|
35
41
|
import { INJECTION_KEYS } from '../../conventions.js';
|
|
36
42
|
// The flat/grouped fork, from its ONE owner (9.88.0). This file used to carry a
|
|
37
43
|
// private copy and `context-bisect/trajectory.ts` carried its byte-twin; two
|
|
@@ -106,6 +112,22 @@ export function contextLedger() {
|
|
|
106
112
|
runsRecorded += 1;
|
|
107
113
|
const runRef = `run-${runsRecorded}`;
|
|
108
114
|
const offeredKeys = new Set();
|
|
115
|
+
// The reason codes behind every non-exact answer read below, per key.
|
|
116
|
+
const basisByKey = new Map();
|
|
117
|
+
const noteBasis = (key, codes) => {
|
|
118
|
+
if (codes.length === 0)
|
|
119
|
+
return;
|
|
120
|
+
let seen = basisByKey.get(key);
|
|
121
|
+
if (!seen)
|
|
122
|
+
basisByKey.set(key, (seen = new Set()));
|
|
123
|
+
for (const code of codes)
|
|
124
|
+
seen.add(code);
|
|
125
|
+
};
|
|
126
|
+
const valueAt = (bundles, initialState, idx, key) => {
|
|
127
|
+
const { value, basis } = commitValueAtWithBasis(bundles, idx, key, { initialState });
|
|
128
|
+
noteBasis(key, basis);
|
|
129
|
+
return value;
|
|
130
|
+
};
|
|
109
131
|
const offer = (kind, id, tokens) => {
|
|
110
132
|
const row = rowOf(kind, id);
|
|
111
133
|
row.offered += 1;
|
|
@@ -126,18 +148,18 @@ export function contextLedger() {
|
|
|
126
148
|
// log — the same projection context-bisect's grouped trajectory uses.
|
|
127
149
|
const staticTools = staticToolNamesOf(source);
|
|
128
150
|
let callMarkers = 0;
|
|
129
|
-
const foldOffersFrom = (bundles) => {
|
|
151
|
+
const foldOffersFrom = (bundles, initialState) => {
|
|
130
152
|
let injections = [];
|
|
131
153
|
let schemas = [];
|
|
132
154
|
for (let i = 0; i < bundles.length; i++) {
|
|
133
155
|
const paths = new Set(bundles[i].trace.map((t) => t.path));
|
|
134
156
|
if (paths.has('activeInjections')) {
|
|
135
|
-
const v =
|
|
157
|
+
const v = valueAt(bundles, initialState, i, 'activeInjections');
|
|
136
158
|
if (Array.isArray(v))
|
|
137
159
|
injections = v;
|
|
138
160
|
}
|
|
139
161
|
if (paths.has('dynamicToolSchemas')) {
|
|
140
|
-
const v =
|
|
162
|
+
const v = valueAt(bundles, initialState, i, 'dynamicToolSchemas');
|
|
141
163
|
if (Array.isArray(v))
|
|
142
164
|
schemas = v;
|
|
143
165
|
}
|
|
@@ -170,13 +192,13 @@ export function contextLedger() {
|
|
|
170
192
|
const mountKeys = llmCallMountKeys(snapshot?.subflowResults);
|
|
171
193
|
if (mountKeys.length > 0) {
|
|
172
194
|
for (const key of mountKeys) {
|
|
173
|
-
const
|
|
174
|
-
if (Array.isArray(
|
|
175
|
-
foldOffersFrom(
|
|
195
|
+
const tree = snapshot?.subflowResults?.[key]?.treeContext;
|
|
196
|
+
if (Array.isArray(tree?.history))
|
|
197
|
+
foldOffersFrom(tree.history, tree.initialState);
|
|
176
198
|
}
|
|
177
199
|
}
|
|
178
200
|
else {
|
|
179
|
-
foldOffersFrom(log);
|
|
201
|
+
foldOffersFrom(log, snapshot?.initialState);
|
|
180
202
|
}
|
|
181
203
|
// A run with NO call markers anywhere is a shape this ledger cannot
|
|
182
204
|
// meter (e.g. the LLMCall runner, which never writes totalInputTokens)
|
|
@@ -187,7 +209,8 @@ export function contextLedger() {
|
|
|
187
209
|
}
|
|
188
210
|
// ── USES: tool calls (assistant messages in the final history) ───────
|
|
189
211
|
const lastIdx = log.length - 1;
|
|
190
|
-
const
|
|
212
|
+
const runBase = snapshot?.initialState;
|
|
213
|
+
const history = valueAt(log, runBase, lastIdx, 'history');
|
|
191
214
|
if (Array.isArray(history)) {
|
|
192
215
|
for (const msg of history) {
|
|
193
216
|
if (msg?.role !== 'assistant' || !Array.isArray(msg.toolCalls))
|
|
@@ -199,7 +222,7 @@ export function contextLedger() {
|
|
|
199
222
|
}
|
|
200
223
|
}
|
|
201
224
|
// ── USES: skill activations ──────────────────────────────────────────
|
|
202
|
-
const activated =
|
|
225
|
+
const activated = valueAt(log, runBase, lastIdx, 'activatedInjectionIds');
|
|
203
226
|
if (Array.isArray(activated)) {
|
|
204
227
|
for (const id of activated) {
|
|
205
228
|
if (typeof id === 'string' && id.length > 0)
|
|
@@ -218,15 +241,16 @@ export function contextLedger() {
|
|
|
218
241
|
if (slice.root) {
|
|
219
242
|
sliceAvailable = true;
|
|
220
243
|
const memberIds = new Set(flattenCausalDAG(slice.root).map((n) => n.runtimeStageId));
|
|
221
|
-
const finalInjections =
|
|
244
|
+
const finalInjections = valueAt(log, runBase, lastIdx, 'activeInjections');
|
|
222
245
|
const finalBySlotKey = new Map();
|
|
223
246
|
// Which slot carried each injection is projected per-slot into the
|
|
224
247
|
// INJECTION_KEYS records — fold each slot key's final value.
|
|
225
248
|
for (const slotKey of Object.values(INJECTION_KEYS)) {
|
|
226
|
-
const writer =
|
|
249
|
+
const { writer, basis } = findLastWriterWithBasis(log, slotKey);
|
|
250
|
+
noteBasis(slotKey, basis);
|
|
227
251
|
if (!writer || !memberIds.has(writer.runtimeStageId))
|
|
228
252
|
continue;
|
|
229
|
-
const slotRecords =
|
|
253
|
+
const slotRecords = valueAt(log, runBase, lastIdx, slotKey);
|
|
230
254
|
if (Array.isArray(slotRecords))
|
|
231
255
|
finalBySlotKey.set(slotKey, slotRecords);
|
|
232
256
|
}
|
|
@@ -258,7 +282,14 @@ export function contextLedger() {
|
|
|
258
282
|
}
|
|
259
283
|
runOffers.set(runRef, offeredKeys);
|
|
260
284
|
lastRunRef = runRef;
|
|
261
|
-
return {
|
|
285
|
+
return {
|
|
286
|
+
runRef,
|
|
287
|
+
offeredPieces: [...offeredKeys],
|
|
288
|
+
sliceAvailable,
|
|
289
|
+
...(basisByKey.size > 0 && {
|
|
290
|
+
basis: Object.fromEntries([...basisByKey].map(([key, codes]) => [key, [...codes]])),
|
|
291
|
+
}),
|
|
292
|
+
};
|
|
262
293
|
}
|
|
263
294
|
function recordOutcome(label, runRef) {
|
|
264
295
|
const ref = runRef ?? lastRunRef;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contextLedger.js","sourceRoot":"","sources":["../../../../src/lib/context-ledger/contextLedger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"contextLedger.js","sourceRoot":"","sources":["../../../../src/lib/context-ledger/contextLedger.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
* ablation (context-bisect) can upgrade individual claims when you pay
|
|
25
25
|
* for it.
|
|
26
26
|
*/
|
|
27
|
+
import type { ValueBasis } from 'footprintjs/trace';
|
|
27
28
|
/** What kind of context piece a row tracks. Skills are injections with
|
|
28
29
|
* flavor 'skill' — split out because their `used` signal differs. */
|
|
29
30
|
export type PieceKind = 'injection' | 'skill' | 'tool';
|
|
@@ -70,6 +71,15 @@ export interface RecordedRun {
|
|
|
70
71
|
readonly offeredPieces: readonly string[];
|
|
71
72
|
/** True when the answer slice could be computed (finalContent + reads). */
|
|
72
73
|
readonly sliceAvailable: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* The reason codes behind any NON-exact answer the ledger counted from, per
|
|
76
|
+
* state key — the union of footprintjs's `commitValueAtWithBasis` /
|
|
77
|
+
* `findLastWriterWithBasis` `basis` over every read of that key in this run
|
|
78
|
+
* (`'nested-rows'`, `'from-initial-state'`, `'redacted'`, `'deleted'`,
|
|
79
|
+
* `'never-written'`). Each code's sentence is `HONESTY_CODES[code]` on
|
|
80
|
+
* `footprintjs/trace`. ABSENT when every answer was exact.
|
|
81
|
+
*/
|
|
82
|
+
readonly basis?: Readonly<Record<string, readonly ValueBasis[]>>;
|
|
73
83
|
}
|
|
74
84
|
/** JSON-safe persisted shape (consumer owns storage). */
|
|
75
85
|
export interface LedgerJSON {
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
* the execution tree, and recorder events. The LLM drills like a debugger:
|
|
34
34
|
* overview → slice → node → value, paying only for what it opens.
|
|
35
35
|
*/
|
|
36
|
-
import { causalChain, commitValueAt, findLastWriter, formatCausalChain } from 'footprintjs/trace';
|
|
36
|
+
import { causalChain, commitValueAt, commitValueAtWithBasis, findLastWriter, findLastWriterWithBasis, formatCausalChain, HONESTY_CODES, } from 'footprintjs/trace';
|
|
37
37
|
import { arrayProvenance, elementProvenance, formatSlice, sliceForKey } from 'footprintjs/trace';
|
|
38
38
|
import { formatToolArgIssues, validateToolArgs } from '../../core/agent/toolArgsValidation.js';
|
|
39
39
|
import { defineTool } from '../../core/tools.js';
|
|
@@ -187,6 +187,8 @@ function buildIndex(artifacts) {
|
|
|
187
187
|
hasReadTracking,
|
|
188
188
|
errorSteps,
|
|
189
189
|
untrackedStepCount,
|
|
190
|
+
initialState: artifacts.snapshot.initialState,
|
|
191
|
+
explained: new Set(),
|
|
190
192
|
};
|
|
191
193
|
}
|
|
192
194
|
// ── Shared message helpers ─────────────────────────────────────────────────
|
|
@@ -217,6 +219,23 @@ function redactionNote(bundles, path) {
|
|
|
217
219
|
const redacted = (bundles ?? []).some((b) => b.redactedPaths.includes(path));
|
|
218
220
|
return redacted ? ' (redacted by policy)' : '';
|
|
219
221
|
}
|
|
222
|
+
/**
|
|
223
|
+
* A footprintjs reason code as the toolpack prints it. The FIRST time a code appears in this
|
|
224
|
+
* toolpack instance it is `⚠ <code>: <sentence>` — the sentence is footprintjs's own
|
|
225
|
+
* (`HONESTY_CODES` on `footprintjs/trace`), this pack keeps no copy — and every later time the
|
|
226
|
+
* bare `⚠ <code>`: the sentence is already in the model's context, and repeating it on every
|
|
227
|
+
* answer is pure token cost.
|
|
228
|
+
*/
|
|
229
|
+
function honestyLine(index, code) {
|
|
230
|
+
if (index.explained.has(code))
|
|
231
|
+
return `⚠ ${code}`;
|
|
232
|
+
index.explained.add(code);
|
|
233
|
+
return `⚠ ${code}: ${HONESTY_CODES[code]}`;
|
|
234
|
+
}
|
|
235
|
+
/** One `honestyLine` per distinct code, each on its own line after `\n`; '' when exact. */
|
|
236
|
+
function basisLines(index, codes) {
|
|
237
|
+
return [...new Set(codes)].map((code) => `\n${honestyLine(index, code)}`).join('');
|
|
238
|
+
}
|
|
220
239
|
/** Union of untracked sources across a step's bundles. */
|
|
221
240
|
function untrackedSourcesOf(bundles) {
|
|
222
241
|
const set = new Set();
|
|
@@ -1175,12 +1194,15 @@ function buildTraceNode(artifacts, index, opts) {
|
|
|
1175
1194
|
lines.push(`read (${reads.length}): ${shownReads}${reads.length > NODE_READ_CAP ? ', … (output capped)' : ''}`);
|
|
1176
1195
|
}
|
|
1177
1196
|
const parentLines = [];
|
|
1197
|
+
const parentCodes = [];
|
|
1178
1198
|
const anchorIdx = anchorIdxFor(runtimeStageId, index);
|
|
1179
1199
|
for (const key of reads.slice(0, NODE_READ_CAP)) {
|
|
1180
|
-
const writer =
|
|
1200
|
+
const { writer, basis } = findLastWriterWithBasis(index.commitLog, key, anchorIdx);
|
|
1181
1201
|
parentLines.push(writer
|
|
1182
|
-
? `- data: ${displayKey(key)} ← ${writer.runtimeStageId} "${writer.stage}"`
|
|
1183
|
-
|
|
1202
|
+
? `- data: ${displayKey(key)} ← ${writer.runtimeStageId} "${writer.stage}"` +
|
|
1203
|
+
(basis.length > 0 ? ` ⚠ ${basis.join(', ')}` : '')
|
|
1204
|
+
: `- data: ${displayKey(key)} ← (no tracked writer ⚠ ${basis.join(', ')})`);
|
|
1205
|
+
parentCodes.push(...basis);
|
|
1184
1206
|
}
|
|
1185
1207
|
const controlDep = artifacts.controlDeps?.(runtimeStageId);
|
|
1186
1208
|
if (controlDep) {
|
|
@@ -1190,14 +1212,16 @@ function buildTraceNode(artifacts, index, opts) {
|
|
|
1190
1212
|
if (parentLines.length > 0) {
|
|
1191
1213
|
lines.push('parents:');
|
|
1192
1214
|
lines.push(...parentLines);
|
|
1215
|
+
for (const code of new Set(parentCodes))
|
|
1216
|
+
lines.push(honestyLine(index, code));
|
|
1193
1217
|
}
|
|
1194
1218
|
if (!artifacts.controlDeps) {
|
|
1195
1219
|
lines.push('⚠ control-dependence lookup not provided — the decision that routed here is unknown.');
|
|
1196
1220
|
}
|
|
1197
1221
|
const untracked = untrackedSourcesOf(bundles);
|
|
1198
1222
|
if (untracked.length > 0) {
|
|
1199
|
-
lines.push(`⚠ this step also consumed ${untracked.join('/')} —
|
|
1200
|
-
|
|
1223
|
+
lines.push(`⚠ this step also consumed ${untracked.join('/')} — NOT in the parents list. ` +
|
|
1224
|
+
honestyLine(index, 'incomplete-sources'));
|
|
1201
1225
|
}
|
|
1202
1226
|
// The tool boundary, named honestly: the agent chart's tool-execution
|
|
1203
1227
|
// stage runs CONSUMER code (DB calls, services). The trace records the
|
|
@@ -1381,16 +1405,14 @@ function buildBacktrack(artifacts, index, opts) {
|
|
|
1381
1405
|
const prov = arrayProvenance(index.commitLog, key, {
|
|
1382
1406
|
...(before !== undefined && { atIdx: before - 1 }),
|
|
1383
1407
|
});
|
|
1384
|
-
if (prov.missing === 'never-written') {
|
|
1385
|
-
return (`'${displayKey(key)}' was never written in range — it may come from run input ` +
|
|
1386
|
-
'(args), env, pre-run state, or a closure; the commit log cannot see those.');
|
|
1387
|
-
}
|
|
1388
1408
|
if (prov.missing === 'not-an-array') {
|
|
1389
|
-
return (`'${displayKey(key)}'
|
|
1390
|
-
|
|
1409
|
+
return (`'${displayKey(key)}': ${honestyLine(index, 'not-an-array')}` +
|
|
1410
|
+
basisLines(index, prov.basis ?? []) +
|
|
1411
|
+
`\nCall backtrack without 'element' to slice it.`);
|
|
1412
|
+
}
|
|
1413
|
+
if (prov.missing !== undefined) {
|
|
1414
|
+
return `'${displayKey(key)}': ${honestyLine(index, prov.missing)}`;
|
|
1391
1415
|
}
|
|
1392
|
-
if (prov.missing === 'empty-log')
|
|
1393
|
-
return 'the commit log is empty — nothing executed.';
|
|
1394
1416
|
return (`element ${element} is out of range for '${displayKey(key)}' ` +
|
|
1395
1417
|
`(length ${prov.length}). Valid indices: 0..${(prov.length ?? 1) - 1}.`);
|
|
1396
1418
|
}
|
|
@@ -1398,7 +1420,9 @@ function buildBacktrack(artifacts, index, opts) {
|
|
|
1398
1420
|
`born at ${birth.runtimeStageId} ("${birth.stageName}", verb: ${birth.verb}, ` +
|
|
1399
1421
|
`attribution: ${birth.basis}${birth.basis === 'append-verb' ? ' — engine-recorded, exact' : ''}). ` +
|
|
1400
1422
|
`Drill the producer with trace_node('${birth.runtimeStageId}'), or ask why it wrote this ` +
|
|
1401
|
-
`with backtrack({variable: '${displayKey(key)}', before: ${birth.commitIdx + 1}}).`
|
|
1423
|
+
`with backtrack({variable: '${displayKey(key)}', before: ${birth.commitIdx + 1}}).` +
|
|
1424
|
+
// Only an INFERRED birth says why; an exact one keeps its bytes.
|
|
1425
|
+
(birth.basis === 'prefix-inference' ? basisLines(index, [birth.basis]) : ''));
|
|
1402
1426
|
}
|
|
1403
1427
|
// ── slice mode: variable-first backward slice ────────────────────────
|
|
1404
1428
|
const depth = clampParam(maxDepth, opts.sliceMaxDepth, 1, TOOLPACK_HARD_CAPS.sliceMaxDepth);
|
|
@@ -1454,22 +1478,26 @@ function buildWhoWrote(index, opts) {
|
|
|
1454
1478
|
}
|
|
1455
1479
|
beforeIdx = anchorIdxFor(beforeStageId, index);
|
|
1456
1480
|
}
|
|
1457
|
-
const writer =
|
|
1481
|
+
const { writer, basis } = findLastWriterWithBasis(index.commitLog, path, beforeIdx);
|
|
1458
1482
|
if (!writer) {
|
|
1459
1483
|
return (`no tracked write to '${displayKey(path)}'` +
|
|
1460
1484
|
(beforeStageId !== undefined ? ` before ${beforeStageId}` : '') +
|
|
1461
|
-
` in the commit log
|
|
1462
|
-
|
|
1463
|
-
(index
|
|
1485
|
+
` in the commit log.` +
|
|
1486
|
+
(index.knownPaths.has(path) ? '' : unknownKeySuffix(index)) +
|
|
1487
|
+
basisLines(index, basis));
|
|
1464
1488
|
}
|
|
1465
1489
|
const writerIdx = index.commitLog.indexOf(writer);
|
|
1466
1490
|
const verb = writer.trace.find((entry) => entry.path === path)?.verb ?? 'set';
|
|
1467
|
-
const
|
|
1491
|
+
const read = commitValueAtWithBasis(index.commitLog, writerIdx, path, {
|
|
1492
|
+
initialState: index.initialState,
|
|
1493
|
+
});
|
|
1494
|
+
const preview = boundedPreview(read.value, opts.previewChars);
|
|
1468
1495
|
const untracked = untrackedSourcesOf([writer]);
|
|
1469
1496
|
return (`'${displayKey(path)}' was last written by ${writer.runtimeStageId} — "${writer.stage}" ` +
|
|
1470
1497
|
`(verb: ${verb}): ${displayText(renderPreview(preview, `get_value('${writer.runtimeStageId}', '${displayKey(path)}') for full`))}${redactionNote([writer], path)}` +
|
|
1498
|
+
basisLines(index, [...basis, ...read.basis]) +
|
|
1471
1499
|
(untracked.length > 0
|
|
1472
|
-
? `\n⚠ that step also consumed ${untracked.join('/')}
|
|
1500
|
+
? `\n⚠ that step also consumed ${untracked.join('/')}. ${honestyLine(index, 'incomplete-sources')}`
|
|
1473
1501
|
: ''));
|
|
1474
1502
|
},
|
|
1475
1503
|
});
|
|
@@ -1503,28 +1531,35 @@ function buildGetValue(index, opts) {
|
|
|
1503
1531
|
const cap = clampParam(maxChars, opts.valueMaxChars, 50, TOOLPACK_HARD_CAPS.valueMaxChars);
|
|
1504
1532
|
const lastIdx = index.lastIdxOf.get(runtimeStageId);
|
|
1505
1533
|
const atIdx = lastIdx !== undefined ? lastIdx : anchorIdxFor(runtimeStageId, index) - 1;
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1534
|
+
// Nested rows count (footprintjs 9.33.0): a key written only through paths inside it —
|
|
1535
|
+
// a subflow seed, a merge-back — is written, though no row names it exactly.
|
|
1536
|
+
const lastWrite = findLastWriterWithBasis(index.commitLog, path);
|
|
1537
|
+
if (!lastWrite.writer) {
|
|
1538
|
+
return (`no tracked write to '${displayKey(path)}' anywhere in the commit log.` +
|
|
1539
|
+
(index.knownPaths.has(path) ? '' : unknownKeySuffix(index)) +
|
|
1540
|
+
basisLines(index, lastWrite.basis));
|
|
1541
|
+
}
|
|
1542
|
+
const read = atIdx >= 0
|
|
1543
|
+
? commitValueAtWithBasis(index.commitLog, atIdx, path, {
|
|
1544
|
+
initialState: index.initialState,
|
|
1545
|
+
})
|
|
1546
|
+
: undefined;
|
|
1547
|
+
const value = read?.value;
|
|
1512
1548
|
if (value === undefined) {
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
(
|
|
1516
|
-
? `written later (last writer over the whole run: ${firstWriter.runtimeStageId}), or deleted by then.`
|
|
1517
|
-
: 'never written.') +
|
|
1518
|
-
` ⚠ pre-run seeded values never enter the commit log.`);
|
|
1549
|
+
return (`'${displayKey(path)}' has no value as of ${runtimeStageId}` +
|
|
1550
|
+
` (last writer over the whole run: ${lastWrite.writer.runtimeStageId}).` +
|
|
1551
|
+
basisLines(index, read?.basis ?? ['never-written']));
|
|
1519
1552
|
}
|
|
1520
1553
|
const serialized = displayText(safeStringify(value));
|
|
1521
1554
|
const redacted = redactionNote(index.bundlesOf.get(runtimeStageId), path);
|
|
1522
1555
|
const header = `VALUE of '${displayKey(path)}' as of ${runtimeStageId}${redacted}:`;
|
|
1556
|
+
const basis = basisLines(index, read?.basis ?? []);
|
|
1523
1557
|
if (serialized.length <= cap)
|
|
1524
|
-
return `${header}\n${serialized}`;
|
|
1558
|
+
return `${header}\n${serialized}${basis}`;
|
|
1525
1559
|
return (`${header}\n${serialized.slice(0, cap)}\n` +
|
|
1526
1560
|
`⚠ truncated: served ${cap} of ${serialized.length} chars — raise maxChars ` +
|
|
1527
|
-
`(hard cap ${TOOLPACK_HARD_CAPS.valueMaxChars}) or fetch a narrower nested key.`
|
|
1561
|
+
`(hard cap ${TOOLPACK_HARD_CAPS.valueMaxChars}) or fetch a narrower nested key.` +
|
|
1562
|
+
basis);
|
|
1528
1563
|
},
|
|
1529
1564
|
});
|
|
1530
1565
|
}
|