@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.
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/alerts-ops.d.ts +2 -0
- package/dist/commands/alerts-ops.d.ts.map +1 -0
- package/dist/commands/alerts-ops.js +249 -0
- package/dist/commands/alerts-ops.js.map +1 -0
- package/dist/commands/analytics-ops.d.ts +13 -0
- package/dist/commands/analytics-ops.d.ts.map +1 -1
- package/dist/commands/analytics-ops.js +5 -2
- package/dist/commands/analytics-ops.js.map +1 -1
- package/dist/commands/catalog-data-resources.d.ts.map +1 -1
- package/dist/commands/catalog-data-resources.js +45 -0
- package/dist/commands/catalog-data-resources.js.map +1 -1
- package/dist/commands/github-ops.d.ts.map +1 -1
- package/dist/commands/github-ops.js +24 -4
- package/dist/commands/github-ops.js.map +1 -1
- package/dist/commands/github-runs-ops.d.ts +32 -0
- package/dist/commands/github-runs-ops.d.ts.map +1 -0
- package/dist/commands/github-runs-ops.js +132 -0
- package/dist/commands/github-runs-ops.js.map +1 -0
- package/dist/commands/mcp-apps.js +27 -0
- package/dist/commands/mcp-apps.js.map +1 -1
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +1 -3
- package/dist/prompts.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +5 -0
- package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +1 -0
- package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-content.d.ts.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js +3 -1
- package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
- package/node_modules/@noodle-borg/authoring/dist/recording.js +18 -23
- package/node_modules/@noodle-borg/authoring/dist/recording.js.map +1 -1
- package/node_modules/@noodle-borg/authoring/dist/server.d.ts +4 -1
- package/node_modules/@noodle-borg/authoring/dist/server.d.ts.map +1 -1
- package/node_modules/@noodle-borg/authoring/dist/server.js +3 -1
- package/node_modules/@noodle-borg/authoring/dist/server.js.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts +2 -0
- package/node_modules/@noodle-borg/compiler/dist/artifact/types.d.ts.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/compile.js +1 -1
- package/node_modules/@noodle-borg/compiler/dist/compile.js.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts +1 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.d.ts.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js +6 -0
- package/node_modules/@noodle-borg/compiler/dist/manifest/schema.js.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/widget-compile-helpers.d.ts +3 -1
- package/node_modules/@noodle-borg/compiler/dist/widget-compile-helpers.d.ts.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/widget-compile-helpers.js +7 -1
- package/node_modules/@noodle-borg/compiler/dist/widget-compile-helpers.js.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/widget-emit.d.ts.map +1 -1
- package/node_modules/@noodle-borg/compiler/dist/widget-emit.js +3 -1
- package/node_modules/@noodle-borg/compiler/dist/widget-emit.js.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts +3 -1
- package/node_modules/@noodle-borg/protocol/dist/mapping.d.ts.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/mapping.js +9 -3
- package/node_modules/@noodle-borg/protocol/dist/mapping.js.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.js +1 -1
- package/node_modules/@noodle-borg/protocol/dist/sdk-server.js.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/widget/react-bridge-bootstrap.d.ts +1 -1
- package/node_modules/@noodle-borg/protocol/dist/widget/react-bridge-bootstrap.d.ts.map +1 -1
- package/node_modules/@noodle-borg/protocol/dist/widget/react-bridge-bootstrap.js +1 -1
- package/node_modules/@noodle-borg/service/dist/alert-evaluator.d.ts +57 -0
- package/node_modules/@noodle-borg/service/dist/alert-evaluator.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/alert-evaluator.js +158 -0
- package/node_modules/@noodle-borg/service/dist/alert-evaluator.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/alert-webhook.d.ts +72 -0
- package/node_modules/@noodle-borg/service/dist/alert-webhook.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/alert-webhook.js +138 -0
- package/node_modules/@noodle-borg/service/dist/alert-webhook.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/github/pending-installations.d.ts +15 -8
- package/node_modules/@noodle-borg/service/dist/github/pending-installations.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/github/pending-installations.js +16 -9
- package/node_modules/@noodle-borg/service/dist/github/pending-installations.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/index.d.ts +10 -2
- package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/index.js +9 -1
- package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/options.d.ts +20 -1
- package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/alerts-dispatch.d.ts +28 -0
- package/node_modules/@noodle-borg/service/dist/routes/alerts-dispatch.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/alerts-dispatch.js +50 -0
- package/node_modules/@noodle-borg/service/dist/routes/alerts-dispatch.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/alerts.d.ts +39 -0
- package/node_modules/@noodle-borg/service/dist/routes/alerts.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/alerts.js +204 -0
- package/node_modules/@noodle-borg/service/dist/routes/alerts.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/contracts.d.ts +149 -0
- package/node_modules/@noodle-borg/service/dist/routes/contracts.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/contracts.js +81 -0
- package/node_modules/@noodle-borg/service/dist/routes/contracts.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/github-connection.js +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/github-connection.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.d.ts +2 -1
- package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.js +37 -2
- package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/github-runs.d.ts +8 -0
- package/node_modules/@noodle-borg/service/dist/routes/github-runs.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/github-runs.js +33 -0
- package/node_modules/@noodle-borg/service/dist/routes/github-runs.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/github-setup.d.ts +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/github-setup.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/github-setup.js +3 -3
- package/node_modules/@noodle-borg/service/dist/routes/github-setup.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/github-webhook.d.ts +29 -0
- package/node_modules/@noodle-borg/service/dist/routes/github-webhook.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/github-webhook.js +355 -0
- package/node_modules/@noodle-borg/service/dist/routes/github-webhook.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/org-admin-dispatch.d.ts +27 -0
- package/node_modules/@noodle-borg/service/dist/routes/org-admin-dispatch.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/org-admin-dispatch.js +61 -0
- package/node_modules/@noodle-borg/service/dist/routes/org-admin-dispatch.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts +20 -1
- package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/routes/paths.js +54 -0
- package/node_modules/@noodle-borg/service/dist/routes/paths.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/serve.js +42 -1
- package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/service.js +37 -53
- package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/alert-rules-json-file.d.ts +21 -0
- package/node_modules/@noodle-borg/service/dist/store/alert-rules-json-file.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/alert-rules-json-file.js +115 -0
- package/node_modules/@noodle-borg/service/dist/store/alert-rules-json-file.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/alert-rules.d.ts +108 -0
- package/node_modules/@noodle-borg/service/dist/store/alert-rules.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/alert-rules.js +181 -0
- package/node_modules/@noodle-borg/service/dist/store/alert-rules.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.d.ts +1 -0
- package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.js +4 -0
- package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/github-connections.d.ts +1 -0
- package/node_modules/@noodle-borg/service/dist/store/github-connections.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/github-connections.js +4 -0
- package/node_modules/@noodle-borg/service/dist/store/github-connections.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/github-runs-json-file.d.ts +22 -0
- package/node_modules/@noodle-borg/service/dist/store/github-runs-json-file.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/github-runs-json-file.js +116 -0
- package/node_modules/@noodle-borg/service/dist/store/github-runs-json-file.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/github-runs.d.ts +51 -0
- package/node_modules/@noodle-borg/service/dist/store/github-runs.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/github-runs.js +158 -0
- package/node_modules/@noodle-borg/service/dist/store/github-runs.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/pending-installations-postgres.d.ts +19 -0
- package/node_modules/@noodle-borg/service/dist/store/pending-installations-postgres.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/pending-installations-postgres.js +46 -0
- package/node_modules/@noodle-borg/service/dist/store/pending-installations-postgres.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-alerts.d.ts +26 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-alerts.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-alerts.js +142 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-alerts.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-github-runs.d.ts +9 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-github-runs.d.ts.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-github-runs.js +113 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-github-runs.js.map +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-github.d.ts +1 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-github.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-github.js +7 -2
- package/node_modules/@noodle-borg/service/dist/store/postgres-github.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +49 -0
- package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts +9 -2
- package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres.js +17 -1
- package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store.d.ts +104 -0
- package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -1
- package/node_modules/@noodle-borg/service/dist/store.js +2 -0
- package/node_modules/@noodle-borg/service/dist/store.js.map +1 -1
- 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;
|
|
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"}
|