run402-mcp 4.93.2 → 4.95.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 (495) hide show
  1. package/README.md +73 -73
  2. package/core/dist/config.d.ts +16 -2
  3. package/core/dist/config.d.ts.map +1 -1
  4. package/core/dist/config.js +52 -18
  5. package/core/dist/config.js.map +1 -1
  6. package/core/dist/control-plane-session.d.ts +29 -14
  7. package/core/dist/control-plane-session.d.ts.map +1 -1
  8. package/core/dist/control-plane-session.js +31 -6
  9. package/core/dist/control-plane-session.js.map +1 -1
  10. package/core/dist/keystore.js +7 -7
  11. package/core/dist/keystore.js.map +1 -1
  12. package/core/dist/profiles.d.ts +3 -3
  13. package/core/dist/profiles.d.ts.map +1 -1
  14. package/core/dist/profiles.js +9 -7
  15. package/core/dist/profiles.js.map +1 -1
  16. package/core/dist/{allowance-auth.d.ts → wallet-auth.d.ts} +6 -6
  17. package/core/dist/wallet-auth.d.ts.map +1 -0
  18. package/{sdk/core-dist/allowance-auth.js → core/dist/wallet-auth.js} +15 -15
  19. package/core/dist/wallet-auth.js.map +1 -0
  20. package/core/dist/wallet.d.ts +22 -0
  21. package/core/dist/wallet.d.ts.map +1 -0
  22. package/core/dist/{allowance.js → wallet.js} +20 -20
  23. package/core/dist/wallet.js.map +1 -0
  24. package/core/dist/{write-auth-session.d.ts → write-approvals.d.ts} +28 -26
  25. package/core/dist/write-approvals.d.ts.map +1 -0
  26. package/{sdk/core-dist/write-auth-session.js → core/dist/write-approvals.js} +19 -19
  27. package/core/dist/write-approvals.js.map +1 -0
  28. package/dist/active-project.js +2 -2
  29. package/dist/active-project.js.map +1 -1
  30. package/dist/config.d.ts +1 -1
  31. package/dist/config.d.ts.map +1 -1
  32. package/dist/config.js +1 -1
  33. package/dist/config.js.map +1 -1
  34. package/dist/errors.d.ts.map +1 -1
  35. package/dist/errors.js +14 -9
  36. package/dist/errors.js.map +1 -1
  37. package/dist/format-bytes.d.ts +2 -0
  38. package/dist/format-bytes.d.ts.map +1 -0
  39. package/dist/format-bytes.js +24 -0
  40. package/dist/format-bytes.js.map +1 -0
  41. package/dist/index.js +68 -65
  42. package/dist/index.js.map +1 -1
  43. package/dist/sdk.js +2 -2
  44. package/dist/sdk.js.map +1 -1
  45. package/dist/tool-profiles.d.ts +6 -6
  46. package/dist/tool-profiles.d.ts.map +1 -1
  47. package/dist/tool-profiles.js +11 -11
  48. package/dist/tool-profiles.js.map +1 -1
  49. package/dist/tools/admin-reactivate-project.js +1 -1
  50. package/dist/tools/admin-reactivate-project.js.map +1 -1
  51. package/dist/tools/admin-set-lease-perpetual.js +1 -1
  52. package/dist/tools/admin-set-lease-perpetual.js.map +1 -1
  53. package/dist/tools/check-balance.js +4 -4
  54. package/dist/tools/check-balance.js.map +1 -1
  55. package/dist/tools/ci.js +1 -1
  56. package/dist/tools/ci.js.map +1 -1
  57. package/dist/tools/create-email-organization.js +1 -1
  58. package/dist/tools/create-email-organization.js.map +1 -1
  59. package/dist/tools/create-notification-rule.js +3 -3
  60. package/dist/tools/create-notification-rule.js.map +1 -1
  61. package/dist/tools/delete-notification-rule.js +2 -2
  62. package/dist/tools/delete-notification-rule.js.map +1 -1
  63. package/dist/tools/deploy-events.js +2 -2
  64. package/dist/tools/deploy-events.js.map +1 -1
  65. package/dist/tools/deploy-list.js +2 -2
  66. package/dist/tools/deploy-list.js.map +1 -1
  67. package/dist/tools/deploy-rehearse.js +4 -4
  68. package/dist/tools/deploy-rehearse.js.map +1 -1
  69. package/dist/tools/{deploy-release.d.ts → deploy-releases.d.ts} +9 -9
  70. package/dist/tools/deploy-releases.d.ts.map +1 -0
  71. package/dist/tools/{deploy-release.js → deploy-releases.js} +9 -9
  72. package/dist/tools/deploy-releases.js.map +1 -0
  73. package/dist/tools/{deploy-diagnose-url.d.ts → deploy-resolve.d.ts} +4 -4
  74. package/dist/tools/deploy-resolve.d.ts.map +1 -0
  75. package/dist/tools/{deploy-diagnose-url.js → deploy-resolve.js} +6 -6
  76. package/dist/tools/deploy-resolve.js.map +1 -0
  77. package/dist/tools/deploy-resume.js +2 -2
  78. package/dist/tools/deploy-resume.js.map +1 -1
  79. package/dist/tools/deploy-site-dir.js +2 -2
  80. package/dist/tools/deploy-site-dir.js.map +1 -1
  81. package/dist/tools/deploy-site.js +2 -2
  82. package/dist/tools/deploy-site.js.map +1 -1
  83. package/dist/tools/deploy-verify-edge.js +2 -2
  84. package/dist/tools/deploy-verify-edge.js.map +1 -1
  85. package/dist/tools/deploy.js +3 -3
  86. package/dist/tools/deploy.js.map +1 -1
  87. package/dist/tools/domains.d.ts +2 -2
  88. package/dist/tools/domains.d.ts.map +1 -1
  89. package/dist/tools/domains.js +6 -5
  90. package/dist/tools/domains.js.map +1 -1
  91. package/dist/tools/fork-app.js +2 -2
  92. package/dist/tools/fork-app.js.map +1 -1
  93. package/dist/tools/generate-image.js +5 -5
  94. package/dist/tools/generate-image.js.map +1 -1
  95. package/dist/tools/get-agent-contact-status.js +2 -2
  96. package/dist/tools/get-agent-contact-status.js.map +1 -1
  97. package/dist/tools/get-buzz-route.js +1 -1
  98. package/dist/tools/get-buzz-route.js.map +1 -1
  99. package/dist/tools/get-notification-preferences.js +2 -2
  100. package/dist/tools/get-notification-preferences.js.map +1 -1
  101. package/dist/tools/get-quote.js +3 -3
  102. package/dist/tools/get-quote.js.map +1 -1
  103. package/dist/tools/get-room.d.ts +20 -0
  104. package/dist/tools/get-room.d.ts.map +1 -0
  105. package/dist/tools/get-room.js +25 -0
  106. package/dist/tools/get-room.js.map +1 -0
  107. package/dist/tools/get-usage.d.ts.map +1 -1
  108. package/dist/tools/get-usage.js +4 -3
  109. package/dist/tools/get-usage.js.map +1 -1
  110. package/dist/tools/init.js +36 -36
  111. package/dist/tools/init.js.map +1 -1
  112. package/dist/tools/leave-room.d.ts +22 -0
  113. package/dist/tools/leave-room.d.ts.map +1 -0
  114. package/dist/tools/leave-room.js +40 -0
  115. package/dist/tools/leave-room.js.map +1 -0
  116. package/dist/tools/lightning-topup.js +1 -1
  117. package/dist/tools/lightning-topup.js.map +1 -1
  118. package/dist/tools/lightning-wallet.d.ts +2 -2
  119. package/dist/tools/lightning-wallet.js +9 -9
  120. package/dist/tools/lightning-wallet.js.map +1 -1
  121. package/dist/tools/link-wallet-to-organization.d.ts.map +1 -1
  122. package/dist/tools/link-wallet-to-organization.js +4 -3
  123. package/dist/tools/link-wallet-to-organization.js.map +1 -1
  124. package/dist/tools/list-notification-channels.js +2 -2
  125. package/dist/tools/list-notification-channels.js.map +1 -1
  126. package/dist/tools/list-notification-rules.js +2 -2
  127. package/dist/tools/list-notification-rules.js.map +1 -1
  128. package/dist/tools/list-notifications.js +2 -2
  129. package/dist/tools/list-notifications.js.map +1 -1
  130. package/dist/tools/list-projects.js +1 -1
  131. package/dist/tools/list-projects.js.map +1 -1
  132. package/dist/tools/list-rooms.d.ts +18 -0
  133. package/dist/tools/list-rooms.d.ts.map +1 -0
  134. package/dist/tools/list-rooms.js +28 -0
  135. package/dist/tools/list-rooms.js.map +1 -0
  136. package/dist/tools/list-subdomains.js +1 -1
  137. package/dist/tools/list-subdomains.js.map +1 -1
  138. package/dist/tools/orgs.d.ts +4 -4
  139. package/dist/tools/orgs.d.ts.map +1 -1
  140. package/dist/tools/orgs.js +28 -7
  141. package/dist/tools/orgs.js.map +1 -1
  142. package/dist/tools/project-archives.js +1 -1
  143. package/dist/tools/project-archives.js.map +1 -1
  144. package/dist/tools/provision-signer.js +1 -1
  145. package/dist/tools/provision-signer.js.map +1 -1
  146. package/dist/tools/provision.js +3 -3
  147. package/dist/tools/provision.js.map +1 -1
  148. package/dist/tools/redeem-voucher.js +5 -5
  149. package/dist/tools/redeem-voucher.js.map +1 -1
  150. package/dist/tools/request-faucet.js +9 -9
  151. package/dist/tools/request-faucet.js.map +1 -1
  152. package/dist/tools/rotate-webhook-secret.js +2 -2
  153. package/dist/tools/rotate-webhook-secret.js.map +1 -1
  154. package/dist/tools/send-feedback.js +3 -3
  155. package/dist/tools/send-feedback.js.map +1 -1
  156. package/dist/tools/set-agent-contact.js +2 -2
  157. package/dist/tools/set-agent-contact.js.map +1 -1
  158. package/dist/tools/set-notification-preferences.js +3 -3
  159. package/dist/tools/set-notification-preferences.js.map +1 -1
  160. package/dist/tools/start-contact-passkey-enrollment.d.ts +9 -0
  161. package/dist/tools/start-contact-passkey-enrollment.d.ts.map +1 -0
  162. package/dist/tools/start-contact-passkey-enrollment.js +18 -0
  163. package/dist/tools/start-contact-passkey-enrollment.js.map +1 -0
  164. package/dist/tools/status.d.ts.map +1 -1
  165. package/dist/tools/status.js +17 -16
  166. package/dist/tools/status.js.map +1 -1
  167. package/dist/tools/subdomain.d.ts +2 -2
  168. package/dist/tools/subdomain.d.ts.map +1 -1
  169. package/dist/tools/subdomain.js +4 -4
  170. package/dist/tools/subdomain.js.map +1 -1
  171. package/dist/tools/test-notification.js +2 -2
  172. package/dist/tools/test-notification.js.map +1 -1
  173. package/dist/tools/{set-tier.d.ts → tier-set.d.ts} +3 -3
  174. package/dist/tools/{set-tier.d.ts.map → tier-set.d.ts.map} +1 -1
  175. package/dist/tools/{set-tier.js → tier-set.js} +14 -8
  176. package/dist/tools/tier-set.js.map +1 -0
  177. package/dist/tools/tier-status.d.ts.map +1 -1
  178. package/dist/tools/tier-status.js +6 -4
  179. package/dist/tools/tier-status.js.map +1 -1
  180. package/dist/tools/transfers.d.ts +9 -15
  181. package/dist/tools/transfers.d.ts.map +1 -1
  182. package/dist/tools/transfers.js +44 -58
  183. package/dist/tools/transfers.js.map +1 -1
  184. package/dist/tools/{app-up.d.ts → up.d.ts} +3 -3
  185. package/dist/tools/up.d.ts.map +1 -0
  186. package/dist/tools/{app-up.js → up.js} +6 -6
  187. package/dist/tools/up.js.map +1 -0
  188. package/dist/tools/verify-agent-contact-email.js +2 -2
  189. package/dist/tools/verify-agent-contact-email.js.map +1 -1
  190. package/dist/tools/wallet-create.d.ts +9 -0
  191. package/dist/tools/wallet-create.d.ts.map +1 -0
  192. package/dist/tools/{allowance-create.js → wallet-create.js} +8 -8
  193. package/dist/tools/wallet-create.js.map +1 -0
  194. package/dist/tools/wallet-export.d.ts +9 -0
  195. package/dist/tools/wallet-export.d.ts.map +1 -0
  196. package/dist/tools/{allowance-export.js → wallet-export.js} +6 -6
  197. package/dist/tools/wallet-export.js.map +1 -0
  198. package/dist/tools/wallet-status.d.ts +9 -0
  199. package/dist/tools/wallet-status.d.ts.map +1 -0
  200. package/dist/tools/wallet-status.js +33 -0
  201. package/dist/tools/wallet-status.js.map +1 -0
  202. package/dist/wallet-auth.d.ts +21 -0
  203. package/dist/wallet-auth.d.ts.map +1 -0
  204. package/dist/wallet-auth.js +32 -0
  205. package/dist/wallet-auth.js.map +1 -0
  206. package/dist/wallet.d.ts +3 -0
  207. package/dist/wallet.d.ts.map +1 -0
  208. package/dist/wallet.js +2 -0
  209. package/dist/wallet.js.map +1 -0
  210. package/package.json +3 -3
  211. package/schemas/release-spec.v1.json +2 -6
  212. package/sdk/README.md +40 -38
  213. package/sdk/core-dist/config.d.ts +16 -2
  214. package/sdk/core-dist/config.js +52 -18
  215. package/sdk/core-dist/control-plane-session.d.ts +29 -14
  216. package/sdk/core-dist/control-plane-session.js +31 -6
  217. package/sdk/core-dist/keystore.js +7 -7
  218. package/sdk/core-dist/profiles.d.ts +3 -3
  219. package/sdk/core-dist/profiles.js +9 -7
  220. package/sdk/core-dist/{allowance-auth.d.ts → wallet-auth.d.ts} +6 -6
  221. package/{core/dist/allowance-auth.js → sdk/core-dist/wallet-auth.js} +15 -15
  222. package/sdk/core-dist/wallet.d.ts +22 -0
  223. package/sdk/core-dist/{allowance.js → wallet.js} +20 -20
  224. package/sdk/core-dist/{write-auth-session.d.ts → write-approvals.d.ts} +28 -26
  225. package/{core/dist/write-auth-session.js → sdk/core-dist/write-approvals.js} +19 -19
  226. package/sdk/dist/actions.d.ts +4 -4
  227. package/sdk/dist/actions.d.ts.map +1 -1
  228. package/sdk/dist/app-up.d.ts +2 -2
  229. package/sdk/dist/app-up.d.ts.map +1 -1
  230. package/sdk/dist/config.d.ts +1 -2
  231. package/sdk/dist/config.d.ts.map +1 -1
  232. package/sdk/dist/config.js.map +1 -1
  233. package/sdk/dist/control-plane-credentials.d.ts +8 -8
  234. package/sdk/dist/control-plane-credentials.js +7 -7
  235. package/sdk/dist/credentials.d.ts +20 -20
  236. package/sdk/dist/credentials.d.ts.map +1 -1
  237. package/sdk/dist/credentials.js +1 -1
  238. package/sdk/dist/errors.d.ts +26 -28
  239. package/sdk/dist/errors.d.ts.map +1 -1
  240. package/sdk/dist/errors.js +35 -38
  241. package/sdk/dist/errors.js.map +1 -1
  242. package/sdk/dist/index.d.ts +29 -16
  243. package/sdk/dist/index.d.ts.map +1 -1
  244. package/sdk/dist/index.js +30 -17
  245. package/sdk/dist/index.js.map +1 -1
  246. package/sdk/dist/kernel.d.ts +1 -1
  247. package/sdk/dist/kernel.d.ts.map +1 -1
  248. package/sdk/dist/kernel.js +10 -9
  249. package/sdk/dist/kernel.js.map +1 -1
  250. package/sdk/dist/namespaces/admin.d.ts +52 -121
  251. package/sdk/dist/namespaces/admin.d.ts.map +1 -1
  252. package/sdk/dist/namespaces/admin.js +41 -45
  253. package/sdk/dist/namespaces/admin.js.map +1 -1
  254. package/sdk/dist/namespaces/agent.d.ts +2 -2
  255. package/sdk/dist/namespaces/agent.d.ts.map +1 -1
  256. package/sdk/dist/namespaces/agent.js +2 -2
  257. package/sdk/dist/namespaces/agent.js.map +1 -1
  258. package/sdk/dist/namespaces/ai.d.ts +2 -2
  259. package/sdk/dist/namespaces/ai.js +3 -3
  260. package/sdk/dist/namespaces/ai.js.map +1 -1
  261. package/sdk/dist/namespaces/assets.js +1 -1
  262. package/sdk/dist/namespaces/assets.js.map +1 -1
  263. package/sdk/dist/namespaces/billing.d.ts +6 -3
  264. package/sdk/dist/namespaces/billing.d.ts.map +1 -1
  265. package/sdk/dist/namespaces/billing.js.map +1 -1
  266. package/sdk/dist/namespaces/buzz-notifications.types.d.ts +1 -1
  267. package/sdk/dist/namespaces/buzz.d.ts +2 -2
  268. package/sdk/dist/namespaces/buzz.d.ts.map +1 -1
  269. package/sdk/dist/namespaces/buzz.js +2 -2
  270. package/sdk/dist/namespaces/buzz.js.map +1 -1
  271. package/sdk/dist/namespaces/buzz.types.d.ts +2 -2
  272. package/sdk/dist/namespaces/buzz.types.d.ts.map +1 -1
  273. package/sdk/dist/namespaces/ci.js +3 -3
  274. package/sdk/dist/namespaces/ci.js.map +1 -1
  275. package/sdk/dist/namespaces/credentials.types.d.ts +1 -1
  276. package/sdk/dist/namespaces/deploy.d.ts +1 -1
  277. package/sdk/dist/namespaces/deploy.d.ts.map +1 -1
  278. package/sdk/dist/namespaces/deploy.js +31 -32
  279. package/sdk/dist/namespaces/deploy.js.map +1 -1
  280. package/sdk/dist/namespaces/deploy.types.d.ts +6 -6
  281. package/sdk/dist/namespaces/deploy.types.d.ts.map +1 -1
  282. package/sdk/dist/namespaces/domains.d.ts +10 -2
  283. package/sdk/dist/namespaces/domains.d.ts.map +1 -1
  284. package/sdk/dist/namespaces/domains.js +10 -5
  285. package/sdk/dist/namespaces/domains.js.map +1 -1
  286. package/sdk/dist/namespaces/errors.js +1 -1
  287. package/sdk/dist/namespaces/escalations.d.ts +1 -1
  288. package/sdk/dist/namespaces/escalations.js +1 -1
  289. package/sdk/dist/namespaces/escalations.types.d.ts +2 -2
  290. package/sdk/dist/namespaces/escalations.types.d.ts.map +1 -1
  291. package/sdk/dist/namespaces/events.types.d.ts +1 -1
  292. package/sdk/dist/namespaces/functions.d.ts +1 -1
  293. package/sdk/dist/namespaces/functions.js +2 -2
  294. package/sdk/dist/namespaces/functions.js.map +1 -1
  295. package/sdk/dist/namespaces/gitvault.crypto.d.ts +1 -1
  296. package/sdk/dist/namespaces/gitvault.d.ts +26 -26
  297. package/sdk/dist/namespaces/gitvault.d.ts.map +1 -1
  298. package/sdk/dist/namespaces/gitvault.js +113 -113
  299. package/sdk/dist/namespaces/gitvault.js.map +1 -1
  300. package/sdk/dist/namespaces/me.d.ts +120 -0
  301. package/sdk/dist/namespaces/me.d.ts.map +1 -0
  302. package/sdk/dist/namespaces/me.js +34 -0
  303. package/sdk/dist/namespaces/me.js.map +1 -0
  304. package/sdk/dist/namespaces/org.d.ts +108 -6
  305. package/sdk/dist/namespaces/org.d.ts.map +1 -1
  306. package/sdk/dist/namespaces/org.js +63 -7
  307. package/sdk/dist/namespaces/org.js.map +1 -1
  308. package/sdk/dist/namespaces/org.types.d.ts +29 -9
  309. package/sdk/dist/namespaces/org.types.d.ts.map +1 -1
  310. package/sdk/dist/namespaces/pay.js +3 -3
  311. package/sdk/dist/namespaces/pay.js.map +1 -1
  312. package/sdk/dist/namespaces/projects.d.ts +9 -9
  313. package/sdk/dist/namespaces/projects.js +15 -15
  314. package/sdk/dist/namespaces/projects.js.map +1 -1
  315. package/sdk/dist/namespaces/projects.types.d.ts +28 -12
  316. package/sdk/dist/namespaces/projects.types.d.ts.map +1 -1
  317. package/sdk/dist/namespaces/rooms.d.ts +7 -7
  318. package/sdk/dist/namespaces/rooms.js +17 -17
  319. package/sdk/dist/namespaces/rooms.js.map +1 -1
  320. package/sdk/dist/namespaces/rooms.types.d.ts +9 -9
  321. package/sdk/dist/namespaces/rooms.types.d.ts.map +1 -1
  322. package/sdk/dist/namespaces/service.d.ts +1 -1
  323. package/sdk/dist/namespaces/service.js +1 -1
  324. package/sdk/dist/namespaces/{operator-session.d.ts → session.d.ts} +135 -51
  325. package/sdk/dist/namespaces/session.d.ts.map +1 -0
  326. package/sdk/dist/namespaces/{operator-session.js → session.js} +118 -30
  327. package/sdk/dist/namespaces/session.js.map +1 -0
  328. package/sdk/dist/namespaces/subdomains.d.ts +5 -5
  329. package/sdk/dist/namespaces/subdomains.d.ts.map +1 -1
  330. package/sdk/dist/namespaces/subdomains.js +6 -6
  331. package/sdk/dist/namespaces/subdomains.js.map +1 -1
  332. package/sdk/dist/namespaces/tier.d.ts +44 -21
  333. package/sdk/dist/namespaces/tier.d.ts.map +1 -1
  334. package/sdk/dist/namespaces/tier.js +7 -7
  335. package/sdk/dist/namespaces/tier.js.map +1 -1
  336. package/sdk/dist/namespaces/transfers.d.ts +119 -85
  337. package/sdk/dist/namespaces/transfers.d.ts.map +1 -1
  338. package/sdk/dist/namespaces/transfers.js +31 -38
  339. package/sdk/dist/namespaces/transfers.js.map +1 -1
  340. package/sdk/dist/namespaces/vouchers.d.ts +9 -10
  341. package/sdk/dist/namespaces/vouchers.d.ts.map +1 -1
  342. package/sdk/dist/namespaces/vouchers.js +4 -5
  343. package/sdk/dist/namespaces/vouchers.js.map +1 -1
  344. package/sdk/dist/namespaces/wallets.d.ts +72 -3
  345. package/sdk/dist/namespaces/wallets.d.ts.map +1 -1
  346. package/sdk/dist/namespaces/wallets.js +141 -3
  347. package/sdk/dist/namespaces/wallets.js.map +1 -1
  348. package/sdk/dist/namespaces/write-approval.d.ts +101 -0
  349. package/sdk/dist/namespaces/write-approval.d.ts.map +1 -0
  350. package/sdk/dist/namespaces/write-approval.js +62 -0
  351. package/sdk/dist/namespaces/write-approval.js.map +1 -0
  352. package/sdk/dist/node/actions-node.d.ts +3 -3
  353. package/sdk/dist/node/actions-node.d.ts.map +1 -1
  354. package/sdk/dist/node/actions-node.js +44 -44
  355. package/sdk/dist/node/actions-node.js.map +1 -1
  356. package/sdk/dist/node/assets-node.js +6 -6
  357. package/sdk/dist/node/assets-node.js.map +1 -1
  358. package/sdk/dist/node/{bearer-claim-key.d.ts → bearer-redeem-key.d.ts} +12 -12
  359. package/sdk/dist/node/bearer-redeem-key.d.ts.map +1 -0
  360. package/sdk/dist/node/{bearer-claim-key.js → bearer-redeem-key.js} +21 -21
  361. package/sdk/dist/node/bearer-redeem-key.js.map +1 -0
  362. package/sdk/dist/node/ci.d.ts +1 -1
  363. package/sdk/dist/node/ci.d.ts.map +1 -1
  364. package/sdk/dist/node/ci.js +6 -6
  365. package/sdk/dist/node/ci.js.map +1 -1
  366. package/sdk/dist/node/credentials.d.ts +18 -17
  367. package/sdk/dist/node/credentials.d.ts.map +1 -1
  368. package/sdk/dist/node/credentials.js +29 -28
  369. package/sdk/dist/node/credentials.js.map +1 -1
  370. package/sdk/dist/node/deploy-manifest.d.ts +3 -5
  371. package/sdk/dist/node/deploy-manifest.d.ts.map +1 -1
  372. package/sdk/dist/node/deploy-manifest.js +3 -12
  373. package/sdk/dist/node/deploy-manifest.js.map +1 -1
  374. package/sdk/dist/node/funding-recovery.d.ts +1 -1
  375. package/sdk/dist/node/funding-recovery.d.ts.map +1 -1
  376. package/sdk/dist/node/funding-recovery.js +1 -1
  377. package/sdk/dist/node/funding-recovery.js.map +1 -1
  378. package/sdk/dist/node/gitvault-apply.d.ts +1 -1
  379. package/sdk/dist/node/gitvault-apply.d.ts.map +1 -1
  380. package/sdk/dist/node/gitvault-apply.js +1 -1
  381. package/sdk/dist/node/gitvault-apply.js.map +1 -1
  382. package/sdk/dist/node/gitvault-handoff.d.ts +22 -22
  383. package/sdk/dist/node/gitvault-handoff.d.ts.map +1 -1
  384. package/sdk/dist/node/gitvault-handoff.js +45 -45
  385. package/sdk/dist/node/gitvault-handoff.js.map +1 -1
  386. package/sdk/dist/node/gitvault-prewarm.js +7 -7
  387. package/sdk/dist/node/gitvault-prewarm.js.map +1 -1
  388. package/sdk/dist/node/gitvault-restore.d.ts +1 -1
  389. package/sdk/dist/node/gitvault-restore.js +1 -1
  390. package/sdk/dist/node/index.d.ts +16 -16
  391. package/sdk/dist/node/index.d.ts.map +1 -1
  392. package/sdk/dist/node/index.js +15 -15
  393. package/sdk/dist/node/index.js.map +1 -1
  394. package/sdk/dist/node/manifest-export.js +2 -2
  395. package/sdk/dist/node/manifest-export.js.map +1 -1
  396. package/sdk/dist/node/org-adopt.d.ts +49 -0
  397. package/sdk/dist/node/org-adopt.d.ts.map +1 -0
  398. package/sdk/dist/node/org-adopt.js +77 -0
  399. package/sdk/dist/node/org-adopt.js.map +1 -0
  400. package/sdk/dist/node/paid-fetch.d.ts +7 -7
  401. package/sdk/dist/node/paid-fetch.d.ts.map +1 -1
  402. package/sdk/dist/node/paid-fetch.js +54 -54
  403. package/sdk/dist/node/paid-fetch.js.map +1 -1
  404. package/sdk/dist/node/preflight.d.ts +1 -1
  405. package/sdk/dist/node/preflight.d.ts.map +1 -1
  406. package/sdk/dist/node/preflight.js +1 -1
  407. package/sdk/dist/node/preflight.js.map +1 -1
  408. package/sdk/dist/node/sites-node.js +1 -1
  409. package/sdk/dist/node/sites-node.js.map +1 -1
  410. package/sdk/dist/node/source-scan.d.ts +1 -1
  411. package/sdk/dist/node/source-scan.js +2 -2
  412. package/sdk/dist/node/source-scan.js.map +1 -1
  413. package/sdk/dist/scoped.d.ts +11 -11
  414. package/sdk/dist/scoped.d.ts.map +1 -1
  415. package/sdk/dist/scoped.js +5 -5
  416. package/sdk/dist/scoped.js.map +1 -1
  417. package/core/dist/allowance-auth.d.ts.map +0 -1
  418. package/core/dist/allowance-auth.js.map +0 -1
  419. package/core/dist/allowance.d.ts +0 -22
  420. package/core/dist/allowance.d.ts.map +0 -1
  421. package/core/dist/allowance.js.map +0 -1
  422. package/core/dist/operator-session.d.ts +0 -80
  423. package/core/dist/operator-session.d.ts.map +0 -1
  424. package/core/dist/operator-session.js +0 -154
  425. package/core/dist/operator-session.js.map +0 -1
  426. package/core/dist/write-auth-session.d.ts.map +0 -1
  427. package/core/dist/write-auth-session.js.map +0 -1
  428. package/dist/allowance-auth.d.ts +0 -21
  429. package/dist/allowance-auth.d.ts.map +0 -1
  430. package/dist/allowance-auth.js +0 -32
  431. package/dist/allowance-auth.js.map +0 -1
  432. package/dist/allowance.d.ts +0 -3
  433. package/dist/allowance.d.ts.map +0 -1
  434. package/dist/allowance.js +0 -2
  435. package/dist/allowance.js.map +0 -1
  436. package/dist/tools/add-custom-domain.d.ts +0 -18
  437. package/dist/tools/add-custom-domain.d.ts.map +0 -1
  438. package/dist/tools/add-custom-domain.js +0 -19
  439. package/dist/tools/add-custom-domain.js.map +0 -1
  440. package/dist/tools/allowance-create.d.ts +0 -9
  441. package/dist/tools/allowance-create.d.ts.map +0 -1
  442. package/dist/tools/allowance-create.js.map +0 -1
  443. package/dist/tools/allowance-export.d.ts +0 -9
  444. package/dist/tools/allowance-export.d.ts.map +0 -1
  445. package/dist/tools/allowance-export.js.map +0 -1
  446. package/dist/tools/allowance-status.d.ts +0 -9
  447. package/dist/tools/allowance-status.d.ts.map +0 -1
  448. package/dist/tools/allowance-status.js +0 -33
  449. package/dist/tools/allowance-status.js.map +0 -1
  450. package/dist/tools/app-up.d.ts.map +0 -1
  451. package/dist/tools/app-up.js.map +0 -1
  452. package/dist/tools/check-domain-status.d.ts +0 -16
  453. package/dist/tools/check-domain-status.d.ts.map +0 -1
  454. package/dist/tools/check-domain-status.js +0 -12
  455. package/dist/tools/check-domain-status.js.map +0 -1
  456. package/dist/tools/deploy-diagnose-url.d.ts.map +0 -1
  457. package/dist/tools/deploy-diagnose-url.js.map +0 -1
  458. package/dist/tools/deploy-release.d.ts.map +0 -1
  459. package/dist/tools/deploy-release.js.map +0 -1
  460. package/dist/tools/get-operator-status.d.ts +0 -9
  461. package/dist/tools/get-operator-status.d.ts.map +0 -1
  462. package/dist/tools/get-operator-status.js +0 -17
  463. package/dist/tools/get-operator-status.js.map +0 -1
  464. package/dist/tools/list-custom-domains.d.ts +0 -14
  465. package/dist/tools/list-custom-domains.d.ts.map +0 -1
  466. package/dist/tools/list-custom-domains.js +0 -11
  467. package/dist/tools/list-custom-domains.js.map +0 -1
  468. package/dist/tools/remove-custom-domain.d.ts +0 -16
  469. package/dist/tools/remove-custom-domain.d.ts.map +0 -1
  470. package/dist/tools/remove-custom-domain.js +0 -15
  471. package/dist/tools/remove-custom-domain.js.map +0 -1
  472. package/dist/tools/set-tier.js.map +0 -1
  473. package/dist/tools/start-operator-passkey-enrollment.d.ts +0 -9
  474. package/dist/tools/start-operator-passkey-enrollment.d.ts.map +0 -1
  475. package/dist/tools/start-operator-passkey-enrollment.js +0 -18
  476. package/dist/tools/start-operator-passkey-enrollment.js.map +0 -1
  477. package/sdk/core-dist/allowance.d.ts +0 -22
  478. package/sdk/core-dist/operator-session.d.ts +0 -80
  479. package/sdk/core-dist/operator-session.js +0 -154
  480. package/sdk/dist/namespaces/allowance.d.ts +0 -79
  481. package/sdk/dist/namespaces/allowance.d.ts.map +0 -1
  482. package/sdk/dist/namespaces/allowance.js +0 -149
  483. package/sdk/dist/namespaces/allowance.js.map +0 -1
  484. package/sdk/dist/namespaces/operator-session.d.ts.map +0 -1
  485. package/sdk/dist/namespaces/operator-session.js.map +0 -1
  486. package/sdk/dist/namespaces/operator.d.ts +0 -359
  487. package/sdk/dist/namespaces/operator.d.ts.map +0 -1
  488. package/sdk/dist/namespaces/operator.js +0 -272
  489. package/sdk/dist/namespaces/operator.js.map +0 -1
  490. package/sdk/dist/node/bearer-claim-key.d.ts.map +0 -1
  491. package/sdk/dist/node/bearer-claim-key.js.map +0 -1
  492. package/sdk/dist/node/operator-claim.d.ts +0 -49
  493. package/sdk/dist/node/operator-claim.d.ts.map +0 -1
  494. package/sdk/dist/node/operator-claim.js +0 -77
  495. package/sdk/dist/node/operator-claim.js.map +0 -1
