instar 1.3.193 → 1.3.195

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 (39) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +32 -3
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/HttpLeaseTransport.d.ts +21 -0
  5. package/dist/core/HttpLeaseTransport.d.ts.map +1 -1
  6. package/dist/core/HttpLeaseTransport.js +58 -1
  7. package/dist/core/HttpLeaseTransport.js.map +1 -1
  8. package/dist/core/LeaseCoordinator.d.ts +38 -0
  9. package/dist/core/LeaseCoordinator.d.ts.map +1 -1
  10. package/dist/core/LeaseCoordinator.js +36 -0
  11. package/dist/core/LeaseCoordinator.js.map +1 -1
  12. package/dist/core/MultiMachineCoordinator.d.ts +39 -0
  13. package/dist/core/MultiMachineCoordinator.d.ts.map +1 -1
  14. package/dist/core/MultiMachineCoordinator.js +116 -4
  15. package/dist/core/MultiMachineCoordinator.js.map +1 -1
  16. package/dist/core/PostUpdateMigrator.js +1 -1
  17. package/dist/core/seamlessnessConfig.d.ts +2 -0
  18. package/dist/core/seamlessnessConfig.d.ts.map +1 -1
  19. package/dist/core/seamlessnessConfig.js +13 -0
  20. package/dist/core/seamlessnessConfig.js.map +1 -1
  21. package/dist/core/types.d.ts +9 -0
  22. package/dist/core/types.d.ts.map +1 -1
  23. package/dist/core/types.js.map +1 -1
  24. package/dist/scaffold/templates.js +1 -1
  25. package/dist/server/AgentServer.d.ts +6 -0
  26. package/dist/server/AgentServer.d.ts.map +1 -1
  27. package/dist/server/AgentServer.js +1 -0
  28. package/dist/server/AgentServer.js.map +1 -1
  29. package/dist/server/machineRoutes.d.ts +8 -0
  30. package/dist/server/machineRoutes.d.ts.map +1 -1
  31. package/dist/server/machineRoutes.js +12 -0
  32. package/dist/server/machineRoutes.js.map +1 -1
  33. package/package.json +1 -1
  34. package/src/data/builtin-manifest.json +21 -21
  35. package/src/scaffold/templates.ts +1 -1
  36. package/upgrades/1.3.194.md +39 -0
  37. package/upgrades/1.3.195.md +33 -0
  38. package/upgrades/side-effects/multi-machine-robust-lease-propagation.md +120 -0
  39. package/upgrades/side-effects/tiered-dev-awareness-stepCD.md +84 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAwSH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA+wDD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA80PtE;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;AAwSH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA+wDD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAo2PtE;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"}
@@ -2265,6 +2265,7 @@ export async function startServer(options) {
2265
2265
  let gitSync;
2266
2266
  let registrySyncDebouncer;
2267
2267
  let leaseTransport;
2268
+ let leaseCoordinatorRef;
2268
2269
  let liveTailBuffer;
2269
2270
  let liveTailSendTransport;
2270
2271
  let handoffWireTransport;
@@ -2424,6 +2425,7 @@ export async function startServer(options) {
2424
2425
  logger: (m) => console.log(pc.dim(m)),
2425
2426
  });
2426
2427
  coordinator.attachLeaseCoordinator(leaseCoordinator);
2428
+ leaseCoordinatorRef = leaseCoordinator;
2427
2429
  await coordinator.initializeLease();
2428
2430
  console.log(pc.dim(` Fenced lease active (epoch ${leaseCoordinator.currentEpoch()}, holder=${leaseCoordinator.currentHolder() ?? 'none'})`));
2429
2431
  // ── Handoff ack/yield wire (spec §8 G3d/G3e) ───────────────
@@ -9034,20 +9036,47 @@ export async function startServer(options) {
9034
9036
  }
9035
9037
  },
9036
9038
  });
9039
+ // Boot-cache the running commit SHA once (env first, else git HEAD, else
9040
+ // 'unknown'). StageAdvancer scopes an E2E red/green to the CURRENT build via
9041
+ // this, so a stale result from another commit can't trigger a revert/advance.
9042
+ const gitMod = await import('../core/SafeGitExecutor.js');
9043
+ let bootCommitSha = process.env.INSTAR_COMMIT_SHA ?? process.env.GITHUB_SHA ?? '';
9044
+ if (!bootCommitSha) {
9045
+ try {
9046
+ bootCommitSha = gitMod.SafeGitExecutor.readSync(['rev-parse', 'HEAD'], {
9047
+ cwd: process.cwd(), encoding: 'utf-8', stdio: 'pipe', operation: 'server.ts:rollout-commit-sha',
9048
+ }).trim();
9049
+ }
9050
+ catch {
9051
+ bootCommitSha = ''; /* @silent-fallback-ok — git unreadable → 'unknown' */
9052
+ }
9053
+ }
9037
9054
  // StageAdvancer: the sole stage writer. Held for the rollout job/route to drive;
9038
9055
  // constructed here so the write path (liveConfig + token) is wired in one place.
9039
- void new stageMod.StageAdvancer({
9056
+ const stageAdvancer = new stageMod.StageAdvancer({
9040
9057
  resultStore: sessionPoolE2EResultStore,
9041
- currentCommitSha: () => process.env.INSTAR_COMMIT_SHA ?? process.env.GITHUB_SHA ?? 'unknown',
9058
+ currentCommitSha: () => bootCommitSha || 'unknown',
9042
9059
  readStage: () => liveConfig.get('multiMachine.sessionPool.stage', 'dark'),
9043
9060
  writeStageConfig: (s) => liveConfig.set(guardMod.STAGE_CONFIG_PATH, s, { stageWriteToken: guardMod.STAGE_WRITE_TOKEN }),
9044
9061
  audit: (event, detail) => console.log(pc.dim(` [stage-advancer] ${event} ${JSON.stringify(detail)}`)),
9045
9062
  });
9063
+ // Revert-ONLY reconcile tick (§Rollout): reconcile() can solely DEMOTE a live
9064
+ // stage when the CURRENT commit's Tier-3 E2E goes red — it never advances.
9065
+ // Promotion (advanceTo) stays operator-triggered via the rollout route/job.
9066
+ // Cheap + inert while stage is 'dark' (reconcile() no-ops at the floor).
9067
+ const stageReconcileTimer = setInterval(() => {
9068
+ try {
9069
+ stageAdvancer.reconcile();
9070
+ }
9071
+ catch { /* @silent-fallback-ok — retried next tick */ }
9072
+ }, 60_000);
9073
+ if (stageReconcileTimer.unref)
9074
+ stageReconcileTimer.unref();
9046
9075
  }
9047
9076
  catch (err) {
9048
9077
  console.log(pc.dim(` [session-pool] rollout gate not wired: ${err instanceof Error ? err.message : String(err)}`));
9049
9078
  }
9050
- 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, 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, sleepController, agentActivityState, reapLog, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier });
9079
+ 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, sleepController, agentActivityState, reapLog, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier });
9051
9080
  // Boot-recovery (tunnel-failure-resilience spec Part 6): if the agent
9052
9081
  // died mid-relay-episode, the persisted tunnel.json carries
9053
9082
  // rotationPending=true. Rotate the dashboard PIN + authToken BEFORE