@rivet-dev/pi 0.1.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/LICENSE +190 -0
  2. package/dist/actions.d.ts +1 -1
  3. package/dist/actions.d.ts.map +1 -1
  4. package/dist/actions.js +8 -10
  5. package/dist/actions.js.map +1 -1
  6. package/dist/actor-config.d.ts +33 -0
  7. package/dist/actor-config.d.ts.map +1 -0
  8. package/dist/actor-config.js +87 -0
  9. package/dist/actor-config.js.map +1 -0
  10. package/dist/actor-types.d.ts +34 -0
  11. package/dist/actor-types.d.ts.map +1 -0
  12. package/dist/actor-types.js +2 -0
  13. package/dist/actor-types.js.map +1 -0
  14. package/dist/actor.d.ts +17 -9
  15. package/dist/actor.d.ts.map +1 -1
  16. package/dist/actor.js +33 -68
  17. package/dist/actor.js.map +1 -1
  18. package/dist/credentials.d.ts.map +1 -1
  19. package/dist/credentials.js +2 -1
  20. package/dist/credentials.js.map +1 -1
  21. package/dist/drain.d.ts +12 -0
  22. package/dist/drain.d.ts.map +1 -0
  23. package/dist/drain.js +20 -0
  24. package/dist/drain.js.map +1 -0
  25. package/dist/durable/actions.d.ts +192 -0
  26. package/dist/durable/actions.d.ts.map +1 -0
  27. package/dist/durable/actions.js +289 -0
  28. package/dist/durable/actions.js.map +1 -0
  29. package/dist/durable/actor-sqlite.d.ts +10 -0
  30. package/dist/durable/actor-sqlite.d.ts.map +1 -0
  31. package/dist/durable/actor-sqlite.js +32 -0
  32. package/dist/durable/actor-sqlite.js.map +1 -0
  33. package/dist/durable/actor.d.ts +36 -0
  34. package/dist/durable/actor.d.ts.map +1 -0
  35. package/dist/durable/actor.js +107 -0
  36. package/dist/durable/actor.js.map +1 -0
  37. package/dist/durable/env.d.ts +13 -0
  38. package/dist/durable/env.d.ts.map +1 -0
  39. package/dist/durable/env.js +178 -0
  40. package/dist/durable/env.js.map +1 -0
  41. package/dist/durable/errors.d.ts +8 -0
  42. package/dist/durable/errors.d.ts.map +1 -0
  43. package/dist/durable/errors.js +19 -0
  44. package/dist/durable/errors.js.map +1 -0
  45. package/dist/durable/index.d.ts +5 -0
  46. package/dist/durable/index.d.ts.map +1 -0
  47. package/dist/durable/index.js +2 -0
  48. package/dist/durable/index.js.map +1 -0
  49. package/dist/durable/runtime.d.ts +92 -0
  50. package/dist/durable/runtime.d.ts.map +1 -0
  51. package/dist/durable/runtime.js +435 -0
  52. package/dist/durable/runtime.js.map +1 -0
  53. package/dist/durable/storage.d.ts +31 -0
  54. package/dist/durable/storage.d.ts.map +1 -0
  55. package/dist/durable/storage.js +53 -0
  56. package/dist/durable/storage.js.map +1 -0
  57. package/dist/durable/watches.d.ts +77 -0
  58. package/dist/durable/watches.d.ts.map +1 -0
  59. package/dist/durable/watches.js +245 -0
  60. package/dist/durable/watches.js.map +1 -0
  61. package/dist/index.d.ts +1 -1
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +1 -1
  64. package/dist/index.js.map +1 -1
  65. package/dist/models.d.ts +5 -0
  66. package/dist/models.d.ts.map +1 -1
  67. package/dist/models.js +13 -6
  68. package/dist/models.js.map +1 -1
  69. package/dist/runtime.d.ts +71 -6
  70. package/dist/runtime.d.ts.map +1 -1
  71. package/dist/runtime.js +276 -45
  72. package/dist/runtime.js.map +1 -1
  73. package/dist/sandbox.d.ts +9 -3
  74. package/dist/sandbox.d.ts.map +1 -1
  75. package/dist/sandbox.js +64 -25
  76. package/dist/sandbox.js.map +1 -1
  77. package/dist/storage.d.ts +18 -1
  78. package/dist/storage.d.ts.map +1 -1
  79. package/dist/storage.js +49 -0
  80. package/dist/storage.js.map +1 -1
  81. package/dist/tracing.d.ts +8 -0
  82. package/dist/tracing.d.ts.map +1 -1
  83. package/dist/tracing.js +36 -1
  84. package/dist/tracing.js.map +1 -1
  85. package/package.json +46 -15
