@sanoma-ai/workflows 0.8.1 → 0.8.2

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 CHANGED
@@ -631,7 +631,7 @@ A scenario with no `When`, in a feature none of whose scenarios has one, is a _w
631
631
 
632
632
  ### Demos
633
633
 
634
- A demo is a company repo run on its connectors' fakes, seeded from its scenarios. Resolve the config with `fakes: "instance"` and start the worker and the client on that one resolution, then `reseed(client, resolved)` from `@sanoma-ai/workflows/scenarios`: it empties `sanoma_data`, resets the instance's fakes, applies every world to the instance (its records saved through the collections' driver, its vendor objects and calls into the instance's fakes; a fault is refused, since every run shares them), and starts each moment as a sandbox run by its person, undriven, so its first approval waits in the Inbox. A sandbox run on such an instance seeds and calls the instance's fakes and the collections' table, not fakes of its own. `reseed` resolves to a `DemoState`, `{ seededAt, worlds, moments, problems }`, each moment with its `person`, `path`, `scenario` and `runId`, and a line in `problems` for each feature file that did not load and each world or moment that failed while the rest went on; `demoState(resolved)` is the last one, for a banner. Before it seeds, it cancels every run of the app that has not ended (`client.cancelUnfinished()`), the last seed's moments among them, so only the new ones wait. `reseed(client, resolved, { only })` seeds one half (`SeedHalf`): `"database"` (the runs cancelled, `sanoma_data` emptied, the worlds' collection records, the moments started) or `"memory"` (the instance's fakes reset, the worlds' vendor objects and calls), so a process over a copy of a seeded database fills its own fakes with `only: "memory"`. A demo's app does all of this itself: `startApp(config, { demo: true })`, which `sanoma demo` runs ([the app's Demo](../app/README.md#demo)); the config's `demo.start` is the URL its banner's "Start with these apps" opens.
634
+ A demo is a company repo run on its connectors' fakes, seeded from its scenarios. Resolve the config with `fakes: "instance"` and start the worker and the client on that one resolution, then `reseed(client, resolved)` from `@sanoma-ai/workflows/scenarios`: it empties `sanoma_data`, resets the instance's fakes, applies every world to the instance (its records saved through the collections' driver, its vendor objects and calls into the instance's fakes; a fault is refused, since every run shares them), and starts each moment as a sandbox run by its person, undriven, so its first approval waits in the Inbox. A sandbox run on such an instance seeds and calls the instance's fakes and the collections' table, not fakes of its own. `reseed` resolves to a `DemoState`, `{ seededAt, worlds, moments, problems }`, each moment with its `person`, `path`, `scenario` and `runId`, and a line in `problems` for each feature file that did not load and each world or moment that failed while the rest went on; `demoState(resolved)` is the last one, for a banner. Before it seeds, it cancels every run of the app that has not ended (`client.cancelUnfinished()`), the last seed's moments among them, so only the new ones wait. `reseed(client, resolved, { only })` seeds one half (`SeedHalf`): `"database"` (the runs cancelled, `sanoma_data` emptied, the worlds' collection records, the moments started) or `"memory"` (the instance's fakes reset, the worlds' vendor objects and calls), so a process over a copy of a seeded database fills its own fakes with `only: "memory"`. A demo's app does all of this itself: `startApp(config, { demo: true })`, which `sanoma demo` runs ([the app's Demo](../app/README.md#demo)); the config's `demo.start` is the URL its banner's "Start with these apps" opens, `demo.reseed` the minutes between seeds, and `demo.sessions` and `demo.idle` give each visitor a copy of the seeded database of their own (`sanoma demo`'s session host). `SANOMA_POOL_SIZE` caps every Postgres pool of a process, its pg pools' and DBOS's system pool (default 10 each), as the session host does for each visitor's process.
635
635
 
636
636
  ```ts
637
637
  const resolved = resolveConfig(config, { fakes: "instance" });
@@ -4,6 +4,20 @@ import { type Claims } from "./claims.ts";
4
4
  export declare const APP_TOPIC = "sanoma-app";
5
5
  /** GitHub's REST API, searched without a token (so rate-limited: ten searches a minute per address). */
6
6
  export declare const GITHUB_API = "https://api.github.com";
7
+ /** How long one search answers the listing: a public page lists per visitor, and GitHub allows ten searches a minute. */
8
+ export declare const FRESH_MS: number;
9
+ /** How long a failed search answers (GitHub's rate limit counts by the minute). */
10
+ export declare const RETRY_MS = 60000;
11
+ /** One repository of GitHub's search answer: what the list shows of it. */
12
+ declare const Found: z.ZodObject<{
13
+ full_name: z.ZodString;
14
+ html_url: z.ZodURL;
15
+ description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
16
+ license: z.ZodOptional<z.ZodNullable<z.ZodObject<{
17
+ spdx_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
18
+ }, z.core.$strip>>>;
19
+ }, z.core.$strip>;
20
+ type Found = z.infer<typeof Found>;
7
21
  /** An app's source on GitHub, with what Sanoma claims about it. */
8
22
  export declare const AvailableApp: z.ZodObject<{
9
23
  repo: z.ZodString;
@@ -79,12 +93,24 @@ export declare const appsListOps: import("./op.ts").Connector<"sanoma", {
79
93
  };
80
94
  };
81
95
  }>;
82
- /** The driver of `sanoma.apps.list`: GitHub's search, now. */
96
+ /** The driver of `sanoma.apps.list`: GitHub's search, remembered for `FRESH_MS`. */
83
97
  export declare const appsListDriver: import("./op.ts").Driver;
84
98
  /**
85
- * The repositories GitHub finds with the topic `sanoma-app`, not archived, the first hundred, each with what
86
- * `from` claims about it (the claims by default), official first, then by name. A repository
87
- * GitHub describes otherwise than expected is left out. When GitHub cannot be searched the list
88
- * is empty, and says why.
99
+ * The repositories GitHub finds with the topic `sanoma-app`, not archived, the first hundred, but
100
+ * those it describes otherwise than expected; throws when it cannot be searched.
101
+ */
102
+ export declare function searchGitHub(): Promise<Found[]>;
103
+ /**
104
+ * `search`, remembered: its last result answers for `FRESH_MS` (by `now`), the calls meanwhile share
105
+ * one search, and when a later search fails the last result still answers. A failure with
106
+ * nothing remembered throws. After a failure the next search waits `RETRY_MS`, so a rate-limited
107
+ * search is not retried per call.
108
+ */
109
+ export declare function remembered<T>(search: () => Promise<T>, now?: () => number): () => Promise<T>;
110
+ /**
111
+ * The apps `search` finds (GitHub's, remembered, by default), each with what `from` claims about
112
+ * it (the claims by default), official first, then by name. When GitHub cannot be searched and nothing is remembered,
113
+ * the list is empty, and says why.
89
114
  */
90
- export declare function availableApps(from?: Claims): Promise<AvailableApps>;
115
+ export declare function availableApps(from?: Claims, search?: () => Promise<Found[]>): Promise<AvailableApps>;
116
+ export {};
package/dist/apps-list.js CHANGED
@@ -2,16 +2,20 @@ import { z } from "zod";
2
2
  import { appClaim, appTier, claims, TIERS } from "./claims.js";
3
3
  import { defineConnector, defineDriver } from "./op.js";
4
4
  import { errorMessage } from "./shared.js";
5
- // The apps a company could take: GitHub's repositories with the topic `sanoma-app`, read when
6
- // asked and never stored, joined with Sanoma's claims (`claims.ts`). One built-in read operation,
7
- // `sanoma.apps.list`, which the app's Apps page and a public site's pages both call (`isDirect`
8
- // admits it), under the policy as the person asking.
5
+ // The apps a company could take: GitHub's repositories with the topic `sanoma-app`, searched at
6
+ // most once per `FRESH_MS` and kept only in the process, joined with Sanoma's claims
7
+ // (`claims.ts`). One built-in read operation, `sanoma.apps.list`, which the app's Apps page and a
8
+ // public site's pages both call (`isDirect` admits it), under the policy as the person asking.
9
9
  /** The topic a source repository carries so the listing finds it. */
10
10
  export const APP_TOPIC = "sanoma-app";
11
11
  /** GitHub's REST API, searched without a token (so rate-limited: ten searches a minute per address). */
12
12
  export const GITHUB_API = "https://api.github.com";
13
13
  /** How long GitHub gets to answer, so a slow or absent network only empties the list. */
14
14
  const TIMEOUT_MS = 5_000;
15
+ /** How long one search answers the listing: a public page lists per visitor, and GitHub allows ten searches a minute. */
16
+ export const FRESH_MS = 10 * 60_000;
17
+ /** How long a failed search answers (GitHub's rate limit counts by the minute). */
18
+ export const RETRY_MS = 60_000;
15
19
  /** One repository of GitHub's search answer: what the list shows of it. */
16
20
  const Found = z.object({
17
21
  full_name: z.string().regex(/^[\w.-]+\/[\w.-]+$/),
@@ -51,7 +55,7 @@ export const appsListOps = defineConnector("sanoma", {
51
55
  },
52
56
  },
53
57
  });
54
- /** The driver of `sanoma.apps.list`: GitHub's search, now. */
58
+ /** The driver of `sanoma.apps.list`: GitHub's search, remembered for `FRESH_MS`. */
55
59
  export const appsListDriver = defineDriver(appsListOps, { apps: { list: () => availableApps() } });
56
60
  /** An app found, with what `from` claims about it. */
57
61
  function listed(found, from) {
@@ -75,34 +79,71 @@ function listed(found, from) {
75
79
  /** 1 for an official app, which the list shows first. */
76
80
  const official = (app) => Number(app.tier === "official");
77
81
  /**
78
- * The repositories GitHub finds with the topic `sanoma-app`, not archived, the first hundred, each with what
79
- * `from` claims about it (the claims by default), official first, then by name. A repository
80
- * GitHub describes otherwise than expected is left out. When GitHub cannot be searched the list
81
- * is empty, and says why.
82
+ * The repositories GitHub finds with the topic `sanoma-app`, not archived, the first hundred, but
83
+ * those it describes otherwise than expected; throws when it cannot be searched.
82
84
  */
83
- export async function availableApps(from = claims) {
85
+ export async function searchGitHub() {
84
86
  const url = `${GITHUB_API}/search/repositories?q=${encodeURIComponent(`topic:${APP_TOPIC} archived:false`)}&per_page=100`;
85
- let items;
86
- try {
87
- const res = await fetch(url, {
88
- headers: { accept: "application/vnd.github+json", "user-agent": "sanoma", "x-github-api-version": "2022-11-28" },
89
- signal: AbortSignal.timeout(TIMEOUT_MS),
87
+ const res = await fetch(url, {
88
+ headers: { accept: "application/vnd.github+json", "user-agent": "sanoma", "x-github-api-version": "2022-11-28" },
89
+ signal: AbortSignal.timeout(TIMEOUT_MS),
90
+ });
91
+ if (!res.ok) {
92
+ await res.body?.cancel();
93
+ throw new Error(`${new URL(url).host} answered ${res.status} to ${new URL(url).pathname}`);
94
+ }
95
+ return Search.parse(await res.json()).items.flatMap((item) => {
96
+ const found = Found.safeParse(item);
97
+ return found.success ? [found.data] : [];
98
+ });
99
+ }
100
+ /**
101
+ * `search`, remembered: its last result answers for `FRESH_MS` (by `now`), the calls meanwhile share
102
+ * one search, and when a later search fails the last result still answers. A failure with
103
+ * nothing remembered throws. After a failure the next search waits `RETRY_MS`, so a rate-limited
104
+ * search is not retried per call.
105
+ */
106
+ export function remembered(search, now = Date.now) {
107
+ let last;
108
+ /** The last search's answer, or the one in flight, which answers until `until`. */
109
+ let answer;
110
+ let until = 0;
111
+ return () => {
112
+ if (answer && now() < until)
113
+ return answer;
114
+ answer = search().then((value) => {
115
+ last = { value };
116
+ until = now() + FRESH_MS;
117
+ return value;
118
+ }, (err) => {
119
+ until = now() + RETRY_MS;
120
+ if (last)
121
+ return last.value;
122
+ throw err;
90
123
  });
91
- if (!res.ok) {
92
- await res.body?.cancel();
93
- throw new Error(`${new URL(url).host} answered ${res.status} to ${new URL(url).pathname}`);
94
- }
95
- items = Search.parse(await res.json()).items;
124
+ // After the call, so a search that throws at once leaves the next call to search again.
125
+ until = Infinity;
126
+ return answer;
127
+ };
128
+ }
129
+ /** GitHub's search as the driver makes it: once per `FRESH_MS` for the process. */
130
+ const searched = remembered(searchGitHub);
131
+ /**
132
+ * The apps `search` finds (GitHub's, remembered, by default), each with what `from` claims about
133
+ * it (the claims by default), official first, then by name. When GitHub cannot be searched and nothing is remembered,
134
+ * the list is empty, and says why.
135
+ */
136
+ export async function availableApps(from = claims, search = searched) {
137
+ let found;
138
+ try {
139
+ found = await search();
96
140
  }
97
141
  catch (err) {
98
142
  return { apps: [], error: `Could not search GitHub: ${errorMessage(err)}` };
99
143
  }
100
144
  return {
101
- apps: items
102
- .flatMap((item) => {
103
- const found = Found.safeParse(item);
104
- return found.success ? [listed(found.data, from)] : [];
105
- })
145
+ apps: found
146
+ .map((repo) => listed(repo, from))
106
147
  .toSorted((a, b) => official(b) - official(a) || a.repo.localeCompare(b.repo, "en")),
107
148
  };
108
149
  }
@@ -1 +1 @@
1
- {"version":3,"file":"apps-list.js","sourceRoot":"","sources":["../src/apps-list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apps-list.js","sourceRoot":"","sources":["../src/apps-list.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -72,14 +72,27 @@ export interface SanomaConfig {
72
72
  * that sets it and declares a wakeup of its own.
73
73
  */
74
74
  wakeup?: true;
75
+ /** How this repo runs as a demo (`sanoma demo`, or `SANOMA_DEMO=1` on a host). */
76
+ demo?: DemoConfig;
77
+ }
78
+ /** A demo's settings (`SanomaConfig.demo`). */
79
+ export interface DemoConfig {
75
80
  /**
76
- * What the app says when it runs this repo as a demo (`sanoma demo`): `start`, the URL its
77
- * banner's "Start with these apps" opens, such as the hosted wizard with the demo's apps
78
- * chosen; without one, the banner has no such link.
81
+ * The URL the banner's "Start with these apps" opens, such as the hosted wizard with the demo's
82
+ * apps chosen; without one, the banner has no such link.
79
83
  */
80
- demo?: {
81
- start?: string;
82
- };
84
+ start?: string;
85
+ /**
86
+ * A session per visitor: each visitor gets a copy of the seeded database and a process of their
87
+ * own over it, so the moments wait for them alone and nothing they type reaches another. At most
88
+ * this many at once, or with `true` as many as the machine's memory and Postgres's connections
89
+ * hold; past it, visitors share one demo instance. Without it, every visitor shares that instance.
90
+ */
91
+ sessions?: true | number;
92
+ /** Minutes a visitor's session lives unused before it is dropped. Default 30. */
93
+ idle?: number;
94
+ /** Minutes between seeds of the demo afresh (its shared instance, or the sessions' seed). Default 60. */
95
+ reseed?: number;
83
96
  }
84
97
  /** A config, checked, with everything a worker, client or app derives from it. */
85
98
  export interface ResolvedConfig {
package/dist/config.js CHANGED
@@ -28,6 +28,18 @@ import { checkWakeupOps } from "./wakeup.js";
28
28
  import { sanomaWakeupDriver, wakeupSteps } from "./wakeup-driver.js";
29
29
  import { wakeupOps } from "./wakeup-type.js";
30
30
  import { checkDatabaseOps } from "./database.js";
31
+ /** Refuses a `demo` whose numbers make no demo: `sessions` `true` or a whole number above 0, `idle` and `reseed` minutes above 0. */
32
+ function checkDemo(demo) {
33
+ const { sessions, idle, reseed } = demo ?? {};
34
+ if (sessions !== undefined && sessions !== true && !(Number.isInteger(sessions) && sessions > 0)) {
35
+ throw new Error(`The config's \`demo.sessions\` is \`true\` or how many at once, a whole number above 0, not ${JSON.stringify(sessions)}`);
36
+ }
37
+ for (const [key, minutes] of Object.entries({ idle, reseed })) {
38
+ if (minutes !== undefined && !(typeof minutes === "number" && minutes > 0)) {
39
+ throw new Error(`The config's \`demo.${key}\` is minutes, a number above 0, not ${JSON.stringify(minutes)}`);
40
+ }
41
+ }
42
+ }
31
43
  /**
32
44
  * The database when neither the config nor `SANOMA_DATABASE_URL` names one: the dev Postgres
33
45
  * `pnpm db:up` starts in this checkout. The `sanoma` launcher never falls back to it: with no
@@ -88,6 +100,7 @@ export function resolveConfig(config, options = {}) {
88
100
  if (config.policy !== undefined) {
89
101
  throw new Error("The config's `policy` is gone: the policy is policies/*.cedar in the root; leave it out");
90
102
  }
103
+ checkDemo(config.demo);
91
104
  const collections = collectionsOf(config);
92
105
  const ledger = ledgerOf(config);
93
106
  const root = rootOf(config);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/db.d.ts CHANGED
@@ -37,6 +37,7 @@ export declare function openPool(databaseUrl: string, what: string): Pool;
37
37
  */
