@caelo-cms/shared 0.11.4 → 0.11.6

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 (66) hide show
  1. package/dist/ai-tools.d.ts +206 -2
  2. package/dist/ai-tools.d.ts.map +1 -1
  3. package/dist/ai-tools.js +23 -9
  4. package/dist/ai-tools.js.map +1 -1
  5. package/dist/change-journal.d.ts +71 -0
  6. package/dist/change-journal.d.ts.map +1 -0
  7. package/dist/change-journal.js +251 -0
  8. package/dist/change-journal.js.map +1 -0
  9. package/dist/content.d.ts +214 -0
  10. package/dist/content.d.ts.map +1 -1
  11. package/dist/content.js +29 -11
  12. package/dist/content.js.map +1 -1
  13. package/dist/index.d.ts +2 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +2 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/lists/fields.d.ts +5 -0
  18. package/dist/lists/fields.d.ts.map +1 -1
  19. package/dist/lists/fields.js +6 -1
  20. package/dist/lists/fields.js.map +1 -1
  21. package/dist/lists/list-type.d.ts.map +1 -1
  22. package/dist/lists/list-type.js +6 -3
  23. package/dist/lists/list-type.js.map +1 -1
  24. package/dist/lists/page-type.d.ts +1 -0
  25. package/dist/lists/page-type.d.ts.map +1 -1
  26. package/dist/lists/page-type.js +7 -0
  27. package/dist/lists/page-type.js.map +1 -1
  28. package/dist/live-events.d.ts +8 -4
  29. package/dist/live-events.d.ts.map +1 -1
  30. package/dist/live-events.js +18 -3
  31. package/dist/live-events.js.map +1 -1
  32. package/dist/media.d.ts +19 -0
  33. package/dist/media.d.ts.map +1 -1
  34. package/dist/media.js +16 -0
  35. package/dist/media.js.map +1 -1
  36. package/dist/phase-timer.d.ts +43 -2
  37. package/dist/phase-timer.d.ts.map +1 -1
  38. package/dist/phase-timer.js +170 -4
  39. package/dist/phase-timer.js.map +1 -1
  40. package/dist/pool-budget.d.ts +152 -0
  41. package/dist/pool-budget.d.ts.map +1 -0
  42. package/dist/pool-budget.js +151 -0
  43. package/dist/pool-budget.js.map +1 -0
  44. package/dist/themes-errors.js +1 -1
  45. package/dist/themes-errors.js.map +1 -1
  46. package/dist/version.d.ts +2 -2
  47. package/dist/version.js +1 -1
  48. package/package.json +1 -1
  49. package/src/ai-tools.ts +23 -8
  50. package/src/change-journal.ts +323 -0
  51. package/src/content.ts +32 -11
  52. package/src/index.ts +2 -0
  53. package/src/lists/fields.ts +7 -1
  54. package/src/lists/list-fixtures.test.ts +1 -0
  55. package/src/lists/list-type.ts +6 -2
  56. package/src/lists/lists.test.ts +1 -0
  57. package/src/lists/page-type.ts +7 -0
  58. package/src/live-events.ts +18 -3
  59. package/src/media.test.ts +31 -0
  60. package/src/media.ts +17 -0
  61. package/src/phase-timer.test.ts +37 -0
  62. package/src/phase-timer.ts +182 -4
  63. package/src/pool-budget.test.ts +111 -0
  64. package/src/pool-budget.ts +234 -0
  65. package/src/themes-errors.ts +1 -1
  66. package/src/version.ts +1 -1
package/dist/media.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"media.js","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../src/media.ts"],"names":[],"mappings":"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"}
@@ -7,20 +7,59 @@
7
7
  * Laps instead of wrapped callbacks: `lap("x")` closes the step that ran
8
8
  * since the previous lap, so a long function gets one line per boundary
9
9
  * and keeps its control flow (early throws, shared locals) as it is.
10
+ *
11
+ * #1271 — with `{ memory: true }` every step also carries
12
+ * - the peak resident memory of the process while it ran (`peakRssMb`):
13
+ * sampled every {@link RSS_SAMPLE_MS} by one shared timer that runs only
14
+ * while a memory timer is open ({@link PhaseTimer.close}), plus a reading
15
+ * at every lap;
16
+ * - the CPU time the process spent in it (`cpuMs`, user + system, every
17
+ * thread of the process — zlib and the other runtime workers included).
18
+ * `cpuMs / ms` is the number of cores the step kept busy.
10
19
  */
