@prismshadow/penguin-core 0.0.1

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.
@@ -0,0 +1,266 @@
1
+ /** Model reference: a `(provider, model_id)` pair (never string-concatenated anywhere). */
2
+ interface ModelRef {
3
+ provider: string;
4
+ /** Upstream model id (the request id sent to AgentHub unchanged). */
5
+ model_id: string;
6
+ }
7
+ /**
8
+ * Display form of a paired reference (shared by error messages and CLI output):
9
+ * `(provider=..., model_id=...)`. For display only — it isn't any storage or addressing format.
10
+ */
11
+ declare function formatModelRef(ref: ModelRef): string;
12
+ /**
13
+ * Pricing for a single Model: three price buckets, in USD per million tokens.
14
+ * Docs: /docs/configuration § "Project config".
15
+ */
16
+ interface ModelPricing {
17
+ /** Pricing unit tag; currently only `usd_per_mtok` (USD per million tokens). */
18
+ unit: "usd_per_mtok";
19
+ cache_read: number;
20
+ cache_write: number;
21
+ output: number;
22
+ }
23
+ /**
24
+ * A single available Model entry (credential inlined, single config file).
25
+ * Docs: /docs/models § "The per-Project model table".
26
+ */
27
+ interface ModelEntry {
28
+ /** provider group (stored separately from `model_id`; the pair is the entry's unique key). */
29
+ provider: string;
30
+ /** Upstream model id: the actual request id sent to AgentHub, used paired with provider for display, pricing, and stats. */
31
+ model_id: string;
32
+ context_window?: number;
33
+ /**
34
+ * AgentHub client protocol (`openai` / `claude-4-8` / `deepseek-v4` / …); defaults to being
35
+ * inferred by AgentHub from the request id (`model_id`). A third-party model speaking the
36
+ * OpenAI protocol should set this to `openai`.
37
+ */
38
+ client_type?: string;
39
+ /**
40
+ * Display name (the model page card title): only persisted when it differs from the builtin
41
+ * catalog (the user renamed it / a custom model); when not persisted, it's inferred from the
42
+ * builtin catalog by `(provider, model_id)`, falling back to displaying model_id if it can't be
43
+ * inferred.
44
+ */
45
+ display_name?: string;
46
+ /**
47
+ * Whether image input is supported (vision/multimodal); defaults to supported. For a model
48
+ * tagged `false` (e.g. DeepSeek): images from conversation input are saved to the session
49
+ * scratchpad and handed over as a file path spliced into the text, and the image-reading tool
50
+ * switches to describe_image (a vision model reads on its behalf) — the image never directly
51
+ * enters that session's history.
52
+ */
53
+ vision?: boolean;
54
+ /** Pricing info; absent means this Model's cost isn't counted. */
55
+ pricing?: ModelPricing;
56
+ /** API key (inlined credential); left empty falls back to the vendor's environment variable. */
57
+ api_key?: string;
58
+ /** Custom base URL (inlined credential); preset for gateway models. */
59
+ base_url?: string;
60
+ /** api_key's write timestamp (ISO 8601; a display field maintained by the interface layer). */
61
+ created_at?: string;
62
+ }
63
+ /**
64
+ * Project-level config.
65
+ * Docs: /docs/configuration § "Project config".
66
+ */
67
+ interface ProjectConfig {
68
+ /** Project display name (the display name is separate from the id, shown as the id when unset). */
69
+ name?: string;
70
+ /** Paired reference to the default Model; must point to an entry in `models`. */
71
+ default_model?: ModelRef;
72
+ /**
73
+ * The vision model used by read_image to read on behalf of a session model (when a session
74
+ * model with `vision=false` reads an image, it's handed to this model to describe and the tool
75
+ * returns text); must point to an entry in `models` (a paired reference). Unconfigured by
76
+ * default — models that don't support images won't be able to read images.
77
+ */
78
+ vision_model?: ModelRef;
79
+ models: ModelEntry[];
80
+ }
81
+ /**
82
+ * Returns the Project's default config: every entry from the preset builtin model catalog
83
+ * (including context_window / pricing / vision tags and the preset base_url for gateway models,
84
+ * with no keys included) — the user only needs to fill in an API key as needed (left empty falls
85
+ * back to the vendor's environment variable).
86
+ */
87
+ declare function defaultProjectConfig(): ProjectConfig;
88
+ /**
89
+ * Loads the Project config; returns the default config (without writing to disk) if
90
+ * `.project_config.toml` doesn't exist. Returns plaintext (masking is applied at the interface
91
+ * layer); reports a clear error when the old format (a string reference / an entry missing
92
+ * provider) is read.
93
+ */
94
+ declare function loadProjectConfig(root: string, projectId: string): Promise<ProjectConfig>;
95
+ /**
96
+ * Renders the full text of `.project_config.toml` — the **single source of the write format
97
+ * site-wide** (shared by core's saveProjectConfig and the interface layer's full-table write, to
98
+ * avoid the same file ending up in two different formats).
99
+ *
100
+ * Paired references (default_model / vision_model) are rendered as a TOML inline table
101
+ * `{ provider = "...", model_id = "..." }`; `models` is always
102
+ * placed last, since any table header after `[[models]]` would be read as its sub-table. Unknown
103
+ * extension fields are kept as-is.
104
+ */
105
+ declare function renderProjectConfigToml(data: Record<string, unknown>): string;
106
+ /**
107
+ * Saves the Project config: writes the full table to the single config file
108
+ * `.project_config.toml`. The file contains secrets like api_key, so it's written to disk with
109
+ * mode 0600 (a hidden file blocks `ls`, not reads; mode only takes effect on creation, so chmod
110
+ * converges an existing file too).
111
+ */
112
+ declare function saveProjectConfig(root: string, projectId: string, cfg: ProjectConfig): Promise<void>;
113
+ /**
114
+ * Adds or updates a Model:
115
+ * - Upserts into `models`, deduplicated by the `(provider, model_id)` pair (provider may be
116
+ * omitted — the builtin catalog is used to infer the upstream id's group, falling back to
117
+ * custom if it can't be inferred);
118
+ * - If `api_key`/`base_url` are provided, they're written inline into the entry;
119
+ * - Set as the default Model (a paired reference) when `opts.setDefault` is true.
120
+ * Reads the existing config (or the default), saves after the change, and returns the updated
121
+ * config.
122
+ */
123
+ declare function addModel(root: string, projectId: string, entry: {
124
+ /** provider group; inferred from the builtin catalog when omitted (`inferProviderForUpstream`, falling back to custom if it can't be inferred). */
125
+ provider?: string;
126
+ /** Upstream model id (sent to AgentHub unchanged). */
127
+ model_id: string;
128
+ context_window?: number;
129
+ client_type?: string;
130
+ /** Whether image input is supported (vision/multimodal); keeps the existing value by default (treated as supported if never set). */
131
+ vision?: boolean;
132
+ /** Price input may cover only some buckets; merged and written as a complete `ModelPricing`. */
133
+ pricing?: Partial<ModelPricing>;
134
+ api_key?: string;
135
+ base_url?: string;
136
+ }, opts?: {
137
+ setDefault?: boolean;
138
+ }): Promise<ProjectConfig>;
139
+ /**
140
+ * Sets the default Model and saves. The target reference must exist in `models` (a reference
141
+ * pointing outside the config would make createSession error immediately); throws otherwise.
142
+ */
143
+ declare function setDefaultModel(root: string, projectId: string, ref: ModelRef): Promise<ProjectConfig>;
144
+ /**
145
+ * Sets the vision model used to read images on behalf of read_image, and saves. The target
146
+ * reference must exist in `models` and not be tagged `vision=false` (a model that doesn't support
147
+ * images can't read on someone's behalf); throws otherwise.
148
+ */
149
+ declare function setVisionModel(root: string, projectId: string, ref: ModelRef): Promise<ProjectConfig>;
150
+ /** Looks up a Model entry exactly by its `(provider, model_id)` paired reference; returns `undefined` if it doesn't exist. */
151
+ declare function getModel(cfg: ProjectConfig, ref: ModelRef): ModelEntry | undefined;
152
+ /**
153
+ * Resolves a model reference (the **single entry point for "provider omitted"**, shared by core
154
+ * and CLI/server — never set up a second one):
155
+ * - `provider` given: validated for existence by exact paired reference;
156
+ * - `provider` omitted: an exact-match lookup on `model_id` (no fuzzy matching of any kind) —
157
+ * resolvable only when **exactly one** entry matches; 0 or multiple matches always report a
158
+ * clear error (an ambiguity error lists the candidate paired references).
159
+ */
160
+ declare function resolveModelRef(cfg: ProjectConfig, modelId: string, provider?: string): ModelRef;
161
+
162
+ /**
163
+ * Built-in model catalog (single source of truth): official chat models that AgentHub can
164
+ * auto-route, shared by core's default config, server's initial config, and web/cli display.
165
+ * Data verified as of 2026-07-10.
166
+ * Docs: packages/docs/content/models.{zh,en}.md (site path /docs/models) documents the
167
+ * provider groups and credential resolution described here.
168
+ *
169
+ * Three-bucket pricing convention (USD per million tokens, matching usageToTokenCounts'
170
+ * token-to-bucket mapping):
171
+ * - cache_read: the vendor's "cache hit" price;
172
+ * - cache_write: the vendor's "cache write" price (e.g. Anthropic uses 1.25 x input); vendors
173
+ * without a separate cache-write fee use the standard input price;
174
+ * - output: output price (thinking + reply).
175
+ * OpenAI charges extra for >272K input and Gemini 3.1 Pro for >200K input under official
176
+ * long-context pricing; this catalog only records the base tier (the cost center uses a
177
+ * single rate, so long-context usage will be underestimated).
178
+ *
179
+ * Scope: excludes deepseek-chat / deepseek-reasoner legacy aliases that AgentHub cannot
180
+ * auto-route (deprecated 2026-07-24), glm-5v-turbo (image input unsupported by AgentHub's GLM
181
+ * client), non-chat models (embedding / image generation / TTS), and Bedrock plus
182
+ * OpenRouter / SiliconFlow gateway mirror ids. Every model id in this catalog can be
183
+ * auto-routed by AgentHub via substring matching, so none set client_type; only custom
184
+ * OpenAI-protocol models need `client_type: "openai"`.
185
+ *
186
+ * This file imports no Node built-ins (type-only imports only), so it can be bundled directly
187
+ * for the browser.
188
+ */
189
+
190
+ /** Model provider info (used for web grouping/logo and the "API key blank falls back to env var" hint). */
191
+ interface ModelProviderInfo {
192
+ id: string;
193
+ /** Display name (brand name, shared by Chinese and English UI). */
194
+ label: string;
195
+ /** API key env var name (AgentHub reads this automatically when credential is blank). */
196
+ envKey: string;
197
+ /** base URL env var name. */
198
+ envBaseUrlKey: string;
199
+ /** Console URL for obtaining an API key (frontend links this in the group header); none for custom. */
200
+ apiKeyUrl?: string;
201
+ /** Vendor's model list / docs page URL (frontend's "add model" dialog links this as "get model id"); none for custom. */
202
+ modelsUrl?: string;
203
+ /**
204
+ * Gateway's OpenAI-compatible endpoint (openrouter / siliconflow): used by the frontend's
205
+ * "add model" dialog to prefill base URL by group; left blank for direct vendors and custom.
206
+ */
207
+ gatewayBaseUrl?: string;
208
+ }
209
+ /** A single built-in model's catalog entry (`modelId` is the upstream id; paired with `provider` it forms the catalog's unique key). */
210
+ interface ModelCatalogEntry {
211
+ modelId: string;
212
+ displayName: string;
213
+ /** Provider id (one of MODEL_PROVIDERS). */
214
+ provider: string;
215
+ contextWindow?: number;
216
+ pricing?: ModelPricing;
217
+ /** Whether image input (vision modality) is supported. */
218
+ supportsVision: boolean;
219
+ /** AgentHub client protocol: required for models whose id can't be auto-routed (e.g. OpenRouter gateway models). */
220
+ clientType?: string;
221
+ /** Preset base URL (gateway models): inlined into the model entry so the user only needs to supply an API key. */
222
+ baseUrl?: string;
223
+ }
224
+ /**
225
+ * Provider list (web model page groups in this order): DeepSeek first (the default model's
226
+ * provider), followed by the OpenRouter and SiliconFlow gateways, then Google Gemini before
227
+ * Anthropic; custom groups custom OpenAI-protocol models and comes last.
228
+ */
229
+ declare const MODEL_PROVIDERS: ModelProviderInfo[];
230
+ /** Built-in model catalog (clustered by provider; within each provider, ordered by capability/price, highest first). */
231
+ declare const MODEL_CATALOG: ModelCatalogEntry[];
232
+ /** Looks up a catalog entry by (provider, upstream id) pair (**the sole catalog-matching entry point**); returns undefined if not in the catalog. */
233
+ declare function catalogEntryFor(provider: string, upstreamId: string): ModelCatalogEntry | undefined;
234
+ /**
235
+ * Infers the provider for an upstream id from the built-in catalog (used to default
236
+ * `provider` on `model add`): if it matches a catalog entry, use that entry's provider
237
+ * (upstream ids are globally unique within the catalog); otherwise custom.
238
+ */
239
+ declare function inferProviderForUpstream(upstreamId: string): string;
240
+ /** Looks up provider info by provider id; returns undefined for an unknown id. */
241
+ declare function providerInfo(providerId: string): ModelProviderInfo | undefined;
242
+ /** Env var fallback for a single model (the var names AgentHub's client actually reads when api_key / base_url is blank). */
243
+ interface ModelEnvInfo {
244
+ envKey: string;
245
+ envBaseUrlKey: string;
246
+ }
247
+ /**
248
+ * Resolves the env var fallback for a model: mirrors AgentHub's
249
+ * AutoLLMClient routing rules (verified against agenthub v0.3.3 autoClient.ts) - an explicit
250
+ * client_type takes priority, otherwise routes to a client by lowercase substring match on
251
+ * model_id, returning the var pair that client reads; branch order matches AutoLLMClient.
252
+ * Returns undefined on no match (AgentHub will reject that id: it needs an explicit
253
+ * client_type, or should be added under custom / a self-built group via the OpenAI protocol).
254
+ */
255
+ declare function resolveModelEnv(modelId: string, clientType?: string): ModelEnvInfo | undefined;
256
+ /**
257
+ * Catalog -> preset ModelEntry list (shared by defaultProjectConfig and the server's initial
258
+ * config, avoiding duplicate hand-written copies). `provider` and `model_id` are persisted as
259
+ * separate fields (`model_id` is the plain upstream id); models whose upstream id can be
260
+ * auto-routed by AgentHub leave client_type unset; gateway models (OpenRouter / SiliconFlow)
261
+ * explicitly set client_type=openai and inline a preset base_url (no secrets included, so the
262
+ * user only needs to supply an API key).
263
+ */
264
+ declare function presetModelEntries(): ModelEntry[];
265
+
266
+ export { MODEL_CATALOG as M, type ProjectConfig as P, MODEL_PROVIDERS as a, type ModelCatalogEntry as b, type ModelEntry as c, type ModelEnvInfo as d, type ModelPricing as e, type ModelProviderInfo as f, type ModelRef as g, addModel as h, catalogEntryFor as i, defaultProjectConfig as j, formatModelRef as k, getModel as l, inferProviderForUpstream as m, loadProjectConfig as n, providerInfo as o, presetModelEntries as p, resolveModelEnv as q, renderProjectConfigToml as r, resolveModelRef as s, saveProjectConfig as t, setDefaultModel as u, setVisionModel as v };
@@ -0,0 +1,110 @@
1
+ import { O as OmniMessage, f as AbortPayload, b as TokenCounts, A as ApprovalDecision, g as ApprovalDecisionPayload, S as StopReason, D as TextPayload, j as CompactionReason, C as CompactionMode, h as CompactionBeginPayload, i as CompactionEndPayload, I as ImageUrlPayload, y as Role, m as InlineDataPayload, n as InlineThinkingPayload, z as StreamEventType, t as PartialTextPayload, u as PartialThinkingPayload, w as PartialToolCallPayload, v as PartialToolCallOutputPayload, R as RequestBeginPayload, x as RequestEndPayload, e as SessionMetaPayload, d as SessionMetaMessage, B as SubagentPayload, F as ThinkingPayload, G as TokenUsagePayload, a as ToolCallPayload, H as ToolCallOutputPayload, M as MessageOrigin } from '../types-D6FERSdT.js';
2
+ export { c as CompleteModelMessage, k as CompleteModelPayload, E as EventMessage, l as EventPayload, o as ModelMessage, p as ModelPayload, q as OmniMessageType, r as OmniPayload, P as PartialModelMessage, s as PartialModelPayload, T as ToolDefinition, J as isCompleteModelMessage, K as isEventMessage, L as isModelMessage, N as isPartialPayload, Q as isSessionMeta } from '../types-D6FERSdT.js';
3
+
4
+ /**
5
+ * OmniMessage builders. All modules create messages exclusively through these builders, avoiding
6
+ * ad hoc protocol structures scattered across the codebase.
7
+ * Every builder writes an ISO 8601 UTC timestamp.
8
+ * Docs: /docs/omni-message § "Builders and guards".
9
+ */
10
+
11
+ declare function sessionMeta(payload: SessionMetaPayload): SessionMetaMessage;
12
+ /**
13
+ * Provider fidelity fields: kept as-is and restored verbatim on replay.
14
+ * Builder convention: positional-argument-style builders carry these in a trailing `fidelity`
15
+ * object (narrowed via Pick per payload type — e.g. thinking only has signature); object-argument-
16
+ * style builders (toolCall) flatten `fidelity` fields into the parameter object alongside
17
+ * `stopReason`, mirroring the payload structure directly.
18
+ */
19
+ interface FidelityFields {
20
+ phase?: string | null;
21
+ signature?: string;
22
+ }
23
+ declare function textMessage(role: Role, text: string, stopReason?: StopReason, fidelity?: FidelityFields): OmniMessage<TextPayload>;
24
+ declare const userText: (text: string) => OmniMessage<TextPayload>;
25
+ declare const assistantText: (text: string, stopReason?: StopReason, fidelity?: FidelityFields) => OmniMessage<TextPayload>;
26
+ declare function imageUrlMessage(imageUrl: string): OmniMessage<ImageUrlPayload>;
27
+ declare function inlineData(role: Role, data: string, mimeType: string, fidelity?: Pick<FidelityFields, "signature">): OmniMessage<InlineDataPayload>;
28
+ declare function thinkingMessage(thinking: string, stopReason?: StopReason, fidelity?: Pick<FidelityFields, "signature">): OmniMessage<ThinkingPayload>;
29
+ declare function inlineThinking(data: string, mimeType: string, fidelity?: Pick<FidelityFields, "signature">): OmniMessage<InlineThinkingPayload>;
30
+ declare function toolCall(args: {
31
+ name: string;
32
+ arguments: string;
33
+ toolCallId: string;
34
+ stopReason?: StopReason;
35
+ signature?: string;
36
+ }): OmniMessage<ToolCallPayload>;
37
+ declare function toolCallOutput(args: {
38
+ output: string;
39
+ toolCallId: string;
40
+ stopReason?: StopReason;
41
+ /** Images carried by the tool output (array of data URLs); images aren't incremental — a single delta carries the whole set in the streaming path, and the complete message carries them too. */
42
+ images?: string[];
43
+ }): OmniMessage<ToolCallOutputPayload>;
44
+ declare function partialText(eventType: StreamEventType, text?: string, stopReason?: StopReason): OmniMessage<PartialTextPayload>;
45
+ declare function partialThinking(eventType: StreamEventType, thinking?: string, stopReason?: StopReason): OmniMessage<PartialThinkingPayload>;
46
+ declare function partialToolCall(args: {
47
+ eventType: StreamEventType;
48
+ name: string;
49
+ arguments?: string;
50
+ toolCallId: string;
51
+ stopReason?: StopReason;
52
+ }): OmniMessage<PartialToolCallPayload>;
53
+ declare function partialToolCallOutput(args: {
54
+ eventType: StreamEventType;
55
+ output?: string;
56
+ toolCallId: string;
57
+ stopReason?: StopReason;
58
+ /** Images carried by the tool output (array of data URLs); images aren't incremental — a single delta carries the whole set. */
59
+ images?: string[];
60
+ }): OmniMessage<PartialToolCallOutputPayload>;
61
+ declare function approvalDecision(decision: ApprovalDecision, toolCallId: string): OmniMessage<ApprovalDecisionPayload>;
62
+ declare function abortEvent(reason?: string | null): OmniMessage<AbortPayload>;
63
+ /** request begin event: marks the start of one LLM Request. */
64
+ declare function requestBegin(): OmniMessage<RequestBeginPayload>;
65
+ /** request end event: carries the terminal state (`completed` means this turn was already committed to AgentHub). */
66
+ declare function requestEnd(status: StopReason): OmniMessage<RequestEndPayload>;
67
+ /** compaction begin event: carries the trigger reason, mode, current context usage, and cumulative Session turn count. */
68
+ declare function compactionBegin(args: {
69
+ reason: CompactionReason;
70
+ mode: CompactionMode;
71
+ context: number;
72
+ turns: number;
73
+ }): OmniMessage<CompactionBeginPayload>;
74
+ /** compaction end event: carries the compaction result (non-`completed` means compaction was abandoned and the original context is kept). */
75
+ declare function compactionEnd(args: {
76
+ reason: CompactionReason;
77
+ mode: CompactionMode;
78
+ status: StopReason;
79
+ }): OmniMessage<CompactionEndPayload>;
80
+ /** subagent derivation pointer event: records only the direct child session's Session id (written to the parent Trace by context_engine). */
81
+ declare function subagentEvent(sessionId: string): OmniMessage<SubagentPayload>;
82
+ declare function emptyTokenCounts(): TokenCounts;
83
+ declare function tokenUsage(session: TokenCounts, request: TokenCounts): OmniMessage<TokenUsagePayload>;
84
+ /** Adds two sets of Token counts together, used to maintain cumulative Session usage. */
85
+ declare function addTokenCounts(a: TokenCounts, b: TokenCounts): TokenCounts;
86
+ /**
87
+ * Marks a message with a nested-origin tag: prepends one hop (a child Session id) to the front
88
+ * of `origin`, outer-to-inner.
89
+ * Used by host tools (e.g. run_subagent) when forwarding child-session messages; an absent
90
+ * `origin` means the message comes from the main Session.
91
+ */
92
+ declare function withOrigin<M extends OmniMessage>(msg: M, sessionId: MessageOrigin): M;
93
+
94
+ /**
95
+ * Stateful aggregator. Pushed one message at a time via `push`:
96
+ * - complete / event / session_meta messages are returned unchanged;
97
+ * - `partial_*` messages accumulate into an internal fragment, producing a complete message
98
+ * when `event_type === "stop"`;
99
+ * - `flush` forcibly emits any fragments that haven't yet received a stop.
100
+ */
101
+ declare class PartialAggregator {
102
+ private open;
103
+ push(msg: OmniMessage): OmniMessage[];
104
+ /** Finalizes: emits all still-open fragments (in the order they were opened). */
105
+ flush(): OmniMessage[];
106
+ }
107
+ /** One-shot aggregation: keeps non-partial messages in their original order, collapsing partial ones into complete messages. */
108
+ declare function aggregateAll(messages: OmniMessage[]): OmniMessage[];
109
+
110
+ export { AbortPayload, ApprovalDecision, ApprovalDecisionPayload, CompactionBeginPayload, CompactionEndPayload, CompactionMode, CompactionReason, type FidelityFields, ImageUrlPayload, InlineDataPayload, InlineThinkingPayload, MessageOrigin, OmniMessage, PartialAggregator, PartialTextPayload, PartialThinkingPayload, PartialToolCallOutputPayload, PartialToolCallPayload, RequestBeginPayload, RequestEndPayload, Role, SessionMetaMessage, SessionMetaPayload, StopReason, StreamEventType, SubagentPayload, TextPayload, ThinkingPayload, TokenCounts, TokenUsagePayload, ToolCallOutputPayload, ToolCallPayload, abortEvent, addTokenCounts, aggregateAll, approvalDecision, assistantText, compactionBegin, compactionEnd, emptyTokenCounts, imageUrlMessage, inlineData, inlineThinking, partialText, partialThinking, partialToolCall, partialToolCallOutput, requestBegin, requestEnd, sessionMeta, subagentEvent, textMessage, thinkingMessage, tokenUsage, toolCall, toolCallOutput, userText, withOrigin };
@@ -0,0 +1,69 @@
1
+ import {
2
+ PartialAggregator,
3
+ abortEvent,
4
+ addTokenCounts,
5
+ aggregateAll,
6
+ approvalDecision,
7
+ assistantText,
8
+ compactionBegin,
9
+ compactionEnd,
10
+ emptyTokenCounts,
11
+ imageUrlMessage,
12
+ inlineData,
13
+ inlineThinking,
14
+ isCompleteModelMessage,
15
+ isEventMessage,
16
+ isModelMessage,
17
+ isPartialPayload,
18
+ isSessionMeta,
19
+ partialText,
20
+ partialThinking,
21
+ partialToolCall,
22
+ partialToolCallOutput,
23
+ requestBegin,
24
+ requestEnd,
25
+ sessionMeta,
26
+ subagentEvent,
27
+ textMessage,
28
+ thinkingMessage,
29
+ tokenUsage,
30
+ toolCall,
31
+ toolCallOutput,
32
+ userText,
33
+ withOrigin
34
+ } from "../chunk-JC6SC6KF.js";
35
+ export {
36
+ PartialAggregator,
37
+ abortEvent,
38
+ addTokenCounts,
39
+ aggregateAll,
40
+ approvalDecision,
41
+ assistantText,
42
+ compactionBegin,
43
+ compactionEnd,
44
+ emptyTokenCounts,
45
+ imageUrlMessage,
46
+ inlineData,
47
+ inlineThinking,
48
+ isCompleteModelMessage,
49
+ isEventMessage,
50
+ isModelMessage,
51
+ isPartialPayload,
52
+ isSessionMeta,
53
+ partialText,
54
+ partialThinking,
55
+ partialToolCall,
56
+ partialToolCallOutput,
57
+ requestBegin,
58
+ requestEnd,
59
+ sessionMeta,
60
+ subagentEvent,
61
+ textMessage,
62
+ thinkingMessage,
63
+ tokenUsage,
64
+ toolCall,
65
+ toolCallOutput,
66
+ userText,
67
+ withOrigin
68
+ };
69
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1 @@
1
+ export { M as MODEL_CATALOG, a as MODEL_PROVIDERS, b as ModelCatalogEntry, d as ModelEnvInfo, f as ModelProviderInfo, i as catalogEntryFor, m as inferProviderForUpstream, p as presetModelEntries, o as providerInfo, q as resolveModelEnv } from '../model-catalog-DTu0IPjs.js';
@@ -0,0 +1,19 @@
1
+ import {
2
+ MODEL_CATALOG,
3
+ MODEL_PROVIDERS,
4
+ catalogEntryFor,
5
+ inferProviderForUpstream,
6
+ presetModelEntries,
7
+ providerInfo,
8
+ resolveModelEnv
9
+ } from "../chunk-FX4CCIN7.js";
10
+ export {
11
+ MODEL_CATALOG,
12
+ MODEL_PROVIDERS,
13
+ catalogEntryFor,
14
+ inferProviderForUpstream,
15
+ presetModelEntries,
16
+ providerInfo,
17
+ resolveModelEnv
18
+ };
19
+ //# sourceMappingURL=model-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}