instar 1.3.510 → 1.3.512

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 (75) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +67 -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/CoherenceJournal.d.ts +31 -1
  8. package/dist/core/CoherenceJournal.d.ts.map +1 -1
  9. package/dist/core/CoherenceJournal.js +49 -2
  10. package/dist/core/CoherenceJournal.js.map +1 -1
  11. package/dist/core/JournalSyncApplier.d.ts.map +1 -1
  12. package/dist/core/JournalSyncApplier.js +18 -0
  13. package/dist/core/JournalSyncApplier.js.map +1 -1
  14. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  15. package/dist/core/PostUpdateMigrator.js +63 -0
  16. package/dist/core/PostUpdateMigrator.js.map +1 -1
  17. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  18. package/dist/core/devGatedFeatures.js +5 -0
  19. package/dist/core/devGatedFeatures.js.map +1 -1
  20. package/dist/core/types.d.ts +27 -0
  21. package/dist/core/types.d.ts.map +1 -1
  22. package/dist/core/types.js.map +1 -1
  23. package/dist/monitoring/GreenPrAutoMerger.d.ts +188 -0
  24. package/dist/monitoring/GreenPrAutoMerger.d.ts.map +1 -0
  25. package/dist/monitoring/GreenPrAutoMerger.js +393 -0
  26. package/dist/monitoring/GreenPrAutoMerger.js.map +1 -0
  27. package/dist/monitoring/GuardLatchStore.d.ts +134 -0
  28. package/dist/monitoring/GuardLatchStore.d.ts.map +1 -0
  29. package/dist/monitoring/GuardLatchStore.js +255 -0
  30. package/dist/monitoring/GuardLatchStore.js.map +1 -0
  31. package/dist/monitoring/MergeRunner.d.ts +126 -0
  32. package/dist/monitoring/MergeRunner.d.ts.map +1 -0
  33. package/dist/monitoring/MergeRunner.js +296 -0
  34. package/dist/monitoring/MergeRunner.js.map +1 -0
  35. package/dist/monitoring/floorDriftCanary.d.ts +88 -0
  36. package/dist/monitoring/floorDriftCanary.d.ts.map +1 -0
  37. package/dist/monitoring/floorDriftCanary.js +89 -0
  38. package/dist/monitoring/floorDriftCanary.js.map +1 -0
  39. package/dist/monitoring/greenPrAutomergeWiring.d.ts +73 -0
  40. package/dist/monitoring/greenPrAutomergeWiring.d.ts.map +1 -0
  41. package/dist/monitoring/greenPrAutomergeWiring.js +273 -0
  42. package/dist/monitoring/greenPrAutomergeWiring.js.map +1 -0
  43. package/dist/monitoring/greenPrLogic.d.ts +121 -0
  44. package/dist/monitoring/greenPrLogic.d.ts.map +1 -0
  45. package/dist/monitoring/greenPrLogic.js +198 -0
  46. package/dist/monitoring/greenPrLogic.js.map +1 -0
  47. package/dist/monitoring/guardManifest.d.ts.map +1 -1
  48. package/dist/monitoring/guardManifest.js +12 -0
  49. package/dist/monitoring/guardManifest.js.map +1 -1
  50. package/dist/scaffold/templates.d.ts.map +1 -1
  51. package/dist/scaffold/templates.js +1 -0
  52. package/dist/scaffold/templates.js.map +1 -1
  53. package/dist/server/AgentServer.d.ts +2 -0
  54. package/dist/server/AgentServer.d.ts.map +1 -1
  55. package/dist/server/AgentServer.js +2 -0
  56. package/dist/server/AgentServer.js.map +1 -1
  57. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  58. package/dist/server/CapabilityIndex.js +16 -0
  59. package/dist/server/CapabilityIndex.js.map +1 -1
  60. package/dist/server/routes.d.ts +5 -0
  61. package/dist/server/routes.d.ts.map +1 -1
  62. package/dist/server/routes.js +251 -8
  63. package/dist/server/routes.js.map +1 -1
  64. package/dist/server/stopGate.d.ts +45 -0
  65. package/dist/server/stopGate.d.ts.map +1 -1
  66. package/dist/server/stopGate.js +74 -0
  67. package/dist/server/stopGate.js.map +1 -1
  68. package/package.json +1 -1
  69. package/scripts/safe-merge.mjs +449 -59
  70. package/src/data/builtin-manifest.json +64 -64
  71. package/src/scaffold/templates.ts +1 -0
  72. package/upgrades/1.3.511.md +46 -0
  73. package/upgrades/1.3.512.md +65 -0
  74. package/upgrades/side-effects/green-pr-automerge-enforcement.md +171 -0
  75. package/upgrades/side-effects/multi-machine-seamlessness-ws43-jobs-pool-read.md +88 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgCH,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;AA0G7D,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;AA80CD,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,CA8eN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgyYtE;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;AAgCH,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;AA0G7D,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;AA80CD,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,CA8eN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA+1YtE;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"}
