@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
@@ -16,6 +16,7 @@ import { isAuthServerPath } from './oauth/paths.js';
16
16
  import { createLocalPolicyAdmissionGate } from './policy.js';
17
17
  import { CachingPolicyAssignmentStore } from './policy-cache.js';
18
18
  import { InMemoryPolicyCounterStore } from './policy-counters.js';
19
+ import { dispatchAlertRoutes } from './routes/alerts-dispatch.js';
19
20
  import { dispatchAnalyticsReads } from './routes/analytics-dispatch.js';
20
21
  import { handleAppArchive, handleAppRestore } from './routes/archive.js';
21
22
  import { handleAssetPreflight } from './routes/asset-control-plane.js';
@@ -24,15 +25,17 @@ import { handleAuditEvents, handleDeployments } from './routes/deployments.js';
24
25
  import { handleHostedSmoke, handleInspect } from './routes/diagnostics.js';
25
26
  import { dispatchGithubRoutes } from './routes/github-dispatch.js';
26
27
  import { handleUserAppLogs } from './routes/logs.js';
27
- import { handleInvitations, handleMembers, handleOrgInspect, handleOrgs, handleOrgUpdate, } from './routes/org-admin.js';
28
- import { parseAppArchivePath, parseAppRestorePath, parseAuditEventsPath, parseConfigPath, parseDeploymentsPath, parseInvitationsPath, parseMembersPath, parseOrgPath, parsePlanPath, parsePolicyPath, parseTenantAccessPath, parseTenantAssetPreflightPath, parseTenantDeployPath, parseTenantInspectPath, parseTenantLogsPath, parseTenantRollbackPath, parseTenantSmokePath, parseTenantStatusPath, } from './routes/paths.js';
28
+ import { dispatchOrgAdminRoutes } from './routes/org-admin-dispatch.js';
29
+ import { parseAppArchivePath, parseAppRestorePath, parseAuditEventsPath, parseConfigPath, parseDeploymentsPath, parsePlanPath, parsePolicyPath, parseTenantAccessPath, parseTenantAssetPreflightPath, parseTenantDeployPath, parseTenantInspectPath, parseTenantLogsPath, parseTenantRollbackPath, parseTenantSmokePath, parseTenantStatusPath, } from './routes/paths.js';
29
30
  import { handlePlan } from './routes/plans.js';
30
31
  import { handlePolicies } from './routes/policies.js';
31
32
  import { dispatchResourceReads } from './routes/resource-read-dispatch.js';
32
33
  import { handleRollback } from './routes/rollback.js';
34
+ import { InMemoryAlertRuleStore } from './store/alert-rules.js';
33
35
  import { InMemoryAuditStore, StdoutAuditSink } from './store/audit.js';
34
36
  import { InMemoryControlPlaneStore } from './store/control-plane.js';
35
37
  import { InMemoryGithubConnectionStore } from './store/github-connections.js';
38
+ import { InMemoryGithubDeployRunStore } from './store/github-runs.js';
36
39
  const DEFAULT_MAX_BODY = 1 << 20;
37
40
  /** Well-known prefix for OAuth 2.0 Protected Resource Metadata (RFC 9728); the resource path follows it. */
38
41
  const PRM_PREFIX = '/.well-known/oauth-protected-resource';
