instar 1.3.246 → 1.3.248
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 +39 -6
- package/dist/commands/server.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +15 -1
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/RelocationNicknameSet.d.ts +42 -0
- package/dist/core/RelocationNicknameSet.d.ts.map +1 -0
- package/dist/core/RelocationNicknameSet.js +47 -0
- package/dist/core/RelocationNicknameSet.js.map +1 -0
- package/dist/core/TopicPlacementDescription.d.ts +46 -0
- package/dist/core/TopicPlacementDescription.d.ts.map +1 -0
- package/dist/core/TopicPlacementDescription.js +32 -0
- package/dist/core/TopicPlacementDescription.js.map +1 -0
- package/dist/scaffold/templates.d.ts.map +1 -1
- package/dist/scaffold/templates.js +3 -1
- package/dist/scaffold/templates.js.map +1 -1
- package/dist/server/AgentServer.d.ts +6 -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/routes.d.ts +11 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +163 -0
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +64 -64
- package/src/scaffold/templates.ts +3 -1
- package/upgrades/1.3.247.md +48 -0
- package/upgrades/1.3.248.md +46 -0
- package/upgrades/side-effects/mm-placement-transfer-robustness.md +45 -0
- package/upgrades/side-effects/telegraph-e2e-flake-tolerant.md +58 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA2SH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAgxDD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA2SH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAgxDD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAmzQtE;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
|
@@ -9348,17 +9348,50 @@ export async function startServer(options) {
|
|
|
9348
9348
|
const nickMod = await import('../core/NicknameCommand.js');
|
|
9349
9349
|
const transferMod = await import('../core/TransferByNickname.js');
|
|
9350
9350
|
const pinMod = await import('../core/TopicPlacementPinStore.js');
|
|
9351
|
+
const relocSetMod = await import('../core/RelocationNicknameSet.js');
|
|
9352
|
+
const nickAssignMod = await import('../core/NicknameAssigner.js');
|
|
9351
9353
|
_topicPinStore = new pinMod.TopicPlacementPinStore({
|
|
9352
9354
|
filePath: path.join(config.stateDir, 'session-pool', 'topic-pins.json'),
|
|
9353
9355
|
});
|
|
9356
|
+
// Authoritative resolver for THIS machine's OWN nickname. Guarantees a topic
|
|
9357
|
+
// can always be moved BACK to the machine currently handling it, even when the
|
|
9358
|
+
// capacities view omits the self nickname (the back-transfer bug: the lifeline
|
|
9359
|
+
// forwards inbound to the holder, so the relocation check runs on the very
|
|
9360
|
+
// machine the user is moving back to). Priority: capacities self-entry →
|
|
9361
|
+
// identity registry self-entry → deterministic derive (reconstructs the
|
|
9362
|
+
// auto-assigned nickname; a manual rename is persisted on the identity entry).
|
|
9363
|
+
const resolveSelfNickname = (caps) => {
|
|
9364
|
+
const fromCaps = caps.find((c) => c.machineId === meshSelfId)?.nickname;
|
|
9365
|
+
if (fromCaps)
|
|
9366
|
+
return fromCaps;
|
|
9367
|
+
try {
|
|
9368
|
+
const selfEntry = meshIdMgr
|
|
9369
|
+
.getActiveMachines()
|
|
9370
|
+
.find((m) => m.machineId === meshSelfId)?.entry;
|
|
9371
|
+
if (selfEntry?.nickname)
|
|
9372
|
+
return selfEntry.nickname;
|
|
9373
|
+
const id = meshIdMgr.hasIdentity()
|
|
9374
|
+
? meshIdMgr.loadIdentity()
|
|
9375
|
+
: null;
|
|
9376
|
+
const derived = nickAssignMod.deriveBaseNickname(id?.name, selfEntry?.hardware?.platform);
|
|
9377
|
+
if (derived)
|
|
9378
|
+
return derived;
|
|
9379
|
+
}
|
|
9380
|
+
catch {
|
|
9381
|
+
/* @silent-fallback-ok — best-effort self-nickname resolution; on any failure we
|
|
9382
|
+
return undefined and the recognizer simply falls back to the capacities-derived
|
|
9383
|
+
set (the pre-existing behavior), so this can only ever ADD a nickname, never break. */
|
|
9384
|
+
}
|
|
9385
|
+
return undefined;
|
|
9386
|
+
};
|
|
9354
9387
|
_tryNicknameRelocation = async (topicId, text) => {
|
|
9355
9388
|
const sessionKey = String(topicId);
|
|
9356
9389
|
const caps = machinePoolRegistry?.getCapacities() ?? [];
|
|
9357
|
-
const nickToMachine =
|
|
9358
|
-
|
|
9359
|
-
|
|
9360
|
-
|
|
9361
|
-
|
|
9390
|
+
const { knownNicknames, nickToMachine } = relocSetMod.buildRelocationNicknameSet({
|
|
9391
|
+
capacities: caps,
|
|
9392
|
+
selfMachineId: meshSelfId,
|
|
9393
|
+
selfNickname: resolveSelfNickname(caps),
|
|
9394
|
+
});
|
|
9362
9395
|
const cmd = nickMod.recognizeNicknameCommand(text, knownNicknames);
|
|
9363
9396
|
if (!cmd)
|
|
9364
9397
|
return { handled: false };
|
|
@@ -9474,7 +9507,7 @@ export async function startServer(options) {
|
|
|
9474
9507
|
catch (err) {
|
|
9475
9508
|
console.log(pc.dim(` [session-pool] rollout gate not wired: ${err instanceof Error ? err.message : String(err)}`));
|
|
9476
9509
|
}
|
|
9477
|
-
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, coherenceGate: scopeVerifier, contextHierarchy, canonicalState, operationGate, sentinel, adaptiveTrust, memoryMonitor, orphanReaper, coherenceMonitor, commitmentTracker, semanticMemory, activitySentinel, rateLimitSentinel, releaseReadinessSentinel: releaseReadinessSentinel ?? undefined, messageRouter, summarySentinel, spawnManager, systemReviewer, capabilityMapper, selfKnowledgeTree, coverageAuditor, topicResumeMap: _topicResumeMap ?? 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, warrantsReplyGate, collaborationSurfacer, threadResumeMap, topicLinkageHandler: topicLinkageHandler ?? undefined, threadlineRelayClient, threadlineReplyWaiters, listenerManager: listenerManager ?? undefined, responseReviewGate, messagingToneGate, outboundDedupGate, telemetryHeartbeat, pasteManager, featureRegistry, discoveryEvaluator, completionEvaluator, unifiedTrust, liveConfig, sharedStateLedger, ledgerSessionRegistry, worktreeManager, oidcEnrolledRepos: parallelDevConfig?.oidcEnrolledRepos, initiativeTracker, projectRoundRunner, projectDriftChecker, machineHeartbeat, machinePoolRegistry, meshRpcDispatcher, sessionOwnershipRegistry, sessionPoolE2EResultStore, proxyCoordinator, topicIntentStore, topicIntentArcCheck, usherSignalStore, intelligence: sharedIntelligence ?? undefined, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, briefDeps, workingMemory, taskFlowRegistry, threadlineFlowBridge, sessionReaper, agentWorktreeReaper, mcpProcessReaper, geminiLoopRunner, sleepController, agentActivityState, reapLog, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier });
|
|
9510
|
+
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, coherenceGate: scopeVerifier, contextHierarchy, canonicalState, operationGate, sentinel, adaptiveTrust, memoryMonitor, orphanReaper, coherenceMonitor, commitmentTracker, semanticMemory, activitySentinel, rateLimitSentinel, releaseReadinessSentinel: releaseReadinessSentinel ?? undefined, messageRouter, summarySentinel, spawnManager, systemReviewer, capabilityMapper, selfKnowledgeTree, coverageAuditor, topicResumeMap: _topicResumeMap ?? 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, warrantsReplyGate, collaborationSurfacer, threadResumeMap, topicLinkageHandler: topicLinkageHandler ?? undefined, threadlineRelayClient, threadlineReplyWaiters, listenerManager: listenerManager ?? undefined, responseReviewGate, messagingToneGate, outboundDedupGate, telemetryHeartbeat, pasteManager, featureRegistry, discoveryEvaluator, completionEvaluator, unifiedTrust, liveConfig, sharedStateLedger, ledgerSessionRegistry, worktreeManager, oidcEnrolledRepos: parallelDevConfig?.oidcEnrolledRepos, initiativeTracker, projectRoundRunner, projectDriftChecker, machineHeartbeat, machinePoolRegistry, meshRpcDispatcher, sessionOwnershipRegistry, topicPinStore: _topicPinStore ?? undefined, meshSelfId: _meshSelfId ?? undefined, resolveRouterUrl: _resolveRouterUrl ?? 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, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier });
|
|
9478
9511
|
// Boot-recovery (tunnel-failure-resilience spec Part 6): if the agent
|
|
9479
9512
|
// died mid-relay-episode, the persisted tunnel.json carries
|
|
9480
9513
|
// rotationPending=true. Rotate the dashboard PIN + authToken BEFORE
|