@sanoma-ai/workflows 0.2.0 → 0.4.1
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 +146 -85
- package/dist/approvals.d.ts +11 -6
- package/dist/approvals.js +38 -10
- package/dist/approvals.js.map +1 -1
- package/dist/call-workflow.d.ts +16 -0
- package/dist/call-workflow.js +35 -0
- package/dist/call-workflow.js.map +1 -0
- package/dist/call.d.ts +33 -4
- package/dist/call.js +107 -42
- package/dist/call.js.map +1 -1
- package/dist/cedar.d.ts +87 -0
- package/dist/cedar.js +365 -0
- package/dist/cedar.js.map +1 -0
- package/dist/client.d.ts +85 -7
- package/dist/client.js +289 -25
- package/dist/client.js.map +1 -1
- package/dist/collection.d.ts +107 -0
- package/dist/collection.js +306 -0
- package/dist/collection.js.map +1 -0
- package/dist/config.d.ts +42 -14
- package/dist/config.js +82 -18
- package/dist/config.js.map +1 -1
- package/dist/constructors.d.ts +2 -0
- package/dist/constructors.js +5 -0
- package/dist/constructors.js.map +1 -0
- package/dist/data.d.ts +2 -0
- package/dist/data.js +3 -0
- package/dist/data.js.map +1 -0
- package/dist/datafile.d.ts +28 -2
- package/dist/datafile.js +118 -19
- package/dist/datafile.js.map +1 -1
- package/dist/db.d.ts +5 -3
- package/dist/db.js +88 -21
- package/dist/db.js.map +1 -1
- package/dist/define.d.ts +14 -5
- package/dist/define.js +1 -5
- package/dist/define.js.map +1 -1
- package/dist/describe.d.ts +45 -5
- package/dist/describe.js +72 -7
- package/dist/describe.js.map +1 -1
- package/dist/direct.d.ts +9 -0
- package/dist/direct.js +11 -0
- package/dist/direct.js.map +1 -0
- package/dist/errors.d.ts +16 -1
- package/dist/errors.js +30 -1
- package/dist/errors.js.map +1 -1
- package/dist/expectations.d.ts +3 -3
- package/dist/expectations.js +16 -7
- package/dist/expectations.js.map +1 -1
- package/dist/fill.d.ts +4 -0
- package/dist/fill.js +13 -0
- package/dist/fill.js.map +1 -1
- package/dist/index.d.ts +8 -4
- package/dist/index.js +10 -4
- package/dist/index.js.map +1 -1
- package/dist/ledger.d.ts +12 -1
- package/dist/ledger.js +18 -11
- package/dist/ledger.js.map +1 -1
- package/dist/lint.d.ts +5 -4
- package/dist/lint.js +24 -7
- package/dist/lint.js.map +1 -1
- package/dist/op.d.ts +6 -0
- package/dist/op.js.map +1 -1
- package/dist/outline.d.ts +2 -0
- package/dist/outline.js +1 -1
- package/dist/outline.js.map +1 -1
- package/dist/paths.d.ts +4 -0
- package/dist/paths.js +17 -3
- package/dist/paths.js.map +1 -1
- package/dist/person.d.ts +61 -0
- package/dist/person.js +69 -0
- package/dist/person.js.map +1 -0
- package/dist/plugin.d.ts +28 -0
- package/dist/plugin.js +52 -1
- package/dist/plugin.js.map +1 -1
- package/dist/policy.d.ts +51 -55
- package/dist/policy.js +14 -36
- package/dist/policy.js.map +1 -1
- package/dist/resource.d.ts +21 -5
- package/dist/resource.js +12 -3
- package/dist/resource.js.map +1 -1
- package/dist/resources.d.ts +58 -6
- package/dist/resources.js +119 -26
- package/dist/resources.js.map +1 -1
- package/dist/run.d.ts +17 -1
- package/dist/run.js.map +1 -1
- package/dist/scenario.d.ts +16 -9
- package/dist/scenario.js +149 -44
- package/dist/scenario.js.map +1 -1
- package/dist/scenarios.d.ts +10 -6
- package/dist/scenarios.js +8 -4
- package/dist/scenarios.js.map +1 -1
- package/dist/schema.d.ts +32 -0
- package/dist/schema.js +225 -0
- package/dist/schema.js.map +1 -0
- package/dist/sdk.d.ts +34 -0
- package/dist/sdk.js +168 -0
- package/dist/sdk.js.map +1 -0
- package/dist/shared.d.ts +181 -5
- package/dist/shared.js +160 -7
- package/dist/shared.js.map +1 -1
- package/dist/sites.d.ts +52 -0
- package/dist/sites.js +174 -0
- package/dist/sites.js.map +1 -0
- package/dist/version.d.ts +3 -2
- package/dist/version.js +3 -2
- package/dist/version.js.map +1 -1
- package/dist/worker.d.ts +3 -2
- package/dist/worker.js +24 -4
- package/dist/worker.js.map +1 -1
- package/oxlint.json +7 -20
- package/package.json +8 -3
- package/src/approvals.ts +49 -13
- package/src/call-workflow.ts +44 -0
- package/src/call.ts +157 -45
- package/src/cedar.ts +493 -0
- package/src/client.ts +368 -37
- package/src/collection.ts +431 -0
- package/src/config.ts +131 -34
- package/src/constructors.ts +4 -0
- package/src/data.ts +10 -0
- package/src/datafile.ts +141 -21
- package/src/db.ts +90 -22
- package/src/define.ts +15 -10
- package/src/describe.ts +113 -10
- package/src/direct.ts +15 -0
- package/src/errors.ts +36 -1
- package/src/expectations.ts +17 -8
- package/src/fill.ts +15 -0
- package/src/index.ts +33 -2
- package/src/ledger.ts +35 -17
- package/src/lint.ts +29 -12
- package/src/op.ts +6 -0
- package/src/outline.ts +1 -1
- package/src/paths.ts +18 -3
- package/src/person.ts +75 -0
- package/src/plugin.ts +74 -5
- package/src/policy.ts +59 -63
- package/src/resource.ts +35 -8
- package/src/resources.ts +165 -24
- package/src/run.ts +18 -1
- package/src/scenario.ts +186 -57
- package/src/scenarios.ts +15 -8
- package/src/schema.ts +261 -0
- package/src/sdk.ts +211 -0
- package/src/shared.ts +271 -8
- package/src/sites.ts +220 -0
- package/src/version.ts +3 -2
- package/src/worker.ts +29 -6
package/dist/client.js
CHANGED
|
@@ -3,16 +3,29 @@ import { isDeepStrictEqual } from "node:util";
|
|
|
3
3
|
import { Error as DBOSErrors } from "@dbos-inc/dbos-sdk";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
import { APPROVALS_EVENT, ApprovalMessage, decisionEventOf, messageKeyOf, topicOf } from "./approvals.js";
|
|
6
|
+
import { beforeOf, decideCall, decideStart, recorded, startHoldOf } from "./call.js";
|
|
7
|
+
import { collectionsDriver } from "./collection.js";
|
|
6
8
|
import { resolveConfig } from "./config.js";
|
|
7
|
-
import { deleteCredential, storeCredential, storedCredentials } from "./credentials.js";
|
|
9
|
+
import { deleteCredential, storeCredential, storedCredentials, storedSecrets } from "./credentials.js";
|
|
8
10
|
import { dbosClient, lazyPool } from "./db.js";
|
|
9
11
|
import { credentialsOf } from "./env.js";
|
|
10
|
-
import {
|
|
12
|
+
import { Principal } from "./define.js";
|
|
11
13
|
import { APPLY_WORKFLOW } from "./apply.js";
|
|
12
14
|
import { DRIFT_WORKFLOW } from "./drift.js";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
15
|
+
import { isDirect } from "./direct.js";
|
|
16
|
+
import { ApprovalPendingError, errorCode, errorInfo, parseOrThrow, PolicyDeniedError, SanomaError, } from "./errors.js";
|
|
17
|
+
import { insertRecord, ownedLedger } from "./ledger.js";
|
|
18
|
+
import { allowAll } from "./policy.js";
|
|
19
|
+
import { admit, readPeople } from "./resources.js";
|
|
20
|
+
import { BUILT_IN_WORKFLOWS, CALL_WORKFLOW, DATA_VENDOR, errorMessage, isEnded, refusalOf, WORKFLOW_ACTION, } from "./shared.js";
|
|
21
|
+
/** A principal, or its id alone. */
|
|
22
|
+
const PrincipalOrId = z.union([
|
|
23
|
+
z
|
|
24
|
+
.string()
|
|
25
|
+
.regex(/\S/)
|
|
26
|
+
.transform((id) => ({ id })),
|
|
27
|
+
Principal,
|
|
28
|
+
]);
|
|
16
29
|
/**
|
|
17
30
|
* The run status each DBOS status maps to. `waiting` is PENDING with an approval pending, so
|
|
18
31
|
* only the approvals tell it from `running`. Keyed by every DBOS status, so one a later DBOS
|
|
@@ -57,12 +70,15 @@ export class SanomaClient {
|
|
|
57
70
|
audit;
|
|
58
71
|
/** On the config's database, for the credentials table: opened on first use. */
|
|
59
72
|
credentialsPool;
|
|
73
|
+
/** What a direct call's driver reads secrets from, as a worker's live driver does. */
|
|
74
|
+
storedSecrets;
|
|
60
75
|
constructor(dbos, config, drivers) {
|
|
61
76
|
this.dbos = dbos;
|
|
62
77
|
this.config = config;
|
|
63
78
|
this.drivers = drivers;
|
|
64
79
|
this.audit = ownedLedger(config);
|
|
65
80
|
this.credentialsPool = lazyPool(config.databaseUrl, "credentials");
|
|
81
|
+
this.storedSecrets = storedSecrets(() => this.credentialsDb(), "sanoma");
|
|
66
82
|
}
|
|
67
83
|
/**
|
|
68
84
|
* Connects to the runtime's Postgres for the config's app. Checks the config first and throws
|
|
@@ -81,6 +97,7 @@ export class SanomaClient {
|
|
|
81
97
|
* `workflow` is a definition, or the name of one in the config's `workflows`.
|
|
82
98
|
*/
|
|
83
99
|
async start(workflow, input, options) {
|
|
100
|
+
const startedBy = await this.admitted(parseOrThrow(PrincipalOrId, options?.startedBy, '`startedBy` must be a principal, such as "alice" or { id: "alice" }'));
|
|
84
101
|
if (typeof workflow === "string") {
|
|
85
102
|
const named = this.config.workflows.get(workflow);
|
|
86
103
|
if (!named) {
|
|
@@ -92,11 +109,13 @@ export class SanomaClient {
|
|
|
92
109
|
}
|
|
93
110
|
workflow = named;
|
|
94
111
|
}
|
|
95
|
-
|
|
96
|
-
const
|
|
112
|
+
// The policy decides the start on the input as parsed, its defaults filled, as the Cedar schema types it.
|
|
113
|
+
const parsed = parseOrThrow(workflow.input, input, `The input does not match ${workflow.name}'s schema`);
|
|
97
114
|
const { runId } = options;
|
|
98
115
|
const sandbox = parseOrThrow(z.string().min(1).optional(), options.sandbox, "`sandbox` must be the name of a scenario in the config's `scenarios/`");
|
|
99
|
-
const
|
|
116
|
+
const hold = await this.startHold(workflow.name, parsed, startedBy, runId);
|
|
117
|
+
const args = { input, startedBy, ...(sandbox === undefined ? {} : { sandbox }), ...(hold && { hold }) };
|
|
118
|
+
const { onBehalfOf } = startedBy;
|
|
100
119
|
// An id DBOS has already returns that run, unless it is another workflow's, which DBOS refuses.
|
|
101
120
|
const handle = await this.dbos
|
|
102
121
|
.enqueue({
|
|
@@ -106,8 +125,9 @@ export class SanomaClient {
|
|
|
106
125
|
applicationName: this.config.appName,
|
|
107
126
|
authenticatedUser: startedBy.id,
|
|
108
127
|
authenticatedRoles: startedBy.groups ?? [],
|
|
109
|
-
// Kept on the run's status row too, so a listing tells sandbox runs apart without its input
|
|
110
|
-
|
|
128
|
+
// Kept on the run's status row too, so a listing tells sandbox runs apart without its input,
|
|
129
|
+
// and says whom an agent's run is for (DBOS keeps the principal's id and groups itself).
|
|
130
|
+
...((sandbox !== undefined || onBehalfOf !== undefined) && { attributes: { sandbox, onBehalfOf } }),
|
|
111
131
|
}, args)
|
|
112
132
|
.catch((err) => {
|
|
113
133
|
if (runId !== undefined && err instanceof DBOSErrors.DBOSConflictingWorkflowError) {
|
|
@@ -120,6 +140,200 @@ export class SanomaClient {
|
|
|
120
140
|
await this.mustMatch(runId, args);
|
|
121
141
|
return handle.workflowID;
|
|
122
142
|
}
|
|
143
|
+
/**
|
|
144
|
+
* The policy's answer to starting a run of `workflow` as `startedBy` (`decideStart`), for a
|
|
145
|
+
* workflow of the config's own: a deny throws `policy_denied`; a hold is what the run waits on
|
|
146
|
+
* before its body. A run `runId` names already is returned as it is, whatever the policy says now.
|
|
147
|
+
*/
|
|
148
|
+
async startHold(workflow, input, startedBy, runId) {
|
|
149
|
+
const { policy } = this.config;
|
|
150
|
+
if (BUILT_IN_WORKFLOWS.has(workflow) || policy === allowAll)
|
|
151
|
+
return undefined;
|
|
152
|
+
if (runId !== undefined && (await this.row(runId)))
|
|
153
|
+
return undefined;
|
|
154
|
+
const decision = decideStart(policy, workflow, input, startedBy);
|
|
155
|
+
if (decision.kind === "allow")
|
|
156
|
+
return undefined;
|
|
157
|
+
if (decision.kind === "deny")
|
|
158
|
+
throw new PolicyDeniedError(`${WORKFLOW_ACTION}${workflow}`, decision.reason);
|
|
159
|
+
return startHoldOf(workflow, decision);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Calls an operation directly, outside a run, as `actor`: one that may be (`isDirect`), a
|
|
163
|
+
* collection's or a vendor's read, never a vendor's write, the runtime's own or a resource
|
|
164
|
+
* type's (`invalid_input`, as is an unknown id or input its schema refuses). The policy decides
|
|
165
|
+
* it as the person, in a run `direct:<actor>:<id>` of the workflow `call` with no approvals. A
|
|
166
|
+
* deny throws `policy_denied` and writes nothing. An allowed call runs the driver once, without
|
|
167
|
+
* DBOS and without a retry (a driver's failure is `driver_failed`). A read returns its output
|
|
168
|
+
* and records nothing. A write is recorded as one `op.called` (seq 0) in that run, and with the
|
|
169
|
+
* default ledger in one transaction with the record it saves, so both are written or neither;
|
|
170
|
+
* a write with the same id and input returns the output recorded. When the policy asks for an
|
|
171
|
+
* approval, the call becomes run `call:<actor>:<id>` of the built-in `call` workflow, started
|
|
172
|
+
* as the person, which makes it once approved, and this throws `approval_pending` with its id.
|
|
173
|
+
*/
|
|
174
|
+
async call(opId, input, options) {
|
|
175
|
+
const actor = await this.admitted(parseOrThrow(PrincipalOrId, options?.actor, '`actor` must be a principal, such as "alice" or { id: "alice" }'));
|
|
176
|
+
const id = parseOrThrow(z.string().min(1).optional(), options.id, "`id` must be a non-empty string") ?? randomUUID();
|
|
177
|
+
const { ops, types, drivers, policy } = this.config;
|
|
178
|
+
const op = ops.get(opId);
|
|
179
|
+
if (!op || !isDirect(op, types)) {
|
|
180
|
+
const why = op ? "it is a workflow's to call: start one that uses it" : "no connector or collection declares it";
|
|
181
|
+
throw new SanomaError("invalid_input", `${opId} cannot be called directly: ${why}`, { op: opId });
|
|
182
|
+
}
|
|
183
|
+
const fn = drivers.get(op.id);
|
|
184
|
+
if (!fn)
|
|
185
|
+
throw new SanomaError("invalid_input", `${op.id} has no driver: the connector package must attach one`);
|
|
186
|
+
const parsed = parseOrThrow(op.input, input, `The input to ${op.id} does not match its schema`, { op: op.id });
|
|
187
|
+
const runId = `direct:${actor.id}:${id}`;
|
|
188
|
+
const heldId = `call:${actor.id}:${id}`;
|
|
189
|
+
const held = { input: { op: op.id, input }, startedBy: actor };
|
|
190
|
+
const logged = recorded(op, parsed);
|
|
191
|
+
const write = op.effect !== "read";
|
|
192
|
+
// Only an id the caller gave can have been used: a write made, or held, with it settles it.
|
|
193
|
+
if (write && options.id !== undefined) {
|
|
194
|
+
const first = (await this.recordedCall(runId, op.id, logged)) ?? (await this.heldCall(op.id, heldId, held));
|
|
195
|
+
if (first)
|
|
196
|
+
return first.output;
|
|
197
|
+
}
|
|
198
|
+
const before = await beforeOf(policy, op, parsed, this.config.collections, (get, key) => drivers.get(get)?.({ key }, { idempotencyKey: `${runId}:before`, runId, opId: get, attempt: 1, secrets: this.storedSecrets, by: actor.id }));
|
|
199
|
+
const run = { id: runId, workflow: CALL_WORKFLOW, approvals: [] };
|
|
200
|
+
const decision = decideCall(policy, op, parsed, actor, run, before);
|
|
201
|
+
if (decision.kind === "deny")
|
|
202
|
+
throw new PolicyDeniedError(op.id, decision.reason);
|
|
203
|
+
if (decision.kind === "approve") {
|
|
204
|
+
await this.start(CALL_WORKFLOW, held.input, { startedBy: actor, runId: heldId });
|
|
205
|
+
// A read held before, whose run has ended since, answers with that run's result.
|
|
206
|
+
return (await this.heldCall(op.id, heldId, held)).output;
|
|
207
|
+
}
|
|
208
|
+
const context = {
|
|
209
|
+
idempotencyKey: runId,
|
|
210
|
+
runId,
|
|
211
|
+
opId: op.id,
|
|
212
|
+
attempt: 1,
|
|
213
|
+
secrets: this.storedSecrets,
|
|
214
|
+
by: actor.id,
|
|
215
|
+
};
|
|
216
|
+
if (!write)
|
|
217
|
+
return outputOf(op, () => fn(parsed, context));
|
|
218
|
+
return this.directWrite({ op, fn, parsed, logged, actor, decision, context });
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* A direct write, made once and recorded once: with the default ledger, a collection's write
|
|
222
|
+
* and its record in one transaction on the database both are in, so both are kept or neither;
|
|
223
|
+
* otherwise the driver's call, then the record in the config's ledger. The first record of the
|
|
224
|
+
* call's id stands: a write that finds one already there (two calls with one id at once) is
|
|
225
|
+
* undone, and answers as `recordedCall` does.
|
|
226
|
+
*/
|
|
227
|
+
async directWrite(call) {
|
|
228
|
+
const { op, parsed, logged, actor, decision, context } = call;
|
|
229
|
+
const { runId } = context;
|
|
230
|
+
const { dataStore, collections, ledger } = this.config;
|
|
231
|
+
const conn = op.vendor === DATA_VENDOR && !ledger && dataStore ? await (await dataStore.db()).connect() : undefined;
|
|
232
|
+
let broken;
|
|
233
|
+
try {
|
|
234
|
+
await conn?.query("BEGIN");
|
|
235
|
+
// On the transaction's connection, the collection's own driver: it has no `env` to guard.
|
|
236
|
+
const fn = conn
|
|
237
|
+
? collectionsDriver([collections.get(op.resource)], { db: async () => conn }).ops[`${op.resource}.${op.name}`]
|
|
238
|
+
: call.fn;
|
|
239
|
+
const at = Date.now();
|
|
240
|
+
const record = (outcome) => ({
|
|
241
|
+
v: 1,
|
|
242
|
+
app: this.config.appName,
|
|
243
|
+
id: `${runId}:op.called:0`,
|
|
244
|
+
runId,
|
|
245
|
+
seq: 0,
|
|
246
|
+
at,
|
|
247
|
+
actor,
|
|
248
|
+
workflow: CALL_WORKFLOW,
|
|
249
|
+
type: "op.called",
|
|
250
|
+
op: op.id,
|
|
251
|
+
effect: op.effect,
|
|
252
|
+
input: logged,
|
|
253
|
+
decision,
|
|
254
|
+
...outcome,
|
|
255
|
+
durationMs: Date.now() - at,
|
|
256
|
+
});
|
|
257
|
+
let output;
|
|
258
|
+
try {
|
|
259
|
+
output = await outputOf(op, () => fn(parsed, context));
|
|
260
|
+
}
|
|
261
|
+
catch (err) {
|
|
262
|
+
// Recorded on the store's own connection; the transaction is rolled back below.
|
|
263
|
+
await this.audit.store.append(record({ error: errorInfo(err) }));
|
|
264
|
+
throw err;
|
|
265
|
+
}
|
|
266
|
+
const done = record({ output: recorded(op, output) });
|
|
267
|
+
if (!conn) {
|
|
268
|
+
await this.audit.store.append(done);
|
|
269
|
+
return output;
|
|
270
|
+
}
|
|
271
|
+
if (await insertRecord(conn, done)) {
|
|
272
|
+
await conn.query("COMMIT");
|
|
273
|
+
return output;
|
|
274
|
+
}
|
|
275
|
+
await conn.query("ROLLBACK");
|
|
276
|
+
return (await this.recordedCall(runId, op.id, logged)).output;
|
|
277
|
+
}
|
|
278
|
+
catch (err) {
|
|
279
|
+
await conn?.query("ROLLBACK").catch((e) => (broken = e));
|
|
280
|
+
throw err;
|
|
281
|
+
}
|
|
282
|
+
finally {
|
|
283
|
+
conn?.release(broken);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* What the direct write recorded as `runId` returned, when one did: refused (`invalid_input`)
|
|
288
|
+
* when it was of another operation or input, and its failure again (`driver_failed`) when it failed.
|
|
289
|
+
*/
|
|
290
|
+
async recordedCall(runId, opId, input) {
|
|
291
|
+
const first = (await this.audit.store.read(runId)).find((r) => r.type === "op.called");
|
|
292
|
+
if (!first)
|
|
293
|
+
return undefined;
|
|
294
|
+
const differs = [...(first.op === opId ? [] : ["op"]), ...(sameJson(first.input, input) ? [] : ["input"])];
|
|
295
|
+
if (differs.length) {
|
|
296
|
+
throw new SanomaError("invalid_input", `Call ${runId} was made already with a different ${differs.join(" and ")}; use another id`, { runId, differs });
|
|
297
|
+
}
|
|
298
|
+
if (first.error) {
|
|
299
|
+
throw new SanomaError("driver_failed", `${opId} failed when first called as ${runId}: ${first.error.message}; call again with another id`, {
|
|
300
|
+
runId,
|
|
301
|
+
op: opId,
|
|
302
|
+
error: first.error,
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
return { output: first.output };
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* What the held call's run `heldId` returned once it ended (its error, when it failed);
|
|
309
|
+
* `approval_pending` while it has not; undefined when there is no such run. Refused
|
|
310
|
+
* (`invalid_input`) when the run was started with another input or by someone else.
|
|
311
|
+
*/
|
|
312
|
+
async heldCall(opId, heldId, args) {
|
|
313
|
+
const [row] = await this.dbos.listWorkflows({ workflowIDs: [heldId], loadInput: false, loadOutput: false });
|
|
314
|
+
if (!row)
|
|
315
|
+
return undefined;
|
|
316
|
+
await this.mustMatch(heldId, args);
|
|
317
|
+
if (!isEnded(runStatus(row.status, [])))
|
|
318
|
+
throw new ApprovalPendingError(opId, heldId);
|
|
319
|
+
return { output: await this.awaitResult(heldId, 30_000) };
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* The newest finished run of the workflow, with its output and when it finished; null when it
|
|
323
|
+
* has none. One query, whatever the app's runs.
|
|
324
|
+
*/
|
|
325
|
+
async latest(workflow) {
|
|
326
|
+
const [row] = await this.dbos.listWorkflows({
|
|
327
|
+
workflowName: workflow,
|
|
328
|
+
applicationName: this.config.appName,
|
|
329
|
+
status: "SUCCESS",
|
|
330
|
+
sortDesc: true,
|
|
331
|
+
limit: 1,
|
|
332
|
+
loadInput: false,
|
|
333
|
+
loadOutput: true,
|
|
334
|
+
});
|
|
335
|
+
return row ? { runId: row.workflowID, output: row.output, at: row.updatedAt ?? row.createdAt } : null;
|
|
336
|
+
}
|
|
123
337
|
/** The run's audit record, in order, from the ledger store. */
|
|
124
338
|
async ledger(runId) {
|
|
125
339
|
await this.mustExist(runId);
|
|
@@ -167,7 +381,9 @@ export class SanomaClient {
|
|
|
167
381
|
* queued for the run, which reads it when it next runs.
|
|
168
382
|
*/
|
|
169
383
|
async decide(runId, message, approvalId, options = {}) {
|
|
170
|
-
const
|
|
384
|
+
const given = parseOrThrow(ApprovalMessage, message, "Not a decision");
|
|
385
|
+
const declared = readPeople(this.config.root);
|
|
386
|
+
const msg = { ...given, by: admit(given.by, declared) };
|
|
171
387
|
// A run that does not exist has no approvals, so run_not_found never hides already_decided.
|
|
172
388
|
const [all, row] = await Promise.all([this.approvals(runId), this.mustExist(runId)]);
|
|
173
389
|
const target = approvalId ? all.find((a) => a.id === approvalId) : all.find((a) => a.status === "pending");
|
|
@@ -185,11 +401,13 @@ export class SanomaClient {
|
|
|
185
401
|
if (!target) {
|
|
186
402
|
throw new SanomaError("no_pending_approval", `Run ${runId} has no pending approval${approvalId ? ` "${approvalId}"` : ""}`, { runId, ...(approvalId ? { approvalId } : {}) });
|
|
187
403
|
}
|
|
188
|
-
|
|
189
|
-
|
|
404
|
+
const reason = refusalOf(target, msg.by, { actor: row.authenticatedUser ? { id: row.authenticatedUser } : undefined }, declared.people);
|
|
405
|
+
if (reason !== undefined) {
|
|
406
|
+
throw new SanomaError("not_approver", `${reason} (${target.id})`, {
|
|
190
407
|
runId,
|
|
191
408
|
approvalId: target.id,
|
|
192
409
|
approver: target.approver,
|
|
410
|
+
reason,
|
|
193
411
|
});
|
|
194
412
|
}
|
|
195
413
|
// The id names this message, so the run's answer says whether it decided with it, and is
|
|
@@ -216,6 +434,7 @@ export class SanomaClient {
|
|
|
216
434
|
runId,
|
|
217
435
|
approvalId: target.id,
|
|
218
436
|
approver: target.approver,
|
|
437
|
+
reason: refused.reason,
|
|
219
438
|
});
|
|
220
439
|
}
|
|
221
440
|
if (now.status !== "pending" && now.decidedWith !== id)
|
|
@@ -283,12 +502,13 @@ export class SanomaClient {
|
|
|
283
502
|
* loads it into its environment, unless its environment sets the variable itself. Refuses
|
|
284
503
|
* (`invalid_input`) a name no driver declares, and a value the variable's schema refuses, with
|
|
285
504
|
* the schema's reason and never the value; an empty value too (`clearCredential` unsets one).
|
|
286
|
-
* Nothing records the value but its row, which records `by` and when.
|
|
505
|
+
* Nothing records the value but its row, which records `by` and when. `by` is admitted as
|
|
506
|
+
* `start`'s `startedBy` is (`not_admitted`).
|
|
287
507
|
*/
|
|
288
508
|
async setCredential(name, value, options) {
|
|
509
|
+
const setBy = await this.admittedBy(options);
|
|
289
510
|
// Checked against every declaration of the name, as the worker checks it.
|
|
290
511
|
const statuses = this.declared(name, (n) => (n === name ? value : undefined));
|
|
291
|
-
const setBy = actorOf(options);
|
|
292
512
|
const refused = statuses.find((c) => c.status !== "set");
|
|
293
513
|
if (refused) {
|
|
294
514
|
const problem = refused.problem ?? "it is empty; clear it to unset it";
|
|
@@ -302,11 +522,11 @@ export class SanomaClient {
|
|
|
302
522
|
/**
|
|
303
523
|
* Deletes the stored value of a declared variable, and tells the workers, which unset it unless
|
|
304
524
|
* their environment sets it. `by` is who asks; nothing records it once the row is gone.
|
|
305
|
-
* Refuses (`invalid_input`) a name no driver declares.
|
|
525
|
+
* Refuses (`invalid_input`) a name no driver declares, and `by` as `setCredential` does.
|
|
306
526
|
*/
|
|
307
527
|
async clearCredential(name, options) {
|
|
528
|
+
await this.admittedBy(options);
|
|
308
529
|
this.declared(name, () => undefined);
|
|
309
|
-
actorOf(options);
|
|
310
530
|
await deleteCredential(await this.credentialsDb(), name);
|
|
311
531
|
}
|
|
312
532
|
/**
|
|
@@ -319,7 +539,7 @@ export class SanomaClient {
|
|
|
319
539
|
if ([...credentialsOf(this.drivers, () => undefined).values()].flat().some((c) => c.name === name)) {
|
|
320
540
|
return this.setCredential(name, value, options);
|
|
321
541
|
}
|
|
322
|
-
const setBy =
|
|
542
|
+
const setBy = await this.admittedBy(options);
|
|
323
543
|
const problem = !VARIABLE.test(name) ? "That is not a variable name" : !value ? "Enter a value" : undefined;
|
|
324
544
|
if (problem) {
|
|
325
545
|
const path = VARIABLE.test(name) ? "value" : "name";
|
|
@@ -368,7 +588,12 @@ export class SanomaClient {
|
|
|
368
588
|
return new Map([...statuses].map(([vendor, list]) => [vendor, list.map(sourced)]));
|
|
369
589
|
}
|
|
370
590
|
async close() {
|
|
371
|
-
await Promise.all([
|
|
591
|
+
await Promise.all([
|
|
592
|
+
this.dbos.destroy(),
|
|
593
|
+
this.credentialsPool.close(),
|
|
594
|
+
this.audit.close(),
|
|
595
|
+
this.config.dataStore?.close(),
|
|
596
|
+
]);
|
|
372
597
|
}
|
|
373
598
|
/**
|
|
374
599
|
* The name's statuses with `lookup`'s value, one per vendor whose drivers declare it, or
|
|
@@ -392,17 +617,36 @@ export class SanomaClient {
|
|
|
392
617
|
credentialsDb() {
|
|
393
618
|
return this.credentialsPool.db();
|
|
394
619
|
}
|
|
620
|
+
/**
|
|
621
|
+
* The principal as the data files declare it (`admit`): its id alone is taken, never the groups
|
|
622
|
+
* a caller gives, and an id nobody declares is `not_admitted`.
|
|
623
|
+
*/
|
|
624
|
+
async admitted(principal) {
|
|
625
|
+
return admit(principal, readPeople(this.config.root));
|
|
626
|
+
}
|
|
627
|
+
/** `options.by`, who sets or clears a credential, admitted (`admitted`): their id. */
|
|
628
|
+
async admittedBy(options) {
|
|
629
|
+
const by = parseOrThrow(z.string().min(1), options?.by, '`by` must name who is asking, such as "alice"');
|
|
630
|
+
return (await this.admitted({ id: by })).id;
|
|
631
|
+
}
|
|
395
632
|
/** Refuses a run id whose run, as stored, was started with another input, by someone else, or in another sandbox. */
|
|
396
633
|
async mustMatch(runId, args) {
|
|
397
634
|
const [stored] = ((await this.dbos.getWorkflow(runId))?.input ?? []);
|
|
398
|
-
|
|
635
|
+
// Who started it by id alone: their groups are the people files' at the time, which may change.
|
|
636
|
+
const differs = ["input", "startedBy", "sandbox"].filter((key) => !stored ||
|
|
637
|
+
(key === "startedBy" ? stored.startedBy?.id !== args.startedBy.id : !sameJson(stored[key], args[key])));
|
|
399
638
|
if (differs.length) {
|
|
400
639
|
throw new SanomaError("invalid_input", `Run ${runId} already exists with a different ${differs.join(", ")}; use another run id`, { runId, differs });
|
|
401
640
|
}
|
|
402
641
|
}
|
|
403
|
-
/** The run's status row, read without its input (and its output, unless asked),
|
|
404
|
-
async
|
|
642
|
+
/** The run's status row, read without its input (and its output, unless asked), if there is one. */
|
|
643
|
+
async row(runId, { loadOutput = false } = {}) {
|
|
405
644
|
const [row] = await this.dbos.listWorkflows({ workflowIDs: [runId], loadInput: false, loadOutput });
|
|
645
|
+
return row;
|
|
646
|
+
}
|
|
647
|
+
/** The run's status row, as `row` reads it, or `run_not_found`. */
|
|
648
|
+
async mustExist(runId, options = {}) {
|
|
649
|
+
const row = await this.row(runId, options);
|
|
406
650
|
if (!row)
|
|
407
651
|
throw new SanomaError("run_not_found", `No run ${runId}`, { runId });
|
|
408
652
|
return row;
|
|
@@ -427,11 +671,18 @@ export class SanomaClient {
|
|
|
427
671
|
async summarize(r) {
|
|
428
672
|
const approvals = await this.approvals(r.workflowID);
|
|
429
673
|
const groups = r.authenticatedRoles ?? [];
|
|
674
|
+
const onBehalfOf = r.attributes?.onBehalfOf;
|
|
430
675
|
return {
|
|
431
676
|
runId: r.workflowID,
|
|
432
677
|
workflow: r.workflowName,
|
|
433
678
|
status: runStatus(r.status, approvals),
|
|
434
|
-
startedBy: r.authenticatedUser
|
|
679
|
+
startedBy: r.authenticatedUser
|
|
680
|
+
? {
|
|
681
|
+
id: r.authenticatedUser,
|
|
682
|
+
...(groups.length ? { groups } : {}),
|
|
683
|
+
...(typeof onBehalfOf === "string" && { onBehalfOf }),
|
|
684
|
+
}
|
|
685
|
+
: undefined,
|
|
435
686
|
createdAt: r.createdAt,
|
|
436
687
|
updatedAt: r.updatedAt,
|
|
437
688
|
approvals,
|
|
@@ -440,14 +691,27 @@ export class SanomaClient {
|
|
|
440
691
|
};
|
|
441
692
|
}
|
|
442
693
|
}
|
|
694
|
+
/**
|
|
695
|
+
* What a direct call's driver returned, as the operation's output schema parses it; a failure
|
|
696
|
+
* with none of the runtime's codes (a reply the schema refuses, an error the driver let escape)
|
|
697
|
+
* is `driver_failed`, naming the operation.
|
|
698
|
+
*/
|
|
699
|
+
async function outputOf(op, call) {
|
|
700
|
+
try {
|
|
701
|
+
return op.output.parse(await call());
|
|
702
|
+
}
|
|
703
|
+
catch (err) {
|
|
704
|
+
if (errorCode(err) !== undefined)
|
|
705
|
+
throw err;
|
|
706
|
+
throw new SanomaError("driver_failed", `${op.id} failed: ${errorMessage(err)}`, { op: op.id }, { cause: err });
|
|
707
|
+
}
|
|
708
|
+
}
|
|
443
709
|
/** The value as JSON reads it back: a Date as its string, undefined members gone. */
|
|
444
710
|
const asJson = (v) => (v === undefined ? undefined : JSON.parse(JSON.stringify(v)));
|
|
445
711
|
/** True when the two are the same JSON, whatever the order of their keys. */
|
|
446
712
|
const sameJson = (a, b) => isDeepStrictEqual(asJson(a), asJson(b));
|
|
447
713
|
/** What an environment variable's name looks like. */
|
|
448
714
|
const VARIABLE = /^[A-Z_][A-Z0-9_]*$/;
|
|
449
|
-
/** `options.by`, who sets or clears a credential: a name, or `invalid_input`. */
|
|
450
|
-
const actorOf = (options) => parseOrThrow(z.string().min(1), options?.by, '`by` must name who is asking, such as "alice"');
|
|
451
715
|
const alreadyDecided = (runId, a) => new SanomaError("already_decided", `${a.id} on run ${runId} was already ${a.status} by ${a.decidedBy}`, {
|
|
452
716
|
runId,
|
|
453
717
|
approvalId: a.id,
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|