@sanoma-ai/workflows 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/README.md +121 -62
  2. package/dist/approvals.d.ts +11 -6
  3. package/dist/approvals.js +38 -10
  4. package/dist/approvals.js.map +1 -1
  5. package/dist/call-workflow.d.ts +16 -0
  6. package/dist/call-workflow.js +35 -0
  7. package/dist/call-workflow.js.map +1 -0
  8. package/dist/call.d.ts +33 -4
  9. package/dist/call.js +107 -42
  10. package/dist/call.js.map +1 -1
  11. package/dist/cedar.d.ts +87 -0
  12. package/dist/cedar.js +365 -0
  13. package/dist/cedar.js.map +1 -0
  14. package/dist/client.d.ts +85 -7
  15. package/dist/client.js +289 -25
  16. package/dist/client.js.map +1 -1
  17. package/dist/collection.d.ts +107 -0
  18. package/dist/collection.js +306 -0
  19. package/dist/collection.js.map +1 -0
  20. package/dist/config.d.ts +42 -14
  21. package/dist/config.js +82 -18
  22. package/dist/config.js.map +1 -1
  23. package/dist/constructors.d.ts +2 -0
  24. package/dist/constructors.js +5 -0
  25. package/dist/constructors.js.map +1 -0
  26. package/dist/data.d.ts +2 -0
  27. package/dist/data.js +3 -0
  28. package/dist/data.js.map +1 -0
  29. package/dist/datafile.d.ts +28 -2
  30. package/dist/datafile.js +118 -19
  31. package/dist/datafile.js.map +1 -1
  32. package/dist/db.d.ts +5 -3
  33. package/dist/db.js +88 -21
  34. package/dist/db.js.map +1 -1
  35. package/dist/define.d.ts +10 -4
  36. package/dist/define.js +1 -5
  37. package/dist/define.js.map +1 -1
  38. package/dist/describe.d.ts +45 -5
  39. package/dist/describe.js +72 -7
  40. package/dist/describe.js.map +1 -1
  41. package/dist/direct.d.ts +9 -0
  42. package/dist/direct.js +11 -0
  43. package/dist/direct.js.map +1 -0
  44. package/dist/errors.d.ts +16 -1
  45. package/dist/errors.js +30 -1
  46. package/dist/errors.js.map +1 -1
  47. package/dist/expectations.d.ts +3 -3
  48. package/dist/expectations.js +16 -7
  49. package/dist/expectations.js.map +1 -1
  50. package/dist/index.d.ts +8 -4
  51. package/dist/index.js +10 -4
  52. package/dist/index.js.map +1 -1
  53. package/dist/ledger.d.ts +12 -1
  54. package/dist/ledger.js +18 -11
  55. package/dist/ledger.js.map +1 -1
  56. package/dist/lint.d.ts +5 -4
  57. package/dist/lint.js +24 -7
  58. package/dist/lint.js.map +1 -1
  59. package/dist/op.d.ts +6 -0
  60. package/dist/op.js.map +1 -1
  61. package/dist/outline.d.ts +2 -0
  62. package/dist/outline.js +1 -1
  63. package/dist/outline.js.map +1 -1
  64. package/dist/paths.d.ts +4 -0
  65. package/dist/paths.js +17 -3
  66. package/dist/paths.js.map +1 -1
  67. package/dist/person.d.ts +61 -0
  68. package/dist/person.js +69 -0
  69. package/dist/person.js.map +1 -0
  70. package/dist/plugin.js +1 -1
  71. package/dist/plugin.js.map +1 -1
  72. package/dist/policy.d.ts +51 -55
  73. package/dist/policy.js +14 -36
  74. package/dist/policy.js.map +1 -1
  75. package/dist/resource.d.ts +21 -5
  76. package/dist/resource.js +12 -3
  77. package/dist/resource.js.map +1 -1
  78. package/dist/resources.d.ts +58 -6
  79. package/dist/resources.js +119 -26
  80. package/dist/resources.js.map +1 -1
  81. package/dist/run.d.ts +17 -1
  82. package/dist/run.js.map +1 -1
  83. package/dist/scenario.d.ts +16 -9
  84. package/dist/scenario.js +93 -20
  85. package/dist/scenario.js.map +1 -1
  86. package/dist/scenarios.d.ts +10 -6
  87. package/dist/scenarios.js +8 -4
  88. package/dist/scenarios.js.map +1 -1
  89. package/dist/schema.d.ts +32 -0
  90. package/dist/schema.js +225 -0
  91. package/dist/schema.js.map +1 -0
  92. package/dist/sdk.d.ts +34 -0
  93. package/dist/sdk.js +168 -0
  94. package/dist/sdk.js.map +1 -0
  95. package/dist/shared.d.ts +181 -5
  96. package/dist/shared.js +160 -7
  97. package/dist/shared.js.map +1 -1
  98. package/dist/sites.d.ts +52 -0
  99. package/dist/sites.js +174 -0
  100. package/dist/sites.js.map +1 -0
  101. package/dist/version.d.ts +3 -2
  102. package/dist/version.js +3 -2
  103. package/dist/version.js.map +1 -1
  104. package/dist/worker.d.ts +3 -2
  105. package/dist/worker.js +24 -4
  106. package/dist/worker.js.map +1 -1
  107. package/oxlint.json +5 -16
  108. package/package.json +8 -3
  109. package/src/approvals.ts +49 -13
  110. package/src/call-workflow.ts +44 -0
  111. package/src/call.ts +157 -45
  112. package/src/cedar.ts +493 -0
  113. package/src/client.ts +368 -37
  114. package/src/collection.ts +431 -0
  115. package/src/config.ts +131 -34
  116. package/src/constructors.ts +4 -0
  117. package/src/data.ts +10 -0
  118. package/src/datafile.ts +141 -21
  119. package/src/db.ts +90 -22
  120. package/src/define.ts +11 -9
  121. package/src/describe.ts +113 -10
  122. package/src/direct.ts +15 -0
  123. package/src/errors.ts +36 -1
  124. package/src/expectations.ts +17 -8
  125. package/src/index.ts +33 -2
  126. package/src/ledger.ts +35 -17
  127. package/src/lint.ts +29 -12
  128. package/src/op.ts +6 -0
  129. package/src/outline.ts +1 -1
  130. package/src/paths.ts +18 -3
  131. package/src/person.ts +75 -0
  132. package/src/plugin.ts +1 -1
  133. package/src/policy.ts +59 -63
  134. package/src/resource.ts +35 -8
  135. package/src/resources.ts +165 -24
  136. package/src/run.ts +18 -1
  137. package/src/scenario.ts +128 -33
  138. package/src/scenarios.ts +15 -8
  139. package/src/schema.ts +261 -0
  140. package/src/sdk.ts +211 -0
  141. package/src/shared.ts +271 -8
  142. package/src/sites.ts +220 -0
  143. package/src/version.ts +3 -2
  144. package/src/worker.ts +29 -6
