@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
@@ -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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"}
@@ -0,0 +1,181 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { validateSlug } from './validate.js';
3
+ /**
4
+ * Analytics alert rules (E2, [ADR 0130](../../../../docs/decisions/0130-analytics-alerting-rules-and-webhook-channel.md)):
5
+ * a rule is data scoped to org/app/env, evaluated periodically against the tenant's request-event
6
+ * aggregations, edge-triggered (fire on the non-breaching → breaching transition; re-fire while
7
+ * breaching only after the cooldown). The MVP channel is a webhook URL.
8
+ *
9
+ * `webhookUrl` is SENSITIVE — hosted webhook endpoints routinely embed capability tokens in the
10
+ * path/query. It exists only inside the store and the delivery path; routes serialize rules through
11
+ * a redacting view and no log line, error message, or audit detail may ever carry it.
12
+ */
13
+ export const ALERT_METRICS = ['error_share', 'error_count', 'calls', 'p95_ms'];
14
+ export const ALERT_WINDOWS_MINUTES = [5, 15, 60];
15
+ export const DEFAULT_ALERT_COOLDOWN_MINUTES = 15;
16
+ /** Cheap abuse bound: an env's owner cannot turn the evaluator into a webhook flood. */
17
+ export const MAX_ALERT_RULES_PER_ENV = 20;
18
+ const MAX_ALERT_NAME_LENGTH = 100;
19
+ const MAX_WEBHOOK_URL_LENGTH = 2048;
20
+ const MAX_COOLDOWN_MINUTES = 24 * 60;
21
+ /** Rule ids are always service-minted UUIDs; enforcing the shape everywhere also makes ids safe filename components. */
22
+ const ALERT_RULE_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
23
+ export function validateAlertRuleId(id) {
24
+ if (!ALERT_RULE_ID_PATTERN.test(id))
25
+ throw new Error('invalid alert rule id');
26
+ return id;
27
+ }
28
+ /** True when the segment is shaped like a service-minted rule id (path parsing, non-throwing). */
29
+ export function isAlertRuleId(id) {
30
+ return ALERT_RULE_ID_PATTERN.test(id);
31
+ }
32
+ /**
33
+ * Shared shape validation for rule creation, used by every backend. Applies defaults. Policy
34
+ * validation of the webhook URL (https-only, loopback carve-out, private-IP rejection) is the
35
+ * route's job (`validateAlertWebhookUrl`); the store only rejects structurally broken values.
36
+ */
37
+ export function validateCreateAlertRuleInput(input) {
38
+ const orgSlug = validateSlug('org', input.orgSlug);
39
+ const appSlug = validateSlug('app', input.appSlug);
40
+ const environment = validateSlug('env', input.environment);
41
+ if (!ALERT_METRICS.includes(input.metric)) {
42
+ throw new Error(`invalid alert metric; expected one of ${ALERT_METRICS.join(', ')}`);
43
+ }
44
+ if (typeof input.threshold !== 'number' ||
45
+ !Number.isFinite(input.threshold) ||
46
+ input.threshold < 0) {
47
+ throw new Error('invalid alert threshold; expected a finite number >= 0');
48
+ }
49
+ if (!ALERT_WINDOWS_MINUTES.includes(input.windowMinutes)) {
50
+ throw new Error(`invalid alert window; expected one of ${ALERT_WINDOWS_MINUTES.join(', ')} minutes`);
51
+ }
52
+ const cooldownMinutes = input.cooldownMinutes ?? DEFAULT_ALERT_COOLDOWN_MINUTES;
53
+ if (!Number.isInteger(cooldownMinutes) ||
54
+ cooldownMinutes < 1 ||
55
+ cooldownMinutes > MAX_COOLDOWN_MINUTES) {
56
+ throw new Error(`invalid alert cooldown; expected an integer from 1 to ${MAX_COOLDOWN_MINUTES} minutes`);
57
+ }
58
+ if (input.name !== undefined) {
59
+ if (typeof input.name !== 'string' ||
60
+ input.name.length === 0 ||
61
+ input.name.length > MAX_ALERT_NAME_LENGTH) {
62
+ throw new Error(`invalid alert name; expected 1-${MAX_ALERT_NAME_LENGTH} characters`);
63
+ }
64
+ }
65
+ if (typeof input.webhookUrl !== 'string' ||
66
+ input.webhookUrl.length === 0 ||
67
+ input.webhookUrl.length > MAX_WEBHOOK_URL_LENGTH ||
68
+ !isHttpUrl(input.webhookUrl)) {
69
+ throw new Error('invalid webhookUrl; expected an http(s) URL');
70
+ }
71
+ return {
72
+ ...input,
73
+ orgSlug,
74
+ appSlug,
75
+ environment,
76
+ enabled: input.enabled ?? true,
77
+ cooldownMinutes,
78
+ };
79
+ }
80
+ function isHttpUrl(raw) {
81
+ try {
82
+ const url = new URL(raw);
83
+ return url.protocol === 'https:' || url.protocol === 'http:';
84
+ }
85
+ catch {
86
+ return false;
87
+ }
88
+ }
89
+ /** Build the durable record from a validated input (shared by the in-memory and JSON-file backends). */
90
+ export function newAlertRuleRecord(input, now) {
91
+ const safe = validateCreateAlertRuleInput(input);
92
+ const nowIso = now().toISOString();
93
+ return {
94
+ id: randomUUID(),
95
+ orgSlug: safe.orgSlug,
96
+ appSlug: safe.appSlug,
97
+ environment: safe.environment,
98
+ ...(safe.name !== undefined ? { name: safe.name } : {}),
99
+ metric: safe.metric,
100
+ threshold: safe.threshold,
101
+ windowMinutes: safe.windowMinutes,
102
+ comparison: '>=',
103
+ webhookUrl: safe.webhookUrl,
104
+ enabled: safe.enabled,
105
+ cooldownMinutes: safe.cooldownMinutes,
106
+ ...(safe.createdBySubject !== undefined ? { createdBySubject: safe.createdBySubject } : {}),
107
+ createdAt: nowIso,
108
+ updatedAt: nowIso,
109
+ breaching: false,
110
+ };
111
+ }
112
+ /** Apply a firing-state update, preserving `lastFiredAt` when the update does not carry one. */
113
+ export function withFiringState(record, state) {
114
+ const lastFiredAt = state.lastFiredAt ?? record.lastFiredAt;
115
+ return {
116
+ ...record,
117
+ breaching: state.breaching,
118
+ lastObserved: state.lastObserved,
119
+ ...(lastFiredAt !== undefined ? { lastFiredAt } : {}),
120
+ };
121
+ }
122
+ /** Stable list order across backends: `createdAt`, then `id` (matches the Postgres `ORDER BY`). */
123
+ export function compareAlertRules(a, b) {
124
+ return a.createdAt.localeCompare(b.createdAt) || a.id.localeCompare(b.id);
125
+ }
126
+ function matchesTenant(record, ref) {
127
+ return record.orgSlug === ref.org && record.appSlug === ref.app && record.environment === ref.env;
128
+ }
129
+ function validateTenantRefSlugs(ref) {
130
+ return {
131
+ org: validateSlug('org', ref.org),
132
+ app: validateSlug('app', ref.app),
133
+ env: validateSlug('env', ref.env),
134
+ };
135
+ }
136
+ /** In-memory {@link AlertRuleStore}: the tests/dev default; mirrors `InMemoryGithubConnectionStore`. */
137
+ export class InMemoryAlertRuleStore {
138
+ #records = new Map();
139
+ #now;
140
+ constructor(options = {}) {
141
+ this.#now = options.now ?? (() => new Date());
142
+ }
143
+ // Methods are async so validation failures surface as rejections (matching the file/Postgres
144
+ // backends), never synchronous throws out of a Promise-returning signature.
145
+ async createAlertRule(input) {
146
+ const record = newAlertRuleRecord(input, this.#now);
147
+ this.#records.set(record.id, record);
148
+ return record;
149
+ }
150
+ async listAlertRules(ref) {
151
+ const safe = validateTenantRefSlugs(ref);
152
+ return [...this.#records.values()]
153
+ .filter((record) => matchesTenant(record, safe))
154
+ .sort(compareAlertRules);
155
+ }
156
+ async getAlertRule(ref, id) {
157
+ const safe = validateTenantRefSlugs(ref);
158
+ const record = this.#records.get(validateAlertRuleId(id));
159
+ return record !== undefined && matchesTenant(record, safe) ? record : undefined;
160
+ }
161
+ async deleteAlertRule(ref, id) {
162
+ const safe = validateTenantRefSlugs(ref);
163
+ const record = this.#records.get(validateAlertRuleId(id));
164
+ if (record === undefined || !matchesTenant(record, safe))
165
+ return false;
166
+ this.#records.delete(record.id);
167
+ return true;
168
+ }
169
+ async listEnabledAlertRules() {
170
+ return [...this.#records.values()].filter((record) => record.enabled);
171
+ }
172
+ async updateAlertFiringState(id, state) {
173
+ const record = this.#records.get(validateAlertRuleId(id));
174
+ if (record === undefined)
175
+ return undefined;
176
+ const updated = withFiringState(record, state);
177
+ this.#records.set(record.id, updated);
178
+ return updated;
179
+ }
180
+ }
181
+ //# sourceMappingURL=alert-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-rules.js","sourceRoot":"","sources":["../../src/store/alert-rules.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export declare class InMemoryControlPlaneStore implements ControlPlaneStore {
12
12
  slug: string;
13
13
  displayName: string;
14
14
  }): Promise<OrgRecord | undefined>;
15
+ getOrg(org: string): Promise<OrgRecord | undefined>;
15
16
  listOrgs(): Promise<readonly OrgRecord[]>;
16
17
  listOrgsForSubject(subject: string): Promise<readonly OrgRecord[]>;
17
18
  addOrgMember(input: {
@@ -1 +1 @@
1
- {"version":3,"file":"control-plane.d.ts","sourceRoot":"","sources":["../../src/store/control-plane.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"control-plane.d.ts","sourceRoot":"","sources":["../../src/store/control-plane.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,9 @@ export class InMemoryControlPlaneStore {
32
32
  this.#orgs.set(slug, updated);
33
33
  return Promise.resolve(updated);
34
34
  }
35
+ getOrg(org) {
36
+ return Promise.resolve(this.#orgs.get(validateSlug('org', org)));
37
+ }
35
38
  listOrgs() {
36
39
  return Promise.resolve([...this.#orgs.values()].sort((a, b) => a.slug.localeCompare(b.slug)));
37
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"control-plane.js","sourceRoot":"","sources":["../../src/store/control-plane.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"control-plane.js","sourceRoot":"","sources":["../../src/store/control-plane.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { GithubConnectionStore, RepoConnectionRecord, UpsertRepoConnectionInput, UpsertRepoConnectionResult } from '../store.js';
2
+ /**
3
+ * JSON-file {@link GithubConnectionStore}: one file per repo at
4
+ * `<dataDir>/github-connections/<githubRepositoryId>.json`, written atomically (temp file + `rename`,
5
+ * matching `JsonFileArtifactStore`). `githubRepositoryId` is a GitHub-minted integer, so it is always a
6
+ * safe filename component.
7
+ */
8
+ export declare class JsonFileGithubConnectionStore implements GithubConnectionStore {
9
+ #private;
10
+ constructor(dataDir: string, options?: {
11
+ now?: () => Date;
12
+ });
13
+ upsertRepoConnection(input: UpsertRepoConnectionInput): Promise<UpsertRepoConnectionResult>;
14
+ getRepoConnection(org: string, app: string): Promise<RepoConnectionRecord | undefined>;
15
+ getRepoConnectionByRepository(githubRepositoryId: number): Promise<RepoConnectionRecord | undefined>;
16
+ listRepoConnectionsByInstallation(installationId: number): Promise<readonly RepoConnectionRecord[]>;
17
+ disableRepoConnection(org: string, app: string): Promise<boolean>;
18
+ refreshRepoMetadata(githubRepositoryId: number, updates: {
19
+ readonly ownerLogin?: string;
20
+ readonly repoName?: string;
21
+ readonly defaultBranch?: string;
22
+ }): Promise<RepoConnectionRecord | undefined>;
23
+ }
24
+ //# sourceMappingURL=github-connections-json-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-connections-json-file.d.ts","sourceRoot":"","sources":["../../src/store/github-connections-json-file.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,aAAa,CAAC;AAIrB;;;;;GAKG;AACH,qBAAa,6BAA8B,YAAW,qBAAqB;;gBAW7D,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;KAAO;IAc/D,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IA6BrF,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAQtF,6BAA6B,CACjC,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAMtC,iCAAiC,CACrC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC;IAO3C,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAajE,mBAAmB,CACjB,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE;QACP,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;KACjC,GACA,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;CAsD7C"}
@@ -0,0 +1,141 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { mkdir, readdir, readFile, rename, writeFile } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ import { findUpsertConflict, validateUpsertInput } from './github-connections.js';
5
+ import { validatePositiveInteger, validateSlug } from './validate.js';
6
+ /**
7
+ * JSON-file {@link GithubConnectionStore}: one file per repo at
8
+ * `<dataDir>/github-connections/<githubRepositoryId>.json`, written atomically (temp file + `rename`,
9
+ * matching `JsonFileArtifactStore`). `githubRepositoryId` is a GitHub-minted integer, so it is always a
10
+ * safe filename component.
11
+ */
12
+ export class JsonFileGithubConnectionStore {
13
+ #dir;
14
+ #now;
15
+ /**
16
+ * Serializes every read-check-write mutation. Without it two concurrent `upsertRepoConnection`
17
+ * calls could both read the old file set, both pass `findUpsertConflict`, and write two enabled
18
+ * connections for the same org/app — the json-file analogue of the table lock `postgres-github.ts`
19
+ * takes for the same reason.
20
+ */
21
+ #mutationQueue = Promise.resolve();
22
+ constructor(dataDir, options = {}) {
23
+ this.#dir = join(dataDir, 'github-connections');
24
+ this.#now = options.now ?? (() => new Date());
25
+ }
26
+ #withMutation(operation) {
27
+ const run = this.#mutationQueue.then(operation, operation);
28
+ this.#mutationQueue = run.then(() => undefined, () => undefined);
29
+ return run;
30
+ }
31
+ upsertRepoConnection(input) {
32
+ return this.#withMutation(async () => {
33
+ const safe = validateUpsertInput(input);
34
+ const records = await this.#loadAll();
35
+ const conflict = findUpsertConflict(records, safe);
36
+ if (conflict !== undefined)
37
+ return { ok: false, error: conflict };
38
+ const nowIso = this.#now().toISOString();
39
+ const existing = records.find((record) => record.githubRepositoryId === safe.githubRepositoryId);
40
+ const record = {
41
+ githubRepositoryId: safe.githubRepositoryId,
42
+ installationId: safe.installationId,
43
+ ownerLogin: safe.ownerLogin,
44
+ repoName: safe.repoName,
45
+ defaultBranch: safe.defaultBranch,
46
+ ...(safe.repoRoot !== undefined ? { repoRoot: safe.repoRoot } : {}),
47
+ orgSlug: safe.orgSlug,
48
+ appSlug: safe.appSlug,
49
+ enabled: true,
50
+ createdBySubject: safe.createdBySubject,
51
+ createdAt: existing?.createdAt ?? nowIso,
52
+ updatedAt: nowIso,
53
+ };
54
+ await this.#writeRecord(record);
55
+ return { ok: true, record };
56
+ });
57
+ }
58
+ async getRepoConnection(org, app) {
59
+ const safeOrg = validateSlug('org', org);
60
+ const safeApp = validateSlug('app', app);
61
+ return (await this.#loadAll()).find((record) => record.enabled && record.orgSlug === safeOrg && record.appSlug === safeApp);
62
+ }
63
+ async getRepoConnectionByRepository(githubRepositoryId) {
64
+ const id = validatePositiveInteger('githubRepositoryId', githubRepositoryId);
65
+ const record = await this.#readRecord(id);
66
+ return record?.enabled ? record : undefined;
67
+ }
68
+ async listRepoConnectionsByInstallation(installationId) {
69
+ const id = validatePositiveInteger('installationId', installationId);
70
+ return (await this.#loadAll()).filter((record) => record.enabled && record.installationId === id);
71
+ }
72
+ disableRepoConnection(org, app) {
73
+ return this.#withMutation(async () => {
74
+ const safeOrg = validateSlug('org', org);
75
+ const safeApp = validateSlug('app', app);
76
+ const found = (await this.#loadAll()).find((record) => record.enabled && record.orgSlug === safeOrg && record.appSlug === safeApp);
77
+ if (found === undefined)
78
+ return false;
79
+ await this.#writeRecord({ ...found, enabled: false, updatedAt: this.#now().toISOString() });
80
+ return true;
81
+ });
82
+ }
83
+ refreshRepoMetadata(githubRepositoryId, updates) {
84
+ return this.#withMutation(async () => {
85
+ const id = validatePositiveInteger('githubRepositoryId', githubRepositoryId);
86
+ const existing = await this.#readRecord(id);
87
+ if (existing === undefined)
88
+ return undefined;
89
+ const updated = {
90
+ ...existing,
91
+ ...(updates.ownerLogin !== undefined ? { ownerLogin: updates.ownerLogin } : {}),
92
+ ...(updates.repoName !== undefined ? { repoName: updates.repoName } : {}),
93
+ ...(updates.defaultBranch !== undefined ? { defaultBranch: updates.defaultBranch } : {}),
94
+ updatedAt: this.#now().toISOString(),
95
+ };
96
+ await this.#writeRecord(updated);
97
+ return updated;
98
+ });
99
+ }
100
+ async #readRecord(githubRepositoryId) {
101
+ try {
102
+ const text = await readFile(join(this.#dir, `${githubRepositoryId}.json`), 'utf8');
103
+ return JSON.parse(text);
104
+ }
105
+ catch {
106
+ return undefined;
107
+ }
108
+ }
109
+ async #loadAll() {
110
+ let names;
111
+ try {
112
+ names = await readdir(this.#dir);
113
+ }
114
+ catch (error) {
115
+ if (error.code === 'ENOENT')
116
+ return [];
117
+ throw error;
118
+ }
119
+ const records = [];
120
+ for (const name of names) {
121
+ if (!name.endsWith('.json'))
122
+ continue; // skip in-flight *.tmp files
123
+ try {
124
+ const text = await readFile(join(this.#dir, name), 'utf8');
125
+ records.push(JSON.parse(text));
126
+ }
127
+ catch {
128
+ // Fail-soft: a corrupt/unreadable record must not crash the caller — skip it.
129
+ }
130
+ }
131
+ return records;
132
+ }
133
+ async #writeRecord(record) {
134
+ await mkdir(this.#dir, { recursive: true });
135
+ const target = join(this.#dir, `${record.githubRepositoryId}.json`);
136
+ const tmp = `${target}.${randomUUID()}.tmp`;
137
+ await writeFile(tmp, `${JSON.stringify(record, null, 2)}\n`, 'utf8');
138
+ await rename(tmp, target);
139
+ }
140
+ }
141
+ //# sourceMappingURL=github-connections-json-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-connections-json-file.js","sourceRoot":"","sources":["../../src/store/github-connections-json-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { GithubConnectionStore, RepoConnectionConflict, RepoConnectionRecord, UpsertRepoConnectionInput, UpsertRepoConnectionResult } from '../store.js';
2
+ /**
3
+ * In-memory {@link GithubConnectionStore}: keeps one record per `githubRepositoryId` in a Map (the
4
+ * durable key — see the interface doc in `../store.ts`). Used by tests and as the non-persistent
5
+ * default; mirrors `InMemoryArtifactStore`.
6
+ */
7
+ export declare class InMemoryGithubConnectionStore implements GithubConnectionStore {
8
+ #private;
9
+ constructor(options?: {
10
+ now?: () => Date;
11
+ });
12
+ upsertRepoConnection(input: UpsertRepoConnectionInput): Promise<UpsertRepoConnectionResult>;
13
+ getRepoConnection(org: string, app: string): Promise<RepoConnectionRecord | undefined>;
14
+ getRepoConnectionByRepository(githubRepositoryId: number): Promise<RepoConnectionRecord | undefined>;
15
+ listRepoConnectionsByInstallation(installationId: number): Promise<readonly RepoConnectionRecord[]>;
16
+ disableRepoConnection(org: string, app: string): Promise<boolean>;
17
+ refreshRepoMetadata(githubRepositoryId: number, updates: {
18
+ readonly ownerLogin?: string;
19
+ readonly repoName?: string;
20
+ readonly defaultBranch?: string;
21
+ }): Promise<RepoConnectionRecord | undefined>;
22
+ }
23
+ /** Shared validation for the upsert input, reused by the json-file backend. */
24
+ export declare function validateUpsertInput(input: UpsertRepoConnectionInput): UpsertRepoConnectionInput;
25
+ /**
26
+ * Shared conflict-detection over an already-loaded record set, reused by the json-file backend (which
27
+ * cannot do a single SQL transaction the way Postgres does, but can still check in-process before
28
+ * writing). Both uniqueness rules from the interface doc; a DISABLED row never blocks either direction.
29
+ */
30
+ export declare function findUpsertConflict(records: readonly RepoConnectionRecord[], input: UpsertRepoConnectionInput): RepoConnectionConflict | undefined;
31
+ //# sourceMappingURL=github-connections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-connections.d.ts","sourceRoot":"","sources":["../../src/store/github-connections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,aAAa,CAAC;AAGrB;;;;GAIG;AACH,qBAAa,6BAA8B,YAAW,qBAAqB;;gBAI7D,OAAO,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;KAAO;IAI9C,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAwB3F,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAUtF,6BAA6B,CAC3B,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAM5C,iCAAiC,CAC/B,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC;IAS3C,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAejE,mBAAmB,CACjB,kBAAkB,EAAE,MAAM,EAC1B,OAAO,EAAE;QACP,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;KACjC,GACA,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;CAc7C;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,yBAAyB,GAAG,yBAAyB,CAY/F;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,oBAAoB,EAAE,EACxC,KAAK,EAAE,yBAAyB,GAC/B,sBAAsB,GAAG,SAAS,CAyBpC"}