run402 4.94.0 → 4.96.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 (337) hide show
  1. package/README.md +23 -23
  2. package/cli.mjs +8 -40
  3. package/core-dist/keystore.js +1 -1
  4. package/git-remote-run402.mjs +6 -6
  5. package/lib/admin.mjs +5 -5
  6. package/lib/ai.mjs +5 -5
  7. package/lib/apps.mjs +9 -9
  8. package/lib/archives.mjs +371 -8
  9. package/lib/argparse.mjs +5 -5
  10. package/lib/assets.mjs +12 -12
  11. package/lib/auth.mjs +34 -34
  12. package/lib/branches.mjs +7 -7
  13. package/lib/buzz-doctor.mjs +1 -1
  14. package/lib/buzz-notifications.mjs +4 -4
  15. package/lib/buzz.mjs +2 -2
  16. package/lib/cache.mjs +1 -1
  17. package/lib/cdn.mjs +2 -2
  18. package/lib/ci.mjs +8 -8
  19. package/lib/claims.mjs +2 -2
  20. package/lib/cold-start.mjs +2 -2
  21. package/lib/command-manifest.mjs +37 -76
  22. package/lib/config.mjs +4 -4
  23. package/lib/contacts.mjs +3 -3
  24. package/lib/contracts.mjs +11 -11
  25. package/lib/credentials.mjs +32 -32
  26. package/lib/daemon-path.mjs +3 -3
  27. package/lib/delegates.mjs +13 -13
  28. package/lib/deliveries.mjs +2 -2
  29. package/lib/deploy-v2.mjs +26 -26
  30. package/lib/dev.mjs +3 -3
  31. package/lib/doctor.mjs +49 -58
  32. package/lib/domains.mjs +27 -27
  33. package/lib/email.mjs +38 -38
  34. package/lib/errors.mjs +40 -24
  35. package/lib/escalations.mjs +4 -4
  36. package/lib/events.mjs +32 -25
  37. package/lib/feedback.mjs +2 -2
  38. package/lib/functions.mjs +34 -34
  39. package/lib/grants.mjs +7 -7
  40. package/lib/image.mjs +7 -7
  41. package/lib/init.mjs +32 -32
  42. package/lib/jobs.mjs +15 -15
  43. package/lib/live.mjs +1 -1
  44. package/lib/logs.mjs +8 -8
  45. package/lib/messages.mjs +5 -5
  46. package/lib/next-actions.mjs +2 -2
  47. package/lib/org-context.mjs +22 -22
  48. package/lib/{org.mjs → orgs.mjs} +140 -179
  49. package/lib/path-lookup.mjs +7 -10
  50. package/lib/path-lookup.test.mjs +19 -21
  51. package/lib/projects.mjs +45 -56
  52. package/lib/remote-helper-session.mjs +93 -93
  53. package/lib/repos.mjs +196 -197
  54. package/lib/rooms-context.mjs +7 -7
  55. package/lib/rooms.mjs +2 -2
  56. package/lib/sdk-errors.mjs +1 -1
  57. package/lib/secrets.mjs +13 -13
  58. package/lib/sites.mjs +14 -14
  59. package/lib/snapshots.mjs +10 -10
  60. package/lib/subdomains.mjs +12 -12
  61. package/lib/subscriptions.mjs +2 -2
  62. package/lib/transfer.mjs +1 -1
  63. package/lib/up.mjs +21 -21
  64. package/lib/{gitvault-capabilities.mjs → vault-capabilities.mjs} +10 -14
  65. package/lib/{gitvault-daemon-run.mjs → vault-daemon-run.mjs} +2 -2
  66. package/lib/{gitvault-daemon.mjs → vault-daemon.mjs} +23 -23
  67. package/lib/{gitvault-scaffold.mjs → vault-scaffold.mjs} +14 -14
  68. package/lib/{gitvault-target.mjs → vault-target.mjs} +22 -17
  69. package/lib/wallet-context.mjs +1 -1
  70. package/lib/wallets.mjs +1 -1
  71. package/lib/webhooks.mjs +8 -8
  72. package/lib/whoami.mjs +32 -5
  73. package/package.json +2 -2
  74. package/sdk/core-dist/keystore.js +1 -1
  75. package/sdk/dist/actions.d.ts +3 -3
  76. package/sdk/dist/actions.d.ts.map +1 -1
  77. package/sdk/dist/app-up.d.ts +2 -2
  78. package/sdk/dist/app-up.d.ts.map +1 -1
  79. package/sdk/dist/config.d.ts +1 -2
  80. package/sdk/dist/config.d.ts.map +1 -1
  81. package/sdk/dist/config.js.map +1 -1
  82. package/sdk/dist/credentials.d.ts +1 -1
  83. package/sdk/dist/errors.d.ts +6 -6
  84. package/sdk/dist/errors.d.ts.map +1 -1
  85. package/sdk/dist/errors.js +1 -1
  86. package/sdk/dist/errors.js.map +1 -1
  87. package/sdk/dist/index.d.ts +9 -9
  88. package/sdk/dist/index.d.ts.map +1 -1
  89. package/sdk/dist/index.js +9 -9
  90. package/sdk/dist/index.js.map +1 -1
  91. package/sdk/dist/namespaces/admin.d.ts +1 -1
  92. package/sdk/dist/namespaces/admin.d.ts.map +1 -1
  93. package/sdk/dist/namespaces/ai.d.ts +1 -1
  94. package/sdk/dist/namespaces/ai.js +2 -2
  95. package/sdk/dist/namespaces/ai.js.map +1 -1
  96. package/sdk/dist/namespaces/assets.js +1 -1
  97. package/sdk/dist/namespaces/assets.js.map +1 -1
  98. package/sdk/dist/namespaces/ci.js +3 -3
  99. package/sdk/dist/namespaces/ci.js.map +1 -1
  100. package/sdk/dist/namespaces/deploy.d.ts +5 -5
  101. package/sdk/dist/namespaces/deploy.d.ts.map +1 -1
  102. package/sdk/dist/namespaces/deploy.js +45 -46
  103. package/sdk/dist/namespaces/deploy.js.map +1 -1
  104. package/sdk/dist/namespaces/deploy.types.d.ts +19 -19
  105. package/sdk/dist/namespaces/deploy.types.d.ts.map +1 -1
  106. package/sdk/dist/namespaces/domains.d.ts +10 -2
  107. package/sdk/dist/namespaces/domains.d.ts.map +1 -1
  108. package/sdk/dist/namespaces/domains.js +10 -5
  109. package/sdk/dist/namespaces/domains.js.map +1 -1
  110. package/sdk/dist/namespaces/errors.js +1 -1
  111. package/sdk/dist/namespaces/functions.js +1 -1
  112. package/sdk/dist/namespaces/functions.js.map +1 -1
  113. package/sdk/dist/namespaces/org.d.ts +2 -2
  114. package/sdk/dist/namespaces/org.js +2 -2
  115. package/sdk/dist/namespaces/org.types.d.ts +3 -3
  116. package/sdk/dist/namespaces/pay.js +1 -1
  117. package/sdk/dist/namespaces/{gitvault.d.ts → repos.d.ts} +438 -451
  118. package/sdk/dist/namespaces/repos.d.ts.map +1 -0
  119. package/sdk/dist/namespaces/{gitvault.js → repos.js} +454 -462
  120. package/sdk/dist/namespaces/repos.js.map +1 -0
  121. package/sdk/dist/namespaces/rooms.js +2 -2
  122. package/sdk/dist/namespaces/rooms.js.map +1 -1
  123. package/sdk/dist/namespaces/session.d.ts +2 -2
  124. package/sdk/dist/namespaces/session.d.ts.map +1 -1
  125. package/sdk/dist/namespaces/session.js +2 -2
  126. package/sdk/dist/namespaces/session.js.map +1 -1
  127. package/sdk/dist/namespaces/tier.d.ts +4 -4
  128. package/sdk/dist/namespaces/tier.d.ts.map +1 -1
  129. package/sdk/dist/namespaces/transfers.d.ts +46 -15
  130. package/sdk/dist/namespaces/transfers.d.ts.map +1 -1
  131. package/sdk/dist/namespaces/transfers.js.map +1 -1
  132. package/sdk/dist/namespaces/{gitvault.crypto.d.ts → vault.crypto.d.ts} +141 -141
  133. package/sdk/dist/namespaces/vault.crypto.d.ts.map +1 -0
  134. package/sdk/dist/namespaces/{gitvault.crypto.js → vault.crypto.js} +173 -173
  135. package/sdk/dist/namespaces/vault.crypto.js.map +1 -0
  136. package/sdk/dist/namespaces/{gitvault.types.d.ts → vault.types.d.ts} +136 -136
  137. package/sdk/dist/namespaces/vault.types.d.ts.map +1 -0
  138. package/sdk/dist/namespaces/{gitvault.types.js → vault.types.js} +4 -4
  139. package/sdk/dist/namespaces/vault.types.js.map +1 -0
  140. package/sdk/dist/node/actions-node.js +8 -8
  141. package/sdk/dist/node/actions-node.js.map +1 -1
  142. package/sdk/dist/node/assets-node.js +6 -6
  143. package/sdk/dist/node/assets-node.js.map +1 -1
  144. package/sdk/dist/node/bearer-redeem-key.d.ts +1 -1
  145. package/sdk/dist/node/bearer-redeem-key.js +5 -5
  146. package/sdk/dist/node/bearer-redeem-key.js.map +1 -1
  147. package/sdk/dist/node/ci.js +1 -1
  148. package/sdk/dist/node/ci.js.map +1 -1
  149. package/sdk/dist/node/credentials.d.ts +1 -1
  150. package/sdk/dist/node/credentials.js +1 -1
  151. package/sdk/dist/node/deploy-manifest.d.ts +3 -5
  152. package/sdk/dist/node/deploy-manifest.d.ts.map +1 -1
  153. package/sdk/dist/node/deploy-manifest.js +3 -12
  154. package/sdk/dist/node/deploy-manifest.js.map +1 -1
  155. package/sdk/dist/node/http-dispatcher.js +5 -5
  156. package/sdk/dist/node/http-dispatcher.js.map +1 -1
  157. package/sdk/dist/node/index.d.ts +29 -29
  158. package/sdk/dist/node/index.d.ts.map +1 -1
  159. package/sdk/dist/node/index.js +39 -39
  160. package/sdk/dist/node/index.js.map +1 -1
  161. package/sdk/dist/node/manifest-export.js +2 -2
  162. package/sdk/dist/node/manifest-export.js.map +1 -1
  163. package/sdk/dist/node/org-adopt.js +1 -1
  164. package/sdk/dist/node/org-adopt.js.map +1 -1
  165. package/sdk/dist/node/sites-node.js +1 -1
  166. package/sdk/dist/node/sites-node.js.map +1 -1
  167. package/sdk/dist/node/{gitvault-address.d.ts → vault-address.d.ts} +42 -42
  168. package/sdk/dist/node/vault-address.d.ts.map +1 -0
  169. package/sdk/dist/node/{gitvault-address.js → vault-address.js} +43 -43
  170. package/sdk/dist/node/vault-address.js.map +1 -0
  171. package/sdk/dist/node/{gitvault-apply.d.ts → vault-apply.d.ts} +27 -27
  172. package/sdk/dist/node/vault-apply.d.ts.map +1 -0
  173. package/sdk/dist/node/{gitvault-apply.js → vault-apply.js} +38 -38
  174. package/sdk/dist/node/vault-apply.js.map +1 -0
  175. package/sdk/dist/node/vault-byo-config.d.ts +29 -0
  176. package/sdk/dist/node/vault-byo-config.d.ts.map +1 -0
  177. package/sdk/dist/node/{gitvault-byo-config.js → vault-byo-config.js} +18 -18
  178. package/sdk/dist/node/vault-byo-config.js.map +1 -0
  179. package/sdk/dist/node/vault-byo-probe.d.ts +20 -0
  180. package/sdk/dist/node/vault-byo-probe.d.ts.map +1 -0
  181. package/sdk/dist/node/vault-byo-probe.js +57 -0
  182. package/sdk/dist/node/vault-byo-probe.js.map +1 -0
  183. package/sdk/dist/node/{gitvault-creation-journal.d.ts → vault-creation-journal.d.ts} +69 -69
  184. package/sdk/dist/node/vault-creation-journal.d.ts.map +1 -0
  185. package/sdk/dist/node/{gitvault-creation-journal.js → vault-creation-journal.js} +54 -54
  186. package/sdk/dist/node/vault-creation-journal.js.map +1 -0
  187. package/sdk/dist/node/{gitvault-degraded-read.d.ts → vault-degraded-read.d.ts} +34 -34
  188. package/sdk/dist/node/vault-degraded-read.d.ts.map +1 -0
  189. package/sdk/dist/node/{gitvault-degraded-read.js → vault-degraded-read.js} +24 -24
  190. package/sdk/dist/node/vault-degraded-read.js.map +1 -0
  191. package/sdk/dist/node/{gitvault-deploy.d.ts → vault-deploy.d.ts} +67 -67
  192. package/sdk/dist/node/vault-deploy.d.ts.map +1 -0
  193. package/sdk/dist/node/{gitvault-deploy.js → vault-deploy.js} +27 -27
  194. package/sdk/dist/node/vault-deploy.js.map +1 -0
  195. package/sdk/dist/node/{gitvault-edge-fetch.d.ts → vault-edge-fetch.d.ts} +9 -9
  196. package/sdk/dist/node/vault-edge-fetch.d.ts.map +1 -0
  197. package/sdk/dist/node/{gitvault-edge-fetch.js → vault-edge-fetch.js} +11 -11
  198. package/sdk/dist/node/vault-edge-fetch.js.map +1 -0
  199. package/sdk/dist/node/{gitvault-handoff.d.ts → vault-handoff.d.ts} +9 -9
  200. package/sdk/dist/node/vault-handoff.d.ts.map +1 -0
  201. package/sdk/dist/node/{gitvault-handoff.js → vault-handoff.js} +24 -24
  202. package/sdk/dist/node/vault-handoff.js.map +1 -0
  203. package/sdk/dist/node/{gitvault-keystore.d.ts → vault-keystore.d.ts} +87 -77
  204. package/sdk/dist/node/vault-keystore.d.ts.map +1 -0
  205. package/sdk/dist/node/{gitvault-keystore.js → vault-keystore.js} +105 -68
  206. package/sdk/dist/node/vault-keystore.js.map +1 -0
  207. package/sdk/dist/node/{gitvault-member-bundle.d.ts → vault-member-bundle.d.ts} +17 -17
  208. package/sdk/dist/node/vault-member-bundle.d.ts.map +1 -0
  209. package/sdk/dist/node/{gitvault-member-bundle.js → vault-member-bundle.js} +11 -11
  210. package/sdk/dist/node/vault-member-bundle.js.map +1 -0
  211. package/sdk/dist/node/{gitvault-mirror-backend.d.ts → vault-mirror-backend.d.ts} +26 -26
  212. package/sdk/dist/node/vault-mirror-backend.d.ts.map +1 -0
  213. package/sdk/dist/node/{gitvault-mirror-backend.js → vault-mirror-backend.js} +25 -25
  214. package/sdk/dist/node/vault-mirror-backend.js.map +1 -0
  215. package/sdk/dist/node/{gitvault-mirror-config.d.ts → vault-mirror-config.d.ts} +23 -23
  216. package/sdk/dist/node/vault-mirror-config.d.ts.map +1 -0
  217. package/sdk/dist/node/{gitvault-mirror-config.js → vault-mirror-config.js} +16 -16
  218. package/sdk/dist/node/vault-mirror-config.js.map +1 -0
  219. package/sdk/dist/node/{gitvault-mirror.d.ts → vault-mirror.d.ts} +36 -36
  220. package/sdk/dist/node/vault-mirror.d.ts.map +1 -0
  221. package/sdk/dist/node/{gitvault-mirror.js → vault-mirror.js} +75 -75
  222. package/sdk/dist/node/vault-mirror.js.map +1 -0
  223. package/sdk/dist/node/{gitvault-native-crypto.d.ts → vault-native-crypto.d.ts} +10 -10
  224. package/sdk/dist/node/vault-native-crypto.d.ts.map +1 -0
  225. package/sdk/dist/node/{gitvault-native-crypto.js → vault-native-crypto.js} +16 -16
  226. package/sdk/dist/node/vault-native-crypto.js.map +1 -0
  227. package/sdk/dist/node/{gitvault-open-or-create.d.ts → vault-open-or-create.d.ts} +16 -16
  228. package/sdk/dist/node/vault-open-or-create.d.ts.map +1 -0
  229. package/sdk/dist/node/{gitvault-open-or-create.js → vault-open-or-create.js} +10 -10
  230. package/sdk/dist/node/vault-open-or-create.js.map +1 -0
  231. package/sdk/dist/node/{gitvault-prewarm.d.ts → vault-prewarm.d.ts} +13 -13
  232. package/sdk/dist/node/vault-prewarm.d.ts.map +1 -0
  233. package/sdk/dist/node/{gitvault-prewarm.js → vault-prewarm.js} +25 -25
  234. package/sdk/dist/node/vault-prewarm.js.map +1 -0
  235. package/sdk/dist/node/{gitvault-profile-scan.d.ts → vault-profile-scan.d.ts} +3 -3
  236. package/sdk/dist/node/vault-profile-scan.d.ts.map +1 -0
  237. package/sdk/dist/node/{gitvault-profile-scan.js → vault-profile-scan.js} +12 -12
  238. package/sdk/dist/node/vault-profile-scan.js.map +1 -0
  239. package/sdk/dist/node/{gitvault-prune.d.ts → vault-prune.d.ts} +61 -61
  240. package/sdk/dist/node/vault-prune.d.ts.map +1 -0
  241. package/sdk/dist/node/{gitvault-prune.js → vault-prune.js} +34 -34
  242. package/sdk/dist/node/vault-prune.js.map +1 -0
  243. package/sdk/dist/node/{gitvault-publication.d.ts → vault-publication.d.ts} +399 -399
  244. package/sdk/dist/node/vault-publication.d.ts.map +1 -0
  245. package/sdk/dist/node/{gitvault-publication.js → vault-publication.js} +584 -584
  246. package/sdk/dist/node/vault-publication.js.map +1 -0
  247. package/sdk/dist/node/{gitvault-push-to-create.d.ts → vault-push-to-create.d.ts} +16 -16
  248. package/sdk/dist/node/vault-push-to-create.d.ts.map +1 -0
  249. package/sdk/dist/node/{gitvault-push-to-create.js → vault-push-to-create.js} +9 -9
  250. package/sdk/dist/node/vault-push-to-create.js.map +1 -0
  251. package/sdk/dist/node/{gitvault-recover.d.ts → vault-recover.d.ts} +50 -50
  252. package/sdk/dist/node/vault-recover.d.ts.map +1 -0
  253. package/sdk/dist/node/{gitvault-recover.js → vault-recover.js} +84 -84
  254. package/sdk/dist/node/vault-recover.js.map +1 -0
  255. package/sdk/dist/node/{gitvault-restore.d.ts → vault-restore.d.ts} +8 -8
  256. package/sdk/dist/node/vault-restore.d.ts.map +1 -0
  257. package/sdk/dist/node/{gitvault-restore.js → vault-restore.js} +11 -11
  258. package/sdk/dist/node/vault-restore.js.map +1 -0
  259. package/sdk/dist/node/{gitvault-snapshot.d.ts → vault-snapshot.d.ts} +48 -48
  260. package/sdk/dist/node/vault-snapshot.d.ts.map +1 -0
  261. package/sdk/dist/node/{gitvault-snapshot.js → vault-snapshot.js} +61 -61
  262. package/sdk/dist/node/vault-snapshot.js.map +1 -0
  263. package/sdk/dist/node/{gitvault-writer-state.d.ts → vault-writer-state.d.ts} +8 -8
  264. package/sdk/dist/node/vault-writer-state.d.ts.map +1 -0
  265. package/sdk/dist/node/{gitvault-writer-state.js → vault-writer-state.js} +15 -15
  266. package/sdk/dist/node/vault-writer-state.js.map +1 -0
  267. package/sdk/dist/node/workflow-output.js +4 -4
  268. package/sdk/dist/node/workflow-output.js.map +1 -1
  269. package/sdk/dist/scoped.d.ts +8 -8
  270. package/sdk/dist/scoped.d.ts.map +1 -1
  271. package/sdk/dist/scoped.js +3 -3
  272. package/sdk/dist/scoped.js.map +1 -1
  273. package/vault-surface.json +40 -0
  274. package/gitvault-surface.json +0 -89
  275. package/lib/cloud.mjs +0 -256
  276. package/lib/core.mjs +0 -123
  277. package/lib/gitvault.mjs +0 -163
  278. package/lib/source-access.mjs +0 -70
  279. package/sdk/dist/namespaces/gitvault.crypto.d.ts.map +0 -1
  280. package/sdk/dist/namespaces/gitvault.crypto.js.map +0 -1
  281. package/sdk/dist/namespaces/gitvault.d.ts.map +0 -1
  282. package/sdk/dist/namespaces/gitvault.js.map +0 -1
  283. package/sdk/dist/namespaces/gitvault.types.d.ts.map +0 -1
  284. package/sdk/dist/namespaces/gitvault.types.js.map +0 -1
  285. package/sdk/dist/node/gitvault-address.d.ts.map +0 -1
  286. package/sdk/dist/node/gitvault-address.js.map +0 -1
  287. package/sdk/dist/node/gitvault-apply.d.ts.map +0 -1
  288. package/sdk/dist/node/gitvault-apply.js.map +0 -1
  289. package/sdk/dist/node/gitvault-byo-config.d.ts +0 -29
  290. package/sdk/dist/node/gitvault-byo-config.d.ts.map +0 -1
  291. package/sdk/dist/node/gitvault-byo-config.js.map +0 -1
  292. package/sdk/dist/node/gitvault-byo-probe.d.ts +0 -20
  293. package/sdk/dist/node/gitvault-byo-probe.d.ts.map +0 -1
  294. package/sdk/dist/node/gitvault-byo-probe.js +0 -57
  295. package/sdk/dist/node/gitvault-byo-probe.js.map +0 -1
  296. package/sdk/dist/node/gitvault-creation-journal.d.ts.map +0 -1
  297. package/sdk/dist/node/gitvault-creation-journal.js.map +0 -1
  298. package/sdk/dist/node/gitvault-degraded-read.d.ts.map +0 -1
  299. package/sdk/dist/node/gitvault-degraded-read.js.map +0 -1
  300. package/sdk/dist/node/gitvault-deploy.d.ts.map +0 -1
  301. package/sdk/dist/node/gitvault-deploy.js.map +0 -1
  302. package/sdk/dist/node/gitvault-edge-fetch.d.ts.map +0 -1
  303. package/sdk/dist/node/gitvault-edge-fetch.js.map +0 -1
  304. package/sdk/dist/node/gitvault-handoff.d.ts.map +0 -1
  305. package/sdk/dist/node/gitvault-handoff.js.map +0 -1
  306. package/sdk/dist/node/gitvault-keystore.d.ts.map +0 -1
  307. package/sdk/dist/node/gitvault-keystore.js.map +0 -1
  308. package/sdk/dist/node/gitvault-member-bundle.d.ts.map +0 -1
  309. package/sdk/dist/node/gitvault-member-bundle.js.map +0 -1
  310. package/sdk/dist/node/gitvault-mirror-backend.d.ts.map +0 -1
  311. package/sdk/dist/node/gitvault-mirror-backend.js.map +0 -1
  312. package/sdk/dist/node/gitvault-mirror-config.d.ts.map +0 -1
  313. package/sdk/dist/node/gitvault-mirror-config.js.map +0 -1
  314. package/sdk/dist/node/gitvault-mirror.d.ts.map +0 -1
  315. package/sdk/dist/node/gitvault-mirror.js.map +0 -1
  316. package/sdk/dist/node/gitvault-native-crypto.d.ts.map +0 -1
  317. package/sdk/dist/node/gitvault-native-crypto.js.map +0 -1
  318. package/sdk/dist/node/gitvault-open-or-create.d.ts.map +0 -1
  319. package/sdk/dist/node/gitvault-open-or-create.js.map +0 -1
  320. package/sdk/dist/node/gitvault-prewarm.d.ts.map +0 -1
  321. package/sdk/dist/node/gitvault-prewarm.js.map +0 -1
  322. package/sdk/dist/node/gitvault-profile-scan.d.ts.map +0 -1
  323. package/sdk/dist/node/gitvault-profile-scan.js.map +0 -1
  324. package/sdk/dist/node/gitvault-prune.d.ts.map +0 -1
  325. package/sdk/dist/node/gitvault-prune.js.map +0 -1
  326. package/sdk/dist/node/gitvault-publication.d.ts.map +0 -1
  327. package/sdk/dist/node/gitvault-publication.js.map +0 -1
  328. package/sdk/dist/node/gitvault-push-to-create.d.ts.map +0 -1
  329. package/sdk/dist/node/gitvault-push-to-create.js.map +0 -1
  330. package/sdk/dist/node/gitvault-recover.d.ts.map +0 -1
  331. package/sdk/dist/node/gitvault-recover.js.map +0 -1
  332. package/sdk/dist/node/gitvault-restore.d.ts.map +0 -1
  333. package/sdk/dist/node/gitvault-restore.js.map +0 -1
  334. package/sdk/dist/node/gitvault-snapshot.d.ts.map +0 -1
  335. package/sdk/dist/node/gitvault-snapshot.js.map +0 -1
  336. package/sdk/dist/node/gitvault-writer-state.d.ts.map +0 -1
  337. package/sdk/dist/node/gitvault-writer-state.js.map +0 -1
