instar 1.3.525 → 1.3.527

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 (59) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +87 -5
  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 +36 -0
  6. package/dist/config/ConfigDefaults.js.map +1 -1
  7. package/dist/core/CoherenceJournal.d.ts +1 -1
  8. package/dist/core/CoherenceJournal.d.ts.map +1 -1
  9. package/dist/core/CoherenceJournal.js +12 -2
  10. package/dist/core/CoherenceJournal.js.map +1 -1
  11. package/dist/core/PostUpdateMigrator.d.ts +1 -0
  12. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  13. package/dist/core/PostUpdateMigrator.js +107 -0
  14. package/dist/core/PostUpdateMigrator.js.map +1 -1
  15. package/dist/core/PreferencesReplicatedStore.d.ts +212 -0
  16. package/dist/core/PreferencesReplicatedStore.d.ts.map +1 -0
  17. package/dist/core/PreferencesReplicatedStore.js +330 -0
  18. package/dist/core/PreferencesReplicatedStore.js.map +1 -0
  19. package/dist/core/PreferencesSync.d.ts +8 -0
  20. package/dist/core/PreferencesSync.d.ts.map +1 -1
  21. package/dist/core/PreferencesSync.js +8 -0
  22. package/dist/core/PreferencesSync.js.map +1 -1
  23. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  24. package/dist/core/devGatedFeatures.js +5 -0
  25. package/dist/core/devGatedFeatures.js.map +1 -1
  26. package/dist/monitoring/ActiveWorkSilenceSentinel.d.ts +56 -2
  27. package/dist/monitoring/ActiveWorkSilenceSentinel.d.ts.map +1 -1
  28. package/dist/monitoring/ActiveWorkSilenceSentinel.js +174 -10
  29. package/dist/monitoring/ActiveWorkSilenceSentinel.js.map +1 -1
  30. package/dist/monitoring/PromiseBeacon.d.ts +48 -0
  31. package/dist/monitoring/PromiseBeacon.d.ts.map +1 -1
  32. package/dist/monitoring/PromiseBeacon.js +186 -41
  33. package/dist/monitoring/PromiseBeacon.js.map +1 -1
  34. package/dist/monitoring/SubagentTracker.d.ts +9 -0
  35. package/dist/monitoring/SubagentTracker.d.ts.map +1 -1
  36. package/dist/monitoring/SubagentTracker.js +11 -0
  37. package/dist/monitoring/SubagentTracker.js.map +1 -1
  38. package/dist/monitoring/sentinelWiring.d.ts +20 -1
  39. package/dist/monitoring/sentinelWiring.d.ts.map +1 -1
  40. package/dist/monitoring/sentinelWiring.js +26 -0
  41. package/dist/monitoring/sentinelWiring.js.map +1 -1
  42. package/dist/scaffold/templates.d.ts.map +1 -1
  43. package/dist/scaffold/templates.js +8 -0
  44. package/dist/scaffold/templates.js.map +1 -1
  45. package/dist/server/AgentServer.d.ts +4 -0
  46. package/dist/server/AgentServer.d.ts.map +1 -1
  47. package/dist/server/AgentServer.js +1 -0
  48. package/dist/server/AgentServer.js.map +1 -1
  49. package/dist/server/routes.d.ts +7 -0
  50. package/dist/server/routes.d.ts.map +1 -1
  51. package/dist/server/routes.js +19 -0
  52. package/dist/server/routes.js.map +1 -1
  53. package/package.json +1 -1
  54. package/src/data/builtin-manifest.json +64 -64
  55. package/src/scaffold/templates.ts +8 -0
  56. package/upgrades/1.3.526.md +83 -0
  57. package/upgrades/1.3.527.md +31 -0
  58. package/upgrades/side-effects/honest-progress-messaging.md +150 -0
  59. package/upgrades/side-effects/ws21-preferences-replicated-store.md +91 -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;AAiH7D,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;AAm1CD,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,CAo7ZtE;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;AAiH7D,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;AAm1CD,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,CA2gatE;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"}
