instar 1.2.67 → 1.2.69
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 +50 -1
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +9 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/PostUpdateMigrator.d.ts +12 -0
- package/dist/core/PostUpdateMigrator.d.ts.map +1 -1
- package/dist/core/PostUpdateMigrator.js +138 -0
- package/dist/core/PostUpdateMigrator.js.map +1 -1
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +3 -0
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/core/StandardsRegistryParser.d.ts +50 -0
- package/dist/core/StandardsRegistryParser.d.ts.map +1 -0
- package/dist/core/StandardsRegistryParser.js +120 -0
- package/dist/core/StandardsRegistryParser.js.map +1 -0
- package/dist/core/reviewers/standards-conformance.d.ts +49 -0
- package/dist/core/reviewers/standards-conformance.d.ts.map +1 -0
- package/dist/core/reviewers/standards-conformance.js +120 -0
- package/dist/core/reviewers/standards-conformance.js.map +1 -0
- package/dist/core/types.d.ts +10 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/providers/adapters/anthropic-headless/transport/agenticSessionHeadless.d.ts.map +1 -1
- package/dist/providers/adapters/anthropic-headless/transport/agenticSessionHeadless.js +1 -0
- package/dist/providers/adapters/anthropic-headless/transport/agenticSessionHeadless.js.map +1 -1
- package/dist/providers/adapters/openai-codex/transport/agenticSessionHeadless.d.ts.map +1 -1
- package/dist/providers/adapters/openai-codex/transport/agenticSessionHeadless.js +1 -0
- package/dist/providers/adapters/openai-codex/transport/agenticSessionHeadless.js.map +1 -1
- package/dist/providers/adapters/openai-codex/transport/codexSpawn.d.ts +2 -0
- package/dist/providers/adapters/openai-codex/transport/codexSpawn.d.ts.map +1 -1
- package/dist/providers/adapters/openai-codex/transport/codexSpawn.js +4 -0
- package/dist/providers/adapters/openai-codex/transport/codexSpawn.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 +21 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/CapabilityIndex.d.ts.map +1 -1
- package/dist/server/CapabilityIndex.js +1 -0
- package/dist/server/CapabilityIndex.js.map +1 -1
- package/dist/server/routes.d.ts +6 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +60 -1
- package/dist/server/routes.js.map +1 -1
- package/dist/server/specReviewRoutes.d.ts +32 -0
- package/dist/server/specReviewRoutes.d.ts.map +1 -0
- package/dist/server/specReviewRoutes.js +120 -0
- package/dist/server/specReviewRoutes.js.map +1 -0
- package/dist/threadline/ConversationStore.d.ts +158 -0
- package/dist/threadline/ConversationStore.d.ts.map +1 -0
- package/dist/threadline/ConversationStore.js +341 -0
- package/dist/threadline/ConversationStore.js.map +1 -0
- package/dist/threadline/ThreadlineRouter.d.ts.map +1 -1
- package/dist/threadline/ThreadlineRouter.js +24 -0
- package/dist/threadline/ThreadlineRouter.js.map +1 -1
- package/dist/threadline/WarrantsReplyGate.d.ts +110 -0
- package/dist/threadline/WarrantsReplyGate.d.ts.map +1 -0
- package/dist/threadline/WarrantsReplyGate.js +263 -0
- package/dist/threadline/WarrantsReplyGate.js.map +1 -0
- package/dist/threadline/mcp-http-client.d.ts.map +1 -1
- package/dist/threadline/mcp-http-client.js +6 -0
- package/dist/threadline/mcp-http-client.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +63 -63
- package/upgrades/1.2.68.md +97 -0
- package/upgrades/1.2.69.md +73 -0
- package/upgrades/side-effects/standards-conformance-gate.md +87 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
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"}
|
package/dist/commands/server.js
CHANGED
|
@@ -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, intelligence: sharedIntelligence ?? undefined, 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
|