instar 1.3.588 → 1.3.590

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 (51) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +105 -2
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/LiveTestArtifactStore.d.ts +129 -0
  5. package/dist/core/LiveTestArtifactStore.d.ts.map +1 -0
  6. package/dist/core/LiveTestArtifactStore.js +184 -0
  7. package/dist/core/LiveTestArtifactStore.js.map +1 -0
  8. package/dist/core/LiveTestGate.d.ts +54 -0
  9. package/dist/core/LiveTestGate.d.ts.map +1 -0
  10. package/dist/core/LiveTestGate.js +124 -0
  11. package/dist/core/LiveTestGate.js.map +1 -0
  12. package/dist/core/LiveTestHarness.d.ts +99 -0
  13. package/dist/core/LiveTestHarness.d.ts.map +1 -0
  14. package/dist/core/LiveTestHarness.js +102 -0
  15. package/dist/core/LiveTestHarness.js.map +1 -0
  16. package/dist/core/LocalSessionOwnershipStore.d.ts +56 -0
  17. package/dist/core/LocalSessionOwnershipStore.d.ts.map +1 -0
  18. package/dist/core/LocalSessionOwnershipStore.js +130 -0
  19. package/dist/core/LocalSessionOwnershipStore.js.map +1 -0
  20. package/dist/core/OwnershipApplier.d.ts +78 -0
  21. package/dist/core/OwnershipApplier.d.ts.map +1 -0
  22. package/dist/core/OwnershipApplier.js +101 -0
  23. package/dist/core/OwnershipApplier.js.map +1 -0
  24. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  25. package/dist/core/PostUpdateMigrator.js +9 -0
  26. package/dist/core/PostUpdateMigrator.js.map +1 -1
  27. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  28. package/dist/core/devGatedFeatures.js +12 -0
  29. package/dist/core/devGatedFeatures.js.map +1 -1
  30. package/dist/core/durableOwnershipActivation.d.ts +29 -0
  31. package/dist/core/durableOwnershipActivation.d.ts.map +1 -0
  32. package/dist/core/durableOwnershipActivation.js +41 -0
  33. package/dist/core/durableOwnershipActivation.js.map +1 -0
  34. package/dist/scaffold/templates.d.ts.map +1 -1
  35. package/dist/scaffold/templates.js +2 -0
  36. package/dist/scaffold/templates.js.map +1 -1
  37. package/dist/server/AgentServer.d.ts +3 -0
  38. package/dist/server/AgentServer.d.ts.map +1 -1
  39. package/dist/server/AgentServer.js +2 -0
  40. package/dist/server/AgentServer.js.map +1 -1
  41. package/dist/server/routes.d.ts +4 -0
  42. package/dist/server/routes.d.ts.map +1 -1
  43. package/dist/server/routes.js +58 -0
  44. package/dist/server/routes.js.map +1 -1
  45. package/package.json +1 -1
  46. package/src/data/builtin-manifest.json +64 -64
  47. package/src/scaffold/templates.ts +2 -0
  48. package/upgrades/1.3.589.md +68 -0
  49. package/upgrades/1.3.590.md +21 -0
  50. package/upgrades/side-effects/live-user-channel-proof-standard.md +54 -0
  51. package/upgrades/side-effects/pool-consistent-multimachine-activation.md +39 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAmCH,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;AAkH7D,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;AAg4CD,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,CAshdtE;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;AAmCH,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;AAkH7D,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;AAg4CD,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,CA2ndtE;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"}
@@ -12196,6 +12196,43 @@ export async function startServer(options) {
12196
12196
  completionEvaluator = new CompletionEvaluator({ intelligence: sharedIntelligence });
12197
12197
  console.log(pc.green(' Completion evaluator: active (independent /goal-style judge)'));
12198
12198
  }
