@fuzdev/fuz_app 0.55.0 → 0.57.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 (333) hide show
  1. package/dist/actions/CLAUDE.md +211 -155
  2. package/dist/actions/action_bridge.d.ts +8 -5
  3. package/dist/actions/action_bridge.d.ts.map +1 -1
  4. package/dist/actions/action_bridge.js +1 -11
  5. package/dist/actions/action_codegen.d.ts +19 -0
  6. package/dist/actions/action_codegen.d.ts.map +1 -1
  7. package/dist/actions/action_codegen.js +20 -14
  8. package/dist/actions/action_registry.d.ts.map +1 -1
  9. package/dist/actions/action_registry.js +5 -2
  10. package/dist/actions/action_rpc.d.ts +110 -44
  11. package/dist/actions/action_rpc.d.ts.map +1 -1
  12. package/dist/actions/action_rpc.js +92 -287
  13. package/dist/actions/action_spec.d.ts +55 -16
  14. package/dist/actions/action_spec.d.ts.map +1 -1
  15. package/dist/actions/action_spec.js +16 -11
  16. package/dist/actions/action_types.d.ts +28 -60
  17. package/dist/actions/action_types.d.ts.map +1 -1
  18. package/dist/actions/action_types.js +13 -5
  19. package/dist/actions/broadcast_api.d.ts +2 -2
  20. package/dist/actions/broadcast_api.js +2 -2
  21. package/dist/actions/compile_action_registry.d.ts +50 -0
  22. package/dist/actions/compile_action_registry.d.ts.map +1 -0
  23. package/dist/actions/compile_action_registry.js +69 -0
  24. package/dist/actions/heartbeat.d.ts +8 -4
  25. package/dist/actions/heartbeat.d.ts.map +1 -1
  26. package/dist/actions/heartbeat.js +5 -4
  27. package/dist/actions/perform_action.d.ts +145 -0
  28. package/dist/actions/perform_action.d.ts.map +1 -0
  29. package/dist/actions/perform_action.js +258 -0
  30. package/dist/actions/register_action_ws.d.ts +44 -38
  31. package/dist/actions/register_action_ws.d.ts.map +1 -1
  32. package/dist/actions/register_action_ws.js +101 -159
  33. package/dist/actions/register_ws_endpoint.d.ts +2 -10
  34. package/dist/actions/register_ws_endpoint.d.ts.map +1 -1
  35. package/dist/actions/register_ws_endpoint.js +32 -10
  36. package/dist/actions/transports_ws_auth_guard.d.ts +1 -1
  37. package/dist/actions/transports_ws_auth_guard.js +1 -1
  38. package/dist/actions/transports_ws_backend.d.ts +1 -1
  39. package/dist/actions/transports_ws_backend.js +1 -1
  40. package/dist/auth/CLAUDE.md +673 -442
  41. package/dist/auth/account_action_specs.d.ts +28 -7
  42. package/dist/auth/account_action_specs.d.ts.map +1 -1
  43. package/dist/auth/account_action_specs.js +7 -7
  44. package/dist/auth/account_actions.d.ts +8 -14
  45. package/dist/auth/account_actions.d.ts.map +1 -1
  46. package/dist/auth/account_actions.js +26 -32
  47. package/dist/auth/account_queries.d.ts +46 -13
  48. package/dist/auth/account_queries.d.ts.map +1 -1
  49. package/dist/auth/account_queries.js +73 -33
  50. package/dist/auth/account_routes.d.ts +4 -3
  51. package/dist/auth/account_routes.d.ts.map +1 -1
  52. package/dist/auth/account_routes.js +58 -33
  53. package/dist/auth/account_schema.d.ts +46 -54
  54. package/dist/auth/account_schema.d.ts.map +1 -1
  55. package/dist/auth/account_schema.js +21 -48
  56. package/dist/auth/admin_action_specs.d.ts +55 -21
  57. package/dist/auth/admin_action_specs.d.ts.map +1 -1
  58. package/dist/auth/admin_action_specs.js +42 -26
  59. package/dist/auth/admin_actions.d.ts +14 -21
  60. package/dist/auth/admin_actions.d.ts.map +1 -1
  61. package/dist/auth/admin_actions.js +47 -44
  62. package/dist/auth/audit_emitter.d.ts +160 -0
  63. package/dist/auth/audit_emitter.d.ts.map +1 -0
  64. package/dist/auth/audit_emitter.js +83 -0
  65. package/dist/auth/audit_log_queries.d.ts +17 -87
  66. package/dist/auth/audit_log_queries.d.ts.map +1 -1
  67. package/dist/auth/audit_log_queries.js +17 -96
  68. package/dist/auth/audit_log_routes.d.ts +1 -1
  69. package/dist/auth/audit_log_routes.d.ts.map +1 -1
  70. package/dist/auth/audit_log_routes.js +7 -3
  71. package/dist/auth/audit_log_schema.d.ts +48 -42
  72. package/dist/auth/audit_log_schema.d.ts.map +1 -1
  73. package/dist/auth/audit_log_schema.js +56 -43
  74. package/dist/auth/auth_guard_resolver.d.ts +44 -0
  75. package/dist/auth/auth_guard_resolver.d.ts.map +1 -0
  76. package/dist/auth/auth_guard_resolver.js +56 -0
  77. package/dist/auth/bootstrap_account.d.ts +7 -7
  78. package/dist/auth/bootstrap_account.d.ts.map +1 -1
  79. package/dist/auth/bootstrap_account.js +7 -7
  80. package/dist/auth/bootstrap_routes.d.ts.map +1 -1
  81. package/dist/auth/bootstrap_routes.js +11 -10
  82. package/dist/auth/cleanup.d.ts +20 -26
  83. package/dist/auth/cleanup.d.ts.map +1 -1
  84. package/dist/auth/cleanup.js +33 -47
  85. package/dist/auth/credential_type_schema.d.ts +115 -0
  86. package/dist/auth/credential_type_schema.d.ts.map +1 -0
  87. package/dist/auth/credential_type_schema.js +127 -0
  88. package/dist/auth/daemon_token_middleware.d.ts +1 -1
  89. package/dist/auth/daemon_token_middleware.js +3 -3
  90. package/dist/auth/ddl.d.ts +2 -2
  91. package/dist/auth/ddl.d.ts.map +1 -1
  92. package/dist/auth/ddl.js +6 -6
  93. package/dist/auth/deps.d.ts +7 -32
  94. package/dist/auth/deps.d.ts.map +1 -1
  95. package/dist/auth/grant_path_schema.d.ts +117 -0
  96. package/dist/auth/grant_path_schema.d.ts.map +1 -0
  97. package/dist/auth/grant_path_schema.js +137 -0
  98. package/dist/auth/invite_queries.d.ts +12 -1
  99. package/dist/auth/invite_queries.d.ts.map +1 -1
  100. package/dist/auth/invite_queries.js +12 -1
  101. package/dist/auth/invite_schema.d.ts +1 -1
  102. package/dist/auth/invite_schema.d.ts.map +1 -1
  103. package/dist/auth/invite_schema.js +1 -1
  104. package/dist/auth/middleware.d.ts.map +1 -1
  105. package/dist/auth/middleware.js +5 -2
  106. package/dist/auth/migrations.d.ts +22 -7
  107. package/dist/auth/migrations.d.ts.map +1 -1
  108. package/dist/auth/migrations.js +64 -25
  109. package/dist/auth/request_context.d.ts +157 -170
  110. package/dist/auth/request_context.d.ts.map +1 -1
  111. package/dist/auth/request_context.js +224 -268
  112. package/dist/auth/{permit_offer_action_specs.d.ts → role_grant_offer_action_specs.d.ts} +130 -100
  113. package/dist/auth/role_grant_offer_action_specs.d.ts.map +1 -0
  114. package/dist/auth/role_grant_offer_action_specs.js +262 -0
  115. package/dist/auth/role_grant_offer_actions.d.ts +104 -0
  116. package/dist/auth/role_grant_offer_actions.d.ts.map +1 -0
  117. package/dist/auth/{permit_offer_actions.js → role_grant_offer_actions.js} +153 -140
  118. package/dist/auth/{permit_offer_notifications.d.ts → role_grant_offer_notifications.d.ts} +80 -70
  119. package/dist/auth/role_grant_offer_notifications.d.ts.map +1 -0
  120. package/dist/auth/role_grant_offer_notifications.js +182 -0
  121. package/dist/auth/{permit_offer_queries.d.ts → role_grant_offer_queries.d.ts} +64 -64
  122. package/dist/auth/role_grant_offer_queries.d.ts.map +1 -0
  123. package/dist/auth/{permit_offer_queries.js → role_grant_offer_queries.js} +136 -123
  124. package/dist/auth/role_grant_offer_schema.d.ts +150 -0
  125. package/dist/auth/role_grant_offer_schema.d.ts.map +1 -0
  126. package/dist/auth/{permit_offer_schema.js → role_grant_offer_schema.js} +55 -36
  127. package/dist/auth/role_grant_queries.d.ts +231 -0
  128. package/dist/auth/role_grant_queries.d.ts.map +1 -0
  129. package/dist/auth/role_grant_queries.js +320 -0
  130. package/dist/auth/role_schema.d.ts +150 -40
  131. package/dist/auth/role_schema.d.ts.map +1 -1
  132. package/dist/auth/role_schema.js +144 -45
  133. package/dist/auth/scope_kind_schema.d.ts +96 -0
  134. package/dist/auth/scope_kind_schema.d.ts.map +1 -0
  135. package/dist/auth/scope_kind_schema.js +94 -0
  136. package/dist/auth/self_service_role_action_specs.d.ts +4 -1
  137. package/dist/auth/self_service_role_action_specs.d.ts.map +1 -1
  138. package/dist/auth/self_service_role_action_specs.js +2 -2
  139. package/dist/auth/self_service_role_actions.d.ts +35 -29
  140. package/dist/auth/self_service_role_actions.d.ts.map +1 -1
  141. package/dist/auth/self_service_role_actions.js +58 -48
  142. package/dist/auth/session_cookie.d.ts +43 -6
  143. package/dist/auth/session_cookie.d.ts.map +1 -1
  144. package/dist/auth/session_cookie.js +31 -5
  145. package/dist/auth/session_middleware.d.ts +37 -3
  146. package/dist/auth/session_middleware.d.ts.map +1 -1
  147. package/dist/auth/session_middleware.js +33 -7
  148. package/dist/auth/signup_routes.d.ts.map +1 -1
  149. package/dist/auth/signup_routes.js +48 -19
  150. package/dist/auth/standard_action_specs.d.ts +2 -2
  151. package/dist/auth/standard_action_specs.js +4 -4
  152. package/dist/auth/standard_rpc_actions.d.ts +23 -19
  153. package/dist/auth/standard_rpc_actions.d.ts.map +1 -1
  154. package/dist/auth/standard_rpc_actions.js +12 -12
  155. package/dist/db/migrate.d.ts +1 -1
  156. package/dist/db/migrate.js +1 -1
  157. package/dist/dev/setup.d.ts +2 -2
  158. package/dist/dev/setup.d.ts.map +1 -1
  159. package/dist/dev/setup.js +4 -4
  160. package/dist/env/load.d.ts +1 -1
  161. package/dist/env/load.js +1 -1
  162. package/dist/hono_context.d.ts +27 -45
  163. package/dist/hono_context.d.ts.map +1 -1
  164. package/dist/hono_context.js +14 -28
  165. package/dist/http/CLAUDE.md +235 -121
  166. package/dist/http/auth_shape.d.ts +191 -0
  167. package/dist/http/auth_shape.d.ts.map +1 -0
  168. package/dist/http/auth_shape.js +237 -0
  169. package/dist/http/common_routes.js +3 -3
  170. package/dist/http/db_routes.d.ts +4 -0
  171. package/dist/http/db_routes.d.ts.map +1 -1
  172. package/dist/http/db_routes.js +44 -7
  173. package/dist/http/error_schemas.d.ts +72 -39
  174. package/dist/http/error_schemas.d.ts.map +1 -1
  175. package/dist/http/error_schemas.js +81 -33
  176. package/dist/http/pending_effects.d.ts +71 -18
  177. package/dist/http/pending_effects.d.ts.map +1 -1
  178. package/dist/http/pending_effects.js +87 -18
  179. package/dist/http/proxy.d.ts +52 -5
  180. package/dist/http/proxy.d.ts.map +1 -1
  181. package/dist/http/proxy.js +92 -14
  182. package/dist/http/route_spec.d.ts +89 -75
  183. package/dist/http/route_spec.d.ts.map +1 -1
  184. package/dist/http/route_spec.js +54 -72
  185. package/dist/http/schema_helpers.d.ts +3 -14
  186. package/dist/http/schema_helpers.d.ts.map +1 -1
  187. package/dist/http/schema_helpers.js +2 -14
  188. package/dist/http/surface.d.ts +2 -10
  189. package/dist/http/surface.d.ts.map +1 -1
  190. package/dist/http/surface.js +3 -4
  191. package/dist/http/surface_query.d.ts +39 -35
  192. package/dist/http/surface_query.d.ts.map +1 -1
  193. package/dist/http/surface_query.js +79 -36
  194. package/dist/primitive_schemas.d.ts +39 -0
  195. package/dist/primitive_schemas.d.ts.map +1 -0
  196. package/dist/primitive_schemas.js +40 -0
  197. package/dist/realtime/sse_auth_guard.d.ts +5 -5
  198. package/dist/realtime/sse_auth_guard.js +9 -9
  199. package/dist/runtime/mock.d.ts +1 -1
  200. package/dist/runtime/mock.js +1 -1
  201. package/dist/server/app_backend.d.ts +14 -11
  202. package/dist/server/app_backend.d.ts.map +1 -1
  203. package/dist/server/app_backend.js +12 -8
  204. package/dist/server/app_server.d.ts +7 -7
  205. package/dist/server/app_server.d.ts.map +1 -1
  206. package/dist/server/app_server.js +35 -40
  207. package/dist/server/validate_nginx.d.ts +1 -1
  208. package/dist/server/validate_nginx.js +1 -1
  209. package/dist/testing/CLAUDE.md +50 -38
  210. package/dist/testing/admin_integration.d.ts +5 -6
  211. package/dist/testing/admin_integration.d.ts.map +1 -1
  212. package/dist/testing/admin_integration.js +87 -85
  213. package/dist/testing/app_server.d.ts +11 -14
  214. package/dist/testing/app_server.d.ts.map +1 -1
  215. package/dist/testing/app_server.js +16 -15
  216. package/dist/testing/assertions.d.ts.map +1 -1
  217. package/dist/testing/assertions.js +2 -1
  218. package/dist/testing/attack_surface.d.ts.map +1 -1
  219. package/dist/testing/attack_surface.js +15 -9
  220. package/dist/testing/audit_completeness.d.ts +2 -2
  221. package/dist/testing/audit_completeness.d.ts.map +1 -1
  222. package/dist/testing/audit_completeness.js +36 -36
  223. package/dist/testing/auth_apps.d.ts +5 -4
  224. package/dist/testing/auth_apps.d.ts.map +1 -1
  225. package/dist/testing/auth_apps.js +22 -19
  226. package/dist/testing/data_exposure.d.ts.map +1 -1
  227. package/dist/testing/data_exposure.js +5 -5
  228. package/dist/testing/db.d.ts +1 -1
  229. package/dist/testing/db.d.ts.map +1 -1
  230. package/dist/testing/db.js +4 -4
  231. package/dist/testing/db_entities.d.ts +22 -0
  232. package/dist/testing/db_entities.d.ts.map +1 -0
  233. package/dist/testing/db_entities.js +28 -0
  234. package/dist/testing/entities.d.ts +8 -7
  235. package/dist/testing/entities.d.ts.map +1 -1
  236. package/dist/testing/entities.js +21 -18
  237. package/dist/testing/integration.d.ts.map +1 -1
  238. package/dist/testing/integration.js +13 -14
  239. package/dist/testing/integration_helpers.d.ts +4 -4
  240. package/dist/testing/integration_helpers.d.ts.map +1 -1
  241. package/dist/testing/integration_helpers.js +20 -18
  242. package/dist/testing/middleware.d.ts +4 -4
  243. package/dist/testing/middleware.d.ts.map +1 -1
  244. package/dist/testing/middleware.js +12 -11
  245. package/dist/testing/rpc_attack_surface.d.ts.map +1 -1
  246. package/dist/testing/rpc_attack_surface.js +40 -24
  247. package/dist/testing/rpc_round_trip.d.ts +1 -1
  248. package/dist/testing/rpc_round_trip.d.ts.map +1 -1
  249. package/dist/testing/rpc_round_trip.js +14 -13
  250. package/dist/testing/sse_round_trip.d.ts +3 -4
  251. package/dist/testing/sse_round_trip.d.ts.map +1 -1
  252. package/dist/testing/sse_round_trip.js +7 -11
  253. package/dist/testing/standard.d.ts +1 -1
  254. package/dist/testing/stubs.d.ts +25 -0
  255. package/dist/testing/stubs.d.ts.map +1 -1
  256. package/dist/testing/stubs.js +43 -2
  257. package/dist/testing/surface_invariants.d.ts +14 -6
  258. package/dist/testing/surface_invariants.d.ts.map +1 -1
  259. package/dist/testing/surface_invariants.js +119 -43
  260. package/dist/testing/ws_round_trip.d.ts +12 -13
  261. package/dist/testing/ws_round_trip.d.ts.map +1 -1
  262. package/dist/testing/ws_round_trip.js +19 -11
  263. package/dist/ui/AdminAccounts.svelte +23 -20
  264. package/dist/ui/AdminOverview.svelte +15 -13
  265. package/dist/ui/AdminOverview.svelte.d.ts.map +1 -1
  266. package/dist/ui/{AdminPermitHistory.svelte → AdminRoleGrantHistory.svelte} +12 -12
  267. package/dist/ui/AdminRoleGrantHistory.svelte.d.ts +4 -0
  268. package/dist/ui/AdminRoleGrantHistory.svelte.d.ts.map +1 -0
  269. package/dist/ui/BootstrapForm.svelte +1 -1
  270. package/dist/ui/CLAUDE.md +60 -60
  271. package/dist/ui/{PermitOfferForm.svelte → RoleGrantOfferForm.svelte} +27 -26
  272. package/dist/ui/{PermitOfferForm.svelte.d.ts → RoleGrantOfferForm.svelte.d.ts} +7 -7
  273. package/dist/ui/RoleGrantOfferForm.svelte.d.ts.map +1 -0
  274. package/dist/ui/{PermitOfferHistory.svelte → RoleGrantOfferHistory.svelte} +12 -12
  275. package/dist/ui/{PermitOfferHistory.svelte.d.ts → RoleGrantOfferHistory.svelte.d.ts} +4 -4
  276. package/dist/ui/RoleGrantOfferHistory.svelte.d.ts.map +1 -0
  277. package/dist/ui/{PermitOfferInbox.svelte → RoleGrantOfferInbox.svelte} +14 -14
  278. package/dist/ui/{PermitOfferInbox.svelte.d.ts → RoleGrantOfferInbox.svelte.d.ts} +4 -4
  279. package/dist/ui/RoleGrantOfferInbox.svelte.d.ts.map +1 -0
  280. package/dist/ui/SignupForm.svelte +1 -1
  281. package/dist/ui/SurfaceExplorer.svelte +35 -15
  282. package/dist/ui/SurfaceExplorer.svelte.d.ts.map +1 -1
  283. package/dist/ui/account_sessions_state.svelte.d.ts +2 -3
  284. package/dist/ui/account_sessions_state.svelte.d.ts.map +1 -1
  285. package/dist/ui/account_sessions_state.svelte.js +2 -3
  286. package/dist/ui/admin_accounts_state.svelte.d.ts +18 -18
  287. package/dist/ui/admin_accounts_state.svelte.d.ts.map +1 -1
  288. package/dist/ui/admin_accounts_state.svelte.js +16 -16
  289. package/dist/ui/admin_rpc_adapters.d.ts +20 -20
  290. package/dist/ui/admin_rpc_adapters.d.ts.map +1 -1
  291. package/dist/ui/admin_rpc_adapters.js +17 -17
  292. package/dist/ui/admin_sessions_state.svelte.d.ts +2 -2
  293. package/dist/ui/admin_sessions_state.svelte.js +2 -2
  294. package/dist/ui/audit_log_state.svelte.d.ts +7 -7
  295. package/dist/ui/audit_log_state.svelte.d.ts.map +1 -1
  296. package/dist/ui/audit_log_state.svelte.js +6 -6
  297. package/dist/ui/auth_state.svelte.d.ts +3 -3
  298. package/dist/ui/auth_state.svelte.d.ts.map +1 -1
  299. package/dist/ui/auth_state.svelte.js +6 -6
  300. package/dist/ui/format_scope.d.ts +2 -2
  301. package/dist/ui/format_scope.js +2 -2
  302. package/dist/ui/{permit_offers_state.svelte.d.ts → role_grant_offers_state.svelte.d.ts} +30 -30
  303. package/dist/ui/role_grant_offers_state.svelte.d.ts.map +1 -0
  304. package/dist/ui/{permit_offers_state.svelte.js → role_grant_offers_state.svelte.js} +18 -18
  305. package/dist/ui/ui_format.js +2 -2
  306. package/package.json +3 -3
  307. package/dist/auth/permit_offer_action_specs.d.ts.map +0 -1
  308. package/dist/auth/permit_offer_action_specs.js +0 -258
  309. package/dist/auth/permit_offer_actions.d.ts +0 -110
  310. package/dist/auth/permit_offer_actions.d.ts.map +0 -1
  311. package/dist/auth/permit_offer_notifications.d.ts.map +0 -1
  312. package/dist/auth/permit_offer_notifications.js +0 -182
  313. package/dist/auth/permit_offer_queries.d.ts.map +0 -1
  314. package/dist/auth/permit_offer_schema.d.ts +0 -125
  315. package/dist/auth/permit_offer_schema.d.ts.map +0 -1
  316. package/dist/auth/permit_queries.d.ts +0 -222
  317. package/dist/auth/permit_queries.d.ts.map +0 -1
  318. package/dist/auth/permit_queries.js +0 -305
  319. package/dist/auth/require_keeper.d.ts +0 -20
  320. package/dist/auth/require_keeper.d.ts.map +0 -1
  321. package/dist/auth/require_keeper.js +0 -35
  322. package/dist/auth/route_guards.d.ts +0 -27
  323. package/dist/auth/route_guards.d.ts.map +0 -1
  324. package/dist/auth/route_guards.js +0 -38
  325. package/dist/auth/session_lifecycle.d.ts +0 -37
  326. package/dist/auth/session_lifecycle.d.ts.map +0 -1
  327. package/dist/auth/session_lifecycle.js +0 -29
  328. package/dist/ui/AdminPermitHistory.svelte.d.ts +0 -4
  329. package/dist/ui/AdminPermitHistory.svelte.d.ts.map +0 -1
  330. package/dist/ui/PermitOfferForm.svelte.d.ts.map +0 -1
  331. package/dist/ui/PermitOfferHistory.svelte.d.ts.map +0 -1
  332. package/dist/ui/PermitOfferInbox.svelte.d.ts.map +0 -1
  333. package/dist/ui/permit_offers_state.svelte.d.ts.map +0 -1
