@noodleseed/one 0.58.0 → 0.60.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 (530) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +72 -7
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/alerts-ops.d.ts +2 -1
  5. package/dist/commands/alerts-ops.d.ts.map +1 -1
  6. package/dist/commands/alerts-ops.js.map +1 -1
  7. package/dist/commands/analytics-ops.d.ts +4 -3
  8. package/dist/commands/analytics-ops.d.ts.map +1 -1
  9. package/dist/commands/analytics-ops.js.map +1 -1
  10. package/dist/commands/apps-ops.d.ts +5 -4
  11. package/dist/commands/apps-ops.d.ts.map +1 -1
  12. package/dist/commands/apps-ops.js.map +1 -1
  13. package/dist/commands/archive-ops.d.ts +3 -2
  14. package/dist/commands/archive-ops.d.ts.map +1 -1
  15. package/dist/commands/archive-ops.js.map +1 -1
  16. package/dist/commands/assistant-embed-ops.d.ts +9 -1
  17. package/dist/commands/assistant-embed-ops.d.ts.map +1 -1
  18. package/dist/commands/assistant-embed-ops.js.map +1 -1
  19. package/dist/commands/assistant-ops.d.ts +2 -1
  20. package/dist/commands/assistant-ops.d.ts.map +1 -1
  21. package/dist/commands/assistant-ops.js +3 -2
  22. package/dist/commands/assistant-ops.js.map +1 -1
  23. package/dist/commands/audit-ops.d.ts +2 -1
  24. package/dist/commands/audit-ops.d.ts.map +1 -1
  25. package/dist/commands/audit-ops.js.map +1 -1
  26. package/dist/commands/auth-ops.d.ts +2 -1
  27. package/dist/commands/auth-ops.d.ts.map +1 -1
  28. package/dist/commands/auth-ops.js.map +1 -1
  29. package/dist/commands/author-loop.d.ts +4 -3
  30. package/dist/commands/author-loop.d.ts.map +1 -1
  31. package/dist/commands/author-loop.js.map +1 -1
  32. package/dist/commands/billing-apply-ops.d.ts +2 -1
  33. package/dist/commands/billing-apply-ops.d.ts.map +1 -1
  34. package/dist/commands/billing-apply-ops.js.map +1 -1
  35. package/dist/commands/billing-enforcement-activation-ops.d.ts +2 -1
  36. package/dist/commands/billing-enforcement-activation-ops.d.ts.map +1 -1
  37. package/dist/commands/billing-enforcement-activation-ops.js.map +1 -1
  38. package/dist/commands/billing-enforcement-ops.d.ts +2 -1
  39. package/dist/commands/billing-enforcement-ops.d.ts.map +1 -1
  40. package/dist/commands/billing-enforcement-ops.js.map +1 -1
  41. package/dist/commands/billing-metering-ops.d.ts +2 -1
  42. package/dist/commands/billing-metering-ops.d.ts.map +1 -1
  43. package/dist/commands/billing-metering-ops.js.map +1 -1
  44. package/dist/commands/billing-metering-validation-ops.d.ts +2 -1
  45. package/dist/commands/billing-metering-validation-ops.d.ts.map +1 -1
  46. package/dist/commands/billing-metering-validation-ops.js.map +1 -1
  47. package/dist/commands/billing-ops.d.ts +2 -1
  48. package/dist/commands/billing-ops.d.ts.map +1 -1
  49. package/dist/commands/billing-ops.js.map +1 -1
  50. package/dist/commands/billing-read-ops.d.ts +3 -2
  51. package/dist/commands/billing-read-ops.d.ts.map +1 -1
  52. package/dist/commands/billing-read-ops.js.map +1 -1
  53. package/dist/commands/billing-stripe-ops.d.ts +2 -1
  54. package/dist/commands/billing-stripe-ops.d.ts.map +1 -1
  55. package/dist/commands/billing-stripe-ops.js +1 -0
  56. package/dist/commands/billing-stripe-ops.js.map +1 -1
  57. package/dist/commands/config-values.d.ts +2 -1
  58. package/dist/commands/config-values.d.ts.map +1 -1
  59. package/dist/commands/config-values.js.map +1 -1
  60. package/dist/commands/deploy-github-hint.d.ts +6 -0
  61. package/dist/commands/deploy-github-hint.d.ts.map +1 -0
  62. package/dist/commands/deploy-github-hint.js +53 -0
  63. package/dist/commands/deploy-github-hint.js.map +1 -0
  64. package/dist/commands/deploy-ops.d.ts +5 -7
  65. package/dist/commands/deploy-ops.d.ts.map +1 -1
  66. package/dist/commands/deploy-ops.js +14 -54
  67. package/dist/commands/deploy-ops.js.map +1 -1
  68. package/dist/commands/deploy-status-ops.d.ts +5 -3
  69. package/dist/commands/deploy-status-ops.d.ts.map +1 -1
  70. package/dist/commands/deploy-status-ops.js +9 -1
  71. package/dist/commands/deploy-status-ops.js.map +1 -1
  72. package/dist/commands/deploy-target.d.ts +2 -1
  73. package/dist/commands/deploy-target.d.ts.map +1 -1
  74. package/dist/commands/deploy-target.js.map +1 -1
  75. package/dist/commands/deployments-ops.d.ts +5 -4
  76. package/dist/commands/deployments-ops.d.ts.map +1 -1
  77. package/dist/commands/deployments-ops.js.map +1 -1
  78. package/dist/commands/devtools.d.ts +2 -1
  79. package/dist/commands/devtools.d.ts.map +1 -1
  80. package/dist/commands/devtools.js.map +1 -1
  81. package/dist/commands/diagnostics-ops.d.ts +3 -2
  82. package/dist/commands/diagnostics-ops.d.ts.map +1 -1
  83. package/dist/commands/diagnostics-ops.js.map +1 -1
  84. package/dist/commands/envs-ops.d.ts +4 -3
  85. package/dist/commands/envs-ops.d.ts.map +1 -1
  86. package/dist/commands/envs-ops.js.map +1 -1
  87. package/dist/commands/feedback-ops.d.ts +2 -1
  88. package/dist/commands/feedback-ops.d.ts.map +1 -1
  89. package/dist/commands/feedback-ops.js.map +1 -1
  90. package/dist/commands/github-ops.d.ts +5 -4
  91. package/dist/commands/github-ops.d.ts.map +1 -1
  92. package/dist/commands/github-ops.js.map +1 -1
  93. package/dist/commands/github-runs-ops.d.ts +2 -1
  94. package/dist/commands/github-runs-ops.d.ts.map +1 -1
  95. package/dist/commands/github-runs-ops.js.map +1 -1
  96. package/dist/commands/github-shared.d.ts +2 -1
  97. package/dist/commands/github-shared.d.ts.map +1 -1
  98. package/dist/commands/github-shared.js.map +1 -1
  99. package/dist/commands/logs-ops.d.ts +2 -1
  100. package/dist/commands/logs-ops.d.ts.map +1 -1
  101. package/dist/commands/logs-ops.js.map +1 -1
  102. package/dist/commands/org-admin.d.ts +3 -2
  103. package/dist/commands/org-admin.d.ts.map +1 -1
  104. package/dist/commands/org-admin.js.map +1 -1
  105. package/dist/commands/org-openai-challenge.d.ts +2 -1
  106. package/dist/commands/org-openai-challenge.d.ts.map +1 -1
  107. package/dist/commands/org-openai-challenge.js.map +1 -1
  108. package/dist/commands/policy-ops.d.ts +2 -1
  109. package/dist/commands/policy-ops.d.ts.map +1 -1
  110. package/dist/commands/policy-ops.js.map +1 -1
  111. package/dist/commands/resource-shared.d.ts +2 -1
  112. package/dist/commands/resource-shared.d.ts.map +1 -1
  113. package/dist/commands/resource-shared.js.map +1 -1
  114. package/dist/commands/service-ops.d.ts +2 -1
  115. package/dist/commands/service-ops.d.ts.map +1 -1
  116. package/dist/commands/service-ops.js.map +1 -1
  117. package/dist/commands/session.d.ts +12 -4
  118. package/dist/commands/session.d.ts.map +1 -1
  119. package/dist/commands/session.js +40 -9
  120. package/dist/commands/session.js.map +1 -1
  121. package/dist/commands/shared.d.ts +2 -1
  122. package/dist/commands/shared.d.ts.map +1 -1
  123. package/dist/commands/shared.js.map +1 -1
  124. package/dist/config.d.ts +17 -8
  125. package/dist/config.d.ts.map +1 -1
  126. package/dist/config.js +2 -2
  127. package/dist/config.js.map +1 -1
  128. package/dist/control-plane.d.ts +10 -3
  129. package/dist/control-plane.d.ts.map +1 -1
  130. package/dist/control-plane.js +38 -2
  131. package/dist/control-plane.js.map +1 -1
  132. package/dist/doctor.d.ts +2 -1
  133. package/dist/doctor.d.ts.map +1 -1
  134. package/dist/doctor.js.map +1 -1
  135. package/dist/first-run-entry.d.ts +2 -1
  136. package/dist/first-run-entry.d.ts.map +1 -1
  137. package/dist/first-run-entry.js.map +1 -1
  138. package/dist/first-run.d.ts +2 -1
  139. package/dist/first-run.d.ts.map +1 -1
  140. package/dist/first-run.js.map +1 -1
  141. package/dist/index.d.ts +4 -1
  142. package/dist/index.d.ts.map +1 -1
  143. package/dist/index.js +3 -0
  144. package/dist/index.js.map +1 -1
  145. package/dist/local-target.d.ts +2 -1
  146. package/dist/local-target.d.ts.map +1 -1
  147. package/dist/local-target.js.map +1 -1
  148. package/dist/plugin-mode/build-readiness-contract.d.ts +36 -0
  149. package/dist/plugin-mode/build-readiness-contract.d.ts.map +1 -0
  150. package/dist/plugin-mode/build-readiness-contract.js +107 -0
  151. package/dist/plugin-mode/build-readiness-contract.js.map +1 -0
  152. package/dist/plugin-mode/build-readiness-fingerprint.d.ts +7 -0
  153. package/dist/plugin-mode/build-readiness-fingerprint.d.ts.map +1 -0
  154. package/dist/plugin-mode/build-readiness-fingerprint.js +83 -0
  155. package/dist/plugin-mode/build-readiness-fingerprint.js.map +1 -0
  156. package/dist/plugin-mode/build-readiness-recorder.d.ts +15 -0
  157. package/dist/plugin-mode/build-readiness-recorder.d.ts.map +1 -0
  158. package/dist/plugin-mode/build-readiness-recorder.js +150 -0
  159. package/dist/plugin-mode/build-readiness-recorder.js.map +1 -0
  160. package/dist/plugin-mode/build-readiness-server.d.ts +22 -0
  161. package/dist/plugin-mode/build-readiness-server.d.ts.map +1 -0
  162. package/dist/plugin-mode/build-readiness-server.js +322 -0
  163. package/dist/plugin-mode/build-readiness-server.js.map +1 -0
  164. package/dist/plugin-mode/build-readiness-store.d.ts +16 -0
  165. package/dist/plugin-mode/build-readiness-store.d.ts.map +1 -0
  166. package/dist/plugin-mode/build-readiness-store.js +198 -0
  167. package/dist/plugin-mode/build-readiness-store.js.map +1 -0
  168. package/dist/plugin-mode/build-readiness-tools.d.ts +47 -0
  169. package/dist/plugin-mode/build-readiness-tools.d.ts.map +1 -0
  170. package/dist/plugin-mode/build-readiness-tools.js +159 -0
  171. package/dist/plugin-mode/build-readiness-tools.js.map +1 -0
  172. package/dist/plugin-mode/build-readiness-widget.css.d.ts +2 -0
  173. package/dist/plugin-mode/build-readiness-widget.css.d.ts.map +1 -0
  174. package/dist/plugin-mode/build-readiness-widget.css.js +217 -0
  175. package/dist/plugin-mode/build-readiness-widget.css.js.map +1 -0
  176. package/dist/plugin-mode/build-readiness-widget.d.ts +28 -0
  177. package/dist/plugin-mode/build-readiness-widget.d.ts.map +1 -0
  178. package/dist/plugin-mode/build-readiness-widget.js +60 -0
  179. package/dist/plugin-mode/build-readiness-widget.js.map +1 -0
  180. package/dist/plugin-mode/compatibility.d.ts +22 -0
  181. package/dist/plugin-mode/compatibility.d.ts.map +1 -0
  182. package/dist/plugin-mode/compatibility.js +59 -0
  183. package/dist/plugin-mode/compatibility.js.map +1 -0
  184. package/dist/plugin-mode/plugin-mcp-bootstrap.d.ts +13 -0
  185. package/dist/plugin-mode/plugin-mcp-bootstrap.d.ts.map +1 -0
  186. package/dist/plugin-mode/plugin-mcp-bootstrap.js +90 -0
  187. package/dist/plugin-mode/plugin-mcp-bootstrap.js.map +1 -0
  188. package/dist/plugin-mode/profile.d.ts +16 -0
  189. package/dist/plugin-mode/profile.d.ts.map +1 -0
  190. package/dist/plugin-mode/profile.js +66 -0
  191. package/dist/plugin-mode/profile.js.map +1 -0
  192. package/dist/plugin-mode/service-compatibility.d.ts +15 -0
  193. package/dist/plugin-mode/service-compatibility.d.ts.map +1 -0
  194. package/dist/plugin-mode/service-compatibility.js +57 -0
  195. package/dist/plugin-mode/service-compatibility.js.map +1 -0
  196. package/dist/update-check.d.ts +2 -16
  197. package/dist/update-check.d.ts.map +1 -1
  198. package/dist/update-check.js.map +1 -1
  199. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +1 -1
  200. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
  201. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts +1 -1
  202. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.d.ts.map +1 -1
  203. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js +1 -1
  204. package/node_modules/@noodle-borg/agent-kit/dist/generated/surface.js.map +1 -1
  205. package/node_modules/@noodle-borg/agent-kit/dist/index.d.ts +3 -0
  206. package/node_modules/@noodle-borg/agent-kit/dist/index.d.ts.map +1 -1
  207. package/node_modules/@noodle-borg/agent-kit/dist/index.js +3 -0
  208. package/node_modules/@noodle-borg/agent-kit/dist/index.js.map +1 -1
  209. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.d.ts +5 -0
  210. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.d.ts.map +1 -1
  211. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js +106 -28
  212. package/node_modules/@noodle-borg/agent-kit/dist/plugin-bundle.js.map +1 -1
  213. package/node_modules/@noodle-borg/agent-kit/dist/plugin-compatibility.d.ts +22 -0
  214. package/node_modules/@noodle-borg/agent-kit/dist/plugin-compatibility.d.ts.map +1 -0
  215. package/node_modules/@noodle-borg/agent-kit/dist/plugin-compatibility.js +100 -0
  216. package/node_modules/@noodle-borg/agent-kit/dist/plugin-compatibility.js.map +1 -0
  217. package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.d.ts +8 -0
  218. package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.d.ts.map +1 -0
  219. package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.js +55 -0
  220. package/node_modules/@noodle-borg/agent-kit/dist/plugin-launcher.js.map +1 -0
  221. package/node_modules/@noodle-borg/agent-kit/dist/plugin-manifests.d.ts +27 -0
  222. package/node_modules/@noodle-borg/agent-kit/dist/plugin-manifests.d.ts.map +1 -0
  223. package/node_modules/@noodle-borg/agent-kit/dist/plugin-manifests.js +108 -0
  224. package/node_modules/@noodle-borg/agent-kit/dist/plugin-manifests.js.map +1 -0
  225. package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.d.ts +9 -0
  226. package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.d.ts.map +1 -0
  227. package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.js +121 -0
  228. package/node_modules/@noodle-borg/agent-kit/dist/plugin-marketplace-docs.js.map +1 -0
  229. package/node_modules/@noodle-borg/agent-kit/dist/plugin-submission.d.ts +130 -0
  230. package/node_modules/@noodle-borg/agent-kit/dist/plugin-submission.d.ts.map +1 -0
  231. package/node_modules/@noodle-borg/agent-kit/dist/plugin-submission.js +220 -0
  232. package/node_modules/@noodle-borg/agent-kit/dist/plugin-submission.js.map +1 -0
  233. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.d.ts.map +1 -1
  234. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js +2 -0
  235. package/node_modules/@noodle-borg/agent-kit/dist/skill-content.js.map +1 -1
  236. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.d.ts.map +1 -1
  237. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js +5 -0
  238. package/node_modules/@noodle-borg/agent-kit/dist/skill-operations-refs.js.map +1 -1
  239. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  240. package/node_modules/@noodle-borg/auth/dist/jwt-issuer.d.ts +4 -0
  241. package/node_modules/@noodle-borg/auth/dist/jwt-issuer.d.ts.map +1 -1
  242. package/node_modules/@noodle-borg/auth/dist/jwt-issuer.js +2 -0
  243. package/node_modules/@noodle-borg/auth/dist/jwt-issuer.js.map +1 -1
  244. package/node_modules/@noodle-borg/auth/dist/verify.d.ts +4 -0
  245. package/node_modules/@noodle-borg/auth/dist/verify.d.ts.map +1 -1
  246. package/node_modules/@noodle-borg/auth/dist/verify.js +10 -0
  247. package/node_modules/@noodle-borg/auth/dist/verify.js.map +1 -1
  248. package/node_modules/@noodle-borg/developer-mcp/dist/capabilities.d.ts +9 -0
  249. package/node_modules/@noodle-borg/developer-mcp/dist/capabilities.d.ts.map +1 -0
  250. package/node_modules/@noodle-borg/developer-mcp/dist/capabilities.js +41 -0
  251. package/node_modules/@noodle-borg/developer-mcp/dist/capabilities.js.map +1 -0
  252. package/node_modules/@noodle-borg/developer-mcp/dist/contracts.d.ts +637 -0
  253. package/node_modules/@noodle-borg/developer-mcp/dist/contracts.d.ts.map +1 -0
  254. package/node_modules/@noodle-borg/developer-mcp/dist/contracts.js +364 -0
  255. package/node_modules/@noodle-borg/developer-mcp/dist/contracts.js.map +1 -0
  256. package/node_modules/@noodle-borg/developer-mcp/dist/diagnosis.d.ts +79 -0
  257. package/node_modules/@noodle-borg/developer-mcp/dist/diagnosis.d.ts.map +1 -0
  258. package/node_modules/@noodle-borg/developer-mcp/dist/diagnosis.js +138 -0
  259. package/node_modules/@noodle-borg/developer-mcp/dist/diagnosis.js.map +1 -0
  260. package/node_modules/@noodle-borg/developer-mcp/dist/index.d.ts +12 -0
  261. package/node_modules/@noodle-borg/developer-mcp/dist/index.d.ts.map +1 -0
  262. package/node_modules/@noodle-borg/developer-mcp/dist/index.js +12 -0
  263. package/node_modules/@noodle-borg/developer-mcp/dist/index.js.map +1 -0
  264. package/node_modules/@noodle-borg/developer-mcp/dist/port.d.ts +16 -0
  265. package/node_modules/@noodle-borg/developer-mcp/dist/port.d.ts.map +1 -0
  266. package/node_modules/@noodle-borg/developer-mcp/dist/port.js +9 -0
  267. package/node_modules/@noodle-borg/developer-mcp/dist/port.js.map +1 -0
  268. package/node_modules/@noodle-borg/developer-mcp/dist/prompts.d.ts +16 -0
  269. package/node_modules/@noodle-borg/developer-mcp/dist/prompts.d.ts.map +1 -0
  270. package/node_modules/@noodle-borg/developer-mcp/dist/prompts.js +51 -0
  271. package/node_modules/@noodle-borg/developer-mcp/dist/prompts.js.map +1 -0
  272. package/node_modules/@noodle-borg/developer-mcp/dist/resources.d.ts +13 -0
  273. package/node_modules/@noodle-borg/developer-mcp/dist/resources.d.ts.map +1 -0
  274. package/node_modules/@noodle-borg/developer-mcp/dist/resources.js +90 -0
  275. package/node_modules/@noodle-borg/developer-mcp/dist/resources.js.map +1 -0
  276. package/node_modules/@noodle-borg/developer-mcp/dist/results.d.ts +31 -0
  277. package/node_modules/@noodle-borg/developer-mcp/dist/results.d.ts.map +1 -0
  278. package/node_modules/@noodle-borg/developer-mcp/dist/results.js +80 -0
  279. package/node_modules/@noodle-borg/developer-mcp/dist/results.js.map +1 -0
  280. package/node_modules/@noodle-borg/developer-mcp/dist/server.d.ts +19 -0
  281. package/node_modules/@noodle-borg/developer-mcp/dist/server.d.ts.map +1 -0
  282. package/node_modules/@noodle-borg/developer-mcp/dist/server.js +79 -0
  283. package/node_modules/@noodle-borg/developer-mcp/dist/server.js.map +1 -0
  284. package/node_modules/@noodle-borg/developer-mcp/dist/tools/apps.d.ts +43 -0
  285. package/node_modules/@noodle-borg/developer-mcp/dist/tools/apps.d.ts.map +1 -0
  286. package/node_modules/@noodle-borg/developer-mcp/dist/tools/apps.js +77 -0
  287. package/node_modules/@noodle-borg/developer-mcp/dist/tools/apps.js.map +1 -0
  288. package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.d.ts +4 -0
  289. package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.d.ts.map +1 -0
  290. package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.js +21 -0
  291. package/node_modules/@noodle-borg/developer-mcp/dist/tools/context.js.map +1 -0
  292. package/node_modules/@noodle-borg/developer-mcp/dist/tools/deployments.d.ts +61 -0
  293. package/node_modules/@noodle-borg/developer-mcp/dist/tools/deployments.d.ts.map +1 -0
  294. package/node_modules/@noodle-borg/developer-mcp/dist/tools/deployments.js +37 -0
  295. package/node_modules/@noodle-borg/developer-mcp/dist/tools/deployments.js.map +1 -0
  296. package/node_modules/@noodle-borg/developer-mcp/dist/tools/diagnose.d.ts +29 -0
  297. package/node_modules/@noodle-borg/developer-mcp/dist/tools/diagnose.d.ts.map +1 -0
  298. package/node_modules/@noodle-borg/developer-mcp/dist/tools/diagnose.js +83 -0
  299. package/node_modules/@noodle-borg/developer-mcp/dist/tools/diagnose.js.map +1 -0
  300. package/node_modules/@noodle-borg/developer-mcp/dist/tools/index.d.ts +7 -0
  301. package/node_modules/@noodle-borg/developer-mcp/dist/tools/index.d.ts.map +1 -0
  302. package/node_modules/@noodle-borg/developer-mcp/dist/tools/index.js +7 -0
  303. package/node_modules/@noodle-borg/developer-mcp/dist/tools/index.js.map +1 -0
  304. package/node_modules/@noodle-borg/developer-mcp/dist/tools/operations.d.ts +138 -0
  305. package/node_modules/@noodle-borg/developer-mcp/dist/tools/operations.d.ts.map +1 -0
  306. package/node_modules/@noodle-borg/developer-mcp/dist/tools/operations.js +99 -0
  307. package/node_modules/@noodle-borg/developer-mcp/dist/tools/operations.js.map +1 -0
  308. package/node_modules/@noodle-borg/developer-mcp/dist/tools/rollback.d.ts +24 -0
  309. package/node_modules/@noodle-borg/developer-mcp/dist/tools/rollback.d.ts.map +1 -0
  310. package/node_modules/@noodle-borg/developer-mcp/dist/tools/rollback.js +59 -0
  311. package/node_modules/@noodle-borg/developer-mcp/dist/tools/rollback.js.map +1 -0
  312. package/node_modules/@noodle-borg/developer-mcp/dist/widget-links.d.ts +16 -0
  313. package/node_modules/@noodle-borg/developer-mcp/dist/widget-links.d.ts.map +1 -0
  314. package/node_modules/@noodle-borg/developer-mcp/dist/widget-links.js +20 -0
  315. package/node_modules/@noodle-borg/developer-mcp/dist/widget-links.js.map +1 -0
  316. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/analytics.d.ts +2 -0
  317. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/analytics.d.ts.map +1 -0
  318. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/analytics.js +6 -0
  319. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/analytics.js.map +1 -0
  320. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/app-overview.d.ts +2 -0
  321. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/app-overview.d.ts.map +1 -0
  322. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/app-overview.js +6 -0
  323. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/app-overview.js.map +1 -0
  324. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/deployment-detail.d.ts +2 -0
  325. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/deployment-detail.d.ts.map +1 -0
  326. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/deployment-detail.js +7 -0
  327. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/deployment-detail.js.map +1 -0
  328. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/operations.d.ts +2 -0
  329. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/operations.d.ts.map +1 -0
  330. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/operations.js +6 -0
  331. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/operations.js.map +1 -0
  332. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/resources.d.ts +37 -0
  333. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/resources.d.ts.map +1 -0
  334. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/resources.js +76 -0
  335. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/resources.js.map +1 -0
  336. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/shared.d.ts +30 -0
  337. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/shared.d.ts.map +1 -0
  338. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/shared.js +23 -0
  339. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/shared.js.map +1 -0
  340. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/styles.d.ts +2 -0
  341. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/styles.d.ts.map +1 -0
  342. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/styles.js +153 -0
  343. package/node_modules/@noodle-borg/developer-mcp/dist/widgets/styles.js.map +1 -0
  344. package/node_modules/@noodle-borg/developer-mcp/package.json +37 -0
  345. package/node_modules/@noodle-borg/module/dist/contract.d.ts +4 -0
  346. package/node_modules/@noodle-borg/module/dist/contract.d.ts.map +1 -1
  347. package/node_modules/@noodle-borg/module/dist/contract.js.map +1 -1
  348. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts +7 -1
  349. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.d.ts.map +1 -1
  350. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js +17 -5
  351. package/node_modules/@noodle-borg/service/dist/auth/deploy-gate.js.map +1 -1
  352. package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.d.ts +16 -0
  353. package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.d.ts.map +1 -0
  354. package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.js +40 -0
  355. package/node_modules/@noodle-borg/service/dist/auth/developer-grant-guard.js.map +1 -0
  356. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-checkouts.d.ts +7 -0
  357. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-checkouts.d.ts.map +1 -0
  358. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-checkouts.js +247 -0
  359. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-checkouts.js.map +1 -0
  360. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-schema.d.ts.map +1 -1
  361. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-schema.js +14 -0
  362. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-schema.js.map +1 -1
  363. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-store.d.ts +4 -4
  364. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-store.d.ts.map +1 -1
  365. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-store.js +10 -99
  366. package/node_modules/@noodle-borg/service/dist/billing/postgres-stripe-store.js.map +1 -1
  367. package/node_modules/@noodle-borg/service/dist/billing/stripe-contract.d.ts +6 -0
  368. package/node_modules/@noodle-borg/service/dist/billing/stripe-contract.d.ts.map +1 -1
  369. package/node_modules/@noodle-borg/service/dist/billing/stripe-contract.js +1 -0
  370. package/node_modules/@noodle-borg/service/dist/billing/stripe-contract.js.map +1 -1
  371. package/node_modules/@noodle-borg/service/dist/billing/stripe-provider.d.ts +3 -0
  372. package/node_modules/@noodle-borg/service/dist/billing/stripe-provider.d.ts.map +1 -1
  373. package/node_modules/@noodle-borg/service/dist/billing/stripe-provider.js +27 -0
  374. package/node_modules/@noodle-borg/service/dist/billing/stripe-provider.js.map +1 -1
  375. package/node_modules/@noodle-borg/service/dist/billing/stripe-service.d.ts +5 -4
  376. package/node_modules/@noodle-borg/service/dist/billing/stripe-service.d.ts.map +1 -1
  377. package/node_modules/@noodle-borg/service/dist/billing/stripe-service.js +112 -43
  378. package/node_modules/@noodle-borg/service/dist/billing/stripe-service.js.map +1 -1
  379. package/node_modules/@noodle-borg/service/dist/billing/stripe-store.d.ts +35 -5
  380. package/node_modules/@noodle-borg/service/dist/billing/stripe-store.d.ts.map +1 -1
  381. package/node_modules/@noodle-borg/service/dist/billing/stripe-store.js +8 -1
  382. package/node_modules/@noodle-borg/service/dist/billing/stripe-store.js.map +1 -1
  383. package/node_modules/@noodle-borg/service/dist/build-info.d.ts +1 -0
  384. package/node_modules/@noodle-borg/service/dist/build-info.d.ts.map +1 -1
  385. package/node_modules/@noodle-borg/service/dist/build-info.js +11 -0
  386. package/node_modules/@noodle-borg/service/dist/build-info.js.map +1 -1
  387. package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.d.ts +30 -0
  388. package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.d.ts.map +1 -0
  389. package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.js +311 -0
  390. package/node_modules/@noodle-borg/service/dist/developer-mcp/control-plane-adapter.js.map +1 -0
  391. package/node_modules/@noodle-borg/service/dist/developer-mcp/inspection.d.ts +69 -0
  392. package/node_modules/@noodle-borg/service/dist/developer-mcp/inspection.d.ts.map +1 -0
  393. package/node_modules/@noodle-borg/service/dist/developer-mcp/inspection.js +118 -0
  394. package/node_modules/@noodle-borg/service/dist/developer-mcp/inspection.js.map +1 -0
  395. package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.d.ts +29 -0
  396. package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.d.ts.map +1 -0
  397. package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.js +223 -0
  398. package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.js.map +1 -0
  399. package/node_modules/@noodle-borg/service/dist/developer-mcp/service-options.d.ts +18 -0
  400. package/node_modules/@noodle-borg/service/dist/developer-mcp/service-options.d.ts.map +1 -0
  401. package/node_modules/@noodle-borg/service/dist/developer-mcp/service-options.js +26 -0
  402. package/node_modules/@noodle-borg/service/dist/developer-mcp/service-options.js.map +1 -0
  403. package/node_modules/@noodle-borg/service/dist/index.d.ts +5 -0
  404. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  405. package/node_modules/@noodle-borg/service/dist/index.js +5 -0
  406. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  407. package/node_modules/@noodle-borg/service/dist/main.js +1 -0
  408. package/node_modules/@noodle-borg/service/dist/main.js.map +1 -1
  409. package/node_modules/@noodle-borg/service/dist/oauth/app.d.ts.map +1 -1
  410. package/node_modules/@noodle-borg/service/dist/oauth/app.js +5 -0
  411. package/node_modules/@noodle-borg/service/dist/oauth/app.js.map +1 -1
  412. package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.d.ts +6 -0
  413. package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.d.ts.map +1 -1
  414. package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.js +28 -0
  415. package/node_modules/@noodle-borg/service/dist/oauth/consent-claims.js.map +1 -1
  416. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.d.ts +48 -0
  417. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.d.ts.map +1 -0
  418. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.js +90 -0
  419. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-authorizer.js.map +1 -0
  420. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.d.ts +18 -0
  421. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.d.ts.map +1 -0
  422. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.js +29 -0
  423. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-bootstrap.js.map +1 -0
  424. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.d.ts +22 -0
  425. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.d.ts.map +1 -0
  426. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.js +144 -0
  427. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.js.map +1 -0
  428. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.d.ts +12 -0
  429. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.d.ts.map +1 -0
  430. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.js +61 -0
  431. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-page.js.map +1 -0
  432. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.d.ts +11 -0
  433. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.d.ts.map +1 -0
  434. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.js +89 -0
  435. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-store-postgres.js.map +1 -0
  436. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.d.ts +48 -0
  437. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.d.ts.map +1 -0
  438. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.js +123 -0
  439. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant.js.map +1 -0
  440. package/node_modules/@noodle-borg/service/dist/oauth/paths.d.ts.map +1 -1
  441. package/node_modules/@noodle-borg/service/dist/oauth/paths.js +2 -0
  442. package/node_modules/@noodle-borg/service/dist/oauth/paths.js.map +1 -1
  443. package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts +6 -1
  444. package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts.map +1 -1
  445. package/node_modules/@noodle-borg/service/dist/oauth/provider.js +53 -0
  446. package/node_modules/@noodle-borg/service/dist/oauth/provider.js.map +1 -1
  447. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.d.ts.map +1 -1
  448. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js +17 -6
  449. package/node_modules/@noodle-borg/service/dist/oauth/store-postgres.js.map +1 -1
  450. package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts +3 -0
  451. package/node_modules/@noodle-borg/service/dist/oauth/store.d.ts.map +1 -1
  452. package/node_modules/@noodle-borg/service/dist/oauth/store.js +2 -0
  453. package/node_modules/@noodle-borg/service/dist/oauth/store.js.map +1 -1
  454. package/node_modules/@noodle-borg/service/dist/oauth/token-issuer.d.ts +2 -0
  455. package/node_modules/@noodle-borg/service/dist/oauth/token-issuer.d.ts.map +1 -1
  456. package/node_modules/@noodle-borg/service/dist/oauth/token-issuer.js +8 -0
  457. package/node_modules/@noodle-borg/service/dist/oauth/token-issuer.js.map +1 -1
  458. package/node_modules/@noodle-borg/service/dist/operations/rollback-deployment.d.ts +52 -0
  459. package/node_modules/@noodle-borg/service/dist/operations/rollback-deployment.d.ts.map +1 -0
  460. package/node_modules/@noodle-borg/service/dist/operations/rollback-deployment.js +120 -0
  461. package/node_modules/@noodle-borg/service/dist/operations/rollback-deployment.js.map +1 -0
  462. package/node_modules/@noodle-borg/service/dist/options.d.ts +7 -1
  463. package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
  464. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.d.ts +2 -0
  465. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.d.ts.map +1 -1
  466. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.js +4 -4
  467. package/node_modules/@noodle-borg/service/dist/routes/analytics-dispatch.js.map +1 -1
  468. package/node_modules/@noodle-borg/service/dist/routes/analytics.d.ts +4 -3
  469. package/node_modules/@noodle-borg/service/dist/routes/analytics.d.ts.map +1 -1
  470. package/node_modules/@noodle-borg/service/dist/routes/analytics.js +7 -7
  471. package/node_modules/@noodle-borg/service/dist/routes/analytics.js.map +1 -1
  472. package/node_modules/@noodle-borg/service/dist/routes/apps.d.ts +3 -2
  473. package/node_modules/@noodle-borg/service/dist/routes/apps.d.ts.map +1 -1
  474. package/node_modules/@noodle-borg/service/dist/routes/apps.js +28 -7
  475. package/node_modules/@noodle-borg/service/dist/routes/apps.js.map +1 -1
  476. package/node_modules/@noodle-borg/service/dist/routes/billing-stripe.d.ts.map +1 -1
  477. package/node_modules/@noodle-borg/service/dist/routes/billing-stripe.js +4 -2
  478. package/node_modules/@noodle-borg/service/dist/routes/billing-stripe.js.map +1 -1
  479. package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts +12 -1
  480. package/node_modules/@noodle-borg/service/dist/routes/control-plane.d.ts.map +1 -1
  481. package/node_modules/@noodle-borg/service/dist/routes/control-plane.js +36 -4
  482. package/node_modules/@noodle-borg/service/dist/routes/control-plane.js.map +1 -1
  483. package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts +4 -3
  484. package/node_modules/@noodle-borg/service/dist/routes/deployments.d.ts.map +1 -1
  485. package/node_modules/@noodle-borg/service/dist/routes/deployments.js +26 -18
  486. package/node_modules/@noodle-borg/service/dist/routes/deployments.js.map +1 -1
  487. package/node_modules/@noodle-borg/service/dist/routes/diagnostics.d.ts.map +1 -1
  488. package/node_modules/@noodle-borg/service/dist/routes/diagnostics.js +8 -105
  489. package/node_modules/@noodle-borg/service/dist/routes/diagnostics.js.map +1 -1
  490. package/node_modules/@noodle-borg/service/dist/routes/envs.d.ts +3 -2
  491. package/node_modules/@noodle-borg/service/dist/routes/envs.d.ts.map +1 -1
  492. package/node_modules/@noodle-borg/service/dist/routes/envs.js +9 -5
  493. package/node_modules/@noodle-borg/service/dist/routes/envs.js.map +1 -1
  494. package/node_modules/@noodle-borg/service/dist/routes/logs.d.ts +2 -1
  495. package/node_modules/@noodle-borg/service/dist/routes/logs.d.ts.map +1 -1
  496. package/node_modules/@noodle-borg/service/dist/routes/logs.js +3 -3
  497. package/node_modules/@noodle-borg/service/dist/routes/logs.js.map +1 -1
  498. package/node_modules/@noodle-borg/service/dist/routes/plans.d.ts.map +1 -1
  499. package/node_modules/@noodle-borg/service/dist/routes/plans.js +3 -14
  500. package/node_modules/@noodle-borg/service/dist/routes/plans.js.map +1 -1
  501. package/node_modules/@noodle-borg/service/dist/routes/policies.d.ts.map +1 -1
  502. package/node_modules/@noodle-borg/service/dist/routes/policies.js +3 -14
  503. package/node_modules/@noodle-borg/service/dist/routes/policies.js.map +1 -1
  504. package/node_modules/@noodle-borg/service/dist/routes/protected-resource-metadata.d.ts +8 -0
  505. package/node_modules/@noodle-borg/service/dist/routes/protected-resource-metadata.d.ts.map +1 -0
  506. package/node_modules/@noodle-borg/service/dist/routes/protected-resource-metadata.js +51 -0
  507. package/node_modules/@noodle-borg/service/dist/routes/protected-resource-metadata.js.map +1 -0
  508. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.d.ts +2 -0
  509. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.d.ts.map +1 -1
  510. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.js +6 -6
  511. package/node_modules/@noodle-borg/service/dist/routes/resource-read-dispatch.js.map +1 -1
  512. package/node_modules/@noodle-borg/service/dist/routes/rollback.d.ts.map +1 -1
  513. package/node_modules/@noodle-borg/service/dist/routes/rollback.js +25 -86
  514. package/node_modules/@noodle-borg/service/dist/routes/rollback.js.map +1 -1
  515. package/node_modules/@noodle-borg/service/dist/serve-resource-auth.d.ts +11 -0
  516. package/node_modules/@noodle-borg/service/dist/serve-resource-auth.d.ts.map +1 -0
  517. package/node_modules/@noodle-borg/service/dist/serve-resource-auth.js +62 -0
  518. package/node_modules/@noodle-borg/service/dist/serve-resource-auth.js.map +1 -0
  519. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  520. package/node_modules/@noodle-borg/service/dist/serve.js +19 -62
  521. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  522. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  523. package/node_modules/@noodle-borg/service/dist/service.js +25 -45
  524. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  525. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts +2 -0
  526. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.d.ts.map +1 -1
  527. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js +35 -0
  528. package/node_modules/@noodle-borg/service/dist/store/postgres-schema.js.map +1 -1
  529. package/node_modules/@noodle-borg/service/package.json +1 -0
  530. package/package.json +2 -1
