instar 1.3.1659 → 1.3.1660

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 (130) hide show
  1. package/dashboard/console/services-model.js +2 -0
  2. package/dist/commands/server.d.ts.map +1 -1
  3. package/dist/commands/server.js +98 -36
  4. package/dist/commands/server.js.map +1 -1
  5. package/dist/commands/setClaudeKey.d.ts.map +1 -1
  6. package/dist/commands/setClaudeKey.js +5 -3
  7. package/dist/commands/setClaudeKey.js.map +1 -1
  8. package/dist/commands/setup.d.ts.map +1 -1
  9. package/dist/commands/setup.js +19 -2
  10. package/dist/commands/setup.js.map +1 -1
  11. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  12. package/dist/config/ConfigDefaults.js +9 -0
  13. package/dist/config/ConfigDefaults.js.map +1 -1
  14. package/dist/core/BackupManager.d.ts.map +1 -1
  15. package/dist/core/BackupManager.js +1 -0
  16. package/dist/core/BackupManager.js.map +1 -1
  17. package/dist/core/CodexLifecycleProductionComposition.d.ts +1 -1
  18. package/dist/core/CodexLifecycleProductionComposition.d.ts.map +1 -1
  19. package/dist/core/ModelTierEscalation.d.ts +1 -1
  20. package/dist/core/ModelTierEscalation.d.ts.map +1 -1
  21. package/dist/core/ModelTierEscalation.js +3 -0
  22. package/dist/core/ModelTierEscalation.js.map +1 -1
  23. package/dist/core/PostUpdateMigrator.d.ts +21 -0
  24. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  25. package/dist/core/PostUpdateMigrator.js +65 -4
  26. package/dist/core/PostUpdateMigrator.js.map +1 -1
  27. package/dist/core/SessionManager.d.ts.map +1 -1
  28. package/dist/core/SessionManager.js +15 -2
  29. package/dist/core/SessionManager.js.map +1 -1
  30. package/dist/core/TopicProfileResolver.d.ts +9 -0
  31. package/dist/core/TopicProfileResolver.d.ts.map +1 -1
  32. package/dist/core/TopicProfileResolver.js +33 -0
  33. package/dist/core/TopicProfileResolver.js.map +1 -1
  34. package/dist/core/UpdateChecker.d.ts +5 -0
  35. package/dist/core/UpdateChecker.d.ts.map +1 -1
  36. package/dist/core/UpdateChecker.js +142 -69
  37. package/dist/core/UpdateChecker.js.map +1 -1
  38. package/dist/core/UsageWallRescue.d.ts +259 -0
  39. package/dist/core/UsageWallRescue.d.ts.map +1 -0
  40. package/dist/core/UsageWallRescue.js +581 -0
  41. package/dist/core/UsageWallRescue.js.map +1 -0
  42. package/dist/core/codexCapabilities.d.ts +2 -0
  43. package/dist/core/codexCapabilities.d.ts.map +1 -1
  44. package/dist/core/codexCapabilities.js +26 -0
  45. package/dist/core/codexCapabilities.js.map +1 -1
  46. package/dist/core/devGatedFeatures.d.ts.map +1 -1
  47. package/dist/core/devGatedFeatures.js +6 -0
  48. package/dist/core/devGatedFeatures.js.map +1 -1
  49. package/dist/core/types.d.ts +35 -0
  50. package/dist/core/types.d.ts.map +1 -1
  51. package/dist/core/types.js.map +1 -1
  52. package/dist/data/standards-guard-index.json +1 -1
  53. package/dist/data/standards-guard-index.meta.json +2 -2
  54. package/dist/data/standards-registry.meta.json +1 -1
  55. package/dist/lifeline/ServerSupervisor.d.ts.map +1 -1
  56. package/dist/lifeline/ServerSupervisor.js +14 -0
  57. package/dist/lifeline/ServerSupervisor.js.map +1 -1
  58. package/dist/monitoring/PresenceProxy.d.ts +17 -0
  59. package/dist/monitoring/PresenceProxy.d.ts.map +1 -1
  60. package/dist/monitoring/PresenceProxy.js +61 -4
  61. package/dist/monitoring/PresenceProxy.js.map +1 -1
  62. package/dist/monitoring/SessionWatchdog.d.ts +22 -0
  63. package/dist/monitoring/SessionWatchdog.d.ts.map +1 -1
  64. package/dist/monitoring/SessionWatchdog.js +48 -1
  65. package/dist/monitoring/SessionWatchdog.js.map +1 -1
  66. package/dist/monitoring/rateLimitDetection.d.ts +37 -0
  67. package/dist/monitoring/rateLimitDetection.d.ts.map +1 -1
  68. package/dist/monitoring/rateLimitDetection.js +117 -0
  69. package/dist/monitoring/rateLimitDetection.js.map +1 -1
  70. package/dist/native/InstarWedgeCanary.app/Contents/MacOS/InstarWedgeCanary +0 -0
  71. package/dist/native/instar-desktop-host +0 -0
  72. package/dist/recommended/recipes.d.ts +37 -0
  73. package/dist/recommended/recipes.d.ts.map +1 -0
  74. package/dist/recommended/recipes.js +64 -0
  75. package/dist/recommended/recipes.js.map +1 -0
  76. package/dist/recommended/setupRestart.d.ts +18 -0
  77. package/dist/recommended/setupRestart.d.ts.map +1 -0
  78. package/dist/recommended/setupRestart.js +23 -0
  79. package/dist/recommended/setupRestart.js.map +1 -0
  80. package/dist/recommended/setupState.d.ts +25 -0
  81. package/dist/recommended/setupState.d.ts.map +1 -0
  82. package/dist/recommended/setupState.js +30 -0
  83. package/dist/recommended/setupState.js.map +1 -0
  84. package/dist/scaffold/templates.js +2 -2
  85. package/dist/server/AgentServer.d.ts +1 -0
  86. package/dist/server/AgentServer.d.ts.map +1 -1
  87. package/dist/server/AgentServer.js +4 -0
  88. package/dist/server/AgentServer.js.map +1 -1
  89. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  90. package/dist/server/CapabilityIndex.js +12 -2
  91. package/dist/server/CapabilityIndex.js.map +1 -1
  92. package/dist/server/mobilePairingRoutes.d.ts.map +1 -1
  93. package/dist/server/mobilePairingRoutes.js +10 -0
  94. package/dist/server/mobilePairingRoutes.js.map +1 -1
  95. package/dist/server/mobilePermissionsRoutes.d.ts +260 -0
  96. package/dist/server/mobilePermissionsRoutes.d.ts.map +1 -0
  97. package/dist/server/mobilePermissionsRoutes.js +684 -0
  98. package/dist/server/mobilePermissionsRoutes.js.map +1 -0
  99. package/dist/server/recommendedServiceRoutes.d.ts +27 -1
  100. package/dist/server/recommendedServiceRoutes.d.ts.map +1 -1
  101. package/dist/server/recommendedServiceRoutes.js +219 -2
  102. package/dist/server/recommendedServiceRoutes.js.map +1 -1
  103. package/dist/server/routes.d.ts +5 -0
  104. package/dist/server/routes.d.ts.map +1 -1
  105. package/dist/server/routes.js +250 -60
  106. package/dist/server/routes.js.map +1 -1
  107. package/dist/testing/selfActionRegistry.d.ts.map +1 -1
  108. package/dist/testing/selfActionRegistry.js +89 -0
  109. package/dist/testing/selfActionRegistry.js.map +1 -1
  110. package/package.json +1 -1
  111. package/scripts/locked-proof/configure-proof-agent.mjs +18 -5
  112. package/scripts/locked-proof/driver.mjs +45 -6
  113. package/scripts/locked-proof/stage-proof-agents.sh +31 -9
  114. package/src/data/builtin-manifest.json +66 -66
  115. package/src/data/feature-ladders.json +2 -1
  116. package/src/data/standards-guard-index.json +1 -1
  117. package/src/data/standards-guard-index.meta.json +2 -2
  118. package/src/data/standards-registry.meta.json +1 -1
  119. package/src/data/state-coherence-registry.json +15 -0
  120. package/src/scaffold/templates.ts +2 -2
  121. package/upgrades/1.3.1660.md +82 -0
  122. package/upgrades/native-update-preflight.eli16.md +23 -0
  123. package/upgrades/side-effects/echo-bugs-codex-default.md +75 -0
  124. package/upgrades/side-effects/feedback-delivery-route-docs.md +70 -0
  125. package/upgrades/side-effects/locked-proof-harness-viewer.md +66 -0
  126. package/upgrades/side-effects/mobile-native-permissions.md +136 -0
  127. package/upgrades/side-effects/native-update-preflight.md +74 -0
  128. package/upgrades/side-effects/recommended-services-runner.md +88 -0
  129. package/upgrades/side-effects/set-claude-key-no-cli.md +12 -0
  130. package/upgrades/side-effects/usage-wall-rescue.md +101 -0
