@rivet-dev/pi 0.5.1 → 0.5.3

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.
@@ -0,0 +1,173 @@
1
+ import { posix } from "node:path";
2
+ import { ExecutionError, err, FileError, LineScanner, ok, toError, } from "@earendil-works/pi-durable/env";
3
+ const DEFAULT_CWD = "/workspace";
4
+ /** Bytes per query when a scan walks a whole file. */
5
+ const SCAN_CHUNK_BYTES = 64 * 1024;
6
+ /**
7
+ * Pi Durable's `ExecutionEnv` over files stored in the actor's database, in
8
+ * the `pi_file` table, for Pi's `read`, `write`, and `edit` tools. Directories
9
+ * exist only as the paths of their files. There is no shell, so `exec` fails
10
+ * with `shell_unavailable`, and operations the tools do not use return
11
+ * `not_supported`.
12
+ */
13
+ export function databaseEnv(db, options) {
14
+ const env = {
15
+ id: options.id,
16
+ cwd: posix.resolve(DEFAULT_CWD, options.cwd ?? DEFAULT_CWD),
17
+ absolutePath: async (path) => ok(posix.resolve(env.cwd, path)),
18
+ joinPath: async (parts) => ok(posix.join(...parts)),
19
+ canonicalPath: async (path) => ok(posix.resolve(env.cwd, path)),
20
+ exists: (path, context) => attempt(path, context, async (resolved) => (await entry(db, resolved)) !== undefined),
21
+ fileInfo: (path, context) => attempt(path, context, async (resolved) => {
22
+ const info = await entry(db, resolved);
23
+ if (!info)
24
+ throw notFound(resolved);
25
+ return info;
26
+ }),
27
+ readTextFile: (path, context) => attempt(path, context, async (resolved) => new TextDecoder().decode(await readFile(db, resolved))),
28
+ readBinaryFile: (path, context) => attempt(path, context, (resolved) => readFile(db, resolved)),
29
+ openBinaryReader: (path, _options, context) => attempt(path, context, async (resolved) => {
30
+ await requireFile(db, resolved);
31
+ return fileReader(db, resolved);
32
+ }),
33
+ writeFile: (path, content, context) => attempt(path, context, async (resolved) => {
34
+ const bytes = typeof content === "string"
35
+ ? new TextEncoder().encode(content)
36
+ : content;
37
+ await db.execute(`INSERT INTO pi_file (path, content, mtime_ms) VALUES (?, ?, ?)
38
+ ON CONFLICT (path) DO UPDATE SET
39
+ content = excluded.content,
40
+ mtime_ms = excluded.mtime_ms`, resolved, bytes, Date.now());
41
+ }),
42
+ exec: async () => err(new ExecutionError("shell_unavailable", "There is no shell: files are stored in the actor's database. Give pi() a sandbox to run commands.")),
43
+ openTextLineReader: async (path) => notSupported("openTextLineReader", path),
44
+ readTextLines: async (path) => notSupported("readTextLines", path),
45
+ appendFile: async (path) => notSupported("appendFile", path),
46
+ truncateFile: async (path) => notSupported("truncateFile", path),
47
+ flushFile: async (path) => notSupported("flushFile", path),
48
+ renameFile: async (path) => notSupported("renameFile", path),
49
+ listDir: async (path) => notSupported("listDir", path),
50
+ openDirReader: async (path) => notSupported("openDirReader", path),
51
+ watch: async () => notSupported("watch"),
52
+ createDir: async (path) => notSupported("createDir", path),
53
+ remove: async (path) => notSupported("remove", path),
54
+ createTempDir: async () => notSupported("createTempDir"),
55
+ createTempFile: async () => notSupported("createTempFile"),
56
+ cleanup: async () => { },
57
+ };
58
+ /**
59
+ * Resolves `path`, runs `operation` unless the run is aborted, and returns a
60
+ * thrown error as a `FileError`.
61
+ */
62
+ async function attempt(path, context, operation) {
63
+ const resolved = posix.resolve(env.cwd, path);
64
+ if (context.abortSignal?.aborted)
65
+ return err(aborted(resolved));
66
+ try {
67
+ return ok(await operation(resolved));
68
+ }
69
+ catch (error) {
70
+ if (error instanceof FileError)
71
+ return err(error);
72
+ const cause = toError(error);
73
+ return err(new FileError("unknown", cause.message, resolved, cause));
74
+ }
75
+ }
76
+ return env;
77
+ }
78
+ /** The file or directory at `path`. A directory exists when a file below it does. */
79
+ async function entry(db, path) {
80
+ const [file] = await db.execute(`SELECT length(content) AS size, mtime_ms FROM pi_file WHERE path = ?`, path);
81
+ if (file) {
82
+ return {
83
+ name: posix.basename(path),
84
+ path,
85
+ kind: "file",
86
+ size: file.size,
87
+ mtimeMs: file.mtime_ms,
88
+ };
89
+ }
90
+ const below = path === "/" ? "/" : `${path}/`;
91
+ // Paths below `below` sort from it up to the same prefix ending in the next byte.
92
+ const [child] = await db.execute(`SELECT 1 FROM pi_file WHERE path > ? AND path < ? LIMIT 1`, below, `${below.slice(0, -1)}0`);
93
+ if (!child)
94
+ return undefined;
95
+ return {
96
+ name: posix.basename(path),
97
+ path,
98
+ kind: "directory",
99
+ size: 0,
100
+ mtimeMs: 0,
101
+ };
102
+ }
103
+ async function requireFile(db, path) {
104
+ const info = await entry(db, path);
105
+ if (!info)
106
+ throw notFound(path);
107
+ if (info.kind === "directory") {
108
+ throw new FileError("is_directory", `${path} is a directory`, path);
109
+ }
110
+ return info;
111
+ }
112
+ async function readFile(db, path) {
113
+ const [row] = await db.execute(`SELECT content FROM pi_file WHERE path = ?`, path);
114
+ if (row)
115
+ return new Uint8Array(row.content);
116
+ await requireFile(db, path);
117
+ throw notFound(path);
118
+ }
119
+ /** Reads byte ranges of the stored file with SQL, so a large file is never loaded whole. */
120
+ function fileReader(db, path) {
121
+ const range = async (offset, length) => {
122
+ const [row] = await db.execute(`SELECT substr(content, ?, ?) AS chunk FROM pi_file WHERE path = ?`, offset + 1, length, path);
123
+ if (!row)
124
+ throw notFound(path);
125
+ return new Uint8Array(row.chunk ?? new Uint8Array());
126
+ };
127
+ const guarded = async (context, operation) => {
128
+ if (context.abortSignal?.aborted)
129
+ return err(aborted(path));
130
+ try {
131
+ return ok(await operation());
132
+ }
133
+ catch (error) {
134
+ if (error instanceof FileError)
135
+ return err(error);
136
+ const cause = toError(error);
137
+ return err(new FileError("unknown", cause.message, path, cause));
138
+ }
139
+ };
140
+ return {
141
+ info: (context) => guarded(context, () => requireFile(db, path)),
142
+ read: (offset, length, context) => guarded(context, () => range(offset, length)),
143
+ scanLines: ({ startLine, endLine }, context) => guarded(context, async () => {
144
+ let scanner;
145
+ try {
146
+ scanner = new LineScanner(startLine, endLine);
147
+ }
148
+ catch {
149
+ throw new FileError("invalid", "Invalid line range", path);
150
+ }
151
+ for (let offset = 0;; offset += SCAN_CHUNK_BYTES) {
152
+ if (context.abortSignal?.aborted)
153
+ throw aborted(path);
154
+ const chunk = await range(offset, SCAN_CHUNK_BYTES);
155
+ if (chunk.length > 0)
156
+ scanner.push(chunk);
157
+ if (chunk.length < SCAN_CHUNK_BYTES)
158
+ return scanner.finish();
159
+ }
160
+ }),
161
+ close: async () => { },
162
+ };
163
+ }
164
+ function aborted(path) {
165
+ return new FileError("aborted", "aborted", path);
166
+ }
167
+ function notFound(path) {
168
+ return new FileError("not_found", `${path} does not exist`, path);
169
+ }
170
+ function notSupported(operation, path) {
171
+ return err(new FileError("not_supported", `${operation} is not supported for files stored in the database`, path));
172
+ }
173
+ //# sourceMappingURL=database-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-env.js","sourceRoot":"","sources":["../src/database-env.ts"],"names":[],"mappings":"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"}
package/dist/runtime.d.ts CHANGED
@@ -9,6 +9,8 @@ import { type ConnectionWatches } from "./watches.js";
9
9
  export type PiDatabaseProvider = DatabaseProvider<RawAccess>;
10
10
  /** The actor context shape every Pi helper works against. */
11
11
  export type PiContext = ActorContext<any, any, any, any, any, PiDatabaseProvider, any, any>;
12
+ /** Whether Pi Durable is open in this actor generation, or why it closed. */
13
+ export type PiStatus = "open" | "sleeping" | "destroyed";
12
14
  /** How an actor generation stops. A sleep drains until `drainUntil`; a destroy stops at once. */
13
15
  export type PiStop = {
14
16
  reason: "sleep";
@@ -61,8 +63,8 @@ export interface PiRuntime {
61
63
  /** The open harness, or the open in progress. */
62
64
  harness?: Promise<OpenHarness>;
63
65
  sandbox?: Promise<ConnectedSandbox>;
64
- /** Set when the actor starts to sleep or is destroyed. */
65
- closing: boolean;
66
+ /** Pi Durable is open until the actor starts to sleep or is destroyed. */
67
+ status: PiStatus;
66
68
  /**
67
69
  * The `onWake` context. Background work (keep-awake, scheduled wakes, the
68
70
  * sandbox, reopening) uses it, because an action's context is cancelled
@@ -71,6 +73,13 @@ export interface PiRuntime {
71
73
  actor?: PiContext;
72
74
  /** Open Pi watches of connections, for this generation. */
73
75
  watches: ConnectionWatches;
76
+ /**
77
+ * Calls that are using the harness and are not waiting on a run. A sleep
78
+ * drains them, so it never closes the harness under a call it admitted.
79
+ */
80
+ calls: number;
81
+ /** Called when a counted call ends. A drain sets it. */
82
+ callEnded?: () => void;
74
83
  }
75
84
  export declare const PI_RUNTIME: unique symbol;
76
85
  export declare function createPiRuntime(): PiRuntime;
@@ -89,7 +98,12 @@ export declare function openOnWake(c: PiContext, options: PiOptions): Promise<Ha
89
98
  * actor drains the run. RivetKit's action signal also fires when the actor
90
99
  * starts to stop, so it cannot cancel a wait.
91
100
  */
92
- export declare function withHarness<T>(c: PiContext, options: PiOptions, run: (harness: Harness, context: Context) => Promise<T>): Promise<T>;
101
+ export declare function withHarness<T>(c: PiContext, options: PiOptions, run: (harness: Harness, context: Context, waiting: Waiting) => Promise<T>): Promise<T>;
102
+ /**
103
+ * Runs a wait on a run, such as `submission.wait`, without holding a sleep.
104
+ * While the run is busy, the run itself holds the sleep.
105
+ */
106
+ export type Waiting = <W>(wait: () => Promise<W>) => Promise<W>;
93
107
  /**
94
108
  * Runs one of the app's own actions or hooks with the harness on `c.pi`. A
95
109
  * failure that left Pi Durable unusable reopens it. The error reaches the
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAa,MAAM,uBAAuB,CAAC;AAEhE,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAEN,KAAK,oBAAoB,EAEzB,OAAO,EAEP,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE3E,OAAO,EAAE,KAAK,YAAY,EAAa,MAAM,UAAU,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI/D,OAAO,EAGN,KAAK,cAAc,EACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACN,KAAK,iBAAiB,EAItB,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAE7D,6DAA6D;AAC7D,MAAM,MAAM,SAAS,GAAG,YAAY,CACnC,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,kBAAkB,EAClB,GAAG,EACH,GAAG,CACH,CAAC;AAEF,iGAAiG;AACjG,MAAM,MAAM,MAAM,GACf;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,CAAC;AAEzB,+DAA+D;AAC/D,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,eAAe,CAAC;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,SAAU,SAAQ,cAAc;IAChD,qFAAqF;IACrF,QAAQ,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACrC,mHAAmH;IACnH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B;;;OAGG;IACH,GAAG,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;IAC5B,mBAAmB,CAAC,EAAE,cAAc,CAAC,qBAAqB,CAAC,CAAC;IAC5D,GAAG,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;IAC5B,QAAQ,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACtC,6DAA6D;IAC7D,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC;;;;OAIG;IACH,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,6EAA6E;IAC7E,SAAS,CAAC,EAAE,SAAS,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;CACjD;AAYD,UAAU,WAAW;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/B;AAED,yEAAyE;AACzE,MAAM,WAAW,SAAS;IACzB,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACpC,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,2DAA2D;IAC3D,OAAO,EAAE,iBAAiB,CAAC;CAC3B;AAED,eAAO,MAAM,UAAU,EAAE,OAAO,MAA4C,CAAC;AAE7E,wBAAgB,eAAe,IAAI,SAAS,CAE3C;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,CAUjD;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAC/B,CAAC,EAAE,SAAS,EACZ,OAAO,EAAE,SAAS,GAChB,OAAO,CAAC,OAAO,CAAC,CAGlB;AAsBD;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAClC,CAAC,EAAE,SAAS,EACZ,OAAO,EAAE,SAAS,EAClB,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GACrD,OAAO,CAAC,CAAC,CAAC,CASZ;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,CAAC,EACnC,CAAC,EAAE,SAAS,EACZ,OAAO,EAAE,SAAS,EAClB,IAAI,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAC1B,EAAE,YAAmB,EAAE,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GACtD,OAAO,CAAC,CAAC,CAAC,CAwBZ;AAwDD,iEAAiE;AACjE,wBAAgB,eAAe,CAC9B,OAAO,EAAE,SAAS,GAChB,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAIhD;AAkED,iCAAiC;AACjC,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAMpD;AAuPD;;;;;GAKG;AACH,wBAAsB,YAAY,CACjC,CAAC,EAAE,SAAS,EACZ,OAAO,EAAE,SAAS,EAClB,IAAI,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAAC,CAAC,EAClC,CAAC,EAAE,SAAS,EACZ,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACxB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAQhB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CACnC,CAAC,EAAE,SAAS,EACZ,QAAQ,EAAE,eAAe,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAyB3B;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CACjC,CAAC,EAAE,SAAS,EACZ,QAAQ,EAAE,eAAe,EACzB,UAAU,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,SAAS,EACjD,IAAI,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAYf"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
package/dist/runtime.js CHANGED
@@ -1,10 +1,11 @@
1
1
  import { BACKGROUND_CONTEXT } from "@earendil-works/chord/context";
2
2
  import { AgentDoc, configure, Harness, } from "@earendil-works/pi-durable";
3
3
  import { SqliteStorage } from "@earendil-works/pi-durable/storage/sqlite";
4
- import { databaseEnv, sandboxEnv } from "@rivet-dev/sandbox-adapter/pi";
4
+ import { sandboxEnv } from "@rivet-dev/sandbox-adapter/pi";
5
5
  import { UserError } from "rivetkit";
6
6
  import { actorSqlite } from "./actor-sqlite.js";
7
7
  import { SourceCredentialStore } from "./credentials.js";
8
+ import { databaseEnv } from "./database-env.js";
8
9
  import { toClientError } from "./errors.js";
9
10
  import { createActorModelRuntime, emptyCredentialStore, } from "./models.js";
10
11
  import { loadPiSandbox, savePiSandbox } from "./storage.js";
@@ -19,7 +20,7 @@ const LONG_WAIT_MS = 60_000;
19
20
  const WAKE_ACTION = "pi.wake";
20
21
  export const PI_RUNTIME = Symbol.for("@rivet-dev/pi/runtime");
21
22
  export function createPiRuntime() {
22
- return { closing: false, watches: createConnectionWatches() };
23
+ return { status: "open", watches: createConnectionWatches(), calls: 0 };
23
24
  }
24
25
  export function piRuntime(c) {
25
26
  const runtime = c.vars?.[PI_RUNTIME];
@@ -40,8 +41,10 @@ export async function openOnWake(c, options) {
40
41
  /** Returns the actor's Pi Durable harness, opening it from SQLite on first use. */
41
42
  async function ensureHarness(c, options, open = { resume: true }) {
42
43
  const runtime = piRuntime(c);
43
- if (runtime.closing)
44
- throw harnessClosed();
44
+ // Callers check the status first, so a closed generation never reopens Pi Durable.
45
+ if (runtime.status !== "open") {
46
+ throw new Error(`pi durable cannot open after it closed (${runtime.status})`);
47
+ }
45
48
  runtime.harness ??= openHarness(runtime.actor ?? c, runtime, options, open).catch((error) => {
46
49
  runtime.harness = undefined;
47
50
  throw toClientError(error);
@@ -57,15 +60,36 @@ async function ensureHarness(c, options, open = { resume: true }) {
57
60
  * starts to stop, so it cannot cancel a wait.
58
61
  */
59
62
  export async function withHarness(c, options, run) {
63
+ const runtime = piRuntime(c);
64
+ if (runtime.status !== "open")
65
+ throw piClosed(runtime.status);
60
66
  const harness = await ensureHarness(c, options);
67
+ const release = countCall(runtime);
61
68
  try {
62
- return await run(harness, BACKGROUND_CONTEXT);
69
+ return await run(harness, BACKGROUND_CONTEXT, (wait) => {
70
+ release();
71
+ return wait();
72
+ });
63
73
  }
64
74
  catch (error) {
65
- const runtime = piRuntime(c);
66
75
  await recoverHarness(runtime.actor ?? c, runtime, options);
67
76
  throw toClientError(error);
68
77
  }
78
+ finally {
79
+ release();
80
+ }
81
+ }
82
+ /** Counts a call until the returned function runs. Calling it again does nothing. */
83
+ function countCall(runtime) {
84
+ runtime.calls += 1;
85
+ let counted = true;
86
+ return () => {
87
+ if (!counted)
88
+ return;
89
+ counted = false;
90
+ runtime.calls -= 1;
91
+ runtime.callEnded?.();
92
+ };
69
93
  }
70
94
  /**
71
95
  * Runs one of the app's own actions or hooks with the harness on `c.pi`. A
@@ -78,8 +102,9 @@ export async function withHarness(c, options, run) {
78
102
  export async function withPiAccess(c, options, body, { opensHarness = true } = {}) {
79
103
  const runtime = piRuntime(c);
80
104
  // Hooks such as onDisconnect still run after Pi Durable closed; only using c.pi fails.
81
- if (runtime.closing)
82
- return withUnavailablePi(c, harnessClosed(), body);
105
+ if (runtime.status !== "open") {
106
+ return withUnavailablePi(c, piClosed(runtime.status), body);
107
+ }
83
108
  if (!opensHarness && !runtime.harness) {
84
109
  return withUnavailablePi(c, harnessNotOpen(), body);
85
110
  }
@@ -95,6 +120,7 @@ export async function withPiAccess(c, options, body, { opensHarness = true } = {
95
120
  return withUnavailablePi(c, error, body);
96
121
  }
97
122
  Object.defineProperty(c, "pi", { value: harness, configurable: true });
123
+ const release = countCall(runtime);
98
124
  try {
99
125
  return await body();
100
126
  }
@@ -102,12 +128,18 @@ export async function withPiAccess(c, options, body, { opensHarness = true } = {
102
128
  await recoverHarness(runtime.actor ?? c, runtime, options);
103
129
  throw toClientError(error);
104
130
  }
131
+ finally {
132
+ release();
133
+ }
105
134
  }
106
135
  function harnessNotOpen() {
107
136
  return new UserError("Pi Durable is not open in this actor generation, so this shutdown hook cannot use c.pi.");
108
137
  }
109
- function harnessClosed() {
110
- return new UserError("Pi Durable is closed because the actor is stopping.");
138
+ /** What a call gets once Pi Durable is closed for this generation. */
139
+ function piClosed(status) {
140
+ return new UserError(status === "sleeping"
141
+ ? "Pi Durable is closed because the actor is going to sleep."
142
+ : "Pi Durable is closed because the actor was destroyed.");
111
143
  }
112
144
  async function openHarness(c, runtime, options, open = { resume: true }) {
113
145
  const storage = await SqliteStorage.open(actorSqlite(c.db));
@@ -158,7 +190,7 @@ function isUsable(harness) {
158
190
  /** Closes and reopens a harness that Pi Durable refuses to use. The reopened harness resumes from storage. */
159
191
  async function recoverHarness(c, runtime, options) {
160
192
  const current = runtime.harness;
161
- if (!current || runtime.closing)
193
+ if (!current || runtime.status !== "open")
162
194
  return;
163
195
  let open;
164
196
  try {
@@ -167,7 +199,9 @@ async function recoverHarness(c, runtime, options) {
167
199
  catch {
168
200
  return;
169
201
  }
170
- if (runtime.harness !== current || runtime.closing || isUsable(open.harness))
202
+ if (runtime.harness !== current ||
203
+ runtime.status !== "open" ||
204
+ isUsable(open.harness))
171
205
  return;
172
206
  c.log.warn({
173
207
  msg: "pi durable stopped after a failed commit, reopening it from storage",
@@ -242,7 +276,11 @@ function sandboxEnvBuilder(c, runtime, provider) {
242
276
  };
243
277
  return async (target) => {
244
278
  const root = provider.cwd ?? (await connect()).cwd;
245
- return sandboxEnv(`${provider.name}:${c.actorId}`, root, connect, target.cwd);
279
+ return sandboxEnv(connect, {
280
+ id: `${provider.name}:${c.actorId}`,
281
+ root,
282
+ cwd: target.cwd,
283
+ });
246
284
  };
247
285
  }
248
286
  function reportBlockedTasks(c, inspection) {
@@ -379,15 +417,17 @@ function watchBusy(c, harness, now, longWaitMs) {
379
417
  };
380
418
  }
381
419
  /**
382
- * Waits until no run is active, or until `drainUntil` passes. Idle sleep
383
- * never has live work, so this only waits on a forced stop, such as an upgrade.
384
- * The deadline ends before RivetKit's, so closing still fits in the grace
385
- * period. Pi's records are already stored, and the next wake resumes the work.
420
+ * Waits until no run is active and no admitted call is using the harness, or
421
+ * until `drainUntil` passes. Idle sleep has no live work, so it waits only for
422
+ * a call that arrived as the sleep started. The deadline ends before
423
+ * RivetKit's, so closing still fits in the grace period. Pi's records are
424
+ * already stored, and the next wake resumes the work.
386
425
  */
387
- async function drain(c, open, drainUntil) {
426
+ async function drain(c, runtime, open, drainUntil) {
388
427
  let changed = () => { };
389
428
  let timedOut = false;
390
429
  const unsubscribe = open.harness.subscribeCommits(() => changed());
430
+ runtime.callEnded = () => changed();
391
431
  const timer = setTimeout(() => {
392
432
  timedOut = true;
393
433
  changed();
@@ -398,7 +438,7 @@ async function drain(c, open, drainUntil) {
398
438
  const next = new Promise((resolve) => {
399
439
  changed = resolve;
400
440
  });
401
- if (!(await open.isBusy()))
441
+ if (runtime.calls === 0 && !(await open.isBusy()))
402
442
  return;
403
443
  await next;
404
444
  }
@@ -409,6 +449,7 @@ async function drain(c, open, drainUntil) {
409
449
  finally {
410
450
  clearTimeout(timer);
411
451
  unsubscribe();
452
+ runtime.callEnded = undefined;
412
453
  }
413
454
  }
414
455
  /**
@@ -427,9 +468,9 @@ export async function closeHarness(c, options, stop) {
427
468
  catch { }
428
469
  // Destroy has no next generation to resume in, so it stops running work at once.
429
470
  if (open && stop.reason === "sleep") {
430
- await drain(c, open, stop.drainUntil).catch((error) => errors.push(error));
471
+ await drain(c, runtime, open, stop.drainUntil).catch((error) => errors.push(error));
431
472
  }
432
- runtime.closing = true;
473
+ runtime.status = stop.reason === "sleep" ? "sleeping" : "destroyed";
433
474
  runtime.harness = undefined;
434
475
  if (open) {
435
476
  await closeOpenHarness(open, runtime.watches).catch((error) => errors.push(error));
@@ -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/storage.d.ts CHANGED
@@ -1,8 +1,10 @@
1
+ import type { ConversationId } from "@earendil-works/pi-durable";
1
2
  import type { RawAccess } from "rivetkit/db";
2
3
  export type PiDatabase = Pick<RawAccess, "execute">;
3
4
  /**
4
5
  * `pi()`'s own tables. Pi Durable creates its tables in the same database
5
- * itself. The `pi_durable` names are stored in actors' databases, so they stay.
6
+ * itself, with the `pi_` prefix `actorSqlite` adds. The `pi_durable` names are
7
+ * stored in actors' databases, so they stay.
6
8
  */
7
9
  export declare const migratePiTables: (db: import("rivetkit/unstable/migrations").MigrationDatabase) => Promise<void>;
8
10
  /** A watch a connection asked for. Stored so a connection that survives sleep gets its watches back on wake. */
@@ -13,16 +15,16 @@ export type StoredWatch = {
13
15
  };
14
16
  export type WatchSpec = {
15
17
  kind: "events";
16
- conversationId: number;
18
+ conversationId: ConversationId;
17
19
  } | {
18
20
  kind: "view";
19
- conversationId: number;
21
+ conversationId: ConversationId;
20
22
  } | {
21
23
  kind: "taskGraph";
22
24
  } | {
23
25
  kind: "doc";
24
26
  docKind: string;
25
- conversationId: number;
27
+ conversationId: ConversationId;
26
28
  };
27
29
  export declare function saveWatch(db: PiDatabase, watch: StoredWatch): Promise<void>;
28
30
  export declare function deleteWatch(db: PiDatabase, connId: string, key: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,eAAe,iFA2B1B,CAAC;AAEH,gHAAgH;AAChH,MAAM,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,SAAS,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5D,wBAAsB,SAAS,CAC9B,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,WAAW,GAChB,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,WAAW,CAChC,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GACT,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,uBAAuB,CAC5C,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,WAAW,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAYxE;AAED,kFAAkF;AAClF,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACX;AAED,wBAAsB,aAAa,CAClC,EAAE,EAAE,UAAU,GACZ,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAMpC;AAED,wBAAsB,aAAa,CAClC,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAWf"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,eAAe,iFAoD1B,CAAC;AAEH,gHAAgH;AAChH,MAAM,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,SAAS,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,SAAS,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,cAAc,EAAE,cAAc,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,cAAc,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,cAAc,CAAA;CAAE,CAAC;AAEpE,wBAAsB,SAAS,CAC9B,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,WAAW,GAChB,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,WAAW,CAChC,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GACT,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,uBAAuB,CAC5C,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,WAAW,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAYxE;AAED,kFAAkF;AAClF,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACX;AAED,wBAAsB,aAAa,CAClC,EAAE,EAAE,UAAU,GACZ,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAMpC;AAED,wBAAsB,aAAa,CAClC,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAWf"}
package/dist/storage.js CHANGED
@@ -1,7 +1,9 @@
1
1
  import { migrations } from "rivetkit/unstable/migrations";
2
+ import { PI_DURABLE_TABLES } from "./actor-sqlite.js";
2
3
  /**
3
4
  * `pi()`'s own tables. Pi Durable creates its tables in the same database
4
- * itself. The `pi_durable` names are stored in actors' databases, so they stay.
5
+ * itself, with the `pi_` prefix `actorSqlite` adds. The `pi_durable` names are
6
+ * stored in actors' databases, so they stay.
5
7
  */
6
8
  export const migratePiTables = migrations({
7
9
  tableName: "pi_durable_schema_version",
@@ -29,6 +31,28 @@ export const migratePiTables = migrations({
29
31
  ) STRICT, WITHOUT ROWID;
30
32
  `,
31
33
  },
34
+ {
35
+ version: 3,
36
+ // Files of agents without a sandbox. Agents from 0.5.1 created this table on first use.
37
+ sql: `
38
+ CREATE TABLE IF NOT EXISTS pi_file (
39
+ path TEXT PRIMARY KEY,
40
+ content BLOB NOT NULL,
41
+ mtime_ms INTEGER NOT NULL
42
+ ) STRICT;
43
+ `,
44
+ },
45
+ {
46
+ version: 4,
47
+ // Pi Durable's tables of agents from 0.5.1 and earlier have no prefix. Renaming them keeps their data.
48
+ up: async (db) => {
49
+ for (const table of PI_DURABLE_TABLES) {
50
+ const [found] = await db.execute("SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ?", table);
51
+ if (found)
52
+ await db.execute(`ALTER TABLE ${table} RENAME TO pi_${table}`);
53
+ }
54
+ },
55
+ },
32
56
  ],
33
57
  });
34
58
  export async function saveWatch(db, watch) {
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAI1D;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;IACzC,SAAS,EAAE,2BAA2B;IACtC,UAAU,EAAE;QACX;YACC,OAAO,EAAE,CAAC;YACV,2FAA2F;YAC3F,GAAG,EAAE;;;;;;;IAOJ;SACD;QACD;YACC,OAAO,EAAE,CAAC;YACV,GAAG,EAAE;;;;;;;IAOJ;SACD;KACD;CACD,CAAC,CAAC;AAeH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC9B,EAAc,EACd,KAAkB;IAElB,MAAM,EAAE,CAAC,OAAO,CACf;+CAC6C,EAC7C,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,GAAG,EACT,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAC1B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAChC,EAAc,EACd,MAAc,EACd,GAAW;IAEX,MAAM,EAAE,CAAC,OAAO,CACf,kEAAkE,EAClE,MAAM,EACN,GAAG,CACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC5C,EAAc,EACd,MAAc;IAEd,MAAM,EAAE,CAAC,OAAO,CAAC,gDAAgD,EAAE,MAAM,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAAc;IAC/C,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAI1B,4DAA4D,CAAC,CAAC;IACjE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACzB,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,GAAG,EAAE,GAAG,CAAC,SAAS;QAClB,2DAA2D;QAC3D,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAc;KAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,EAAc;IAEd,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAC5B,iEAAiE,CACjE,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,EAAc,EACd,OAAsB;IAEtB,MAAM,EAAE,CAAC,OAAO,CACf;;;;oCAIkC,EAClC,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,EAAE,EACV,IAAI,CAAC,GAAG,EAAE,CACV,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAItD;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;IACzC,SAAS,EAAE,2BAA2B;IACtC,UAAU,EAAE;QACX;YACC,OAAO,EAAE,CAAC;YACV,2FAA2F;YAC3F,GAAG,EAAE;;;;;;;IAOJ;SACD;QACD;YACC,OAAO,EAAE,CAAC;YACV,GAAG,EAAE;;;;;;;IAOJ;SACD;QACD;YACC,OAAO,EAAE,CAAC;YACV,wFAAwF;YACxF,GAAG,EAAE;;;;;;IAMJ;SACD;QACD;YACC,OAAO,EAAE,CAAC;YACV,uGAAuG;YACvG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;gBAChB,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;oBACvC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,OAAO,CAC/B,+DAA+D,EAC/D,KAAK,CACL,CAAC;oBACF,IAAI,KAAK;wBACR,MAAM,EAAE,CAAC,OAAO,CAAC,eAAe,KAAK,iBAAiB,KAAK,EAAE,CAAC,CAAC;gBACjE,CAAC;YACF,CAAC;SACD;KACD;CACD,CAAC,CAAC;AAeH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC9B,EAAc,EACd,KAAkB;IAElB,MAAM,EAAE,CAAC,OAAO,CACf;+CAC6C,EAC7C,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,GAAG,EACT,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAC1B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAChC,EAAc,EACd,MAAc,EACd,GAAW;IAEX,MAAM,EAAE,CAAC,OAAO,CACf,kEAAkE,EAClE,MAAM,EACN,GAAG,CACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC5C,EAAc,EACd,MAAc;IAEd,MAAM,EAAE,CAAC,OAAO,CAAC,gDAAgD,EAAE,MAAM,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAAc;IAC/C,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAI1B,4DAA4D,CAAC,CAAC;IACjE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACzB,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,GAAG,EAAE,GAAG,CAAC,SAAS;QAClB,2DAA2D;QAC3D,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAc;KAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,EAAc;IAEd,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,OAAO,CAC5B,iEAAiE,CACjE,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,EAAc,EACd,OAAsB;IAEtB,MAAM,EAAE,CAAC,OAAO,CACf;;;;oCAIkC,EAClC,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,EAAE,EACV,IAAI,CAAC,GAAG,EAAE,CACV,CAAC;AACH,CAAC"}