package/lib/domains.mjs CHANGED
@@ -9,24 +9,24 @@ Usage:
9
9
  run402 domains <subcommand> [args...]
10
10
 
11
11
  Subcommands:
12
- connect <domain> [--project <id>] [--web] [--authority hosted-zone] [--email-send] [...]
13
- list [--project <id>] [--include-managed]
14
- status <domain> [--project <id>]
15
- dns <domain> [--project <id>] [--format json|bind]
16
- check <domain> [--project <id>]
17
- apply <domain> [--project <id>] [--authority auto|provider-connect|delegated-subdomain|hosted-zone]
18
- repair <domain> [--project <id>]
19
- test-receive <domain> --to <local-part|address> [--project <id>]
20
- wait <domain> [--project <id>] [--until active|safe|receive-active] [--timeout-ms <n>] [--interval-ms <n>]
21
- activate <domain> [--project <id>]
22
- disconnect <domain> --confirm [--project <id>]
12
+ connect <domain> [--project <project_id>] [--web] [--authority hosted-zone] [--email-send] [...]
13
+ list [--project <project_id>] [--include-managed]
14
+ status <domain> [--project <project_id>]
15
+ dns <domain> [--project <project_id>] [--format json|bind]
16
+ check <domain> [--project <project_id>]
17
+ apply <domain> [--project <project_id>] [--authority auto|provider-connect|delegated-subdomain|hosted-zone]
18
+ repair <domain> [--project <project_id>]
19
+ test-receive <domain> --to <local-part|address> [--project <project_id>]
20
+ wait <domain> [--project <project_id>] [--until active|safe|receive-active] [--timeout-ms <n>] [--interval-ms <n>]
21
+ activate <domain> [--project <project_id>]
22
+ disconnect <domain> --confirm [--project <project_id>]
23
23
  `;
24
24
 
25
25
  const SUB_HELP = {
26
26
  connect: `run402 domains connect — connect a ProjectDomain capability
