instar 0.28.105 → 0.28.107
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/core/AnthropicIntelligenceProvider.d.ts +41 -2
- package/dist/core/AnthropicIntelligenceProvider.d.ts.map +1 -1
- package/dist/core/AnthropicIntelligenceProvider.js +49 -3
- package/dist/core/AnthropicIntelligenceProvider.js.map +1 -1
- package/dist/core/types.d.ts +10 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/monitoring/AttributionResolver.d.ts +46 -0
- package/dist/monitoring/AttributionResolver.d.ts.map +1 -0
- package/dist/monitoring/AttributionResolver.js +107 -0
- package/dist/monitoring/AttributionResolver.js.map +1 -0
- package/dist/monitoring/LlmRateGate.d.ts +64 -0
- package/dist/monitoring/LlmRateGate.d.ts.map +1 -0
- package/dist/monitoring/LlmRateGate.js +82 -0
- package/dist/monitoring/LlmRateGate.js.map +1 -0
- package/dist/monitoring/TokenLedger.d.ts +26 -0
- package/dist/monitoring/TokenLedger.d.ts.map +1 -1
- package/dist/monitoring/TokenLedger.js +56 -3
- package/dist/monitoring/TokenLedger.js.map +1 -1
- package/dist/monitoring/attribution-manifest.d.ts +39 -0
- package/dist/monitoring/attribution-manifest.d.ts.map +1 -0
- package/dist/monitoring/attribution-manifest.js +83 -0
- package/dist/monitoring/attribution-manifest.js.map +1 -0
- package/dist/monitoring/attributionKey.d.ts +20 -0
- package/dist/monitoring/attributionKey.d.ts.map +1 -0
- package/dist/monitoring/attributionKey.js +30 -0
- package/dist/monitoring/attributionKey.js.map +1 -0
- package/package.json +4 -2
- package/scripts/lint-no-direct-destructive.js +5 -0
- package/scripts/lint-no-direct-llm-http.js +170 -0
- package/scripts/pre-push-gate.js +21 -0
- package/src/data/builtin-manifest.json +2 -2
- package/upgrades/0.28.106.md +38 -0
- package/upgrades/0.28.107.md +35 -0
- package/upgrades/side-effects/token-burn-detection-phase-1.md +96 -0
- package/upgrades/side-effects/token-burn-detection-phase-2.md +44 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LlmRateGate — actuator primitive for the burn-detection auto-heal system.
|
|
3
|
+
*
|
|
4
|
+
* Phase 1 (this file): ships as a NO-OP. The primitive exists, the shape is
|
|
5
|
+
* stable, and instar-internal LLM callers can already consult it before each
|
|
6
|
+
* call — but no decision-maker is wired in yet, so `shouldFire(key)` always
|
|
7
|
+
* returns true. This deliberate sequencing avoids a regression window where
|
|
8
|
+
* the BurnDetector emits signals with no actuator to honour them.
|
|
9
|
+
*
|
|
10
|
+
* Future phases (per docs/specs/token-burn-detection-and-self-heal.md):
|
|
11
|
+
* - Phase 4 (burn-throttle runbook): the Remediator-Tier-2 runbook stores
|
|
12
|
+
* signed throttle decisions; the gate consults that store.
|
|
13
|
+
* - Phase 4 (HMAC-signed jobs.json.throttle-overrides): scheduled-job
|
|
14
|
+
* overrides land via this gate so the same actuator covers cron entries.
|
|
15
|
+
*
|
|
16
|
+
* Authority shape: the gate ENFORCES decisions that were made elsewhere. It
|
|
17
|
+
* does NOT decide. Brittle threshold detectors must never write to this
|
|
18
|
+
* gate directly — only the Remediator (with signed-context Tier-2 capability
|
|
19
|
+
* tokens) can install a throttle. This honours the signal-vs-authority
|
|
20
|
+
* boundary in docs/signal-vs-authority.md.
|
|
21
|
+
*
|
|
22
|
+
* Singleton-per-process: every LLM caller in the process shares one gate so
|
|
23
|
+
* a single throttle decision covers every code path that uses the same
|
|
24
|
+
* attribution key. The class exposes a static `instance()` accessor; tests
|
|
25
|
+
* use the public constructor + `reset()` to isolate from the singleton.
|
|
26
|
+
*/
|
|
27
|
+
export interface LlmRateGateDecision {
|
|
28
|
+
/** Whether the gate currently allows the next LLM call for this key. */
|
|
29
|
+
allowed: boolean;
|
|
30
|
+
/** ISO timestamp the decision was made (debug / log). */
|
|
31
|
+
decidedAt: string;
|
|
32
|
+
/** Why — for log + verification trace. */
|
|
33
|
+
reason: 'phase-1-noop' | 'no-throttle-installed' | 'throttle-active' | 'throttle-expired';
|
|
34
|
+
}
|
|
35
|
+
export declare class LlmRateGate {
|
|
36
|
+
private static singleton;
|
|
37
|
+
/**
|
|
38
|
+
* Process-wide singleton. Tests should use `new LlmRateGate()` + `reset()`
|
|
39
|
+
* rather than this accessor, so they don't bleed throttles into each other.
|
|
40
|
+
*/
|
|
41
|
+
static instance(): LlmRateGate;
|
|
42
|
+
/**
|
|
43
|
+
* Phase 1: always returns true. The signature is stable so callers can
|
|
44
|
+
* adopt the consult-before-call pattern today; future phases enforce it.
|
|
45
|
+
*
|
|
46
|
+
* @param attributionKey componentName::promptFingerprint key. Reserved
|
|
47
|
+
* values: keys starting with `burn-throttle-runbook::`
|
|
48
|
+
* are exempt by design (self-reinforcing-loop guard
|
|
49
|
+
* per spec §"Self-reinforcing loop guard").
|
|
50
|
+
*/
|
|
51
|
+
shouldFire(attributionKey: string): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Same as shouldFire() but returns the full decision record. Useful for
|
|
54
|
+
* tests and for the burn-throttle runbook's verification step.
|
|
55
|
+
*/
|
|
56
|
+
decide(attributionKey: string): LlmRateGateDecision;
|
|
57
|
+
/**
|
|
58
|
+
* Reset all installed throttles. Phase 1 has no throttles, so this is a
|
|
59
|
+
* no-op; future phases will clear the in-memory throttle map. Exposed for
|
|
60
|
+
* tests so a misconfigured singleton can't bleed across `describe` blocks.
|
|
61
|
+
*/
|
|
62
|
+
reset(): void;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=LlmRateGate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LlmRateGate.d.ts","sourceRoot":"","sources":["../../src/monitoring/LlmRateGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,WAAW,mBAAmB;IAClC,wEAAwE;IACxE,OAAO,EAAE,OAAO,CAAC;IACjB,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,MAAM,EAAE,cAAc,GAAG,uBAAuB,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;CAC3F;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,SAAS,CAA4B;IAEpD;;;OAGG;IACH,MAAM,CAAC,QAAQ,IAAI,WAAW;IAO9B;;;;;;;;OAQG;IACH,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO;IAI3C;;;OAGG;IACH,MAAM,CAAC,cAAc,EAAE,MAAM,GAAG,mBAAmB;IAmBnD;;;;OAIG;IACH,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LlmRateGate — actuator primitive for the burn-detection auto-heal system.
|
|
3
|
+
*
|
|
4
|
+
* Phase 1 (this file): ships as a NO-OP. The primitive exists, the shape is
|
|
5
|
+
* stable, and instar-internal LLM callers can already consult it before each
|
|
6
|
+
* call — but no decision-maker is wired in yet, so `shouldFire(key)` always
|
|
7
|
+
* returns true. This deliberate sequencing avoids a regression window where
|
|
8
|
+
* the BurnDetector emits signals with no actuator to honour them.
|
|
9
|
+
*
|
|
10
|
+
* Future phases (per docs/specs/token-burn-detection-and-self-heal.md):
|
|
11
|
+
* - Phase 4 (burn-throttle runbook): the Remediator-Tier-2 runbook stores
|
|
12
|
+
* signed throttle decisions; the gate consults that store.
|
|
13
|
+
* - Phase 4 (HMAC-signed jobs.json.throttle-overrides): scheduled-job
|
|
14
|
+
* overrides land via this gate so the same actuator covers cron entries.
|
|
15
|
+
*
|
|
16
|
+
* Authority shape: the gate ENFORCES decisions that were made elsewhere. It
|
|
17
|
+
* does NOT decide. Brittle threshold detectors must never write to this
|
|
18
|
+
* gate directly — only the Remediator (with signed-context Tier-2 capability
|
|
19
|
+
* tokens) can install a throttle. This honours the signal-vs-authority
|
|
20
|
+
* boundary in docs/signal-vs-authority.md.
|
|
21
|
+
*
|
|
22
|
+
* Singleton-per-process: every LLM caller in the process shares one gate so
|
|
23
|
+
* a single throttle decision covers every code path that uses the same
|
|
24
|
+
* attribution key. The class exposes a static `instance()` accessor; tests
|
|
25
|
+
* use the public constructor + `reset()` to isolate from the singleton.
|
|
26
|
+
*/
|
|
27
|
+
export class LlmRateGate {
|
|
28
|
+
static singleton = null;
|
|
29
|
+
/**
|
|
30
|
+
* Process-wide singleton. Tests should use `new LlmRateGate()` + `reset()`
|
|
31
|
+
* rather than this accessor, so they don't bleed throttles into each other.
|
|
32
|
+
*/
|
|
33
|
+
static instance() {
|
|
34
|
+
if (!LlmRateGate.singleton) {
|
|
35
|
+
LlmRateGate.singleton = new LlmRateGate();
|
|
36
|
+
}
|
|
37
|
+
return LlmRateGate.singleton;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Phase 1: always returns true. The signature is stable so callers can
|
|
41
|
+
* adopt the consult-before-call pattern today; future phases enforce it.
|
|
42
|
+
*
|
|
43
|
+
* @param attributionKey componentName::promptFingerprint key. Reserved
|
|
44
|
+
* values: keys starting with `burn-throttle-runbook::`
|
|
45
|
+
* are exempt by design (self-reinforcing-loop guard
|
|
46
|
+
* per spec §"Self-reinforcing loop guard").
|
|
47
|
+
*/
|
|
48
|
+
shouldFire(attributionKey) {
|
|
49
|
+
return this.decide(attributionKey).allowed;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Same as shouldFire() but returns the full decision record. Useful for
|
|
53
|
+
* tests and for the burn-throttle runbook's verification step.
|
|
54
|
+
*/
|
|
55
|
+
decide(attributionKey) {
|
|
56
|
+
// Self-attribution exempt (spec §"Self-reinforcing loop guard"): the
|
|
57
|
+
// runbook's own LLM calls cannot be throttled by the runbook's own
|
|
58
|
+
// decisions, ever. This is the structural floor that prevents a
|
|
59
|
+
// deadlock where the throttle stops the alert from being sent.
|
|
60
|
+
if (attributionKey.startsWith('burn-throttle-runbook::')) {
|
|
61
|
+
return {
|
|
62
|
+
allowed: true,
|
|
63
|
+
decidedAt: new Date().toISOString(),
|
|
64
|
+
reason: 'phase-1-noop',
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
allowed: true,
|
|
69
|
+
decidedAt: new Date().toISOString(),
|
|
70
|
+
reason: 'phase-1-noop',
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Reset all installed throttles. Phase 1 has no throttles, so this is a
|
|
75
|
+
* no-op; future phases will clear the in-memory throttle map. Exposed for
|
|
76
|
+
* tests so a misconfigured singleton can't bleed across `describe` blocks.
|
|
77
|
+
*/
|
|
78
|
+
reset() {
|
|
79
|
+
// Phase 1: no state to reset. Intentional empty body.
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=LlmRateGate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LlmRateGate.js","sourceRoot":"","sources":["../../src/monitoring/LlmRateGate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAWH,MAAM,OAAO,WAAW;IACd,MAAM,CAAC,SAAS,GAAuB,IAAI,CAAC;IAEpD;;;OAGG;IACH,MAAM,CAAC,QAAQ;QACb,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;YAC3B,WAAW,CAAC,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO,WAAW,CAAC,SAAS,CAAC;IAC/B,CAAC;IAED;;;;;;;;OAQG;IACH,UAAU,CAAC,cAAsB;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,cAAsB;QAC3B,qEAAqE;QACrE,mEAAmE;QACnE,gEAAgE;QAChE,+DAA+D;QAC/D,IAAI,cAAc,CAAC,UAAU,CAAC,yBAAyB,CAAC,EAAE,CAAC;YACzD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM,EAAE,cAAc;aACvB,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,MAAM,EAAE,cAAc;SACvB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,sDAAsD;IACxD,CAAC"}
|
|
@@ -82,6 +82,32 @@ export declare class TokenLedger {
|
|
|
82
82
|
* Returns inserted=true only when a new row was added.
|
|
83
83
|
*/
|
|
84
84
|
ingestLine(line: string): IngestLineResult;
|
|
85
|
+
/**
|
|
86
|
+
* Record a token event from a direct-API provider (Phase 1 of the
|
|
87
|
+
* burn-detection-and-self-heal spec). The Claude CLI path already writes
|
|
88
|
+
* JSONL that the ledger ingests; direct-API providers (e.g. the
|
|
89
|
+
* AnthropicIntelligenceProvider) have no JSONL trail and must call this
|
|
90
|
+
* method explicitly when an LLM call completes.
|
|
91
|
+
*
|
|
92
|
+
* Attribution-key shape (per spec): `<componentName>::<promptFingerprint>`.
|
|
93
|
+
* The caller is the chokepoint that knows both pieces. Events with an
|
|
94
|
+
* empty/missing attribution_key fall back to 'unknown::direct-api'.
|
|
95
|
+
*
|
|
96
|
+
* Idempotent on request_id (INSERT OR IGNORE).
|
|
97
|
+
*/
|
|
98
|
+
recordEvent(event: {
|
|
99
|
+
requestId: string;
|
|
100
|
+
sessionId: string;
|
|
101
|
+
projectPath?: string | null;
|
|
102
|
+
ts: number;
|
|
103
|
+
model?: string | null;
|
|
104
|
+
inputTokens: number;
|
|
105
|
+
outputTokens: number;
|
|
106
|
+
cacheCreationTokens?: number;
|
|
107
|
+
cacheReadTokens?: number;
|
|
108
|
+
serviceTier?: string | null;
|
|
109
|
+
attributionKey?: string;
|
|
110
|
+
}): IngestLineResult;
|
|
85
111
|
/**
|
|
86
112
|
* Read a JSONL file from its persisted offset and ingest each new line.
|
|
87
113
|
* If the inode changed (rotation/replacement), starts from offset 0.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenLedger.d.ts","sourceRoot":"","sources":["../../src/monitoring/TokenLedger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TokenLedger.d.ts","sourceRoot":"","sources":["../../src/monitoring/TokenLedger.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,11 +57,16 @@ const SCHEMA = [
|
|
|
57
57
|
output_tokens INTEGER NOT NULL DEFAULT 0,
|
|
58
58
|
cache_creation_tokens INTEGER NOT NULL DEFAULT 0,
|
|
59
59
|
cache_read_tokens INTEGER NOT NULL DEFAULT 0,
|
|
60
|
-
service_tier TEXT
|
|
60
|
+
service_tier TEXT,
|
|
61
|
+
attribution_key TEXT NOT NULL DEFAULT 'unknown::pre-attribution'
|
|
61
62
|
)`,
|
|
62
63
|
`CREATE INDEX IF NOT EXISTS idx_token_events_session ON token_events(session_id)`,
|
|
63
64
|
`CREATE INDEX IF NOT EXISTS idx_token_events_ts ON token_events(ts)`,
|
|
64
65
|
`CREATE INDEX IF NOT EXISTS idx_token_events_project ON token_events(project_path)`,
|
|
66
|
+
// Attribution-key index (Phase 1 of burn-detection-and-self-heal spec): the
|
|
67
|
+
// BurnDetector polls per-key rates every 60s; this index keeps that polling
|
|
68
|
+
// cheap on agents with millions of historical events.
|
|
69
|
+
`CREATE INDEX IF NOT EXISTS idx_token_events_key_ts ON token_events(attribution_key, ts)`,
|
|
65
70
|
`CREATE TABLE IF NOT EXISTS file_offsets (
|
|
66
71
|
file_path TEXT PRIMARY KEY,
|
|
67
72
|
offset INTEGER NOT NULL DEFAULT 0,
|
|
@@ -72,6 +77,9 @@ const SCHEMA = [
|
|
|
72
77
|
)`,
|
|
73
78
|
// Migration for installs that pre-date head_hash (idempotent).
|
|
74
79
|
`ALTER TABLE file_offsets ADD COLUMN head_hash TEXT`,
|
|
80
|
+
// Migration for installs that pre-date attribution_key (idempotent — duplicate-column
|
|
81
|
+
// errors are swallowed in init below).
|
|
82
|
+
`ALTER TABLE token_events ADD COLUMN attribution_key TEXT NOT NULL DEFAULT 'unknown::pre-attribution'`,
|
|
75
83
|
];
|
|
76
84
|
// ── TokenLedger ───────────────────────────────────────────────────────
|
|
77
85
|
export class TokenLedger {
|
|
@@ -125,11 +133,11 @@ export class TokenLedger {
|
|
|
125
133
|
INSERT OR IGNORE INTO token_events
|
|
126
134
|
(request_id, uuid, session_id, project_path, ts, model,
|
|
127
135
|
input_tokens, output_tokens, cache_creation_tokens, cache_read_tokens,
|
|
128
|
-
service_tier)
|
|
136
|
+
service_tier, attribution_key)
|
|
129
137
|
VALUES
|
|
130
138
|
(@requestId, @uuid, @sessionId, @projectPath, @ts, @model,
|
|
131
139
|
@inputTokens, @outputTokens, @cacheCreationTokens, @cacheReadTokens,
|
|
132
|
-
@serviceTier)
|
|
140
|
+
@serviceTier, @attributionKey)
|
|
133
141
|
`),
|
|
134
142
|
getOffset: this.db.prepare(`SELECT offset, inode, size, head_hash FROM file_offsets WHERE file_path = ?`),
|
|
135
143
|
upsertOffset: this.db.prepare(`
|
|
@@ -185,6 +193,51 @@ export class TokenLedger {
|
|
|
185
193
|
cacheCreationTokens: usage.cache_creation_input_tokens ?? 0,
|
|
186
194
|
cacheReadTokens: usage.cache_read_input_tokens ?? 0,
|
|
187
195
|
serviceTier: usage.service_tier ?? null,
|
|
196
|
+
// JSONL-source events do not carry attribution; Phase 2 will run an
|
|
197
|
+
// AttributionResolver on the read side that maps these to a known
|
|
198
|
+
// component when possible. Until then they sit under the default key.
|
|
199
|
+
attributionKey: 'unknown::pre-attribution',
|
|
200
|
+
});
|
|
201
|
+
return { inserted: result.changes > 0, reason: result.changes > 0 ? undefined : 'duplicate' };
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
return { inserted: false, reason: 'insert-error' };
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Record a token event from a direct-API provider (Phase 1 of the
|
|
209
|
+
* burn-detection-and-self-heal spec). The Claude CLI path already writes
|
|
210
|
+
* JSONL that the ledger ingests; direct-API providers (e.g. the
|
|
211
|
+
* AnthropicIntelligenceProvider) have no JSONL trail and must call this
|
|
212
|
+
* method explicitly when an LLM call completes.
|
|
213
|
+
*
|
|
214
|
+
* Attribution-key shape (per spec): `<componentName>::<promptFingerprint>`.
|
|
215
|
+
* The caller is the chokepoint that knows both pieces. Events with an
|
|
216
|
+
* empty/missing attribution_key fall back to 'unknown::direct-api'.
|
|
217
|
+
*
|
|
218
|
+
* Idempotent on request_id (INSERT OR IGNORE).
|
|
219
|
+
*/
|
|
220
|
+
recordEvent(event) {
|
|
221
|
+
if (!event.requestId)
|
|
222
|
+
return { inserted: false, reason: 'no-request-id' };
|
|
223
|
+
if (!event.sessionId)
|
|
224
|
+
return { inserted: false, reason: 'no-session-id' };
|
|
225
|
+
try {
|
|
226
|
+
const result = this.stmts.insertEvent.run({
|
|
227
|
+
requestId: event.requestId,
|
|
228
|
+
uuid: null,
|
|
229
|
+
sessionId: event.sessionId,
|
|
230
|
+
projectPath: event.projectPath ?? null,
|
|
231
|
+
ts: event.ts,
|
|
232
|
+
model: event.model ?? null,
|
|
233
|
+
inputTokens: event.inputTokens,
|
|
234
|
+
outputTokens: event.outputTokens,
|
|
235
|
+
cacheCreationTokens: event.cacheCreationTokens ?? 0,
|
|
236
|
+
cacheReadTokens: event.cacheReadTokens ?? 0,
|
|
237
|
+
serviceTier: event.serviceTier ?? null,
|
|
238
|
+
attributionKey: event.attributionKey && event.attributionKey.length > 0
|
|
239
|
+
? event.attributionKey
|
|
240
|
+
: 'unknown::direct-api',
|
|
188
241
|
});
|
|
189
242
|
return { inserted: result.changes > 0, reason: result.changes > 0 ? undefined : 'duplicate' };
|
|
190
243
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenLedger.js","sourceRoot":"","sources":["../../src/monitoring/TokenLedger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TokenLedger.js","sourceRoot":"","sources":["../../src/monitoring/TokenLedger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static attribution manifest for the burn-detection-and-self-heal system.
|
|
3
|
+
*
|
|
4
|
+
* Phase 2 of docs/specs/token-burn-detection-and-self-heal.md. Maps known
|
|
5
|
+
* instar-internal LLM call patterns to stable component names so the
|
|
6
|
+
* BurnDetector (Phase 3) can group calls of the same shape.
|
|
7
|
+
*
|
|
8
|
+
* Adding entries does not require a spec change — they are inference rules
|
|
9
|
+
* for an observation system, not authority. The manifest is a hint store,
|
|
10
|
+
* not a gate.
|
|
11
|
+
*
|
|
12
|
+
* Pattern semantics (per docs/specs/token-burn-detection-and-self-heal.md
|
|
13
|
+
* §"Attribution key", §"Capture surface"):
|
|
14
|
+
* - `promptPatterns`: regex on the user prompt that prompted the
|
|
15
|
+
* assistant response. First-match wins. Order matters — list more
|
|
16
|
+
* specific patterns first.
|
|
17
|
+
* - `cwdPatterns`: optional regex on the `cwd` field of the JSONL line.
|
|
18
|
+
* Useful when a component is recognisable by its working directory
|
|
19
|
+
* but its prompt varies.
|
|
20
|
+
* - `modelHints`: optional list of model substrings; narrows the match
|
|
21
|
+
* when the same prompt could come from multiple components but only
|
|
22
|
+
* one of them uses a specific model.
|
|
23
|
+
*/
|
|
24
|
+
export interface AttributionPattern {
|
|
25
|
+
/** Stable component name written into attribution_key. */
|
|
26
|
+
component: string;
|
|
27
|
+
/** Regex matched against the user prompt. */
|
|
28
|
+
promptPatterns?: RegExp[];
|
|
29
|
+
/** Regex matched against the cwd / projectPath field. */
|
|
30
|
+
cwdPatterns?: RegExp[];
|
|
31
|
+
/** Substrings narrowing the match to specific models. */
|
|
32
|
+
modelHints?: string[];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The manifest. Order is significant — first-match wins. Add more specific
|
|
36
|
+
* entries before broader ones.
|
|
37
|
+
*/
|
|
38
|
+
export declare const ATTRIBUTION_MANIFEST: AttributionPattern[];
|
|
39
|
+
//# sourceMappingURL=attribution-manifest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribution-manifest.d.ts","sourceRoot":"","sources":["../../src/monitoring/attribution-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,WAAW,kBAAkB;IACjC,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,EAsDpD,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static attribution manifest for the burn-detection-and-self-heal system.
|
|
3
|
+
*
|
|
4
|
+
* Phase 2 of docs/specs/token-burn-detection-and-self-heal.md. Maps known
|
|
5
|
+
* instar-internal LLM call patterns to stable component names so the
|
|
6
|
+
* BurnDetector (Phase 3) can group calls of the same shape.
|
|
7
|
+
*
|
|
8
|
+
* Adding entries does not require a spec change — they are inference rules
|
|
9
|
+
* for an observation system, not authority. The manifest is a hint store,
|
|
10
|
+
* not a gate.
|
|
11
|
+
*
|
|
12
|
+
* Pattern semantics (per docs/specs/token-burn-detection-and-self-heal.md
|
|
13
|
+
* §"Attribution key", §"Capture surface"):
|
|
14
|
+
* - `promptPatterns`: regex on the user prompt that prompted the
|
|
15
|
+
* assistant response. First-match wins. Order matters — list more
|
|
16
|
+
* specific patterns first.
|
|
17
|
+
* - `cwdPatterns`: optional regex on the `cwd` field of the JSONL line.
|
|
18
|
+
* Useful when a component is recognisable by its working directory
|
|
19
|
+
* but its prompt varies.
|
|
20
|
+
* - `modelHints`: optional list of model substrings; narrows the match
|
|
21
|
+
* when the same prompt could come from multiple components but only
|
|
22
|
+
* one of them uses a specific model.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* The manifest. Order is significant — first-match wins. Add more specific
|
|
26
|
+
* entries before broader ones.
|
|
27
|
+
*/
|
|
28
|
+
export const ATTRIBUTION_MANIFEST = [
|
|
29
|
+
// The 2026-05-15 bleed: the InputDetector's NO_PROMPT classifier asked
|
|
30
|
+
// the LLM "is this stuck?" every 5s on every idle session, burning
|
|
31
|
+
// ~3B tokens/day. This pattern catches that exact prompt shape.
|
|
32
|
+
{
|
|
33
|
+
component: 'InputDetector',
|
|
34
|
+
promptPatterns: [/analyzing terminal output/i, /is this stuck/i, /stalled session detection/i],
|
|
35
|
+
},
|
|
36
|
+
// MessagingToneGate evaluates outbound user-facing messages for tone +
|
|
37
|
+
// banned-content compliance (ELI16, no inline code, etc).
|
|
38
|
+
{
|
|
39
|
+
component: 'MessagingToneGate',
|
|
40
|
+
promptPatterns: [/evaluate this outbound message/i, /tone gate/i, /eli16/i],
|
|
41
|
+
},
|
|
42
|
+
// CommitmentSentinel watches for commitments the agent made that lack
|
|
43
|
+
// follow-through.
|
|
44
|
+
{
|
|
45
|
+
component: 'CommitmentSentinel',
|
|
46
|
+
promptPatterns: [/commitment.*follow.through/i, /unfulfilled commitment/i],
|
|
47
|
+
},
|
|
48
|
+
// MessageSentinel classifies inbound messages (emergency stop, etc).
|
|
49
|
+
{
|
|
50
|
+
component: 'MessageSentinel',
|
|
51
|
+
promptPatterns: [/classify.*inbound message/i, /emergency stop classifier/i],
|
|
52
|
+
},
|
|
53
|
+
// StallTriageNurse — the LLM-powered session-recovery classifier.
|
|
54
|
+
{
|
|
55
|
+
component: 'StallTriageNurse',
|
|
56
|
+
promptPatterns: [/triage.*stalled session/i, /session.*stall.*classifier/i],
|
|
57
|
+
},
|
|
58
|
+
// CoherenceReviewer — the deeper "is this agent acting coherently"
|
|
59
|
+
// check, invoked by the coherence-gate path.
|
|
60
|
+
{
|
|
61
|
+
component: 'CoherenceReviewer',
|
|
62
|
+
promptPatterns: [/coherence review/i, /agent coherence/i],
|
|
63
|
+
},
|
|
64
|
+
// ProjectDriftChecker — round-start signal that the project context
|
|
65
|
+
// has drifted from what was loaded.
|
|
66
|
+
{
|
|
67
|
+
component: 'ProjectDriftChecker',
|
|
68
|
+
promptPatterns: [/project drift/i, /context drift detection/i],
|
|
69
|
+
},
|
|
70
|
+
// ResumeValidator — verifies a Claude Code resume payload before
|
|
71
|
+
// letting a session pick back up.
|
|
72
|
+
{
|
|
73
|
+
component: 'ResumeValidator',
|
|
74
|
+
promptPatterns: [/validate.*resume payload/i, /resume validation/i],
|
|
75
|
+
},
|
|
76
|
+
// TopicLinkageHandler — figures out which existing thread a new
|
|
77
|
+
// Telegram message belongs to.
|
|
78
|
+
{
|
|
79
|
+
component: 'TopicLinkageHandler',
|
|
80
|
+
promptPatterns: [/topic linkage/i, /thread linking/i],
|
|
81
|
+
},
|
|
82
|
+
];
|
|
83
|
+
//# sourceMappingURL=attribution-manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribution-manifest.js","sourceRoot":"","sources":["../../src/monitoring/attribution-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAaH;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAyB;IACxD,uEAAuE;IACvE,mEAAmE;IACnE,gEAAgE;IAChE;QACE,SAAS,EAAE,eAAe;QAC1B,cAAc,EAAE,CAAC,4BAA4B,EAAE,gBAAgB,EAAE,4BAA4B,CAAC;KAC/F;IACD,uEAAuE;IACvE,0DAA0D;IAC1D;QACE,SAAS,EAAE,mBAAmB;QAC9B,cAAc,EAAE,CAAC,iCAAiC,EAAE,YAAY,EAAE,QAAQ,CAAC;KAC5E;IACD,sEAAsE;IACtE,kBAAkB;IAClB;QACE,SAAS,EAAE,oBAAoB;QAC/B,cAAc,EAAE,CAAC,6BAA6B,EAAE,yBAAyB,CAAC;KAC3E;IACD,qEAAqE;IACrE;QACE,SAAS,EAAE,iBAAiB;QAC5B,cAAc,EAAE,CAAC,4BAA4B,EAAE,4BAA4B,CAAC;KAC7E;IACD,kEAAkE;IAClE;QACE,SAAS,EAAE,kBAAkB;QAC7B,cAAc,EAAE,CAAC,0BAA0B,EAAE,6BAA6B,CAAC;KAC5E;IACD,mEAAmE;IACnE,6CAA6C;IAC7C;QACE,SAAS,EAAE,mBAAmB;QAC9B,cAAc,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;KAC1D;IACD,oEAAoE;IACpE,oCAAoC;IACpC;QACE,SAAS,EAAE,qBAAqB;QAChC,cAAc,EAAE,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;KAC/D;IACD,iEAAiE;IACjE,kCAAkC;IAClC;QACE,SAAS,EAAE,iBAAiB;QAC5B,cAAc,EAAE,CAAC,2BAA2B,EAAE,oBAAoB,CAAC;KACpE;IACD,gEAAgE;IAChE,+BAA+B;IAC/B;QACE,SAAS,EAAE,qBAAqB;QAChC,cAAc,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;KACtD;CACF,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attribution-key composition for the burn-detection-and-self-heal system.
|
|
3
|
+
*
|
|
4
|
+
* Format (per docs/specs/token-burn-detection-and-self-heal.md §Attribution
|
|
5
|
+
* key): `<componentName>::<promptFingerprintShort>`, where the fingerprint
|
|
6
|
+
* is the first 8 hex chars of SHA-256 over the first 256 bytes of the
|
|
7
|
+
* prompt. This collapses repeated calls with similar prompts (the bleeding
|
|
8
|
+
* pattern) and distinguishes them from incidental variation.
|
|
9
|
+
*
|
|
10
|
+
* Pure function — no I/O, deterministic, safe to call on every LLM request.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Compose an attribution key from a component name and prompt text.
|
|
14
|
+
*
|
|
15
|
+
* If `component` is empty/missing, returns `unknown::<fingerprint>` so the
|
|
16
|
+
* detector can still group repeats by prompt shape. If the prompt is empty,
|
|
17
|
+
* returns `<component>::nonprompt`.
|
|
18
|
+
*/
|
|
19
|
+
export declare function buildAttributionKey(component: string | undefined, prompt: string): string;
|
|
20
|
+
//# sourceMappingURL=attributionKey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attributionKey.d.ts","sourceRoot":"","sources":["../../src/monitoring/attributionKey.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAMzF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Attribution-key composition for the burn-detection-and-self-heal system.
|
|
3
|
+
*
|
|
4
|
+
* Format (per docs/specs/token-burn-detection-and-self-heal.md §Attribution
|
|
5
|
+
* key): `<componentName>::<promptFingerprintShort>`, where the fingerprint
|
|
6
|
+
* is the first 8 hex chars of SHA-256 over the first 256 bytes of the
|
|
7
|
+
* prompt. This collapses repeated calls with similar prompts (the bleeding
|
|
8
|
+
* pattern) and distinguishes them from incidental variation.
|
|
9
|
+
*
|
|
10
|
+
* Pure function — no I/O, deterministic, safe to call on every LLM request.
|
|
11
|
+
*/
|
|
12
|
+
import crypto from 'node:crypto';
|
|
13
|
+
const FINGERPRINT_BYTES = 256;
|
|
14
|
+
const FINGERPRINT_HEX_LEN = 8;
|
|
15
|
+
/**
|
|
16
|
+
* Compose an attribution key from a component name and prompt text.
|
|
17
|
+
*
|
|
18
|
+
* If `component` is empty/missing, returns `unknown::<fingerprint>` so the
|
|
19
|
+
* detector can still group repeats by prompt shape. If the prompt is empty,
|
|
20
|
+
* returns `<component>::nonprompt`.
|
|
21
|
+
*/
|
|
22
|
+
export function buildAttributionKey(component, prompt) {
|
|
23
|
+
const comp = component && component.length > 0 ? component : 'unknown';
|
|
24
|
+
if (!prompt || prompt.length === 0)
|
|
25
|
+
return `${comp}::nonprompt`;
|
|
26
|
+
const slice = prompt.slice(0, FINGERPRINT_BYTES);
|
|
27
|
+
const fp = crypto.createHash('sha256').update(slice).digest('hex').slice(0, FINGERPRINT_HEX_LEN);
|
|
28
|
+
return `${comp}::${fp}`;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=attributionKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attributionKey.js","sourceRoot":"","sources":["../../src/monitoring/attributionKey.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,MAAM,MAAM,aAAa,CAAC;AAEjC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAA6B,EAAE,MAAc;IAC/E,MAAM,IAAI,GAAG,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,IAAI,aAAa,CAAC;IAChE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;IACjD,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;IACjG,OAAO,GAAG,IAAI,KAAK,EAAE,EAAE,CAAC;AAC1B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "instar",
|
|
3
|
-
"version": "0.28.
|
|
3
|
+
"version": "0.28.107",
|
|
4
4
|
"description": "Persistent autonomy infrastructure for AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -28,9 +28,11 @@
|
|
|
28
28
|
"test:contract": "node scripts/run-contract-tests.js",
|
|
29
29
|
"test:contract:raw": "vitest run --config vitest.contract.config.ts",
|
|
30
30
|
"test:all": "vitest run && vitest run --config vitest.integration.config.ts && vitest run --config vitest.e2e.config.ts",
|
|
31
|
-
"lint": "tsc --noEmit && node scripts/lint-no-direct-destructive.js",
|
|
31
|
+
"lint": "tsc --noEmit && node scripts/lint-no-direct-destructive.js && node scripts/lint-no-direct-llm-http.js",
|
|
32
32
|
"lint:destructive": "node scripts/lint-no-direct-destructive.js",
|
|
33
33
|
"lint:destructive:staged": "node scripts/lint-no-direct-destructive.js --staged",
|
|
34
|
+
"lint:llm-http": "node scripts/lint-no-direct-llm-http.js",
|
|
35
|
+
"lint:llm-http:staged": "node scripts/lint-no-direct-llm-http.js --staged",
|
|
34
36
|
"clean": "rm -rf dist",
|
|
35
37
|
"check:upgrade-guide": "node scripts/check-upgrade-guide.js",
|
|
36
38
|
"check:pre-push-gate": "node scripts/pre-push-gate.js",
|
|
@@ -65,6 +65,11 @@ const ALLOWLIST = new Set([
|
|
|
65
65
|
// needs direct execSync as a bootstrap escape. The single git call here is
|
|
66
66
|
// a read-only `git diff --cached --name-only` for staged-file detection.
|
|
67
67
|
'scripts/lint-no-direct-destructive.js',
|
|
68
|
+
// Same bootstrap-escape pattern as lint-no-direct-destructive.js — a
|
|
69
|
+
// read-only `git diff --cached --name-only` for staged-file detection.
|
|
70
|
+
// Cannot depend on the TS funnel because TS is not compiled when the
|
|
71
|
+
// lint runs in pre-push.
|
|
72
|
+
'scripts/lint-no-direct-llm-http.js',
|
|
68
73
|
// Postinstall bootstrap script — runs before TypeScript is compiled and
|
|
69
74
|
// before SafeFsExecutor is available. CommonJS, can't use ESM imports.
|
|
70
75
|
'scripts/fix-better-sqlite3.cjs',
|