instar 1.3.231 → 1.3.232
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 +29 -1
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +16 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/types.d.ts +16 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/monitoring/McpProcessReaper.d.ts +135 -0
- package/dist/monitoring/McpProcessReaper.d.ts.map +1 -0
- package/dist/monitoring/McpProcessReaper.js +229 -0
- package/dist/monitoring/McpProcessReaper.js.map +1 -0
- package/dist/monitoring/mcpProcessReaperDeps.d.ts +22 -0
- package/dist/monitoring/mcpProcessReaperDeps.d.ts.map +1 -0
- package/dist/monitoring/mcpProcessReaperDeps.js +125 -0
- package/dist/monitoring/mcpProcessReaperDeps.js.map +1 -0
- package/dist/monitoring/mcpProcessSignatures.d.ts +38 -0
- package/dist/monitoring/mcpProcessSignatures.d.ts.map +1 -0
- package/dist/monitoring/mcpProcessSignatures.js +55 -0
- package/dist/monitoring/mcpProcessSignatures.js.map +1 -0
- 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 +13 -0
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +47 -47
- package/upgrades/1.3.232.md +47 -0
- package/upgrades/side-effects/mcp-process-reaper.md +58 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA0SH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA+wDD,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;AA0SH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA+wDD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAwgQtE;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
|
@@ -8416,6 +8416,34 @@ export async function startServer(options) {
|
|
|
8416
8416
|
? ' AgentWorktreeReaper enabled (stale-worktree reclaim — LIVE)'
|
|
8417
8417
|
: ' AgentWorktreeReaper enabled (stale-worktree reclaim — dry-run, report only)'));
|
|
8418
8418
|
}
|
|
8419
|
+
// ── McpProcessReaper (RESPONSIBLE-RESOURCE-USAGE — MCP-leak fix, Option B) ──
|
|
8420
|
+
// Reaps leaked MCP-server children (playwright-mcp / mcp-remote / instar
|
|
8421
|
+
// stdio) whose owning session is dead/stale or fully orphaned. Killing a
|
|
8422
|
+
// session's main pid doesn't cascade to MCP children, so they re-parent and
|
|
8423
|
+
// accumulate for days. Ships OFF + dry-run fleet-wide; the developmentAgent
|
|
8424
|
+
// gate ENABLES it (still dry-run) on dev agents (echo) so it observes +
|
|
8425
|
+
// audits would-reap WITHOUT killing until dryRun is explicitly turned off.
|
|
8426
|
+
// Observability at GET /processes/mcp-reaper.
|
|
8427
|
+
const { McpProcessReaper } = await import('../monitoring/McpProcessReaper.js');
|
|
8428
|
+
const { makeMcpProcessReaperDeps } = await import('../monitoring/mcpProcessReaperDeps.js');
|
|
8429
|
+
const _mcpReaperCfg = (() => {
|
|
8430
|
+
const mcfg = config.monitoring?.mcpProcessReaper;
|
|
8431
|
+
// developmentAgent gate: `enabled` defaults ON for dev agents (dark fleet-
|
|
8432
|
+
// wide); an explicit config value always wins. `dryRun` is untouched (stays
|
|
8433
|
+
// true by default) so a dev agent only observes — never kills.
|
|
8434
|
+
return { ...(mcfg ?? {}), enabled: mcfg?.enabled ?? !!config.developmentAgent };
|
|
8435
|
+
})();
|
|
8436
|
+
const mcpProcessReaper = new McpProcessReaper(makeMcpProcessReaperDeps({
|
|
8437
|
+
sessionManager,
|
|
8438
|
+
tmuxPath: config.sessions.tmuxPath,
|
|
8439
|
+
auditPath: path.join(config.stateDir, '..', 'logs', 'mcp-reaper-audit.jsonl'),
|
|
8440
|
+
}), _mcpReaperCfg);
|
|
8441
|
+
mcpProcessReaper.start();
|
|
8442
|
+
if (_mcpReaperCfg.enabled) {
|
|
8443
|
+
console.log(pc.green(_mcpReaperCfg.dryRun === false
|
|
8444
|
+
? ' McpProcessReaper enabled (leaked-MCP reclaim — LIVE)'
|
|
8445
|
+
: ' McpProcessReaper enabled (leaked-MCP reclaim — dry-run, report only)'));
|
|
8446
|
+
}
|
|
8419
8447
|
// ── Agent hard-sleep — SleepController (RESPONSIBLE-RESOURCE-USAGE, Stage B) ──
|
|
8420
8448
|
// Decides "is it safe for this idle agent to drop to near-zero footprint?" with
|
|
8421
8449
|
// every safety guard. Ships OFF + dry-run: observes + audits to
|
|
@@ -9186,7 +9214,7 @@ export async function startServer(options) {
|
|
|
9186
9214
|
catch (err) {
|
|
9187
9215
|
console.log(pc.dim(` [session-pool] rollout gate not wired: ${err instanceof Error ? err.message : String(err)}`));
|
|
9188
9216
|
}
|
|
9189
|
-
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, coherenceGate: scopeVerifier, contextHierarchy, canonicalState, operationGate, sentinel, adaptiveTrust, memoryMonitor, orphanReaper, coherenceMonitor, commitmentTracker, semanticMemory, activitySentinel, rateLimitSentinel, releaseReadinessSentinel: releaseReadinessSentinel ?? undefined, messageRouter, summarySentinel, spawnManager, systemReviewer, capabilityMapper, selfKnowledgeTree, coverageAuditor, topicResumeMap: _topicResumeMap ?? undefined, sessionRefresh: _sessionRefresh ?? undefined, autonomyManager, trustElevationTracker, autonomousEvolution, coordinator: coordinator.enabled ? coordinator : undefined, localSigningKeyPem, leaseTransport, 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, whatsappBusinessBackend, messageBridge, hookEventReceiver, worktreeMonitor, subagentTracker, instructionsVerifier, handshakeManager: threadlineHandshake, threadlineRouter, conversationStore, warrantsReplyGate, collaborationSurfacer, threadResumeMap, topicLinkageHandler: topicLinkageHandler ?? undefined, threadlineRelayClient, threadlineReplyWaiters, listenerManager: listenerManager ?? undefined, responseReviewGate, messagingToneGate, outboundDedupGate, telemetryHeartbeat, pasteManager, featureRegistry, discoveryEvaluator, completionEvaluator, unifiedTrust, liveConfig, sharedStateLedger, ledgerSessionRegistry, worktreeManager, oidcEnrolledRepos: parallelDevConfig?.oidcEnrolledRepos, initiativeTracker, projectRoundRunner, projectDriftChecker, machineHeartbeat, machinePoolRegistry, meshRpcDispatcher, sessionOwnershipRegistry, sessionPoolE2EResultStore, proxyCoordinator, topicIntentStore, topicIntentArcCheck, usherSignalStore, intelligence: sharedIntelligence ?? undefined, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, briefDeps, workingMemory, taskFlowRegistry, threadlineFlowBridge, sessionReaper, agentWorktreeReaper, sleepController, agentActivityState, reapLog, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier });
|
|
9217
|
+
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, coherenceGate: scopeVerifier, contextHierarchy, canonicalState, operationGate, sentinel, adaptiveTrust, memoryMonitor, orphanReaper, coherenceMonitor, commitmentTracker, semanticMemory, activitySentinel, rateLimitSentinel, releaseReadinessSentinel: releaseReadinessSentinel ?? undefined, messageRouter, summarySentinel, spawnManager, systemReviewer, capabilityMapper, selfKnowledgeTree, coverageAuditor, topicResumeMap: _topicResumeMap ?? undefined, sessionRefresh: _sessionRefresh ?? undefined, autonomyManager, trustElevationTracker, autonomousEvolution, coordinator: coordinator.enabled ? coordinator : undefined, localSigningKeyPem, leaseTransport, 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, whatsappBusinessBackend, messageBridge, hookEventReceiver, worktreeMonitor, subagentTracker, instructionsVerifier, handshakeManager: threadlineHandshake, threadlineRouter, conversationStore, warrantsReplyGate, collaborationSurfacer, threadResumeMap, topicLinkageHandler: topicLinkageHandler ?? undefined, threadlineRelayClient, threadlineReplyWaiters, listenerManager: listenerManager ?? undefined, responseReviewGate, messagingToneGate, outboundDedupGate, telemetryHeartbeat, pasteManager, featureRegistry, discoveryEvaluator, completionEvaluator, unifiedTrust, liveConfig, sharedStateLedger, ledgerSessionRegistry, worktreeManager, oidcEnrolledRepos: parallelDevConfig?.oidcEnrolledRepos, initiativeTracker, projectRoundRunner, projectDriftChecker, machineHeartbeat, machinePoolRegistry, meshRpcDispatcher, sessionOwnershipRegistry, sessionPoolE2EResultStore, proxyCoordinator, topicIntentStore, topicIntentArcCheck, usherSignalStore, intelligence: sharedIntelligence ?? undefined, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, briefDeps, workingMemory, taskFlowRegistry, threadlineFlowBridge, sessionReaper, agentWorktreeReaper, mcpProcessReaper, sleepController, agentActivityState, reapLog, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier });
|
|
9190
9218
|
// Boot-recovery (tunnel-failure-resilience spec Part 6): if the agent
|
|
9191
9219
|
// died mid-relay-episode, the persisted tunnel.json carries
|
|
9192
9220
|
// rotationPending=true. Rotate the dashboard PIN + authToken BEFORE
|