instar 0.17.3 → 0.17.6
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 +77 -1
- package/dist/commands/server.js.map +1 -1
- package/dist/core/ClaudeCliIntelligenceProvider.d.ts.map +1 -1
- package/dist/core/ClaudeCliIntelligenceProvider.js +3 -0
- package/dist/core/ClaudeCliIntelligenceProvider.js.map +1 -1
- package/dist/core/Config.d.ts.map +1 -1
- package/dist/core/Config.js +4 -1
- package/dist/core/Config.js.map +1 -1
- package/dist/core/InputGuard.d.ts +98 -0
- package/dist/core/InputGuard.d.ts.map +1 -0
- package/dist/core/InputGuard.js +316 -0
- package/dist/core/InputGuard.js.map +1 -0
- package/dist/core/SessionManager.d.ts +24 -1
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +134 -1
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/core/types.d.ts +29 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/messaging/TelegramAdapter.d.ts.map +1 -1
- package/dist/messaging/TelegramAdapter.js +10 -2
- package/dist/messaging/TelegramAdapter.js.map +1 -1
- package/dist/monitoring/QuotaCollector.d.ts +14 -0
- package/dist/monitoring/QuotaCollector.d.ts.map +1 -1
- package/dist/monitoring/QuotaCollector.js +30 -1
- package/dist/monitoring/QuotaCollector.js.map +1 -1
- package/dist/monitoring/TelemetryHeartbeat.d.ts +99 -0
- package/dist/monitoring/TelemetryHeartbeat.d.ts.map +1 -0
- package/dist/monitoring/TelemetryHeartbeat.js +216 -0
- package/dist/monitoring/TelemetryHeartbeat.js.map +1 -0
- 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 +1 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +52 -0
- package/dist/server/routes.js.map +1 -1
- package/dist/threadline/adapters/AutoGenTool.d.ts +42 -0
- package/dist/threadline/adapters/AutoGenTool.d.ts.map +1 -0
- package/dist/threadline/adapters/AutoGenTool.js +145 -0
- package/dist/threadline/adapters/AutoGenTool.js.map +1 -0
- package/dist/threadline/adapters/CrewAITool.d.ts +31 -0
- package/dist/threadline/adapters/CrewAITool.d.ts.map +1 -0
- package/dist/threadline/adapters/CrewAITool.js +112 -0
- package/dist/threadline/adapters/CrewAITool.js.map +1 -0
- package/dist/threadline/adapters/LangGraphTool.d.ts +48 -0
- package/dist/threadline/adapters/LangGraphTool.d.ts.map +1 -0
- package/dist/threadline/adapters/LangGraphTool.js +153 -0
- package/dist/threadline/adapters/LangGraphTool.js.map +1 -0
- package/dist/threadline/adapters/RESTServer.d.ts +74 -0
- package/dist/threadline/adapters/RESTServer.d.ts.map +1 -0
- package/dist/threadline/adapters/RESTServer.js +291 -0
- package/dist/threadline/adapters/RESTServer.js.map +1 -0
- package/dist/threadline/adapters/index.d.ts +14 -0
- package/dist/threadline/adapters/index.d.ts.map +1 -0
- package/dist/threadline/adapters/index.js +10 -0
- package/dist/threadline/adapters/index.js.map +1 -0
- package/dist/threadline/client/IdentityManager.d.ts +40 -0
- package/dist/threadline/client/IdentityManager.d.ts.map +1 -0
- package/dist/threadline/client/IdentityManager.js +106 -0
- package/dist/threadline/client/IdentityManager.js.map +1 -0
- package/dist/threadline/client/MessageEncryptor.d.ts +63 -0
- package/dist/threadline/client/MessageEncryptor.d.ts.map +1 -0
- package/dist/threadline/client/MessageEncryptor.js +195 -0
- package/dist/threadline/client/MessageEncryptor.js.map +1 -0
- package/dist/threadline/client/RelayClient.d.ts +77 -0
- package/dist/threadline/client/RelayClient.d.ts.map +1 -0
- package/dist/threadline/client/RelayClient.js +245 -0
- package/dist/threadline/client/RelayClient.js.map +1 -0
- package/dist/threadline/client/ThreadlineClient.d.ts +89 -0
- package/dist/threadline/client/ThreadlineClient.d.ts.map +1 -0
- package/dist/threadline/client/ThreadlineClient.js +182 -0
- package/dist/threadline/client/ThreadlineClient.js.map +1 -0
- package/dist/threadline/client/index.d.ts +12 -0
- package/dist/threadline/client/index.d.ts.map +1 -0
- package/dist/threadline/client/index.js +8 -0
- package/dist/threadline/client/index.js.map +1 -0
- package/dist/threadline/index.d.ts +14 -0
- package/dist/threadline/index.d.ts.map +1 -1
- package/dist/threadline/index.js +12 -0
- package/dist/threadline/index.js.map +1 -1
- package/dist/threadline/relay/A2ABridge.d.ts +91 -0
- package/dist/threadline/relay/A2ABridge.d.ts.map +1 -0
- package/dist/threadline/relay/A2ABridge.js +457 -0
- package/dist/threadline/relay/A2ABridge.js.map +1 -0
- package/dist/threadline/relay/AbuseDetector.d.ts +131 -0
- package/dist/threadline/relay/AbuseDetector.d.ts.map +1 -0
- package/dist/threadline/relay/AbuseDetector.js +358 -0
- package/dist/threadline/relay/AbuseDetector.js.map +1 -0
- package/dist/threadline/relay/AdminServer.d.ts +55 -0
- package/dist/threadline/relay/AdminServer.d.ts.map +1 -0
- package/dist/threadline/relay/AdminServer.js +215 -0
- package/dist/threadline/relay/AdminServer.js.map +1 -0
- package/dist/threadline/relay/ConnectionManager.d.ts +76 -0
- package/dist/threadline/relay/ConnectionManager.d.ts.map +1 -0
- package/dist/threadline/relay/ConnectionManager.js +287 -0
- package/dist/threadline/relay/ConnectionManager.js.map +1 -0
- package/dist/threadline/relay/MessageRouter.d.ts +46 -0
- package/dist/threadline/relay/MessageRouter.d.ts.map +1 -0
- package/dist/threadline/relay/MessageRouter.js +138 -0
- package/dist/threadline/relay/MessageRouter.js.map +1 -0
- package/dist/threadline/relay/OfflineQueue.d.ts +87 -0
- package/dist/threadline/relay/OfflineQueue.d.ts.map +1 -0
- package/dist/threadline/relay/OfflineQueue.js +137 -0
- package/dist/threadline/relay/OfflineQueue.js.map +1 -0
- package/dist/threadline/relay/PresenceRegistry.d.ts +62 -0
- package/dist/threadline/relay/PresenceRegistry.d.ts.map +1 -0
- package/dist/threadline/relay/PresenceRegistry.js +148 -0
- package/dist/threadline/relay/PresenceRegistry.js.map +1 -0
- package/dist/threadline/relay/RelayMetrics.d.ts +62 -0
- package/dist/threadline/relay/RelayMetrics.d.ts.map +1 -0
- package/dist/threadline/relay/RelayMetrics.js +149 -0
- package/dist/threadline/relay/RelayMetrics.js.map +1 -0
- package/dist/threadline/relay/RelayRateLimiter.d.ts +58 -0
- package/dist/threadline/relay/RelayRateLimiter.d.ts.map +1 -0
- package/dist/threadline/relay/RelayRateLimiter.js +116 -0
- package/dist/threadline/relay/RelayRateLimiter.js.map +1 -0
- package/dist/threadline/relay/RelayServer.d.ts +68 -0
- package/dist/threadline/relay/RelayServer.d.ts.map +1 -0
- package/dist/threadline/relay/RelayServer.js +487 -0
- package/dist/threadline/relay/RelayServer.js.map +1 -0
- package/dist/threadline/relay/index.d.ts +24 -0
- package/dist/threadline/relay/index.d.ts.map +1 -0
- package/dist/threadline/relay/index.js +15 -0
- package/dist/threadline/relay/index.js.map +1 -0
- package/dist/threadline/relay/types.d.ts +197 -0
- package/dist/threadline/relay/types.d.ts.map +1 -0
- package/dist/threadline/relay/types.js +21 -0
- package/dist/threadline/relay/types.js.map +1 -0
- package/package.json +2 -1
- package/src/data/builtin-manifest.json +48 -48
- package/src/templates/hooks/session-start.sh +30 -0
- package/upgrades/0.17.4.md +27 -0
- package/upgrades/0.17.5.md +32 -0
- package/upgrades/0.17.6.md +32 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA+OH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA+7BD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA+OH,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;2DACuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA+7BD,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAohEtE;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
|
@@ -1343,6 +1343,27 @@ export async function startServer(options) {
|
|
|
1343
1343
|
}
|
|
1344
1344
|
}
|
|
1345
1345
|
const sessionManager = new SessionManager(config.sessions, state);
|
|
1346
|
+
// Input Guard — cross-topic injection defense (Layer 1 + 1.5 + 2)
|
|
1347
|
+
if (config.inputGuard?.enabled !== false) {
|
|
1348
|
+
const guardConfig = config.inputGuard ?? { enabled: true };
|
|
1349
|
+
const anthropicKey = process.env['ANTHROPIC_API_KEY']?.trim();
|
|
1350
|
+
const { InputGuard } = await import('../core/InputGuard.js');
|
|
1351
|
+
const inputGuard = new InputGuard({
|
|
1352
|
+
config: {
|
|
1353
|
+
enabled: true,
|
|
1354
|
+
provenanceCheck: guardConfig.provenanceCheck ?? true,
|
|
1355
|
+
injectionPatterns: guardConfig.injectionPatterns ?? true,
|
|
1356
|
+
topicCoherenceReview: guardConfig.topicCoherenceReview ?? true,
|
|
1357
|
+
action: guardConfig.action ?? 'warn',
|
|
1358
|
+
reviewTimeout: guardConfig.reviewTimeout ?? 3000,
|
|
1359
|
+
},
|
|
1360
|
+
stateDir: config.stateDir,
|
|
1361
|
+
apiKey: anthropicKey,
|
|
1362
|
+
});
|
|
1363
|
+
const registryPath = path.join(config.stateDir, 'topic-session-registry.json');
|
|
1364
|
+
sessionManager.setInputGuard(inputGuard, registryPath);
|
|
1365
|
+
console.log(pc.green(` Input Guard: enabled (action: ${guardConfig.action ?? 'warn'})`));
|
|
1366
|
+
}
|
|
1346
1367
|
// TopicResumeMap: persist Claude session UUIDs across session restarts.
|
|
1347
1368
|
// When a session is killed/restarted, we save its UUID so the next spawn
|
|
1348
1369
|
// can use --resume to reattach to the existing conversation context.
|
|
@@ -1412,6 +1433,14 @@ export async function startServer(options) {
|
|
|
1412
1433
|
});
|
|
1413
1434
|
console.log(pc.green(` Quota tracking enabled (${quotaFile})`));
|
|
1414
1435
|
}
|
|
1436
|
+
// Set up opt-in telemetry heartbeat
|
|
1437
|
+
let telemetryHeartbeat;
|
|
1438
|
+
if (config.monitoring?.telemetry?.enabled) {
|
|
1439
|
+
const { TelemetryHeartbeat } = await import('../monitoring/TelemetryHeartbeat.js');
|
|
1440
|
+
telemetryHeartbeat = new TelemetryHeartbeat(config.monitoring.telemetry, config.stateDir, config.projectDir, config.version || 'unknown');
|
|
1441
|
+
telemetryHeartbeat.start();
|
|
1442
|
+
console.log(pc.green(` Telemetry: enabled (${config.monitoring.telemetry.level || 'basic'} level, every ${Math.round((config.monitoring.telemetry.intervalMs || 21600000) / 3600000)}h)`));
|
|
1443
|
+
}
|
|
1415
1444
|
let scheduler;
|
|
1416
1445
|
if (config.scheduler.enabled && coordinator.isAwake) {
|
|
1417
1446
|
scheduler = new JobScheduler(config.scheduler, sessionManager, state, config.stateDir);
|
|
@@ -1842,6 +1871,16 @@ export async function startServer(options) {
|
|
|
1842
1871
|
sessionManager.on('sessionComplete', (session) => {
|
|
1843
1872
|
scheduler.processQueue();
|
|
1844
1873
|
scheduler.notifyJobComplete(session.id, session.tmuxSession);
|
|
1874
|
+
// Record telemetry events
|
|
1875
|
+
if (telemetryHeartbeat && session.jobSlug) {
|
|
1876
|
+
telemetryHeartbeat.recordJobRun();
|
|
1877
|
+
}
|
|
1878
|
+
});
|
|
1879
|
+
}
|
|
1880
|
+
// Wire telemetry counters
|
|
1881
|
+
if (telemetryHeartbeat) {
|
|
1882
|
+
sessionManager.on('sessionStart', () => {
|
|
1883
|
+
telemetryHeartbeat.recordSessionSpawned();
|
|
1845
1884
|
});
|
|
1846
1885
|
}
|
|
1847
1886
|
// Auto-summarize topics on session completion.
|
|
@@ -2406,8 +2445,45 @@ export async function startServer(options) {
|
|
|
2406
2445
|
return null; // Normal messages pass through
|
|
2407
2446
|
};
|
|
2408
2447
|
telegram.onSentinelKillSession = (sessionName) => {
|
|
2448
|
+
// Save resume UUID before killing so respawn can --resume
|
|
2449
|
+
if (_topicResumeMap) {
|
|
2450
|
+
try {
|
|
2451
|
+
const uuid = _topicResumeMap.findUuidForSession(sessionName);
|
|
2452
|
+
if (uuid) {
|
|
2453
|
+
// Find the topic ID for this session
|
|
2454
|
+
const topicSessions = telegram.getAllTopicSessions();
|
|
2455
|
+
for (const [topicId, sessName] of topicSessions) {
|
|
2456
|
+
if (sessName === sessionName) {
|
|
2457
|
+
_topicResumeMap.save(topicId, uuid, sessionName);
|
|
2458
|
+
console.log(`[sentinel] Saved resume UUID ${uuid} for topic ${topicId} before kill`);
|
|
2459
|
+
break;
|
|
2460
|
+
}
|
|
2461
|
+
}
|
|
2462
|
+
}
|
|
2463
|
+
}
|
|
2464
|
+
catch { /* best effort */ }
|
|
2465
|
+
}
|
|
2409
2466
|
return sessionManager.killSession(sessionName);
|
|
2410
2467
|
};
|
|
2468
|
+
telegram.onSentinelPauseSession = (sessionName) => {
|
|
2469
|
+
// Save resume UUID so if the session dies during pause, respawn can --resume
|
|
2470
|
+
if (_topicResumeMap) {
|
|
2471
|
+
try {
|
|
2472
|
+
const uuid = _topicResumeMap.findUuidForSession(sessionName);
|
|
2473
|
+
if (uuid) {
|
|
2474
|
+
const topicSessions = telegram.getAllTopicSessions();
|
|
2475
|
+
for (const [topicId, sessName] of topicSessions) {
|
|
2476
|
+
if (sessName === sessionName) {
|
|
2477
|
+
_topicResumeMap.save(topicId, uuid, sessionName);
|
|
2478
|
+
console.log(`[sentinel] Saved resume UUID ${uuid} for topic ${topicId} on pause`);
|
|
2479
|
+
break;
|
|
2480
|
+
}
|
|
2481
|
+
}
|
|
2482
|
+
}
|
|
2483
|
+
}
|
|
2484
|
+
catch { /* best effort */ }
|
|
2485
|
+
}
|
|
2486
|
+
};
|
|
2411
2487
|
console.log(pc.green(' Sentinel wired into Telegram message flow'));
|
|
2412
2488
|
}
|
|
2413
2489
|
// Inter-Agent Messaging — structured communication between sessions
|
|
@@ -2656,7 +2732,7 @@ export async function startServer(options) {
|
|
|
2656
2732
|
console.warn(pc.yellow(` Response review pipeline: configured but ANTHROPIC_API_KEY not set`));
|
|
2657
2733
|
}
|
|
2658
2734
|
}
|
|
2659
|
-
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, messageRouter, summarySentinel, spawnManager, systemReviewer, capabilityMapper, topicResumeMap: _topicResumeMap ?? undefined, autonomyManager, trustElevationTracker, autonomousEvolution, coordinator: coordinator.enabled ? coordinator : undefined, localSigningKeyPem, whatsapp: whatsappAdapter, whatsappBusinessBackend, messageBridge, hookEventReceiver, worktreeMonitor, subagentTracker, instructionsVerifier, handshakeManager: threadlineHandshake, responseReviewGate });
|
|
2735
|
+
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, messageRouter, summarySentinel, spawnManager, systemReviewer, capabilityMapper, topicResumeMap: _topicResumeMap ?? undefined, autonomyManager, trustElevationTracker, autonomousEvolution, coordinator: coordinator.enabled ? coordinator : undefined, localSigningKeyPem, whatsapp: whatsappAdapter, whatsappBusinessBackend, messageBridge, hookEventReceiver, worktreeMonitor, subagentTracker, instructionsVerifier, handshakeManager: threadlineHandshake, responseReviewGate, telemetryHeartbeat });
|
|
2660
2736
|
await server.start();
|
|
2661
2737
|
// Connect DegradationReporter downstream systems now that everything is initialized.
|
|
2662
2738
|
// Any degradation events queued during startup will drain to feedback + telegram.
|