38
38
  export declare const DBOS_DATABASE_OPTIONS: {
39
39
  readonly systemDatabaseIdleTransactionTimeoutMs: 0;
40
+ readonly systemDatabasePoolSize?: number | undefined;
40
41
  };
41
42
  /**
42
43
  * Stamps the change runs `ids` still unfinished on another version with the application version
package/dist/db.js CHANGED
@@ -67,12 +67,19 @@ export const pgCode = (err) => err?.code?.toString() ?? "";
67
67
  const MADE_ALREADY = new Set(["23505", "42P04", "42P07", "42710"]);
68
68
  /** True for the failure of a create that another process won: what was to be made is there. */
69
69
  export const madeAlready = (err) => MADE_ALREADY.has(pgCode(err));
70
+ /**
71
+ * `SANOMA_POOL_SIZE`, read once: the most connections each Postgres pool of the process opens, its
72
+ * pg pools' and DBOS's system pool alike; unset, theirs (10 each). `sanoma demo`'s session host sets
73
+ * it low for each visitor's process, so a session costs a few connections, not a dozen.
74
+ */
75
+ const askedPoolSize = Number(process.env.SANOMA_POOL_SIZE);
76
+ const POOL_SIZE = Number.isInteger(askedPoolSize) && askedPoolSize > 0 ? askedPoolSize : undefined;
70
77
  /**
71
78
  * A pool on the config's database for `what` (a word for the messages). An idle connection that
72
79
  * drops (Postgres restarted) is replaced on the next query; unheard, it would end the process.
73
80
  */
