instar 1.2.32 → 1.2.34
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 +72 -2
- package/dist/commands/server.js.map +1 -1
- package/dist/config/ConfigDefaults.d.ts.map +1 -1
- package/dist/config/ConfigDefaults.js +6 -0
- package/dist/config/ConfigDefaults.js.map +1 -1
- package/dist/core/MessagingToneGate.d.ts.map +1 -1
- package/dist/core/MessagingToneGate.js +30 -1
- package/dist/core/MessagingToneGate.js.map +1 -1
- package/dist/core/SessionManager.d.ts +7 -0
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +23 -0
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/core/types.d.ts +30 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/monitoring/CompactionSentinel.d.ts +9 -0
- package/dist/monitoring/CompactionSentinel.d.ts.map +1 -1
- package/dist/monitoring/CompactionSentinel.js +9 -0
- package/dist/monitoring/CompactionSentinel.js.map +1 -1
- package/dist/monitoring/PresenceProxy.d.ts +9 -0
- package/dist/monitoring/PresenceProxy.d.ts.map +1 -1
- package/dist/monitoring/PresenceProxy.js +9 -0
- package/dist/monitoring/PresenceProxy.js.map +1 -1
- package/dist/monitoring/RateLimitSentinel.d.ts +140 -0
- package/dist/monitoring/RateLimitSentinel.d.ts.map +1 -0
- package/dist/monitoring/RateLimitSentinel.js +308 -0
- package/dist/monitoring/RateLimitSentinel.js.map +1 -0
- package/dist/monitoring/SessionWatchdog.d.ts +11 -0
- package/dist/monitoring/SessionWatchdog.d.ts.map +1 -1
- package/dist/monitoring/SessionWatchdog.js +47 -0
- package/dist/monitoring/SessionWatchdog.js.map +1 -1
- package/dist/monitoring/rateLimitDetection.d.ts +45 -0
- package/dist/monitoring/rateLimitDetection.d.ts.map +1 -0
- package/dist/monitoring/rateLimitDetection.js +71 -0
- package/dist/monitoring/rateLimitDetection.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/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 +1 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +24 -0
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +48 -48
- package/upgrades/1.2.33.md +57 -0
- package/upgrades/1.2.34.md +84 -0
- package/upgrades/side-effects/context-death-stop-hook.md +100 -0
- package/upgrades/side-effects/rate-limit-internal-prefix.md +41 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkQH,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,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/commands/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAkQH,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,CAyjLtE;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
|
@@ -4581,7 +4581,68 @@ export async function startServer(options) {
|
|
|
4581
4581
|
},
|
|
4582
4582
|
// Defaults are production-sensible; override here only if needed.
|
|
4583
4583
|
{});
|
|
4584
|
-
|
|
4584
|
+
// ── RateLimitSentinel ─────────────────────────────────────────────
|
|
4585
|
+
// Rides out Anthropic's server-side capacity throttle ("Server is
|
|
4586
|
+
// temporarily limiting requests · not your usage limit") with
|
|
4587
|
+
// backoff-before-nudge + user check-ins, instead of the single immediate
|
|
4588
|
+
// nudge (quota burn) → silence the session used to fall into. See
|
|
4589
|
+
// docs/specs/rate-limit-sentinel.md.
|
|
4590
|
+
const { RateLimitSentinel } = await import('../monitoring/RateLimitSentinel.js');
|
|
4591
|
+
const getClaudeSessionIdForName = (sessionName) => sessionManager.listRunningSessions().find(s => s.tmuxSession === sessionName)?.claudeSessionId;
|
|
4592
|
+
// Neutral "continue" nudge — NOT the compaction-resume payload (which would
|
|
4593
|
+
// falsely tell the agent its memory was reset). Topic-tagged so InputGuard
|
|
4594
|
+
// accepts it.
|
|
4595
|
+
const rateLimitResume = async (sessionName) => {
|
|
4596
|
+
if (!sessionManager.isSessionAlive(sessionName))
|
|
4597
|
+
return false;
|
|
4598
|
+
const topicId = telegram?.getTopicForSession(sessionName);
|
|
4599
|
+
if (topicId == null)
|
|
4600
|
+
return false;
|
|
4601
|
+
const tagged = `[telegram:${topicId}] The temporary server throttle should have cleared — please continue where you left off.`;
|
|
4602
|
+
return sessionManager.injectMessage(sessionName, tagged);
|
|
4603
|
+
};
|
|
4604
|
+
// Route a user-facing notice for the session's topic (Telegram).
|
|
4605
|
+
const rateLimitNotify = async (sessionName, text) => {
|
|
4606
|
+
const topicId = telegram?.getTopicForSession(sessionName);
|
|
4607
|
+
if (topicId == null)
|
|
4608
|
+
return;
|
|
4609
|
+
const resp = await fetch(`http://localhost:${config.port}/telegram/reply/${topicId}`, {
|
|
4610
|
+
method: 'POST',
|
|
4611
|
+
headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${config.authToken}` },
|
|
4612
|
+
body: JSON.stringify({ text }),
|
|
4613
|
+
});
|
|
4614
|
+
if (!resp.ok)
|
|
4615
|
+
throw new Error(`rate-limit notify failed: ${resp.status}`);
|
|
4616
|
+
};
|
|
4617
|
+
const rlsCfg = config.monitoring?.rateLimitSentinel ?? { enabled: true };
|
|
4618
|
+
const rateLimitSentinel = new RateLimitSentinel({
|
|
4619
|
+
resumeFn: rateLimitResume,
|
|
4620
|
+
notifyFn: rateLimitNotify,
|
|
4621
|
+
projectDir: config.projectDir,
|
|
4622
|
+
getClaudeSessionId: getClaudeSessionIdForName,
|
|
4623
|
+
}, rlsCfg);
|
|
4624
|
+
// Zombie-kill veto: compose BOTH sentinels (editing the single-predicate
|
|
4625
|
+
// checker — a second setActiveRecoveryChecker call would drop the
|
|
4626
|
+
// compaction veto).
|
|
4627
|
+
sessionManager.setActiveRecoveryChecker(session => compactionSentinel.isRecoveryActive(session.tmuxSession) ||
|
|
4628
|
+
rateLimitSentinel.isRecoveryActive(session.tmuxSession));
|
|
4629
|
+
// Bidirectional deferral — neither sentinel injects into a pane the other
|
|
4630
|
+
// already owns.
|
|
4631
|
+
rateLimitSentinel.setDeferIf(s => compactionSentinel.isRecoveryActive(s));
|
|
4632
|
+
compactionSentinel.setDeferIf(s => rateLimitSentinel.isRecoveryActive(s));
|
|
4633
|
+
// Triggers: watchdog poll + SessionManager idle-error emit. Both deduped by
|
|
4634
|
+
// the sentinel.
|
|
4635
|
+
if (watchdog) {
|
|
4636
|
+
watchdog.on('rate-limited', (sessionName) => {
|
|
4637
|
+
rateLimitSentinel.report(sessionName, 'watchdog-poll');
|
|
4638
|
+
});
|
|
4639
|
+
}
|
|
4640
|
+
sessionManager.on('rateLimitedAtIdle', (sessionName) => {
|
|
4641
|
+
rateLimitSentinel.report(sessionName, 'idle-error');
|
|
4642
|
+
});
|
|
4643
|
+
if (rlsCfg.enabled !== false) {
|
|
4644
|
+
console.log(pc.green(' RateLimitSentinel enabled (server-throttle backoff + check-ins)'));
|
|
4645
|
+
}
|
|
4585
4646
|
console.log(pc.green(' CompactionSentinel enabled (verified recovery lifecycle)'));
|
|
4586
4647
|
// Trigger 1: PreCompact hook event — report to sentinel.
|
|
4587
4648
|
hookEventReceiver.on('PreCompact', () => {
|
|
@@ -5018,6 +5079,15 @@ export async function startServer(options) {
|
|
|
5018
5079
|
// BUILD-STALL-VISIBILITY-SPEC Fix 2 — suppress generic standby when
|
|
5019
5080
|
// a /build heartbeat landed recently on this topic.
|
|
5020
5081
|
hasRecentBuildHeartbeat: (topicId, windowMs) => proxyCoordinator.hasRecentBuildHeartbeat(topicId, windowMs),
|
|
5082
|
+
// Suppress ALL tiers while the RateLimitSentinel owns the voice for
|
|
5083
|
+
// this topic's session (server-throttle recovery).
|
|
5084
|
+
hasActiveRateLimitRecovery: (topicId) => {
|
|
5085
|
+
const slackChId = slackProxyChannelMap.get(topicId);
|
|
5086
|
+
const sessionName = (slackChId && _slackAdapter)
|
|
5087
|
+
? _slackAdapter.getSessionForChannel(slackChId)
|
|
5088
|
+
: telegram.getSessionForTopic(topicId);
|
|
5089
|
+
return sessionName ? rateLimitSentinel.isRecoveryActive(sessionName) : false;
|
|
5090
|
+
},
|
|
5021
5091
|
// Shared LLM queue (interactive lane) — cross-monitor concurrency
|
|
5022
5092
|
// and daily-spend-cap with PromiseBeacon.
|
|
5023
5093
|
sharedLlmQueue,
|
|
@@ -6612,7 +6682,7 @@ export async function startServer(options) {
|
|
|
6612
6682
|
},
|
|
6613
6683
|
});
|
|
6614
6684
|
}
|
|
6615
|
-
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, 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, unifiedTrust, liveConfig, sharedStateLedger, ledgerSessionRegistry, worktreeManager, oidcEnrolledRepos: parallelDevConfig?.oidcEnrolledRepos, initiativeTracker, projectRoundRunner, projectDriftChecker, machineHeartbeat, proxyCoordinator, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, workingMemory, taskFlowRegistry, threadlineFlowBridge });
|
|
6685
|
+
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, unifiedTrust, liveConfig, sharedStateLedger, ledgerSessionRegistry, worktreeManager, oidcEnrolledRepos: parallelDevConfig?.oidcEnrolledRepos, initiativeTracker, projectRoundRunner, projectDriftChecker, machineHeartbeat, proxyCoordinator, telegramBridgeConfig, telegramBridge: telegramBridge ?? undefined, threadlineObservability, workingMemory, taskFlowRegistry, threadlineFlowBridge });
|
|
6616
6686
|
await server.start();
|
|
6617
6687
|
void taskFlowSweeper;
|
|
6618
6688
|
void taskFlowDueWaker;
|