instar 1.3.225 → 1.3.227
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/cli.js +10 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/devCiFailures.d.ts +39 -0
- package/dist/commands/devCiFailures.d.ts.map +1 -0
- package/dist/commands/devCiFailures.js +133 -0
- package/dist/commands/devCiFailures.js.map +1 -0
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +20 -1
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +11 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +18 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/StateManager.d.ts +22 -1
- package/dist/core/StateManager.d.ts.map +1 -1
- package/dist/core/StateManager.js +45 -6
- package/dist/core/StateManager.js.map +1 -1
- package/dist/core/types.d.ts +46 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/monitoring/BurnDetector.d.ts +11 -0
- package/dist/monitoring/BurnDetector.d.ts.map +1 -1
- package/dist/monitoring/BurnDetector.js +15 -3
- package/dist/monitoring/BurnDetector.js.map +1 -1
- package/dist/monitoring/SessionReaper.d.ts +74 -1
- package/dist/monitoring/SessionReaper.d.ts.map +1 -1
- package/dist/monitoring/SessionReaper.js +146 -6
- package/dist/monitoring/SessionReaper.js.map +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +9 -0
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +56 -25
- package/dist/server/AgentServer.js.map +1 -1
- package/package.json +1 -1
- package/scripts/generate-builtin-manifest.cjs +1 -0
- package/src/data/builtin-manifest.json +59 -51
- package/src/scaffold/templates.ts +9 -0
- package/upgrades/1.3.226.md +111 -0
- package/upgrades/1.3.227.md +109 -0
- package/upgrades/burn-detector-activity-gate.eli16.md +53 -0
- package/upgrades/dev-ci-failures-tool.eli16.md +21 -0
- package/upgrades/reaper-busy-orphan-detect.eli16.md +33 -0
- package/upgrades/reaper-cpu-aware-keep.eli16.md +30 -0
- package/upgrades/side-effects/burn-detector-activity-gate.md +110 -0
- package/upgrades/side-effects/dev-ci-failures-tool.md +54 -0
- package/upgrades/side-effects/reaper-busy-orphan-detect.md +85 -0
- package/upgrades/side-effects/reaper-cpu-aware-keep.md +90 -0
- package/upgrades/side-effects/statemanager-listsessions-cache.md +72 -0
- package/upgrades/statemanager-listsessions-cache.eli16.md +36 -0
|
@@ -28,6 +28,7 @@ import { PRE_ATTRIBUTION_KEY } from './AttributionResolver.js';
|
|
|
28
28
|
export const DEFAULT_BURN_DETECTION_CONFIG = {
|
|
29
29
|
enabled: true,
|
|
30
30
|
absoluteShareThreshold: 0.25,
|
|
31
|
+
absoluteShareActivityFloorTokens: 0,
|
|
31
32
|
rollingBaselineMultiplier: 2,
|
|
32
33
|
rollingBaselineFloor: 10_000_000,
|
|
33
34
|
perKeyAlertCooldownMs: 3_600_000,
|
|
@@ -129,8 +130,20 @@ export class BurnDetector {
|
|
|
129
130
|
// (trigger 2) is intentionally still allowed on the sentinel: a sudden
|
|
130
131
|
// spike of NEW unattributed spend vs its own 7-day history is worth
|
|
131
132
|
// surfacing even though its absolute share is not.
|
|
133
|
+
//
|
|
134
|
+
// ACTIVITY GATE: absolute-share also requires the key to be actively
|
|
135
|
+
// spending right now (last-1h tokens above absoluteShareActivityFloorTokens).
|
|
136
|
+
// A burn alert means "something is spending heavily NOW" — a key whose
|
|
137
|
+
// 24h share is high but whose current rate is ~zero is a FINISHED burst
|
|
138
|
+
// still inside the trailing window, not a live burn. Without this gate one
|
|
139
|
+
// heavy session re-tripped the 25% alarm every cooldown for a full 24h
|
|
140
|
+
// with a self-contradictory "consumed 67% of 24h spend … Projected 0
|
|
141
|
+
// tokens" message (the 2026-06-03 noise incident). The baseline-divergence
|
|
142
|
+
// trigger already gates on rollingBaselineFloor; this brings the
|
|
143
|
+
// absolute-share trigger to parity.
|
|
132
144
|
const isPreAttributionSentinel = key24h.attributionKey === PRE_ATTRIBUTION_KEY;
|
|
133
|
-
|
|
145
|
+
const isActivelySpending = tokens1h > this.config.absoluteShareActivityFloorTokens;
|
|
146
|
+
if (!isPreAttributionSentinel && isActivelySpending && share > this.config.absoluteShareThreshold) {
|
|
134
147
|
trigger = 'absolute-share';
|
|
135
148
|
}
|
|
136
149
|
// Trigger 2 — baseline divergence (only after cold-start window).
|
|
@@ -175,8 +188,7 @@ export class BurnDetector {
|
|
|
175
188
|
reason: trigger === 'absolute-share'
|
|
176
189
|
? `${key24h.attributionKey} consumed ${(share * 100).toFixed(1)}% of 24h spend (threshold ${(this.config.absoluteShareThreshold * 100).toFixed(0)}%)`
|
|
177
190
|
: `${key24h.attributionKey} last-1h rate ${tokens1h.toLocaleString()} tok/h, baseline ${baselineMedian7d?.toLocaleString() ?? '?'} tok/h (multiplier ${this.config.rollingBaselineMultiplier}x)`,
|
|
178
|
-
impact: `Projected ${projectedDaily.toLocaleString()} tokens in next 24h at current rate
|
|
179
|
-
`Phase 3 is observation-only; Phase 4 wires alerting and bounded auto-throttle.`,
|
|
191
|
+
impact: `Projected ${projectedDaily.toLocaleString()} tokens in next 24h at the current rate.`,
|
|
180
192
|
});
|
|
181
193
|
}
|
|
182
194
|
return signals;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BurnDetector.js","sourceRoot":"","sources":["../../src/monitoring/BurnDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"BurnDetector.js","sourceRoot":"","sources":["../../src/monitoring/BurnDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AA6B/D,MAAM,CAAC,MAAM,6BAA6B,GAAwB;IAChE,OAAO,EAAE,IAAI;IACb,sBAAsB,EAAE,IAAI;IAC5B,gCAAgC,EAAE,CAAC;IACnC,yBAAyB,EAAE,CAAC;IAC5B,oBAAoB,EAAE,UAAU;IAChC,qBAAqB,EAAE,SAAS;IAChC,cAAc,EAAE,MAAM;IACtB,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;CACrC,CAAC;AAwBF,MAAM,OAAO,YAAY;IACN,MAAM,CAA6B;IACnC,QAAQ,CAA+B;IACvC,MAAM,CAAsB;IAC5B,GAAG,CAAe;IACnC,+EAA+E;IAC9D,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvD,mEAAmE;IAClD,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IACjD,KAAK,GAA0C,IAAI,CAAC;IAE5D,YAAY,IAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,6BAA6B,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QAC3E,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QAC/C,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC;gBACH,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,2CAA4C,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YACpF,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC/B,uEAAuE;QACvE,oCAAoC;QACpC,IAAI,IAAI,CAAC,KAAK,IAAI,OAAQ,IAAI,CAAC,KAAgC,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACpF,IAAI,CAAC,KAA+B,CAAC,KAAK,EAAE,CAAC;QAChD,CAAC;IACH,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAC3C,MAAM,OAAO,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACrC,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAE9C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACpE,IAAI,QAAQ,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAE7B,yBAAyB;QACzB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,GAAG,QAAQ,CAAC;YAC5C,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/C,MAAM,cAAc,GAAG,QAAQ,GAAG,EAAE,CAAC;YAErC,0EAA0E;YAC1E,kDAAkD;YAClD,IAAI,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,yBAAyB,CAAC;gBAAE,SAAS;YAE1E,YAAY;YACZ,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACnE,IAAI,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB;gBAAE,SAAS;YAElE,IAAI,OAAO,GAAiC,IAAI,CAAC;YACjD,IAAI,gBAAoC,CAAC;YAEzC,8BAA8B;YAC9B,EAAE;YACF,yEAAyE;YACzE,oEAAoE;YACpE,gEAAgE;YAChE,uEAAuE;YACvE,kEAAkE;YAClE,kEAAkE;YAClE,qEAAqE;YACrE,kEAAkE;YAClE,kEAAkE;YAClE,yEAAyE;YACzE,uEAAuE;YACvE,oEAAoE;YACpE,mDAAmD;YACnD,EAAE;YACF,qEAAqE;YACrE,8EAA8E;YAC9E,uEAAuE;YACvE,wEAAwE;YACxE,2EAA2E;YAC3E,uEAAuE;YACvE,qEAAqE;YACrE,2EAA2E;YAC3E,iEAAiE;YACjE,oCAAoC;YACpC,MAAM,wBAAwB,GAAG,MAAM,CAAC,cAAc,KAAK,mBAAmB,CAAC;YAC/E,MAAM,kBAAkB,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,gCAAgC,CAAC;YACnF,IAAI,CAAC,wBAAwB,IAAI,kBAAkB,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;gBAClG,OAAO,GAAG,gBAAgB,CAAC;YAC7B,CAAC;YAED,kEAAkE;YAClE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC;gBAC9E,IAAI,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;oBAC/F,sEAAsE;oBACtE,uEAAuE;oBACvE,2BAA2B;oBAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;oBAClE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,MAAM,CAAC,cAAc,CAAC,CAAC;oBAC7E,IAAI,KAAK,EAAE,CAAC;wBACV,gBAAgB,GAAG,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;wBAChD,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,yBAAyB,GAAG,gBAAgB,EAAE,CAAC;4BACxE,OAAO,GAAG,qBAAqB,CAAC;wBAClC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,MAAM,MAAM,GAAe;gBACzB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,OAAO;gBACP,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;gBACtC,QAAQ,EAAE;oBACR,SAAS,EAAE,MAAM,CAAC,WAAW;oBAC7B,QAAQ,EAAE,KAAK;oBACf,YAAY,EAAE,QAAQ;oBACtB,cAAc;iBACf;gBACD,gBAAgB;aACjB,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YAEjD,yEAAyE;YACzE,iEAAiE;YACjE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACnB,OAAO,EAAE,sBAAsB;gBAC/B,OAAO,EAAE,mBAAmB,MAAM,CAAC,cAAc,oCAAoC;gBACrF,QAAQ,EAAE,uFAAuF;gBACjG,MAAM,EACJ,OAAO,KAAK,gBAAgB;oBAC1B,CAAC,CAAC,GAAG,MAAM,CAAC,cAAc,aAAa,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;oBACrJ,CAAC,CAAC,GAAG,MAAM,CAAC,cAAc,iBAAiB,QAAQ,CAAC,cAAc,EAAE,oBAAoB,gBAAgB,EAAE,cAAc,EAAE,IAAI,GAAG,sBAAsB,IAAI,CAAC,MAAM,CAAC,yBAAyB,IAAI;gBACpM,MAAM,EACJ,aAAa,cAAc,CAAC,cAAc,EAAE,0CAA0C;aACzF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|
|
@@ -43,6 +43,36 @@ export interface SessionReaperConfig {
|
|
|
43
43
|
cpuModerateLoadPerCore: number;
|
|
44
44
|
/** CPU pressure: load-per-core at/above which pressure is `critical`. */
|
|
45
45
|
cpuCriticalLoadPerCore: number;
|
|
46
|
+
/** When true, under CPU pressure the `active-process` existence-veto is
|
|
47
|
+
* tightened: a session kept ONLY by a child process that EXISTS but burns
|
|
48
|
+
* ~no CPU (a wedged/idle MCP child) no longer holds the session hostage —
|
|
49
|
+
* the reaper falls through to its stateful transcript-growth + positive-idle
|
|
50
|
+
* checks, which STILL must all clear before the session is reap-eligible. A
|
|
51
|
+
* strict no-op off-pressure (zero behavior change at `normal`) and whenever
|
|
52
|
+
* CPU progress can't be measured. Ships dark; dev agents enable it via the
|
|
53
|
+
* `developmentAgent` gate. Leaves the shared ReapGuard / ReapAuthority path
|
|
54
|
+
* (terminateSession's veto for OTHER killers) untouched — reaper-only. */
|
|
55
|
+
cpuAwareActiveProcessKeep: boolean;
|
|
56
|
+
/** Idle floor (CPU-seconds per wall-second — i.e. fraction of one core)
|
|
57
|
+
* below which a session's descendant CPU progress counts as "flat". Default
|
|
58
|
+
* 0.02 (2% of a core averaged over a tick) robustly separates a wedged
|
|
59
|
+
* process (≈0 progress) from one doing real work. Only consulted when
|
|
60
|
+
* `cpuAwareActiveProcessKeep` is on and the box is under CPU pressure. */
|
|
61
|
+
cpuActiveMinRatePerSec: number;
|
|
62
|
+
/** OBSERVE-ONLY busy-orphan detection (the inverse of cpuAwareActiveProcessKeep,
|
|
63
|
+
* closing the gap where a *busy* useless process defeats the CPU-progress
|
|
64
|
+
* proxy). Under CPU pressure, when a session is kept ONLY by an `active-process`
|
|
65
|
+
* veto whose child is provably BURNING CPU (cpuFlat===false) yet the session
|
|
66
|
+
* itself looks fully idle (positive idle prompt + flat transcript) across an
|
|
67
|
+
* extended dwell, the reaper records a `busy-orphan-suspected` audit row. It
|
|
68
|
+
* NEVER changes the keep/kill decision — it only makes the "useless-but-busy
|
|
69
|
+
* child pins an idle session" case measurable, so auto-reclaim can graduate
|
|
70
|
+
* later with real data. Ships dark; dev agents enable via `developmentAgent`. */
|
|
71
|
+
busyOrphanDetection: boolean;
|
|
72
|
+
/** Consecutive suspect ticks before a `busy-orphan-suspected` row is emitted —
|
|
73
|
+
* the dwell that avoids flagging a brief legitimate background job. Default 5
|
|
74
|
+
* (~10 min at the default 120s tick). */
|
|
75
|
+
busyOrphanConfirmTicks: number;
|
|
46
76
|
}
|
|
47
77
|
export declare const DEFAULT_SESSION_REAPER_CONFIG: SessionReaperConfig;
|
|
48
78
|
/**
|
|
@@ -68,6 +98,15 @@ export interface SessionEvaluation {
|
|
|
68
98
|
frame: string;
|
|
69
99
|
/** Transcript probe this tick (for growth comparison across ticks). */
|
|
70
100
|
transcript: TranscriptProbe;
|
|
101
|
+
/** True when the `active-process` existence-veto was relaxed this eval because
|
|
102
|
+
* the session's descendants were CPU-flat under pressure (cpuAwareActiveProcessKeep).
|
|
103
|
+
* Observability only — tick() emits a `cpu-keep-tightened` audit row. */
|
|
104
|
+
cpuTightened?: boolean;
|
|
105
|
+
/** True when this eval looks like a busy-orphan suspect: kept by `active-process`
|
|
106
|
+
* with a CPU-BURNING child, yet the session itself is idle (idle prompt + flat
|
|
107
|
+
* transcript). Observe-only — the verdict is unchanged; tick() tracks the dwell
|
|
108
|
+
* and emits a `busy-orphan-suspected` audit row past busyOrphanConfirmTicks. */
|
|
109
|
+
busyOrphanSuspect?: boolean;
|
|
71
110
|
}
|
|
72
111
|
export interface PressureReading {
|
|
73
112
|
tier: PressureTier;
|
|
@@ -86,6 +125,11 @@ export interface SessionReaperDeps {
|
|
|
86
125
|
/** Optional main-process liveness (CPU/IO delta). `undefined` return = cannot
|
|
87
126
|
* inspect → treated as POSSIBLY active (KEEP), per the confidence contract. */
|
|
88
127
|
mainProcessActive?: (tmuxSession: string) => boolean | undefined;
|
|
128
|
+
/** Accumulated CPU-seconds of a session's non-baseline descendants (#706).
|
|
129
|
+
* The reaper samples this across ticks to derive CPU progress for the
|
|
130
|
+
* `cpuAwareActiveProcessKeep` tightening. Absent ⇒ tightening disabled (the
|
|
131
|
+
* active-process veto is never relaxed — the conservative default). */
|
|
132
|
+
descendantCpuSeconds?: (tmuxSession: string) => number;
|
|
89
133
|
frameworkForSession: (tmuxSession: string) => 'claude-code' | 'codex-cli' | undefined;
|
|
90
134
|
/** Resolve+stat the session's transcript. Defaults to {@link probeTranscript}. */
|
|
91
135
|
probeTranscript?: (session: Session) => TranscriptProbe;
|
|
@@ -118,6 +162,12 @@ export declare class SessionReaper extends EventEmitter {
|
|
|
118
162
|
private timer?;
|
|
119
163
|
private running;
|
|
120
164
|
private obs;
|
|
165
|
+
/** Prior descendant-CPU sample per session, for the cross-tick CPU-progress
|
|
166
|
+
* delta that backs `cpuAwareActiveProcessKeep`. GC'd alongside `obs`. */
|
|
167
|
+
private cpuSamples;
|
|
168
|
+
/** Consecutive busy-orphan-suspect ticks per session (observe-only dwell for
|
|
169
|
+
* `busyOrphanDetection`). Resets to 0 on any non-suspect tick. GC'd with obs. */
|
|
170
|
+
private busyOrphanStreak;
|
|
121
171
|
/** Last audited `verdict:keptBy` per session — so the decision audit logs only
|
|
122
172
|
* on a CHANGE, not every tick (auditability without per-tick log spam). */
|
|
123
173
|
private lastAuditedDecision;
|
|
@@ -146,7 +196,30 @@ export declare class SessionReaper extends EventEmitter {
|
|
|
146
196
|
* high confidence. Order: cheap protect-gates first (short-circuit), then the
|
|
147
197
|
* positive-idle + activeness checks.
|
|
148
198
|
*/
|
|
149
|
-
evaluate(session: Session
|
|
199
|
+
evaluate(session: Session, opts?: {
|
|
200
|
+
cpuFlat?: boolean;
|
|
201
|
+
}): SessionEvaluation;
|
|
202
|
+
/**
|
|
203
|
+
* CPU-progress probe backing `cpuAwareActiveProcessKeep`. Returns:
|
|
204
|
+
* - `true` → the session's descendants are CPU-flat (progress below the idle
|
|
205
|
+
* floor) over the sample window — i.e. existing-but-not-working;
|
|
206
|
+
* - `false` → descendants used CPU (genuinely working);
|
|
207
|
+
* - `undefined` → DO NOT tighten (the conservative default = KEEP): the
|
|
208
|
+
* feature is off, the box is at `normal` pressure, CPU can't be sampled, or
|
|
209
|
+
* there's no prior sample yet to delta against.
|
|
210
|
+
* Records the current reading for the next tick's delta. Stateful — call once
|
|
211
|
+
* per session per tick (from tick(), never from the observational report()).
|
|
212
|
+
*/
|
|
213
|
+
private cpuProgressFlat;
|
|
214
|
+
/**
|
|
215
|
+
* Does this session look fully idle EXCEPT for the busy child keeping it alive?
|
|
216
|
+
* True only when its transcript is provably STATIC (resolved + not grown vs the
|
|
217
|
+
* previous tick) AND its pane is positively idle (a ready prompt, no working
|
|
218
|
+
* footer). Conservative: a first sighting (no prior transcript), an unresolved/
|
|
219
|
+
* rotated transcript, or any growth → false. Reuses the already-captured frame
|
|
220
|
+
* and transcript (no extra tmux/fs work). Pure observation — never reaps.
|
|
221
|
+
*/
|
|
222
|
+
private looksIdleApartFromBusyChild;
|
|
150
223
|
/** Active idle threshold (ms) for the current pressure tier. */
|
|
151
224
|
private thresholdMs;
|
|
152
225
|
private hourlyBudgetRemaining;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionReaper.d.ts","sourceRoot":"","sources":["../../src/monitoring/SessionReaper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGhD,OAAO,EAAoC,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/F,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;AAC9D,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,eAAe,CAAC;AAC/C,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,KAAK,CAAC;AAExC,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,uBAAuB,EAAE,MAAM,CAAC;IAChC,4BAA4B,EAAE,MAAM,CAAC;IACrC,4BAA4B,EAAE,MAAM,CAAC;IACrC,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,sBAAsB,EAAE,OAAO,CAAC;IAChC;;uEAEmE;IACnE,sBAAsB,EAAE,MAAM,CAAC;IAC/B,yEAAyE;IACzE,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,eAAO,MAAM,6BAA6B,EAAE,
|
|
1
|
+
{"version":3,"file":"SessionReaper.d.ts","sourceRoot":"","sources":["../../src/monitoring/SessionReaper.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,6 +39,10 @@ export const DEFAULT_SESSION_REAPER_CONFIG = {
|
|
|
39
39
|
protectOpenCommitments: true,
|
|
40
40
|
cpuModerateLoadPerCore: 1.0,
|
|
41
41
|
cpuCriticalLoadPerCore: 1.5,
|
|
42
|
+
cpuAwareActiveProcessKeep: false,
|
|
43
|
+
cpuActiveMinRatePerSec: 0.02,
|
|
44
|
+
busyOrphanDetection: false,
|
|
45
|
+
busyOrphanConfirmTicks: 5,
|
|
42
46
|
};
|
|
43
47
|
/** Memory-pressure thresholds (freePct). Kept as constants — the existing
|
|
44
48
|
* behavior surface; CPU thresholds are the configurable addition. */
|
|
@@ -81,6 +85,12 @@ export class SessionReaper extends EventEmitter {
|
|
|
81
85
|
timer;
|
|
82
86
|
running = false;
|
|
83
87
|
obs = new Map();
|
|
88
|
+
/** Prior descendant-CPU sample per session, for the cross-tick CPU-progress
|
|
89
|
+
* delta that backs `cpuAwareActiveProcessKeep`. GC'd alongside `obs`. */
|
|
90
|
+
cpuSamples = new Map();
|
|
91
|
+
/** Consecutive busy-orphan-suspect ticks per session (observe-only dwell for
|
|
92
|
+
* `busyOrphanDetection`). Resets to 0 on any non-suspect tick. GC'd with obs. */
|
|
93
|
+
busyOrphanStreak = new Map();
|
|
84
94
|
/** Last audited `verdict:keptBy` per session — so the decision audit logs only
|
|
85
95
|
* on a CHANGE, not every tick (auditability without per-tick log spam). */
|
|
86
96
|
lastAuditedDecision = new Map();
|
|
@@ -165,19 +175,47 @@ export class SessionReaper extends EventEmitter {
|
|
|
165
175
|
* high confidence. Order: cheap protect-gates first (short-circuit), then the
|
|
166
176
|
* positive-idle + activeness checks.
|
|
167
177
|
*/
|
|
168
|
-
evaluate(session) {
|
|
178
|
+
evaluate(session, opts) {
|
|
169
179
|
const framework = session.framework ?? this.deps.frameworkForSession(session.tmuxSession);
|
|
170
180
|
const frame = safeCapture(this.deps, session.tmuxSession, this.cfg.paneCaptureLines);
|
|
171
181
|
const transcript = this.probe(session);
|
|
172
|
-
|
|
182
|
+
let cpuTightened = false;
|
|
183
|
+
let busyOrphanSuspect = false;
|
|
184
|
+
const keep = (reason, confidence = 'high') => ({ verdict: 'keep', keptBy: reason, confidence, frame, transcript, cpuTightened, busyOrphanSuspect });
|
|
173
185
|
// ── Stateless KEEP-guards (§P2): protected, spawn-grace, recovery,
|
|
174
186
|
// pending-injection, relay-lease, recent-user, open-commitment,
|
|
175
187
|
// active-subagent, structural-long-work, active-process, main-process.
|
|
176
188
|
// Extracted to the shared ReapGuard so terminateSession() enforces the
|
|
177
189
|
// identical chain. Order + reasons preserved exactly. ──
|
|
178
190
|
const blocked = this.guard.blockedReason(session);
|
|
179
|
-
if (blocked)
|
|
180
|
-
|
|
191
|
+
if (blocked) {
|
|
192
|
+
// Host-load-gated tightening of the `active-process` existence-veto.
|
|
193
|
+
// `opts.cpuFlat===true` (computed by tick() from the descendant CPU-seconds
|
|
194
|
+
// delta) means the ONLY thing keeping this session is a child that EXISTS
|
|
195
|
+
// but burns ~no CPU under pressure (a wedged/idle MCP child). In that one
|
|
196
|
+
// case, don't honor the veto — fall through to the stateful transcript-
|
|
197
|
+
// growth + positive-idle checks below, which STILL must all clear before
|
|
198
|
+
// the session is reap-eligible. Every other keep-reason — and the
|
|
199
|
+
// off-pressure / can't-measure cases (cpuFlat !== true) — is unchanged.
|
|
200
|
+
if (blocked.reason === 'active-process' && opts?.cpuFlat === true) {
|
|
201
|
+
cpuTightened = true; // relax this veto only; fall through (no return)
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
// OBSERVE-ONLY busy-orphan detection — the inverse of the relax above.
|
|
205
|
+
// A child is keeping this session, but if that child is provably BURNING
|
|
206
|
+
// CPU (opts.cpuFlat===false) while the session ITSELF looks fully idle
|
|
207
|
+
// (positive idle prompt + flat transcript), it's a candidate useless-but-
|
|
208
|
+
// busy orphan — the gap cpuAwareActiveProcessKeep can't catch. Flag it for
|
|
209
|
+
// the dwell tracker; the keep verdict is UNCHANGED (never reaps on this).
|
|
210
|
+
if (this.cfg.busyOrphanDetection
|
|
211
|
+
&& blocked.reason === 'active-process'
|
|
212
|
+
&& opts?.cpuFlat === false
|
|
213
|
+
&& this.looksIdleApartFromBusyChild(framework, frame, transcript, session)) {
|
|
214
|
+
busyOrphanSuspect = true;
|
|
215
|
+
}
|
|
216
|
+
return keep(blocked.reason, blocked.confidence);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
181
219
|
// ── Stateful checks (stay in the reaper; need per-tick obs / captured frame) ──
|
|
182
220
|
// E. Transcript growth this tick (vs last tick). 'grew' ⇒ working;
|
|
183
221
|
// 'unknown' (unresolved/rotated) ⇒ KEEP.
|
|
@@ -197,7 +235,66 @@ export class SessionReaper extends EventEmitter {
|
|
|
197
235
|
if (!SessionReaper.isPositivelyIdle(framework, frame))
|
|
198
236
|
return keep('no-positive-idle');
|
|
199
237
|
// All gates clear: this tick the session is a reap candidate.
|
|
200
|
-
return { verdict: 'reap-eligible', keptBy: 'all-clear', confidence: 'high', frame, transcript };
|
|
238
|
+
return { verdict: 'reap-eligible', keptBy: 'all-clear', confidence: 'high', frame, transcript, cpuTightened, busyOrphanSuspect };
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* CPU-progress probe backing `cpuAwareActiveProcessKeep`. Returns:
|
|
242
|
+
* - `true` → the session's descendants are CPU-flat (progress below the idle
|
|
243
|
+
* floor) over the sample window — i.e. existing-but-not-working;
|
|
244
|
+
* - `false` → descendants used CPU (genuinely working);
|
|
245
|
+
* - `undefined` → DO NOT tighten (the conservative default = KEEP): the
|
|
246
|
+
* feature is off, the box is at `normal` pressure, CPU can't be sampled, or
|
|
247
|
+
* there's no prior sample yet to delta against.
|
|
248
|
+
* Records the current reading for the next tick's delta. Stateful — call once
|
|
249
|
+
* per session per tick (from tick(), never from the observational report()).
|
|
250
|
+
*/
|
|
251
|
+
cpuProgressFlat(session, tier) {
|
|
252
|
+
// Sample when EITHER consumer needs the signal: cpuAwareActiveProcessKeep
|
|
253
|
+
// (uses cpuFlat===true to relax) or busyOrphanDetection (uses cpuFlat===false
|
|
254
|
+
// to flag). Off-pressure / no dep ⇒ undefined (no tighten, no flag).
|
|
255
|
+
if ((!this.cfg.cpuAwareActiveProcessKeep && !this.cfg.busyOrphanDetection)
|
|
256
|
+
|| tier === 'normal' || !this.deps.descendantCpuSeconds) {
|
|
257
|
+
return undefined;
|
|
258
|
+
}
|
|
259
|
+
let sec;
|
|
260
|
+
try {
|
|
261
|
+
sec = this.deps.descendantCpuSeconds(session.tmuxSession);
|
|
262
|
+
}
|
|
263
|
+
catch {
|
|
264
|
+
return undefined;
|
|
265
|
+
}
|
|
266
|
+
if (!Number.isFinite(sec))
|
|
267
|
+
return undefined;
|
|
268
|
+
const at = this.now();
|
|
269
|
+
const prior = this.cpuSamples.get(session.id);
|
|
270
|
+
this.cpuSamples.set(session.id, { sec, at });
|
|
271
|
+
if (!prior)
|
|
272
|
+
return undefined; // first sighting — no delta yet, can't tell
|
|
273
|
+
const elapsedSec = (at - prior.at) / 1000;
|
|
274
|
+
if (elapsedSec <= 0)
|
|
275
|
+
return undefined;
|
|
276
|
+
const ratePerSec = (sec - prior.sec) / elapsedSec; // CPU-seconds per wall-second
|
|
277
|
+
// Accumulated CPU went backwards (pid reuse / process restart) ⇒ not provably
|
|
278
|
+
// flat ⇒ can't-tell ⇒ KEEP.
|
|
279
|
+
if (ratePerSec < 0)
|
|
280
|
+
return undefined;
|
|
281
|
+
return ratePerSec < this.cfg.cpuActiveMinRatePerSec;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Does this session look fully idle EXCEPT for the busy child keeping it alive?
|
|
285
|
+
* True only when its transcript is provably STATIC (resolved + not grown vs the
|
|
286
|
+
* previous tick) AND its pane is positively idle (a ready prompt, no working
|
|
287
|
+
* footer). Conservative: a first sighting (no prior transcript), an unresolved/
|
|
288
|
+
* rotated transcript, or any growth → false. Reuses the already-captured frame
|
|
289
|
+
* and transcript (no extra tmux/fs work). Pure observation — never reaps.
|
|
290
|
+
*/
|
|
291
|
+
looksIdleApartFromBusyChild(framework, frame, transcript, session) {
|
|
292
|
+
const prev = this.obs.get(session.id)?.lastTranscript;
|
|
293
|
+
if (!prev)
|
|
294
|
+
return false; // first sighting — no growth comparison yet
|
|
295
|
+
if (transcriptDelta(prev, transcript) !== 'static')
|
|
296
|
+
return false; // grew/unknown ⇒ not idle
|
|
297
|
+
return SessionReaper.isPositivelyIdle(framework, frame);
|
|
201
298
|
}
|
|
202
299
|
/** Active idle threshold (ms) for the current pressure tier. */
|
|
203
300
|
thresholdMs(tier) {
|
|
@@ -231,11 +328,21 @@ export class SessionReaper extends EventEmitter {
|
|
|
231
328
|
for (const id of [...this.lastAuditedDecision.keys()])
|
|
232
329
|
if (!live.has(id))
|
|
233
330
|
this.lastAuditedDecision.delete(id);
|
|
331
|
+
for (const id of [...this.cpuSamples.keys()])
|
|
332
|
+
if (!live.has(id))
|
|
333
|
+
this.cpuSamples.delete(id);
|
|
334
|
+
for (const id of [...this.busyOrphanStreak.keys()])
|
|
335
|
+
if (!live.has(id))
|
|
336
|
+
this.busyOrphanStreak.delete(id);
|
|
234
337
|
let reapedThisTick = 0;
|
|
235
338
|
for (const session of sessions) {
|
|
339
|
+
// CPU-progress probe for the active-process keep-tightening. Sampled here
|
|
340
|
+
// (once per session per tick) so the cross-tick delta lives in one place;
|
|
341
|
+
// undefined off-pressure / when the feature is off ⇒ evaluate() unchanged.
|
|
342
|
+
const cpuFlat = this.cpuProgressFlat(session, pressure.tier);
|
|
236
343
|
let evaln;
|
|
237
344
|
try {
|
|
238
|
-
evaln = this.evaluate(session);
|
|
345
|
+
evaln = this.evaluate(session, { cpuFlat });
|
|
239
346
|
}
|
|
240
347
|
catch {
|
|
241
348
|
// A protect-signal threw — we cannot reason about this session, so
|
|
@@ -248,6 +355,39 @@ export class SessionReaper extends EventEmitter {
|
|
|
248
355
|
// Decision audit (transition-only): record what we decided + WHY, stamped
|
|
249
356
|
// with the pressure context, the first time we see it and on every change.
|
|
250
357
|
this.auditDecisionIfChanged(session, evaln, pressure);
|
|
358
|
+
// Kill-path observability: whenever the new behavior actually relaxed the
|
|
359
|
+
// active-process existence-veto this tick, leave a durable breadcrumb
|
|
360
|
+
// (every tick it applies — this is a behavior change to a reap decision).
|
|
361
|
+
if (evaln.cpuTightened) {
|
|
362
|
+
this.audit('cpu-keep-tightened', session, {
|
|
363
|
+
tier: pressure.tier, verdict: evaln.verdict, keptBy: evaln.keptBy,
|
|
364
|
+
cpuActiveMinRatePerSec: this.cfg.cpuActiveMinRatePerSec,
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
// Observe-only busy-orphan dwell tracker: count consecutive suspect ticks;
|
|
368
|
+
// emit ONE `busy-orphan-suspected` audit row the tick the streak crosses
|
|
369
|
+
// busyOrphanConfirmTicks (not every tick after — avoids a per-tick flood),
|
|
370
|
+
// and a `busy-orphan-cleared` row when a confirmed suspect recovers. Never
|
|
371
|
+
// changes the verdict — purely makes the gap measurable.
|
|
372
|
+
if (this.cfg.busyOrphanDetection) {
|
|
373
|
+
const prevStreak = this.busyOrphanStreak.get(session.id) ?? 0;
|
|
374
|
+
if (evaln.busyOrphanSuspect) {
|
|
375
|
+
const streak = prevStreak + 1;
|
|
376
|
+
this.busyOrphanStreak.set(session.id, streak);
|
|
377
|
+
if (streak === this.cfg.busyOrphanConfirmTicks) {
|
|
378
|
+
this.audit('busy-orphan-suspected', session, {
|
|
379
|
+
tier: pressure.tier, streakTicks: streak, keptBy: evaln.keptBy,
|
|
380
|
+
dwellMs: streak * this.cfg.tickIntervalSec * 1000,
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
else if (prevStreak > 0) {
|
|
385
|
+
if (prevStreak >= this.cfg.busyOrphanConfirmTicks) {
|
|
386
|
+
this.audit('busy-orphan-cleared', session, { tier: pressure.tier, afterTicks: prevStreak });
|
|
387
|
+
}
|
|
388
|
+
this.busyOrphanStreak.set(session.id, 0);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
251
391
|
const prior = this.obs.get(session.id);
|
|
252
392
|
const now = this.now();
|
|
253
393
|
if (evaln.verdict === 'keep') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionReaper.js","sourceRoot":"","sources":["../../src/monitoring/SessionReaper.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SessionReaper.js","sourceRoot":"","sources":["../../src/monitoring/SessionReaper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAgG/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2E/F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiBvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA2B1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,WAAW,GAAE,OAAe,EAC5B,WAAW,GAAE,OAAe,GAC3B,MAAM,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAgG/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2E/F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiBvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA2B1D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,WAAW,GAAE,OAAe,EAC5B,WAAW,GAAE,OAAe,GAC3B,MAAM,CAmvCR;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,WAAW,GAAE,OAAe,GAC3B,MAAM,CAuSR"}
|
|
@@ -386,6 +386,8 @@ This routes feedback to the Instar maintainers automatically. Valid types: \`bug
|
|
|
386
386
|
|
|
387
387
|
**SessionReaper** — Pressure-aware cleanup of idle-but-alive sessions (sessions parked at a ready prompt, doing nothing, holding resources). Distinct from the crash/zombie reapers: it only acts when the machine is under pressure, and it NEVER reaps a session that might be working — it requires positive proof a session is idle (turn complete + at a ready prompt + screen byte-static across several checks + no running process + no transcript growth), and KEEPs on any ambiguity. Ships OFF + dry-run by default (the only monitor that kills on a heuristic).
|
|
388
388
|
- Pressure is **CPU-aware**: the tier is the WORST of memory (free %) and CPU (1-min load ÷ cores), so a CPU-bound box raises pressure even when free RAM is fine. Tune the CPU thresholds in \`.instar/config.json\` → \`{"monitoring": {"sessionReaper": {"cpuModerateLoadPerCore": 1.0, "cpuCriticalLoadPerCore": 1.5}}}\`.
|
|
389
|
+
- **CPU-aware active-process keep** (\`cpuAwareActiveProcessKeep\`, dark by default; dev agents enable it via \`developmentAgent\`): normally a session is KEPT if any non-baseline child process EXISTS. Under CPU pressure that's too coarse — a wedged or idle child (a hung MCP server, a stuck \`codex exec\` job) burns ~no CPU yet holds the idle session un-reapable forever, inflating host load. With this on, under pressure the existence-veto requires *positive CPU progress*; a CPU-flat child no longer blocks reaping (the reaper still falls through to its transcript-growth + positive-idle checks, which must clear, so a genuinely-working session is never reaped). Strict no-op off-pressure and whenever CPU can't be measured. Each time it relaxes the veto it writes a \`cpu-keep-tightened\` row to the decision audit. If a user asks "why did my idle session get reaped under load even though a process was still attached?" — that's this; read \`logs/reaper-audit.jsonl\`.
|
|
390
|
+
- **Busy-orphan detection** (\`busyOrphanDetection\`, OBSERVE-ONLY, dark by default; dev agents on): the inverse blind spot. CPU-progress is a proxy for "useful" — but a *useless* process that SPINS (a hot-loop, a wedged job burning CPU) looks "active" and would keep a session pinned. When an idle session (idle prompt + flat transcript) is held only by a child that's *burning* CPU across an extended dwell, the reaper records a \`busy-orphan-suspected\` audit row (and \`busy-orphan-cleared\` on recovery). It NEVER changes the keep/kill decision — it just makes the "useless-but-busy child pins an idle session" case measurable, so safe auto-reclaim can graduate later with data. Read \`logs/reaper-audit.jsonl\` (filter \`busy-orphan-suspected\`).
|
|
389
391
|
- Why it matters: idle sessions pile up across agents until the machine starves (CPU *or* memory) and new sessions get "spawn denied" — silently breaking cross-agent messaging. This sweeps them, but only under real pressure.
|
|
390
392
|
- See current state / why each session is kept or flagged: \`curl -H "Authorization: Bearer $AUTH" http://localhost:${port}/sessions/reaper\` (the \`pressure.inputs\` shows freePct, loadPerCore, and the memTier/cpuTier breakdown).
|
|
391
393
|
- **Decision audit** — the "what is the reaper considering, and why did it keep/kill each session?" trail. Every keep/kill decision *change* (logged on transition, not every tick) + the reap-path events, each stamped with the pressure tier that drove it, land in \`logs/reaper-audit.jsonl\`. Read the tail: \`curl -H "Authorization: Bearer $AUTH" "http://localhost:${port}/sessions/reaper/audit?limit=50"\` → \`{ entries: [...] }\`. Read-only, silent (no notifications) — purely for inspection.
|
|
@@ -409,6 +411,11 @@ This routes feedback to the Instar maintainers automatically. Valid types: \`bug
|
|
|
409
411
|
- Tune (rarely needed) in \`.instar/config.json\`: \`{"monitoring": {"sleepWake": {"maxLoadRatio": 1.5, "longSleepFloorSeconds": 300, "minWakeIntervalMs": 60000}}}\`. Defaults live in code, so the guard is active with no config.
|
|
410
412
|
- Proactive: user reports "you keep restarting" / "your agent is overloaded" / "is it a memory problem?" → GET /monitoring/sleep-wake, then check \`uptime\` load average against core count; explain CPU oversubscription (load ≫ cores) vs. memory.
|
|
411
413
|
|
|
414
|
+
**Token-Burn Alerts** — The "an unknown component is using more than a quarter of the agent's token budget" heads-up. The BurnDetector watches per-component 24h token share and the 1h spend rate, and alerts when one component is *actively* burning. Two things to know when a user asks about the noise:
|
|
415
|
+
- An alert only fires for a component spending **right now** (last-1h tokens above \`absoluteShareActivityFloorTokens\`, default 0 = any positive current spend). A finished heavy session — high 24h share but zero current rate — is NOT a burn and is silenced; this is the activity gate that closed the "consumed 67% of 24h spend … Projected 0 tokens" re-alarm-for-a-full-day bug. Most context-cache usage spread across many warm sessions never trips it.
|
|
416
|
+
- Silence or tune it in \`.instar/config.json\` → \`monitoring.burnDetection\`: \`{"enabled": false}\` is the master off-switch; \`absoluteShareThreshold\` (default 0.25), \`absoluteShareActivityFloorTokens\`, \`alertTopicId\` (where alerts post), \`autoThrottle\` / \`autoThrottleOnUnknown\` tune behaviour without code changes. Absence preserves the shipped defaults.
|
|
417
|
+
- Proactive: user says "these token alerts are noisy" / "why am I getting this" / "turn them off" → explain the activity gate (it only flags live burns now), and offer the \`monitoring.burnDetection.enabled: false\` off-switch (restart sessions to apply per the section below). Note that \`unknown::<id>\` just means that spend wasn't attributed to a named component — it's not inherently a problem.
|
|
418
|
+
|
|
412
419
|
**Multi-Session Autonomy** — I can run multiple autonomous jobs at once, one per topic (default cap 5, set \`autonomousSessions.maxConcurrent\` in config). Each topic's job is isolated, survives restarts, and is keyed on its topic.
|
|
413
420
|
- What's running: \`curl -H "Authorization: Bearer $AUTH" http://localhost:${port}/autonomous/sessions\`
|
|
414
421
|
- The cap + budget gate is checked automatically when a job starts (\`GET /autonomous/can-start\`); a start is refused when at the cap or under budget pressure.
|
|
@@ -726,6 +733,8 @@ This returns your full capability matrix: scripts, hooks, Telegram status, jobs,
|
|
|
726
733
|
|
|
727
734
|
Instar contributors can run \`instar dev:preflight\` before opening PRs to run lint, CapabilityIndex discoverability checks, and an advisory new-route-prefix scan against the diff.
|
|
728
735
|
|
|
736
|
+
Run \`instar dev:ci-failures <pr>\` to print a red PR's exact failing tests (file:line + assertion) via the GitHub check-run annotations API — handy when \`gh run view --log\` returns nothing.
|
|
737
|
+
|
|
729
738
|
**Critical rule**: If this CLAUDE.md says a feature is "for standalone agents" or "when configured" or uses any qualifier — do NOT conclude you lack the feature. Check \`/capabilities\` instead. Documentation describes features in general; the API tells you what's actually running for YOU right now. When they conflict, the API wins.
|
|
730
739
|
|
|
731
740
|
### Registry First, Explore Second
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAuB;IACrD,OAAO,KAAK,QAAQ,CAAC,IAAI;;;;OAIpB,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;;;;EAIpC,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;6BAsBO,QAAQ,CAAC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+D7C,CAAC;AAEF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,WAAmB,EAAE,QAAgB;IACrF,OAAO;;;;;;;;;;;;;;;;;;EAkBP,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAkDH,QAAQ;;;;;CAKjB,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,OAAO,KAAK,QAAQ;;;;;;;;;;;;;;4CAcsB,QAAQ;CACnD,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,KAAK,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;CAyBtB,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,WAAmB,EACnB,SAAiB,EACjB,IAAY,EACZ,WAAoB,EACpB,cAAuB,KAAK,EAC5B,cAAuB,KAAK;IAE5B,IAAI,OAAO,GAAG,iBAAiB,WAAW;;;;OAIrC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCT,SAAS;;gCAEgB,IAAI,kFAAkF,IAAI;;;;;;;;;;;;;8EAa5C,IAAI;;;yFAGO,IAAI;;;;;;;uGAOU,IAAI;;;;;;;;;;;;;;;;;;;;;;;0CAuBjE,IAAI;oCACV,IAAI;;;;;;;;;;;;;yDAaiB,IAAI;;;;;;;;;;;;gCAY7B,IAAI;;;;;;;;;sFASkD,IAAI;4FACE,IAAI;;;;;;;mEAO7B,IAAI;8EACO,IAAI;;;mEAGf,IAAI;4EACK,IAAI
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":"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"}
|