@noodleseed/one 0.16.0 → 0.18.0

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 (348) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +52 -5
  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/apps-ops.d.ts +17 -0
  13. package/dist/commands/apps-ops.d.ts.map +1 -0
  14. package/dist/commands/apps-ops.js +285 -0
  15. package/dist/commands/apps-ops.js.map +1 -0
  16. package/dist/commands/archive-ops.js +2 -2
  17. package/dist/commands/archive-ops.js.map +1 -1
  18. package/dist/commands/catalog-data-config.d.ts +9 -0
  19. package/dist/commands/catalog-data-config.d.ts.map +1 -0
  20. package/dist/commands/catalog-data-config.js +67 -0
  21. package/dist/commands/catalog-data-config.js.map +1 -0
  22. package/dist/commands/catalog-data-core.d.ts +13 -0
  23. package/dist/commands/catalog-data-core.d.ts.map +1 -0
  24. package/dist/commands/catalog-data-core.js +354 -0
  25. package/dist/commands/catalog-data-core.js.map +1 -0
  26. package/dist/commands/catalog-data-resources.d.ts +8 -0
  27. package/dist/commands/catalog-data-resources.d.ts.map +1 -0
  28. package/dist/commands/catalog-data-resources.js +551 -0
  29. package/dist/commands/catalog-data-resources.js.map +1 -0
  30. package/dist/commands/catalog-dispatch.d.ts +15 -0
  31. package/dist/commands/catalog-dispatch.d.ts.map +1 -0
  32. package/dist/commands/catalog-dispatch.js +95 -0
  33. package/dist/commands/catalog-dispatch.js.map +1 -0
  34. package/dist/commands/catalog-render.d.ts +28 -0
  35. package/dist/commands/catalog-render.d.ts.map +1 -0
  36. package/dist/commands/catalog-render.js +142 -0
  37. package/dist/commands/catalog-render.js.map +1 -0
  38. package/dist/commands/catalog-types.d.ts +46 -0
  39. package/dist/commands/catalog-types.d.ts.map +1 -0
  40. package/dist/commands/catalog-types.js +7 -0
  41. package/dist/commands/catalog-types.js.map +1 -0
  42. package/dist/commands/catalog.d.ts +30 -0
  43. package/dist/commands/catalog.d.ts.map +1 -0
  44. package/dist/commands/catalog.js +108 -0
  45. package/dist/commands/catalog.js.map +1 -0
  46. package/dist/commands/commands-ops.d.ts +2 -0
  47. package/dist/commands/commands-ops.d.ts.map +1 -0
  48. package/dist/commands/commands-ops.js +19 -0
  49. package/dist/commands/commands-ops.js.map +1 -0
  50. package/dist/commands/deploy-ops.d.ts +45 -3
  51. package/dist/commands/deploy-ops.d.ts.map +1 -1
  52. package/dist/commands/deploy-ops.js +200 -227
  53. package/dist/commands/deploy-ops.js.map +1 -1
  54. package/dist/commands/deploy-status-ops.d.ts +13 -0
  55. package/dist/commands/deploy-status-ops.d.ts.map +1 -0
  56. package/dist/commands/deploy-status-ops.js +252 -0
  57. package/dist/commands/deploy-status-ops.js.map +1 -0
  58. package/dist/commands/deployments-ops.d.ts +30 -0
  59. package/dist/commands/deployments-ops.d.ts.map +1 -0
  60. package/dist/commands/deployments-ops.js +248 -0
  61. package/dist/commands/deployments-ops.js.map +1 -0
  62. package/dist/commands/envs-ops.d.ts +8 -0
  63. package/dist/commands/envs-ops.d.ts.map +1 -0
  64. package/dist/commands/envs-ops.js +240 -0
  65. package/dist/commands/envs-ops.js.map +1 -0
  66. package/dist/commands/github-ops.d.ts +15 -0
  67. package/dist/commands/github-ops.d.ts.map +1 -0
  68. package/dist/commands/github-ops.js +316 -0
  69. package/dist/commands/github-ops.js.map +1 -0
  70. package/dist/commands/github-runs-ops.d.ts +32 -0
  71. package/dist/commands/github-runs-ops.d.ts.map +1 -0
  72. package/dist/commands/github-runs-ops.js +132 -0
  73. package/dist/commands/github-runs-ops.js.map +1 -0
  74. package/dist/commands/github-shared.d.ts +60 -0
  75. package/dist/commands/github-shared.d.ts.map +1 -0
  76. package/dist/commands/github-shared.js +175 -0
  77. package/dist/commands/github-shared.js.map +1 -0
  78. package/dist/commands/org-admin.d.ts.map +1 -1
  79. package/dist/commands/org-admin.js +223 -43
  80. package/dist/commands/org-admin.js.map +1 -1
  81. package/dist/commands/output.d.ts +35 -0
  82. package/dist/commands/output.d.ts.map +1 -0
  83. package/dist/commands/output.js +34 -0
  84. package/dist/commands/output.js.map +1 -0
  85. package/dist/commands/resource-shared.d.ts +132 -0
  86. package/dist/commands/resource-shared.d.ts.map +1 -0
  87. package/dist/commands/resource-shared.js +159 -0
  88. package/dist/commands/resource-shared.js.map +1 -0
  89. package/dist/commands/session.d.ts +6 -9
  90. package/dist/commands/session.d.ts.map +1 -1
  91. package/dist/commands/session.js +42 -116
  92. package/dist/commands/session.js.map +1 -1
  93. package/dist/commands/shared.d.ts.map +1 -1
  94. package/dist/commands/shared.js +3 -91
  95. package/dist/commands/shared.js.map +1 -1
  96. package/dist/commands/target-picker.d.ts +44 -0
  97. package/dist/commands/target-picker.d.ts.map +1 -0
  98. package/dist/commands/target-picker.js +88 -0
  99. package/dist/commands/target-picker.js.map +1 -0
  100. package/dist/commands/update-ops.js +1 -1
  101. package/dist/diagnostics.d.ts +5 -0
  102. package/dist/diagnostics.d.ts.map +1 -1
  103. package/dist/diagnostics.js +1 -1
  104. package/dist/diagnostics.js.map +1 -1
  105. package/dist/doctor.d.ts.map +1 -1
  106. package/dist/doctor.js +33 -0
  107. package/dist/doctor.js.map +1 -1
  108. package/dist/fire.d.ts +94 -0
  109. package/dist/fire.d.ts.map +1 -0
  110. package/dist/fire.js +418 -0
  111. package/dist/fire.js.map +1 -0
  112. package/dist/flavor.d.ts +19 -0
  113. package/dist/flavor.d.ts.map +1 -0
  114. package/dist/flavor.js +95 -0
  115. package/dist/flavor.js.map +1 -0
  116. package/dist/project.js +2 -2
  117. package/dist/prompts.d.ts.map +1 -1
  118. package/dist/prompts.js +30 -17
  119. package/dist/prompts.js.map +1 -1
  120. package/dist/relative-time.d.ts +8 -0
  121. package/dist/relative-time.d.ts.map +1 -0
  122. package/dist/relative-time.js +29 -0
  123. package/dist/relative-time.js.map +1 -0
  124. package/dist/table.d.ts +47 -0
  125. package/dist/table.d.ts.map +1 -0
  126. package/dist/table.js +152 -0
  127. package/dist/table.js.map +1 -0
  128. package/dist/update-binary.js +1 -1
  129. package/dist/update-check.d.ts +1 -1
  130. package/dist/update-check.js +1 -1
  131. package/dist/update.js +1 -1
  132. package/dist/watch.d.ts +52 -0
  133. package/dist/watch.d.ts.map +1 -0
  134. package/dist/watch.js +177 -0
  135. package/dist/watch.js.map +1 -0
  136. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.d.ts.map +1 -1
  137. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js +28 -1
  138. package/node_modules/@noodle-borg/agent-kit/dist/curated/command-groups.js.map +1 -1
  139. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  140. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +6 -0
  141. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  142. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  143. package/node_modules/@noodle-borg/authoring/dist/connectors.js +14 -0
  144. package/node_modules/@noodle-borg/authoring/dist/connectors.js.map +1 -1
  145. package/node_modules/@noodle-borg/authoring/dist/recording.js +18 -23
  146. package/node_modules/@noodle-borg/authoring/dist/recording.js.map +1 -1
  147. package/node_modules/@noodle-borg/connector-defs/dist/compile.js +9 -0
  148. package/node_modules/@noodle-borg/connector-defs/dist/compile.js.map +1 -1
  149. package/node_modules/@noodle-borg/openapi-import/dist/index.d.ts.map +1 -1
  150. package/node_modules/@noodle-borg/openapi-import/dist/index.js +3 -1
  151. package/node_modules/@noodle-borg/openapi-import/dist/index.js.map +1 -1
  152. package/node_modules/@noodle-borg/service/dist/alert-evaluator.d.ts +57 -0
  153. package/node_modules/@noodle-borg/service/dist/alert-evaluator.d.ts.map +1 -0
  154. package/node_modules/@noodle-borg/service/dist/alert-evaluator.js +158 -0
  155. package/node_modules/@noodle-borg/service/dist/alert-evaluator.js.map +1 -0
  156. package/node_modules/@noodle-borg/service/dist/alert-webhook.d.ts +72 -0
  157. package/node_modules/@noodle-borg/service/dist/alert-webhook.d.ts.map +1 -0
  158. package/node_modules/@noodle-borg/service/dist/alert-webhook.js +138 -0
  159. package/node_modules/@noodle-borg/service/dist/alert-webhook.js.map +1 -0
  160. package/node_modules/@noodle-borg/service/dist/github/app-client.d.ts +49 -0
  161. package/node_modules/@noodle-borg/service/dist/github/app-client.d.ts.map +1 -0
  162. package/node_modules/@noodle-borg/service/dist/github/app-client.js +23 -0
  163. package/node_modules/@noodle-borg/service/dist/github/app-client.js.map +1 -0
  164. package/node_modules/@noodle-borg/service/dist/github/install-nonce.d.ts +23 -0
  165. package/node_modules/@noodle-borg/service/dist/github/install-nonce.d.ts.map +1 -0
  166. package/node_modules/@noodle-borg/service/dist/github/install-nonce.js +57 -0
  167. package/node_modules/@noodle-borg/service/dist/github/install-nonce.js.map +1 -0
  168. package/node_modules/@noodle-borg/service/dist/github/pending-installations.d.ts +38 -0
  169. package/node_modules/@noodle-borg/service/dist/github/pending-installations.d.ts.map +1 -0
  170. package/node_modules/@noodle-borg/service/dist/github/pending-installations.js +41 -0
  171. package/node_modules/@noodle-borg/service/dist/github/pending-installations.js.map +1 -0
  172. package/node_modules/@noodle-borg/service/dist/index.d.ts +15 -1
  173. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  174. package/node_modules/@noodle-borg/service/dist/index.js +15 -1
  175. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  176. package/node_modules/@noodle-borg/service/dist/options.d.ts +47 -1
  177. package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
  178. package/node_modules/@noodle-borg/service/dist/registry-state.d.ts +28 -7
  179. package/node_modules/@noodle-borg/service/dist/registry-state.d.ts.map +1 -1
  180. package/node_modules/@noodle-borg/service/dist/registry-state.js +116 -3
  181. package/node_modules/@noodle-borg/service/dist/registry-state.js.map +1 -1
  182. package/node_modules/@noodle-borg/service/dist/registry.d.ts +14 -1
  183. package/node_modules/@noodle-borg/service/dist/registry.d.ts.map +1 -1
  184. package/node_modules/@noodle-borg/service/dist/registry.js +20 -45
  185. package/node_modules/@noodle-borg/service/dist/registry.js.map +1 -1
  186. package/node_modules/@noodle-borg/service/dist/routes/alerts-dispatch.d.ts +28 -0
  187. package/node_modules/@noodle-borg/service/dist/routes/alerts-dispatch.d.ts.map +1 -0
  188. package/node_modules/@noodle-borg/service/dist/routes/alerts-dispatch.js +50 -0
  189. package/node_modules/@noodle-borg/service/dist/routes/alerts-dispatch.js.map +1 -0
  190. package/node_modules/@noodle-borg/service/dist/routes/alerts.d.ts +39 -0
  191. package/node_modules/@noodle-borg/service/dist/routes/alerts.d.ts.map +1 -0
  192. package/node_modules/@noodle-borg/service/dist/routes/alerts.js +204 -0
  193. package/node_modules/@noodle-borg/service/dist/routes/alerts.js.map +1 -0
  194. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.d.ts +23 -0
  195. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.d.ts.map +1 -0
  196. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.js +53 -0
  197. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.js.map +1 -0
  198. package/node_modules/@noodle-borg/service/dist/routes/apps.d.ts +24 -0
  199. package/node_modules/@noodle-borg/service/dist/routes/apps.d.ts.map +1 -0
  200. package/node_modules/@noodle-borg/service/dist/routes/apps.js +72 -0
  201. package/node_modules/@noodle-borg/service/dist/routes/apps.js.map +1 -0
  202. package/node_modules/@noodle-borg/service/dist/routes/contracts.d.ts +465 -0
  203. package/node_modules/@noodle-borg/service/dist/routes/contracts.d.ts.map +1 -0
  204. package/node_modules/@noodle-borg/service/dist/routes/contracts.js +233 -0
  205. package/node_modules/@noodle-borg/service/dist/routes/contracts.js.map +1 -0
  206. package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts +12 -1
  207. package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts.map +1 -1
  208. package/node_modules/@noodle-borg/service/dist/routes/deployments.js +31 -2
  209. package/node_modules/@noodle-borg/service/dist/routes/deployments.js.map +1 -1
  210. package/node_modules/@noodle-borg/service/dist/routes/endpoint-enrichment.d.ts +17 -0
  211. package/node_modules/@noodle-borg/service/dist/routes/endpoint-enrichment.d.ts.map +1 -0
  212. package/node_modules/@noodle-borg/service/dist/routes/endpoint-enrichment.js +15 -0
  213. package/node_modules/@noodle-borg/service/dist/routes/endpoint-enrichment.js.map +1 -0
  214. package/node_modules/@noodle-borg/service/dist/routes/envs.d.ts +22 -0
  215. package/node_modules/@noodle-borg/service/dist/routes/envs.d.ts.map +1 -0
  216. package/node_modules/@noodle-borg/service/dist/routes/envs.js +46 -0
  217. package/node_modules/@noodle-borg/service/dist/routes/envs.js.map +1 -0
  218. package/node_modules/@noodle-borg/service/dist/routes/github-connection.d.ts +29 -0
  219. package/node_modules/@noodle-borg/service/dist/routes/github-connection.d.ts.map +1 -0
  220. package/node_modules/@noodle-borg/service/dist/routes/github-connection.js +202 -0
  221. package/node_modules/@noodle-borg/service/dist/routes/github-connection.js.map +1 -0
  222. package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.d.ts +30 -0
  223. package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.d.ts.map +1 -0
  224. package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.js +95 -0
  225. package/node_modules/@noodle-borg/service/dist/routes/github-dispatch.js.map +1 -0
  226. package/node_modules/@noodle-borg/service/dist/routes/github-runs.d.ts +8 -0
  227. package/node_modules/@noodle-borg/service/dist/routes/github-runs.d.ts.map +1 -0
  228. package/node_modules/@noodle-borg/service/dist/routes/github-runs.js +33 -0
  229. package/node_modules/@noodle-borg/service/dist/routes/github-runs.js.map +1 -0
  230. package/node_modules/@noodle-borg/service/dist/routes/github-setup.d.ts +28 -0
  231. package/node_modules/@noodle-borg/service/dist/routes/github-setup.d.ts.map +1 -0
  232. package/node_modules/@noodle-borg/service/dist/routes/github-setup.js +80 -0
  233. package/node_modules/@noodle-borg/service/dist/routes/github-setup.js.map +1 -0
  234. package/node_modules/@noodle-borg/service/dist/routes/github-webhook.d.ts +29 -0
  235. package/node_modules/@noodle-borg/service/dist/routes/github-webhook.d.ts.map +1 -0
  236. package/node_modules/@noodle-borg/service/dist/routes/github-webhook.js +355 -0
  237. package/node_modules/@noodle-borg/service/dist/routes/github-webhook.js.map +1 -0
  238. package/node_modules/@noodle-borg/service/dist/routes/org-admin-dispatch.d.ts +27 -0
  239. package/node_modules/@noodle-borg/service/dist/routes/org-admin-dispatch.d.ts.map +1 -0
  240. package/node_modules/@noodle-borg/service/dist/routes/org-admin-dispatch.js +61 -0
  241. package/node_modules/@noodle-borg/service/dist/routes/org-admin-dispatch.js.map +1 -0
  242. package/node_modules/@noodle-borg/service/dist/routes/org-admin.d.ts +5 -0
  243. package/node_modules/@noodle-borg/service/dist/routes/org-admin.d.ts.map +1 -1
  244. package/node_modules/@noodle-borg/service/dist/routes/org-admin.js +13 -1
  245. package/node_modules/@noodle-borg/service/dist/routes/org-admin.js.map +1 -1
  246. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts +64 -1
  247. package/node_modules/@noodle-borg/service/dist/routes/paths.d.ts.map +1 -1
  248. package/node_modules/@noodle-borg/service/dist/routes/paths.js +170 -1
  249. package/node_modules/@noodle-borg/service/dist/routes/paths.js.map +1 -1
  250. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.d.ts +33 -0
  251. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.d.ts.map +1 -0
  252. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.js +69 -0
  253. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.js.map +1 -0
  254. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  255. package/node_modules/@noodle-borg/service/dist/serve.js +42 -1
  256. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  257. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  258. package/node_modules/@noodle-borg/service/dist/service.js +81 -82
  259. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  260. package/node_modules/@noodle-borg/service/dist/store/alert-rules-json-file.d.ts +21 -0
  261. package/node_modules/@noodle-borg/service/dist/store/alert-rules-json-file.d.ts.map +1 -0
  262. package/node_modules/@noodle-borg/service/dist/store/alert-rules-json-file.js +115 -0
  263. package/node_modules/@noodle-borg/service/dist/store/alert-rules-json-file.js.map +1 -0
  264. package/node_modules/@noodle-borg/service/dist/store/alert-rules.d.ts +108 -0
  265. package/node_modules/@noodle-borg/service/dist/store/alert-rules.d.ts.map +1 -0
  266. package/node_modules/@noodle-borg/service/dist/store/alert-rules.js +181 -0
  267. package/node_modules/@noodle-borg/service/dist/store/alert-rules.js.map +1 -0
  268. package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts +1 -0
  269. package/node_modules/@noodle-borg/service/dist/store/control-plane.d.ts.map +1 -1
  270. package/node_modules/@noodle-borg/service/dist/store/control-plane.js +3 -0
  271. package/node_modules/@noodle-borg/service/dist/store/control-plane.js.map +1 -1
  272. package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.d.ts +24 -0
  273. package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.d.ts.map +1 -0
  274. package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.js +141 -0
  275. package/node_modules/@noodle-borg/service/dist/store/github-connections-json-file.js.map +1 -0
  276. package/node_modules/@noodle-borg/service/dist/store/github-connections.d.ts +31 -0
  277. package/node_modules/@noodle-borg/service/dist/store/github-connections.d.ts.map +1 -0
  278. package/node_modules/@noodle-borg/service/dist/store/github-connections.js +120 -0
  279. package/node_modules/@noodle-borg/service/dist/store/github-connections.js.map +1 -0
  280. package/node_modules/@noodle-borg/service/dist/store/github-runs-json-file.d.ts +22 -0
  281. package/node_modules/@noodle-borg/service/dist/store/github-runs-json-file.d.ts.map +1 -0
  282. package/node_modules/@noodle-borg/service/dist/store/github-runs-json-file.js +116 -0
  283. package/node_modules/@noodle-borg/service/dist/store/github-runs-json-file.js.map +1 -0
  284. package/node_modules/@noodle-borg/service/dist/store/github-runs.d.ts +51 -0
  285. package/node_modules/@noodle-borg/service/dist/store/github-runs.d.ts.map +1 -0
  286. package/node_modules/@noodle-borg/service/dist/store/github-runs.js +158 -0
  287. package/node_modules/@noodle-borg/service/dist/store/github-runs.js.map +1 -0
  288. package/node_modules/@noodle-borg/service/dist/store/in-memory.d.ts +32 -0
  289. package/node_modules/@noodle-borg/service/dist/store/in-memory.d.ts.map +1 -0
  290. package/node_modules/@noodle-borg/service/dist/store/in-memory.js +169 -0
  291. package/node_modules/@noodle-borg/service/dist/store/in-memory.js.map +1 -0
  292. package/node_modules/@noodle-borg/service/dist/store/json-file.d.ts +14 -1
  293. package/node_modules/@noodle-borg/service/dist/store/json-file.d.ts.map +1 -1
  294. package/node_modules/@noodle-borg/service/dist/store/json-file.js +54 -1
  295. package/node_modules/@noodle-borg/service/dist/store/json-file.js.map +1 -1
  296. package/node_modules/@noodle-borg/service/dist/store/pending-installations-postgres.d.ts +19 -0
  297. package/node_modules/@noodle-borg/service/dist/store/pending-installations-postgres.d.ts.map +1 -0
  298. package/node_modules/@noodle-borg/service/dist/store/pending-installations-postgres.js +46 -0
  299. package/node_modules/@noodle-borg/service/dist/store/pending-installations-postgres.js.map +1 -0
  300. package/node_modules/@noodle-borg/service/dist/store/postgres-alerts.d.ts +26 -0
  301. package/node_modules/@noodle-borg/service/dist/store/postgres-alerts.d.ts.map +1 -0
  302. package/node_modules/@noodle-borg/service/dist/store/postgres-alerts.js +142 -0
  303. package/node_modules/@noodle-borg/service/dist/store/postgres-alerts.js.map +1 -0
  304. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.d.ts +11 -0
  305. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.d.ts.map +1 -0
  306. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.js +31 -0
  307. package/node_modules/@noodle-borg/service/dist/store/postgres-apps.js.map +1 -0
  308. package/node_modules/@noodle-borg/service/dist/store/postgres-config.d.ts +21 -0
  309. package/node_modules/@noodle-borg/service/dist/store/postgres-config.d.ts.map +1 -0
  310. package/node_modules/@noodle-borg/service/dist/store/postgres-config.js +80 -0
  311. package/node_modules/@noodle-borg/service/dist/store/postgres-config.js.map +1 -0
  312. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.d.ts +1 -0
  313. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.d.ts.map +1 -1
  314. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.js +6 -0
  315. package/node_modules/@noodle-borg/service/dist/store/postgres-control-plane.js.map +1 -1
  316. package/node_modules/@noodle-borg/service/dist/store/postgres-envs.d.ts +7 -0
  317. package/node_modules/@noodle-borg/service/dist/store/postgres-envs.d.ts.map +1 -0
  318. package/node_modules/@noodle-borg/service/dist/store/postgres-envs.js +34 -0
  319. package/node_modules/@noodle-borg/service/dist/store/postgres-envs.js.map +1 -0
  320. package/node_modules/@noodle-borg/service/dist/store/postgres-github-runs.d.ts +9 -0
  321. package/node_modules/@noodle-borg/service/dist/store/postgres-github-runs.d.ts.map +1 -0
  322. package/node_modules/@noodle-borg/service/dist/store/postgres-github-runs.js +113 -0
  323. package/node_modules/@noodle-borg/service/dist/store/postgres-github-runs.js.map +1 -0
  324. package/node_modules/@noodle-borg/service/dist/store/postgres-github.d.ts +13 -0
  325. package/node_modules/@noodle-borg/service/dist/store/postgres-github.d.ts.map +1 -0
  326. package/node_modules/@noodle-borg/service/dist/store/postgres-github.js +130 -0
  327. package/node_modules/@noodle-borg/service/dist/store/postgres-github.js.map +1 -0
  328. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
  329. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +85 -0
  330. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
  331. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts +32 -2
  332. package/node_modules/@noodle-borg/service/dist/store/postgres.d.ts.map +1 -1
  333. package/node_modules/@noodle-borg/service/dist/store/postgres.js +72 -75
  334. package/node_modules/@noodle-borg/service/dist/store/postgres.js.map +1 -1
  335. package/node_modules/@noodle-borg/service/dist/store/records.d.ts +56 -3
  336. package/node_modules/@noodle-borg/service/dist/store/records.d.ts.map +1 -1
  337. package/node_modules/@noodle-borg/service/dist/store/records.js +158 -0
  338. package/node_modules/@noodle-borg/service/dist/store/records.js.map +1 -1
  339. package/node_modules/@noodle-borg/service/dist/store/validate.d.ts +2 -0
  340. package/node_modules/@noodle-borg/service/dist/store/validate.d.ts.map +1 -1
  341. package/node_modules/@noodle-borg/service/dist/store/validate.js +7 -0
  342. package/node_modules/@noodle-borg/service/dist/store/validate.js.map +1 -1
  343. package/node_modules/@noodle-borg/service/dist/store.d.ts +265 -17
  344. package/node_modules/@noodle-borg/service/dist/store.d.ts.map +1 -1
  345. package/node_modules/@noodle-borg/service/dist/store.js +10 -118
  346. package/node_modules/@noodle-borg/service/dist/store.js.map +1 -1
  347. package/node_modules/@noodle-borg/service/package.json +2 -1
  348. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,mBAAmB,EAEzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,KAAK,2BAA2B,EAChC,oBAAoB,EACpB,eAAe,EACf,yBAAyB,EACzB,yBAAyB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AACxE,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,wBAAwB,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACvD,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,gGAAgG;IAChG,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC;CACvC;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACvD,2FAA2F;IAC3F,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC;IAClC,yFAAyF;IACzF,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAID,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,eAAe,CAiF9F;AAqDD,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,eAAe,GAAG,MAAM,CAkBvE;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,eAAe,GAAG,MAAM,CA2BrE;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,0BAA0B,GAChC,2BAA2B,CA+F7B;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,mBAAmB,EAEzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,KAAK,2BAA2B,EAChC,oBAAoB,EACpB,eAAe,EACf,yBAAyB,EACzB,yBAAyB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AACxE,MAAM,MAAM,wBAAwB,GAAG,MAAM,GAAG,OAAO,CAAC;AAExD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,wBAAwB,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACvD,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,gGAAgG;IAChG,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC;CACvC;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACvD,2FAA2F;IAC3F,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC;IAClC,yFAAyF;IACzF,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAID,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,eAAe,CAmF9F;AAqDD,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,eAAe,GAAG,MAAM,CAkBvE;AAED,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,eAAe,GAAG,MAAM,CA2BrE;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,0BAA0B,GAChC,2BAA2B,CA+F7B;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3C"}
