instar 1.2.78 → 1.2.80
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 +37 -6
- package/dist/commands/server.js.map +1 -1
- package/dist/server/AgentServer.d.ts +1 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +1 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/routes.d.ts +12 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +37 -5
- package/dist/server/routes.js.map +1 -1
- package/dist/threadline/CollaborationSurfacer.d.ts +72 -0
- package/dist/threadline/CollaborationSurfacer.d.ts.map +1 -0
- package/dist/threadline/CollaborationSurfacer.js +122 -0
- package/dist/threadline/CollaborationSurfacer.js.map +1 -0
- package/dist/threadline/TopicLinkageHandler.d.ts.map +1 -1
- package/dist/threadline/TopicLinkageHandler.js +16 -11
- package/dist/threadline/TopicLinkageHandler.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +47 -47
- package/upgrades/1.2.79.md +68 -0
- package/upgrades/1.2.80.md +28 -0
- package/upgrades/side-effects/enable-layer-coherence.md +74 -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;AA0QH,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,CAmjMtE;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
|
@@ -96,6 +96,7 @@ import { resolveThreadlineMcpEntry } from '../threadline/mcpEntry.js';
|
|
|
96
96
|
import { ThreadResumeMap } from '../threadline/ThreadResumeMap.js';
|
|
97
97
|
import { ConversationStore } from '../threadline/ConversationStore.js';
|
|
98
98
|
import { WarrantsReplyGate, evaluateAndRecordInbound } from '../threadline/WarrantsReplyGate.js';
|
|
99
|
+
import { CollaborationSurfacer } from '../threadline/CollaborationSurfacer.js';
|
|
99
100
|
import { ListenerSessionManager } from '../threadline/ListenerSessionManager.js';
|
|
100
101
|
import { SystemReviewer } from '../monitoring/SystemReviewer.js';
|
|
101
102
|
import { createSessionProbes } from '../monitoring/probes/SessionProbe.js';
|
|
@@ -2371,14 +2372,23 @@ export async function startServer(options) {
|
|
|
2371
2372
|
});
|
|
2372
2373
|
console.log(pc.green(` Quota tracking enabled (${quotaFile})`));
|
|
2373
2374
|
}
|
|
2374
|
-
// Set up opt-in telemetry heartbeat
|
|
2375
|
+
// Set up opt-in telemetry heartbeat.
|
|
2376
|
+
// ALWAYS construct, even when disabled — fixes the chicken-and-egg deadlock
|
|
2377
|
+
// where POST /telemetry/enable returned 503 because the subsystem was only
|
|
2378
|
+
// constructed when telemetry was already enabled at boot (so it could never
|
|
2379
|
+
// be turned on through its own endpoint). Construction is cheap and pure;
|
|
2380
|
+
// the side-effects (.start()/submit()) already self-gate on `config.enabled`
|
|
2381
|
+
// inside TelemetryHeartbeat, so an always-constructed-but-disabled heartbeat
|
|
2382
|
+
// never starts a loop and never submits. Spec: docs/specs/enable-layer-coherence.md
|
|
2375
2383
|
let telemetryHeartbeat;
|
|
2376
|
-
|
|
2384
|
+
{
|
|
2377
2385
|
const { TelemetryHeartbeat } = await import('../monitoring/TelemetryHeartbeat.js');
|
|
2378
|
-
telemetryHeartbeat = new TelemetryHeartbeat(config.monitoring
|
|
2386
|
+
telemetryHeartbeat = new TelemetryHeartbeat(config.monitoring?.telemetry ?? { enabled: false }, config.stateDir, config.projectDir, config.version || 'unknown');
|
|
2379
2387
|
// Note: .start() is deferred until after scheduler is available so
|
|
2380
|
-
// TelemetryCollector can be wired
|
|
2381
|
-
|
|
2388
|
+
// TelemetryCollector can be wired; .start() itself no-ops when disabled.
|
|
2389
|
+
if (config.monitoring?.telemetry?.enabled) {
|
|
2390
|
+
console.log(pc.green(` Telemetry: enabled (${config.monitoring.telemetry.level || 'basic'} level, every ${Math.round((config.monitoring.telemetry.intervalMs || 21600000) / 3600000)}h)`));
|
|
2391
|
+
}
|
|
2382
2392
|
}
|
|
2383
2393
|
// ── Prompt Gate: detect and handle interactive prompts in sessions ──
|
|
2384
2394
|
const promptGateConfig = config.monitoring?.promptGate;
|
|
@@ -5999,6 +6009,12 @@ export async function startServer(options) {
|
|
|
5999
6009
|
// living on the Conversation (the one-shot worker can't self-police a loop).
|
|
6000
6010
|
const conversationStore = new ConversationStore(config.stateDir);
|
|
6001
6011
|
const warrantsReplyGate = new WarrantsReplyGate({ intelligence: sharedIntelligence });
|
|
6012
|
+
// CMT-509 §2: surface PARENTLESS Threadline conversations into a single
|
|
6013
|
+
// dedicated topic so a peer reaching out cold is visible (not an invisible
|
|
6014
|
+
// side channel). Topic-bound conversations surface via TopicLinkageHandler.
|
|
6015
|
+
const collaborationSurfacer = telegram
|
|
6016
|
+
? new CollaborationSurfacer({ telegram, stateDir: config.stateDir })
|
|
6017
|
+
: undefined;
|
|
6002
6018
|
const messageFormatter = new MessageFormatter();
|
|
6003
6019
|
const tmuxBin = config.sessions.tmuxPath;
|
|
6004
6020
|
const tmuxOps = {
|
|
@@ -6626,6 +6642,21 @@ export async function startServer(options) {
|
|
|
6626
6642
|
}
|
|
6627
6643
|
return; // short-circuit ALL three routing branches
|
|
6628
6644
|
}
|
|
6645
|
+
// CMT-509 §2: warranted + PARENTLESS conversation (no bound topic)
|
|
6646
|
+
// → surface to the dedicated Threadline topic so the operator sees
|
|
6647
|
+
// a peer reaching out cold. Topic-bound conversations are surfaced by
|
|
6648
|
+
// TopicLinkageHandler instead, so we skip them here. Best-effort,
|
|
6649
|
+
// non-blocking; never breaks the inbound path.
|
|
6650
|
+
if (collaborationSurfacer) {
|
|
6651
|
+
const hasParentTopic = conversationStore.get(gateThreadId)?.boundTopicId != null;
|
|
6652
|
+
void collaborationSurfacer.surface({
|
|
6653
|
+
threadId: gateThreadId,
|
|
6654
|
+
senderName,
|
|
6655
|
+
text: textContent,
|
|
6656
|
+
hasParentTopic,
|
|
6657
|
+
warrants: !decision.suppress,
|
|
6658
|
+
});
|
|
6659
|
+
}
|
|
6629
6660
|
}
|
|
6630
6661
|
catch (gateErr) {
|
|
6631
6662
|
// Gate failure → fail toward responsive (never silently drop a message).
|
|
@@ -7149,7 +7180,7 @@ export async function startServer(options) {
|
|
|
7149
7180
|
},
|
|
7150
7181
|
});
|
|
7151
7182
|
}
|
|
7152
|
-
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, usherSignalStore, intelligence: sharedIntelligence ?? undefined, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, workingMemory, taskFlowRegistry, threadlineFlowBridge });
|
|
7183
|
+
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, 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, proxyCoordinator, topicIntentStore, usherSignalStore, intelligence: sharedIntelligence ?? undefined, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, workingMemory, taskFlowRegistry, threadlineFlowBridge });
|
|
7153
7184
|
// Boot-recovery (tunnel-failure-resilience spec Part 6): if the agent
|
|
7154
7185
|
// died mid-relay-episode, the persisted tunnel.json carries
|
|
7155
7186
|
// rotationPending=true. Rotate the dashboard PIN + authToken BEFORE
|