12199
+ // ── LiveTestGate (live-user-channel-proof spec §4) ──────────────────────
12200
+ // The completion-gate teeth: refuse a "done" verdict for a USER-FACING feature
12201
+ // without a verified live-test artifact. DEV-GATED + dry-run default — the gate
12202
+ // COMPUTES the veto and logs it but never overrides a verdict until promoted to
12203
+ // warn/veto. Same machine signs + verifies (dev dogfood); cross-machine verify
12204
+ // (resolve a peer's harness pubkey) is a tracked follow-on.
12205
+ let liveTestGate;
12206
+ let liveTestGateMode = 'dry-run';
12207
+ try {
12208
+ const ltgEnabled = resolveDevAgentGate(config.monitoring?.liveTestGate?.enabled, config);
12209
+ const idMgrForLtg = coordinator?.managers?.identityManager;
12210
+ if (ltgEnabled && idMgrForLtg && coordinator?.identity?.machineId) {
12211
+ const { LiveTestArtifactStore } = await import('../core/LiveTestArtifactStore.js');
12212
+ const { LiveTestGate } = await import('../core/LiveTestGate.js');
12213
+ const nodeCrypto = await import('node:crypto');
12214
+ const signingKeyPem = idMgrForLtg.loadSigningKey();
12215
+ const publicKeyPem = nodeCrypto.createPublicKey({ key: signingKeyPem }).export({ type: 'spki', format: 'pem' }).toString();
12216
+ const machineId = coordinator.identity.machineId;
12217
+ const ltStore = new LiveTestArtifactStore({
12218
+ stateDir: config.stateDir,
12219
+ machineId,
12220
+ signerFingerprint: machineId,
12221
+ sign: (d) => signEd25519(d, signingKeyPem),
12222
+ verify: (d, s) => verifyEd25519(d, s, publicKeyPem),
12223
+ logger: (m) => console.log(pc.dim(` ${m}`)),
12224
+ });
12225
+ liveTestGate = new LiveTestGate(ltStore);
12226
+ const m = config.monitoring?.liveTestGate?.mode;
12227
+ liveTestGateMode = m === 'warn' || m === 'veto' ? m : 'dry-run';
12228
+ console.log(pc.dim(` [live-test-gate] active (dev-gate, mode=${liveTestGateMode}) — completion veto §4`));
12229
+ }
12230
+ }
12231
+ catch (err) {
12232
+ // @silent-fallback-ok — gate not wired → no veto (today's exact completion
12233
+ // behavior). Logged; never blocks server boot.
12234
+ console.log(pc.dim(` [live-test-gate] not wired: ${err instanceof Error ? err.message : String(err)}`));
12235
+ }
12199
12236
  // ── CollaborationRedriveEngine ────────────────────────────────────
12200
12237
  // Proactively re-engage a COUNTERPART that has gone silent on an open
12201
12238
  // threadline-reply commitment. Bounded peer nudges with a durable,
