instar 1.3.469 → 1.3.470
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 +76 -9
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +28 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/CartographerSweepEngine.d.ts +122 -0
- package/dist/core/CartographerSweepEngine.d.ts.map +1 -0
- package/dist/core/CartographerSweepEngine.js +454 -0
- package/dist/core/CartographerSweepEngine.js.map +1 -0
- package/dist/core/CartographerTree.d.ts +95 -0
- package/dist/core/CartographerTree.d.ts.map +1 -1
- package/dist/core/CartographerTree.js +147 -0
- package/dist/core/CartographerTree.js.map +1 -1
- package/dist/core/IntelligenceRouter.d.ts +7 -0
- package/dist/core/IntelligenceRouter.d.ts.map +1 -1
- package/dist/core/IntelligenceRouter.js +9 -0
- package/dist/core/IntelligenceRouter.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +8 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/cartographerSummary.d.ts +62 -0
- package/dist/core/cartographerSummary.d.ts.map +1 -0
- package/dist/core/cartographerSummary.js +0 -0
- package/dist/core/cartographerSummary.js.map +1 -0
- package/dist/core/componentCategories.d.ts.map +1 -1
- package/dist/core/componentCategories.js +7 -0
- package/dist/core/componentCategories.js.map +1 -1
- package/dist/monitoring/CartographerSweepPoller.d.ts +61 -0
- package/dist/monitoring/CartographerSweepPoller.d.ts.map +1 -0
- package/dist/monitoring/CartographerSweepPoller.js +211 -0
- package/dist/monitoring/CartographerSweepPoller.js.map +1 -0
- package/dist/monitoring/HostPressureSampler.d.ts +21 -0
- package/dist/monitoring/HostPressureSampler.d.ts.map +1 -0
- package/dist/monitoring/HostPressureSampler.js +44 -0
- package/dist/monitoring/HostPressureSampler.js.map +1 -0
- package/dist/server/CapabilityIndex.d.ts.map +1 -1
- package/dist/server/CapabilityIndex.js +2 -1
- package/dist/server/CapabilityIndex.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +97 -1
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/scripts/cartographer-freshness.mjs +209 -0
- package/scripts/lint-no-direct-destructive.js +6 -0
- package/src/data/builtin-manifest.json +63 -63
- package/upgrades/1.3.470.md +27 -0
- package/upgrades/side-effects/cartographer-doc-freshness.md +112 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAcH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAS3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAuBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAmG7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAsBtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAUT;AAyID,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA65BD,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,EAKhG,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,GACpD,IAAI,CA0UN;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;AAcH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAS3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAuBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAmG7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAsBtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAUT;AAyID,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA65BD,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,EAKhG,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,GACpD,IAAI,CA0UN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAohVtE;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
|
@@ -7763,6 +7763,75 @@ export async function startServer(options) {
|
|
|
7763
7763
|
: null;
|
|
7764
7764
|
if (cartographer)
|
|
7765
7765
|
console.log(pc.green(' Cartographer doc-tree enabled'));
|
|
7766
|
+
// Cartographer doc-freshness sweep (spec #2). In-process poller that authors
|
|
7767
|
+
// stale/never-authored node summaries on a LIGHT model routed OFF Claude.
|
|
7768
|
+
// Ships dark behind freshnessSweep.enabled AND egressAcknowledged (off-Claude
|
|
7769
|
+
// authoring transmits source content to a third-party framework — a separate
|
|
7770
|
+
// consent gate). The off-Claude guarantee needs the IntelligenceRouter
|
|
7771
|
+
// (router.for + defaultFramework); if routing is an unrouted provider the
|
|
7772
|
+
// sweep refuses to start (it could not enforce off-Claude).
|
|
7773
|
+
let cartographerSweepPoller = null;
|
|
7774
|
+
if (cartographer) {
|
|
7775
|
+
const fsCfg = config.cartographer?.freshnessSweep;
|
|
7776
|
+
const num = (v, d) => (typeof v === 'number' && Number.isFinite(v) ? v : d);
|
|
7777
|
+
if (fsCfg?.enabled && fsCfg?.egressAcknowledged && sharedLlmQueue) {
|
|
7778
|
+
const routerLike = sharedIntelligence &&
|
|
7779
|
+
typeof sharedIntelligence.for === 'function' &&
|
|
7780
|
+
typeof sharedIntelligence.defaultFramework === 'string'
|
|
7781
|
+
? sharedIntelligence
|
|
7782
|
+
: null;
|
|
7783
|
+
if (!routerLike) {
|
|
7784
|
+
console.log(pc.yellow(' Cartographer sweep: NOT started (off-Claude routing requires the IntelligenceRouter)'));
|
|
7785
|
+
}
|
|
7786
|
+
else {
|
|
7787
|
+
const { CartographerSweepEngine } = await import('../core/CartographerSweepEngine.js');
|
|
7788
|
+
const { CartographerSweepPoller } = await import('../monitoring/CartographerSweepPoller.js');
|
|
7789
|
+
const { sampleHostPressure: _sampleHostPressure } = await import('../monitoring/HostPressureSampler.js');
|
|
7790
|
+
const rcfg = config.monitoring?.sessionReaper;
|
|
7791
|
+
const engine = new CartographerSweepEngine({
|
|
7792
|
+
tree: cartographer,
|
|
7793
|
+
router: routerLike,
|
|
7794
|
+
llmQueue: sharedLlmQueue,
|
|
7795
|
+
pressure: () => _sampleHostPressure({
|
|
7796
|
+
cpuModerateLoadPerCore: rcfg?.cpuModerateLoadPerCore ?? 1.0,
|
|
7797
|
+
cpuCriticalLoadPerCore: rcfg?.cpuCriticalLoadPerCore ?? 1.5,
|
|
7798
|
+
}),
|
|
7799
|
+
// Author ONLY on the lease holder (multi-machine N× burn fix); single-machine ⇒ always holder.
|
|
7800
|
+
holdsLease: () => (leaseCoordinatorRef ? leaseCoordinatorRef.holdsLease() : true),
|
|
7801
|
+
config: {
|
|
7802
|
+
maxNodesPerPass: num(fsCfg.maxNodesPerPass, 25),
|
|
7803
|
+
maxCentsPerPass: num(fsCfg.maxCentsPerPass, 25),
|
|
7804
|
+
estCentsPerAuthor: num(fsCfg.estCentsPerAuthor, 1),
|
|
7805
|
+
maxLeafBytes: num(fsCfg.maxLeafBytes, 24576),
|
|
7806
|
+
minSummaryChars: num(fsCfg.minSummaryChars, 24),
|
|
7807
|
+
maxSummaryChars: num(fsCfg.maxSummaryChars, 600),
|
|
7808
|
+
allowClaudeFallback: fsCfg.allowClaudeFallback === true,
|
|
7809
|
+
nodeFailQuarantineThreshold: num(fsCfg.nodeFailQuarantineThreshold, 3),
|
|
7810
|
+
maxDeferredPasses: num(fsCfg.maxDeferredPasses, 5),
|
|
7811
|
+
revalidateSamplePerPass: num(fsCfg.revalidateSamplePerPass, 2),
|
|
7812
|
+
minNodesUnderPressure: num(fsCfg.minNodesUnderPressure, 3),
|
|
7813
|
+
},
|
|
7814
|
+
stateDir: config.stateDir,
|
|
7815
|
+
log: (m) => console.log(pc.gray(m)),
|
|
7816
|
+
});
|
|
7817
|
+
cartographerSweepPoller = new CartographerSweepPoller({
|
|
7818
|
+
engine,
|
|
7819
|
+
cadenceMs: num(fsCfg.cadenceMs, 600000),
|
|
7820
|
+
idleCadenceMs: num(fsCfg.idleCadenceMs, 1800000),
|
|
7821
|
+
zeroProgressTicksToBreak: num(fsCfg.zeroProgressTicksToBreak, 3),
|
|
7822
|
+
breakerReescalateHours: num(fsCfg.breakerReescalateHours, 6),
|
|
7823
|
+
log: (m) => console.log(pc.gray(m)),
|
|
7824
|
+
reportDegradation: (d) => { try {
|
|
7825
|
+
DegradationReporter.getInstance().report(d);
|
|
7826
|
+
}
|
|
7827
|
+
catch { /* never break boot on a report */ } },
|
|
7828
|
+
});
|
|
7829
|
+
cartographerSweepPoller.start();
|
|
7830
|
+
console.log(pc.green(' Cartographer doc-freshness sweep enabled (off-Claude, lease-gated)'));
|
|
7831
|
+
}
|
|
7832
|
+
}
|
|
7833
|
+
}
|
|
7834
|
+
void cartographerSweepPoller;
|
|
7766
7835
|
// Self-Knowledge Tree — tree-based agent self-knowledge with LLM triage
|
|
7767
7836
|
let selfKnowledgeTree;
|
|
7768
7837
|
let coverageAuditor;
|
|
@@ -9749,7 +9818,8 @@ export async function startServer(options) {
|
|
|
9749
9818
|
// for v1 (advisory; spawn-denial-primary is a tracked follow-up) — and note
|
|
9750
9819
|
// an over-eager tier can only reap a GENUINELY-idle session sooner, never a
|
|
9751
9820
|
// working one (the classifier protects working sessions regardless of tier).
|
|
9752
|
-
const { SessionReaper,
|
|
9821
|
+
const { SessionReaper, reaperAuditSink } = await import('../monitoring/SessionReaper.js');
|
|
9822
|
+
const { sampleHostPressure } = await import('../monitoring/HostPressureSampler.js');
|
|
9753
9823
|
const _os = await import('node:os');
|
|
9754
9824
|
const _resolveTopic = (tmuxSession) => {
|
|
9755
9825
|
const t = telegram?.getTopicForSession(tmuxSession);
|
|
@@ -9848,15 +9918,12 @@ export async function startServer(options) {
|
|
|
9848
9918
|
catch { /* @silent-fallback-ok — best-effort; clock resets next restart on failure */ }
|
|
9849
9919
|
},
|
|
9850
9920
|
pressure: () => {
|
|
9851
|
-
|
|
9852
|
-
|
|
9853
|
-
//
|
|
9854
|
-
//
|
|
9855
|
-
// pressure even when free memory is fine. cores unknown ⇒ memory-only.
|
|
9856
|
-
const cores = _os.cpus()?.length ?? 0;
|
|
9857
|
-
const loadPerCore = cores > 0 ? _os.loadavg()[0] / cores : null;
|
|
9921
|
+
// Behavior-preserving: the host CPU+memory pressure computation lives in
|
|
9922
|
+
// the shared HostPressureSampler (so the SessionReaper and the
|
|
9923
|
+
// CartographerSweepPoller read ONE definition of host pressure and cannot
|
|
9924
|
+
// drift). Identical math to the prior inline code; same reaper thresholds.
|
|
9858
9925
|
const rcfg = config.monitoring?.sessionReaper;
|
|
9859
|
-
return
|
|
9926
|
+
return sampleHostPressure({
|
|
9860
9927
|
cpuModerateLoadPerCore: rcfg?.cpuModerateLoadPerCore ?? 1.0,
|
|
9861
9928
|
cpuCriticalLoadPerCore: rcfg?.cpuCriticalLoadPerCore ?? 1.5,
|
|
9862
9929
|
});
|