@@ -11834,6 +11834,72 @@ export async function startServer(options) {
11834
11834
  }
11835
11835
  }
11836
11836
  }
11837
+ // ── GreenPrAutoMerger (green-pr-automerge-enforcement) ──────────────
11838
+ // Repo-gated, action-bearing watcher: only constructed when the install has
11839
+ // an analyzable instar git repo AND scripts/safe-merge.mjs, AND the feature
11840
+ // is enabled in config. On a plain npm install both are absent → null →
11841
+ // routes 503. Started here (interval-driven) so the guarantee survives
11842
+ // session death; the dual-latch gate is read every tick.
11843
+ let greenPrAutoMerger = null;
11844
+ let guardLatchStore = null;
11845
+ {
11846
+ const gpCfg = config.monitoring?.greenPrAutoMerge;
11847
+ const repoPath = process.cwd();
11848
+ const safeMergePath = path.join(repoPath, 'scripts', 'safe-merge.mjs');
11849
+ if (gpCfg?.enabled) {
11850
+ const wiring = await import('../monitoring/greenPrAutomergeWiring.js');
11851
+ if (wiring.isAnalyzableGreenPrRepo(repoPath, safeMergePath)) {
11852
+ const gpMachineId = coordinator.identity?.machineId ?? `m_host_${os.hostname()}`;
11853
+ const agentNamespace = config.projectName || 'agent';
11854
+ const wiringOpts = {
11855
+ repoPath, safeMergePath, stateDir: config.stateDir, machineId: gpMachineId,
11856
+ repo: 'JKHeadley/instar', agentNamespace,
11857
+ mergeTimeoutMs: Number(gpCfg.mergeTimeoutMs) || 1_500_000,
11858
+ mergeKillGraceMs: Number(gpCfg.mergeKillGraceMs) || 60_000,
11859
+ holdsLease: () => (leaseCoordinatorRef ? leaseCoordinatorRef.holdsLease() : true),
11860
+ leaseEpoch: () => (leaseCoordinatorRef ? leaseCoordinatorRef.currentEpoch() : 0),
11861
+ // Single-machine: the durable local file is the authoritative gate.
11862
+ // Multi-machine peer-latch merge is a follow-up read surface.
11863
+ readPeerLatches: () => [],
11864
+ journal: coherenceJournal ? { emitGuardLatch: (d) => coherenceJournal.emitGuardLatch(d) } : undefined,
11865
+ postAttentionAggregate: async (lines) => {
11866
+ if (!telegram)
11867
+ return;
11868
+ try {
11869
+ await telegram.createAttentionItem({
11870
+ id: 'green-pr-automerge:aggregate',
11871
+ title: 'Green-PR auto-merge needs attention',
11872
+ summary: lines.join('\n'),
11873
+ category: 'degradation',
11874
+ priority: 'MEDIUM',
11875
+ });
11876
+ }
11877
+ catch { /* attention delivery is non-fatal */ }
11878
+ },
11879
+ auditPath: path.join(config.stateDir, '..', 'logs', 'green-pr-automerge.jsonl'),
11880
+ };
11881
+ guardLatchStore = wiring.buildGuardLatchStore(wiringOpts);
11882
+ const deps = wiring.buildGreenPrDeps(wiringOpts, guardLatchStore);
11883
+ const { GreenPrAutoMerger } = await import('../monitoring/GreenPrAutoMerger.js');
11884
+ greenPrAutoMerger = new GreenPrAutoMerger(deps, {
11885
+ ...gpCfg,
11886
+ agentNamespace,
11887
+ repo: 'JKHeadley/instar',
11888
+ });
11889
+ if (greenPrAutoMerger.invariantOk) {
11890
+ guardLatchStore.markPoolArmed(); // R7: this pool is deliberately armed
11891
+ greenPrAutoMerger.start();
11892
+ console.log(pc.green(' GreenPrAutoMerger enabled (auto-merges green self-authored PRs — Phase 7 machinery)'));
11893
+ }
11894
+ else {
11895
+ console.log(pc.red(` GreenPrAutoMerger NOT started — timeout invariant violated: ${greenPrAutoMerger.invariantReason}`));
11896
+ }
11897
+ }
11898
+ else {
11899
+ console.log(pc.dim(' GreenPrAutoMerge enabled in config but no analyzable instar repo + safe-merge found — staying inert'));
11900
+ }
11901
+ }
11902
+ }
11837
11903
  // ── Multi-Machine Session Pool registry (§L2) — live MachineCapacity view for GET /pool ──