27
27
 
28
28
  Usage:
29
- run402 domains connect <domain> --project <id> [--web] [--email-send] [--email-receive] [options]
29
+ run402 domains connect <domain> --project <project_id> [--web] [--email-send] [--email-receive] [options]
30
30
 
31
31
  Examples:
32
32
  run402 domains connect kysigned.com --project prj_123 --email-send --email-receive --mailbox-addresses primary --addresses info
@@ -42,52 +42,52 @@ Examples:
42
42
  list: `run402 domains list — list project domains
43
43
 
44
44
  Usage:
45
- run402 domains list --project <id>
45
+ run402 domains list --project <project_id>
46
46
  `,
47
47
  status: `run402 domains status — show one ProjectDomain aggregate
48
48
 
49
49
  Usage:
50
- run402 domains status <domain> --project <id>
50
+ run402 domains status <domain> --project <project_id>
51
51
  `,
52
52
  dns: `run402 domains dns — print required DNS records
53
53
 
54
54
  Usage:
55
- run402 domains dns <domain> --project <id> [--format json|bind]
55
+ run402 domains dns <domain> --project <project_id> [--format json|bind]
56
56
  `,
57
57
  check: `run402 domains check — refresh ProjectDomain observations and checks
58
58
 
59
59
  Usage:
60
- run402 domains check <domain> --project <id>
60
+ run402 domains check <domain> --project <project_id>
61
61
  `,