package/dist/describe.js CHANGED
@@ -1,26 +1,50 @@
1
1
  import { readSource } from "./ast.js";
2
- import { resolveConfig } from "./config.js";
2
+ import { recordSchemaOf } from "./collection.js";
3
+ import { connectorsOf, resolveConfig, rootOf } from "./config.js";
3
4
  import { jsonSchemaOf, opIdsOf } from "./define.js";
5
+ import { isDirect } from "./direct.js";
4
6
  import { lintWorkflow } from "./lint.js";
5
7
  import { VENDOR } from "./op.js";
6
8
  import { outlineWithSource } from "./outline.js";
7
9
  import { allowAll, policyOpOf } from "./policy.js";
8
10
  import { resourceTypesOf } from "./resource.js";
9
- import { readDataFiles } from "./resources.js";
10
- import { BUILT_IN_WORKFLOWS } from "./shared.js";
11
+ import { readDataFiles, } from "./resources.js";
12
+ import { apiNameProblem } from "./sdk.js";
13
+ import { apiNameOf, BUILT_IN_WORKFLOWS, DATA_VENDOR, problemLine } from "./shared.js";
14
+ import { readSites } from "./sites.js";
11
15
  // `@sanoma-ai/workflows/describe`: what a UI renders from, apart from the main entry.
12
16
  export { outlineWorkflow } from "./outline.js";
13
- export { readDataFiles, readResources, } from "./resources.js";
17
+ export { admit, readDataFiles, readPeople, } from "./resources.js";
14
18
  // The writer: setting a resource's fields in its data file, and rendering a new one.
15
19
  export { formatOptions, renderDataFile, setFields } from "./writer.js";
16
20
  export { Reference } from "./datafile.js";
21
+ /**
22
+ * The resources the config's data files declare, read without importing or running them; throws
23
+ * one error listing every problem, each at `file:line:column`, for a test or CI to fail on.
24
+ * `describeConfig` lists the same, with the problems beside them instead.
25
+ */
26
+ export function readResources(config) {
27
+ const { resources, problems } = readDataFiles(rootOf(config), connectorsOf(config));
28
+ if (problems.length) {
29
+ const lines = problems.map((p) => ` ${problemLine(p)}`);
30
+ throw new Error(`The resources' data files have problems:\n${lines.join("\n")}`);
31
+ }
32
+ return resources;
33
+ }
17
34
  export { LOCKFILE, readLockfile, serializeLockfile, writeLockfile, diffLockfiles, } from "./lockfile.js";
35
+ // What the sites call, read from their source: a workflow's Used by.
36
+ export { readSites } from "./sites.js";
37
+ // The generated SDK, `.sanoma/api.ts`: a site's `api` typed from this description.
38
+ export { API_FILE, generateApi, writeApi, writeGenerated } from "./sdk.js";
39
+ // The Cedar schema, `.sanoma/schema.cedarschema`: what a company's policies are validated and decided against.
40
+ export { SCHEMA_FILE, schemaOf, schemaText } from "./schema.js";
18
41
  /**
19
42
  * Describes a config. Throws what `startWorker` would refuse (see `resolveConfig`), except missing
20
43
  * credentials (`SanomaClient.credentials` gives their statuses) and what is wrong in a workflow's
21
44
  * file, which the worker refuses when it reads the outline: that is data, on each workflow's
22
45
  * entry, as the data files' problems are, `problems`, beside the resources read without any.
23
- * Each workflow's file is read and parsed once, however many workflows it defines.
46
+ * Each workflow's file is read and parsed once, however many workflows it defines. The sites'
47
+ * code is read too (`readSites`): what each calls, and its calls to what the config lacks as its problems.
24
48
  */
