instar 1.3.730 → 1.3.731

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 (63) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +80 -1
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/CoherenceGate.d.ts +119 -0
  5. package/dist/core/CoherenceGate.d.ts.map +1 -1
  6. package/dist/core/CoherenceGate.js +342 -19
  7. package/dist/core/CoherenceGate.js.map +1 -1
  8. package/dist/core/CoherenceReviewer.d.ts +30 -0
  9. package/dist/core/CoherenceReviewer.d.ts.map +1 -1
  10. package/dist/core/CoherenceReviewer.js +14 -0
  11. package/dist/core/CoherenceReviewer.js.map +1 -1
  12. package/dist/core/FileClassifier.d.ts.map +1 -1
  13. package/dist/core/FileClassifier.js +7 -0
  14. package/dist/core/FileClassifier.js.map +1 -1
  15. package/dist/core/PostUpdateMigrator.d.ts +1 -0
  16. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  17. package/dist/core/PostUpdateMigrator.js +25 -0
  18. package/dist/core/PostUpdateMigrator.js.map +1 -1
  19. package/dist/core/ResponseReviewDecisionLog.d.ts +45 -0
  20. package/dist/core/ResponseReviewDecisionLog.d.ts.map +1 -0
  21. package/dist/core/ResponseReviewDecisionLog.js +85 -0
  22. package/dist/core/ResponseReviewDecisionLog.js.map +1 -0
  23. package/dist/core/WriteDomainRegistry.d.ts.map +1 -1
  24. package/dist/core/WriteDomainRegistry.js +21 -0
  25. package/dist/core/WriteDomainRegistry.js.map +1 -1
  26. package/dist/core/conversationContextWiring.d.ts +51 -0
  27. package/dist/core/conversationContextWiring.d.ts.map +1 -0
  28. package/dist/core/conversationContextWiring.js +78 -0
  29. package/dist/core/conversationContextWiring.js.map +1 -0
  30. package/dist/core/reviewers/conversational-tone.d.ts.map +1 -1
  31. package/dist/core/reviewers/conversational-tone.js +15 -1
  32. package/dist/core/reviewers/conversational-tone.js.map +1 -1
  33. package/dist/core/types.d.ts +39 -0
  34. package/dist/core/types.d.ts.map +1 -1
  35. package/dist/core/types.js.map +1 -1
  36. package/dist/core/untrustedConversationContext.d.ts +77 -0
  37. package/dist/core/untrustedConversationContext.d.ts.map +1 -0
  38. package/dist/core/untrustedConversationContext.js +134 -0
  39. package/dist/core/untrustedConversationContext.js.map +1 -0
  40. package/dist/monitoring/ReviewCanaryBattery.d.ts +160 -0
  41. package/dist/monitoring/ReviewCanaryBattery.d.ts.map +1 -0
  42. package/dist/monitoring/ReviewCanaryBattery.js +416 -0
  43. package/dist/monitoring/ReviewCanaryBattery.js.map +1 -0
  44. package/dist/scaffold/templates.d.ts.map +1 -1
  45. package/dist/scaffold/templates.js +5 -0
  46. package/dist/scaffold/templates.js.map +1 -1
  47. package/dist/server/AgentServer.d.ts +4 -0
  48. package/dist/server/AgentServer.d.ts.map +1 -1
  49. package/dist/server/AgentServer.js +1 -0
  50. package/dist/server/AgentServer.js.map +1 -1
  51. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  52. package/dist/server/CapabilityIndex.js +1 -0
  53. package/dist/server/CapabilityIndex.js.map +1 -1
  54. package/dist/server/routes.d.ts +5 -0
  55. package/dist/server/routes.d.ts.map +1 -1
  56. package/dist/server/routes.js +36 -1
  57. package/dist/server/routes.js.map +1 -1
  58. package/package.json +1 -1
  59. package/src/data/builtin-manifest.json +64 -64
  60. package/src/scaffold/templates/jobs/instar/review-canary-battery.md +31 -0
  61. package/src/scaffold/templates.ts +5 -0
  62. package/upgrades/1.3.731.md +97 -0
  63. package/upgrades/side-effects/context-aware-outbound-review.md +62 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgDH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAU3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAyBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AA6H7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAgFtD;;;;;;;;;;;;;;;;;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;AAu/CD,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,CAijBN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA2skBtE;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;AAgDH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAU3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAyBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AA6H7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAgFtD;;;;;;;;;;;;;;;;;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;AAu/CD,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,CAijBN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA4ykBtE;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"}