11
20
  import { z } from "zod";
12
21
  /** One finished step: its name and how long it took, in whole milliseconds. */
13
22
  export declare const phaseTimingSchema: z.ZodObject<{
14
23
  phase: z.ZodString;
15
24
  ms: z.ZodNumber;
25
+ peakRssMb: z.ZodOptional<z.ZodNumber>;
26
+ cpuMs: z.ZodOptional<z.ZodNumber>;
16
27
  }, z.core.$strip>;
17
28
  export type PhaseTiming = z.infer<typeof phaseTimingSchema>;
29
+ /** How often the open memory timers sample the resident set. */
30
+ export declare const RSS_SAMPLE_MS = 25;
31
+ /** What {@link PhaseTimer.measure} adds up for one repeated step. */
32
+ export interface PartTiming {
33
+ ms: number;
34
+ peakRssMb?: number;
35
+ cpuMs?: number;
36
+ }
18
37
  export declare class PhaseTimer {
19
38
  #private;
20
- /** @param now clock in milliseconds; injectable for tests. */
21
- constructor(now?: () => number);
39
+ /**
40
+ * @param now clock in milliseconds; injectable for tests.
41
+ * @param opts.memory record each step's peak RSS (see the file header);
42
+ * the timer must then be {@link close}d.
43
+ */
44
+ constructor(now?: () => number, opts?: {
45
+ memory?: boolean;
46
+ });
47
+ /** A timer that records peak RSS per step (`new PhaseTimer(undefined, { memory: true })`). */
48
+ static withMemory(): PhaseTimer;
22
49
  /** Close the step that ran since the previous lap (or construction) as `phase`. */
23
50
  lap(phase: string): void;
51
+ /**
52
+ * Close the step since the previous lap as several phases measured
53
+ * inside it (`parts`, ms and peak each — e.g. the passes of every page
54
+ * batch summed), plus `rest` for whatever of the step they do not cover.
55
+ */
56
+ lapParts(parts: ReadonlyMap<string, PartTiming>, rest: string): void;
57
+ /**
58
+ * Run `fn` and add its duration (and, for a memory timer, its peak RSS)
59
+ * to `into[phase]` — for steps that repeat per batch, summed by
60
+ * {@link lapParts}.
61
+ */
62
+ measure<T>(into: Map<string, PartTiming>, phase: string, fn: () => Promise<T> | T): Promise<T>;
24
63
  /**
25
64
  * Append steps timed elsewhere (the generator subprocess, a publisher)
26
65
  * as `<prefix>.<phase>`. They ran inside the current lap, so the lap that
@@ -32,5 +71,7 @@ export declare class PhaseTimer {
32
71
  totalMs(): number;
33
72
  /** The steps so far, in the order they finished. */
34
73
  phases(): PhaseTiming[];
74
+ /** Stop sampling memory (a memory timer must be closed; idempotent). */
75
+ close(): void;
35
76
  }
36
77
  //# sourceMappingURL=phase-timer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"phase-timer.d.ts","sourceRoot":"","sources":["../src/phase-timer.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+EAA+E;AAC/E,eAAO,MAAM,iBAAiB;;;iBAG5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,qBAAa,UAAU;;IAMrB,8DAA8D;gBAClD,GAAG,GAAE,MAAM,MAAgC;IAMvD,mFAAmF;IACnF,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMxB;;;;;OAKG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,IAAI;IAI7D,uCAAuC;IACvC,OAAO,IAAI,MAAM;IAIjB,oDAAoD;IACpD,MAAM,IAAI,WAAW,EAAE;CAGxB"}
