agentfootprint 9.59.0 → 9.59.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/dist/cache/cacheRecorder.js +53 -4
- package/dist/cache/cacheRecorder.js.map +1 -1
- package/dist/esm/cache/cacheRecorder.d.ts +9 -0
- package/dist/esm/cache/cacheRecorder.js +53 -4
- package/dist/esm/cache/cacheRecorder.js.map +1 -1
- package/dist/esm/events/eventTail.d.ts +18 -0
- package/dist/esm/events/eventTail.js +4 -1
- package/dist/esm/events/eventTail.js.map +1 -1
- package/dist/esm/integrity/disposition/ledger.d.ts +60 -0
- package/dist/esm/integrity/disposition/ledger.js +0 -0
- package/dist/esm/integrity/disposition/ledger.js.map +1 -0
- package/dist/esm/integrity/disposition/types.d.ts +60 -0
- package/dist/esm/integrity/disposition/types.js +19 -0
- package/dist/esm/integrity/disposition/types.js.map +1 -0
- package/dist/esm/maps/engagement/types.js.map +1 -1
- package/dist/esm/recorders/observability/recordRun.d.ts +4 -0
- package/dist/esm/recorders/observability/recordRun.js +3 -0
- package/dist/esm/recorders/observability/recordRun.js.map +1 -1
- package/dist/esm/recorders/observability/recordingEnvelope.d.ts +17 -0
- package/dist/esm/recorders/observability/recordingEnvelope.js +23 -0
- package/dist/esm/recorders/observability/recordingEnvelope.js.map +1 -1
- package/dist/events/eventTail.js +4 -1
- package/dist/events/eventTail.js.map +1 -1
- package/dist/integrity/disposition/ledger.js +0 -0
- package/dist/integrity/disposition/ledger.js.map +1 -0
- package/dist/integrity/disposition/types.js +20 -0
- package/dist/integrity/disposition/types.js.map +1 -0
- package/dist/maps/engagement/types.js.map +1 -1
- package/dist/recorders/observability/recordRun.js +3 -0
- package/dist/recorders/observability/recordRun.js.map +1 -1
- package/dist/recorders/observability/recordingEnvelope.js +23 -0
- package/dist/recorders/observability/recordingEnvelope.js.map +1 -1
- package/dist/types/cache/cacheRecorder.d.ts +9 -0
- package/dist/types/cache/cacheRecorder.d.ts.map +1 -1
- package/dist/types/events/eventTail.d.ts +18 -0
- package/dist/types/events/eventTail.d.ts.map +1 -1
- package/dist/types/integrity/disposition/ledger.d.ts +61 -0
- package/dist/types/integrity/disposition/ledger.d.ts.map +1 -0
- package/dist/types/integrity/disposition/types.d.ts +61 -0
- package/dist/types/integrity/disposition/types.d.ts.map +1 -0
- package/dist/types/maps/engagement/types.d.ts.map +1 -1
- package/dist/types/recorders/observability/recordRun.d.ts +4 -0
- package/dist/types/recorders/observability/recordRun.d.ts.map +1 -1
- package/dist/types/recorders/observability/recordingEnvelope.d.ts +17 -0
- package/dist/types/recorders/observability/recordingEnvelope.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -29,6 +29,15 @@
|
|
|
29
29
|
* one-line render). There is deliberately no door that hands you a bare
|
|
30
30
|
* number without your having branched.
|
|
31
31
|
*
|
|
32
|
+
* ── And an unknown carries ITS OWN reason (9.59.1) ────────────────────
|
|
33
|
+
* 9.59.0 enforced that law per call and then broke it in `report()`, which
|
|
34
|
+
* hardcoded "the provider reported no cache fields" for the whole turn no
|
|
35
|
+
* matter what the rows said. With no strategy passed and a provider that DID
|
|
36
|
+
* report cache fields, the row said "nothing read the usage" and the summary
|
|
37
|
+
* blamed the provider — pointing the reader away from their actual mistake.
|
|
38
|
+
* The summary now carries the rows' own reasons, and says so plainly when the
|
|
39
|
+
* rows disagree rather than picking one.
|
|
40
|
+
*
|
|
32
41
|
* ── What this recorder does NOT do ────────────────────────────────────
|
|
33
42
|
* It emits no events. (Earlier prose here promised per-iteration
|
|
34
43
|
* `agentfootprint.cache.applied` / `agentfootprint.cache.metrics` events;
|
|
@@ -47,6 +56,11 @@ exports.cacheRecorder = void 0;
|
|
|
47
56
|
const trace_1 = require("footprintjs/trace");
|
|
48
57
|
const conventions_js_1 = require("../conventions.js");
|
|
49
58
|
const claim_js_1 = require("../lib/claim/claim.js");
|
|
59
|
+
/**
|
|
60
|
+
* How many distinct reasons a disagreeing summary spells out before it
|
|
61
|
+
* switches to counting the rest. A summary sentence must stay readable.
|
|
62
|
+
*/
|
|
63
|
+
const MAX_LISTED_REASONS = 3;
|
|
50
64
|
/** The metrics of a row already filtered by `isKnown`. Narrowing helper only. */
|
|
51
65
|
function valueOfMetrics(entry) {
|
|
52
66
|
return (0, claim_js_1.isKnown)(entry.metrics)
|
|
@@ -141,12 +155,47 @@ function cacheRecorder(options = {}) {
|
|
|
141
155
|
const total = perIter.length;
|
|
142
156
|
// ONE reason, stated once, reused by every claim below — so a reader
|
|
143
157
|
// who prints any single field learns why the whole report is empty.
|
|
158
|
+
//
|
|
159
|
+
// ── The summary CARRIES the rows' reasons; it never invents one (9.59.1)
|
|
160
|
+
// 9.59.0 hardcoded 'the provider reported no cache fields' here. That
|
|
161
|
+
// sentence is a fabrication whenever the rows said something else — most
|
|
162
|
+
// painfully when no CacheStrategy was passed and the provider DID report
|
|
163
|
+
// cacheRead/cacheWrite: the rows said "nothing read the usage", and the
|
|
164
|
+
// summary blamed the provider for the caller's own omission. An unknown
|
|
165
|
+
// must carry ITS OWN reason. That is the law this file exists to
|
|
166
|
+
// enforce, and this is it applied to the summary too.
|
|
167
|
+
const unmeasured = perIter.filter((p) => !(0, claim_js_1.isKnown)(p.metrics));
|
|
168
|
+
const reasons = [];
|
|
169
|
+
for (const row of unmeasured) {
|
|
170
|
+
const m = row.metrics;
|
|
171
|
+
// `unmeasured` already excluded 'known'; this narrows the type.
|
|
172
|
+
if ((0, claim_js_1.isKnown)(m))
|
|
173
|
+
continue;
|
|
174
|
+
const stated = m.kind === 'not-applicable' ? `this provider cannot report it (${m.evidence})` : m.reason;
|
|
175
|
+
if (!reasons.includes(stated))
|
|
176
|
+
reasons.push(stated);
|
|
177
|
+
}
|
|
178
|
+
// Rows can disagree — a turn may mix an adapter that cannot report with
|
|
179
|
+
// calls that carried no usage at all. Picking one silently would state a
|
|
180
|
+
// cause for calls that stated a different one, so the summary says there
|
|
181
|
+
// was more than one and lists them. Bounded by construction: at most
|
|
182
|
+
// MAX_LISTED_REASONS are spelled out and the remainder is COUNTED, so a
|
|
183
|
+
// strategy whose reason varies per call cannot grow this into a wall.
|
|
184
|
+
const listed = reasons.slice(0, MAX_LISTED_REASONS);
|
|
185
|
+
const remaining = reasons.length - listed.length;
|
|
186
|
+
const [onlyReason] = reasons;
|
|
187
|
+
const carried = reasons.length === 1 && onlyReason !== undefined
|
|
188
|
+
? onlyReason
|
|
189
|
+
: `the calls did not agree on why — ${reasons.length} different reasons were ` +
|
|
190
|
+
`given: ${listed.map((r, i) => `(${i + 1}) ${r}`).join('; ')}` +
|
|
191
|
+
(remaining > 0 ? `; and ${remaining} more not listed here` : '');
|
|
144
192
|
const why = total === 0
|
|
145
193
|
? 'no LLM call was observed, so there is nothing to measure'
|
|
146
|
-
:
|
|
147
|
-
(
|
|
148
|
-
|
|
149
|
-
|
|
194
|
+
: reasons.length === 0
|
|
195
|
+
? // Unreachable where `why` is USED (it is read only when nothing
|
|
196
|
+
// was measured, and an unmeasured row always states a reason).
|
|
197
|
+
`all ${total} observed call(s) reported cache usage`
|
|
198
|
+
: `none of the ${total} observed call(s) reported cache usage — ${carried}`;
|
|
150
199
|
const evidence = `summed over the ${n} of ${total} call(s) whose usage was measured`;
|
|
151
200
|
const claimOf = (value) => n === 0 ? (0, claim_js_1.unknown)(why) : (0, claim_js_1.known)(value, evidence);
|
|
152
201
|
const cacheRead = measured.reduce((s2, p) => s2 + valueOfMetrics(p).cacheReadTokens, 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cacheRecorder.js","sourceRoot":"","sources":["../../src/cache/cacheRecorder.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"cacheRecorder.js","sourceRoot":"","sources":["../../src/cache/cacheRecorder.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,15 @@
|
|
|
28
28
|
* one-line render). There is deliberately no door that hands you a bare
|
|
29
29
|
* number without your having branched.
|
|
30
30
|
*
|
|
31
|
+
* ── And an unknown carries ITS OWN reason (9.59.1) ────────────────────
|
|
32
|
+
* 9.59.0 enforced that law per call and then broke it in `report()`, which
|
|
33
|
+
* hardcoded "the provider reported no cache fields" for the whole turn no
|
|
34
|
+
* matter what the rows said. With no strategy passed and a provider that DID
|
|
35
|
+
* report cache fields, the row said "nothing read the usage" and the summary
|
|
36
|
+
* blamed the provider — pointing the reader away from their actual mistake.
|
|
37
|
+
* The summary now carries the rows' own reasons, and says so plainly when the
|
|
38
|
+
* rows disagree rather than picking one.
|
|
39
|
+
*
|
|
31
40
|
* ── What this recorder does NOT do ────────────────────────────────────
|
|
32
41
|
* It emits no events. (Earlier prose here promised per-iteration
|
|
33
42
|
* `agentfootprint.cache.applied` / `agentfootprint.cache.metrics` events;
|
|
@@ -28,6 +28,15 @@
|
|
|
28
28
|
* one-line render). There is deliberately no door that hands you a bare
|
|
29
29
|
* number without your having branched.
|
|
30
30
|
*
|
|
31
|
+
* ── And an unknown carries ITS OWN reason (9.59.1) ────────────────────
|
|
32
|
+
* 9.59.0 enforced that law per call and then broke it in `report()`, which
|
|
33
|
+
* hardcoded "the provider reported no cache fields" for the whole turn no
|
|
34
|
+
* matter what the rows said. With no strategy passed and a provider that DID
|
|
35
|
+
* report cache fields, the row said "nothing read the usage" and the summary
|
|
36
|
+
* blamed the provider — pointing the reader away from their actual mistake.
|
|
37
|
+
* The summary now carries the rows' own reasons, and says so plainly when the
|
|
38
|
+
* rows disagree rather than picking one.
|
|
39
|
+
*
|
|
31
40
|
* ── What this recorder does NOT do ────────────────────────────────────
|
|
32
41
|
* It emits no events. (Earlier prose here promised per-iteration
|
|
33
42
|
* `agentfootprint.cache.applied` / `agentfootprint.cache.metrics` events;
|
|
@@ -44,6 +53,11 @@
|
|
|
44
53
|
import { splitStageId } from 'footprintjs/trace';
|
|
45
54
|
import { STAGE_IDS } from '../conventions.js';
|
|
46
55
|
import { known, unknown, isKnown } from '../lib/claim/claim.js';
|
|
56
|
+
/**
|
|
57
|
+
* How many distinct reasons a disagreeing summary spells out before it
|
|
58
|
+
* switches to counting the rest. A summary sentence must stay readable.
|
|
59
|
+
*/
|
|
60
|
+
const MAX_LISTED_REASONS = 3;
|
|
47
61
|
/** The metrics of a row already filtered by `isKnown`. Narrowing helper only. */
|
|
48
62
|
function valueOfMetrics(entry) {
|
|
49
63
|
return isKnown(entry.metrics)
|
|
@@ -138,12 +152,47 @@ export function cacheRecorder(options = {}) {
|
|
|
138
152
|
const total = perIter.length;
|
|
139
153
|
// ONE reason, stated once, reused by every claim below — so a reader
|
|
140
154
|
// who prints any single field learns why the whole report is empty.
|
|
155
|
+
//
|
|
156
|
+
// ── The summary CARRIES the rows' reasons; it never invents one (9.59.1)
|
|
157
|
+
// 9.59.0 hardcoded 'the provider reported no cache fields' here. That
|
|
158
|
+
// sentence is a fabrication whenever the rows said something else — most
|
|
159
|
+
// painfully when no CacheStrategy was passed and the provider DID report
|
|
160
|
+
// cacheRead/cacheWrite: the rows said "nothing read the usage", and the
|
|
161
|
+
// summary blamed the provider for the caller's own omission. An unknown
|
|
162
|
+
// must carry ITS OWN reason. That is the law this file exists to
|
|
163
|
+
// enforce, and this is it applied to the summary too.
|
|
164
|
+
const unmeasured = perIter.filter((p) => !isKnown(p.metrics));
|
|
165
|
+
const reasons = [];
|
|
166
|
+
for (const row of unmeasured) {
|
|
167
|
+
const m = row.metrics;
|
|
168
|
+
// `unmeasured` already excluded 'known'; this narrows the type.
|
|
169
|
+
if (isKnown(m))
|
|
170
|
+
continue;
|
|
171
|
+
const stated = m.kind === 'not-applicable' ? `this provider cannot report it (${m.evidence})` : m.reason;
|
|
172
|
+
if (!reasons.includes(stated))
|
|
173
|
+
reasons.push(stated);
|
|
174
|
+
}
|
|
175
|
+
// Rows can disagree — a turn may mix an adapter that cannot report with
|
|
176
|
+
// calls that carried no usage at all. Picking one silently would state a
|
|
177
|
+
// cause for calls that stated a different one, so the summary says there
|
|
178
|
+
// was more than one and lists them. Bounded by construction: at most
|
|
179
|
+
// MAX_LISTED_REASONS are spelled out and the remainder is COUNTED, so a
|
|
180
|
+
// strategy whose reason varies per call cannot grow this into a wall.
|
|
181
|
+
const listed = reasons.slice(0, MAX_LISTED_REASONS);
|
|
182
|
+
const remaining = reasons.length - listed.length;
|
|
183
|
+
const [onlyReason] = reasons;
|
|
184
|
+
const carried = reasons.length === 1 && onlyReason !== undefined
|
|
185
|
+
? onlyReason
|
|
186
|
+
: `the calls did not agree on why — ${reasons.length} different reasons were ` +
|
|
187
|
+
`given: ${listed.map((r, i) => `(${i + 1}) ${r}`).join('; ')}` +
|
|
188
|
+
(remaining > 0 ? `; and ${remaining} more not listed here` : '');
|
|
141
189
|
const why = total === 0
|
|
142
190
|
? 'no LLM call was observed, so there is nothing to measure'
|
|
143
|
-
:
|
|
144
|
-
(
|
|
145
|
-
|
|
146
|
-
|
|
191
|
+
: reasons.length === 0
|
|
192
|
+
? // Unreachable where `why` is USED (it is read only when nothing
|
|
193
|
+
// was measured, and an unmeasured row always states a reason).
|
|
194
|
+
`all ${total} observed call(s) reported cache usage`
|
|
195
|
+
: `none of the ${total} observed call(s) reported cache usage — ${carried}`;
|
|
147
196
|
const evidence = `summed over the ${n} of ${total} call(s) whose usage was measured`;
|
|
148
197
|
const claimOf = (value) => n === 0 ? unknown(why) : known(value, evidence);
|
|
149
198
|
const cacheRead = measured.reduce((s2, p) => s2 + valueOfMetrics(p).cacheReadTokens, 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cacheRecorder.js","sourceRoot":"","sources":["../../../src/cache/cacheRecorder.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cacheRecorder.js","sourceRoot":"","sources":["../../../src/cache/cacheRecorder.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,21 @@ export interface EventTailSnapshot {
|
|
|
36
36
|
readonly events: readonly AgentfootprintEvent[];
|
|
37
37
|
/** How many events were discarded to stay under the cap. `0` normally. */
|
|
38
38
|
readonly dropped: number;
|
|
39
|
+
/**
|
|
40
|
+
* The ORIGINAL stream position of `events[0]` (9.60.0) — the retained
|
|
41
|
+
* window is `[firstRetainedIndex, firstRetainedIndex + events.length)`
|
|
42
|
+
* of the stream as fired, so `events[i]` was stream event
|
|
43
|
+
* `firstRetainedIndex + i`.
|
|
44
|
+
*
|
|
45
|
+
* Under oldest-first eviction from one stream this is always equal to
|
|
46
|
+
* `dropped` — stated as its own named field because a drop COUNT alone
|
|
47
|
+
* cannot say WHICH range is gone: a reader aligning this tail against
|
|
48
|
+
* another record of the same run (a commit log, a second recording)
|
|
49
|
+
* needs the offset, not just the loss. Before this field, an archived
|
|
50
|
+
* envelope could say "312 events dropped" and nothing could say where
|
|
51
|
+
* the retained window starts.
|
|
52
|
+
*/
|
|
53
|
+
readonly firstRetainedIndex: number;
|
|
39
54
|
}
|
|
40
55
|
/** A bounded tail of one event stream. */
|
|
41
56
|
export interface EventTail {
|
|
@@ -45,6 +60,9 @@ export interface EventTail {
|
|
|
45
60
|
readonly count: number;
|
|
46
61
|
/** How many were discarded to stay under the cap. `0` on a normal turn. */
|
|
47
62
|
readonly dropped: number;
|
|
63
|
+
/** Original stream position of the oldest retained event — see
|
|
64
|
+
* {@link EventTailSnapshot.firstRetainedIndex}. */
|
|
65
|
+
readonly firstRetainedIndex: number;
|
|
48
66
|
/** Freeze the tail — a fresh array plus the drop count beside it. */
|
|
49
67
|
snapshot(): EventTailSnapshot;
|
|
50
68
|
}
|
|
@@ -54,7 +54,10 @@ export function eventTail(maxEvents = DEFAULT_MAX_EVENTS) {
|
|
|
54
54
|
get dropped() {
|
|
55
55
|
return dropped;
|
|
56
56
|
},
|
|
57
|
-
|
|
57
|
+
get firstRetainedIndex() {
|
|
58
|
+
return dropped;
|
|
59
|
+
},
|
|
60
|
+
snapshot: () => ({ events: events.slice(), dropped, firstRetainedIndex: dropped }),
|
|
58
61
|
};
|
|
59
62
|
}
|
|
60
63
|
//# sourceMappingURL=eventTail.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventTail.js","sourceRoot":"","sources":["../../../src/events/eventTail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"eventTail.js","sourceRoot":"","sources":["../../../src/events/eventTail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAwCzC;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,YAAoB,kBAAkB;IAC9D,MAAM,GAAG,GACP,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAC3F,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,OAAO;QACL,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;YACd,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBACxB,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,IAAI,CAAC,CAAC;YACf,CAAC;QACH,CAAC;QACD,IAAI,KAAK;YACP,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC;QACD,IAAI,OAAO;YACT,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,IAAI,kBAAkB;YACpB,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC;KACnF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The disposition ledger — nobody's silence goes uncounted.
|
|
3
|
+
*
|
|
4
|
+
* Pattern: small mutable accumulator behind a read-only report, the
|
|
5
|
+
* context-ledger ingestion shape (accumulate during, read after).
|
|
6
|
+
* Role: every Context Integrity check files one disposition per
|
|
7
|
+
* encounter here. The ledger's two jobs:
|
|
8
|
+
*
|
|
9
|
+
* 1. THE INVARIANT — for every check that was registered, an encounter
|
|
10
|
+
* count of zero is itself reportable. `assertAlive()` fails when a
|
|
11
|
+
* registered check saw work available and filed nothing at all —
|
|
12
|
+
* which is the wiring-rot failure mode ("the checker was unhooked and
|
|
13
|
+
* the suite stayed green"), distinct from a clean run (encounters
|
|
14
|
+
* with zero findings — healthy) and from a quiet run (no applicable
|
|
15
|
+
* work — also healthy, and stated as such).
|
|
16
|
+
*
|
|
17
|
+
* 2. THE CANARY — in dev posture, a run mints one deliberately
|
|
18
|
+
* contradictory synthetic encounter per registered check at start.
|
|
19
|
+
* A checker that cannot catch its own canary is dead, and the run
|
|
20
|
+
* says so by name instead of shipping a green report. Synthetic
|
|
21
|
+
* findings are counted apart and never touch the real numbers.
|
|
22
|
+
*
|
|
23
|
+
* Everything here is plain data; `report()` returns fresh POJOs safe for
|
|
24
|
+
* events, snapshots, and recordings.
|
|
25
|
+
*/
|
|
26
|
+
import type { CheckReport, Disposition, IntegritySeam } from './types.js';
|
|
27
|
+
/** Thrown by `assertAlive()` when a registered check demonstrably never ran. */
|
|
28
|
+
export declare class CheckerDeadError extends Error {
|
|
29
|
+
readonly check: string;
|
|
30
|
+
readonly seam: IntegritySeam;
|
|
31
|
+
constructor(check: string, seam: IntegritySeam, detail: string);
|
|
32
|
+
}
|
|
33
|
+
export interface DispositionLedger {
|
|
34
|
+
/** Declare a check exists at a seam. Registration is what makes silence auditable. */
|
|
35
|
+
register(check: string, seam: IntegritySeam): void;
|
|
36
|
+
/** File one encounter's disposition. `at` = epoch ms of a `checked-fail`. */
|
|
37
|
+
note(check: string, seam: IntegritySeam, disposition: Disposition, at?: number): void;
|
|
38
|
+
/**
|
|
39
|
+
* File the dev-posture canary pair: the mint (a synthetic contradictory
|
|
40
|
+
* encounter was created) and, when the check catches it, the catch.
|
|
41
|
+
* Synthetic counts never touch the real ones.
|
|
42
|
+
*/
|
|
43
|
+
noteSynthetic(check: string, seam: IntegritySeam, event: 'minted' | 'caught'): void;
|
|
44
|
+
/** Fresh POJO rows, one per registered (check, seam). */
|
|
45
|
+
report(): readonly CheckReport[];
|
|
46
|
+
/**
|
|
47
|
+
* The T9 theorems, both:
|
|
48
|
+
* (i) a registered check with real work available (`checked + findings +
|
|
49
|
+
* notApplicable + unreachable === 0` while the caller states work
|
|
50
|
+
* existed) is dead — the wiring rotted;
|
|
51
|
+
* (ii) in dev posture, a check whose canary was minted and never caught
|
|
52
|
+
* is dead — it runs but cannot fire.
|
|
53
|
+
* Throws {@link CheckerDeadError} naming the first dead check.
|
|
54
|
+
*/
|
|
55
|
+
assertAlive(opts?: {
|
|
56
|
+
workExisted?: boolean;
|
|
57
|
+
}): void;
|
|
58
|
+
}
|
|
59
|
+
/** Start an empty ledger. One per run; feed it from every seam adapter. */
|
|
60
|
+
export declare function dispositionLedger(): DispositionLedger;
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../../../src/integrity/disposition/ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Disposition — what happened when a check MET an assertion, as data.
|
|
3
|
+
*
|
|
4
|
+
* Pattern: plain data + a closed vocabulary. Pure, zero dependencies.
|
|
5
|
+
* Role: the Context Integrity family's accounting substrate. Every
|
|
6
|
+
* check, on every subject it meets, files exactly one of four
|
|
7
|
+
* dispositions — so "zero findings" and "zero checks ran" become
|
|
8
|
+
* DIFFERENT observable states. Two shipped checks in this
|
|
9
|
+
* codebase decayed into decoration because nothing measured
|
|
10
|
+
* whether they ran; this vocabulary exists so that can never be
|
|
11
|
+
* silent again.
|
|
12
|
+
*
|
|
13
|
+
* The vocabulary is deliberately aligned with the coverage primitives'
|
|
14
|
+
* checked / not_checked / cannot_cover words (core/agent/coverage): same
|
|
15
|
+
* house, same honesty grammar, different subject (a CHECK's encounter with
|
|
16
|
+
* an assertion, rather than a tool's encounter with ground).
|
|
17
|
+
*/
|
|
18
|
+
/** The seams a check can sit at — the brief's five, closed. */
|
|
19
|
+
export type IntegritySeam = 'write' | 'compose' | 'wire' | 'choice' | 'claim';
|
|
20
|
+
/**
|
|
21
|
+
* One check's verdict on one encounter:
|
|
22
|
+
*
|
|
23
|
+
* - `checked-pass` — the check ran and found nothing wrong.
|
|
24
|
+
* - `checked-fail` — the check ran and filed a finding.
|
|
25
|
+
* - `not-applicable` — the check looked and the subject is out of its
|
|
26
|
+
* scope BY RULE (e.g. a multi-valued predicate for
|
|
27
|
+
* the single-value check). Counted, because a rule
|
|
28
|
+
* that excuses everything is a dead check wearing a
|
|
29
|
+
* justification.
|
|
30
|
+
* - `unreachable` — the check could not run because no identity edge
|
|
31
|
+
* was stamped (facts without a shared subject are
|
|
32
|
+
* incomparable, and incomparable means silent).
|
|
33
|
+
* THE load-bearing one: it is the falsification
|
|
34
|
+
* instrument — if `unreachable` dominates in real
|
|
35
|
+
* traffic, applications are not stamping identity,
|
|
36
|
+
* and the thesis itself (contradiction is computable
|
|
37
|
+
* from what people actually declare) is failing.
|
|
38
|
+
*/
|
|
39
|
+
export type Disposition = 'checked-pass' | 'checked-fail' | 'not-applicable' | 'unreachable';
|
|
40
|
+
/** Aggregate accounting for one (check, seam) pair. */
|
|
41
|
+
export interface CheckReport {
|
|
42
|
+
/** The check's plain name (a ContextErrorKind once the finding type lands). */
|
|
43
|
+
readonly check: string;
|
|
44
|
+
readonly seam: IntegritySeam;
|
|
45
|
+
/** Encounters where the check was in scope: pass + fail. */
|
|
46
|
+
readonly checked: number;
|
|
47
|
+
/** Encounters that filed a finding. Always ≤ checked. */
|
|
48
|
+
readonly findings: number;
|
|
49
|
+
readonly notApplicable: number;
|
|
50
|
+
/** Encounters with no identity edge — the dead-spot count to drive down. */
|
|
51
|
+
readonly unreachable: number;
|
|
52
|
+
/**
|
|
53
|
+
* When the check last filed a FINDING (epoch ms) — absent means "never
|
|
54
|
+
* has", which is either excellent news or a dead detector; the synthetic
|
|
55
|
+
* canary (see ledger) is what tells those apart.
|
|
56
|
+
*/
|
|
57
|
+
readonly lastFiredAt?: number;
|
|
58
|
+
/** Findings from the dev-posture canary — counted apart, never mixed in. */
|
|
59
|
+
readonly synthetic: number;
|
|
60
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Disposition — what happened when a check MET an assertion, as data.
|
|
3
|
+
*
|
|
4
|
+
* Pattern: plain data + a closed vocabulary. Pure, zero dependencies.
|
|
5
|
+
* Role: the Context Integrity family's accounting substrate. Every
|
|
6
|
+
* check, on every subject it meets, files exactly one of four
|
|
7
|
+
* dispositions — so "zero findings" and "zero checks ran" become
|
|
8
|
+
* DIFFERENT observable states. Two shipped checks in this
|
|
9
|
+
* codebase decayed into decoration because nothing measured
|
|
10
|
+
* whether they ran; this vocabulary exists so that can never be
|
|
11
|
+
* silent again.
|
|
12
|
+
*
|
|
13
|
+
* The vocabulary is deliberately aligned with the coverage primitives'
|
|
14
|
+
* checked / not_checked / cannot_cover words (core/agent/coverage): same
|
|
15
|
+
* house, same honesty grammar, different subject (a CHECK's encounter with
|
|
16
|
+
* an assertion, rather than a tool's encounter with ground).
|
|
17
|
+
*/
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/integrity/disposition/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/maps/engagement/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA8CH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAoB,EACpB,UAAqC;IAErC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/maps/engagement/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA8CH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAoB,EACpB,UAAqC;IAErC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9F,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,SAAS;gBAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -131,6 +131,10 @@ export interface RunRecorder {
|
|
|
131
131
|
readonly eventCount: number;
|
|
132
132
|
/** Events discarded to stay under `maxEvents`. `0` on a normal turn. */
|
|
133
133
|
readonly droppedEvents: number;
|
|
134
|
+
/** Original stream position of the first retained event (9.60.0) — the
|
|
135
|
+
* captured events are stream positions
|
|
136
|
+
* `[firstRetainedEventIndex, firstRetainedEventIndex + eventCount)`. */
|
|
137
|
+
readonly firstRetainedEventIndex: number;
|
|
134
138
|
/**
|
|
135
139
|
* Stop recording. The events already captured stay readable, so
|
|
136
140
|
* `toRecording()` after `stop()` is the normal end of a run; call it
|
|
@@ -128,6 +128,9 @@ export function recordRun(runner, options = {}) {
|
|
|
128
128
|
get droppedEvents() {
|
|
129
129
|
return tail.dropped;
|
|
130
130
|
},
|
|
131
|
+
get firstRetainedEventIndex() {
|
|
132
|
+
return tail.firstRetainedIndex;
|
|
133
|
+
},
|
|
131
134
|
stop: () => {
|
|
132
135
|
// Idempotent: a consumer that stops in both a finally block and an
|
|
133
136
|
// unmount handler should not detach someone else's later recorder.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recordRun.js","sourceRoot":"","sources":["../../../../src/recorders/observability/recordRun.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAKH,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAyB,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"recordRun.js","sourceRoot":"","sources":["../../../../src/recorders/observability/recordRun.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAKH,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAyB,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAyF5D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,UAA4B,EAAE;IACtE,oEAAoE;IACpE,sEAAsE;IACtE,qEAAqE;IACrE,+DAA+D;IAC/D,sEAAsE;IACtE,iDAAiD;IACjD,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAC;IAChE,MAAM,SAAS,GAAgB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAA0B,EAAE,EAAE;QAC3E,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,uEAAuE;IACvE,wEAAwE;IACxE,sEAAsE;IACtE,mEAAmE;IACnE,MAAM,cAAc,GAAG,OAAO,CAAC,gBAAgB,IAAI,KAAK,CAAC;IACzD,MAAM,QAAQ,GAAG,gBAAgB,CAAC;QAChC,cAAc,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE;QAC7C,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAE5C,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,OAAO;QACL,WAAW,EAAE,GAAc,EAAE,CAAC,CAAC;YAC7B,mEAAmE;YACnE,2DAA2D;YAC3D,mEAAmE;YACnE,qEAAqE;YACrE,gEAAgE;YAChE,oEAAoE;YACpE,gEAAgE;YAChE,iEAAiE;YACjE,gCAAgC;YAChC,QAAQ,EAAE,cAAc;gBACtB,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE;gBAC1B,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YACjD,MAAM,EAAE,cAAc;gBACpB,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM;gBACxB,CAAC,CAAE,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAoC;YACnF,8DAA8D;YAC9D,gDAAgD;YAChD,SAAS,EAAG,MAAM,CAAC,OAAO,EAAuC,CAAC,kBAAkB;SACrF,CAAC;QACF,QAAQ;QACR,IAAI,UAAU;YACZ,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QACD,IAAI,aAAa;YACf,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QACD,IAAI,uBAAuB;YACzB,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACjC,CAAC;QACD,IAAI,EAAE,GAAG,EAAE;YACT,mEAAmE;YACnE,mEAAmE;YACnE,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -130,6 +130,17 @@ export interface RecordingRun {
|
|
|
130
130
|
* "none were dropped", proven — never "we did not look".
|
|
131
131
|
*/
|
|
132
132
|
readonly droppedEvents: number;
|
|
133
|
+
/**
|
|
134
|
+
* The ORIGINAL stream position of the first retained event (9.60.0) — the
|
|
135
|
+
* envelope's events are stream positions
|
|
136
|
+
* `[firstRetainedEventIndex, firstRetainedEventIndex + events.length)`.
|
|
137
|
+
* A drop COUNT says how much is gone; this says WHERE the kept window
|
|
138
|
+
* starts, which is what lets a reader align this tail against another
|
|
139
|
+
* record of the same run. Present exactly when the source could prove it
|
|
140
|
+
* (the live recordRun handle, or the caller's own statement beside
|
|
141
|
+
* `droppedEvents`); absent means "not proven", never 0-by-assumption.
|
|
142
|
+
*/
|
|
143
|
+
readonly firstRetainedEventIndex?: number;
|
|
133
144
|
}
|
|
134
145
|
/** What the agent was configured as — names and ids only, no values. */
|
|
135
146
|
export interface RecordingConfiguration {
|
|
@@ -199,6 +210,12 @@ export interface RecordingRunFacts {
|
|
|
199
210
|
* carries no count.
|
|
200
211
|
*/
|
|
201
212
|
readonly droppedEvents?: number;
|
|
213
|
+
/**
|
|
214
|
+
* Where the kept event window starts in the original stream. Read off a
|
|
215
|
+
* live handle automatically; state it only when persisting a bare
|
|
216
|
+
* `Recording` AND you can prove it. Refused if negative or fractional.
|
|
217
|
+
*/
|
|
218
|
+
readonly firstRetainedEventIndex?: number;
|
|
202
219
|
}
|
|
203
220
|
/**
|
|
204
221
|
* Where an envelope goes. One method, so a destination is a few lines: a
|
|
@@ -205,6 +205,27 @@ function resolvePrivacy(privacy) {
|
|
|
205
205
|
throw new UnsupportedPrivacyModeError(String(mode));
|
|
206
206
|
return { mode: 'full', policyId: privacy?.policyId ?? FULL_PRIVACY_POLICY_ID };
|
|
207
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* Where the kept window starts — proven, stated, or honestly ABSENT.
|
|
210
|
+
*
|
|
211
|
+
* Unlike `droppedEvents` (whose absence would make the envelope's timeline
|
|
212
|
+
* claim unverifiable, so a bare Recording is REFUSED there), the offset is
|
|
213
|
+
* an alignment aid: an envelope without it is still honest — it says
|
|
214
|
+
* "window start unproven" by omission — so a bare Recording resolves to
|
|
215
|
+
* `undefined` rather than a refusal.
|
|
216
|
+
*/
|
|
217
|
+
function resolveFirstRetained(source, stated) {
|
|
218
|
+
if (stated !== undefined) {
|
|
219
|
+
if (!Number.isInteger(stated) || stated < 0) {
|
|
220
|
+
throw new IndeterminateRunFactError('firstRetainedEventIndex', `${JSON.stringify(stated)} is not a stream position. Pass a non-negative integer.`);
|
|
221
|
+
}
|
|
222
|
+
return stated;
|
|
223
|
+
}
|
|
224
|
+
const recorder = asRunRecorder(source);
|
|
225
|
+
if (recorder !== undefined)
|
|
226
|
+
return recorder.firstRetainedEventIndex;
|
|
227
|
+
return undefined;
|
|
228
|
+
}
|
|
208
229
|
/** How many events the cap discarded — proven, or asked for. */
|
|
209
230
|
function resolveDroppedEvents(source, stated) {
|
|
210
231
|
if (stated !== undefined) {
|
|
@@ -251,6 +272,7 @@ export function buildRecordingEnvelope(source, options) {
|
|
|
251
272
|
? recording.events
|
|
252
273
|
: [];
|
|
253
274
|
const droppedEvents = resolveDroppedEvents(source, facts.droppedEvents);
|
|
275
|
+
const firstRetainedEventIndex = resolveFirstRetained(source, facts.firstRetainedEventIndex);
|
|
254
276
|
// ── runId ──
|
|
255
277
|
let runId;
|
|
256
278
|
if (facts.runId !== undefined) {
|
|
@@ -338,6 +360,7 @@ export function buildRecordingEnvelope(source, options) {
|
|
|
338
360
|
...(endedAt !== undefined && { endedAt }),
|
|
339
361
|
complete: facts.complete,
|
|
340
362
|
droppedEvents,
|
|
363
|
+
...(firstRetainedEventIndex !== undefined && { firstRetainedEventIndex }),
|
|
341
364
|
},
|
|
342
365
|
...(configuration !== undefined && { configuration }),
|
|
343
366
|
privacy,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recordingEnvelope.js","sourceRoot":"","sources":["../../../../src/recorders/observability/recordingEnvelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAG/E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG5E;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,6BAA6B,CAAC;AAEvE;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"recordingEnvelope.js","sourceRoot":"","sources":["../../../../src/recorders/observability/recordingEnvelope.ts"],"names":[],"mappings":"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"}
|
package/dist/events/eventTail.js
CHANGED
|
@@ -57,7 +57,10 @@ function eventTail(maxEvents = exports.DEFAULT_MAX_EVENTS) {
|
|
|
57
57
|
get dropped() {
|
|
58
58
|
return dropped;
|
|
59
59
|
},
|
|
60
|
-
|
|
60
|
+
get firstRetainedIndex() {
|
|
61
|
+
return dropped;
|
|
62
|
+
},
|
|
63
|
+
snapshot: () => ({ events: events.slice(), dropped, firstRetainedIndex: dropped }),
|
|
61
64
|
};
|
|
62
65
|
}
|
|
63
66
|
exports.eventTail = eventTail;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventTail.js","sourceRoot":"","sources":["../../src/events/eventTail.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;AAIH;;;GAGG;AACU,QAAA,kBAAkB,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"eventTail.js","sourceRoot":"","sources":["../../src/events/eventTail.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;;;AAIH;;;GAGG;AACU,QAAA,kBAAkB,GAAG,MAAM,CAAC;AAwCzC;;;;;;GAMG;AACH,SAAgB,SAAS,CAAC,YAAoB,0BAAkB;IAC9D,MAAM,GAAG,GACP,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,0BAAkB,CAAC;IAC3F,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,OAAO;QACL,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;YACd,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBACxB,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,IAAI,CAAC,CAAC;YACf,CAAC;QACH,CAAC;QACD,IAAI,KAAK;YACP,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC;QACD,IAAI,OAAO;YACT,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,IAAI,kBAAkB;YACpB,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC;KACnF,CAAC;AACJ,CAAC;AAzBD,8BAyBC"}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../../../src/integrity/disposition/ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Disposition — what happened when a check MET an assertion, as data.
|
|
4
|
+
*
|
|
5
|
+
* Pattern: plain data + a closed vocabulary. Pure, zero dependencies.
|
|
6
|
+
* Role: the Context Integrity family's accounting substrate. Every
|
|
7
|
+
* check, on every subject it meets, files exactly one of four
|
|
8
|
+
* dispositions — so "zero findings" and "zero checks ran" become
|
|
9
|
+
* DIFFERENT observable states. Two shipped checks in this
|
|
10
|
+
* codebase decayed into decoration because nothing measured
|
|
11
|
+
* whether they ran; this vocabulary exists so that can never be
|
|
12
|
+
* silent again.
|
|
13
|
+
*
|
|
14
|
+
* The vocabulary is deliberately aligned with the coverage primitives'
|
|
15
|
+
* checked / not_checked / cannot_cover words (core/agent/coverage): same
|
|
16
|
+
* house, same honesty grammar, different subject (a CHECK's encounter with
|
|
17
|
+
* an assertion, rather than a tool's encounter with ground).
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/integrity/disposition/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/maps/engagement/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AA8CH;;;;;;;;;;GAUG;AACH,SAAgB,eAAe,CAC7B,IAAoB,EACpB,UAAqC;IAErC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,GAAG,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/maps/engagement/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AA8CH;;;;;;;;;;GAUG;AACH,SAAgB,eAAe,CAC7B,IAAoB,EACpB,UAAqC;IAErC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9F,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,SAAS;gBAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAXD,0CAWC"}
|
|
@@ -131,6 +131,9 @@ function recordRun(runner, options = {}) {
|
|
|
131
131
|
get droppedEvents() {
|
|
132
132
|
return tail.dropped;
|
|
133
133
|
},
|
|
134
|
+
get firstRetainedEventIndex() {
|
|
135
|
+
return tail.firstRetainedIndex;
|
|
136
|
+
},
|
|
134
137
|
stop: () => {
|
|
135
138
|
// Idempotent: a consumer that stops in both a finally block and an
|
|
136
139
|
// unmount handler should not detach someone else's later recorder.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recordRun.js","sourceRoot":"","sources":["../../../src/recorders/observability/recordRun.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;;;AAKH,4DAA0E;AAC1E,+DAAgF;AAChF,+DAA4D;
|
|
1
|
+
{"version":3,"file":"recordRun.js","sourceRoot":"","sources":["../../../src/recorders/observability/recordRun.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;;;AAKH,4DAA0E;AAC1E,+DAAgF;AAChF,+DAA4D;AAyF5D;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,SAAS,CAAC,MAAc,EAAE,UAA4B,EAAE;IACtE,oEAAoE;IACpE,sEAAsE;IACtE,qEAAqE;IACrE,+DAA+D;IAC/D,sEAAsE;IACtE,iDAAiD;IACjD,MAAM,IAAI,GAAG,IAAA,wBAAS,EAAC,OAAO,CAAC,SAAS,IAAI,iCAAkB,CAAC,CAAC;IAChE,MAAM,SAAS,GAAgB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAA0B,EAAE,EAAE;QAC3E,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,uEAAuE;IACvE,wEAAwE;IACxE,sEAAsE;IACtE,mEAAmE;IACnE,MAAM,cAAc,GAAG,OAAO,CAAC,gBAAgB,IAAI,KAAK,CAAC;IACzD,MAAM,QAAQ,GAAG,IAAA,sCAAgB,EAAC;QAChC,cAAc,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE;QAC7C,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAE5C,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,OAAO;QACL,WAAW,EAAE,GAAc,EAAE,CAAC,CAAC;YAC7B,mEAAmE;YACnE,2DAA2D;YAC3D,mEAAmE;YACnE,qEAAqE;YACrE,gEAAgE;YAChE,oEAAoE;YACpE,gEAAgE;YAChE,iEAAiE;YACjE,gCAAgC;YAChC,QAAQ,EAAE,cAAc;gBACtB,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE;gBAC1B,CAAC,CAAC,IAAA,yCAAmB,EAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YACjD,MAAM,EAAE,cAAc;gBACpB,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM;gBACxB,CAAC,CAAE,IAAA,yCAAmB,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAoC;YACnF,8DAA8D;YAC9D,gDAAgD;YAChD,SAAS,EAAG,MAAM,CAAC,OAAO,EAAuC,CAAC,kBAAkB;SACrF,CAAC;QACF,QAAQ;QACR,IAAI,UAAU;YACZ,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QACD,IAAI,aAAa;YACf,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QACD,IAAI,uBAAuB;YACzB,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACjC,CAAC;QACD,IAAI,EAAE,GAAG,EAAE;YACT,mEAAmE;YACnE,mEAAmE;YACnE,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,CAAC;QACd,CAAC;KACF,CAAC;AACJ,CAAC;AApED,8BAoEC"}
|
|
@@ -210,6 +210,27 @@ function resolvePrivacy(privacy) {
|
|
|
210
210
|
throw new UnsupportedPrivacyModeError(String(mode));
|
|
211
211
|
return { mode: 'full', policyId: privacy?.policyId ?? exports.FULL_PRIVACY_POLICY_ID };
|
|
212
212
|
}
|
|
213
|
+
/**
|
|
214
|
+
* Where the kept window starts — proven, stated, or honestly ABSENT.
|
|
215
|
+
*
|
|
216
|
+
* Unlike `droppedEvents` (whose absence would make the envelope's timeline
|
|
217
|
+
* claim unverifiable, so a bare Recording is REFUSED there), the offset is
|
|
218
|
+
* an alignment aid: an envelope without it is still honest — it says
|
|
219
|
+
* "window start unproven" by omission — so a bare Recording resolves to
|
|
220
|
+
* `undefined` rather than a refusal.
|
|
221
|
+
*/
|
|
222
|
+
function resolveFirstRetained(source, stated) {
|
|
223
|
+
if (stated !== undefined) {
|
|
224
|
+
if (!Number.isInteger(stated) || stated < 0) {
|
|
225
|
+
throw new IndeterminateRunFactError('firstRetainedEventIndex', `${JSON.stringify(stated)} is not a stream position. Pass a non-negative integer.`);
|
|
226
|
+
}
|
|
227
|
+
return stated;
|
|
228
|
+
}
|
|
229
|
+
const recorder = asRunRecorder(source);
|
|
230
|
+
if (recorder !== undefined)
|
|
231
|
+
return recorder.firstRetainedEventIndex;
|
|
232
|
+
return undefined;
|
|
233
|
+
}
|
|
213
234
|
/** How many events the cap discarded — proven, or asked for. */
|
|
214
235
|
function resolveDroppedEvents(source, stated) {
|
|
215
236
|
if (stated !== undefined) {
|
|
@@ -256,6 +277,7 @@ function buildRecordingEnvelope(source, options) {
|
|
|
256
277
|
? recording.events
|
|
257
278
|
: [];
|
|
258
279
|
const droppedEvents = resolveDroppedEvents(source, facts.droppedEvents);
|
|
280
|
+
const firstRetainedEventIndex = resolveFirstRetained(source, facts.firstRetainedEventIndex);
|
|
259
281
|
// ── runId ──
|
|
260
282
|
let runId;
|
|
261
283
|
if (facts.runId !== undefined) {
|
|
@@ -343,6 +365,7 @@ function buildRecordingEnvelope(source, options) {
|
|
|
343
365
|
...(endedAt !== undefined && { endedAt }),
|
|
344
366
|
complete: facts.complete,
|
|
345
367
|
droppedEvents,
|
|
368
|
+
...(firstRetainedEventIndex !== undefined && { firstRetainedEventIndex }),
|
|
346
369
|
},
|
|
347
370
|
...(configuration !== undefined && { configuration }),
|
|
348
371
|
privacy,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recordingEnvelope.js","sourceRoot":"","sources":["../../../src/recorders/observability/recordingEnvelope.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;;;AAGH,2EAA+E;AAG/E,mEAA4E;AAG5E;;;;GAIG;AACU,QAAA,yBAAyB,GAAG,6BAA6B,CAAC;AAEvE;;;GAGG;AACU,QAAA,sBAAsB,GAAG,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"recordingEnvelope.js","sourceRoot":"","sources":["../../../src/recorders/observability/recordingEnvelope.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,15 @@
|
|
|
28
28
|
* one-line render). There is deliberately no door that hands you a bare
|
|
29
29
|
* number without your having branched.
|
|
30
30
|
*
|
|
31
|
+
* ── And an unknown carries ITS OWN reason (9.59.1) ────────────────────
|
|
32
|
+
* 9.59.0 enforced that law per call and then broke it in `report()`, which
|
|
33
|
+
* hardcoded "the provider reported no cache fields" for the whole turn no
|
|
34
|
+
* matter what the rows said. With no strategy passed and a provider that DID
|
|
35
|
+
* report cache fields, the row said "nothing read the usage" and the summary
|
|
36
|
+
* blamed the provider — pointing the reader away from their actual mistake.
|
|
37
|
+
* The summary now carries the rows' own reasons, and says so plainly when the
|
|
38
|
+
* rows disagree rather than picking one.
|
|
39
|
+
*
|
|
31
40
|
* ── What this recorder does NOT do ────────────────────────────────────
|
|
32
41
|
* It emits no events. (Earlier prose here promised per-iteration
|
|
33
42
|
* `agentfootprint.cache.applied` / `agentfootprint.cache.metrics` events;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cacheRecorder.d.ts","sourceRoot":"","sources":["../../../src/cache/cacheRecorder.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cacheRecorder.d.ts","sourceRoot":"","sources":["../../../src/cache/cacheRecorder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAKpD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAc,MAAM,YAAY,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAA2B,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE5E,wCAAwC;AACxC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,YAAY,CAAC;IAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IACtC,4EAA4E;IAC5E,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,qBAAqB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC/C;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,uEAAuE;IACvE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,0FAA0F;IAC1F,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,qBAAqB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,qBAAqB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9C,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAChC,QAAQ,CAAC,qBAAqB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,8BAA8B,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACvD,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D;;;;OAIG;IACH,MAAM,IAAI,kBAAkB,CAAC;IAC7B;;;OAGG;IACH,KAAK,IAAI,IAAI,CAAC;CACf;AAeD,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,mBAAmB,CA6LrF"}
|
|
@@ -36,6 +36,21 @@ export interface EventTailSnapshot {
|
|
|
36
36
|
readonly events: readonly AgentfootprintEvent[];
|
|
37
37
|
/** How many events were discarded to stay under the cap. `0` normally. */
|
|
38
38
|
readonly dropped: number;
|
|
39
|
+
/**
|
|
40
|
+
* The ORIGINAL stream position of `events[0]` (9.60.0) — the retained
|
|
41
|
+
* window is `[firstRetainedIndex, firstRetainedIndex + events.length)`
|
|
42
|
+
* of the stream as fired, so `events[i]` was stream event
|
|
43
|
+
* `firstRetainedIndex + i`.
|
|
44
|
+
*
|
|
45
|
+
* Under oldest-first eviction from one stream this is always equal to
|
|
46
|
+
* `dropped` — stated as its own named field because a drop COUNT alone
|
|
47
|
+
* cannot say WHICH range is gone: a reader aligning this tail against
|
|
48
|
+
* another record of the same run (a commit log, a second recording)
|
|
49
|
+
* needs the offset, not just the loss. Before this field, an archived
|
|
50
|
+
* envelope could say "312 events dropped" and nothing could say where
|
|
51
|
+
* the retained window starts.
|
|
52
|
+
*/
|
|
53
|
+
readonly firstRetainedIndex: number;
|
|
39
54
|
}
|
|
40
55
|
/** A bounded tail of one event stream. */
|
|
41
56
|
export interface EventTail {
|
|
@@ -45,6 +60,9 @@ export interface EventTail {
|
|
|
45
60
|
readonly count: number;
|
|
46
61
|
/** How many were discarded to stay under the cap. `0` on a normal turn. */
|
|
47
62
|
readonly dropped: number;
|
|
63
|
+
/** Original stream position of the oldest retained event — see
|
|
64
|
+
* {@link EventTailSnapshot.firstRetainedIndex}. */
|
|
65
|
+
readonly firstRetainedIndex: number;
|
|
48
66
|
/** Freeze the tail — a fresh array plus the drop count beside it. */
|
|
49
67
|
snapshot(): EventTailSnapshot;
|
|
50
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eventTail.d.ts","sourceRoot":"","sources":["../../../src/events/eventTail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAEzC,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAChD,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"eventTail.d.ts","sourceRoot":"","sources":["../../../src/events/eventTail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAEzC,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAChD,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,0CAA0C;AAC1C,MAAM,WAAW,SAAS;IACxB,mEAAmE;IACnE,IAAI,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACvC,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB;wDACoD;IACpD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,qEAAqE;IACrE,QAAQ,IAAI,iBAAiB,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,SAAS,GAAE,MAA2B,GAAG,SAAS,CAyB3E"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The disposition ledger — nobody's silence goes uncounted.
|
|
3
|
+
*
|
|
4
|
+
* Pattern: small mutable accumulator behind a read-only report, the
|
|
5
|
+
* context-ledger ingestion shape (accumulate during, read after).
|
|
6
|
+
* Role: every Context Integrity check files one disposition per
|
|
7
|
+
* encounter here. The ledger's two jobs:
|
|
8
|
+
*
|
|
9
|
+
* 1. THE INVARIANT — for every check that was registered, an encounter
|
|
10
|
+
* count of zero is itself reportable. `assertAlive()` fails when a
|
|
11
|
+
* registered check saw work available and filed nothing at all —
|
|
12
|
+
* which is the wiring-rot failure mode ("the checker was unhooked and
|
|
13
|
+
* the suite stayed green"), distinct from a clean run (encounters
|
|
14
|
+
* with zero findings — healthy) and from a quiet run (no applicable
|
|
15
|
+
* work — also healthy, and stated as such).
|
|
16
|
+
*
|
|
17
|
+
* 2. THE CANARY — in dev posture, a run mints one deliberately
|
|
18
|
+
* contradictory synthetic encounter per registered check at start.
|
|
19
|
+
* A checker that cannot catch its own canary is dead, and the run
|
|
20
|
+
* says so by name instead of shipping a green report. Synthetic
|
|
21
|
+
* findings are counted apart and never touch the real numbers.
|
|
22
|
+
*
|
|
23
|
+
* Everything here is plain data; `report()` returns fresh POJOs safe for
|
|
24
|
+
* events, snapshots, and recordings.
|
|
25
|
+
*/
|
|
26
|
+
import type { CheckReport, Disposition, IntegritySeam } from './types.js';
|
|
27
|
+
/** Thrown by `assertAlive()` when a registered check demonstrably never ran. */
|
|
28
|
+
export declare class CheckerDeadError extends Error {
|
|
29
|
+
readonly check: string;
|
|
30
|
+
readonly seam: IntegritySeam;
|
|
31
|
+
constructor(check: string, seam: IntegritySeam, detail: string);
|
|
32
|
+
}
|
|
33
|
+
export interface DispositionLedger {
|
|
34
|
+
/** Declare a check exists at a seam. Registration is what makes silence auditable. */
|
|
35
|
+
register(check: string, seam: IntegritySeam): void;
|
|
36
|
+
/** File one encounter's disposition. `at` = epoch ms of a `checked-fail`. */
|
|
37
|
+
note(check: string, seam: IntegritySeam, disposition: Disposition, at?: number): void;
|
|
38
|
+
/**
|
|
39
|
+
* File the dev-posture canary pair: the mint (a synthetic contradictory
|
|
40
|
+
* encounter was created) and, when the check catches it, the catch.
|
|
41
|
+
* Synthetic counts never touch the real ones.
|
|
42
|
+
*/
|
|
43
|
+
noteSynthetic(check: string, seam: IntegritySeam, event: 'minted' | 'caught'): void;
|
|
44
|
+
/** Fresh POJO rows, one per registered (check, seam). */
|
|
45
|
+
report(): readonly CheckReport[];
|
|
46
|
+
/**
|
|
47
|
+
* The T9 theorems, both:
|
|
48
|
+
* (i) a registered check with real work available (`checked + findings +
|
|
49
|
+
* notApplicable + unreachable === 0` while the caller states work
|
|
50
|
+
* existed) is dead — the wiring rotted;
|
|
51
|
+
* (ii) in dev posture, a check whose canary was minted and never caught
|
|
52
|
+
* is dead — it runs but cannot fire.
|
|
53
|
+
* Throws {@link CheckerDeadError} naming the first dead check.
|
|
54
|
+
*/
|
|
55
|
+
assertAlive(opts?: {
|
|
56
|
+
workExisted?: boolean;
|
|
57
|
+
}): void;
|
|
58
|
+
}
|
|
59
|
+
/** Start an empty ledger. One per run; feed it from every seam adapter. */
|
|
60
|
+
export declare function dispositionLedger(): DispositionLedger;
|
|
61
|
+
//# sourceMappingURL=ledger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../../../../src/integrity/disposition/ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE1E,gFAAgF;AAChF,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;gBACjB,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM;CAU/D;AAcD,MAAM,WAAW,iBAAiB;IAChC,sFAAsF;IACtF,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IACnD,6EAA6E;IAC7E,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtF;;;;OAIG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;IACpF,yDAAyD;IACzD,MAAM,IAAI,SAAS,WAAW,EAAE,CAAC;IACjC;;;;;;;;OAQG;IACH,WAAW,CAAC,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;CACrD;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,IAAI,iBAAiB,CA+ErD"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Disposition — what happened when a check MET an assertion, as data.
|
|
3
|
+
*
|
|
4
|
+
* Pattern: plain data + a closed vocabulary. Pure, zero dependencies.
|
|
5
|
+
* Role: the Context Integrity family's accounting substrate. Every
|
|
6
|
+
* check, on every subject it meets, files exactly one of four
|
|
7
|
+
* dispositions — so "zero findings" and "zero checks ran" become
|
|
8
|
+
* DIFFERENT observable states. Two shipped checks in this
|
|
9
|
+
* codebase decayed into decoration because nothing measured
|
|
10
|
+
* whether they ran; this vocabulary exists so that can never be
|
|
11
|
+
* silent again.
|
|
12
|
+
*
|
|
13
|
+
* The vocabulary is deliberately aligned with the coverage primitives'
|
|
14
|
+
* checked / not_checked / cannot_cover words (core/agent/coverage): same
|
|
15
|
+
* house, same honesty grammar, different subject (a CHECK's encounter with
|
|
16
|
+
* an assertion, rather than a tool's encounter with ground).
|
|
17
|
+
*/
|
|
18
|
+
/** The seams a check can sit at — the brief's five, closed. */
|
|
19
|
+
export type IntegritySeam = 'write' | 'compose' | 'wire' | 'choice' | 'claim';
|
|
20
|
+
/**
|
|
21
|
+
* One check's verdict on one encounter:
|
|
22
|
+
*
|
|
23
|
+
* - `checked-pass` — the check ran and found nothing wrong.
|
|
24
|
+
* - `checked-fail` — the check ran and filed a finding.
|
|
25
|
+
* - `not-applicable` — the check looked and the subject is out of its
|
|
26
|
+
* scope BY RULE (e.g. a multi-valued predicate for
|
|
27
|
+
* the single-value check). Counted, because a rule
|
|
28
|
+
* that excuses everything is a dead check wearing a
|
|
29
|
+
* justification.
|
|
30
|
+
* - `unreachable` — the check could not run because no identity edge
|
|
31
|
+
* was stamped (facts without a shared subject are
|
|
32
|
+
* incomparable, and incomparable means silent).
|
|
33
|
+
* THE load-bearing one: it is the falsification
|
|
34
|
+
* instrument — if `unreachable` dominates in real
|
|
35
|
+
* traffic, applications are not stamping identity,
|
|
36
|
+
* and the thesis itself (contradiction is computable
|
|
37
|
+
* from what people actually declare) is failing.
|
|
38
|
+
*/
|
|
39
|
+
export type Disposition = 'checked-pass' | 'checked-fail' | 'not-applicable' | 'unreachable';
|
|
40
|
+
/** Aggregate accounting for one (check, seam) pair. */
|
|
41
|
+
export interface CheckReport {
|
|
42
|
+
/** The check's plain name (a ContextErrorKind once the finding type lands). */
|
|
43
|
+
readonly check: string;
|
|
44
|
+
readonly seam: IntegritySeam;
|
|
45
|
+
/** Encounters where the check was in scope: pass + fail. */
|
|
46
|
+
readonly checked: number;
|
|
47
|
+
/** Encounters that filed a finding. Always ≤ checked. */
|
|
48
|
+
readonly findings: number;
|
|
49
|
+
readonly notApplicable: number;
|
|
50
|
+
/** Encounters with no identity edge — the dead-spot count to drive down. */
|
|
51
|
+
readonly unreachable: number;
|
|
52
|
+
/**
|
|
53
|
+
* When the check last filed a FINDING (epoch ms) — absent means "never
|
|
54
|
+
* has", which is either excellent news or a dead detector; the synthetic
|
|
55
|
+
* canary (see ledger) is what tells those apart.
|
|
56
|
+
*/
|
|
57
|
+
readonly lastFiredAt?: number;
|
|
58
|
+
/** Findings from the dev-posture canary — counted apart, never mixed in. */
|
|
59
|
+
readonly synthetic: number;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/integrity/disposition/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE9E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,cAAc,GAAG,gBAAgB,GAAG,aAAa,CAAC;AAE7F,uDAAuD;AACvD,MAAM,WAAW,WAAW;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/maps/engagement/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAE9F,qFAAqF;AACrF,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEtD;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,yFAAyF;IACzF,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,qFAAqF;IACrF,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,0DAA0D;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE,aAAa,GAAG,SAAS,GACpC,WAAW,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/maps/engagement/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -131,6 +131,10 @@ export interface RunRecorder {
|
|
|
131
131
|
readonly eventCount: number;
|
|
132
132
|
/** Events discarded to stay under `maxEvents`. `0` on a normal turn. */
|
|
133
133
|
readonly droppedEvents: number;
|
|
134
|
+
/** Original stream position of the first retained event (9.60.0) — the
|
|
135
|
+
* captured events are stream positions
|
|
136
|
+
* `[firstRetainedEventIndex, firstRetainedEventIndex + eventCount)`. */
|
|
137
|
+
readonly firstRetainedEventIndex: number;
|
|
134
138
|
/**
|
|
135
139
|
* Stop recording. The events already captured stay readable, so
|
|
136
140
|
* `toRecording()` after `stop()` is the normal end of a run; call it
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recordRun.d.ts","sourceRoot":"","sources":["../../../../src/recorders/observability/recordRun.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGpE,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGhF;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAChD,yEAAyE;IACzE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;OASG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1C;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,2EAA2E;AAC3E,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;OAUG;IACH,WAAW,IAAI,SAAS,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;;;;;OAKG;IACH,IAAI,IAAI,IAAI,CAAC;CACd;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"recordRun.d.ts","sourceRoot":"","sources":["../../../../src/recorders/observability/recordRun.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAGpE,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGhF;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAChD,yEAAyE;IACzE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;OASG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;;;OAOG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1C;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED,2EAA2E;AAC3E,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;OAUG;IACH,WAAW,IAAI,SAAS,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;;6EAEyE;IACzE,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC;;;;;OAKG;IACH,IAAI,IAAI,IAAI,CAAC;CACd;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,WAAW,CAoErF"}
|
|
@@ -130,6 +130,17 @@ export interface RecordingRun {
|
|
|
130
130
|
* "none were dropped", proven — never "we did not look".
|
|
131
131
|
*/
|
|
132
132
|
readonly droppedEvents: number;
|
|
133
|
+
/**
|
|
134
|
+
* The ORIGINAL stream position of the first retained event (9.60.0) — the
|
|
135
|
+
* envelope's events are stream positions
|
|
136
|
+
* `[firstRetainedEventIndex, firstRetainedEventIndex + events.length)`.
|
|
137
|
+
* A drop COUNT says how much is gone; this says WHERE the kept window
|
|
138
|
+
* starts, which is what lets a reader align this tail against another
|
|
139
|
+
* record of the same run. Present exactly when the source could prove it
|
|
140
|
+
* (the live recordRun handle, or the caller's own statement beside
|
|
141
|
+
* `droppedEvents`); absent means "not proven", never 0-by-assumption.
|
|
142
|
+
*/
|
|
143
|
+
readonly firstRetainedEventIndex?: number;
|
|
133
144
|
}
|
|
134
145
|
/** What the agent was configured as — names and ids only, no values. */
|
|
135
146
|
export interface RecordingConfiguration {
|
|
@@ -199,6 +210,12 @@ export interface RecordingRunFacts {
|
|
|
199
210
|
* carries no count.
|
|
200
211
|
*/
|
|
201
212
|
readonly droppedEvents?: number;
|
|
213
|
+
/**
|
|
214
|
+
* Where the kept event window starts in the original stream. Read off a
|
|
215
|
+
* live handle automatically; state it only when persisting a bare
|
|
216
|
+
* `Recording` AND you can prove it. Refused if negative or fractional.
|
|
217
|
+
*/
|
|
218
|
+
readonly firstRetainedEventIndex?: number;
|
|
202
219
|
}
|
|
203
220
|
/**
|
|
204
221
|
* Where an envelope goes. One method, so a destination is a few lines: a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recordingEnvelope.d.ts","sourceRoot":"","sources":["../../../../src/recorders/observability/recordingEnvelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAG9E,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7D;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,gCAAgC,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,mCAAmC,CAAC;AAEvE;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,gBAAgB,GAAG,UAAU,CAAC;AAE1E,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,8EAA8E;IAC9E,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,gDAAgD;IAChD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"recordingEnvelope.d.ts","sourceRoot":"","sources":["../../../../src/recorders/observability/recordingEnvelope.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentfootprint",
|
|
3
|
-
"version": "9.59.
|
|
3
|
+
"version": "9.59.1",
|
|
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
|
"type": "commonjs",
|