instar 1.3.230 → 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.
Files changed (54) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +29 -1
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  5. package/dist/config/ConfigDefaults.js +24 -0
  6. package/dist/config/ConfigDefaults.js.map +1 -1
  7. package/dist/core/LlmCircuitBreaker.d.ts +15 -0
  8. package/dist/core/LlmCircuitBreaker.d.ts.map +1 -1
  9. package/dist/core/LlmCircuitBreaker.js +37 -1
  10. package/dist/core/LlmCircuitBreaker.js.map +1 -1
  11. package/dist/core/types.d.ts +16 -0
  12. package/dist/core/types.d.ts.map +1 -1
  13. package/dist/core/types.js.map +1 -1
  14. package/dist/monitoring/McpProcessReaper.d.ts +135 -0
  15. package/dist/monitoring/McpProcessReaper.d.ts.map +1 -0
  16. package/dist/monitoring/McpProcessReaper.js +229 -0
  17. package/dist/monitoring/McpProcessReaper.js.map +1 -0
  18. package/dist/monitoring/ResourceLedger.d.ts +78 -0
  19. package/dist/monitoring/ResourceLedger.d.ts.map +1 -0
  20. package/dist/monitoring/ResourceLedger.js +163 -0
  21. package/dist/monitoring/ResourceLedger.js.map +1 -0
  22. package/dist/monitoring/ResourceLedgerPoller.d.ts +64 -0
  23. package/dist/monitoring/ResourceLedgerPoller.d.ts.map +1 -0
  24. package/dist/monitoring/ResourceLedgerPoller.js +83 -0
  25. package/dist/monitoring/ResourceLedgerPoller.js.map +1 -0
  26. package/dist/monitoring/mcpProcessReaperDeps.d.ts +22 -0
  27. package/dist/monitoring/mcpProcessReaperDeps.d.ts.map +1 -0
  28. package/dist/monitoring/mcpProcessReaperDeps.js +125 -0
  29. package/dist/monitoring/mcpProcessReaperDeps.js.map +1 -0
  30. package/dist/monitoring/mcpProcessSignatures.d.ts +38 -0
  31. package/dist/monitoring/mcpProcessSignatures.d.ts.map +1 -0
  32. package/dist/monitoring/mcpProcessSignatures.js +55 -0
  33. package/dist/monitoring/mcpProcessSignatures.js.map +1 -0
  34. package/dist/scaffold/templates.d.ts.map +1 -1
  35. package/dist/scaffold/templates.js +5 -0
  36. package/dist/scaffold/templates.js.map +1 -1
  37. package/dist/server/AgentServer.d.ts +5 -0
  38. package/dist/server/AgentServer.d.ts.map +1 -1
  39. package/dist/server/AgentServer.js +50 -0
  40. package/dist/server/AgentServer.js.map +1 -1
  41. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  42. package/dist/server/CapabilityIndex.js +12 -0
  43. package/dist/server/CapabilityIndex.js.map +1 -1
  44. package/dist/server/routes.d.ts +4 -0
  45. package/dist/server/routes.d.ts.map +1 -1
  46. package/dist/server/routes.js +31 -0
  47. package/dist/server/routes.js.map +1 -1
  48. package/package.json +1 -1
  49. package/src/data/builtin-manifest.json +47 -47
  50. package/src/scaffold/templates.ts +5 -0
  51. package/upgrades/1.3.231.md +39 -0
  52. package/upgrades/1.3.232.md +47 -0
  53. package/upgrades/side-effects/mcp-process-reaper.md +58 -0
  54. package/upgrades/side-effects/resource-ledger-phase-a.md +101 -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,CAs+PtE;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"}
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"}
@@ -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