@chopin-ai/harness-pi 0.2.0 → 0.3.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/dist/acp.d.ts +1 -8
- package/dist/acp.js +7 -10
- package/dist/acp.js.map +1 -1
- package/dist/auth.d.ts +1 -9
- package/dist/auth.js +3 -23
- package/dist/auth.js.map +1 -1
- package/dist/bridge.js +2 -2
- package/dist/bridge.js.map +1 -1
- package/dist/client-context.d.ts +7 -0
- package/dist/client-context.js +20 -0
- package/dist/client-context.js.map +1 -0
- package/dist/continuation.d.ts +34 -0
- package/dist/continuation.js +171 -0
- package/dist/continuation.js.map +1 -0
- package/dist/http.d.ts +3 -3
- package/dist/http.js +8 -67
- package/dist/http.js.map +1 -1
- package/dist/idle-compaction.d.ts +25 -0
- package/dist/idle-compaction.js +173 -0
- package/dist/idle-compaction.js.map +1 -0
- package/dist/index.d.ts +6 -2
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/layer.d.ts +14 -3
- package/dist/layer.js +65 -10
- package/dist/layer.js.map +1 -1
- package/dist/mcp.d.ts +14 -0
- package/dist/mcp.js +77 -4
- package/dist/mcp.js.map +1 -1
- package/dist/mode.js +2 -0
- package/dist/mode.js.map +1 -1
- package/dist/protocol.d.ts +293 -1
- package/dist/protocol.js +176 -3
- package/dist/protocol.js.map +1 -1
- package/dist/server.d.ts +9 -7
- package/dist/server.js +155 -22
- package/dist/server.js.map +1 -1
- package/dist/service.d.ts +42 -2
- package/dist/service.js +169 -27
- package/dist/service.js.map +1 -1
- package/dist/submissions.d.ts +1 -1
- package/dist/submissions.js +2 -1
- package/dist/submissions.js.map +1 -1
- package/package.json +10 -9
package/dist/server.d.ts
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { type Host } from "@earendil-works/chord";
|
|
2
2
|
import { type Authenticate } from "./auth.js";
|
|
3
|
-
import { type Principal } from "./protocol.js";
|
|
3
|
+
import { type LoopControl, type Principal } from "./protocol.js";
|
|
4
4
|
import type { AgentService } from "./service.js";
|
|
5
|
-
/** Serves the client protocol for `service
|
|
6
|
-
export declare function createAgentHost(service: AgentService): Host<Principal>;
|
|
5
|
+
/** Serves the client protocol for `service`, and `loop` if it has one; every object belongs to the owner that asked for it. */
|
|
6
|
+
export declare function createAgentHost(service: AgentService, loop?: LoopControl): Host<Principal>;
|
|
7
7
|
export interface ListenOptions {
|
|
8
8
|
authenticate: Authenticate;
|
|
9
9
|
/** 0, the default, picks a free port. */
|
|
10
10
|
port?: number;
|
|
11
|
-
/** Loopback by default; anything wider needs TLS in front. */
|
|
11
|
+
/** Loopback by default; anything wider needs TLS in front, or a private network. */
|
|
12
12
|
hostname?: string;
|
|
13
|
-
/**
|
|
14
|
-
|
|
13
|
+
/** Whether the service has work in hand, as `GET /status` tells it; whether its agents are working by default. */
|
|
14
|
+
busy?: () => Promise<boolean>;
|
|
15
|
+
/** The owner's RSI loop, which clients may then read and decide for. */
|
|
16
|
+
loop?: LoopControl;
|
|
15
17
|
}
|
|
16
18
|
export interface Listening {
|
|
17
19
|
readonly port: number;
|
|
@@ -21,5 +23,5 @@ export interface Listening {
|
|
|
21
23
|
readonly reachedAt: number;
|
|
22
24
|
close(): Promise<void>;
|
|
23
25
|
}
|
|
24
|
-
/** Serves the client protocol over WebSocket, and
|
|
26
|
+
/** Serves the client protocol over WebSocket, and over HTTP only whether it is busy, on one port. */
|
|
25
27
|
export declare function listen(service: AgentService, options: ListenOptions): Promise<Listening>;
|
package/dist/server.js
CHANGED
|
@@ -6,15 +6,16 @@ import { configure, InboxDoc } from "@earendil-works/pi-durable";
|
|
|
6
6
|
import { Type } from "typebox";
|
|
7
7
|
import { WebSocketServer } from "ws";
|
|
8
8
|
import { credentialOf } from "./auth.js";
|
|
9
|
-
import {
|
|
9
|
+
import { statusHandler } from "./http.js";
|
|
10
|
+
import { ClientContextDoc } from "./client-context.js";
|
|
10
11
|
import { ModeDoc, NameDoc } from "./mode.js";
|
|
11
|
-
import { userText } from "./acp.js";
|
|
12
|
-
import { Conversation, Conversations, HOST, ModeSchema, RunningSchema, SubmissionSchema } from "./protocol.js";
|
|
12
|
+
import { isRunning, userText } from "./acp.js";
|
|
13
|
+
import { Conversation, Conversations, CredentialSchema, Credentials, HOST, Loop, Mcp, McpServerSchema, ModeSchema, REWIND_KIND, RunningSchema, SubmissionSchema, } from "./protocol.js";
|
|
13
14
|
import { backoff } from "./backoff.js";
|
|
14
15
|
import { shellEntry } from "./shell.js";
|
|
15
16
|
import { lost, merge, outcomeOf, progressOf, RECENT_SUBMISSIONS } from "./submissions.js";
|
|
16
|
-
/** Serves the client protocol for `service
|
|
17
|
-
export function createAgentHost(service) {
|
|
17
|
+
/** Serves the client protocol for `service`, and `loop` if it has one; every object belongs to the owner that asked for it. */
|
|
18
|
+
export function createAgentHost(service, loop) {
|
|
18
19
|
const host = createHost({
|
|
19
20
|
name: HOST,
|
|
20
21
|
self: { kind: "host" },
|
|
@@ -54,6 +55,7 @@ export function createAgentHost(service) {
|
|
|
54
55
|
return conversation.id;
|
|
55
56
|
},
|
|
56
57
|
summaries: (ctx) => service.summaries(owner, durable(ctx)),
|
|
58
|
+
models: () => service.modelChoices(owner),
|
|
57
59
|
fork: async ({ conversation, at }, ctx) => {
|
|
58
60
|
const fork = await service.fork(owner, conversation, at, durable(ctx));
|
|
59
61
|
if (fork === undefined)
|
|
@@ -178,6 +180,19 @@ export function createAgentHost(service) {
|
|
|
178
180
|
.finally(() => awaited.delete(Number(id)))
|
|
179
181
|
.then(reread, reread);
|
|
180
182
|
}
|
|
183
|
+
// A message taken in, as `submit` and `requeue` both put one, followed to its end like every submission.
|
|
184
|
+
const admit = async (content, steer, request, ctx) => {
|
|
185
|
+
const submission = await opened.value.conversation.submit({
|
|
186
|
+
type: "input",
|
|
187
|
+
content,
|
|
188
|
+
...(steer && { whenBusy: "steer" }),
|
|
189
|
+
...(request !== undefined && { requestId: request }),
|
|
190
|
+
}, durable(ctx));
|
|
191
|
+
submissions.change(ctx, (draft) => void (draft[String(submission.id)] ??= { status: "pending" }));
|
|
192
|
+
awaitEnd(submission.id, submission);
|
|
193
|
+
reread();
|
|
194
|
+
return submission.id;
|
|
195
|
+
};
|
|
181
196
|
return {
|
|
182
197
|
variant: "owner",
|
|
183
198
|
view,
|
|
@@ -185,18 +200,60 @@ export function createAgentHost(service) {
|
|
|
185
200
|
name,
|
|
186
201
|
submissions,
|
|
187
202
|
running,
|
|
188
|
-
submit: async ({ text, steer, request }, ctx) => {
|
|
203
|
+
submit: async ({ text, images = [], steer, request }, ctx) => {
|
|
189
204
|
service.touch(owner);
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
205
|
+
return admit(messageContent(text, images), steer === true, request, ctx);
|
|
206
|
+
},
|
|
207
|
+
retry: async ({ text, images = [] }, ctx) => {
|
|
208
|
+
service.touch(owner);
|
|
209
|
+
const { conversation } = opened.value;
|
|
210
|
+
if (isRunning(opened.value.view.value))
|
|
211
|
+
throw invalid("busy", "the agent is still at work; stop it first");
|
|
212
|
+
const { entries } = await conversation.context(durable(ctx));
|
|
213
|
+
const at = entries.findLastIndex((entry) => entry.kind === "pi.user");
|
|
214
|
+
const asked = entries[at]?.model?.find((message) => message.role === "user");
|
|
215
|
+
if (asked?.role !== "user")
|
|
216
|
+
throw invalid("nothing_to_retry", "no message has been sent yet");
|
|
217
|
+
const content = text === undefined && images.length === 0 ? asked.content : messageContent(text ?? "", images);
|
|
218
|
+
await conversation.submit({
|
|
219
|
+
type: "write",
|
|
220
|
+
entry: { kind: REWIND_KIND, edits: entries.slice(at).map((entry) => ({ target: entry.id, action: "omit" })) },
|
|
195
221
|
}, durable(ctx));
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
222
|
+
return admit(content, false, undefined, ctx);
|
|
223
|
+
},
|
|
224
|
+
reset: async ({ handoff }, ctx) => {
|
|
225
|
+
service.touch(owner);
|
|
226
|
+
await opened.value.conversation.reset(handoff, durable(ctx));
|
|
227
|
+
},
|
|
228
|
+
requeue: async ({ queue }, ctx) => {
|
|
229
|
+
service.touch(owner);
|
|
230
|
+
const { harness, conversation } = opened.value;
|
|
231
|
+
const queued = ((await harness.snapshot(InboxDoc, conversation.id, durable(ctx)))?.items ?? []).filter((item) => item.mode !== "write");
|
|
232
|
+
const byId = new Map(queued.map((item) => [Number(item.id), item]));
|
|
233
|
+
if (new Set(queue.map(({ id }) => id)).size !== queue.length)
|
|
234
|
+
throw invalid("listed_twice", "the new queue lists each message once");
|
|
235
|
+
// One no longer queued, as the agent took it up since the client looked, stays sent and is passed over.
|
|
236
|
+
const wanted = queue.flatMap(({ id, text, steer }) => {
|
|
237
|
+
const item = byId.get(id);
|
|
238
|
+
if (item === undefined)
|
|
239
|
+
return [];
|
|
240
|
+
const content = item.content;
|
|
241
|
+
return [{ item, content: text === undefined ? content : retext(content, text), steer: steer ?? item.mode === "steer" }];
|
|
242
|
+
});
|
|
243
|
+
// What comes before the first change stays queued as it is; from there on, what can still be taken back is, and
|
|
244
|
+
// is put again as wanted. One the agent took up meanwhile stays sent.
|
|
245
|
+
let from = 0;
|
|
246
|
+
while (from < queued.length && wanted[from]?.item === queued[from] && wanted[from]?.content === queued[from]?.content
|
|
247
|
+
&& wanted[from]?.steer === (queued[from]?.mode === "steer"))
|
|
248
|
+
from++;
|
|
249
|
+
const taken = new Set();
|
|
250
|
+
for (const item of queued.slice(from)) {
|
|
251
|
+
if ((await harness.abortSubmission(item.id, durable(ctx), conversation.id).catch(() => undefined)) === "aborted")
|
|
252
|
+
taken.add(item);
|
|
253
|
+
}
|
|
254
|
+
for (const { item, content, steer } of wanted.slice(from))
|
|
255
|
+
if (taken.has(item))
|
|
256
|
+
await admit(content, steer, undefined, ctx);
|
|
200
257
|
},
|
|
201
258
|
abort: async (_args, ctx) => {
|
|
202
259
|
service.touch(owner);
|
|
@@ -254,6 +311,11 @@ export function createAgentHost(service) {
|
|
|
254
311
|
}, durable(ctx));
|
|
255
312
|
name.replace(ctx, next);
|
|
256
313
|
},
|
|
314
|
+
setContext: async ({ text }, ctx) => {
|
|
315
|
+
await opened.value.conversation.commit(async (tx) => {
|
|
316
|
+
(await tx.doc(ClientContextDoc, opened.value.conversation.id)).text = text;
|
|
317
|
+
}, durable(ctx));
|
|
318
|
+
},
|
|
257
319
|
setThinking: async ({ level }, ctx) => {
|
|
258
320
|
service.touch(owner);
|
|
259
321
|
const model = view.value.docs["pi.agent"]?.model;
|
|
@@ -275,11 +337,69 @@ export function createAgentHost(service) {
|
|
|
275
337
|
},
|
|
276
338
|
};
|
|
277
339
|
});
|
|
340
|
+
host.serve(Credentials, (_input, principal, self) => {
|
|
341
|
+
const owner = ownerOf(principal);
|
|
342
|
+
const listed = async () => (await service.credentials(owner)).map(({ providerId, type }) => ({ provider: providerId, type }));
|
|
343
|
+
const providers = self.state("providers", Type.Array(CredentialSchema), { init: listed });
|
|
344
|
+
const settled = async (problem, ctx) => {
|
|
345
|
+
if (problem !== undefined)
|
|
346
|
+
throw invalid("credential_refused", problem);
|
|
347
|
+
providers.replace(ctx, await listed());
|
|
348
|
+
};
|
|
349
|
+
return {
|
|
350
|
+
variant: "owner",
|
|
351
|
+
providers,
|
|
352
|
+
setKey: async ({ provider, key }, ctx) => settled(await service.setKey(owner, provider, key), ctx),
|
|
353
|
+
remove: async ({ provider }, ctx) => settled(await service.removeKey(owner, provider), ctx),
|
|
354
|
+
};
|
|
355
|
+
});
|
|
356
|
+
host.serve(Loop, (_input, principal) => {
|
|
357
|
+
ownerOf(principal);
|
|
358
|
+
const control = () => {
|
|
359
|
+
if (loop === undefined)
|
|
360
|
+
throw invalid("no_loop", "this service runs no RSI loop");
|
|
361
|
+
return loop;
|
|
362
|
+
};
|
|
363
|
+
const done = (problem) => {
|
|
364
|
+
if (problem !== undefined)
|
|
365
|
+
throw invalid("loop_refused", problem);
|
|
366
|
+
};
|
|
367
|
+
return {
|
|
368
|
+
variant: "owner",
|
|
369
|
+
standing: () => control().standing(),
|
|
370
|
+
changes: () => control().changes(),
|
|
371
|
+
undo: async ({ id }) => done(await control().undo(id)),
|
|
372
|
+
corrections: () => control().corrections(),
|
|
373
|
+
answer: async ({ key, learn }) => done(await control().answer(key, learn)),
|
|
374
|
+
held: () => control().held(),
|
|
375
|
+
decide: async ({ id, approve }) => done(await control().decide(id, approve)),
|
|
376
|
+
settings: () => control().settings(),
|
|
377
|
+
setSettings: (change) => control().setSettings(change),
|
|
378
|
+
};
|
|
379
|
+
});
|
|
380
|
+
host.serve(Mcp, (_input, principal, self) => {
|
|
381
|
+
const owner = ownerOf(principal);
|
|
382
|
+
const servers = self.state("servers", Type.Array(McpServerSchema), { init: () => service.mcpServers(owner) });
|
|
383
|
+
return {
|
|
384
|
+
variant: "owner",
|
|
385
|
+
servers,
|
|
386
|
+
set: async ({ name, url, headers = {} }, ctx) => {
|
|
387
|
+
const problem = await service.setMcpServer(owner, name, url, headers);
|
|
388
|
+
if (problem !== undefined)
|
|
389
|
+
throw invalid("mcp_refused", problem);
|
|
390
|
+
servers.replace(ctx, service.mcpServers(owner));
|
|
391
|
+
},
|
|
392
|
+
remove: async ({ name }, ctx) => {
|
|
393
|
+
await service.removeMcpServer(owner, name);
|
|
394
|
+
servers.replace(ctx, service.mcpServers(owner));
|
|
395
|
+
},
|
|
396
|
+
};
|
|
397
|
+
});
|
|
278
398
|
return host;
|
|
279
399
|
}
|
|
280
|
-
/** Serves the client protocol over WebSocket, and
|
|
400
|
+
/** Serves the client protocol over WebSocket, and over HTTP only whether it is busy, on one port. */
|
|
281
401
|
export async function listen(service, options) {
|
|
282
|
-
const host = createAgentHost(service);
|
|
402
|
+
const host = createAgentHost(service, options.loop);
|
|
283
403
|
let reachedAt = Date.now();
|
|
284
404
|
// Only someone who may use the service keeps it from being idle.
|
|
285
405
|
const authenticated = async (credential) => {
|
|
@@ -288,9 +408,11 @@ export async function listen(service, options) {
|
|
|
288
408
|
reachedAt = Date.now();
|
|
289
409
|
return principal;
|
|
290
410
|
};
|
|
291
|
-
const
|
|
411
|
+
const status = statusHandler(options.authenticate, options.busy ?? (async () => (await service.working()).length > 0));
|
|
292
412
|
const http = createServer((request, response) => {
|
|
293
|
-
|
|
413
|
+
if (URL.parse(request.url ?? "/", "http://localhost")?.pathname !== "/status")
|
|
414
|
+
return void response.writeHead(404).end("not found");
|
|
415
|
+
status(request, response).catch(() => {
|
|
294
416
|
if (!response.headersSent)
|
|
295
417
|
response.writeHead(500);
|
|
296
418
|
response.end();
|
|
@@ -320,9 +442,10 @@ export async function listen(service, options) {
|
|
|
320
442
|
};
|
|
321
443
|
}
|
|
322
444
|
/**
|
|
323
|
-
*
|
|
324
|
-
*
|
|
325
|
-
*
|
|
445
|
+
* A browser always says which page opened a WebSocket, and a page cannot set that itself. The service serves no
|
|
446
|
+
* page, so a page of another site is refused even when it holds a credential; only a page at the address the
|
|
447
|
+
* service was reached by, or the one a proxy in front names, may connect. Clients that are not browsers, a proxy
|
|
448
|
+
* among them, send no origin.
|
|
326
449
|
*/
|
|
327
450
|
function sameOrigin(request) {
|
|
328
451
|
const origin = request.headers.origin;
|
|
@@ -346,4 +469,14 @@ function ownerOf(principal) {
|
|
|
346
469
|
throw forbidden();
|
|
347
470
|
return principal.owner;
|
|
348
471
|
}
|
|
472
|
+
/** What a message says and shows, as the model takes it; refused when it does neither. */
|
|
473
|
+
function messageContent(text, images) {
|
|
474
|
+
if (text === "" && images.length === 0)
|
|
475
|
+
throw invalid("empty_message", "a message says something, shows something, or both");
|
|
476
|
+
return images.length === 0 ? text : [...(text === "" ? [] : [{ type: "text", text }]), ...images.map((image) => ({ type: "image", ...image }))];
|
|
477
|
+
}
|
|
478
|
+
/** `content` saying `text` instead, still showing what it shows. */
|
|
479
|
+
function retext(content, text) {
|
|
480
|
+
return typeof content === "string" ? text : [{ type: "text", text }, ...content.filter((block) => block.type !== "text")];
|
|
481
|
+
}
|
|
349
482
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/service.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { Context } from "@earendil-works/chord";
|
|
2
|
-
import { type Models } from "@earendil-works/pi-ai";
|
|
2
|
+
import { type CredentialInfo, type CredentialStore, type Models } from "@earendil-works/pi-ai";
|
|
3
3
|
import { Harness, type AgentChange, type Conversation, type ConversationId, type Extension, type ModelRef, type SubmissionRecord } from "@earendil-works/pi-durable";
|
|
4
4
|
import { type Layer, type TaskRun, type TranscriptEntry } from "@chopin-ai/core";
|
|
5
5
|
import { type WorkspaceProvider } from "@chopin-ai/workspace";
|
|
6
|
-
import
|
|
6
|
+
import { type LayerSource } from "./layer.js";
|
|
7
|
+
import { type Loaded, type McpServerState, type ModelChoices, type Summary } from "./protocol.js";
|
|
7
8
|
import { type ShellRun } from "./shell.js";
|
|
8
9
|
/** Where the workspace image keeps the execution daemon. */
|
|
9
10
|
export declare const DAEMON_PATH = "/usr/local/bin/pi-env";
|
|
@@ -13,10 +14,14 @@ export interface AgentServiceOptions {
|
|
|
13
14
|
workspaces: WorkspaceProvider;
|
|
14
15
|
/** The models an owner's agent may use, carrying that owner's credentials. */
|
|
15
16
|
models: (owner: string) => Models;
|
|
17
|
+
/** Where an owner's models read their credentials, which clients may then set; absent, they cannot. */
|
|
18
|
+
credentials?: (owner: string) => CredentialStore;
|
|
16
19
|
/** What a new conversation of an owner runs with, such as its model; asked again for each, so a default may change. */
|
|
17
20
|
agent?: AgentChange | ((owner: string) => Promise<AgentChange | undefined>);
|
|
18
21
|
/** The portable layer every agent loads. */
|
|
19
22
|
layer?: Layer;
|
|
23
|
+
/** The loop's versions laid over `layer`; each conversation keeps the ones in use when it was made. */
|
|
24
|
+
layerVersions?: LayerSource;
|
|
20
25
|
/** Installed after the coding tools and the layer. */
|
|
21
26
|
extensions?: readonly Extension[];
|
|
22
27
|
/** Failures that do not fail the call at hand, such as an unreachable MCP server. */
|
|
@@ -26,6 +31,12 @@ export interface AgentServiceOptions {
|
|
|
26
31
|
/** Stops workspaces whose owner has been idle this long, keeping their volumes; never when absent. */
|
|
27
32
|
reclaimAfterMs?: number;
|
|
28
33
|
}
|
|
34
|
+
/** A conversation that changed, as `changedSince` gives it. */
|
|
35
|
+
export interface Changed {
|
|
36
|
+
id: number;
|
|
37
|
+
modified: number;
|
|
38
|
+
transcript: TranscriptEntry[];
|
|
39
|
+
}
|
|
29
40
|
/**
|
|
30
41
|
* Hosts one durable harness per owner. The agent and its store live here; its tools reach the owner's workspace
|
|
31
42
|
* only through the execution daemon, which starts the workspace on first use and again after it was reclaimed.
|
|
@@ -54,6 +65,12 @@ export declare class AgentService {
|
|
|
54
65
|
loaded(owner: string, context: Context): Promise<Loaded>;
|
|
55
66
|
/** A conversation of the owner's whole, as transcript lines. */
|
|
56
67
|
transcript(owner: string, conversation: Conversation, context: Context): Promise<TranscriptEntry[]>;
|
|
68
|
+
/**
|
|
69
|
+
* For readers outside the service, such as the loop that learns from them: the owner's top-level conversations
|
|
70
|
+
* changed since the times in `since`, by id, with when each last changed and its transcript. It reads only an agent
|
|
71
|
+
* already open, so it neither opens a store nor counts as the owner at work; none while the agent is closed.
|
|
72
|
+
*/
|
|
73
|
+
changedSince(owner: string, since: Readonly<Record<string, number>>, context: Context): Promise<Changed[]>;
|
|
57
74
|
/** Runs a command of the owner's in their workspace, as the agent's shell tool runs its own. */
|
|
58
75
|
shell(owner: string, command: string, onOutput: (kept: string) => Promise<unknown>, context: Context): Promise<Omit<ShellRun, "command" | "excluded">>;
|
|
59
76
|
/** Why the owner's agent cannot think at `level` with `model`, or undefined when it can. */
|
|
@@ -64,6 +81,29 @@ export declare class AgentService {
|
|
|
64
81
|
* refreshed meanwhile.
|
|
65
82
|
*/
|
|
66
83
|
modelProblem(owner: string, model: ModelRef): Promise<string | undefined>;
|
|
84
|
+
/** The models the owner's agent can use now, those whose providers have credentials, and its model for a new conversation. */
|
|
85
|
+
modelChoices(owner: string): Promise<ModelChoices>;
|
|
86
|
+
/**
|
|
87
|
+
* The MCP servers the owner's clients set, each with how many tools it offers, or why it offers none yet. Asking
|
|
88
|
+
* opens nothing: an agent not open now offers none of their tools.
|
|
89
|
+
*/
|
|
90
|
+
mcpServers(owner: string): McpServerState[];
|
|
91
|
+
/**
|
|
92
|
+
* Serves an MCP server a client sets for the owner, in place of any it set by that name, kept in memory alone;
|
|
93
|
+
* else why it cannot: the layer has one by that name, or the address is no web address.
|
|
94
|
+
*/
|
|
95
|
+
setMcpServer(owner: string, name: string, url: string, headers: Readonly<Record<string, string>>): Promise<string | undefined>;
|
|
96
|
+
/** Stops serving an MCP server a client set for the owner. */
|
|
97
|
+
removeMcpServer(owner: string, name: string): Promise<void>;
|
|
98
|
+
/** The providers the owner holds a credential for, never the secrets; none where clients cannot set them. */
|
|
99
|
+
credentials(owner: string): Promise<CredentialInfo[]>;
|
|
100
|
+
/**
|
|
101
|
+
* Keeps `key` as the owner's credential for `provider`, so the next request reaches it with the key; else why it
|
|
102
|
+
* cannot: credentials here are not the clients' to set, or no such provider takes an API key.
|
|
103
|
+
*/
|
|
104
|
+
setKey(owner: string, provider: string, key: string): Promise<string | undefined>;
|
|
105
|
+
/** Forgets the owner's credential for `provider`; else why it cannot, as for `setKey`. */
|
|
106
|
+
removeKey(owner: string, provider: string): Promise<string | undefined>;
|
|
67
107
|
/** Hears of each conversation this service makes, until the returned function is called. */
|
|
68
108
|
onConversation(listener: (owner: string, conversation: number) => void): () => void;
|
|
69
109
|
/**
|