@@ -46,7 +46,9 @@ export function parseOpenApiToIr(source, options) {
46
46
  method: method,
47
47
  operationType: method === 'get' ? 'read' : 'action',
48
48
  path,
49
- connectorPath: path.replace(/\{([^}]+)\}/g, '${args.$1}'),
49
+ // OpenAPI's `{name}` path params are already the connector runtime's template form; rewriting
50
+ // them to `${args.name}` made catalog compilation reject the path (unsupported_path_expression).
51
+ connectorPath: path,
50
52
  description: `Call ${method.toUpperCase()} ${path}.`,
51
53
  parameters,
52
54
  hasRequestBody,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { RequestEventStore } from '@noodle-borg/module';
2
+ import { type Logger } from '@noodle-borg/transport-http';
3
+ import { type AlertWebhookDelivery, type AlertWebhookPayload } from './alert-webhook.js';
4
+ import { type RequestMetrics } from './request-event-metrics.js';
5
+ import type { AlertMetric, AlertRuleStore } from './store/alert-rules.js';
6
+ /**
7
+ * Periodic alert-rule evaluator (E2, ADR 0130), modeled on `ArchiveSweeper`: a throttled
8
+ * `maybeSweep()` (boot + a `serveService` interval timer) drives `sweepNow()`, which evaluates
9
+ * every ENABLED rule against its own window of the tenant's request-event stream using the same
10
+ * `aggregateRequestEvents` the metrics route serves — one aggregation, no duplicate math.
11
+ *
12
+ * EDGE-TRIGGERED: a rule fires on the non-breaching → breaching transition, and re-fires while
13
+ * still breaching only after `cooldownMinutes` since the last fire. Delivery is a single attempt;
14
+ * a failed delivery still stamps `lastFiredAt` so the sweep never becomes a retry loop (retries/
15
+ * backoff are an explicit E3 deferral). Firing state persists so edge-triggering survives restarts.
16
+ *
17
+ * Logging is closed-vocabulary + rule id + HTTP status only — the webhook URL is sensitive and
18
+ * never appears in any log line.
19
+ *
20
+ * Instance scope: the sweep is per-instance (in-flight-guarded and throttled locally). On a
21
+ * multi-instance deployment two instances can each fire the same breach once before the shared
22
+ * firing state persists — a duplicate notification, never lost/corrupted state. A cross-instance
23
+ * atomic fire claim is an explicit E3 deferral (ADR 0130).
24
+ */
25
+ export declare const ALERT_EVALUATION_INTERVAL_MS = 60000;
26
+ /** The observed value a rule compares against its threshold, per metric. */
27
+ export declare function observedMetricValue(metric: AlertMetric, metrics: RequestMetrics): number;
28
+ export interface AlertEvaluatorOptions {
29
+ readonly alertRules: AlertRuleStore;
30
+ readonly requestEvents: RequestEventStore;
31
+ /** Dev/test-only loopback webhook carve-out, threaded to the delivery policy. Default false. */
32
+ readonly allowLoopbackWebhooks?: boolean;
33
+ /** Injectable delivery seam for tests. Default {@link deliverAlertWebhook}. */
34
+ readonly deliver?: (url: string, payload: AlertWebhookPayload, options: {
35
+ readonly allowLoopback: boolean;
36
+ }) => Promise<AlertWebhookDelivery>;
37
+ /** Injectable clock for deterministic edge-trigger/cooldown tests. Default `new Date()`. */
38
+ readonly clock?: () => Date;
39
+ readonly logger?: Logger;
40
+ /** Throttle for {@link maybeSweep}. Default {@link ALERT_EVALUATION_INTERVAL_MS}. */
41
+ readonly intervalMs?: number;
42
+ }
43
+ export declare class AlertEvaluator {
44
+ #private;
45
+ constructor(options: AlertEvaluatorOptions);
46
+ /**
47
+ * Throttled, fire-and-forget sweep (the serve-time interval calls this): never throws, and
48
+ * never overlaps — a sweep that outlives the interval (slow store/webhook timeouts) must not
49
+ * race a second sweep into double-delivering the same breach before state persists.
50
+ */
51
+ maybeSweep(): void;
52
+ sweepNow(): Promise<{
53
+ readonly evaluated: number;
54
+ readonly fired: number;
55
+ }>;
56
+ }
57
+ //# sourceMappingURL=alert-evaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-evaluator.d.ts","sourceRoot":"","sources":["../src/alert-evaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,6BAA6B,CAAC;AACtE,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAGzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAA0B,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACzF,OAAO,KAAK,EAAE,WAAW,EAAmB,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE3F;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,4BAA4B,QAAS,CAAC;AAInD,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,CAWxF;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAC1C,gGAAgG;IAChG,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IACzC,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,CAAC,EAAE,CACjB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE;QAAE,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;KAAE,KACzC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnC,4FAA4F;IAC5F,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,qFAAqF;IACrF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,cAAc;;gBAWb,OAAO,EAAE,qBAAqB;IAY1C;;;;OAIG;IACH,UAAU,IAAI,IAAI;IAsBZ,QAAQ,IAAI,OAAO,CAAC;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAyElF"}
@@ -0,0 +1,158 @@
1
+ import { noopLogger } from '@noodle-borg/transport-http';
2
+ import { buildAlertWebhookPayload, deliverAlertWebhook, } from './alert-webhook.js';
3
+ import { aggregateRequestEvents } from './request-event-metrics.js';
4
+ /**
5
+ * Periodic alert-rule evaluator (E2, ADR 0130), modeled on `ArchiveSweeper`: a throttled
6
+ * `maybeSweep()` (boot + a `serveService` interval timer) drives `sweepNow()`, which evaluates
7
+ * every ENABLED rule against its own window of the tenant's request-event stream using the same
8
+ * `aggregateRequestEvents` the metrics route serves — one aggregation, no duplicate math.
9
+ *
10
+ * EDGE-TRIGGERED: a rule fires on the non-breaching → breaching transition, and re-fires while
11
+ * still breaching only after `cooldownMinutes` since the last fire. Delivery is a single attempt;
12
+ * a failed delivery still stamps `lastFiredAt` so the sweep never becomes a retry loop (retries/
13
+ * backoff are an explicit E3 deferral). Firing state persists so edge-triggering survives restarts.
14
+ *
15
+ * Logging is closed-vocabulary + rule id + HTTP status only — the webhook URL is sensitive and
16
+ * never appears in any log line.
17
+ *
18
+ * Instance scope: the sweep is per-instance (in-flight-guarded and throttled locally). On a
19
+ * multi-instance deployment two instances can each fire the same breach once before the shared
20
+ * firing state persists — a duplicate notification, never lost/corrupted state. A cross-instance
21
+ * atomic fire claim is an explicit E3 deferral (ADR 0130).
22
+ */
23
+ export const ALERT_EVALUATION_INTERVAL_MS = 60_000;
24
+ /** Same bounded read as the metrics route (`METRICS_SCAN_LIMIT`). */
25
+ const EVAL_SCAN_LIMIT = 50_000;
26
+ /** The observed value a rule compares against its threshold, per metric. */
27
+ export function observedMetricValue(metric, metrics) {
28
+ switch (metric) {
29
+ case 'error_share':
30
+ return metrics.errors.errorRate;
31
+ case 'error_count':
32
+ return metrics.errors.toolErrors + metrics.errors.mcpErrors;
33
+ case 'calls':
34
+ return metrics.totals.requests;
35
+ case 'p95_ms':
36
+ return metrics.latency.p95Ms;
37
+ }
38
+ }
39
+ export class AlertEvaluator {
40
+ #alertRules;
41
+ #requestEvents;
42
+ #allowLoopback;
43
+ #deliver;
44
+ #clock;
45
+ #logger;
46
+ #intervalMs;
47
+ #lastSweepStartedAt;
48
+ #sweepInFlight = false;
49
+ constructor(options) {
50
+ this.#alertRules = options.alertRules;
51
+ this.#requestEvents = options.requestEvents;
52
+ this.#allowLoopback = options.allowLoopbackWebhooks === true;
53
+ this.#deliver =
54
+ options.deliver ??
55
+ ((url, payload, deliverOptions) => deliverAlertWebhook(url, payload, deliverOptions));
56
+ this.#clock = options.clock ?? (() => new Date());
57
+ this.#logger = options.logger ?? noopLogger;
58
+ this.#intervalMs = options.intervalMs ?? ALERT_EVALUATION_INTERVAL_MS;
59
+ }
60
+ /**
61
+ * Throttled, fire-and-forget sweep (the serve-time interval calls this): never throws, and
62
+ * never overlaps — a sweep that outlives the interval (slow store/webhook timeouts) must not
63
+ * race a second sweep into double-delivering the same breach before state persists.
64
+ */
65
+ maybeSweep() {
66
+ if (this.#sweepInFlight)
67
+ return;
68
+ const now = this.#clock().getTime();
69
+ if (this.#lastSweepStartedAt !== undefined &&
70
+ now - this.#lastSweepStartedAt < this.#intervalMs) {
71
+ return;
72
+ }
73
+ this.#lastSweepStartedAt = now;
74
+ this.#sweepInFlight = true;
75
+ void this.sweepNow()
76
+ .catch((error) => {
77
+ this.#logger.warn('alert.sweep.failed', {
78
+ message: error instanceof Error ? error.message : String(error),
79
+ });
80
+ })
81
+ .finally(() => {
82
+ this.#sweepInFlight = false;
83
+ });
84
+ }
85
+ async sweepNow() {
86
+ const rules = await this.#alertRules.listEnabledAlertRules();
87
+ let fired = 0;
88
+ for (const rule of rules) {
89
+ try {
90
+ if (await this.#evaluateRule(rule))
91
+ fired += 1;
92
+ }
93
+ catch (error) {
94
+ // One bad rule (store fault, throwing delivery seam) must not starve the others. Store
95
+ // errors never carry the webhook URL; delivery outcomes are closed codes by construction.
96
+ this.#logger.warn('alert.evaluate.failed', {
97
+ ruleId: rule.id,
98
+ message: error instanceof Error ? error.name : 'unknown',
99
+ });
100
+ }
101
+ }
102
+ return { evaluated: rules.length, fired };
103
+ }
104
+ async #evaluateRule(rule) {
105
+ const now = this.#clock();
106
+ const since = new Date(now.getTime() - rule.windowMinutes * 60_000).toISOString();
107
+ const events = await this.#requestEvents.list({
108
+ org: rule.orgSlug,
109
+ app: rule.appSlug,
110
+ env: rule.environment,
111
+ since,
112
+ limit: EVAL_SCAN_LIMIT,
113
+ });
114
+ const observed = observedMetricValue(rule.metric, aggregateRequestEvents(events));
115
+ const breaching = observed >= rule.threshold;
116
+ const transition = breaching && !rule.breaching;
117
+ const cooldownElapsed = rule.lastFiredAt === undefined ||
118
+ now.getTime() - Date.parse(rule.lastFiredAt) >= rule.cooldownMinutes * 60_000;
119
+ const shouldFire = transition || (breaching && rule.breaching && cooldownElapsed);
120
+ if (shouldFire) {
121
+ const firedAt = now.toISOString();
122
+ const payload = buildAlertWebhookPayload(rule, 'breach', observed, firedAt);
123
+ const outcome = await this.#deliver(rule.webhookUrl, payload, {
124
+ allowLoopback: this.#allowLoopback,
125
+ });
126
+ if (outcome.delivered) {
127
+ this.#logger.info('alert.webhook.delivered', {
128
+ ruleId: rule.id,
129
+ status: outcome.status ?? 0,
130
+ });
131
+ }
132
+ else {
133
+ this.#logger.warn('alert.webhook.failed', {
134
+ ruleId: rule.id,
135
+ reason: outcome.reason ?? 'unknown',
136
+ ...(outcome.status !== undefined ? { status: outcome.status } : {}),
137
+ });
138
+ }
139
+ // Stamp the fire regardless of delivery outcome: a single attempt, never a retry loop (E3).
140
+ await this.#alertRules.updateAlertFiringState(rule.id, {
141
+ breaching: true,
142
+ lastObserved: observed,
143
+ lastFiredAt: firedAt,
144
+ });
145
+ return true;
146
+ }
147
+ if (breaching !== rule.breaching) {
148
+ // Recovery (or a breach the fire path above already covers): persist the edge so the next
149
+ // crossing is a fresh transition. `lastFiredAt` is preserved by omission.
150
+ await this.#alertRules.updateAlertFiringState(rule.id, {
151
+ breaching,
152
+ lastObserved: observed,
153
+ });
154
+ }
155
+ return false;
156
+ }
157
+ }
158
+ //# sourceMappingURL=alert-evaluator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-evaluator.js","sourceRoot":"","sources":["../src/alert-evaluator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { type DnsLookup } from '@noodle-borg/connector-http';
2
+ import type { AlertMetric, AlertRuleRecord } from './store/alert-rules.js';
3
+ /**
4
+ * Alert webhook delivery (E2, ADR 0130): a single POST attempt with a bounded timeout through the
5
+ * shared SSRF guard (`guardedFetch` pins DNS resolutions to public unicast addresses — the same
6
+ * anti-rebinding layer the HTTP connector uses). No retries, no backoff queue (deferred to E3).
7
+ *
8
+ * The webhook URL is SENSITIVE (it may embed capability tokens). Nothing this module returns or
9
+ * throws carries the URL, its host, or an upstream error message: outcomes are closed-vocabulary
10
+ * reason codes plus the HTTP status, safe to log verbatim.
11
+ */
12
+ export declare const ALERT_WEBHOOK_SCHEMA_VERSION = 1;
13
+ export interface AlertWebhookPayload {
14
+ readonly schemaVersion: typeof ALERT_WEBHOOK_SCHEMA_VERSION;
15
+ readonly event: 'breach' | 'test';
16
+ readonly org: string;
17
+ readonly app: string;
18
+ readonly env: string;
19
+ readonly rule: {
20
+ readonly id: string;
21
+ readonly name?: string;
22
+ readonly metric: AlertMetric;
23
+ readonly threshold: number;
24
+ readonly windowMinutes: number;
25
+ readonly comparison: '>=';
26
+ };
27
+ readonly observed: number;
28
+ readonly firedAt: string;
29
+ }
30
+ export declare function buildAlertWebhookPayload(rule: AlertRuleRecord, event: 'breach' | 'test', observed: number, firedAt: string): AlertWebhookPayload;
31
+ /** Closed-vocabulary outcome — safe to log and to return to callers (never carries the URL). */
32
+ export interface AlertWebhookDelivery {
33
+ readonly delivered: boolean;
34
+ readonly status?: number;
35
+ readonly reason?: 'invalid_url' | 'egress_blocked' | 'timeout' | 'network_error' | 'http_error';
36
+ }
37
+ export interface WebhookUrlPolicy {
38
+ /**
39
+ * Development/test-only carve-out: allow `http://localhost`, `http://127.0.0.1`, and `[::1]`
40
+ * targets (mirrors `customerVerifierAllowInsecureLocalhost`). Off in production: webhooks are
41
+ * https-only and literal private/reserved IPs are rejected outright.
42
+ */
43
+ readonly allowLoopback: boolean;
44
+ }
45
+ export type WebhookUrlValidation = {
46
+ ok: true;
47
+ url: URL;
48
+ } | {
49
+ ok: false;
50
+ error: string;
51
+ };
52
+ /**
53
+ * Policy validation for a webhook URL, applied at rule create/test time AND re-applied on every
54
+ * delivery (defense in depth for stored rules). Error messages are generic policy text — they
55
+ * never echo the URL, host, or credentials back.
56
+ */
57
+ export declare function validateAlertWebhookUrl(raw: string, policy: WebhookUrlPolicy): WebhookUrlValidation;
58
+ export interface DeliverAlertWebhookOptions {
59
+ readonly allowLoopback?: boolean;
60
+ /** Whole-attempt bound. Default 10s. */
61
+ readonly timeoutMs?: number;
62
+ /** Injectable DNS resolver for SSRF tests (threaded into the guarded agent). */
63
+ readonly lookup?: DnsLookup;
64
+ }
65
+ /**
66
+ * Single-attempt webhook POST. Loopback targets (dev carve-out) use the plain platform fetch —
67
+ * the pinned lookup would reject loopback resolutions by design; everything else goes through
68
+ * {@link guardedFetch}. Redirects are not followed (a redirect could re-point the request at an
69
+ * unguarded literal-IP target); a 3xx reports as an ordinary non-2xx outcome.
70
+ */
71
+ export declare function deliverAlertWebhook(rawUrl: string, payload: AlertWebhookPayload, options?: DeliverAlertWebhookOptions): Promise<AlertWebhookDelivery>;
72
+ //# sourceMappingURL=alert-webhook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-webhook.d.ts","sourceRoot":"","sources":["../src/alert-webhook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAiC,MAAM,6BAA6B,CAAC;AAC5F,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE3E;;;;;;;;GAQG;AAEH,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAI9C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,aAAa,EAAE,OAAO,4BAA4B,CAAC;IAC5D,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;QAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,QAAQ,GAAG,MAAM,EACxB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,mBAAmB,CAkBrB;AAED,gGAAgG;AAChG,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,gBAAgB,GAAG,SAAS,GAAG,eAAe,GAAG,YAAY,CAAC;CACjG;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,MAAM,oBAAoB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzF;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,gBAAgB,GACvB,oBAAoB,CAmCtB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,wCAAwC;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,gFAAgF;IAChF,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,mBAAmB,EAC5B,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,oBAAoB,CAAC,CAkC/B"}
@@ -0,0 +1,138 @@
1
+ import { isIP } from 'node:net';
2
+ import { guardedFetch, isPublicUnicast } from '@noodle-borg/connector-http';
3
+ /**
4
+ * Alert webhook delivery (E2, ADR 0130): a single POST attempt with a bounded timeout through the
5
+ * shared SSRF guard (`guardedFetch` pins DNS resolutions to public unicast addresses — the same
6
+ * anti-rebinding layer the HTTP connector uses). No retries, no backoff queue (deferred to E3).
7
+ *
8
+ * The webhook URL is SENSITIVE (it may embed capability tokens). Nothing this module returns or
9
+ * throws carries the URL, its host, or an upstream error message: outcomes are closed-vocabulary
10
+ * reason codes plus the HTTP status, safe to log verbatim.
11
+ */
12
+ export const ALERT_WEBHOOK_SCHEMA_VERSION = 1;
13
+ const DEFAULT_TIMEOUT_MS = 10_000;
14
+ const LOOPBACK_HOSTS = new Set(['localhost', '127.0.0.1', '::1']);
15
+ export function buildAlertWebhookPayload(rule, event, observed, firedAt) {
16
+ return {
17
+ schemaVersion: ALERT_WEBHOOK_SCHEMA_VERSION,
18
+ event,
19
+ org: rule.orgSlug,
20
+ app: rule.appSlug,
21
+ env: rule.environment,
22
+ rule: {
23
+ id: rule.id,
24
+ ...(rule.name !== undefined ? { name: rule.name } : {}),
25
+ metric: rule.metric,
26
+ threshold: rule.threshold,
27
+ windowMinutes: rule.windowMinutes,
28
+ comparison: rule.comparison,
29
+ },
30
+ observed,
31
+ firedAt,
32
+ };
33
+ }
34
+ /**
35
+ * Policy validation for a webhook URL, applied at rule create/test time AND re-applied on every
36
+ * delivery (defense in depth for stored rules). Error messages are generic policy text — they
37
+ * never echo the URL, host, or credentials back.
38
+ */
39
+ export function validateAlertWebhookUrl(raw, policy) {
40
+ let url;
41
+ try {
42
+ url = new URL(raw);
43
+ }
44
+ catch {
45
+ return { ok: false, error: '"webhookUrl" must be a valid absolute URL' };
46
+ }
47
+ if (url.username !== '' || url.password !== '') {
48
+ return { ok: false, error: '"webhookUrl" must not embed credentials' };
49
+ }
50
+ const host = url.hostname.replace(/^\[|\]$/g, '');
51
+ const loopback = LOOPBACK_HOSTS.has(host);
52
+ if (url.protocol === 'http:') {
53
+ if (loopback && policy.allowLoopback)
54
+ return { ok: true, url };
55
+ return {
56
+ ok: false,
57
+ error: '"webhookUrl" must use https (plain http is allowed only for loopback targets outside production)',
58
+ };
59
+ }
60
+ if (url.protocol !== 'https:') {
61
+ return { ok: false, error: '"webhookUrl" must use https' };
62
+ }
63
+ if (loopback) {
64
+ return policy.allowLoopback
65
+ ? { ok: true, url }
66
+ : { ok: false, error: '"webhookUrl" must not target a loopback address' };
67
+ }
68
+ // Literal IPs carry no DNS step for the delivery-time guard to pin, so they are policy-checked
69
+ // here: only public unicast addresses are accepted (blocks 10/8, 172.16/12, 192.168/16,
70
+ // link-local incl. the cloud metadata address, and other reserved ranges).
71
+ if (isIP(host) !== 0 && !isPublicUnicast(host)) {
72
+ return { ok: false, error: '"webhookUrl" must not target a private or reserved IP address' };
73
+ }
74
+ return { ok: true, url };
75
+ }
76
+ /**
77
+ * Single-attempt webhook POST. Loopback targets (dev carve-out) use the plain platform fetch —
78
+ * the pinned lookup would reject loopback resolutions by design; everything else goes through
79
+ * {@link guardedFetch}. Redirects are not followed (a redirect could re-point the request at an
80
+ * unguarded literal-IP target); a 3xx reports as an ordinary non-2xx outcome.
81
+ */
82
+ export async function deliverAlertWebhook(rawUrl, payload, options = {}) {
83
+ const validated = validateAlertWebhookUrl(rawUrl, {
84
+ allowLoopback: options.allowLoopback === true,
85
+ });
86
+ if (!validated.ok)
87
+ return { delivered: false, reason: 'invalid_url' };
88
+ const init = {
89
+ method: 'POST',
90
+ headers: {
91
+ 'content-type': 'application/json; charset=utf-8',
92
+ 'user-agent': 'noodleseed-alerts/1',
93
+ },
94
+ body: JSON.stringify(payload),
95
+ redirect: 'manual',
96
+ signal: AbortSignal.timeout(options.timeoutMs ?? DEFAULT_TIMEOUT_MS),
97
+ };
98
+ const host = validated.url.hostname.replace(/^\[|\]$/g, '');
99
+ try {
100
+ const response = LOOPBACK_HOSTS.has(host)
101
+ ? await fetch(validated.url, init)
102
+ : await guardedFetch(validated.url, init, {
103
+ ...(options.timeoutMs !== undefined ? { connectTimeoutMs: options.timeoutMs } : {}),
104
+ ...(options.lookup !== undefined ? { lookup: options.lookup } : {}),
105
+ });
106
+ // Drain/cancel the body — the response content is untrusted and unbounded; only the status matters.
107
+ try {
108
+ await response.body?.cancel();
109
+ }
110
+ catch {
111
+ // ignore: some bodies are already consumed/closed
112
+ }
113
+ if (response.ok)
114
+ return { delivered: true, status: response.status };
115
+ return { delivered: false, status: response.status, reason: 'http_error' };
116
+ }
117
+ catch (error) {
118
+ return { delivered: false, reason: classifyDeliveryError(error) };
119
+ }
120
+ }
121
+ /** Map a fetch failure to a closed reason code — upstream messages may embed the URL/host. */
122
+ function classifyDeliveryError(error) {
123
+ if (error instanceof Error) {
124
+ if (error.name === 'TimeoutError' || error.name === 'AbortError')
125
+ return 'timeout';
126
+ if (error.message.startsWith('egress blocked:'))
127
+ return 'egress_blocked';
128
+ const cause = error.cause;
129
+ if (cause instanceof Error && cause.message.startsWith('egress blocked:')) {
130
+ return 'egress_blocked';
131
+ }
132
+ if (cause instanceof Error && (cause.name === 'TimeoutError' || cause.name === 'AbortError')) {
133
+ return 'timeout';
134
+ }
135
+ }
136
+ return 'network_error';
137
+ }
138
+ //# sourceMappingURL=alert-webhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-webhook.js","sourceRoot":"","sources":["../src/alert-webhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAkB,YAAY,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAG5F;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAC9C,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;AAoBlE,MAAM,UAAU,wBAAwB,CACtC,IAAqB,EACrB,KAAwB,EACxB,QAAgB,EAChB,OAAe;IAEf,OAAO;QACL,aAAa,EAAE,4BAA4B;QAC3C,KAAK;QACL,GAAG,EAAE,IAAI,CAAC,OAAO;QACjB,GAAG,EAAE,IAAI,CAAC,OAAO;QACjB,GAAG,EAAE,IAAI,CAAC,WAAW;QACrB,IAAI,EAAE;YACJ,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B;QACD,QAAQ;QACR,OAAO;KACR,CAAC;AACJ,CAAC;AAoBD;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,GAAW,EACX,MAAwB;IAExB,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC;IAC3E,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QAC/C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,yCAAyC,EAAE,CAAC;IACzE,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC7B,IAAI,QAAQ,IAAI,MAAM,CAAC,aAAa;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAC/D,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EACH,kGAAkG;SACrG,CAAC;IACJ,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;IAC7D,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,MAAM,CAAC,aAAa;YACzB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;YACnB,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC;IAC9E,CAAC;IACD,+FAA+F;IAC/F,wFAAwF;IACxF,2EAA2E;IAC3E,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,+DAA+D,EAAE,CAAC;IAC/F,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAC3B,CAAC;AAUD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAc,EACd,OAA4B,EAC5B,UAAsC,EAAE;IAExC,MAAM,SAAS,GAAG,uBAAuB,CAAC,MAAM,EAAE;QAChD,aAAa,EAAE,OAAO,CAAC,aAAa,KAAK,IAAI;KAC9C,CAAC,CAAC;IACH,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACtE,MAAM,IAAI,GAAgB;QACxB,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,iCAAiC;YACjD,YAAY,EAAE,qBAAqB;SACpC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAC7B,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC;KACrE,CAAC;IACF,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;YACvC,CAAC,CAAC,MAAM,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC;YAClC,CAAC,CAAC,MAAM,YAAY,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE;gBACtC,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnF,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpE,CAAC,CAAC;QACP,oGAAoG;QACpG,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,kDAAkD;QACpD,CAAC;QACD,IAAI,QAAQ,CAAC,EAAE;YAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAC7E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC;IACpE,CAAC;AACH,CAAC;AAED,8FAA8F;AAC9F,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY;YAAE,OAAO,SAAS,CAAC;QACnF,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC;YAAE,OAAO,gBAAgB,CAAC;QACzE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC1E,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QACD,IAAI,KAAK,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,EAAE,CAAC;YAC7F,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * The GitHub App integration seam for GHD-1 (repository connection). This phase ships routes and
3
+ * persistence only — no live GitHub call is made anywhere in this slice. `GitHubAppClient` is the
4
+ * narrow port the connection routes depend on; a later slice implements it against the real GitHub App
5
+ * (JWT-signed app auth → installation access tokens → REST calls) once the private key / webhook secret
6
+ * are wired from the credential broker. Tests and local/dev use {@link InMemoryGitHubAppClient}.
7
+ */
8
+ /** Non-secret GitHub App identity, threaded through `ServiceOptions.githubApp`. Never a token/key value. */
9
+ export interface GithubAppConfig {
10
+ readonly appId: string;
11
+ readonly appSlug: string;
12
+ /** PEM-encoded App private key. Read from the credential broker/secret manager, never logged or stored. */
13
+ readonly privateKeyPem?: string;
14
+ /** Webhook signing secret. Doubles as the default install-nonce signing secret (see `install-nonce.ts`). */
15
+ readonly webhookSecret?: string;
16
+ }
17
+ export interface GithubInstallationSummary {
18
+ readonly id: number;
19
+ readonly accountLogin: string;
20
+ }
21
+ export interface GithubInstallationRepository {
22
+ readonly id: number;
23
+ readonly fullName: string;
24
+ readonly owner: string;
25
+ readonly name: string;
26
+ readonly defaultBranch: string;
27
+ readonly private: boolean;
28
+ }
29
+ /**
30
+ * The exactly-what-phase-1-needs GitHub App port: look up one installation, and list the repositories it
31
+ * covers. Both operations back the connection POST (verify installation/repo match) and the
32
+ * installation-claim route (let the caller pick a repo). No write operations here — connecting/disconnecting
33
+ * only ever writes to the {@link GithubConnectionStore}, never to GitHub.
34
+ */
35
+ export interface GitHubAppClient {
36
+ getInstallation(installationId: number): Promise<GithubInstallationSummary | undefined>;
37
+ listInstallationRepositories(installationId: number): Promise<readonly GithubInstallationRepository[]>;
38
+ }
39
+ /** Constructor-seeded fake for tests and local/dev — no network, no JWT, no live GitHub App required. */
40
+ export declare class InMemoryGitHubAppClient implements GitHubAppClient {
41
+ #private;
42
+ constructor(seed: {
43
+ readonly installations: readonly GithubInstallationSummary[];
44
+ readonly repositoriesByInstallation: Readonly<Record<number, readonly GithubInstallationRepository[]>>;
45
+ });
46
+ getInstallation(installationId: number): Promise<GithubInstallationSummary | undefined>;
47
+ listInstallationRepositories(installationId: number): Promise<readonly GithubInstallationRepository[]>;
48
+ }
49
+ //# sourceMappingURL=app-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-client.d.ts","sourceRoot":"","sources":["../../src/github/app-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,4GAA4G;AAC5G,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,2GAA2G;IAC3G,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,4GAA4G;IAC5G,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC,CAAC;IACxF,4BAA4B,CAC1B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,SAAS,4BAA4B,EAAE,CAAC,CAAC;CACrD;AAED,yGAAyG;AACzG,qBAAa,uBAAwB,YAAW,eAAe;;gBAOjD,IAAI,EAAE;QAChB,QAAQ,CAAC,aAAa,EAAE,SAAS,yBAAyB,EAAE,CAAC;QAC7D,QAAQ,CAAC,0BAA0B,EAAE,QAAQ,CAC3C,MAAM,CAAC,MAAM,EAAE,SAAS,4BAA4B,EAAE,CAAC,CACxD,CAAC;KACH;IASD,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAIvF,4BAA4B,CAC1B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,SAAS,4BAA4B,EAAE,CAAC;CAGpD"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The GitHub App integration seam for GHD-1 (repository connection). This phase ships routes and
3
+ * persistence only — no live GitHub call is made anywhere in this slice. `GitHubAppClient` is the
4
+ * narrow port the connection routes depend on; a later slice implements it against the real GitHub App
5
+ * (JWT-signed app auth → installation access tokens → REST calls) once the private key / webhook secret
6
+ * are wired from the credential broker. Tests and local/dev use {@link InMemoryGitHubAppClient}.
7
+ */
8
+ /** Constructor-seeded fake for tests and local/dev — no network, no JWT, no live GitHub App required. */
9
+ export class InMemoryGitHubAppClient {
10
+ #installations;
11
+ #repositoriesByInstallation;
12
+ constructor(seed) {
13
+ this.#installations = new Map(seed.installations.map((installation) => [installation.id, installation]));
14
+ this.#repositoriesByInstallation = new Map(Object.entries(seed.repositoriesByInstallation).map(([id, repos]) => [Number(id), repos]));
15
+ }
16
+ getInstallation(installationId) {
17
+ return Promise.resolve(this.#installations.get(installationId));
18
+ }
19
+ listInstallationRepositories(installationId) {
20
+ return Promise.resolve(this.#repositoriesByInstallation.get(installationId) ?? []);
21
+ }
22
+ }
23
+ //# sourceMappingURL=app-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-client.js","sourceRoot":"","sources":["../../src/github/app-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAuCH,yGAAyG;AACzG,MAAM,OAAO,uBAAuB;IACzB,cAAc,CAAiD;IAC/D,2BAA2B,CAGlC;IAEF,YAAY,IAKX;QACC,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,CAC3B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,CAC1E,CAAC;QACF,IAAI,CAAC,2BAA2B,GAAG,IAAI,GAAG,CACxC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAC1F,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,cAAsB;QACpC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,4BAA4B,CAC1B,cAAsB;QAEtB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;IACrF,CAAC;CACF"}