@sanoma-ai/workflows 0.5.0 → 0.7.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 (153) hide show
  1. package/README.md +49 -15
  2. package/dist/apply.d.ts +2 -1
  3. package/dist/apply.js +29 -7
  4. package/dist/apply.js.map +1 -1
  5. package/dist/approvals.d.ts +27 -2
  6. package/dist/approvals.js +73 -9
  7. package/dist/approvals.js.map +1 -1
  8. package/dist/call.d.ts +3 -2
  9. package/dist/call.js +38 -30
  10. package/dist/call.js.map +1 -1
  11. package/dist/cedar.js +24 -9
  12. package/dist/cedar.js.map +1 -1
  13. package/dist/change.d.ts +219 -0
  14. package/dist/change.js +150 -0
  15. package/dist/change.js.map +1 -0
  16. package/dist/chats.d.ts +43 -0
  17. package/dist/chats.js +48 -0
  18. package/dist/chats.js.map +1 -0
  19. package/dist/client.d.ts +52 -6
  20. package/dist/client.js +88 -47
  21. package/dist/client.js.map +1 -1
  22. package/dist/config.d.ts +47 -5
  23. package/dist/config.js +71 -7
  24. package/dist/config.js.map +1 -1
  25. package/dist/database.d.ts +83 -0
  26. package/dist/database.js +92 -0
  27. package/dist/database.js.map +1 -0
  28. package/dist/db.d.ts +31 -1
  29. package/dist/db.js +89 -7
  30. package/dist/db.js.map +1 -1
  31. package/dist/deadlines.d.ts +88 -0
  32. package/dist/deadlines.js +171 -0
  33. package/dist/deadlines.js.map +1 -0
  34. package/dist/define.d.ts +25 -4
  35. package/dist/define.js +40 -0
  36. package/dist/define.js.map +1 -1
  37. package/dist/demo.d.ts +28 -0
  38. package/dist/demo.js +72 -0
  39. package/dist/demo.js.map +1 -0
  40. package/dist/describe.d.ts +6 -3
  41. package/dist/describe.js +11 -7
  42. package/dist/describe.js.map +1 -1
  43. package/dist/errors.d.ts +10 -1
  44. package/dist/errors.js +13 -0
  45. package/dist/errors.js.map +1 -1
  46. package/dist/fake.d.ts +8 -0
  47. package/dist/fake.js +11 -1
  48. package/dist/fake.js.map +1 -1
  49. package/dist/grid.d.ts +34 -0
  50. package/dist/grid.js +62 -0
  51. package/dist/grid.js.map +1 -0
  52. package/dist/host.d.ts +13 -2
  53. package/dist/host.js +2 -2
  54. package/dist/host.js.map +1 -1
  55. package/dist/index.d.ts +16 -8
  56. package/dist/index.js +12 -5
  57. package/dist/index.js.map +1 -1
  58. package/dist/ledger.d.ts +11 -2
  59. package/dist/ledger.js.map +1 -1
  60. package/dist/lint.js +1 -1
  61. package/dist/lint.js.map +1 -1
  62. package/dist/op.d.ts +14 -2
  63. package/dist/op.js.map +1 -1
  64. package/dist/policy.d.ts +7 -1
  65. package/dist/policy.js +2 -1
  66. package/dist/policy.js.map +1 -1
  67. package/dist/resource.d.ts +13 -1
  68. package/dist/resource.js +9 -1
  69. package/dist/resource.js.map +1 -1
  70. package/dist/resources.d.ts +2 -0
  71. package/dist/resources.js +10 -1
  72. package/dist/resources.js.map +1 -1
  73. package/dist/run.d.ts +5 -0
  74. package/dist/run.js.map +1 -1
  75. package/dist/sandbox.d.ts +38 -10
  76. package/dist/sandbox.js +66 -35
  77. package/dist/sandbox.js.map +1 -1
  78. package/dist/scenario.d.ts +18 -1
  79. package/dist/scenario.js +77 -27
  80. package/dist/scenario.js.map +1 -1
  81. package/dist/scenarios.d.ts +10 -1
  82. package/dist/scenarios.js +19 -4
  83. package/dist/scenarios.js.map +1 -1
  84. package/dist/schedules.d.ts +66 -0
  85. package/dist/schedules.js +158 -0
  86. package/dist/schedules.js.map +1 -0
  87. package/dist/schema.d.ts +6 -0
  88. package/dist/schema.js +13 -3
  89. package/dist/schema.js.map +1 -1
  90. package/dist/shared.d.ts +38 -2
  91. package/dist/shared.js +50 -4
  92. package/dist/shared.js.map +1 -1
  93. package/dist/sites.d.ts +38 -1
  94. package/dist/sites.js +153 -26
  95. package/dist/sites.js.map +1 -1
  96. package/dist/source.d.ts +61 -2
  97. package/dist/source.js.map +1 -1
  98. package/dist/supervisor.d.ts +38 -0
  99. package/dist/supervisor.js +77 -0
  100. package/dist/supervisor.js.map +1 -0
  101. package/dist/version.d.ts +3 -1
  102. package/dist/version.js +3 -1
  103. package/dist/version.js.map +1 -1
  104. package/dist/wakeup-service.d.ts +83 -0
  105. package/dist/wakeup-service.js +421 -0
  106. package/dist/wakeup-service.js.map +1 -0
  107. package/dist/wakeup.d.ts +84 -0
  108. package/dist/wakeup.js +87 -0
  109. package/dist/wakeup.js.map +1 -0
  110. package/dist/worker.d.ts +39 -1
  111. package/dist/worker.js +130 -39
  112. package/dist/worker.js.map +1 -1
  113. package/oxlint.json +2 -1
  114. package/package.json +8 -2
  115. package/src/apply.ts +25 -6
  116. package/src/approvals.ts +89 -16
  117. package/src/call.ts +40 -29
  118. package/src/cedar.ts +24 -6
  119. package/src/change.ts +222 -0
  120. package/src/chats.ts +114 -0
  121. package/src/client.ts +145 -55
  122. package/src/config.ts +110 -13
  123. package/src/database.ts +152 -0
  124. package/src/db.ts +108 -9
  125. package/src/deadlines.ts +234 -0
  126. package/src/define.ts +71 -4
  127. package/src/demo.ts +87 -0
  128. package/src/describe.ts +19 -7
  129. package/src/errors.ts +14 -0
  130. package/src/fake.ts +12 -0
  131. package/src/grid.ts +100 -0
  132. package/src/host.ts +13 -4
  133. package/src/index.ts +62 -3
  134. package/src/ledger.ts +15 -3
  135. package/src/lint.ts +1 -1
  136. package/src/op.ts +15 -2
  137. package/src/policy.ts +7 -1
  138. package/src/resource.ts +22 -3
  139. package/src/resources.ts +12 -1
  140. package/src/run.ts +5 -0
  141. package/src/sandbox.ts +97 -37
  142. package/src/scenario.ts +97 -28
  143. package/src/scenarios.ts +21 -5
  144. package/src/schedules.ts +206 -0
  145. package/src/schema.ts +16 -3
  146. package/src/shared.ts +62 -4
  147. package/src/sites.ts +198 -33
  148. package/src/source.ts +58 -3
  149. package/src/supervisor.ts +107 -0
  150. package/src/version.ts +3 -1
  151. package/src/wakeup-service.ts +511 -0
  152. package/src/wakeup.ts +150 -0
  153. package/src/worker.ts +181 -44