@@ -13938,8 +13975,42 @@ export async function startServer(options) {
13938
13975
  // is constructed further down (working-set wiring); until then the floor
13939
13976
  // reads 0, which preserves pre-fix behavior for the boot window.
13940
13977
  let ownershipEpochFloor = null;
13978
+ // ── Transfer fix (spec docs/specs/live-user-channel-proof-standard.md §7.2) ──
13979
+ // The in-memory store was the bug: a transfer wrote the target's ownership
13980
+ // into the SOURCE's process Map → vanished on restart, never crossed machines.
13981
+ // Behind the DEV-AGENT DARK GATE (live on a dev agent / dark on the fleet),
13982
+ // swap in the DURABLE per-session store; the OwnershipApplier (wired below)
13983
+ // materializes ownership on the target from the REPLICATED placement journal,
13984
+ // so a seat genuinely moves. Off → InMemory (today's exact behavior).
13985
+ // Pool-consistent activation (docs/specs/pool-consistent-multimachine-activation.md):
13986
+ // gating PURELY on the per-machine dev flag left the durable store DARK on a non-dev
13987
+ // pool machine (the Mini), so a transferred seat's ownership was never materialized
13988
+ // there → the seat died on arrival (caught by the live Laptop↔Mini proof, 2026-06-16).
13989
+ // The durable store MUST run on every machine that CONSUMES replicated placement
13990
+ // journals. So activate ALSO on the explicit, pool-consistent
13991
+ // `coherenceJournal.replication.enabled === true` signal — the SAME one that gates the
13992
+ // journalSyncApplier (~server.ts:16588). Invariant: a machine running the placement-
13993
+ // replication applier runs the ownership applier + durable store too (same placements).
13994
+ // Single-machine agents (no replication) stay on InMemory — strict no-op.
13995
+ const { shouldActivateDurableOwnership, isPlacementReplicationEnabled } = await import('../core/durableOwnershipActivation.js');
13996
+ const _replicationOn = isPlacementReplicationEnabled(config);
13997
+ const durableOwnershipOn = shouldActivateDurableOwnership(config, resolveDevAgentGate);
13998
+ let durableOwnershipStore = null;
13999
+ let ownershipStore;
14000
+ if (durableOwnershipOn) {
14001
+ const { LocalSessionOwnershipStore } = await import('../core/LocalSessionOwnershipStore.js');
14002
+ durableOwnershipStore = new LocalSessionOwnershipStore({
14003
+ dir: path.join(config.stateDir, 'ownership', 'local'),
14004
+ logger: (m) => console.log(pc.dim(` ${m}`)),
14005
+ });
14006
+ ownershipStore = durableOwnershipStore;
14007
+ console.log(pc.dim(` [ownership] durable LocalSessionOwnershipStore active (${_replicationOn ? 'pool: replication-on' : 'dev-gate'}) — transfer-fix §7.2`));
14008
+ }
14009
+ else {
14010
+ ownershipStore = new ownMod.InMemorySessionOwnershipStore();
14011
+ }
13941
14012
  sessionOwnershipRegistry = new ownMod.SessionOwnershipRegistry({
13942
- store: new ownMod.InMemorySessionOwnershipStore(),
14013
+ store: ownershipStore,
13943
14014
  seenNonce: (k) => seenOwnNonces.has(k),
13944
14015
  recordNonce: (k) => seenOwnNonces.add(k),
13945
14016
  epochFloorOf: (sk) => ownershipEpochFloor?.(sk) ?? 0,
@@ -14050,6 +14121,38 @@ export async function startServer(options) {
14050
14121
  }, tickMs);
14051
14122
  ws13Timer.unref?.();
14052
14123
  }
14124
+ // ── Transfer fix §7.2: OwnershipApplier ─────────────────────────────────
14125
+ // Materialize durable local ownership from the REPLICATED placement journal
14126
+ // (peers/<machineId>.topic-placement.jsonl) so the machine a topic moved TO
14127
+ // resolves the right owner on the next message — the step the in-memory store
14128
+ // never had. Off the hot path: ticked on an interval + once at boot (to adopt
14129
+ // a transfer that landed while we were down). Only when the durable store is
14130
+ // active (dev-gate); InMemory has no cross-machine replication to apply.
14131
+ if (durableOwnershipStore && _meshSelfId) {
14132
+ const { OwnershipApplier } = await import('../core/OwnershipApplier.js');
14133
+ const { CoherenceJournalReader } = await import('../core/CoherenceJournalReader.js');
14134
+ const applier = new OwnershipApplier({
14135
+ reader: new CoherenceJournalReader({ stateDir: config.stateDir }),
14136
+ store: durableOwnershipStore,
14137
+ selfMachineId: _meshSelfId,
14138
+ logger: (m) => console.log(pc.dim(` ${m}`)),
14139
+ });
14140
+ try {
14141
+ applier.tick();
14142
+ }
14143
+ catch { /* @silent-fallback-ok — boot tick best-effort; the interval converges */ }
14144
+ const applierTimer = setInterval(() => {
14145
+ try {
14146
+ const r = applier.tick();
14147
+ if (r.materialized)
14148
+ console.log(pc.dim(` [OwnershipApplier] materialized ${r.materialized}/${r.examined} topic(s) from replicated placements`));
14149
+ }
14150
+ catch (err) {
14151
+ console.error('[OwnershipApplier] tick failed:', err instanceof Error ? err.message : String(err));
14152
+ }
14153
+ }, 15000);
14154
+ applierTimer.unref?.();
14155
+ }
14053
14156
  // Coherence journal §3.3: the emit is a thin wrapper at every CAS call
14054
14157
  // site — `reason` is caller knowledge (cas() is a storage primitive and
14055
14158
  // cannot know WHY). A mesh-applied action records the coarse reason;
@@ -16175,7 +16278,7 @@ export async function startServer(options) {
16175
16278
  carrier: _topicProfileCarrier,
16176
16279
  }
16177
16280
  : null;
16178
- 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, credentialRepointing, 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, replicatedRecordEmitter, 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, poolPollCache: _poolPollCache ?? 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
16281
+ 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, credentialRepointing, 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, replicatedRecordEmitter, 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, poolPollCache: _poolPollCache ?? 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, liveTestGate, liveTestGateMode }); // Resolve the late-bound topic-operator getter (increment 2e): routing was
16179
16282
  // wired before the server existed; from here on inbound binds use the
16180
16283
  // server's own store instance.
16181
16284
  _agentServerRef = server;