62
62
  apply: `run402 domains apply — apply safe provider-managed changes
63
63
 
64
64
  Usage:
65
- run402 domains apply <domain> --project <id> [--authority auto|provider-connect|delegated-subdomain|hosted-zone]
65
+ run402 domains apply <domain> --project <project_id> [--authority auto|provider-connect|delegated-subdomain|hosted-zone]
66
66
  `,
67
67
  repair: `run402 domains repair — repair Run402-owned domain infrastructure
68
68
 
69
69
  Usage:
70
- run402 domains repair <domain> --project <id>
70
+ run402 domains repair <domain> --project <project_id>
71
71
  `,
72
72
  "test-receive": `run402 domains test-receive — create an inbound receive test token
73
73
 
74
74
  Usage:
75
- run402 domains test-receive <domain> --project <id> --to <local-part|address>
75
+ run402 domains test-receive <domain> --project <project_id> --to <local-part|address>
76
76
  `,
77
77
  wait: `run402 domains wait — poll until a ProjectDomain is ready
78
78
 
79
79
  Usage:
80
- run402 domains wait <domain> --project <id> [--until active|safe|receive-active] [--timeout-ms <n>] [--interval-ms <n>]
80
+ run402 domains wait <domain> --project <project_id> [--until active|safe|receive-active] [--timeout-ms <n>] [--interval-ms <n>]
81
81
  `,
82
82
  activate: `run402 domains activate — activate custom mailbox addresses
83
83
 
84
84
  Usage:
85
- run402 domains activate <domain> --project <id>
85
+ run402 domains activate <domain> --project <project_id>
86
86
  `,
87
87
  disconnect: `run402 domains disconnect — disconnect a ProjectDomain
88
88
 
89
89
  Usage:
90
- run402 domains disconnect <domain> --project <id> --confirm
90
+ run402 domains disconnect <domain> --project <project_id> --confirm
91
91
  `,
92
92
  };
93
93
 
@@ -300,14 +300,14 @@ async function connect(args) {
300
300
  ], CONNECT_VALUE_FLAGS);
301
301
  const rest = positionalArgs(parsed, CONNECT_VALUE_FLAGS);
302
302
  const domain = rest[0];
303
- if (!domain) fail({ code: "BAD_USAGE", message: "Missing <domain>.", hint: "run402 domains connect <domain> --project <id> --web" });
303
+ if (!domain) fail({ code: "BAD_USAGE", message: "Missing <domain>.", hint: "run402 domains connect <domain> --project <project_id> --web" });
304
304
  if (rest.length > 1) fail({ code: "BAD_USAGE", message: `Unexpected argument for domains connect: ${rest[1]}` });
305
305
  if (parsed.includes("--create-mailboxes") && parsed.includes("--no-create-mailboxes")) {
306
306
  fail({ code: "BAD_FLAG", message: "Choose only one of --create-mailboxes or --no-create-mailboxes." });
307
307
  }