74
81
  export function openPool(databaseUrl, what) {
75
- const pool = new Pool({ connectionString: databaseUrl });
82
+ const pool = new Pool({ connectionString: databaseUrl, ...(POOL_SIZE !== undefined && { max: POOL_SIZE }) });
76
83
  pool.on("error", (err) => warn(`a ${what} connection failed: ${errorMessage(err)}`));
77
84
  return pool;
78
85
  }
@@ -84,7 +91,10 @@ export function openPool(databaseUrl, what) {
84
91
  * queries at once on one client, which pg deprecates. `prepareDatabase` sets the same 60 s guard
85
92
  * on the database instead. Remove the switch when DBOS awaits its `SET`.
86
93
  */
87
- export const DBOS_DATABASE_OPTIONS = { systemDatabaseIdleTransactionTimeoutMs: 0 };
94
+ export const DBOS_DATABASE_OPTIONS = {
95
+ systemDatabaseIdleTransactionTimeoutMs: 0,
96
+ ...(POOL_SIZE !== undefined && { systemDatabasePoolSize: POOL_SIZE }),
97
+ };
88
98
  /**
89
99
  * Stamps the change runs `ids` still unfinished on another version with the application version
90
100
  * `version`, so DBOS gives them to a worker of that version: those it stamped, each with its status
package/dist/db.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAU3C,mDAAmD;AACnD,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AACtD,mDAAmD;AACnD,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;AAC5C,sHAAsH;AACtH,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC;AACxC;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;AAC5C,0FAA0F;AAC1F,MAAM,CAAC,MAAM,WAAW,GAAG,cAAc,CAAC;AAC1C,8EAA8E;AAC9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AAE1D,wEAAwE;AACxE,MAAM,MAAM,GAA2C;IACrD;QACE,aAAa;QACb,8BAA8B,iBAAiB,gDAAgD;YAC7F,kEAAkE;KACrE;IACD;QACE,QAAQ;QACR,2FAA2F;QAC3F,2EAA2E;QAC3E,8BAA8B,YAAY,sDAAsD;YAC9F,sEAAsE;YACtE,8BAA8B,YAAY,eAAe,YAAY,mBAAmB;KAC3F;IACD;QACE,MAAM;QACN,8BAA8B,UAAU,wEAAwE;YAC9G,yGAAyG;KAC5G;IACD;QACE,QAAQ;QACR,8BAA8B,YAAY,2DAA2D;YACnG,yDAAyD,YAAY,8CAA8C;KACtH;IACD;QACE,OAAO;QACP,8BAA8B,WAAW,qEAAqE;YAC5G,sFAAsF;YACtF,8BAA8B,WAAW,cAAc,WAAW,uBAAuB;KAC5F;IACD;QACE,eAAe;QACf,8BAA8B,mBAAmB,sCAAsC,WAAW,QAAQ;YACxG,+GAA+G;KAClH;CACF,CAAC;AAEF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,GAAY,EAAU,EAAE,CAAE,GAAiC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE3G;;;;;GAKG;AACH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAEnE,+FAA+F;AAC/F,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAY,EAAW,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAEpF;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,WAAmB,EAAE,IAAY;IACxD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,uBAAuB,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACrF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,sCAAsC,EAAE,CAAC,EAAW,CAAC;AAE5F;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,EAAM,EACN,GAAsB,EACtB,OAAe;IAEf,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,KAAK,CAC7B;;;qCAGiC,EACjC,CAAC,OAAO,EAAE,GAAG,CAAC,CACf,CAAC;IACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC,CAAC,CAAC;AACrF,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,WAAmB,EAAE,eAAwB,EAAuB,EAAE,CAC/F,UAAU,CAAC,MAAM,CAAC;IAChB,iBAAiB,EAAE,WAAW;IAC9B,GAAG,CAAC,eAAe,KAAK,SAAS,IAAI,EAAE,eAAe,EAAE,CAAC;IACzD,GAAG,qBAAqB;CACzB,CAAC,CAAC;AAEL;;;;GAIG;AACH,MAAM,2BAA2B,GAAG,KAAK,CAAC;AAE1C,wEAAwE;AACxE,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAEvC,iFAAiF;AACjF,MAAM,WAAW,GAAG,OAAO,CAAC;AAQ5B;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,WAAmB,EAAE,IAAY;IACxD,IAAI,IAAsB,CAAC;IAC3B,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,OAAO;QACL,KAAK,CAAC,EAAE;YACN,IAAI,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,kBAAkB,CAAC,CAAC;YAC3D,MAAM,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC;gBACH,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,IAAI,KAAK,OAAO;oBAAE,IAAI,GAAG,SAAS,CAAC;gBACvC,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBAC3C,MAAM,GAAG,CAAC;YACZ,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,KAAK,CAAC,KAAK;YACT,MAAM,GAAG,IAAI,CAAC;YACd,MAAM,OAAO,GAAG,IAAI,CAAC;YACrB,IAAI,GAAG,SAAS,CAAC;YACjB,MAAM,OAAO,EAAE,GAAG,EAAE,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,gGAAgG;AAChG,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;AAElD;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,IAAI,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACtD,IAAI,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,SAAS;gBAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC1E,MAAM,GAAG,CAAC;QACZ,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,GAAG,CAAC,GAAY,EAAS,EAAE,CACzC,IAAI,KAAK,CAAC,mCAAmC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAEpF,KAAK,UAAU,OAAO,CAAC,WAAmB;IACxC,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACrE,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACrD,2FAA2F;YAC3F,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;gBAAE,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM;YAAE,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACrE,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;YAAS,CAAC;QACT,6FAA6F;QAC7F,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,eAAe,CAAC,WAAmB;IAChD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,2EAA2E,CAAC;QACxF,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAsB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,MAAM;YAAE,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,yGAAyG;AACzG,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,WAAmB;IACrD,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAY,EAAE,EAAE;QACvD,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,WAAW;YAAE,MAAM,GAAG,CAAC;QAC3C,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;QAClC,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,WAAmB;IACxC,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,EAAE,gBAAgB,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5F,mFAAmF;IACnF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,oCAAoC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACzF,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACrB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,cAAc,CAAC,WAAmB;IAC/C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAC;IAC3B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,KAAK,CAAC,mBAAmB,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;YAAE,MAAM,GAAG,CAAC;IACnC,CAAC;YAAS,CAAC;QACT,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,qBAAqB,CAAC,EAAM;IACzC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,CAAC;;;;;;aAMN,2BAA2B;;WAE7B,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,sBAAsB;YAAE,MAAM,UAAU,CAAC,GAAG,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAAM,EAAE,GAAW,EAAE,IAAY;IACjE,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,WAAW,CAAC,GAAG,CAAC;YAAE,OAAO;QAC7B,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,WAAW,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC;AAED,iGAAiG;AACjG,2FAA2F;AAE3F,yCAAyC;AACzC,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,EAAM,EAAE,EAAU;IAC/D,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,YAAY,8CAA8C,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAM,EAAE,KAAa;IAC3D,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,YAAY,mCAAmC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EAAM;IAC3C,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,YAAY,sCAAsC,CAAC,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@ export { type CallContext, CLIENT_IP_HEADER, type Connector, type ConnectorSetup
2
2
  export { SanomaPackageField, vendorInfo } from "./vendor-info.ts";
3
3
  export { defineWorkflow, Principal, type ApprovalRequest, type ApprovalResult, type ApprovalState, type Approver, type Builtin, type Ctx, type SleepRequest, type StepOptions, type Trigger, type Use, type WorkflowDefinition, } from "./define.ts";
4
4
  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";
5
- export { declaredWakeup, defineConfig, resolveConfig, resolveDatabaseUrl, type ResolvedConfig, type SanomaConfig, } from "./config.ts";
5
+ export { declaredWakeup, type DemoConfig, defineConfig, resolveConfig, resolveDatabaseUrl, type ResolvedConfig, type SanomaConfig, } from "./config.ts";
6
6
  export { type AppDefinition, type AppEntry, defineApp, readApps } from "./apps.ts";
7
7
  export { appFolders, APPS_DIR, filesUnder, kindDirs } from "./paths.ts";
8
8
  export { isCollection } from "./collection.ts";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanoma-ai/workflows",
3
- "version": "0.8.1",
3
+ "version": "0.8.2",
4
4
  "description": "Business processes as TypeScript functions, run durably on DBOS",
5
5
  "keywords": [
6
6
  "approvals",
package/src/apps-list.ts CHANGED
@@ -3,10 +3,10 @@ import { appClaim, appTier, type Claims, claims, TIERS } from "./claims.ts";
3
3
  import { defineConnector, defineDriver } from "./op.ts";
4
4
  import { errorMessage } from "./shared.ts";
5
5
 
6
- // The apps a company could take: GitHub's repositories with the topic `sanoma-app`, read when
7
- // asked and never stored, joined with Sanoma's claims (`claims.ts`). One built-in read operation,
8
- // `sanoma.apps.list`, which the app's Apps page and a public site's pages both call (`isDirect`
9
- // admits it), under the policy as the person asking.
6
+ // The apps a company could take: GitHub's repositories with the topic `sanoma-app`, searched at
7
+ // most once per `FRESH_MS` and kept only in the process, joined with Sanoma's claims
8
+ // (`claims.ts`). One built-in read operation, `sanoma.apps.list`, which the app's Apps page and a
9
+ // public site's pages both call (`isDirect` admits it), under the policy as the person asking.
10
10
 
11
11
  /** The topic a source repository carries so the listing finds it. */
12
12
  export const APP_TOPIC = "sanoma-app";
@@ -14,6 +14,10 @@ export const APP_TOPIC = "sanoma-app";
14
14
  export const GITHUB_API = "https://api.github.com";
15
15
  /** How long GitHub gets to answer, so a slow or absent network only empties the list. */
16
16
  const TIMEOUT_MS = 5_000;
17
+ /** How long one search answers the listing: a public page lists per visitor, and GitHub allows ten searches a minute. */
18
+ export const FRESH_MS = 10 * 60_000;
19
+ /** How long a failed search answers (GitHub's rate limit counts by the minute). */
20
+ export const RETRY_MS = 60_000;
17
21
 
18
22
  /** One repository of GitHub's search answer: what the list shows of it. */
19
23
  const Found = z.object({
@@ -22,6 +26,7 @@ const Found = z.object({
22
26
  description: z.string().nullish(),
23
27
  license: z.object({ spdx_id: z.string().nullish() }).nullish(),
24
28
  });
29
+ type Found = z.infer<typeof Found>;
25
30
  const Search = z.object({ items: z.array(z.unknown()) });
26
31
 
27
32
  /** An app's source on GitHub, with what Sanoma claims about it. */
@@ -60,11 +65,11 @@ export const appsListOps = defineConnector("sanoma", {
60
65
  },
61
66
  });
62
67
 
63
- /** The driver of `sanoma.apps.list`: GitHub's search, now. */
68
+ /** The driver of `sanoma.apps.list`: GitHub's search, remembered for `FRESH_MS`. */
64
69
  export const appsListDriver = defineDriver(appsListOps, { apps: { list: () => availableApps() } });
65
70
 
66
71
  /** An app found, with what `from` claims about it. */
67
- function listed(found: z.infer<typeof Found>, from: Claims): AvailableApp {
72
+ function listed(found: Found, from: Claims): AvailableApp {
68
73
  const repo = found.full_name;
69
74
  const claim = appClaim(repo, from);
70
75
  const solutions = (claim?.solutions ?? []).flatMap((id) => {
@@ -87,33 +92,77 @@ function listed(found: z.infer<typeof Found>, from: Claims): AvailableApp {
87
92
  const official = (app: AvailableApp) => Number(app.tier === "official");
88
93
 
89
94
  /**
90
- * The repositories GitHub finds with the topic `sanoma-app`, not archived, the first hundred, each with what
91
- * `from` claims about it (the claims by default), official first, then by name. A repository
92
- * GitHub describes otherwise than expected is left out. When GitHub cannot be searched the list
93
- * is empty, and says why.
95
+ * The repositories GitHub finds with the topic `sanoma-app`, not archived, the first hundred, but
96
+ * those it describes otherwise than expected; throws when it cannot be searched.
94
97
  */
95
- export async function availableApps(from: Claims = claims): Promise<AvailableApps> {
98
+ export async function searchGitHub(): Promise<Found[]> {
96
99
  const url = `${GITHUB_API}/search/repositories?q=${encodeURIComponent(`topic:${APP_TOPIC} archived:false`)}&per_page=100`;
97
- let items: unknown[];
100
+ const res = await fetch(url, {
101
+ headers: { accept: "application/vnd.github+json", "user-agent": "sanoma", "x-github-api-version": "2022-11-28" },
102
+ signal: AbortSignal.timeout(TIMEOUT_MS),
103
+ });
104
+ if (!res.ok) {
105
+ await res.body?.cancel();
106
+ throw new Error(`${new URL(url).host} answered ${res.status} to ${new URL(url).pathname}`);
107
+ }
108
+ return Search.parse(await res.json()).items.flatMap((item) => {
109
+ const found = Found.safeParse(item);
110
+ return found.success ? [found.data] : [];
111
+ });
112
+ }
113
+
114
+ /**
115
+ * `search`, remembered: its last result answers for `FRESH_MS` (by `now`), the calls meanwhile share
116
+ * one search, and when a later search fails the last result still answers. A failure with
117
+ * nothing remembered throws. After a failure the next search waits `RETRY_MS`, so a rate-limited
118
+ * search is not retried per call.
119
+ */
120
+ export function remembered<T>(search: () => Promise<T>, now: () => number = Date.now): () => Promise<T> {
121
+ let last: { value: T } | undefined;
122
+ /** The last search's answer, or the one in flight, which answers until `until`. */
123
+ let answer: Promise<T> | undefined;
124
+ let until = 0;
125
+ return () => {
126
+ if (answer && now() < until) return answer;
127
+ answer = search().then(
128
+ (value) => {
129
+ last = { value };
130
+ until = now() + FRESH_MS;
131
+ return value;
132
+ },
133
+ (err: unknown) => {
134
+ until = now() + RETRY_MS;
135
+ if (last) return last.value;
136
+ throw err;
137
+ },
138
+ );
139
+ // After the call, so a search that throws at once leaves the next call to search again.
140
+ until = Infinity;
141
+ return answer;
142
+ };
143
+ }
144
+
145
+ /** GitHub's search as the driver makes it: once per `FRESH_MS` for the process. */
146
+ const searched = remembered(searchGitHub);
147
+
148
+ /**
149
+ * The apps `search` finds (GitHub's, remembered, by default), each with what `from` claims about
150
+ * it (the claims by default), official first, then by name. When GitHub cannot be searched and nothing is remembered,
151
+ * the list is empty, and says why.
152
+ */
153
+ export async function availableApps(
154
+ from: Claims = claims,
155
+ search: () => Promise<Found[]> = searched,
156
+ ): Promise<AvailableApps> {
157
+ let found: Found[];
98
158
  try {
99
- const res = await fetch(url, {
100
- headers: { accept: "application/vnd.github+json", "user-agent": "sanoma", "x-github-api-version": "2022-11-28" },
101
- signal: AbortSignal.timeout(TIMEOUT_MS),
102
- });
103
- if (!res.ok) {
104
- await res.body?.cancel();
105
- throw new Error(`${new URL(url).host} answered ${res.status} to ${new URL(url).pathname}`);
106
- }
107
- items = Search.parse(await res.json()).items;
159
+ found = await search();
108
160
  } catch (err) {
109
161
  return { apps: [], error: `Could not search GitHub: ${errorMessage(err)}` };
110
162
  }
111
163
  return {
112
- apps: items
113
- .flatMap((item) => {
114
- const found = Found.safeParse(item);
115
- return found.success ? [listed(found.data, from)] : [];
116
- })
164
+ apps: found
165
+ .map((repo) => listed(repo, from))
117
166
  .toSorted((a, b) => official(b) - official(a) || a.repo.localeCompare(b.repo, "en")),
118
167
  };
119
168
  }
package/src/config.ts CHANGED
@@ -114,12 +114,43 @@ export interface SanomaConfig {
114
114
  * that sets it and declares a wakeup of its own.
115
115
  */
116
116
  wakeup?: true;
117
+ /** How this repo runs as a demo (`sanoma demo`, or `SANOMA_DEMO=1` on a host). */
118
+ demo?: DemoConfig;
119
+ }
120
+
121
+ /** A demo's settings (`SanomaConfig.demo`). */
122
+ export interface DemoConfig {
123
+ /**
124
+ * The URL the banner's "Start with these apps" opens, such as the hosted wizard with the demo's
125
+ * apps chosen; without one, the banner has no such link.
126
+ */
127
+ start?: string;
117
128
  /**
118
- * What the app says when it runs this repo as a demo (`sanoma demo`): `start`, the URL its
119
- * banner's "Start with these apps" opens, such as the hosted wizard with the demo's apps
120
- * chosen; without one, the banner has no such link.
129
+ * A session per visitor: each visitor gets a copy of the seeded database and a process of their
130
+ * own over it, so the moments wait for them alone and nothing they type reaches another. At most
131
+ * this many at once, or with `true` as many as the machine's memory and Postgres's connections
132
+ * hold; past it, visitors share one demo instance. Without it, every visitor shares that instance.
121
133
  */
122
- demo?: { start?: string };
134
+ sessions?: true | number;
135
+ /** Minutes a visitor's session lives unused before it is dropped. Default 30. */
136
+ idle?: number;
137
+ /** Minutes between seeds of the demo afresh (its shared instance, or the sessions' seed). Default 60. */
138
+ reseed?: number;
139
+ }
140
+
141
+ /** Refuses a `demo` whose numbers make no demo: `sessions` `true` or a whole number above 0, `idle` and `reseed` minutes above 0. */
142
+ function checkDemo(demo: DemoConfig | undefined): void {
143
+ const { sessions, idle, reseed } = demo ?? {};
144
+ if (sessions !== undefined && sessions !== true && !(Number.isInteger(sessions) && sessions > 0)) {
145
+ throw new Error(
146
+ `The config's \`demo.sessions\` is \`true\` or how many at once, a whole number above 0, not ${JSON.stringify(sessions)}`,
147
+ );
148
+ }
149
+ for (const [key, minutes] of Object.entries({ idle, reseed })) {
150
+ if (minutes !== undefined && !(typeof minutes === "number" && minutes > 0)) {
151
+ throw new Error(`The config's \`demo.${key}\` is minutes, a number above 0, not ${JSON.stringify(minutes)}`);
152
+ }
153
+ }
123
154
  }
124
155
 
125
156
  /** A config, checked, with everything a worker, client or app derives from it. */
@@ -295,6 +326,7 @@ export function resolveConfig(config: SanomaConfig, options: ResolveOptions = {}
295
326
  if (config.policy !== undefined) {
296
327
  throw new Error("The config's `policy` is gone: the policy is policies/*.cedar in the root; leave it out");
297
328
  }
329
+ checkDemo(config.demo);
298
330
  const collections = collectionsOf(config);
299
331
  const ledger = ledgerOf(config);
300
332
  const root = rootOf(config);
package/src/db.ts CHANGED
@@ -81,12 +81,20 @@ const MADE_ALREADY = new Set(["23505", "42P04", "42P07", "42710"]);
81
81
  /** True for the failure of a create that another process won: what was to be made is there. */
82
82
  export const madeAlready = (err: unknown): boolean => MADE_ALREADY.has(pgCode(err));
83
83
 
84
+ /**
85
+ * `SANOMA_POOL_SIZE`, read once: the most connections each Postgres pool of the process opens, its
86
+ * pg pools' and DBOS's system pool alike; unset, theirs (10 each). `sanoma demo`'s session host sets
87
+ * it low for each visitor's process, so a session costs a few connections, not a dozen.
88
+ */
89
+ const askedPoolSize = Number(process.env.SANOMA_POOL_SIZE);
90
+ const POOL_SIZE = Number.isInteger(askedPoolSize) && askedPoolSize > 0 ? askedPoolSize : undefined;
91
+
84
92
  /**
85
93
  * A pool on the config's database for `what` (a word for the messages). An idle connection that
86
94
  * drops (Postgres restarted) is replaced on the next query; unheard, it would end the process.
87
95
  */
88
96
  export function openPool(databaseUrl: string, what: string): Pool {
89
- const pool = new Pool({ connectionString: databaseUrl });
97
+ const pool = new Pool({ connectionString: databaseUrl, ...(POOL_SIZE !== undefined && { max: POOL_SIZE }) });
90
98
  pool.on("error", (err) => warn(`a ${what} connection failed: ${errorMessage(err)}`));
91
99
  return pool;
92
100
  }
@@ -99,7 +107,10 @@ export function openPool(databaseUrl: string, what: string): Pool {
99
107
  * queries at once on one client, which pg deprecates. `prepareDatabase` sets the same 60 s guard
100
108
  * on the database instead. Remove the switch when DBOS awaits its `SET`.
101
109
  */
102
- export const DBOS_DATABASE_OPTIONS = { systemDatabaseIdleTransactionTimeoutMs: 0 } as const;
110
+ export const DBOS_DATABASE_OPTIONS = {
111
+ systemDatabaseIdleTransactionTimeoutMs: 0,
112
+ ...(POOL_SIZE !== undefined && { systemDatabasePoolSize: POOL_SIZE }),
113
+ } as const;
103
114
 
104
115
  /**
105
116
  * Stamps the change runs `ids` still unfinished on another version with the application version
package/src/index.ts CHANGED
@@ -55,6 +55,7 @@ export {
55
55
  } from "./resource.ts";
56
56
  export {
57
57
  declaredWakeup,
58
+ type DemoConfig,
58
59
  defineConfig,
59
60
  resolveConfig,
60
61
  resolveDatabaseUrl,