@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/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`; every object belongs to the owner that asked for it. */
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
- /** A built web app to serve on the same port. */
14
- web?: string;
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 the web app over HTTP, on one port. */
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 { httpHandler } from "./http.js";
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`; every object belongs to the owner that asked for it. */
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
- const submission = await opened.value.conversation.submit({
191
- type: "input",
192
- content: text,
193
- ...(steer === true && { whenBusy: "steer" }),
194
- ...(request !== undefined && { requestId: request }),
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
- submissions.change(ctx, (draft) => void (draft[String(submission.id)] ??= { status: "pending" }));
197
- awaitEnd(submission.id, submission);
198
- reread();
199
- return submission.id;
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 the web app over HTTP, on one port. */
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 handle = httpHandler(authenticated, options.web);
411
+ const status = statusHandler(options.authenticate, options.busy ?? (async () => (await service.working()).length > 0));
292
412
  const http = createServer((request, response) => {
293
- handle(request, response).catch(() => {
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
- * Browsers attach the cookie to a WebSocket any page opens, and they always say which page that was. Only a page
324
- * this service served may connect, at the address it was reached by or the one a proxy in front names; a page
325
- * cannot set either header itself. Clients that are not browsers send no origin.
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
@@ -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 type { Loaded, Summary } from "./protocol.js";
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
  /**