proxitor 0.3.0 → 0.5.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 +27 -8
- package/dist/add.mjs +26 -27
- package/dist/add.mjs.map +1 -1
- package/dist/browse.mjs +20 -21
- package/dist/browse.mjs.map +1 -1
- package/dist/cli.mjs +14774 -33
- package/dist/cli.mjs.map +1 -1
- package/dist/config.mjs +6 -5
- package/dist/config.mjs.map +1 -1
- package/dist/config2.mjs +5 -6
- package/dist/config2.mjs.map +1 -1
- package/dist/dist.mjs +1325 -0
- package/dist/dist.mjs.map +1 -0
- package/dist/dist2.mjs +6617 -0
- package/dist/dist2.mjs.map +1 -0
- package/dist/edit.mjs +17 -18
- package/dist/edit.mjs.map +1 -1
- package/dist/list.mjs +4 -4
- package/dist/list.mjs.map +1 -1
- package/dist/prompt.mjs +849 -0
- package/dist/prompt.mjs.map +1 -0
- package/dist/providers.mjs +16 -16
- package/dist/providers.mjs.map +1 -1
- package/dist/remove.mjs +10 -11
- package/dist/remove.mjs.map +1 -1
- package/dist/validate.mjs +9 -9
- package/dist/validate.mjs.map +1 -1
- package/dist/wizard.mjs +222 -0
- package/dist/wizard.mjs.map +1 -0
- package/package.json +1 -16
- package/dist/add.cjs +0 -139
- package/dist/add.cjs.map +0 -1
- package/dist/browse.cjs +0 -88
- package/dist/browse.cjs.map +0 -1
- package/dist/cli.cjs +0 -159
- package/dist/cli.cjs.map +0 -1
- package/dist/cli.d.cts +0 -1
- package/dist/cli.d.mts +0 -1
- package/dist/config.cjs +0 -68
- package/dist/config.cjs.map +0 -1
- package/dist/config2.cjs +0 -75
- package/dist/config2.cjs.map +0 -1
- package/dist/edit.cjs +0 -82
- package/dist/edit.cjs.map +0 -1
- package/dist/index.cjs +0 -12
- package/dist/index.d.cts +0 -261
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.mts +0 -261
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs +0 -2
- package/dist/list.cjs +0 -33
- package/dist/list.cjs.map +0 -1
- package/dist/providers.cjs +0 -376
- package/dist/providers.cjs.map +0 -1
- package/dist/proxy.cjs +0 -656
- package/dist/proxy.cjs.map +0 -1
- package/dist/proxy.mjs +0 -544
- package/dist/proxy.mjs.map +0 -1
- package/dist/remove.cjs +0 -38
- package/dist/remove.cjs.map +0 -1
- package/dist/validate.cjs +0 -26
- package/dist/validate.cjs.map +0 -1
package/dist/edit.mjs
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
+
import { confirm as le, intro as ye, isCancel as R$1, log as R, outro as fe, select as Ee } from "./dist.mjs";
|
|
1
2
|
import { g as OpenRouterClient, n as selectProvidersByMode, r as selectRoutingMode, t as fetchProvidersForModel } from "./providers.mjs";
|
|
2
3
|
import { i as setModelOverride, r as requireConfigPath, t as getModelOverrides } from "./config.mjs";
|
|
3
|
-
import * as clack from "@clack/prompts";
|
|
4
|
-
import { isCancel } from "@clack/prompts";
|
|
5
4
|
//#region src/commands/config/edit.ts
|
|
6
5
|
function formatOverrideHint(override) {
|
|
7
6
|
if (!override?.provider) return "(no provider routing)";
|
|
8
7
|
return Object.keys(override.provider).map((k) => `${k}: ${JSON.stringify(override.provider?.[k])}`).join(", ");
|
|
9
8
|
}
|
|
10
9
|
function showCurrentConfig(modelKey, current) {
|
|
11
|
-
|
|
12
|
-
if (current.provider) for (const [field, value] of Object.entries(current.provider))
|
|
13
|
-
if (current.headers) for (const [name, value] of Object.entries(current.headers))
|
|
10
|
+
R.info(`Current config for "${modelKey}":`);
|
|
11
|
+
if (current.provider) for (const [field, value] of Object.entries(current.provider)) R.info(` provider.${field}: ${JSON.stringify(value)}`);
|
|
12
|
+
if (current.headers) for (const [name, value] of Object.entries(current.headers)) R.info(` headers.${name}: ${value}`);
|
|
14
13
|
}
|
|
15
14
|
function withoutProvider(current) {
|
|
16
15
|
return current.headers ? { headers: current.headers } : {};
|
|
@@ -19,10 +18,10 @@ async function updateProviderRouting(configPath, modelKey, current, apiKey) {
|
|
|
19
18
|
const isPattern = modelKey.includes("*");
|
|
20
19
|
const client = new OpenRouterClient(apiKey);
|
|
21
20
|
const mode = await selectRoutingMode("Routing mode");
|
|
22
|
-
if (
|
|
21
|
+
if (R$1(mode)) return;
|
|
23
22
|
if (mode === "skip") {
|
|
24
23
|
setModelOverride(configPath, modelKey, withoutProvider(current));
|
|
25
|
-
|
|
24
|
+
fe("✓ Override updated");
|
|
26
25
|
return;
|
|
27
26
|
}
|
|
28
27
|
const providerOptions = await fetchProvidersForModel(client, modelKey, isPattern);
|
|
@@ -31,26 +30,26 @@ async function updateProviderRouting(configPath, modelKey, current, apiKey) {
|
|
|
31
30
|
if (override === null) return;
|
|
32
31
|
const updated = withoutProvider(current);
|
|
33
32
|
if (override.provider) updated.provider = override.provider;
|
|
34
|
-
const save = await
|
|
35
|
-
if (
|
|
36
|
-
|
|
33
|
+
const save = await le({ message: "Save changes?" });
|
|
34
|
+
if (R$1(save) || !save) {
|
|
35
|
+
fe("Cancelled");
|
|
37
36
|
return;
|
|
38
37
|
}
|
|
39
38
|
setModelOverride(configPath, modelKey, updated);
|
|
40
|
-
|
|
39
|
+
fe("✓ Override updated");
|
|
41
40
|
}
|
|
42
41
|
/** Run the interactive "Edit model override" flow. */
|
|
43
42
|
async function editOverrideCommand(apiKey) {
|
|
44
|
-
|
|
43
|
+
ye("Edit Model Override");
|
|
45
44
|
const configPath = requireConfigPath();
|
|
46
45
|
const overrides = getModelOverrides(configPath);
|
|
47
46
|
const keys = Object.keys(overrides);
|
|
48
47
|
if (keys.length === 0) {
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
R.warn("No model overrides found. Use Add instead.");
|
|
49
|
+
fe("");
|
|
51
50
|
return;
|
|
52
51
|
}
|
|
53
|
-
const selected = await
|
|
52
|
+
const selected = await Ee({
|
|
54
53
|
message: "Select override to edit",
|
|
55
54
|
options: keys.map((k) => ({
|
|
56
55
|
value: k,
|
|
@@ -58,11 +57,11 @@ async function editOverrideCommand(apiKey) {
|
|
|
58
57
|
hint: formatOverrideHint(overrides[k])
|
|
59
58
|
}))
|
|
60
59
|
});
|
|
61
|
-
if (
|
|
60
|
+
if (R$1(selected)) return;
|
|
62
61
|
const modelKey = selected;
|
|
63
62
|
const current = overrides[modelKey] ?? {};
|
|
64
63
|
showCurrentConfig(modelKey, current);
|
|
65
|
-
const target = await
|
|
64
|
+
const target = await Ee({
|
|
66
65
|
message: "What to change?",
|
|
67
66
|
options: [{
|
|
68
67
|
value: "provider",
|
|
@@ -72,7 +71,7 @@ async function editOverrideCommand(apiKey) {
|
|
|
72
71
|
label: "Replace entirely"
|
|
73
72
|
}]
|
|
74
73
|
});
|
|
75
|
-
if (
|
|
74
|
+
if (R$1(target)) return;
|
|
76
75
|
if (target === "provider" || target === "replace") await updateProviderRouting(configPath, modelKey, current, apiKey);
|
|
77
76
|
}
|
|
78
77
|
//#endregion
|
package/dist/edit.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.mjs","names":[],"sources":["../src/commands/config/edit.ts"],"sourcesContent":["import * as clack from '@clack/prompts'\nimport { isCancel } from '@clack/prompts'\nimport type { ModelOverride } from '../../config-schema.js'\nimport { OpenRouterClient } from '../../openrouter/client.js'\nimport { getModelOverrides, requireConfigPath, setModelOverride } from './config.js'\nimport {\n fetchProvidersForModel,\n selectProvidersByMode,\n selectRoutingMode,\n} from './providers.js'\n\nfunction formatOverrideHint(override: ModelOverride | undefined): string {\n if (!override?.provider) return '(no provider routing)'\n const keys = Object.keys(override.provider)\n return keys\n .map(\n k => `${k}: ${JSON.stringify((override.provider as Record<string, unknown>)?.[k])}`,\n )\n .join(', ')\n}\n\nfunction showCurrentConfig(modelKey: string, current: ModelOverride): void {\n clack.log.info(`Current config for \"${modelKey}\":`)\n if (current.provider) {\n for (const [field, value] of Object.entries(current.provider)) {\n clack.log.info(` provider.${field}: ${JSON.stringify(value)}`)\n }\n }\n if (current.headers) {\n for (const [name, value] of Object.entries(current.headers)) {\n clack.log.info(` headers.${name}: ${value}`)\n }\n }\n}\n\nfunction withoutProvider(current: ModelOverride): ModelOverride {\n return current.headers ? { headers: current.headers } : {}\n}\n\nasync function updateProviderRouting(\n configPath: string,\n modelKey: string,\n current: ModelOverride,\n apiKey: string,\n): Promise<void> {\n const isPattern = modelKey.includes('*')\n const client = new OpenRouterClient(apiKey)\n\n const mode = await selectRoutingMode('Routing mode')\n if (isCancel(mode)) return\n\n if (mode === 'skip') {\n setModelOverride(configPath, modelKey, withoutProvider(current))\n clack.outro('✓ Override updated')\n return\n }\n\n const providerOptions = await fetchProvidersForModel(client, modelKey, isPattern)\n if (!providerOptions) return\n\n const override = await selectProvidersByMode(mode as string, providerOptions)\n if (override === null) return\n\n const updated = withoutProvider(current)\n if (override.provider) {\n updated.provider = override.provider as ModelOverride['provider']\n }\n\n const save = await clack.confirm({ message: 'Save changes?' })\n if (isCancel(save) || !save) {\n clack.outro('Cancelled')\n return\n }\n\n setModelOverride(configPath, modelKey, updated)\n clack.outro('✓ Override updated')\n}\n\n/** Run the interactive \"Edit model override\" flow. */\nexport async function editOverrideCommand(apiKey: string): Promise<void> {\n clack.intro('Edit Model Override')\n\n const configPath = requireConfigPath()\n const overrides = getModelOverrides(configPath)\n const keys = Object.keys(overrides)\n\n if (keys.length === 0) {\n clack.log.warn('No model overrides found. Use Add instead.')\n clack.outro('')\n return\n }\n\n const selected = await clack.select({\n message: 'Select override to edit',\n options: keys.map(k => ({\n value: k,\n label: k,\n hint: formatOverrideHint(overrides[k]),\n })),\n })\n if (isCancel(selected)) return\n\n const modelKey = selected as string\n const current: ModelOverride = overrides[modelKey] ?? {}\n\n showCurrentConfig(modelKey, current)\n\n const target = await clack.select({\n message: 'What to change?',\n options: [\n { value: 'provider', label: 'Provider routing' },\n { value: 'replace', label: 'Replace entirely' },\n ],\n })\n if (isCancel(target)) return\n\n if (target === 'provider' || target === 'replace') {\n await updateProviderRouting(configPath, modelKey, current, apiKey)\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"edit.mjs","names":["isCancel","clack.confirm","clack.select"],"sources":["../src/commands/config/edit.ts"],"sourcesContent":["import * as clack from '@clack/prompts'\nimport { isCancel } from '@clack/prompts'\nimport type { ModelOverride } from '../../config-schema.js'\nimport { OpenRouterClient } from '../../openrouter/client.js'\nimport { getModelOverrides, requireConfigPath, setModelOverride } from './config.js'\nimport {\n fetchProvidersForModel,\n selectProvidersByMode,\n selectRoutingMode,\n} from './providers.js'\n\nfunction formatOverrideHint(override: ModelOverride | undefined): string {\n if (!override?.provider) return '(no provider routing)'\n const keys = Object.keys(override.provider)\n return keys\n .map(\n k => `${k}: ${JSON.stringify((override.provider as Record<string, unknown>)?.[k])}`,\n )\n .join(', ')\n}\n\nfunction showCurrentConfig(modelKey: string, current: ModelOverride): void {\n clack.log.info(`Current config for \"${modelKey}\":`)\n if (current.provider) {\n for (const [field, value] of Object.entries(current.provider)) {\n clack.log.info(` provider.${field}: ${JSON.stringify(value)}`)\n }\n }\n if (current.headers) {\n for (const [name, value] of Object.entries(current.headers)) {\n clack.log.info(` headers.${name}: ${value}`)\n }\n }\n}\n\nfunction withoutProvider(current: ModelOverride): ModelOverride {\n return current.headers ? { headers: current.headers } : {}\n}\n\nasync function updateProviderRouting(\n configPath: string,\n modelKey: string,\n current: ModelOverride,\n apiKey: string,\n): Promise<void> {\n const isPattern = modelKey.includes('*')\n const client = new OpenRouterClient(apiKey)\n\n const mode = await selectRoutingMode('Routing mode')\n if (isCancel(mode)) return\n\n if (mode === 'skip') {\n setModelOverride(configPath, modelKey, withoutProvider(current))\n clack.outro('✓ Override updated')\n return\n }\n\n const providerOptions = await fetchProvidersForModel(client, modelKey, isPattern)\n if (!providerOptions) return\n\n const override = await selectProvidersByMode(mode as string, providerOptions)\n if (override === null) return\n\n const updated = withoutProvider(current)\n if (override.provider) {\n updated.provider = override.provider as ModelOverride['provider']\n }\n\n const save = await clack.confirm({ message: 'Save changes?' })\n if (isCancel(save) || !save) {\n clack.outro('Cancelled')\n return\n }\n\n setModelOverride(configPath, modelKey, updated)\n clack.outro('✓ Override updated')\n}\n\n/** Run the interactive \"Edit model override\" flow. */\nexport async function editOverrideCommand(apiKey: string): Promise<void> {\n clack.intro('Edit Model Override')\n\n const configPath = requireConfigPath()\n const overrides = getModelOverrides(configPath)\n const keys = Object.keys(overrides)\n\n if (keys.length === 0) {\n clack.log.warn('No model overrides found. Use Add instead.')\n clack.outro('')\n return\n }\n\n const selected = await clack.select({\n message: 'Select override to edit',\n options: keys.map(k => ({\n value: k,\n label: k,\n hint: formatOverrideHint(overrides[k]),\n })),\n })\n if (isCancel(selected)) return\n\n const modelKey = selected as string\n const current: ModelOverride = overrides[modelKey] ?? {}\n\n showCurrentConfig(modelKey, current)\n\n const target = await clack.select({\n message: 'What to change?',\n options: [\n { value: 'provider', label: 'Provider routing' },\n { value: 'replace', label: 'Replace entirely' },\n ],\n })\n if (isCancel(target)) return\n\n if (target === 'provider' || target === 'replace') {\n await updateProviderRouting(configPath, modelKey, current, apiKey)\n }\n}\n"],"mappings":";;;;AAWA,SAAS,mBAAmB,UAA6C;CACvE,IAAI,CAAC,UAAU,UAAU,OAAO;CAEhC,OADa,OAAO,KAAK,SAAS,QACxB,EACP,KACC,MAAK,GAAG,EAAE,IAAI,KAAK,UAAW,SAAS,WAAuC,EAAE,GAClF,EACC,KAAK,IAAI;AACd;AAEA,SAAS,kBAAkB,UAAkB,SAA8B;CACzE,EAAU,KAAK,uBAAuB,SAAS,GAAG;CAClD,IAAI,QAAQ,UACV,KAAK,MAAM,CAAC,OAAO,UAAU,OAAO,QAAQ,QAAQ,QAAQ,GAC1D,EAAU,KAAK,cAAc,MAAM,IAAI,KAAK,UAAU,KAAK,GAAG;CAGlE,IAAI,QAAQ,SACV,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,QAAQ,OAAO,GACxD,EAAU,KAAK,aAAa,KAAK,IAAI,OAAO;AAGlD;AAEA,SAAS,gBAAgB,SAAuC;CAC9D,OAAO,QAAQ,UAAU,EAAE,SAAS,QAAQ,QAAQ,IAAI,CAAC;AAC3D;AAEA,eAAe,sBACb,YACA,UACA,SACA,QACe;CACf,MAAM,YAAY,SAAS,SAAS,GAAG;CACvC,MAAM,SAAS,IAAI,iBAAiB,MAAM;CAE1C,MAAM,OAAO,MAAM,kBAAkB,cAAc;CACnD,IAAIA,IAAS,IAAI,GAAG;CAEpB,IAAI,SAAS,QAAQ;EACnB,iBAAiB,YAAY,UAAU,gBAAgB,OAAO,CAAC;EAC/D,GAAY,oBAAoB;EAChC;CACF;CAEA,MAAM,kBAAkB,MAAM,uBAAuB,QAAQ,UAAU,SAAS;CAChF,IAAI,CAAC,iBAAiB;CAEtB,MAAM,WAAW,MAAM,sBAAsB,MAAgB,eAAe;CAC5E,IAAI,aAAa,MAAM;CAEvB,MAAM,UAAU,gBAAgB,OAAO;CACvC,IAAI,SAAS,UACX,QAAQ,WAAW,SAAS;CAG9B,MAAM,OAAO,MAAMC,GAAc,EAAE,SAAS,gBAAgB,CAAC;CAC7D,IAAID,IAAS,IAAI,KAAK,CAAC,MAAM;EAC3B,GAAY,WAAW;EACvB;CACF;CAEA,iBAAiB,YAAY,UAAU,OAAO;CAC9C,GAAY,oBAAoB;AAClC;;AAGA,eAAsB,oBAAoB,QAA+B;CACvE,GAAY,qBAAqB;CAEjC,MAAM,aAAa,kBAAkB;CACrC,MAAM,YAAY,kBAAkB,UAAU;CAC9C,MAAM,OAAO,OAAO,KAAK,SAAS;CAElC,IAAI,KAAK,WAAW,GAAG;EACrB,EAAU,KAAK,4CAA4C;EAC3D,GAAY,EAAE;EACd;CACF;CAEA,MAAM,WAAW,MAAME,GAAa;EAClC,SAAS;EACT,SAAS,KAAK,KAAI,OAAM;GACtB,OAAO;GACP,OAAO;GACP,MAAM,mBAAmB,UAAU,EAAE;EACvC,EAAE;CACJ,CAAC;CACD,IAAIF,IAAS,QAAQ,GAAG;CAExB,MAAM,WAAW;CACjB,MAAM,UAAyB,UAAU,aAAa,CAAC;CAEvD,kBAAkB,UAAU,OAAO;CAEnC,MAAM,SAAS,MAAME,GAAa;EAChC,SAAS;EACT,SAAS,CACP;GAAE,OAAO;GAAY,OAAO;EAAmB,GAC/C;GAAE,OAAO;GAAW,OAAO;EAAmB,CAChD;CACF,CAAC;CACD,IAAIF,IAAS,MAAM,GAAG;CAEtB,IAAI,WAAW,cAAc,WAAW,WACtC,MAAM,sBAAsB,YAAY,UAAU,SAAS,MAAM;AAErE"}
|
package/dist/list.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { log as R } from "./dist.mjs";
|
|
1
2
|
import { r as requireConfigPath, t as getModelOverrides } from "./config.mjs";
|
|
2
|
-
import * as clack from "@clack/prompts";
|
|
3
3
|
//#region src/commands/config/list.ts
|
|
4
4
|
function formatOverrideSummary(override) {
|
|
5
5
|
const parts = [];
|
|
@@ -15,14 +15,14 @@ async function listOverridesCommand() {
|
|
|
15
15
|
const overrides = getModelOverrides(configPath);
|
|
16
16
|
const keys = Object.keys(overrides);
|
|
17
17
|
if (keys.length === 0) {
|
|
18
|
-
|
|
18
|
+
R.info("No model overrides configured.");
|
|
19
19
|
return;
|
|
20
20
|
}
|
|
21
|
-
|
|
21
|
+
R.success(`${keys.length} override(s) in ${configPath}`);
|
|
22
22
|
for (const key of keys) {
|
|
23
23
|
const override = overrides[key];
|
|
24
24
|
if (!override) continue;
|
|
25
|
-
|
|
25
|
+
R.info(` ${key} — ${formatOverrideSummary(override)}`);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
//#endregion
|
package/dist/list.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.mjs","names":[],"sources":["../src/commands/config/list.ts"],"sourcesContent":["import * as clack from '@clack/prompts'\nimport type { ModelOverride } from '../../config-schema.js'\nimport { getModelOverrides, requireConfigPath } from './config.js'\n\nfunction formatOverrideSummary(override: ModelOverride): string {\n const parts: string[] = []\n\n if (override.provider) {\n for (const [field, value] of Object.entries(override.provider)) {\n if (value !== undefined) parts.push(`${field}: ${JSON.stringify(value)}`)\n }\n }\n\n if (override.headers) {\n for (const [name, value] of Object.entries(override.headers)) {\n parts.push(`header ${name}: ${value}`)\n }\n }\n\n return parts.join(', ') || '(empty)'\n}\n\n/** Display all current model overrides. */\nexport async function listOverridesCommand(): Promise<void> {\n const configPath = requireConfigPath()\n const overrides = getModelOverrides(configPath)\n const keys = Object.keys(overrides)\n\n if (keys.length === 0) {\n clack.log.info('No model overrides configured.')\n return\n }\n\n clack.log.success(`${keys.length} override(s) in ${configPath}`)\n\n for (const key of keys) {\n const override = overrides[key]\n if (!override) continue\n clack.log.info(` ${key} — ${formatOverrideSummary(override)}`)\n }\n}\n"],"mappings":";;;AAIA,SAAS,sBAAsB,UAAiC;CAC9D,MAAM,QAAkB,CAAC;CAEzB,IAAI,SAAS;OACN,MAAM,CAAC,OAAO,UAAU,OAAO,QAAQ,SAAS,QAAQ,GAC3D,IAAI,UAAU,KAAA,GAAW,MAAM,KAAK,GAAG,MAAM,IAAI,KAAK,UAAU,KAAK,GAAG;CAAA;CAI5E,IAAI,SAAS,SACX,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,SAAS,OAAO,GACzD,MAAM,KAAK,UAAU,KAAK,IAAI,OAAO;CAIzC,OAAO,MAAM,KAAK,IAAI,KAAK;AAC7B;;AAGA,eAAsB,uBAAsC;CAC1D,MAAM,aAAa,kBAAkB;CACrC,MAAM,YAAY,kBAAkB,UAAU;CAC9C,MAAM,OAAO,OAAO,KAAK,SAAS;CAElC,IAAI,KAAK,WAAW,GAAG;EACrB,
|
|
1
|
+
{"version":3,"file":"list.mjs","names":[],"sources":["../src/commands/config/list.ts"],"sourcesContent":["import * as clack from '@clack/prompts'\nimport type { ModelOverride } from '../../config-schema.js'\nimport { getModelOverrides, requireConfigPath } from './config.js'\n\nfunction formatOverrideSummary(override: ModelOverride): string {\n const parts: string[] = []\n\n if (override.provider) {\n for (const [field, value] of Object.entries(override.provider)) {\n if (value !== undefined) parts.push(`${field}: ${JSON.stringify(value)}`)\n }\n }\n\n if (override.headers) {\n for (const [name, value] of Object.entries(override.headers)) {\n parts.push(`header ${name}: ${value}`)\n }\n }\n\n return parts.join(', ') || '(empty)'\n}\n\n/** Display all current model overrides. */\nexport async function listOverridesCommand(): Promise<void> {\n const configPath = requireConfigPath()\n const overrides = getModelOverrides(configPath)\n const keys = Object.keys(overrides)\n\n if (keys.length === 0) {\n clack.log.info('No model overrides configured.')\n return\n }\n\n clack.log.success(`${keys.length} override(s) in ${configPath}`)\n\n for (const key of keys) {\n const override = overrides[key]\n if (!override) continue\n clack.log.info(` ${key} — ${formatOverrideSummary(override)}`)\n }\n}\n"],"mappings":";;;AAIA,SAAS,sBAAsB,UAAiC;CAC9D,MAAM,QAAkB,CAAC;CAEzB,IAAI,SAAS;OACN,MAAM,CAAC,OAAO,UAAU,OAAO,QAAQ,SAAS,QAAQ,GAC3D,IAAI,UAAU,KAAA,GAAW,MAAM,KAAK,GAAG,MAAM,IAAI,KAAK,UAAU,KAAK,GAAG;CAAA;CAI5E,IAAI,SAAS,SACX,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,SAAS,OAAO,GACzD,MAAM,KAAK,UAAU,KAAK,IAAI,OAAO;CAIzC,OAAO,MAAM,KAAK,IAAI,KAAK;AAC7B;;AAGA,eAAsB,uBAAsC;CAC1D,MAAM,aAAa,kBAAkB;CACrC,MAAM,YAAY,kBAAkB,UAAU;CAC9C,MAAM,OAAO,OAAO,KAAK,SAAS;CAElC,IAAI,KAAK,WAAW,GAAG;EACrB,EAAU,KAAK,gCAAgC;EAC/C;CACF;CAEA,EAAU,QAAQ,GAAG,KAAK,OAAO,kBAAkB,YAAY;CAE/D,KAAK,MAAM,OAAO,MAAM;EACtB,MAAM,WAAW,UAAU;EAC3B,IAAI,CAAC,UAAU;EACf,EAAU,KAAK,KAAK,IAAI,KAAK,sBAAsB,QAAQ,GAAG;CAChE;AACF"}
|