@pentoshi/clai 4.1.0 → 4.2.0
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 +14 -0
- package/dist/agent/compaction-executor.d.ts +68 -0
- package/dist/agent/compaction-executor.js +343 -0
- package/dist/agent/compaction-executor.js.map +1 -0
- package/dist/agent/context-breakdown.js +2 -0
- package/dist/agent/context-breakdown.js.map +1 -1
- package/dist/agent/context-manager.d.ts +23 -9
- package/dist/agent/context-manager.js +72 -43
- package/dist/agent/context-manager.js.map +1 -1
- package/dist/agent/events.d.ts +3 -0
- package/dist/agent/loop-guard.d.ts +2 -0
- package/dist/agent/loop-guard.js +48 -3
- package/dist/agent/loop-guard.js.map +1 -1
- package/dist/agent/prompt-composer.js +6 -6
- package/dist/agent/prompt-composer.js.map +1 -1
- package/dist/agent/reliability-policy.d.ts +1 -0
- package/dist/agent/reliability-policy.js +6 -3
- package/dist/agent/reliability-policy.js.map +1 -1
- package/dist/agent/request-accounting.d.ts +97 -0
- package/dist/agent/request-accounting.js +207 -0
- package/dist/agent/request-accounting.js.map +1 -0
- package/dist/agent/request-budget.d.ts +2 -2
- package/dist/agent/request-budget.js +2 -4
- package/dist/agent/request-budget.js.map +1 -1
- package/dist/agent/runner.d.ts +8 -2
- package/dist/agent/runner.js +409 -178
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/session-title.d.ts +0 -26
- package/dist/agent/session-title.js +0 -80
- package/dist/agent/session-title.js.map +1 -1
- package/dist/agent/tool-history.d.ts +2 -2
- package/dist/agent/tool-history.js +19 -6
- package/dist/agent/tool-history.js.map +1 -1
- package/dist/app/adapters/agent-event-adapter.js +19 -0
- package/dist/app/adapters/agent-event-adapter.js.map +1 -1
- package/dist/app/adapters/current-agent-adapter.js +4 -0
- package/dist/app/adapters/current-agent-adapter.js.map +1 -1
- package/dist/app/commands/catalog.js +24 -0
- package/dist/app/commands/catalog.js.map +1 -1
- package/dist/app/controllers/cancel-coordinator.d.ts +51 -0
- package/dist/app/controllers/cancel-coordinator.js +48 -0
- package/dist/app/controllers/cancel-coordinator.js.map +1 -0
- package/dist/app/controllers/session-compact-helper.d.ts +19 -2
- package/dist/app/controllers/session-compact-helper.js +100 -127
- package/dist/app/controllers/session-compact-helper.js.map +1 -1
- package/dist/app/controllers/session-context-usage.d.ts +32 -15
- package/dist/app/controllers/session-context-usage.js +186 -51
- package/dist/app/controllers/session-context-usage.js.map +1 -1
- package/dist/app/controllers/session-controller.d.ts +20 -11
- package/dist/app/controllers/session-controller.js +111 -90
- package/dist/app/controllers/session-controller.js.map +1 -1
- package/dist/app/controllers/session-naming.d.ts +31 -0
- package/dist/app/controllers/session-naming.js +173 -0
- package/dist/app/controllers/session-naming.js.map +1 -0
- package/dist/app/controllers/session-persistence.d.ts +2 -2
- package/dist/app/controllers/session-persistence.js +3 -6
- package/dist/app/controllers/session-persistence.js.map +1 -1
- package/dist/app/controllers/session-turn-request.d.ts +2 -1
- package/dist/app/controllers/session-turn-request.js +3 -0
- package/dist/app/controllers/session-turn-request.js.map +1 -1
- package/dist/app/controllers/turn-controller.d.ts +2 -1
- package/dist/app/controllers/turn-controller.js +1 -0
- package/dist/app/controllers/turn-controller.js.map +1 -1
- package/dist/app/events/app-event.d.ts +9 -0
- package/dist/app/events/app-event.js.map +1 -1
- package/dist/app/ports/agent-port.d.ts +8 -1
- package/dist/classic/app/ClassicApp.js +2 -1
- package/dist/classic/app/ClassicApp.js.map +1 -1
- package/dist/classic/app/app-wiring.js +1 -2
- package/dist/classic/app/app-wiring.js.map +1 -1
- package/dist/classic/app/wiring-interactions.js +2 -7
- package/dist/classic/app/wiring-interactions.js.map +1 -1
- package/dist/classic/blocks/tool-lines.js +2 -1
- package/dist/classic/blocks/tool-lines.js.map +1 -1
- package/dist/classic/input/cancel-ladder.d.ts +2 -19
- package/dist/classic/input/cancel-ladder.js +13 -20
- package/dist/classic/input/cancel-ladder.js.map +1 -1
- package/dist/commands/providers.js +2 -0
- package/dist/commands/providers.js.map +1 -1
- package/dist/llm/adapters/anthropic-tools.d.ts +31 -14
- package/dist/llm/adapters/anthropic-tools.js +124 -29
- package/dist/llm/adapters/anthropic-tools.js.map +1 -1
- package/dist/llm/adapters/gemini-tools.d.ts +16 -4
- package/dist/llm/adapters/gemini-tools.js +117 -16
- package/dist/llm/adapters/gemini-tools.js.map +1 -1
- package/dist/llm/adapters/openai-tools.d.ts +13 -2
- package/dist/llm/adapters/openai-tools.js +58 -11
- package/dist/llm/adapters/openai-tools.js.map +1 -1
- package/dist/llm/agentrouter.js +68 -45
- package/dist/llm/agentrouter.js.map +1 -1
- package/dist/llm/anthropic.js +69 -36
- package/dist/llm/anthropic.js.map +1 -1
- package/dist/llm/aws-mantle.js +70 -32
- package/dist/llm/aws-mantle.js.map +1 -1
- package/dist/llm/bynara.js +26 -69
- package/dist/llm/bynara.js.map +1 -1
- package/dist/llm/capabilities.d.ts +2 -1
- package/dist/llm/capabilities.js +47 -0
- package/dist/llm/capabilities.js.map +1 -1
- package/dist/llm/context-snapshot.d.ts +100 -0
- package/dist/llm/context-snapshot.js +277 -0
- package/dist/llm/context-snapshot.js.map +1 -0
- package/dist/llm/context-windows.d.ts +10 -0
- package/dist/llm/context-windows.js +129 -0
- package/dist/llm/context-windows.js.map +1 -0
- package/dist/llm/custom-provider-profile.d.ts +75 -0
- package/dist/llm/custom-provider-profile.js +558 -0
- package/dist/llm/custom-provider-profile.js.map +1 -0
- package/dist/llm/custom-providers.d.ts +13 -1
- package/dist/llm/custom-providers.js +77 -25
- package/dist/llm/custom-providers.js.map +1 -1
- package/dist/llm/effort-fallback.d.ts +44 -0
- package/dist/llm/effort-fallback.js +101 -0
- package/dist/llm/effort-fallback.js.map +1 -0
- package/dist/llm/fireworks.js +4 -0
- package/dist/llm/fireworks.js.map +1 -1
- package/dist/llm/free.js +4 -0
- package/dist/llm/free.js.map +1 -1
- package/dist/llm/gemini.d.ts +1 -1
- package/dist/llm/gemini.js +89 -51
- package/dist/llm/gemini.js.map +1 -1
- package/dist/llm/groq.js +4 -0
- package/dist/llm/groq.js.map +1 -1
- package/dist/llm/hetzner.js +4 -0
- package/dist/llm/hetzner.js.map +1 -1
- package/dist/llm/http.d.ts +49 -10
- package/dist/llm/http.js +417 -153
- package/dist/llm/http.js.map +1 -1
- package/dist/llm/kimchi.js +4 -0
- package/dist/llm/kimchi.js.map +1 -1
- package/dist/llm/lightning.js +4 -0
- package/dist/llm/lightning.js.map +1 -1
- package/dist/llm/meta.d.ts +2 -0
- package/dist/llm/meta.js +811 -655
- package/dist/llm/meta.js.map +1 -1
- package/dist/llm/modal.js +4 -0
- package/dist/llm/modal.js.map +1 -1
- package/dist/llm/model-families.d.ts +9 -0
- package/dist/llm/model-families.js +39 -0
- package/dist/llm/model-families.js.map +1 -0
- package/dist/llm/nvidia.js +4 -0
- package/dist/llm/nvidia.js.map +1 -1
- package/dist/llm/ollama.js +44 -40
- package/dist/llm/ollama.js.map +1 -1
- package/dist/llm/openai.js +4 -0
- package/dist/llm/openai.js.map +1 -1
- package/dist/llm/openrouter.js +4 -0
- package/dist/llm/openrouter.js.map +1 -1
- package/dist/llm/operation-ledger.d.ts +60 -0
- package/dist/llm/operation-ledger.js +136 -0
- package/dist/llm/operation-ledger.js.map +1 -0
- package/dist/llm/operation-usage.d.ts +32 -0
- package/dist/llm/operation-usage.js +172 -0
- package/dist/llm/operation-usage.js.map +1 -0
- package/dist/llm/orcarouter.d.ts +7 -0
- package/dist/llm/orcarouter.js +166 -0
- package/dist/llm/orcarouter.js.map +1 -0
- package/dist/llm/provider-profile-layers.d.ts +7 -0
- package/dist/llm/provider-profile-layers.js +961 -0
- package/dist/llm/provider-profile-layers.js.map +1 -0
- package/dist/llm/provider-profile.d.ts +181 -0
- package/dist/llm/provider-profile.js +329 -0
- package/dist/llm/provider-profile.js.map +1 -0
- package/dist/llm/provider-profiles.d.ts +13 -0
- package/dist/llm/provider-profiles.js +86 -0
- package/dist/llm/provider-profiles.js.map +1 -0
- package/dist/llm/provider.d.ts +2 -0
- package/dist/llm/provider.js +67 -0
- package/dist/llm/provider.js.map +1 -1
- package/dist/llm/qwen-cloud.js +4 -0
- package/dist/llm/qwen-cloud.js.map +1 -1
- package/dist/llm/reasoning-artifacts.d.ts +101 -0
- package/dist/llm/reasoning-artifacts.js +440 -0
- package/dist/llm/reasoning-artifacts.js.map +1 -0
- package/dist/llm/request-fingerprint.d.ts +10 -0
- package/dist/llm/request-fingerprint.js +313 -0
- package/dist/llm/request-fingerprint.js.map +1 -0
- package/dist/llm/request-plan.d.ts +119 -0
- package/dist/llm/request-plan.js +279 -0
- package/dist/llm/request-plan.js.map +1 -0
- package/dist/llm/router.d.ts +19 -1
- package/dist/llm/router.js +447 -75
- package/dist/llm/router.js.map +1 -1
- package/dist/llm/stream-events.d.ts +47 -0
- package/dist/llm/stream-events.js +55 -0
- package/dist/llm/stream-events.js.map +1 -0
- package/dist/llm/stream-terminal.d.ts +30 -0
- package/dist/llm/stream-terminal.js +51 -0
- package/dist/llm/stream-terminal.js.map +1 -0
- package/dist/llm/token-estimate-calibration.d.ts +23 -0
- package/dist/llm/token-estimate-calibration.js +140 -0
- package/dist/llm/token-estimate-calibration.js.map +1 -0
- package/dist/llm/token-usage.d.ts +35 -5
- package/dist/llm/token-usage.js +212 -162
- package/dist/llm/token-usage.js.map +1 -1
- package/dist/llm/tokenrouter.js +8 -2
- package/dist/llm/tokenrouter.js.map +1 -1
- package/dist/modes/ask.js +11 -5
- package/dist/modes/ask.js.map +1 -1
- package/dist/noninteractive/start-noninteractive.js +31 -2
- package/dist/noninteractive/start-noninteractive.js.map +1 -1
- package/dist/noninteractive/stream-blocks.js +15 -4
- package/dist/noninteractive/stream-blocks.js.map +1 -1
- package/dist/prompts/embedded.js +1 -1
- package/dist/prompts/embedded.js.map +1 -1
- package/dist/prompts/system.agent.md +6 -0
- package/dist/store/config.js +5 -1
- package/dist/store/config.js.map +1 -1
- package/dist/store/history.d.ts +2 -0
- package/dist/store/history.js +19 -10
- package/dist/store/history.js.map +1 -1
- package/dist/store/plan.js +20 -14
- package/dist/store/plan.js.map +1 -1
- package/dist/tools/elevated-shell.d.ts +1 -1
- package/dist/tools/elevated-shell.js +24 -72
- package/dist/tools/elevated-shell.js.map +1 -1
- package/dist/tools/nmap-runner.js +30 -36
- package/dist/tools/nmap-runner.js.map +1 -1
- package/dist/tools/sudo-session.d.ts +83 -0
- package/dist/tools/sudo-session.js +124 -0
- package/dist/tools/sudo-session.js.map +1 -0
- package/dist/tui-v2/app/App.js +9 -24
- package/dist/tui-v2/app/App.js.map +1 -1
- package/dist/tui-v2/components/status/context-limit-chip.js +2 -2
- package/dist/tui-v2/components/status/context-limit-chip.js.map +1 -1
- package/dist/tui-v2/components/transcript/intro-card.js +2 -1
- package/dist/tui-v2/components/transcript/intro-card.js.map +1 -1
- package/dist/tui-v2/composer/composer-editor.js +2 -1
- package/dist/tui-v2/composer/composer-editor.js.map +1 -1
- package/dist/types.d.ts +156 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/dist/ui-core/bootstrap/composition-root.d.ts +2 -0
- package/dist/ui-core/bootstrap/composition-root.js +26 -3
- package/dist/ui-core/bootstrap/composition-root.js.map +1 -1
- package/dist/ui-core/commands/picker-commands.js +11 -5
- package/dist/ui-core/commands/picker-commands.js.map +1 -1
- package/dist/ui-core/commands/session-commands.js +41 -5
- package/dist/ui-core/commands/session-commands.js.map +1 -1
- package/dist/ui-core/plan/plan-lifecycle.js +3 -2
- package/dist/ui-core/plan/plan-lifecycle.js.map +1 -1
- package/dist/ui-core/rendering/context-limit.js +4 -1
- package/dist/ui-core/rendering/context-limit.js.map +1 -1
- package/dist/ui-core/rendering/duration.d.ts +2 -1
- package/dist/ui-core/rendering/duration.js +13 -5
- package/dist/ui-core/rendering/duration.js.map +1 -1
- package/dist/ui-core/rendering/intro-header.js +2 -2
- package/dist/ui-core/rendering/intro-header.js.map +1 -1
- package/dist/ui-core/rendering/theme.d.ts +1 -0
- package/dist/ui-core/rendering/theme.js +2 -0
- package/dist/ui-core/rendering/theme.js.map +1 -1
- package/dist/ui-core/state/transcript-hydrate.js +3 -3
- package/dist/ui-core/state/transcript-hydrate.js.map +1 -1
- package/dist/ui-core/state/transcript-reducer.d.ts +5 -0
- package/dist/ui-core/state/transcript-reducer.js +76 -3
- package/dist/ui-core/state/transcript-reducer.js.map +1 -1
- package/dist/ui-core/state/transcript-store.d.ts +10 -1
- package/dist/ui-core/state/transcript-store.js +22 -1
- package/dist/ui-core/state/transcript-store.js.map +1 -1
- package/dist/ui-core/state/transcript-types.d.ts +2 -0
- package/dist/ui-core/state/transcript-types.js.map +1 -1
- package/dist/version.generated.d.ts +2 -2
- package/dist/version.generated.js +2 -2
- package/package.json +6 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reliability-policy.js","sourceRoot":"","sources":["../../src/agent/reliability-policy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"reliability-policy.js","sourceRoot":"","sources":["../../src/agent/reliability-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { ChatImage, ChatMessage, ProviderId, ReasoningPreference, ToolChoice, ToolDefinition } from "../types.js";
|
|
2
|
+
import { type RequestPlanV1 } from "../llm/request-plan.js";
|
|
3
|
+
/**
|
|
4
|
+
* One serialized-request accounting service (doc 06 §4, MR-004/MR-007/MR-021).
|
|
5
|
+
*
|
|
6
|
+
* Every component that needs a token figure for a fit or admission decision
|
|
7
|
+
* goes through this module: the canonical conservative text estimator, the
|
|
8
|
+
* per-message estimator (content, native tool calls, reasoning artifacts,
|
|
9
|
+
* images), the effective context-limit policy, and plan-level accounting with
|
|
10
|
+
* headroom. Nothing else owns a chars-per-token ratio.
|
|
11
|
+
*/
|
|
12
|
+
export declare const RESERVED_OUTPUT_TOKENS = 24576;
|
|
13
|
+
export declare const SAFETY_MARGIN_TOKENS = 2048;
|
|
14
|
+
/**
|
|
15
|
+
* Conservative mixed text/code/JSON estimator. It deliberately over-estimates:
|
|
16
|
+
* compacting one turn too early is cheaper than losing state to a provider
|
|
17
|
+
* context-window error.
|
|
18
|
+
*/
|
|
19
|
+
export declare function estimateTextTokens(text: string): number;
|
|
20
|
+
export declare function estimateImageTokens(image: ChatImage): number;
|
|
21
|
+
export declare function estimateMessageTokens(message: ChatMessage): number;
|
|
22
|
+
export declare function estimateMessagesTokens(messages: readonly ChatMessage[]): number;
|
|
23
|
+
export declare function estimateToolSchemaTokens(tools: readonly ToolDefinition[] | undefined): number;
|
|
24
|
+
export type EffectiveLimitSource = "session-override" | "model-window" | "unknown";
|
|
25
|
+
export interface EffectiveContextLimit {
|
|
26
|
+
readonly limitTokens?: number | undefined;
|
|
27
|
+
readonly source: EffectiveLimitSource;
|
|
28
|
+
readonly reservedOutputTokens: number;
|
|
29
|
+
readonly safetyMarginTokens: number;
|
|
30
|
+
/** Largest request that still leaves the reserved output and margin free. */
|
|
31
|
+
readonly effectiveSafeTokens?: number | undefined;
|
|
32
|
+
}
|
|
33
|
+
export declare function resolveEffectiveContextLimit(input?: {
|
|
34
|
+
readonly provider?: ProviderId | undefined;
|
|
35
|
+
readonly model?: string | undefined;
|
|
36
|
+
readonly contextLimitTokens?: number | undefined;
|
|
37
|
+
readonly reservedOutputTokens?: number | undefined;
|
|
38
|
+
readonly safetyMarginTokens?: number | undefined;
|
|
39
|
+
}): EffectiveContextLimit;
|
|
40
|
+
export interface RequestAccounting {
|
|
41
|
+
/**
|
|
42
|
+
* Whole serialized request: timeline sections plus tool schemas, corrected by
|
|
43
|
+
* the route's observed estimator bias when it has been measured. Every fit,
|
|
44
|
+
* trigger and display decision uses this figure.
|
|
45
|
+
*/
|
|
46
|
+
readonly requestTokens: number;
|
|
47
|
+
/** The same total before route correction; the only value fit to calibrate. */
|
|
48
|
+
readonly rawRequestTokens: number;
|
|
49
|
+
readonly instructionsTokens: number;
|
|
50
|
+
readonly historyTokens: number;
|
|
51
|
+
readonly liveTokens: number;
|
|
52
|
+
readonly toolsTokens: number;
|
|
53
|
+
readonly artifactTokens: number;
|
|
54
|
+
readonly replayedArtifactCount: number;
|
|
55
|
+
readonly imageTokens: number;
|
|
56
|
+
readonly imageCount: number;
|
|
57
|
+
readonly messageCount: number;
|
|
58
|
+
readonly limit: EffectiveContextLimit;
|
|
59
|
+
/** effectiveSafeTokens - requestTokens, when a limit is known. */
|
|
60
|
+
readonly headroomTokens?: number | undefined;
|
|
61
|
+
/** True only when the request cannot fit the effective safe limit. */
|
|
62
|
+
readonly overLimit?: boolean | undefined;
|
|
63
|
+
/** `calibrated` once this route's estimator bias has been measured. */
|
|
64
|
+
readonly precision: "estimate" | "calibrated";
|
|
65
|
+
}
|
|
66
|
+
export declare function accountRequestPlan(plan: RequestPlanV1, policy?: {
|
|
67
|
+
readonly provider?: ProviderId | undefined;
|
|
68
|
+
readonly model?: string | undefined;
|
|
69
|
+
readonly contextLimitTokens?: number | undefined;
|
|
70
|
+
readonly reservedOutputTokens?: number | undefined;
|
|
71
|
+
readonly safetyMarginTokens?: number | undefined;
|
|
72
|
+
}): RequestAccounting;
|
|
73
|
+
/**
|
|
74
|
+
* Compile the canonical plan for an assembled request and account it in one
|
|
75
|
+
* step. This is the only fit check callers should perform on a request that is
|
|
76
|
+
* about to be dispatched.
|
|
77
|
+
*/
|
|
78
|
+
export declare function accountAssembledRequest(input: {
|
|
79
|
+
readonly provider: ProviderId;
|
|
80
|
+
readonly model: string;
|
|
81
|
+
readonly messages: readonly ChatMessage[];
|
|
82
|
+
readonly stream: boolean;
|
|
83
|
+
readonly tools?: readonly ToolDefinition[] | undefined;
|
|
84
|
+
readonly toolChoice?: ToolChoice | undefined;
|
|
85
|
+
readonly parallelToolCalls?: boolean | undefined;
|
|
86
|
+
readonly reasoning?: ReasoningPreference | undefined;
|
|
87
|
+
readonly contextLimitTokens?: number | undefined;
|
|
88
|
+
readonly reservedOutputTokens?: number | undefined;
|
|
89
|
+
readonly safetyMarginTokens?: number | undefined;
|
|
90
|
+
}): {
|
|
91
|
+
plan: RequestPlanV1;
|
|
92
|
+
accounting: RequestAccounting;
|
|
93
|
+
};
|
|
94
|
+
/** The final assembled request cannot fit the effective safe limit. */
|
|
95
|
+
export declare class RequestOverLimitError extends Error {
|
|
96
|
+
constructor(message: string);
|
|
97
|
+
}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { compileRequestPlan, } from "../llm/request-plan.js";
|
|
2
|
+
import { reasoningArtifactTokensForMessage } from "../llm/reasoning-artifacts.js";
|
|
3
|
+
import { calibratedRequestTokens, requestTokenCalibration, } from "../llm/token-estimate-calibration.js";
|
|
4
|
+
import { nominalModelContextWindow } from "../llm/context-windows.js";
|
|
5
|
+
import { readImageDimensions } from "../attachments/image-content.js";
|
|
6
|
+
import { measureToolCallsChars } from "./message-slim.js";
|
|
7
|
+
/**
|
|
8
|
+
* One serialized-request accounting service (doc 06 §4, MR-004/MR-007/MR-021).
|
|
9
|
+
*
|
|
10
|
+
* Every component that needs a token figure for a fit or admission decision
|
|
11
|
+
* goes through this module: the canonical conservative text estimator, the
|
|
12
|
+
* per-message estimator (content, native tool calls, reasoning artifacts,
|
|
13
|
+
* images), the effective context-limit policy, and plan-level accounting with
|
|
14
|
+
* headroom. Nothing else owns a chars-per-token ratio.
|
|
15
|
+
*/
|
|
16
|
+
export const RESERVED_OUTPUT_TOKENS = 24_576;
|
|
17
|
+
export const SAFETY_MARGIN_TOKENS = 2_048;
|
|
18
|
+
/**
|
|
19
|
+
* Conservative mixed text/code/JSON estimator. It deliberately over-estimates:
|
|
20
|
+
* compacting one turn too early is cheaper than losing state to a provider
|
|
21
|
+
* context-window error.
|
|
22
|
+
*/
|
|
23
|
+
export function estimateTextTokens(text) {
|
|
24
|
+
return Math.ceil(text.length / 3.3);
|
|
25
|
+
}
|
|
26
|
+
const MIN_IMAGE_TOKENS = 300;
|
|
27
|
+
const MAX_IMAGE_TOKENS = 6_000;
|
|
28
|
+
export function estimateImageTokens(image) {
|
|
29
|
+
const rawBytes = Math.ceil((image.dataBase64.length * 3) / 4);
|
|
30
|
+
if (rawBytes <= 0)
|
|
31
|
+
return MIN_IMAGE_TOKENS;
|
|
32
|
+
const dimensions = readImageDimensions(Buffer.from(image.dataBase64.slice(0, 8192), "base64"));
|
|
33
|
+
const tokens = dimensions
|
|
34
|
+
? Math.ceil((dimensions.width * dimensions.height) / 750)
|
|
35
|
+
: Math.ceil(rawBytes / 900);
|
|
36
|
+
return Math.min(MAX_IMAGE_TOKENS, Math.max(MIN_IMAGE_TOKENS, tokens));
|
|
37
|
+
}
|
|
38
|
+
export function estimateMessageTokens(message) {
|
|
39
|
+
let sum = estimateTextTokens(message.content) + 4; // role overhead
|
|
40
|
+
// Native toolCalls often carry full fs.write bodies — must count them or
|
|
41
|
+
// auto-compact never fires and RAM climbs with every scaffold write.
|
|
42
|
+
if (message.toolCalls?.length) {
|
|
43
|
+
const toolChars = Math.min(measureToolCallsChars(message.toolCalls), 2_000_000);
|
|
44
|
+
sum += Math.ceil(toolChars / 3.3);
|
|
45
|
+
}
|
|
46
|
+
sum += reasoningArtifactTokensForMessage(message);
|
|
47
|
+
if (message.images) {
|
|
48
|
+
for (const image of message.images) {
|
|
49
|
+
sum += estimateImageTokens(image);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return sum;
|
|
53
|
+
}
|
|
54
|
+
export function estimateMessagesTokens(messages) {
|
|
55
|
+
let sum = 0;
|
|
56
|
+
for (const message of messages) {
|
|
57
|
+
sum += estimateMessageTokens(message);
|
|
58
|
+
}
|
|
59
|
+
return sum;
|
|
60
|
+
}
|
|
61
|
+
export function estimateToolSchemaTokens(tools) {
|
|
62
|
+
if (!tools?.length)
|
|
63
|
+
return 0;
|
|
64
|
+
return estimateTextTokens(JSON.stringify(tools));
|
|
65
|
+
}
|
|
66
|
+
export function resolveEffectiveContextLimit(input) {
|
|
67
|
+
const safetyMarginTokens = input?.safetyMarginTokens ?? SAFETY_MARGIN_TOKENS;
|
|
68
|
+
const custom = input?.contextLimitTokens;
|
|
69
|
+
const override = typeof custom === "number" && Number.isFinite(custom) && custom > 0
|
|
70
|
+
? Math.floor(custom)
|
|
71
|
+
: undefined;
|
|
72
|
+
const limitTokens = override ??
|
|
73
|
+
(input?.model !== undefined || input?.provider !== undefined
|
|
74
|
+
? nominalModelContextWindow(input.model)
|
|
75
|
+
: undefined);
|
|
76
|
+
if (limitTokens === undefined) {
|
|
77
|
+
return {
|
|
78
|
+
source: "unknown",
|
|
79
|
+
reservedOutputTokens: input?.reservedOutputTokens ?? RESERVED_OUTPUT_TOKENS,
|
|
80
|
+
safetyMarginTokens,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
// The default reserve assumes a large window; scale it down for small
|
|
84
|
+
// session-declared limits so at most 25% of the window is ever withheld.
|
|
85
|
+
const reservedOutputTokens = input?.reservedOutputTokens ??
|
|
86
|
+
Math.min(RESERVED_OUTPUT_TOKENS, Math.floor(limitTokens * 0.25));
|
|
87
|
+
return {
|
|
88
|
+
limitTokens,
|
|
89
|
+
source: override !== undefined ? "session-override" : "model-window",
|
|
90
|
+
reservedOutputTokens,
|
|
91
|
+
safetyMarginTokens,
|
|
92
|
+
effectiveSafeTokens: Math.max(1, limitTokens - reservedOutputTokens - safetyMarginTokens),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
function accountTimeline(plan) {
|
|
96
|
+
const totals = { instructionsTokens: 0, historyTokens: 0, liveTokens: 0 };
|
|
97
|
+
const messages = plan.timeline.messages;
|
|
98
|
+
for (const section of plan.timeline.sections) {
|
|
99
|
+
let sectionTokens = 0;
|
|
100
|
+
for (let index = section.messageStart; index < section.messageEnd; index += 1) {
|
|
101
|
+
sectionTokens += estimateMessageTokens(messages[index]);
|
|
102
|
+
}
|
|
103
|
+
if (section.kind === "instructions")
|
|
104
|
+
totals.instructionsTokens = sectionTokens;
|
|
105
|
+
else if (section.kind === "history")
|
|
106
|
+
totals.historyTokens = sectionTokens;
|
|
107
|
+
else
|
|
108
|
+
totals.liveTokens = sectionTokens;
|
|
109
|
+
}
|
|
110
|
+
return totals;
|
|
111
|
+
}
|
|
112
|
+
export function accountRequestPlan(plan, policy) {
|
|
113
|
+
const totals = accountTimeline(plan);
|
|
114
|
+
const toolsTokens = estimateToolSchemaTokens(plan.tools.definitions);
|
|
115
|
+
const rawRequestTokens = totals.instructionsTokens +
|
|
116
|
+
totals.historyTokens +
|
|
117
|
+
totals.liveTokens +
|
|
118
|
+
toolsTokens;
|
|
119
|
+
const route = {
|
|
120
|
+
provider: policy?.provider ?? plan.route.provider,
|
|
121
|
+
model: policy?.model ?? plan.route.model,
|
|
122
|
+
};
|
|
123
|
+
const calibration = requestTokenCalibration(route.provider, route.model);
|
|
124
|
+
const requestTokens = calibratedRequestTokens(route.provider, route.model, rawRequestTokens);
|
|
125
|
+
const artifactTokens = plan.timeline.messages.reduce((sum, message) => sum + reasoningArtifactTokensForMessage(message), 0);
|
|
126
|
+
const imageTokens = plan.timeline.messages.reduce((sum, message) => sum +
|
|
127
|
+
(message.images ?? []).reduce((inner, image) => inner + estimateImageTokens(image), 0), 0);
|
|
128
|
+
const limit = resolveEffectiveContextLimit({
|
|
129
|
+
provider: route.provider,
|
|
130
|
+
model: route.model,
|
|
131
|
+
...(policy?.contextLimitTokens !== undefined
|
|
132
|
+
? { contextLimitTokens: policy.contextLimitTokens }
|
|
133
|
+
: {}),
|
|
134
|
+
...(policy?.reservedOutputTokens !== undefined
|
|
135
|
+
? { reservedOutputTokens: policy.reservedOutputTokens }
|
|
136
|
+
: {}),
|
|
137
|
+
...(policy?.safetyMarginTokens !== undefined
|
|
138
|
+
? { safetyMarginTokens: policy.safetyMarginTokens }
|
|
139
|
+
: {}),
|
|
140
|
+
});
|
|
141
|
+
const effectiveSafeTokens = limit.effectiveSafeTokens;
|
|
142
|
+
return {
|
|
143
|
+
requestTokens,
|
|
144
|
+
rawRequestTokens,
|
|
145
|
+
instructionsTokens: totals.instructionsTokens,
|
|
146
|
+
historyTokens: totals.historyTokens,
|
|
147
|
+
liveTokens: totals.liveTokens,
|
|
148
|
+
toolsTokens,
|
|
149
|
+
artifactTokens,
|
|
150
|
+
replayedArtifactCount: plan.cache.fingerprint.replayedArtifactCount,
|
|
151
|
+
imageTokens,
|
|
152
|
+
imageCount: plan.images.imageCount,
|
|
153
|
+
messageCount: plan.timeline.messages.length,
|
|
154
|
+
limit,
|
|
155
|
+
...(effectiveSafeTokens !== undefined
|
|
156
|
+
? {
|
|
157
|
+
headroomTokens: effectiveSafeTokens - requestTokens,
|
|
158
|
+
overLimit: requestTokens > effectiveSafeTokens,
|
|
159
|
+
}
|
|
160
|
+
: {}),
|
|
161
|
+
precision: calibration ? "calibrated" : "estimate",
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Compile the canonical plan for an assembled request and account it in one
|
|
166
|
+
* step. This is the only fit check callers should perform on a request that is
|
|
167
|
+
* about to be dispatched.
|
|
168
|
+
*/
|
|
169
|
+
export function accountAssembledRequest(input) {
|
|
170
|
+
const plan = compileRequestPlan({
|
|
171
|
+
provider: input.provider,
|
|
172
|
+
model: input.model,
|
|
173
|
+
messages: input.messages,
|
|
174
|
+
stream: input.stream,
|
|
175
|
+
reasoning: input.reasoning,
|
|
176
|
+
tools: input.tools,
|
|
177
|
+
toolChoice: input.toolChoice,
|
|
178
|
+
parallelToolCalls: input.parallelToolCalls,
|
|
179
|
+
...(input.contextLimitTokens !== undefined
|
|
180
|
+
? { contextLimitTokens: input.contextLimitTokens }
|
|
181
|
+
: {}),
|
|
182
|
+
});
|
|
183
|
+
return {
|
|
184
|
+
plan,
|
|
185
|
+
accounting: accountRequestPlan(plan, {
|
|
186
|
+
provider: input.provider,
|
|
187
|
+
model: input.model,
|
|
188
|
+
...(input.contextLimitTokens !== undefined
|
|
189
|
+
? { contextLimitTokens: input.contextLimitTokens }
|
|
190
|
+
: {}),
|
|
191
|
+
...(input.reservedOutputTokens !== undefined
|
|
192
|
+
? { reservedOutputTokens: input.reservedOutputTokens }
|
|
193
|
+
: {}),
|
|
194
|
+
...(input.safetyMarginTokens !== undefined
|
|
195
|
+
? { safetyMarginTokens: input.safetyMarginTokens }
|
|
196
|
+
: {}),
|
|
197
|
+
}),
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
/** The final assembled request cannot fit the effective safe limit. */
|
|
201
|
+
export class RequestOverLimitError extends Error {
|
|
202
|
+
constructor(message) {
|
|
203
|
+
super(message);
|
|
204
|
+
this.name = "RequestOverLimitError";
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=request-accounting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-accounting.js","sourceRoot":"","sources":["../../src/agent/request-accounting.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { ProviderId } from "../types.js";
|
|
2
|
+
import { RESERVED_OUTPUT_TOKENS, SAFETY_MARGIN_TOKENS } from "./request-accounting.js";
|
|
3
|
+
export { RESERVED_OUTPUT_TOKENS, SAFETY_MARGIN_TOKENS };
|
|
2
4
|
export declare const DEFAULT_AUTO_COMPACT_REQUEST_TOKENS = 180000;
|
|
3
5
|
/** A session-specific model window reserves 30% for output and wire overhead. */
|
|
4
6
|
export declare const CUSTOM_CONTEXT_COMPACTION_RATIO = 0.7;
|
|
5
7
|
export declare const MIN_AUTO_COMPACT_REQUEST_TOKENS = 20000;
|
|
6
|
-
export declare const RESERVED_OUTPUT_TOKENS = 24576;
|
|
7
|
-
export declare const SAFETY_MARGIN_TOKENS = 2048;
|
|
8
8
|
export type RequestBudgetSource = "explicit" | "legacy" | "default" | "session";
|
|
9
9
|
export interface RequestBudget {
|
|
10
10
|
readonly configured: number;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { getConfig, hasExplicitConfigKey } from "../store/config.js";
|
|
2
2
|
import { modelContextWindow } from "../llm/token-usage.js";
|
|
3
|
+
import { RESERVED_OUTPUT_TOKENS, SAFETY_MARGIN_TOKENS, } from "./request-accounting.js";
|
|
4
|
+
export { RESERVED_OUTPUT_TOKENS, SAFETY_MARGIN_TOKENS };
|
|
3
5
|
// One authoritative auto-compaction policy, expressed in total estimated
|
|
4
6
|
// request tokens (system blocks, history, tool protocol, schemas and media
|
|
5
7
|
// together) rather than in transcript size. Behaviour, status line and
|
|
@@ -9,10 +11,6 @@ export const DEFAULT_AUTO_COMPACT_REQUEST_TOKENS = 180_000;
|
|
|
9
11
|
export const CUSTOM_CONTEXT_COMPACTION_RATIO = 0.7;
|
|
10
12
|
// Never trigger below this: compaction itself needs room to be useful.
|
|
11
13
|
export const MIN_AUTO_COMPACT_REQUEST_TOKENS = 20_000;
|
|
12
|
-
// Output allowance reserved inside the model window before the trigger.
|
|
13
|
-
export const RESERVED_OUTPUT_TOKENS = 24_576;
|
|
14
|
-
// Slack for wire overhead the estimator cannot see exactly.
|
|
15
|
-
export const SAFETY_MARGIN_TOKENS = 2_048;
|
|
16
14
|
// Resolve the configured trigger. An explicit new-style value wins; a raw
|
|
17
15
|
// persisted legacy value is honoured exactly once (even 72k) so upgrading does
|
|
18
16
|
// not silently change a user's tuning; otherwise the 80k policy applies.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-budget.js","sourceRoot":"","sources":["../../src/agent/request-budget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"request-budget.js","sourceRoot":"","sources":["../../src/agent/request-budget.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/runner.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ChatMessage, ChatImage, Mode, ProviderId, ToolCall, ToolResult } from "../types.js";
|
|
1
|
+
import type { ChatMessage, ChatImage, Mode, ProviderId, SuccessfulRequestSnapshot, ToolCall, ToolResult } from "../types.js";
|
|
2
2
|
import { type BackgroundJob, type ResponderNotification } from "../tools/jobs.js";
|
|
3
3
|
import { type SessionPlan } from "../store/plan.js";
|
|
4
4
|
import type { AgentEvent } from "./events.js";
|
|
@@ -8,7 +8,6 @@ import { type ConfirmPort } from "./confirm-port.js";
|
|
|
8
8
|
export * from "./tool-call-parser.js";
|
|
9
9
|
export { createSessionPolicy, isPreApprovalAllowedTool, isPlanApprovedByStatus, planHasOpenWork, shouldEnableImageOcr, type SessionPolicy, } from "./session-policy.js";
|
|
10
10
|
export { type ConfirmPort } from "./confirm-port.js";
|
|
11
|
-
export declare function styleToolChatter(call: ToolCall, text: string): string;
|
|
12
11
|
/**
|
|
13
12
|
* A foreground task waits for a responder child only when the plan
|
|
14
13
|
* Declares that dependency. Report titles carry no scheduling meaning: any
|
|
@@ -40,6 +39,13 @@ export interface AgentRunOptions {
|
|
|
40
39
|
* results), not just its prose answers.
|
|
41
40
|
*/
|
|
42
41
|
onMessages?: ((messages: ChatMessage[]) => void) | undefined;
|
|
42
|
+
onSuccessfulRequest?: ((snapshot: SuccessfulRequestSnapshot) => void) | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* The session's last successful main request from an earlier turn. Seeds the
|
|
45
|
+
* local snapshot so a first-iteration auto-compaction can still replay the
|
|
46
|
+
* exact cached prefix instead of re-rendering the transcript.
|
|
47
|
+
*/
|
|
48
|
+
previousSuccessfulRequest?: SuccessfulRequestSnapshot | undefined;
|
|
43
49
|
onOutcome?: ((outcome: import("./turn-outcome.js").TurnOutcome) => void) | undefined;
|
|
44
50
|
confirm?: ConfirmPort | undefined;
|
|
45
51
|
requestSecret?: ((request: {
|