@@ -1,6 +1,6 @@
1
1
  import { normalizedTimestamps, sendJson } from '../http-util.js';
2
2
  import { aggregateRequestEvents } from '../request-event-metrics.js';
3
- import { authorizeTenantControl } from './control-plane.js';
3
+ import { authorizeTenantControl, developerGrantRouteAccess } from './control-plane.js';
4
4
  /**
5
5
  * Tenant analytics read routes (ADR 0121 Stage B): `metrics` (aggregated), `events` (the stream), and
6
6
  * `sessions/{id}` (one session's request sequence). All are org-membership gated and read only the
@@ -19,8 +19,8 @@ const MAX_EVENTS_LIMIT = 500;
19
19
  const SESSION_EVENTS_LIMIT = 1000;
20
20
  /** Aggregation reads a bounded slice; pre-aggregated rollups are the Stage-F scale path. */
21
21
  const METRICS_SCAN_LIMIT = 50_000;
22
- export async function handleTenantMetrics(req, res, gate, controlPlane, events, ref, url) {
23
- const identity = await authorizeTenantControl(req, res, gate, controlPlane, ref.org);
22
+ export async function handleTenantMetrics(req, res, gate, controlPlane, events, ref, url, developerGrants) {
23
+ const identity = await authorizeTenantControl(req, res, gate, controlPlane, ref.org, developerGrantRouteAccess(developerGrants, 'cloud:read', ref.env));
24
24
  if (identity === false)
25
25
  return;
26
26
  const windowParam = url.searchParams.get('window') ?? '7d';
@@ -56,8 +56,8 @@ export async function handleTenantMetrics(req, res, gate, controlPlane, events,
56
56
  metrics: aggregateRequestEvents(window),
57
57
  });
58
58
  }
