instar 1.3.599 → 1.3.601

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 (45) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +77 -3
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/BackupManager.d.ts.map +1 -1
  5. package/dist/core/BackupManager.js +5 -0
  6. package/dist/core/BackupManager.js.map +1 -1
  7. package/dist/core/PostUpdateMigrator.d.ts +1 -0
  8. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  9. package/dist/core/PostUpdateMigrator.js +104 -0
  10. package/dist/core/PostUpdateMigrator.js.map +1 -1
  11. package/dist/core/PrHandLease.d.ts +151 -0
  12. package/dist/core/PrHandLease.d.ts.map +1 -0
  13. package/dist/core/PrHandLease.js +448 -0
  14. package/dist/core/PrHandLease.js.map +1 -0
  15. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  16. package/dist/core/devGatedFeatures.js +12 -0
  17. package/dist/core/devGatedFeatures.js.map +1 -1
  18. package/dist/core/instarSettingsHooks.d.ts.map +1 -1
  19. package/dist/core/instarSettingsHooks.js +10 -0
  20. package/dist/core/instarSettingsHooks.js.map +1 -1
  21. package/dist/core/multiMachineCapstoneMatrix.d.ts +49 -0
  22. package/dist/core/multiMachineCapstoneMatrix.d.ts.map +1 -0
  23. package/dist/core/multiMachineCapstoneMatrix.js +131 -0
  24. package/dist/core/multiMachineCapstoneMatrix.js.map +1 -0
  25. package/dist/scaffold/templates.d.ts.map +1 -1
  26. package/dist/scaffold/templates.js +2 -0
  27. package/dist/scaffold/templates.js.map +1 -1
  28. package/dist/server/AgentServer.d.ts +36 -0
  29. package/dist/server/AgentServer.d.ts.map +1 -1
  30. package/dist/server/AgentServer.js +2 -0
  31. package/dist/server/AgentServer.js.map +1 -1
  32. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  33. package/dist/server/CapabilityIndex.js +2 -0
  34. package/dist/server/CapabilityIndex.js.map +1 -1
  35. package/dist/server/routes.d.ts +7 -0
  36. package/dist/server/routes.d.ts.map +1 -1
  37. package/dist/server/routes.js +251 -0
  38. package/dist/server/routes.js.map +1 -1
  39. package/package.json +1 -1
  40. package/src/data/builtin-manifest.json +65 -65
  41. package/src/scaffold/templates.ts +2 -0
  42. package/upgrades/1.3.600.md +44 -0
  43. package/upgrades/1.3.601.md +38 -0
  44. package/upgrades/side-effects/live-test-capstone-runner-route.md +89 -0
  45. package/upgrades/side-effects/parallel-hand-pr-lease.md +153 -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;AAwBjG,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,CAsrdtE;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;AAoCH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAS3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAwBjG,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,CA6vdtE;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"}
@@ -17,6 +17,7 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url));
17
17
  import { loadConfig, ensureStateDir, detectTmuxPath, detectGeminiPath } from '../core/Config.js';
18
18
  import { handleProcessLevelError } from '../core/uncaughtExceptionPolicy.js';
19
19
  import { resolveDevAgentGate, resolveStateSyncStores } from '../core/devAgentGate.js';
20
+ import { PrHandLease } from '../core/PrHandLease.js';
20
21
  import { parseProfileTrigger, platformMessageIdFrom } from '../core/topicProfileIngress.js';
21
22
  import { slugifyChannelName } from '../messaging/slack/sanitize.js';
22
23
  import { TopicProfileOrchestrator, resolvedToApplied, } from '../core/TopicProfileOrchestrator.js';