308
308
  const projectId = resolveProjectId(flagValue(parsed, "--project"));
309
309
  try {
310
- const result = await getSdk().domains.ensure(projectId, domain, { desired: desiredFromConnectFlags(domain, parsed) });
310
+ const result = await getSdk().domains.connect(projectId, { domain, desired: desiredFromConnectFlags(domain, parsed) });
311
311
  print(result);
312
312
  printHandoff(result);
313
313
  } catch (err) {
@@ -328,7 +328,7 @@ async function list(args) {
328
328
  async function status(args) {
329
329
  const { projectId, rest } = parseCommon(args);
330
330
  const domain = rest[0];
331
- if (!domain) fail({ code: "BAD_USAGE", message: "Missing <domain>.", hint: "run402 domains status <domain> [--project <id>]" });
331
+ if (!domain) fail({ code: "BAD_USAGE", message: "Missing <domain>.", hint: "run402 domains status <domain> [--project <project_id>]" });
332
332
  if (rest.length > 1) fail({ code: "BAD_USAGE", message: `Unexpected argument for domains status: ${rest[1]}` });
333
333
  try {
334
334
  print(await getSdk().domains.get(projectId, domain));
@@ -366,7 +366,7 @@ async function action(name, args) {
366
366
  assertKnownFlags(parsed, [...valueFlags, "--help", "-h"], valueFlags);
367
367
  const rest = positionalArgs(parsed, valueFlags);
368
368
  const domain = rest[0];
369
- if (!domain) fail({ code: "BAD_USAGE", message: `Missing <domain>.`, hint: `run402 domains ${name} <domain> [--project <id>]` });
369
+ if (!domain) fail({ code: "BAD_USAGE", message: `Missing <domain>.`, hint: `run402 domains ${name} <domain> [--project <project_id>]` });
370
370
  if (rest.length > 1) fail({ code: "BAD_USAGE", message: `Unexpected argument for domains ${name}: ${rest[1]}` });
371
371
  const projectId = resolveProjectId(flagValue(parsed, "--project"));
372
372
  try {
@@ -398,7 +398,7 @@ async function disconnect(args) {
398
398
  assertKnownFlags(parsed, [...valueFlags, "--confirm", "--help", "-h"], valueFlags);
399
399
  const rest = positionalArgs(parsed, valueFlags);
400
400
  const domain = rest[0];
401
- if (!domain) fail({ code: "BAD_USAGE", message: "Missing <domain>.", hint: "run402 domains disconnect <domain> --confirm [--project <id>]" });
401
+ if (!domain) fail({ code: "BAD_USAGE", message: "Missing <domain>.", hint: "run402 domains disconnect <domain> --confirm [--project <project_id>]" });
402
402
  if (!parsed.includes("--confirm")) {
403
403
  fail({
404
404
  code: "CONFIRMATION_REQUIRED",
package/lib/email.mjs CHANGED
@@ -74,51 +74,51 @@ Usage:
74
74
  run402 email <subcommand> [args...]
75
75
 
76
76
  Subcommands:
77
- create <slug> [--project <id>] Create a project-scoped mailbox local part
78
- mailboxes [--project <id>] List mailboxes with default-role metadata
77
+ create <slug> [--project <project_id>] Create a project-scoped mailbox local part
78
+ mailboxes [--project <project_id>] List mailboxes with default-role metadata
79
79
  and gateway next_actions
80
- defaults [--outbound <slug|id>] [--auth-sender <slug|id>] [--project <id>]
80
+ defaults [--outbound <slug|id>] [--auth-sender <slug|id>] [--project <project_id>]
81
81
  Show or set mailbox defaults. With no
82
82
  flags, prints current settings/candidates.
83
- update [<slug|id>] --footer-policy <run402_transparency|none> [--project <id>]
83
+ update [<slug|id>] --footer-policy <run402_transparency|none> [--project <project_id>]
84
84
  Update per-mailbox settings
85
- info [--project <id>] Show mailbox info, including footer policy
86
- status [--project <id>] Alias for 'info' (prefer 'info')
85
+ info [--project <project_id>] Show mailbox info, including footer policy
86
+ status [--project <project_id>] Alias for 'info' (prefer 'info')
87
87
  send --to <email> [mode flags] Send an email (template or raw HTML)
88
- list [--limit <n>] [--after <cursor>] [--direction <inbound|outbound>] [--project <id>]
88
+ list [--limit <n>] [--after <cursor>] [--direction <inbound|outbound>] [--project <project_id>]
89
89
  List messages (paginated). Returns BOTH
90
90
  sent + received by default; --direction
91
91
  inbound is the reconciliation backstop.
92
- get <message_id> [--project <id>] Get a message with replies
93
- get-raw <message_id> --output <file> [--project <id>]
92
+ get <message_id> [--project <project_id>] Get a message with replies
93
+ get-raw <message_id> --output <file> [--project <project_id>]
94
94
  Fetch raw RFC-822 bytes (inbound only).
95
95
  --output is required: bytes are written
96
96
  to the file; stdout receives a JSON
97
97
  envelope { message_id, bytes, output }.
98
- reply <message_id> --html "..." [--text "..."] [--subject "..."] [--from-name "..."] [--project <id>]
98
+ reply <message_id> --html "..." [--text "..."] [--subject "..."] [--from-name "..."] [--project <project_id>]
99
99
  Reply to an inbound message (threads via In-Reply-To)
100
- delete [<slug|mailbox_id>] --confirm [--project <id>]
100
+ delete [<slug|mailbox_id>] --confirm [--project <project_id>]
101
101
  Delete the project's mailbox (irreversible)
102
102
  webhooks <action> [args...] Manage webhooks (see below)
103
103
 
104
104
  Webhook subcommands:
105
- webhooks list [--project <id>] List webhooks
106
- webhooks get <webhook_id> [--project <id>] Get a webhook
107
- webhooks delete <webhook_id> [--project <id>] Delete a webhook
108
- webhooks update <webhook_id> [--url <url>] [--events <e1,e2>] [--project <id>]
105
+ webhooks list [--project <project_id>] List webhooks
106
+ webhooks get <webhook_id> [--project <project_id>] Get a webhook
107
+ webhooks delete <webhook_id> [--project <project_id>] Delete a webhook
108
+ webhooks update <webhook_id> [--url <url>] [--events <e1,e2>] [--project <project_id>]
109
109
  Update a webhook
110
- webhooks register --url <url> --events <e1,e2> [--project <id>]
110
+ webhooks register --url <url> --events <e1,e2> [--project <project_id>]
111
111
  Register a new webhook
112
- webhooks deliveries [--status <s>] [--project <id>]
112
+ webhooks deliveries [--status <s>] [--project <project_id>]
113
113
  List durable delivery rows (DLQ visibility)
114
- webhooks redrive <delivery_id> [--project <id>]
114
+ webhooks redrive <delivery_id> [--project <project_id>]
115
115
  Re-queue a dead-lettered delivery
116
116
 
117
117
  Send modes:
118
118
  Template: --template <name> --var key=value [--var ...] OR --vars '{"k":"v",...}'
119
119
  Raw HTML: --subject "..." --html "..." [--text "..."] (both --subject and --html required)
120
120
  Raw HTML also supports: --attach <path>[:content-type] (repeatable; max 5, 7 MB total)
121
- Both modes support: --from-name "Display Name" --project <id>
121
+ Both modes support: --from-name "Display Name" --project <project_id>
122
122
 
123
123
  Choosing a mailbox:
124
124
  --mailbox <slug|id> Target a specific mailbox. Accepted by send, list, get,
@@ -185,12 +185,12 @@ Options:
185
185
  extension when the :content-type suffix is omitted.
186
186
  --from-name "..." Display name for the From header
187
187
  --mailbox <slug|id> Target mailbox. Omit to use default_outbound_mailbox_id.
188
- --project <id> Project ID (defaults to the active project)
188
+ --project <project_id> Project ID (defaults to the active project)
189
189
  `,
190
190
  list: `run402 email list — List messages in the mailbox
191
191
 
192
192
  Usage:
193
- run402 email list [--mailbox <slug|id>] [--limit <n>] [--after <cursor>] [--project <id>]
193
+ run402 email list [--mailbox <slug|id>] [--limit <n>] [--after <cursor>] [--project <project_id>]
194
194
  `,
195
195
  reply: `run402 email reply — Reply to an inbound message (threaded via In-Reply-To)
196
196
 
@@ -200,17 +200,17 @@ Usage:
200
200
  delete: `run402 email delete — Delete the project's mailbox (irreversible)
201
201
 
202
202
  Usage:
203
- run402 email delete [<slug|mailbox_id>] --confirm [--project <id>]
203
+ run402 email delete [<slug|mailbox_id>] --confirm [--project <project_id>]
204
204
  `,
205
205
  info: `run402 email info — Show mailbox info, including footer policy
206
206
 
207
207
  Usage:
208
- run402 email info [--project <id>]
208
+ run402 email info [--project <project_id>]
209
209
  `,
210
210
  status: `run402 email status — Alias for 'run402 email info' (prefer 'info')
211
211
 
212
212
  Usage:
213
- run402 email status [--project <id>]
213
+ run402 email status [--project <project_id>]
214
214
 
215
215
  See 'run402 email info --help' for details. 'status' is kept for backward
216
216
  compatibility; new code should use 'info'.
@@ -218,7 +218,7 @@ compatibility; new code should use 'info'.
218
218
  "get-raw": `run402 email get-raw — Fetch raw RFC-822 bytes for an inbound message
219
219
 
220
220
  Usage:
221
- run402 email get-raw <message_id> --output <file> [--project <id>]
221
+ run402 email get-raw <message_id> --output <file> [--project <project_id>]
222
222
 
223
223
  Arguments:
224
224
  <message_id> Inbound message ID
@@ -228,14 +228,14 @@ Options:
228
228
  stdout receives a JSON envelope
229
229
  { message_id, bytes, output } — the MIME body is never
230
230
  written to stdout, so the CLI stays pipeable.
231
- --project <id> Project ID (defaults to the active project)
231
+ --project <project_id> Project ID (defaults to the active project)
232
232
  --mailbox <slug|id> Target a specific mailbox (required when the project
233
233
  has more than one)
234
234
  `,
235
235
  create: `run402 email create — Create a project mailbox
236
236
 
237
237
  Usage:
238
- run402 email create <slug> [--project <id>]
238
+ run402 email create <slug> [--project <project_id>]
239
239
 
240
240
  Arguments:
241
241
  <slug> Mailbox slug (3-63 chars, lowercase alphanumeric +
@@ -244,7 +244,7 @@ Arguments:
244
244
  <slug>@<project-mail-host>.mail.run402.com.
245
245
 
246
246
  Options:
247
- --project <id> Project ID (defaults to the active project)
247
+ --project <project_id> Project ID (defaults to the active project)
248
248
 
249
249
  Notes:
250
250
  - Up to 5 mailboxes per project; the same slug may be used by another project
@@ -256,7 +256,7 @@ Examples:
256
256
  mailboxes: `run402 email mailboxes — List project mailboxes
257
257
 
258
258
  Usage:
259
- run402 email mailboxes [--project <id>]
259
+ run402 email mailboxes [--project <project_id>]
260
260
 
261
261
  Returns JSON: { mailboxes, mailbox_settings?, next_actions? }. Mailbox rows
262
262
  include default-role/readiness metadata when the gateway provides it.
@@ -264,41 +264,41 @@ include default-role/readiness metadata when the gateway provides it.
264
264
  defaults: `run402 email defaults — Show or set mailbox defaults
265
265
 
266
266
  Usage:
267
- run402 email defaults [--project <id>]
268
- run402 email defaults --outbound <slug|mbx_id> [--auth-sender <slug|mbx_id>] [--project <id>]
269
- run402 email defaults --auth-sender <slug|mbx_id> [--project <id>]
267
+ run402 email defaults [--project <project_id>]
268
+ run402 email defaults --outbound <slug|mbx_id> [--auth-sender <slug|mbx_id>] [--project <project_id>]
269
+ run402 email defaults --auth-sender <slug|mbx_id> [--project <project_id>]
270
270
 
271
271
  Options:
272
272
  --outbound <slug|mbx_id> Set default_outbound_mailbox_id
273
273
  --auth-sender <slug|mbx_id> Set auth_sender_mailbox_id
274
274
  --clear-outbound Clear default_outbound_mailbox_id
275
275
  --clear-auth-sender Clear auth_sender_mailbox_id
276
- --project <id> Project ID (defaults to the active project)
276
+ --project <project_id> Project ID (defaults to the active project)
277
277
  `,
278
278
  update: `run402 email update — Update per-mailbox settings
279
279
 
280
280
  Usage:
281
- run402 email update [<slug|mbx_id>] --footer-policy <run402_transparency|none> [--project <id>]
282
- run402 email update --mailbox <slug|mbx_id> --footer-policy <run402_transparency|none> [--project <id>]
281
+ run402 email update [<slug|mbx_id>] --footer-policy <run402_transparency|none> [--project <project_id>]
282
+ run402 email update --mailbox <slug|mbx_id> --footer-policy <run402_transparency|none> [--project <project_id>]
283
283
 
284
284
  Options:
285
285
  --footer-policy <policy> Outbound footer policy. Use run402_transparency or none.
286
286
  Prototype projects are locked to run402_transparency;
287
287
  attempts to set none return FOOTER_POLICY_TIER_REQUIRED.
288
288
  --mailbox <slug|id> Target mailbox; omit only when the project has one mailbox.
289
- --project <id> Project ID (defaults to the active project)
289
+ --project <project_id> Project ID (defaults to the active project)
290
290
  `,
291
291
  get: `run402 email get — Get a message with replies
292
292
 
293
293
  Usage:
294
- run402 email get <message_id> [--mailbox <slug|id>] [--project <id>]
294
+ run402 email get <message_id> [--mailbox <slug|id>] [--project <project_id>]
295
295
 
296
296
  Arguments:
297
297
  <message_id> Message ID to fetch
298
298
 
299
299
  Options:
300
300
  --mailbox <slug|id> Target mailbox. Omit to use default_outbound_mailbox_id.
301
- --project <id> Project ID (defaults to the active project)
301
+ --project <project_id> Project ID (defaults to the active project)
302
302
 
303
303
  Examples:
304
304
  run402 email get msg_abc123 --mailbox support
package/lib/errors.mjs CHANGED
@@ -30,6 +30,7 @@ import {
30
30
  normalizeArgv,
31
31
  parseIntegerFlag,
32
32
  positionalArgs,
33
+ failUnknownSubcommand,
33
34
  } from "./argparse.mjs";
34
35
 
35
36
  /** Wire `kind` vocabulary (mirrors the gateway's KINDS set). */
@@ -43,10 +44,10 @@ export const DEFAULT_INTERVAL_MS = 15000;
43
44
  const HELP = `run402 errors — grouped error fingerprints + a promote/revert verdict
44
45
 
45
46
  Usage:
46
- run402 errors [--project <id>] [filters] [--human]
47
- run402 errors <fingerprint_id> [--project <id>] [--human]
48
- run402 errors --new-in <release_id|active> --fail-on-new [--human]
49
- run402 errors --new-in <release_id|active> --watch <dur> [--fail-on-new]
47
+ run402 errors list [--project <project_id>] [filters] [--human]
48
+ run402 errors get <fingerprint_id> [--project <project_id>] [--human]
49
+ run402 errors list --new-in <release_id|active> --fail-on-new [--human]
50
+ run402 errors list --new-in <release_id|active> --watch <dur> [--fail-on-new]
50
51
 
51
52
  What this is:
52
53
  A "fingerprint" is one error IDENTITY — errors with the same normalized
@@ -66,12 +67,12 @@ What this is:
66
67
  under that release; "active" resolves the project's live release.
67
68
 
68
69
  Filters (each maps 1:1 to a query param):
69
- --project <id> Project to read (defaults to the active project)
70
+ --project <project_id> Project to read (defaults to the active project)
70
71
  --since <iso> Window start (ISO-8601). Default: 24h before --until
71
72
  --until <iso> Window end (ISO-8601). Default: now
72
73
  --function <name> Only this function's fingerprints
73
74
  --kind <kind> One of: ${KINDS.join(", ")}
74
- --fingerprint <id> Only this fingerprint id (exact)
75
+ --fingerprint <fingerprint_id> Only this fingerprint id (exact)
75
76
  --new-in <rel|active> Only identities first seen under this release
76
77
  (a release id, or the literal "active" for live)
77
78
  --limit <n> Page size (default 50, max 200)
@@ -115,30 +116,38 @@ Auth:
115
116
  leaks existence). Read-only; never lifecycle-gated.
116
117
 
117
118
  The golden path — gate a promote:
118
- run402 deploy promote --project <id> --release <rel>
119
- run402 errors --project <id> --new-in <rel> --watch 10m --fail-on-new
119
+ run402 deploy promote <release_id> --project <project_id>
120
+ run402 errors list --project <project_id> --new-in <release_id> --watch 10m --fail-on-new
120
121
  # exit 0 -> the new release is clean; exit 1 -> revert, drill in via logs.
121
122
  # (a promote response already hands you this exact command in next_actions
122
123
  # as the "watch_errors" action — copy it verbatim.)
123
124
 
124
125
  Examples:
125
- run402 errors # last 24h, verdict + groups
126
- run402 errors --function checkout --kind uncaught
127
- run402 errors --since 2026-07-11T00:00:00Z --limit 200
128
- run402 errors fp_9b21fa # one fingerprint, all samples
129
- run402 errors --new-in active # what's new under the live release
130
- run402 errors --new-in rel_01JX --fail-on-new # one-shot gate (CI)
131
- run402 errors --new-in rel_01JX --watch 10m --interval 30s --fail-on-new
126
+ run402 errors list # last 24h, verdict + groups
127
+ run402 errors list --function checkout --kind uncaught
128
+ run402 errors list --since 2026-07-11T00:00:00Z --limit 200
129
+ run402 errors get fp_9b21fa # one fingerprint, all samples
130
+ run402 errors list --new-in active # what's new under the live release
131
+ run402 errors list --new-in rel_01JX --fail-on-new # one-shot gate (CI)
132
+ run402 errors list --new-in rel_01JX --watch 10m --interval 30s --fail-on-new
132
133
  `;
133
134
 
134
135
  export async function run(sub, args = []) {
135
- const argv = [sub, ...(Array.isArray(args) ? args : [])].filter((x) => x !== undefined && x !== null);
136
- if (argv.includes("--help") || argv.includes("-h")) {
136
+ const rest = Array.isArray(args) ? args : [];
137
+ if (sub === undefined || sub === null || sub === "--help" || sub === "-h" || rest.includes("--help") || rest.includes("-h")) {
137
138
  console.log(HELP);
138
139
  process.exit(0);
139
140
  }
141
+ switch (sub) {
142
+ case "list": return runErrors("list", rest);
143
+ case "get": return runErrors("get", rest);
144
+ default:
145
+ failUnknownSubcommand("errors", sub);
146
+ }
147
+ }
140
148
 
141
- const a = normalizeArgv(argv);
149
+ async function runErrors(mode, args) {
150
+ const a = normalizeArgv(args);
142
151
  const valueFlags = [
143
152
  "--project", "--since", "--until", "--function", "--kind",
144
153
  "--fingerprint", "--new-in", "--limit", "--cursor", "--watch", "--interval",
@@ -147,14 +156,21 @@ export async function run(sub, args = []) {
147
156
  assertKnownFlags(a, [...valueFlags, ...boolFlags], valueFlags);
148
157
 
149
158
  const positionals = positionalArgs(a, valueFlags);
150
- if (positionals.length > 1) {
159
+ if (mode === "list" && positionals.length > 0) {
160
+ fail({
161
+ code: "BAD_USAGE",
162
+ message: `Unexpected argument for errors list: ${positionals[0]}`,
163
+ hint: "Read one fingerprint with `run402 errors get <fingerprint_id>`. Run `run402 errors --help`.",
164
+ });
165
+ }
166
+ if (mode === "get" && positionals.length !== 1) {
151
167
  fail({
152
168
  code: "BAD_USAGE",
153
- message: `Unexpected extra argument: ${positionals[1]}`,
154
- hint: "Pass at most one <fingerprint_id> for the detail view. Run `run402 errors --help`.",
169
+ message: positionals.length === 0 ? "Missing <fingerprint_id>." : `Unexpected extra argument: ${positionals[1]}`,
170
+ hint: "Usage: run402 errors get <fingerprint_id> [--project <project_id>] [--human]",
155
171
  });
156
172
  }
157
- const fingerprintId = positionals[0] ?? null;
173
+ const fingerprintId = mode === "get" ? positionals[0] : null;
158
174
  // Output contract (cli-output-shape): JSON is ALWAYS the default. `--json`
159
175
  // is a universally-accepted no-op; human rendering is the `--human`
160
176
  // opt-out, matching `run402 up`. Never gate stdout shape on `--json`.
@@ -183,8 +199,8 @@ export async function run(sub, args = []) {
183
199
  if (offending) {
184
200
  fail({
185
201
  code: "BAD_USAGE",
186
- message: `${offending} is not valid with a <fingerprint_id> (detail view).`,
187
- hint: "Detail view accepts only --project and --human. Drop the fingerprint id to list + get a verdict.",
202
+ message: `${offending} is not valid with errors get <fingerprint_id>.`,
203
+ hint: "errors get accepts only --project and --human. Use `run402 errors list` to list + get a verdict.",
188
204
  });
189
205
  }
190
206
  const projectId = resolveProjectId(project);
@@ -29,7 +29,7 @@ const ORG_FLAGS = ["--org", "--project"];
29
29
  const HELP = `run402 escalations — page a human when you judge you need one
30
30
 
31
31
  Usage:
32
- run402 escalations raise <reason> [--severity high] [--wait] [--project <id>]
32
+ run402 escalations raise <reason> [--severity high] [--wait] [--project <project_id>]
33
33
  run402 escalations list [--status open] [--limit <n>] [--cursor <c>]
34
34
  run402 escalations get <escalation_id> [--delivery]
35
35
  run402 escalations ack <escalation_id>
@@ -48,12 +48,12 @@ WHEN TO RAISE — the judgement is yours, and that is the product:
48
48
 
49
49
  The flow: judge -> raise -> wait -> proceed-or-stand-down.
50
50
  \`--wait\` blocks until a human acknowledges (polls for you). Without it,
51
- poll \`run402 escalations get <id>\` yourself. \`acknowledged\` means a NAMED
51
+ poll \`run402 escalations get <escalation_id>\` yourself. \`acknowledged\` means a NAMED
52
52
  human owns it — then do what they say, or stand down. Silence is not consent.
53
53
 
54
54
  Addressing:
55
55
  (default) The active project's organization — a checkout needs no flags.
56
- --project <id> Resolve the org from another project.
56
+ --project <project_id> Resolve the org from another project.
57
57
  --org <org_id> Explicit organization.
58
58
 
59
59
  Delivery:
@@ -235,7 +235,7 @@ async function contacts(args) {
235
235
  fail({
236
236
  code: "COMMAND_REMOVED",
237
237
  message: "`run402 escalations contacts` moved to `run402 contacts`.",
238
- hint: sub === "remove" ? "run402 contacts rm <id>" : `run402 contacts ${sub ?? "list"}`,
238
+ hint: sub === "remove" ? "run402 contacts rm <contact_id>" : `run402 contacts ${sub ?? "list"}`,
239
239
  details: {
240
240
  was: `escalations contacts${sub ? ` ${sub}` : ""}`,
241
241
  now: "contacts",
package/lib/events.mjs CHANGED
@@ -4,7 +4,7 @@
4
4
  * since I last looked": deploy activations, mailbox suspensions, transfers,
5
5
  * lifecycle cliffs, verification outcomes — each with platform-synthesized
6
6
  * next_actions drill-downs. The feed also carries app-emitted business
7
- * facts (a deployed function's own `events.emit(...)` calls) alongside the
7
+ * events (a deployed function's own `events.emit(...)` calls) alongside the
8
8
  * platform's own events — filter with --source/--type.
9
9
  *
10
10
  * JSON envelope to stdout (pipe contract); flags map 1:1 to the HTTP query.
@@ -15,7 +15,7 @@
15
15
  import { resolveProjectId } from "./config.mjs";
16
16
  import { getSdk } from "./sdk.mjs";
17
17
  import { reportSdkError, fail } from "./sdk-errors.mjs";
18
- import { assertAllowedValue, assertKnownFlags, flagValue, normalizeArgv, positionalArgs } from "./argparse.mjs";
18
+ import { assertAllowedValue, assertKnownFlags, flagValue, normalizeArgv, positionalArgs, failUnknownSubcommand } from "./argparse.mjs";
19
19
 
20
20
  /** Wire `source` vocabulary (mirrors the gateway's app/platform dichotomy). */
21
21
  export const SOURCES = ["app", "platform"];
@@ -23,15 +23,15 @@ export const SOURCES = ["app", "platform"];
23
23
  const HELP = `run402 events — what happened to your project since you last looked
24
24
 
25
25
  Usage:
26
- run402 events [--project <project_id>] [--cursor <cursor>] [--limit <n>]
27
- [--source <app|platform>] [--type <name[,name]>]
28
- run402 events --org <org_id> [--cursor <cursor>] [--limit <n>]
29
- [--source <app|platform>] [--type <name[,name]>]
26
+ run402 events list [--project <project_id>] [--cursor <cursor>] [--limit <n>]
27
+ [--source <app|platform>] [--type <name[,name]>]
28
+ run402 events list --org <org_id> [--cursor <cursor>] [--limit <n>]
29
+ [--source <app|platform>] [--type <name[,name]>]
30
30
 
31
31
  Options:
32
- --project <id> Project to read (defaults to the active project)
33
- --org <id> Read the org-wide feed instead — a SUPERSET of the project
34
- feeds: it also carries org-level facts (project_id null)
32
+ --project <project_id> Project to read (defaults to the active project)
33
+ --org <org_id> Read the org-wide feed instead — a SUPERSET of the project
34
+ feeds: it also carries org-level events (project_id null)
35
35
  --cursor <cursor> Opaque cursor from a previous response. Returns events strictly
36
36
  after it. Omit on first contact to start from the earliest
37
37
  retained event.
@@ -45,7 +45,7 @@ App events vs platform events:
45
45
  operational record (deploy activations, mailbox suspensions, transfers,
46
46
  lifecycle cliffs, verification outcomes, ...) — the platform's internal
47
47
  producers (gateway, email-lambda, ...) all collapse under this one value.
48
- "app" is business facts a deployed function emitted itself via
48
+ "app" is business events a deployed function emitted itself via
49
49
  \`events.emit(type, payload?, {idempotencyKey?})\` from @run402/functions —
50
50
  e.g. "signature_completed" or "booking_created". Consumers should key on
51
51
  the PAIR (source, event_type) together: app event_type names are free-form
@@ -58,7 +58,7 @@ The cursor model — an id is not a cursor:
58
58
  your repo, a memory note — wherever you keep state) and pass it back as
59
59
  --cursor next time. One call then returns everything you missed.
60
60
  - Two opaque tokens, and they are different things. An event's "id" names a
61
- FACT: the same event has the same id in the project feed and the org feed,
61
+ EVENT: the same event has the same id in the project feed and the org feed,
62
62
  which is how you dedup across both. The page "cursor" names a POSITION,
63
63
  and a position only means something inside the row set it came from.
64
64
  - So a cursor is NOT portable. Replaying a --project cursor against --org,
@@ -84,9 +84,9 @@ When your cursor is unusable (reset semantics):
84
84
  Event shape:
85
85
  { "id", "project_id", "event_type", "class", "occurred_at", "payload",
86
86
  "next_actions" }
87
- project_id is what the fact is ABOUT. It is null for an org-level fact —
87
+ project_id is what the event is ABOUT. It is null for an org-level event —
88
88
  one that belongs to the org and to no project, visible only via --org. It
89
- may also name a project that no longer exists: a fact outlives the project
89
+ may also name a project that no longer exists: an event outlives the project
90
90
  it describes, so deleting a project no longer erases its history.
91
91
  event_type is flat snake_case: deploy_activated, mailbox_suspended,
92
92
  project_transfer_completed, organization_past_due, verification_failed,
@@ -107,30 +107,37 @@ own deploy_activated event — poll once after deploying to establish your
107
107
  cursor, then catch up next session in one call.
108
108
 
109
109
  Examples:
110
- run402 events # active project, from the earliest retained event
111
- run402 events --cursor evc_1a2b # everything since last time
112
- run402 events --project prj_abc --limit 200
113
- run402 events --org 00000000-0000-0000-0000-aaaaaaaaaaaa --cursor evc_9z
114
- run402 events --source app # just this project's own emitted business facts
115
- run402 events --source app --type signature_completed,booking_created
116
- run402 events --source platform # just the platform's operational record
110
+ run402 events list # active project, from the earliest retained event
111
+ run402 events list --cursor evc_1a2b # everything since last time
112
+ run402 events list --project prj_abc --limit 200
113
+ run402 events list --org 00000000-0000-0000-0000-aaaaaaaaaaaa --cursor evc_9z
114
+ run402 events list --source app # just this project's own emitted business events
115
+ run402 events list --source app --type signature_completed,booking_created
116
+ run402 events list --source platform # just the platform's operational record
117
117
  `;
118
118
 
119
119
  export async function run(sub, args) {
120
- // Flat command: no subcommands. `sub` is the first arg (may be a flag).
121
- const argv = [sub, ...(Array.isArray(args) ? args : [])].filter((a) => a !== undefined && a !== null);
122
- if (argv.includes("--help") || argv.includes("-h")) {
120
+ const rest = Array.isArray(args) ? args : [];
121
+ if (sub === undefined || sub === null || sub === "--help" || sub === "-h" || rest.includes("--help") || rest.includes("-h")) {
123
122
  console.log(HELP);
124
123
  process.exit(0);
125
124
  }
126
- const a = normalizeArgv(argv);
125
+ switch (sub) {
126
+ case "list": return list(rest);
127
+ default:
128
+ failUnknownSubcommand("events", sub);
129
+ }
130
+ }
131
+
132
+ async function list(args) {
133
+ const a = normalizeArgv(args);
127
134
  const valueFlags = ["--project", "--org", "--cursor", "--limit", "--source", "--type"];
128
135
  assertKnownFlags(a, [...valueFlags, "--help", "-h"], valueFlags);
129
136
  const extra = positionalArgs(a, valueFlags);
130
137
  if (extra.length > 0) {
131
138
  fail({
132
139
  code: "BAD_USAGE",
133
- message: `Unexpected argument for events: ${extra[0]}`,
140
+ message: `Unexpected argument for events list: ${extra[0]}`,
134
141
  hint: "Run `run402 events --help` for usage.",
135
142
  });
136
143
  }
package/lib/feedback.mjs CHANGED
@@ -56,7 +56,7 @@ Arguments:
56
56
  joined with spaces if multiple are provided)
57
57
 
58
58
  Flags:
59
- --project <id> Project this feedback concerns. Required to relay a
59
+ --project <project_id> Project this feedback concerns. Required to relay a
60
60
  promotion consent (the hand_to_member next action
61
61
  from a deploy response) — the server resolves the
62
62
  project's site URL, org, and your presence name for
@@ -74,7 +74,7 @@ Notes:
74
74
  hand_to_member next action, show your human urls.site and
75
75
  urls.console, relay that Run402 would like to promote what they built
76
76
  on @run402com for free (credited to credited_as and to them), and ask
77
- yes or no. On yes: run402 feedback send "promote: yes" --project <id>
77
+ yes or no. On yes: run402 feedback send "promote: yes" --project <project_id>
78
78
  [--handle <handle>]
79
79
 
80
80
  Examples: