@hasna/switcher 0.1.0 → 0.1.2
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 +210 -13
- package/dist/aider-args.d.ts +7 -0
- package/dist/aider-config.d.ts +6 -0
- package/dist/auth.d.ts +3 -0
- package/dist/catalog.d.ts +3 -2
- package/dist/cli/index.js +8558 -337
- package/dist/cline-backend.d.ts +7 -0
- package/dist/credentials.d.ts +178 -0
- package/dist/direct-launch.d.ts +6 -0
- package/dist/domain.d.ts +142 -19
- package/dist/dsh-args.d.ts +5 -0
- package/dist/gemini-bridge.d.ts +6 -0
- package/dist/gemini-config.d.ts +12 -0
- package/dist/generated/api.d.ts +163 -11
- package/dist/grok-args.d.ts +1 -0
- package/dist/harness-arguments.d.ts +6 -0
- package/dist/harness-environment.d.ts +1 -0
- package/dist/harness-installation.d.ts +19 -0
- package/dist/harness-process.d.ts +11 -0
- package/dist/harness-types.d.ts +2 -0
- package/dist/harnesses.d.ts +36 -2
- package/dist/hermes-backend.d.ts +19 -0
- package/dist/index.js +209 -6
- package/dist/kilo-config.d.ts +13 -0
- package/dist/kilo.d.ts +5 -0
- package/dist/launcher.d.ts +39 -3
- package/dist/mcp/index.js +159 -7
- package/dist/omp-backend.d.ts +7 -0
- package/dist/opencode2-config.d.ts +60 -0
- package/dist/ori-backend.d.ts +89 -0
- package/dist/presets.d.ts +64 -0
- package/dist/runtime.d.ts +20 -0
- package/dist/sdk.d.ts +95 -19
- package/dist/sdk.js +209 -6
- package/dist/serve/index.js +909 -98
- package/dist/server.d.ts +16 -0
- package/dist/service.d.ts +2 -1
- package/dist/terminal-descriptors.d.ts +5 -0
- package/hasna.contract.json +1 -1
- package/openapi.json +450 -12
- package/package.json +19 -4
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const rule: z.ZodObject<{
|
|
3
|
+
action: z.ZodString;
|
|
4
|
+
resource: z.ZodString;
|
|
5
|
+
effect: z.ZodEnum<["allow", "deny", "ask"]>;
|
|
6
|
+
}, "strict", z.ZodTypeAny, {
|
|
7
|
+
effect: "allow" | "deny" | "ask";
|
|
8
|
+
action: string;
|
|
9
|
+
resource: string;
|
|
10
|
+
}, {
|
|
11
|
+
effect: "allow" | "deny" | "ask";
|
|
12
|
+
action: string;
|
|
13
|
+
resource: string;
|
|
14
|
+
}>;
|
|
15
|
+
type Rule = z.infer<typeof rule>;
|
|
16
|
+
type Agent = {
|
|
17
|
+
system?: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
mode?: "primary" | "subagent" | "all";
|
|
20
|
+
hidden?: boolean;
|
|
21
|
+
color?: string;
|
|
22
|
+
steps?: number;
|
|
23
|
+
disabled?: boolean;
|
|
24
|
+
permissions?: Rule[];
|
|
25
|
+
};
|
|
26
|
+
/** Preserve native policy and prompts as data, without running native plugins or loading provider settings. */
|
|
27
|
+
export declare function isolateOpenCode2(cwd: string, stateDir: string, providerID: string, env?: NodeJS.ProcessEnv): Promise<{
|
|
28
|
+
config: {
|
|
29
|
+
experimental: {
|
|
30
|
+
policies: {
|
|
31
|
+
action: string;
|
|
32
|
+
resource: string;
|
|
33
|
+
effect: string;
|
|
34
|
+
}[];
|
|
35
|
+
};
|
|
36
|
+
default_agent?: string | undefined;
|
|
37
|
+
permissions: {
|
|
38
|
+
effect: "allow" | "deny" | "ask";
|
|
39
|
+
action: string;
|
|
40
|
+
resource: string;
|
|
41
|
+
}[];
|
|
42
|
+
agents: Record<string, Agent>;
|
|
43
|
+
};
|
|
44
|
+
env: {
|
|
45
|
+
HOME: string;
|
|
46
|
+
XDG_CONFIG_HOME: string;
|
|
47
|
+
OPENCODE_CONFIG_DIR: string;
|
|
48
|
+
XDG_CACHE_HOME: string;
|
|
49
|
+
XDG_STATE_HOME: string;
|
|
50
|
+
XDG_DATA_HOME: string;
|
|
51
|
+
OPENCODE_DISABLE_PROJECT_CONFIG: string;
|
|
52
|
+
OPENCODE_CONFIG_PROJECT_DISABLE: string;
|
|
53
|
+
OPENCODE_DISABLE_MODELS_FETCH: string;
|
|
54
|
+
};
|
|
55
|
+
instructionFile: string;
|
|
56
|
+
sourcePaths: string[];
|
|
57
|
+
}>;
|
|
58
|
+
/** Native substitutes variables before parsing JSON; quote literal prompt/model tokens without evaluating them. */
|
|
59
|
+
export declare function openCode2ConfigText(config: Record<string, unknown>, providerID: string, keyEnv: string): string;
|
|
60
|
+
export {};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/** The Ori 0.12.1 command name for a Switcher harness. */
|
|
2
|
+
export type OriTarget = "claude" | "codex" | "grok" | "opencode2" | "pi" | "dsh" | "gemini" | "aider" | "kilo";
|
|
3
|
+
export type OriProtocol = "anthropic-messages" | "openai-responses" | "openai-chat" | "gemini-generate-content";
|
|
4
|
+
export type OriReasoningEffort = "max" | "xhigh" | "high" | "medium" | "low" | "minimal" | "none";
|
|
5
|
+
export type OriProviderCatalogEntry = {
|
|
6
|
+
id: "openrouter";
|
|
7
|
+
displayName: "OpenRouter";
|
|
8
|
+
credentialEnv: "OPENROUTER_API_KEY";
|
|
9
|
+
publicModelsUrl: "https://openrouter.ai/api/v1/models";
|
|
10
|
+
entitledModelsUrl: "https://openrouter.ai/api/v1/models/user";
|
|
11
|
+
protocols: readonly OriProtocol[];
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Ori is an OpenRouter launcher, rather than a general provider adapter.
|
|
15
|
+
* Keep this list immutable so callers cannot accidentally broaden the boundary.
|
|
16
|
+
*/
|
|
17
|
+
export declare const oriProviderCatalog: readonly OriProviderCatalogEntry[];
|
|
18
|
+
/** Native Ori flags verified from `ori <target> --help` for 0.12.1. */
|
|
19
|
+
export declare const oriNativeFlags: Readonly<Record<"claude" | "codex" | "grok", readonly string[]>>;
|
|
20
|
+
export type OriCatalogInput = {
|
|
21
|
+
/** IDs from Switcher's OpenRouter catalog; Ori does not own discovery. */
|
|
22
|
+
modelIds: readonly string[];
|
|
23
|
+
source: "switcher-openrouter";
|
|
24
|
+
/** A Switcher-generated Codex catalog, appended after Ori's provider config. */
|
|
25
|
+
codexModelCatalogPath?: string;
|
|
26
|
+
};
|
|
27
|
+
export type OriHarnessAvailability = {
|
|
28
|
+
kind: string;
|
|
29
|
+
displayName?: string;
|
|
30
|
+
installed: boolean;
|
|
31
|
+
path?: string;
|
|
32
|
+
};
|
|
33
|
+
export type OriContract = {
|
|
34
|
+
executable: string;
|
|
35
|
+
version: string;
|
|
36
|
+
harnesses: OriHarnessAvailability[];
|
|
37
|
+
};
|
|
38
|
+
export type OriEnvironment = NodeJS.ProcessEnv & {
|
|
39
|
+
OPENROUTER_API_KEY?: string;
|
|
40
|
+
ORI_FORCE_OPENROUTER_API_KEY?: string;
|
|
41
|
+
ORI_REQUIRE_LOGIN?: string;
|
|
42
|
+
};
|
|
43
|
+
export type OriLaunchRequest = {
|
|
44
|
+
target: OriTarget;
|
|
45
|
+
provider: string;
|
|
46
|
+
providerBaseUrl?: string;
|
|
47
|
+
protocol?: OriProtocol;
|
|
48
|
+
catalog?: OriCatalogInput;
|
|
49
|
+
model: string;
|
|
50
|
+
args?: string[];
|
|
51
|
+
reasoningEffort?: OriReasoningEffort;
|
|
52
|
+
};
|
|
53
|
+
export type OriLaunchPlan = {
|
|
54
|
+
executable: string;
|
|
55
|
+
args: string[];
|
|
56
|
+
env: Record<string, string>;
|
|
57
|
+
target: OriTarget;
|
|
58
|
+
provider: "openrouter";
|
|
59
|
+
model: string;
|
|
60
|
+
warnings: string[];
|
|
61
|
+
};
|
|
62
|
+
export declare class OriBackendError extends Error {
|
|
63
|
+
readonly code: string;
|
|
64
|
+
constructor(code: string, message: string);
|
|
65
|
+
}
|
|
66
|
+
export declare function assertOriLoginAllowed(environment: NodeJS.ProcessEnv): void;
|
|
67
|
+
/** Read Ori version and launchable harness inventory without auth or mutation. */
|
|
68
|
+
export declare function inspectOri(options?: {
|
|
69
|
+
executable?: string;
|
|
70
|
+
environment?: NodeJS.ProcessEnv;
|
|
71
|
+
cwd?: string;
|
|
72
|
+
}): Promise<OriContract>;
|
|
73
|
+
/** Keep the installed 0.12.x contract explicit; newer Ori builds need review. */
|
|
74
|
+
export declare function assertSupportedOriVersion(contract: OriContract): void;
|
|
75
|
+
/** Fail before Ori's interactive installer offer when the native binary is absent. */
|
|
76
|
+
export declare function requireOriHarness(contract: OriContract, target: OriTarget): OriHarnessAvailability;
|
|
77
|
+
/** Assert the exact OpenRouter provider boundary before constructing argv. */
|
|
78
|
+
export declare function oriProvider(id: string): OriProviderCatalogEntry;
|
|
79
|
+
/** Validate target, provider and catalog authority before resolving a key. */
|
|
80
|
+
export declare function validateOriLaunchRequest(request: OriLaunchRequest): void;
|
|
81
|
+
/**
|
|
82
|
+
* Construct an argv-only Ori launch. This function does no process start and
|
|
83
|
+
* does not read credentials; callers hand it the already-authorized environment.
|
|
84
|
+
*/
|
|
85
|
+
export declare function prepareOriLaunch(request: OriLaunchRequest & {
|
|
86
|
+
executable?: string;
|
|
87
|
+
environment?: NodeJS.ProcessEnv;
|
|
88
|
+
}): OriLaunchPlan;
|
|
89
|
+
export declare function oriLaunchWarnings(target: OriTarget): string[];
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { type ProviderInput, type ProviderPreset, type Profile } from "./domain";
|
|
2
|
+
type Protocol = ProviderInput["protocol"];
|
|
3
|
+
export declare const providerPresets: readonly ProviderPreset[];
|
|
4
|
+
export declare function getProviderPreset(id: string): {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
credentialAliases: string[];
|
|
8
|
+
protocols: {
|
|
9
|
+
protocol: "anthropic-messages" | "openai-responses" | "openai-chat" | "gemini-generate-content";
|
|
10
|
+
authStyle: "bearer" | "x-api-key" | "api-key";
|
|
11
|
+
catalogFormat: "openai" | "ollama" | "mistral" | "together" | "fireworks" | "dashscope" | "gemini" | "none";
|
|
12
|
+
modelsPath: string;
|
|
13
|
+
notes: string[];
|
|
14
|
+
baseUrl?: string | undefined;
|
|
15
|
+
catalogBaseUrl?: string | undefined;
|
|
16
|
+
catalogAuthStyle?: "bearer" | "x-api-key" | "api-key" | "none" | undefined;
|
|
17
|
+
}[];
|
|
18
|
+
sources: string[];
|
|
19
|
+
verification: "documented";
|
|
20
|
+
credentialEnv?: string | undefined;
|
|
21
|
+
};
|
|
22
|
+
export type PresetOptions = {
|
|
23
|
+
id?: string;
|
|
24
|
+
protocol?: Protocol;
|
|
25
|
+
harness?: Profile["harness"];
|
|
26
|
+
baseUrl?: string;
|
|
27
|
+
credentialEnv?: string;
|
|
28
|
+
authStyle?: "bearer" | "x-api-key" | "api-key";
|
|
29
|
+
catalogBaseUrl?: string;
|
|
30
|
+
catalogCredentialEnv?: string;
|
|
31
|
+
catalogAuthStyle?: "bearer" | "x-api-key" | "api-key" | "none";
|
|
32
|
+
modelsPath?: string;
|
|
33
|
+
catalogFormat?: ProviderInput["catalogFormat"];
|
|
34
|
+
catalogAccountId?: string;
|
|
35
|
+
};
|
|
36
|
+
export declare function providerFromPreset(presetId: string, options?: PresetOptions): {
|
|
37
|
+
id: string;
|
|
38
|
+
name: string;
|
|
39
|
+
baseUrl: string;
|
|
40
|
+
protocol: "anthropic-messages" | "openai-responses" | "openai-chat" | "gemini-generate-content";
|
|
41
|
+
authStyle: "bearer" | "x-api-key" | "api-key";
|
|
42
|
+
modelsPath: string;
|
|
43
|
+
manualModels: {
|
|
44
|
+
id: string;
|
|
45
|
+
name: string;
|
|
46
|
+
description?: string | undefined;
|
|
47
|
+
available?: boolean | undefined;
|
|
48
|
+
contextWindow?: number | undefined;
|
|
49
|
+
maxOutputTokens?: number | undefined;
|
|
50
|
+
inputModalities?: string[] | undefined;
|
|
51
|
+
outputModalities?: string[] | undefined;
|
|
52
|
+
supportedParameters?: string[] | undefined;
|
|
53
|
+
supportedGenerationMethods?: string[] | undefined;
|
|
54
|
+
}[];
|
|
55
|
+
credentialEnv?: string | undefined;
|
|
56
|
+
catalogBaseUrl?: string | undefined;
|
|
57
|
+
catalogFormat?: "openai" | "ollama" | "mistral" | "together" | "fireworks" | "dashscope" | "gemini" | "none" | undefined;
|
|
58
|
+
catalogAuthStyle?: "bearer" | "x-api-key" | "api-key" | "none" | undefined;
|
|
59
|
+
catalogCredentialEnv?: string | undefined;
|
|
60
|
+
catalogAccountId?: string | undefined;
|
|
61
|
+
};
|
|
62
|
+
/** Resolve an alias only for the preset's exact credential reference and origin. */
|
|
63
|
+
export declare function providerCredential(provider: ProviderInput, env?: NodeJS.ProcessEnv): string | undefined;
|
|
64
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { SwitcherClient } from "./sdk";
|
|
2
|
+
import type { CatalogCredentialResolver } from "./catalog";
|
|
3
|
+
export declare function switcherHome(env?: NodeJS.ProcessEnv): string;
|
|
4
|
+
export declare function privateDirectory(path: string): Promise<void>;
|
|
5
|
+
/** Data access always uses HTTP, including the per-command owned local service. */
|
|
6
|
+
export declare function openCliRuntime(env?: NodeJS.ProcessEnv, resolveCredential?: CatalogCredentialResolver): Promise<{
|
|
7
|
+
client: SwitcherClient;
|
|
8
|
+
mode: "remote";
|
|
9
|
+
providerEnv: {
|
|
10
|
+
[k: string]: string | undefined;
|
|
11
|
+
};
|
|
12
|
+
close: () => Promise<void>;
|
|
13
|
+
} | {
|
|
14
|
+
client: SwitcherClient;
|
|
15
|
+
mode: "local";
|
|
16
|
+
providerEnv: {
|
|
17
|
+
[k: string]: string | undefined;
|
|
18
|
+
};
|
|
19
|
+
close: () => Promise<void>;
|
|
20
|
+
}>;
|
package/dist/sdk.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { components } from "./generated/api";
|
|
2
|
+
export { providerFromPreset } from "./presets";
|
|
3
|
+
export type ProviderPreset = components["schemas"]["ProviderPreset"];
|
|
2
4
|
export type ProviderInput = components["schemas"]["ProviderInput"];
|
|
3
5
|
export type Provider = components["schemas"]["Provider"];
|
|
4
6
|
export type ProfileInput = components["schemas"]["ProfileInput"];
|
|
@@ -34,23 +36,63 @@ export declare class SwitcherClient {
|
|
|
34
36
|
idempotencyKey?: string;
|
|
35
37
|
}): Promise<T>;
|
|
36
38
|
private query;
|
|
39
|
+
health(): Promise<{
|
|
40
|
+
status: "ok" | "degraded" | "unavailable";
|
|
41
|
+
version: string;
|
|
42
|
+
backend: "sqlite" | "postgresql";
|
|
43
|
+
}>;
|
|
44
|
+
ready(): Promise<{
|
|
45
|
+
ready: boolean;
|
|
46
|
+
reason?: string;
|
|
47
|
+
}>;
|
|
48
|
+
version(): Promise<{
|
|
49
|
+
version: string;
|
|
50
|
+
}>;
|
|
51
|
+
listProviderPresets(): Promise<{
|
|
52
|
+
data: ProviderPreset[];
|
|
53
|
+
}>;
|
|
54
|
+
getProviderPreset(id: string): Promise<{
|
|
55
|
+
id: string;
|
|
56
|
+
name: string;
|
|
57
|
+
credentialEnv?: string;
|
|
58
|
+
credentialAliases: string[];
|
|
59
|
+
protocols: {
|
|
60
|
+
protocol: "anthropic-messages" | "openai-responses" | "openai-chat" | "gemini-generate-content";
|
|
61
|
+
baseUrl?: string;
|
|
62
|
+
authStyle: "bearer" | "x-api-key" | "api-key";
|
|
63
|
+
catalogBaseUrl?: string;
|
|
64
|
+
catalogFormat: "openai" | "ollama" | "mistral" | "together" | "fireworks" | "dashscope" | "gemini" | "none";
|
|
65
|
+
catalogAuthStyle?: "bearer" | "x-api-key" | "api-key" | "none";
|
|
66
|
+
modelsPath: string;
|
|
67
|
+
notes: string[];
|
|
68
|
+
}[];
|
|
69
|
+
sources: string[];
|
|
70
|
+
verification: "documented";
|
|
71
|
+
}>;
|
|
37
72
|
listProviders(options?: {}): Promise<Page<{
|
|
38
73
|
id: string;
|
|
39
74
|
name: string;
|
|
40
75
|
baseUrl: string;
|
|
41
|
-
protocol: "anthropic-messages" | "openai-responses" | "openai-chat";
|
|
76
|
+
protocol: "anthropic-messages" | "openai-responses" | "openai-chat" | "gemini-generate-content";
|
|
42
77
|
credentialEnv?: string;
|
|
43
|
-
authStyle: "bearer" | "x-api-key";
|
|
78
|
+
authStyle: "bearer" | "x-api-key" | "api-key";
|
|
79
|
+
catalogBaseUrl?: string;
|
|
80
|
+
catalogFormat?: "openai" | "ollama" | "mistral" | "together" | "fireworks" | "dashscope" | "gemini" | "none";
|
|
81
|
+
catalogAuthStyle?: "bearer" | "x-api-key" | "api-key" | "none";
|
|
82
|
+
catalogCredentialEnv?: string;
|
|
83
|
+
catalogAccountId?: string;
|
|
44
84
|
modelsPath: string;
|
|
45
85
|
manualModels: {
|
|
46
86
|
id: string;
|
|
47
87
|
name: string;
|
|
48
88
|
description?: string;
|
|
89
|
+
available?: boolean;
|
|
49
90
|
contextWindow?: number;
|
|
50
91
|
maxOutputTokens?: number;
|
|
51
92
|
inputModalities?: string[];
|
|
52
93
|
outputModalities?: string[];
|
|
53
94
|
supportedParameters?: string[];
|
|
95
|
+
supportedGenerationMethods?: string[];
|
|
54
96
|
}[];
|
|
55
97
|
version: number;
|
|
56
98
|
updatedAt: string;
|
|
@@ -59,19 +101,26 @@ export declare class SwitcherClient {
|
|
|
59
101
|
id: string;
|
|
60
102
|
name: string;
|
|
61
103
|
baseUrl: string;
|
|
62
|
-
protocol: "anthropic-messages" | "openai-responses" | "openai-chat";
|
|
104
|
+
protocol: "anthropic-messages" | "openai-responses" | "openai-chat" | "gemini-generate-content";
|
|
63
105
|
credentialEnv?: string;
|
|
64
|
-
authStyle: "bearer" | "x-api-key";
|
|
106
|
+
authStyle: "bearer" | "x-api-key" | "api-key";
|
|
107
|
+
catalogBaseUrl?: string;
|
|
108
|
+
catalogFormat?: "openai" | "ollama" | "mistral" | "together" | "fireworks" | "dashscope" | "gemini" | "none";
|
|
109
|
+
catalogAuthStyle?: "bearer" | "x-api-key" | "api-key" | "none";
|
|
110
|
+
catalogCredentialEnv?: string;
|
|
111
|
+
catalogAccountId?: string;
|
|
65
112
|
modelsPath: string;
|
|
66
113
|
manualModels: {
|
|
67
114
|
id: string;
|
|
68
115
|
name: string;
|
|
69
116
|
description?: string;
|
|
117
|
+
available?: boolean;
|
|
70
118
|
contextWindow?: number;
|
|
71
119
|
maxOutputTokens?: number;
|
|
72
120
|
inputModalities?: string[];
|
|
73
121
|
outputModalities?: string[];
|
|
74
122
|
supportedParameters?: string[];
|
|
123
|
+
supportedGenerationMethods?: string[];
|
|
75
124
|
}[];
|
|
76
125
|
version: number;
|
|
77
126
|
updatedAt: string;
|
|
@@ -80,19 +129,26 @@ export declare class SwitcherClient {
|
|
|
80
129
|
id: string;
|
|
81
130
|
name: string;
|
|
82
131
|
baseUrl: string;
|
|
83
|
-
protocol: "anthropic-messages" | "openai-responses" | "openai-chat";
|
|
132
|
+
protocol: "anthropic-messages" | "openai-responses" | "openai-chat" | "gemini-generate-content";
|
|
84
133
|
credentialEnv?: string;
|
|
85
|
-
authStyle: "bearer" | "x-api-key";
|
|
134
|
+
authStyle: "bearer" | "x-api-key" | "api-key";
|
|
135
|
+
catalogBaseUrl?: string;
|
|
136
|
+
catalogFormat?: "openai" | "ollama" | "mistral" | "together" | "fireworks" | "dashscope" | "gemini" | "none";
|
|
137
|
+
catalogAuthStyle?: "bearer" | "x-api-key" | "api-key" | "none";
|
|
138
|
+
catalogCredentialEnv?: string;
|
|
139
|
+
catalogAccountId?: string;
|
|
86
140
|
modelsPath: string;
|
|
87
141
|
manualModels: {
|
|
88
142
|
id: string;
|
|
89
143
|
name: string;
|
|
90
144
|
description?: string;
|
|
145
|
+
available?: boolean;
|
|
91
146
|
contextWindow?: number;
|
|
92
147
|
maxOutputTokens?: number;
|
|
93
148
|
inputModalities?: string[];
|
|
94
149
|
outputModalities?: string[];
|
|
95
150
|
supportedParameters?: string[];
|
|
151
|
+
supportedGenerationMethods?: string[];
|
|
96
152
|
}[];
|
|
97
153
|
version: number;
|
|
98
154
|
updatedAt: string;
|
|
@@ -101,19 +157,26 @@ export declare class SwitcherClient {
|
|
|
101
157
|
id: string;
|
|
102
158
|
name: string;
|
|
103
159
|
baseUrl: string;
|
|
104
|
-
protocol: "anthropic-messages" | "openai-responses" | "openai-chat";
|
|
160
|
+
protocol: "anthropic-messages" | "openai-responses" | "openai-chat" | "gemini-generate-content";
|
|
105
161
|
credentialEnv?: string;
|
|
106
|
-
authStyle: "bearer" | "x-api-key";
|
|
162
|
+
authStyle: "bearer" | "x-api-key" | "api-key";
|
|
163
|
+
catalogBaseUrl?: string;
|
|
164
|
+
catalogFormat?: "openai" | "ollama" | "mistral" | "together" | "fireworks" | "dashscope" | "gemini" | "none";
|
|
165
|
+
catalogAuthStyle?: "bearer" | "x-api-key" | "api-key" | "none";
|
|
166
|
+
catalogCredentialEnv?: string;
|
|
167
|
+
catalogAccountId?: string;
|
|
107
168
|
modelsPath: string;
|
|
108
169
|
manualModels: {
|
|
109
170
|
id: string;
|
|
110
171
|
name: string;
|
|
111
172
|
description?: string;
|
|
173
|
+
available?: boolean;
|
|
112
174
|
contextWindow?: number;
|
|
113
175
|
maxOutputTokens?: number;
|
|
114
176
|
inputModalities?: string[];
|
|
115
177
|
outputModalities?: string[];
|
|
116
178
|
supportedParameters?: string[];
|
|
179
|
+
supportedGenerationMethods?: string[];
|
|
117
180
|
}[];
|
|
118
181
|
version: number;
|
|
119
182
|
updatedAt: string;
|
|
@@ -126,11 +189,13 @@ export declare class SwitcherClient {
|
|
|
126
189
|
id: string;
|
|
127
190
|
name: string;
|
|
128
191
|
description?: string;
|
|
192
|
+
available?: boolean;
|
|
129
193
|
contextWindow?: number;
|
|
130
194
|
maxOutputTokens?: number;
|
|
131
195
|
inputModalities?: string[];
|
|
132
196
|
outputModalities?: string[];
|
|
133
197
|
supportedParameters?: string[];
|
|
198
|
+
supportedGenerationMethods?: string[];
|
|
134
199
|
}[];
|
|
135
200
|
refreshedAt: string;
|
|
136
201
|
source: "remote" | "manual";
|
|
@@ -140,11 +205,13 @@ export declare class SwitcherClient {
|
|
|
140
205
|
id: string;
|
|
141
206
|
name: string;
|
|
142
207
|
description?: string;
|
|
208
|
+
available?: boolean;
|
|
143
209
|
contextWindow?: number;
|
|
144
210
|
maxOutputTokens?: number;
|
|
145
211
|
inputModalities?: string[];
|
|
146
212
|
outputModalities?: string[];
|
|
147
213
|
supportedParameters?: string[];
|
|
214
|
+
supportedGenerationMethods?: string[];
|
|
148
215
|
codingEligible: boolean;
|
|
149
216
|
}[];
|
|
150
217
|
total: number;
|
|
@@ -157,7 +224,7 @@ export declare class SwitcherClient {
|
|
|
157
224
|
id: string;
|
|
158
225
|
name: string;
|
|
159
226
|
providerId: string;
|
|
160
|
-
harness: "claude" | "codex" | "grok" | "opencode2";
|
|
227
|
+
harness: "claude" | "codex" | "grok" | "opencode" | "opencode2" | "pi" | "omp" | "dsh" | "cline" | "hermes" | "prime-agent" | "gemini" | "aider" | "kilo";
|
|
161
228
|
model: string;
|
|
162
229
|
version: number;
|
|
163
230
|
updatedAt: string;
|
|
@@ -166,7 +233,7 @@ export declare class SwitcherClient {
|
|
|
166
233
|
id: string;
|
|
167
234
|
name: string;
|
|
168
235
|
providerId: string;
|
|
169
|
-
harness: "claude" | "codex" | "grok" | "opencode2";
|
|
236
|
+
harness: "claude" | "codex" | "grok" | "opencode" | "opencode2" | "pi" | "omp" | "dsh" | "cline" | "hermes" | "prime-agent" | "gemini" | "aider" | "kilo";
|
|
170
237
|
model: string;
|
|
171
238
|
version: number;
|
|
172
239
|
updatedAt: string;
|
|
@@ -175,7 +242,7 @@ export declare class SwitcherClient {
|
|
|
175
242
|
id: string;
|
|
176
243
|
name: string;
|
|
177
244
|
providerId: string;
|
|
178
|
-
harness: "claude" | "codex" | "grok" | "opencode2";
|
|
245
|
+
harness: "claude" | "codex" | "grok" | "opencode" | "opencode2" | "pi" | "omp" | "dsh" | "cline" | "hermes" | "prime-agent" | "gemini" | "aider" | "kilo";
|
|
179
246
|
model: string;
|
|
180
247
|
version: number;
|
|
181
248
|
updatedAt: string;
|
|
@@ -184,7 +251,7 @@ export declare class SwitcherClient {
|
|
|
184
251
|
id: string;
|
|
185
252
|
name: string;
|
|
186
253
|
providerId: string;
|
|
187
|
-
harness: "claude" | "codex" | "grok" | "opencode2";
|
|
254
|
+
harness: "claude" | "codex" | "grok" | "opencode" | "opencode2" | "pi" | "omp" | "dsh" | "cline" | "hermes" | "prime-agent" | "gemini" | "aider" | "kilo";
|
|
188
255
|
model: string;
|
|
189
256
|
version: number;
|
|
190
257
|
updatedAt: string;
|
|
@@ -197,19 +264,26 @@ export declare class SwitcherClient {
|
|
|
197
264
|
id: string;
|
|
198
265
|
name: string;
|
|
199
266
|
baseUrl: string;
|
|
200
|
-
protocol: "anthropic-messages" | "openai-responses" | "openai-chat";
|
|
267
|
+
protocol: "anthropic-messages" | "openai-responses" | "openai-chat" | "gemini-generate-content";
|
|
201
268
|
credentialEnv?: string;
|
|
202
|
-
authStyle: "bearer" | "x-api-key";
|
|
269
|
+
authStyle: "bearer" | "x-api-key" | "api-key";
|
|
270
|
+
catalogBaseUrl?: string;
|
|
271
|
+
catalogFormat?: "openai" | "ollama" | "mistral" | "together" | "fireworks" | "dashscope" | "gemini" | "none";
|
|
272
|
+
catalogAuthStyle?: "bearer" | "x-api-key" | "api-key" | "none";
|
|
273
|
+
catalogCredentialEnv?: string;
|
|
274
|
+
catalogAccountId?: string;
|
|
203
275
|
modelsPath: string;
|
|
204
276
|
manualModels: {
|
|
205
277
|
id: string;
|
|
206
278
|
name: string;
|
|
207
279
|
description?: string;
|
|
280
|
+
available?: boolean;
|
|
208
281
|
contextWindow?: number;
|
|
209
282
|
maxOutputTokens?: number;
|
|
210
283
|
inputModalities?: string[];
|
|
211
284
|
outputModalities?: string[];
|
|
212
285
|
supportedParameters?: string[];
|
|
286
|
+
supportedGenerationMethods?: string[];
|
|
213
287
|
}[];
|
|
214
288
|
version: number;
|
|
215
289
|
updatedAt: string;
|
|
@@ -218,7 +292,7 @@ export declare class SwitcherClient {
|
|
|
218
292
|
id: string;
|
|
219
293
|
name: string;
|
|
220
294
|
providerId: string;
|
|
221
|
-
harness: "claude" | "codex" | "grok" | "opencode2";
|
|
295
|
+
harness: "claude" | "codex" | "grok" | "opencode" | "opencode2" | "pi" | "omp" | "dsh" | "cline" | "hermes" | "prime-agent" | "gemini" | "aider" | "kilo";
|
|
222
296
|
model: string;
|
|
223
297
|
version: number;
|
|
224
298
|
updatedAt: string;
|
|
@@ -228,11 +302,13 @@ export declare class SwitcherClient {
|
|
|
228
302
|
id: string;
|
|
229
303
|
name: string;
|
|
230
304
|
description?: string;
|
|
305
|
+
available?: boolean;
|
|
231
306
|
contextWindow?: number;
|
|
232
307
|
maxOutputTokens?: number;
|
|
233
308
|
inputModalities?: string[];
|
|
234
309
|
outputModalities?: string[];
|
|
235
310
|
supportedParameters?: string[];
|
|
311
|
+
supportedGenerationMethods?: string[];
|
|
236
312
|
}[];
|
|
237
313
|
refreshedAt: string;
|
|
238
314
|
source: "remote" | "manual";
|
|
@@ -242,7 +318,7 @@ export declare class SwitcherClient {
|
|
|
242
318
|
}>;
|
|
243
319
|
listRuns(options?: {}): Promise<Page<{
|
|
244
320
|
profileId: string;
|
|
245
|
-
harness: "claude" | "codex" | "grok" | "opencode2";
|
|
321
|
+
harness: "claude" | "codex" | "grok" | "opencode" | "opencode2" | "pi" | "omp" | "dsh" | "cline" | "hermes" | "prime-agent" | "gemini" | "aider" | "kilo";
|
|
246
322
|
model: string;
|
|
247
323
|
planToken: string;
|
|
248
324
|
version: number;
|
|
@@ -258,7 +334,7 @@ export declare class SwitcherClient {
|
|
|
258
334
|
}>>;
|
|
259
335
|
getRun(id: string): Promise<{
|
|
260
336
|
profileId: string;
|
|
261
|
-
harness: "claude" | "codex" | "grok" | "opencode2";
|
|
337
|
+
harness: "claude" | "codex" | "grok" | "opencode" | "opencode2" | "pi" | "omp" | "dsh" | "cline" | "hermes" | "prime-agent" | "gemini" | "aider" | "kilo";
|
|
262
338
|
model: string;
|
|
263
339
|
planToken: string;
|
|
264
340
|
version: number;
|
|
@@ -274,7 +350,7 @@ export declare class SwitcherClient {
|
|
|
274
350
|
}>;
|
|
275
351
|
createRun(input: components["schemas"]["RunInput"], idempotencyKey?: string): Promise<{
|
|
276
352
|
profileId: string;
|
|
277
|
-
harness: "claude" | "codex" | "grok" | "opencode2";
|
|
353
|
+
harness: "claude" | "codex" | "grok" | "opencode" | "opencode2" | "pi" | "omp" | "dsh" | "cline" | "hermes" | "prime-agent" | "gemini" | "aider" | "kilo";
|
|
278
354
|
model: string;
|
|
279
355
|
planToken: string;
|
|
280
356
|
version: number;
|
|
@@ -293,7 +369,7 @@ export declare class SwitcherClient {
|
|
|
293
369
|
exitCode: number;
|
|
294
370
|
}, idempotencyKey?: string): Promise<{
|
|
295
371
|
profileId: string;
|
|
296
|
-
harness: "claude" | "codex" | "grok" | "opencode2";
|
|
372
|
+
harness: "claude" | "codex" | "grok" | "opencode" | "opencode2" | "pi" | "omp" | "dsh" | "cline" | "hermes" | "prime-agent" | "gemini" | "aider" | "kilo";
|
|
297
373
|
model: string;
|
|
298
374
|
planToken: string;
|
|
299
375
|
version: number;
|