@@ -46,6 +49,8 @@ export function createServiceHandler(registry, options = {}) {
46
49
  const controlPlane = options.controlPlaneStore ?? new InMemoryControlPlaneStore();
47
50
  const configStore = options.configStore ?? registry.configStore;
48
51
  const githubConnectionStore = options.githubConnectionStore ?? new InMemoryGithubConnectionStore();
52
+ const alertRuleStore = options.alertRuleStore ?? new InMemoryAlertRuleStore();
53
+ const githubDeployRunStore = options.githubDeployRunStore ?? new InMemoryGithubDeployRunStore();
49
54
  const pendingGithubInstallationStore = options.pendingGithubInstallationStore ?? new InMemoryPendingGithubInstallationStore();
50
55
  const anonymousLimiter = new AnonymousConsumerLimiter();
51
56
  registry.setPlatformConnectors({
@@ -308,35 +313,18 @@ export function createServiceHandler(registry, options = {}) {
308
313
  });
309
314
  return;
310
315
  }
311
- if (url.pathname === '/v1/orgs' && (req.method === 'GET' || req.method === 'POST')) {
312
- applySecurityHeaders(res, tls);
313
- if (enforceHttps(req, res, tls))
314
- return;
315
- handleOrgs(req, res, gate, controlPlane, maxBody).catch(() => {
316
- if (!res.headersSent)
317
- sendJson(res, 500, { error: 'internal error' });
318
- });
319
- return;
320
- }
321
- const orgRef = parseOrgPath(url.pathname);
322
- if (orgRef !== undefined && req.method === 'PATCH') {
323
- applySecurityHeaders(res, tls);
324
- if (enforceHttps(req, res, tls))
325
- return;
326
- handleOrgUpdate(req, res, gate, controlPlane, maxBody, orgRef, audit).catch(() => {
327
- if (!res.headersSent)
328
- sendJson(res, 500, { error: 'internal error' });
329
- });
330
- return;
331
- }
332
- if (orgRef !== undefined && req.method === 'GET') {
333
- applySecurityHeaders(res, tls);
334
- if (enforceHttps(req, res, tls))
335
- return;
336
- handleOrgInspect(req, res, gate, controlPlane, orgRef).catch(() => {
337
- if (!res.headersSent)
338
- sendJson(res, 500, { error: 'internal error' });
339
- });
316
+ // Org-admin control plane (orgs, org item, members, invitations) lives in
317
+ // routes/org-admin-dispatch.ts; its path families are disjoint from the resource reads below.
318
+ if (dispatchOrgAdminRoutes(req, res, url, {
319
+ gate,
320
+ controlPlane,
321
+ audit,
322
+ maxBody,
323
+ applySecurityHeaders,
324
+ enforceHttps,
325
+ sendJson,
326
+ tls,
327
+ })) {
340
328
  return;
341
329
  }
342
330
  // ADR 0128 read surface (apps/envs/deployment-item GETs) lives in routes/resource-read-dispatch.ts;
@@ -353,28 +341,6 @@ export function createServiceHandler(registry, options = {}) {
353
341
  })) {
354
342
  return;
355
343
  }
356
- const membersRef = parseMembersPath(url.pathname);
357
- if (membersRef !== undefined) {
358
- applySecurityHeaders(res, tls);
359
- if (enforceHttps(req, res, tls))
360
- return;
361
- handleMembers(req, res, gate, controlPlane, maxBody, membersRef, audit).catch(() => {
362
- if (!res.headersSent)
363
- sendJson(res, 500, { error: 'internal error' });
364
- });
365
- return;
366
- }
367
- const invitationsRef = parseInvitationsPath(url.pathname);
368
- if (invitationsRef !== undefined) {
369
- applySecurityHeaders(res, tls);
370
- if (enforceHttps(req, res, tls))
371
- return;
372
- handleInvitations(req, res, gate, controlPlane, maxBody, invitationsRef, audit, url).catch(() => {
373
- if (!res.headersSent)
374
- sendJson(res, 500, { error: 'internal error' });
375
- });
376
- return;
377
- }
378
344
  const configRef = parseConfigPath(url.pathname);
379
345
  if (configRef !== undefined &&
380
346
  (req.method === 'GET' || req.method === 'PUT' || req.method === 'DELETE')) {
@@ -520,12 +486,30 @@ export function createServiceHandler(registry, options = {}) {
520
486
  })) {
521
487
  return;
522
488
  }
489
+ // Analytics alerting (E2, ADR 0130): alert-rule CRUD + manual test-fire. The evaluator loop
490
+ // lives in serve.ts; routes live in routes/alerts-dispatch.ts.
491
+ if (dispatchAlertRoutes(req, res, url, {
492
+ gate,
493
+ controlPlane,
494
+ alertRuleStore,
495
+ audit,
496
+ maxBody,
497
+ allowLoopbackWebhooks: options.alertWebhookAllowLoopback === true,
498
+ applySecurityHeaders,
499
+ enforceHttps,
500
+ sendJson,
501
+ tls,
502
+ ...(options.clock !== undefined ? { clock: options.clock } : {}),
503
+ })) {
504
+ return;
505
+ }
523
506
  // GHD-1 GitHub connection routes (ADR 0111): repository connection CRUD + the install-url/claim
524
507
  // hand-off. Lives in routes/github-dispatch.ts to keep this composition root under the size gate.