@@ -9,6 +9,8 @@ const BACKUP_WORDS = {
9
9
  };
10
10
 
11
11
  function choiceWord(s) {
12
+ if (s.stalled) return 'Setup stopped';
13
+ if (s.verified && s.verified.result === 'pass') return 'Working';
12
14
  if (s.choice === 'yes') return 'You said yes';
13
15
  if (s.choice === 'no' || s.legacyDeclined) return 'You said no';
14
16
  return s.available ? 'Not decided' : 'Not available yet';
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"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"}
@@ -1136,6 +1136,10 @@ let _quotaAwareScheduler = null;
1136
1136
  // Subscription & Auth Standard P1.3 — pre-limit proactive swap monitor. Null
1137
1137
  // until wired (requires the scheduler; gated behind subscriptionPool.proactiveSwap).
1138
1138
  let _proactiveSwapMonitor = null;
1139
+ // usage-wall-rescue — moves a session off a walled account (tagged or not) and
1140
+ // tags spawns. Null until wired next to the scheduler; read late by the
1141
+ // PresenceProxy wording hook.
1142
+ let _usageWallRescue = null;
1139
1143
  // swap-continuity-antithrash §3/§4 — the anti-thrash spine. The ledger + engine
1140
1144
  // load and hydrate UNCONDITIONALLY at boot (R4-L3: reactive rows append
