instar 1.3.237 → 1.3.239

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 (58) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +41 -3
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/config/ConfigDefaults.d.ts.map +1 -1
  5. package/dist/config/ConfigDefaults.js +8 -0
  6. package/dist/config/ConfigDefaults.js.map +1 -1
  7. package/dist/core/types.d.ts +37 -0
  8. package/dist/core/types.d.ts.map +1 -1
  9. package/dist/core/types.js.map +1 -1
  10. package/dist/messaging/SpawnRequestManager.d.ts +4 -1
  11. package/dist/messaging/SpawnRequestManager.d.ts.map +1 -1
  12. package/dist/messaging/SpawnRequestManager.js +8 -1
  13. package/dist/messaging/SpawnRequestManager.js.map +1 -1
  14. package/dist/monitoring/GeminiLoopRunner.d.ts +93 -0
  15. package/dist/monitoring/GeminiLoopRunner.d.ts.map +1 -0
  16. package/dist/monitoring/GeminiLoopRunner.js +134 -0
  17. package/dist/monitoring/GeminiLoopRunner.js.map +1 -0
  18. package/dist/monitoring/geminiLoopProduction.d.ts +62 -0
  19. package/dist/monitoring/geminiLoopProduction.d.ts.map +1 -0
  20. package/dist/monitoring/geminiLoopProduction.js +124 -0
  21. package/dist/monitoring/geminiLoopProduction.js.map +1 -0
  22. package/dist/scheduler/MentorOnboardingRunner.d.ts +10 -1
  23. package/dist/scheduler/MentorOnboardingRunner.d.ts.map +1 -1
  24. package/dist/scheduler/MentorOnboardingRunner.js +1 -0
  25. package/dist/scheduler/MentorOnboardingRunner.js.map +1 -1
  26. package/dist/scheduler/MentorOnboardingTick.d.ts +25 -0
  27. package/dist/scheduler/MentorOnboardingTick.d.ts.map +1 -1
  28. package/dist/scheduler/MentorOnboardingTick.js +13 -0
  29. package/dist/scheduler/MentorOnboardingTick.js.map +1 -1
  30. package/dist/server/AgentServer.d.ts +8 -0
  31. package/dist/server/AgentServer.d.ts.map +1 -1
  32. package/dist/server/AgentServer.js +84 -0
  33. package/dist/server/AgentServer.js.map +1 -1
  34. package/dist/server/CapabilityIndex.d.ts.map +1 -1
  35. package/dist/server/CapabilityIndex.js +1 -0
  36. package/dist/server/CapabilityIndex.js.map +1 -1
  37. package/dist/server/routes.d.ts +3 -0
  38. package/dist/server/routes.d.ts.map +1 -1
  39. package/dist/server/routes.js +45 -0
  40. package/dist/server/routes.js.map +1 -1
  41. package/dist/threadline/ThreadResumeMap.d.ts +8 -0
  42. package/dist/threadline/ThreadResumeMap.d.ts.map +1 -1
  43. package/dist/threadline/ThreadResumeMap.js +31 -0
  44. package/dist/threadline/ThreadResumeMap.js.map +1 -1
  45. package/dist/threadline/WarmSessionPool.d.ts +62 -0
  46. package/dist/threadline/WarmSessionPool.d.ts.map +1 -0
  47. package/dist/threadline/WarmSessionPool.js +116 -0
  48. package/dist/threadline/WarmSessionPool.js.map +1 -0
  49. package/package.json +1 -1
  50. package/src/data/builtin-manifest.json +47 -47
  51. package/upgrades/1.3.238.md +68 -0
  52. package/upgrades/1.3.239.md +96 -0
  53. package/upgrades/mentor-tick-cycle-capture.eli16.md +18 -0
  54. package/upgrades/side-effects/gemini-loop-driver-wiring.md +59 -0
  55. package/upgrades/side-effects/mentor-tick-cycle-capture.md +39 -0
  56. package/upgrades/side-effects/parallel-activity-coherence.md +9 -0
  57. package/upgrades/side-effects/threadline-a2a-live-inject.md +60 -0
  58. package/upgrades/threadline-a2a-live-inject.eli16.md +30 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA0SH,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,CAqnQtE;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;AA0SH,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,CA6pQtE;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"}
@@ -14,7 +14,7 @@ import path from 'node:path';
14
14
  import { fileURLToPath } from 'node:url';
15
15
  import pc from 'picocolors';
16
16
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
17
- import { loadConfig, ensureStateDir, detectTmuxPath } from '../core/Config.js';
17
+ import { loadConfig, ensureStateDir, detectTmuxPath, detectGeminiPath } from '../core/Config.js';
18
18
  import { isNonFatalUncaught, shouldLogStackForUncaught } from '../core/uncaughtExceptionPolicy.js';
