@noodleseed/one 0.17.0 → 0.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +3 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/alerts-ops.d.ts +2 -0
  5. package/dist/commands/alerts-ops.d.ts.map +1 -0
  6. package/dist/commands/alerts-ops.js +249 -0
  7. package/dist/commands/alerts-ops.js.map +1 -0
  8. package/dist/commands/analytics-ops.d.ts +13 -0
  9. package/dist/commands/analytics-ops.d.ts.map +1 -1
  10. package/dist/commands/analytics-ops.js +5 -2
  11. package/dist/commands/analytics-ops.js.map +1 -1
  12. package/dist/commands/catalog-data-resources.d.ts.map +1 -1
  13. package/dist/commands/catalog-data-resources.js +45 -0
  14. package/dist/commands/catalog-data-resources.js.map +1 -1
  15. package/dist/commands/github-ops.d.ts.map +1 -1
  16. package/dist/commands/github-ops.js +24 -4
  17. package/dist/commands/github-ops.js.map +1 -1
  18. package/dist/commands/github-runs-ops.d.ts +32 -0
  19. package/dist/commands/github-runs-ops.d.ts.map +1 -0
  20. package/dist/commands/github-runs-ops.js +132 -0
  21. package/dist/commands/github-runs-ops.js.map +1 -0
  22. package/dist/commands/mcp-apps.js +27 -0
  23. package/dist/commands/mcp-apps.js.map +1 -1
  24. package/dist/prompts.d.ts.map +1 -1
  25. package/dist/prompts.js +1 -3
  26. package/dist/prompts.js.map +1 -1
  27. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
  28. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +5 -0
  29. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
  30. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  31. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +1 -0
  32. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  33. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.d.ts.map +1 -1
  34. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js +3 -1
  35. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js.map +1 -1
  36. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  37. package/node_modules/@noodle-borg/authoring/dist/recording.js +18 -23
  38. package/node_modules/@noodle-borg/authoring/dist/recording.js.map +1 -1
  39. package/node_modules/@noodle-borg/authoring/dist/server.d.ts +4 -1
  40. package/node_modules/@noodle-borg/authoring/dist/server.d.ts.map +1 -1
  41. package/node_modules/@noodle-borg/authoring/dist/server.js +3 -1
  42. package/node_modules/@noodle-borg/authoring/dist/server.js.map +1 -1
  43. package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts +2 -0
  44. package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts.map +1 -1
  45. package/node_modules/@noodle-borg/compiler/dist/compile.js +1 -1
  46. package/node_modules/@noodle-borg/compiler/dist/compile.js.map +1 -1
  47. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +1 -0
  48. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts.map +1 -1
  49. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +6 -0
  50. package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js.map +1 -1
  51. package/node_modules/@noodle-borg/compiler/dist/widget-compile-helpers.d.ts +3 -1
  52. package/node_modules/@noodle-borg/compiler/dist/widget-compile-helpers.d.ts.map +1 -1
  53. package/node_modules/@noodle-borg/compiler/dist/widget-compile-helpers.js +7 -1
  54. package/node_modules/@noodle-borg/compiler/dist/widget-compile-helpers.js.map +1 -1
  55. package/node_modules/@noodle-borg/compiler/dist/widget-emit.d.ts.map +1 -1
  56. package/node_modules/@noodle-borg/compiler/dist/widget-emit.js +3 -1
  57. package/node_modules/@noodle-borg/compiler/dist/widget-emit.js.map +1 -1
  58. package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts +3 -1
  59. package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts.map +1 -1
  60. package/node_modules/@noodle-borg/protocol/dist/mapping.js +9 -3
  61. package/node_modules/@noodle-borg/protocol/dist/mapping.js.map +1 -1
  62. package/node_modules/@noodle-borg/protocol/dist/sdk-server.js +1 -1
  63. package/node_modules/@noodle-borg/protocol/dist/sdk-server.js.map +1 -1
  64. package/node_modules/@noodle-borg/protocol/dist/widget/react-bridge-bootstrap.d.ts +1 -1
  65. package/node_modules/@noodle-borg/protocol/dist/widget/react-bridge-bootstrap.d.ts.map +1 -1
  66. package/node_modules/@noodle-borg/protocol/dist/widget/react-bridge-bootstrap.js +1 -1
  67. package/node_modules/@noodle-borg/service/dist/alert-evaluator.d.ts +57 -0
  68. package/node_modules/@noodle-borg/service/dist/alert-evaluator.d.ts.map +1 -0
  69. package/node_modules/@noodle-borg/service/dist/alert-evaluator.js +158 -0
  70. package/node_modules/@noodle-borg/service/dist/alert-evaluator.js.map +1 -0
  71. package/node_modules/@noodle-borg/service/dist/alert-webhook.d.ts +72 -0
  72. package/node_modules/@noodle-borg/service/dist/alert-webhook.d.ts.map +1 -0
  73. package/node_modules/@noodle-borg/service/dist/alert-webhook.js +138 -0
  74. package/node_modules/@noodle-borg/service/dist/alert-webhook.js.map +1 -0
  75. package/node_modules/@noodle-borg/service/dist/github/pending-installations.d.ts +15 -8
  76. package/node_modules/@noodle-borg/service/dist/github/pending-installations.d.ts.map +1 -1
  77. package/node_modules/@noodle-borg/service/dist/github/pending-installations.js +16 -9
  78. package/node_modules/@noodle-borg/service/dist/github/pending-installations.js.map +1 -1
  79. package/node_modules/@noodle-borg/service/dist/index.d.ts +10 -2
  80. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  81. package/node_modules/@noodle-borg/service/dist/index.js +9 -1
  82. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  83. package/node_modules/@noodle-borg/service/dist/options.d.ts +20 -1
  84. package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
  85. package/node_modules/@noodle-borg/service/dist/routes/alerts-dispatch.d.ts +28 -0
  86. package/node_modules/@noodle-borg/service/dist/routes/alerts-dispatch.d.ts.map +1 -0
  87. package/node_modules/@noodle-borg/service/dist/routes/alerts-dispatch.js +50 -0
  88. package/node_modules/@noodle-borg/service/dist/routes/alerts-dispatch.js.map +1 -0
  89. package/node_modules/@noodle-borg/service/dist/routes/alerts.d.ts +39 -0
  90. package/node_modules/@noodle-borg/service/dist/routes/alerts.d.ts.map +1 -0
  91. package/node_modules/@noodle-borg/service/dist/routes/alerts.js +204 -0
  92. package/node_modules/@noodle-borg/service/dist/routes/alerts.js.map +1 -0
  93. package/node_modules/@noodle-borg/service/dist/routes/contracts.d.ts +149 -0
  94. package/node_modules/@noodle-borg/service/dist/routes/contracts.d.ts.map +1 -1
  95. package/node_modules/@noodle-borg/service/dist/routes/contracts.js +81 -0
  96. package/node_modules/@noodle-borg/service/dist/routes/contracts.js.map +1 -1
  97. package/node_modules/@noodle-borg/service/dist/routes/github-connection.js +1 -1
  98. package/node_modules/@noodle-borg/service/dist/routes/github-connection.js.map +1 -1
  99. package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.d.ts +2 -1
  100. package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.d.ts.map +1 -1
  101. package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.js +37 -2
  102. package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.js.map +1 -1
  103. package/node_modules/@noodle-borg/service/dist/routes/github-runs.d.ts +8 -0
  104. package/node_modules/@noodle-borg/service/dist/routes/github-runs.d.ts.map +1 -0
  105. package/node_modules/@noodle-borg/service/dist/routes/github-runs.js +33 -0
  106. package/node_modules/@noodle-borg/service/dist/routes/github-runs.js.map +1 -0
  107. package/node_modules/@noodle-borg/service/dist/routes/github-setup.d.ts +1 -1
  108. package/node_modules/@noodle-borg/service/dist/routes/github-setup.d.ts.map +1 -1
  109. package/node_modules/@noodle-borg/service/dist/routes/github-setup.js +3 -3
  110. package/node_modules/@noodle-borg/service/dist/routes/github-setup.js.map +1 -1
  111. package/node_modules/@noodle-borg/service/dist/routes/github-webhook.d.ts +29 -0
  112. package/node_modules/@noodle-borg/service/dist/routes/github-webhook.d.ts.map +1 -0
  113. package/node_modules/@noodle-borg/service/dist/routes/github-webhook.js +355 -0
  114. package/node_modules/@noodle-borg/service/dist/routes/github-webhook.js.map +1 -0
  115. package/node_modules/@noodle-borg/service/dist/routes/org-admin-dispatch.d.ts +27 -0
  116. package/node_modules/@noodle-borg/service/dist/routes/org-admin-dispatch.d.ts.map +1 -0
  117. package/node_modules/@noodle-borg/service/dist/routes/org-admin-dispatch.js +61 -0
  118. package/node_modules/@noodle-borg/service/dist/routes/org-admin-dispatch.js.map +1 -0
  119. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts +20 -1
  120. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts.map +1 -1
  121. package/node_modules/@noodle-borg/service/dist/routes/paths.js +54 -0
  122. package/node_modules/@noodle-borg/service/dist/routes/paths.js.map +1 -1
  123. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  124. package/node_modules/@noodle-borg/service/dist/serve.js +42 -1
  125. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  126. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  127. package/node_modules/@noodle-borg/service/dist/service.js +37 -53
  128. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  129. package/node_modules/@noodle-borg/service/dist/store/alert-rules-json-file.d.ts +21 -0
  130. package/node_modules/@noodle-borg/service/dist/store/alert-rules-json-file.d.ts.map +1 -0
  131. package/node_modules/@noodle-borg/service/dist/store/alert-rules-json-file.js +115 -0
  132. package/node_modules/@noodle-borg/service/dist/store/alert-rules-json-file.js.map +1 -0
  133. package/node_modules/@noodle-borg/service/dist/store/alert-rules.d.ts +108 -0
  134. package/node_modules/@noodle-borg/service/dist/store/alert-rules.d.ts.map +1 -0
  135. package/node_modules/@noodle-borg/service/dist/store/alert-rules.js +181 -0
  136. package/node_modules/@noodle-borg/service/dist/store/alert-rules.js.map +1 -0
  137. package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.d.ts +1 -0
  138. package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.d.ts.map +1 -1
  139. package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.js +4 -0
  140. package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.js.map +1 -1
  141. package/node_modules/@noodle-borg/service/dist/store/github-connections.d.ts +1 -0
  142. package/node_modules/@noodle-borg/service/dist/store/github-connections.d.ts.map +1 -1
  143. package/node_modules/@noodle-borg/service/dist/store/github-connections.js +4 -0
  144. package/node_modules/@noodle-borg/service/dist/store/github-connections.js.map +1 -1
  145. package/node_modules/@noodle-borg/service/dist/store/github-runs-json-file.d.ts +22 -0
  146. package/node_modules/@noodle-borg/service/dist/store/github-runs-json-file.d.ts.map +1 -0
  147. package/node_modules/@noodle-borg/service/dist/store/github-runs-json-file.js +116 -0
  148. package/node_modules/@noodle-borg/service/dist/store/github-runs-json-file.js.map +1 -0
  149. package/node_modules/@noodle-borg/service/dist/store/github-runs.d.ts +51 -0
  150. package/node_modules/@noodle-borg/service/dist/store/github-runs.d.ts.map +1 -0
  151. package/node_modules/@noodle-borg/service/dist/store/github-runs.js +158 -0
  152. package/node_modules/@noodle-borg/service/dist/store/github-runs.js.map +1 -0
  153. package/node_modules/@noodle-borg/service/dist/store/pending-installations-postgres.d.ts +19 -0
  154. package/node_modules/@noodle-borg/service/dist/store/pending-installations-postgres.d.ts.map +1 -0
  155. package/node_modules/@noodle-borg/service/dist/store/pending-installations-postgres.js +46 -0
  156. package/node_modules/@noodle-borg/service/dist/store/pending-installations-postgres.js.map +1 -0
  157. package/node_modules/@noodle-borg/service/dist/store/postgres-alerts.d.ts +26 -0
  158. package/node_modules/@noodle-borg/service/dist/store/postgres-alerts.d.ts.map +1 -0
  159. package/node_modules/@noodle-borg/service/dist/store/postgres-alerts.js +142 -0
  160. package/node_modules/@noodle-borg/service/dist/store/postgres-alerts.js.map +1 -0
  161. package/node_modules/@noodle-borg/service/dist/store/postgres-github-runs.d.ts +9 -0
  162. package/node_modules/@noodle-borg/service/dist/store/postgres-github-runs.d.ts.map +1 -0
  163. package/node_modules/@noodle-borg/service/dist/store/postgres-github-runs.js +113 -0
  164. package/node_modules/@noodle-borg/service/dist/store/postgres-github-runs.js.map +1 -0
  165. package/node_modules/@noodle-borg/service/dist/store/postgres-github.d.ts +1 -0
  166. package/node_modules/@noodle-borg/service/dist/store/postgres-github.d.ts.map +1 -1
  167. package/node_modules/@noodle-borg/service/dist/store/postgres-github.js +7 -2
  168. package/node_modules/@noodle-borg/service/dist/store/postgres-github.js.map +1 -1
  169. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
  170. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +49 -0
  171. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
  172. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts +9 -2
  173. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -1
  174. package/node_modules/@noodle-borg/service/dist/store/postgres.js +17 -1
  175. package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -1
  176. package/node_modules/@noodle-borg/service/dist/store.d.ts +104 -0
  177. package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -1
  178. package/node_modules/@noodle-borg/service/dist/store.js +2 -0
  179. package/node_modules/@noodle-borg/service/dist/store.js.map +1 -1
  180. package/package.json +2 -2