25
49
  export function describeConfig(config) {
26
50
  const resolved = resolveConfig(config);
@@ -31,7 +55,7 @@ export function describeConfig(config) {
31
55
  const { id, info } = connector[VENDOR];
32
56
  vendors[id] ??= vendorEntry(id, info, resolved.fakes.has(id));
33
57
  }
34
- const resources = resourceTypesOf(config.connectors);
58
+ const resources = resourceTypesOf(connectorsOf(config));
35
59
  // Each resource type's state is described once, on its entry, and referenced from its operations.
36
60
  const refs = new Map([...resources].map(([id, r]) => [r.schema, resourceTypeUri(id)]));
37
61
  const resourceTypes = [...resources]
@@ -48,11 +72,25 @@ export function describeConfig(config) {
48
72
  .toSorted(),
49
73
  }))
50
74
  .toSorted((a, b) => a.id.localeCompare(b.id));
75
+ const dataFiles = readDataFiles(resolved.root, connectorsOf(config), resources);
76
+ const declared = new Map(dataFiles.collections.map((d) => [d.name, d]));
77
+ const collections = [...resolved.collections.values()]
78
+ .map((c) => ({
79
+ name: c.name,
80
+ ...(c.title !== undefined && { title: c.title }),
81
+ key: c.key,
82
+ fields: c.fields,
83
+ record: { $id: `sanoma:collection/${c.name}`, ...toJsonSchema(recordSchemaOf(c), `${c.name} record`, "input") },
84
+ ops: [c.get, c.list, c.save, c.delete].map((op) => op.id),
85
+ ...(declared.has(c.name) && { declared: declared.get(c.name) }),
86
+ }))
87
+ .toSorted((a, b) => a.name.localeCompare(b.name));
51
88
  const ops = [...resolved.ops.values()].map((op) => ({
52
89
  ...policyOpOf(op),
53
90
  idempotent: op.idempotent,
54
91
  description: op.description,
55
92
  ...(op.phrases && { phrases: op.phrases }),
93
+ direct: isDirect(op, resolved.types),
56
94
  input: toJsonSchema(op.input, `${op.id} input`, "input", refs),
57
95
  output: toJsonSchema(op.output, `${op.id} output`, "output", refs),
58
96
  }));
@@ -86,7 +124,7 @@ export function describeConfig(config) {
86
124
  };
87
125
  });
88
126
  workflows.sort((a, b) => a.name.localeCompare(b.name));
89
- const dataFiles = readDataFiles(resolved.root, config.connectors, resources);
127
+ addApiNameProblems(workflows, new Set(ops.map((op) => op.vendor)));
90
128
  return {
91
129
  appName: resolved.appName,
92
130
  version: resolved.version,
@@ -94,15 +132,42 @@ export function describeConfig(config) {
94
132
  ops,
95
133
  vendors,
96
134
  resourceTypes,
135
+ collections,
97
136
  resources: dataFiles.resources,
98
137
  orphans: dataFiles.orphans,
99
138
  problems: dataFiles.problems,
100
139
  policy: {
101
140
  defined: resolved.policy !== allowAll,
102
141
  ...(resolved.policy.version === undefined ? {} : { version: resolved.policy.version }),
142
+ ...(resolved.policyProblems.length ? { problems: resolved.policyProblems } : {}),
103
143
  },
144
+ sites: readSites(resolved.root, { workflows, collections, ops }),
104
145
  };
105
146
  }
147
+ /**
148
+ * A site's `api` names each workflow `apiNameOf(name)` beside the vendors' operations and the
149
+ * collections (`api.data`), so a workflow whose name comes out as another's, a vendor's id or
150
+ * `data` is a problem, at 1:1 of its file. A built-in is never the one renamed.
151
+ */
152
+ function addApiNameProblems(workflows, vendors) {
153
+ for (const wf of workflows) {
154
+ if (wf.builtin)
155
+ continue;
156
+ const api = apiNameOf(wf.name);
157
+ const others = workflows.filter((other) => other !== wf && apiNameOf(other.name) === api);
158
+ const taken = others.length
159
+ ? `as workflow ${others.map((other) => `"${other.name}"`).join(" and ")} is`
160
+ : api === DATA_VENDOR
161
+ ? "which is the collections'"
162
+ : vendors.has(api)
163
+ ? `which is the vendor ${api}'s operations`
164
+ : api === "then"
165
+ ? "which a promise would take for its own"
166
+ : undefined;
167
+ if (taken)
168
+ wf.problems.push({ line: 1, column: 1, message: apiNameProblem(api, taken) });
169
+ }
170
+ }
106
171
  /** `fn`, called once per argument for as long as the returned function lives. */
