instar 1.3.762 → 1.3.764
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 +92 -1
- 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/FileClassifier.d.ts.map +1 -1
- package/dist/core/FileClassifier.js +5 -0
- package/dist/core/FileClassifier.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts +12 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +61 -2
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/WriteDomainRegistry.d.ts.map +1 -1
- package/dist/core/WriteDomainRegistry.js +16 -0
- package/dist/core/WriteDomainRegistry.js.map +1 -1
- package/dist/core/componentCategories.d.ts.map +1 -1
- package/dist/core/componentCategories.js +1 -0
- package/dist/core/componentCategories.js.map +1 -1
- package/dist/core/devGatedFeatures.d.ts.map +1 -1
- package/dist/core/devGatedFeatures.js +6 -0
- package/dist/core/devGatedFeatures.js.map +1 -1
- package/dist/core/types.d.ts +50 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/data/llmBenchCoverage.d.ts.map +1 -1
- package/dist/data/llmBenchCoverage.js +18 -0
- package/dist/data/llmBenchCoverage.js.map +1 -1
- package/dist/monitoring/ExternalHogArmMarker.d.ts +65 -0
- package/dist/monitoring/ExternalHogArmMarker.d.ts.map +1 -0
- package/dist/monitoring/ExternalHogArmMarker.js +0 -0
- package/dist/monitoring/ExternalHogArmMarker.js.map +1 -0
- package/dist/monitoring/ExternalHogArmStore.d.ts +46 -0
- package/dist/monitoring/ExternalHogArmStore.d.ts.map +1 -0
- package/dist/monitoring/ExternalHogArmStore.js +124 -0
- package/dist/monitoring/ExternalHogArmStore.js.map +1 -0
- package/dist/monitoring/ExternalHogClassifier.d.ts +62 -0
- package/dist/monitoring/ExternalHogClassifier.d.ts.map +1 -0
- package/dist/monitoring/ExternalHogClassifier.js +0 -0
- package/dist/monitoring/ExternalHogClassifier.js.map +1 -0
- package/dist/monitoring/ExternalHogClassifierPrompt.d.ts +29 -0
- package/dist/monitoring/ExternalHogClassifierPrompt.d.ts.map +1 -0
- package/dist/monitoring/ExternalHogClassifierPrompt.js +70 -0
- package/dist/monitoring/ExternalHogClassifierPrompt.js.map +1 -0
- package/dist/monitoring/ExternalHogCpuDelta.d.ts +50 -0
- package/dist/monitoring/ExternalHogCpuDelta.d.ts.map +1 -0
- package/dist/monitoring/ExternalHogCpuDelta.js +79 -0
- package/dist/monitoring/ExternalHogCpuDelta.js.map +1 -0
- package/dist/monitoring/ExternalHogFactBuilder.d.ts +71 -0
- package/dist/monitoring/ExternalHogFactBuilder.d.ts.map +1 -0
- package/dist/monitoring/ExternalHogFactBuilder.js +111 -0
- package/dist/monitoring/ExternalHogFactBuilder.js.map +1 -0
- package/dist/monitoring/ExternalHogFloor.d.ts +87 -0
- package/dist/monitoring/ExternalHogFloor.d.ts.map +1 -0
- package/dist/monitoring/ExternalHogFloor.js +123 -0
- package/dist/monitoring/ExternalHogFloor.js.map +1 -0
- package/dist/monitoring/ExternalHogGuardStatus.d.ts +29 -0
- package/dist/monitoring/ExternalHogGuardStatus.d.ts.map +1 -0
- package/dist/monitoring/ExternalHogGuardStatus.js +27 -0
- package/dist/monitoring/ExternalHogGuardStatus.js.map +1 -0
- package/dist/monitoring/ExternalHogKillFunnel.d.ts +77 -0
- package/dist/monitoring/ExternalHogKillFunnel.d.ts.map +1 -0
- package/dist/monitoring/ExternalHogKillFunnel.js +72 -0
- package/dist/monitoring/ExternalHogKillFunnel.js.map +1 -0
- package/dist/monitoring/ExternalHogKillLedger.d.ts +76 -0
- package/dist/monitoring/ExternalHogKillLedger.d.ts.map +1 -0
- package/dist/monitoring/ExternalHogKillLedger.js +84 -0
- package/dist/monitoring/ExternalHogKillLedger.js.map +1 -0
- package/dist/monitoring/ExternalHogNoticeCoalescer.d.ts +46 -0
- package/dist/monitoring/ExternalHogNoticeCoalescer.d.ts.map +1 -0
- package/dist/monitoring/ExternalHogNoticeCoalescer.js +67 -0
- package/dist/monitoring/ExternalHogNoticeCoalescer.js.map +1 -0
- package/dist/monitoring/ExternalHogOwnership.d.ts +48 -0
- package/dist/monitoring/ExternalHogOwnership.d.ts.map +1 -0
- package/dist/monitoring/ExternalHogOwnership.js +60 -0
- package/dist/monitoring/ExternalHogOwnership.js.map +1 -0
- package/dist/monitoring/ExternalHogProcTable.d.ts +37 -0
- package/dist/monitoring/ExternalHogProcTable.d.ts.map +1 -0
- package/dist/monitoring/ExternalHogProcTable.js +65 -0
- package/dist/monitoring/ExternalHogProcTable.js.map +1 -0
- package/dist/monitoring/ExternalHogRealAdapters.d.ts +91 -0
- package/dist/monitoring/ExternalHogRealAdapters.d.ts.map +1 -0
- package/dist/monitoring/ExternalHogRealAdapters.js +247 -0
- package/dist/monitoring/ExternalHogRealAdapters.js.map +1 -0
- package/dist/monitoring/ExternalHogSampler.d.ts +62 -0
- package/dist/monitoring/ExternalHogSampler.d.ts.map +1 -0
- package/dist/monitoring/ExternalHogSampler.js +0 -0
- package/dist/monitoring/ExternalHogSampler.js.map +1 -0
- package/dist/monitoring/ExternalHogScanTick.d.ts +89 -0
- package/dist/monitoring/ExternalHogScanTick.d.ts.map +1 -0
- package/dist/monitoring/ExternalHogScanTick.js +126 -0
- package/dist/monitoring/ExternalHogScanTick.js.map +1 -0
- package/dist/monitoring/ExternalHogSentinel.d.ts +127 -0
- package/dist/monitoring/ExternalHogSentinel.d.ts.map +1 -0
- package/dist/monitoring/ExternalHogSentinel.js +168 -0
- package/dist/monitoring/ExternalHogSentinel.js.map +1 -0
- package/dist/monitoring/ExternalHogServerPrimitives.d.ts +50 -0
- package/dist/monitoring/ExternalHogServerPrimitives.d.ts.map +1 -0
- package/dist/monitoring/ExternalHogServerPrimitives.js +93 -0
- package/dist/monitoring/ExternalHogServerPrimitives.js.map +1 -0
- package/dist/monitoring/ExternalHogSustained.d.ts +49 -0
- package/dist/monitoring/ExternalHogSustained.d.ts.map +1 -0
- package/dist/monitoring/ExternalHogSustained.js +62 -0
- package/dist/monitoring/ExternalHogSustained.js.map +1 -0
- package/dist/monitoring/guardManifest.d.ts.map +1 -1
- package/dist/monitoring/guardManifest.js +24 -0
- package/dist/monitoring/guardManifest.js.map +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +3 -2
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/AgentServer.d.ts +3 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +1 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/CapabilityIndex.d.ts.map +1 -1
- package/dist/server/CapabilityIndex.js +1 -0
- package/dist/server/CapabilityIndex.js.map +1 -1
- package/dist/server/routes.d.ts +3 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +79 -5
- package/dist/server/routes.js.map +1 -1
- package/dist/testing/selfActionRegistry.d.ts.map +1 -1
- package/dist/testing/selfActionRegistry.js +51 -0
- package/dist/testing/selfActionRegistry.js.map +1 -1
- package/package.json +1 -1
- package/scripts/lint-scrape-fixture-realness.js +14 -0
- package/src/data/builtin-manifest.json +64 -64
- package/src/data/llmBenchCoverage.ts +18 -0
- package/src/scaffold/templates.ts +3 -2
- package/upgrades/1.3.763.md +23 -0
- package/upgrades/1.3.764.md +45 -0
- package/upgrades/side-effects/actionclaim-config-shape-fix.eli16.md +50 -0
- package/upgrades/side-effects/actionclaim-config-shape-fix.md +149 -0
- package/upgrades/side-effects/external-hog-sentinel.md +832 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAuDH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAU3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAyBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AA6H7D,OAAO,KAAK,EAAW,oBAAoB,EAAe,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAgFtD;;;;;;;;;;;;;;;;;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;AAgmDD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,oBAAoB,GAAG,IAAI,GACxC;IACD,YAAY,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,CAqBA;AAED,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,EAQrD,oBAAoB,CAAC,EAAE,MAAM;IAC3B,YAAY,EAAE,OAAO,kBAAkB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,GACP,IAAI,CAonBN;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;AAuDH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAU3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAyBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AA6H7D,OAAO,KAAK,EAAW,oBAAoB,EAAe,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAgFtD;;;;;;;;;;;;;;;;;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;AAgmDD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,oBAAoB,GAAG,IAAI,GACxC;IACD,YAAY,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,CAqBA;AAED,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,EAQrD,oBAAoB,CAAC,EAAE,MAAM;IAC3B,YAAY,EAAE,OAAO,kBAAkB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACrE,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,IAAI,GACP,IAAI,CAonBN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA05lBtE;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
|
@@ -16314,6 +16314,97 @@ export async function startServer(options) {
|
|
|
16314
16314
|
? ' AgentWorktreeReaper enabled (stale-worktree reclaim — LIVE)'
|
|
16315
16315
|
: ' AgentWorktreeReaper enabled (stale-worktree reclaim — dry-run, report only)'));
|
|
16316
16316
|
}
|
|
16317
|
+
// ── ExternalHogSentinel (external-hog zombie auto-kill sentinel, CMT-1901) ──
|
|
16318
|
+
// Surfaces sustained EXTERNAL CPU hogs (broad observability) and auto-kills exactly
|
|
16319
|
+
// one narrow class — orphaned Electron editor extension-host wrappers — WITHIN a
|
|
16320
|
+
// mechanical veto-only floor + an intelligence kill/leave/alert verdict (a kill fires
|
|
16321
|
+
// iff floor_pass && classifier==='kill'). developmentAgent dark-feature gate: LIVE
|
|
16322
|
+
// (watch-only dryRun) on a dev agent, DARK on the fleet. A REAL kill needs a deliberate
|
|
16323
|
+
// PIN-gated arm (POST /external-hog/arm). GET /external-hog. Construction is guarded so a
|
|
16324
|
+
// failure disables the feature this boot rather than crashing the server.
|
|
16325
|
+
const _externalHogEnabled = resolveDevAgentGate(config.monitoring?.externalHogSentinel?.enabled, config);
|
|
16326
|
+
let externalHogSentinel;
|
|
16327
|
+
try {
|
|
16328
|
+
const ehCfg = config.monitoring?.externalHogSentinel ?? {};
|
|
16329
|
+
const ehNum = (v, d) => (typeof v === 'number' && Number.isFinite(v) ? v : d);
|
|
16330
|
+
const { createExternalHogServerPrimitives } = await import('../monitoring/ExternalHogServerPrimitives.js');
|
|
16331
|
+
const { createExternalHogAdapters } = await import('../monitoring/ExternalHogRealAdapters.js');
|
|
16332
|
+
const { ExternalHogSentinel } = await import('../monitoring/ExternalHogSentinel.js');
|
|
16333
|
+
// Positive-clamp the interval-critical knobs so a garbage config (0/negative/huge-but-finite,
|
|
16334
|
+
// which ehNum passes through) can never hot-loop the tick or widen candidacy to everything
|
|
16335
|
+
// (Phase-5 reviewer nit D — dev-only robustness; the kill gate is unaffected either way).
|
|
16336
|
+
const ehScanIntervalMs = Math.max(1_000, ehNum(ehCfg.scanIntervalMs, 60_000));
|
|
16337
|
+
const ehSampleWindowMs = Math.max(1_000, ehNum(ehCfg.sampleWindowMs, 30_000));
|
|
16338
|
+
const ehCpuCoreThreshold = Math.max(0.1, ehNum(ehCfg.cpuCoreThreshold, 1.5));
|
|
16339
|
+
const ehSustainedSampleCount = Math.max(1, ehNum(ehCfg.sustainedSampleCount, 3));
|
|
16340
|
+
const ehEuid = process.geteuid?.() ?? -1;
|
|
16341
|
+
const ehPrims = createExternalHogServerPrimitives({
|
|
16342
|
+
exec: async (cmd, args) => (await execFileAsync(cmd, [...args], { timeout: 15_000, maxBuffer: 8 * 1024 * 1024 })).stdout,
|
|
16343
|
+
signal: (pid, sig) => { try {
|
|
16344
|
+
process.kill(pid, sig === 0 ? 0 : sig);
|
|
16345
|
+
return true;
|
|
16346
|
+
}
|
|
16347
|
+
catch {
|
|
16348
|
+
return false;
|
|
16349
|
+
} }, // @silent-fallback-ok: `false` IS the signal primitive's contract (pid gone / EPERM → delivery failed); the kill funnel consumes the boolean and surfaces every outcome
|
|
16350
|
+
evaluate: (prompt) => (sharedIntelligence
|
|
16351
|
+
? sharedIntelligence.evaluate(prompt, { model: 'fast', attribution: { component: 'ExternalHogClassifier' } })
|
|
16352
|
+
: Promise.reject(new Error('no intelligence provider'))),
|
|
16353
|
+
raiseAttention: (item) => telegram?.createAttentionItem({
|
|
16354
|
+
id: 'agent:external-hog',
|
|
16355
|
+
title: item.title,
|
|
16356
|
+
summary: item.body.slice(0, 160),
|
|
16357
|
+
description: item.body,
|
|
16358
|
+
category: 'external-hog-sentinel',
|
|
16359
|
+
priority: item.priority === 'high' ? 'HIGH' : item.priority === 'low' ? 'LOW' : 'NORMAL',
|
|
16360
|
+
sourceContext: 'external-hog-sentinel',
|
|
16361
|
+
}),
|
|
16362
|
+
config: () => ({ enabled: _externalHogEnabled, dryRun: ehCfg.dryRun !== false }),
|
|
16363
|
+
stateDir: config.stateDir,
|
|
16364
|
+
ownEuid: ehEuid,
|
|
16365
|
+
serverPid: process.pid,
|
|
16366
|
+
sleep: (ms) => new Promise((res) => setTimeout(res, Math.max(0, ms))),
|
|
16367
|
+
});
|
|
16368
|
+
const ehAdapters = createExternalHogAdapters(ehPrims, {
|
|
16369
|
+
cpuCoreThreshold: ehCpuCoreThreshold,
|
|
16370
|
+
maxAncestorHops: 30,
|
|
16371
|
+
killTimeCpuRecheckWindowMs: ehNum(ehCfg.killTimeCpuRecheckWindowMs, 2_500),
|
|
16372
|
+
killTimeCpuCoreThreshold: 0.5,
|
|
16373
|
+
homeDir: os.homedir(),
|
|
16374
|
+
});
|
|
16375
|
+
externalHogSentinel = new ExternalHogSentinel(ehAdapters, {
|
|
16376
|
+
sampler: { ownEuid: ehEuid, cpuCoreThreshold: ehCpuCoreThreshold, sampleWindowMs: ehSampleWindowMs, maxAncestorHops: 30 },
|
|
16377
|
+
sustainedSampleCount: ehSustainedSampleCount,
|
|
16378
|
+
maxClassificationsPerScan: ehNum(ehCfg.maxClassificationsPerScan, 4),
|
|
16379
|
+
breaker: { windowMs: 3_600_000, maxPerWindow: ehNum(ehCfg.killLedgerMaxPerSignaturePerHour, 3), keyIsVolatile: false },
|
|
16380
|
+
killFunnel: { sigtermGraceMs: ehNum(ehCfg.sigtermGraceMs, 12_000), maxKillDeferrals: ehNum(ehCfg.maxKillDeferrals, 3) },
|
|
16381
|
+
noticeBudgetPerWindow: ehNum(ehCfg.noticeBudgetPerWindow, 4),
|
|
16382
|
+
killLedgerRetentionMs: 3_600_000,
|
|
16383
|
+
samplerDeadThresholdMs: Math.max(2 * ehScanIntervalMs, ehSustainedSampleCount * ehSampleWindowMs),
|
|
16384
|
+
});
|
|
16385
|
+
// Register the /guards runtime getter regardless of enabled (so posture reports honestly).
|
|
16386
|
+
guardRegistry.register('monitoring.externalHogSentinel.enabled', () => externalHogSentinel.guardRuntimeStatus());
|
|
16387
|
+
if (_externalHogEnabled) {
|
|
16388
|
+
const ehRef = externalHogSentinel;
|
|
16389
|
+
const ehTimer = setInterval(() => {
|
|
16390
|
+
void ehRef.tick().catch((e) => console.error('[external-hog] tick error:', e instanceof Error ? e.message : String(e))); // @silent-fallback-ok: NOT silent — every tick error is logged; an interval callback must never throw (it would crash the server for a scan hiccup)
|
|
16391
|
+
}, ehScanIntervalMs);
|
|
16392
|
+
if (typeof ehTimer.unref === 'function')
|
|
16393
|
+
ehTimer.unref();
|
|
16394
|
+
console.log(pc.green(` ExternalHogSentinel enabled (external-hog zombie auto-kill — ${ehCfg.dryRun === false ? 'config live; needs PIN arm to kill' : 'watch-only dryRun'})`));
|
|
16395
|
+
}
|
|
16396
|
+
}
|
|
16397
|
+
catch (err) {
|
|
16398
|
+
console.error('[external-hog] construction failed (feature disabled this boot):', err instanceof Error ? err.message : String(err));
|
|
16399
|
+
externalHogSentinel = undefined;
|
|
16400
|
+
DegradationReporter.getInstance().report({
|
|
16401
|
+
feature: 'ExternalHogSentinel',
|
|
16402
|
+
primary: 'external-hog zombie sentinel scanning on a schedule',
|
|
16403
|
+
fallback: 'sentinel disabled for this boot (no scanning, no alerts, no kills)',
|
|
16404
|
+
reason: `construction failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
16405
|
+
impact: 'Outside-process CPU hogs go unnoticed until the next successful boot — the exact blindness the sentinel exists to close.',
|
|
16406
|
+
});
|
|
16407
|
+
}
|
|
16317
16408
|
// ── OrphanedWorkSentinel (the silent-uncommitted-death backstop) ──────────
|
|
16318
16409
|
// Detects agent worktrees with uncommitted work whose owning session is dead
|
|
16319
16410
|
// + settled, records them durably, and raises ONE deduped agent-health notice
|
|
@@ -20973,7 +21064,7 @@ export async function startServer(options) {
|
|
|
20973
21064
|
const server = new AgentServer({ config, sessionManager, state, scheduler, telegram, relationships, feedback, feedbackAnomalyDetector, dispatches, updateChecker, autoUpdater, autoDispatcher, quotaTracker, quotaManager, publisher, viewer, tunnel, evolution, watchdog, topicMemory, triageNurse, projectMapper, cartographer: cartographer ?? undefined, coherenceGate: scopeVerifier, contextHierarchy, canonicalState, operationGate, sentinel, adaptiveTrust, memoryMonitor, orphanReaper, coherenceMonitor, commitmentTracker, subscriptionPool, accountFollowMePeerViews: async () => { const nickById = new Map((_listPoolMachines?.() ?? []).map((m) => [m.machineId, m.nickname ?? m.machineId])); let peers = (_resolvePeerUrls?.() ?? []).map((p) => ({ machineId: p.machineId, nickname: nickById.get(p.machineId) ?? p.machineId, url: p.url })); if (peers.length === 0) {
|
|
20974
21065
|
peers = (_listPoolMachines?.() ?? []).filter((m) => m.machineId !== _meshSelfId && !!m.lastKnownUrl).map((m) => ({ machineId: m.machineId, nickname: m.nickname ?? m.machineId, url: m.lastKnownUrl }));
|
|
20975
21066
|
} if (peers.length === 0)
|
|
20976
|
-
return []; const { fetchPeerSubscriptionViews } = await import('../core/fetchPeerSubscriptionViews.js'); return fetchPeerSubscriptionViews({ peers: () => peers, fetchImpl: fetch, authToken: config.authToken ?? '' }); }, quotaPoller, quotaAwareScheduler: _quotaAwareScheduler ?? undefined, proactiveSwapMonitor: _proactiveSwapMonitor ?? undefined, inUseAccountResolver, enrollmentWizard, accountFollowMeRevocation, credentialRepointing, semanticMemory, activitySentinel, rateLimitSentinel, releaseReadinessSentinel: releaseReadinessSentinel ?? undefined, greenPrAutoMerger: greenPrAutoMerger ?? undefined, guardLatchStore: guardLatchStore ?? undefined, messageRouter, summarySentinel, spawnManager, systemReviewer, capabilityMapper, selfKnowledgeTree, coverageAuditor, topicResumeMap: _topicResumeMap ?? undefined, topicProfile: _topicProfileCtx ?? undefined, sessionRefresh: _sessionRefresh ?? undefined, autonomyManager, trustElevationTracker, autonomousEvolution, coordinator: coordinator.enabled ? coordinator : undefined, meshBindActive: coordinator.managers.identityManager.hasIdentity() && config.multiMachine?.meshTransport?.enabled !== false, localSigningKeyPem, leaseTransport, peerEndpointRecorder, getSelfMeshEndpoints, onLeasePullRequest: () => leaseCoordinatorRef?.currentLease() ?? null, liveTailReceiver, handoffWireTransport, onHandoffBegin, onHandoffInitiate: handoffInitiate, handoffInProgress: handoffSentinelInProgress, messageLedger, currentInboundByTopic, replyMarkerTransport, onReplyMarker: messageLedger ? (marker) => { const m = marker; messageLedger.applyRemoteReplyMarker(m.dedupeKey, { platform: m.platform, replyIdempotencyKey: m.replyIdempotencyKey, epoch: m.epoch, topic: m.topic ?? null }); } : undefined, whatsapp: whatsappAdapter, slack: slackAdapter, imessage: imessageAdapter, conversationRegistry, conversationBindAuth, conversationFollowThrough, whatsappBusinessBackend, messageBridge, hookEventReceiver, worktreeMonitor, subagentTracker, instructionsVerifier, handshakeManager: threadlineHandshake, threadlineRouter, conversationStore, threadLog, threadMessageRecorder, warrantsReplyGate, collaborationSurfacer, threadResumeMap, topicLinkageHandler: topicLinkageHandler ?? undefined, threadlineRelayClient, threadlineReplyWaiters, listenerManager: listenerManager ?? undefined, a2aDeliveryTracker: a2aDeliveryTracker ?? undefined, responseReviewGate, reviewCanaryBattery, messagingToneGate, outboundDedupGate, telemetryHeartbeat, pasteManager, featureRegistry, discoveryEvaluator, completionEvaluator, unifiedTrust, liveConfig, sharedStateLedger, ledgerSessionRegistry, worktreeManager, oidcEnrolledRepos: parallelDevConfig?.oidcEnrolledRepos, initiativeTracker, projectRoundRunner, projectDriftChecker, machineHeartbeat, machinePoolRegistry, ropeHealthMonitor, writeAdmission: writeAdmission ?? undefined, getInboundQueue: () => _inboundQueue, getMachineCoherence: () => _machineCoherenceSentinel, meshRpcDispatcher, workingSetPullCoordinator, commitmentReplicaStore, preferenceReplicaStore, replicatedRecordEmitter, conflictStore, rollbackUnmerge, droppedOriginRegistry, preferencesUnionReader, forwardCommitmentMutate, sessionOwnershipRegistry, topicPinStore: _topicPinStore ?? undefined, topicPinSkewQuarantine: _topicPinSkewQuarantine ?? undefined, topicPinFoldView: _topicPinFoldView ?? undefined, ownershipReconciler: _ownershipReconciler ?? undefined, staleOwnerEngine: _staleOwnerEngine ?? undefined, leaseHandback: _leaseHandbackCtx ?? undefined, streamTicketStore: _streamTicketStore ?? undefined, poolStreamAllowRemoteInput: config.dashboard?.poolStream?.allowRemoteInput ?? false, poolStreamConnector: _poolStreamConnector ?? undefined, secretSync: _secretSyncHandle ?? undefined, meshSelfId: _meshSelfId ?? undefined, resolveRouterUrl: _resolveRouterUrl ?? undefined, resolvePeerUrls: _resolvePeerUrls ?? undefined, guardRegistry, listPoolMachines: _listPoolMachines ?? undefined, deliverMandateToMachine: _deliverMandateToMachine ?? undefined, poolLink: _poolLink ?? undefined, poolPollCache: _poolPollCache ?? undefined, sessionPoolE2EResultStore, proxyCoordinator, topicIntentStore, topicIntentArcCheck, usherSignalStore, intelligence: sharedIntelligence ?? undefined, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, briefDeps, workingMemory, taskFlowRegistry, threadlineFlowBridge, sessionReaper, agentWorktreeReaper, orphanedWorkSentinel, mcpProcessReaper, geminiLoopRunner, sleepController, agentActivityState, reapLog, resumeQueue, resumeDrainer, autonomousLivenessReconciler, enforcedTerminationStatus: () => enforcedTerminationWatchdog?.guardStatus() ?? null, prHandLease: prHandLease ?? undefined, operatorStopRecorder: recordOperatorStop, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier, liveTestGate, liveTestGateMode, liveTestRunnerCtx }); // Resolve the late-bound topic-operator getter (increment 2e): routing was
|
|
21067
|
+
return []; const { fetchPeerSubscriptionViews } = await import('../core/fetchPeerSubscriptionViews.js'); return fetchPeerSubscriptionViews({ peers: () => peers, fetchImpl: fetch, authToken: config.authToken ?? '' }); }, quotaPoller, quotaAwareScheduler: _quotaAwareScheduler ?? undefined, proactiveSwapMonitor: _proactiveSwapMonitor ?? undefined, inUseAccountResolver, enrollmentWizard, accountFollowMeRevocation, credentialRepointing, semanticMemory, activitySentinel, rateLimitSentinel, releaseReadinessSentinel: releaseReadinessSentinel ?? undefined, greenPrAutoMerger: greenPrAutoMerger ?? undefined, guardLatchStore: guardLatchStore ?? undefined, messageRouter, summarySentinel, spawnManager, systemReviewer, capabilityMapper, selfKnowledgeTree, coverageAuditor, topicResumeMap: _topicResumeMap ?? undefined, topicProfile: _topicProfileCtx ?? undefined, sessionRefresh: _sessionRefresh ?? undefined, autonomyManager, trustElevationTracker, autonomousEvolution, coordinator: coordinator.enabled ? coordinator : undefined, meshBindActive: coordinator.managers.identityManager.hasIdentity() && config.multiMachine?.meshTransport?.enabled !== false, localSigningKeyPem, leaseTransport, peerEndpointRecorder, getSelfMeshEndpoints, onLeasePullRequest: () => leaseCoordinatorRef?.currentLease() ?? null, liveTailReceiver, handoffWireTransport, onHandoffBegin, onHandoffInitiate: handoffInitiate, handoffInProgress: handoffSentinelInProgress, messageLedger, currentInboundByTopic, replyMarkerTransport, onReplyMarker: messageLedger ? (marker) => { const m = marker; messageLedger.applyRemoteReplyMarker(m.dedupeKey, { platform: m.platform, replyIdempotencyKey: m.replyIdempotencyKey, epoch: m.epoch, topic: m.topic ?? null }); } : undefined, whatsapp: whatsappAdapter, slack: slackAdapter, imessage: imessageAdapter, conversationRegistry, conversationBindAuth, conversationFollowThrough, whatsappBusinessBackend, messageBridge, hookEventReceiver, worktreeMonitor, subagentTracker, instructionsVerifier, handshakeManager: threadlineHandshake, threadlineRouter, conversationStore, threadLog, threadMessageRecorder, warrantsReplyGate, collaborationSurfacer, threadResumeMap, topicLinkageHandler: topicLinkageHandler ?? undefined, threadlineRelayClient, threadlineReplyWaiters, listenerManager: listenerManager ?? undefined, a2aDeliveryTracker: a2aDeliveryTracker ?? undefined, responseReviewGate, reviewCanaryBattery, messagingToneGate, outboundDedupGate, telemetryHeartbeat, pasteManager, featureRegistry, discoveryEvaluator, completionEvaluator, unifiedTrust, liveConfig, sharedStateLedger, ledgerSessionRegistry, worktreeManager, oidcEnrolledRepos: parallelDevConfig?.oidcEnrolledRepos, initiativeTracker, projectRoundRunner, projectDriftChecker, machineHeartbeat, machinePoolRegistry, ropeHealthMonitor, writeAdmission: writeAdmission ?? undefined, getInboundQueue: () => _inboundQueue, getMachineCoherence: () => _machineCoherenceSentinel, meshRpcDispatcher, workingSetPullCoordinator, commitmentReplicaStore, preferenceReplicaStore, replicatedRecordEmitter, conflictStore, rollbackUnmerge, droppedOriginRegistry, preferencesUnionReader, forwardCommitmentMutate, sessionOwnershipRegistry, topicPinStore: _topicPinStore ?? undefined, topicPinSkewQuarantine: _topicPinSkewQuarantine ?? undefined, topicPinFoldView: _topicPinFoldView ?? undefined, ownershipReconciler: _ownershipReconciler ?? undefined, staleOwnerEngine: _staleOwnerEngine ?? undefined, leaseHandback: _leaseHandbackCtx ?? undefined, streamTicketStore: _streamTicketStore ?? undefined, poolStreamAllowRemoteInput: config.dashboard?.poolStream?.allowRemoteInput ?? false, poolStreamConnector: _poolStreamConnector ?? undefined, secretSync: _secretSyncHandle ?? undefined, meshSelfId: _meshSelfId ?? undefined, resolveRouterUrl: _resolveRouterUrl ?? undefined, resolvePeerUrls: _resolvePeerUrls ?? undefined, guardRegistry, listPoolMachines: _listPoolMachines ?? undefined, deliverMandateToMachine: _deliverMandateToMachine ?? undefined, poolLink: _poolLink ?? undefined, poolPollCache: _poolPollCache ?? undefined, sessionPoolE2EResultStore, proxyCoordinator, topicIntentStore, topicIntentArcCheck, usherSignalStore, intelligence: sharedIntelligence ?? undefined, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, briefDeps, workingMemory, taskFlowRegistry, threadlineFlowBridge, sessionReaper, agentWorktreeReaper, externalHogSentinel, orphanedWorkSentinel, mcpProcessReaper, geminiLoopRunner, sleepController, agentActivityState, reapLog, resumeQueue, resumeDrainer, autonomousLivenessReconciler, enforcedTerminationStatus: () => enforcedTerminationWatchdog?.guardStatus() ?? null, prHandLease: prHandLease ?? undefined, operatorStopRecorder: recordOperatorStop, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier, liveTestGate, liveTestGateMode, liveTestRunnerCtx }); // Resolve the late-bound topic-operator getter (increment 2e): routing was
|
|
20977
21068
|
// wired before the server existed; from here on inbound binds use the
|
|
20978
21069
|
// server's own store instance.
|
|
20979
21070
|
_agentServerRef = server;
|