@@ -6383,6 +6384,7 @@ export async function startServer(options) {
6383
6384
  const rqCfg = config.monitoring?.resumeQueue ?? {};
6384
6385
  let resumeQueue = null;
6385
6386
  let resumeDrainer = null;
6387
+ let prHandLease = null;
6386
6388
  // GAP-B Part A surface (spec: autonomous-registration-guarantee.md) — the
6387
6389
  // aggregated-attention chokepoint reference, hoisted to the handler's scope.
6388
6390
  // Assigned inside the `if (rqCfg.enabled)` block (where raiseResumeAggregated
@@ -6490,6 +6492,32 @@ export async function startServer(options) {
6490
6492
  // aggregated chokepoint (P17 — the bound lives at the creation chokepoint so
6491
6493
  // a unique key can't dodge it). Hoist the reference to the handler's scope.
6492
6494
  gapBRaiseAggregated = raiseResumeAggregated;
6495
+ // Parallel-Hand PR Lease (spec: parallel-hand-pr-lease.md) — dev-gated dark.
6496
+ // Coordinates the agent's OWN concurrent sessions so they can't push competing
6497
+ // commits to the same branch. machine-local v1 (os.hostname() machineId); the
6498
+ // route reads monitoring.prHandLease.dryRun (default true) so the canary holds.
6499
+ if (resolveDevAgentGate(config.monitoring?.prHandLease?.enabled, config)) {
6500
+ const prLeaseAuditPath = path.join(_projectDir, '.instar', 'logs', 'pr-lease-decisions.jsonl');
6501
+ prHandLease = new PrHandLease({
6502
+ stateDir: path.join(_projectDir, '.instar'),
6503
+ machineId: os.hostname(),
6504
+ runningSessionNames: () => {
6505
+ try {
6506
+ return state.listSessions({ status: 'running' }).map((s) => s.tmuxSession).filter((n) => !!n);
6507
+ }
6508
+ catch {
6509
+ return [];
6510
+ }
6511
+ },
6512
+ onAudit: (row) => {
6513
+ try {
6514
+ fs.appendFileSync(prLeaseAuditPath, JSON.stringify(row) + '\n');
6515
+ }
6516
+ catch { /* audit never endangers the push path */ }
6517
+ },
6518
+ onAttention: (item) => { raiseResumeAggregated('pr-lease', `${item.kind}: ${item.detail}`); },
6519
+ });
6520
+ }
6493
6521
  resumeQueue = new ResumeQueue({
6494
6522
  stateDir: path.join(_projectDir, '.instar'),
6495
6523
  audit: auditResumeQueue,
@@ -12227,6 +12255,9 @@ export async function startServer(options) {
12227
12255
  // (resolve a peer's harness pubkey) is a tracked follow-on.
12228
12256
  let liveTestGate;
12229
12257
  let liveTestGateMode = 'dry-run';
12258
+ // Shared between the gate (which VERIFIES artifacts) and the runner (which WRITES
12259
+ // them) so a run's artifact is exactly the artifact the gate later reads.
12260
+ let liveTestArtifactStore;
12230
12261
  try {
12231
12262
  const ltgEnabled = resolveDevAgentGate(config.monitoring?.liveTestGate?.enabled, config);
12232
12263
  const idMgrForLtg = coordinator?.managers?.identityManager;
@@ -12237,7 +12268,7 @@ export async function startServer(options) {
12237
12268
  const signingKeyPem = idMgrForLtg.loadSigningKey();
12238
12269
  const publicKeyPem = nodeCrypto.createPublicKey({ key: signingKeyPem }).export({ type: 'spki', format: 'pem' }).toString();
12239
12270
  const machineId = coordinator.identity.machineId;
12240
- const ltStore = new LiveTestArtifactStore({
12271
+ liveTestArtifactStore = new LiveTestArtifactStore({
12241
12272
  stateDir: config.stateDir,
12242
12273
  machineId,
12243
12274
  signerFingerprint: machineId,
@@ -12245,7 +12276,7 @@ export async function startServer(options) {
12245
12276
  verify: (d, s) => verifyEd25519(d, s, publicKeyPem),
12246
12277
  logger: (m) => console.log(pc.dim(` ${m}`)),
12247
12278
  });
12248
- liveTestGate = new LiveTestGate(ltStore);
12279
+ liveTestGate = new LiveTestGate(liveTestArtifactStore);
12249
12280
  const m = config.monitoring?.liveTestGate?.mode;
12250
12281
  liveTestGateMode = m === 'warn' || m === 'veto' ? m : 'dry-run';
12251
12282
  console.log(pc.dim(` [live-test-gate] active (dev-gate, mode=${liveTestGateMode}) — completion veto §4`));
@@ -12256,6 +12287,49 @@ export async function startServer(options) {
12256
12287
  // behavior). Logged; never blocks server boot.
12257
12288
  console.log(pc.dim(` [live-test-gate] not wired: ${err instanceof Error ? err.message : String(err)}`));
12258
12289
  }
12290
+ // ── LiveTestRunner (live-user-channel-proof spec §6/§7.5) ───────────────
12291
+ // Makes the (already-built, dark) cross-machine transfer CAPSTONE harness
12292
+ // RUNNABLE: per request the route builds a RealChannelDriver from whatever demo
12293
+ // creds exist (fail-closed per surface), wraps it in a LiveTestHarness over the
12294
+ // SHARED artifact store, and runs the runner — which moves the seat FIRST
12295
+ // (POST /pool/transfer), demands the honest seatMoved signal, then drives the §7.5
12296
+ // matrix and records a signed PASS/FAIL artifact (PASS only when the reply came
12297
+ // FROM the target machine). DEV-GATED + DARK (monitoring.liveTestRunner.enabled
12298
+ // omitted from ConfigDefaults → resolveDevAgentGate: live on dev, dark on fleet).
12299
+ // The ctx carries a FACTORY (not a pre-bound runner) because the harness must wrap
12300
+ // the request-built driver; the factory shares the gate's artifact store so a run's
12301
+ // artifact IS the artifact the gate later verifies.
12302
+ let liveTestRunnerCtx;
12303
+ try {
12304
+ const ltrEnabled = resolveDevAgentGate(config.monitoring?.liveTestRunner?.enabled, config);
12305
+ if (ltrEnabled && liveTestArtifactStore && coordinator?.identity?.machineId) {
12306
+ const { LiveTestRunner } = await import('../core/LiveTestRunner.js');
12307
+ const { LiveTestHarness } = await import('../core/LiveTestHarness.js');
12308
+ const sharedStore = liveTestArtifactStore;
12309
+ const machineId = coordinator.identity.machineId;
12310
+ const makeHarness = (driver) => new LiveTestHarness({
12311
+ store: sharedStore,
12312
+ driver,
12313
+ runnerFingerprint: machineId,
12314
+ logger: (m) => console.log(pc.dim(` ${m}`)),
12315
+ });
12316
+ liveTestRunnerCtx = {
12317
+ artifactStore: sharedStore,
12318
+ runnerFingerprint: machineId,
12319
+ makeHarness,
12320
+ makeRunner: (driver) => new LiveTestRunner({
12321
+ harness: makeHarness(driver),
12322
+ logger: (m) => console.log(pc.dim(` ${m}`)),
12323
+ }),
12324
+ };
12325
+ console.log(pc.dim(' [live-test-runner] active (dev-gate, dark) — cross-machine capstone §7.5'));
12326
+ }
12327
+ }
12328
+ catch (err) {
12329
+ // @silent-fallback-ok — runner not wired → /live-test routes 503 (the dark
12330
+ // default; no capstone runs). Logged; never blocks server boot.
12331
+ console.log(pc.dim(` [live-test-runner] not wired: ${err instanceof Error ? err.message : String(err)}`));
12332
+ }
12259
12333
  // ── CollaborationRedriveEngine ────────────────────────────────────
12260
12334
  // Proactively re-engage a COUNTERPART that has gone silent on an open
12261
12335
  // threadline-reply commitment. Bounded peer nudges with a durable,
@@ -16336,7 +16410,7 @@ export async function startServer(options) {
16336
16410
  carrier: _topicProfileCarrier,
16337
16411
  }
16338
16412
  : null;
16339
- 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
16413
+ 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, prHandLease: prHandLease ?? undefined, operatorStopRecorder: recordOperatorStop, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier, liveTestGate, liveTestGateMode, liveTestRunnerCtx }); // Resolve the late-bound topic-operator getter (increment 2e): routing was
16340
16414
  // wired before the server existed; from here on inbound binds use the
16341
16415
  // server's own store instance.
16342
16416
  _agentServerRef = server;