59
- export async function handleTenantEvents(req, res, gate, controlPlane, events, ref, url) {
60
- const identity = await authorizeTenantControl(req, res, gate, controlPlane, ref.org);
59
+ export async function handleTenantEvents(req, res, gate, controlPlane, events, ref, url, developerGrants) {
60
+ const identity = await authorizeTenantControl(req, res, gate, controlPlane, ref.org, developerGrantRouteAccess(developerGrants, 'cloud:read', ref.env));
61
61
  if (identity === false)
62
62
  return;
63
63
  const limitParam = url.searchParams.get('limit');
@@ -88,8 +88,8 @@ export async function handleTenantEvents(req, res, gate, controlPlane, events, r
88
88
  // Store rejections surface as the dispatcher's 500 (validation above already handled 400s).
89
89
  return sendJson(res, 200, { ok: true, events: await events.list(filter) });
90
90
  }
91
- export async function handleTenantSession(req, res, gate, controlPlane, events, ref, sessionId) {
92
- const identity = await authorizeTenantControl(req, res, gate, controlPlane, ref.org);
91
+ export async function handleTenantSession(req, res, gate, controlPlane, events, ref, sessionId, developerGrants) {
92
+ const identity = await authorizeTenantControl(req, res, gate, controlPlane, ref.org, developerGrantRouteAccess(developerGrants, 'cloud:read', ref.env));
93
93
  if (identity === false)
94
94
  return;
95
95
  // Store rejections surface as the dispatcher's 500. Bounded like every read: a hostile or reused
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/routes/analytics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/routes/analytics.ts"],"names":[],"mappings":"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"}
@@ -7,16 +7,17 @@
7
7
  */
8
8
  import type { IncomingMessage, ServerResponse } from 'node:http';
9
9
  import type { DeployAuthGate } from '../auth/deploy-gate.js';
10
+ import type { DeveloperGrantStore } from '../oauth/developer-grant.js';
10
11
  import type { ServerRegistry } from '../registry.js';
11
12
  import type { ControlPlaneStore } from '../store.js';
12
13
  import { type EndpointUrlOptions } from './endpoint-enrichment.js';
13
14
  export declare function handleApps(req: IncomingMessage, res: ServerResponse, registry: ServerRegistry, gate: DeployAuthGate, controlPlane: ControlPlaneStore, ref: {
14
15
  org: string;
15
- }, url: URL, endpointBase: string, endpointOptions?: EndpointUrlOptions): Promise<void>;
16
+ }, url: URL, endpointBase: string, endpointOptions?: EndpointUrlOptions, developerGrants?: DeveloperGrantStore): Promise<void>;
16
17
  export declare function handleApp(req: IncomingMessage, res: ServerResponse, registry: ServerRegistry, gate: DeployAuthGate, controlPlane: ControlPlaneStore, ref: {
17
18
  org: string;
18
19
  app: string;
19
- }, endpointBase: string, endpointOptions?: EndpointUrlOptions): Promise<void>;
20
+ }, endpointBase: string, endpointOptions?: EndpointUrlOptions, developerGrants?: DeveloperGrantStore): Promise<void>;
20
21
  /**
21
22
  * Send a contract-parsed body; a parse throw means the SERVICE broke its own wire contract
22
23
  * (e.g. an aggregation bug), so report 500 — never blame the client with a 400.
@@ -1 +1 @@
1
- {"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../../src/routes/apps.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAIvF,wBAAsB,UAAU,CAC9B,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,iBAAiB,EAC/B,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACpB,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,MAAM,EACpB,eAAe,GAAE,kBAAuB,GACvC,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED,wBAAsB,SAAS,CAC7B,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,iBAAiB,EAC/B,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EACjC,YAAY,EAAE,MAAM,EACpB,eAAe,GAAE,kBAAuB,GACvC,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,OAAO,GAAG,IAAI,CAS5E"}
1
+ {"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../../src/routes/apps.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGjE,OAAO,EAAsB,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAIvF,wBAAsB,UAAU,CAC9B,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,iBAAiB,EAC/B,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACpB,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,MAAM,EACpB,eAAe,GAAE,kBAAuB,EACxC,eAAe,CAAC,EAAE,mBAAmB,GACpC,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED,wBAAsB,SAAS,CAC7B,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,iBAAiB,EAC/B,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EACjC,YAAY,EAAE,MAAM,EACpB,eAAe,GAAE,kBAAuB,EACxC,eAAe,CAAC,EAAE,mBAAmB,GACpC,OAAO,CAAC,IAAI,CAAC,CAsBf;AAoBD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,OAAO,GAAG,IAAI,CAS5E"}
@@ -1,10 +1,11 @@
1
+ import { developerEnvironmentAllowlist } from '../auth/developer-grant-guard.js';
1
2
  import { sendJson } from '../http-util.js';
2
3
  import { AppResponseSchema, AppsListResponseSchema } from './contracts.js';
3
- import { authorizeTenantControl } from './control-plane.js';
4
+ import { authorizeTenantControl, developerGrantRouteAccess } from './control-plane.js';
4
5
  import { appWithEndpointUrl } from './endpoint-enrichment.js';
5
6
  const MAX_APPS_LIMIT = 500;
6
- export async function handleApps(req, res, registry, gate, controlPlane, ref, url, endpointBase, endpointOptions = {}) {
7
- const identity = await authorizeTenantControl(req, res, gate, controlPlane, ref.org);
7
+ export async function handleApps(req, res, registry, gate, controlPlane, ref, url, endpointBase, endpointOptions = {}, developerGrants) {
8
+ const identity = await authorizeTenantControl(req, res, gate, controlPlane, ref.org, developerGrantRouteAccess(developerGrants, 'cloud:read'));
8
9
  if (identity === false)
9
10
  return;
10
11
  const includeArchived = url.searchParams.get('archived') === 'true';
@@ -22,16 +23,22 @@ export async function handleApps(req, res, registry, gate, controlPlane, ref, ur
22
23
  catch (error) {
23
24
  return sendJson(res, 400, { error: error.message });
24
25
  }
26
+ const allowlist = await developerEnvironmentAllowlist(identity, developerGrants);
27
+ const apps = allowlist === undefined
28
+ ? result.apps
29
+ : result.apps
30
+ .map((app) => filterAppEnvironments(app, allowlist))
31
+ .filter((app) => app !== undefined);
25
32
  return sendContract(res, () => AppsListResponseSchema.parse({
26
33
  ok: true,
27
34
  data: {
28
35
  ...result,
29
- apps: result.apps.map((app) => appWithEndpointUrl(app, endpointBase, endpointOptions)),
36
+ apps: apps.map((app) => appWithEndpointUrl(app, endpointBase, endpointOptions)),
30
37
  },
31
38
  }));
32
39
  }
33
- export async function handleApp(req, res, registry, gate, controlPlane, ref, endpointBase, endpointOptions = {}) {
34
- const identity = await authorizeTenantControl(req, res, gate, controlPlane, ref.org);
40
+ export async function handleApp(req, res, registry, gate, controlPlane, ref, endpointBase, endpointOptions = {}, developerGrants) {
41
+ const identity = await authorizeTenantControl(req, res, gate, controlPlane, ref.org, developerGrantRouteAccess(developerGrants, 'cloud:read'));
35
42
  if (identity === false)
36
43
  return;
37
44
  let app;
@@ -43,9 +50,23 @@ export async function handleApp(req, res, registry, gate, controlPlane, ref, end
43
50
  }
44
51
  if (app === undefined)
45
52
  return sendJson(res, 404, { error: 'not found' });
46
- const enriched = appWithEndpointUrl(app, endpointBase, endpointOptions);
53
+ const allowlist = await developerEnvironmentAllowlist(identity, developerGrants);
54
+ const visible = allowlist === undefined ? app : filterAppEnvironments(app, allowlist);
55
+ if (visible === undefined)
56
+ return sendJson(res, 404, { error: 'not found' });
57
+ const enriched = appWithEndpointUrl(visible, endpointBase, endpointOptions);
47
58
  return sendContract(res, () => AppResponseSchema.parse({ ok: true, data: enriched }));
48
59
  }
60
+ function filterAppEnvironments(app, allowlist) {
61
+ const environments = app.environments.filter((environment) => allowlist.has(environment));
62
+ if (environments.length === 0)
63
+ return undefined;
64
+ if (app.latest === undefined || allowlist.has(app.latest.environment)) {
65
+ return { ...app, environments };
66
+ }
67
+ const { latest: _latest, accessMode: _accessMode, lastActivityAt: _lastActivityAt, ...withoutLatest } = app;
68
+ return { ...withoutLatest, environments, active: false };
69
+ }
49
70
  /**
50
71
  * Send a contract-parsed body; a parse throw means the SERVICE broke its own wire contract
51
72
  * (e.g. an aggregation bug), so report 500 — never blame the client with a 400.
@@ -1 +1 @@
1
- {"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/routes/apps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/routes/apps.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"billing-stripe.d.ts","sourceRoot":"","sources":["../../src/routes/billing-stripe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EAEL,KAAK,oBAAoB,EAE1B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE;IACL,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,GACA,OAAO,CAAC,IAAI,CAAC,CAsCf;AAED,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE;IACL,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC3B,GACA,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC1E,OAAO,CAAC,IAAI,CAAC,CAgBf"}
1
+ {"version":3,"file":"billing-stripe.d.ts","sourceRoot":"","sources":["../../src/routes/billing-stripe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EAEL,KAAK,oBAAoB,EAE1B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE;IACL,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,GACA,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE;IACL,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;CAC3B,GACA,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE;IAAE,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC1E,OAAO,CAAC,IAAI,CAAC,CAgBf"}
@@ -25,21 +25,23 @@ export async function handleBillingStripeCheckout(req, res, input) {
25
25
  identity: { identityIssuer: GOOGLE_CONTROL_PLANE_ISSUER, subject: identity.subject },
26
26
  ...request,
27
27
  });
28
+ const status = result.outcome === 'created' || result.outcome === 'replaced' ? 201 : 200;
28
29
  await input.audit.emit({
29
30
  eventType: 'billing.checkout.created',
30
31
  org: 'platform',
31
32
  actorSubject: identity.subject,
32
33
  ...(identity.email === undefined ? {} : { actorEmail: identity.email }),
33
34
  decision: 'allow',
34
- status: result.replayed ? 200 : 201,
35
+ status,
35
36
  details: {
36
37
  billingAccountId: input.billingAccountId,
37
38
  plan: request.plan,
38
39
  interval: request.interval,
39
40
  replayed: result.replayed,
41
+ outcome: result.outcome,
40
42
  },
41
43
  });
42
- return sendJson(res, result.replayed ? 200 : 201, { ok: true, data: result });
44
+ return sendJson(res, status, { ok: true, data: result });
43
45
  }
44
46
  catch (error) {
45
47
  return sendStripeRequestError(res, error);
@@ -1 +1 @@
1
- {"version":3,"file":"billing-stripe.js","sourceRoot":"","sources":["../../src/routes/billing-stripe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"billing-stripe.js","sourceRoot":"","sources":["../../src/routes/billing-stripe.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
1
  import type { IncomingMessage, ServerResponse } from 'node:http';
2
+ import type { DeveloperCapability } from '@noodle-borg/developer-mcp';
2
3
  import type { ControlPlaneIdentity, DeployAuthGate } from '../auth/deploy-gate.js';
4
+ import { type DeveloperGrantAuthorizationContext } from '../auth/developer-grant-guard.js';
3
5
  import type { GithubAppConfig } from '../github/app-client.js';
6
+ import type { DeveloperGrantStore } from '../oauth/developer-grant.js';
4
7
  import type { ServiceOptions } from '../options.js';
5
8
  import type { ServerRegistry } from '../registry.js';
6
9
  import type { AuditSink } from '../store/audit.js';
@@ -9,13 +12,21 @@ import type { ConfigRouteRef } from './paths.js';
9
12
  export declare function handleDeploy(req: IncomingMessage, res: ServerResponse, registry: ServerRegistry, options: ServiceOptions, maxBody: number, tenant: TenantRef, gate: DeployAuthGate, controlPlane: ControlPlaneStore, audit: AuditSink, runStore?: GithubDeployRunStore, githubApp?: GithubAppConfig): Promise<void>;
10
13
  export declare function handleWhoami(req: IncomingMessage, res: ServerResponse, gate: DeployAuthGate, controlPlane: ControlPlaneStore, options?: ServiceOptions): Promise<void>;
11
14
  export declare function handleConfigValues(req: IncomingMessage, res: ServerResponse, gate: DeployAuthGate, controlPlane: ControlPlaneStore, configStore: ConfigStore, maxBody: number, ref: ConfigRouteRef, audit: AuditSink): Promise<void>;
12
- export declare function authorizeTenantControl(req: IncomingMessage, res: ServerResponse, gate: DeployAuthGate, controlPlane: ControlPlaneStore, org: string): Promise<ControlPlaneIdentity | false>;
15
+ export declare function authorizeTenantControl(req: IncomingMessage, res: ServerResponse, gate: DeployAuthGate, controlPlane: ControlPlaneStore, org: string, developerAccess?: DeveloperGrantRouteAccess): Promise<ControlPlaneIdentity | false>;
13
16
  export declare function handleDeploymentStatus(req: IncomingMessage, res: ServerResponse, registry: ServerRegistry, gate: DeployAuthGate, controlPlane: ControlPlaneStore, tenant: TenantRef, options: ServiceOptions, url?: URL): Promise<void>;
17
+ export interface DeveloperGrantRouteAccess {
18
+ readonly grants: DeveloperGrantStore;
19
+ readonly capability: DeveloperCapability;
20
+ readonly env?: string;
21
+ }
22
+ export declare function developerGrantRouteAccess(grants: DeveloperGrantStore | undefined, capability: DeveloperCapability, env?: string): DeveloperGrantRouteAccess | undefined;
14
23
  export declare function handleAccessUpdate(req: IncomingMessage, res: ServerResponse, registry: ServerRegistry, gate: DeployAuthGate, controlPlane: ControlPlaneStore, maxBody: number, tenant: TenantRef): Promise<void>;
15
24
  export declare function authorizeControlPlane(req: IncomingMessage, res: ServerResponse, gate: DeployAuthGate, options: {
16
25
  requireIdentity: true;
26
+ developerAccess?: DeveloperGrantAuthorizationContext;
17
27
  }): Promise<ControlPlaneIdentity | false>;
18
28
  export declare function authorizeControlPlane(req: IncomingMessage, res: ServerResponse, gate: DeployAuthGate, options: {
19
29
  requireIdentity: false;
30
+ developerAccess?: DeveloperGrantAuthorizationContext;
20
31
  }): Promise<ControlPlaneIdentity | undefined | false>;
21
32
  //# sourceMappingURL=control-plane.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"control-plane.d.ts","sourceRoot":"","sources":["../../src/routes/control-plane.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"control-plane.d.ts","sourceRoot":"","sources":["../../src/routes/control-plane.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { cspFaultsInManifest } from '@noodle-borg/compiler';
2
2
  import { normalizeServerVersion } from '@noodle-borg/module';
3
3
  import { noopLogger } from '@noodle-borg/transport-http';
4
4
  import { configValueSetRequestSchema, deployRequestSchema, formatWireError, } from '@noodle-borg/wire-contracts';
5
+ import { authorizeDeveloperGrant, } from '../auth/developer-grant-guard.js';
5
6
  import { baseFromRequest, readDeployBody, readJsonBody, sendForbidden, sendJson, sendUnauthorized, } from '../http-util.js';
6
7
  import { ensurePersonalWorkspace } from '../personal-workspace.js';
7
8
  import { tenantMcpUrl } from '../registry-helpers.js';
@@ -16,7 +17,11 @@ export async function handleDeploy(req, res, registry, options, maxBody, tenant,
16
17
  const isRunDeploy = req.headers['x-noodle-run-token'] !== undefined;
17
18
  let identity;
18
19
  if (!isRunDeploy) {
19
- const authed = await authorizeControlPlane(req, res, gate, { requireIdentity: false });
20
+ const developerAccess = developerGrantAccess(options.developerGrantStore, controlPlane, tenant.org, 'deployments:write', tenant.env);
21
+ const authed = await authorizeControlPlane(req, res, gate, {
22
+ requireIdentity: false,
23
+ ...(developerAccess === undefined ? {} : { developerAccess }),
24
+ });
20
25
  if (authed === false)
21
26
  return;
22
27
  identity = authed || undefined;
@@ -445,8 +450,19 @@ function emitConfigAudit(audit, eventType, ref, identity) {
445
450
  ...(ref.name !== undefined ? { details: { kind: ref.kind, name: ref.name } } : {}),
446
451
  });
447
452
  }
448
- export async function authorizeTenantControl(req, res, gate, controlPlane, org) {
449
- const identity = await authorizeControlPlane(req, res, gate, { requireIdentity: true });
453
+ export async function authorizeTenantControl(req, res, gate, controlPlane, org, developerAccess) {
454
+ const identity = await authorizeControlPlane(req, res, gate, {
455
+ requireIdentity: true,
456
+ ...(developerAccess === undefined
457
+ ? {}
458
+ : {
459
+ developerAccess: {
460
+ ...developerAccess,
461
+ controlPlane,
462
+ org,
463
+ },
464
+ }),
465
+ });
450
466
  if (identity === false)
451
467
  return false;
452
468
  if (!identity.superAdmin) {
@@ -459,7 +475,7 @@ export async function authorizeTenantControl(req, res, gate, controlPlane, org)
459
475
  return identity;
460
476
  }
461
477
  export async function handleDeploymentStatus(req, res, registry, gate, controlPlane, tenant, options, url) {
462
- const identity = await authorizeTenantControl(req, res, gate, controlPlane, tenant.org);
478
+ const identity = await authorizeTenantControl(req, res, gate, controlPlane, tenant.org, developerGrantRouteAccess(options.developerGrantStore, 'cloud:read', tenant.env));
463
479
  if (identity === false)
464
480
  return;
465
481
  try {
@@ -479,6 +495,15 @@ export async function handleDeploymentStatus(req, res, registry, gate, controlPl
479
495
  return sendJson(res, 400, { error: error.message });
480
496
  }
481
497
  }
498
+ export function developerGrantRouteAccess(grants, capability, env) {
499
+ return grants === undefined
500
+ ? undefined
501
+ : { grants, capability, ...(env === undefined ? {} : { env }) };
502
+ }
503
+ function developerGrantAccess(grants, controlPlane, org, capability, env) {
504
+ const access = developerGrantRouteAccess(grants, capability, env);
505
+ return access === undefined ? undefined : { ...access, controlPlane, org };
506
+ }
482
507
  export async function handleAccessUpdate(req, res, registry, gate, controlPlane, maxBody, tenant) {
483
508
  const identity = await authorizeTenantControl(req, res, gate, controlPlane, tenant.org);
484
509
  if (identity === false)
@@ -532,6 +557,13 @@ export async function authorizeControlPlane(req, res, gate, options) {
532
557
  sendUnauthorized(res, 'identity required');
533
558
  return false;
534
559
  }
560
+ if (auth.identity?.developerGrantId !== undefined) {
561
+ if (options.developerAccess === undefined ||
562
+ !(await authorizeDeveloperGrant(auth.identity, options.developerAccess))) {
563
+ sendForbidden(res, 'developer grant does not authorize this operation');
564
+ return false;
565
+ }
566
+ }
535
567
  return auth.identity;
536
568
  }
537
569
  //# sourceMappingURL=control-plane.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"control-plane.js","sourceRoot":"","sources":["../../src/routes/control-plane.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"control-plane.js","sourceRoot":"","sources":["../../src/routes/control-plane.ts"],"names":[],"mappings":"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"}
@@ -5,13 +5,14 @@
5
5
  */