525
508
  if (dispatchGithubRoutes(req, res, url, {
526
509
  gate,
527
510
  controlPlane,
528
511
  githubConnectionStore,
512
+ githubDeployRunStore,
529
513
  githubAppClient: options.githubAppClient,
530
514
  githubApp: options.githubApp,
531
515
  pendingGithubInstallationStore,
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { TenantRef } from '../store.js';
2
+ import { type AlertFiringState, type AlertRuleRecord, type AlertRuleStore, type CreateAlertRuleInput } from './alert-rules.js';
3
+ /**
4
+ * JSON-file {@link AlertRuleStore}: one file per rule at `<dataDir>/alert-rules/<id>.json`,
5
+ * written atomically (temp file + `rename`, matching `JsonFileGithubConnectionStore`). Rule ids
6
+ * are service-minted UUIDs and every read/write path re-validates the id shape, so an id is
7
+ * always a safe filename component (no traversal).
8
+ */
9
+ export declare class JsonFileAlertRuleStore implements AlertRuleStore {
10
+ #private;
11
+ constructor(dataDir: string, options?: {
12
+ now?: () => Date;
13
+ });
14
+ createAlertRule(input: CreateAlertRuleInput): Promise<AlertRuleRecord>;
15
+ listAlertRules(ref: TenantRef): Promise<readonly AlertRuleRecord[]>;
16
+ getAlertRule(ref: TenantRef, id: string): Promise<AlertRuleRecord | undefined>;
17
+ deleteAlertRule(ref: TenantRef, id: string): Promise<boolean>;
18
+ listEnabledAlertRules(): Promise<readonly AlertRuleRecord[]>;
19
+ updateAlertFiringState(id: string, state: AlertFiringState): Promise<AlertRuleRecord | undefined>;
20
+ }
21
+ //# sourceMappingURL=alert-rules-json-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-rules-json-file.d.ts","sourceRoot":"","sources":["../../src/store/alert-rules-json-file.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAK1B,MAAM,kBAAkB,CAAC;AAG1B;;;;;GAKG;AACH,qBAAa,sBAAuB,YAAW,cAAc;;gBAM/C,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;KAAO;IAc/D,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC;IAQhE,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IAWnE,YAAY,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAWpF,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASvD,qBAAqB,IAAI,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC;IAIlE,sBAAsB,CACpB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;CA+CxC"}
@@ -0,0 +1,115 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { mkdir, readdir, readFile, rename, rm, writeFile } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ import { compareAlertRules, newAlertRuleRecord, validateAlertRuleId, withFiringState, } from './alert-rules.js';
5
+ import { validateSlug } from './validate.js';
6
+ /**
7
+ * JSON-file {@link AlertRuleStore}: one file per rule at `<dataDir>/alert-rules/<id>.json`,
8
+ * written atomically (temp file + `rename`, matching `JsonFileGithubConnectionStore`). Rule ids
9
+ * are service-minted UUIDs and every read/write path re-validates the id shape, so an id is
10
+ * always a safe filename component (no traversal).
11
+ */
12
+ export class JsonFileAlertRuleStore {
13
+ #dir;
14
+ #now;
15
+ /** Serializes read-modify-write mutations (firing-state updates), mirroring the github file store. */
16
+ #mutationQueue = Promise.resolve();
17
+ constructor(dataDir, options = {}) {
18
+ this.#dir = join(dataDir, 'alert-rules');
19
+ this.#now = options.now ?? (() => new Date());
20
+ }
21
+ #withMutation(operation) {
22
+ const run = this.#mutationQueue.then(operation, operation);
23
+ this.#mutationQueue = run.then(() => undefined, () => undefined);
24
+ return run;
25
+ }
26
+ createAlertRule(input) {
27
+ return this.#withMutation(async () => {
28
+ const record = newAlertRuleRecord(input, this.#now);
29
+ await this.#writeRecord(record);
30
+ return record;
31
+ });
32
+ }
33
+ async listAlertRules(ref) {
34
+ const org = validateSlug('org', ref.org);
35
+ const app = validateSlug('app', ref.app);
36
+ const env = validateSlug('env', ref.env);
37
+ return (await this.#loadAll())
38
+ .filter((record) => record.orgSlug === org && record.appSlug === app && record.environment === env)
39
+ .sort(compareAlertRules);
40
+ }
41
+ async getAlertRule(ref, id) {
42
+ const org = validateSlug('org', ref.org);
43
+ const app = validateSlug('app', ref.app);
44
+ const env = validateSlug('env', ref.env);
45
+ const record = await this.#readRecord(validateAlertRuleId(id));
46
+ if (record === undefined)
47
+ return undefined;
48
+ return record.orgSlug === org && record.appSlug === app && record.environment === env
49
+ ? record
50
+ : undefined;
51
+ }
52
+ deleteAlertRule(ref, id) {
53
+ return this.#withMutation(async () => {
54
+ const found = await this.getAlertRule(ref, id);
55
+ if (found === undefined)
56
+ return false;
57
+ await rm(join(this.#dir, `${found.id}.json`), { force: true });
58
+ return true;
59
+ });
60
+ }
61
+ async listEnabledAlertRules() {
62
+ return (await this.#loadAll()).filter((record) => record.enabled);
63
+ }
64
+ updateAlertFiringState(id, state) {
65
+ return this.#withMutation(async () => {
66
+ const record = await this.#readRecord(validateAlertRuleId(id));
67
+ if (record === undefined)
68
+ return undefined;
69
+ const updated = withFiringState(record, state);
70
+ await this.#writeRecord(updated);
71
+ return updated;
72
+ });
73
+ }
74
+ async #readRecord(id) {
75
+ try {
76
+ const text = await readFile(join(this.#dir, `${id}.json`), 'utf8');
77
+ return JSON.parse(text);
78
+ }
79
+ catch {
80
+ return undefined;
81
+ }
82
+ }
83
+ async #loadAll() {
84
+ let names;
85
+ try {
86
+ names = await readdir(this.#dir);
87
+ }
88
+ catch (error) {
89
+ if (error.code === 'ENOENT')
90
+ return [];
91
+ throw error;
92
+ }
93
+ const records = [];
94
+ for (const name of names) {
95
+ if (!name.endsWith('.json'))
96
+ continue; // skip in-flight *.tmp files
97
+ try {
98
+ const text = await readFile(join(this.#dir, name), 'utf8');
99
+ records.push(JSON.parse(text));
100
+ }
101
+ catch {
102
+ // Fail-soft: a corrupt/unreadable record must not crash the caller — skip it.
103
+ }
104
+ }
105
+ return records;
106
+ }
107
+ async #writeRecord(record) {
108
+ await mkdir(this.#dir, { recursive: true });
109
+ const target = join(this.#dir, `${record.id}.json`);
110
+ const tmp = `${target}.${randomUUID()}.tmp`;
111
+ await writeFile(tmp, `${JSON.stringify(record, null, 2)}\n`, 'utf8');
112
+ await rename(tmp, target);
113
+ }
114
+ }
115
+ //# sourceMappingURL=alert-rules-json-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-rules-json-file.js","sourceRoot":"","sources":["../../src/store/alert-rules-json-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,108 @@
1
+ import type { TenantRef } from '../store.js';
2
+ /**
3
+ * Analytics alert rules (E2, [ADR 0130](../../../../docs/decisions/0130-analytics-alerting-rules-and-webhook-channel.md)):
4
+ * a rule is data scoped to org/app/env, evaluated periodically against the tenant's request-event
5
+ * aggregations, edge-triggered (fire on the non-breaching → breaching transition; re-fire while
6
+ * breaching only after the cooldown). The MVP channel is a webhook URL.
7
+ *
8
+ * `webhookUrl` is SENSITIVE — hosted webhook endpoints routinely embed capability tokens in the
9
+ * path/query. It exists only inside the store and the delivery path; routes serialize rules through
10
+ * a redacting view and no log line, error message, or audit detail may ever carry it.
11
+ */
12
+ export declare const ALERT_METRICS: readonly ["error_share", "error_count", "calls", "p95_ms"];
13
+ export type AlertMetric = (typeof ALERT_METRICS)[number];
14
+ export declare const ALERT_WINDOWS_MINUTES: readonly [5, 15, 60];
15
+ export type AlertWindowMinutes = (typeof ALERT_WINDOWS_MINUTES)[number];
16
+ export declare const DEFAULT_ALERT_COOLDOWN_MINUTES = 15;
17
+ /** Cheap abuse bound: an env's owner cannot turn the evaluator into a webhook flood. */
18
+ export declare const MAX_ALERT_RULES_PER_ENV = 20;
19
+ export interface AlertRuleRecord {
20
+ readonly id: string;
21
+ readonly orgSlug: string;
22
+ readonly appSlug: string;
23
+ readonly environment: string;
24
+ readonly name?: string;
25
+ readonly metric: AlertMetric;
26
+ readonly threshold: number;
27
+ readonly windowMinutes: AlertWindowMinutes;
28
+ /** MVP supports only `>=`; persisted so a later slice can widen without a data migration. */
29
+ readonly comparison: '>=';
30
+ /** SENSITIVE (may embed tokens): never logged, never serialized into responses. */
31
+ readonly webhookUrl: string;
32
+ readonly enabled: boolean;
33
+ readonly cooldownMinutes: number;
34
+ readonly createdBySubject?: string;
35
+ readonly createdAt: string;
36
+ readonly updatedAt: string;
37
+ /** Edge-trigger state: whether the last evaluation observed a breach. */
38
+ readonly breaching: boolean;
39
+ /** Observed metric value at the last state change or fire. */
40
+ readonly lastObserved?: number;
41
+ readonly lastFiredAt?: string;
42
+ }
43
+ export interface CreateAlertRuleInput {
44
+ readonly orgSlug: string;
45
+ readonly appSlug: string;
46
+ readonly environment: string;
47
+ readonly name?: string;
48
+ readonly metric: AlertMetric;
49
+ readonly threshold: number;
50
+ readonly windowMinutes: AlertWindowMinutes;
51
+ readonly webhookUrl: string;
52
+ /** Default `true`. */
53
+ readonly enabled?: boolean;
54
+ /** Default {@link DEFAULT_ALERT_COOLDOWN_MINUTES}. */
55
+ readonly cooldownMinutes?: number;
56
+ readonly createdBySubject?: string;
57
+ }
58
+ export interface AlertFiringState {
59
+ readonly breaching: boolean;
60
+ readonly lastObserved: number;
61
+ /** When present, records a fire; when absent the existing `lastFiredAt` is preserved. */
62
+ readonly lastFiredAt?: string;
63
+ }
64
+ /**
65
+ * Store surface for analytics alert rules. Backends: in-memory (tests/dev default), JSON-file
66
+ * (`dataDir` local persistence), and Postgres (hosted) — selected in `serveService` the same way
67
+ * as the request-event store.
68
+ */
69
+ export interface AlertRuleStore {
70
+ createAlertRule(input: CreateAlertRuleInput): Promise<AlertRuleRecord>;
71
+ listAlertRules(ref: TenantRef): Promise<readonly AlertRuleRecord[]>;
72
+ getAlertRule(ref: TenantRef, id: string): Promise<AlertRuleRecord | undefined>;
73
+ /** `true` iff the rule existed in this tenant scope and was deleted. */
74
+ deleteAlertRule(ref: TenantRef, id: string): Promise<boolean>;
75
+ /** Every enabled rule across all tenants — the evaluator sweep input. */
76
+ listEnabledAlertRules(): Promise<readonly AlertRuleRecord[]>;
77
+ /** Persist edge-trigger state; `undefined` when the rule no longer exists. */
78
+ updateAlertFiringState(id: string, state: AlertFiringState): Promise<AlertRuleRecord | undefined>;
79
+ }
80
+ export declare function validateAlertRuleId(id: string): string;
81
+ /** True when the segment is shaped like a service-minted rule id (path parsing, non-throwing). */
82
+ export declare function isAlertRuleId(id: string): boolean;
83
+ /**
84
+ * Shared shape validation for rule creation, used by every backend. Applies defaults. Policy
85
+ * validation of the webhook URL (https-only, loopback carve-out, private-IP rejection) is the
86
+ * route's job (`validateAlertWebhookUrl`); the store only rejects structurally broken values.
87
+ */
88
+ export declare function validateCreateAlertRuleInput(input: CreateAlertRuleInput): Required<Pick<CreateAlertRuleInput, 'enabled' | 'cooldownMinutes'>> & CreateAlertRuleInput;
89
+ /** Build the durable record from a validated input (shared by the in-memory and JSON-file backends). */
90
+ export declare function newAlertRuleRecord(input: CreateAlertRuleInput, now: () => Date): AlertRuleRecord;
91
+ /** Apply a firing-state update, preserving `lastFiredAt` when the update does not carry one. */
92
+ export declare function withFiringState(record: AlertRuleRecord, state: AlertFiringState): AlertRuleRecord;
93
+ /** Stable list order across backends: `createdAt`, then `id` (matches the Postgres `ORDER BY`). */
94
+ export declare function compareAlertRules(a: AlertRuleRecord, b: AlertRuleRecord): number;
95
+ /** In-memory {@link AlertRuleStore}: the tests/dev default; mirrors `InMemoryGithubConnectionStore`. */
96
+ export declare class InMemoryAlertRuleStore implements AlertRuleStore {
97
+ #private;
98
+ constructor(options?: {
99
+ now?: () => Date;
100
+ });
101
+ createAlertRule(input: CreateAlertRuleInput): Promise<AlertRuleRecord>;
102
+ listAlertRules(ref: TenantRef): Promise<readonly AlertRuleRecord[]>;
103
+ getAlertRule(ref: TenantRef, id: string): Promise<AlertRuleRecord | undefined>;
104
+ deleteAlertRule(ref: TenantRef, id: string): Promise<boolean>;
105
+ listEnabledAlertRules(): Promise<readonly AlertRuleRecord[]>;
106
+ updateAlertFiringState(id: string, state: AlertFiringState): Promise<AlertRuleRecord | undefined>;
107
+ }
108
+ //# sourceMappingURL=alert-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-rules.d.ts","sourceRoot":"","sources":["../../src/store/alert-rules.ts"],"names":[],"mappings":"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"}