1
+ {"version":3,"file":"phase-timer.d.ts","sourceRoot":"","sources":["../src/phase-timer.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+EAA+E;AAC/E,eAAO,MAAM,iBAAiB;;;;;iBAO5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,gEAAgE;AAChE,eAAO,MAAM,aAAa,KAAK,CAAC;AA8ChC,qEAAqE;AACrE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,UAAU;;IASrB;;;;OAIG;gBACS,GAAG,GAAE,MAAM,MAAgC,EAAE,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO;IAgBxF,8FAA8F;IAC9F,MAAM,CAAC,UAAU,IAAI,UAAU;IAI/B,mFAAmF;IACnF,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAWxB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAwBpE;;;;OAIG;IACG,OAAO,CAAC,CAAC,EACb,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAC7B,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GACvB,OAAO,CAAC,CAAC,CAAC;IAwBb;;;;;OAKG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,IAAI;IAI7D,uCAAuC;IACvC,OAAO,IAAI,MAAM;IAIjB,oDAAoD;IACpD,MAAM,IAAI,WAAW,EAAE;IAIvB,wEAAwE;IACxE,KAAK,IAAI,IAAI;CAoBd"}
@@ -8,30 +8,174 @@
8
8
  * Laps instead of wrapped callbacks: `lap("x")` closes the step that ran
9
9
  * since the previous lap, so a long function gets one line per boundary
10
10
  * and keeps its control flow (early throws, shared locals) as it is.
11
+ *
12
+ * #1271 — with `{ memory: true }` every step also carries
13
+ * - the peak resident memory of the process while it ran (`peakRssMb`):
14
+ * sampled every {@link RSS_SAMPLE_MS} by one shared timer that runs only
15
+ * while a memory timer is open ({@link PhaseTimer.close}), plus a reading
16
+ * at every lap;
17
+ * - the CPU time the process spent in it (`cpuMs`, user + system, every
18
+ * thread of the process — zlib and the other runtime workers included).
19
+ * `cpuMs / ms` is the number of cores the step kept busy.
11
20
  */
12
21
  import { z } from "zod";
13
22
  /** One finished step: its name and how long it took, in whole milliseconds. */
14
23
  export const phaseTimingSchema = z.object({
15
24
  phase: z.string().min(1),
16
25
  ms: z.number().int().nonnegative(),
26
+ /** #1271 — the process's peak resident memory during the step, in MiB. */
27
+ peakRssMb: z.number().int().nonnegative().optional(),
28
+ /** #1271 — CPU time (user + system, all threads) the process spent in the step, in ms. */
29
+ cpuMs: z.number().int().nonnegative().optional(),
17
30
  });
31
+ /** How often the open memory timers sample the resident set. */
32
+ export const RSS_SAMPLE_MS = 25;
33
+ const MIB = 1024 * 1024;
34
+ /** Process CPU time so far (user + system), in ms; 0 where there is no process. */
35
+ function cpuNow() {
36
+ if (typeof process === "undefined" || typeof process.cpuUsage !== "function")
37
+ return 0;
38
+ const u = process.cpuUsage();
39
+ return (u.user + u.system) / 1000;
40
+ }
41
+ function rssNow() {
42
+ return typeof process !== "undefined" && typeof process.memoryUsage === "function"
43
+ ? process.memoryUsage().rss
44
+ : 0;
45
+ }
46
+ /**
47
+ * The one sampler of this process: its timer runs while at least one memory
48
+ * timer is open, and every open timer sees each sample.
49
+ */
50
+ const sampler = (() => {
51
+ const listeners = new Set();
52
+ let timer = null;
53
+ return {
54
+ add(fn) {
55
+ listeners.add(fn);
56
+ if (timer === null) {
57
+ timer = setInterval(() => {
58
+ const rss = rssNow();
59
+ for (const l of listeners)
60
+ l(rss);
61
+ }, RSS_SAMPLE_MS);
62
+ // Never what keeps the process alive.
63
+ timer.unref?.();
64
+ }
65
+ },
66
+ remove(fn) {
67
+ listeners.delete(fn);
68
+ if (listeners.size === 0 && timer !== null) {
69
+ clearInterval(timer);
70
+ timer = null;
71
+ }
72
+ },
73
+ };
74
+ })();
18
75
  export class PhaseTimer {
19
76
  #now;
20
77
  #phases = [];
21
78
  #start;
79
+ #listener;
22
80
  #last;
23
- /** @param now clock in milliseconds; injectable for tests. */
24
- constructor(now = () => performance.now()) {
81
+ #peak = 0;
82
+ #lastCpu = 0;
83
+ /**
84
+ * @param now clock in milliseconds; injectable for tests.
85
+ * @param opts.memory record each step's peak RSS (see the file header);
86
+ * the timer must then be {@link close}d.
87
+ */
88
+ constructor(now = () => performance.now(), opts = {}) {
25
89
  this.#now = now;
26
90
  this.#start = now();
27
91
  this.#last = this.#start;
92
+ if (opts.memory) {
93
+ this.#peak = rssNow();
94
+ this.#lastCpu = cpuNow();
95
+ this.#listener = (rss) => {
96
+ if (rss > this.#peak)
97
+ this.#peak = rss;
98
+ };
99
+ sampler.add(this.#listener);
100
+ }
101
+ else {
102
+ this.#listener = null;
103
+ }
104
+ }
105
+ /** A timer that records peak RSS per step (`new PhaseTimer(undefined, { memory: true })`). */
106
+ static withMemory() {
107
+ return new PhaseTimer(undefined, { memory: true });
28
108
  }
29
109
  /** Close the step that ran since the previous lap (or construction) as `phase`. */
30
110
  lap(phase) {
31
111
  const t = this.#now();
32
- this.#phases.push({ phase, ms: Math.round(t - this.#last) });
112
+ this.#phases.push({
113
+ phase,
114
+ ms: Math.round(t - this.#last),
115
+ ...this.#takePeak(),
116
+ ...this.#takeCpu(0),
117
+ });
33
118
  this.#last = t;
34
119
  }
120
+ /**
121
+ * Close the step since the previous lap as several phases measured
122
+ * inside it (`parts`, ms and peak each — e.g. the passes of every page
123
+ * batch summed), plus `rest` for whatever of the step they do not cover.
124
+ */
125
+ lapParts(parts, rest) {
126
+ const t = this.#now();
127
+ const elapsed = t - this.#last;
128
+ let covered = 0;
129
+ let coveredCpu = 0;
130
+ for (const [phase, p] of parts) {
131
+ covered += p.ms;
132
+ coveredCpu += p.cpuMs ?? 0;
133
+ this.#phases.push({
134
+ phase,
135
+ ms: Math.round(p.ms),
136
+ ...(p.peakRssMb !== undefined ? { peakRssMb: p.peakRssMb } : {}),
137
+ ...(p.cpuMs !== undefined ? { cpuMs: Math.round(p.cpuMs) } : {}),
138
+ });
139
+ }
140
+ this.#phases.push({
141
+ phase: rest,
142
+ ms: Math.max(0, Math.round(elapsed - covered)),
143
+ ...this.#takePeak(),
144
+ ...this.#takeCpu(coveredCpu),
145
+ });
146
+ this.#last = t;
147
+ }
148
+ /**
149
+ * Run `fn` and add its duration (and, for a memory timer, its peak RSS)
150
+ * to `into[phase]` — for steps that repeat per batch, summed by
151
+ * {@link lapParts}.
152
+ */
153
+ async measure(into, phase, fn) {
154
+ const peakBefore = this.#peak;
155
+ if (this.#listener)
156
+ this.#peak = rssNow();
157
+ const t0 = this.#now();
158
+ const cpu0 = this.#listener ? cpuNow() : 0;
159
+ try {
160
+ return await fn();
161
+ }
162
+ finally {
163
+ const prev = into.get(phase) ?? { ms: 0 };
164
+ const ms = prev.ms + (this.#now() - t0);
165
+ if (this.#listener) {
166
+ const peak = Math.max(this.#peak, rssNow());
167
+ into.set(phase, {
168
+ ms,
169
+ peakRssMb: Math.max(prev.peakRssMb ?? 0, Math.round(peak / MIB)),
170
+ cpuMs: (prev.cpuMs ?? 0) + (cpuNow() - cpu0),
171
+ });
172
+ this.#peak = Math.max(peakBefore, peak);
173
+ }
174
+ else {
175
+ into.set(phase, { ms });
176
+ }
177
+ }
178
+ }
35
179
  /**
36
180
  * Append steps timed elsewhere (the generator subprocess, a publisher)
37
181
  * as `<prefix>.<phase>`. They ran inside the current lap, so the lap that
@@ -40,7 +184,7 @@ export class PhaseTimer {
40
184
  */
41
185
  include(prefix, phases) {
42
186
  for (const p of phases)
43
- this.#phases.push({ phase: `${prefix}.${p.phase}`, ms: p.ms });
187
+ this.#phases.push({ ...p, phase: `${prefix}.${p.phase}` });
44
188
  }
45
189
  /** Milliseconds since construction. */
46
190
  totalMs() {
@@ -50,5 +194,27 @@ export class PhaseTimer {
50
194
  phases() {
51
195
  return [...this.#phases];
52
196
  }
197
+ /** Stop sampling memory (a memory timer must be closed; idempotent). */
198
+ close() {
199
+ if (this.#listener)
200
+ sampler.remove(this.#listener);
201
+ }
202
+ /** CPU time since the previous lap, less what parts already account for. */
203
+ #takeCpu(covered) {
204
+ if (!this.#listener)
205
+ return {};
206
+ const now = cpuNow();
207
+ const spent = now - this.#lastCpu - covered;
208
+ this.#lastCpu = now;
209
+ return { cpuMs: Math.max(0, Math.round(spent)) };
210
+ }
211
+ /** The peak since the previous lap, then restart it from now. */
212
+ #takePeak() {
213
+ if (!this.#listener)
214
+ return {};
215
+ const peak = Math.max(this.#peak, rssNow());
216
+ this.#peak = rssNow();
217
+ return { peakRssMb: Math.round(peak / MIB) };
218
+ }
53
219
  }
54
220
  //# sourceMappingURL=phase-timer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"phase-timer.js","sourceRoot":"","sources":["../src/phase-timer.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAEnC;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+EAA+E;AAC/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;CACnC,CAAC,CAAC;AAGH,MAAM,OAAO,UAAU;IACZ,IAAI,CAAe;IACnB,OAAO,GAAkB,EAAE,CAAC;IAC5B,MAAM,CAAS;IACxB,KAAK,CAAS;IAEd,8DAA8D;IAC9D,YAAY,MAAoB,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QACrD,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,CAAC;IAED,mFAAmF;IACnF,GAAG,CAAC,KAAa;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,MAAc,EAAE,MAA8B;QACpD,KAAK,MAAM,CAAC,IAAI,MAAM;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,uCAAuC;IACvC,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,oDAAoD;IACpD,MAAM;QACJ,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"phase-timer.js","sourceRoot":"","sources":["../src/phase-timer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Issue #1254 — the database connection budget of an install.
3
+ *
4
+ * Every Caelo process that talks to Postgres holds connection pools, and
5
+ * they all draw from ONE server-wide `max_connections` (cms_admin and
6
+ * cms_public live on the same server). Before #1254 every pool took Bun's
7
+ * default of 10, so the admin alone asked for `adminMaxInstances × 2 × 10`
8
+ * — exactly the 100 slots of a default install, with nothing left for the
9
+ * gateway, the static generator, migrations or the provider's own agents.
10
+ * Under load the last admin instance to scale up could not connect at all.
11
+ *
12
+ * The budget turns that around: provisioning states how many connections
13
+ * the server has and how many instances may run, every fixed consumer is
14
+ * named as a {@link PoolBudgetReserve}, and what is left is split across
15
+ * the admin instances' cms_admin pools — the pool the write path uses.
16
+ * The admin's cms_public pool is small and fixed: the admin only reads
17
+ * plugin data there and publishes the gateway projection.
18
+ *
19
+ * Why not simply raise the pool: a larger pool only moves the wait from
20
+ * the pool to the server. A pool sized past the budget fails with "too
21
+ * many clients" at the worst moment (scale-out under load) instead of
22
+ * waiting a bounded time for a free connection of its own pool
23
+ * (query-api pool-guard.ts). docs/dev/connection-budget.md has the long
24
+ * version.
25
+ *
26
+ * Pure module — no I/O. Used by the provisioning stacks (which set the
27
+ * resulting env on each service) and re-exported by `@caelo-cms/query-api`.
28
+ */
29
+ /** Env var sizing every pool of a `DatabaseAdapter` (both pools, unless the next one is set). */
30
+ export declare const DB_POOL_MAX_ENV = "CAELO_DB_POOL_MAX";
31
+ /**
32
+ * Env var sizing the cms_public pool of a `DatabaseAdapter` on its own. It
33
+ * wins over {@link DB_POOL_MAX_ENV} for that pool, so the admin can run a
34
+ * large cms_admin pool next to a small cms_public one.
35
+ */
36
+ export declare const DB_PUBLIC_POOL_MAX_ENV = "CAELO_DB_PUBLIC_POOL_MAX";
37
+ /** Smallest pool a `DatabaseAdapter` accepts: one connection self-deadlocks it. */
38
+ export declare const MIN_POOL_MAX = 2;
39
+ /**
40
+ * Smallest cms_admin pool the budget hands an admin instance. Below it a
41
+ * handful of concurrent editors and agents queue on every write; an install
42
+ * whose server cannot afford it must get a larger tier or fewer instances,
43
+ * so {@link computePoolBudget} refuses instead of shipping a starved pool.
44
+ */
45
+ export declare const ADMIN_POOL_FLOOR = 4;
46
+ /** The admin's cms_public pool: plugin-data reads and the gateway projection. */
47
+ export declare const ADMIN_PUBLIC_POOL_MAX = 4;
48
+ /** The gateway's only pool (public_role on cms_public), per instance. */
49
+ export declare const GATEWAY_POOL_MAX = 2;
50
+ /**
51
+ * Each pool of one static-generator subprocess. A build runs in ONE
52
+ * transaction (pool-guard.ts LONG_TRANSACTION_ALLOWLIST) and takes no
53
+ * second checkout, so the minimum pool ({@link MIN_POOL_MAX}) is enough.
54
+ */
55
+ export declare const GENERATOR_POOL_MAX = 2;
56
+ /**
57
+ * #1267 — the dedicated connection each admin instance keeps open for
58
+ * `LISTEN` on the change journal's wake-up channel. A LISTEN connection is
59
+ * held for the instance's lifetime and can never serve a query of the pool,
60
+ * so it is budgeted outside the pools, one per admin instance.
61
+ */
62
+ export declare const LISTEN_CONNECTIONS_PER_ADMIN_INSTANCE = 1;
63
+ /**
64
+ * The connection each gateway instance keeps open for `LISTEN
65
+ * caelo_gateway_settings` on cms_public (api-gateway server.ts): outside the
66
+ * gateway's pool, held for the instance's lifetime.
67
+ */
68
+ export declare const LISTEN_CONNECTIONS_PER_GATEWAY_INSTANCE = 1;
69
+ /** What the budget is computed from: the server and the scale-out limits. */
70
+ export interface PoolBudgetInput {
71
+ /** The server's `max_connections`, as provisioning sets it. */
72
+ readonly maxConnections: number;
73
+ /** Most admin instances that may run at once (Cloud Run `maxInstanceCount`, …). */
74
+ readonly adminMaxInstances: number;
75
+ /** Most gateway instances that may run at once. */
76
+ readonly gatewayMaxInstances: number;
77
+ /**
78
+ * Static-generator subprocesses that may run at once across the install
79
+ * (a Stage, a Publish live and a plugin-data build can overlap).
80
+ */
81
+ readonly concurrentBuilds: number;
82
+ /**
83
+ * Connections the server keeps for itself and the provider's agents:
84
+ * `superuser_reserved_connections`, Cloud SQL's `cloudsqladmin`, RDS's
85
+ * `rdsadmin`, Azure's replication and monitoring slots.
86
+ */
87
+ readonly maintenanceReserve: number;
88
+ /** Connections a migration run opens (one per database). */
89
+ readonly migrationsReserve: number;
90
+ /**
91
+ * Connections of the install's other jobs (operator-access sync,
92
+ * upgrader, converge). They run one query at a time.
93
+ */
94
+ readonly jobsReserve: number;
95
+ }
96
+ /** The named consumers the budget sets aside before it sizes the admin's cms_admin pool. */
97
+ export type PoolBudgetReserveName = "maintenance" | "migrations" | "jobs" | "generator" | "gateway"
98
+ /** #1267 — one LISTEN connection per admin instance ({@link LISTEN_CONNECTIONS_PER_ADMIN_INSTANCE}). */
99
+ | "listen"
100
+ /** The gateway's settings LISTEN, one per gateway instance ({@link LISTEN_CONNECTIONS_PER_GATEWAY_INSTANCE}). */
101
+ | "gateway-listen" | "admin-public";
102
+ /** One consumer of the server's connections the budget sets aside. */
103
+ export interface PoolBudgetReserve {
104
+ readonly name: PoolBudgetReserveName;
105
+ readonly connections: number;
106
+ }
107
+ /** The computed budget: pool sizes per process, and where every connection goes. */
108
+ export interface PoolBudget {
109
+ /** cms_admin pool of each admin instance ({@link DB_POOL_MAX_ENV} on the admin). */
110
+ readonly adminPoolMax: number;
111
+ /** cms_public pool of each admin instance ({@link DB_PUBLIC_POOL_MAX_ENV} on the admin). */
112
+ readonly adminPublicPoolMax: number;
113
+ /** The gateway's cms_public pool ({@link DB_PUBLIC_POOL_MAX_ENV} on the gateway). */
114
+ readonly gatewayPoolMax: number;
115
+ /** Each pool of a generator subprocess (the admin sets it on the child). */
116
+ readonly generatorPoolMax: number;
117
+ readonly reserves: readonly PoolBudgetReserve[];
118
+ /** Connections no pool may use (the remainder of the per-instance split). */
119
+ readonly unassigned: number;
120
+ }
121
+ /**
122
+ * Split `maxConnections` across every process of the install.
123
+ *
124
+ * `adminPoolMax = floor((maxConnections − Σ reserves) / adminMaxInstances)`,
125
+ * where the reserves are the fixed consumers of {@link PoolBudgetInput} plus
126
+ * `gateway = gatewayMaxInstances × GATEWAY_POOL_MAX`,
127
+ * `generator = concurrentBuilds × 2 × GENERATOR_POOL_MAX`,
128
+ * `listen = adminMaxInstances × LISTEN_CONNECTIONS_PER_ADMIN_INSTANCE`,
129
+ * `gateway-listen = gatewayMaxInstances × LISTEN_CONNECTIONS_PER_GATEWAY_INSTANCE` and
130
+ * `admin-public = adminMaxInstances × ADMIN_PUBLIC_POOL_MAX`.
131
+ *
132
+ * @throws Error naming what to change when the server cannot give every
133
+ * admin instance at least {@link ADMIN_POOL_FLOOR} cms_admin connections.
134
+ *
135
+ * @example
136
+ * computePoolBudget({ maxConnections: 100, adminMaxInstances: 5,
137
+ * gatewayMaxInstances: 10, concurrentBuilds: 2, maintenanceReserve: 5,
138
+ * migrationsReserve: 2, jobsReserve: 4 }).adminPoolMax // → 7
139
+ */
140
+ export declare function computePoolBudget(input: PoolBudgetInput): PoolBudget;
141
+ /** Which service's pool env {@link poolBudgetEnv} returns. */
142
+ export type PoolBudgetService = "admin" | "gateway";
143
+ /**
144
+ * The env that sizes `service`'s pools from `budget`, for the stacks to set.
145
+ * The admin gets both pools; the gateway, whose only pool is cms_public,
146
+ * gets just that one.
147
+ */
148
+ export declare function poolBudgetEnv(budget: PoolBudget, service: PoolBudgetService): {
149
+ readonly name: string;
150
+ readonly value: string;
151
+ }[];
152
+ //# sourceMappingURL=pool-budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool-budget.d.ts","sourceRoot":"","sources":["../src/pool-budget.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,iGAAiG;AACjG,eAAO,MAAM,eAAe,sBAAsB,CAAC;AAEnD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,6BAA6B,CAAC;AAEjE,mFAAmF;AACnF,eAAO,MAAM,YAAY,IAAI,CAAC;AAE9B;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,iFAAiF;AACjF,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC;;;;;GAKG;AACH,eAAO,MAAM,qCAAqC,IAAI,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,uCAAuC,IAAI,CAAC;AAEzD,6EAA6E;AAC7E,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,mFAAmF;IACnF,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,mDAAmD;IACnD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,4DAA4D;IAC5D,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,4FAA4F;AAC5F,MAAM,MAAM,qBAAqB,GAC7B,aAAa,GACb,YAAY,GACZ,MAAM,GACN,WAAW,GACX,SAAS;AACX,wGAAwG;GACtG,QAAQ;AACV,iHAAiH;GAC/G,gBAAgB,GAChB,cAAc,CAAC;AAEnB,sEAAsE;AACtE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,oFAAoF;AACpF,MAAM,WAAW,UAAU;IACzB,oFAAoF;IACpF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,4FAA4F;IAC5F,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,qFAAqF;IACrF,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAChD,6EAA6E;IAC7E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAQD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CA6CpE;AAED,8DAA8D;AAC9D,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,SAAS,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAQrD"}