moderado 0.3.0 → 0.3.7
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 +182 -175
- package/dist/args.d.ts +1 -1
- package/dist/args.d.ts.map +1 -1
- package/dist/args.js +32 -28
- package/dist/args.js.map +1 -1
- package/dist/budget.d.ts +6 -0
- package/dist/budget.d.ts.map +1 -0
- package/dist/budget.js +25 -0
- package/dist/budget.js.map +1 -0
- package/dist/commands/chat.d.ts +5 -1
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +188 -40
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/models.d.ts.map +1 -1
- package/dist/commands/models.js +61 -14
- package/dist/commands/models.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +2 -0
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/skills.d.ts +2 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +13 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/config.d.ts +73 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +117 -1
- package/dist/config.js.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/model_pricing.d.ts +14 -1
- package/dist/model_pricing.d.ts.map +1 -1
- package/dist/model_pricing.js +52 -0
- package/dist/model_pricing.js.map +1 -1
- package/dist/repo_map.d.ts +3 -0
- package/dist/repo_map.d.ts.map +1 -0
- package/dist/repo_map.js +29 -0
- package/dist/repo_map.js.map +1 -0
- package/dist/sessions.d.ts +22 -15
- package/dist/sessions.d.ts.map +1 -1
- package/dist/sessions.js +16 -1
- package/dist/sessions.js.map +1 -1
- package/dist/skills.d.ts +23 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +78 -0
- package/dist/skills.js.map +1 -0
- package/dist/ui/help_modal.d.ts.map +1 -1
- package/dist/ui/help_modal.js +1 -0
- package/dist/ui/help_modal.js.map +1 -1
- package/dist/ui/model_selector.d.ts +2 -2
- package/dist/ui/model_selector.d.ts.map +1 -1
- package/dist/ui/model_selector.js +25 -16
- package/dist/ui/model_selector.js.map +1 -1
- package/dist/ui/provider_connect.d.ts +7 -3
- package/dist/ui/provider_connect.d.ts.map +1 -1
- package/dist/ui/provider_connect.js +64 -15
- package/dist/ui/provider_connect.js.map +1 -1
- package/dist/ui/renderer.d.ts +4 -0
- package/dist/ui/renderer.d.ts.map +1 -1
- package/dist/ui/renderer.js +36 -0
- package/dist/ui/renderer.js.map +1 -1
- package/dist/ui/welcome.d.ts +11 -0
- package/dist/ui/welcome.d.ts.map +1 -1
- package/dist/ui/welcome.js +40 -20
- package/dist/ui/welcome.js.map +1 -1
- package/dist/vendor/contracts/events.d.ts +159 -0
- package/dist/vendor/contracts/events.d.ts.map +1 -1
- package/dist/vendor/contracts/events.js +12 -0
- package/dist/vendor/contracts/events.js.map +1 -1
- package/dist/vendor/contracts/provider.d.ts +1 -0
- package/dist/vendor/contracts/provider.d.ts.map +1 -1
- package/dist/vendor/contracts/provider.js +6 -0
- package/dist/vendor/contracts/provider.js.map +1 -1
- package/dist/vendor/core/agent.d.ts +5 -2
- package/dist/vendor/core/agent.d.ts.map +1 -1
- package/dist/vendor/core/agent.js +148 -34
- package/dist/vendor/core/agent.js.map +1 -1
- package/dist/vendor/providers/model_discovery.d.ts +6 -2
- package/dist/vendor/providers/model_discovery.d.ts.map +1 -1
- package/dist/vendor/providers/model_discovery.js +8 -2
- package/dist/vendor/providers/model_discovery.js.map +1 -1
- package/dist/vendor/providers/nvidia/nvidia_adapter.d.ts.map +1 -1
- package/dist/vendor/providers/nvidia/nvidia_adapter.js +1 -0
- package/dist/vendor/providers/nvidia/nvidia_adapter.js.map +1 -1
- package/dist/vendor/providers/nvidia/sse_parser.d.ts +2 -1
- package/dist/vendor/providers/nvidia/sse_parser.d.ts.map +1 -1
- package/dist/vendor/providers/nvidia/sse_parser.js +30 -16
- package/dist/vendor/providers/nvidia/sse_parser.js.map +1 -1
- package/package.json +2 -2
- package/dist/ui/session_screen.d.ts +0 -32
- package/dist/ui/session_screen.d.ts.map +0 -1
- package/dist/ui/session_screen.js +0 -148
- package/dist/ui/session_screen.js.map +0 -1
- package/dist/ui/session_terminal.d.ts +0 -46
- package/dist/ui/session_terminal.d.ts.map +0 -1
- package/dist/ui/session_terminal.js +0 -342
- package/dist/ui/session_terminal.js.map +0 -1
package/dist/config.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export interface ModeradoConfig {
|
|
|
7
7
|
allowUnknown?: boolean;
|
|
8
8
|
activeConnectionId?: string;
|
|
9
9
|
connections?: Record<string, ProviderConnection>;
|
|
10
|
+
connectProviders?: ConnectProvidersConfig;
|
|
10
11
|
typescriptLanguageServer?: string;
|
|
11
12
|
/** HTTPS endpoint that returns `{ results: [{ title, url, snippet? }] }`. */
|
|
12
13
|
webSearchEndpoint?: string;
|
|
@@ -16,7 +17,79 @@ export interface ModeradoConfig {
|
|
|
16
17
|
/** Upper bound on model output tokens per response turn. */
|
|
17
18
|
maxOutputTokens?: number;
|
|
18
19
|
}
|
|
20
|
+
export declare const CONNECT_PROVIDER_PRESET_IDS: readonly ["nvidia-nim", "openrouter", "agnes-ai", "orcarouter", "ollama", "lm-studio", "openai-compatible"];
|
|
21
|
+
export type ConnectProviderPresetId = typeof CONNECT_PROVIDER_PRESET_IDS[number];
|
|
22
|
+
export interface CustomConnectProvider {
|
|
23
|
+
id: string;
|
|
24
|
+
name: string;
|
|
25
|
+
baseUrl: string;
|
|
26
|
+
defaultModel?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface ConnectProvidersConfig {
|
|
29
|
+
/** Omit to show all built-ins; an empty list hides every built-in. */
|
|
30
|
+
enabled?: ConnectProviderPresetId[];
|
|
31
|
+
custom?: CustomConnectProvider[];
|
|
32
|
+
}
|
|
19
33
|
export type ProviderConnectionKind = 'nvidia-nim' | 'openai-compatible';
|
|
34
|
+
/**
|
|
35
|
+
* Pure metadata for the built-in provider presets. Lives here (not in the TUI
|
|
36
|
+
* layer) so the host runtime can answer `provider.list` without importing any
|
|
37
|
+
* presentation code.
|
|
38
|
+
*/
|
|
39
|
+
export interface ProviderPresetMeta {
|
|
40
|
+
id: ConnectProviderPresetId;
|
|
41
|
+
label: string;
|
|
42
|
+
description: string;
|
|
43
|
+
kind: ProviderConnectionKind;
|
|
44
|
+
baseUrl: string;
|
|
45
|
+
defaultModel?: string;
|
|
46
|
+
/** Local-only runtimes (Ollama, LM Studio) never require a key. */
|
|
47
|
+
requiresApiKey: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Exact model ids this preset guarantees cost nothing, for aliases the
|
|
50
|
+
* provider's own catalog cannot prove. Matched by exact equality only — a
|
|
51
|
+
* substring or id-shape match would free an entire aggregator catalog.
|
|
52
|
+
*/
|
|
53
|
+
freeModelAliases?: readonly string[];
|
|
54
|
+
/**
|
|
55
|
+
* Trailing id markers this preset guarantees cost nothing. OrcaRouter names
|
|
56
|
+
* its no-cost routing endpoints `.../free` and publishes no `pricing` at all,
|
|
57
|
+
* so the endpoint name is the only signal available.
|
|
58
|
+
*
|
|
59
|
+
* The marker is matched at the **end** of the id and only where it starts a
|
|
60
|
+
* segment, so `orcarouter/free` is free while `orcarouter/notfree` and
|
|
61
|
+
* `orcarouter/free-router` are not. The declaration is resolved by connection
|
|
62
|
+
* id, so granting it to another provider is an explicit act rather than an
|
|
63
|
+
* accident of a shared substring.
|
|
64
|
+
*/
|
|
65
|
+
freeIdSuffixes?: readonly string[];
|
|
66
|
+
/**
|
|
67
|
+
* True when the provider's entire hosted catalog costs nothing.
|
|
68
|
+
*
|
|
69
|
+
* NVIDIA NIM advertises no `pricing` on any of its catalog entries, yet the
|
|
70
|
+
* hosted catalog runs on build.nvidia.com trial credits. That is a property
|
|
71
|
+
* of the *provider*, not of any one model id, so it is declared once here
|
|
72
|
+
* instead of being re-guessed from model names at every call site. It is
|
|
73
|
+
* resolved strictly by connection id, so it can never free an aggregator's
|
|
74
|
+
* metered catalog.
|
|
75
|
+
*/
|
|
76
|
+
freeCatalog?: boolean;
|
|
77
|
+
}
|
|
78
|
+
/** How much of a provider's catalog is declared cost-free, for the free-model predicate. */
|
|
79
|
+
export interface ProviderFreePolicy {
|
|
80
|
+
freeModelAliases?: readonly string[];
|
|
81
|
+
freeIdSuffixes?: readonly string[];
|
|
82
|
+
freeCatalog?: boolean;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* The free-tier declaration for a connection id, or `undefined` when the id has
|
|
86
|
+
* no preset. An undeclared provider contributes no free evidence at all.
|
|
87
|
+
*/
|
|
88
|
+
export declare function freeModelPolicyFor(connectionId: string | undefined): ProviderFreePolicy | undefined;
|
|
89
|
+
export declare const CONNECT_PROVIDER_PRESET_META: ProviderPresetMeta[];
|
|
90
|
+
/** True for loopback endpoints, which authenticate without an API key. */
|
|
91
|
+
export declare function isLoopbackBaseUrl(baseUrl: string): boolean;
|
|
92
|
+
export declare function findProviderPreset(id: string): ProviderPresetMeta | undefined;
|
|
20
93
|
export interface ProviderConnection {
|
|
21
94
|
id: string;
|
|
22
95
|
displayName: string;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -1,8 +1,105 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
|
+
import { z } from 'zod';
|
|
2
3
|
import path from 'node:path';
|
|
3
4
|
import os from 'node:os';
|
|
4
5
|
import { McpServerConfigSchema } from './vendor/contracts/index.js';
|
|
5
6
|
import { credentialReference, resolveCredential } from './credentials.js';
|
|
7
|
+
export const CONNECT_PROVIDER_PRESET_IDS = [
|
|
8
|
+
'nvidia-nim', 'openrouter', 'agnes-ai', 'orcarouter', 'ollama', 'lm-studio', 'openai-compatible',
|
|
9
|
+
];
|
|
10
|
+
/**
|
|
11
|
+
* The free-tier declaration for a connection id, or `undefined` when the id has
|
|
12
|
+
* no preset. An undeclared provider contributes no free evidence at all.
|
|
13
|
+
*/
|
|
14
|
+
export function freeModelPolicyFor(connectionId) {
|
|
15
|
+
const preset = connectionId ? findProviderPreset(connectionId) : undefined;
|
|
16
|
+
if (!preset)
|
|
17
|
+
return undefined;
|
|
18
|
+
return {
|
|
19
|
+
freeModelAliases: preset.freeModelAliases,
|
|
20
|
+
freeIdSuffixes: preset.freeIdSuffixes,
|
|
21
|
+
freeCatalog: preset.freeCatalog,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export const CONNECT_PROVIDER_PRESET_META = [
|
|
25
|
+
{
|
|
26
|
+
id: 'nvidia-nim',
|
|
27
|
+
label: 'NVIDIA NIM',
|
|
28
|
+
description: 'Free-first routing across Nemotron, LLaMA, DeepSeek and Kimi.',
|
|
29
|
+
kind: 'nvidia-nim',
|
|
30
|
+
baseUrl: 'https://integrate.api.nvidia.com/v1',
|
|
31
|
+
// Every hosted NIM endpoint runs on build.nvidia.com trial credits and the
|
|
32
|
+
// catalog advertises no `pricing`, so without this the free list is empty
|
|
33
|
+
// for the default provider.
|
|
34
|
+
freeCatalog: true,
|
|
35
|
+
requiresApiKey: true,
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: 'openrouter',
|
|
39
|
+
label: 'OpenRouter',
|
|
40
|
+
description: 'One key for Qwen, DeepSeek, Mistral and free-tier models.',
|
|
41
|
+
kind: 'openai-compatible',
|
|
42
|
+
baseUrl: 'https://openrouter.ai/api/v1',
|
|
43
|
+
requiresApiKey: true,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: 'agnes-ai',
|
|
47
|
+
label: 'Agnes AI',
|
|
48
|
+
description: 'Agnes Flash and Code endpoints.',
|
|
49
|
+
kind: 'openai-compatible',
|
|
50
|
+
baseUrl: 'https://apihub.agnes-ai.com/v1',
|
|
51
|
+
// Every Agnes AI endpoint is free, and the catalog advertises no `pricing`
|
|
52
|
+
// to prove it per model. Declared once as a property of the provider so the
|
|
53
|
+
// whole catalog lands in the free bucket in every surface, instead of a
|
|
54
|
+
// hardcoded model list in one of them.
|
|
55
|
+
freeCatalog: true,
|
|
56
|
+
requiresApiKey: true,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
id: 'orcarouter',
|
|
60
|
+
label: 'OrcaRouter',
|
|
61
|
+
description: 'Adaptive model routing.',
|
|
62
|
+
kind: 'openai-compatible',
|
|
63
|
+
baseUrl: 'https://api.orcarouter.ai/v1',
|
|
64
|
+
defaultModel: 'orcarouter/free',
|
|
65
|
+
// The catalog advertises no pricing, so a free endpoint is identified by its
|
|
66
|
+
// name: every routing endpoint OrcaRouter serves for nothing ends in `free`.
|
|
67
|
+
// Declared as a trailing marker rather than a free-for-all substring, so the
|
|
68
|
+
// rest of the catalog stays metered.
|
|
69
|
+
freeIdSuffixes: ['free'],
|
|
70
|
+
requiresApiKey: true,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: 'ollama',
|
|
74
|
+
label: 'Ollama',
|
|
75
|
+
description: 'Models served locally by Ollama.',
|
|
76
|
+
kind: 'openai-compatible',
|
|
77
|
+
baseUrl: 'http://127.0.0.1:11434/v1',
|
|
78
|
+
requiresApiKey: false,
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
id: 'lm-studio',
|
|
82
|
+
label: 'LM Studio',
|
|
83
|
+
description: 'Models served by the LM Studio local server.',
|
|
84
|
+
kind: 'openai-compatible',
|
|
85
|
+
baseUrl: 'http://127.0.0.1:1234/v1',
|
|
86
|
+
requiresApiKey: false,
|
|
87
|
+
},
|
|
88
|
+
];
|
|
89
|
+
/** True for loopback endpoints, which authenticate without an API key. */
|
|
90
|
+
export function isLoopbackBaseUrl(baseUrl) {
|
|
91
|
+
try {
|
|
92
|
+
const url = new URL(baseUrl);
|
|
93
|
+
return (url.protocol === 'http:' &&
|
|
94
|
+
['127.0.0.1', 'localhost', '[::1]', '::1'].includes(url.hostname));
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
export function findProviderPreset(id) {
|
|
101
|
+
return CONNECT_PROVIDER_PRESET_META.find((preset) => preset.id === id);
|
|
102
|
+
}
|
|
6
103
|
const CONFIG_DIR_NAME = '.moderado';
|
|
7
104
|
const CONFIG_FILE_NAME = 'config.json';
|
|
8
105
|
export function getConfigPath(customHome) {
|
|
@@ -28,6 +125,7 @@ export function loadConfig(customHome) {
|
|
|
28
125
|
? parsed.activeConnectionId
|
|
29
126
|
: undefined,
|
|
30
127
|
connections: Object.keys(connections).length > 0 ? connections : undefined,
|
|
128
|
+
connectProviders: parseConnectProviders(parsed.connectProviders),
|
|
31
129
|
mcpServers: parseMcpServers(parsed.mcpServers),
|
|
32
130
|
typescriptLanguageServer: typeof parsed.typescriptLanguageServer === 'string' ? parsed.typescriptLanguageServer : undefined,
|
|
33
131
|
webSearchEndpoint: typeof parsed.webSearchEndpoint === 'string' ? parsed.webSearchEndpoint : undefined,
|
|
@@ -41,6 +139,24 @@ export function loadConfig(customHome) {
|
|
|
41
139
|
return {};
|
|
42
140
|
}
|
|
43
141
|
}
|
|
142
|
+
function parseConnectProviders(value) {
|
|
143
|
+
const custom = z.object({
|
|
144
|
+
id: z.string().regex(/^[a-z0-9][a-z0-9_-]{0,31}$/).refine(id => !CONNECT_PROVIDER_PRESET_IDS.includes(id)),
|
|
145
|
+
name: z.string().trim().min(1).max(80),
|
|
146
|
+
baseUrl: z.string().trim().url().refine(value => {
|
|
147
|
+
const url = new URL(value);
|
|
148
|
+
return !url.username && !url.password && (url.protocol === 'https:' || isLoopbackBaseUrl(value));
|
|
149
|
+
}).transform(value => value.replace(/\/+$/, '')),
|
|
150
|
+
defaultModel: z.string().trim().min(1).optional(),
|
|
151
|
+
});
|
|
152
|
+
const schema = z.object({ enabled: z.array(z.enum(CONNECT_PROVIDER_PRESET_IDS)).optional(), custom: z.array(custom).optional() });
|
|
153
|
+
const parsed = schema.safeParse(value);
|
|
154
|
+
if (!parsed.success)
|
|
155
|
+
return undefined;
|
|
156
|
+
if (parsed.data.custom)
|
|
157
|
+
parsed.data.custom = parsed.data.custom.filter((item, index, items) => items.findIndex(other => other.id === item.id) === index);
|
|
158
|
+
return parsed.data;
|
|
159
|
+
}
|
|
44
160
|
function parseMcpServers(value) {
|
|
45
161
|
if (!value || typeof value !== 'object')
|
|
46
162
|
return undefined;
|
|
@@ -153,7 +269,7 @@ export function removeMcpServer(name, customHome) {
|
|
|
153
269
|
}
|
|
154
270
|
export async function storeConnectionCredential(connection, store) {
|
|
155
271
|
if (!connection.apiKey?.trim())
|
|
156
|
-
|
|
272
|
+
return connection;
|
|
157
273
|
const reference = credentialReference(connection.id);
|
|
158
274
|
await store.set(reference, connection.apiKey.trim());
|
|
159
275
|
return { ...connection, credentialReference: reference };
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAmB,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAmB,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAoB3F,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB;CACxF,CAAC;AAuEX;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,YAAgC;IACjE,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO;QACL,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,4BAA4B,GAAyB;IAChE;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,+DAA+D;QAC5E,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,qCAAqC;QAC9C,2EAA2E;QAC3E,0EAA0E;QAC1E,4BAA4B;QAC5B,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,IAAI;KACrB;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,2DAA2D;QACxE,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,8BAA8B;QACvC,cAAc,EAAE,IAAI;KACrB;IACD;QACE,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,iCAAiC;QAC9C,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,gCAAgC;QACzC,2EAA2E;QAC3E,4EAA4E;QAC5E,wEAAwE;QACxE,uCAAuC;QACvC,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,IAAI;KACrB;IACD;QACE,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,yBAAyB;QACtC,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,8BAA8B;QACvC,YAAY,EAAE,iBAAiB;QAC/B,6EAA6E;QAC7E,6EAA6E;QAC7E,6EAA6E;QAC7E,qCAAqC;QACrC,cAAc,EAAE,CAAC,MAAM,CAAC;QACxB,cAAc,EAAE,IAAI;KACrB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,kCAAkC;QAC/C,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,2BAA2B;QACpC,cAAc,EAAE,KAAK;KACtB;IACD;QACE,EAAE,EAAE,WAAW;QACf,KAAK,EAAE,WAAW;QAClB,WAAW,EAAE,8CAA8C;QAC3D,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,0BAA0B;QACnC,cAAc,EAAE,KAAK;KACtB;CACF,CAAC;AAEF,0EAA0E;AAC1E,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,CACL,GAAG,CAAC,QAAQ,KAAK,OAAO;YACxB,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAClE,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,OAAO,4BAA4B,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AACzE,CAAC;AAcD,MAAM,eAAe,GAAG,WAAW,CAAC;AACpC,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAEvC,MAAM,UAAU,aAAa,CAAC,UAAmB;IAC/C,MAAM,IAAI,GAAG,UAAU,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;IACxC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,UAAmB;IAC5C,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACzD,OAAO;gBACL,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBACrE,YAAY,EAAE,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;gBACvF,SAAS,EAAE,OAAO,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;gBAC/E,YAAY,EAAE,OAAO,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;gBACxF,kBAAkB,EAChB,OAAO,MAAM,CAAC,kBAAkB,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC;oBACrF,CAAC,CAAC,MAAM,CAAC,kBAAkB;oBAC3B,CAAC,CAAC,SAAS;gBACf,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;gBAC1E,gBAAgB,EAAE,qBAAqB,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBAChE,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC9C,wBAAwB,EAAE,OAAO,MAAM,CAAC,wBAAwB,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS;gBAC3H,iBAAiB,EAAE,OAAO,MAAM,CAAC,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;gBACtG,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,KAAK,KAAK,IAAI,MAAM,CAAC,iBAAiB,KAAK,UAAU,IAAI,MAAM,CAAC,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;gBAChL,eAAe,EAAE,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ,IAAI,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;aAC/H,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;QACtB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,2BAA2B,CAAC,QAAQ,CAAC,EAA6B,CAAC,CAAC;QACrI,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC9C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QACnG,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;KAClD,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAClI,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACtC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM;QAAE,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC;IACzJ,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClO,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAE3D,MAAM,MAAM,GAAuC,EAAE,CAAC;IACtD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,KAAgC,CAAC,EAAE,CAAC;QACxE,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI;YAAE,SAAS;QAClE,MAAM,IAAI,GAAG,SAAoC,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IACE,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ;YAC3B,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ;YACpC,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;YAChC,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,mBAAmB,CAAC;YACvD,SAAS;QAEX,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;YAChB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI;YACJ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,mBAAmB,EAAE,OAAO,IAAI,CAAC,mBAAmB,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;YACxG,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACjE,YAAY,EAAE,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;SACpF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAsB,EAAE,UAAmB;IACpE,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAErC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,MAAM,GAAmB;QAC7B,GAAG,QAAQ;QACX,GAAG,MAAM;KACV,CAAC;IAEF,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QAC5D,QAAQ,EAAE,MAAM;QAChB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAmB;IAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;QACpE,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,mBAAmB,CAAC,MAAsB;IACxD,IAAI,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACjF,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QAC1B,OAAO;YACL,EAAE,EAAE,YAAY;YAChB,WAAW,EAAE,YAAY;YACzB,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,qCAAqC;YAC9C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;YAC5B,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,cAAc,CAAC,UAA8B,EAAE,UAAmB;IAChF,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IACrG,UAAU,CACR;QACE,WAAW,EAAE,EAAE,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE;QACnE,kBAAkB,EAAE,SAAS,CAAC,EAAE;KACjC,EACD,UAAU,CACX,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,IAAI,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,MAAuB,EAAE,UAAmB;IACtF,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,OAAgB,EAAE,UAAmB;IACrF,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,sBAAsB,CAAC,CAAC;IACxE,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,UAAmB;IAC/D,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,sBAAsB,CAAC,CAAC;IAC3F,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC;IAC7D,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,UAAU,CAAC,CAAC;AAChG,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,UAA8B,EAAE,KAAsB;IACpG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE;QAAE,OAAO,UAAU,CAAC;IAClD,MAAM,SAAS,GAAG,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,OAAO,EAAE,GAAG,UAAU,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,UAA8B,EAAE,KAAsB;IACtG,MAAM,eAAe,GAAG,UAAU,CAAC,EAAE,KAAK,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,UAAU,CAAC;IACjJ,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC,mBAAmB,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/H,OAAO,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,CAAC;AACnC,CAAC;AAED,kGAAkG;AAClG,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,KAAsB,EAAE,UAAmB;IACxF,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,IAAI,GAAmB,EAAE,GAAG,MAAM,EAAE,WAAW,EAAE,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;IACnF,MAAM,OAAO,GAA0C,EAAE,CAAC;IAC1D,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE;QAAE,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC5F,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,IAAI,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,OAAO;QAAE,MAAM,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC1F,OAAO,IAAI,CAAC,MAAM,CAAC;IACnB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,QAAQ,IAAI,EAAE,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,YAAqB,EAAE,OAAO,EAAE,qCAAqC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;QAC/L,IAAI,CAAC,WAAY,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,UAAU,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACzH,CAAC;IACD,IAAI,CAAC,kBAAkB,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC7C,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,GAAG,UAAU,MAAM,CAAC;IACtC,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9F,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import { handleRunCommand } from './commands/run.js';
|
|
|
8
8
|
import { handleChatSession } from './commands/chat.js';
|
|
9
9
|
import { handleDoctorCommand } from './commands/doctor.js';
|
|
10
10
|
import { writeDiagnosticLog } from './diagnostic_log.js';
|
|
11
|
+
import { handleSkillsCommand } from './commands/skills.js';
|
|
11
12
|
function getVersion() {
|
|
12
13
|
try {
|
|
13
14
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
@@ -52,6 +53,9 @@ async function main() {
|
|
|
52
53
|
if (args.command === 'doctor') {
|
|
53
54
|
exitCode = await handleDoctorCommand(args);
|
|
54
55
|
}
|
|
56
|
+
else if (args.command === 'skills') {
|
|
57
|
+
exitCode = handleSkillsCommand();
|
|
58
|
+
}
|
|
55
59
|
else if (args.command === 'models') {
|
|
56
60
|
exitCode = await handleModelsCommand(args);
|
|
57
61
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/model_pricing.d.ts
CHANGED
|
@@ -1,4 +1,17 @@
|
|
|
1
|
-
import type { ModelInventoryEntry } from '@moderado/contracts';
|
|
1
|
+
import type { ModelClassification, ModelInventoryEntry } from '@moderado/contracts';
|
|
2
|
+
import type { ProviderFreePolicy } from './config.js';
|
|
2
3
|
/** Use only exact, provider-advertised prompt and completion prices. */
|
|
3
4
|
export declare function findModelPricing(models: ModelInventoryEntry[], modelId: string): Record<string, string> | undefined;
|
|
5
|
+
/**
|
|
6
|
+
* Whether a provider preset *declares* this model id cost-free by name — either
|
|
7
|
+
* as an exact alias or by a trailing free marker.
|
|
8
|
+
*
|
|
9
|
+
* This is the evidence a catalog cannot supply: OrcaRouter publishes no
|
|
10
|
+
* `pricing` field whatsoever, yet its free routing endpoints are named for it.
|
|
11
|
+
* It is scoped to the declaring provider (resolved by connection id through
|
|
12
|
+
* `freeModelPolicyFor`), so no other provider inherits the rule.
|
|
13
|
+
*/
|
|
14
|
+
export declare function isDeclaredFreeModelId(modelId: string, policy?: ProviderFreePolicy): boolean;
|
|
15
|
+
/** Explicit zero prices or curated/preset declarations qualify; paid prices win. */
|
|
16
|
+
export declare function isFreeModelOption(entry: Pick<ModelInventoryEntry, 'id' | 'pricing'>, classification: ModelClassification, policy?: ProviderFreePolicy): boolean;
|
|
4
17
|
//# sourceMappingURL=model_pricing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model_pricing.d.ts","sourceRoot":"","sources":["../src/model_pricing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"model_pricing.d.ts","sourceRoot":"","sources":["../src/model_pricing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAGtD,wEAAwE;AACxE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,mBAAmB,EAAE,EAC7B,OAAO,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAOpC;AAoBD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAG3F;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,SAAS,CAAC,EAClD,cAAc,EAAE,mBAAmB,EACnC,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAUT"}
|
package/dist/model_pricing.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isFreeModelEntry } from './vendor/providers/index.js';
|
|
1
2
|
/** Use only exact, provider-advertised prompt and completion prices. */
|
|
2
3
|
export function findModelPricing(models, modelId) {
|
|
3
4
|
const pricing = models.find((model) => model.id === modelId)?.pricing;
|
|
@@ -7,4 +8,55 @@ export function findModelPricing(models, modelId) {
|
|
|
7
8
|
? pricing
|
|
8
9
|
: undefined;
|
|
9
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Whether a model id ends with a provider-declared free marker, as its own
|
|
13
|
+
* trailing segment.
|
|
14
|
+
*
|
|
15
|
+
* The two guards are the whole point. Anchoring at the end means `free` in the
|
|
16
|
+
* middle of an id (`orcarouter/free-router-4`) never matches, and the segment
|
|
17
|
+
* boundary means a metered id that merely ends in the same letters
|
|
18
|
+
* (`orcarouter/notfree`) never matches either. An unanchored substring test is
|
|
19
|
+
* what marked a whole aggregator catalog free.
|
|
20
|
+
*/
|
|
21
|
+
function endsWithFreeMarker(modelId, marker) {
|
|
22
|
+
if (!marker)
|
|
23
|
+
return false;
|
|
24
|
+
if (!modelId.toLowerCase().endsWith(marker.toLowerCase()))
|
|
25
|
+
return false;
|
|
26
|
+
// `charAt` past the start returns '', which is not alphanumeric, so an id that
|
|
27
|
+
// is nothing but the marker still matches.
|
|
28
|
+
return !/[a-z0-9]/i.test(modelId.charAt(modelId.length - marker.length - 1));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Whether a provider preset *declares* this model id cost-free by name — either
|
|
32
|
+
* as an exact alias or by a trailing free marker.
|
|
33
|
+
*
|
|
34
|
+
* This is the evidence a catalog cannot supply: OrcaRouter publishes no
|
|
35
|
+
* `pricing` field whatsoever, yet its free routing endpoints are named for it.
|
|
36
|
+
* It is scoped to the declaring provider (resolved by connection id through
|
|
37
|
+
* `freeModelPolicyFor`), so no other provider inherits the rule.
|
|
38
|
+
*/
|
|
39
|
+
export function isDeclaredFreeModelId(modelId, policy) {
|
|
40
|
+
if (policy?.freeModelAliases?.includes(modelId))
|
|
41
|
+
return true;
|
|
42
|
+
return (policy?.freeIdSuffixes ?? []).some((marker) => endsWithFreeMarker(modelId, marker));
|
|
43
|
+
}
|
|
44
|
+
/** Explicit zero prices or curated/preset declarations qualify; paid prices win. */
|
|
45
|
+
export function isFreeModelOption(entry, classification, policy) {
|
|
46
|
+
// A reported nonzero price outranks any blanket preset declaration.
|
|
47
|
+
if (entry.pricing && Object.values(entry.pricing).some(price => price.trim() === '' || !Number.isFinite(Number(price)) || Number(price) !== 0))
|
|
48
|
+
return false;
|
|
49
|
+
if (isFreeModelEntry(entry))
|
|
50
|
+
return true;
|
|
51
|
+
const curated = classification.source !== 'heuristic';
|
|
52
|
+
if (curated && classification.accessTier !== 'free_trial' && classification.accessTier !== 'local')
|
|
53
|
+
return false;
|
|
54
|
+
if (policy?.freeCatalog)
|
|
55
|
+
return true;
|
|
56
|
+
if (isDeclaredFreeModelId(entry.id, policy))
|
|
57
|
+
return true;
|
|
58
|
+
if (!curated)
|
|
59
|
+
return false;
|
|
60
|
+
return classification.accessTier === 'free_trial' || classification.accessTier === 'local';
|
|
61
|
+
}
|
|
10
62
|
//# sourceMappingURL=model_pricing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model_pricing.js","sourceRoot":"","sources":["../src/model_pricing.ts"],"names":[],"mappings":"AAEA,wEAAwE;AACxE,MAAM,UAAU,gBAAgB,CAC9B,MAA6B,EAC7B,OAAe;IAEf,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,OAAO,CAAC;IACtE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC;QAC7F,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"model_pricing.js","sourceRoot":"","sources":["../src/model_pricing.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,wEAAwE;AACxE,MAAM,UAAU,gBAAgB,CAC9B,MAA6B,EAC7B,OAAe;IAEf,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,OAAO,CAAC;IACtE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,IAAI,CAAC;QAC7F,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,kBAAkB,CAAC,OAAe,EAAE,MAAc;IACzD,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IACxE,+EAA+E;IAC/E,2CAA2C;IAC3C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe,EAAE,MAA2B;IAChF,IAAI,MAAM,EAAE,gBAAgB,EAAE,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7D,OAAO,CAAC,MAAM,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,iBAAiB,CAC/B,KAAkD,EAClD,cAAmC,EACnC,MAA2B;IAE3B,oEAAoE;IACpE,IAAI,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7J,IAAI,gBAAgB,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,KAAK,WAAW,CAAC;IACtD,IAAI,OAAO,IAAI,cAAc,CAAC,UAAU,KAAK,YAAY,IAAI,cAAc,CAAC,UAAU,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACjH,IAAI,MAAM,EAAE,WAAW;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACzD,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,cAAc,CAAC,UAAU,KAAK,YAAY,IAAI,cAAc,CAAC,UAAU,KAAK,OAAO,CAAC;AAC7F,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo_map.d.ts","sourceRoot":"","sources":["../src/repo_map.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAqB1D;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAErE"}
|
package/dist/repo_map.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { listFiles } from './vendor/tools/index.js';
|
|
2
|
+
export function formatWorkspaceMap(files) {
|
|
3
|
+
if (files.length === 0)
|
|
4
|
+
return 'Workspace map: no files found.';
|
|
5
|
+
const groups = new Map();
|
|
6
|
+
for (const file of files) {
|
|
7
|
+
const parts = file.replace(/[\x00-\x1f\x7f-\x9f]/g, '?').replace(/\\/g, '/').split('/');
|
|
8
|
+
const group = parts.length === 1 ? '(root)' : ['apps', 'packages'].includes(parts[0]) && parts.length > 2
|
|
9
|
+
? parts.slice(0, 2).join('/') : parts[0];
|
|
10
|
+
const item = group === '(root)' ? parts[0] : parts.slice(group.split('/').length).join('/');
|
|
11
|
+
groups.set(group, [...(groups.get(group) ?? []), item]);
|
|
12
|
+
}
|
|
13
|
+
const ordered = [...groups].sort(([a], [b]) => a.localeCompare(b));
|
|
14
|
+
const lines = [`Workspace map (${files.length}${files.length >= 1000 ? '+' : ''} files scanned):`];
|
|
15
|
+
for (const [group, items] of ordered.slice(0, 14)) {
|
|
16
|
+
const selected = items.sort((a, b) => {
|
|
17
|
+
const rank = (name) => name.startsWith('src/') ? 0 : name === 'package.json' || name === 'README.md' ? 1 : 2;
|
|
18
|
+
return rank(a) - rank(b) || a.localeCompare(b);
|
|
19
|
+
}).slice(0, 3);
|
|
20
|
+
lines.push(`${group} (${items.length} ${items.length === 1 ? 'file' : 'files'}): ${selected.join(', ')}${items.length > selected.length ? ', …' : ''}`);
|
|
21
|
+
}
|
|
22
|
+
if (ordered.length > 14)
|
|
23
|
+
lines.push(`… ${ordered.length - 14} more modules`);
|
|
24
|
+
return lines.join('\n');
|
|
25
|
+
}
|
|
26
|
+
export async function buildWorkspaceMap(root) {
|
|
27
|
+
return formatWorkspaceMap(await listFiles(root, '', { recursive: true, maxDepth: 8, limit: 1000 }));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=repo_map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo_map.js","sourceRoot":"","sources":["../src/repo_map.ts"],"names":[],"mappings":"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"}
|
package/dist/sessions.d.ts
CHANGED
|
@@ -83,6 +83,7 @@ export declare const StoredSessionSchema: z.ZodObject<{
|
|
|
83
83
|
promptTokens: z.ZodNumber;
|
|
84
84
|
completionTokens: z.ZodNumber;
|
|
85
85
|
totalTokens: z.ZodNumber;
|
|
86
|
+
estimated: z.ZodOptional<z.ZodBoolean>;
|
|
86
87
|
costUsd: z.ZodOptional<z.ZodNumber>;
|
|
87
88
|
costKnown: z.ZodBoolean;
|
|
88
89
|
available: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -92,18 +93,29 @@ export declare const StoredSessionSchema: z.ZodObject<{
|
|
|
92
93
|
totalTokens: number;
|
|
93
94
|
costKnown: boolean;
|
|
94
95
|
available: boolean;
|
|
96
|
+
estimated?: boolean | undefined;
|
|
95
97
|
costUsd?: number | undefined;
|
|
96
98
|
}, {
|
|
97
99
|
promptTokens: number;
|
|
98
100
|
completionTokens: number;
|
|
99
101
|
totalTokens: number;
|
|
100
102
|
costKnown: boolean;
|
|
103
|
+
estimated?: boolean | undefined;
|
|
101
104
|
costUsd?: number | undefined;
|
|
102
105
|
available?: boolean | undefined;
|
|
103
106
|
}>;
|
|
104
107
|
}, "strip", z.ZodTypeAny, {
|
|
105
108
|
id: string;
|
|
106
109
|
mode: "Plan" | "Execute";
|
|
110
|
+
usage: {
|
|
111
|
+
promptTokens: number;
|
|
112
|
+
completionTokens: number;
|
|
113
|
+
totalTokens: number;
|
|
114
|
+
costKnown: boolean;
|
|
115
|
+
available: boolean;
|
|
116
|
+
estimated?: boolean | undefined;
|
|
117
|
+
costUsd?: number | undefined;
|
|
118
|
+
};
|
|
107
119
|
schemaVersion: 1;
|
|
108
120
|
workspaceRoot: string;
|
|
109
121
|
createdAt: string;
|
|
@@ -129,20 +141,21 @@ export declare const StoredSessionSchema: z.ZodObject<{
|
|
|
129
141
|
content: string;
|
|
130
142
|
toolCallId: string;
|
|
131
143
|
})[];
|
|
144
|
+
providerId?: string | undefined;
|
|
145
|
+
providerName?: string | undefined;
|
|
146
|
+
modelId?: string | undefined;
|
|
147
|
+
}, {
|
|
148
|
+
id: string;
|
|
149
|
+
mode: "Plan" | "Execute";
|
|
132
150
|
usage: {
|
|
133
151
|
promptTokens: number;
|
|
134
152
|
completionTokens: number;
|
|
135
153
|
totalTokens: number;
|
|
136
154
|
costKnown: boolean;
|
|
137
|
-
|
|
155
|
+
estimated?: boolean | undefined;
|
|
138
156
|
costUsd?: number | undefined;
|
|
157
|
+
available?: boolean | undefined;
|
|
139
158
|
};
|
|
140
|
-
providerId?: string | undefined;
|
|
141
|
-
providerName?: string | undefined;
|
|
142
|
-
modelId?: string | undefined;
|
|
143
|
-
}, {
|
|
144
|
-
id: string;
|
|
145
|
-
mode: "Plan" | "Execute";
|
|
146
159
|
schemaVersion: 1;
|
|
147
160
|
workspaceRoot: string;
|
|
148
161
|
createdAt: string;
|
|
@@ -168,14 +181,6 @@ export declare const StoredSessionSchema: z.ZodObject<{
|
|
|
168
181
|
toolCallId: string;
|
|
169
182
|
status?: "denied" | "success" | "error" | undefined;
|
|
170
183
|
})[];
|
|
171
|
-
usage: {
|
|
172
|
-
promptTokens: number;
|
|
173
|
-
completionTokens: number;
|
|
174
|
-
totalTokens: number;
|
|
175
|
-
costKnown: boolean;
|
|
176
|
-
costUsd?: number | undefined;
|
|
177
|
-
available?: boolean | undefined;
|
|
178
|
-
};
|
|
179
184
|
providerId?: string | undefined;
|
|
180
185
|
providerName?: string | undefined;
|
|
181
186
|
modelId?: string | undefined;
|
|
@@ -195,6 +200,8 @@ export declare function calculateSessionCost(usage: ChatUsage | undefined, prici
|
|
|
195
200
|
costKnown: boolean;
|
|
196
201
|
costUsd?: number;
|
|
197
202
|
};
|
|
203
|
+
/** Add one task snapshot once; estimates never produce a billing claim. */
|
|
204
|
+
export declare function accumulateSessionUsage(previous: StoredSession['usage'], usage: ChatUsage, estimated: boolean, pricing?: Record<string, string>): StoredSession['usage'];
|
|
198
205
|
/** Output speed uses only generated tokens, never prompt/context processing time. */
|
|
199
206
|
export declare function calculateOutputTokenRate(completionTokens: number, streamDurationMs: number): number | undefined;
|
|
200
207
|
export declare function formatSessionCost(usage: StoredSession['usage']): string;
|
package/dist/sessions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAqB,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAG1F,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAqB,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAG1F,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA8W,CAAC;AAC/Y,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,cAAc,GAAG,SAAS,GAAG,MAAM,CAAC,CAAM,GAAG,aAAa,CAGlK;AAED,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,SAAe;IAChD,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAC3C,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM;IAC9C,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IASlC,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,EAAE;IAOpD,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;CACpE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAI7I;AAED,2EAA2E;AAC3E,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CAavK;AAED,qFAAqF;AACrF,wBAAgB,wBAAwB,CAAC,gBAAgB,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG/G;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,MAAM,CAIvE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAIpE;AACD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAM7E"}
|
package/dist/sessions.js
CHANGED
|
@@ -4,7 +4,7 @@ import os from 'node:os';
|
|
|
4
4
|
import path from 'node:path';
|
|
5
5
|
import { z } from 'zod';
|
|
6
6
|
import { ChatMessageSchema } from './vendor/contracts/index.js';
|
|
7
|
-
const UsageSchema = z.object({ promptTokens: z.number().int().nonnegative(), completionTokens: z.number().int().nonnegative(), totalTokens: z.number().int().nonnegative(), costUsd: z.number().nonnegative().optional(), costKnown: z.boolean(), available: z.boolean().default(false) });
|
|
7
|
+
const UsageSchema = z.object({ promptTokens: z.number().int().nonnegative(), completionTokens: z.number().int().nonnegative(), totalTokens: z.number().int().nonnegative(), estimated: z.boolean().optional(), costUsd: z.number().nonnegative().optional(), costKnown: z.boolean(), available: z.boolean().default(false) });
|
|
8
8
|
export const StoredSessionSchema = z.object({ schemaVersion: z.literal(1), id: z.string().uuid(), workspaceRoot: z.string().min(1), createdAt: z.string().datetime(), updatedAt: z.string().datetime(), providerId: z.string().optional(), providerName: z.string().optional(), modelId: z.string().optional(), mode: z.enum(['Plan', 'Execute']), messages: z.array(ChatMessageSchema), usage: UsageSchema });
|
|
9
9
|
export function createSession(workspaceRoot, details = {}) {
|
|
10
10
|
const now = new Date().toISOString();
|
|
@@ -48,6 +48,21 @@ export function calculateSessionCost(usage, pricing) {
|
|
|
48
48
|
return { costKnown: false };
|
|
49
49
|
return { costKnown: true, costUsd: usage.promptTokens * prompt + usage.completionTokens * completion };
|
|
50
50
|
}
|
|
51
|
+
/** Add one task snapshot once; estimates never produce a billing claim. */
|
|
52
|
+
export function accumulateSessionUsage(previous, usage, estimated, pricing) {
|
|
53
|
+
const isEstimated = Boolean(previous.estimated || estimated);
|
|
54
|
+
const cost = isEstimated ? { costKnown: false } : calculateSessionCost(usage, pricing);
|
|
55
|
+
const costKnown = cost.costKnown && (previous.totalTokens === 0 || previous.costKnown);
|
|
56
|
+
return {
|
|
57
|
+
promptTokens: previous.promptTokens + usage.promptTokens,
|
|
58
|
+
completionTokens: previous.completionTokens + usage.completionTokens,
|
|
59
|
+
totalTokens: previous.totalTokens + usage.totalTokens,
|
|
60
|
+
estimated: isEstimated,
|
|
61
|
+
available: true,
|
|
62
|
+
costKnown,
|
|
63
|
+
costUsd: costKnown ? (previous.costUsd ?? 0) + (cost.costUsd ?? 0) : undefined,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
51
66
|
/** Output speed uses only generated tokens, never prompt/context processing time. */
|
|
52
67
|
export function calculateOutputTokenRate(completionTokens, streamDurationMs) {
|
|
53
68
|
if (!Number.isFinite(completionTokens) || completionTokens <= 0 || !Number.isFinite(streamDurationMs) || streamDurationMs <= 0)
|