@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.
- package/README.md +13 -9
- package/dist/call.d.ts +35 -4
- package/dist/call.js +128 -40
- package/dist/call.js.map +1 -1
- package/dist/client.d.ts +17 -8
- package/dist/client.js +90 -51
- package/dist/client.js.map +1 -1
- package/dist/collection.d.ts +25 -7
- package/dist/collection.js +236 -91
- package/dist/collection.js.map +1 -1
- package/dist/config.d.ts +8 -5
- package/dist/config.js +10 -10
- package/dist/config.js.map +1 -1
- package/dist/db/company.d.ts +20 -0
- package/dist/db/company.js +9 -1
- package/dist/db/company.js.map +1 -1
- package/dist/describe.js +1 -1
- package/dist/describe.js.map +1 -1
- package/dist/description.js +1 -1
- package/dist/description.js.map +1 -1
- package/dist/errors.d.ts +2 -1
- package/dist/errors.js +3 -2
- package/dist/errors.js.map +1 -1
- package/dist/grid.js +3 -2
- package/dist/grid.js.map +1 -1
- package/dist/host-derive.d.ts +13 -8
- package/dist/host-derive.js +26 -13
- package/dist/host-derive.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/ledger.d.ts +7 -0
- package/dist/ledger.js +32 -2
- package/dist/ledger.js.map +1 -1
- package/dist/local-sandbox.d.ts +8 -1
- package/dist/local-sandbox.js +3 -2
- package/dist/local-sandbox.js.map +1 -1
- package/dist/op.d.ts +3 -2
- package/dist/op.js.map +1 -1
- package/dist/resources.d.ts +1 -1
- package/dist/resources.js +9 -6
- package/dist/resources.js.map +1 -1
- package/dist/runner-box.d.ts +23 -0
- package/dist/runner-box.js +181 -0
- package/dist/runner-box.js.map +1 -0
- package/dist/runner-protocol.d.ts +73 -0
- package/dist/runner-protocol.js +34 -0
- package/dist/runner-protocol.js.map +1 -0
- package/dist/sandbox-contract.d.ts +14 -5
- package/dist/sandbox-contract.js.map +1 -1
- package/dist/sandbox-runner.cjs +7 -0
- package/dist/scenario.js +16 -7
- package/dist/scenario.js.map +1 -1
- package/dist/schema.js +6 -3
- package/dist/schema.js.map +1 -1
- package/dist/secret.d.ts +2 -1
- package/dist/secret.js +3 -2
- package/dist/secret.js.map +1 -1
- package/dist/shared.d.ts +39 -5
- package/dist/shared.js +13 -1
- package/dist/shared.js.map +1 -1
- package/dist/sites.js +10 -8
- package/dist/sites.js.map +1 -1
- package/dist/source.d.ts +21 -0
- package/dist/source.js.map +1 -1
- package/drizzle/company/0003_ledger_target.sql +2 -0
- package/drizzle/company/meta/0003_snapshot.json +845 -0
- package/drizzle/company/meta/_journal.json +7 -0
- package/package.json +5 -2
- package/src/call.ts +181 -60
- package/src/client.ts +118 -67
- package/src/collection.ts +265 -97
- package/src/config.ts +20 -20
- package/src/db/company.ts +9 -1
- package/src/describe.ts +1 -1
- package/src/description.ts +1 -1
- package/src/errors.ts +3 -2
- package/src/grid.ts +3 -1
- package/src/host-derive.ts +38 -18
- package/src/index.ts +2 -0
- package/src/ledger.ts +42 -2
- package/src/local-sandbox.ts +3 -2
- package/src/op.ts +3 -2
- package/src/resources.ts +8 -6
- package/src/runner-box.ts +218 -0
- package/src/runner-protocol.ts +61 -0
- package/src/sandbox-contract.ts +11 -4
- package/src/sandbox-runner.ts +187 -0
- package/src/scenario.ts +16 -6
- package/src/schema.ts +14 -3
- package/src/secret.ts +6 -2
- package/src/shared.ts +40 -4
- package/src/sites.ts +11 -7
- package/src/source.ts +14 -0
package/dist/collection.d.ts
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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`,
|
|
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
|
package/dist/collection.js
CHANGED
|
@@ -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`,
|
|
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
|
-
/**
|
|
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
|
|
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:
|
|
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: () =>
|
|
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:
|
|
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:
|
|
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) => [
|
|
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
|
-
|
|
160
|
-
const
|
|
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
|
-
|
|
199
|
-
const
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
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 }) =>
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
save: async (
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
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
|
-
|
|
352
|
-
|
|
353
|
-
|
|
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
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
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
|
})),
|
package/dist/collection.js.map
CHANGED
|
@@ -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
|
|
157
|
-
*
|
|
158
|
-
*
|
|
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<
|
|
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.
|