19
19
  import { closeAllSqlite } from '../core/SqliteRegistry.js';
20
20
  import { SessionManager } from '../core/SessionManager.js';
@@ -7126,7 +7126,12 @@ export async function startServer(options) {
7126
7126
  // messages from trusted agents.
7127
7127
  codexAllowMcpTools: true,
7128
7128
  });
7129
- return session.id;
7129
+ // Return BOTH ids: spawnNewThread persists `tmuxSession` as the resume
7130
+ // entry's sessionName (the REAL `echo-msg-spawn-<ts>`), so live-inject /
7131
+ // resume-while-alive and onSessionComplete's getBySessionName can find the
7132
+ // running session. Returning only the bare id stamped a useless fallback
7133
+ // name and made every A2A follow-up cold-spawn (the continuity break).
7134
+ return { sessionId: session.id, tmuxSession: session.tmuxSession };
7130
7135
  },
7131
7136
  isMemoryPressureHigh: memoryMonitor
7132
7137
  ? () => {
@@ -8552,6 +8557,39 @@ export async function startServer(options) {
8552
8557
  ? ' McpProcessReaper enabled (leaked-MCP reclaim — LIVE)'
8553
8558
  : ' McpProcessReaper enabled (leaked-MCP reclaim — dry-run, report only)'));
8554
8559
  }
8560
+ // ── GeminiLoopRunner (need-gem-002) — multi-turn gemini loop-driver ──────────
8561
+ // Lets the gemini mentee sustain a multi-turn task: turn 1 one-shot establishes
8562
+ // a session, later turns re-spawn `gemini -r <handle>` so context restores
8563
+ // natively (no transcript re-send → quota-efficient). Subscription-auth is
8564
+ // structural (the transport strips billing env). Ships DARK
8565
+ // (autonomousSessions.geminiLoopDriver.enabled); the developmentAgent gate turns
8566
+ // it on for dev agents only. Powers POST + GET /gemini-loop/runs.
8567
+ let geminiLoopRunner = null;
8568
+ {
8569
+ const gcfg = config.autonomousSessions?.geminiLoopDriver;
8570
+ const enabled = gcfg?.enabled ?? !!config.developmentAgent; // dark fleet-wide; live on dev agents
8571
+ if (enabled) {
8572
+ const { GeminiLoopRunner } = await import('../monitoring/GeminiLoopRunner.js');
8573
+ const { createGeminiLoopSpawn, createGeminiHandleCapture, createQuotaBudgetGate } = await import('../monitoring/geminiLoopProduction.js');
8574
+ const geminiPath = detectGeminiPath() ?? 'gemini';
8575
+ const turnTimeoutMs = gcfg?.turnTimeoutMs ?? 180_000;
8576
+ geminiLoopRunner = new GeminiLoopRunner({
8577
+ config: {
8578
+ enabled: true,
8579
+ model: gcfg?.model ?? 'gemini-2.5-flash',
8580
+ maxTurns: gcfg?.maxTurns ?? 12,
8581
+ minTurnIntervalMs: gcfg?.minTurnIntervalMs ?? 2_000,
8582
+ maxConcurrent: gcfg?.maxConcurrent ?? 1,
8583
+ maxRetainedRuns: gcfg?.maxRetainedRuns ?? 50,
8584
+ },
8585
+ spawn: createGeminiLoopSpawn(geminiPath, turnTimeoutMs),
8586
+ captureHandle: createGeminiHandleCapture(geminiPath),
8587
+ budgetGate: createQuotaBudgetGate(quotaTracker ?? null),
8588
+ log: (msg) => console.log(pc.dim(msg)),
8589
+ });
8590
+ console.log(pc.green(' GeminiLoopRunner enabled (multi-turn gemini mentee, subscription auth)'));
8591
+ }
8592
+ }
8555
8593
  // ── Agent hard-sleep — SleepController (RESPONSIBLE-RESOURCE-USAGE, Stage B) ──
8556
8594
  // Decides "is it safe for this idle agent to drop to near-zero footprint?" with
8557
8595
  // every safety guard. Ships OFF + dry-run: observes + audits to
@@ -9322,7 +9360,7 @@ export async function startServer(options) {
9322
9360
  catch (err) {
9323
9361
  console.log(pc.dim(` [session-pool] rollout gate not wired: ${err instanceof Error ? err.message : String(err)}`));
9324
9362
  }
9325
- 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, sleepController, agentActivityState, reapLog, sleepWakeDetector, unjustifiedStopGate, stopGateDb, stopNotifier });
9363
+ 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 });
9326
9364
  // Boot-recovery (tunnel-failure-resilience spec Part 6): if the agent
9327
9365
  // died mid-relay-episode, the persisted tunnel.json carries
9328
9366
  // rotationPending=true. Rotate the dashboard PIN + authToken BEFORE