107
172
  function memoised(fn) {
108
173
  const seen = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"describe.js","sourceRoot":"","sources":["../src/describe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"describe.js","sourceRoot":"","sources":["../src/describe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Op } from "./op.ts";
2
+ /**
3
+ * Whether an operation may be called directly, outside a run (`SanomaClient.call`), as the
4
+ * person: a collection's (`data.<name>.<op>`), or a `read` that is neither the runtime's own
5
+ * (the vendor `sanoma`) nor a resource type's (`isResourceOp`), which only drift and apply call.
6
+ * Anything else (an effect at a vendor) is a workflow's. The one rule: the built-in `call`
7
+ * workflow, the SDK and the app read it, from here or from `OpEntry.direct`, and never derive it.
8
+ */
9
+ export declare const isDirect: (op: Pick<Op, "vendor" | "resource" | "effect">, types: ReadonlyMap<string, unknown>) => boolean;
package/dist/direct.js ADDED
@@ -0,0 +1,11 @@
1
+ import { isResourceOp } from "./resource.js";
2
+ import { DATA_VENDOR } from "./shared.js";
3
+ /**
4
+ * Whether an operation may be called directly, outside a run (`SanomaClient.call`), as the
5
+ * person: a collection's (`data.<name>.<op>`), or a `read` that is neither the runtime's own
6
+ * (the vendor `sanoma`) nor a resource type's (`isResourceOp`), which only drift and apply call.
7
+ * Anything else (an effect at a vendor) is a workflow's. The one rule: the built-in `call`
8
+ * workflow, the SDK and the app read it, from here or from `OpEntry.direct`, and never derive it.
9
+ */
10
+ export const isDirect = (op, types) => op.vendor === DATA_VENDOR || (op.effect === "read" && op.vendor !== "sanoma" && !isResourceOp(op, types));
11
+ //# sourceMappingURL=direct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direct.js","sourceRoot":"","sources":["../src/direct.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,EAA8C,EAC9C,KAAmC,EAC1B,EAAE,CAAC,EAAE,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,EAAE,CAAC,MAAM,KAAK,MAAM,IAAI,EAAE,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC"}
package/dist/errors.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { z } from "zod";
2
2
  import type { Principal } from "./define.ts";
3
- declare const CODES: readonly ["policy_denied", "approval_rejected", "not_approver", "no_pending_approval", "already_decided", "run_not_found", "driver_failed", "invalid_input", "run_ended", "run_running", "call_not_in_outline"];
3
+ declare const CODES: readonly ["policy_denied", "approval_rejected", "not_approver", "no_pending_approval", "already_decided", "run_not_found", "driver_failed", "invalid_input", "run_ended", "run_running", "call_not_in_outline", "approval_pending", "not_admitted"];
4
4
  /**
5
5
  * Why something failed, as a stable string a caller can branch on. Messages are for people
6
6
  * and may change; codes are the contract.
@@ -37,6 +37,21 @@ export declare const isRunControlError: (err: unknown) => boolean;
37
37
  export declare class PolicyDeniedError extends SanomaError {
38
38
  constructor(op: string, reason: string);
39
39
  }
40
+ /**
41
+ * Thrown by a direct call (`SanomaClient.call`) the policy holds for an approval: the call is now
42
+ * run `runId` of the built-in `call` workflow, which makes it once approved.
43
+ */
44
+ export declare class ApprovalPendingError extends SanomaError {
45
+ constructor(op: string, runId: string);
46
+ }
47
+ /**
48
+ * Thrown when the data files declare people (`sanoma.person`, in `resources/people.ts` by
49
+ * convention) and not this principal's id: nothing is started, called or decided.
50
+ */
51
+ export declare class NotAdmittedError extends SanomaError {
52
+ /** `problems`: what is wrong in the people's files, while nobody is admitted. */
53
+ constructor(id: string, problems?: readonly string[]);
54
+ }
40
55
  /** Thrown into the run when an approver rejects. The run fails with it. */
41
56
  export declare class RejectedError extends SanomaError {
42
57
  /**
package/dist/errors.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Error as DBOSErrors } from "@dbos-inc/dbos-sdk";
2
- import { errorMessage } from "./shared.js";
2
+ import { CALL_WORKFLOW, errorMessage } from "./shared.js";
3
3
  const CODES = [
4
4
  "policy_denied",
5
5
  "approval_rejected",
@@ -12,6 +12,8 @@ const CODES = [
12
12
  "run_ended",
13
13
  "run_running",
14
14
  "call_not_in_outline",
15
+ "approval_pending",
16
+ "not_admitted",
15
17
  ];
16
18
  const KNOWN = new Set(CODES);
17
19
  /**
@@ -61,6 +63,33 @@ export class PolicyDeniedError extends SanomaError {
61
63
  this.name = "PolicyDeniedError";
62
64
  }
63
65
  }
66
+ /**
67
+ * Thrown by a direct call (`SanomaClient.call`) the policy holds for an approval: the call is now
68
+ * run `runId` of the built-in `call` workflow, which makes it once approved.
69
+ */
70
+ export class ApprovalPendingError extends SanomaError {
71
+ constructor(op, runId) {
72
+ super("approval_pending", `${op} needs an approval: it waits in run ${runId}`, {
73
+ runId,
74
+ workflow: CALL_WORKFLOW,
75
+ op,
76
+ });
77
+ this.name = "ApprovalPendingError";
78
+ }
79
+ }
80
+ /**
81
+ * Thrown when the data files declare people (`sanoma.person`, in `resources/people.ts` by
82
+ * convention) and not this principal's id: nothing is started, called or decided.
83
+ */
84
+ export class NotAdmittedError extends SanomaError {
85
+ /** `problems`: what is wrong in the people's files, while nobody is admitted. */
86
+ constructor(id, problems = []) {
87
+ super("not_admitted", problems.length
88
+ ? `${id} cannot be admitted while the people's files have problems: ${problems.join("; ")}`
89
+ : `${id} is not declared in resources/people.ts`, { principal: id, ...(problems.length && { problems }) });
90
+ this.name = "NotAdmittedError";
91
+ }
92
+ }
64
93
  /** Thrown into the run when an approver rejects. The run fails with it. */
65
94
  export class RejectedError extends SanomaError {
66
95
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
@@ -16,9 +16,9 @@ type Unstepped<T> = T extends unknown ? Omit<T, "step"> : never;
16
16
  * Why an expectation of the generic steps does not hold against a run's ledger records, or
17
17
  * undefined when it does. A call is an `op.called` record without an `error`; one with an error
18
18
  * (a policy denial, a rejected approval, a vendor's final failure) was attempted, not made. An
19
- * operation `was denied` when the policy's decision on some call to it is `deny`, and `was held
20
- * for` an approver when an approval for that approver holds it: one the policy asked for on its
21
- * call, or one that `covers` it. A drift or apply expectation reads the report a finished run
19
+ * operation `was denied` when the policy's decision on some call to it is `deny` (for the `reason`
20
+ * expected, when there is one), and `was held for` an approver (a group alone, as `{ group }`) when
21
+ * an approval for that approver holds it: one the policy asked for on its call, or one that `covers` it. A drift or apply expectation reads the report a finished run
22
22
  * of it returned. A step named in the workflow's outline is read by the `name` its records carry
23
23
  * (its calls made, and `waitsOf`); a record written before steps had names has none.
24
24
  */
@@ -54,8 +54,12 @@ const inputs = (list) => list.map((r) => JSON.stringify(r.input)).join(", ");
54
54
  const words = (d) => d.kind === "allow" ? "allowed" : d.kind === "deny" ? "denied" : `held for ${approverLabel(d.approver)}`;
55
55
  /** What the policy decided for the calls, each decision once: `allowed and held for finance`. */
56
56
  const decisions = (calls) => [...new Set(calls.map((r) => words(r.decision)))].join(" and ");
57
- /** True when `who` names the approver: a person by id, or a group by its name. */
58
- const isApprover = (approver, who) => typeof approver === "string" ? approver === who : approver.group === who;
57
+ /** True when `who` names the approver: a person by id, or a group by its name; `{ group }` the group alone. */
58
+ const isApprover = (approver, who) => typeof who !== "string"
59
+ ? typeof approver !== "string" && approver.group === who.group
60
+ : typeof approver === "string"
61
+ ? approver === who
62
+ : approver.group === who;
59
63
  /** How a drift report found a resource, as words: `clean`, `gone`, `drifted in has_wiki, topics`. */
60
64
  const found = (r) => r.status === "drifted" ? `drifted in ${r.fields.map((f) => f.path).join(", ")}` : r.status;
61
65
  /**
@@ -104,9 +108,9 @@ function applyDetail(e, end) {
104
108
  * Why an expectation of the generic steps does not hold against a run's ledger records, or
105
109
  * undefined when it does. A call is an `op.called` record without an `error`; one with an error
106
110
  * (a policy denial, a rejected approval, a vendor's final failure) was attempted, not made. An
107
- * operation `was denied` when the policy's decision on some call to it is `deny`, and `was held
108
- * for` an approver when an approval for that approver holds it: one the policy asked for on its
109
- * call, or one that `covers` it. A drift or apply expectation reads the report a finished run
111
+ * operation `was denied` when the policy's decision on some call to it is `deny` (for the `reason`
112
+ * expected, when there is one), and `was held for` an approver (a group alone, as `{ group }`) when
113
+ * an approval for that approver holds it: one the policy asked for on its call, or one that `covers` it. A drift or apply expectation reads the report a finished run
110
114
  * of it returned. A step named in the workflow's outline is read by the `name` its records carry
111
115
  * (its calls made, and `waitsOf`); a record written before steps had names has none.
112
116
  */
@@ -119,15 +123,20 @@ export function detailOf(e, records) {
119
123
  if ("decision" in e) {
120
124
  const tries = callsTo(e.op);
121
125
  if (e.decision === "denied") {
122
- if (tries.some((r) => r.decision.kind === "deny"))
126
+ const denials = tries.flatMap(({ decision: d }) => (d.kind === "deny" ? [d.reason] : []));
127
+ if (denials.some((reason) => e.reason === undefined || reason === e.reason))
123
128
  return undefined;
129
+ if (denials.length) {
130
+ const said = [...new Set(denials)].map((reason) => JSON.stringify(reason)).join(" and ");
131
+ return `${e.op} was denied with ${said}, not ${JSON.stringify(e.reason)}`;
132
+ }
124
133
  return tries.length ? `${e.op} was ${decisions(tries)}, not denied` : `no call to ${e.op}`;
125
134
  }
126
135
  const holds = records.filter(isRequest).filter((r) => r.op === e.op || r.covers.includes(e.op));
127
136
  if (holds.some((r) => isApprover(r.approver, e.approver)))
128
137
  return undefined;
129
138
  return holds.length
130
- ? `${e.op} was held for ${[...new Set(holds.map((r) => approverLabel(r.approver)))].join(" and ")}, not ${e.approver}`
139
+ ? `${e.op} was held for ${[...new Set(holds.map((r) => approverLabel(r.approver)))].join(" and ")}, not ${approverLabel(e.approver)}`
131
140
  : tries.length
132
141
  ? `${e.op} was ${decisions(tries)}, not held`
133
142
  : `no call to ${e.op}`;
@@ -1 +1 @@
1
- {"version":3,"file":"expectations.js","sourceRoot":"","sources":["../src/expectations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expectations.js","sourceRoot":"","sources":["../src/expectations.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,12 +2,16 @@ export { type CallContext, type Connector, type ConnectorSetup, type ConnectorVe
2
2
  export { defineWorkflow, Principal, type ApprovalRequest, type ApprovalResult, type ApprovalState, type Approver, type Builtin, type Ctx, type SleepRequest, type StepOptions, type Use, type WorkflowDefinition, } from "./define.ts";
3
3
  export { compareDeclared, type Declared, type Declaring, defineResource, diffDeclared, type FieldReference, type PlanAction, type References, type Resource, type ResourceFields, type ResourceOps, type ResourceSpec, withoutWriteOnly, } from "./resource.ts";
4
4
  export { defineConfig, resolveConfig, resolveDatabaseUrl, type ResolvedConfig, type SanomaConfig } from "./config.ts";
5
+ export { isCollection } from "./collection.ts";
5
6
  export { type CredentialStatus, credentialsOf } from "./env.ts";
6
7
  export { APPLY_WORKFLOW, ApplyInput, type ApplyPlan, type ApplyReport, type ApplyResult, type PlanAnswer, type PlanStep, } from "./apply.ts";
8
+ export { CALL_WORKFLOW, CallInput } from "./call-workflow.ts";
9
+ export { isDirect } from "./direct.ts";
7
10
  export { DRIFT_WORKFLOW, type DriftDeclared, type DriftField, type DriftReport, type DriftResult, type DriftStatus, } from "./drift.ts";
8
11
  export type { DeclaredResource, ResourceProblem } from "./resources.ts";
9
- export { allow, allowAll, approve, approvedFor, type Decision, definePolicy, deny, type Policy, type PolicyCall, type PolicyOp, policyOpOf, type RecordedDecision, } from "./policy.ts";
10
- export { errorCode, type ErrorCode, type ErrorInfo, type InputIssue, invalidInput, PolicyDeniedError, RejectedError, SanomaError, } from "./errors.ts";
12
+ export { allow, allowAll, approve, approvedFor, type Decision, deny, type Policy, type PolicyCall, type PolicyOp, policyOpOf, type PreviewAnswer, type PreviewRequest, type RecordedDecision, } from "./policy.ts";
13
+ export { cedarPolicy, type CedarPolicySource, loadPolicies, POLICIES_DIR, type PolicyProblem, readPolicyFiles, validatePolicies, } from "./cedar.ts";
14
+ export { ApprovalPendingError, errorCode, type ErrorCode, type ErrorInfo, type InputIssue, invalidInput, NotAdmittedError, PolicyDeniedError, RejectedError, SanomaError, } from "./errors.ts";
11
15
  export { jsonlLedger, memoryLedger, postgresLedger, type LedgerBody, type LedgerGroup, type LedgerRecord, type LedgerStore, } from "./ledger.ts";
12
16
  export { ApprovalMessage, APPROVALS_EVENT, decisionEventOf } from "./approvals.ts";
13
17
  export { RUNTIME_VERSION } from "./version.ts";
@@ -16,8 +20,8 @@ export { startWorker, type Worker, type WorkerOptions } from "./worker.ts";
16
20
  export { generateSecret, isSecret, memorySecrets, type Resolved, resolveSecrets, type Secret, type Secrets, } from "./secret.ts";
17
21
  export { resolveRevision, SOURCE_RESOLVE, type Source } from "./source.ts";
18
22
  export type { HostCapabilities, HostLifetime, HostOutputs, HostSpec } from "./host.ts";
19
- export { SanomaClient, type RunsFilter, type RunSummary, type StartOptions, type StoredSecret } from "./client.ts";
23
+ export { type CallOptions, SanomaClient, type RunsFilter, type RunSummary, type StartOptions, type StoredSecret, } from "./client.ts";
20
24
  export { dbosClient } from "./db.ts";
21
- export { approverLabel, credentialReady, DEFAULT_SLEEP_NAME, ENDED_STATUSES, errorMessage, isEnded, isLoopback, mayDecide, problemAt, problemLine, RUN_STATUSES, type RunStatus, } from "./shared.ts";
25
+ export { AGENTS, approverLabel, approverOf, declaresPeople, type PeopleResource, personOf, principalOf, RUNTIME_AGENTS, credentialReady, DEFAULT_SLEEP_NAME, ENDED_STATUSES, errorMessage, isEnded, isLoopback, mayDecide, problemAt, problemLine, RUN_STATUSES, type RunStatus, } from "./shared.ts";
22
26
  export { defineDriver, type DriverImpl, type OpIdOf } from "./op.ts";
23
27
  export { defineSteps, type Expect, type RunView, type Seed, type Steps } from "./steps.ts";
package/dist/index.js CHANGED
@@ -2,11 +2,17 @@ export { defineConnector, DriverError, isOp, retryableStatus, withSetup, } from
2
2
  export { defineWorkflow, Principal, } from "./define.js";
3
3
  export { compareDeclared, defineResource, diffDeclared, withoutWriteOnly, } from "./resource.js";
4
4
  export { defineConfig, resolveConfig, resolveDatabaseUrl } from "./config.js";
5
+ // `sanoma` itself (the people types' constructors) is at `@sanoma-ai/workflows/resources`, for data files.
6
+ // `collection()` itself is at `@sanoma-ai/workflows/data`, for `resources/data.ts`; this tells one apart, as the launcher does.
7
+ export { isCollection } from "./collection.js";
5
8
  export { credentialsOf } from "./env.js";
6
9
  export { APPLY_WORKFLOW, ApplyInput, } from "./apply.js";
10
+ export { CALL_WORKFLOW, CallInput } from "./call-workflow.js";
11
+ export { isDirect } from "./direct.js";
7
12
  export { DRIFT_WORKFLOW, } from "./drift.js";
8
- export { allow, allowAll, approve, approvedFor, definePolicy, deny, policyOpOf, } from "./policy.js";
9
- export { errorCode, invalidInput, PolicyDeniedError, RejectedError, SanomaError, } from "./errors.js";
13
+ export { allow, allowAll, approve, approvedFor, deny, policyOpOf, } from "./policy.js";
14
+ export { cedarPolicy, loadPolicies, POLICIES_DIR, readPolicyFiles, validatePolicies, } from "./cedar.js";
15
+ export { ApprovalPendingError, errorCode, invalidInput, NotAdmittedError, PolicyDeniedError, RejectedError, SanomaError, } from "./errors.js";
10
16
  export { jsonlLedger, memoryLedger, postgresLedger, } from "./ledger.js";
11
17
  export { ApprovalMessage, APPROVALS_EVENT, decisionEventOf } from "./approvals.js";
12
18
  export { RUNTIME_VERSION } from "./version.js";
@@ -14,11 +20,11 @@ export { startWorker } from "./worker.js";
14
20
  // `secret` itself is at `@sanoma-ai/workflows/resources`, for data files; this is the drivers' side.
15
21
  export { generateSecret, isSecret, memorySecrets, resolveSecrets, } from "./secret.js";
16
22
  export { resolveRevision, SOURCE_RESOLVE } from "./source.js";
17
- export { SanomaClient } from "./client.js";
23
+ export { SanomaClient, } from "./client.js";
18
24
  // A raw DBOS client on the runtime's database, for tests and tools that read DBOS directly.
19
25
  export { dbosClient } from "./db.js";
20
26
  // Also at `@sanoma-ai/workflows/shared`, which a browser bundle can import.
21
- export { approverLabel, credentialReady, DEFAULT_SLEEP_NAME, ENDED_STATUSES, errorMessage, isEnded, isLoopback, mayDecide, problemAt, problemLine, RUN_STATUSES, } from "./shared.js";
27
+ export { AGENTS, approverLabel, approverOf, declaresPeople, personOf, principalOf, RUNTIME_AGENTS, credentialReady, DEFAULT_SLEEP_NAME, ENDED_STATUSES, errorMessage, isEnded, isLoopback, mayDecide, problemAt, problemLine, RUN_STATUSES, } from "./shared.js";
22
28
  // describeConfig, with the outline and every problem lintWorkflow finds, lives at
23
29
  // `@sanoma-ai/workflows/describe`: what a UI renders from, apart from what runs. The worker reads
24
30
  // each workflow's outline too, to hold its runs to it.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,eAAe,EACf,WAAW,EAEX,IAAI,EAIJ,eAAe,EAEf,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,cAAc,EACd,SAAS,GAWV,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EAGf,cAAc,EACd,YAAY,EAQZ,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAA0C,MAAM,aAAa,CAAC;AACtH,OAAO,EAAyB,aAAa,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EACL,cAAc,EACd,UAAU,GAMX,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,cAAc,GAMf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,KAAK,EACL,QAAQ,EACR,OAAO,EACP,WAAW,EAEX,YAAY,EACZ,IAAI,EAIJ,UAAU,GAEX,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,SAAS,EAIT,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,WAAW,EACX,YAAY,EACZ,cAAc,GAKf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAmC,MAAM,aAAa,CAAC;AAC3E,qGAAqG;AACrG,OAAO,EACL,cAAc,EACd,QAAQ,EACR,aAAa,EAEb,cAAc,GAGf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAe,MAAM,aAAa,CAAC;AAE3E,OAAO,EAAE,YAAY,EAA0E,MAAM,aAAa,CAAC;AACnH,4FAA4F;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,4EAA4E;AAC5E,OAAO,EACL,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,EACT,WAAW,EACX,YAAY,GAEb,MAAM,aAAa,CAAC;AACrB,kFAAkF;AAClF,kGAAkG;AAClG,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAgC,MAAM,SAAS,CAAC;AACrE,6FAA6F;AAC7F,OAAO,EAAE,WAAW,EAAoD,MAAM,YAAY,CAAC;AAC3F,8EAA8E"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,eAAe,EACf,WAAW,EAEX,IAAI,EAIJ,eAAe,EAEf,SAAS,GACV,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,cAAc,EACd,SAAS,GAWV,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EAGf,cAAc,EACd,YAAY,EAQZ,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAA0C,MAAM,aAAa,CAAC;AACtH,2GAA2G;AAC3G,gIAAgI;AAChI,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAyB,aAAa,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EACL,cAAc,EACd,UAAU,GAMX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EACL,cAAc,GAMf,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,KAAK,EACL,QAAQ,EACR,OAAO,EACP,WAAW,EAEX,IAAI,EAIJ,UAAU,GAIX,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,WAAW,EAEX,YAAY,EACZ,YAAY,EAEZ,eAAe,EACf,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,SAAS,EAIT,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,WAAW,EACX,YAAY,EACZ,cAAc,GAKf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAmC,MAAM,aAAa,CAAC;AAC3E,qGAAqG;AACrG,OAAO,EACL,cAAc,EACd,QAAQ,EACR,aAAa,EAEb,cAAc,GAGf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,cAAc,EAAe,MAAM,aAAa,CAAC;AAE3E,OAAO,EAEL,YAAY,GAKb,MAAM,aAAa,CAAC;AACrB,4FAA4F;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,4EAA4E;AAC5E,OAAO,EACL,MAAM,EACN,aAAa,EACb,UAAU,EACV,cAAc,EAEd,QAAQ,EACR,WAAW,EACX,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,EACT,WAAW,EACX,YAAY,GAEb,MAAM,aAAa,CAAC;AACrB,kFAAkF;AAClF,kGAAkG;AAClG,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAgC,MAAM,SAAS,CAAC;AACrE,6FAA6F;AAC7F,OAAO,EAAE,WAAW,EAAoD,MAAM,YAAY,CAAC;AAC3F,8EAA8E"}
package/dist/ledger.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { AsyncLocalStorage } from "node:async_hooks";
2
+ import { type Db } from "./db.ts";
2
3
  import type { Approver, Principal } from "./define.ts";
3
4
  import { type ErrorInfo } from "./errors.ts";
4
5
  import type { Effect } from "./op.ts";
@@ -72,6 +73,8 @@ export type LedgerRecord = {
72
73
  op?: string;
73
74
  /** The held call's `seq`, which its `op.called` record has, for a policy request. */
74
75
  opSeq?: number;
76
+ /** The policies that held the call, by id, for a policy request whose policy names them. */
77
+ reasons?: string[];
75
78
  }
76
79
  /** A message the approval ignored: from someone other than the approver, or not a decision. */
77
80
  | {
@@ -85,10 +88,12 @@ export type LedgerRecord = {
85
88
  decision: "approve" | "reject";
86
89
  by: string;
87
90
  note?: string;
91
+ /** Set when `by` started the run: nobody else could decide (`mayDecide`). */
92
+ alone?: true;
88
93
  }
89
94
  /**
90
95
  * A `ctx.sleep` began; `until` is when it ends, in ms since the epoch: the time asked for, or
91
- * for a duration the time the sleep started plus the duration, as the runtime saw it. Written
96
+ * for a duration the record's `at` plus the duration, as the runtime saw it. Written
92
97
  * for a time already past too, which waits not at all.
93
98
  */
94
99
  | {
@@ -195,6 +200,12 @@ export declare function jsonlLedger(dir: string): LedgerStore;
195
200
  export declare function postgresLedger(databaseUrl: string): LedgerStore & {
196
201
  close(): Promise<void>;
197
202
  };
203
+ /**
204
+ * Stores the record in the Postgres ledger's table through `db`, unless one with its id is
205
+ * stored: true when this one was. What `postgresLedger` appends with, and a direct write
206
+ * (`SanomaClient.call`) inside the transaction that saves its record.
207
+ */
208
+ export declare function insertRecord(db: Db, record: LedgerRecord): Promise<boolean>;
198
209
  /** Keeps records in memory, for tests. */
199
210
  export declare function memoryLedger(): LedgerStore;
200
211
  type Common = "v" | "app" | "id" | "runId" | "seq" | "at" | "actor" | "workflow" | "group";
package/dist/ledger.js CHANGED
@@ -142,24 +142,15 @@ export function postgresLedger(databaseUrl) {
142
142
  const pool = lazyPool(databaseUrl, "ledger");
143
143
  return {
144
144
  async append(record) {
145
- const line = lineOf(record);
146
145
  const conn = await pool.db();
147
- const inserted = await conn
148
- .query(`INSERT INTO ${TABLE} (id, run_id, seq, record) VALUES ($1, $2, $3, $4::jsonb) ON CONFLICT (id) DO NOTHING RETURNING n`, [record.id, record.runId, record.seq, line])
149
- .catch((err) => {
150
- if (DATA_EXCEPTION.test(pgCode(err))) {
151
- throw final(`Ledger record ${record.id} can't be stored: ${errorMessage(err)}`, err);
152
- }
153
- throw err;
154
- });
155
- if (inserted.rows.length)
146
+ if (await insertRecord(conn, record))
156
147
  return;
157
148
  // Another write of the id was first: the record it stored stands.
158
149
  const { rows } = await conn.query(`SELECT record FROM ${TABLE} WHERE id = $1`, [
159
150
  record.id,
160
151
  ]);
161
152
  if (rows[0])
162
- warnIfDifferent(rows[0].record, line);
153
+ warnIfDifferent(rows[0].record, lineOf(record));
163
154
  },