package/dist/runtime.js CHANGED
@@ -1,12 +1,23 @@
1
1
  import { isAbsolute } from "node:path";
2
2
  import { createAgentSession, DefaultResourceLoader, getAgentDir, SessionManager, SettingsManager, } from "@earendil-works/pi-coding-agent";
3
+ import { UserError } from "rivetkit";
3
4
  import { SourceCredentialStore } from "./credentials.js";
4
5
  import { createActorModelRuntime, emptyCredentialStore, openingModel, } from "./models.js";
5
6
  import { createSandboxBashOperations, createSandboxTools } from "./sandbox.js";
6
- import { appendPiEntry, createPiSession, loadPiSandbox, loadPiSession, savePiSandbox, savePiSettings, toFileEntries, } from "./storage.js";
7
+ import { appendPiEntry, createPiSession, loadPiInterruptedRun, loadPiSandbox, loadPiSession, migratePiSession, savePiIdle, savePiRunning, savePiSandbox, savePiSettings, toFileEntries, } from "./storage.js";
8
+ function lazySandbox(c, provider) {
9
+ const lazy = {
10
+ current: undefined,
11
+ connect: () => (lazy.current ??= connectSandbox(c, provider).catch((error) => {
12
+ lazy.current = undefined;
13
+ throw error;
14
+ })),
15
+ };
16
+ return lazy;
17
+ }
7
18
  export const PI_RUNTIME = Symbol.for("@rivet-dev/pi/runtime");
8
19
  export function createPiRuntime() {
9
- return { writes: Promise.resolve() };
20
+ return { writes: Promise.resolve(), closing: false };
10
21
  }