11838
11904
  // Always instantiated (cheap); the feature stays dark behind the sessionPool stage gate.
11839
11905
  // Self-attests hardware + records a self-heartbeat so GET /pool + the Machines tab show
@@ -14003,7 +14069,7 @@ export async function startServer(options) {
14003
14069
  carrier: _topicProfileCarrier,
14004
14070
  }
14005
14071
  : null;
14006
- 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, quotaPoller, quotaAwareScheduler: _quotaAwareScheduler ?? undefined, proactiveSwapMonitor: _proactiveSwapMonitor ?? undefined, inUseAccountResolver, enrollmentWizard, semanticMemory, activitySentinel, rateLimitSentinel, releaseReadinessSentinel: releaseReadinessSentinel ?? 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, 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, a2aDeliveryTracker: a2aDeliveryTracker ?? undefined, responseReviewGate, messagingToneGate, outboundDedupGate, telemetryHeartbeat, pasteManager, featureRegistry, discoveryEvaluator, completionEvaluator, unifiedTrust, liveConfig, sharedStateLedger, ledgerSessionRegistry, worktreeManager, oidcEnrolledRepos: parallelDevConfig?.oidcEnrolledRepos, initiativeTracker, projectRoundRunner, projectDriftChecker, machineHeartbeat, machinePoolRegistry, getInboundQueue: () => _inboundQueue, meshRpcDispatcher, workingSetPullCoordinator, commitmentReplicaStore, forwardCommitmentMutate, sessionOwnershipRegistry, topicPinStore: _topicPinStore ?? 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, sessionPoolE2EResultStore, proxyCoordinator, topicIntentStore, topicIntentArcCheck, usherSignalStore, intelligence: sharedIntelligence ?? undefined, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, briefDeps, workingMemory, taskFlowRegistry, threadlineFlowBridge, sessionReaper, agentWorktreeReaper, mcpProcessReaper, geminiLoopRunner, sleepController, agentActivityState, reapLog, resumeQueue, resumeDrainer, operatorStopRecorder: recordOperatorStop, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier });
14072
+ 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, quotaPoller, quotaAwareScheduler: _quotaAwareScheduler ?? undefined, proactiveSwapMonitor: _proactiveSwapMonitor ?? undefined, inUseAccountResolver, enrollmentWizard, 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, 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, a2aDeliveryTracker: a2aDeliveryTracker ?? undefined, responseReviewGate, messagingToneGate, outboundDedupGate, telemetryHeartbeat, pasteManager, featureRegistry, discoveryEvaluator, completionEvaluator, unifiedTrust, liveConfig, sharedStateLedger, ledgerSessionRegistry, worktreeManager, oidcEnrolledRepos: parallelDevConfig?.oidcEnrolledRepos, initiativeTracker, projectRoundRunner, projectDriftChecker, machineHeartbeat, machinePoolRegistry, getInboundQueue: () => _inboundQueue, meshRpcDispatcher, workingSetPullCoordinator, commitmentReplicaStore, forwardCommitmentMutate, sessionOwnershipRegistry, topicPinStore: _topicPinStore ?? 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, sessionPoolE2EResultStore, proxyCoordinator, topicIntentStore, topicIntentArcCheck, usherSignalStore, intelligence: sharedIntelligence ?? undefined, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, briefDeps, workingMemory, taskFlowRegistry, threadlineFlowBridge, sessionReaper, agentWorktreeReaper, mcpProcessReaper, geminiLoopRunner, sleepController, agentActivityState, reapLog, resumeQueue, resumeDrainer, operatorStopRecorder: recordOperatorStop, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier });
14007
14073
  // Resolve the late-bound topic-operator getter (increment 2e): routing was
14008
14074
  // wired before the server existed; from here on inbound binds use the
14009
14075
  // server's own store instance.