instar 1.3.406 → 1.3.407
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/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +23 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/monitoring/SessionReaper.d.ts +24 -0
- package/dist/monitoring/SessionReaper.d.ts.map +1 -1
- package/dist/monitoring/SessionReaper.js +29 -0
- package/dist/monitoring/SessionReaper.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +2 -2
- package/upgrades/1.3.407.md +37 -0
- package/upgrades/side-effects/reaper-durable-candidacy.md +46 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAQ3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAuBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAiG7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA6JtD,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA05BD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,GAC/F,IAAI,CAyUN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAQ3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAuBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAiG7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA6JtD,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA05BD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,GAC/F,IAAI,CAyUN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsiUtE;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD5E"}
|
package/dist/commands/server.js
CHANGED
|
@@ -9480,6 +9480,29 @@ export async function startServer(options) {
|
|
|
9480
9480
|
// path so the reaper's fallback probe() can resolve + verify idle. Without this
|
|
9481
9481
|
// the probe used '' and every transcript read as unresolved (kept everything).
|
|
9482
9482
|
transcriptProjectDir: () => config.projectDir,
|
|
9483
|
+
// Durable candidacy (A): persist the reaper's idle-candidacy clock to disk so
|
|
9484
|
+
// it survives server restarts. On a box that restarts every ~10min (SleepWake-
|
|
9485
|
+
// under-load churn) the in-memory 45-min clock never matured → reaper never
|
|
9486
|
+
// reaped. The per-tick all-clear + render-stasis re-gate keeps it safe.
|
|
9487
|
+
loadCandidacy: () => {
|
|
9488
|
+
try {
|
|
9489
|
+
const f = path.join(config.stateDir, 'state', 'session-reaper-candidacy.json');
|
|
9490
|
+
if (!fs.existsSync(f))
|
|
9491
|
+
return {};
|
|
9492
|
+
return JSON.parse(fs.readFileSync(f, 'utf-8'));
|
|
9493
|
+
}
|
|
9494
|
+
catch {
|
|
9495
|
+
return {};
|
|
9496
|
+
}
|
|
9497
|
+
},
|
|
9498
|
+
saveCandidacy: (map) => {
|
|
9499
|
+
try {
|
|
9500
|
+
const dir = path.join(config.stateDir, 'state');
|
|
9501
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
9502
|
+
fs.writeFileSync(path.join(dir, 'session-reaper-candidacy.json'), JSON.stringify(map));
|
|
9503
|
+
}
|
|
9504
|
+
catch { /* @silent-fallback-ok — best-effort; clock resets next restart on failure */ }
|
|
9505
|
+
},
|
|
9483
9506
|
pressure: () => {
|
|
9484
9507
|
const total = _os.totalmem();
|
|
9485
9508
|
const freePct = total > 0 ? (_os.freemem() / total) * 100 : 100;
|