chivgent 0.18.1 → 1.0.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 +67 -34
- package/README.zh-CN.md +57 -27
- package/dist/cli-options.d.ts.map +1 -1
- package/dist/cli-options.js +5 -0
- package/dist/cli-options.js.map +1 -1
- package/dist/cli.js +13 -25
- package/dist/cli.js.map +1 -1
- package/dist/providers/deferred-client.d.ts +2 -1
- package/dist/providers/deferred-client.d.ts.map +1 -1
- package/dist/providers/deferred-client.js +4 -0
- package/dist/providers/deferred-client.js.map +1 -1
- package/dist/providers/interactive.d.ts +31 -0
- package/dist/providers/interactive.d.ts.map +1 -0
- package/dist/providers/interactive.js +184 -0
- package/dist/providers/interactive.js.map +1 -0
- package/dist/remote/repl.d.ts.map +1 -1
- package/dist/remote/repl.js +6 -5
- package/dist/remote/repl.js.map +1 -1
- package/dist/repl.d.ts +32 -4
- package/dist/repl.d.ts.map +1 -1
- package/dist/repl.js +209 -29
- package/dist/repl.js.map +1 -1
- package/dist/tui/input.d.ts +6 -0
- package/dist/tui/input.d.ts.map +1 -1
- package/dist/tui/input.js +98 -12
- package/dist/tui/input.js.map +1 -1
- package/dist/tui/menu.d.ts +26 -0
- package/dist/tui/menu.d.ts.map +1 -0
- package/dist/tui/menu.js +75 -0
- package/dist/tui/menu.js.map +1 -0
- package/dist/tui/text.d.ts +2 -0
- package/dist/tui/text.d.ts.map +1 -1
- package/dist/tui/text.js +19 -0
- package/dist/tui/text.js.map +1 -1
- package/dist/tui/view.d.ts.map +1 -1
- package/dist/tui/view.js +57 -23
- package/dist/tui/view.js.map +1 -1
- package/dist/tui/welcome.d.ts +2 -1
- package/dist/tui/welcome.d.ts.map +1 -1
- package/dist/tui/welcome.js +26 -24
- package/dist/tui/welcome.js.map +1 -1
- package/dist/update.d.ts +13 -0
- package/dist/update.d.ts.map +1 -0
- package/dist/update.js +145 -0
- package/dist/update.js.map +1 -0
- package/package.json +4 -2
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { CliOptions } from "../cli-options.js";
|
|
2
|
+
import type { SignIn, ProviderControl, ProviderSelection } from "../repl.js";
|
|
3
|
+
import { DeferredLLMClient } from "./deferred-client.js";
|
|
4
|
+
import { type ProviderRegistry } from "./registry.js";
|
|
5
|
+
/** The active Provider is mutable; the Agent and compactor keep the same LLM proxy. */
|
|
6
|
+
export declare class InteractiveProvider implements SignIn, ProviderControl {
|
|
7
|
+
private readonly options;
|
|
8
|
+
private readonly llm;
|
|
9
|
+
private readonly registry;
|
|
10
|
+
private readonly environment;
|
|
11
|
+
readonly authFile: string;
|
|
12
|
+
private active;
|
|
13
|
+
private readonly choices;
|
|
14
|
+
private ignoreStartupKey;
|
|
15
|
+
constructor(options: CliOptions, llm: DeferredLLMClient, registry?: ProviderRegistry, environment?: NodeJS.ProcessEnv, authFile?: string);
|
|
16
|
+
get provider(): string;
|
|
17
|
+
get model(): string | undefined;
|
|
18
|
+
ready(): boolean;
|
|
19
|
+
providerIds(): readonly string[];
|
|
20
|
+
needsApiKey(): Promise<boolean>;
|
|
21
|
+
unavailableMessage(): string;
|
|
22
|
+
describe(): string;
|
|
23
|
+
select(argument: string): Promise<ProviderSelection>;
|
|
24
|
+
changeModel(model: string): Promise<ProviderSelection>;
|
|
25
|
+
changeEndpoint(baseURL: string): Promise<ProviderSelection>;
|
|
26
|
+
submit(apiKey: string): Promise<string | undefined>;
|
|
27
|
+
private configure;
|
|
28
|
+
private credentialResolver;
|
|
29
|
+
private clientOptions;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=interactive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../src/providers/interactive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKpD,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAgB/E,uFAAuF;AACvF,qBAAa,mBAAoB,YAAW,MAAM,EAAE,eAAe;IAO/D,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAT9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,gBAAgB,CAAS;IAEjC,YACmB,OAAO,EAAE,UAAU,EACnB,GAAG,EAAE,iBAAiB,EACtB,QAAQ,GAAE,gBAA0C,EACpD,WAAW,GAAE,MAAM,CAAC,UAAwB,EAC7D,QAAQ,GAAE,MAAqC,EAMhD;IAED,IAAI,QAAQ,IAAI,MAAM,CAAiC;IACvD,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAA8B;IAC7D,KAAK,IAAI,OAAO,CAA2B;IAC3C,WAAW,IAAI,SAAS,MAAM,EAAE,CAAgC;IAC1D,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAEpC;IACD,kBAAkB,IAAI,MAAM,CAO3B;IAED,QAAQ,IAAI,MAAM,CAYjB;IAEK,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAMzD;IAEK,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAM3D;IAEK,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAYhE;IAEK,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA6BxD;YAEa,SAAS;IAqCvB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,aAAa;CAMtB"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { CredentialResolver } from "../auth/credentials.js";
|
|
2
|
+
import { EnvCredentialSource } from "../auth/env-credentials.js";
|
|
3
|
+
import { defaultAuthFile, FileCredentialSource, writeApiKey } from "../auth/file-credentials.js";
|
|
4
|
+
import { RuntimeCredentialSource } from "../auth/runtime-credentials.js";
|
|
5
|
+
import { createConfiguredClient } from "./client.js";
|
|
6
|
+
import { DeferredLLMClient } from "./deferred-client.js";
|
|
7
|
+
import { defaultProviderRegistry } from "./registry.js";
|
|
8
|
+
function firstValue(environment, names) {
|
|
9
|
+
for (const name of names) {
|
|
10
|
+
const value = environment[name];
|
|
11
|
+
if (value !== undefined && value.length > 0)
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
/** The active Provider is mutable; the Agent and compactor keep the same LLM proxy. */
|
|
17
|
+
export class InteractiveProvider {
|
|
18
|
+
options;
|
|
19
|
+
llm;
|
|
20
|
+
registry;
|
|
21
|
+
environment;
|
|
22
|
+
authFile;
|
|
23
|
+
active;
|
|
24
|
+
choices = new Map();
|
|
25
|
+
ignoreStartupKey = false;
|
|
26
|
+
constructor(options, llm, registry = defaultProviderRegistry, environment = process.env, authFile = defaultAuthFile(environment)) {
|
|
27
|
+
this.options = options;
|
|
28
|
+
this.llm = llm;
|
|
29
|
+
this.registry = registry;
|
|
30
|
+
this.environment = environment;
|
|
31
|
+
this.authFile = authFile;
|
|
32
|
+
this.active = { provider: options.provider, ...(options.model === undefined ? {} : { model: options.model }),
|
|
33
|
+
...(options.baseURL === undefined ? {} : { baseURL: options.baseURL }) };
|
|
34
|
+
this.choices.set(options.provider, this.active);
|
|
35
|
+
}
|
|
36
|
+
get provider() { return this.active.provider; }
|
|
37
|
+
get model() { return this.active.model; }
|
|
38
|
+
ready() { return this.llm.ready; }
|
|
39
|
+
providerIds() { return this.registry.ids(); }
|
|
40
|
+
async needsApiKey() {
|
|
41
|
+
return (await this.credentialResolver(this.active.provider).resolve(this.registry.get(this.active.provider))) === undefined;
|
|
42
|
+
}
|
|
43
|
+
unavailableMessage() {
|
|
44
|
+
const definition = this.registry.get(this.active.provider);
|
|
45
|
+
const missing = [this.active.model === undefined ? "/model MODEL" : undefined,
|
|
46
|
+
definition.requiresBaseURL && this.active.baseURL === undefined ? "/endpoint URL" : undefined]
|
|
47
|
+
.filter(Boolean).join(" and ");
|
|
48
|
+
return missing ? `Configure ${this.active.provider} with ${missing}.`
|
|
49
|
+
: `No API key for ${this.active.provider}. Run /login or use /provider to switch.`;
|
|
50
|
+
}
|
|
51
|
+
describe() {
|
|
52
|
+
const current = `${this.active.provider} / ${this.active.model ?? "model needed"}`;
|
|
53
|
+
const entries = this.registry.ids().map((id) => {
|
|
54
|
+
const definition = this.registry.get(id);
|
|
55
|
+
const model = this.choices.get(id)?.model ?? firstValue(this.environment, definition.modelEnvKeys)
|
|
56
|
+
?? definition.defaultModel ?? "model required";
|
|
57
|
+
const configuredURL = this.choices.get(id)?.baseURL ?? firstValue(this.environment, definition.baseUrlEnvKeys)
|
|
58
|
+
?? definition.defaultBaseURL;
|
|
59
|
+
const url = definition.requiresBaseURL && configuredURL === undefined ? ", base URL required" : "";
|
|
60
|
+
return ` ${id === this.active.provider ? "●" : " "} ${id.padEnd(18)}${model}${url}`;
|
|
61
|
+
});
|
|
62
|
+
return `Current: ${current}${this.llm.ready ? " · ready" : " · setup needed"}\n${entries.join("\n")}\nUse /provider NAME to switch, /model MODEL to set its model, /endpoint URL for a custom endpoint, and /login for its key.\n`;
|
|
63
|
+
}
|
|
64
|
+
async select(argument) {
|
|
65
|
+
const id = argument.trim();
|
|
66
|
+
if (!this.registry.has(id)) {
|
|
67
|
+
return { ok: false, message: "Unknown Provider. Use /provider to see the available choices.\n" };
|
|
68
|
+
}
|
|
69
|
+
return this.configure(id);
|
|
70
|
+
}
|
|
71
|
+
async changeModel(model) {
|
|
72
|
+
const value = model.trim();
|
|
73
|
+
if (value.length === 0 || /\s/.test(value)) {
|
|
74
|
+
return { ok: false, message: "Use /model MODEL (one model id).\n" };
|
|
75
|
+
}
|
|
76
|
+
return this.configure(this.active.provider, value, this.active.baseURL);
|
|
77
|
+
}
|
|
78
|
+
async changeEndpoint(baseURL) {
|
|
79
|
+
const value = baseURL.trim();
|
|
80
|
+
if (!this.registry.get(this.active.provider).requiresBaseURL) {
|
|
81
|
+
return { ok: false, message: "The current Provider has a built-in endpoint. Switch to openai-compatible first.\n" };
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
const url = new URL(value);
|
|
85
|
+
if (url.protocol !== "http:" && url.protocol !== "https:")
|
|
86
|
+
throw new Error();
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return { ok: false, message: "Use /endpoint with an http:// or https:// URL.\n" };
|
|
90
|
+
}
|
|
91
|
+
return this.configure(this.active.provider, this.active.model, value);
|
|
92
|
+
}
|
|
93
|
+
async submit(apiKey) {
|
|
94
|
+
const definition = this.registry.get(this.active.provider);
|
|
95
|
+
if (this.active.model === undefined || (definition.requiresBaseURL && this.active.baseURL === undefined)) {
|
|
96
|
+
try {
|
|
97
|
+
await writeApiKey(this.active.provider, apiKey, this.authFile);
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
return error instanceof Error ? error.message : String(error);
|
|
101
|
+
}
|
|
102
|
+
if (this.active.provider === this.options.provider)
|
|
103
|
+
this.ignoreStartupKey = true;
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
const nextOptions = this.clientOptions(this.active, apiKey);
|
|
107
|
+
let client;
|
|
108
|
+
try {
|
|
109
|
+
client = await createConfiguredClient(nextOptions, this.registry, new CredentialResolver([
|
|
110
|
+
new RuntimeCredentialSource(apiKey),
|
|
111
|
+
]));
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
return error instanceof Error ? error.message : String(error);
|
|
115
|
+
}
|
|
116
|
+
if (typeof client === "string")
|
|
117
|
+
return client;
|
|
118
|
+
try {
|
|
119
|
+
await writeApiKey(this.active.provider, apiKey, this.authFile);
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
return error instanceof Error ? error.message : String(error);
|
|
123
|
+
}
|
|
124
|
+
if (this.active.provider === this.options.provider)
|
|
125
|
+
this.ignoreStartupKey = true;
|
|
126
|
+
this.llm.set(client);
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
async configure(id, requestedModel, requestedBaseURL) {
|
|
130
|
+
const definition = this.registry.get(id);
|
|
131
|
+
const previous = this.choices.get(id);
|
|
132
|
+
const model = requestedModel ?? previous?.model ?? firstValue(this.environment, definition.modelEnvKeys)
|
|
133
|
+
?? definition.defaultModel;
|
|
134
|
+
const baseURL = requestedBaseURL ?? previous?.baseURL ?? firstValue(this.environment, definition.baseUrlEnvKeys)
|
|
135
|
+
?? definition.defaultBaseURL;
|
|
136
|
+
const choice = { provider: id, model, ...(baseURL === undefined ? {} : { baseURL }) };
|
|
137
|
+
if (model === undefined || (definition.requiresBaseURL && baseURL === undefined)) {
|
|
138
|
+
this.active = choice;
|
|
139
|
+
this.choices.set(id, choice);
|
|
140
|
+
const missing = [model === undefined ? "/model MODEL" : undefined,
|
|
141
|
+
definition.requiresBaseURL && baseURL === undefined ? "/endpoint URL" : undefined].filter(Boolean).join(" and ");
|
|
142
|
+
this.llm.clear(`Configure ${id} with ${missing}.`);
|
|
143
|
+
return { ok: true, message: `Selected ${id}. Set ${missing} to continue.\n` };
|
|
144
|
+
}
|
|
145
|
+
let client;
|
|
146
|
+
try {
|
|
147
|
+
client = await createConfiguredClient(this.clientOptions(choice), this.registry, this.credentialResolver(id));
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
151
|
+
return { ok: false, message: `Could not select ${id}: ${message}\n` };
|
|
152
|
+
}
|
|
153
|
+
if (typeof client === "string" && !client.startsWith(`No API key for ${id}.`)) {
|
|
154
|
+
return { ok: false, message: `Could not select ${id}: ${client}\n` };
|
|
155
|
+
}
|
|
156
|
+
this.active = choice;
|
|
157
|
+
this.choices.set(id, choice);
|
|
158
|
+
if (typeof client === "string") {
|
|
159
|
+
const guidance = `API key needed for ${id}.`;
|
|
160
|
+
this.llm.clear(guidance);
|
|
161
|
+
return { ok: true, message: `Selected ${id} / ${model}. ${guidance}\n` };
|
|
162
|
+
}
|
|
163
|
+
this.llm.set(client);
|
|
164
|
+
return { ok: true, message: `Selected ${id} / ${model}. Ready for your next prompt.\n` };
|
|
165
|
+
}
|
|
166
|
+
credentialResolver(id) {
|
|
167
|
+
// A switched compatible endpoint must not inherit OpenAI's own API key.
|
|
168
|
+
const credentialEnvironment = id === "openai-compatible" && this.options.provider !== id
|
|
169
|
+
? { ...this.environment, OPENAI_API_KEY: undefined }
|
|
170
|
+
: this.environment;
|
|
171
|
+
return new CredentialResolver([
|
|
172
|
+
new RuntimeCredentialSource(id === this.options.provider && !this.ignoreStartupKey ? this.options.apiKey : undefined),
|
|
173
|
+
new EnvCredentialSource(credentialEnvironment),
|
|
174
|
+
new FileCredentialSource(this.authFile),
|
|
175
|
+
]);
|
|
176
|
+
}
|
|
177
|
+
clientOptions(choice, apiKey) {
|
|
178
|
+
const { apiKey: _startupKey, model: _startupModel, baseURL: _startupURL, ...rest } = this.options;
|
|
179
|
+
return { ...rest, provider: choice.provider, ...(choice.model === undefined ? {} : { model: choice.model }),
|
|
180
|
+
...(choice.baseURL === undefined ? {} : { baseURL: choice.baseURL }),
|
|
181
|
+
...(apiKey === undefined ? {} : { apiKey }) };
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=interactive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../src/providers/interactive.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../src/remote/repl.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAWD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../../src/remote/repl.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAWD;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,MAAM,CAAC,CAuFjB"}
|
package/dist/remote/repl.js
CHANGED
|
@@ -6,7 +6,7 @@ const HELP = `Commands:
|
|
|
6
6
|
/tools List the tools the server offers
|
|
7
7
|
/exit Leave this client (the server keeps running)
|
|
8
8
|
|
|
9
|
-
Anything else is sent to the server. Ctrl+C interrupts
|
|
9
|
+
Anything else is sent to the server. Ctrl+C interrupts a running answer; at the prompt it detaches.
|
|
10
10
|
`;
|
|
11
11
|
/**
|
|
12
12
|
* The interactive loop for an attached client.
|
|
@@ -26,10 +26,11 @@ export async function runRemoteRepl(options) {
|
|
|
26
26
|
prompt: REPL_PROMPT,
|
|
27
27
|
});
|
|
28
28
|
let running = false;
|
|
29
|
+
let interrupted = false;
|
|
29
30
|
readline.on("SIGINT", () => {
|
|
30
31
|
if (!running) {
|
|
31
|
-
|
|
32
|
-
readline.
|
|
32
|
+
interrupted = true;
|
|
33
|
+
readline.close();
|
|
33
34
|
return;
|
|
34
35
|
}
|
|
35
36
|
options.remote.interrupt();
|
|
@@ -39,7 +40,7 @@ export async function runRemoteRepl(options) {
|
|
|
39
40
|
`attached to ${summary.id}`,
|
|
40
41
|
`workspace: ${summary.cwd}`,
|
|
41
42
|
`capabilities: ${summary.capabilities.length === 0 ? "read-only" : summary.capabilities.join(" ")}`,
|
|
42
|
-
"Type /help for commands, Ctrl+D to detach.",
|
|
43
|
+
"Type /help for commands, Ctrl+C or Ctrl+D to detach.",
|
|
43
44
|
"",
|
|
44
45
|
"",
|
|
45
46
|
].join("\n"));
|
|
@@ -95,6 +96,6 @@ export async function runRemoteRepl(options) {
|
|
|
95
96
|
readline.prompt();
|
|
96
97
|
}
|
|
97
98
|
readline.close();
|
|
98
|
-
return 0;
|
|
99
|
+
return interrupted ? 130 : 0;
|
|
99
100
|
}
|
|
100
101
|
//# sourceMappingURL=repl.js.map
|
package/dist/remote/repl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repl.js","sourceRoot":"","sources":["../../src/remote/repl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAWzC,MAAM,IAAI,GAAG;;;;;;;CAOZ,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAA0B;IAE1B,MAAM,KAAK,GAAG,CAAC,IAAY,EAAQ,EAAE;QACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,eAAe,CAAC;QAC/B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,WAAW;KACpB,CAAC,CAAC;IAEH,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACzB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,
|
|
1
|
+
{"version":3,"file":"repl.js","sourceRoot":"","sources":["../../src/remote/repl.ts"],"names":[],"mappings":"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"}
|
package/dist/repl.d.ts
CHANGED
|
@@ -6,6 +6,16 @@ export type SlashCommandOutcome = "handled" | "exit" | "not-a-command"
|
|
|
6
6
|
/** The REPL runs the sign-in flow, which needs to read from the terminal. */
|
|
7
7
|
| {
|
|
8
8
|
readonly kind: "login";
|
|
9
|
+
readonly providerArgument: string;
|
|
10
|
+
} | {
|
|
11
|
+
readonly kind: "provider";
|
|
12
|
+
readonly argument: string;
|
|
13
|
+
} | {
|
|
14
|
+
readonly kind: "model";
|
|
15
|
+
readonly argument: string;
|
|
16
|
+
} | {
|
|
17
|
+
readonly kind: "endpoint";
|
|
18
|
+
readonly argument: string;
|
|
9
19
|
}
|
|
10
20
|
/** An extension command matched; the REPL runs it, since it may be async. */
|
|
11
21
|
| {
|
|
@@ -21,16 +31,34 @@ export interface SlashCommandContext {
|
|
|
21
31
|
readonly extensionCommands?: readonly RegisteredCommand[];
|
|
22
32
|
/** Present when this session can store a key; absent for a signed-in remote. */
|
|
23
33
|
readonly signIn?: SignIn;
|
|
34
|
+
readonly providers?: ProviderControl;
|
|
35
|
+
}
|
|
36
|
+
export interface ProviderSelection {
|
|
37
|
+
readonly ok: boolean;
|
|
38
|
+
readonly message: string;
|
|
39
|
+
}
|
|
40
|
+
export interface ProviderControl {
|
|
41
|
+
readonly provider: string;
|
|
42
|
+
readonly model?: string;
|
|
43
|
+
describe(): string;
|
|
44
|
+
unavailableMessage?(): string;
|
|
45
|
+
providerIds(): readonly string[];
|
|
46
|
+
select(argument: string): Promise<ProviderSelection>;
|
|
47
|
+
changeModel(model: string): Promise<ProviderSelection>;
|
|
48
|
+
changeEndpoint(url: string): Promise<ProviderSelection>;
|
|
24
49
|
}
|
|
25
50
|
export interface SignIn {
|
|
26
51
|
readonly provider: string;
|
|
27
52
|
readonly authFile: string;
|
|
28
53
|
/** Live check: /login can make this true part-way through a session. */
|
|
29
54
|
ready(): boolean;
|
|
55
|
+
/** Checks credentials even if the current model or endpoint is still incomplete. */
|
|
56
|
+
needsApiKey?(): Promise<boolean>;
|
|
30
57
|
/** Saves the key and puts it to use, or returns why it could not. */
|
|
31
58
|
submit(apiKey: string): Promise<string | undefined>;
|
|
59
|
+
unavailableMessage?(): string;
|
|
32
60
|
}
|
|
33
|
-
export declare const BUILT_IN_COMMANDS: readonly ["help", "session", "tools", "clear", "exit", "quit", "login"];
|
|
61
|
+
export declare const BUILT_IN_COMMANDS: readonly ["help", "session", "tools", "clear", "exit", "quit", "login", "provider", "model", "endpoint"];
|
|
34
62
|
/**
|
|
35
63
|
* Interprets one line of REPL input. Returns `not-a-command` when the line is
|
|
36
64
|
* an ordinary prompt for the model.
|
|
@@ -46,11 +74,11 @@ export interface ReplOptions {
|
|
|
46
74
|
readonly sessionFile?: string;
|
|
47
75
|
readonly extensionCommands?: readonly RegisteredCommand[];
|
|
48
76
|
readonly signIn?: SignIn;
|
|
77
|
+
readonly providers?: ProviderControl;
|
|
49
78
|
}
|
|
50
79
|
/**
|
|
51
|
-
* Reads prompts until the user leaves.
|
|
52
|
-
*
|
|
53
|
-
* session log survive an interrupt.
|
|
80
|
+
* Reads prompts until the user leaves. Ctrl+C cancels a running answer, keeping
|
|
81
|
+
* its transcript and log; at an idle prompt it closes the REPL.
|
|
54
82
|
*/
|
|
55
83
|
export declare function runRepl(options: ReplOptions): Promise<number>;
|
|
56
84
|
//# sourceMappingURL=repl.d.ts.map
|
package/dist/repl.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
|