@@ -1,29 +1,29 @@
1
1
  /**
2
- * Permit offer WebSocket notification specs, builders, and the narrow
2
+ * Role grant offer WebSocket notification specs, builders, and the narrow
3
3
  * `NotificationSender` interface that decouples offer/revoke send sites
4
4
  * from `BackendWebsocketTransport`.
5
5
  *
6
- * Six `RemoteNotificationActionSpec`s cover the consentful-permits
6
+ * Six `RemoteNotificationActionSpec`s cover the consentful-role-grants
7
7
  * lifecycle events the server pushes to affected accounts:
8
8
  *
9
- * - `permit_offer_received` → recipient's sockets when an offer is created
10
- * - `permit_offer_retracted` → recipient's sockets when a grantor retracts
11
- * - `permit_offer_accepted` → grantor's sockets when the recipient accepts
12
- * - `permit_offer_declined` → grantor's sockets when the recipient declines
13
- * - `permit_offer_supersede` → grantor's sockets when a sibling accept,
14
- * a revoke of the resulting permit, or destruction of the parent scope
9
+ * - `role_grant_offer_received` → recipient's sockets when an offer is created
10
+ * - `role_grant_offer_retracted` → recipient's sockets when a grantor retracts
11
+ * - `role_grant_offer_accepted` → grantor's sockets when the recipient accepts
12
+ * - `role_grant_offer_declined` → grantor's sockets when the recipient declines
13
+ * - `role_grant_offer_supersede` → grantor's sockets when a sibling accept,
14
+ * a revoke of the resulting role_grant, or destruction of the parent scope
15
15
  * row obsoletes their pending offer
16
- * - `permit_revoke` → revokee's sockets when one of their active permits
17
- * is revoked (companion to the `permit_revoke` audit event)
16
+ * - `role_grant_revoke` → revokee's sockets when one of their active role_grants
17
+ * is revoked (companion to the `role_grant_revoke` audit event)
18
18
  *
19
- * Payloads are flat and normalized — `PermitOfferJson` for the offer-lifecycle
19
+ * Payloads are flat and normalized — `RoleGrantOfferJson` for the offer-lifecycle
20
20
  * notifications (decline reason rides on `offer.decline_reason`, not a
21
- * sibling field), and `{permit_id, role, scope_id, reason?}` for `permit_revoke`. The
21
+ * sibling field), and `{role_grant_id, role, scope_id, reason?}` for `role_grant_revoke`. The
22
22
  * revokee/grantor/recipient account id travels via the send target (the
23
23
  * `NotificationSender.send_to_account` argument), not in the payload.
24
24
  *
25
25
  * The specs surface as `EventSpec`s via `create_action_event_spec` — callers
26
- * append `PERMIT_OFFER_NOTIFICATION_SPECS` to their `event_specs` on
26
+ * append `ROLE_GRANT_OFFER_NOTIFICATION_SPECS` to their `event_specs` on
27
27
  * `create_app_server` so the surface reflects them and DEV-mode broadcast
28
28
  * validation catches payload drift.
29
29
  *
@@ -50,20 +50,21 @@ import type { JsonrpcNotification } from '../http/jsonrpc.js';
50
50
  export interface NotificationSender {
51
51
  send_to_account: (account_id: Uuid, message: JsonrpcNotification) => number;
52
52
  }
53
- export declare const PERMIT_OFFER_RECEIVED_NOTIFICATION_METHOD = "permit_offer_received";
54
- export declare const PERMIT_OFFER_RETRACTED_NOTIFICATION_METHOD = "permit_offer_retracted";
55
- export declare const PERMIT_OFFER_ACCEPTED_NOTIFICATION_METHOD = "permit_offer_accepted";
56
- export declare const PERMIT_OFFER_DECLINED_NOTIFICATION_METHOD = "permit_offer_declined";
57
- export declare const PERMIT_OFFER_SUPERSEDE_NOTIFICATION_METHOD = "permit_offer_supersede";
58
- export declare const PERMIT_REVOKE_NOTIFICATION_METHOD = "permit_revoke";
59
- /** Params for `permit_offer_received` — offer delivered to its recipient. */
60
- export declare const PermitOfferReceivedParams: z.ZodObject<{
53
+ export declare const ROLE_GRANT_OFFER_RECEIVED_NOTIFICATION_METHOD = "role_grant_offer_received";
54
+ export declare const ROLE_GRANT_OFFER_RETRACTED_NOTIFICATION_METHOD = "role_grant_offer_retracted";
55
+ export declare const ROLE_GRANT_OFFER_ACCEPTED_NOTIFICATION_METHOD = "role_grant_offer_accepted";
56
+ export declare const ROLE_GRANT_OFFER_DECLINED_NOTIFICATION_METHOD = "role_grant_offer_declined";
57
+ export declare const ROLE_GRANT_OFFER_SUPERSEDE_NOTIFICATION_METHOD = "role_grant_offer_supersede";
58
+ export declare const ROLE_GRANT_REVOKE_NOTIFICATION_METHOD = "role_grant_revoke";
59
+ /** Params for `role_grant_offer_received` — offer delivered to its recipient. */
60
+ export declare const RoleGrantOfferReceivedParams: z.ZodObject<{
61
61
  offer: z.ZodObject<{
62
62
  id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
63
63
  from_actor_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
64
64
  to_account_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
65
65
  to_actor_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
66
66
  role: z.ZodString;
67
+ scope_kind: z.ZodNullable<z.ZodString>;
67
68
  scope_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
68
69
  message: z.ZodNullable<z.ZodString>;
69
70
  created_at: z.ZodString;
@@ -73,18 +74,19 @@ export declare const PermitOfferReceivedParams: z.ZodObject<{
73
74
  decline_reason: z.ZodNullable<z.ZodString>;
74
75
  retracted_at: z.ZodNullable<z.ZodString>;
75
76
  superseded_at: z.ZodNullable<z.ZodString>;
76
- resulting_permit_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
77
+ resulting_role_grant_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
77
78
  }, z.core.$strict>;
78
79
  }, z.core.$strict>;
79
- export type PermitOfferReceivedParams = z.infer<typeof PermitOfferReceivedParams>;
80
- /** Params for `permit_offer_retracted` — grantor-side retraction. */
81
- export declare const PermitOfferRetractedParams: z.ZodObject<{
80
+ export type RoleGrantOfferReceivedParams = z.infer<typeof RoleGrantOfferReceivedParams>;
81
+ /** Params for `role_grant_offer_retracted` — grantor-side retraction. */
82
+ export declare const RoleGrantOfferRetractedParams: z.ZodObject<{
82
83
  offer: z.ZodObject<{
83
84
  id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
84
85
  from_actor_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
85
86
  to_account_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
86
87
  to_actor_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
87
88
  role: z.ZodString;
89
+ scope_kind: z.ZodNullable<z.ZodString>;
88
90
  scope_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
89
91
  message: z.ZodNullable<z.ZodString>;
90
92
  created_at: z.ZodString;
@@ -94,18 +96,19 @@ export declare const PermitOfferRetractedParams: z.ZodObject<{
94
96
  decline_reason: z.ZodNullable<z.ZodString>;
95
97
  retracted_at: z.ZodNullable<z.ZodString>;
96
98
  superseded_at: z.ZodNullable<z.ZodString>;
97
- resulting_permit_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
99
+ resulting_role_grant_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
98
100
  }, z.core.$strict>;
99
101
  }, z.core.$strict>;
100
- export type PermitOfferRetractedParams = z.infer<typeof PermitOfferRetractedParams>;
101
- /** Params for `permit_offer_accepted` — recipient accepted the offer. */
102
- export declare const PermitOfferAcceptedParams: z.ZodObject<{
102
+ export type RoleGrantOfferRetractedParams = z.infer<typeof RoleGrantOfferRetractedParams>;
103
+ /** Params for `role_grant_offer_accepted` — recipient accepted the offer. */
104
+ export declare const RoleGrantOfferAcceptedParams: z.ZodObject<{
103
105
  offer: z.ZodObject<{
104
106
  id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
105
107
  from_actor_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
106
108
  to_account_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
107
109
  to_actor_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
108
110
  role: z.ZodString;
111
+ scope_kind: z.ZodNullable<z.ZodString>;
109
112
  scope_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
110
113
  message: z.ZodNullable<z.ZodString>;
111
114
  created_at: z.ZodString;
@@ -115,22 +118,23 @@ export declare const PermitOfferAcceptedParams: z.ZodObject<{
115
118
  decline_reason: z.ZodNullable<z.ZodString>;
116
119
  retracted_at: z.ZodNullable<z.ZodString>;
117
120
  superseded_at: z.ZodNullable<z.ZodString>;
118
- resulting_permit_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
121
+ resulting_role_grant_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
119
122
  }, z.core.$strict>;
120
123
  }, z.core.$strict>;
121
- export type PermitOfferAcceptedParams = z.infer<typeof PermitOfferAcceptedParams>;
124
+ export type RoleGrantOfferAcceptedParams = z.infer<typeof RoleGrantOfferAcceptedParams>;
122
125
  /**
123
- * Params for `permit_offer_declined`. The decline reason (if any) rides along
126
+ * Params for `role_grant_offer_declined`. The decline reason (if any) rides along
124
127
  * inside `offer.decline_reason` — the DB stamps it on the offer row during
125
128
  * decline, so a sibling `reason` field would just duplicate it.
126
129
  */
127
- export declare const PermitOfferDeclinedParams: z.ZodObject<{
130
+ export declare const RoleGrantOfferDeclinedParams: z.ZodObject<{
128
131
  offer: z.ZodObject<{
129
132
  id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
130
133
  from_actor_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
131
134
  to_account_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
132
135
  to_actor_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
133
136
  role: z.ZodString;
137
+ scope_kind: z.ZodNullable<z.ZodString>;
134
138
  scope_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
135
139
  message: z.ZodNullable<z.ZodString>;
136
140
  created_at: z.ZodString;
@@ -140,26 +144,27 @@ export declare const PermitOfferDeclinedParams: z.ZodObject<{
140
144
  decline_reason: z.ZodNullable<z.ZodString>;
141
145
  retracted_at: z.ZodNullable<z.ZodString>;
142
146
  superseded_at: z.ZodNullable<z.ZodString>;
143
- resulting_permit_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
147
+ resulting_role_grant_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
144
148
  }, z.core.$strict>;
145
149
  }, z.core.$strict>;
146
- export type PermitOfferDeclinedParams = z.infer<typeof PermitOfferDeclinedParams>;
150
+ export type RoleGrantOfferDeclinedParams = z.infer<typeof RoleGrantOfferDeclinedParams>;
147
151
  /**
148
- * Params for `permit_offer_supersede`. Fires to the grantor's sockets when
152
+ * Params for `role_grant_offer_supersede`. Fires to the grantor's sockets when
149
153
  * their pending offer is obsoleted — either by a sibling accept
150
- * (`reason: 'sibling_accepted'`), by revoke of the resulting permit
151
- * (`reason: 'permit_revoked'`), or by deletion of the parent scope row
154
+ * (`reason: 'sibling_accepted'`), by revoke of the resulting role_grant
155
+ * (`reason: 'role_grant_revoked'`), or by deletion of the parent scope row
152
156
  * the offer was bound to (`reason: 'scope_destroyed'`). `cause_id` points
153
- * at the accepted offer id, the revoked permit id, or the destroyed scope
157
+ * at the accepted offer id, the revoked role_grant id, or the destroyed scope
154
158
  * row id respectively.
155
159
  */
156
- export declare const PermitOfferSupersedeParams: z.ZodObject<{
160
+ export declare const RoleGrantOfferSupersedeParams: z.ZodObject<{
157
161
  offer: z.ZodObject<{
158
162
  id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
159
163
  from_actor_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
160
164
  to_account_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
161
165
  to_actor_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
162
166
  role: z.ZodString;
167
+ scope_kind: z.ZodNullable<z.ZodString>;
163
168
  scope_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
164
169
  message: z.ZodNullable<z.ZodString>;
165
170
  created_at: z.ZodString;
@@ -169,31 +174,31 @@ export declare const PermitOfferSupersedeParams: z.ZodObject<{
169
174
  decline_reason: z.ZodNullable<z.ZodString>;
170
175
  retracted_at: z.ZodNullable<z.ZodString>;
171
176
  superseded_at: z.ZodNullable<z.ZodString>;
172
- resulting_permit_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
177
+ resulting_role_grant_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
173
178
  }, z.core.$strict>;
174
179
  reason: z.ZodEnum<{
175
180
  sibling_accepted: "sibling_accepted";
176
- permit_revoked: "permit_revoked";
181
+ role_grant_revoked: "role_grant_revoked";
177
182
  scope_destroyed: "scope_destroyed";
178
183
  }>;
179
184
  cause_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
180
185
  }, z.core.$strict>;
181
- export type PermitOfferSupersedeParams = z.infer<typeof PermitOfferSupersedeParams>;
186
+ export type RoleGrantOfferSupersedeParams = z.infer<typeof RoleGrantOfferSupersedeParams>;
182
187
  /**
183
- * Params for `permit_revoke`. Delivered to the revokee's sockets when one
184
- * of their active permits is revoked. Flat wire shape — `revoked_by` is
188
+ * Params for `role_grant_revoke`. Delivered to the revokee's sockets when one
189
+ * of their active role_grants is revoked. Flat wire shape — `revoked_by` is
185
190
  * admin-UI-visible but deliberately omitted here (the revokee doesn't need
186
191
  * to learn the admin's identity). Target account is implicit in the send
187
192
  * target.
188
193
  */
189
- export declare const PermitRevokeParams: z.ZodObject<{
190
- permit_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
194
+ export declare const RoleGrantRevokeParams: z.ZodObject<{
195
+ role_grant_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
191
196
  role: z.ZodString;
192
197
  scope_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
193
198
  reason: z.ZodNullable<z.ZodString>;
194
199
  }, z.core.$strict>;
195
- export type PermitRevokeParams = z.infer<typeof PermitRevokeParams>;
196
- export declare const permit_offer_received_notification_spec: {
200
+ export type RoleGrantRevokeParams = z.infer<typeof RoleGrantRevokeParams>;
201
+ export declare const role_grant_offer_received_notification_spec: {
197
202
  method: string;
198
203
  kind: "remote_notification";
199
204
  initiator: "backend";
@@ -206,6 +211,7 @@ export declare const permit_offer_received_notification_spec: {
206
211
  to_account_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
207
212
  to_actor_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
208
213
  role: z.ZodString;
214
+ scope_kind: z.ZodNullable<z.ZodString>;
209
215
  scope_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
210
216
  message: z.ZodNullable<z.ZodString>;
211
217
  created_at: z.ZodString;
@@ -215,14 +221,14 @@ export declare const permit_offer_received_notification_spec: {
215
221
  decline_reason: z.ZodNullable<z.ZodString>;
216
222
  retracted_at: z.ZodNullable<z.ZodString>;
217
223
  superseded_at: z.ZodNullable<z.ZodString>;
218
- resulting_permit_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
224
+ resulting_role_grant_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
219
225
  }, z.core.$strict>;
220
226
  }, z.core.$strict>;
221
227
  output: z.ZodVoid;
222
228
  async: true;
223
229
  description: string;
224
230
  };
225
- export declare const permit_offer_retracted_notification_spec: {
231
+ export declare const role_grant_offer_retracted_notification_spec: {
226
232
  method: string;
227
233
  kind: "remote_notification";
228
234
  initiator: "backend";
@@ -235,6 +241,7 @@ export declare const permit_offer_retracted_notification_spec: {
235
241
  to_account_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
236
242
  to_actor_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
237
243
  role: z.ZodString;
244
+ scope_kind: z.ZodNullable<z.ZodString>;
238
245
  scope_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
239
246
  message: z.ZodNullable<z.ZodString>;
240
247
  created_at: z.ZodString;
@@ -244,14 +251,14 @@ export declare const permit_offer_retracted_notification_spec: {
244
251
  decline_reason: z.ZodNullable<z.ZodString>;
245
252
  retracted_at: z.ZodNullable<z.ZodString>;
246
253
  superseded_at: z.ZodNullable<z.ZodString>;
247
- resulting_permit_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
254
+ resulting_role_grant_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
248
255
  }, z.core.$strict>;
249
256
  }, z.core.$strict>;
250
257
  output: z.ZodVoid;
251
258
  async: true;
252
259
  description: string;
253
260
  };
254
- export declare const permit_offer_accepted_notification_spec: {
261
+ export declare const role_grant_offer_accepted_notification_spec: {
255
262
  method: string;
256
263
  kind: "remote_notification";
257
264
  initiator: "backend";
@@ -264,6 +271,7 @@ export declare const permit_offer_accepted_notification_spec: {
264
271
  to_account_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
265
272
  to_actor_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
266
273
  role: z.ZodString;
274
+ scope_kind: z.ZodNullable<z.ZodString>;
267
275
  scope_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
268
276
  message: z.ZodNullable<z.ZodString>;
269
277
  created_at: z.ZodString;
@@ -273,14 +281,14 @@ export declare const permit_offer_accepted_notification_spec: {
273
281
  decline_reason: z.ZodNullable<z.ZodString>;
274
282
  retracted_at: z.ZodNullable<z.ZodString>;
275
283
  superseded_at: z.ZodNullable<z.ZodString>;
276
- resulting_permit_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
284
+ resulting_role_grant_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
277
285
  }, z.core.$strict>;
278
286
  }, z.core.$strict>;
279
287
  output: z.ZodVoid;
280
288
  async: true;
281
289
  description: string;
282
290
  };
283
- export declare const permit_offer_declined_notification_spec: {
291
+ export declare const role_grant_offer_declined_notification_spec: {
284
292
  method: string;
285
293
  kind: "remote_notification";
286
294
  initiator: "backend";
@@ -293,6 +301,7 @@ export declare const permit_offer_declined_notification_spec: {
293
301
  to_account_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
294
302
  to_actor_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
295
303
  role: z.ZodString;
304
+ scope_kind: z.ZodNullable<z.ZodString>;
296
305
  scope_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
297
306
  message: z.ZodNullable<z.ZodString>;
298
307
  created_at: z.ZodString;
@@ -302,14 +311,14 @@ export declare const permit_offer_declined_notification_spec: {
302
311
  decline_reason: z.ZodNullable<z.ZodString>;
303
312
  retracted_at: z.ZodNullable<z.ZodString>;
304
313
  superseded_at: z.ZodNullable<z.ZodString>;
305
- resulting_permit_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
314
+ resulting_role_grant_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
306
315
  }, z.core.$strict>;
307
316
  }, z.core.$strict>;
308
317
  output: z.ZodVoid;
309
318
  async: true;
310
319
  description: string;
311
320
  };
312
- export declare const permit_offer_supersede_notification_spec: {
321
+ export declare const role_grant_offer_supersede_notification_spec: {
313
322
  method: string;
314
323
  kind: "remote_notification";
315
324
  initiator: "backend";
@@ -322,6 +331,7 @@ export declare const permit_offer_supersede_notification_spec: {
322
331
  to_account_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
323
332
  to_actor_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
324
333
  role: z.ZodString;
334
+ scope_kind: z.ZodNullable<z.ZodString>;
325
335
  scope_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
326
336
  message: z.ZodNullable<z.ZodString>;
327
337
  created_at: z.ZodString;
@@ -331,11 +341,11 @@ export declare const permit_offer_supersede_notification_spec: {
331
341
  decline_reason: z.ZodNullable<z.ZodString>;
332
342
  retracted_at: z.ZodNullable<z.ZodString>;
333
343
  superseded_at: z.ZodNullable<z.ZodString>;
334
- resulting_permit_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
344
+ resulting_role_grant_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
335
345
  }, z.core.$strict>;
336
346
  reason: z.ZodEnum<{
337
347
  sibling_accepted: "sibling_accepted";
338
- permit_revoked: "permit_revoked";
348
+ role_grant_revoked: "role_grant_revoked";
339
349
  scope_destroyed: "scope_destroyed";
340
350
  }>;
341
351
  cause_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
@@ -344,14 +354,14 @@ export declare const permit_offer_supersede_notification_spec: {
344
354
  async: true;
345
355
  description: string;
346
356
  };
347
- export declare const permit_revoke_notification_spec: {
357
+ export declare const role_grant_revoke_notification_spec: {
348
358
  method: string;
349
359
  kind: "remote_notification";
350
360
  initiator: "backend";
351
361
  auth: null;
352
362
  side_effects: true;
353
363
  input: z.ZodObject<{
354
- permit_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
364
+ role_grant_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
355
365
  role: z.ZodString;
356
366
  scope_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
357
367
  reason: z.ZodNullable<z.ZodString>;
@@ -361,16 +371,16 @@ export declare const permit_revoke_notification_spec: {
361
371
  description: string;
362
372
  };
363
373
  /**
364
- * SSE/WS event specs for the consentful-permits notification surface.
374
+ * SSE/WS event specs for the consentful-role-grants notification surface.
365
375
  *
366
376
  * Pass to `create_app_server`'s `event_specs` so the attack surface reflects
367
377
  * them and DEV-mode `create_validated_broadcaster` catches payload drift.
368
378
  */
369
- export declare const PERMIT_OFFER_NOTIFICATION_SPECS: Array<EventSpec>;
370
- export declare const build_permit_offer_received_notification: (params: PermitOfferReceivedParams) => JsonrpcNotification;
371
- export declare const build_permit_offer_retracted_notification: (params: PermitOfferRetractedParams) => JsonrpcNotification;
372
- export declare const build_permit_offer_accepted_notification: (params: PermitOfferAcceptedParams) => JsonrpcNotification;
373
- export declare const build_permit_offer_declined_notification: (params: PermitOfferDeclinedParams) => JsonrpcNotification;
374
- export declare const build_permit_offer_supersede_notification: (params: PermitOfferSupersedeParams) => JsonrpcNotification;
375
- export declare const build_permit_revoke_notification: (params: PermitRevokeParams) => JsonrpcNotification;
376
- //# sourceMappingURL=permit_offer_notifications.d.ts.map
379
+ export declare const ROLE_GRANT_OFFER_NOTIFICATION_SPECS: Array<EventSpec>;
380
+ export declare const build_role_grant_offer_received_notification: (params: RoleGrantOfferReceivedParams) => JsonrpcNotification;
381
+ export declare const build_role_grant_offer_retracted_notification: (params: RoleGrantOfferRetractedParams) => JsonrpcNotification;
382
+ export declare const build_role_grant_offer_accepted_notification: (params: RoleGrantOfferAcceptedParams) => JsonrpcNotification;
383
+ export declare const build_role_grant_offer_declined_notification: (params: RoleGrantOfferDeclinedParams) => JsonrpcNotification;
384
+ export declare const build_role_grant_offer_supersede_notification: (params: RoleGrantOfferSupersedeParams) => JsonrpcNotification;
385
+ export declare const build_role_grant_revoke_notification: (params: RoleGrantRevokeParams) => JsonrpcNotification;
386
+ //# sourceMappingURL=role_grant_offer_notifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role_grant_offer_notifications.d.ts","sourceRoot":"../src/lib/","sources":["../../src/lib/auth/role_grant_offer_notifications.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAqB,KAAK,IAAI,EAAC,MAAM,wBAAwB,CAAC;AAIrE,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAM5D;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,kBAAkB;IAClC,eAAe,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,KAAK,MAAM,CAAC;CAC5E;AAID,eAAO,MAAM,6CAA6C,8BAA8B,CAAC;AACzF,eAAO,MAAM,8CAA8C,+BAA+B,CAAC;AAC3F,eAAO,MAAM,6CAA6C,8BAA8B,CAAC;AACzF,eAAO,MAAM,6CAA6C,8BAA8B,CAAC;AACzF,eAAO,MAAM,8CAA8C,+BAA+B,CAAC;AAC3F,eAAO,MAAM,qCAAqC,sBAAsB,CAAC;AAIzE,iFAAiF;AACjF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;kBAEvC,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAExF,yEAAyE;AACzE,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;kBAExC,CAAC;AACH,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAE1F,6EAA6E;AAC7E,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;kBAEvC,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAExF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;kBAEvC,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAExF;;;;;;;;GAQG;AACH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;kBAIxC,CAAC;AACH,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAE1F;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB;;;;;kBAKhC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAI1E,eAAO,MAAM,2CAA2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUhB,CAAC;AAEzC,eAAO,MAAM,4CAA4C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUjB,CAAC;AAEzC,eAAO,MAAM,2CAA2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUhB,CAAC;AAEzC,eAAO,MAAM,2CAA2C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAUhB,CAAC;AAEzC,eAAO,MAAM,4CAA4C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWjB,CAAC;AAEzC,eAAO,MAAM,mCAAmC;;;;;;;;;;;;;;;CAUR,CAAC;AAIzC;;;;;GAKG;AACH,eAAO,MAAM,mCAAmC,EAAE,KAAK,CAAC,SAAS,CAOhE,CAAC;AAIF,eAAO,MAAM,4CAA4C,GACxD,QAAQ,4BAA4B,KAClC,mBACgF,CAAC;AAEpF,eAAO,MAAM,6CAA6C,GACzD,QAAQ,6BAA6B,KACnC,mBACiF,CAAC;AAErF,eAAO,MAAM,4CAA4C,GACxD,QAAQ,4BAA4B,KAClC,mBACgF,CAAC;AAEpF,eAAO,MAAM,4CAA4C,GACxD,QAAQ,4BAA4B,KAClC,mBACgF,CAAC;AAEpF,eAAO,MAAM,6CAA6C,GACzD,QAAQ,6BAA6B,KACnC,mBACiF,CAAC;AAErF,eAAO,MAAM,oCAAoC,GAChD,QAAQ,qBAAqB,KAC3B,mBACwE,CAAC"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Role grant offer WebSocket notification specs, builders, and the narrow
3
+ * `NotificationSender` interface that decouples offer/revoke send sites
4
+ * from `BackendWebsocketTransport`.
5
+ *
6
+ * Six `RemoteNotificationActionSpec`s cover the consentful-role-grants
7
+ * lifecycle events the server pushes to affected accounts:
8
+ *
9
+ * - `role_grant_offer_received` → recipient's sockets when an offer is created
10
+ * - `role_grant_offer_retracted` → recipient's sockets when a grantor retracts
11
+ * - `role_grant_offer_accepted` → grantor's sockets when the recipient accepts
12
+ * - `role_grant_offer_declined` → grantor's sockets when the recipient declines
13
+ * - `role_grant_offer_supersede` → grantor's sockets when a sibling accept,
14
+ * a revoke of the resulting role_grant, or destruction of the parent scope
15
+ * row obsoletes their pending offer
16
+ * - `role_grant_revoke` → revokee's sockets when one of their active role_grants
17
+ * is revoked (companion to the `role_grant_revoke` audit event)
18
+ *
19
+ * Payloads are flat and normalized — `RoleGrantOfferJson` for the offer-lifecycle
20
+ * notifications (decline reason rides on `offer.decline_reason`, not a
21
+ * sibling field), and `{role_grant_id, role, scope_id, reason?}` for `role_grant_revoke`. The
22
+ * revokee/grantor/recipient account id travels via the send target (the
23
+ * `NotificationSender.send_to_account` argument), not in the payload.
24
+ *
25
+ * The specs surface as `EventSpec`s via `create_action_event_spec` — callers
26
+ * append `ROLE_GRANT_OFFER_NOTIFICATION_SPECS` to their `event_specs` on
27
+ * `create_app_server` so the surface reflects them and DEV-mode broadcast
28
+ * validation catches payload drift.
29
+ *
30
+ * @module
31
+ */
32
+ import { z } from 'zod';
33
+ import { Uuid as UuidSchema } from '@fuzdev/fuz_util/id.js';
34
+ import { create_action_event_spec } from '../actions/action_bridge.js';
35
+ import { create_jsonrpc_notification } from '../http/jsonrpc_helpers.js';
36
+ import { RoleName } from './role_schema.js';
37
+ import { RoleGrantOfferJson } from './role_grant_offer_schema.js';
38
+ import { ROLE_GRANT_REVOKED_REASON_LENGTH_MAX } from './account_schema.js';
39
+ // -- Method constants -------------------------------------------------------
40
+ export const ROLE_GRANT_OFFER_RECEIVED_NOTIFICATION_METHOD = 'role_grant_offer_received';
41
+ export const ROLE_GRANT_OFFER_RETRACTED_NOTIFICATION_METHOD = 'role_grant_offer_retracted';
42
+ export const ROLE_GRANT_OFFER_ACCEPTED_NOTIFICATION_METHOD = 'role_grant_offer_accepted';
43
+ export const ROLE_GRANT_OFFER_DECLINED_NOTIFICATION_METHOD = 'role_grant_offer_declined';
44
+ export const ROLE_GRANT_OFFER_SUPERSEDE_NOTIFICATION_METHOD = 'role_grant_offer_supersede';
45
+ export const ROLE_GRANT_REVOKE_NOTIFICATION_METHOD = 'role_grant_revoke';
46
+ // -- Params schemas ---------------------------------------------------------
47
+ /** Params for `role_grant_offer_received` — offer delivered to its recipient. */
48
+ export const RoleGrantOfferReceivedParams = z.strictObject({
49
+ offer: RoleGrantOfferJson,
50
+ });
51
+ /** Params for `role_grant_offer_retracted` — grantor-side retraction. */
52
+ export const RoleGrantOfferRetractedParams = z.strictObject({
53
+ offer: RoleGrantOfferJson,
54
+ });
55
+ /** Params for `role_grant_offer_accepted` — recipient accepted the offer. */
56
+ export const RoleGrantOfferAcceptedParams = z.strictObject({
57
+ offer: RoleGrantOfferJson,
58
+ });
59
+ /**
60
+ * Params for `role_grant_offer_declined`. The decline reason (if any) rides along
61
+ * inside `offer.decline_reason` — the DB stamps it on the offer row during
62
+ * decline, so a sibling `reason` field would just duplicate it.
63
+ */
64
+ export const RoleGrantOfferDeclinedParams = z.strictObject({
65
+ offer: RoleGrantOfferJson,
66
+ });
67
+ /**
68
+ * Params for `role_grant_offer_supersede`. Fires to the grantor's sockets when
69
+ * their pending offer is obsoleted — either by a sibling accept
70
+ * (`reason: 'sibling_accepted'`), by revoke of the resulting role_grant
71
+ * (`reason: 'role_grant_revoked'`), or by deletion of the parent scope row
72
+ * the offer was bound to (`reason: 'scope_destroyed'`). `cause_id` points
73
+ * at the accepted offer id, the revoked role_grant id, or the destroyed scope
74
+ * row id respectively.
75
+ */
76
+ export const RoleGrantOfferSupersedeParams = z.strictObject({
77
+ offer: RoleGrantOfferJson,
78
+ reason: z.enum(['sibling_accepted', 'role_grant_revoked', 'scope_destroyed']),
79
+ cause_id: UuidSchema,
80
+ });
81
+ /**
82
+ * Params for `role_grant_revoke`. Delivered to the revokee's sockets when one
83
+ * of their active role_grants is revoked. Flat wire shape — `revoked_by` is
84
+ * admin-UI-visible but deliberately omitted here (the revokee doesn't need
85
+ * to learn the admin's identity). Target account is implicit in the send
86
+ * target.
87
+ */
88
+ export const RoleGrantRevokeParams = z.strictObject({
89
+ role_grant_id: UuidSchema,
90
+ role: RoleName,
91
+ scope_id: UuidSchema.nullable(),
92
+ reason: z.string().max(ROLE_GRANT_REVOKED_REASON_LENGTH_MAX).nullable(),
93
+ });
94
+ // -- Action specs -----------------------------------------------------------
95
+ export const role_grant_offer_received_notification_spec = {
96
+ method: ROLE_GRANT_OFFER_RECEIVED_NOTIFICATION_METHOD,
97
+ kind: 'remote_notification',
98
+ initiator: 'backend',
99
+ auth: null,
100
+ side_effects: true,
101
+ input: RoleGrantOfferReceivedParams,
102
+ output: z.void(),
103
+ async: true,
104
+ description: 'A new role_grant offer arrived in the recipient’s inbox.',
105
+ };
106
+ export const role_grant_offer_retracted_notification_spec = {
107
+ method: ROLE_GRANT_OFFER_RETRACTED_NOTIFICATION_METHOD,
108
+ kind: 'remote_notification',
109
+ initiator: 'backend',
110
+ auth: null,
111
+ side_effects: true,
112
+ input: RoleGrantOfferRetractedParams,
113
+ output: z.void(),
114
+ async: true,
115
+ description: 'A pending role_grant offer was retracted by its grantor.',
116
+ };
117
+ export const role_grant_offer_accepted_notification_spec = {
118
+ method: ROLE_GRANT_OFFER_ACCEPTED_NOTIFICATION_METHOD,
119
+ kind: 'remote_notification',
120
+ initiator: 'backend',
121
+ auth: null,
122
+ side_effects: true,
123
+ input: RoleGrantOfferAcceptedParams,
124
+ output: z.void(),
125
+ async: true,
126
+ description: 'A pending role_grant offer was accepted by its recipient.',
127
+ };
128
+ export const role_grant_offer_declined_notification_spec = {
129
+ method: ROLE_GRANT_OFFER_DECLINED_NOTIFICATION_METHOD,
130
+ kind: 'remote_notification',
131
+ initiator: 'backend',
132
+ auth: null,
133
+ side_effects: true,
134
+ input: RoleGrantOfferDeclinedParams,
135
+ output: z.void(),
136
+ async: true,
137
+ description: 'A pending role_grant offer was declined by its recipient.',
138
+ };
139
+ export const role_grant_offer_supersede_notification_spec = {
140
+ method: ROLE_GRANT_OFFER_SUPERSEDE_NOTIFICATION_METHOD,
141
+ kind: 'remote_notification',
142
+ initiator: 'backend',
143
+ auth: null,
144
+ side_effects: true,
145
+ input: RoleGrantOfferSupersedeParams,
146
+ output: z.void(),
147
+ async: true,
148
+ description: 'A grantor’s pending role_grant offer was obsoleted by a sibling accept, by revoke of the resulting role_grant, or by destruction of the parent scope row.',
149
+ };
150
+ export const role_grant_revoke_notification_spec = {
151
+ method: ROLE_GRANT_REVOKE_NOTIFICATION_METHOD,
152
+ kind: 'remote_notification',
153
+ initiator: 'backend',
154
+ auth: null,
155
+ side_effects: true,
156
+ input: RoleGrantRevokeParams,
157
+ output: z.void(),
158
+ async: true,
159
+ description: 'An active role_grant on the revokee’s account was revoked.',
160
+ };
161
+ // -- EventSpec surface ------------------------------------------------------
162
+ /**
163
+ * SSE/WS event specs for the consentful-role-grants notification surface.
164
+ *
165
+ * Pass to `create_app_server`'s `event_specs` so the attack surface reflects
166
+ * them and DEV-mode `create_validated_broadcaster` catches payload drift.
167
+ */
168
+ export const ROLE_GRANT_OFFER_NOTIFICATION_SPECS = [
169
+ create_action_event_spec(role_grant_offer_received_notification_spec),
170
+ create_action_event_spec(role_grant_offer_retracted_notification_spec),
171
+ create_action_event_spec(role_grant_offer_accepted_notification_spec),
172
+ create_action_event_spec(role_grant_offer_declined_notification_spec),
173
+ create_action_event_spec(role_grant_offer_supersede_notification_spec),
174
+ create_action_event_spec(role_grant_revoke_notification_spec),
175
+ ];
176
+ // -- Notification builders --------------------------------------------------
177
+ export const build_role_grant_offer_received_notification = (params) => create_jsonrpc_notification(ROLE_GRANT_OFFER_RECEIVED_NOTIFICATION_METHOD, params);
178
+ export const build_role_grant_offer_retracted_notification = (params) => create_jsonrpc_notification(ROLE_GRANT_OFFER_RETRACTED_NOTIFICATION_METHOD, params);
179
+ export const build_role_grant_offer_accepted_notification = (params) => create_jsonrpc_notification(ROLE_GRANT_OFFER_ACCEPTED_NOTIFICATION_METHOD, params);
180
+ export const build_role_grant_offer_declined_notification = (params) => create_jsonrpc_notification(ROLE_GRANT_OFFER_DECLINED_NOTIFICATION_METHOD, params);
181
+ export const build_role_grant_offer_supersede_notification = (params) => create_jsonrpc_notification(ROLE_GRANT_OFFER_SUPERSEDE_NOTIFICATION_METHOD, params);
182
+ export const build_role_grant_revoke_notification = (params) => create_jsonrpc_notification(ROLE_GRANT_REVOKE_NOTIFICATION_METHOD, params);