@@ -14367,17 +14367,96 @@ export async function startServer(options) {
14367
14367
  // even without ANTHROPIC_API_KEY. Falls back to direct Anthropic API if a key is set
14368
14368
  // and no intelligence is available.
14369
14369
  let responseReviewGate;
14370
+ let reviewCanaryBattery;
14370
14371
  if (config.responseReview?.enabled) {
14371
14372
  if (sharedIntelligence) {
14372
14373
  const { CoherenceGate } = await import('../core/CoherenceGate.js');
14374
+ const { buildConversationContext } = await import('../core/conversationContextWiring.js');
14375
+ // Context-aware reviewers (context-aware-outbound-review §D10): the
14376
+ // WIRING layer resolves the dev-gate (resolveDevAgentGate needs the
14377
+ // top-level developmentAgent flag, which the gate never receives) and
14378
+ // hands the gate a PRE-RESOLVED conversationalContext block through
14379
+ // the LIVE getter — the kill-switch (`conversationalContext.enabled:
14380
+ // false`) then takes effect at the NEXT evaluate, no restart.
14381
+ const resolveConversationalContext = () => {
14382
+ const cc = liveConfig.get('responseReview.conversationalContext', config.responseReview?.conversationalContext) ?? {};
14383
+ const dev = liveConfig.get('developmentAgent', config.developmentAgent);
14384
+ return {
14385
+ enabled: resolveDevAgentGate(typeof cc.enabled === 'boolean' ? cc.enabled : undefined, { developmentAgent: dev }),
14386
+ maxMessages: typeof cc.maxMessages === 'number' ? cc.maxMessages : undefined,
14387
+ maxCharsPerMessage: typeof cc.maxCharsPerMessage === 'number' ? cc.maxCharsPerMessage : undefined,
14388
+ maxTotalChars: typeof cc.maxTotalChars === 'number' ? cc.maxTotalChars : undefined,
14389
+ injectReviewers: Array.isArray(cc.injectReviewers) ? cc.injectReviewers : undefined,
14390
+ };
14391
+ };
14373
14392
  responseReviewGate = new CoherenceGate({
14374
14393
  config: config.responseReview,
14375
14394
  stateDir: config.stateDir,
14376
14395
  intelligence: sharedIntelligence,
14377
14396
  relationships: relationships ?? undefined,
14378
14397
  adaptiveTrust: adaptiveTrust ?? undefined,
14398
+ // LIVE config getter (round-1 M2 build items 1+2): carries BOTH the
14399
+ // CMT-1794 fail-closed kill-switch AND the resolved
14400
+ // conversationalContext block. Reads through LiveConfig so a config
14401
+ // edit applies at the next evaluate without a restart.
14402
+ liveConfig: () => ({
14403
+ failClosedOnCriticalAbstain: liveConfig.get('responseReview.failClosedOnCriticalAbstain', config.responseReview?.failClosedOnCriticalAbstain),
14404
+ conversationalContext: resolveConversationalContext(),
14405
+ }),
14406
+ // §D1 conversation source: TopicMemory rows + the topic's verified
14407
+ // operator binding, distilled by the wiring-layer principal
14408
+ // computation (buildConversationContext — Know Your Principal). Any
14409
+ // throw here is caught at acquisition inside the gate (§D5).
14410
+ conversationContextProvider: (topicId, limit) => {
14411
+ if (!topicMemory)
14412
+ return { messages: [], askLicenseMode: 'weak-corroboration-only' };
14413
+ const rows = topicMemory.getRecentMessages(topicId, limit);
14414
+ const operator = _agentServerRef?.getTopicOperatorStore()?.getOperator(topicId) ?? null;
14415
+ return buildConversationContext(rows, operator);
14416
+ },
14379
14417
  });
14380
14418
  console.log(pc.green(` Response review pipeline: enabled via shared IntelligenceProvider (${Object.keys(config.responseReview.reviewers ?? {}).length} reviewers configured)`));
14419
+ if (resolveConversationalContext().enabled) {
14420
+ console.log(pc.green(' Response review conversational context: LIVE (context-aware reviewers — dev-gate resolved)'));
14421
+ }
14422
+ else {
14423
+ console.log(pc.dim(' Response review conversational context: dark (dev-gate resolved off)'));
14424
+ }
14425
+ // §D9.4b canary-battery driver — replays through the Bearer-gated
14426
+ // /review/test route (the SAME plumbing real reviews use; no auth-less
14427
+ // bypass seam) and writes its per-run summary through the gate's §D8
14428
+ // writer. The trigger route 503s while the feature is dark.
14429
+ if (topicMemory) {
14430
+ const { ReviewCanaryBattery } = await import('../monitoring/ReviewCanaryBattery.js');
14431
+ const gateForBattery = responseReviewGate;
14432
+ reviewCanaryBattery = new ReviewCanaryBattery({
14433
+ topicMemory,
14434
+ callReviewTest: async (body) => {
14435
+ const resp = await fetch(`http://127.0.0.1:${config.port}/review/test`, {
14436
+ method: 'POST',
14437
+ headers: {
14438
+ 'Content-Type': 'application/json',
14439
+ Authorization: `Bearer ${config.authToken ?? ''}`,
14440
+ },
14441
+ body: JSON.stringify(body),
14442
+ });
14443
+ let parsed = null;
14444
+ try {
14445
+ parsed = (await resp.json());
14446
+ }
14447
+ catch {
14448
+ // @silent-fallback-ok — a non-JSON body is reported as a null
14449
+ // body; the driver records the arm as an error (inconclusive),
14450
+ // never a silent skip.
14451
+ }
14452
+ return { status: resp.status, body: parsed };
14453
+ },
14454
+ writeDecisionRow: (row) => gateForBattery.appendDecisionRow(row),
14455
+ isFeatureLive: () => resolveConversationalContext().enabled,
14456
+ isObserveOnly: () => liveConfig.get('responseReview.observeOnly', config.responseReview?.observeOnly) === true,
14457
+ isTestEndpointEnabled: () => liveConfig.get('responseReview.testEndpointDisabled', config.responseReview?.testEndpointDisabled) !== true,
14458
+ });
14459
+ }
14381
14460
  }
14382
14461
  else {
14383
14462
  console.warn(pc.yellow(` Response review pipeline: configured but no IntelligenceProvider available (path-constraints.md Rule 2 forbids direct API path)`));
@@ -20150,7 +20229,7 @@ export async function startServer(options) {
20150
20229
  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, accountFollowMePeerViews: async () => { const nickById = new Map((_listPoolMachines?.() ?? []).map((m) => [m.machineId, m.nickname ?? m.machineId])); let peers = (_resolvePeerUrls?.() ?? []).map((p) => ({ machineId: p.machineId, nickname: nickById.get(p.machineId) ?? p.machineId, url: p.url })); if (peers.length === 0) {
20151
20230
  peers = (_listPoolMachines?.() ?? []).filter((m) => m.machineId !== _meshSelfId && !!m.lastKnownUrl).map((m) => ({ machineId: m.machineId, nickname: m.nickname ?? m.machineId, url: m.lastKnownUrl }));
20152
20231
  } if (peers.length === 0)
20153
- return []; const { fetchPeerSubscriptionViews } = await import('../core/fetchPeerSubscriptionViews.js'); return fetchPeerSubscriptionViews({ peers: () => peers, fetchImpl: fetch, authToken: config.authToken ?? '' }); }, quotaPoller, quotaAwareScheduler: _quotaAwareScheduler ?? undefined, proactiveSwapMonitor: _proactiveSwapMonitor ?? undefined, inUseAccountResolver, enrollmentWizard, accountFollowMeRevocation, 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, meshBindActive: coordinator.managers.identityManager.hasIdentity() && config.multiMachine?.meshTransport?.enabled !== false, localSigningKeyPem, leaseTransport, peerEndpointRecorder, getSelfMeshEndpoints, 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, ropeHealthMonitor, writeAdmission: writeAdmission ?? undefined, getInboundQueue: () => _inboundQueue, meshRpcDispatcher, workingSetPullCoordinator, commitmentReplicaStore, preferenceReplicaStore, replicatedRecordEmitter, conflictStore, rollbackUnmerge, droppedOriginRegistry, preferencesUnionReader, forwardCommitmentMutate, sessionOwnershipRegistry, topicPinStore: _topicPinStore ?? undefined, topicPinSkewQuarantine: _topicPinSkewQuarantine ?? undefined, topicPinFoldView: _topicPinFoldView ?? undefined, ownershipReconciler: _ownershipReconciler ?? undefined, staleOwnerEngine: _staleOwnerEngine ?? undefined, leaseHandback: _leaseHandbackCtx ?? 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, deliverMandateToMachine: _deliverMandateToMachine ?? 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, autonomousLivenessReconciler, enforcedTerminationStatus: () => enforcedTerminationWatchdog?.guardStatus() ?? null, prHandLease: prHandLease ?? undefined, operatorStopRecorder: recordOperatorStop, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier, liveTestGate, liveTestGateMode, liveTestRunnerCtx }); // Resolve the late-bound topic-operator getter (increment 2e): routing was
20232
+ return []; const { fetchPeerSubscriptionViews } = await import('../core/fetchPeerSubscriptionViews.js'); return fetchPeerSubscriptionViews({ peers: () => peers, fetchImpl: fetch, authToken: config.authToken ?? '' }); }, quotaPoller, quotaAwareScheduler: _quotaAwareScheduler ?? undefined, proactiveSwapMonitor: _proactiveSwapMonitor ?? undefined, inUseAccountResolver, enrollmentWizard, accountFollowMeRevocation, 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, meshBindActive: coordinator.managers.identityManager.hasIdentity() && config.multiMachine?.meshTransport?.enabled !== false, localSigningKeyPem, leaseTransport, peerEndpointRecorder, getSelfMeshEndpoints, 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, reviewCanaryBattery, messagingToneGate, outboundDedupGate, telemetryHeartbeat, pasteManager, featureRegistry, discoveryEvaluator, completionEvaluator, unifiedTrust, liveConfig, sharedStateLedger, ledgerSessionRegistry, worktreeManager, oidcEnrolledRepos: parallelDevConfig?.oidcEnrolledRepos, initiativeTracker, projectRoundRunner, projectDriftChecker, machineHeartbeat, machinePoolRegistry, ropeHealthMonitor, writeAdmission: writeAdmission ?? undefined, getInboundQueue: () => _inboundQueue, meshRpcDispatcher, workingSetPullCoordinator, commitmentReplicaStore, preferenceReplicaStore, replicatedRecordEmitter, conflictStore, rollbackUnmerge, droppedOriginRegistry, preferencesUnionReader, forwardCommitmentMutate, sessionOwnershipRegistry, topicPinStore: _topicPinStore ?? undefined, topicPinSkewQuarantine: _topicPinSkewQuarantine ?? undefined, topicPinFoldView: _topicPinFoldView ?? undefined, ownershipReconciler: _ownershipReconciler ?? undefined, staleOwnerEngine: _staleOwnerEngine ?? undefined, leaseHandback: _leaseHandbackCtx ?? 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, deliverMandateToMachine: _deliverMandateToMachine ?? 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, autonomousLivenessReconciler, enforcedTerminationStatus: () => enforcedTerminationWatchdog?.guardStatus() ?? null, prHandLease: prHandLease ?? undefined, operatorStopRecorder: recordOperatorStop, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier, liveTestGate, liveTestGateMode, liveTestRunnerCtx }); // Resolve the late-bound topic-operator getter (increment 2e): routing was
20154
20233
  // wired before the server existed; from here on inbound binds use the
20155
20234
  // server's own store instance.
20156
20235
  _agentServerRef = server;