@0xmaxma/claude-gateway 2.0.4 → 2.0.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/README.md +10 -1
- package/dist/agent/builtin-commands.d.ts +1 -1
- package/dist/agent/builtin-commands.d.ts.map +1 -1
- package/dist/agent/builtin-commands.js +3 -2
- package/dist/agent/builtin-commands.js.map +1 -1
- package/dist/agent/runner.d.ts +123 -9
- package/dist/agent/runner.d.ts.map +1 -1
- package/dist/agent/runner.js +215 -182
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/session-compaction-scheduler.d.ts +22 -0
- package/dist/agent/session-compaction-scheduler.d.ts.map +1 -0
- package/dist/agent/session-compaction-scheduler.js +40 -0
- package/dist/agent/session-compaction-scheduler.js.map +1 -0
- package/dist/agent/skill-learning/index.d.ts.map +1 -1
- package/dist/agent/skill-learning/index.js +27 -8
- package/dist/agent/skill-learning/index.js.map +1 -1
- package/dist/agent/skill-learning/reviewer.d.ts +3 -1
- package/dist/agent/skill-learning/reviewer.d.ts.map +1 -1
- package/dist/agent/skill-learning/reviewer.js +6 -2
- package/dist/agent/skill-learning/reviewer.js.map +1 -1
- package/dist/agent/turn-stream.d.ts +3 -1
- package/dist/agent/turn-stream.d.ts.map +1 -1
- package/dist/agent/turn-stream.js +8 -4
- package/dist/agent/turn-stream.js.map +1 -1
- package/dist/api/gateway-router.d.ts +2 -0
- package/dist/api/gateway-router.d.ts.map +1 -1
- package/dist/api/gateway-router.js +323 -16
- package/dist/api/gateway-router.js.map +1 -1
- package/dist/api/memory-activity.d.ts +18 -0
- package/dist/api/memory-activity.d.ts.map +1 -0
- package/dist/api/memory-activity.js +97 -0
- package/dist/api/memory-activity.js.map +1 -0
- package/dist/api/router.js +11 -11
- package/dist/api/router.js.map +1 -1
- package/dist/api/slack-webhook-router.js +1 -1
- package/dist/api/slack-webhook-router.js.map +1 -1
- package/dist/api/voice-router.d.ts +1 -0
- package/dist/api/voice-router.d.ts.map +1 -1
- package/dist/api/voice-router.js +129 -7
- package/dist/api/voice-router.js.map +1 -1
- package/dist/config/claude-settings.d.ts +14 -0
- package/dist/config/claude-settings.d.ts.map +1 -1
- package/dist/config/claude-settings.js +20 -0
- package/dist/config/claude-settings.js.map +1 -1
- package/dist/orchestration/agent-cli-session.d.ts +46 -0
- package/dist/orchestration/agent-cli-session.d.ts.map +1 -0
- package/dist/orchestration/agent-cli-session.js +121 -0
- package/dist/orchestration/agent-cli-session.js.map +1 -0
- package/dist/orchestration/agent-tool-schemas.d.ts +6 -0
- package/dist/orchestration/agent-tool-schemas.d.ts.map +1 -0
- package/dist/orchestration/agent-tool-schemas.js +23 -0
- package/dist/orchestration/agent-tool-schemas.js.map +1 -0
- package/dist/orchestration/bridge.d.ts +6 -3
- package/dist/orchestration/bridge.d.ts.map +1 -1
- package/dist/orchestration/bridge.js +31 -14
- package/dist/orchestration/bridge.js.map +1 -1
- package/dist/orchestration/browser-voice.d.ts +14 -0
- package/dist/orchestration/browser-voice.d.ts.map +1 -0
- package/dist/orchestration/browser-voice.js +30 -0
- package/dist/orchestration/browser-voice.js.map +1 -0
- package/dist/orchestration/compact-measurements.d.ts +21 -0
- package/dist/orchestration/compact-measurements.d.ts.map +1 -0
- package/dist/orchestration/compact-measurements.js +62 -0
- package/dist/orchestration/compact-measurements.js.map +1 -0
- package/dist/orchestration/config.d.ts +4 -0
- package/dist/orchestration/config.d.ts.map +1 -1
- package/dist/orchestration/config.js +1 -1
- package/dist/orchestration/config.js.map +1 -1
- package/dist/orchestration/context-delivery.d.ts +32 -0
- package/dist/orchestration/context-delivery.d.ts.map +1 -0
- package/dist/orchestration/context-delivery.js +101 -0
- package/dist/orchestration/context-delivery.js.map +1 -0
- package/dist/orchestration/context-footprint.d.ts +14 -0
- package/dist/orchestration/context-footprint.d.ts.map +1 -0
- package/dist/orchestration/context-footprint.js +57 -0
- package/dist/orchestration/context-footprint.js.map +1 -0
- package/dist/orchestration/conversation-intake.d.ts +10 -6
- package/dist/orchestration/conversation-intake.d.ts.map +1 -1
- package/dist/orchestration/conversation-intake.js +22 -8
- package/dist/orchestration/conversation-intake.js.map +1 -1
- package/dist/orchestration/dashboard-charts.d.ts +32 -0
- package/dist/orchestration/dashboard-charts.d.ts.map +1 -0
- package/dist/orchestration/dashboard-charts.js +77 -0
- package/dist/orchestration/dashboard-charts.js.map +1 -0
- package/dist/orchestration/dashboard-reader-worker.d.ts +2 -0
- package/dist/orchestration/dashboard-reader-worker.d.ts.map +1 -0
- package/dist/orchestration/dashboard-reader-worker.js +173 -0
- package/dist/orchestration/dashboard-reader-worker.js.map +1 -0
- package/dist/orchestration/dashboard-reader.d.ts +15 -0
- package/dist/orchestration/dashboard-reader.d.ts.map +1 -0
- package/dist/orchestration/dashboard-reader.js +87 -0
- package/dist/orchestration/dashboard-reader.js.map +1 -0
- package/dist/orchestration/decision-context.d.ts +15 -0
- package/dist/orchestration/decision-context.d.ts.map +1 -0
- package/dist/orchestration/decision-context.js +57 -0
- package/dist/orchestration/decision-context.js.map +1 -0
- package/dist/orchestration/display-stream.d.ts +21 -2
- package/dist/orchestration/display-stream.d.ts.map +1 -1
- package/dist/orchestration/display-stream.js +61 -8
- package/dist/orchestration/display-stream.js.map +1 -1
- package/dist/orchestration/inference-errors.d.ts.map +1 -1
- package/dist/orchestration/inference-errors.js +19 -21
- package/dist/orchestration/inference-errors.js.map +1 -1
- package/dist/orchestration/mutation-recovery.d.ts +13 -0
- package/dist/orchestration/mutation-recovery.d.ts.map +1 -0
- package/dist/orchestration/mutation-recovery.js +49 -0
- package/dist/orchestration/mutation-recovery.js.map +1 -0
- package/dist/orchestration/native-compact.d.ts +8 -0
- package/dist/orchestration/native-compact.d.ts.map +1 -0
- package/dist/orchestration/native-compact.js +33 -0
- package/dist/orchestration/native-compact.js.map +1 -0
- package/dist/orchestration/notification-mailbox.d.ts +3 -1
- package/dist/orchestration/notification-mailbox.d.ts.map +1 -1
- package/dist/orchestration/notification-mailbox.js +4 -2
- package/dist/orchestration/notification-mailbox.js.map +1 -1
- package/dist/orchestration/process-turn.d.ts +16 -2
- package/dist/orchestration/process-turn.d.ts.map +1 -1
- package/dist/orchestration/process-turn.js +78 -14
- package/dist/orchestration/process-turn.js.map +1 -1
- package/dist/orchestration/progress-review.d.ts +8 -18
- package/dist/orchestration/progress-review.d.ts.map +1 -1
- package/dist/orchestration/progress-review.js +12 -14
- package/dist/orchestration/progress-review.js.map +1 -1
- package/dist/orchestration/provider-message.d.ts +7 -0
- package/dist/orchestration/provider-message.d.ts.map +1 -0
- package/dist/orchestration/provider-message.js +63 -0
- package/dist/orchestration/provider-message.js.map +1 -0
- package/dist/orchestration/response-errors.d.ts +6 -0
- package/dist/orchestration/response-errors.d.ts.map +1 -0
- package/dist/orchestration/response-errors.js +88 -0
- package/dist/orchestration/response-errors.js.map +1 -0
- package/dist/orchestration/response-schema.d.ts +33 -0
- package/dist/orchestration/response-schema.d.ts.map +1 -0
- package/dist/orchestration/response-schema.js +61 -0
- package/dist/orchestration/response-schema.js.map +1 -0
- package/dist/orchestration/runtime.d.ts +79 -0
- package/dist/orchestration/runtime.d.ts.map +1 -1
- package/dist/orchestration/runtime.js +415 -68
- package/dist/orchestration/runtime.js.map +1 -1
- package/dist/orchestration/session-compaction.d.ts +59 -0
- package/dist/orchestration/session-compaction.d.ts.map +1 -0
- package/dist/orchestration/session-compaction.js +212 -0
- package/dist/orchestration/session-compaction.js.map +1 -0
- package/dist/orchestration/skills.d.ts.map +1 -1
- package/dist/orchestration/skills.js +3 -2
- package/dist/orchestration/skills.js.map +1 -1
- package/dist/orchestration/source-policy.d.ts +1 -1
- package/dist/orchestration/source-policy.d.ts.map +1 -1
- package/dist/orchestration/source-policy.js +1 -1
- package/dist/orchestration/speech.d.ts +15 -17
- package/dist/orchestration/speech.d.ts.map +1 -1
- package/dist/orchestration/speech.js +90 -30
- package/dist/orchestration/speech.js.map +1 -1
- package/dist/orchestration/store.d.ts +2 -0
- package/dist/orchestration/store.d.ts.map +1 -1
- package/dist/orchestration/store.js +16 -1
- package/dist/orchestration/store.js.map +1 -1
- package/dist/orchestration/tasks/driver.d.ts.map +1 -1
- package/dist/orchestration/tasks/driver.js +8 -3
- package/dist/orchestration/tasks/driver.js.map +1 -1
- package/dist/orchestration/tasks/pool.d.ts.map +1 -1
- package/dist/orchestration/tasks/pool.js +8 -4
- package/dist/orchestration/tasks/pool.js.map +1 -1
- package/dist/orchestration/tasks/service.d.ts +48 -1
- package/dist/orchestration/tasks/service.d.ts.map +1 -1
- package/dist/orchestration/tasks/service.js +41 -17
- package/dist/orchestration/tasks/service.js.map +1 -1
- package/dist/orchestration/token-ledger.d.ts +132 -0
- package/dist/orchestration/token-ledger.d.ts.map +1 -0
- package/dist/orchestration/token-ledger.js +233 -0
- package/dist/orchestration/token-ledger.js.map +1 -0
- package/dist/orchestration/token-usage.d.ts +46 -0
- package/dist/orchestration/token-usage.d.ts.map +1 -0
- package/dist/orchestration/token-usage.js +102 -0
- package/dist/orchestration/token-usage.js.map +1 -0
- package/dist/orchestration/tool-activity.d.ts.map +1 -1
- package/dist/orchestration/tool-activity.js +5 -3
- package/dist/orchestration/tool-activity.js.map +1 -1
- package/dist/orchestration/tool-name.d.ts +10 -0
- package/dist/orchestration/tool-name.d.ts.map +1 -0
- package/dist/orchestration/tool-name.js +14 -0
- package/dist/orchestration/tool-name.js.map +1 -0
- package/dist/orchestration/transcript-checkpoint.d.ts +14 -0
- package/dist/orchestration/transcript-checkpoint.d.ts.map +1 -0
- package/dist/orchestration/transcript-checkpoint.js +83 -0
- package/dist/orchestration/transcript-checkpoint.js.map +1 -0
- package/dist/orchestration/unanswered-inputs.d.ts +6 -0
- package/dist/orchestration/unanswered-inputs.d.ts.map +1 -0
- package/dist/orchestration/unanswered-inputs.js +18 -0
- package/dist/orchestration/unanswered-inputs.js.map +1 -0
- package/dist/session/process.d.ts +10 -0
- package/dist/session/process.d.ts.map +1 -1
- package/dist/session/process.js +91 -9
- package/dist/session/process.js.map +1 -1
- package/dist/session/request-tool-capture.d.ts +31 -0
- package/dist/session/request-tool-capture.d.ts.map +1 -0
- package/dist/session/request-tool-capture.js +194 -0
- package/dist/session/request-tool-capture.js.map +1 -0
- package/dist/session/runtime-profile.d.ts +7 -3
- package/dist/session/runtime-profile.d.ts.map +1 -1
- package/dist/session/runtime-profile.js +3 -1
- package/dist/session/runtime-profile.js.map +1 -1
- package/dist/session/store.d.ts +7 -0
- package/dist/session/store.d.ts.map +1 -1
- package/dist/session/store.js +27 -0
- package/dist/session/store.js.map +1 -1
- package/dist/shell/tailer.d.ts +7 -5
- package/dist/shell/tailer.d.ts.map +1 -1
- package/dist/shell/tailer.js +6 -17
- package/dist/shell/tailer.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/cli-viewer-ui.js +1 -1
- package/dist/ui/dashboard-charts.d.ts +3 -0
- package/dist/ui/dashboard-charts.d.ts.map +1 -0
- package/dist/ui/dashboard-charts.js +130 -0
- package/dist/ui/dashboard-charts.js.map +1 -0
- package/dist/ui/dashboard-client.d.ts +3 -0
- package/dist/ui/dashboard-client.d.ts.map +1 -0
- package/dist/ui/dashboard-client.js +184 -0
- package/dist/ui/dashboard-client.js.map +1 -0
- package/dist/ui/dashboard-controls.d.ts +4 -0
- package/dist/ui/dashboard-controls.d.ts.map +1 -0
- package/dist/ui/dashboard-controls.js +27 -0
- package/dist/ui/dashboard-controls.js.map +1 -0
- package/dist/ui/dashboard-presentation.d.ts +12 -0
- package/dist/ui/dashboard-presentation.d.ts.map +1 -0
- package/dist/ui/dashboard-presentation.js +62 -0
- package/dist/ui/dashboard-presentation.js.map +1 -0
- package/dist/ui/dashboard-range.d.ts +5 -0
- package/dist/ui/dashboard-range.d.ts.map +1 -0
- package/dist/ui/dashboard-range.js +36 -0
- package/dist/ui/dashboard-range.js.map +1 -0
- package/dist/ui/dashboard-theme.d.ts +6 -0
- package/dist/ui/dashboard-theme.d.ts.map +1 -0
- package/dist/ui/dashboard-theme.js +562 -0
- package/dist/ui/dashboard-theme.js.map +1 -0
- package/dist/ui/memory-activity.d.ts +4 -0
- package/dist/ui/memory-activity.d.ts.map +1 -0
- package/dist/ui/memory-activity.js +115 -0
- package/dist/ui/memory-activity.js.map +1 -0
- package/dist/ui/token-report-client.d.ts +3 -0
- package/dist/ui/token-report-client.d.ts.map +1 -0
- package/dist/ui/token-report-client.js +34 -0
- package/dist/ui/token-report-client.js.map +1 -0
- package/dist/ui/token-report.d.ts +90 -0
- package/dist/ui/token-report.d.ts.map +1 -0
- package/dist/ui/token-report.js +203 -0
- package/dist/ui/token-report.js.map +1 -0
- package/dist/ui/web-ui.d.ts +1 -1
- package/dist/ui/web-ui.d.ts.map +1 -1
- package/dist/ui/web-ui.js +129 -409
- package/dist/ui/web-ui.js.map +1 -1
- package/dist/voice/replay.d.ts +8 -0
- package/dist/voice/replay.d.ts.map +1 -0
- package/dist/voice/replay.js +48 -0
- package/dist/voice/replay.js.map +1 -0
- package/dist/voice/session.d.ts +9 -0
- package/dist/voice/session.d.ts.map +1 -1
- package/dist/voice/session.js +72 -14
- package/dist/voice/session.js.map +1 -1
- package/mcp/lazy-connector.test.ts +58 -0
- package/mcp/lazy-connector.ts +67 -0
- package/mcp/lazy-tools.test.ts +152 -0
- package/mcp/lazy-tools.ts +41 -0
- package/mcp/server.ts +53 -34
- package/mcp/tools/discord/commands.ts +2 -0
- package/mcp/tools/tasks/module.ts +1 -12
- package/mcp/tools/telegram/receiver-server.ts +45 -31
- package/mcp/tools/telegram/session-browser.ts +10 -0
- package/package.json +2 -1
- package/resource/dashboard/OFL.txt +93 -0
- package/resource/dashboard/poppins-300.woff2 +0 -0
- package/resource/dashboard/poppins-400.woff2 +0 -0
- package/resource/dashboard/poppins-500.woff2 +0 -0
- package/resource/dashboard/poppins-600.woff2 +0 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { RequestToolSchemas } from '../session/request-tool-capture';
|
|
2
|
+
/** Model token volume, not billing cost. Output already includes thinking. */
|
|
3
|
+
export interface TokenUsage {
|
|
4
|
+
inputTokens: number;
|
|
5
|
+
cacheCreationTokens: number;
|
|
6
|
+
cacheReadTokens: number;
|
|
7
|
+
outputTokens: number;
|
|
8
|
+
totalTokens: number;
|
|
9
|
+
cacheCreation5mTokens?: number;
|
|
10
|
+
cacheCreation1hTokens?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface RequestUsage {
|
|
13
|
+
id: string;
|
|
14
|
+
model?: string;
|
|
15
|
+
usage: TokenUsage;
|
|
16
|
+
toolSchemas?: RequestToolSchemas;
|
|
17
|
+
}
|
|
18
|
+
export declare function emptyUsage(): TokenUsage;
|
|
19
|
+
export declare function sumUsage(values: TokenUsage[]): TokenUsage;
|
|
20
|
+
/** Deduplicate assistant blocks and partial stream usage by the provider message ID.
|
|
21
|
+
* CLI result usage is a turn aggregate, never another request to add to the sum. */
|
|
22
|
+
export declare class TurnUsageCollector {
|
|
23
|
+
private readonly messages;
|
|
24
|
+
private currentId?;
|
|
25
|
+
private readonly schemas;
|
|
26
|
+
observeSchemas(value: RequestToolSchemas): void;
|
|
27
|
+
private aggregate;
|
|
28
|
+
loadedTools: string[] | null;
|
|
29
|
+
readonly usedTools: Set<string>;
|
|
30
|
+
model?: string;
|
|
31
|
+
observe(event: any): void;
|
|
32
|
+
private merge;
|
|
33
|
+
snapshot(): {
|
|
34
|
+
usage: TokenUsage | null;
|
|
35
|
+
requests: RequestUsage[];
|
|
36
|
+
loadedTools: string[] | null;
|
|
37
|
+
usedTools: string[];
|
|
38
|
+
contextTools: string[] | null;
|
|
39
|
+
schemaCoverage: {
|
|
40
|
+
measured: number;
|
|
41
|
+
total: number;
|
|
42
|
+
};
|
|
43
|
+
model?: string;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=token-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-usage.d.ts","sourceRoot":"","sources":["../../src/orchestration/token-usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,8EAA8E;AAC9E,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AACD,MAAM,WAAW,YAAY;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC;IAAC,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAAE;AAElH,wBAAgB,UAAU,IAAI,UAAU,CAEvC;AAaD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAKzD;AACD;oFACoF;AACpF,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAC5D,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IACjE,cAAc,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAI/C,OAAO,CAAC,SAAS,CAA2B;IAC5C,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CAAQ;IACpC,QAAQ,CAAC,SAAS,cAAqB;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAiBzB,OAAO,CAAC,KAAK;IAMb,QAAQ,IAAI;QAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,YAAY,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAAC,cAAc,EAAE;YAAC,QAAQ,EAAC,MAAM,CAAC;YAAA,KAAK,EAAC,MAAM,CAAA;SAAC,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;CAcrN"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TurnUsageCollector = void 0;
|
|
4
|
+
exports.emptyUsage = emptyUsage;
|
|
5
|
+
exports.sumUsage = sumUsage;
|
|
6
|
+
const tool_name_1 = require("./tool-name");
|
|
7
|
+
const fields = ['inputTokens', 'cacheCreationTokens', 'cacheReadTokens', 'outputTokens', 'cacheCreation5mTokens', 'cacheCreation1hTokens'];
|
|
8
|
+
function emptyUsage() {
|
|
9
|
+
return { inputTokens: 0, cacheCreationTokens: 0, cacheReadTokens: 0, outputTokens: 0, totalTokens: 0 };
|
|
10
|
+
}
|
|
11
|
+
function count(value) { return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0 ? value : 0; }
|
|
12
|
+
function normalize(value) {
|
|
13
|
+
const usage = emptyUsage();
|
|
14
|
+
usage.inputTokens = count(value.input_tokens);
|
|
15
|
+
usage.cacheCreationTokens = count(value.cache_creation_input_tokens);
|
|
16
|
+
usage.cacheReadTokens = count(value.cache_read_input_tokens);
|
|
17
|
+
usage.outputTokens = count(value.output_tokens);
|
|
18
|
+
if (typeof value.cache_creation?.ephemeral_5m_input_tokens === 'number')
|
|
19
|
+
usage.cacheCreation5mTokens = count(value.cache_creation.ephemeral_5m_input_tokens);
|
|
20
|
+
if (typeof value.cache_creation?.ephemeral_1h_input_tokens === 'number')
|
|
21
|
+
usage.cacheCreation1hTokens = count(value.cache_creation.ephemeral_1h_input_tokens);
|
|
22
|
+
usage.totalTokens = usage.inputTokens + usage.cacheCreationTokens + usage.cacheReadTokens + usage.outputTokens;
|
|
23
|
+
return usage;
|
|
24
|
+
}
|
|
25
|
+
function sumUsage(values) {
|
|
26
|
+
const sum = emptyUsage();
|
|
27
|
+
for (const value of values)
|
|
28
|
+
for (const key of fields)
|
|
29
|
+
if (value[key] !== undefined)
|
|
30
|
+
sum[key] = (sum[key] ?? 0) + value[key];
|
|
31
|
+
sum.totalTokens = sum.inputTokens + sum.cacheCreationTokens + sum.cacheReadTokens + sum.outputTokens;
|
|
32
|
+
return sum;
|
|
33
|
+
}
|
|
34
|
+
/** Deduplicate assistant blocks and partial stream usage by the provider message ID.
|
|
35
|
+
* CLI result usage is a turn aggregate, never another request to add to the sum. */
|
|
36
|
+
class TurnUsageCollector {
|
|
37
|
+
constructor() {
|
|
38
|
+
this.messages = new Map();
|
|
39
|
+
this.schemas = new Map();
|
|
40
|
+
this.aggregate = null;
|
|
41
|
+
this.loadedTools = null;
|
|
42
|
+
this.usedTools = new Set();
|
|
43
|
+
}
|
|
44
|
+
observeSchemas(value) {
|
|
45
|
+
this.schemas.set(value.messageId, value);
|
|
46
|
+
const request = this.messages.get(value.messageId);
|
|
47
|
+
if (request)
|
|
48
|
+
request.toolSchemas = value;
|
|
49
|
+
}
|
|
50
|
+
observe(event) {
|
|
51
|
+
if (!event || typeof event !== 'object')
|
|
52
|
+
return;
|
|
53
|
+
if (event.type === 'system' && event.subtype === 'init') {
|
|
54
|
+
if (Array.isArray(event.tools) && event.tools.every((name) => typeof name === 'string'))
|
|
55
|
+
this.loadedTools = [...new Set(event.tools)].sort();
|
|
56
|
+
if (typeof event.model === 'string')
|
|
57
|
+
this.model = event.model;
|
|
58
|
+
}
|
|
59
|
+
const stream = event.type === 'stream_event' ? event.event : undefined;
|
|
60
|
+
const message = event.type === 'assistant' ? event.message : stream?.type === 'message_start' ? stream.message : undefined;
|
|
61
|
+
if (message && typeof message.id === 'string') {
|
|
62
|
+
this.currentId = message.id;
|
|
63
|
+
if (message.usage)
|
|
64
|
+
this.merge(message.id, message.usage, message.model);
|
|
65
|
+
}
|
|
66
|
+
if (stream?.type === 'message_delta' && this.currentId && stream.usage)
|
|
67
|
+
this.merge(this.currentId, stream.usage);
|
|
68
|
+
if (event.type === 'result' && event.usage && typeof event.usage === 'object')
|
|
69
|
+
this.aggregate = normalize(event.usage);
|
|
70
|
+
const blocks = Array.isArray(event.message?.content) ? event.message.content : [];
|
|
71
|
+
for (const block of [...blocks, stream?.content_block])
|
|
72
|
+
if (block?.type === 'tool_use' && typeof block.name === 'string' && !(/^mcp__[a-zA-Z0-9_-]+__tool_call$/.test(block.name) && !block.input?.name))
|
|
73
|
+
this.usedTools.add((0, tool_name_1.executionTool)(block).name);
|
|
74
|
+
}
|
|
75
|
+
merge(id, raw, model) {
|
|
76
|
+
const next = normalize(raw), previous = this.messages.get(id);
|
|
77
|
+
if (previous)
|
|
78
|
+
for (const key of fields)
|
|
79
|
+
if (previous.usage[key] !== undefined || next[key] !== undefined)
|
|
80
|
+
next[key] = Math.max(previous.usage[key] ?? 0, next[key] ?? 0);
|
|
81
|
+
next.totalTokens = next.inputTokens + next.cacheCreationTokens + next.cacheReadTokens + next.outputTokens;
|
|
82
|
+
this.messages.set(id, { id, model: typeof model === 'string' ? model : previous?.model, usage: next, toolSchemas: this.schemas.get(id) });
|
|
83
|
+
}
|
|
84
|
+
snapshot() {
|
|
85
|
+
const requests = [...this.messages.values()];
|
|
86
|
+
// The CLI aggregate includes otherwise unreported subcalls. It is a fallback
|
|
87
|
+
// and reconciliation source, not an extra request or fabricated request ID.
|
|
88
|
+
let usage = requests.length ? sumUsage(requests.map(request => request.usage)) : this.aggregate;
|
|
89
|
+
if (usage && this.aggregate) {
|
|
90
|
+
usage = { ...usage };
|
|
91
|
+
for (const key of fields)
|
|
92
|
+
if (usage[key] !== undefined || this.aggregate[key] !== undefined)
|
|
93
|
+
usage[key] = Math.max(usage[key] ?? 0, this.aggregate[key] ?? 0);
|
|
94
|
+
usage.totalTokens = usage.inputTokens + usage.cacheCreationTokens + usage.cacheReadTokens + usage.outputTokens;
|
|
95
|
+
}
|
|
96
|
+
const measured = requests.filter(r => r.toolSchemas);
|
|
97
|
+
const contextTools = measured.length ? [...new Set(measured.flatMap(r => r.toolSchemas.loaded))].sort() : null;
|
|
98
|
+
return { usage, requests, contextTools, schemaCoverage: { measured: measured.length, total: requests.length }, loadedTools: this.loadedTools, usedTools: [...this.usedTools].sort(), model: this.model };
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.TurnUsageCollector = TurnUsageCollector;
|
|
102
|
+
//# sourceMappingURL=token-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-usage.js","sourceRoot":"","sources":["../../src/orchestration/token-usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-activity.d.ts","sourceRoot":"","sources":["../../src/orchestration/tool-activity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool-activity.d.ts","sourceRoot":"","sources":["../../src/orchestration/tool-activity.ts"],"names":[],"mappings":"AACA,yEAAyE;AACzE,MAAM,WAAW,YAAY;IAAG,IAAI,EAAE,UAAU,GAAG,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAAE;AAClJ,wBAAgB,YAAY,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAwB3F"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.toolActivity = toolActivity;
|
|
4
|
+
const tool_name_1 = require("./tool-name");
|
|
4
5
|
function toolActivity(publish) {
|
|
5
6
|
const calls = new Map();
|
|
6
7
|
const finished = new Set();
|
|
@@ -16,9 +17,10 @@ function toolActivity(publish) {
|
|
|
16
17
|
return;
|
|
17
18
|
for (const block of event.message.content) {
|
|
18
19
|
if (block.type === 'tool_use' && typeof block.id === 'string' && typeof block.name === 'string' && !calls.has(block.id) && calls.size < 2000) {
|
|
19
|
-
|
|
20
|
+
const actual = (0, tool_name_1.executionTool)(block);
|
|
21
|
+
calls.set(block.id, actual.name);
|
|
20
22
|
const input = {};
|
|
21
|
-
for (const [key, value] of Object.entries(
|
|
23
|
+
for (const [key, value] of Object.entries(actual.input).slice(0, 16)) {
|
|
22
24
|
if (/token|secret|password|authorization|api.?key/i.test(key))
|
|
23
25
|
continue;
|
|
24
26
|
if (typeof value === 'string')
|
|
@@ -26,7 +28,7 @@ function toolActivity(publish) {
|
|
|
26
28
|
else if (typeof value === 'number' || typeof value === 'boolean')
|
|
27
29
|
input[key] = value;
|
|
28
30
|
}
|
|
29
|
-
publish({ type: 'tool_use', id: block.id, name:
|
|
31
|
+
publish({ type: 'tool_use', id: block.id, name: actual.name, input });
|
|
30
32
|
}
|
|
31
33
|
if (block.type === 'tool_result' && calls.has(block.tool_use_id) && !finished.has(block.tool_use_id)) {
|
|
32
34
|
finished.add(block.tool_use_id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-activity.js","sourceRoot":"","sources":["../../src/orchestration/tool-activity.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"tool-activity.js","sourceRoot":"","sources":["../../src/orchestration/tool-activity.ts"],"names":[],"mappings":";;AAGA,oCAwBC;AA3BD,2CAA4C;AAG5C,SAAgB,YAAY,CAAC,OAAsC;IACjE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,OAAO,IAAI,CAAC,EAAE;QACZ,IAAI,KAAU,CAAC;QAAC,IAAI,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO;QAAC,CAAC;QACnE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;YAAE,OAAO;QACnD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;gBAC7I,MAAM,MAAM,GAAG,IAAA,yBAAa,EAAC,KAAK,CAAC,CAAC;gBACpC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,KAAK,GAA4B,EAAE,CAAC;gBAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;oBACrE,IAAI,+CAA+C,CAAC,IAAI,CAAC,GAAG,CAAC;wBAAE,SAAS;oBACxE,IAAI,OAAO,KAAK,KAAK,QAAQ;wBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;yBAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;wBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACvF,CAAC;gBACD,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;gBACrG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAChC,OAAO,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAClI,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Display the deferred target within its original MCP namespace. Never let a
|
|
2
|
+
* connector claim that its call executed a native or gateway tool. */
|
|
3
|
+
export declare function executionTool(block: {
|
|
4
|
+
name?: unknown;
|
|
5
|
+
input?: any;
|
|
6
|
+
}): {
|
|
7
|
+
name: string;
|
|
8
|
+
input: Record<string, unknown>;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=tool-name.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-name.d.ts","sourceRoot":"","sources":["../../src/orchestration/tool-name.ts"],"names":[],"mappings":"AAAA;sEACsE;AACtE,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAOtH"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.executionTool = executionTool;
|
|
4
|
+
/** Display the deferred target within its original MCP namespace. Never let a
|
|
5
|
+
* connector claim that its call executed a native or gateway tool. */
|
|
6
|
+
function executionTool(block) {
|
|
7
|
+
const name = typeof block.name === 'string' ? block.name : 'tool';
|
|
8
|
+
const input = block.input && typeof block.input === 'object' && !Array.isArray(block.input) ? block.input : {};
|
|
9
|
+
if (/^mcp__[a-zA-Z0-9_-]+__tool_call$/.test(name) && typeof input.name === 'string' && /^[a-zA-Z0-9_-]{1,128}$/.test(input.name)) {
|
|
10
|
+
return { name: name.slice(0, -'tool_call'.length) + input.name, input: input.arguments && typeof input.arguments === 'object' && !Array.isArray(input.arguments) ? input.arguments : {} };
|
|
11
|
+
}
|
|
12
|
+
return { name, input };
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=tool-name.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-name.js","sourceRoot":"","sources":["../../src/orchestration/tool-name.ts"],"names":[],"mappings":";;AAEA,sCAOC;AATD;sEACsE;AACtE,SAAgB,aAAa,CAAC,KAAsC;IAClE,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IAClE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/G,IAAI,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACjI,OAAO,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC;IAC1L,CAAC;IACD,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface TranscriptCheckpoint {
|
|
2
|
+
path: string;
|
|
3
|
+
size: number;
|
|
4
|
+
ino: number;
|
|
5
|
+
dev: number;
|
|
6
|
+
}
|
|
7
|
+
/** Only existing, private CLI transcripts are eligible. Never rewind a fresh session. */
|
|
8
|
+
export declare function checkpointTranscript(path: string): Promise<TranscriptCheckpoint | undefined>;
|
|
9
|
+
/** After confirmed CLI shutdown, remove only an unanswered attempt's appended
|
|
10
|
+
* input/metadata. Real assistant output, tool results, compaction boundaries and
|
|
11
|
+
* unknown records fail closed. Keep the discarded bytes in a private diagnostic
|
|
12
|
+
* archive; the user's input and task receipts remain in the orchestration DB. */
|
|
13
|
+
export declare function rollbackUnansweredTranscript(checkpoint: TranscriptCheckpoint): Promise<boolean>;
|
|
14
|
+
//# sourceMappingURL=transcript-checkpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript-checkpoint.d.ts","sourceRoot":"","sources":["../../src/orchestration/transcript-checkpoint.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;CAAE;AAE/F,yFAAyF;AACzF,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAalG;AAED;;;iFAGiF;AACjF,wBAAsB,4BAA4B,CAAC,UAAU,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAmCrG"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkpointTranscript = checkpointTranscript;
|
|
4
|
+
exports.rollbackUnansweredTranscript = rollbackUnansweredTranscript;
|
|
5
|
+
/** Only existing, private CLI transcripts are eligible. Never rewind a fresh session. */
|
|
6
|
+
async function checkpointTranscript(path) {
|
|
7
|
+
// Self-contained so the same implementation can run through containerNode;
|
|
8
|
+
// container recovery must not read/write host transcripts.
|
|
9
|
+
const { constants } = require('fs');
|
|
10
|
+
const { open } = require('fs/promises');
|
|
11
|
+
try {
|
|
12
|
+
const file = await open(path, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
13
|
+
try {
|
|
14
|
+
const stat = await file.stat();
|
|
15
|
+
if (!stat.isFile() || !stat.size)
|
|
16
|
+
return;
|
|
17
|
+
return { path, size: stat.size, ino: stat.ino, dev: stat.dev };
|
|
18
|
+
}
|
|
19
|
+
finally {
|
|
20
|
+
await file.close();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** After confirmed CLI shutdown, remove only an unanswered attempt's appended
|
|
28
|
+
* input/metadata. Real assistant output, tool results, compaction boundaries and
|
|
29
|
+
* unknown records fail closed. Keep the discarded bytes in a private diagnostic
|
|
30
|
+
* archive; the user's input and task receipts remain in the orchestration DB. */
|
|
31
|
+
async function rollbackUnansweredTranscript(checkpoint) {
|
|
32
|
+
const { constants } = require('fs');
|
|
33
|
+
const { open, writeFile } = require('fs/promises');
|
|
34
|
+
const { randomUUID } = require('crypto');
|
|
35
|
+
const metadata = new Set(['queue-operation', 'attachment', 'last-prompt', 'ai-title', 'mode', 'atis-latch']);
|
|
36
|
+
try {
|
|
37
|
+
const file = await open(checkpoint.path, constants.O_RDWR | constants.O_NOFOLLOW);
|
|
38
|
+
try {
|
|
39
|
+
const stat = await file.stat();
|
|
40
|
+
const length = stat.size - checkpoint.size;
|
|
41
|
+
if (stat.ino !== checkpoint.ino || stat.dev !== checkpoint.dev || length <= 0 || length > 8 * 1024 * 1024)
|
|
42
|
+
return false;
|
|
43
|
+
const tail = Buffer.alloc(length);
|
|
44
|
+
const { bytesRead } = await file.read(tail, 0, length, checkpoint.size);
|
|
45
|
+
if (bytesRead !== length || tail[length - 1] !== 10)
|
|
46
|
+
return false;
|
|
47
|
+
let hasInput = false;
|
|
48
|
+
for (const line of tail.toString('utf8').split('\n').filter(Boolean)) {
|
|
49
|
+
const row = JSON.parse(line);
|
|
50
|
+
if (row.type === 'user') {
|
|
51
|
+
const content = row.message?.content;
|
|
52
|
+
if (typeof content !== 'string' && (!Array.isArray(content) || content.some((b) => !['text', 'image'].includes(b.type))))
|
|
53
|
+
return false;
|
|
54
|
+
hasInput = true;
|
|
55
|
+
}
|
|
56
|
+
else if (row.type === 'assistant') {
|
|
57
|
+
if (!Array.isArray(row.message?.content) || row.message.content.some((b) => b.type !== 'text'))
|
|
58
|
+
return false;
|
|
59
|
+
if (row.isApiErrorMessage !== true && (row.message?.model !== '<synthetic>' ||
|
|
60
|
+
row.message.content.some((b) => b.text !== 'No response requested.')))
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
else if (!metadata.has(row.type))
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
if (!hasInput)
|
|
67
|
+
return false;
|
|
68
|
+
await writeFile(`${checkpoint.path}.failed-turn-${randomUUID()}`, tail, { mode: 0o600, flag: 'wx' });
|
|
69
|
+
const current = await file.stat();
|
|
70
|
+
if (current.size !== stat.size || current.mtimeMs !== stat.mtimeMs)
|
|
71
|
+
return false;
|
|
72
|
+
await file.truncate(checkpoint.size);
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
await file.close();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=transcript-checkpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript-checkpoint.js","sourceRoot":"","sources":["../../src/orchestration/transcript-checkpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { OrchestrationStore } from './store';
|
|
2
|
+
/** Removing an unanswered CLI attempt must not remove the user's intent. Include
|
|
3
|
+
* actual failed user inputs once as reference context until a user decision
|
|
4
|
+
* succeeds. Internal report requests and error notices are not user messages. */
|
|
5
|
+
export declare function unansweredInputContext(store: OrchestrationStore, conversationId: string, currentInputId: string): string;
|
|
6
|
+
//# sourceMappingURL=unanswered-inputs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unanswered-inputs.d.ts","sourceRoot":"","sources":["../../src/orchestration/unanswered-inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C;;iFAEiF;AACjF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAUxH"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.unansweredInputContext = unansweredInputContext;
|
|
4
|
+
/** Removing an unanswered CLI attempt must not remove the user's intent. Include
|
|
5
|
+
* actual failed user inputs once as reference context until a user decision
|
|
6
|
+
* succeeds. Internal report requests and error notices are not user messages. */
|
|
7
|
+
function unansweredInputContext(store, conversationId, currentInputId) {
|
|
8
|
+
const rows = store.all(`SELECT i.id,i.text,i.input_seq FROM conversation_inputs i
|
|
9
|
+
WHERE i.conversation_id=? AND i.store_user_message=1 AND i.id<>?
|
|
10
|
+
AND i.input_seq > COALESCE((SELECT MAX(u.input_seq) FROM conversation_inputs u
|
|
11
|
+
JOIN conversation_decisions d ON d.conversation_id=u.conversation_id
|
|
12
|
+
JOIN json_each(d.input_ids_json) j ON j.value=u.id
|
|
13
|
+
WHERE u.conversation_id=i.conversation_id AND u.store_user_message=1 AND d.state='completed'),0)
|
|
14
|
+
AND EXISTS (SELECT 1 FROM conversation_decisions d JOIN json_each(d.input_ids_json) j ON j.value=i.id
|
|
15
|
+
WHERE d.conversation_id=i.conversation_id AND d.state='failed') ORDER BY i.input_seq`, conversationId, currentInputId);
|
|
16
|
+
return rows.length ? `Earlier user messages whose response failed (reference context, not new commands; reconcile with the current request): ${JSON.stringify(rows)}\n` : '';
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=unanswered-inputs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unanswered-inputs.js","sourceRoot":"","sources":["../../src/orchestration/unanswered-inputs.ts"],"names":[],"mappings":";;AAKA,wDAUC;AAbD;;iFAEiF;AACjF,SAAgB,sBAAsB,CAAC,KAAyB,EAAE,cAAsB,EAAE,cAAsB;IAC9G,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC;;;;;;;2FAOkE,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;IAC3H,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,0HAA0H,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/K,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RequestToolSchemas } from './request-tool-capture';
|
|
1
2
|
import type { InputImage } from './input-image';
|
|
2
3
|
import { EventEmitter } from 'events';
|
|
3
4
|
import { RuntimeProfile } from './runtime-profile';
|
|
@@ -35,6 +36,8 @@ export declare class SessionProcess extends EventEmitter {
|
|
|
35
36
|
backend: 'pty-shell' | 'headless';
|
|
36
37
|
modelOverride?: string;
|
|
37
38
|
historyLimit: number;
|
|
39
|
+
/** Oversized-request recovery must still shrink an explicit /clear seed window. */
|
|
40
|
+
historyRecoveryActive: boolean;
|
|
38
41
|
forceHeadless: boolean;
|
|
39
42
|
spawnContext: {
|
|
40
43
|
loadedAtSpawn: number;
|
|
@@ -65,6 +68,9 @@ export declare class SessionProcess extends EventEmitter {
|
|
|
65
68
|
private persistedReplyToolIds;
|
|
66
69
|
private lastClaudeBin;
|
|
67
70
|
private lastStderrLine;
|
|
71
|
+
/** Last stderr line the child produced. A failed turn is diagnosed from this, so a
|
|
72
|
+
* caller can tell a rejected `--resume` apart from an ordinary process exit. */
|
|
73
|
+
get lastStderr(): string | null;
|
|
68
74
|
private stderrBuffer;
|
|
69
75
|
private resolvedBinLogged;
|
|
70
76
|
private _queryResolve?;
|
|
@@ -95,6 +101,7 @@ export declare class SessionProcess extends EventEmitter {
|
|
|
95
101
|
* re-spawn it with the latest model from config.json.
|
|
96
102
|
*/
|
|
97
103
|
private setupRestartWatcher;
|
|
104
|
+
private contextResetId?;
|
|
98
105
|
private buildInitialPrompt;
|
|
99
106
|
/**
|
|
100
107
|
* Read stdio MCP servers from Claude Code's user-scoped config
|
|
@@ -174,6 +181,7 @@ export declare class SessionProcess extends EventEmitter {
|
|
|
174
181
|
/** Only trust connector namespaces actually written into this subprocess config. */
|
|
175
182
|
isSpawnedConnectorTool(name: string): boolean;
|
|
176
183
|
private managedMcpConfigPath?;
|
|
184
|
+
private managedConnectorPaths;
|
|
177
185
|
private writeMcpConfig;
|
|
178
186
|
/** Find the first API key that has access to this agent (agents: '*' or includes agentId). */
|
|
179
187
|
private findApiKeyForAgent;
|
|
@@ -279,6 +287,8 @@ export declare class SessionProcess extends EventEmitter {
|
|
|
279
287
|
*/
|
|
280
288
|
hasLikelyOutstandingBackgroundWork(): boolean;
|
|
281
289
|
isRunning(): boolean;
|
|
290
|
+
private toolCapture?;
|
|
291
|
+
flushToolSchemas(expectedIds?: string[]): Promise<RequestToolSchemas[]>;
|
|
282
292
|
stop(): Promise<void>;
|
|
283
293
|
}
|
|
284
294
|
//# sourceMappingURL=process.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/session/process.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIhD,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,EAAE,cAAc,EAAsB,MAAM,mBAAmB,CAAC;AAKvE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGtD,OAAO,EAAmC,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAevC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAqHvC,eAAO,MAAM,yBAAyB,oDAAoD,CAAC;AAE3F;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAMR;AAqDD,qBAAa,cAAe,SAAQ,YAAY;
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/session/process.ts"],"names":[],"mappings":"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"}
|