package/dist/sites.js CHANGED
@@ -6,19 +6,21 @@ import { keyName } from "./datafile.js";
6
6
  import { stringValue, unwrap } from "./outline.js";
7
7
  import { filesUnder, isDirectory } from "./paths.js";
8
8
  import { START } from "./schema.js";
9
- import { ANONYMOUS, apiNameOf, BUILT_IN_WORKFLOWS, DATA_VENDOR, SITE_NAME, VISITORS, WORKFLOW_ACTION, } from "./shared.js";
9
+ import { ANONYMOUS, apiNameOf, BUILT_IN_WORKFLOWS, DATA_VENDOR, LOCALE, SITE_NAME, VISITORS, WORKFLOW_ACTION, } from "./shared.js";
10
10
  /** Where a site's code is: its pages and its components. */
11
11
  const SITE_DIRS = ["routes", "components"];
12
12
  /** Where `api`, `RunForm` and `defineSite` come from: `sanoma/site`, which re-exports the app's. */
13
13
  const SITE_SOURCES = new Set(["sanoma/site", "@sanoma-ai/app/site"]);
14
14
  const KIND_NAMES = { workflow: "workflow", collection: "collection", op: "operation" };
15
+ /** What a route's loader and head name its path's parameters by. */
16
+ const PARAMS = new Set(["params"]);
15
17
  /** What makes a route from its id, whose first argument is the id. */