@@ -0,0 +1,181 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { validateSlug } from './validate.js';
3
+ /**
4
+ * Analytics alert rules (E2, [ADR 0130](../../../../docs/decisions/0130-analytics-alerting-rules-and-webhook-channel.md)):
5
+ * a rule is data scoped to org/app/env, evaluated periodically against the tenant's request-event
6
+ * aggregations, edge-triggered (fire on the non-breaching → breaching transition; re-fire while
7
+ * breaching only after the cooldown). The MVP channel is a webhook URL.
8
+ *
9
+ * `webhookUrl` is SENSITIVE — hosted webhook endpoints routinely embed capability tokens in the
10
+ * path/query. It exists only inside the store and the delivery path; routes serialize rules through
11
+ * a redacting view and no log line, error message, or audit detail may ever carry it.
12
+ */
13
+ export const ALERT_METRICS = ['error_share', 'error_count', 'calls', 'p95_ms'];
14
+ export const ALERT_WINDOWS_MINUTES = [5, 15, 60];
15
+ export const DEFAULT_ALERT_COOLDOWN_MINUTES = 15;
16
+ /** Cheap abuse bound: an env's owner cannot turn the evaluator into a webhook flood. */
17
+ export const MAX_ALERT_RULES_PER_ENV = 20;
18
+ const MAX_ALERT_NAME_LENGTH = 100;
19
+ const MAX_WEBHOOK_URL_LENGTH = 2048;
20
+ const MAX_COOLDOWN_MINUTES = 24 * 60;
21
+ /** Rule ids are always service-minted UUIDs; enforcing the shape everywhere also makes ids safe filename components. */
22
+ const ALERT_RULE_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
23
+ export function validateAlertRuleId(id) {
24
+ if (!ALERT_RULE_ID_PATTERN.test(id))
25
+ throw new Error('invalid alert rule id');
26
+ return id;
27
+ }
28
+ /** True when the segment is shaped like a service-minted rule id (path parsing, non-throwing). */
29
+ export function isAlertRuleId(id) {
30
+ return ALERT_RULE_ID_PATTERN.test(id);
31
+ }
32
+ /**
33
+ * Shared shape validation for rule creation, used by every backend. Applies defaults. Policy
34
+ * validation of the webhook URL (https-only, loopback carve-out, private-IP rejection) is the
35
+ * route's job (`validateAlertWebhookUrl`); the store only rejects structurally broken values.
36
+ */
37
+ export function validateCreateAlertRuleInput(input) {
38
+ const orgSlug = validateSlug('org', input.orgSlug);
39
+ const appSlug = validateSlug('app', input.appSlug);
40
+ const environment = validateSlug('env', input.environment);
41
+ if (!ALERT_METRICS.includes(input.metric)) {
42
+ throw new Error(`invalid alert metric; expected one of ${ALERT_METRICS.join(', ')}`);
43
+ }
44
+ if (typeof input.threshold !== 'number' ||
45
+ !Number.isFinite(input.threshold) ||
46
+ input.threshold < 0) {
47
+ throw new Error('invalid alert threshold; expected a finite number >= 0');
48
+ }
49
+ if (!ALERT_WINDOWS_MINUTES.includes(input.windowMinutes)) {
50
+ throw new Error(`invalid alert window; expected one of ${ALERT_WINDOWS_MINUTES.join(', ')} minutes`);
51
+ }
52
+ const cooldownMinutes = input.cooldownMinutes ?? DEFAULT_ALERT_COOLDOWN_MINUTES;
53
+ if (!Number.isInteger(cooldownMinutes) ||
54
+ cooldownMinutes < 1 ||
55
+ cooldownMinutes > MAX_COOLDOWN_MINUTES) {
56
+ throw new Error(`invalid alert cooldown; expected an integer from 1 to ${MAX_COOLDOWN_MINUTES} minutes`);
57
+ }
58
+ if (input.name !== undefined) {
59
+ if (typeof input.name !== 'string' ||
60
+ input.name.length === 0 ||
61
+ input.name.length > MAX_ALERT_NAME_LENGTH) {
62
+ throw new Error(`invalid alert name; expected 1-${MAX_ALERT_NAME_LENGTH} characters`);
63
+ }
64
+ }
65
+ if (typeof input.webhookUrl !== 'string' ||
66
+ input.webhookUrl.length === 0 ||
67
+ input.webhookUrl.length > MAX_WEBHOOK_URL_LENGTH ||
68
+ !isHttpUrl(input.webhookUrl)) {
69
+ throw new Error('invalid webhookUrl; expected an http(s) URL');
70
+ }
71
+ return {
72
+ ...input,
73
+ orgSlug,
74
+ appSlug,
75
+ environment,
76
+ enabled: input.enabled ?? true,
77
+ cooldownMinutes,
78
+ };
79
+ }
80
+ function isHttpUrl(raw) {
81
+ try {
82
+ const url = new URL(raw);
83
+ return url.protocol === 'https:' || url.protocol === 'http:';
84
+ }
85
+ catch {
86
+ return false;
87
+ }
88
+ }
89
+ /** Build the durable record from a validated input (shared by the in-memory and JSON-file backends). */
90
+ export function newAlertRuleRecord(input, now) {
91
+ const safe = validateCreateAlertRuleInput(input);
92
+ const nowIso = now().toISOString();
93
+ return {
94
+ id: randomUUID(),
95
+ orgSlug: safe.orgSlug,
96
+ appSlug: safe.appSlug,
97
+ environment: safe.environment,
98
+ ...(safe.name !== undefined ? { name: safe.name } : {}),
99
+ metric: safe.metric,
100
+ threshold: safe.threshold,
101
+ windowMinutes: safe.windowMinutes,
102
+ comparison: '>=',
103
+ webhookUrl: safe.webhookUrl,
104
+ enabled: safe.enabled,
105
+ cooldownMinutes: safe.cooldownMinutes,
106
+ ...(safe.createdBySubject !== undefined ? { createdBySubject: safe.createdBySubject } : {}),
107
+ createdAt: nowIso,
108
+ updatedAt: nowIso,
109
+ breaching: false,
110
+ };
111
+ }
112
+ /** Apply a firing-state update, preserving `lastFiredAt` when the update does not carry one. */
113
+ export function withFiringState(record, state) {
114
+ const lastFiredAt = state.lastFiredAt ?? record.lastFiredAt;
115
+ return {
116
+ ...record,
117
+ breaching: state.breaching,
118
+ lastObserved: state.lastObserved,
119
+ ...(lastFiredAt !== undefined ? { lastFiredAt } : {}),
120
+ };
121
+ }
122
+ /** Stable list order across backends: `createdAt`, then `id` (matches the Postgres `ORDER BY`). */
123
+ export function compareAlertRules(a, b) {
124
+ return a.createdAt.localeCompare(b.createdAt) || a.id.localeCompare(b.id);
125
+ }
126
+ function matchesTenant(record, ref) {
127
+ return record.orgSlug === ref.org && record.appSlug === ref.app && record.environment === ref.env;
128
+ }
129
+ function validateTenantRefSlugs(ref) {
130
+ return {
131
+ org: validateSlug('org', ref.org),
132
+ app: validateSlug('app', ref.app),
133
+ env: validateSlug('env', ref.env),
134
+ };
135
+ }
136
+ /** In-memory {@link AlertRuleStore}: the tests/dev default; mirrors `InMemoryGithubConnectionStore`. */
137
+ export class InMemoryAlertRuleStore {
138
+ #records = new Map();
139
+ #now;
140
+ constructor(options = {}) {
141
+ this.#now = options.now ?? (() => new Date());
142
+ }
143
+ // Methods are async so validation failures surface as rejections (matching the file/Postgres
144
+ // backends), never synchronous throws out of a Promise-returning signature.
145
+ async createAlertRule(input) {
146
+ const record = newAlertRuleRecord(input, this.#now);
147
+ this.#records.set(record.id, record);
148
+ return record;
149
+ }
150
+ async listAlertRules(ref) {
151
+ const safe = validateTenantRefSlugs(ref);
152
+ return [...this.#records.values()]
153
+ .filter((record) => matchesTenant(record, safe))
154
+ .sort(compareAlertRules);
155
+ }
156
+ async getAlertRule(ref, id) {
157
+ const safe = validateTenantRefSlugs(ref);
158
+ const record = this.#records.get(validateAlertRuleId(id));
159
+ return record !== undefined && matchesTenant(record, safe) ? record : undefined;
160
+ }
161
+ async deleteAlertRule(ref, id) {
162
+ const safe = validateTenantRefSlugs(ref);
163
+ const record = this.#records.get(validateAlertRuleId(id));
164
+ if (record === undefined || !matchesTenant(record, safe))
165
+ return false;
166
+ this.#records.delete(record.id);
167
+ return true;
168
+ }
169
+ async listEnabledAlertRules() {
170
+ return [...this.#records.values()].filter((record) => record.enabled);
171
+ }
172
+ async updateAlertFiringState(id, state) {
173
+ const record = this.#records.get(validateAlertRuleId(id));
174
+ if (record === undefined)
175
+ return undefined;
176
+ const updated = withFiringState(record, state);
177
+ this.#records.set(record.id, updated);
178
+ return updated;
179
+ }
180
+ }
181
+ //# sourceMappingURL=alert-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-rules.js","sourceRoot":"","sources":["../../src/store/alert-rules.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export declare class JsonFileGithubConnectionStore implements GithubConnectionSt
13
13
  upsertRepoConnection(input: UpsertRepoConnectionInput): Promise<UpsertRepoConnectionResult>;
14
14
  getRepoConnection(org: string, app: string): Promise<RepoConnectionRecord | undefined>;
15
15
  getRepoConnectionByRepository(githubRepositoryId: number): Promise<RepoConnectionRecord | undefined>;
16
+ listRepoConnectionsByInstallation(installationId: number): Promise<readonly RepoConnectionRecord[]>;
16
17
  disableRepoConnection(org: string, app: string): Promise<boolean>;
17
18
  refreshRepoMetadata(githubRepositoryId: number, updates: {
18
19
  readonly ownerLogin?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"github-connections-json-file.d.ts","sourceRoot":"","sources":["../../src/store/github-connections-json-file.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,aAAa,CAAC;AAIrB;;;;;GAKG;AACH,qBAAa,6BAA8B,YAAW,qBAAqB;;gBAW7D,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;KAAO;IAc/D,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IA6BrF,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAQtF,6BAA6B,CACjC,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAM5C,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAajE,mBAAmB,CACjB,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE;QACP,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;KACjC,GACA,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;CAsD7C"}
1
+ {"version":3,"file":"github-connections-json-file.d.ts","sourceRoot":"","sources":["../../src/store/github-connections-json-file.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,aAAa,CAAC;AAIrB;;;;;GAKG;AACH,qBAAa,6BAA8B,YAAW,qBAAqB;;gBAW7D,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;KAAO;IAc/D,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IA6BrF,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAQtF,6BAA6B,CACjC,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAMtC,iCAAiC,CACrC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC;IAO3C,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAajE,mBAAmB,CACjB,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE;QACP,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;KACjC,GACA,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;CAsD7C"}
@@ -65,6 +65,10 @@ export class JsonFileGithubConnectionStore {
65
65
  const record = await this.#readRecord(id);
66
66
  return record?.enabled ? record : undefined;
67
67
  }
68
+ async listRepoConnectionsByInstallation(installationId) {
69
+ const id = validatePositiveInteger('installationId', installationId);
70
+ return (await this.#loadAll()).filter((record) => record.enabled && record.installationId === id);
71
+ }
68
72
  disableRepoConnection(org, app) {
69
73
  return this.#withMutation(async () => {
70
74
  const safeOrg = validateSlug('org', org);
@@ -1 +1 @@
1
- {"version":3,"file":"github-connections-json-file.js","sourceRoot":"","sources":["../../src/store/github-connections-json-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github-connections-json-file.js","sourceRoot":"","sources":["../../src/store/github-connections-json-file.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export declare class InMemoryGithubConnectionStore implements GithubConnectionSt
12
12
  upsertRepoConnection(input: UpsertRepoConnectionInput): Promise<UpsertRepoConnectionResult>;
13
13
  getRepoConnection(org: string, app: string): Promise<RepoConnectionRecord | undefined>;
14
14
  getRepoConnectionByRepository(githubRepositoryId: number): Promise<RepoConnectionRecord | undefined>;
15
+ listRepoConnectionsByInstallation(installationId: number): Promise<readonly RepoConnectionRecord[]>;
15
16
  disableRepoConnection(org: string, app: string): Promise<boolean>;
16
17
  refreshRepoMetadata(githubRepositoryId: number, updates: {
17
18
  readonly ownerLogin?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"github-connections.d.ts","sourceRoot":"","sources":["../../src/store/github-connections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,aAAa,CAAC;AAGrB;;;;GAIG;AACH,qBAAa,6BAA8B,YAAW,qBAAqB;;gBAI7D,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;KAAO;IAI9C,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAwB3F,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAUtF,6BAA6B,CAC3B,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAM5C,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAejE,mBAAmB,CACjB,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE;QACP,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;KACjC,GACA,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;CAc7C;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,yBAAyB,GAAG,yBAAyB,CAY/F;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,oBAAoB,EAAE,EACxC,KAAK,EAAE,yBAAyB,GAC/B,sBAAsB,GAAG,SAAS,CAyBpC"}
1
+ {"version":3,"file":"github-connections.d.ts","sourceRoot":"","sources":["../../src/store/github-connections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,aAAa,CAAC;AAGrB;;;;GAIG;AACH,qBAAa,6BAA8B,YAAW,qBAAqB;;gBAI7D,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;KAAO;IAI9C,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAwB3F,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAUtF,6BAA6B,CAC3B,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAM5C,iCAAiC,CAC/B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC;IAS3C,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAejE,mBAAmB,CACjB,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE;QACP,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;KACjC,GACA,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;CAc7C;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,yBAAyB,GAAG,yBAAyB,CAY/F;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,oBAAoB,EAAE,EACxC,KAAK,EAAE,yBAAyB,GAC/B,sBAAsB,GAAG,SAAS,CAyBpC"}
@@ -44,6 +44,10 @@ export class InMemoryGithubConnectionStore {
44
44
  const record = this.#records.get(id);
45
45
  return Promise.resolve(record?.enabled ? record : undefined);
46
46
  }
47
+ listRepoConnectionsByInstallation(installationId) {
48
+ const id = validatePositiveInteger('installationId', installationId);
49
+ return Promise.resolve([...this.#records.values()].filter((record) => record.enabled && record.installationId === id));
50
+ }
47
51
  disableRepoConnection(org, app) {
48
52
  const safeOrg = validateSlug('org', org);
49
53
  const safeApp = validateSlug('app', app);
@@ -1 +1 @@
1
- {"version":3,"file":"github-connections.js","sourceRoot":"","sources":["../../src/store/github-connections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github-connections.js","sourceRoot":"","sources":["../../src/store/github-connections.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { CancelQueuedDeployRunsFilter, CreateDeployRunInput, CreateDeployRunResult, DeployRunRecord, GithubDeployRunStore, ListDeployRunsResult } from '../store.js';
2
+ /**
3
+ * JSON-file {@link GithubDeployRunStore}: one file per run at
4
+ * `<dataDir>/github-runs/<runId>.json`, written atomically (temp file + `rename`, matching
5
+ * `JsonFileGithubConnectionStore`). `runId` is service-minted (`run-` + hex), so it is always a safe
6
+ * filename component. Every read-check-write mutation runs through the same mutation queue the
7
+ * connections store uses — the json-file analogue of the Postgres transaction, so concurrent webhook
8
+ * deliveries cannot both pass the idempotency checks.
9
+ */
10
+ export declare class JsonFileGithubDeployRunStore implements GithubDeployRunStore {
11
+ #private;
12
+ constructor(dataDir: string, options?: {
13
+ now?: () => Date;
14
+ });
15
+ createDeployRun(input: CreateDeployRunInput): Promise<CreateDeployRunResult>;
16
+ getDeployRun(org: string, runId: string): Promise<DeployRunRecord | undefined>;
17
+ listDeployRuns(org: string, app: string, opts?: {
18
+ readonly limit?: number;
19
+ }): Promise<ListDeployRunsResult>;
20
+ cancelQueuedDeployRuns(filter: CancelQueuedDeployRunsFilter): Promise<readonly string[]>;
21
+ }
22
+ //# sourceMappingURL=github-runs-json-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-runs-json-file.d.ts","sourceRoot":"","sources":["../../src/store/github-runs-json-file.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,4BAA4B,EAC5B,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAYrB;;;;;;;GAOG;AACH,qBAAa,4BAA6B,YAAW,oBAAoB;;gBAK3D,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;KAAO;IAc/D,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAmBtE,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAM9E,cAAc,CAClB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,GAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GACrC,OAAO,CAAC,oBAAoB,CAAC;IAShC,sBAAsB,CAAC,MAAM,EAAE,4BAA4B,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC;CAqDzF"}
@@ -0,0 +1,116 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { mkdir, readdir, readFile, rename, writeFile } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ import { DEFAULT_DEPLOY_RUN_LIST_LIMIT, findCreateDuplicate, matchesCancelFilter, shapeDeployRunList, supersedesQueued, validateCancelFilter, validateCreateDeployRunInput, } from './github-runs.js';
5
+ import { validateSlug } from './validate.js';
6
+ /**
7
+ * JSON-file {@link GithubDeployRunStore}: one file per run at
8
+ * `<dataDir>/github-runs/<runId>.json`, written atomically (temp file + `rename`, matching
9
+ * `JsonFileGithubConnectionStore`). `runId` is service-minted (`run-` + hex), so it is always a safe
10
+ * filename component. Every read-check-write mutation runs through the same mutation queue the
11
+ * connections store uses — the json-file analogue of the Postgres transaction, so concurrent webhook
12
+ * deliveries cannot both pass the idempotency checks.
13
+ */
14
+ export class JsonFileGithubDeployRunStore {
15
+ #dir;
16
+ #now;
17
+ #mutationQueue = Promise.resolve();
18
+ constructor(dataDir, options = {}) {
19
+ this.#dir = join(dataDir, 'github-runs');
20
+ this.#now = options.now ?? (() => new Date());
21
+ }
22
+ #withMutation(operation) {
23
+ const run = this.#mutationQueue.then(operation, operation);
24
+ this.#mutationQueue = run.then(() => undefined, () => undefined);
25
+ return run;
26
+ }
27
+ createDeployRun(input) {
28
+ return this.#withMutation(async () => {
29
+ const safe = validateCreateDeployRunInput(input);
30
+ const all = await this.#loadAll();
31
+ const duplicate = findCreateDuplicate(all, safe);
32
+ if (duplicate !== undefined)
33
+ return { ok: false, ...duplicate };
34
+ const nowIso = this.#now().toISOString();
35
+ const superseded = [];
36
+ for (const record of all) {
37
+ if (!supersedesQueued(record, safe))
38
+ continue;
39
+ await this.#writeRecord({ ...record, status: 'superseded', finishedAt: nowIso });
40
+ superseded.push(record.runId);
41
+ }
42
+ const record = { ...safe, status: 'queued', createdAt: nowIso };
43
+ await this.#writeRecord(record);
44
+ return { ok: true, record, superseded };
45
+ });
46
+ }
47
+ async getDeployRun(org, runId) {
48
+ const safeOrg = validateSlug('org', org);
49
+ const record = await this.#readRecord(runId);
50
+ return record?.orgSlug === safeOrg ? record : undefined;
51
+ }
52
+ async listDeployRuns(org, app, opts = {}) {
53
+ const safeOrg = validateSlug('org', org);
54
+ const safeApp = validateSlug('app', app);
55
+ const matching = (await this.#loadAll()).filter((record) => record.orgSlug === safeOrg && record.appSlug === safeApp);
56
+ return shapeDeployRunList(matching, opts.limit ?? DEFAULT_DEPLOY_RUN_LIST_LIMIT);
57
+ }
58
+ cancelQueuedDeployRuns(filter) {
59
+ return this.#withMutation(async () => {
60
+ const safe = validateCancelFilter(filter);
61
+ const nowIso = this.#now().toISOString();
62
+ const canceled = [];
63
+ for (const record of await this.#loadAll()) {
64
+ if (!matchesCancelFilter(record, safe))
65
+ continue;
66
+ await this.#writeRecord({ ...record, status: 'canceled', finishedAt: nowIso });
67
+ canceled.push(record.runId);
68
+ }
69
+ return canceled;
70
+ });
71
+ }
72
+ async #readRecord(runId) {
73
+ // runId is service-minted, but never trust it as a path segment anyway.
74
+ if (!/^[A-Za-z0-9_-]+$/.test(runId))
75
+ return undefined;
76
+ try {
77
+ const text = await readFile(join(this.#dir, `${runId}.json`), 'utf8');
78
+ return JSON.parse(text);
79
+ }
80
+ catch {
81
+ return undefined;
82
+ }
83
+ }
84
+ async #loadAll() {
85
+ let names;
86
+ try {
87
+ names = await readdir(this.#dir);
88
+ }
89
+ catch (error) {
90
+ if (error.code === 'ENOENT')
91
+ return [];
92
+ throw error;
93
+ }
94
+ const records = [];
95
+ for (const name of names) {
96
+ if (!name.endsWith('.json'))
97
+ continue; // skip in-flight *.tmp files
98
+ try {
99
+ const text = await readFile(join(this.#dir, name), 'utf8');
100
+ records.push(JSON.parse(text));
101
+ }
102
+ catch {
103
+ // Fail-soft: a corrupt/unreadable record must not crash the caller — skip it.
104
+ }
105
+ }
106
+ return records;
107
+ }
108
+ async #writeRecord(record) {
109
+ await mkdir(this.#dir, { recursive: true });
110
+ const target = join(this.#dir, `${record.runId}.json`);
111
+ const tmp = `${target}.${randomUUID()}.tmp`;
112
+ await writeFile(tmp, `${JSON.stringify(record, null, 2)}\n`, 'utf8');
113
+ await rename(tmp, target);
114
+ }
115
+ }
116
+ //# sourceMappingURL=github-runs-json-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-runs-json-file.js","sourceRoot":"","sources":["../../src/store/github-runs-json-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { CancelQueuedDeployRunsFilter, CreateDeployRunDuplicateReason, CreateDeployRunInput, CreateDeployRunResult, DeployRunRecord, DeployRunStatus, GithubDeployRunStore, ListDeployRunsResult } from '../store.js';
2
+ /**
3
+ * In-memory {@link GithubDeployRunStore} plus the shared pure helpers every backend reuses
4
+ * (validation, duplicate detection, the pinned state machine, list shaping). Mirrors
5
+ * `github-connections.ts`: the Map backend is the non-persistent default and the test double; the
6
+ * exported helpers keep the json-file backend byte-equivalent in semantics.
7
+ */
8
+ /** Newest-first list cap when the caller doesn't pass one — mirrors the runs-feed page size. */
9
+ export declare const DEFAULT_DEPLOY_RUN_LIST_LIMIT = 50;
10
+ /**
11
+ * The pinned state machine as data (see `DeployRunStatus` in `../store.ts`). The
12
+ * `failed|canceled|superseded → queued` retry edge is deliberately ABSENT — it is reserved for
13
+ * `runs retry` (GHD-4) and must not be walkable until that slice adds it.
14
+ */
15
+ export declare const DEPLOY_RUN_TRANSITIONS: Readonly<Record<DeployRunStatus, readonly DeployRunStatus[]>>;
16
+ export declare function canTransitionDeployRun(from: DeployRunStatus, to: DeployRunStatus): boolean;
17
+ /** Shared input validation, reused by the json-file backend. */
18
+ export declare function validateCreateDeployRunInput(input: CreateDeployRunInput): CreateDeployRunInput;
19
+ /**
20
+ * Shared duplicate detection over an already-loaded record set (json-file + in-memory; Postgres does
21
+ * the same checks inside its transaction). The idempotency contract lives on the interface doc:
22
+ * delivery ids are globally unique, and only a CANCELED run frees its `{repo, sha, env}` slot.
23
+ */
24
+ export declare function findCreateDuplicate(records: readonly DeployRunRecord[], input: CreateDeployRunInput): {
25
+ reason: CreateDeployRunDuplicateReason;
26
+ existing: DeployRunRecord;
27
+ } | undefined;
28
+ /**
29
+ * Every backend refuses an unfiltered cancel: no webhook outcome ever means "cancel everything
30
+ * queued for the app" — a missing filter is a caller bug, not a mass cancelation.
31
+ */
32
+ export declare function validateCancelFilter(filter: CancelQueuedDeployRunsFilter): CancelQueuedDeployRunsFilter;
33
+ /** A queued run for the same `(orgSlug, appSlug, envName)` that a new creation supersedes. */
34
+ export declare function supersedesQueued(record: DeployRunRecord, input: CreateDeployRunInput): boolean;
35
+ /** A queued run the cancel filter targets — org+app always, env and/or ref narrow it further. */
36
+ export declare function matchesCancelFilter(record: DeployRunRecord, filter: CancelQueuedDeployRunsFilter): boolean;
37
+ /** Newest-first (createdAt desc, runId desc tiebreak for same-millisecond rows), cap + flag. */
38
+ export declare function shapeDeployRunList(records: readonly DeployRunRecord[], limit: number): ListDeployRunsResult;
39
+ export declare class InMemoryGithubDeployRunStore implements GithubDeployRunStore {
40
+ #private;
41
+ constructor(options?: {
42
+ now?: () => Date;
43
+ });
44
+ createDeployRun(input: CreateDeployRunInput): Promise<CreateDeployRunResult>;
45
+ getDeployRun(org: string, runId: string): Promise<DeployRunRecord | undefined>;
46
+ listDeployRuns(org: string, app: string, opts?: {
47
+ readonly limit?: number;
48
+ }): Promise<ListDeployRunsResult>;
49
+ cancelQueuedDeployRuns(filter: CancelQueuedDeployRunsFilter): Promise<readonly string[]>;
50
+ }
51
+ //# sourceMappingURL=github-runs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-runs.d.ts","sourceRoot":"","sources":["../../src/store/github-runs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,4BAA4B,EAC5B,8BAA8B,EAC9B,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAGrB;;;;;GAKG;AAEH,gGAAgG;AAChG,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,eAAe,EAAE,CAAC,CAS9F,CAAC;AAEJ,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,eAAe,GAAG,OAAO,CAE1F;AAED,gEAAgE;AAChE,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,oBAAoB,GAAG,oBAAoB,CAoB9F;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,eAAe,EAAE,EACnC,KAAK,EAAE,oBAAoB,GAC1B;IAAE,MAAM,EAAE,8BAA8B,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAA;CAAE,GAAG,SAAS,CAYnF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,4BAA4B,GACnC,4BAA4B,CAU9B;AAED,8FAA8F;AAC9F,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAO9F;AAED,iGAAiG;AACjG,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAMT;AAED,gGAAgG;AAChG,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,eAAe,EAAE,EACnC,KAAK,EAAE,MAAM,GACZ,oBAAoB,CAKtB;AAED,qBAAa,4BAA6B,YAAW,oBAAoB;;gBAI3D,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;KAAO;IAMxC,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAiB5E,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAM9E,cAAc,CAClB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,GAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GACrC,OAAO,CAAC,oBAAoB,CAAC;IAS1B,sBAAsB,CAAC,MAAM,EAAE,4BAA4B,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC;CAW/F"}