1141
1145
  // regardless of antiThrash.enabled, so the index is warm at a mid-run flag
@@ -1411,7 +1415,9 @@ spawnOpts) {
1411
1415
  _topicResumeMap?.remove(topicId);
1412
1416
  console.log(`[spawnSessionForTopic] Context-exhaustion latch active for topic ${topicId} — forcing fresh spawn`);
1413
1417
  }
1414
- let resumeSessionId = _topicResumeMap?.get(topicId) ?? undefined;
1418
+ // A group default can change the resolved framework without a per-topic pin
1419
+ // event. Never pass a saved Claude UUID to Codex (or vice versa) at restart.
1420
+ let resumeSessionId = _topicResumeMap?.getForFramework(topicId, framework) ?? undefined;
1415
1421
  if (resumeSessionId) {
1416
1422
  console.log(`[spawnSessionForTopic] Found resume UUID for topic ${topicId}: ${resumeSessionId} (source: TopicResumeMap — trusted)`);
1417
1423
  }
@@ -6865,6 +6871,7 @@ export async function startServer(options) {
6865
6871
  defaultFramework: () => _defaultFramework,
6866
6872
  configTopicFrameworks: () => _topicFrameworks,
6867
6873
  configProfileDefaults: () => topicProfilesCfg?.defaults ?? {},
6874
+ configGroupDefaults: () => topicProfilesCfg?.groupDefaults ?? {},
6868
6875
  frameworkDefaultModels: () => config.sessions?.frameworkDefaultModels ?? {},
6869
6876
  tierEscalationConfig: () => normalizeTierEscalationConfig(config.models?.tierEscalation),
6870
6877
  localModelBinding: (topicKey) => _topicLocalModelStore?.get(Number(topicKey)) ?? null,
@@ -16101,6 +16108,9 @@ export async function startServer(options) {
16101
16108
  hasContextExhaustionLatch: sessionRecovery
16102
16109
  ? (topicId) => sessionRecovery.hasContextWedgedSeen(topicId)
16103
16110
  : undefined,
16111
+ // usage-wall-rescue: when another account has room, the standby says
16112
+ // the session is being moved — never "paused until reset".
16113
+ describeQuotaWall: (sessionName) => _usageWallRescue?.describeWall(sessionName) ?? null,
16104
16114
  // Shared per-topic mutex — coordinates with PromiseBeacon.
16105
16115
  acquireProxyMutex: (topicId, holder) => proxyCoordinator.tryAcquire(topicId, holder),
16106
16116
  releaseProxyMutex: (topicId, holder) => proxyCoordinator.release(topicId, holder),
@@ -21184,8 +21194,8 @@ export async function startServer(options) {
21184
21194
  onNoAlternate: telegramRef ? (sessionName, exhaustedAccountId) => {
21185
21195
  void telegramRef.createAttentionItem({
21186
21196
  id: `subpool-no-alternate-${exhaustedAccountId}`,
21187
- title: 'Subscription pool — no alternate account to swap to',
21188
- summary: `Session "${sessionName}" hit account "${exhaustedAccountId}"'s quota and there's no other eligible account in the pool. The session falls back to the existing rate-limit back-off; consider enrolling another account.`,
21197
+ title: 'Every subscription account is at its usage limit',
21198
+ summary: `Session "${sessionName}" reached the usage limit on account "${exhaustedAccountId}", and no other connected account has room. It will carry on by itself when the limit resets. Connecting another account would let it carry on sooner.`,
21189
21199
  category: 'subscription-pool',
21190
21200
  priority: 'HIGH',
21191
21201
  sourceContext: 'subscription-pool:no-alternate',
@@ -21193,36 +21203,84 @@ export async function startServer(options) {
21193
21203
  } : undefined,
21194
21204
  logger: { log: (m) => console.log(m), warn: (m) => console.warn(m) },
21195
21205
  });
21196
- // DARK auto-trigger: only when explicitly enabled does a rate-limit
21197
- // escalation drive an account swap. Default off — opt-in per Justin's
21198
- // tier-2 sign-off (auto-swapping live sessions is real authority).
21199
- if (config.subscriptionPool?.autoSwapOnRateLimit) {
21200
- rateLimitSentinel.on('rate-limit:escalated', (rlState) => {
21201
- const sessionName = rlState?.sessionName;
21202
- if (!sessionName)
21203
- return;
21204
- // Resolve which account this session is running under; only pool-managed
21205
- // sessions are swap-eligible (others fall back to the existing back-off).
21206
- const session = state.listSessions({ status: 'running' })
21207
- .find(s => s.tmuxSession === sessionName);
21208
- const accountId = session?.subscriptionAccountId;
21209
- if (!accountId)
21210
- return;
21211
- void _quotaAwareScheduler?.onQuotaPressure({
21212
- sessionName,
21213
- exhaustedAccountId: accountId,
21214
- nowMs: Date.now(),
21215
- framework: session?.framework ?? 'claude-code',
21216
- });
21206
+ // usage-wall-rescue (docs/specs/usage-wall-rescue.md). ONE switch,
21207
+ // `subscriptionPool.wallRescue.enabled` (default true, operator-approved
21208
+ // 2026-11-04), read LIVE; effective only while the pool has 2+ usable
21209
+ // accounts of the session's framework. Covers untagged sessions by
21210
+ // resolving the account the session is actually on.
21211
+ const { UsageWallRescue } = await import('../core/UsageWallRescue.js');
21212
+ const readWallRescueConfig = () => liveConfig.get('subscriptionPool', config.subscriptionPool);
21213
+ _usageWallRescue = new UsageWallRescue({
21214
+ readConfig: readWallRescueConfig,
21215
+ listAccounts: () => subscriptionPool.list(),
21216
+ getSession: (name) => state.listSessions({ status: 'running' }).find((s) => s.tmuxSession === name),
21217
+ configHomeForSession: (name) => sessionManager.configHomeForSession(name),
21218
+ resolveDefaultAccountId: async () => (await inUseAccountResolver.resolve(subscriptionPool.list())).activeAccountId,
21219
+ swap: (a) => _quotaAwareScheduler
21220
+ ? _quotaAwareScheduler.onQuotaPressure(a)
21221
+ : Promise.resolve({ swapped: false, toAccountId: null, reason: 'scheduler-unavailable' }),
21222
+ // Plain notice to the conversation, only when the session cannot be
21223
+ // moved (no account has room, or moves kept failing).
21224
+ // Coalesced: one in-flight poll at a time and at most one per minute, so
21225
+ // many sessions holding on a stale reading cannot fan out pool polls.
21226
+ requestQuotaRefresh: (() => {
21227
+ let inFlight = false;
21228
+ let lastAt = 0;
21229
+ return () => {
21230
+ const now = Date.now();
21231
+ if (inFlight || now - lastAt < 60_000)
21232
+ return;
21233
+ inFlight = true;
21234
+ lastAt = now;
21235
+ void Promise.resolve(quotaPoller.pollAll())
21236
+ .catch(() => { })
21237
+ .finally(() => { inFlight = false; });
21238
+ };
21239
+ })(),
21240
+ notifyUser: (sessionName, text) => {
21241
+ const raw = telegram?.getTopicForSession(sessionName);
21242
+ const topicId = typeof raw === 'number' ? raw : Number(raw);
21243
+ if (raw == null || !Number.isFinite(topicId))
21244
+ return false;
21245
+ // Resolves true only on a confirmed send; anything else leaves the
21246
+ // standby to report the wall.
21247
+ return sendAutomationReply('usage-wall-rescue', topicId, { text, metadata: { provenance: 'automation' } }, deterministicAutomationAuthor())
21248
+ .then((resp) => resp.ok === true)
21249
+ .catch(() => false);
21250
+ },
21251
+ logger: { log: (m) => console.log(m), warn: (m) => console.warn(m) },
21252
+ });
21253
+ const wallRescue = _usageWallRescue;
21254
+ void wallRescue.refreshDefaultAccount();
21255
+ const wallRescueDefaultTimer = setInterval(() => { void wallRescue.refreshDefaultAccount(); }, 60_000);
21256
+ wallRescueDefaultTimer.unref?.();
21257
+ // The trigger: the watchdog's settled usage-wall signal.
21258
+ if (watchdog) {
21259
+ watchdog.on('usage-wall', (sessionName) => {
21260
+ void wallRescue.onUsageWall(sessionName);
21261
+ });
21262
+ watchdog.on('usage-wall-cleared', (sessionName) => {
21263
+ wallRescue.onWallCleared(sessionName);
21217
21264
  });
21218
21265
  }
21219
- // Subscription-pool session PINNING (Subscription & Auth Standard): when
21220
- // enabled, new claude-code spawns launch on the scheduler-picked optimal
21221
- // account (reset-date / headroom score) and carry its id. This is the
21222
- // prerequisite that makes auto-swap functional — without a session→account
21223
- // tag, the swap engine has nothing to move. Default off → spawns use the
21224
- // default config exactly as before (the resolver stays unwired).
21225
- if (config.subscriptionPool?.pinSessionsToPool) {
21266
+ // Legacy opt-in: an explicit autoSwapOnRateLimit:true also moves a session
21267
+ // on a server-throttle escalation (a throttle is shared capacity, so the
21268
+ // default-on rescue does not move sessions for it). It goes through the
21269
+ // SAME funnel and brakes as the wall; untagged sessions are resolved
21270
+ // instead of skipped. The live config is checked per event.
21271
+ rateLimitSentinel.on('rate-limit:escalated', (rlState) => {
21272
+ const sessionName = rlState?.sessionName;
21273
+ if (!sessionName)
21274
+ return;
21275
+ void wallRescue.onThrottleEscalated(sessionName);
21276
+ });
21277
+ // Session PINNING / tagging. An explicit pinSessionsToPool:true pins
21278
+ // every claude-code spawn (as before). Otherwise the rescue's resolver
21279
+ // tags spawns when the pool has 2+ usable accounts (so no session is
21280
+ // untagged) and, with pinning explicitly off, still refuses to launch on
21281
+ // a default login the pool knows is walled. 0/1 usable accounts → null →
21282
+ // the default login, exactly as before.
21283
+ if (config.subscriptionPool?.pinSessionsToPool === true) {
21226
21284
  const { selectAccount } = await import('../core/QuotaAwareScheduler.js');
21227
21285
  sessionManager.setSpawnAccountResolver(() => {
21228
21286
  const acct = selectAccount(subscriptionPool.list(), { nowMs: Date.now(), framework: 'claude-code' });
@@ -21230,12 +21288,16 @@ export async function startServer(options) {
21230
21288
  });
21231
21289
  console.log(pc.green(' Subscription-pool session pinning enabled'));
21232
21290
  }
21291
+ else {
21292
+ sessionManager.setSpawnAccountResolver(() => wallRescue.spawnAccount());
21293
+ }
21233
21294
  // ProactiveSwapMonitor (Subscription & Auth Standard P1.3 — the PRE-LIMIT
21234
21295
  // half). Moves a session OFF an account BEFORE it walls, at a lag-aware
21235
- // measured threshold. Complements the reactive autoSwapOnRateLimit (which
21236
- // only fires AFTER the wall) and covers UNTAGGED sessions by resolving the
21237
- // default-config login — so the primary interactive session is swap-visible
21238
- // instead of wedging (the 2026-06-09 failure). DARK by default: only runs
21296
+ // measured threshold. Complements the reactive usage-wall rescue (which
21297
+ // only fires AFTER the wall). It does NOT move untagged sessions (Q3):
21298
+ // those are reached by the default-slot repoint arm, and on a pool with
21299
+ // 2+ usable accounts the wall rescue tags new spawns so few stay
21300
+ // untagged. DARK by default: only runs
21239
21301
  // when subscriptionPool.proactiveSwap.enabled is true (moving live sessions
21240
21302
  // is real authority).
21241
21303
  const proactiveCfg = config.subscriptionPool?.proactiveSwap;
@@ -30413,7 +30475,7 @@ export async function startServer(options) {
30413
30475
  const server = new AgentServer({ config, ecosystemLedger: _ecosystemLedger ?? undefined, recommendedServicesLedger: _recommendedServicesLedger ?? undefined, singleInstanceLock, agentIdentity: _agentIdentityDeps, terminateSessionAuthority: terminateWithAuthority, subscriptionEmailBinding: credentialLocationLedger, subscriptionEmailBarrier, subscriptionIdentityOracle, sessionManager, llmQueue: sharedLlmQueue, state, scheduler, telegram, telegramOrigin: telegramOriginBoot?.runtime, relationships, feedback, feedbackAnomalyDetector, dispatches, updateChecker, autoUpdater, autoDispatcher, quotaTracker, quotaManager, publisher, viewer, jobAnomalySendAutomationReply: sendAutomationReply, tunnel, evolution, watchdog, topicMemory, triageNurse, projectMapper, cartographerRoots: cartographerRoots ?? undefined, coherenceGate: scopeVerifier, contextHierarchy, canonicalState, operationGate, sentinel, adaptiveTrust, memoryMonitor, orphanReaper, coherenceMonitor, commitmentTracker, subscriptionPool, accountFollowMePeerViews: async () => { const nickById = new Map((_listPoolMachines?.() ?? []).map((m) => [m.machineId, verifiedEntityName(m.machineId, m.nickname) ?? ''])); let peers = (_resolvePeerUrls?.() ?? []).map((p) => ({ machineId: p.machineId, nickname: nickById.get(p.machineId) ?? '', url: p.url })); if (peers.length === 0) {
30414
30476
  peers = (_listPoolMachines?.() ?? []).filter((m) => m.machineId !== _meshSelfId && !!m.lastKnownUrl).map((m) => ({ machineId: m.machineId, nickname: verifiedEntityName(m.machineId, m.nickname) ?? '', url: m.lastKnownUrl }));
30415
30477
  } if (peers.length === 0)
30416
- 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, localVerify: localVerifyService ?? undefined, localVerifyStatus: localVerifyStatus ?? undefined, guardLatchStore: guardLatchStore ?? undefined, agentStopSurfacer: agentStopSurfacer ?? 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, conversationRegistry, conversationBindAuth, appConversations: _appConversationService ?? undefined, slackInboundDispatch: () => _slackInboundDispatch, conversationFollowThrough, whatsappBusinessBackend, messageBridge, hookEventReceiver, worktreeMonitor, subagentTracker, instructionsVerifier, handshakeManager: threadlineHandshake, threadlineRouter, conversationStore, threadLog, threadMessageRecorder, warrantsReplyGate, collaborationSurfacer, peerHomebaseRelay, threadResumeMap, topicLinkageHandler: topicLinkageHandler ?? undefined, threadlineRelayClient, pairingInvites: threadlinePairingInvites, getLastRelayEvent: threadlineGetLastRelayEvent, a2aRelayForward: _a2aRelayForwardCtx ?? undefined, threadlineReplyWaiters, threadlineMcpHttp, memoryPrivacy: _memoryPrivacyWired ?? undefined, listenerManager: listenerManager ?? undefined, a2aDeliveryTracker: a2aDeliveryTracker ?? undefined, relayVerdictCounters: threadlineRelayClient ? (() => ({ ...threadlineRelayClient.relayVerdictCounters, expiredMismatchIgnored: a2aDeliveryTracker?.expiredMismatchIgnored ?? 0 })) : undefined, inboundIdLedger: _inboundIdLedger ?? undefined, inboundIdLedgerDaemonDeferred: () => _inboundIdLedgerDaemonDeferred, 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, getMachineCoherence: () => _machineCoherenceSentinel, getSingleMachineFailoverGap: () => _singleMachineFailoverGap, getMissingLoginSession: () => _missingLoginSession, getSessionPoolFailoverRunner: () => _sessionPoolFailoverRunnerDriver?.status() ?? null, sessionPoolPromotionActivation: _sessionPoolPromotionActivation, meshRpcDispatcher, deliverA2aToMachine: _deliverA2aToMachine ?? undefined, workingSetPullCoordinator, workingSetArtifactManager, orchestratorPoller, commitmentReplicaStore, preferenceReplicaStore, replicatedRecordEmitter, replicatedStoreReconciler, conflictStore, rollbackUnmerge, droppedOriginRegistry, preferencesUnionReader, jevMemoryPicker, forwardCommitmentMutate, sessionOwnershipRegistry, sendDrain: _sendDrain ?? undefined, claimTopicOwnershipOnSpawn: (topicId) => _claimOwnershipForAutonomousSpawn ? _claimOwnershipForAutonomousSpawn(topicId) : 'unwired', topicPinStore: _topicPinStore ?? undefined, topicPinSkewQuarantine: _topicPinSkewQuarantine ?? undefined, topicPinFoldView: _topicPinFoldView ?? undefined, ownershipReconciler: _ownershipReconciler ?? undefined, staleOwnerEngine: _staleOwnerEngine ?? undefined, duplicateReconciler: _duplicateReconciler ?? undefined, ownerDarkLadder: _ownerDarkLadder ?? undefined, spawnAdmission: _spawnAdmission ?? undefined, judgmentProvenance: _judgmentProvenance ?? 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, recordRopeResult: _recordRopeResult ?? undefined, guardRegistry, listPoolMachines: _listPoolMachines ?? undefined, deliverMandateToMachine: _deliverMandateToMachine ?? undefined, passkeyRevokeOutbox: _passkeyRevokeOutbox ? () => _passkeyRevokeOutbox : undefined, passkeyPeerOnline: _passkeyPeerOnline, passkeyPoolReader: _passkeyPoolReader ? () => _passkeyPoolReader : undefined, passkeyProofBrowser: async (profileDir) => { const { ChromeCdpReloginBrowser } = await import('../core/ChromeCdpReloginBrowser.js'); return new ChromeCdpReloginBrowser({ userDataDir: profileDir, passkeyMode: true, headless: true, launchTimeoutMs: 30_000, operationTimeoutMs: 20_000 }); }, 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, externalHogSentinel, orphanedWorkSentinel, mcpProcessReaper, codexArmSessionSweeper, geminiLoopRunner, sleepController, agentActivityState, reapLog, resumeQueue, resumeDrainer, autonomousLivenessReconciler, enforcedTerminationStatus: () => enforcedTerminationWatchdog?.guardStatus() ?? null, prHandLease: prHandLease ?? undefined, standDownRegistry: _standDownRegistry ?? undefined, standDownAudit: _standDownAudit ?? undefined, operatorStopRecorder: recordOperatorStop, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier, liveTestGate, liveTestGateMode, liveTestRunnerCtx });
30478
+ return []; const { fetchPeerSubscriptionViews } = await import('../core/fetchPeerSubscriptionViews.js'); return fetchPeerSubscriptionViews({ peers: () => peers, fetchImpl: fetch, authToken: config.authToken ?? '' }); }, quotaPoller, quotaAwareScheduler: _quotaAwareScheduler ?? undefined, proactiveSwapMonitor: _proactiveSwapMonitor ?? undefined, usageWallRescue: _usageWallRescue ?? undefined, inUseAccountResolver, enrollmentWizard, accountFollowMeRevocation, credentialRepointing, semanticMemory, activitySentinel, rateLimitSentinel, releaseReadinessSentinel: releaseReadinessSentinel ?? undefined, greenPrAutoMerger: greenPrAutoMerger ?? undefined, localVerify: localVerifyService ?? undefined, localVerifyStatus: localVerifyStatus ?? undefined, guardLatchStore: guardLatchStore ?? undefined, agentStopSurfacer: agentStopSurfacer ?? 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, conversationRegistry, conversationBindAuth, appConversations: _appConversationService ?? undefined, slackInboundDispatch: () => _slackInboundDispatch, conversationFollowThrough, whatsappBusinessBackend, messageBridge, hookEventReceiver, worktreeMonitor, subagentTracker, instructionsVerifier, handshakeManager: threadlineHandshake, threadlineRouter, conversationStore, threadLog, threadMessageRecorder, warrantsReplyGate, collaborationSurfacer, peerHomebaseRelay, threadResumeMap, topicLinkageHandler: topicLinkageHandler ?? undefined, threadlineRelayClient, pairingInvites: threadlinePairingInvites, getLastRelayEvent: threadlineGetLastRelayEvent, a2aRelayForward: _a2aRelayForwardCtx ?? undefined, threadlineReplyWaiters, threadlineMcpHttp, memoryPrivacy: _memoryPrivacyWired ?? undefined, listenerManager: listenerManager ?? undefined, a2aDeliveryTracker: a2aDeliveryTracker ?? undefined, relayVerdictCounters: threadlineRelayClient ? (() => ({ ...threadlineRelayClient.relayVerdictCounters, expiredMismatchIgnored: a2aDeliveryTracker?.expiredMismatchIgnored ?? 0 })) : undefined, inboundIdLedger: _inboundIdLedger ?? undefined, inboundIdLedgerDaemonDeferred: () => _inboundIdLedgerDaemonDeferred, 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, getMachineCoherence: () => _machineCoherenceSentinel, getSingleMachineFailoverGap: () => _singleMachineFailoverGap, getMissingLoginSession: () => _missingLoginSession, getSessionPoolFailoverRunner: () => _sessionPoolFailoverRunnerDriver?.status() ?? null, sessionPoolPromotionActivation: _sessionPoolPromotionActivation, meshRpcDispatcher, deliverA2aToMachine: _deliverA2aToMachine ?? undefined, workingSetPullCoordinator, workingSetArtifactManager, orchestratorPoller, commitmentReplicaStore, preferenceReplicaStore, replicatedRecordEmitter, replicatedStoreReconciler, conflictStore, rollbackUnmerge, droppedOriginRegistry, preferencesUnionReader, jevMemoryPicker, forwardCommitmentMutate, sessionOwnershipRegistry, sendDrain: _sendDrain ?? undefined, claimTopicOwnershipOnSpawn: (topicId) => _claimOwnershipForAutonomousSpawn ? _claimOwnershipForAutonomousSpawn(topicId) : 'unwired', topicPinStore: _topicPinStore ?? undefined, topicPinSkewQuarantine: _topicPinSkewQuarantine ?? undefined, topicPinFoldView: _topicPinFoldView ?? undefined, ownershipReconciler: _ownershipReconciler ?? undefined, staleOwnerEngine: _staleOwnerEngine ?? undefined, duplicateReconciler: _duplicateReconciler ?? undefined, ownerDarkLadder: _ownerDarkLadder ?? undefined, spawnAdmission: _spawnAdmission ?? undefined, judgmentProvenance: _judgmentProvenance ?? 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, recordRopeResult: _recordRopeResult ?? undefined, guardRegistry, listPoolMachines: _listPoolMachines ?? undefined, deliverMandateToMachine: _deliverMandateToMachine ?? undefined, passkeyRevokeOutbox: _passkeyRevokeOutbox ? () => _passkeyRevokeOutbox : undefined, passkeyPeerOnline: _passkeyPeerOnline, passkeyPoolReader: _passkeyPoolReader ? () => _passkeyPoolReader : undefined, passkeyProofBrowser: async (profileDir) => { const { ChromeCdpReloginBrowser } = await import('../core/ChromeCdpReloginBrowser.js'); return new ChromeCdpReloginBrowser({ userDataDir: profileDir, passkeyMode: true, headless: true, launchTimeoutMs: 30_000, operationTimeoutMs: 20_000 }); }, 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, externalHogSentinel, orphanedWorkSentinel, mcpProcessReaper, codexArmSessionSweeper, geminiLoopRunner, sleepController, agentActivityState, reapLog, resumeQueue, resumeDrainer, autonomousLivenessReconciler, enforcedTerminationStatus: () => enforcedTerminationWatchdog?.guardStatus() ?? null, prHandLease: prHandLease ?? undefined, standDownRegistry: _standDownRegistry ?? undefined, standDownAudit: _standDownAudit ?? undefined, operatorStopRecorder: recordOperatorStop, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier, liveTestGate, liveTestGateMode, liveTestRunnerCtx });
30417
30479
  if (_pendingCompactionEvidence)
30418
30480
  featureEvidence.record('multiMachine.coherenceJournal.replication.compaction', _pendingCompactionEvidence); // Resolve the late-bound topic-operator getter (increment 2e): routing was
30419
30481
  const readIdentityProjectionPeerRows = async () => {