16
18
  const ROUTE_MAKERS = new Set(["createFileRoute", "createLazyFileRoute"]);
17
19
  /**
18
20
  * The sites under `root`: each folder of `sites/` with a `routes/` whose name is a URL segment,
19
21
  * by name (as `@sanoma-ai/app/build`'s `sitesOf` mounts them). Reads `routes/**` and
20
22
  * `components/**` (`.ts` and `.tsx`, less tests and declarations) of each with oxc, never running
21
- * them: each `<RunForm workflow="…" />` and each use of `api`, both imported from `sanoma/site`,
23
+ * them: each page (`SitePage`, from a route's id), each `<RunForm workflow="…" />` and each use of `api`, both imported from `sanoma/site`,
22
24
  * called or passed on (`queryFn: api.data.leads.list`):
23
25
  * `api.<name>` and `api.<name>.<method>` are a workflow, `api.data.<collection>.<op>` a collection,
24
26
  * and `api.<vendor>.<resource>.<op>` an operation. A name that is not written out (a variable, a
@@ -36,8 +38,6 @@ export function readSites(root, description, connectors, policies) {
36
38
  if (root === undefined)
37
39
  return [];
38
40
  const dir = join(root, "sites");
39
- if (!isDirectory(dir))
40
- return [];
41
41
  const workflows = new Set(description.workflows.map((wf) => wf.name));
42
42
  const collections = new Set(description.collections.map((c) => c.name));
43
43
  const ops = new Map(description.ops.map((op) => [op.id, op]));
@@ -96,16 +96,10 @@ export function readSites(root, description, connectors, policies) {
96
96
  : undefined;
97
97
  return { call: { kind, target, via, ...at }, ...(problem && { problem }) };
98
98
  };
99
- return readdirSync(dir, { withFileTypes: true })
100
- .filter((d) => d.isDirectory() && SITE_NAME.test(d.name) && existsSync(join(dir, d.name, "routes")))
101
- .map((d) => d.name)
102
- .toSorted()
103
- .map((name) => {
104
- const files = SITE_DIRS.flatMap((sub) => filesUnder(join(dir, name, sub), isSource)).toSorted();
105
- const resolved = files.flatMap((path) => {
106
- const file = readSource(path);
107
- return typeof file === "string" ? [] : usesIn(file, relative(root, path).split(sep).join("/")).map(resolve);
108
- });
99
+ return siteNames(dir).map((name) => {
100
+ const read = readSiteFiles(root, name);
101
+ const resolved = read.flatMap(({ uses }) => uses.map(resolve));
102
+ const pages = pagesOf(read);
109
103
  const siteFile = `sites/${name}/site.ts`;
110
104
  const { problems: optionProblems, ...options } = siteOptionsOf(join(root, siteFile), connectors);
111
105
  const calls = resolved.map((r) => r.call);
@@ -116,16 +110,71 @@ export function readSites(root, description, connectors, policies) {
116
110
  }),
117
111
  ...optionProblems.map((p) => ({ file: siteFile, ...p })),
118
112
  ];
119
- return { name, ...options, calls, problems };
113
+ const sorted = [...pages.keys()].toSorted().map((path) => pages.get(path));
114
+ // A page's file it warns of, unless another of its files (a lazy one, its layout) gives its kind.
115
+ const warnings = options.public
116
+ ? read.flatMap(({ route, warning }) => (warning && !pages.get(route.path)?.content ? [warning] : []))
117
+ : [];
118
+ return { name, ...options, pages: sorted, calls, problems, warnings };
120
119
  });
121
120
  }
122
- /** The uses in one file, in its order. */
123
- function usesIn({ program, at }, file) {
121
+ /** A site's pages, by path, from its files: a layout's and its index's (one path) merged. */
122
+ function pagesOf(read) {
123
+ const pages = new Map();
124
+ for (const { route } of read) {
125
+ if (route)
126
+ pages.set(route.path, { ...pages.get(route.path), ...route });
127
+ }
128
+ return pages;
129
+ }
130
+ /** Each of site `name`'s files under `root`, as `readSiteFile` reads it, by path. */
131
+ const readSiteFiles = (root, name) => SITE_DIRS.flatMap((sub) => filesUnder(join(root, "sites", name, sub), isSource))
132
+ .toSorted()
133
+ .flatMap((path) => {
134
+ const file = readSource(path);
135
+ return typeof file === "string" ? [] : [readSiteFile(file, relative(root, path).split(sep).join("/"))];
136
+ });
137
+ /**
138
+ * Each site's pages under `root` whose entries are a content kind's (`SitePage.content`), path to
139
+ * kind: what the app's build gives its router (`virtual:sanoma/locales`), so a page lists only the
140
+ * languages its entry is in. Read as `readSites` reads them, never run.
141
+ */
142
+ export function siteContentPages(root) {
143
+ return Object.fromEntries(siteNames(join(root, "sites")).flatMap((name) => [...pagesOf(readSiteFiles(root, name)).values()].flatMap(({ path, content }) => content ? [[path, content]] : [])));
144
+ }
145
+ /**
146
+ * Each site's languages (`defineSite({ locales })`, the first its default) under `root`, by name,
147
+ * for the sites whose `site.ts` gives them without a problem there: what the app's build gives
148
+ * its router (`virtual:sanoma/locales`). Read as `readSites` reads them, never run.
149
+ */
150
+ export function siteLocales(root) {
151
+ const none = new Set();
152
+ return Object.fromEntries(siteNames(join(root, "sites")).flatMap((name) => {
153
+ const { locales } = siteOptionsOf(join(root, "sites", name, "site.ts"), { vendors: none, logins: none });
154
+ return locales ? [[name, locales]] : [];
155
+ }));
156
+ }
157
+ /** The sites in `dir`: each folder with a `routes/` whose name is a URL segment, sorted. */
158
+ const siteNames = (dir) => isDirectory(dir)
159
+ ? readdirSync(dir, { withFileTypes: true })
160
+ .filter((d) => d.isDirectory() && SITE_NAME.test(d.name) && existsSync(join(dir, d.name, "routes")))
161
+ .map((d) => d.name)
162
+ .toSorted()
163
+ : [];
164
+ /**
165
+ * What one file holds: its uses, in its order, and the page it is, from its route's id, with the
166
+ * content kind whose entry its one parameter names (`SitePage.content`). A file under `routes/` is
167
+ * read whole; any other only when it imports `api` or `RunForm`.
168
+ */
169
+ function readSiteFile({ program, at }, file) {
124
170
  const api = importedAs(program, SITE_SOURCES, "api");
125
171
  const runForm = importedAs(program, SITE_SOURCES, "RunForm");
126
- if (!api.size && !runForm.size)
127
- return [];
172
+ const content = importedAs(program, SITE_SOURCES, "content");
173
+ if (!api.size && !runForm.size && !file.includes("/routes/"))
174
+ return { uses: [] };
128
175
  const found = [];
176
+ /** Each `content.<kind>.get(arg)`: its kind, its argument and where it is. */
177
+ const gets = [];
129
178
  let page;
130
179
  const visit = (node) => {
131
180
  if (!node)
@@ -136,13 +185,16 @@ function usesIn({ program, at }, file) {
136
185
  if (named)
137
186
  return void found.push({ ...named, via: "api", file, ...at(node.start) });
138
187
  }
139
- else if (node.type === "CallExpression" && page === undefined) {
188
+ else if (node.type === "CallExpression") {
140
189
  const callee = unwrap(node.callee);
141
- if (callee?.type === "Identifier" && ROUTE_MAKERS.has(callee.name)) {
190
+ if (callee?.type === "Identifier" && ROUTE_MAKERS.has(callee.name) && page === undefined) {
142
191
  const id = stringValue(node.arguments[0]);
143
192
  if (id !== undefined)
144
193
  page = pageOf(id);
145
194
  }
195
+ const kind = contentKind(callee, content);
196
+ if (kind !== undefined)
197
+ gets.push({ kind, arg: unwrap(node.arguments[0]), start: node.start });
146
198
  }
147
199
  else if (node.type === "JSXOpeningElement" && node.name.type === "JSXIdentifier" && runForm.has(node.name.name)) {
148
200
  const attribute = node.attributes.find((a) => a.type === "JSXAttribute" && a.name.type === "JSXIdentifier" && a.name.name === "workflow");
@@ -155,10 +207,48 @@ function usesIn({ program, at }, file) {
155
207
  visit(child);
156
208
  };
157
209
  visit(program);
158
- return found.map((use) => (page === undefined ? use : { ...use, page }));
210
+ const uses = found.map((use) => (page === undefined ? use : { ...use, page }));
211
+ if (page === undefined)
212
+ return { uses };
213
+ // The one parameter's name (not a splat's), and the kinds whose `get` is given it (`params.slug`, or `slug` destructured).
214
+ const params = page.split("/").filter((segment) => segment.startsWith("$"));
215
+ if (params.length !== 1 || params[0] === "$")
216
+ return { uses, route: { path: page } };
217
+ const param = params[0].slice(1);
218
+ const kinds = new Set(gets
219
+ .filter(({ arg }) => arg?.type === "Identifier"
220
+ ? arg.name === param
221
+ : arg?.type === "MemberExpression" && memberPath(arg, PARAMS)?.join(".") === param)
222
+ .map(({ kind }) => kind));
223
+ if (kinds.size === 1)
224
+ return { uses, route: { path: page, content: [...kinds][0] } };
225
+ // A read by the parameter in a form the sitemap does not follow (`params.id.toLowerCase()`, two kinds).
226
+ const unfollowed = gets.find(({ arg }) => mentions(arg, param));
227
+ if (!unfollowed)
228
+ return { uses, route: { path: page } };
229
+ const message = `the sitemap lists none of this page's entries: it reads content by the page's parameter in a way it cannot follow. ` +
230
+ `Read one kind by it as written, \`content.<kind>.get(params.${param})\` (or \`${param}\` destructured)`;
231
+ return { uses, route: { path: page }, warning: { file, ...at(unfollowed.start), message } };
159
232
  }
160
- /** What a member path on `api` names; undefined for a path on anything else, a name not written out, or no name. */
161
- function apiPath(member, api) {
233
+ /** Whether `node` reads the parameter `param` anywhere in it: `params.<param>`, or `param` destructured (not another parameter, nor a property's name, `post.slug` or `{ slug: x }`). */
234
+ const mentions = (node, param) => {
235
+ if (!node)
236
+ return false;
237
+ if (node.type === "Identifier")
238
+ return node.name === param;
239
+ if (node.type === "Property" && !node.computed)
240
+ return mentions(node.value, param);
241
+ if (node.type === "MemberExpression") {
242
+ const path = memberPath(node, PARAMS);
243
+ if (path)
244
+ return path[0] === param;
245
+ if (!node.computed)
246
+ return mentions(node.object, param);
247
+ }
248
+ return childrenOf(node).some((child) => mentions(child, param));
249
+ };
250
+ /** The names of a member path on one of `roots` (`api.data.leads.list` is `data`, `leads`, `list`); undefined for a path on anything else or a name not written out. */
251
+ function memberPath(member, roots) {
162
252
  const path = [];
163
253
  let node = member;
164
254
  while (node?.type === "MemberExpression") {
@@ -168,7 +258,17 @@ function apiPath(member, api) {
168
258
  path.unshift(key);
169
259
  node = unwrap(node.object);
170
260
  }
171
- if (node?.type !== "Identifier" || !api.has(node.name))
261
+ return node?.type === "Identifier" && roots.has(node.name) ? path : undefined;
262
+ }
263
+ /** The kind of `content.<kind>.get`, a callee on `content` imported from `sanoma/site`; undefined for any other. */
264
+ function contentKind(callee, content) {
265
+ const path = callee?.type === "MemberExpression" ? memberPath(callee, content) : undefined;
266
+ return path?.length === 2 && path[1] === "get" ? path[0] : undefined;
267
+ }
268
+ /** What a member path on `api` names; undefined for a path on anything else, a name not written out, or no name. */
269
+ function apiPath(member, api) {
270
+ const path = memberPath(member, api);
271
+ if (!path?.length)
172
272
  return undefined;
173
273
  const [first, second, third] = path;
174
274
  if (first === DATA_VENDOR)
@@ -202,8 +302,9 @@ const unread = (what, as) => `${what} is read without running site.ts: write it
202
302
  /**
203
303
  * What `site.ts` says of its site, read without running it, and what is wrong there: its default
204
304
  * export must be `defineSite({ … })` written out, so it can be read at all; then `title` when it is
205
- * a string, `public` and `login`, which must be literals. `login` is kept as written; one on a
305
+ * a string, `public`, `login` and `locales`, which must be literals. `login` is kept as written; one on a
206
306
  * site that is not public, or naming no connector of the config with a login half, is a problem.
307
+ * `locales` is kept only when it has no problem.
207
308
  */
208
309
  function siteOptionsOf(path, connectors) {
209
310
  const file = readSource(path);
@@ -257,10 +358,36 @@ function siteOptionsOf(path, connectors) {
257
358
  const message = loginAt && loginProblem();
258
359
  if (message)
259
360
  problem(loginAt, message);
361
+ const localesAt = property("locales");
362
+ const list = unwrap(localesAt?.value);
363
+ // A hole or a spread is no string.
364
+ const tags = list?.type === "ArrayExpression" ? list.elements.map((e) => stringValue(e)) : undefined;
365
+ const locales = tags?.every((tag) => tag !== undefined) ? tags : undefined;
366
+ const localesProblem = () => {
367
+ if (locales === undefined)
368
+ return unread("`locales`", "an array of strings");
369
+ if (!locales.length)
370
+ return "`locales` names a site's languages, its default first: give one or more, or remove it";
371
+ const bad = locales.find((locale) => !LOCALE.test(locale));
372
+ if (bad !== undefined)
373
+ return `"${bad}" is not a language tag such as "en", "fr" or "pt-BR"`;
374
+ const twice = locales.find((locale, i) => locales.indexOf(locale) !== i);
375
+ if (twice !== undefined)
376
+ return `"${twice}" is in \`locales\` twice`;
377
+ // When `public` is what is wrong, it is said there.
378
+ if ((!isPublic && !publicUnread) || loginAt) {
379
+ return "`locales` are for a public site with no login: add `public: true`, or remove `locales`";
380
+ }
381
+ return undefined;
382
+ };
383
+ const localesMessage = localesAt && localesProblem();
384
+ if (localesMessage)
385
+ problem(localesAt, localesMessage);
260
386
  return {
261
387
  ...(title !== undefined && { title }),
262
388
  ...(isPublic && { public: true }),
263
389
  ...(login !== undefined && { login }),
390
+ ...(localesAt && !localesMessage && isPublic && !loginAt && { locales }),
264
391
  problems,
265
392
  };
266
393
  }
package/dist/sites.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sites.js","sourceRoot":"","sources":["../src/sites.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sites.js","sourceRoot":"","sources":["../src/sites.ts"],"names":[],"mappings":"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"}
package/dist/source.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { z } from "zod";
2
+ import type { PermissionsGrid } from "./grid.ts";
2
3
  /** A company's repository, as the runtime writes to it. */
3
4
  export interface Source {
4
5
  /** The repository's root directory. */
@@ -16,14 +17,72 @@ export interface Source {
16
17
  } | undefined | Promise<{
17
18
  revision: string;
18
19
  } | undefined>;
19
- /** The revision `ref` names, the checked-out one by default. */
20
+ /** The revision `ref` names, the checked-out one by default (a draft's by its `branch`). */
20
21
  head(ref?: string): string | Promise<string>;
21
- /** Pushes `ref` to the repository at `url`, signed in with `token`. */
22
+ /** Pushes `ref` to the repository at `url`, signed in with `token` (a draft by its `branch`). */
22
23
  push?(target: {
23
24
  url: string;
24
25
  token: string;
25
26
  ref: string;
26
27
  }): void | Promise<void>;
28
+ /**
29
+ * The draft `id` (letters, digits, `_` and `-`), opened: made from the checked-out revision the
30
+ * first time, then the same one, edits and all, until its branch is deleted.
31
+ */
32
+ draft?(id: string): Promise<Draft>;
33
+ /** The open drafts' ids, sorted. */
34
+ drafts?(): Promise<string[]>;
35
+ /** What the draft `id` has committed since its branch left the checked-out one (read from the branch alone). */
36
+ diff?(id: string): Promise<DraftDiff>;
37
+ /** Closes the draft `id`: its checkout removed and its branch deleted, whatever it held; nothing when it is gone. */
38
+ closeDraft?(id: string): Promise<void>;
39
+ /**
40
+ * `sanoma check` on the draft `id`, as a child in its checkout, one at a time in the process. A
41
+ * check that gives no result (a config that does not load, no install, a timeout) is a result
42
+ * of one problem saying why.
43
+ */
44
+ check?(id: string): Promise<CheckResult>;
45
+ /** The URL of the repository this one was cloned from (`origin`); undefined when it has none. */
46
+ remoteUrl?(): Promise<string | undefined>;
47
+ /**
48
+ * Fast-forwards the checked-out branch to `ref` in the repository at `url`, signed in with
49
+ * `token`, as `push` is: only when `ref` is checked out, nothing is uncommitted and the remote's
50
+ * `ref` contains it; otherwise `skipped`, saying why. The checked-out revision after.
51
+ */
52
+ follow?(target: {
53
+ url: string;
54
+ token: string;
55
+ ref: string;
56
+ }): Promise<{
57
+ revision: string;
58
+ } | {
59
+ skipped: string;
60
+ }>;
61
+ }
62
+ /**
63
+ * A draft: a checkout of its own, at `root`, on `branch`, which `commit` records in as
64
+ * `Source.commit` does in its root. Its `node_modules` may be the root's own install, linked in:
65
+ * a writer never writes under it.
66
+ */
67
+ export interface Draft {
68
+ branch: string;
69
+ root: string;
70
+ commit: Source["commit"];
71
+ }
72
+ /** A draft's change: the files it touches, relative to the root, and git's `--stat` of it. */
73
+ export interface DraftDiff {
74
+ files: string[];
75
+ summary: string;
76
+ }
77
+ /** What `sanoma check` finds in a repo (a draft's too). */
78
+ export interface CheckResult {
79
+ ok: boolean;
80
+ /** One printable line each: `<file>:<line>:<col>: <message>`, or `<scenario> › <step>: <message>`. */
81
+ problems: string[];
82
+ /** What is worth fixing but not wrong, one line each, `<file>:<line>:<col>: warning: <message>`: the sites' `warnings`. */
83
+ warnings: string[];
84
+ /** The repo's Permissions grid (`permissionsGrid`), when its config loaded and its policies hold: what a change is reviewed by. */
85
+ grid?: PermissionsGrid;
27
86
  }
28
87
  /**
29
88
  * The built-in operation `sanoma.source.resolve`: the commit `ref` names in the repository at
@@ -1 +1 @@
1
- {"version":3,"file":"source.js","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { type SanomaConfig } from "./config.ts";
2
+ import type { SelfStop } from "./deadlines.ts";
3
+ import { type WorkerOptions } from "./worker.ts";
4
+ /** A worker under a supervisor (`superviseWorker`). */
5
+ export interface Supervisor {
6
+ /** True from the moment the worker stopped itself until a fresh one starts. */
7
+ readonly stopped: boolean;
8
+ /**
9
+ * Starts a fresh worker when the last one stopped itself, for a write that needs one (a run's
10
+ * start, an approval's decision); while one starts or runs, it is heard (below). Resolves once it runs, or
11
+ * once its failure to start is logged: the next call tries again. Never rejects.
12
+ */
13
+ resume(): Promise<void>;
14
+ /**
15
+ * A wakeup's `GET /wake?generation=N`: `resume` when the worker stopped with `generation`
16
+ * registered (`shouldWake`); a no-op for any other, and while one starts or runs.
17
+ */
18
+ wake(generation: number): Promise<void>;
19
+ /** Stops the worker running or starting, and starts none again. */
20
+ stop(): Promise<void>;
21
+ }
22
+ export interface SupervisorOptions extends Omit<WorkerOptions, "onStopped"> {
23
+ /**
24
+ * False: the worker never stops itself, as on an app on this machine alone, whose wakeup
25
+ * would wake the instance the host runs. Default true.
26
+ */
27
+ selfStop?: boolean;
28
+ /** Told each time the worker stops itself, once a fresh one is starting for a write it heard, or `stopped` is true. */
29
+ onStopped?: (stopped: SelfStop) => void;
30
+ }
31
+ /**
32
+ * Starts a worker on `config` that stops itself when idle with a wakeup declared (`onStopped`
33
+ * in `WorkerOptions`), and a fresh one each time `resume` or `wake` asks after it did. Throws
34
+ * when the first does not start. A write heard while a worker starts or runs may land after its last check
35
+ * for being idle, so a worker that stops itself after one is started again at once: it stops
36
+ * again on its own when nothing came of it.
37
+ */
38
+ export declare function superviseWorker(config: SanomaConfig, options?: SupervisorOptions): Promise<Supervisor>;
@@ -0,0 +1,77 @@
1
+ import { resolveConfig } from "./config.js";
2
+ import { shouldWake } from "./db.js";
3
+ import { warn } from "./log.js";
4
+ import { errorMessage } from "./shared.js";
5
+ import { startWorker } from "./worker.js";
6
+ /**
7
+ * Starts a worker on `config` that stops itself when idle with a wakeup declared (`onStopped`
8
+ * in `WorkerOptions`), and a fresh one each time `resume` or `wake` asks after it did. Throws
9
+ * when the first does not start. A write heard while a worker starts or runs may land after its last check
10
+ * for being idle, so a worker that stops itself after one is started again at once: it stops
11
+ * again on its own when nothing came of it.
12
+ */
13
+ export async function superviseWorker(config, options = {}) {
14
+ const { onStopped, selfStop = true, ...workerOptions } = options;
15
+ let worker;
16
+ let starting;
17
+ let closed = false;
18
+ // A write while the worker starts or runs, since it began starting.
19
+ let heard = false;
20
+ let databaseUrl;
21
+ const launch = async () => {
22
+ heard = false;
23
+ const started = await startWorker(config, { ...workerOptions, ...(selfStop && { onStopped: selfStopped }) });
24
+ if (closed)
25
+ await started.stop();
26
+ else
27
+ worker = started;
28
+ };
29
+ const selfStopped = (stopped) => {
30
+ worker = undefined;
31
+ if (closed)
32
+ return;
33
+ // Resumed first, so `stopped` is false when `onStopped` (the exit rule) looks.
34
+ if (heard)
35
+ void supervisor.resume();
36
+ onStopped?.(stopped);
37
+ };
38
+ const supervisor = {
39
+ get stopped() {
40
+ return !closed && !worker && !starting;
41
+ },
42
+ resume() {
43
+ if (closed)
44
+ return Promise.resolve();
45
+ if (worker) {
46
+ heard = true;
47
+ return Promise.resolve();
48
+ }
49
+ if (starting) {
50
+ heard = true;
51
+ return starting;
52
+ }
53
+ return (starting = launch()
54
+ .catch((err) => warn(`the worker could not start again: ${errorMessage(err)}`))
55
+ .finally(() => {
56
+ starting = undefined;
57
+ }));
58
+ },
59
+ async wake(generation) {
60
+ if (!supervisor.stopped)
61
+ return;
62
+ databaseUrl ??= resolveConfig(config).databaseUrl;
63
+ if (await shouldWake(databaseUrl, generation))
64
+ await supervisor.resume();
65
+ },
66
+ async stop() {
67
+ closed = true;
68
+ await starting;
69
+ const running = worker;
70
+ worker = undefined;
71
+ await running?.stop();
72
+ },
73
+ };
74
+ await launch();
75
+ return supervisor;
76
+ }
77
+ //# sourceMappingURL=supervisor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -7,8 +7,10 @@ export declare const RUNTIME_VERSION: string;
7
7
  * package release, so a run in flight on the old layout is not replayed against the new one.
8
8
  * 2: calls run in program order; a decision event per approval (2026-10-07).
9
9
  * 3: a start the policy holds waits on its approval before the body (2026-10-21).
10
+ * 4: a sleep for a duration reads DBOS's clock for its start (2026-10-25).
11
+ * 5: a scheduled run admits its starter and asks the policy in two steps before the body (2026-10-25).
10
12
  */
11
- export declare const STEP_LAYOUT = 3;
13
+ export declare const STEP_LAYOUT = 5;
12
14
  /**
13
15
  * The application version DBOS stamps on every run, always `<appName>@…`: DBOS version names
14
16
  * are unique per system database across apps. A worker recovers and dequeues only runs of its
package/dist/version.js CHANGED
@@ -12,8 +12,10 @@ export const RUNTIME_VERSION = JSON.parse(readFileSync(new URL("../package.json"
12
12
  * package release, so a run in flight on the old layout is not replayed against the new one.
13
13
  * 2: calls run in program order; a decision event per approval (2026-10-07).
14
14
  * 3: a start the policy holds waits on its approval before the body (2026-10-21).
15
+ * 4: a sleep for a duration reads DBOS's clock for its start (2026-10-25).
16
+ * 5: a scheduled run admits its starter and asks the policy in two steps before the body (2026-10-25).
15
17
  */
16
- export const STEP_LAYOUT = 3;
18
+ export const STEP_LAYOUT = 5;
17
19
  let dbosVersion;
18
20
  /** The installed DBOS SDK's version, read from its package.json (which its exports don't expose). */
19
21
  function installedDbosVersion() {
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"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"}