instar 1.3.521 → 1.3.523
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.
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +100 -1
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +16 -1
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/MeshRpc.d.ts +5 -0
- package/dist/core/MeshRpc.d.ts.map +1 -1
- package/dist/core/MeshRpc.js +8 -0
- package/dist/core/MeshRpc.js.map +1 -1
- package/dist/core/StoreSnapshot.d.ts +455 -0
- package/dist/core/StoreSnapshot.d.ts.map +1 -0
- package/dist/core/StoreSnapshot.js +786 -0
- package/dist/core/StoreSnapshot.js.map +1 -0
- package/dist/core/devGatedFeatures.d.ts.map +1 -1
- package/dist/core/devGatedFeatures.js +6 -0
- package/dist/core/devGatedFeatures.js.map +1 -1
- package/dist/core/stateSyncConfig.js +1 -1
- package/dist/core/stateSyncConfig.js.map +1 -1
- package/dist/core/storeSnapshotBuild.worker.d.ts +2 -0
- package/dist/core/storeSnapshotBuild.worker.d.ts.map +1 -0
- package/dist/core/storeSnapshotBuild.worker.js +32 -0
- package/dist/core/storeSnapshotBuild.worker.js.map +1 -0
- package/dist/core/types.d.ts +17 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/monitoring/OrphanedWorkSentinel.d.ts +148 -0
- package/dist/monitoring/OrphanedWorkSentinel.d.ts.map +1 -0
- package/dist/monitoring/OrphanedWorkSentinel.js +177 -0
- package/dist/monitoring/OrphanedWorkSentinel.js.map +1 -0
- package/dist/monitoring/guardManifest.d.ts.map +1 -1
- package/dist/monitoring/guardManifest.js +14 -0
- package/dist/monitoring/guardManifest.js.map +1 -1
- package/dist/monitoring/orphanedWorkGit.d.ts +30 -0
- package/dist/monitoring/orphanedWorkGit.d.ts.map +1 -0
- package/dist/monitoring/orphanedWorkGit.js +124 -0
- package/dist/monitoring/orphanedWorkGit.js.map +1 -0
- package/dist/server/AgentServer.d.ts +3 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +1 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/CapabilityIndex.d.ts.map +1 -1
- package/dist/server/CapabilityIndex.js +1 -0
- package/dist/server/CapabilityIndex.js.map +1 -1
- package/dist/server/routes.d.ts +3 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +11 -0
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +47 -47
- package/upgrades/1.3.522.md +25 -0
- package/upgrades/1.3.523.md +31 -0
- package/upgrades/side-effects/hlc-step3-snapshot-tail.md +133 -0
- package/upgrades/side-effects/orphaned-work-sentinel.md +40 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgCH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAS3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAuBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgCH,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAS3D,OAAO,EAAE,eAAe,EAAiC,MAAM,iCAAiC,CAAC;AAuBjG,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AA+G7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAsBtD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC1C,OAAO,CAUT;AAyID,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAm1CD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,EACzB,cAAc,EAAE,cAAc,EAC9B,YAAY,CAAC,EAAE,YAAY,EAC3B,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,WAAW,EACzB,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,EAGvE,UAAU,CAAC,EAAE,MAAM,OAAO,8BAA8B,EAAE,WAAW,GAAG,IAAI,EAK5E,qBAAqB,CAAC,EAAE,MAAM,OAAO,gCAAgC,EAAE,kBAAkB,GAAG,IAAI,EAKhG,mBAAmB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,GAAG,SAAS,GACpD,IAAI,CA8eN;AA2lBD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAm5ZtE;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"}
|
package/dist/commands/server.js
CHANGED
|
@@ -87,6 +87,7 @@ import { wireRegistrySync } from '../core/wireRegistrySync.js';
|
|
|
87
87
|
import { assertSeamlessnessInvariants } from '../core/seamlessnessConfig.js';
|
|
88
88
|
import { assertStateSyncInvariants } from '../core/stateSyncConfig.js';
|
|
89
89
|
import { ReplicatedKindRegistry, checkPoolFlagCoherence } from '../core/ReplicatedRecordEnvelope.js';
|
|
90
|
+
import { SnapshotCache, SnapshotRebuildBreaker, StoreSnapshotEngine } from '../core/StoreSnapshot.js';
|
|
90
91
|
import { FencedLease } from '../core/FencedLease.js';
|
|
91
92
|
import { GitLeaseStore } from '../core/GitLeaseStore.js';
|
|
92
93
|
import { LocalLeaseStore } from '../core/LocalLeaseStore.js';
|
|
@@ -3293,6 +3294,35 @@ export async function startServer(options) {
|
|
|
3293
3294
|
// registry the advert is `{}` (non-participant for every store): the correct
|
|
3294
3295
|
// single-machine / no-store-yet behavior (a strict no-op).
|
|
3295
3296
|
const replicatedKindRegistry = new ReplicatedKindRegistry();
|
|
3297
|
+
// Snapshot-then-tail engine (Component 4 / build-order step 3,
|
|
3298
|
+
// multi-machine-replicated-store-foundation §6). The cache (FIXED ceiling,
|
|
3299
|
+
// §8.2 — NOT pool-scaled), the per-peer rebuild breaker (§6.3), and the engine
|
|
3300
|
+
// are constructed here so the substrate is WIRED + dependency-injectable from
|
|
3301
|
+
// the first PR (machinery presence, testable — never a null/no-op). With the
|
|
3302
|
+
// registry EMPTY (no concrete store yet) the engine has no contributing kinds
|
|
3303
|
+
// to load, so a snapshot request finds no entries and the holder declines —
|
|
3304
|
+
// the correct single-machine / no-store-yet behavior (a strict no-op). The
|
|
3305
|
+
// heavy whole-store materialization runs OFF the event loop in
|
|
3306
|
+
// storeSnapshotBuild.worker.js (instar#1069). The first concrete store (WS2.1)
|
|
3307
|
+
// supplies the own-entry loader for its kind(s) onto this same engine.
|
|
3308
|
+
const snapshotCache = new SnapshotCache({
|
|
3309
|
+
maxCachedSnapshots: stateSync.maxCachedSnapshots,
|
|
3310
|
+
maxCacheBytes: stateSync.maxCacheBytes,
|
|
3311
|
+
});
|
|
3312
|
+
const snapshotRebuildBreaker = new SnapshotRebuildBreaker({ now: () => Date.now() });
|
|
3313
|
+
const storeSnapshotEngine = new StoreSnapshotEngine({
|
|
3314
|
+
cache: snapshotCache,
|
|
3315
|
+
breaker: snapshotRebuildBreaker,
|
|
3316
|
+
seams: {
|
|
3317
|
+
// Step-3 substrate: no concrete store kind is registered yet, so there are
|
|
3318
|
+
// no contributing own-streams to load. A consumer PR (WS2.1) replaces this
|
|
3319
|
+
// with a loader that reads the CoherenceJournal own streams for its kind(s).
|
|
3320
|
+
loadOwnEntries: () => ({}),
|
|
3321
|
+
now: () => Date.now(),
|
|
3322
|
+
},
|
|
3323
|
+
maxSnapshotBytes: stateSync.maxCacheBytes,
|
|
3324
|
+
});
|
|
3325
|
+
void storeSnapshotEngine; // consumed by the state-snapshot mesh handler below + the store PRs (WS2.1+)
|
|
3296
3326
|
const selfStateSyncReceive = () => {
|
|
3297
3327
|
const out = {};
|
|
3298
3328
|
const stores = config.multiMachine?.stateSync;
|
|
@@ -11649,6 +11679,49 @@ export async function startServer(options) {
|
|
|
11649
11679
|
? ' AgentWorktreeReaper enabled (stale-worktree reclaim — LIVE)'
|
|
11650
11680
|
: ' AgentWorktreeReaper enabled (stale-worktree reclaim — dry-run, report only)'));
|
|
11651
11681
|
}
|
|
11682
|
+
// ── OrphanedWorkSentinel (the silent-uncommitted-death backstop) ──────────
|
|
11683
|
+
// Detects agent worktrees with uncommitted work whose owning session is dead
|
|
11684
|
+
// + settled, records them durably, and raises ONE deduped agent-health notice
|
|
11685
|
+
// — the case the PromiseBeacon escalation ladder can't see (nothing registered
|
|
11686
|
+
// for the code itself). developmentAgent dark-feature gate: LIVE on a dev
|
|
11687
|
+
// agent, DARK on the fleet. Signal-only; start() no-ops when disabled.
|
|
11688
|
+
// GET /orphaned-work.
|
|
11689
|
+
const _orphanedWorkEnabled = resolveDevAgentGate(config.monitoring?.orphanedWorkSentinel?.enabled, config);
|
|
11690
|
+
let orphanedWorkSentinel;
|
|
11691
|
+
try {
|
|
11692
|
+
const { OrphanedWorkSentinel } = await import('../monitoring/OrphanedWorkSentinel.js');
|
|
11693
|
+
const { makeOrphanedWorkSentinelDeps } = await import('../monitoring/orphanedWorkGit.js');
|
|
11694
|
+
orphanedWorkSentinel = new OrphanedWorkSentinel(makeOrphanedWorkSentinelDeps({
|
|
11695
|
+
instarRepo: config.projectDir,
|
|
11696
|
+
worktreesDir: _agentWorktreesDir,
|
|
11697
|
+
stateDir: path.join(config.stateDir, 'state'),
|
|
11698
|
+
raiseAttention: telegram
|
|
11699
|
+
? (event) => {
|
|
11700
|
+
const slug = event.path.split('/').filter(Boolean).pop() ?? 'worktree';
|
|
11701
|
+
void telegram.createAttentionItem({
|
|
11702
|
+
id: `orphaned-work:${slug}:${event.workSig}`,
|
|
11703
|
+
title: `Stranded work in worktree "${slug}"`,
|
|
11704
|
+
summary: 'A build/session died with uncommitted changes — revive the worktree to finish, or discard.',
|
|
11705
|
+
description: `Worktree ${event.path} (branch ${event.branch ?? 'detached'}) has uncommitted changes ` +
|
|
11706
|
+
`but its owning session is gone. The work is still on disk` +
|
|
11707
|
+
`${event.preserved ? ' and a preservation patch was written' : ''}. ` +
|
|
11708
|
+
`Open the worktree to finish + commit, or discard if no longer needed.`,
|
|
11709
|
+
category: 'agent-health',
|
|
11710
|
+
priority: 'NORMAL',
|
|
11711
|
+
sourceContext: `orphaned-work:${slug}`,
|
|
11712
|
+
});
|
|
11713
|
+
}
|
|
11714
|
+
: () => { },
|
|
11715
|
+
now: () => Date.now(),
|
|
11716
|
+
}), { ...config.monitoring?.orphanedWorkSentinel, enabled: _orphanedWorkEnabled });
|
|
11717
|
+
orphanedWorkSentinel.start();
|
|
11718
|
+
if (_orphanedWorkEnabled) {
|
|
11719
|
+
console.log(pc.green(' OrphanedWorkSentinel enabled (silent-uncommitted-death backstop — signal-only)'));
|
|
11720
|
+
}
|
|
11721
|
+
}
|
|
11722
|
+
catch (e) {
|
|
11723
|
+
console.error(' OrphanedWorkSentinel wiring failed (non-fatal):', e instanceof Error ? e.message : String(e));
|
|
11724
|
+
}
|
|
11652
11725
|
// ── McpProcessReaper (RESPONSIBLE-RESOURCE-USAGE — MCP-leak fix, Option B) ──
|
|
11653
11726
|
// Reaps leaked MCP-server children (playwright-mcp / mcp-remote / instar
|
|
11654
11727
|
// stdio) whose owning session is dead/stale or fully orphaned. Killing a
|
|
@@ -13004,6 +13077,32 @@ export async function startServer(options) {
|
|
|
13004
13077
|
syncPageBytes: wsCfgP?.syncPageBytes,
|
|
13005
13078
|
});
|
|
13006
13079
|
},
|
|
13080
|
+
// Single-origin store-snapshot pull (multi-machine-replicated-store-
|
|
13081
|
+
// foundation §6.1/§6.3). The HOLDER serves a single-origin snapshot of
|
|
13082
|
+
// a store it AUTHORED — origin === THIS machine (the authenticated
|
|
13083
|
+
// recipient), so the §6.1 anti-forgery invariant holds end-to-end. The
|
|
13084
|
+
// build runs OFF the event loop in a worker (instar#1069); a flapping
|
|
13085
|
+
// peer is served the cached snapshot (breaker-gated, §6.3). In the
|
|
13086
|
+
// Step-3 substrate the registry is EMPTY, so loadOwnEntries returns no
|
|
13087
|
+
// contributing kinds and serveSnapshot answers 'no-entries' — the
|
|
13088
|
+
// holder declines and the caller falls back to a from-genesis tail
|
|
13089
|
+
// (the legacy behavior). A consumer PR (WS2.1) supplies the own-entry
|
|
13090
|
+
// loader for its kind(s), at which point this same handler serves real
|
|
13091
|
+
// data. `sender` is the recovering peer (for the breaker key); the
|
|
13092
|
+
// origin served is ALWAYS this machine (meshSelfId), never a value the
|
|
13093
|
+
// peer supplies — single-origin is structural, not trusted.
|
|
13094
|
+
'state-snapshot': async (cmd, sender) => {
|
|
13095
|
+
const c = cmd;
|
|
13096
|
+
const store = c.request?.store;
|
|
13097
|
+
if (typeof store !== 'string' || !store)
|
|
13098
|
+
return { ok: false, reason: 'store required' };
|
|
13099
|
+
// Single-origin: we only ever serve OUR OWN authored records, so the
|
|
13100
|
+
// origin is this machine — never a peer-supplied field.
|
|
13101
|
+
const result = await storeSnapshotEngine.serveSnapshot(sender, meshSelfId, store);
|
|
13102
|
+
if (!result.ok)
|
|
13103
|
+
return { ok: false, reason: result.reason };
|
|
13104
|
+
return { ok: true, snapshot: result.snapshot, source: result.source, truncated: result.truncated };
|
|
13105
|
+
},
|
|
13007
13106
|
place: ownAction,
|
|
13008
13107
|
claim: ownAction,
|
|
13009
13108
|
transfer: ownAction,
|
|
@@ -14536,7 +14635,7 @@ export async function startServer(options) {
|
|
|
14536
14635
|
carrier: _topicProfileCarrier,
|
|
14537
14636
|
}
|
|
14538
14637
|
: null;
|
|
14539
|
-
const server = new AgentServer({ config, sessionManager, state, scheduler, telegram, relationships, feedback, feedbackAnomalyDetector, dispatches, updateChecker, autoUpdater, autoDispatcher, quotaTracker, quotaManager, publisher, viewer, tunnel, evolution, watchdog, topicMemory, triageNurse, projectMapper, cartographer: cartographer ?? undefined, coherenceGate: scopeVerifier, contextHierarchy, canonicalState, operationGate, sentinel, adaptiveTrust, memoryMonitor, orphanReaper, coherenceMonitor, commitmentTracker, subscriptionPool, quotaPoller, quotaAwareScheduler: _quotaAwareScheduler ?? undefined, proactiveSwapMonitor: _proactiveSwapMonitor ?? undefined, inUseAccountResolver, enrollmentWizard, semanticMemory, activitySentinel, rateLimitSentinel, releaseReadinessSentinel: releaseReadinessSentinel ?? undefined, greenPrAutoMerger: greenPrAutoMerger ?? undefined, guardLatchStore: guardLatchStore ?? undefined, messageRouter, summarySentinel, spawnManager, systemReviewer, capabilityMapper, selfKnowledgeTree, coverageAuditor, topicResumeMap: _topicResumeMap ?? undefined, topicProfile: _topicProfileCtx ?? undefined, sessionRefresh: _sessionRefresh ?? undefined, autonomyManager, trustElevationTracker, autonomousEvolution, coordinator: coordinator.enabled ? coordinator : undefined, localSigningKeyPem, leaseTransport, onLeasePullRequest: () => leaseCoordinatorRef?.currentLease() ?? null, liveTailReceiver, handoffWireTransport, onHandoffBegin, onHandoffInitiate: handoffInitiate, handoffInProgress: handoffSentinelInProgress, messageLedger, currentInboundByTopic, replyMarkerTransport, onReplyMarker: messageLedger ? (marker) => { const m = marker; messageLedger.applyRemoteReplyMarker(m.dedupeKey, { platform: m.platform, replyIdempotencyKey: m.replyIdempotencyKey, epoch: m.epoch, topic: m.topic ?? null }); } : undefined, whatsapp: whatsappAdapter, slack: slackAdapter, imessage: imessageAdapter, whatsappBusinessBackend, messageBridge, hookEventReceiver, worktreeMonitor, subagentTracker, instructionsVerifier, handshakeManager: threadlineHandshake, threadlineRouter, conversationStore, threadLog, threadMessageRecorder, warrantsReplyGate, collaborationSurfacer, threadResumeMap, topicLinkageHandler: topicLinkageHandler ?? undefined, threadlineRelayClient, threadlineReplyWaiters, listenerManager: listenerManager ?? undefined, a2aDeliveryTracker: a2aDeliveryTracker ?? undefined, responseReviewGate, messagingToneGate, outboundDedupGate, telemetryHeartbeat, pasteManager, featureRegistry, discoveryEvaluator, completionEvaluator, unifiedTrust, liveConfig, sharedStateLedger, ledgerSessionRegistry, worktreeManager, oidcEnrolledRepos: parallelDevConfig?.oidcEnrolledRepos, initiativeTracker, projectRoundRunner, projectDriftChecker, machineHeartbeat, machinePoolRegistry, getInboundQueue: () => _inboundQueue, meshRpcDispatcher, workingSetPullCoordinator, commitmentReplicaStore, preferenceReplicaStore, forwardCommitmentMutate, sessionOwnershipRegistry, topicPinStore: _topicPinStore ?? undefined, streamTicketStore: _streamTicketStore ?? undefined, poolStreamAllowRemoteInput: config.dashboard?.poolStream?.allowRemoteInput ?? false, poolStreamConnector: _poolStreamConnector ?? undefined, secretSync: _secretSyncHandle ?? undefined, meshSelfId: _meshSelfId ?? undefined, resolveRouterUrl: _resolveRouterUrl ?? undefined, resolvePeerUrls: _resolvePeerUrls ?? undefined, guardRegistry, listPoolMachines: _listPoolMachines ?? undefined, poolLink: _poolLink ?? undefined, sessionPoolE2EResultStore, proxyCoordinator, topicIntentStore, topicIntentArcCheck, usherSignalStore, intelligence: sharedIntelligence ?? undefined, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, briefDeps, workingMemory, taskFlowRegistry, threadlineFlowBridge, sessionReaper, agentWorktreeReaper, mcpProcessReaper, geminiLoopRunner, sleepController, agentActivityState, reapLog, resumeQueue, resumeDrainer, operatorStopRecorder: recordOperatorStop, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier }); // Resolve the late-bound topic-operator getter (increment 2e): routing was
|
|
14638
|
+
const server = new AgentServer({ config, sessionManager, state, scheduler, telegram, relationships, feedback, feedbackAnomalyDetector, dispatches, updateChecker, autoUpdater, autoDispatcher, quotaTracker, quotaManager, publisher, viewer, tunnel, evolution, watchdog, topicMemory, triageNurse, projectMapper, cartographer: cartographer ?? undefined, coherenceGate: scopeVerifier, contextHierarchy, canonicalState, operationGate, sentinel, adaptiveTrust, memoryMonitor, orphanReaper, coherenceMonitor, commitmentTracker, subscriptionPool, quotaPoller, quotaAwareScheduler: _quotaAwareScheduler ?? undefined, proactiveSwapMonitor: _proactiveSwapMonitor ?? undefined, inUseAccountResolver, enrollmentWizard, semanticMemory, activitySentinel, rateLimitSentinel, releaseReadinessSentinel: releaseReadinessSentinel ?? undefined, greenPrAutoMerger: greenPrAutoMerger ?? undefined, guardLatchStore: guardLatchStore ?? undefined, messageRouter, summarySentinel, spawnManager, systemReviewer, capabilityMapper, selfKnowledgeTree, coverageAuditor, topicResumeMap: _topicResumeMap ?? undefined, topicProfile: _topicProfileCtx ?? undefined, sessionRefresh: _sessionRefresh ?? undefined, autonomyManager, trustElevationTracker, autonomousEvolution, coordinator: coordinator.enabled ? coordinator : undefined, localSigningKeyPem, leaseTransport, onLeasePullRequest: () => leaseCoordinatorRef?.currentLease() ?? null, liveTailReceiver, handoffWireTransport, onHandoffBegin, onHandoffInitiate: handoffInitiate, handoffInProgress: handoffSentinelInProgress, messageLedger, currentInboundByTopic, replyMarkerTransport, onReplyMarker: messageLedger ? (marker) => { const m = marker; messageLedger.applyRemoteReplyMarker(m.dedupeKey, { platform: m.platform, replyIdempotencyKey: m.replyIdempotencyKey, epoch: m.epoch, topic: m.topic ?? null }); } : undefined, whatsapp: whatsappAdapter, slack: slackAdapter, imessage: imessageAdapter, whatsappBusinessBackend, messageBridge, hookEventReceiver, worktreeMonitor, subagentTracker, instructionsVerifier, handshakeManager: threadlineHandshake, threadlineRouter, conversationStore, threadLog, threadMessageRecorder, warrantsReplyGate, collaborationSurfacer, threadResumeMap, topicLinkageHandler: topicLinkageHandler ?? undefined, threadlineRelayClient, threadlineReplyWaiters, listenerManager: listenerManager ?? undefined, a2aDeliveryTracker: a2aDeliveryTracker ?? undefined, responseReviewGate, messagingToneGate, outboundDedupGate, telemetryHeartbeat, pasteManager, featureRegistry, discoveryEvaluator, completionEvaluator, unifiedTrust, liveConfig, sharedStateLedger, ledgerSessionRegistry, worktreeManager, oidcEnrolledRepos: parallelDevConfig?.oidcEnrolledRepos, initiativeTracker, projectRoundRunner, projectDriftChecker, machineHeartbeat, machinePoolRegistry, getInboundQueue: () => _inboundQueue, meshRpcDispatcher, workingSetPullCoordinator, commitmentReplicaStore, preferenceReplicaStore, forwardCommitmentMutate, sessionOwnershipRegistry, topicPinStore: _topicPinStore ?? undefined, streamTicketStore: _streamTicketStore ?? undefined, poolStreamAllowRemoteInput: config.dashboard?.poolStream?.allowRemoteInput ?? false, poolStreamConnector: _poolStreamConnector ?? undefined, secretSync: _secretSyncHandle ?? undefined, meshSelfId: _meshSelfId ?? undefined, resolveRouterUrl: _resolveRouterUrl ?? undefined, resolvePeerUrls: _resolvePeerUrls ?? undefined, guardRegistry, listPoolMachines: _listPoolMachines ?? undefined, poolLink: _poolLink ?? undefined, sessionPoolE2EResultStore, proxyCoordinator, topicIntentStore, topicIntentArcCheck, usherSignalStore, intelligence: sharedIntelligence ?? undefined, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, briefDeps, workingMemory, taskFlowRegistry, threadlineFlowBridge, sessionReaper, agentWorktreeReaper, orphanedWorkSentinel, mcpProcessReaper, geminiLoopRunner, sleepController, agentActivityState, reapLog, resumeQueue, resumeDrainer, operatorStopRecorder: recordOperatorStop, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier }); // Resolve the late-bound topic-operator getter (increment 2e): routing was
|
|
14540
14639
|
// wired before the server existed; from here on inbound binds use the
|
|
14541
14640
|
// server's own store instance.
|
|
14542
14641
|
_agentServerRef = server;
|