6
6
  import type { IncomingMessage, ServerResponse } from 'node:http';
7
7
  import type { DeployAuthGate } from '../auth/deploy-gate.js';
8
+ import type { DeveloperGrantStore } from '../oauth/developer-grant.js';
8
9
  import type { ServerRegistry } from '../registry.js';
9
10
  import type { AuditSink } from '../store/audit.js';
10
11
  import type { ControlPlaneStore } from '../store.js';
11
12
  import { type EndpointUrlOptions } from './endpoint-enrichment.js';
12
13
  export declare function handleDeployments(req: IncomingMessage, res: ServerResponse, registry: ServerRegistry, gate: DeployAuthGate, controlPlane: ControlPlaneStore, ref: {
13
14
  org: string;
14
- }, url: URL, endpointBase: string, endpointOptions?: EndpointUrlOptions): Promise<void>;
15
+ }, url: URL, endpointBase: string, endpointOptions?: EndpointUrlOptions, developerGrants?: DeveloperGrantStore): Promise<void>;
15
16
  /**
16
17
  * The single-deployment item route: `GET /v1/orgs/{org}/deployments/{deploymentId}` (deployment
17
18
  * inspect). Membership-gated exactly like the `apps`/`envs` item routes (`authorizeTenantControl`); a
@@ -22,8 +23,8 @@ export declare function handleDeployments(req: IncomingMessage, res: ServerRespo
22
23
  export declare function handleDeploymentItem(req: IncomingMessage, res: ServerResponse, registry: ServerRegistry, gate: DeployAuthGate, controlPlane: ControlPlaneStore, ref: {
23
24
  org: string;
24
25
  deploymentId: string;
25
- }, endpointBase: string, endpointOptions?: EndpointUrlOptions): Promise<void>;
26
+ }, endpointBase: string, endpointOptions?: EndpointUrlOptions, developerGrants?: DeveloperGrantStore): Promise<void>;
26
27
  export declare function handleAuditEvents(req: IncomingMessage, res: ServerResponse, gate: DeployAuthGate, controlPlane: ControlPlaneStore, audit: AuditSink, ref: {
27
28
  org: string;
28
- }, url: URL): Promise<void>;
29
+ }, url: URL, developerGrants?: DeveloperGrantStore): Promise<void>;
29
30
  //# sourceMappingURL=deployments.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/routes/deployments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIrD,OAAO,EAAE,KAAK,kBAAkB,EAAmB,MAAM,0BAA0B,CAAC;AAEpF,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,iBAAiB,EAC/B,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACpB,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,MAAM,EACpB,eAAe,GAAE,kBAAuB,GACvC,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,iBAAiB,EAC/B,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAC1C,YAAY,EAAE,MAAM,EACpB,eAAe,GAAE,kBAAuB,GACvC,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,iBAAiB,EAC/B,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACpB,GAAG,EAAE,GAAG,GACP,OAAO,CAAC,IAAI,CAAC,CA0Cf"}
1
+ {"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/routes/deployments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIrD,OAAO,EAAE,KAAK,kBAAkB,EAAmB,MAAM,0BAA0B,CAAC;AAEpF,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,iBAAiB,EAC/B,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACpB,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,MAAM,EACpB,eAAe,GAAE,kBAAuB,EACxC,eAAe,CAAC,EAAE,mBAAmB,GACpC,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,iBAAiB,EAC/B,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAC1C,YAAY,EAAE,MAAM,EACpB,eAAe,GAAE,kBAAuB,EACxC,eAAe,CAAC,EAAE,mBAAmB,GACpC,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,iBAAiB,EAC/B,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACpB,GAAG,EAAE,GAAG,EACR,eAAe,CAAC,EAAE,mBAAmB,GACpC,OAAO,CAAC,IAAI,CAAC,CAqDf"}
@@ -1,27 +1,27 @@
1
- import { sendForbidden, sendJson } from '../http-util.js';
1
+ import { developerEnvironmentAllowlist } from '../auth/developer-grant-guard.js';
2
+ import { sendJson } from '../http-util.js';
2
3
  import { sendContract } from './apps.js';
3
4
  import { DeploymentResponseSchema } from './contracts.js';
4
- import { authorizeControlPlane, authorizeTenantControl } from './control-plane.js';
5
+ import { authorizeTenantControl, developerGrantRouteAccess } from './control-plane.js';
5
6
  import { withEndpointUrl } from './endpoint-enrichment.js';
6
- export async function handleDeployments(req, res, registry, gate, controlPlane, ref, url, endpointBase, endpointOptions = {}) {
7
- const identity = await authorizeControlPlane(req, res, gate, { requireIdentity: true });
8
- if (identity === false)
9
- return;
10
- if (!identity.superAdmin) {
11
- const member = await controlPlane.isOrgMember({ org: ref.org, subject: identity.subject });
12
- if (!member)
13
- return sendForbidden(res, 'forbidden');
14
- }
7
+ export async function handleDeployments(req, res, registry, gate, controlPlane, ref, url, endpointBase, endpointOptions = {}, developerGrants) {
15
8
  const app = url.searchParams.get('app') ?? undefined;
16
9
  const env = url.searchParams.get('env') ?? undefined;
10
+ const identity = await authorizeTenantControl(req, res, gate, controlPlane, ref.org, developerGrantRouteAccess(developerGrants, 'cloud:read', env));
11
+ if (identity === false)
12
+ return;
17
13
  const includeArchived = url.searchParams.get('archived') === 'true';
18
14
  try {
19
- const deployments = await registry.listDeployments({
15
+ let deployments = await registry.listDeployments({
20
16
  org: ref.org,
21
17
  ...(app !== undefined ? { app } : {}),
22
18
  ...(env !== undefined ? { env } : {}),
23
19
  ...(includeArchived ? { includeArchived: true } : {}),
24
20
  });
21
+ const allowlist = await developerEnvironmentAllowlist(identity, developerGrants);
22
+ if (allowlist !== undefined) {
23
+ deployments = deployments.filter((deployment) => allowlist.has(deployment.environment));
24
+ }
25
25
  return sendJson(res, 200, {
26
26
  ok: true,
27
27
  deployments: deployments.map((record) => withEndpointUrl(record, endpointBase, endpointOptions)),
@@ -38,8 +38,8 @@ export async function handleDeployments(req, res, registry, gate, controlPlane,
38
38
  * existence must never leak. Archived deployments ARE returned (with `archivedAt` set): inspecting
39
39
  * history, including an archived deployment, is the point of this lookup.
40
40
  */
