instar 1.3.551 → 1.3.553
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 +60 -2
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +30 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts +10 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +76 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- 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/types.d.ts +48 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +5 -0
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/scheduler/JobScheduler.d.ts +33 -0
- package/dist/scheduler/JobScheduler.d.ts.map +1 -1
- package/dist/scheduler/JobScheduler.js +75 -0
- package/dist/scheduler/JobScheduler.js.map +1 -1
- package/dist/server/AgentServer.d.ts +3 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +3 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/PoolPollCache.d.ts +136 -0
- package/dist/server/PoolPollCache.d.ts.map +1 -0
- package/dist/server/PoolPollCache.js +163 -0
- package/dist/server/PoolPollCache.js.map +1 -0
- package/dist/server/routes.d.ts +9 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +51 -8
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +65 -65
- package/src/scaffold/templates.ts +5 -0
- package/upgrades/1.3.552.md +23 -0
- package/upgrades/1.3.553.md +63 -0
- package/upgrades/side-effects/multi-machine-seamlessness-ws44-pool-cache.md +115 -0
- package/upgrades/side-effects/ws43-role-guard.md +40 -0
- package/upgrades/ws43-role-guard.eli16.md +47 -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;AAiH7D,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;
|
|
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;AAiH7D,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;AAy3CD,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,CA0wbtE;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
|
@@ -429,6 +429,12 @@ let _poolStreamConnector = null;
|
|
|
429
429
|
* ctx. Constructed in the mesh-setup block (needs meshSelfId + identity manager);
|
|
430
430
|
* null on single-machine or when the dark flag is off. */
|
|
431
431
|
let _poolLink = null;
|
|
432
|
+
/** WS4.4(f) global pool-cache unification (MULTI-MACHINE-SEAMLESSNESS-SPEC
|
|
433
|
+
* §WS4.4 clause (f)): the ONE shared per-peer poll cache every pool-scope
|
|
434
|
+
* surface routes its per-peer fan-out through. Constructed in the mesh-setup
|
|
435
|
+
* block ONLY when the dark `ws44PoolCache` flag resolves on; null on
|
|
436
|
+
* single-machine / dark (surfaces keep their direct per-peer fetch). */
|
|
437
|
+
let _poolPollCache = null;
|
|
432
438
|
/** Recognize + apply a "move/run this on <nickname>" relocation on inbound; returns handled=true when the message WAS a relocation command (so it must not also be dispatched). */
|
|
433
439
|
let _tryNicknameRelocation = null;
|
|
434
440
|
/** Per-topic framework override (claude-code | codex-cli). Populated from
|
|
@@ -5013,6 +5019,31 @@ export async function startServer(options) {
|
|
|
5013
5019
|
if (topicMemory?.isReady()) {
|
|
5014
5020
|
scheduler.setTopicMemory(topicMemory);
|
|
5015
5021
|
}
|
|
5022
|
+
// WS4.3 role-guard-at-spawn (MULTI-MACHINE-SEAMLESSNESS-SPEC §WS4.3,
|
|
5023
|
+
// CMT-1416). The provider is read LIVE at each spawn boundary: `enabled`
|
|
5024
|
+
// from multiMachine.seamlessness.ws43RoleGuard (DARK default), `holdsLease`
|
|
5025
|
+
// from the coordinator's structural lease verdict — so a mid-run demotion
|
|
5026
|
+
// takes effect immediately. The attention callback raises ONE per-slug
|
|
5027
|
+
// deduped item (createAttentionItem dedups on id) so the operator learns a
|
|
5028
|
+
// state-writing job could not run on this read-only standby; it is
|
|
5029
|
+
// best-effort (the refusal itself is the load-bearing safety).
|
|
5030
|
+
const telegramForRoleGuard = telegram; // const-narrow for the closure
|
|
5031
|
+
scheduler.setRoleGuard(() => ({
|
|
5032
|
+
enabled: config.multiMachine?.seamlessness?.ws43RoleGuard === true,
|
|
5033
|
+
holdsLease: coordinator.holdsLease(),
|
|
5034
|
+
}), (slug, machineId) => {
|
|
5035
|
+
void telegramForRoleGuard.createAttentionItem({
|
|
5036
|
+
id: `agent:ws43-role-guard:${slug}`,
|
|
5037
|
+
title: `Job "${slug}" could not run on this machine`,
|
|
5038
|
+
summary: 'State-writing job refused on a read-only standby (not the lease-holder).',
|
|
5039
|
+
description: `The scheduled job "${slug}" writes shared state, so it may only run on the machine that holds the lease. This machine (${machineId ?? 'unknown'}) is a read-only standby, so the spawn was refused at the spawn boundary. The writable owner's scheduler runs the job; no action is needed unless no writable machine exists.`,
|
|
5040
|
+
category: 'system',
|
|
5041
|
+
priority: 'LOW',
|
|
5042
|
+
sourceContext: 'ws43-role-guard',
|
|
5043
|
+
lane: 'agent-health',
|
|
5044
|
+
healthKey: `ws43-role-guard:${slug}`,
|
|
5045
|
+
}).catch(() => { });
|
|
5046
|
+
});
|
|
5016
5047
|
}
|
|
5017
5048
|
// Ensure Agent Attention topic exists (the agent's direct line to the user)
|
|
5018
5049
|
ensureAgentAttentionTopic(telegram, state).catch(err => {
|
|
@@ -13050,7 +13081,7 @@ export async function startServer(options) {
|
|
|
13050
13081
|
// WS1.1 capability advertisement (spec invariant 5): a bounded
|
|
13051
13082
|
// fixed-size summary, never an inventory. Reported live each
|
|
13052
13083
|
// heartbeat so a queue going dark withdraws the capability.
|
|
13053
|
-
seamlessnessFlags: { ws11DeliverReceive: !!_inboundQueue, ws12DrainReceive: !!_drainRunner, ws44PoolLinks: !!_poolLink, stateSyncReceive: selfStateSyncReceive() },
|
|
13084
|
+
seamlessnessFlags: { ws11DeliverReceive: !!_inboundQueue, ws12DrainReceive: !!_drainRunner, ws44PoolLinks: !!_poolLink, ws44PoolCache: !!_poolPollCache, stateSyncReceive: selfStateSyncReceive() },
|
|
13054
13085
|
// Durable Inbound Message Queue §5.1: depth + oldest + tenure +
|
|
13055
13086
|
// bounded top-K — the survivor's loss-SUSPECTED item, capped
|
|
13056
13087
|
// re-placement arm, and supersede-dedupe key all read these.
|
|
@@ -13266,6 +13297,33 @@ export async function startServer(options) {
|
|
|
13266
13297
|
}
|
|
13267
13298
|
}
|
|
13268
13299
|
}
|
|
13300
|
+
// WS4.4(f) global pool-cache unification (MULTI-MACHINE-SEAMLESSNESS-SPEC
|
|
13301
|
+
// §WS4.4 clause (f)). Ships DARK behind multiMachine.seamlessness.
|
|
13302
|
+
// ws44PoolCache (dev-agent gated, sibling of ws44PoolLinks). When on,
|
|
13303
|
+
// construct the ONE shared per-peer poll cache and pass it to the routes
|
|
13304
|
+
// ctx; every pool-scope surface routes its per-peer fan-out through it so
|
|
13305
|
+
// a dashboard polling several tabs hits each peer ONCE per interval, and
|
|
13306
|
+
// over the load-shed threshold serves last-cached (stale-tagged) instead
|
|
13307
|
+
// of re-fanning. When off (or single-machine), it stays null and the
|
|
13308
|
+
// surfaces keep their direct per-peer fetch (byte-for-byte today's
|
|
13309
|
+
// behavior).
|
|
13310
|
+
{
|
|
13311
|
+
const ws44CacheCfg = config.multiMachine?.seamlessness;
|
|
13312
|
+
if (resolveDevAgentGate(ws44CacheCfg?.ws44PoolCache, config)) {
|
|
13313
|
+
try {
|
|
13314
|
+
const cacheMod = await import('../server/PoolPollCache.js');
|
|
13315
|
+
_poolPollCache = new cacheMod.PoolPollCache({
|
|
13316
|
+
ttlMs: ws44CacheCfg?.ws44PoolCacheTtlMs,
|
|
13317
|
+
loadShedPerCore: ws44CacheCfg?.ws44LoadShedLoadPerCore,
|
|
13318
|
+
});
|
|
13319
|
+
console.log(pc.green(' WS4.4(f) pool-cache unification enabled (shared per-peer poll cache)'));
|
|
13320
|
+
}
|
|
13321
|
+
catch (err) {
|
|
13322
|
+
// @silent-fallback-ok — pool-cache stays null; surfaces keep their direct per-peer fetch (today's behavior). Logged with context.
|
|
13323
|
+
console.log(pc.dim(` [ws44-pool-cache] not wired: ${err instanceof Error ? err.message : String(err)}`));
|
|
13324
|
+
}
|
|
13325
|
+
}
|
|
13326
|
+
}
|
|
13269
13327
|
const seenMeshNonces = new Map(); // `${sender}:${nonce}` → ts, age-pruned
|
|
13270
13328
|
const meshPruneMs = Math.max(meshClockToleranceMs * 4, 120_000);
|
|
13271
13329
|
// SessionOwnership registry (§L3) — in-memory store (single-machine correct;
|
|
@@ -15454,7 +15512,7 @@ export async function startServer(options) {
|
|
|
15454
15512
|
carrier: _topicProfileCarrier,
|
|
15455
15513
|
}
|
|
15456
15514
|
: null;
|
|
15457
|
-
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, 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, 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
|
|
15515
|
+
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, conflictStore, rollbackUnmerge, droppedOriginRegistry, preferencesUnionReader, forwardCommitmentMutate, sessionOwnershipRegistry, topicPinStore: _topicPinStore ?? undefined, streamTicketStore: _streamTicketStore ?? undefined, poolStreamAllowRemoteInput: config.dashboard?.poolStream?.allowRemoteInput ?? false, poolStreamConnector: _poolStreamConnector ?? undefined, secretSync: _secretSyncHandle ?? undefined, meshSelfId: _meshSelfId ?? undefined, resolveRouterUrl: _resolveRouterUrl ?? undefined, resolvePeerUrls: _resolvePeerUrls ?? undefined, guardRegistry, listPoolMachines: _listPoolMachines ?? undefined, poolLink: _poolLink ?? undefined, poolPollCache: _poolPollCache ?? undefined, sessionPoolE2EResultStore, proxyCoordinator, topicIntentStore, topicIntentArcCheck, usherSignalStore, intelligence: sharedIntelligence ?? undefined, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, briefDeps, workingMemory, taskFlowRegistry, threadlineFlowBridge, sessionReaper, agentWorktreeReaper, orphanedWorkSentinel, mcpProcessReaper, geminiLoopRunner, sleepController, agentActivityState, reapLog, resumeQueue, resumeDrainer, operatorStopRecorder: recordOperatorStop, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier }); // Resolve the late-bound topic-operator getter (increment 2e): routing was
|
|
15458
15516
|
// wired before the server existed; from here on inbound binds use the
|
|
15459
15517
|
// server's own store instance.
|
|
15460
15518
|
_agentServerRef = server;
|