11
22
  export function piRuntime(c) {
12
23
  const runtime = c.vars?.[PI_RUNTIME];
@@ -18,6 +29,9 @@ export function piRuntime(c) {
18
29
  /** Returns the actor's Pi session, opening it from SQLite on first use. */
19
30
  export function ensurePiSession(c, options) {
20
31
  const runtime = piRuntime(c);
32
+ if (runtime.closing) {
33
+ return Promise.reject(sessionClosed());
34
+ }
21
35
  if (!runtime.ready) {
22
36
  runtime.ready = openPiSession(c, runtime, options).catch((error) => {
23
37
  runtime.ready = undefined;
@@ -26,26 +40,89 @@ export function ensurePiSession(c, options) {
26
40
  }
27
41
  return runtime.ready;
28
42
  }
43
+ /**
44
+ * Runs the app's own action or hook with `c.pi` set to the session, then
45
+ * saves what it changed, such as the model, as the built-in actions do. Code
46
+ * that never reads `c.pi` runs even when the session cannot open; reading
47
+ * `c.pi` throws the open error. Shutdown hooks pass `opensSession: false`, so
48
+ * they use a session that is already open and never create a session or a
49
+ * sandbox only to close it.
50
+ */
51
+ export async function withPiSession(c, options, body, { opensSession = true } = {}) {
52
+ const runtime = piRuntime(c);
53
+ // Hooks such as onDisconnect still run after the session closed; only using c.pi fails.
54
+ if (runtime.closing)
55
+ return withUnavailablePi(c, sessionClosed(), body);
56
+ if (!opensSession && !runtime.ready) {
57
+ return withUnavailablePi(c, sessionNotOpen(), body);
58
+ }
59
+ let handle;
60
+ try {
61
+ handle = await ensurePiSession(c, options);
62
+ }
63
+ catch (error) {
64
+ c.log.warn({
65
+ msg: "pi session could not open; reading c.pi throws this error",
66
+ error,
67
+ });
68
+ return withUnavailablePi(c, error, body);
69
+ }
70
+ Object.defineProperty(c, "pi", { value: handle.session, configurable: true });
71
+ let result;
72
+ try {
73
+ result = await body();
74
+ }
75
+ catch (error) {
76
+ await persistPiState(c, handle).catch((writeError) => {
77
+ c.log.error({
78
+ msg: "pi state write failed after an app action error",
79
+ error: writeError,
80
+ });
81
+ });
82
+ throw error;
83
+ }
84
+ await persistPiState(c, handle);
85
+ return result;
86
+ }
87
+ /** Runs `body` with a `c.pi` that throws `error` when read. */
88
+ export function withUnavailablePi(c, error, body) {
89
+ Object.defineProperty(c, "pi", {
90
+ get: () => {
91
+ throw error;
92
+ },
93
+ configurable: true,
94
+ });
95
+ return body();
96
+ }
97
+ function sessionNotOpen() {
98
+ return new UserError("The Pi session is not open in this actor generation, so this shutdown hook cannot use c.pi.");
99
+ }
100
+ function sessionClosed() {
101
+ return new UserError("The Pi session is closed because the actor is stopping.");
102
+ }
29
103
  /** Pi's built-in tools, which all run on the actor host. */
30
- const PI_BUILT_IN_TOOLS = ["read", "bash", "powershell", "edit", "write", "grep", "find", "ls"];
104
+ const PI_BUILT_IN_TOOLS = [
105
+ "read",
106
+ "bash",
107
+ "powershell",
108
+ "edit",
109
+ "write",
110
+ "grep",
111
+ "find",
112
+ "ls",
113
+ ];
31
114
  async function openPiSession(c, runtime, options) {
32
115
  const { settings, sandbox: sandboxProvider, providers, apiKeys, model, scopedModels, credentials: credentialSource, ...sessionOptions } = options;
33
- const stored = await loadPiSession(c.db);
34
- const connected = sandboxProvider
35
- ? await connectSandbox(c, sandboxProvider)
36
- : undefined;
37
- const sandbox = connected?.sandbox;
38
- const cwd = sandbox?.cwd ?? stored?.cwd ?? sessionOptions.cwd ?? process.cwd();
116
+ const loaded = await loadPiSession(c.db);
117
+ const stored = loaded && (await migratePiSession(c.db, loaded));
118
+ const sandbox = sandboxProvider ? lazySandbox(c, sandboxProvider) : undefined;
119
+ // A new session takes its working directory from the sandbox, so only its first open connects.
120
+ const firstSandbox = sandbox && !stored ? (await sandbox.connect()).sandbox : undefined;
121
+ const cwd = firstSandbox?.cwd ?? stored?.cwd ?? sessionOptions.cwd ?? process.cwd();
39
122
  if (!isAbsolute(cwd)) {
40
123
  throw new Error(`pi() cwd must be an absolute path, received ${cwd}`);
41
124
  }
42
- if (stored && stored.cwd !== cwd) {
43
- c.log.warn({
44
- msg: "pi session cwd changed since it was stored",
45
- storedCwd: stored.cwd,
46
- cwd,
47
- });
48
- }
125
+ const connect = sandbox && (async () => (await sandbox.connect()).sandbox);
49
126
  const settingsManager = SettingsManager.inMemory(stored?.settings ?? settings ?? {});
50
127
  const sessionManager = stored
51
128
  ? SessionManager.inMemory(cwd, undefined, toFileEntries(stored))
@@ -64,8 +141,11 @@ async function openPiSession(c, runtime, options) {
64
141
  settingsManager,
65
142
  sessionManager,
66
143
  resourceLoader,
67
- customTools: sandbox
68
- ? [...(sessionOptions.customTools ?? []), ...createSandboxTools(sandbox)]
144
+ customTools: connect
145
+ ? [
146
+ ...(sessionOptions.customTools ?? []),
147
+ ...createSandboxTools(cwd, connect),
148
+ ]
69
149
  : sessionOptions.customTools,
70
150
  excludeTools: [
71
151
  ...new Set([
@@ -81,8 +161,10 @@ async function openPiSession(c, runtime, options) {
81
161
  session,
82
162
  settingsManager,
83
163
  cwd,
84
- sandbox: connected,
85
- bashOperations: sandbox ? createSandboxBashOperations(sandbox) : undefined,
164
+ sandbox,
165
+ bashOperations: connect
166
+ ? createSandboxBashOperations(cwd, connect)
167
+ : undefined,
86
168
  persistedSettings: JSON.stringify(settingsManager.getGlobalSettings()),
87
169
  persistedEntryCount: stored?.entries.length ?? 0,
88
170
  credentials,
@@ -109,6 +191,14 @@ async function openPiSession(c, runtime, options) {
109
191
  });
110
192
  });
111
193
  }
194
+ // The run state tells the next wake whether a run was cut off.
195
+ if (event.type === "agent_start" ||
196
+ (event.type === "queue_update" && session.isStreaming)) {
197
+ void writeInOrder(c, runtime, () => savePiRunning(c.db, queuedMessages(session)));
198
+ }
199
+ else if (event.type === "agent_settled") {
200
+ void writeInOrder(c, runtime, () => savePiIdle(c.db));
201
+ }
112
202
  });
113
203
  c.log.info({
114
204
  msg: "pi session opened",
@@ -124,9 +214,9 @@ async function openPiSession(c, runtime, options) {
124
214
  * provider reports the stored one no longer exists. A new sandbox id is saved
125
215
  * as soon as `create` returns, so a failure later in the start reuses it. Any
126
216
  * other connect failure is thrown, so a temporary outage never replaces a
127
- * sandbox.
217
+ * sandbox. `pi()` and `piDurable()` both store the id in `pi_sandbox`.
128
218
  */
129
- async function connectSandbox(c, provider) {
219
+ export async function connectSandbox(c, provider) {
130
220
  const existing = await loadPiSandbox(c.db);
131
221
  if (existing && existing.provider !== provider.name) {
132
222
  throw new Error(`pi sandbox was created by provider ${existing.provider}, but the actor now uses ${provider.name}`);
@@ -190,6 +280,78 @@ function flushPiEntries(c, runtime, handle) {
190
280
  runtime.writes = write.catch(() => { });
191
281
  return write;
192
282
  }
283
+ /** Runs a SQLite write after the entry writes queued before it. */
284
+ function writeInOrder(c, runtime, write) {
285
+ const next = runtime.writes.then(write);
286
+ runtime.writes = next.catch((error) => {
287
+ c.log.error({ msg: "pi run state write failed", error });
288
+ });
289
+ return next;
290
+ }
291
+ function queuedMessages(session) {
292
+ return {
293
+ steering: [...session.getSteeringMessages()],
294
+ followUp: [...session.getFollowUpMessages()],
295
+ };
296
+ }
297
+ /**
298
+ * Continues the run that was active when the actor stopped, when Pi's own
299
+ * `Agent.continue()` accepts the transcript: its last message is a user or a
300
+ * tool result message. Otherwise the chat stays as Pi left it, as after an
301
+ * abort. The run continues in the background and keeps the actor awake.
302
+ */
303
+ export async function resumeInterruptedRun(c, options) {
304
+ const queue = await loadPiInterruptedRun(c.db);
305
+ if (!queue)
306
+ return;
307
+ const handle = await ensurePiSession(c, options);
308
+ const lastRole = handle.session.messages.at(-1)?.role;
309
+ if (lastRole !== "user" && lastRole !== "toolResult") {
310
+ c.log.info({
311
+ msg: "pi run stopped where Pi cannot continue it, leaving the chat as is",
312
+ lastRole,
313
+ });
314
+ await writeInOrder(c, piRuntime(c), () => savePiIdle(c.db));
315
+ return;
316
+ }
317
+ c.log.info({
318
+ msg: "resuming the pi run that was active when the actor stopped",
319
+ lastRole,
320
+ });
321
+ const run = continueRun(handle.session, queue)
322
+ .then(() => persistPiState(c, handle))
323
+ .catch((error) => {
324
+ c.log.error({ msg: "resumed pi run failed", error });
325
+ });
326
+ void c.keepAwake(run);
327
+ }
328
+ /**
329
+ * Runs `AgentSession`'s own run loop from the stored transcript, so retry,
330
+ * compaction, and queued messages work as in any run. The loop starts with
331
+ * `agent.prompt`; for that one call it continues instead. `pi-coding-agent`
332
+ * is pinned exactly, and the resume test fails if these methods change.
333
+ */
334
+ async function continueRun(session, queue) {
335
+ const internals = session;
336
+ for (const text of queue.steering)
337
+ await internals._queueSteer(text);
338
+ for (const text of queue.followUp)
339
+ await internals._queueFollowUp(text);
340
+ const agent = session.agent;
341
+ Object.defineProperty(agent, "prompt", {
342
+ configurable: true,
343
+ value: async () => {
344
+ Reflect.deleteProperty(agent, "prompt");
345
+ await agent.continue();
346
+ },
347
+ });
348
+ try {
349
+ await internals._runAgentPrompt([]);
350
+ }
351
+ finally {
352
+ Reflect.deleteProperty(agent, "prompt");
353
+ }
354
+ }
193
355
  function broadcastSessionEvent(c, event) {
194
356
  try {
195
357
  c.broadcast("event", event);
@@ -220,24 +382,89 @@ export async function persistPiState(c, handle) {
220
382
  handle.persistedSettings = encoded;
221
383
  }
222
384
  /**
223
- * Stops the Pi session for this actor generation: aborts any run, lets
224
- * extensions shut down, and flushes settings and entries. Then suspends the
225
- * sandbox on sleep, or destroys it on destroy.
385
+ * Aborts the run in memory when RivetKit declares this actor generation lost.
386
+ * The engine may already run the next generation, which resumes the run, so
387
+ * the lost one must stop calling the model and running tools. A lost
388
+ * generation skips `onSleep`, and its storage rejects writes, so nothing is
389
+ * stored here. A normal stop fires the same signal and drains in `onSleep`.
390
+ * Takes the wake context, whose signal is the actor's, not one action's.
391
+ */
392
+ export function stopRunWhenLost(c) {
393
+ const runtime = piRuntime(c);
394
+ c.abortSignal.addEventListener("abort", () => {
395
+ if (!isLost(c))
396
+ return;
397
+ runtime.closing = true;
398
+ const ready = runtime.ready;
399
+ runtime.ready = undefined;
400
+ void ready
401
+ ?.then((handle) => handle.session.abort())
402
+ .catch((error) => c.log.error({ msg: "pi could not abort the lost run", error }));
403
+ c.log.warn({
404
+ msg: "pi actor generation lost, aborting its run; the next generation resumes it",
405
+ });
406
+ }, { once: true });
407
+ }
408
+ /**
409
+ * RivetKit releases that stop lost generations expose `isLost` on the actor
410
+ * context. Older releases still run `onSleep` for a lost generation, so the
411
+ * drain handles it there.
412
+ */
413
+ function isLost(c) {
414
+ return c.isLost === true;
415
+ }
416
+ /**
417
+ * Waits until the session is idle, or until `drainUntil` passes. Idle sleep
418
+ * never has a run, so this only waits on a forced stop, such as a deploy. The
419
+ * deadline ends before RivetKit's, so closing still fits in the grace period.
420
+ * Pi stores each message as it ends, and the next wake resumes the run.
421
+ */
422
+ async function drain(c, session, drainUntil) {
423
+ if (session.isIdle)
424
+ return;
425
+ let timer;
426
+ const gracePeriodEnded = new Promise((resolve) => {
427
+ timer = setTimeout(() => resolve(true), Math.max(0, drainUntil - Date.now()));
428
+ });
429
+ try {
430
+ const idle = session.waitForIdle().then(() => false);
431
+ if (await Promise.race([idle, gracePeriodEnded])) {
432
+ c.log.warn({
433
+ msg: "pi run still active at the end of the grace period; it resumes on wake when Pi can continue it",
434
+ });
435
+ }
436
+ }
437
+ finally {
438
+ clearTimeout(timer);
439
+ }
440
+ }
441
+ /**
442
+ * Stops the Pi session for this actor generation. On sleep it first waits,
443
+ * until `drainUntil`, for a run to finish. A run still active then is not
444
+ * aborted: the transcript ends at the last message Pi stored, and the next
445
+ * wake resumes it. On destroy it aborts the run at once, since nothing would
446
+ * resume it. Then lets extensions shut down, flushes settings and entries,
447
+ * and suspends the sandbox on sleep, or destroys it on destroy.
226
448
  */
227
- export async function closePiSession(c, options, reason) {
449
+ export async function closePiSession(c, options, stop) {
228
450
  const runtime = piRuntime(c);
229
451
  const ready = runtime.ready;
230
- runtime.ready = undefined;
231
452
  const errors = [];
232
453
  let handle;
233
454
  try {
234
455
  handle = await ready;
235
456
  }
236
- catch {
457
+ catch { }
458
+ if (handle) {
459
+ const open = handle;
460
+ await attempt(errors, () => stop.reason === "sleep"
461
+ ? drain(c, open.session, stop.drainUntil)
462
+ : open.session.abort());
237
463
  }
464
+ runtime.closing = true;
465
+ runtime.ready = undefined;
238
466
  if (handle) {
239
467
  const open = handle;
240
- await attempt(errors, () => open.session.abort());
241
468
  await attempt(errors, async () => {
242
469
  if (open.session.hasExtensionHandlers("session_shutdown")) {
243
470
  await open.session.extensionRunner.emit({
@@ -252,18 +479,7 @@ export async function closePiSession(c, options, reason) {
252
479
  }
253
480
  const provider = options.sandbox;
254
481
  if (provider) {
255
- await attempt(errors, async () => {
256
- if (reason === "sleep") {
257
- if (handle?.sandbox && provider.suspend) {
258
- await provider.suspend(c, handle.sandbox.id);
259
- }
260
- return;
261
- }
262
- const sandbox = handle?.sandbox ?? (await storedSandbox(c, provider));
263
- if (sandbox && provider.destroy) {
264
- await provider.destroy(c, sandbox.id);
265
- }
266
- });
482
+ await attempt(errors, () => closeSandbox(c, provider, handle?.sandbox?.current, stop));
267
483
  }
268
484
  if (errors.length === 1)
269
485
  throw errors[0];
@@ -271,10 +487,25 @@ export async function closePiSession(c, options, reason) {
271
487
  throw new AggregateError(errors, "pi session shutdown failed");
272
488
  }
273
489
  }
274
- /** The stored sandbox, when it belongs to `provider`. */
275
- async function storedSandbox(c, provider) {
276
- const sandbox = await loadPiSandbox(c.db);
277
- return sandbox?.provider === provider.name ? sandbox : undefined;
490
+ /**
491
+ * Suspends the sandbox this generation connected when the actor sleeps. On
492
+ * destroy it destroys the actor's sandbox, also one stored by an earlier
493
+ * generation that this one never connected.
494
+ */
495
+ export async function closeSandbox(c, provider, connection, stop) {
496
+ const connected = await connection?.catch(() => undefined);
497
+ if (stop.reason === "sleep") {
498
+ if (connected && provider.suspend)
499
+ await provider.suspend(c, connected.id);
500
+ return;
501
+ }
502
+ if (!provider.destroy)
503
+ return;
504
+ const stored = connected ? undefined : await loadPiSandbox(c.db);
505
+ const id = connected?.id ??
506
+ (stored?.provider === provider.name ? stored.id : undefined);
507
+ if (id !== undefined)
508
+ await provider.destroy(c, id);
278
509
  }
279
510
  async function attempt(errors, operation) {
280
511
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/dist/sandbox.d.ts CHANGED
@@ -4,8 +4,12 @@ import type { Sandbox } from "@rivet-dev/sandbox-adapter";
4
4
  * Builds Pi's seven built-in coding tools with every file and shell operation
5
5
  * routed into the sandbox. Passed as `customTools`, they replace the built-in
6
6
  * tools of the same names.
7
+ *
8
+ * The tools see the session's `root`. Each operation connects the sandbox on
9
+ * first use and runs at the same path under the sandbox's own working
10
+ * directory, so a replaced sandbox with another working directory still works.
7
11
  */
8
- export declare function createSandboxTools(sandbox: Sandbox): ToolDefinition<any, any, any>[];
12
+ export declare function createSandboxTools(sessionRoot: string, connect: () => Promise<Sandbox>): ToolDefinition<any, any, any>[];
9
13
  /**
10
14
  * Command execution for Pi's bash tool and `executeBash`, inside the sandbox.
11
15
  * Follows Pi's `BashOperations` contract: `timeout` is in seconds, and abort
@@ -13,9 +17,11 @@ export declare function createSandboxTools(sandbox: Sandbox): ToolDefinition<any
13
17
  *
14
18
  * Pi passes the actor host's environment as `options.env`. It is not
15
19
  * forwarded, because it holds the host's provider keys; commands run with the
16
- * sandbox's own environment.
20
+ * sandbox's own environment. Paths map from `sessionRoot` as in
21
+ * `createSandboxTools`.
17
22
  */
18
- export declare function createSandboxBashOperations(sandbox: Sandbox): BashOperations;
23
+ export declare function createSandboxBashOperations(sessionRoot: string, connect: () => Promise<Sandbox>): BashOperations;
19
24
  /** Resolves `path` against `root` and rejects anything outside it. */
20
25
  export declare function resolveSandboxPath(root: string, path: string): string;
26
+ export declare function shellQuote(value: string): string;
21
27
  //# sourceMappingURL=sandbox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../src/sandbox.ts"],"names":[],"mappings":"AACA,OAAO,EACN,KAAK,cAAc,EAUnB,KAAK,cAAc,EACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAO1D;;;;GAIG;AACH,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,OAAO,GACd,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAgHjC;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,CAgB5E;AAED,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQrE"}
1
+ {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../src/sandbox.ts"],"names":[],"mappings":"AACA,OAAO,EACN,KAAK,cAAc,EAUnB,KAAK,cAAc,EACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAO1D;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CACjC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAC7B,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAsJjC;AAED;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAC1C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAC7B,cAAc,CAkBhB;AAED,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQrE;AAkDD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD"}