41
- export async function handleDeploymentItem(req, res, registry, gate, controlPlane, ref, endpointBase, endpointOptions = {}) {
42
- const identity = await authorizeTenantControl(req, res, gate, controlPlane, ref.org);
41
+ export async function handleDeploymentItem(req, res, registry, gate, controlPlane, ref, endpointBase, endpointOptions = {}, developerGrants) {
42
+ const identity = await authorizeTenantControl(req, res, gate, controlPlane, ref.org, developerGrantRouteAccess(developerGrants, 'cloud:read'));
43
43
  if (identity === false)
44
44
  return;
45
45
  let deployment;
@@ -51,11 +51,16 @@ export async function handleDeploymentItem(req, res, registry, gate, controlPlan
51
51
  }
52
52
  if (deployment === undefined)
53
53
  return sendJson(res, 404, { error: 'unknown deployment' });
54
+ const allowlist = await developerEnvironmentAllowlist(identity, developerGrants);
55
+ if (allowlist !== undefined && !allowlist.has(deployment.environment)) {
56
+ return sendJson(res, 404, { error: 'unknown deployment' });
57
+ }
54
58
  const enriched = withEndpointUrl(deployment, endpointBase, endpointOptions);
55
59
  return sendContract(res, () => DeploymentResponseSchema.parse({ ok: true, data: enriched }));
56
60
  }
57
- export async function handleAuditEvents(req, res, gate, controlPlane, audit, ref, url) {
58
- const identity = await authorizeTenantControl(req, res, gate, controlPlane, ref.org);
61
+ export async function handleAuditEvents(req, res, gate, controlPlane, audit, ref, url, developerGrants) {
62
+ const env = optionalQuery(url, 'env');
63
+ const identity = await authorizeTenantControl(req, res, gate, controlPlane, ref.org, developerGrantRouteAccess(developerGrants, 'cloud:read', env));
59
64
  if (identity === false)
60
65
  return;
61
66
  if (!isAuditStore(audit)) {
@@ -69,15 +74,18 @@ export async function handleAuditEvents(req, res, gate, controlPlane, audit, ref
69
74
  return sendJson(res, 400, { error: '"limit" must be an integer from 1 to 100' });
70
75
  try {
71
76
  const app = optionalQuery(url, 'app');
72
- const env = optionalQuery(url, 'env');
73
77
  const eventType = optionalQuery(url, 'eventType');
74
- const events = await audit.list({
78
+ let events = await audit.list({
75
79
  org: ref.org,
76
80
  ...(app !== undefined ? { app } : {}),
77
81
  ...(env !== undefined ? { env } : {}),
78
82
  ...(eventType !== undefined ? { eventType } : {}),
79
83
  ...(limit !== undefined ? { limit } : {}),
80
84
  });
85
+ const allowlist = await developerEnvironmentAllowlist(identity, developerGrants);
86
+ if (allowlist !== undefined) {
87
+ events = events.filter((event) => event.env !== undefined && allowlist.has(event.env));
88
+ }
81
89
  await audit.emit({
82
90
  eventType: 'audit.events.queried',
83
91
  org: ref.org,