@@ -3296,6 +3296,17 @@ export async function startServer(options) {
3296
3296
  // registry the advert is `{}` (non-participant for every store): the correct
3297
3297
  // single-machine / no-store-yet behavior (a strict no-op).
3298
3298
  const replicatedKindRegistry = new ReplicatedKindRegistry();
3299
+ // WS2.1 (multi-machine-replicated-store-foundation §4/§13) — register the FIRST
3300
+ // concrete replicated kind, `pref-record`, onto the registry. This is the
3301
+ // DUAL-REGISTRY's dynamic half (the static half is CoherenceJournal.JOURNAL_KINDS,
3302
+ // which now lists 'pref-record'). With the registry no longer empty, the
3303
+ // stateSyncReceive advert self-reports `preferences:true` IFF the store is
3304
+ // enabled (selfStateSyncReceive below), the rollback-unmerge resolves the store's
3305
+ // contributing kind via getByStore, and the /state/* routes have a real store to
3306
+ // serve. Registration itself is INERT — emission/serve/pull stay gated behind
3307
+ // `multiMachine.stateSync.preferences.enabled` (default false ⇒ strict no-op).
3308
+ const { PREF_KIND_REGISTRATION } = await import('../core/PreferencesReplicatedStore.js');
3309
+ replicatedKindRegistry.register(PREF_KIND_REGISTRATION);
3299
3310
  // Snapshot-then-tail engine (Component 4 / build-order step 3,
3300
3311
  // multi-machine-replicated-store-foundation §6). The cache (FIXED ceiling,
3301
3312
  // §8.2 — NOT pool-scaled), the per-peer rebuild breaker (§6.3), and the engine
@@ -3371,6 +3382,41 @@ export async function startServer(options) {
3371
3382
  void rollbackUnmerge;
3372
3383
  void conflictStore;
3373
3384
  void droppedOriginRegistry; // consumed by the /state/* routes + the store PRs (WS2.1+)
3385
+ // WS2.1 — the bypass-proof union reader for the `preferences` store. The single
3386
+ // funnel every replicated preference read routes through (§7.2), so no caller
3387
+ // can read the raw store around the no-clobber rule. `loadOriginRecords` reads
3388
+ // the OWN preference store as the single origin today; when the journal apply
3389
+ // path lands peer `pref-record` replicas (a later rollout stage), the seam
3390
+ // extends to read those peer namespaces too. With only the own origin the union
3391
+ // is a strict no-op (= that one local record), so a single-machine / pre-apply
3392
+ // agent is byte-identical to the legacy read. tierOf returns HIGH (append-both-
3393
+ // and-flag never silently clobbers). The reader is consulted by
3394
+ // /preferences/session-context ONLY when stateSync.preferences.enabled is true.
3395
+ const { ReplicatedStoreReader } = await import('../core/ReplicatedStoreReader.js');
3396
+ const { PreferencesManager: _PMForUnion } = await import('../core/PreferencesManager.js');
3397
+ const { prefEntryToOriginRecord, prefTierOf, PREF_STORE_KEY } = await import('../core/PreferencesReplicatedStore.js');
3398
+ const preferencesUnionReader = new ReplicatedStoreReader({
3399
+ registry: replicatedKindRegistry,
3400
+ stores: config.multiMachine?.stateSync,
3401
+ tierOf: prefTierOf,
3402
+ loadOriginRecords: (store, recordKey) => {
3403
+ if (store !== PREF_STORE_KEY || _meshSelfId === null)
3404
+ return [];
3405
+ const mgr = new _PMForUnion(config.stateDir);
3406
+ const own = mgr.getAllForSync().find((p) => p.dedupeKey === recordKey);
3407
+ return own ? [prefEntryToOriginRecord(own, _meshSelfId)] : [];
3408
+ },
3409
+ listRecordKeys: (store) => {
3410
+ if (store !== PREF_STORE_KEY)
3411
+ return [];
3412
+ const mgr = new _PMForUnion(config.stateDir);
3413
+ return mgr.getAllForSync().map((p) => p.dedupeKey);
3414
+ },
3415
+ droppedOrigins: droppedOriginRegistry,
3416
+ conflictStore,
3417
+ });
3418
+ // preferencesUnionReader is passed into AgentServer below (consumed by
3419
+ // /preferences/session-context's foundation path).
3374
3420
  // Read local signing key for machine route authentication
3375
3421
  let localSigningKeyPem = '';
3376
3422
  if (coordinator.enabled && coordinator.identity) {
@@ -7760,6 +7806,13 @@ export async function startServer(options) {
7760
7806
  // consolidated message to the existing system topic. No new-topic-per-event.
7761
7807
  // Spec: docs/specs/silently-stopped-trio.md.
7762
7808
  //
7809
+ // Subagent Tracker — monitors subagent lifecycle via hook events. Constructed
7810
+ // BEFORE the silently-stopped trio block so ActiveWorkSilenceSentinel's
7811
+ // corroboration (HONEST-PROGRESS-MESSAGING A2 — "is a sub-agent live?") can be
7812
+ // wired into it (it was previously built after the trio block).
7813
+ const { SubagentTracker } = await import('../monitoring/SubagentTracker.js');
7814
+ const subagentTracker = new SubagentTracker({ stateDir: config.stateDir });
7815
+ console.log(pc.green(' Subagent tracker enabled'));
7763
7816
  // Captured out of the trio block so the SessionReaper's recovery veto can
7764
7817
  // compose socket + silence in too (SESSION-REAPER-SPEC §4 "compose, don't
7765
7818
  // replace"). undefined when the corresponding sentinel is disabled.
@@ -7859,6 +7912,28 @@ export async function startServer(options) {
7859
7912
  return result.ok;
7860
7913
  }
7861
7914
  : undefined,
7915
+ // HONEST-PROGRESS-MESSAGING A1/A2 — corroborate before claiming a
7916
+ // session is stuck: re-capture the live frame, check it isn't still
7917
+ // generating, and check no sub-agent is live. The whole path fails
7918
+ // closed inside the sentinel (FD-6).
7919
+ captureFrame: (name) => sessionSurface.captureOutput(name, 60),
7920
+ frameworkForSession: (name) => sessionManager.frameworkForSession(name),
7921
+ hasActiveSubagents: (name) => {
7922
+ const csid = sessionManager
7923
+ .listRunningSessions()
7924
+ .find((s) => s.tmuxSession === name)?.claudeSessionId;
7925
+ return csid ? subagentTracker.hasActiveSubagents(csid) : false;
7926
+ },
7927
+ // Observability (E) — funnel events to the sentinel-events.jsonl audit
7928
+ // trail via the notifier, mapped onto its kind enum.
7929
+ recordEvent: (event, name, detail) => {
7930
+ const kind = event.startsWith('suppressed')
7931
+ ? 'escalation-suppressed'
7932
+ : event.startsWith('escalated')
7933
+ ? 'escalation-sent'
7934
+ : 'detected';
7935
+ notifier.record(kind, 'active-silence', name, detail ? `${event}: ${detail}` : event);
7936
+ },
7862
7937
  }), silenceCfg);
7863
7938
  silenceSentinel.on('silence', (e) => notifier.record('detected', 'active-silence', e.sessionName, `idleMs=${e.idleMs}`));
7864
7939
  silenceSentinel.on('recovered', (n) => notifier.record('recovered', 'active-silence', n));
@@ -7982,10 +8057,6 @@ export async function startServer(options) {
7982
8057
  compactionSentinel.report(sessionName, triggerLabel || 'recovery-hook');
7983
8058
  return Promise.resolve(true);
7984
8059
  };
7985
- // Subagent Tracker — monitors subagent lifecycle via hook events
7986
- const { SubagentTracker } = await import('../monitoring/SubagentTracker.js');
7987
- const subagentTracker = new SubagentTracker({ stateDir: config.stateDir });
7988
- console.log(pc.green(' Subagent tracker enabled'));
7989
8060
  // Helper Watchdog — detects subagent stalls and rate-limit failures,
7990
8061
  // surfacing them back into the parent session's stdin so the agent
7991
8062
  // can decide whether to retry smaller. Complements SessionWatchdog,
@@ -8841,6 +8912,9 @@ export async function startServer(options) {
8841
8912
  // Spec: docs/specs/PROMISE-BEACON-SPEC.md
8842
8913
  try {
8843
8914
  const { PromiseBeacon } = await import('../monitoring/PromiseBeacon.js');
8915
+ // HONEST-PROGRESS-MESSAGING B2 — strict "generating now" detector for
8916
+ // the beacon's turn-finished close-out (live spinner / esc-to-interrupt).
8917
+ const { looksGeneratingNow: _beaconLooksGeneratingNow } = await import('../monitoring/sentinelWiring.js');
8844
8918
  // ── Escalation deps (PROMISE-BEACON-ESCALATION-SPEC §3–§5) ────────
8845
8919
  // Dark-ship: enabled resolves via the developmentAgent gate; dryRun
8846
8920
  // defaults true so the dark→live promotion is evidence-gated (§5).
@@ -8968,6 +9042,14 @@ export async function startServer(options) {
8968
9042
  sentinelAutoEnable: promiseBeaconCfg.sentinelAutoEnable ?? false,
8969
9043
  quietHours: promiseBeaconCfg.quietHours ?? { start: '22:00', end: '08:00' },
8970
9044
  maxActiveBeacons: promiseBeaconCfg.maxActiveBeacons ?? 20,
9045
+ // HONEST-PROGRESS-MESSAGING B1/B1b/B2 — silent-unless-true defaults.
9046
+ // Each reads from config (operator opt-out / tuning); undefined leaves
9047
+ // the beacon's own defaults (suppress on, 60m liveness, N=3 close-out).
9048
+ suppressUnchangedHeartbeats: promiseBeaconCfg.suppressUnchangedHeartbeats,
9049
+ beaconLivenessIntervalMs: promiseBeaconCfg.beaconLivenessIntervalMs,
9050
+ turnFinishedCloseoutChecks: promiseBeaconCfg.turnFinishedCloseoutChecks,
9051
+ // B2 turn-finished detection — "is the session still generating now?"
9052
+ looksActivelyWorking: (frame, name) => _beaconLooksGeneratingNow(frame, sessionManager.frameworkForSession(name)),
8971
9053
  });
8972
9054
  promiseBeacon.start();
8973
9055
  globalThis.__instarPromiseBeacon = promiseBeacon;
@@ -14671,7 +14753,7 @@ export async function startServer(options) {
14671
14753
  carrier: _topicProfileCarrier,
14672
14754
  }
14673
14755
  : null;
14674
- 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, threadLog, threadMessageRecorder, 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, preferenceReplicaStore, conflictStore, rollbackUnmerge, droppedOriginRegistry, 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, poolLink: _poolLink ?? 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, operatorStopRecorder: recordOperatorStop, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier }); // Resolve the late-bound topic-operator getter (increment 2e): routing was
14756
+ 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, threadLog, threadMessageRecorder, 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, preferenceReplicaStore, conflictStore, rollbackUnmerge, droppedOriginRegistry, preferencesUnionReader, 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, poolLink: _poolLink ?? 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, operatorStopRecorder: recordOperatorStop, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier }); // Resolve the late-bound topic-operator getter (increment 2e): routing was
14675
14757
  // wired before the server existed; from here on inbound binds use the
14676
14758
  // server's own store instance.
14677
14759
  _agentServerRef = server;