164
155
  async read(runId) {
165
156
  const { rows } = await (await pool.db()).query(`SELECT record FROM ${TABLE} WHERE run_id = $1 ORDER BY seq, n`, [runId]);
@@ -169,6 +160,22 @@ export function postgresLedger(databaseUrl) {
169
160
  close: pool.close,
170
161
  };
171
162
  }
163
+ /**
164
+ * Stores the record in the Postgres ledger's table through `db`, unless one with its id is
165
+ * stored: true when this one was. What `postgresLedger` appends with, and a direct write
166
+ * (`SanomaClient.call`) inside the transaction that saves its record.
167
+ */
168
+ export async function insertRecord(db, record) {
169
+ const inserted = await db
170
+ .query(`INSERT INTO ${TABLE} (id, run_id, seq, record) VALUES ($1, $2, $3, $4::jsonb) ON CONFLICT (id) DO NOTHING RETURNING n`, [record.id, record.runId, record.seq, lineOf(record)])
171
+ .catch((err) => {
172
+ if (DATA_EXCEPTION.test(pgCode(err))) {
173
+ throw final(`Ledger record ${record.id} can't be stored: ${errorMessage(err)}`, err);
174
+ }
175
+ throw err;
176
+ });
177
+ return inserted.rows.length > 0;
178
+ }
172
179
  /** Keeps records in memory, for tests. */
173
180
  export function memoryLedger() {
174
181
  const runs = new Map();