instar 1.2.67 → 1.2.68

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 (45) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +50 -1
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/core/PostUpdateMigrator.d.ts +12 -0
  5. package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
  6. package/dist/core/PostUpdateMigrator.js +138 -0
  7. package/dist/core/PostUpdateMigrator.js.map +1 -1
  8. package/dist/core/SessionManager.d.ts.map +1 -1
  9. package/dist/core/SessionManager.js +3 -0
  10. package/dist/core/SessionManager.js.map +1 -1
  11. package/dist/providers/adapters/anthropic-headless/transport/agenticSessionHeadless.d.ts.map +1 -1
  12. package/dist/providers/adapters/anthropic-headless/transport/agenticSessionHeadless.js +1 -0
  13. package/dist/providers/adapters/anthropic-headless/transport/agenticSessionHeadless.js.map +1 -1
  14. package/dist/providers/adapters/openai-codex/transport/agenticSessionHeadless.d.ts.map +1 -1
  15. package/dist/providers/adapters/openai-codex/transport/agenticSessionHeadless.js +1 -0
  16. package/dist/providers/adapters/openai-codex/transport/agenticSessionHeadless.js.map +1 -1
  17. package/dist/providers/adapters/openai-codex/transport/codexSpawn.d.ts +2 -0
  18. package/dist/providers/adapters/openai-codex/transport/codexSpawn.d.ts.map +1 -1
  19. package/dist/providers/adapters/openai-codex/transport/codexSpawn.js +4 -0
  20. package/dist/providers/adapters/openai-codex/transport/codexSpawn.js.map +1 -1
  21. package/dist/server/AgentServer.d.ts +4 -0
  22. package/dist/server/AgentServer.d.ts.map +1 -1
  23. package/dist/server/AgentServer.js +2 -0
  24. package/dist/server/AgentServer.js.map +1 -1
  25. package/dist/server/routes.d.ts +6 -0
  26. package/dist/server/routes.d.ts.map +1 -1
  27. package/dist/server/routes.js +60 -1
  28. package/dist/server/routes.js.map +1 -1
  29. package/dist/threadline/ConversationStore.d.ts +158 -0
  30. package/dist/threadline/ConversationStore.d.ts.map +1 -0
  31. package/dist/threadline/ConversationStore.js +341 -0
  32. package/dist/threadline/ConversationStore.js.map +1 -0
  33. package/dist/threadline/ThreadlineRouter.d.ts.map +1 -1
  34. package/dist/threadline/ThreadlineRouter.js +24 -0
  35. package/dist/threadline/ThreadlineRouter.js.map +1 -1
  36. package/dist/threadline/WarrantsReplyGate.d.ts +110 -0
  37. package/dist/threadline/WarrantsReplyGate.d.ts.map +1 -0
  38. package/dist/threadline/WarrantsReplyGate.js +263 -0
  39. package/dist/threadline/WarrantsReplyGate.js.map +1 -0
  40. package/dist/threadline/mcp-http-client.d.ts.map +1 -1
  41. package/dist/threadline/mcp-http-client.js +6 -0
  42. package/dist/threadline/mcp-http-client.js.map +1 -1
  43. package/package.json +1 -1
  44. package/src/data/builtin-manifest.json +63 -63
  45. package/upgrades/1.2.68.md +97 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAuQH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAiqDD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA+6LtE;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;AAyQH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAiqDD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA89LtE;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"}
@@ -94,6 +94,8 @@ import { SpawnRequestManager } from '../messaging/SpawnRequestManager.js';
94
94
  import { ThreadlineRouter } from '../threadline/ThreadlineRouter.js';
95
95
  import { resolveThreadlineMcpEntry } from '../threadline/mcpEntry.js';
96
96
  import { ThreadResumeMap } from '../threadline/ThreadResumeMap.js';
97
+ import { ConversationStore } from '../threadline/ConversationStore.js';
98
+ import { WarrantsReplyGate, evaluateAndRecordInbound } from '../threadline/WarrantsReplyGate.js';
97
99
  import { ListenerSessionManager } from '../threadline/ListenerSessionManager.js';
98
100
  import { SystemReviewer } from '../monitoring/SystemReviewer.js';
99
101
  import { createSessionProbes } from '../monitoring/probes/SessionProbe.js';
@@ -5941,6 +5943,12 @@ export async function startServer(options) {
5941
5943
  const messageStore = new MessageStore(path.join(config.stateDir, 'messages'));
5942
5944
  await messageStore.initialize();
5943
5945
  const threadResumeMap = new ThreadResumeMap(config.stateDir, config.stateDir);
5946
+ // Threadline Phase 1 keystone: the Conversation single-source-of-truth +
5947
+ // the warrants-a-reply gate. The gate runs once at the relay inbound funnel
5948
+ // (below), upstream of all three routing branches, with turn/novelty state
5949
+ // living on the Conversation (the one-shot worker can't self-police a loop).
5950
+ const conversationStore = new ConversationStore(config.stateDir);
5951
+ const warrantsReplyGate = new WarrantsReplyGate({ intelligence: sharedIntelligence });
5944
5952
  const messageFormatter = new MessageFormatter();
5945
5953
  const tmuxBin = config.sessions.tmuxPath;
5946
5954
  const tmuxOps = {
@@ -6533,6 +6541,47 @@ export async function startServer(options) {
6533
6541
  })
6534
6542
  .catch(err => console.warn(`[tg-bridge] mirrorInbound: ${err instanceof Error ? err.message : err}`));
6535
6543
  }
