instar 1.3.140 → 1.3.142

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 (33) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +47 -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 +14 -0
  6. package/dist/config/ConfigDefaults.js.map +1 -1
  7. package/dist/core/types.d.ts +15 -0
  8. package/dist/core/types.d.ts.map +1 -1
  9. package/dist/core/types.js.map +1 -1
  10. package/dist/monitoring/AgentActivityState.d.ts +25 -0
  11. package/dist/monitoring/AgentActivityState.d.ts.map +1 -0
  12. package/dist/monitoring/AgentActivityState.js +17 -0
  13. package/dist/monitoring/AgentActivityState.js.map +1 -0
  14. package/dist/monitoring/SleepController.d.ts +103 -0
  15. package/dist/monitoring/SleepController.d.ts.map +1 -0
  16. package/dist/monitoring/SleepController.js +178 -0
  17. package/dist/monitoring/SleepController.js.map +1 -0
  18. package/dist/server/AgentServer.d.ts +4 -0
  19. package/dist/server/AgentServer.d.ts.map +1 -1
  20. package/dist/server/AgentServer.js +2 -0
  21. package/dist/server/AgentServer.js.map +1 -1
  22. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  23. package/dist/server/CapabilityIndex.js +1 -0
  24. package/dist/server/CapabilityIndex.js.map +1 -1
  25. package/dist/server/routes.d.ts +4 -0
  26. package/dist/server/routes.d.ts.map +1 -1
  27. package/dist/server/routes.js +17 -0
  28. package/dist/server/routes.js.map +1 -1
  29. package/package.json +1 -1
  30. package/src/data/builtin-manifest.json +47 -47
  31. package/upgrades/1.3.141.md +52 -0
  32. package/upgrades/1.3.142.md +39 -0
  33. package/upgrades/side-effects/agent-hard-sleep-controller.md +101 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAoSH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAwvDD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAisPtE;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;AAoSH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAwvDD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAqvPtE;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"}
@@ -8276,6 +8276,52 @@ export async function startServer(options) {
8276
8276
  ? ' AgentWorktreeReaper enabled (stale-worktree reclaim — LIVE)'
8277
8277
  : ' AgentWorktreeReaper enabled (stale-worktree reclaim — dry-run, report only)'));
8278
8278
  }
8279
+ // ── Agent hard-sleep — SleepController (RESPONSIBLE-RESOURCE-USAGE, Stage B) ──
8280
+ // Decides "is it safe for this idle agent to drop to near-zero footprint?" with
8281
+ // every safety guard. Ships OFF + dry-run: observes + audits to
8282
+ // logs/agent-sleep-events.jsonl, never stops a server. The mechanism
8283
+ // (supervisor stop + lifeline respawn) is a later slice. GET /sleep exposes the
8284
+ // live verdict. The shared idle signal (AgentActivityState) is bumped at the
8285
+ // inbound-message chokepoint (/internal/telegram-forward).
8286
+ const { AgentActivityState } = await import('../monitoring/AgentActivityState.js');
8287
+ const agentActivityState = new AgentActivityState();
8288
+ const { SleepController, sleepAuditSink } = await import('../monitoring/SleepController.js');
8289
+ const _sleepCfg = config.monitoring?.agentSleep;
8290
+ const sleepController = new SleepController({
8291
+ sample: () => {
8292
+ const act = agentActivityState.snapshot();
8293
+ return {
8294
+ now: Date.now(),
8295
+ runningSessions: sessionManager.listRunningSessions().length,
8296
+ lastInboundAt: act.lastInboundAt,
8297
+ lastActivityAt: act.lastActivityAt,
8298
+ // Lease guard: only relevant when multi-machine coordination is active.
8299
+ leaseActive: coordinator.enabled,
8300
+ holdsLease: coordinator.enabled ? coordinator.holdsLease() : false,
8301
+ // In-flight: an inbound message currently being handled. (The relay/forward
8302
+ // in-flight + scheduler-wake signals are wired with the stop mechanism in
8303
+ // the next slice — this slice is dry-run, so it never acts on them.)
8304
+ inflightWork: (currentInboundByTopic?.size ?? 0) > 0,
8305
+ nextScheduledJobAt: null,
8306
+ };
8307
+ },
8308
+ audit: sleepAuditSink(config.stateDir),
8309
+ }, {
8310
+ enabled: _sleepCfg?.enabled ?? false,
8311
+ dryRun: _sleepCfg?.dryRun ?? true,
8312
+ tickIntervalMs: (_sleepCfg?.tickIntervalSec ?? 60) * 1000,
8313
+ thresholds: {
8314
+ idleGraceMs: _sleepCfg?.idleGraceMs ?? 120_000,
8315
+ deepIdleMs: _sleepCfg?.deepIdleMs ?? 900_000,
8316
+ wakeLeadMs: _sleepCfg?.wakeLeadMs ?? 120_000,
8317
+ },
8318
+ });
8319
+ sleepController.start();
8320
+ if (_sleepCfg?.enabled) {
8321
+ console.log(pc.green(_sleepCfg.dryRun === false
8322
+ ? ' SleepController enabled (agent hard-sleep — LIVE decision)'
8323
+ : ' SleepController enabled (agent hard-sleep — dry-run, observe only)'));
8324
+ }
8279
8325
  // ── Unkillability backstop (UNIFIED-SESSION-LIFECYCLE §P5) ───────────────
8280
8326
  // Signal-only: raises ONE deduped Attention item (never auto-kills) when a
8281
8327
  // session is KEPT forever despite faking work, or is stuck indeterminate.
@@ -8881,7 +8927,7 @@ export async function startServer(options) {
8881
8927
  catch (err) {
8882
8928
  console.log(pc.dim(` [session-pool] rollout gate not wired: ${err instanceof Error ? err.message : String(err)}`));
8883
8929
  }
8884
- 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, 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, reapLog, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier });
8930
+ 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, 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 });
8885
8931
  // Boot-recovery (tunnel-failure-resilience spec Part 6): if the agent
8886
8932
  // died mid-relay-episode, the persisted tunnel.json carries
8887
8933
  // rotationPending=true. Rotate the dashboard PIN + authToken BEFORE