@@ -1,12 +1,12 @@
1
1
  /**
2
- * Allowance auth helper — generates SIWX (Sign-In With X / EIP-4361) headers for Run402 API.
2
+ * SIWX auth helper — generates SIWX (Sign-In With X / EIP-4361) headers for Run402 API.
3
3
  * Uses @noble/curves (lighter than viem) for signing.
4
4
  */
5
5
  import { randomBytes } from "node:crypto";
6
6
  import { secp256k1 } from "@noble/curves/secp256k1.js";
7
7
  import { keccak_256 } from "@noble/hashes/sha3.js";
8
8
  import { bytesToHex } from "@noble/hashes/utils.js";
9
- import { readAllowance } from "./allowance.js";
9
+ import { readWallet } from "./wallet.js";
10
10
  import { getApiBase } from "./config.js";
11
11
  /**
12
12
  * EIP-55 mixed-case checksum encoding.
@@ -21,7 +21,7 @@ export function toChecksumAddress(address) {
21
21
  return checksummed;
22
22
  }
23
23
  /**
24
- * EIP-191 personal_sign: sign a message with the allowance's private key.
24
+ * EIP-191 personal_sign: sign a message with the wallet's private key.
25
25
  */
26
26
  function personalSign(privateKeyHex, address, message) {
27
27
  const msgBytes = new TextEncoder().encode(message);
@@ -86,11 +86,11 @@ export function formatSIWEMessage(opts, address) {
86
86
  return lines.join("\n");
87
87
  }
88
88
  export function buildSIWxAuthHeaders(opts) {
89
- const message = formatSIWEMessage(opts, opts.allowance.address);
90
- const signature = personalSign(opts.allowance.privateKey, opts.allowance.address, message);
89
+ const message = formatSIWEMessage(opts, opts.wallet.address);
90
+ const signature = personalSign(opts.wallet.privateKey, opts.wallet.address, message);
91
91
  const payload = {
92
92
  domain: opts.domain,
93
- address: toChecksumAddress(opts.allowance.address),
93
+ address: toChecksumAddress(opts.wallet.address),
94
94
  statement: opts.statement,
95
95
  uri: opts.uri,
96
96
  version: opts.version ?? "1",
@@ -110,18 +110,18 @@ export function buildSIWxAuthHeaders(opts) {
110
110
  }
111
111
  /**
112
112
  * Get SIWX auth headers for the Run402 API.
113
- * Returns null if no allowance is configured.
113
+ * Returns null if no local wallet is configured.
114
114
  *
115
115
  * @param path - API path (e.g. "/projects/v1") used to build the SIWE uri field.
116
116
  */
117
- export function getAllowanceAuthHeaders(path, allowancePath) {
118
- // readAllowance throws on a malformed-shape allowance file. The
119
- // CLI's higher-level readAllowance wrapper surfaces this as a structured
120
- // BAD_ALLOWANCE_FILE envelope; here we preserve the public contract that
117
+ export function getWalletAuthHeaders(path, walletPath) {
118
+ // readWallet throws on a malformed-shape wallet file. The
119
+ // CLI's higher-level readWallet wrapper surfaces this as a structured
120
+ // BAD_WALLET_FILE envelope; here we preserve the public contract that
121
121
  // this helper returns SIWxAuthHeaders | null. Re-throw so callers above
122
122
  // the CLI's wrapper (e.g. SDK paid-fetch) can decide whether to swallow it.
123
- const allowance = readAllowance(allowancePath);
124
- if (!allowance || !allowance.address || !allowance.privateKey)
123
+ const localWallet = readWallet(walletPath);
124
+ if (!localWallet || !localWallet.address || !localWallet.privateKey)
125
125
  return null;
126
126
  const apiBase = getApiBase();
127
127
  const url = new URL(apiBase);
@@ -132,7 +132,7 @@ export function getAllowanceAuthHeaders(path, allowancePath) {
132
132
  const issuedAt = now.toISOString();
133
133
  const expirationTime = new Date(now.getTime() + 5 * 60 * 1000).toISOString();
134
134
  return buildSIWxAuthHeaders({
135
- allowance,
135
+ wallet: localWallet,
136
136
  domain,
137
137
  uri,
138
138
  statement: "Sign in to Run402",
@@ -151,4 +151,4 @@ function messageChainId(chainId) {
151
151
  function payloadChainId(chainId) {
152
152
  return typeof chainId === "number" ? `eip155:${chainId}` : chainId;
153
153
  }
154
- //# sourceMappingURL=allowance-auth.js.map
154
+ //# sourceMappingURL=wallet-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-auth.js","sourceRoot":"","sources":["../src/wallet-auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export interface WalletData {
2
+ address: string;
3
+ privateKey: string;
4
+ created?: string;
5
+ funded?: boolean;
6
+ lastFaucet?: string;
7
+ rail?: "x402" | "mpp" | "lightning";
8
+ /** The Lightning wallet (`run402 init lightning`): a budgeted wallet on Run402's Hub. `nwc` is the pairing secret. */
9
+ lightning?: WalletLightning;
10
+ }
11
+ export interface WalletLightning {
12
+ wallet_id: string;
13
+ nwc: string;
14
+ lightning_address: string | null;
15
+ budget_sats: number;
16
+ starter_sats: number;
17
+ custody: "run402_hub";
18
+ minted_at: string;
19
+ }
20
+ export declare function readWallet(path?: string): WalletData | null;
21
+ export declare function saveWallet(data: WalletData, path?: string): void;
22
+ //# sourceMappingURL=wallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,WAAW,CAAC;IACpC,sHAAsH;IACtH,SAAS,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAkDD,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAwC3D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAQhE"}
@@ -1,36 +1,36 @@
1
1
  import { readFileSync, writeFileSync, mkdirSync, existsSync, chmodSync, renameSync, statSync } from "node:fs";
2
2
  import { dirname, join } from "node:path";
3
3
  import { randomBytes } from "node:crypto";
4
- import { getAllowancePath } from "./config.js";
4
+ import { getWalletPath } from "./config.js";
5
5
  // 0x-prefixed 40-hex EVM address.
6
6
  const ADDRESS_RE = /^0x[a-fA-F0-9]{40}$/;
7
7
  // 0x-prefixed 64-hex secp256k1 private key (32 bytes).
8
8
  const PRIVATE_KEY_RE = /^0x[a-fA-F0-9]{64}$/;
9
9
  /**
10
- * Load the agent allowance from disk.
10
+ * Load the agent wallet from disk.
11
11
  *
12
- * Returns `null` for the two "no allowance configured" cases:
12
+ * Returns `null` for the two "no local wallet configured" cases:
13
13
  * - the file does not exist
14
14
  * - the file exists but is not parseable JSON (preserve existing UX —
15
- * consumers print "no_allowance" and tell the user to run init)
15
+ * consumers print "no_wallet" and tell the user to run init)
16
16
  *
17
17
  * Throws a structured `Error` when the file parses as JSON but the
18
18
  * shape is wrong (missing/wrong-type/wrong-length fields). Without this guard
19
19
  * downstream callers crash with raw stack traces:
20
- * - `cli/lib/status.mjs` reaches for `allowance.address.toLowerCase()`
20
+ * - `cli/lib/status.mjs` reaches for `wallet.address.toLowerCase()`
21
21
  * and crashes with `TypeError: Cannot read properties of undefined`.
22
- * - `core/src/allowance-auth.ts` passes a malformed `privateKey` to
22
+ * - `core/src/wallet-auth.ts` passes a malformed `privateKey` to
23
23
  * `@noble/curves` which throws "expected 32 bytes, got N".
24
24
  *
25
- * The CLI's `cli/lib/config.mjs:readAllowance()` wrapper and the MCP
25
+ * The CLI's `cli/lib/config.mjs:readWallet()` wrapper and the MCP
26
26
  * `src/tools/{status,init}.ts` callers translate the throw into their own
27
- * structured envelopes (`code: BAD_ALLOWANCE_FILE`).
27
+ * structured envelopes (`code: BAD_WALLET_FILE`).
28
28
  */
29
29
  /**
30
- * If an allowance file is readable by group or other (any of the low 0o077
30
+ * If a wallet file is readable by group or other (any of the low 0o077
31
31
  * bits set), tighten it to 0600 and warn once on stderr. This self-heals the
32
32
  * historical case where a legacy world-readable `wallet.json` (mode 0644) was
33
- * migrated to `allowance.json` via a mode-preserving rename, leaving the
33
+ * migrated to `wallet.json` via a mode-preserving rename, leaving the
34
34
  * private key exposed on a shared machine. Best-effort: POSIX-only and silent
35
35
  * on platforms without meaningful Unix modes (e.g. Windows).
36
36
  */
@@ -48,8 +48,8 @@ function selfHealPermissions(p) {
48
48
  // Best-effort; never block a read on a chmod/stat failure.
49
49
  }
50
50
  }
51
- export function readAllowance(path) {
52
- const p = path ?? getAllowancePath();
51
+ export function readWallet(path) {
52
+ const p = path ?? getWalletPath();
53
53
  if (!existsSync(p))
54
54
  return null;
55
55
  selfHealPermissions(p);
@@ -66,31 +66,31 @@ export function readAllowance(path) {
66
66
  }
67
67
  catch {
68
68
  // Preserve historical UX — completely unparseable input reads as "no
69
- // allowance configured" rather than as an error. Consumers already handle
69
+ // wallet configured" rather than as an error. Consumers already handle
70
70
  // null with a friendly "run 'run402 init'" message.
71
71
  return null;
72
72
  }
73
73
  if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
74
- throw new Error(`allowance.json must contain a JSON object (got ${Array.isArray(parsed) ? "array" : parsed === null ? "null" : typeof parsed}). Back up the file and run 'run402 init' to recreate it.`);
74
+ throw new Error(`wallet.json must contain a JSON object (got ${Array.isArray(parsed) ? "array" : parsed === null ? "null" : typeof parsed}). Back up the file and run 'run402 init' to recreate it.`);
75
75
  }
76
76
  const data = parsed;
77
77
  if (typeof data.address !== "string" || !ADDRESS_RE.test(data.address)) {
78
- throw new Error("allowance.json missing valid 'address' (expected 0x-prefixed 40-hex string). " +
78
+ throw new Error("wallet.json missing valid 'address' (expected 0x-prefixed 40-hex string). " +
79
79
  "Back up the file and run 'run402 init' to recreate it.");
80
80
  }
81
81
  if (typeof data.privateKey !== "string" || !PRIVATE_KEY_RE.test(data.privateKey)) {
82
- throw new Error("allowance.json missing valid 'privateKey' (expected 0x-prefixed 64-hex string). " +
82
+ throw new Error("wallet.json missing valid 'privateKey' (expected 0x-prefixed 64-hex string). " +
83
83
  "Back up the file and run 'run402 init' to recreate it.");
84
84
  }
85
85
  return data;
86
86
  }
87
- export function saveAllowance(data, path) {
88
- const p = path ?? getAllowancePath();
87
+ export function saveWallet(data, path) {
88
+ const p = path ?? getWalletPath();
89
89
  const dir = dirname(p);
90
90
  mkdirSync(dir, { recursive: true });
91
- const tmp = join(dir, `.allowance.${randomBytes(4).toString("hex")}.tmp`);
91
+ const tmp = join(dir, `.wallet.${randomBytes(4).toString("hex")}.tmp`);
92
92
  writeFileSync(tmp, JSON.stringify(data, null, 2), { mode: 0o600 });
93
93
  renameSync(tmp, p);
94
94
  chmodSync(p, 0o600);
95
95
  }
96
- //# sourceMappingURL=allowance.js.map
96
+ //# sourceMappingURL=wallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,20 @@
1
1
  /**
2
- * Cache of **operator-approval** tokens — the passkey-fresh write-auth tokens a
3
- * wallet-less human mints to provision/deploy (gateway v1.85/v1.87). Distinct
4
- * from the control-plane session ({@link ControlPlaneSessionCache}) it pairs
5
- * with: the gateway scopes each token to one `(action, target)`, so this is a
2
+ * Cache of **write approvals** — the passkey-signed, target-scoped tokens a
3
+ * wallet-less person mints with `run402 approve` to provision, deploy, or write
4
+ * secrets from the command line. Distinct from the sign-in session
5
+ * ({@link ControlPlaneSessionCache}) it pairs with, and never a step-up. The
6
+ * gateway scopes each token to one `(action, target)`, so this is a
6
7
  * **multi-entry** cache keyed by `(api_origin, control_plane_session_hash,
7
8
  * action, target)`. An `org.project.create` approval for org Y and a
8
9
  * `project.deploy` approval for project X coexist.
9
10
  *
10
11
  * Stored at the BASE config dir (principal-scoped), mode 0600 — as sensitive as
11
- * the allowance key. The token dies with its control-plane session; the
12
+ * the wallet key. The token dies with its sign-in session; the
12
13
  * `control_plane_session_hash` binding lets the client drop a stale approval
13
- * locally rather than replay it into a `WRITE_AUTH_BINDING_MISMATCH`.
14
+ * locally rather than replay it into a `WRITE_APPROVAL_BINDING_MISMATCH`.
14
15
  */
15
- export interface WriteAuthApproval {
16
- write_auth_token: string;
16
+ export interface WriteApproval {
17
+ write_approval_token: string;
17
18
  token_type: string;
18
19
  header: string;
19
20
  /** Gateway capability: `org.project.create` | `project.deploy` | `project.secret.write`. */
@@ -30,13 +31,14 @@ export interface WriteAuthApproval {
30
31
  amr?: string[];
31
32
  minted_at: number;
32
33
  }
33
- /** The token payload from `POST /agent/v1/control-plane/write-auth/cli/token`. */
34
- export interface WriteAuthTokenResponse {
35
- write_auth_token: string;
34
+ /** The token payload from `POST /agent/v1/control-plane/write-approval/cli/token`. */
35
+ export interface WriteApprovalTokenResponse {
36
+ write_approval_token: string;
36
37
  token_type?: string;
37
38
  header?: string;
38
- /** The write-auth session; its expiry is the token's expiry. */
39
+ /** The write-approval session; its idle expiry is the token's expiry. */
39
40
  session?: {
41
+ idle_expires_at?: string | number;
40
42
  expires_at?: string | number;
41
43
  absolute_expires_at?: string | number;
42
44
  amr?: string[];
@@ -45,15 +47,15 @@ export interface WriteAuthTokenResponse {
45
47
  [k: string]: unknown;
46
48
  }
47
49
  /** A capability target — exactly one of these is set per approval. */
48
- export interface WriteAuthTargetKey {
50
+ export interface WriteApprovalTargetKey {
49
51
  org_id?: string;
50
52
  project_id?: string;
51
53
  }
52
54
  /**
53
- * Path to the approval cache: `{base}/write-auth-session.json`.
54
- * `RUN402_WRITE_AUTH_SESSION_PATH` overrides for testing.
55
+ * Path to the approval cache: `{base}/write-approvals.json`.
56
+ * `RUN402_WRITE_APPROVALS_PATH` overrides for testing.
55
57
  */
56
- export declare function getWriteAuthSessionPath(): string;
58
+ export declare function getWriteApprovalsPath(): string;
57
59
  /** Stable short hash binding an approval to a control-plane session token. */
58
60
  export declare function hashControlPlaneSession(token: string): string;
59
61
  /**
@@ -61,17 +63,17 @@ export declare function hashControlPlaneSession(token: string): string;
61
63
  * unreadable, unparseable). Throws when the file parses as JSON but the shape
62
64
  * is wrong, so a corrupted cache surfaces a clear fix-it.
63
65
  */
64
- export declare function readApprovals(path?: string): WriteAuthApproval[];
66
+ export declare function readApprovals(path?: string): WriteApproval[];
65
67
  /**
66
68
  * Persist an approval. Replaces any existing entry with the same
67
69
  * `(api_origin, control_plane_session_hash, action, target)` key and leaves
68
70
  * every other entry intact (multi-entry, non-thrashing). Atomic, mode 0600.
69
71
  */
70
- export declare function saveApproval(approval: WriteAuthApproval, path?: string): void;
71
- /** Delete the whole approval cache — local half of `operator logout`. Idempotent. */
72
+ export declare function saveApproval(approval: WriteApproval, path?: string): void;
73
+ /** Delete the whole approval cache — local half of `run402 logout`. Idempotent. */
72
74
  export declare function clearApprovals(path?: string): void;
73
75
  /** Whether an approval is past its usable life (with a small skew buffer). */
74
- export declare function isApprovalExpired(approval: WriteAuthApproval, nowMs?: number, skewMs?: number): boolean;
76
+ export declare function isApprovalExpired(approval: WriteApproval, nowMs?: number, skewMs?: number): boolean;
75
77
  /**
76
78
  * Return the cached approval matching ALL of `(apiOrigin, cpSessionHash,
77
79
  * capability, target)` and still live, or `null` if none matches or it is
@@ -82,18 +84,18 @@ export declare function loadLiveApproval(q: {
82
84
  apiOrigin: string;
83
85
  cpSessionHash: string;
84
86
  capability: string;
85
- target: WriteAuthTargetKey;
86
- }, path?: string, nowMs?: number): WriteAuthApproval | null;
87
+ target: WriteApprovalTargetKey;
88
+ }, path?: string, nowMs?: number): WriteApproval | null;
87
89
  /**
88
90
  * Build a cache entry from the gateway token response + the binding context
89
91
  * (the cp-session it was minted under, the API origin, and the `(action,
90
92
  * target)` it covers). Expiry is taken from the returned `session`.
91
93
  */
92
- export declare function approvalFromTokenResponse(resp: WriteAuthTokenResponse, binding: {
94
+ export declare function approvalFromTokenResponse(resp: WriteApprovalTokenResponse, binding: {
93
95
  action: string;
94
- target: WriteAuthTargetKey;
96
+ target: WriteApprovalTargetKey;
95
97
  apiOrigin: string;
96
98
  controlPlaneSessionHash: string;
97
99
  controlPlanePrincipalId: string;
98
- }, nowMs?: number): WriteAuthApproval;
99
- //# sourceMappingURL=write-auth-session.d.ts.map
100
+ }, nowMs?: number): WriteApproval;
101
+ //# sourceMappingURL=write-approvals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-approvals.d.ts","sourceRoot":"","sources":["../src/write-approvals.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,aAAa;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,4FAA4F;IAC5F,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,UAAU,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,0BAA0B,EAAE,MAAM,CAAC;IACnC,0BAA0B,EAAE,MAAM,CAAC;IACnC,+EAA+E;IAC/E,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,sFAAsF;AACtF,MAAM,WAAW,0BAA0B;IACzC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAClK,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,sEAAsE;AACtE,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAK9C;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7D;AAgCD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE,CA4B5D;AAyBD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAIzE;AAED,mFAAmF;AACnF,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAOlD;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,aAAa,EACvB,KAAK,GAAE,MAAmB,EAC1B,MAAM,SAAS,GACd,OAAO,CAET;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,sBAAsB,CAAC;CAChC,EACD,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,GAAE,MAAmB,GACzB,aAAa,GAAG,IAAI,CAatB;AAgBD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,0BAA0B,EAChC,OAAO,EAAE;IACP,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,sBAAsB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,uBAAuB,EAAE,MAAM,CAAC;IAChC,uBAAuB,EAAE,MAAM,CAAC;CACjC,EACD,KAAK,GAAE,MAAmB,GACzB,aAAa,CAkBf"}
@@ -4,12 +4,12 @@ import { randomBytes, createHash } from "node:crypto";
4
4
  import { getConfigBaseDir } from "./config.js";
5
5
  const DEFAULT_TTL_MS = 30 * 60 * 1000;
6
6
  /**
7
- * Path to the approval cache: `{base}/write-auth-session.json`.
8
- * `RUN402_WRITE_AUTH_SESSION_PATH` overrides for testing.
7
+ * Path to the approval cache: `{base}/write-approvals.json`.
8
+ * `RUN402_WRITE_APPROVALS_PATH` overrides for testing.
9
9
  */
10
- export function getWriteAuthSessionPath() {
11
- return (process.env.RUN402_WRITE_AUTH_SESSION_PATH ||
12
- join(getConfigBaseDir(), "write-auth-session.json"));
10
+ export function getWriteApprovalsPath() {
11
+ return (process.env.RUN402_WRITE_APPROVALS_PATH ||
12
+ join(getConfigBaseDir(), "write-approvals.json"));
13
13
  }
14
14
  /** Stable short hash binding an approval to a control-plane session token. */
15
15
  export function hashControlPlaneSession(token) {
@@ -34,8 +34,8 @@ function isApproval(x) {
34
34
  if (!x || typeof x !== "object")
35
35
  return false;
36
36
  const a = x;
37
- return (typeof a.write_auth_token === "string" &&
38
- a.write_auth_token.length > 0 &&
37
+ return (typeof a.write_approval_token === "string" &&
38
+ a.write_approval_token.length > 0 &&
39
39
  typeof a.action === "string" &&
40
40
  typeof a.api_origin === "string" &&
41
41
  typeof a.control_plane_session_hash === "string" &&
@@ -48,7 +48,7 @@ function isApproval(x) {
48
48
  * is wrong, so a corrupted cache surfaces a clear fix-it.
49
49
  */
50
50
  export function readApprovals(path) {
51
- const p = path ?? getWriteAuthSessionPath();
51
+ const p = path ?? getWriteApprovalsPath();
52
52
  if (!existsSync(p))
53
53
  return [];
54
54
  selfHealPermissions(p);
@@ -67,19 +67,19 @@ export function readApprovals(path) {
67
67
  return [];
68
68
  }
69
69
  if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
70
- throw new Error("write-auth-session.json must contain a JSON object. Delete it and re-run 'run402 operator approve' to recreate it.");
70
+ throw new Error("write-approvals.json must contain a JSON object. Delete it and re-run 'run402 approve' to recreate it.");
71
71
  }
72
72
  const approvals = parsed.approvals;
73
73
  if (!Array.isArray(approvals)) {
74
- throw new Error("write-auth-session.json missing an 'approvals' array. Delete it and re-run 'run402 operator approve'.");
74
+ throw new Error("write-approvals.json missing an 'approvals' array. Delete it and re-run 'run402 approve'.");
75
75
  }
76
76
  return approvals.filter(isApproval);
77
77
  }
78
78
  function writeApprovals(approvals, path) {
79
- const p = path ?? getWriteAuthSessionPath();
79
+ const p = path ?? getWriteApprovalsPath();
80
80
  const dir = dirname(p);
81
81
  mkdirSync(dir, { recursive: true });
82
- const tmp = join(dir, `.write-auth-session.${randomBytes(4).toString("hex")}.tmp`);
82
+ const tmp = join(dir, `.write-approvals.${randomBytes(4).toString("hex")}.tmp`);
83
83
  writeFileSync(tmp, JSON.stringify({ approvals }, null, 2), { mode: 0o600 });
84
84
  renameSync(tmp, p);
85
85
  chmodSync(p, 0o600);
@@ -103,9 +103,9 @@ export function saveApproval(approval, path) {
103
103
  existing.push(approval);
104
104
  writeApprovals(existing, path);
105
105
  }
106
- /** Delete the whole approval cache — local half of `operator logout`. Idempotent. */
106
+ /** Delete the whole approval cache — local half of `run402 logout`. Idempotent. */
107
107
  export function clearApprovals(path) {
108
- const p = path ?? getWriteAuthSessionPath();
108
+ const p = path ?? getWriteApprovalsPath();
109
109
  try {
110
110
  rmSync(p, { force: true });
111
111
  }
@@ -137,7 +137,7 @@ export function loadLiveApproval(q, path, nowMs = Date.now()) {
137
137
  }
138
138
  /** Parse a gateway-returned session expiry (ISO string or epoch) to epoch ms. */
139
139
  function sessionExpiryMs(session, nowMs) {
140
- const raw = session?.expires_at ?? session?.absolute_expires_at;
140
+ const raw = session?.idle_expires_at ?? session?.expires_at ?? session?.absolute_expires_at;
141
141
  if (typeof raw === "number" && Number.isFinite(raw))
142
142
  return raw > 1e12 ? raw : raw * 1000;
143
143
  if (typeof raw === "string") {
@@ -157,9 +157,9 @@ export function approvalFromTokenResponse(resp, binding, nowMs = Date.now()) {
157
157
  ? resp.session.amr.filter((a) => typeof a === "string")
158
158
  : undefined;
159
159
  return {
160
- write_auth_token: resp.write_auth_token,
161
- token_type: typeof resp.token_type === "string" ? resp.token_type : "write_auth",
162
- header: typeof resp.header === "string" ? resp.header : "X-Run402-Write-Auth",
160
+ write_approval_token: resp.write_approval_token,
161
+ token_type: typeof resp.token_type === "string" ? resp.token_type : "write_approval",
162
+ header: typeof resp.header === "string" ? resp.header : "X-Run402-Write-Approval",
163
163
  action: binding.action,
164
164
  ...(binding.target.org_id ? { org_id: binding.target.org_id } : {}),
165
165
  ...(binding.target.project_id ? { project_id: binding.target.project_id } : {}),
@@ -171,4 +171,4 @@ export function approvalFromTokenResponse(resp, binding, nowMs = Date.now()) {
171
171
  minted_at: nowMs,
172
172
  };
173
173
  }
174
- //# sourceMappingURL=write-auth-session.js.map
174
+ //# sourceMappingURL=write-approvals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-approvals.js","sourceRoot":"","sources":["../src/write-approvals.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * MCP DB tools (`run_sql`, `get_schema`, `rest_query`) accept an optional
5
5
  * `project_id`. When omitted, we fall back to the active project tracked in
6
- * local state (set by provisioning or `run402 projects use <id>`), so an agent
6
+ * local state (set by provisioning or `run402 projects use <project_id>`), so an agent
7
7
  * working against a single project doesn't have to thread the id through every
8
8
  * call. Returns the resolved id, or an error ToolResult when neither an explicit
9
9
  * id nor an active project is available.
@@ -28,7 +28,7 @@ export async function resolveProjectId(projectId) {
28
28
  {
29
29
  type: "text",
30
30
  text: "No project_id provided and no active project is set. Pass project_id explicitly, " +
31
- "or set an active project first (provision one, or `run402 projects use <id>`).",
31
+ "or set an active project first (provision one, or `run402 projects use <project_id>`).",
32
32
  },
33
33
  ],
34
34
  };
@@ -1 +1 @@
1
- {"version":3,"file":"active-project.js","sourceRoot":"","sources":["../src/active-project.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAkB;IAElB,MAAM,QAAQ,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC;IACnC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EACF,mFAAmF;oBACnF,gFAAgF;aACnF;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"active-project.js","sourceRoot":"","sources":["../src/active-project.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAkB;IAElB,MAAM,QAAQ,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC;IACnC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EACF,mFAAmF;oBACnF,wFAAwF;aAC3F;SACF;KACF,CAAC;AACJ,CAAC"}
package/dist/config.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { getApiBase, getConfigDir, getKeystorePath, getProjectCredentialsPath, getProfileStatePath, getLegacyProjectsPath, getAllowancePath, getActiveProfile, } from "../core/dist/config.js";
1
+ export { getApiBase, getConfigDir, getKeystorePath, getProjectCredentialsPath, getProfileStatePath, getLegacyProjectsPath, getWalletPath, getActiveProfile, } from "../core/dist/config.js";
2
2
  export { readMeta } from "../core/dist/profiles.js";
3
3
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,eAAe,EACf,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,eAAe,EACf,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/config.js CHANGED
@@ -1,3 +1,3 @@
1
- export { getApiBase, getConfigDir, getKeystorePath, getProjectCredentialsPath, getProfileStatePath, getLegacyProjectsPath, getAllowancePath, getActiveProfile, } from "../core/dist/config.js";
1
+ export { getApiBase, getConfigDir, getKeystorePath, getProjectCredentialsPath, getProfileStatePath, getLegacyProjectsPath, getWalletPath, getActiveProfile, } from "../core/dist/config.js";
2
2
  export { readMeta } from "../core/dist/profiles.js";
3
3
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,eAAe,EACf,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,eAAe,EACf,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,EAGL,yBAAyB,IAAI,4BAA4B,EAE1D,MAAM,sBAAsB,CAAC;AAE9B,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,EACtC,OAAO,EAAE,MAAM,GACd,UAAU,CA6GZ;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,OAAO,EACf,IAAI,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,MAAM,EAAE,CA+BV;AA4KD;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAY7D;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,4BAA4B,GAAG,UAAU,CAWvF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,CAwCrE"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,EAGL,yBAAyB,IAAI,4BAA4B,EAE1D,MAAM,sBAAsB,CAAC;AAE9B,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,EACtC,OAAO,EAAE,MAAM,GACd,UAAU,CA6GZ;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,OAAO,EACf,IAAI,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,MAAM,EAAE,CA+BV;AAiLD;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAY7D;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,4BAA4B,GAAG,UAAU,CAWvF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,CAwCrE"}
package/dist/errors.js CHANGED
@@ -71,7 +71,7 @@ export function formatApiError(res, context) {
71
71
  break;
72
72
  case 402:
73
73
  if (inGrace) {
74
- lines.push(`\nNext step: Project is in the soft-delete grace window — control-plane mutations are blocked. Use \`set_tier\` to renew/upgrade and reactivate the project in one transaction.`);
74
+ lines.push(`\nNext step: Project is in the soft-delete grace window — control-plane mutations are blocked. Use \`tier_set\` to renew/upgrade and reactivate the project in one transaction.`);
75
75
  }
76
76
  break;
77
77
  case 403:
@@ -82,10 +82,10 @@ export function formatApiError(res, context) {
82
82
  // Lifecycle (frozen/dormant) denials are 403, not 402 — style.md
83
83
  // reserves 402 for genuine payment challenges. Give the same
84
84
  // richer grace-window guidance as the 402 branch above.
85
- lines.push(`\nNext step: Project is in the soft-delete grace window — control-plane mutations are blocked. Use \`set_tier\` to renew/upgrade and reactivate the project in one transaction.`);
85
+ lines.push(`\nNext step: Project is in the soft-delete grace window — control-plane mutations are blocked. Use \`tier_set\` to renew/upgrade and reactivate the project in one transaction.`);
86
86
  }
87
87
  else {
88
- lines.push(`\nNext step: The project lease may have expired. Use \`get_usage\` to check status, or \`set_tier\` to renew the lease.`);
88
+ lines.push(`\nNext step: The project lease may have expired. Use \`get_usage\` to check status, or \`tier_set\` to renew the lease.`);
89
89
  }
90
90
  break;
91
91
  case 404:
@@ -104,7 +104,7 @@ export function formatApiError(res, context) {
104
104
  }
105
105
  }
106
106
  else if ((res.status === 402 || res.status === 403) && inGrace) {
107
- lines.push(`\nNext step: Project is in the soft-delete grace window — control-plane mutations are blocked. Use \`set_tier\` to renew/upgrade and reactivate the project in one transaction.`);
107
+ lines.push(`\nNext step: Project is in the soft-delete grace window — control-plane mutations are blocked. Use \`tier_set\` to renew/upgrade and reactivate the project in one transaction.`);
108
108
  }
109
109
  return { content: [{ type: "text", text: lines.join("\n") }], isError: true };
110
110
  }
@@ -187,7 +187,7 @@ function addCodeGuidance(lines, code, body) {
187
187
  return true;
188
188
  case "PAYMENT_REQUIRED":
189
189
  case "INSUFFICIENT_FUNDS":
190
- lines.push(`\nNext step: Submit payment or fund the allowance, then retry the request.`);
190
+ lines.push(`\nNext step: Submit payment (top up the organization's allowance or fund the wallet), then retry the request.`);
191
191
  return true;
192
192
  case "PAYMENT_INTENT_PENDING":
193
193
  lines.push(`\nNext step: Repeat the identical request with the same payer and Idempotency-Key after Retry-After. Do not authorize a fresh key while settlement is unresolved.`);
@@ -212,7 +212,7 @@ function addCodeGuidance(lines, code, body) {
212
212
  case "PROJECT_FROZEN":
213
213
  case "PROJECT_DORMANT":
214
214
  case "PROJECT_PAST_DUE":
215
- lines.push(`\nNext step: Use \`get_usage\` to inspect lifecycle state, or \`set_tier\` to renew/reactivate the project.`);
215
+ lines.push(`\nNext step: Use \`get_usage\` to inspect lifecycle state, or \`tier_set\` to renew/reactivate the project.`);
216
216
  return true;
217
217
  case "RATE_LIMITED":
218
218
  lines.push(`\nNext step: Rate limit hit. Wait and retry.`);
@@ -229,7 +229,7 @@ function addCodeGuidance(lines, code, body) {
229
229
  lines.push(`\nNext step: Check the deploy plan/operation id, or list recent deploy operations for the project.`);
230
230
  return true;
231
231
  case "CI_ROUTE_SCOPE_DENIED":
232
- lines.push(`\nNext step: Re-link the GitHub Actions binding with covering \`--route-scope\` patterns, or run the route-changing deploy locally with allowance-backed authority.`);
232
+ lines.push(`\nNext step: Re-link the GitHub Actions binding with covering \`--route-scope\` patterns, or run the route-changing deploy locally with wallet-backed authority.`);
233
233
  return true;
234
234
  case "PROJECT_HAS_PENDING_TRANSFER":
235
235
  lines.push(`\nNext step: The project has a pending transfer; owner-side mutations are blocked until it is accepted, cancelled, or expires (72h). Use \`cancel_project_transfer\` to cancel it or \`preview_project_transfer\` to view it. The transfer id is in \`details.transfer_id\`.`);
@@ -252,9 +252,14 @@ function formatNextActions(actions) {
252
252
  const description = stringField(obj, "label") ??
253
253
  stringField(obj, "description") ??
254
254
  stringField(obj, "message") ??
255
- stringField(obj, "hint");
255
+ stringField(obj, "hint") ??
256
+ stringField(obj, "why");
257
+ // A client-resolvable action names its literal command (e.g. the
258
+ // `approve_write` a WriteApprovalRequiredError synthesizes, or a gateway
259
+ // `register_contact` / `contact_staff` / `hand_to_member` that carries one).
260
+ const command = stringField(obj, "command");
256
261
  if (name) {
257
- lines.push(`- ${name}${description ? `: ${description}` : ""}`);
262
+ lines.push(`- ${name}${description ? `: ${description}` : ""}${command ? ` (\`${command}\`)` : ""}`);
258
263
  continue;
259
264
  }
260
265
  }