@sanoma-ai/workflows 0.11.17 → 0.11.18

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 (94) hide show
  1. package/README.md +13 -9
  2. package/dist/call.d.ts +35 -4
  3. package/dist/call.js +128 -40
  4. package/dist/call.js.map +1 -1
  5. package/dist/client.d.ts +17 -8
  6. package/dist/client.js +90 -51
  7. package/dist/client.js.map +1 -1
  8. package/dist/collection.d.ts +25 -7
  9. package/dist/collection.js +236 -91
  10. package/dist/collection.js.map +1 -1
  11. package/dist/config.d.ts +8 -5
  12. package/dist/config.js +10 -10
  13. package/dist/config.js.map +1 -1
  14. package/dist/db/company.d.ts +20 -0
  15. package/dist/db/company.js +9 -1
  16. package/dist/db/company.js.map +1 -1
  17. package/dist/describe.js +1 -1
  18. package/dist/describe.js.map +1 -1
  19. package/dist/description.js +1 -1
  20. package/dist/description.js.map +1 -1
  21. package/dist/errors.d.ts +2 -1
  22. package/dist/errors.js +3 -2
  23. package/dist/errors.js.map +1 -1
  24. package/dist/grid.js +3 -2
  25. package/dist/grid.js.map +1 -1
  26. package/dist/host-derive.d.ts +13 -8
  27. package/dist/host-derive.js +26 -13
  28. package/dist/host-derive.js.map +1 -1
  29. package/dist/index.d.ts +2 -0
  30. package/dist/index.js +2 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/ledger.d.ts +7 -0
  33. package/dist/ledger.js +32 -2
  34. package/dist/ledger.js.map +1 -1
  35. package/dist/local-sandbox.d.ts +8 -1
  36. package/dist/local-sandbox.js +3 -2
  37. package/dist/local-sandbox.js.map +1 -1
  38. package/dist/op.d.ts +3 -2
  39. package/dist/op.js.map +1 -1
  40. package/dist/resources.d.ts +1 -1
  41. package/dist/resources.js +9 -6
  42. package/dist/resources.js.map +1 -1
  43. package/dist/runner-box.d.ts +23 -0
  44. package/dist/runner-box.js +181 -0
  45. package/dist/runner-box.js.map +1 -0
  46. package/dist/runner-protocol.d.ts +73 -0
  47. package/dist/runner-protocol.js +34 -0
  48. package/dist/runner-protocol.js.map +1 -0
  49. package/dist/sandbox-contract.d.ts +14 -5
  50. package/dist/sandbox-contract.js.map +1 -1
  51. package/dist/sandbox-runner.cjs +7 -0
  52. package/dist/scenario.js +16 -7
  53. package/dist/scenario.js.map +1 -1
  54. package/dist/schema.js +6 -3
  55. package/dist/schema.js.map +1 -1
  56. package/dist/secret.d.ts +2 -1
  57. package/dist/secret.js +3 -2
  58. package/dist/secret.js.map +1 -1
  59. package/dist/shared.d.ts +39 -5
  60. package/dist/shared.js +13 -1
  61. package/dist/shared.js.map +1 -1
  62. package/dist/sites.js +10 -8
  63. package/dist/sites.js.map +1 -1
  64. package/dist/source.d.ts +21 -0
  65. package/dist/source.js.map +1 -1
  66. package/drizzle/company/0003_ledger_target.sql +2 -0
  67. package/drizzle/company/meta/0003_snapshot.json +845 -0
  68. package/drizzle/company/meta/_journal.json +7 -0
  69. package/package.json +5 -2
  70. package/src/call.ts +181 -60
  71. package/src/client.ts +118 -67
  72. package/src/collection.ts +265 -97
  73. package/src/config.ts +20 -20
  74. package/src/db/company.ts +9 -1
  75. package/src/describe.ts +1 -1
  76. package/src/description.ts +1 -1
  77. package/src/errors.ts +3 -2
  78. package/src/grid.ts +3 -1
  79. package/src/host-derive.ts +38 -18
  80. package/src/index.ts +2 -0
  81. package/src/ledger.ts +42 -2
  82. package/src/local-sandbox.ts +3 -2
  83. package/src/op.ts +3 -2
  84. package/src/resources.ts +8 -6
  85. package/src/runner-box.ts +218 -0
  86. package/src/runner-protocol.ts +61 -0
  87. package/src/sandbox-contract.ts +11 -4
  88. package/src/sandbox-runner.ts +187 -0
  89. package/src/scenario.ts +16 -6
  90. package/src/schema.ts +14 -3
  91. package/src/secret.ts +6 -2
  92. package/src/shared.ts +40 -4
  93. package/src/sites.ts +11 -7
  94. package/src/source.ts +14 -0
@@ -2,7 +2,7 @@ import { z } from "zod";
2
2
  import type { Db } from "./db.ts";
3
3
  import { type Fake } from "./fake.ts";
4
4
  import { type Connector, type Driver, type Op, type OpSpec } from "./op.ts";
5
- import { DATA_VENDOR, type FIELD_TYPES, type ListQuery, type Saved } from "./shared.ts";
5
+ import { DATA_VENDOR, type Deleted, type FIELD_TYPES, type ListQuery, type Saved } from "./shared.ts";
6
6
  export type FieldType = (typeof FIELD_TYPES)[number];
7
7
  /** A field of a collection: its type, the type marked optional, or one of a list of strings. */
8
8
  export type Field = FieldType | {
@@ -44,7 +44,7 @@ export type RequiredTextKeys<F extends Record<string, Field>> = {
44
44
  * collection another copy made, as `VENDOR` and `RESOURCE`.
45
45
  */
46
46
  export declare const COLLECTION: unique symbol;
47
- /** A collection, as `collection()` declares it, with its four operations. */
47
+ /** A collection, as `collection()` declares it, with its six operations. */
48
48
  export interface Collection<N extends string = string, F extends Record<string, Field> = Record<string, Field>, K extends string = string> {
49
49
  readonly [COLLECTION]: true;
50
50
  readonly kind: "collection";
@@ -59,22 +59,35 @@ export interface Collection<N extends string = string, F extends Record<string,
59
59
  key: string;
60
60
  }, Saved<RecordOf<F>> | null>;
61
61
  readonly list: Op<typeof DATA_VENDOR, N, "list", ListQuery<RecordOf<F>>, Saved<RecordOf<F>>[]>;
62
+ readonly count: Op<typeof DATA_VENDOR, N, "count", Pick<ListQuery<RecordOf<F>>, "where">, {
63
+ count: number;
64
+ }>;
62
65
  readonly save: Op<typeof DATA_VENDOR, N, "save", {
63
66
  record: RecordOf<F>;
64
67
  ifAbsent?: boolean;
65
68
  ifRecord?: Record<string, unknown>;
66
69
  }, Saved<RecordOf<F>>>;
70
+ readonly saveMany: Op<typeof DATA_VENDOR, N, "saveMany", {
71
+ records?: {
72
+ record: RecordOf<F>;
73
+ ifAbsent?: boolean;
74
+ ifRecord?: Record<string, unknown>;
75
+ }[];
76
+ deletes?: {
77
+ key: string;
78
+ ifRecord?: Record<string, unknown>;
79
+ }[];
80
+ }, (Saved<RecordOf<F>> | Deleted)[]>;
67
81
  readonly delete: Op<typeof DATA_VENDOR, N, "delete", {
68
82
  key: string;
69
- }, {
70
- deleted: boolean;
71
- }>;
83
+ ifRecord?: Record<string, unknown>;
84
+ }, Deleted>;
72
85
  }
73
86
  /**
74
87
  * Declares a collection of records, in `resources/data.ts`:
75
88
  * `collection({ name: "outbound", key: "company", fields: { company: "text", stage: { enum: ["new", "won"] } } })`.
76
- * Its operations are `data.<name>.get`, `.list`, `.save` and `.delete`, which a workflow names in
77
- * `uses` and calls on `ctx.data.<name>`. The name is a lowercase letter then letters and digits;
89
+ * Its operations are `data.<name>.get`, `.list`, `.count`, `.save`, `.saveMany` and `.delete`,
90
+ * which a workflow names in `uses` and calls on `ctx.data.<name>`. The name is a lowercase letter then letters and digits;
78
91
  * the key is a required text field, each record's own and unique. In an app's folder
79
92
  * (`apps/<app>/resources/data.ts`) the runtime names it `<app>.<name>`: `data.<app>.<name>.get`,
80
93
  * called on `ctx.data.<app>.<name>`.
@@ -102,6 +115,11 @@ type Stored = Omit<Saved, "issues">;
102
115
  type DataOps = Record<string, Record<string, OpSpec>>;
103
116
  /** The vendor `data` as a connector of the collections' operations, the very ones each `collection()` made. */
104
117
  export declare function collectionsConnector(list: readonly Collection[]): Connector<typeof DATA_VENDOR, DataOps>;
118
+ /** An entry of a batch its `ifRecord` refused: its key, and the record as it stands, or `null` when it is gone. */
119
+ export type Conflict = {
120
+ key: string;
121
+ current: Saved | null;
122
+ };
105
123
  /**
106
124
  * The collections' driver: their records in the `data` table of the database `store` is on, through
107
125
  * the pool a run's calls share, or one connection in a transaction (a direct write, with its
@@ -3,12 +3,13 @@ import { z } from "zod";
3
3
  import * as drizzle from "drizzle-orm";
4
4
  import { and, eq, or, sql } from "drizzle-orm";
5
5
  import { data } from "./db/company.js";
6
+ import { vendorCodeOf } from "./errors.js";
6
7
  import { defineFake } from "./fake.js";
7
8
  import { isObject } from "./resource.js";
8
9
  import { defineConnector, defineDriver, DriverError, } from "./op.js";
9
10
  import { callerFile } from "./define.js";
10
11
  import { appOfFile } from "./paths.js";
11
- import { checkCollection, DATA_VENDOR, LIST_LIMIT, qualified, } from "./shared.js";
12
+ import { BATCH, BATCH_LIMIT, checkCollection, DATA_VENDOR, LIST_LIMIT, qualified, } from "./shared.js";
12
13
  /**
13
14
  * Where a collection keeps its brand: a registered symbol, so a copy of this package reads a
14
15
  * collection another copy made, as `VENDOR` and `RESOURCE`.
@@ -17,8 +18,8 @@ export const COLLECTION = Symbol.for("sanoma.collection");
17
18
  /**
18
19
  * Declares a collection of records, in `resources/data.ts`:
19
20
  * `collection({ name: "outbound", key: "company", fields: { company: "text", stage: { enum: ["new", "won"] } } })`.
20
- * Its operations are `data.<name>.get`, `.list`, `.save` and `.delete`, which a workflow names in
21
- * `uses` and calls on `ctx.data.<name>`. The name is a lowercase letter then letters and digits;
21
+ * Its operations are `data.<name>.get`, `.list`, `.count`, `.save`, `.saveMany` and `.delete`,
22
+ * which a workflow names in `uses` and calls on `ctx.data.<name>`. The name is a lowercase letter then letters and digits;
22
23
  * the key is a required text field, each record's own and unique. In an app's folder
23
24
  * (`apps/<app>/resources/data.ts`) the runtime names it `<app>.<name>`: `data.<app>.<name>.get`,
24
25
  * called on `ctx.data.<app>.<name>`.
@@ -76,10 +77,20 @@ const SAVED = z.object({
76
77
  updatedBy: z.string(),
77
78
  issues: z.array(z.object({ path: z.array(z.union([z.string(), z.number()])), message: z.string() })).optional(),
78
79
  });
79
- /** A collection's four operations, for `defineConnector`. */
80
+ /** What `delete` answers, and a batch for each of its deletes: whether there was a record to delete. */
81
+ const DELETED = z.object({ key: z.string(), deleted: z.boolean() });
82
+ /** A collection's six operations, for `defineConnector`. */
80
83
  function specsOf(name, key, fields, record) {
81
84
  const at = (k) => `${DATA_VENDOR}:${name}/${k}`;
82
- const byKey = z.object({ key: z.string().min(1) });
85
+ const whole = `${DATA_VENDOR}:${name}`;
86
+ const ifRecord = z.record(z.string(), z.unknown()).optional();
87
+ const byKey = z.object({ key: z.string().min(1), ifRecord });
88
+ /** What `save` takes, and a batch for each of its records. */
89
+ const saving = z
90
+ .object({ record, ifAbsent: z.boolean().optional(), ifRecord })
91
+ .refine((input) => !(input.ifAbsent && input.ifRecord !== undefined), {
92
+ message: "Choose ifAbsent or ifRecord, not both",
93
+ });
83
94
  const names = Object.keys(fields);
84
95
  const where = z.strictObject(Object.fromEntries(Object.entries(fields).map(([field, kind]) => {
85
96
  const value = valueSchema(kind);
@@ -91,7 +102,7 @@ function specsOf(name, key, fields, record) {
91
102
  effect: "read",
92
103
  idempotent: true,
93
104
  description: `Get a record of ${name} by its ${key}`,
94
- input: byKey,
105
+ input: z.object({ key: z.string().min(1) }),
95
106
  output: SAVED.nullable(),
96
107
  target: ({ key: k }) => at(k),
97
108
  },
@@ -105,26 +116,54 @@ function specsOf(name, key, fields, record) {
105
116
  limit: z.number().int().min(1).max(LIST_LIMIT.max).default(LIST_LIMIT.default),
106
117
  }),
107
118
  output: z.array(SAVED),
108
- target: () => `${DATA_VENDOR}:${name}`,
119
+ target: () => whole,
120
+ },
121
+ count: {
122
+ effect: "read",
123
+ idempotent: true,
124
+ description: `Count the records of ${name}, or those with fields equal to a value or within a range`,
125
+ input: z.object({ where: where.optional() }),
126
+ output: z.object({ count: z.number().int() }),
127
+ target: () => whole,
109
128
  },
110
129
  save: {
111
130
  effect: "write",
112
131
  idempotent: true,
113
132
  description: `Save a record of ${name}: added, or replacing the one with its ${key}; ifAbsent refuses a different existing record`,
114
- input: z
115
- .object({ record, ifAbsent: z.boolean().optional(), ifRecord: z.record(z.string(), z.unknown()).optional() })
116
- .refine((input) => !(input.ifAbsent && input.ifRecord !== undefined), {
117
- message: "Choose ifAbsent or ifRecord, not both",
118
- }),
133
+ input: saving,
119
134
  output: SAVED,
120
135
  target: ({ record: r }) => at(r[key]),
121
136
  },
137
+ [BATCH]: {
138
+ effect: "write",
139
+ idempotent: true,
140
+ description: `Save and delete records of ${name} together, all or none, each entry decided and recorded as its own save or delete`,
141
+ input: z
142
+ .object({
143
+ records: z.array(saving).default([]),
144
+ deletes: z.array(byKey).default([]),
145
+ })
146
+ .superRefine((batch, ctx) => {
147
+ const keys = [
148
+ ...batch.records.map((e) => e.record[key]),
149
+ ...batch.deletes.map((e) => e.key),
150
+ ];
151
+ if (keys.length < 1 || keys.length > BATCH_LIMIT) {
152
+ ctx.addIssue({ code: "custom", message: `A batch has 1 to ${BATCH_LIMIT} entries` });
153
+ }
154
+ if (new Set(keys).size !== keys.length) {
155
+ ctx.addIssue({ code: "custom", message: `A batch names each ${key} once` });
156
+ }
157
+ }),
158
+ output: z.array(z.union([SAVED, DELETED])),
159
+ target: () => whole,
160
+ },
122
161
  delete: {
123
162
  effect: "write",
124
163
  idempotent: true,
125
- description: `Delete the record of ${name} with this ${key}`,
164
+ description: `Delete the record of ${name} with this ${key}; ifRecord refuses a changed or missing one`,
126
165
  input: byKey,
127
- output: z.object({ deleted: z.boolean() }),
166
+ output: DELETED,
128
167
  target: ({ key: k }) => at(k),
129
168
  },
130
169
  };
@@ -152,16 +191,34 @@ function answer(c, stored) {
152
191
  const updatedBy = (call) => call.by ?? `run:${call.runId}`;
153
192
  /** The vendor `data` as a connector of the collections' operations, the very ones each `collection()` made. */
154
193
  export function collectionsConnector(list) {
155
- const ops = list.map((c) => [c.name, { get: c.get, list: c.list, save: c.save, delete: c.delete }]);
194
+ const ops = list.map((c) => [
195
+ c.name,
196
+ { get: c.get, list: c.list, count: c.count, save: c.save, [BATCH]: c.saveMany, delete: c.delete },
197
+ ]);
156
198
  return { ...defineConnector(DATA_VENDOR, {}), ...Object.fromEntries(ops) };
157
199
  }
158
200
  const COLUMNS = { key: data.key, record: data.record, updatedAt: data.updatedAt, updatedBy: data.updatedBy };
159
- const recordExists = () => new DriverError("Collection record already exists", { retryable: false, status: 409, vendorCode: "record_exists" });
160
- const recordChanged = () => new DriverError("Collection record changed or is missing", {
201
+ /** The refusal of an `ifAbsent` save, carrying the record that is there (`current`). */
202
+ const recordExists = (current) => Object.assign(new DriverError("Collection record already exists", { retryable: false, status: 409, vendorCode: "record_exists" }), { current });
203
+ /** The refusal of an `ifRecord` save or delete, carrying the record as it stands (`current`), or `null` when it is gone. */
204
+ const recordChanged = (current) => Object.assign(new DriverError(current ? "Collection record changed" : "Collection record is missing", {
161
205
  retryable: false,
162
206
  status: 409,
163
207
  vendorCode: "record_changed",
164
- });
208
+ }), { current });
209
+ /** The refusal of a batch, carrying every entry refused (`conflicts`), with the record as each stands. */
210
+ const recordsChanged = (conflicts) => Object.assign(new DriverError(`${conflicts.length} of the batch's records changed or are missing`, {
211
+ retryable: false,
212
+ status: 409,
213
+ vendorCode: "record_changed",
214
+ }), { conflicts });
215
+ /** The refusal of one entry (its `ifRecord` or `ifAbsent`), as a batch collects it; any other failure is the batch's. */
216
+ const conflictOf = (key, err) => {
217
+ const code = vendorCodeOf(err);
218
+ if (code !== "record_changed" && code !== "record_exists")
219
+ throw err;
220
+ return { key, current: err.current };
221
+ };
165
222
  const sameJson = (a, b) => isDeepStrictEqual(JSON.parse(JSON.stringify(a)), JSON.parse(JSON.stringify(b)));
166
223
  // By namespace: the fake names a range's bounds `gt`, `gte`, `lt` and `lte`.
167
224
  const RANGE = { gt: drizzle.gt, gte: drizzle.gte, lt: drizzle.lt, lte: drizzle.lte };
@@ -180,11 +237,62 @@ export function collectionsDriver(list, store) {
180
237
  updatedBy: row.updatedBy,
181
238
  });
182
239
  const here = (key) => and(eq(data.collection, c.name), eq(data.key, key));
240
+ /** The record on `db`, as `get` answers it and a refused save or delete carries it (`current`). */
241
+ const getOn = async (db, key) => {
242
+ const [row] = await db.select(COLUMNS).from(data).where(here(key));
243
+ return row ? saved(row) : null;
244
+ };
245
+ /** One save on `db`, as `save` makes it and a batch makes each of its records. */
246
+ const saveOn = async (db, { record, ifAbsent, ifRecord }, by) => {
247
+ const key = record[c.key];
248
+ if (ifRecord !== undefined) {
249
+ // PostgreSQL locks and rechecks the predicate on a concurrent update. A lost-response
250
+ // retry may recover its own identical result, but never overwrite another actor's state.
251
+ const retry = and(eq(data.record, record), eq(data.updatedBy, by));
252
+ const [row] = await db
253
+ .update(data)
254
+ .set({ record, updatedAt: sql `CASE WHEN ${retry} THEN ${data.updatedAt} ELSE now() END`, updatedBy: by })
255
+ .where(and(here(key), or(eq(data.record, ifRecord), retry)))
256
+ .returning(COLUMNS);
257
+ if (row)
258
+ return saved(row);
259
+ throw recordChanged(await getOn(db, key));
260
+ }
261
+ // The conflict row is locked by Postgres: never implement an insert-only claim as get + save.
262
+ // An identical retry by the same actor keeps the first receipt and never overwrites later progress.
263
+ const conflict = ifAbsent
264
+ ? { set: { record: sql `${data.record}` }, setWhere: and(eq(data.record, record), eq(data.updatedBy, by)) }
265
+ : { set: { record, updatedAt: sql `now()`, updatedBy: by } };
266
+ const [row] = await db
267
+ .insert(data)
268
+ .values({ collection: c.name, key, record, updatedBy: by })
269
+ .onConflictDoUpdate({ target: [data.collection, data.key], ...conflict })
270
+ .returning(COLUMNS);
271
+ if (row)
272
+ return saved(row);
273
+ const current = await getOn(db, key);
274
+ // Gone between the refusal and this read: what refused it was a record, so it has changed since.
275
+ throw current ? recordExists(current) : recordChanged(null);
276
+ };
277
+ /**
278
+ * One delete on `db`, as `delete` makes it and a batch makes each of its deletes. A retry
279
+ * (`attempt` past the first) that finds no record under `ifRecord` deleted it the first time,
280
+ * and its answer was lost: nothing is left to recover a receipt from, so it is deleted.
281
+ */
282
+ const deleteOn = async (db, { key, ifRecord }, retrying) => {
283
+ const gone = await db
284
+ .delete(data)
285
+ .where(ifRecord === undefined ? here(key) : and(here(key), eq(data.record, ifRecord)))
286
+ .returning({ key: data.key });
287
+ if (gone.length || ifRecord === undefined)
288
+ return { key, deleted: gone.length > 0 };
289
+ const current = await getOn(db, key);
290
+ if (current === null && retrying)
291
+ return { key, deleted: true };
292
+ throw recordChanged(current);
293
+ };
183
294
  const ops = {
184
- get: async ({ key }) => {
185
- const [row] = await (await store.db()).select(COLUMNS).from(data).where(here(key));
186
- return row ? saved(row) : null;
187
- },
295
+ get: async ({ key }) => getOn(await store.db(), key),
188
296
  list: async (listing) => {
189
297
  const { where, order } = listClauses(c, listing);
190
298
  const rows = await (await store.db())
@@ -195,41 +303,36 @@ export function collectionsDriver(list, store) {
195
303
  .limit(listing.limit);
196
304
  return rows.map(saved);
197
305
  },
198
- save: async ({ record, ifAbsent, ifRecord }, call) => {
199
- const db = await store.db();
200
- const key = record[c.key];
201
- const by = updatedBy(call);
202
- if (ifRecord !== undefined) {
203
- // PostgreSQL locks and rechecks the predicate on a concurrent update. A lost-response
204
- // retry may recover its own identical result, but never overwrite another actor's state.
205
- const retry = and(eq(data.record, record), eq(data.updatedBy, by));
206
- const [row] = await db
207
- .update(data)
208
- .set({ record, updatedAt: sql `CASE WHEN ${retry} THEN ${data.updatedAt} ELSE now() END`, updatedBy: by })
209
- .where(and(here(key), or(eq(data.record, ifRecord), retry)))
210
- .returning(COLUMNS);
211
- if (!row)
212
- throw recordChanged();
213
- return saved(row);
214
- }
215
- // The conflict row is locked by Postgres: never implement an insert-only claim as get + save.
216
- // An identical retry by the same actor keeps the first receipt and never overwrites later progress.
217
- const conflict = ifAbsent
218
- ? { set: { record: sql `${data.record}` }, setWhere: and(eq(data.record, record), eq(data.updatedBy, by)) }
219
- : { set: { record, updatedAt: sql `now()`, updatedBy: by } };
220
- const [row] = await db
221
- .insert(data)
222
- .values({ collection: c.name, key, record, updatedBy: by })
223
- .onConflictDoUpdate({ target: [data.collection, data.key], ...conflict })
224
- .returning(COLUMNS);
225
- if (!row)
226
- throw recordExists();
227
- return saved(row);
228
- },
229
- delete: async ({ key }) => {
230
- const gone = await (await store.db()).delete(data).where(here(key)).returning({ key: data.key });
231
- return { deleted: gone.length > 0 };
306
+ count: async (counting) => {
307
+ const [row] = await (await store.db())
308
+ .select({ count: drizzle.count() })
309
+ .from(data)
310
+ .where(listClauses(c, counting).where);
311
+ return { count: row.count };
232
312
  },
313
+ save: async (input, call) => saveOn(await store.db(), input, updatedBy(call)),
314
+ // One transaction: a conflict on any entry, collected so each is answered, rolls back them all.
315
+ [BATCH]: async ({ records, deletes }, call) => (await store.db()).transaction(async (tx) => {
316
+ const by = updatedBy(call);
317
+ const results = [];
318
+ const conflicts = [];
319
+ const made = async (key, entry) => {
320
+ try {
321
+ results.push(await entry);
322
+ }
323
+ catch (err) {
324
+ conflicts.push(conflictOf(key, err));
325
+ }
326
+ };
327
+ for (const e of records)
328
+ await made(e.record[c.key], saveOn(tx, e, by));
329
+ for (const e of deletes)
330
+ await made(e.key, deleteOn(tx, e, call.attempt > 1));
331
+ if (conflicts.length)
332
+ throw recordsChanged(conflicts);
333
+ return results;
334
+ }),
335
+ delete: async (input, call) => deleteOn(await store.db(), input, call.attempt > 1),
233
336
  };
234
337
  return [c.name, ops];
235
338
  });
@@ -330,45 +433,87 @@ export function collectionsFake(list) {
330
433
  const records = () => state[c.name];
331
434
  const types = jsonTypesOf(c);
332
435
  const saved = (stored) => answer(c, structuredClone(stored));
436
+ const stored = (key) => (Object.hasOwn(records(), key) ? records()[key] : undefined);
437
+ const matching = (where = {}) => Object.values(records()).filter((s) => matches(s.record, where, types));
438
+ const save = ({ record, ifAbsent, ifRecord }, by) => {
439
+ const key = record[c.key];
440
+ const previous = stored(key);
441
+ if (ifRecord !== undefined) {
442
+ if (!previous)
443
+ throw recordChanged(null);
444
+ if (previous.updatedBy === by && sameJson(previous.record, record))
445
+ return saved(previous);
446
+ if (!sameJson(previous.record, ifRecord))
447
+ throw recordChanged(saved(previous));
448
+ }
449
+ if (ifAbsent && previous) {
450
+ // Postgres jsonb ignores property order and omitted undefined fields.
451
+ if (previous.updatedBy !== by || !sameJson(previous.record, record))
452
+ throw recordExists(saved(previous));
453
+ return saved(previous);
454
+ }
455
+ const next = { key, record: structuredClone(record), updatedAt: new Date().toISOString(), updatedBy: by };
456
+ records()[key] = next;
457
+ return saved(next);
458
+ };
459
+ const remove = ({ key, ifRecord }, retrying) => {
460
+ const previous = stored(key);
461
+ if (ifRecord !== undefined && !(previous && sameJson(previous.record, ifRecord))) {
462
+ // As the driver: a retry finding no record deleted it the first time.
463
+ if (!previous && retrying)
464
+ return { key, deleted: true };
465
+ throw recordChanged(previous ? saved(previous) : null);
466
+ }
467
+ delete records()[key];
468
+ return { key, deleted: previous !== undefined };
469
+ };
333
470
  const ops = {
334
- get: async ({ key }) => (Object.hasOwn(records(), key) ? saved(records()[key]) : null),
335
- list: async ({ where = {}, order, limit }) => Object.values(records())
336
- .filter((s) => matches(s.record, where, types))
337
- .toSorted(byOrder(order, types))
338
- .slice(0, limit)
339
- .map(saved),
340
- save: async ({ record, ifAbsent, ifRecord }, call) => {
341
- const key = record[c.key];
342
- if (ifRecord !== undefined) {
343
- const previous = Object.hasOwn(records(), key) ? records()[key] : undefined;
344
- if (!previous)
345
- throw recordChanged();
346
- if (previous.updatedBy === updatedBy(call) && sameJson(previous.record, record))
347
- return saved(previous);
348
- if (!sameJson(previous.record, ifRecord))
349
- throw recordChanged();
471
+ get: async ({ key }) => {
472
+ const s = stored(key);
473
+ return s ? saved(s) : null;
474
+ },
475
+ list: async ({ where, order, limit }) => matching(where).toSorted(byOrder(order, types)).slice(0, limit).map(saved),
476
+ count: async ({ where }) => ({ count: matching(where).length }),
477
+ save: async (input, call) => save(input, updatedBy(call)),
478
+ // All or none, as the driver's transaction: a failure puts back every entry made before it.
479
+ [BATCH]: async ({ records: saves, deletes }, call) => {
480
+ const by = updatedBy(call);
481
+ const results = [];
482
+ const conflicts = [];
483
+ const before = new Map();
484
+ const restore = () => {
485
+ for (const [key, previous] of before) {
486
+ if (previous)
487
+ records()[key] = previous;
488
+ else
489
+ delete records()[key];
490
+ }
491
+ };
492
+ const made = (key, entry) => {
493
+ before.set(key, stored(key));
494
+ try {
495
+ results.push(entry());
496
+ }
497
+ catch (err) {
498
+ conflicts.push(conflictOf(key, err));
499
+ }
500
+ };
501
+ try {
502
+ for (const e of saves)
503
+ made(e.record[c.key], () => save(e, by));
504
+ for (const e of deletes)
505
+ made(e.key, () => remove(e, call.attempt > 1));
350
506
  }
351
- if (ifAbsent && Object.hasOwn(records(), key)) {
352
- const previous = records()[key];
353
- // Postgres jsonb ignores property order and omitted undefined fields.
354
- if (previous.updatedBy !== updatedBy(call) || !sameJson(previous.record, record))
355
- throw recordExists();
356
- return saved(previous);
507
+ catch (err) {
508
+ restore();
509
+ throw err;
357
510
  }
358
- const stored = {
359
- key,
360
- record: structuredClone(record),
361
- updatedAt: new Date().toISOString(),
362
- updatedBy: updatedBy(call),
363
- };
364
- records()[key] = stored;
365
- return saved(stored);
366
- },
367
- delete: async ({ key }) => {
368
- const had = Object.hasOwn(records(), key);
369
- delete records()[key];
370
- return { deleted: had };
511
+ if (!conflicts.length)
512
+ return results;
513
+ restore();
514
+ throw recordsChanged(conflicts);
371
515
  },
516
+ delete: async (input, call) => remove(input, call.attempt > 1),
372
517
  };
373
518
  return [c.name, ops];
374
519
  })),
@@ -1 +1 @@
1
- {"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collection.js","sourceRoot":"","sources":["../src/collection.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -14,7 +14,7 @@ import type { Policy } from "./policy.ts";
14
14
  import { type Resource } from "./resource.ts";
15
15
  import { type RemoteHalf } from "./source.ts";
16
16
  import type { Steps } from "./steps.ts";
17
- import { type ResourceProblem } from "./resources.ts";
17
+ import { type DeclaredResource, type ResourceProblem } from "./resources.ts";
18
18
  import { type DeclaredWakeup, type EnvWakeup } from "./wakeup.ts";
19
19
  /**
20
20
  * What a worker runs, on which connectors: the argument to `startWorker`.
@@ -144,6 +144,8 @@ export interface ResolvedConfig {
144
144
  logins: ReadonlyMap<string, NonNullable<ConnectorSetup["login"]>>;
145
145
  /** The makers of the model halves the connectors attach, by vendor id in `connectors` order: the app makes each once for its model registry. */
146
146
  models: ReadonlyMap<string, NonNullable<ConnectorSetup["model"]>>;
147
+ /** The makers of the sandbox halves the connectors attach, by vendor id in `connectors` order: the app makes one for the declared sandbox's vendor (`sandboxes`) when a coding agent's turn opens a box. */
148
+ sandboxBackends: ReadonlyMap<string, NonNullable<ConnectorSetup["sandbox"]>>;
147
149
  /** The remote halves the connectors attach, made once for this resolution, by vendor id in `connectors` order: `remoteFor` finds a URL's. */
148
150
  remotes: ReadonlyMap<string, RemoteHalf>;
149
151
  /**
@@ -153,11 +155,12 @@ export interface ResolvedConfig {
153
155
  */
154
156
  hosts(): Promise<string[]>;
155
157
  /**
156
- * The resources the data files under `root` declare whose type is a sandbox (`<file>#<export>`),
157
- * read at each call: where a coding agent's boxes are opened. None when no connector declares a
158
- * sandbox type.
158
+ * The resources the data files under `root` declare whose type is a sandbox, read at each call:
159
+ * where a coding agent's boxes are opened, its connector's backend (`sandboxBackends`) given its
160
+ * fields. At most one: several are each a problem of the data files, and left out. None when no
161
+ * connector declares a sandbox type.
159
162
  */
160
- sandboxes(): Promise<string[]>;
163
+ sandboxes(): Promise<DeclaredResource[]>;
161
164
  /**
162
165
  * The objects the data files under `root` declare, read at each call: what a workflow's change
163
166
  * operation may not aim at, since only apply changes a declared object.