6544
+ // Phase 1 keystone: warrants-a-reply gate. Runs ONCE here, UPSTREAM of
6545
+ // all three routing branches (pipe-spawn / warm-listener / cold-spawn),
6546
+ // so a no-reply verdict short-circuits ALL of them — the observed
6547
+ // ack-loop rides the pipe/listener branches, which never reach
6548
+ // ThreadlineRouter, so a router-only gate would not stop it. Turn +
6549
+ // novelty state lives on the Conversation, not the one-shot worker.
6550
+ {
6551
+ const gateThreadId = msg.threadId ?? getSyntheticThreadId(senderFingerprint);
6552
+ try {
6553
+ // Relay inbound is agent-to-agent → autonomous (stricter). The
6554
+ // human-in-loop exemption is derived ONLY from our own records and
6555
+ // is never set from anything the peer sends (unforgeable).
6556
+ const decision = await evaluateAndRecordInbound(warrantsReplyGate, conversationStore, {
6557
+ threadId: gateThreadId,
6558
+ text: textContent,
6559
+ senderFingerprint,
6560
+ senderName,
6561
+ trustLevel,
6562
+ humanInLoop: false,
6563
+ });
6564
+ if (decision.suppress) {
6565
+ console.log(`[relay] warrants-reply gate suppressed reply (${decision.verdict.signal}) for ${senderName} thread ${gateThreadId.slice(0, 8)}`);
6566
+ // On budget exhaustion, escalate ONE attention item — never silently drop.
6567
+ if (decision.verdict.budgetExhausted && telegram) {
6568
+ telegram.createAttentionItem({
6569
+ id: `threadline-loop-${gateThreadId.slice(0, 12)}`,
6570
+ title: `Threadline conversation loop wound down (${senderName})`,
6571
+ summary: `Stopped auto-replying to an agent-to-agent thread that kept going with no new content.`,
6572
+ description: `An agent-to-agent thread with ${senderName} kept exchanging messages with no new content, so I stopped auto-replying to keep it from looping. Thread ${gateThreadId.slice(0, 8)}. Let me know if you want me to re-engage.`,
6573
+ category: 'threadline-loop-gate',
6574
+ priority: 'LOW',
6575
+ }).catch(escErr => console.warn(`[relay] loop-gate attention escalation failed: ${escErr instanceof Error ? escErr.message : escErr}`));
6576
+ }
6577
+ return; // short-circuit ALL three routing branches
6578
+ }
6579
+ }
6580
+ catch (gateErr) {
6581
+ // Gate failure → fail toward responsive (never silently drop a message).
6582
+ console.warn(`[relay] warrants-reply gate error (defaulting responsive): ${gateErr instanceof Error ? gateErr.message : gateErr}`);
6583
+ }
6584
+ }
6536
6585
  // Phase 2a: Pipe-mode session for simple queries (lightweight, auto-exit)
6537
6586
  // Rapid-fire same-thread guard: if an active pipe session already exists for this
6538
6587
  // thread, fall through to the listener/cold-spawn path so messages queue serially
@@ -7050,7 +7099,7 @@ export async function startServer(options) {
7050
7099
  },
7051
7100
  });
7052
7101
  }
7053
- 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, messageRouter, summarySentinel, spawnManager, systemReviewer, capabilityMapper, selfKnowledgeTree, coverageAuditor, topicResumeMap: _topicResumeMap ?? undefined, sessionRefresh: _sessionRefresh ?? undefined, autonomyManager, trustElevationTracker, autonomousEvolution, coordinator: coordinator.enabled ? coordinator : undefined, localSigningKeyPem, whatsapp: whatsappAdapter, slack: slackAdapter, imessage: imessageAdapter, whatsappBusinessBackend, messageBridge, hookEventReceiver, worktreeMonitor, subagentTracker, instructionsVerifier, handshakeManager: threadlineHandshake, threadlineRouter, 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, proxyCoordinator, topicIntentStore, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, workingMemory, taskFlowRegistry, threadlineFlowBridge });
7102
+ 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, messageRouter, summarySentinel, spawnManager, systemReviewer, capabilityMapper, selfKnowledgeTree, coverageAuditor, topicResumeMap: _topicResumeMap ?? undefined, sessionRefresh: _sessionRefresh ?? undefined, autonomyManager, trustElevationTracker, autonomousEvolution, coordinator: coordinator.enabled ? coordinator : undefined, localSigningKeyPem, whatsapp: whatsappAdapter, slack: slackAdapter, imessage: imessageAdapter, whatsappBusinessBackend, messageBridge, hookEventReceiver, worktreeMonitor, subagentTracker, instructionsVerifier, handshakeManager: threadlineHandshake, threadlineRouter, conversationStore, warrantsReplyGate, 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, proxyCoordinator, topicIntentStore, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, workingMemory, taskFlowRegistry, threadlineFlowBridge });
7054
7103
  // Boot-recovery (tunnel-failure-resilience spec Part 6): if the agent
7055
7104
  // died mid-relay-episode, the persisted tunnel.json carries
7056
7105
  // rotationPending=true. Rotate the dashboard PIN + authToken BEFORE