@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/approvals.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { DBOS } from "@dbos-inc/dbos-sdk";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
-
import {
|
|
3
|
+
import { Principal } from "./define.js";
|
|
4
4
|
import { RejectedError } from "./errors.js";
|
|
5
5
|
import { entry, write } from "./ledger.js";
|
|
6
6
|
import { warn } from "./log.js";
|
|
7
|
-
import {
|
|
7
|
+
import { readPeople } from "./resources.js";
|
|
8
|
+
import { approverLabel, OWN_CHANGE, refusalOf } from "./shared.js";
|
|
8
9
|
// The wire contract between a run waiting on approvals and whoever decides them. The client
|
|
9
10
|
// imports this file and never the worker's.
|
|
10
11
|
/** The DBOS event a run publishes its approvals on, as `ApprovalState[]`. */
|
|
@@ -37,9 +38,10 @@ function senderOf(raw) {
|
|
|
37
38
|
return typeof id === "string" && id ? id : undefined;
|
|
38
39
|
}
|
|
39
40
|
/**
|
|
40
|
-
* Waits, durably, for a decision from someone who may make it
|
|
41
|
-
* rejection. Without `held`, the workflow asked
|
|
42
|
-
* `place` is the held call's outline node and name
|
|
41
|
+
* Waits, durably, for a decision from someone who may make it (`mayDecide`: the run's own actor
|
|
42
|
+
* only while nobody else could). Throws `RejectedError` on a rejection. Without `held`, the workflow asked
|
|
43
|
+
* (`ctx.approval`); with it, the policy did, and `place` is the held call's outline node and name
|
|
44
|
+
* (none for a run's start, which is no call in the outline).
|
|
43
45
|
*/
|
|
44
46
|
export async function awaitApproval(run, title, req, place, held) {
|
|
45
47
|
const { covers } = req;
|
|
@@ -52,7 +54,7 @@ export async function awaitApproval(run, title, req, place, held) {
|
|
|
52
54
|
...(req.details === undefined ? {} : { details: req.details }),
|
|
53
55
|
requestedBy: held ? "policy" : "workflow",
|
|
54
56
|
covers,
|
|
55
|
-
...(held
|
|
57
|
+
...(held && { op: held.op, ...heldOf(held), input: held.input }),
|
|
56
58
|
status: "pending",
|
|
57
59
|
requestedAt: 0,
|
|
58
60
|
refused: [],
|
|
@@ -68,7 +70,7 @@ export async function awaitApproval(run, title, req, place, held) {
|
|
|
68
70
|
approver: state.approver,
|
|
69
71
|
requestedBy: state.requestedBy,
|
|
70
72
|
covers,
|
|
71
|
-
...(held
|
|
73
|
+
...(held && { op: held.op, ...heldOf(held) }),
|
|
72
74
|
}, { key: state.id, at: state.requestedAt }));
|
|
73
75
|
for (;;) {
|
|
74
76
|
const raw = await DBOS.recv(topicOf(state.id), { timeoutSeconds: 24 * 60 * 60 });
|
|
@@ -79,9 +81,20 @@ export async function awaitApproval(run, title, req, place, held) {
|
|
|
79
81
|
const at = await DBOS.now();
|
|
80
82
|
const parsed = ApprovalMessage.safeParse(raw);
|
|
81
83
|
const msg = parsed.success ? parsed.data : undefined;
|
|
82
|
-
|
|
84
|
+
// The people matter only when the run's own actor decides (`refusalOf`): then they are read as
|
|
85
|
+
// the data files declare them now, in a step, so a replay decides the same. While those files
|
|
86
|
+
// have problems, someone else may be missing from them, so the starter is refused.
|
|
87
|
+
const refusal = !msg
|
|
88
|
+
? null
|
|
89
|
+
: msg.by.id === run.actor.id
|
|
90
|
+
? await DBOS.runStep(async () => {
|
|
91
|
+
const { people, problems } = readPeople(run.state.root);
|
|
92
|
+
return refusalOf(state, msg.by, run, people) ?? (problems.length ? OWN_CHANGE : null);
|
|
93
|
+
}, { name: `decider:${state.id}` })
|
|
94
|
+
: (refusalOf(state, msg.by, run, []) ?? null);
|
|
95
|
+
if (!msg || refusal !== null) {
|
|
83
96
|
const by = msg?.by.id ?? senderOf(raw);
|
|
84
|
-
const reason =
|
|
97
|
+
const reason = refusal ?? "not a valid decision message";
|
|
85
98
|
state.refused.push({
|
|
86
99
|
...(by === undefined ? {} : { by }),
|
|
87
100
|
...(msg?.id === undefined ? {} : { id: msg.id }),
|
|
@@ -92,20 +105,35 @@ export async function awaitApproval(run, title, req, place, held) {
|
|
|
92
105
|
await write(run, entry(run, { type: "approval.refused", approval: state.id, ...(by === undefined ? {} : { by }), reason }, { key: `${state.id}:refused:${state.refused.length}`, at }));
|
|
93
106
|
continue;
|
|
94
107
|
}
|
|
108
|
+
// The run's own actor decides only when nobody else could, which the record says.
|
|
109
|
+
const alone = msg.by.id === run.actor.id ? { alone: true } : {};
|
|
95
110
|
Object.assign(state, {
|
|
96
111
|
status: statusOf(msg.decision),
|
|
97
112
|
decidedBy: msg.by.id,
|
|
98
113
|
decidedAt: at,
|
|
99
114
|
note: msg.note,
|
|
100
115
|
decidedWith: msg.id,
|
|
116
|
+
...alone,
|
|
101
117
|
});
|
|
102
118
|
// The list first, then the ledger, then the decision event: whoever sees the event sees both.
|
|
103
119
|
await DBOS.setEvent(APPROVALS_EVENT, all);
|
|
104
|
-
await write(run, entry(run, {
|
|
120
|
+
await write(run, entry(run, {
|
|
121
|
+
type: "approval.decided",
|
|
122
|
+
approval: state.id,
|
|
123
|
+
decision: msg.decision,
|
|
124
|
+
by: msg.by.id,
|
|
125
|
+
note: msg.note,
|
|
126
|
+
...alone,
|
|
127
|
+
}, { key: state.id, at }));
|
|
105
128
|
await DBOS.setEvent(decisionEventOf(state.id), state);
|
|
106
129
|
if (msg.decision === "reject")
|
|
107
130
|
throw new RejectedError(title, msg.by, msg.note, state.id);
|
|
108
131
|
return { approvedBy: msg.by.id, at, note: msg.note };
|
|
109
132
|
}
|
|
110
133
|
}
|
|
134
|
+
/** What an approval and its request record keep of a hold besides the operation: its `seq` and rules, when it has them. */
|
|
135
|
+
const heldOf = ({ seq, reasons }) => ({
|
|
136
|
+
...(seq !== undefined && { opSeq: seq }),
|
|
137
|
+
...(reasons !== undefined && { reasons }),
|
|
138
|
+
});
|
|
111
139
|
//# sourceMappingURL=approvals.js.map
|
package/dist/approvals.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approvals.js","sourceRoot":"","sources":["../src/approvals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAiE,
|
|
1
|
+
{"version":3,"file":"approvals.js","sourceRoot":"","sources":["../src/approvals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type WorkflowDefinition } from "./define.ts";
|
|
3
|
+
import type { Op } from "./op.ts";
|
|
4
|
+
export { CALL_WORKFLOW } from "./shared.ts";
|
|
5
|
+
/** The call workflow's input: the operation's id, and its input. */
|
|
6
|
+
export declare const CallInput: z.ZodObject<{
|
|
7
|
+
op: z.ZodString;
|
|
8
|
+
input: z.ZodUnknown;
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
/**
|
|
11
|
+
* The call workflow for a config: it `uses` every operation that may be called directly and has
|
|
12
|
+
* a driver; `resolveConfig` adds it when there is one. A run calls `input.op` with `input.input`,
|
|
13
|
+
* and returns its output; inside it the call is made as the person who started the run, so a
|
|
14
|
+
* collection's save records them as `updatedBy`.
|
|
15
|
+
*/
|
|
16
|
+
export declare function callWorkflow(ops: ReadonlyMap<string, Op>, drivers: ReadonlyMap<string, unknown>, types: ReadonlyMap<string, unknown>): WorkflowDefinition<readonly Op[], typeof CallInput>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { defineWorkflow } from "./define.js";
|
|
3
|
+
import { isDirect } from "./direct.js";
|
|
4
|
+
export { CALL_WORKFLOW } from "./shared.js";
|
|
5
|
+
// The built-in `call` workflow: one operation that may be called directly (`isDirect`), as a run.
|
|
6
|
+
// `SanomaClient.call` starts it, as the person, when the policy holds a direct call for an
|
|
7
|
+
// approval, so the approval reaches the Inbox like any run's. It is a workflow like any other,
|
|
8
|
+
// held to the same lint: the call goes through `ctx`, under the policy, in the ledger.
|
|
9
|
+
/** The call workflow's input: the operation's id, and its input. */
|
|
10
|
+
export const CallInput = z.object({ op: z.string(), input: z.unknown() });
|
|
11
|
+
/**
|
|
12
|
+
* The call workflow for a config: it `uses` every operation that may be called directly and has
|
|
13
|
+
* a driver; `resolveConfig` adds it when there is one. A run calls `input.op` with `input.input`,
|
|
14
|
+
* and returns its output; inside it the call is made as the person who started the run, so a
|
|
15
|
+
* collection's save records them as `updatedBy`.
|
|
16
|
+
*/
|
|
17
|
+
export function callWorkflow(ops, drivers, types) {
|
|
18
|
+
const uses = [...ops.values()]
|
|
19
|
+
.filter((op) => isDirect(op, types) && drivers.has(op.id))
|
|
20
|
+
.toSorted((a, b) => a.id.localeCompare(b.id));
|
|
21
|
+
return defineWorkflow({
|
|
22
|
+
// The literal, held to the one name: the outline finds a workflow by a string, or a const of its own file.
|
|
23
|
+
name: "call",
|
|
24
|
+
title: "Call an operation",
|
|
25
|
+
trigger: "manual",
|
|
26
|
+
input: CallInput,
|
|
27
|
+
uses,
|
|
28
|
+
// `ctx` refuses an operation that is not in `uses`: one that may not be called directly, or has no driver.
|
|
29
|
+
run: async (ctx, input) => {
|
|
30
|
+
const [vendor = "", resource = "", name = ""] = input.op.split(".");
|
|
31
|
+
return ctx[vendor][resource][name](input.input);
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=call-workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-workflow.js","sourceRoot":"","sources":["../src/call-workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAA2B,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,kGAAkG;AAClG,2FAA2F;AAC3F,+FAA+F;AAC/F,uFAAuF;AAEvF,oEAAoE;AACpE,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,GAA4B,EAC5B,OAAqC,EACrC,KAAmC;IAEnC,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;SAC3B,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;SACzD,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,OAAO,cAAc,CAAC;QACpB,2GAA2G;QAC3G,IAAI,EAAE,MAAqC;QAC3C,KAAK,EAAE,mBAAmB;QAC1B,OAAO,EAAE,QAAQ;QACjB,KAAK,EAAE,SAAS;QAChB,IAAI;QACJ,2GAA2G;QAC3G,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;YACxB,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,QAAQ,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpE,OAAO,GAAG,CAAC,MAAM,CAAE,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/dist/call.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { type WorkflowDefinition } from "./define.ts";
|
|
1
|
+
import { type ApprovalState, type Principal, type WorkflowDefinition } from "./define.ts";
|
|
2
|
+
import type { Collection } from "./collection.ts";
|
|
2
3
|
import { type Op } from "./op.ts";
|
|
3
|
-
import { type RecordedDecision } from "./policy.ts";
|
|
4
|
-
import type { Run, WorkerState } from "./run.ts";
|
|
4
|
+
import { type Decision, type Policy, type PolicyCall, type RecordedDecision } from "./policy.ts";
|
|
5
|
+
import type { Run, StartHold, WorkerState } from "./run.ts";
|
|
5
6
|
/**
|
|
6
7
|
* True for a failure that is not the run's outcome, so the ledger does not record it: DBOS
|
|
7
8
|
* cancelled the run or another process took it over, or the run's worker is stopping and the
|
|
@@ -14,6 +15,8 @@ import type { Run, WorkerState } from "./run.ts";
|
|
|
14
15
|
* for good, and are recorded.
|
|
15
16
|
*/
|
|
16
17
|
export declare function isInfrastructureError(err: unknown, state: Pick<WorkerState, "stopped">): boolean;
|
|
18
|
+
/** The value as the ledger records it: each of the operation's `opaque` fields as `"<name>"`. */
|
|
19
|
+
export declare function recorded(op: Op, value: unknown): unknown;
|
|
17
20
|
/**
|
|
18
21
|
* Where a call is, as its records say: its outline node's `path`, and the step's name, as the
|
|
19
22
|
* outline resolved it (`OutlineNode`'s `name`), or for a call the outline could not name, the
|
|
@@ -33,5 +36,31 @@ export interface Placed {
|
|
|
33
36
|
* queued behind it, would never start.
|
|
34
37
|
*/
|
|
35
38
|
export declare function buildCtx(wf: WorkflowDefinition<any, any>, run: Run): any;
|
|
36
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* Asks the policy about one call, with the record a collection's `save` or
|
|
41
|
+
* `delete` replaces as `before` (`beforeOf`). Runs inside a step, so it must have no side effects
|
|
42
|
+
* of its own.
|
|
43
|
+
*/
|
|
37
44
|
export declare function decide(run: Run, op: Op, input: unknown): Promise<RecordedDecision>;
|
|
45
|
+
/**
|
|
46
|
+
* For a collection's `save` or `delete`, the record it replaces or removes, read once with the
|
|
47
|
+
* collection's `get` (`read`): `{ before }` when there is one, else nothing, and nothing read
|
|
48
|
+
* under `allowAll`, which reads no call. A failed read is named, keeping its error's code.
|
|
49
|
+
*/
|
|
50
|
+
export declare function beforeOf(policy: Policy, op: Op, input: unknown, collections: ReadonlyMap<string, Collection>, read: (get: string, key: unknown) => Promise<unknown> | undefined): Promise<{
|
|
51
|
+
before?: unknown;
|
|
52
|
+
}>;
|
|
53
|
+
/**
|
|
54
|
+
* Asks `policy` about one call of `op` as `actor` in `run`: a direct call
|
|
55
|
+
* (`SanomaClient.call`), with the record a collection's write replaces as `before` (`beforeOf`).
|
|
56
|
+
*/
|
|
57
|
+
export declare function decideCall(policy: Policy, op: Op, input: unknown, actor: Principal, run: PolicyCall["run"], before?: Pick<PolicyCall, "before">): RecordedDecision;
|
|
58
|
+
/**
|
|
59
|
+
* Asks the policy whether `actor` may start a run of `workflow` with `input` (`Policy.start`, the
|
|
60
|
+
* action `workflow:<name>`), as `SanomaClient.start` does before it queues one.
|
|
61
|
+
*/
|
|
62
|
+
export declare function decideStart(policy: Policy, workflow: string, input: unknown, actor: Principal, approvals?: readonly ApprovalState[]): RecordedDecision;
|
|
63
|
+
/** The approval a start's `approve` answer waits on: whom it asks, its title, and the rules that held it. */
|
|
64
|
+
export declare function startHoldOf(workflow: string, { approver, title, reasons }: Extract<Decision, {
|
|
65
|
+
kind: "approve";
|
|
66
|
+
}>): StartHold;
|
package/dist/call.js
CHANGED
|
@@ -7,9 +7,9 @@ import { currentGroup, entry, skipped, write, writeFailure } from "./ledger.js";
|
|
|
7
7
|
import { shown } from "./log.js";
|
|
8
8
|
import { isOp } from "./op.js";
|
|
9
9
|
import { callAt, callName } from "./outline.js";
|
|
10
|
-
import {
|
|
10
|
+
import { allowAll, policyOpOf } from "./policy.js";
|
|
11
11
|
import { isChangeOp } from "./resource.js";
|
|
12
|
-
import { APPLY_WORKFLOW, approverLabel, errorMessage, fitsOp } from "./shared.js";
|
|
12
|
+
import { APPLY_WORKFLOW, approverLabel, CALL_WORKFLOW, DATA_VENDOR, errorMessage, fitsOp, WORKFLOW_ACTION, } from "./shared.js";
|
|
13
13
|
/** DBOS took the run from this execution: it cancelled the run, or another process took it over. */
|
|
14
14
|
const takenByDbos = (err) => causes(err).some((e) => e instanceof DBOSErrors.DBOSWorkflowCancelledError || e instanceof DBOSWorkflowConflictError);
|
|
15
15
|
/**
|
|
@@ -27,7 +27,7 @@ export function isInfrastructureError(err, state) {
|
|
|
27
27
|
return takenByDbos(err) || (state.stopped && errorCode(err) === undefined);
|
|
28
28
|
}
|
|
29
29
|
/** The value as the ledger records it: each of the operation's `opaque` fields as `"<name>"`. */
|
|
30
|
-
function recorded(op, value) {
|
|
30
|
+
export function recorded(op, value) {
|
|
31
31
|
if (!op.opaque?.length || typeof value !== "object" || value === null || Array.isArray(value))
|
|
32
32
|
return value;
|
|
33
33
|
const out = { ...value };
|
|
@@ -195,14 +195,6 @@ function strict(obj, path, workflow) {
|
|
|
195
195
|
},
|
|
196
196
|
});
|
|
197
197
|
}
|
|
198
|
-
/** Checks a policy's answer, and copies it so nothing else the policy returned is recorded. */
|
|
199
|
-
function checkDecision(decision, opId) {
|
|
200
|
-
const parsed = DecisionSchema.safeParse(decision);
|
|
201
|
-
if (parsed.success)
|
|
202
|
-
return parsed.data;
|
|
203
|
-
const why = parsed.error.issues[0]?.message ?? "not a decision";
|
|
204
|
-
throw new Error(`The policy returned ${shown(decision)} for ${opId}: ${why}; use allow(), deny(reason) or approve(approver)`);
|
|
205
|
-
}
|
|
206
198
|
/** The resource instance the call acts on, from the operation's `target`, when it declares one. */
|
|
207
199
|
function targetOf(op, input) {
|
|
208
200
|
if (!op.target)
|
|
@@ -213,36 +205,101 @@ function targetOf(op, input) {
|
|
|
213
205
|
}
|
|
214
206
|
return { target };
|
|
215
207
|
}
|
|
216
|
-
/**
|
|
208
|
+
/**
|
|
209
|
+
* Asks the policy about one call, with the record a collection's `save` or
|
|
210
|
+
* `delete` replaces as `before` (`beforeOf`). Runs inside a step, so it must have no side effects
|
|
211
|
+
* of its own.
|
|
212
|
+
*/
|
|
217
213
|
export async function decide(run, op, input) {
|
|
218
|
-
const
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
214
|
+
const seen = { id: run.id, workflow: run.workflow, approvals: structuredClone(run.approvals) };
|
|
215
|
+
const { policy } = run.state;
|
|
216
|
+
// Keyed by the call (`seq` was taken for it), so a fake answers each read afresh.
|
|
217
|
+
const before = await beforeOf(policy, op, input, run.state.collections, (get, key) => driverOf(run, get)?.({ key }, { idempotencyKey: `${run.id}:${run.seq}:before`, runId: run.id, opId: get, attempt: 1, secrets: secretsOf(run) }));
|
|
218
|
+
const call = { ...callOf(op, input, run.actor, seen), ...before };
|
|
219
|
+
return ask(policy, op.id, () => policy(call), run.state);
|
|
220
|
+
}
|
|
221
|
+
/** The run's function for an operation: its own fake's in a sandbox run, never a vendor's; else the driver's. */
|
|
222
|
+
const driverOf = (run, id) => (run.sandbox === undefined ? run.state.drivers : run.fakeDrivers)?.get(id);
|
|
223
|
+
/** The secrets a run's calls read: its own in a sandbox run, else the stored ones. */
|
|
224
|
+
const secretsOf = (run) => (run.sandbox === undefined ? run.state.secrets : run.fakeSecrets);
|
|
225
|
+
/** One call of `op` as `actor` in `run`, as a policy sees it. */
|
|
226
|
+
const callOf = (op, input, actor, run) => ({
|
|
227
|
+
op: policyOpOf(op),
|
|
228
|
+
effect: op.effect,
|
|
229
|
+
...targetOf(op, input),
|
|
230
|
+
input,
|
|
231
|
+
actor,
|
|
232
|
+
run,
|
|
233
|
+
});
|
|
234
|
+
/**
|
|
235
|
+
* For a collection's `save` or `delete`, the record it replaces or removes, read once with the
|
|
236
|
+
* collection's `get` (`read`): `{ before }` when there is one, else nothing, and nothing read
|
|
237
|
+
* under `allowAll`, which reads no call. A failed read is named, keeping its error's code.
|
|
238
|
+
*/
|
|
239
|
+
export async function beforeOf(policy, op, input, collections, read) {
|
|
240
|
+
const collection = op.vendor === DATA_VENDOR ? collections.get(op.resource) : undefined;
|
|
241
|
+
if (policy === allowAll || !collection || (op.name !== "save" && op.name !== "delete"))
|
|
242
|
+
return {};
|
|
243
|
+
const key = op.name === "save"
|
|
244
|
+
? input.record[collection.key]
|
|
245
|
+
: input.key;
|
|
246
|
+
let saved;
|
|
247
|
+
try {
|
|
248
|
+
saved = (await read(`${DATA_VENDOR}.${op.resource}.get`, key));
|
|
249
|
+
}
|
|
250
|
+
catch (err) {
|
|
251
|
+
if (takenByDbos(err))
|
|
252
|
+
throw err;
|
|
253
|
+
throw keepCode(new Error(`Reading the record ${op.id} replaces failed: ${errorMessage(err)}`, { cause: err }), err);
|
|
254
|
+
}
|
|
255
|
+
return saved ? { before: saved.record } : {};
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Asks `policy` about one call of `op` as `actor` in `run`: a direct call
|
|
259
|
+
* (`SanomaClient.call`), with the record a collection's write replaces as `before` (`beforeOf`).
|
|
260
|
+
*/
|
|
261
|
+
export function decideCall(policy, op, input, actor, run, before = {}) {
|
|
262
|
+
const call = { ...callOf(op, input, actor, run), ...before };
|
|
263
|
+
return ask(policy, op.id, () => policy(call));
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Asks the policy whether `actor` may start a run of `workflow` with `input` (`Policy.start`, the
|
|
267
|
+
* action `workflow:<name>`), as `SanomaClient.start` does before it queues one.
|
|
268
|
+
*/
|
|
269
|
+
export function decideStart(policy, workflow, input, actor, approvals = []) {
|
|
270
|
+
return ask(policy, `${WORKFLOW_ACTION}${workflow}`, () => policy.start(actor, workflow, input, approvals));
|
|
271
|
+
}
|
|
272
|
+
/** The approval a start's `approve` answer waits on: whom it asks, its title, and the rules that held it. */
|
|
273
|
+
export function startHoldOf(workflow, { approver, title, reasons }) {
|
|
274
|
+
return {
|
|
275
|
+
approver,
|
|
276
|
+
title: title ?? `${WORKFLOW_ACTION}${workflow} needs ${approverLabel(approver)}`,
|
|
277
|
+
...(reasons && { reasons }),
|
|
225
278
|
};
|
|
226
|
-
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* The policy's answer about `id` (`answer`), with its version. A policy that fails is named in
|
|
282
|
+
* the error, with its error's code, unless the worker is stopping (`state`).
|
|
283
|
+
*/
|
|
284
|
+
function ask(policy, id, answer, state = { stopped: false }) {
|
|
285
|
+
let decision;
|
|
227
286
|
try {
|
|
228
|
-
|
|
287
|
+
decision = answer();
|
|
229
288
|
}
|
|
230
289
|
catch (err) {
|
|
231
290
|
// Named here, so the run's error and the ledger say which call the policy failed on, with
|
|
232
291
|
// the code the policy's error had.
|
|
233
|
-
if (isInfrastructureError(err,
|
|
292
|
+
if (isInfrastructureError(err, state))
|
|
234
293
|
throw err;
|
|
235
|
-
throw keepCode(new Error(`The policy failed deciding ${
|
|
294
|
+
throw keepCode(new Error(`The policy failed deciding ${id}: ${errorMessage(err)}`, { cause: err }), err);
|
|
236
295
|
}
|
|
237
|
-
|
|
238
|
-
const policyVersion = run.state.policy.version;
|
|
239
|
-
return policyVersion === undefined ? decision : { ...decision, policyVersion };
|
|
296
|
+
return policy.version === undefined ? decision : { ...decision, policyVersion: policy.version };
|
|
240
297
|
}
|
|
241
298
|
async function callOp(run, id, input, place) {
|
|
242
299
|
// The worker's declaration, never the workflow's: its effect, schemas and retry setting.
|
|
243
300
|
const op = run.state.ops.get(id);
|
|
244
301
|
// A sandbox run calls its own fakes, never a vendor.
|
|
245
|
-
const fn = run
|
|
302
|
+
const fn = driverOf(run, id);
|
|
246
303
|
if (!op || !fn) {
|
|
247
304
|
throw new Error(run.sandbox === undefined
|
|
248
305
|
? `No connector or driver for ${id} in this worker`
|
|
@@ -264,23 +321,27 @@ async function callOp(run, id, input, place) {
|
|
|
264
321
|
// The decision is recorded as a step, so a replay reuses it instead of asking a policy
|
|
265
322
|
// that may have changed since. The policy must still be deterministic: a run that fails
|
|
266
323
|
// before the step is recorded asks again.
|
|
267
|
-
const
|
|
324
|
+
const decideStep = () => DBOS.runStep(() => decide(run, op, parsed), { name: `policy:${op.id}` });
|
|
325
|
+
let decision = await decideStep();
|
|
268
326
|
const logged = recorded(op, parsed);
|
|
269
327
|
const call = { type: "op.called", op: op.id, ...place, effect: op.effect, input: logged, decision };
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
328
|
+
// Each hold is lifted in turn: once one is approved, the policy is asked again, with it.
|
|
329
|
+
for (;;) {
|
|
330
|
+
if (decision.kind === "deny") {
|
|
331
|
+
const err = new PolicyDeniedError(op.id, decision.reason);
|
|
332
|
+
await writeFailure(run, entry(run, { ...call, decision, error: errorInfo(err), durationMs: 0 }, { seq }), err);
|
|
333
|
+
throw err;
|
|
334
|
+
}
|
|
335
|
+
if (decision.kind !== "approve")
|
|
336
|
+
break;
|
|
276
337
|
const title = decision.title ?? `${op.id} needs ${approverLabel(decision.approver)}`;
|
|
277
|
-
// A hold covers the call it held, and any other operations the policy named.
|
|
278
|
-
const covers = [...new Set([op.id, ...(decision.covers ?? [])])];
|
|
279
338
|
try {
|
|
280
|
-
|
|
339
|
+
// A hold covers the call it held.
|
|
340
|
+
await awaitApproval(run, title, { approver: decision.approver, covers: [op.id] }, place, {
|
|
281
341
|
op: op.id,
|
|
282
342
|
seq,
|
|
283
343
|
input: logged,
|
|
344
|
+
reasons: decision.reasons,
|
|
284
345
|
});
|
|
285
346
|
}
|
|
286
347
|
catch (err) {
|
|
@@ -291,6 +352,7 @@ async function callOp(run, id, input, place) {
|
|
|
291
352
|
}
|
|
292
353
|
throw err;
|
|
293
354
|
}
|
|
355
|
+
decision = await decideStep();
|
|
294
356
|
}
|
|
295
357
|
const started = Date.now();
|
|
296
358
|
// The try DBOS is on, as it passes it to the step. The last try's error is not retried, so
|
|
@@ -301,13 +363,15 @@ async function callOp(run, id, input, place) {
|
|
|
301
363
|
result = await DBOS.runStep(async () => {
|
|
302
364
|
const at = Date.now();
|
|
303
365
|
attempt = DBOS.stepStatus?.currentAttempt ?? 1;
|
|
304
|
-
const secrets = run
|
|
366
|
+
const secrets = secretsOf(run);
|
|
305
367
|
const context = {
|
|
306
368
|
idempotencyKey: `${run.id}:${seq}`,
|
|
307
369
|
runId: run.id,
|
|
308
370
|
opId: op.id,
|
|
309
371
|
attempt,
|
|
310
372
|
secrets,
|
|
373
|
+
// A call run is the person's direct call held for an approval: made as them, as it would have been.
|
|
374
|
+
by: run.workflow === CALL_WORKFLOW ? run.actor.id : `run:${run.id}`,
|
|
311
375
|
};
|
|
312
376
|
// A live driver's `env` is checked here, inside the step, by the guard `indexDrivers` put
|
|
313
377
|
// on its function: the refusal is the call's failure, recorded and never retried.
|
|
@@ -387,13 +451,14 @@ async function all(run, list, node) {
|
|
|
387
451
|
}
|
|
388
452
|
/**
|
|
389
453
|
* Waits, durably, until the time or for the duration the request names, and records when it
|
|
390
|
-
* ends. For a duration that is the
|
|
391
|
-
*
|
|
454
|
+
* ends. For a duration that is the record's `at` plus the duration, one read of the runtime's
|
|
455
|
+
* clock (`Date.now()`, which adds no DBOS call): a replay may compute another, but the store keeps
|
|
392
456
|
* the first record with the id, so the record says what the first execution waited for.
|
|
393
457
|
*/
|
|
394
458
|
async function sleep(run, raw, at) {
|
|
395
459
|
const req = checkSleep(raw);
|
|
396
460
|
const seq = run.seq++;
|
|
461
|
+
const started = Date.now();
|
|
397
462
|
let until;
|
|
398
463
|
let ms;
|
|
399
464
|
if ("until" in req) {
|
|
@@ -407,9 +472,9 @@ async function sleep(run, raw, at) {
|
|
|
407
472
|
(req.minutes ?? 0) * 60_000 +
|
|
408
473
|
(req.hours ?? 0) * 3_600_000 +
|
|
409
474
|
(req.days ?? 0) * 86_400_000;
|
|
410
|
-
until =
|
|
475
|
+
until = started + ms;
|
|
411
476
|
}
|
|
412
|
-
await write(run, entry(run, { type: "sleep.started", ...at, until }, { seq }));
|
|
477
|
+
await write(run, entry(run, { type: "sleep.started", ...at, until }, { seq, at: started }));
|
|
413
478
|
// A time already past waits not at all, and adds no step. A sandbox run never waits.
|
|
414
479
|
if (ms > 0 && run.sandbox === undefined)
|
|
415
480
|
await DBOS.sleep(ms);
|
package/dist/call.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call.js","sourceRoot":"","sources":["../src/call.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"call.js","sourceRoot":"","sources":["../src/call.ts"],"names":[],"mappings":"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"}
|