@agilesyndrome/cf-genai-base 5.0.2 → 6.0.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 (696) hide show
  1. package/CHANGELOG.md +99 -0
  2. package/CLI.md +9 -13
  3. package/CONTRACT.md +32 -15
  4. package/README.md +95 -28
  5. package/bin/cf-genai.js +24 -8
  6. package/dist/admin/auth.d.ts +12 -0
  7. package/dist/admin/auth.d.ts.map +1 -0
  8. package/dist/admin/auth.js +103 -0
  9. package/dist/admin/auth.js.map +1 -0
  10. package/dist/admin/index.d.ts +2 -0
  11. package/dist/admin/index.d.ts.map +1 -0
  12. package/dist/admin/index.js +2 -0
  13. package/dist/admin/index.js.map +1 -0
  14. package/dist/admin/router.d.ts +4 -0
  15. package/dist/admin/router.d.ts.map +1 -0
  16. package/dist/admin/router.js +24 -0
  17. package/dist/admin/router.js.map +1 -0
  18. package/dist/admin/types.d.ts +43 -0
  19. package/dist/admin/types.d.ts.map +1 -0
  20. package/dist/admin/types.js +2 -0
  21. package/dist/admin/types.js.map +1 -0
  22. package/dist/api/client.d.ts +34 -0
  23. package/dist/api/client.d.ts.map +1 -0
  24. package/dist/api/client.js +59 -0
  25. package/dist/api/client.js.map +1 -0
  26. package/dist/api/contracts.d.ts +31 -0
  27. package/dist/api/contracts.d.ts.map +1 -0
  28. package/dist/api/contracts.js +101 -0
  29. package/dist/api/contracts.js.map +1 -0
  30. package/dist/api/http.d.ts +12 -0
  31. package/dist/api/http.d.ts.map +1 -0
  32. package/dist/api/http.js +36 -0
  33. package/dist/api/http.js.map +1 -0
  34. package/dist/api/index.d.ts +14 -0
  35. package/dist/api/index.d.ts.map +1 -0
  36. package/dist/api/index.js +11 -0
  37. package/dist/api/index.js.map +1 -0
  38. package/dist/api/testing.d.ts +10 -0
  39. package/dist/api/testing.d.ts.map +1 -0
  40. package/dist/api/testing.js +26 -0
  41. package/dist/api/testing.js.map +1 -0
  42. package/dist/app.d.ts +21 -0
  43. package/dist/app.d.ts.map +1 -0
  44. package/dist/app.js +23 -0
  45. package/dist/app.js.map +1 -0
  46. package/dist/auth/constants.d.ts +9 -0
  47. package/dist/auth/constants.d.ts.map +1 -0
  48. package/{src → dist}/auth/constants.js +2 -2
  49. package/dist/auth/constants.js.map +1 -0
  50. package/dist/auth/domains.d.ts +3 -0
  51. package/dist/auth/domains.d.ts.map +1 -0
  52. package/dist/auth/domains.js +8 -0
  53. package/dist/auth/domains.js.map +1 -0
  54. package/dist/auth/encoding.d.ts +7 -0
  55. package/dist/auth/encoding.d.ts.map +1 -0
  56. package/dist/auth/encoding.js +41 -0
  57. package/dist/auth/encoding.js.map +1 -0
  58. package/dist/auth/groups/d1.d.ts +16 -0
  59. package/dist/auth/groups/d1.d.ts.map +1 -0
  60. package/dist/auth/groups/d1.js +66 -0
  61. package/dist/auth/groups/d1.js.map +1 -0
  62. package/dist/auth/groups/domain.d.ts +8 -0
  63. package/dist/auth/groups/domain.d.ts.map +1 -0
  64. package/dist/auth/groups/domain.js +99 -0
  65. package/dist/auth/groups/domain.js.map +1 -0
  66. package/dist/auth/groups/index.d.ts +7 -0
  67. package/dist/auth/groups/index.d.ts.map +1 -0
  68. package/dist/auth/groups/index.js +7 -0
  69. package/dist/auth/groups/index.js.map +1 -0
  70. package/dist/auth/groups/model.d.ts +38 -0
  71. package/dist/auth/groups/model.d.ts.map +1 -0
  72. package/dist/auth/groups/model.js +2 -0
  73. package/dist/auth/groups/model.js.map +1 -0
  74. package/dist/auth/groups/policy.d.ts +5 -0
  75. package/dist/auth/groups/policy.d.ts.map +1 -0
  76. package/dist/auth/groups/policy.js +8 -0
  77. package/dist/auth/groups/policy.js.map +1 -0
  78. package/dist/auth/groups/service.d.ts +20 -0
  79. package/dist/auth/groups/service.d.ts.map +1 -0
  80. package/dist/auth/groups/service.js +40 -0
  81. package/dist/auth/groups/service.js.map +1 -0
  82. package/dist/auth/groups/validation.d.ts +5 -0
  83. package/dist/auth/groups/validation.d.ts.map +1 -0
  84. package/dist/auth/groups/validation.js +22 -0
  85. package/dist/auth/groups/validation.js.map +1 -0
  86. package/dist/auth/groups/views/list.d.ts +10 -0
  87. package/dist/auth/groups/views/list.d.ts.map +1 -0
  88. package/dist/auth/groups/views/list.js +4 -0
  89. package/dist/auth/groups/views/list.js.map +1 -0
  90. package/dist/auth/identity/index.d.ts +58 -0
  91. package/dist/auth/identity/index.d.ts.map +1 -0
  92. package/dist/auth/identity/index.js +58 -0
  93. package/dist/auth/identity/index.js.map +1 -0
  94. package/dist/auth/impersonation/constants.d.ts +2 -0
  95. package/dist/auth/impersonation/constants.d.ts.map +1 -0
  96. package/dist/auth/impersonation/constants.js +2 -0
  97. package/dist/auth/impersonation/constants.js.map +1 -0
  98. package/dist/auth/impersonation/domain.d.ts +6 -0
  99. package/dist/auth/impersonation/domain.d.ts.map +1 -0
  100. package/dist/auth/impersonation/domain.js +16 -0
  101. package/dist/auth/impersonation/domain.js.map +1 -0
  102. package/dist/auth/impersonation/index.d.ts +6 -0
  103. package/dist/auth/impersonation/index.d.ts.map +1 -0
  104. package/dist/auth/impersonation/index.js +6 -0
  105. package/dist/auth/impersonation/index.js.map +1 -0
  106. package/dist/auth/impersonation/model.d.ts +12 -0
  107. package/dist/auth/impersonation/model.d.ts.map +1 -0
  108. package/dist/auth/impersonation/model.js +2 -0
  109. package/dist/auth/impersonation/model.js.map +1 -0
  110. package/dist/auth/impersonation/service.d.ts +4 -0
  111. package/dist/auth/impersonation/service.d.ts.map +1 -0
  112. package/dist/auth/impersonation/service.js +32 -0
  113. package/dist/auth/impersonation/service.js.map +1 -0
  114. package/dist/auth/impersonation/validation.d.ts +4 -0
  115. package/dist/auth/impersonation/validation.d.ts.map +1 -0
  116. package/dist/auth/impersonation/validation.js +14 -0
  117. package/dist/auth/impersonation/validation.js.map +1 -0
  118. package/dist/auth/index.d.ts +13 -0
  119. package/dist/auth/index.d.ts.map +1 -0
  120. package/dist/auth/index.js +13 -0
  121. package/dist/auth/index.js.map +1 -0
  122. package/dist/auth/oauth-single/constants.d.ts +4 -0
  123. package/dist/auth/oauth-single/constants.d.ts.map +1 -0
  124. package/dist/auth/oauth-single/constants.js +5 -0
  125. package/dist/auth/oauth-single/constants.js.map +1 -0
  126. package/dist/auth/oauth-single/cookies.d.ts +10 -0
  127. package/dist/auth/oauth-single/cookies.d.ts.map +1 -0
  128. package/dist/auth/oauth-single/cookies.js +59 -0
  129. package/dist/auth/oauth-single/cookies.js.map +1 -0
  130. package/dist/auth/oauth-single/domain.d.ts +14 -0
  131. package/dist/auth/oauth-single/domain.d.ts.map +1 -0
  132. package/dist/auth/oauth-single/domain.js +12 -0
  133. package/dist/auth/oauth-single/domain.js.map +1 -0
  134. package/dist/auth/oauth-single/index.d.ts +31 -0
  135. package/dist/auth/oauth-single/index.d.ts.map +1 -0
  136. package/dist/auth/oauth-single/index.js +215 -0
  137. package/dist/auth/oauth-single/index.js.map +1 -0
  138. package/dist/auth/oauth-single/model.d.ts +75 -0
  139. package/dist/auth/oauth-single/model.d.ts.map +1 -0
  140. package/dist/auth/oauth-single/model.js +2 -0
  141. package/dist/auth/oauth-single/model.js.map +1 -0
  142. package/dist/auth/oauth-single/protocol.d.ts +9 -0
  143. package/dist/auth/oauth-single/protocol.d.ts.map +1 -0
  144. package/dist/auth/oauth-single/protocol.js +190 -0
  145. package/dist/auth/oauth-single/protocol.js.map +1 -0
  146. package/dist/auth/oauth-single/session.d.ts +7 -0
  147. package/dist/auth/oauth-single/session.d.ts.map +1 -0
  148. package/dist/auth/oauth-single/session.js +78 -0
  149. package/dist/auth/oauth-single/session.js.map +1 -0
  150. package/dist/auth/repositories.d.ts +58 -0
  151. package/dist/auth/repositories.d.ts.map +1 -0
  152. package/dist/auth/repositories.js +31 -0
  153. package/dist/auth/repositories.js.map +1 -0
  154. package/dist/auth/scopes/d1.d.ts +17 -0
  155. package/dist/auth/scopes/d1.d.ts.map +1 -0
  156. package/dist/auth/scopes/d1.js +54 -0
  157. package/dist/auth/scopes/d1.js.map +1 -0
  158. package/dist/auth/scopes/domain.d.ts +7 -0
  159. package/dist/auth/scopes/domain.d.ts.map +1 -0
  160. package/dist/auth/scopes/domain.js +25 -0
  161. package/dist/auth/scopes/domain.js.map +1 -0
  162. package/dist/auth/scopes/index.d.ts +4 -0
  163. package/dist/auth/scopes/index.d.ts.map +1 -0
  164. package/dist/auth/scopes/index.js +4 -0
  165. package/dist/auth/scopes/index.js.map +1 -0
  166. package/dist/auth/scopes/model.d.ts +26 -0
  167. package/dist/auth/scopes/model.d.ts.map +1 -0
  168. package/dist/auth/scopes/model.js +2 -0
  169. package/dist/auth/scopes/model.js.map +1 -0
  170. package/dist/auth/scopes/policy.d.ts +3 -0
  171. package/dist/auth/scopes/policy.d.ts.map +1 -0
  172. package/dist/auth/scopes/policy.js +4 -0
  173. package/dist/auth/scopes/policy.js.map +1 -0
  174. package/dist/auth/scopes/service.d.ts +4 -0
  175. package/dist/auth/scopes/service.d.ts.map +1 -0
  176. package/dist/auth/scopes/service.js +4 -0
  177. package/dist/auth/scopes/service.js.map +1 -0
  178. package/dist/auth/scopes/validation.d.ts +6 -0
  179. package/dist/auth/scopes/validation.d.ts.map +1 -0
  180. package/dist/auth/scopes/validation.js +33 -0
  181. package/dist/auth/scopes/validation.js.map +1 -0
  182. package/dist/auth/scopes/views/list.d.ts +9 -0
  183. package/dist/auth/scopes/views/list.d.ts.map +1 -0
  184. package/dist/auth/scopes/views/list.js +4 -0
  185. package/dist/auth/scopes/views/list.js.map +1 -0
  186. package/dist/auth/subscriptions/d1.d.ts +10 -0
  187. package/dist/auth/subscriptions/d1.d.ts.map +1 -0
  188. package/dist/auth/subscriptions/d1.js +86 -0
  189. package/dist/auth/subscriptions/d1.js.map +1 -0
  190. package/dist/auth/subscriptions/domain.d.ts +10 -0
  191. package/dist/auth/subscriptions/domain.d.ts.map +1 -0
  192. package/dist/auth/subscriptions/domain.js +33 -0
  193. package/dist/auth/subscriptions/domain.js.map +1 -0
  194. package/dist/auth/subscriptions/index.d.ts +6 -0
  195. package/dist/auth/subscriptions/index.d.ts.map +1 -0
  196. package/dist/auth/subscriptions/index.js +6 -0
  197. package/dist/auth/subscriptions/index.js.map +1 -0
  198. package/dist/auth/subscriptions/model.d.ts +20 -0
  199. package/dist/auth/subscriptions/model.d.ts.map +1 -0
  200. package/dist/auth/subscriptions/model.js +2 -0
  201. package/dist/auth/subscriptions/model.js.map +1 -0
  202. package/dist/auth/subscriptions/service.d.ts +12 -0
  203. package/dist/auth/subscriptions/service.d.ts.map +1 -0
  204. package/dist/auth/subscriptions/service.js +71 -0
  205. package/dist/auth/subscriptions/service.js.map +1 -0
  206. package/dist/auth/subscriptions/validation.d.ts +3 -0
  207. package/dist/auth/subscriptions/validation.d.ts.map +1 -0
  208. package/dist/auth/subscriptions/validation.js +21 -0
  209. package/dist/auth/subscriptions/validation.js.map +1 -0
  210. package/dist/auth/tenants/d1.d.ts +12 -0
  211. package/dist/auth/tenants/d1.d.ts.map +1 -0
  212. package/dist/auth/tenants/d1.js +40 -0
  213. package/dist/auth/tenants/d1.js.map +1 -0
  214. package/dist/auth/tenants/delete.d.ts +3 -0
  215. package/dist/auth/tenants/delete.d.ts.map +1 -0
  216. package/dist/auth/tenants/delete.js +28 -0
  217. package/dist/auth/tenants/delete.js.map +1 -0
  218. package/dist/auth/tenants/domain.d.ts +8 -0
  219. package/dist/auth/tenants/domain.d.ts.map +1 -0
  220. package/dist/auth/tenants/domain.js +64 -0
  221. package/dist/auth/tenants/domain.js.map +1 -0
  222. package/dist/auth/tenants/index.d.ts +7 -0
  223. package/dist/auth/tenants/index.d.ts.map +1 -0
  224. package/dist/auth/tenants/index.js +7 -0
  225. package/dist/auth/tenants/index.js.map +1 -0
  226. package/dist/auth/tenants/model.d.ts +28 -0
  227. package/dist/auth/tenants/model.d.ts.map +1 -0
  228. package/dist/auth/tenants/model.js +2 -0
  229. package/dist/auth/tenants/model.js.map +1 -0
  230. package/dist/auth/tenants/policy.d.ts +3 -0
  231. package/dist/auth/tenants/policy.d.ts.map +1 -0
  232. package/dist/auth/tenants/policy.js +4 -0
  233. package/dist/auth/tenants/policy.js.map +1 -0
  234. package/dist/auth/tenants/service.d.ts +14 -0
  235. package/dist/auth/tenants/service.d.ts.map +1 -0
  236. package/dist/auth/tenants/service.js +37 -0
  237. package/dist/auth/tenants/service.js.map +1 -0
  238. package/dist/auth/tenants/validation.d.ts +5 -0
  239. package/dist/auth/tenants/validation.d.ts.map +1 -0
  240. package/dist/auth/tenants/validation.js +21 -0
  241. package/dist/auth/tenants/validation.js.map +1 -0
  242. package/dist/auth/tenants/views/list.d.ts +8 -0
  243. package/dist/auth/tenants/views/list.d.ts.map +1 -0
  244. package/dist/auth/tenants/views/list.js +3 -0
  245. package/dist/auth/tenants/views/list.js.map +1 -0
  246. package/dist/auth/users/access.d.ts +9 -0
  247. package/dist/auth/users/access.d.ts.map +1 -0
  248. package/dist/auth/users/access.js +53 -0
  249. package/dist/auth/users/access.js.map +1 -0
  250. package/dist/auth/users/d1.d.ts +19 -0
  251. package/dist/auth/users/d1.d.ts.map +1 -0
  252. package/dist/auth/users/d1.js +68 -0
  253. package/dist/auth/users/d1.js.map +1 -0
  254. package/dist/auth/users/domain.d.ts +13 -0
  255. package/dist/auth/users/domain.d.ts.map +1 -0
  256. package/dist/auth/users/domain.js +129 -0
  257. package/dist/auth/users/domain.js.map +1 -0
  258. package/dist/auth/users/index.d.ts +7 -0
  259. package/dist/auth/users/index.d.ts.map +1 -0
  260. package/dist/auth/users/index.js +7 -0
  261. package/dist/auth/users/index.js.map +1 -0
  262. package/dist/auth/users/model.d.ts +44 -0
  263. package/dist/auth/users/model.d.ts.map +1 -0
  264. package/dist/auth/users/model.js +2 -0
  265. package/dist/auth/users/model.js.map +1 -0
  266. package/dist/auth/users/service.d.ts +8 -0
  267. package/dist/auth/users/service.d.ts.map +1 -0
  268. package/dist/auth/users/service.js +62 -0
  269. package/dist/auth/users/service.js.map +1 -0
  270. package/dist/auth/users/validation.d.ts +4 -0
  271. package/dist/auth/users/validation.d.ts.map +1 -0
  272. package/dist/auth/users/validation.js +23 -0
  273. package/dist/auth/users/validation.js.map +1 -0
  274. package/dist/cli/cli.d.ts +9 -0
  275. package/dist/cli/cli.d.ts.map +1 -0
  276. package/dist/cli/cli.js +201 -0
  277. package/dist/cli/cli.js.map +1 -0
  278. package/dist/cli/d1.d.ts +24 -0
  279. package/dist/cli/d1.d.ts.map +1 -0
  280. package/dist/cli/d1.js +175 -0
  281. package/dist/cli/d1.js.map +1 -0
  282. package/dist/cli/operations.d.ts +3 -0
  283. package/dist/cli/operations.d.ts.map +1 -0
  284. package/dist/cli/operations.js +63 -0
  285. package/dist/cli/operations.js.map +1 -0
  286. package/dist/cli/project.d.ts +136 -0
  287. package/dist/cli/project.d.ts.map +1 -0
  288. package/dist/cli/project.js +738 -0
  289. package/dist/cli/project.js.map +1 -0
  290. package/dist/cli/status.d.ts +24 -0
  291. package/dist/cli/status.d.ts.map +1 -0
  292. package/dist/cli/status.js +55 -0
  293. package/dist/cli/status.js.map +1 -0
  294. package/dist/cli/tenants.d.ts +9 -0
  295. package/dist/cli/tenants.d.ts.map +1 -0
  296. package/dist/cli/tenants.js +32 -0
  297. package/dist/cli/tenants.js.map +1 -0
  298. package/dist/cli/types.d.ts +43 -0
  299. package/dist/cli/types.d.ts.map +1 -0
  300. package/dist/cli/types.js +2 -0
  301. package/dist/cli/types.js.map +1 -0
  302. package/dist/cli/users.d.ts +8 -0
  303. package/dist/cli/users.d.ts.map +1 -0
  304. package/dist/cli/users.js +74 -0
  305. package/dist/cli/users.js.map +1 -0
  306. package/dist/cli/version.d.ts +12 -0
  307. package/dist/cli/version.d.ts.map +1 -0
  308. package/dist/cli/version.js +60 -0
  309. package/dist/cli/version.js.map +1 -0
  310. package/dist/core/circuits/availability.d.ts +48 -0
  311. package/dist/core/circuits/availability.d.ts.map +1 -0
  312. package/dist/core/circuits/availability.js +87 -0
  313. package/dist/core/circuits/availability.js.map +1 -0
  314. package/dist/core/circuits/d1.d.ts +11 -0
  315. package/dist/core/circuits/d1.d.ts.map +1 -0
  316. package/dist/core/circuits/d1.js +83 -0
  317. package/dist/core/circuits/d1.js.map +1 -0
  318. package/dist/core/circuits/domain.d.ts +7 -0
  319. package/dist/core/circuits/domain.d.ts.map +1 -0
  320. package/dist/core/circuits/domain.js +36 -0
  321. package/dist/core/circuits/domain.js.map +1 -0
  322. package/dist/core/circuits/index.d.ts +6 -0
  323. package/dist/core/circuits/index.d.ts.map +1 -0
  324. package/dist/core/circuits/index.js +6 -0
  325. package/dist/core/circuits/index.js.map +1 -0
  326. package/dist/core/circuits/model.d.ts +50 -0
  327. package/dist/core/circuits/model.d.ts.map +1 -0
  328. package/dist/core/circuits/model.js +2 -0
  329. package/dist/core/circuits/model.js.map +1 -0
  330. package/dist/core/circuits/service.d.ts +9 -0
  331. package/dist/core/circuits/service.d.ts.map +1 -0
  332. package/dist/core/circuits/service.js +63 -0
  333. package/dist/core/circuits/service.js.map +1 -0
  334. package/dist/core/circuits/validation.d.ts +4 -0
  335. package/dist/core/circuits/validation.d.ts.map +1 -0
  336. package/dist/core/circuits/validation.js +35 -0
  337. package/dist/core/circuits/validation.js.map +1 -0
  338. package/dist/core/constants.d.ts +9 -0
  339. package/dist/core/constants.d.ts.map +1 -0
  340. package/{src → dist}/core/constants.js +2 -1
  341. package/dist/core/constants.js.map +1 -0
  342. package/dist/core/database/index.d.ts +14 -0
  343. package/dist/core/database/index.d.ts.map +1 -0
  344. package/dist/core/database/index.js +65 -0
  345. package/dist/core/database/index.js.map +1 -0
  346. package/dist/core/domains.d.ts +2 -0
  347. package/dist/core/domains.d.ts.map +1 -0
  348. package/dist/core/domains.js +7 -0
  349. package/dist/core/domains.js.map +1 -0
  350. package/dist/core/events/audit.d.ts +8 -0
  351. package/dist/core/events/audit.d.ts.map +1 -0
  352. package/dist/core/events/audit.js +27 -0
  353. package/dist/core/events/audit.js.map +1 -0
  354. package/dist/core/events/domain.d.ts +19 -0
  355. package/dist/core/events/domain.d.ts.map +1 -0
  356. package/dist/core/events/domain.js +39 -0
  357. package/dist/core/events/domain.js.map +1 -0
  358. package/dist/core/events/hub.d.ts +10 -0
  359. package/dist/core/events/hub.d.ts.map +1 -0
  360. package/dist/core/events/hub.js +56 -0
  361. package/dist/core/events/hub.js.map +1 -0
  362. package/dist/core/events/index.d.ts +57 -0
  363. package/dist/core/events/index.d.ts.map +1 -0
  364. package/dist/core/events/index.js +170 -0
  365. package/dist/core/events/index.js.map +1 -0
  366. package/dist/core/healthchecks/d1.d.ts +7 -0
  367. package/dist/core/healthchecks/d1.d.ts.map +1 -0
  368. package/dist/core/healthchecks/d1.js +43 -0
  369. package/dist/core/healthchecks/d1.js.map +1 -0
  370. package/dist/core/healthchecks/domain.d.ts +7 -0
  371. package/dist/core/healthchecks/domain.d.ts.map +1 -0
  372. package/dist/core/healthchecks/domain.js +51 -0
  373. package/dist/core/healthchecks/domain.js.map +1 -0
  374. package/dist/core/healthchecks/features.d.ts +19 -0
  375. package/dist/core/healthchecks/features.d.ts.map +1 -0
  376. package/dist/core/healthchecks/features.js +100 -0
  377. package/dist/core/healthchecks/features.js.map +1 -0
  378. package/dist/core/healthchecks/index.d.ts +6 -0
  379. package/dist/core/healthchecks/index.d.ts.map +1 -0
  380. package/dist/core/healthchecks/index.js +6 -0
  381. package/dist/core/healthchecks/index.js.map +1 -0
  382. package/dist/core/healthchecks/model.d.ts +64 -0
  383. package/dist/core/healthchecks/model.d.ts.map +1 -0
  384. package/dist/core/healthchecks/model.js +2 -0
  385. package/dist/core/healthchecks/model.js.map +1 -0
  386. package/dist/core/healthchecks/service.d.ts +8 -0
  387. package/dist/core/healthchecks/service.d.ts.map +1 -0
  388. package/dist/core/healthchecks/service.js +29 -0
  389. package/dist/core/healthchecks/service.js.map +1 -0
  390. package/dist/core/healthchecks/validation.d.ts +5 -0
  391. package/dist/core/healthchecks/validation.d.ts.map +1 -0
  392. package/dist/core/healthchecks/validation.js +51 -0
  393. package/dist/core/healthchecks/validation.js.map +1 -0
  394. package/dist/core/index.d.ts +9 -0
  395. package/dist/core/index.d.ts.map +1 -0
  396. package/dist/core/index.js +9 -0
  397. package/dist/core/index.js.map +1 -0
  398. package/dist/core/jobs/d1.d.ts +19 -0
  399. package/dist/core/jobs/d1.d.ts.map +1 -0
  400. package/dist/core/jobs/d1.js +139 -0
  401. package/dist/core/jobs/d1.js.map +1 -0
  402. package/dist/core/jobs/domain.d.ts +8 -0
  403. package/dist/core/jobs/domain.d.ts.map +1 -0
  404. package/dist/core/jobs/domain.js +59 -0
  405. package/dist/core/jobs/domain.js.map +1 -0
  406. package/dist/core/jobs/events.d.ts +3 -0
  407. package/dist/core/jobs/events.d.ts.map +1 -0
  408. package/dist/core/jobs/events.js +25 -0
  409. package/dist/core/jobs/events.js.map +1 -0
  410. package/dist/core/jobs/index.d.ts +7 -0
  411. package/dist/core/jobs/index.d.ts.map +1 -0
  412. package/dist/core/jobs/index.js +7 -0
  413. package/dist/core/jobs/index.js.map +1 -0
  414. package/dist/core/jobs/model.d.ts +86 -0
  415. package/dist/core/jobs/model.d.ts.map +1 -0
  416. package/dist/core/jobs/model.js +2 -0
  417. package/dist/core/jobs/model.js.map +1 -0
  418. package/dist/core/jobs/service.d.ts +39 -0
  419. package/dist/core/jobs/service.d.ts.map +1 -0
  420. package/dist/core/jobs/service.js +84 -0
  421. package/dist/core/jobs/service.js.map +1 -0
  422. package/dist/core/jobs/validation.d.ts +8 -0
  423. package/dist/core/jobs/validation.d.ts.map +1 -0
  424. package/dist/core/jobs/validation.js +39 -0
  425. package/dist/core/jobs/validation.js.map +1 -0
  426. package/dist/core/security/index.d.ts +30 -0
  427. package/dist/core/security/index.d.ts.map +1 -0
  428. package/dist/core/security/index.js +138 -0
  429. package/dist/core/security/index.js.map +1 -0
  430. package/dist/data/context.d.ts +20 -0
  431. package/dist/data/context.d.ts.map +1 -0
  432. package/dist/data/context.js +65 -0
  433. package/dist/data/context.js.map +1 -0
  434. package/dist/data/index.d.ts +5 -0
  435. package/dist/data/index.d.ts.map +1 -0
  436. package/{src → dist}/data/index.js +2 -0
  437. package/dist/data/index.js.map +1 -0
  438. package/dist/data/json.d.ts +3 -0
  439. package/dist/data/json.d.ts.map +1 -0
  440. package/dist/data/json.js +14 -0
  441. package/dist/data/json.js.map +1 -0
  442. package/dist/data/model.d.ts +96 -0
  443. package/dist/data/model.d.ts.map +1 -0
  444. package/dist/data/model.js +3 -0
  445. package/dist/data/model.js.map +1 -0
  446. package/dist/data/policy.d.ts +14 -0
  447. package/dist/data/policy.d.ts.map +1 -0
  448. package/dist/data/policy.js +89 -0
  449. package/dist/data/policy.js.map +1 -0
  450. package/dist/data/reader.d.ts +9 -0
  451. package/dist/data/reader.d.ts.map +1 -0
  452. package/dist/data/reader.js +203 -0
  453. package/dist/data/reader.js.map +1 -0
  454. package/dist/data/resources.d.ts +9 -0
  455. package/dist/data/resources.d.ts.map +1 -0
  456. package/dist/data/resources.js +129 -0
  457. package/dist/data/resources.js.map +1 -0
  458. package/dist/domain/app-domain.d.ts +36 -0
  459. package/dist/domain/app-domain.d.ts.map +1 -0
  460. package/dist/domain/app-domain.js +79 -0
  461. package/dist/domain/app-domain.js.map +1 -0
  462. package/dist/domain/index.d.ts +3 -0
  463. package/dist/domain/index.d.ts.map +1 -0
  464. package/dist/domain/index.js +3 -0
  465. package/dist/domain/index.js.map +1 -0
  466. package/dist/domain/model.d.ts +37 -0
  467. package/dist/domain/model.d.ts.map +1 -0
  468. package/dist/domain/model.js +2 -0
  469. package/dist/domain/model.js.map +1 -0
  470. package/dist/features/index.d.ts +25 -0
  471. package/dist/features/index.d.ts.map +1 -0
  472. package/dist/features/index.js +61 -0
  473. package/dist/features/index.js.map +1 -0
  474. package/dist/features/llm/client.d.ts +3 -0
  475. package/dist/features/llm/client.d.ts.map +1 -0
  476. package/dist/features/llm/client.js +327 -0
  477. package/dist/features/llm/client.js.map +1 -0
  478. package/dist/features/llm/config.d.ts +7 -0
  479. package/dist/features/llm/config.d.ts.map +1 -0
  480. package/dist/features/llm/config.js +93 -0
  481. package/dist/features/llm/config.js.map +1 -0
  482. package/dist/features/llm/constants.d.ts +5 -0
  483. package/dist/features/llm/constants.d.ts.map +1 -0
  484. package/dist/features/llm/constants.js +6 -0
  485. package/dist/features/llm/constants.js.map +1 -0
  486. package/dist/features/llm/errors.d.ts +12 -0
  487. package/dist/features/llm/errors.d.ts.map +1 -0
  488. package/dist/features/llm/errors.js +19 -0
  489. package/dist/features/llm/errors.js.map +1 -0
  490. package/dist/features/llm/feature.d.ts +6 -0
  491. package/dist/features/llm/feature.d.ts.map +1 -0
  492. package/dist/features/llm/feature.js +37 -0
  493. package/dist/features/llm/feature.js.map +1 -0
  494. package/dist/features/llm/index.d.ts +9 -0
  495. package/dist/features/llm/index.d.ts.map +1 -0
  496. package/dist/features/llm/index.js +6 -0
  497. package/dist/features/llm/index.js.map +1 -0
  498. package/dist/features/llm/model.d.ts +171 -0
  499. package/dist/features/llm/model.d.ts.map +1 -0
  500. package/dist/features/llm/model.js +2 -0
  501. package/dist/features/llm/model.js.map +1 -0
  502. package/dist/features/llm/schema.d.ts +4 -0
  503. package/dist/features/llm/schema.d.ts.map +1 -0
  504. package/dist/features/llm/schema.js +82 -0
  505. package/dist/features/llm/schema.js.map +1 -0
  506. package/dist/features/llm/service.d.ts +29 -0
  507. package/dist/features/llm/service.d.ts.map +1 -0
  508. package/dist/features/llm/service.js +55 -0
  509. package/dist/features/llm/service.js.map +1 -0
  510. package/dist/features/messaging/constants.d.ts +3 -0
  511. package/dist/features/messaging/constants.d.ts.map +1 -0
  512. package/dist/features/messaging/constants.js +4 -0
  513. package/dist/features/messaging/constants.js.map +1 -0
  514. package/dist/features/messaging/domain.d.ts +9 -0
  515. package/dist/features/messaging/domain.d.ts.map +1 -0
  516. package/dist/features/messaging/domain.js +14 -0
  517. package/dist/features/messaging/domain.js.map +1 -0
  518. package/dist/features/messaging/feature.d.ts +7 -0
  519. package/dist/features/messaging/feature.d.ts.map +1 -0
  520. package/dist/features/messaging/feature.js +23 -0
  521. package/dist/features/messaging/feature.js.map +1 -0
  522. package/dist/features/messaging/index.d.ts +12 -0
  523. package/dist/features/messaging/index.d.ts.map +1 -0
  524. package/dist/features/messaging/index.js +8 -0
  525. package/dist/features/messaging/index.js.map +1 -0
  526. package/dist/features/messaging/jobs.d.ts +38 -0
  527. package/dist/features/messaging/jobs.d.ts.map +1 -0
  528. package/dist/features/messaging/jobs.js +40 -0
  529. package/dist/features/messaging/jobs.js.map +1 -0
  530. package/dist/features/messaging/models.d.ts +65 -0
  531. package/dist/features/messaging/models.d.ts.map +1 -0
  532. package/dist/features/messaging/models.js +97 -0
  533. package/dist/features/messaging/models.js.map +1 -0
  534. package/dist/features/messaging/resources.d.ts +8 -0
  535. package/dist/features/messaging/resources.d.ts.map +1 -0
  536. package/dist/features/messaging/resources.js +11 -0
  537. package/dist/features/messaging/resources.js.map +1 -0
  538. package/dist/features/messaging/store.d.ts +46 -0
  539. package/dist/features/messaging/store.d.ts.map +1 -0
  540. package/dist/features/messaging/store.js +208 -0
  541. package/dist/features/messaging/store.js.map +1 -0
  542. package/dist/index.d.ts +20 -0
  543. package/dist/index.d.ts.map +1 -0
  544. package/{src → dist}/index.js +7 -2
  545. package/dist/index.js.map +1 -0
  546. package/dist/input.d.ts +18 -0
  547. package/dist/input.d.ts.map +1 -0
  548. package/dist/input.js +49 -0
  549. package/dist/input.js.map +1 -0
  550. package/dist/repository/model.d.ts +61 -0
  551. package/dist/repository/model.d.ts.map +1 -0
  552. package/dist/repository/model.js +2 -0
  553. package/dist/repository/model.js.map +1 -0
  554. package/dist/repository.d.ts +11 -0
  555. package/dist/repository.d.ts.map +1 -0
  556. package/dist/repository.js +118 -0
  557. package/dist/repository.js.map +1 -0
  558. package/dist/runtime/domains.d.ts +14 -0
  559. package/dist/runtime/domains.d.ts.map +1 -0
  560. package/dist/runtime/domains.js +42 -0
  561. package/dist/runtime/domains.js.map +1 -0
  562. package/dist/runtime/features.d.ts +10 -0
  563. package/dist/runtime/features.d.ts.map +1 -0
  564. package/dist/runtime/features.js +37 -0
  565. package/dist/runtime/features.js.map +1 -0
  566. package/dist/runtime/health.d.ts +6 -0
  567. package/dist/runtime/health.d.ts.map +1 -0
  568. package/dist/runtime/health.js +28 -0
  569. package/dist/runtime/health.js.map +1 -0
  570. package/dist/runtime/hono.d.ts +30 -0
  571. package/dist/runtime/hono.d.ts.map +1 -0
  572. package/dist/runtime/hono.js +50 -0
  573. package/dist/runtime/hono.js.map +1 -0
  574. package/dist/runtime/model.d.ts +133 -0
  575. package/dist/runtime/model.d.ts.map +1 -0
  576. package/dist/runtime/model.js +2 -0
  577. package/dist/runtime/model.js.map +1 -0
  578. package/dist/runtime/responses.d.ts +9 -0
  579. package/dist/runtime/responses.d.ts.map +1 -0
  580. package/dist/runtime/responses.js +14 -0
  581. package/dist/runtime/responses.js.map +1 -0
  582. package/dist/runtime/worker.d.ts +10 -0
  583. package/dist/runtime/worker.d.ts.map +1 -0
  584. package/dist/runtime/worker.js +216 -0
  585. package/dist/runtime/worker.js.map +1 -0
  586. package/dist/ui/index.d.ts +3 -0
  587. package/dist/ui/index.d.ts.map +1 -0
  588. package/dist/ui/index.js +3 -0
  589. package/dist/ui/index.js.map +1 -0
  590. package/dist/ui/react/admin-access.d.ts +2 -0
  591. package/dist/ui/react/admin-access.d.ts.map +1 -0
  592. package/dist/ui/react/admin-access.js +47 -0
  593. package/dist/ui/react/admin-access.js.map +1 -0
  594. package/dist/ui/react/admin-audit.d.ts +2 -0
  595. package/dist/ui/react/admin-audit.d.ts.map +1 -0
  596. package/dist/ui/react/admin-audit.js +13 -0
  597. package/dist/ui/react/admin-audit.js.map +1 -0
  598. package/dist/ui/react/admin-catalogs.d.ts +6 -0
  599. package/dist/ui/react/admin-catalogs.d.ts.map +1 -0
  600. package/dist/ui/react/admin-catalogs.js +37 -0
  601. package/dist/ui/react/admin-catalogs.js.map +1 -0
  602. package/dist/ui/react/admin-dashboard.d.ts +39 -0
  603. package/dist/ui/react/admin-dashboard.d.ts.map +1 -0
  604. package/dist/ui/react/admin-dashboard.js +135 -0
  605. package/dist/ui/react/admin-dashboard.js.map +1 -0
  606. package/dist/ui/react/admin-details.d.ts +27 -0
  607. package/dist/ui/react/admin-details.d.ts.map +1 -0
  608. package/dist/ui/react/admin-details.js +82 -0
  609. package/dist/ui/react/admin-details.js.map +1 -0
  610. package/dist/ui/react/admin-shell.d.ts +20 -0
  611. package/dist/ui/react/admin-shell.d.ts.map +1 -0
  612. package/dist/ui/react/admin-shell.js +24 -0
  613. package/dist/ui/react/admin-shell.js.map +1 -0
  614. package/dist/ui/react/bootstrap.d.ts +9 -0
  615. package/dist/ui/react/bootstrap.d.ts.map +1 -0
  616. package/dist/ui/react/bootstrap.js +45 -0
  617. package/dist/ui/react/bootstrap.js.map +1 -0
  618. package/dist/ui/react/foundation.d.ts +35 -0
  619. package/dist/ui/react/foundation.d.ts.map +1 -0
  620. package/dist/ui/react/foundation.js +62 -0
  621. package/dist/ui/react/foundation.js.map +1 -0
  622. package/dist/ui/react/index.d.ts +12 -0
  623. package/dist/ui/react/index.d.ts.map +1 -0
  624. package/dist/ui/react/index.js +12 -0
  625. package/dist/ui/react/index.js.map +1 -0
  626. package/dist/ui/react/jobs.d.ts +62 -0
  627. package/dist/ui/react/jobs.d.ts.map +1 -0
  628. package/dist/ui/react/jobs.js +114 -0
  629. package/dist/ui/react/jobs.js.map +1 -0
  630. package/dist/ui/react/live-events.d.ts +18 -0
  631. package/dist/ui/react/live-events.d.ts.map +1 -0
  632. package/dist/ui/react/live-events.js +94 -0
  633. package/dist/ui/react/live-events.js.map +1 -0
  634. package/dist/ui/react/types.d.ts +79 -0
  635. package/dist/ui/react/types.d.ts.map +1 -0
  636. package/dist/ui/react/types.js +32 -0
  637. package/dist/ui/react/types.js.map +1 -0
  638. package/dist/ui/ssr.d.ts +55 -0
  639. package/dist/ui/ssr.d.ts.map +1 -0
  640. package/dist/ui/ssr.js +30 -0
  641. package/dist/ui/ssr.js.map +1 -0
  642. package/{src → dist}/ui/styles.css +22 -1
  643. package/migrations/0007_messaging.sql +52 -0
  644. package/migrations/0008_messaging_tenant_integrity.sql +44 -0
  645. package/migrations/0009_healthcheck_measurements.sql +3 -0
  646. package/migrations/0010_admin_dashboard_refinements.sql +24 -0
  647. package/package.json +162 -21
  648. package/changelog.md +0 -25
  649. package/src/admin/index.js +0 -1
  650. package/src/admin/routes.js +0 -64
  651. package/src/api/client.js +0 -8
  652. package/src/api/contracts.js +0 -24
  653. package/src/api/index.js +0 -7
  654. package/src/api/jobs.js +0 -37
  655. package/src/api/testing.js +0 -13
  656. package/src/app.js +0 -5
  657. package/src/auth/encoding.js +0 -6
  658. package/src/auth/groups.js +0 -5
  659. package/src/auth/impersonation.js +0 -15
  660. package/src/auth/index.js +0 -8
  661. package/src/auth/oauth-single.js +0 -204
  662. package/src/auth/scopes.js +0 -32
  663. package/src/auth/subscriptions.js +0 -42
  664. package/src/auth/tenants.js +0 -34
  665. package/src/auth/users.js +0 -40
  666. package/src/cli/cli.js +0 -133
  667. package/src/cli/d1.js +0 -165
  668. package/src/cli/operations.js +0 -34
  669. package/src/cli/project.js +0 -560
  670. package/src/cli/status.js +0 -46
  671. package/src/cli/tenants.js +0 -16
  672. package/src/cli/users.js +0 -34
  673. package/src/cli/version.js +0 -54
  674. package/src/core/circuits.js +0 -134
  675. package/src/core/d1.js +0 -54
  676. package/src/core/event-hub.js +0 -29
  677. package/src/core/events.js +0 -63
  678. package/src/core/identity.js +0 -39
  679. package/src/core/index.js +0 -7
  680. package/src/core/jobs.js +0 -185
  681. package/src/core/security.js +0 -88
  682. package/src/data/context.js +0 -16
  683. package/src/data/reader.js +0 -63
  684. package/src/data/resources.js +0 -42
  685. package/src/repository.js +0 -63
  686. package/src/runtime/features.js +0 -17
  687. package/src/runtime/health.js +0 -17
  688. package/src/runtime/worker.js +0 -58
  689. package/src/ui/index.js +0 -1
  690. package/src/ui/react/admin-access.jsx +0 -29
  691. package/src/ui/react/admin-catalogs.jsx +0 -39
  692. package/src/ui/react/admin-shell.jsx +0 -17
  693. package/src/ui/react/foundation.jsx +0 -40
  694. package/src/ui/react/index.jsx +0 -6
  695. package/src/ui/react/jobs.jsx +0 -63
  696. package/src/ui/react/live-events.jsx +0 -55
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/runtime/model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/runtime/model.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ export declare const htmlHeaders: Readonly<{
2
+ "content-type": "text/html; charset=utf-8";
3
+ }>;
4
+ /**
5
+ * Create an HTML response while preserving the caller's status, headers, and
6
+ * response metadata. The helper supplies only the missing content type.
7
+ */
8
+ export declare function htmlResponse(body: BodyInit | null, init?: ResponseInit): Response;
9
+ //# sourceMappingURL=responses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../src/runtime/responses.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;EAEtB,CAAC;AAEH;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,QAAQ,GAAG,IAAI,EACrB,IAAI,GAAE,YAAiB,GACtB,QAAQ,CAIV"}
@@ -0,0 +1,14 @@
1
+ export const htmlHeaders = Object.freeze({
2
+ "content-type": "text/html; charset=utf-8",
3
+ });
4
+ /**
5
+ * Create an HTML response while preserving the caller's status, headers, and
6
+ * response metadata. The helper supplies only the missing content type.
7
+ */
8
+ export function htmlResponse(body, init = {}) {
9
+ const headers = new Headers(init.headers);
10
+ if (!headers.has("content-type"))
11
+ headers.set("content-type", htmlHeaders["content-type"]);
12
+ return new Response(body, { ...init, headers });
13
+ }
14
+ //# sourceMappingURL=responses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.js","sourceRoot":"","sources":["../../src/runtime/responses.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IACvC,cAAc,EAAE,0BAA0B;CAC3C,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAqB,EACrB,IAAI,GAAiB,EAAE;IAEvB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;IAC3F,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { CreateWorkerOptions, RuntimeBindings, RuntimeState } from "./model.js";
2
+ /**
3
+ * Compose one Worker from domains and feature manifests. Hono remains the only
4
+ * request dispatcher; this function owns lifecycle, request state, and bindings.
5
+ */
6
+ export declare function createWorker<Env extends RuntimeBindings = RuntimeBindings, State extends RuntimeState = RuntimeState>(options: CreateWorkerOptions<Env, State>): {
7
+ fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response>;
8
+ scheduled?: ((controller: ScheduledController, env: Env, ctx: ExecutionContext) => Promise<void>) | undefined;
9
+ };
10
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/runtime/worker.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EAGf,YAAY,EACb,MAAM,YAAY,CAAC;AAepB;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,GAAG,SAAS,eAAe,GAAG,eAAe,EAC7C,KAAK,SAAS,YAAY,GAAG,YAAY,EACzC,OAAO,EAAE,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC;mBA6EjB,OAAO,OAAO,GAAG,OAAO,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;8BAyFjD,mBAAmB,OAAO,GAAG,OAAO,gBAAgB;EAQvF"}
@@ -0,0 +1,216 @@
1
+ import { adminBoundary } from "../admin/router.js";
2
+ import { createRouteDispatcher } from "../api/contracts.js";
3
+ import { defineApp } from "../app.js";
4
+ import { AUTH_DOMAINS, SubscriptionError } from "../auth/index.js";
5
+ import { requestActor, requestContext } from "../auth/identity/index.js";
6
+ import { CORE_DOMAINS } from "../core/domains.js";
7
+ import { auditedD1 } from "../core/database/index.js";
8
+ import { createEventHandler } from "../core/events/index.js";
9
+ import { secureResponse } from "../core/security/index.js";
10
+ import { SecurityRequestError } from "../core/security/index.js";
11
+ import { requestDataContext } from "../data/context.js";
12
+ import { createDataReader } from "../data/reader.js";
13
+ import { DataScopeError, normalizeDataResources } from "../data/resources.js";
14
+ import { resolveFeatures } from "../features/index.js";
15
+ import { createRepositories } from "../repository.js";
16
+ import { createRuntimeDomains } from "./domains.js";
17
+ import { ensureFeatureManifests, refreshFeatureManifests } from "./features.js";
18
+ import { createHonoRuntime, } from "./hono.js";
19
+ import { assertBoot } from "./health.js";
20
+ const removedWorkerOptions = [
21
+ "features",
22
+ "featureOptions",
23
+ "auth",
24
+ "repositories",
25
+ "apiRoutes",
26
+ "scopes",
27
+ "scopeRoutes",
28
+ "subscriptionManifest",
29
+ "dataResources",
30
+ ];
31
+ /**
32
+ * Compose one Worker from domains and feature manifests. Hono remains the only
33
+ * request dispatcher; this function owns lifecycle, request state, and bindings.
34
+ */
35
+ export function createWorker(options) {
36
+ for (const removed of removedWorkerOptions) {
37
+ if (Object.hasOwn(options, removed)) {
38
+ throw new TypeError(`createWorker.${removed} was removed in v5.0.3; register it through defineApp`);
39
+ }
40
+ }
41
+ if (typeof options?.fetch !== "function") {
42
+ throw new TypeError("createWorker requires a fetch handler");
43
+ }
44
+ const { fetch, scheduled, app = { name: "worker" }, authorize, middleware = [], publicTenantId = null, health, boot, requiredBindings = [], security = true, eventHubBinding = "EVENT_HUB", } = options;
45
+ const application = defineApp(app);
46
+ const activeFeatures = resolveFeatures(application.features);
47
+ const domains = [
48
+ ...AUTH_DOMAINS,
49
+ ...CORE_DOMAINS,
50
+ ...createRuntimeDomains({ health }),
51
+ ...application.domains,
52
+ ...activeFeatures.flatMap((feature) => feature.domains || []),
53
+ ];
54
+ validateDomains(domains);
55
+ const registeredApiRoutes = domains.flatMap((domain) => domain.routes);
56
+ const dispatchApiRoutes = registeredApiRoutes.length
57
+ ? createRouteDispatcher(registeredApiRoutes)
58
+ : null;
59
+ const providerFeature = activeFeatures.find((feature) => typeof feature.getUser === "function");
60
+ const provider = providerFeature?.getUser
61
+ ? { getUser: providerFeature.getUser.bind(providerFeature) }
62
+ : null;
63
+ const eventHandler = createEventHandler(activeFeatures, { eventHubBinding });
64
+ const repositoryDefinitions = domains
65
+ .flatMap((domain) => domain.repositories || []);
66
+ const registeredDataResources = normalizeDataResources([
67
+ ...domains.flatMap((domain) => domain.dataResources || []),
68
+ ...repositoryDefinitions
69
+ .flatMap((definition) => definition.resourceDefinition ? [definition.resourceDefinition] : []),
70
+ ]);
71
+ const layers = [
72
+ (request, env, ctx, next, state) => adminBoundary(request, env, ctx, next, state, { provider, authorize, features: activeFeatures }),
73
+ ...activeFeatures.flatMap((feature) => feature.middleware ? [feature.middleware.bind(feature)] : []),
74
+ ...middleware,
75
+ ...(dispatchApiRoutes
76
+ ? [async (request, env, ctx, next, state) => (await dispatchApiRoutes(request, env, ctx, state)) || next(request)]
77
+ : []),
78
+ ];
79
+ const runtime = createHonoRuntime({
80
+ layers,
81
+ terminal: (request, env, ctx, state) => fetch(request, env, ctx, state),
82
+ });
83
+ return {
84
+ async fetch(request, env, ctx) {
85
+ try {
86
+ const url = new URL(request.url);
87
+ assertBoot(env, { bindings: requiredBindings });
88
+ const requiredEnvironment = activeFeatures.flatMap((feature) => feature.requiredEnvironment?.({ request, url }) || []);
89
+ assertBoot(env, { required: [...new Set(requiredEnvironment)] });
90
+ if (boot)
91
+ await boot(env, { request, ctx });
92
+ await Promise.all(domains.map((domain) => domain.initialize(env, { ctx })));
93
+ const state = Object.assign(Object.create(null), {
94
+ requestId: crypto.randomUUID(),
95
+ });
96
+ if (provider?.getUser) {
97
+ state.user = await Promise.resolve(provider.getUser(request, env)).catch(() => null);
98
+ }
99
+ if (state.user?.authUser)
100
+ state.authUser = state.user.authUser;
101
+ let dataContext;
102
+ state.data = createDataReader(env, {
103
+ resources: registeredDataResources,
104
+ context: () => dataContext ||= requestDataContext(env, {
105
+ state,
106
+ request,
107
+ publicTenantId,
108
+ }),
109
+ });
110
+ // A per-request facade keeps identity and audited bindings out of shared globals.
111
+ const requestEnv = {
112
+ ...env,
113
+ app: application,
114
+ features: activeFeatures,
115
+ eventHubBinding,
116
+ DB: env.DB ? auditedD1(env.DB, requestActor(state)) : env.DB,
117
+ data: state.data,
118
+ get user() { return state.user || null; },
119
+ get authUser() { return state.authUser || state.user?.authUser || null; },
120
+ get userId() { return state.authUser?.id || state.user?.authUser?.id || null; },
121
+ eventHandler: (event, eventEnv, eventCtx) => eventHandler(event, eventEnv || requestEnv, eventCtx || ctx),
122
+ };
123
+ requestEnv.repositories = createRepositories(requestEnv, repositoryDefinitions);
124
+ requestEnv.requestId = state.requestId;
125
+ state.context = requestContext({
126
+ request,
127
+ env: requestEnv,
128
+ ctx,
129
+ state,
130
+ data: state.data,
131
+ });
132
+ requestEnv.context = state.context;
133
+ requestEnv.event = state.context?.event;
134
+ if (env.DB && hasOperationalManifest(activeFeatures)) {
135
+ // Registration and breaker evaluation are background maintenance, not response work.
136
+ ctx.waitUntil(ensureFeatureManifests(env, activeFeatures).catch((error) => console.error("[EventLog] feature manifest registration failed", error)));
137
+ }
138
+ const response = await runtime.fetch(request, requestEnv, ctx, state);
139
+ return withRequestId(security ? secureResponse(response) : response, state.requestId);
140
+ }
141
+ catch (error) {
142
+ console.error("[worker] request failed", error);
143
+ const status = responseStatus(error);
144
+ const message = error instanceof Error ? error.message : "Unable to complete the request";
145
+ const errorResponse = status
146
+ ? Response.json({ error: message }, { status, headers: { "Cache-Control": "no-store" } })
147
+ : Response.json({ error: "Internal server error" }, { status: 500, headers: { "Cache-Control": "no-store" } });
148
+ return withRequestId(security ? secureResponse(errorResponse) : errorResponse, errorRequestId(error) || crypto.randomUUID());
149
+ }
150
+ },
151
+ ...(scheduled ? {
152
+ scheduled: async (controller, env, ctx) => {
153
+ await scheduled(controller, env, ctx);
154
+ if (env.DB && hasOperationalManifest(activeFeatures)) {
155
+ await refreshFeatureManifests(env, activeFeatures, { who: "system:update" });
156
+ }
157
+ },
158
+ } : {}),
159
+ };
160
+ }
161
+ function responseStatus(error) {
162
+ if (error instanceof DataScopeError || error instanceof SubscriptionError)
163
+ return 403;
164
+ if (error instanceof SecurityRequestError)
165
+ return error.status;
166
+ if (error && typeof error === "object" && "status" in error) {
167
+ const status = Reflect.get(error, "status");
168
+ if (typeof status === "number" && status >= 400 && status < 500)
169
+ return status;
170
+ }
171
+ return null;
172
+ }
173
+ function hasOperationalManifest(features) {
174
+ return features.some((feature) => typeof feature.healthcheck === "function"
175
+ || Boolean(feature.healthchecks?.length)
176
+ || Boolean(feature.circuitBreakers?.length));
177
+ }
178
+ function withRequestId(response, requestId) {
179
+ const headers = new Headers(response.headers);
180
+ headers.set("X-Request-ID", String(requestId));
181
+ return new Response(response.body, {
182
+ status: response.status,
183
+ statusText: response.statusText,
184
+ headers,
185
+ ...(response.status === 101 && response.webSocket ? { webSocket: response.webSocket } : {}),
186
+ });
187
+ }
188
+ function validateDomains(domains) {
189
+ const names = new Set();
190
+ const routes = new Set();
191
+ for (const domain of domains) {
192
+ if (!domain
193
+ || typeof domain.name !== "string"
194
+ || !Array.isArray(domain.routes)
195
+ || typeof domain.initialize !== "function")
196
+ throw new TypeError("Every registered domain must extend AppDomain");
197
+ if (names.has(domain.name))
198
+ throw new TypeError(`Duplicate domain: ${domain.name}`);
199
+ names.add(domain.name);
200
+ for (const route of domain.routes) {
201
+ const methods = Array.isArray(route.method) ? route.method : [route.method];
202
+ for (const method of methods) {
203
+ const key = `${method} ${route.path}`;
204
+ if (routes.has(key))
205
+ throw new TypeError(`Duplicate domain route: ${key}`);
206
+ routes.add(key);
207
+ }
208
+ }
209
+ }
210
+ }
211
+ function errorRequestId(error) {
212
+ return error && typeof error === "object" && "requestId" in error
213
+ ? String(error.requestId)
214
+ : null;
215
+ }
216
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/runtime/worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "./react/index.js";
2
+ export * from "./ssr.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./react/index.js";
2
+ export * from "./ssr.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function UserManagement(): import("react").JSX.Element;
2
+ //# sourceMappingURL=admin-access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-access.d.ts","sourceRoot":"","sources":["../../../src/ui/react/admin-access.tsx"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,gCAY7B"}
@@ -0,0 +1,47 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo, useState } from "react";
3
+ import { apiJson } from "../../api/client.js";
4
+ import { ResourceState, useApiResource } from "./foundation.js";
5
+ import { recordArrayField } from "./types.js";
6
+ export function UserManagement() {
7
+ const [search, setSearch] = useState("");
8
+ const [active, setActive] = useState("all");
9
+ const path = useMemo(() => { const query = new URLSearchParams(); if (search)
10
+ query.set("email", search); if (active !== "all")
11
+ query.set("active", active); query.set("limit", "100"); return `/api/admin/users?${query}`; }, [search, active]);
12
+ const users = useApiResource(path);
13
+ const scopes = useApiResource("/api/admin/scopes");
14
+ const tenants = useApiResource("/api/admin/tenants");
15
+ const groups = useApiResource("/api/admin/groups");
16
+ const reload = () => Promise.all([users.reload(), scopes.reload(), tenants.reload(), groups.reload()]);
17
+ const options = { scopes: recordArrayField(scopes.value, "scopes"), tenants: recordArrayField(tenants.value, "tenants"), groups: recordArrayField(groups.value, "groups") };
18
+ const userItems = recordArrayField(users.value, "users");
19
+ return _jsxs("section", { className: "cf-ui-card", children: [_jsxs("header", { children: [_jsx("h1", { children: "Users" }), _jsx("p", { children: "Search and manage users without loading the entire directory into the page." })] }), _jsxs("form", { className: "cf-ui-filter-bar", onSubmit: (event) => event.preventDefault(), children: [_jsx("input", { type: "search", "aria-label": "Search users by email", placeholder: "Search email address", value: search, onChange: (event) => setSearch(event.target.value) }), _jsxs("select", { "aria-label": "Filter users by active status", value: active, onChange: (event) => setActive(event.target.value), children: [_jsx("option", { value: "all", children: "All statuses" }), _jsx("option", { value: "1", children: "Active" }), _jsx("option", { value: "0", children: "Inactive" })] })] }), _jsx(ResourceState, { loading: users.loading || scopes.loading || tenants.loading || groups.loading, error: users.error || scopes.error || tenants.error || groups.error, empty: "No users registered.", children: userItems.length ? _jsx("div", { className: "cf-ui-table-wrap", children: _jsxs("table", { children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "User" }), _jsx("th", { children: "Status" }), _jsx("th", { children: "Tenants" }), _jsx("th", { children: "Groups" }), _jsx("th", { children: "Scopes" }), _jsx("th", { children: "Save" })] }) }), _jsx("tbody", { children: userItems.map((user) => _jsx(UserRow, { user: user, options: options, onSaved: reload }, user.id)) })] }) }) : null })] });
20
+ }
21
+ function UserRow({ user, options, onSaved }) {
22
+ const [selectedScopes, setSelectedScopes] = useStateSet((user.scopes || []).filter((scope) => typeof scope === "string"));
23
+ const [selectedTenants, setSelectedTenants] = useStateSet((user.tenants || []).map((tenant) => tenant.id).filter((id) => typeof id === "string"));
24
+ const [selectedGroups, setSelectedGroups] = useStateSet((user.groups || []).map((group) => group.group_name || group.name).filter((name) => typeof name === "string"));
25
+ const [saving, setSaving] = useState(false);
26
+ const save = async () => { if (!user.id)
27
+ return; setSaving(true); try {
28
+ await apiJson(`/api/admin/users/${encodeURIComponent(user.id)}/access`, { scopes: [...selectedScopes], tenants: [...selectedTenants], groups: [...selectedGroups] }, { method: "PUT" });
29
+ await onSaved();
30
+ }
31
+ finally {
32
+ setSaving(false);
33
+ } };
34
+ return _jsxs("tr", { children: [_jsxs("th", { scope: "row", children: [_jsx("a", { href: `/admin/users/${encodeURIComponent(user.id || "")}`, children: user.display_name || user.email || "Unnamed user" }), _jsx("small", { children: user.email || "No email" })] }), _jsx("td", { children: _jsx("span", { className: `cf-ui-active-pill ${user.active === false || user.active === 0 ? "inactive" : "active"}`, children: user.active === false || user.active === 0 ? "Inactive" : "Active" }) }), _jsx("td", { children: _jsx(CheckList, { items: options.tenants, selected: selectedTenants, onChange: setSelectedTenants, valueKey: "id", labelKey: "name" }) }), _jsx("td", { children: _jsx(CheckList, { items: options.groups, selected: selectedGroups, onChange: setSelectedGroups, valueKey: "name", labelKey: "display_name" }) }), _jsx("td", { children: _jsx(CheckList, { items: options.scopes, selected: selectedScopes, onChange: setSelectedScopes, valueKey: "name", labelKey: "label" }) }), _jsx("td", { children: _jsx("button", { type: "button", disabled: saving, onClick: save, children: saving ? "Saving…" : "Save" }) })] });
35
+ }
36
+ function CheckList({ items, selected, onChange, valueKey, labelKey }) {
37
+ return _jsx("div", { className: "cf-ui-check-list", children: items.map((item, index) => { const value = item[valueKey]; if (typeof value !== "string")
38
+ return null; const label = item[labelKey]; return _jsxs("label", { children: [_jsx("input", { type: "checkbox", checked: selected.has(value), onChange: (event) => { const next = new Set(selected); if (event.target.checked)
39
+ next.add(value);
40
+ else
41
+ next.delete(value); onChange(next); } }), typeof label === "string" ? label : value] }, `${value}:${index}`); }) });
42
+ }
43
+ function useStateSet(initial = []) {
44
+ const [value, setValue] = useState(() => new Set(initial));
45
+ return [value, setValue];
46
+ }
47
+ //# sourceMappingURL=admin-access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-access.js","sourceRoot":"","sources":["../../../src/ui/react/admin-access.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function AuditLogCatalog(): import("react").JSX.Element;
2
+ //# sourceMappingURL=admin-audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-audit.d.ts","sourceRoot":"","sources":["../../../src/ui/react/admin-audit.tsx"],"names":[],"mappings":"AAIA,wBAAgB,eAAe,gCAO9B"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ import { ResourceState, useApiResource } from "./foundation.js";
4
+ import { recordArrayField } from "./types.js";
5
+ export function AuditLogCatalog() {
6
+ const [filters, setFilters] = useState({ who: "", resource: "", operation: "" });
7
+ const query = new URLSearchParams(Object.entries(filters).filter(([, value]) => value));
8
+ query.set("limit", "100");
9
+ const resource = useApiResource(`/api/admin/audit-log?${query.toString()}`);
10
+ const entries = recordArrayField(resource.value, "audit");
11
+ return _jsxs("section", { className: "cf-ui-card", children: [_jsxs("header", { children: [_jsx("h1", { children: "Audit log" }), _jsx("p", { children: "Administrative changes from the last 30 days." })] }), _jsxs("form", { className: "cf-ui-filter-bar", onSubmit: (event) => { event.preventDefault(); void resource.reload(); }, children: [_jsx("input", { "aria-label": "Filter by actor", placeholder: "Who", value: filters.who, onChange: (event) => setFilters({ ...filters, who: event.target.value }) }), _jsx("input", { "aria-label": "Filter by resource", placeholder: "What", value: filters.resource, onChange: (event) => setFilters({ ...filters, resource: event.target.value }) }), _jsx("input", { "aria-label": "Filter by operation", placeholder: "Operation", value: filters.operation, onChange: (event) => setFilters({ ...filters, operation: event.target.value }) }), _jsx("button", { type: "submit", children: "Filter" })] }), _jsx(ResourceState, { ...resource, empty: "No audit entries in the last 30 days.", children: entries.length ? _jsx("div", { className: "cf-ui-table-wrap", children: _jsxs("table", { children: [_jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { children: "Date" }), _jsx("th", { children: "Who" }), _jsx("th", { children: "Operation" }), _jsx("th", { children: "Resource" }), _jsx("th", { children: "Details" })] }) }), _jsx("tbody", { children: entries.map((entry, index) => _jsxs("tr", { children: [_jsx("td", { children: entry.created_at }), _jsx("td", { children: entry.who }), _jsx("td", { children: entry.operation }), _jsx("td", { children: entry.resource }), _jsx("td", { children: _jsx("code", { children: JSON.stringify(entry.details || {}) }) })] }, entry.id || index)) })] }) }) : null })] });
12
+ }
13
+ //# sourceMappingURL=admin-audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-audit.js","sourceRoot":"","sources":["../../../src/ui/react/admin-audit.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,UAAU,eAAe;IAC7B,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;IACjF,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACxF,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1B,MAAM,QAAQ,GAAG,cAAc,CAAC,wBAAwB,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1D,OAAO,mBAAS,SAAS,EAAC,YAAY,aAAC,6BAAQ,qCAAkB,EAAA,wEAAoD,IAAS,EAAA,gBAAM,SAAS,EAAC,kBAAkB,EAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,aAAE,8BAAkB,iBAAiB,EAAC,WAAW,EAAC,KAAK,EAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAI,EAAA,8BAAkB,oBAAoB,EAAC,WAAW,EAAC,MAAM,EAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAI,EAAA,8BAAkB,qBAAqB,EAAC,WAAW,EAAC,WAAW,EAAC,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAI,EAAA,iBAAQ,IAAI,EAAC,QAAQ,uBAAgB,IAAO,EAAA,KAAC,aAAa,OAAK,QAAQ,EAAE,KAAK,EAAC,uCAAuC,YAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,kBAAkB,YAAC,4BAAO,0BAAO,yBAAI,gCAAa,EAAA,+BAAY,EAAA,qCAAkB,EAAA,oCAAiB,EAAA,mCAAgB,IAAK,GAAQ,EAAA,0BAAQ,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,yBAA4B,uBAAK,KAAK,CAAC,UAAU,GAAM,EAAA,uBAAK,KAAK,CAAC,GAAG,GAAM,EAAA,uBAAK,KAAK,CAAC,SAAS,GAAM,EAAA,uBAAK,KAAK,CAAC,QAAQ,GAAM,EAAA,uBAAI,yBAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,GAAQ,GAAK,KAAhL,KAAK,CAAC,EAAE,IAAI,KAAK,CAAoK,CAAC,GAAS,IAAQ,GAAM,CAAC,CAAC,CAAC,IAAI,GAAiB,IAAU,CAAC;AACxwC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function FeatureCatalog(): import("react").JSX.Element;
2
+ export declare function HealthcheckCatalog(): import("react").JSX.Element;
3
+ export declare function CircuitBreakerCatalog(): import("react").JSX.Element;
4
+ export declare function ScopeCatalog(): import("react").JSX.Element;
5
+ export declare function GroupCatalog(): import("react").JSX.Element;
6
+ //# sourceMappingURL=admin-catalogs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-catalogs.d.ts","sourceRoot":"","sources":["../../../src/ui/react/admin-catalogs.tsx"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,gCAK7B;AAED,wBAAgB,kBAAkB,gCAIjC;AAED,wBAAgB,qBAAqB,gCAKpC;AAED,wBAAgB,YAAY,gCAI3B;AAED,wBAAgB,YAAY,gCAI3B"}
@@ -0,0 +1,37 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { apiJson } from "../../api/client.js";
3
+ import { useLiveEvent } from "./live-events.js";
4
+ import { ResourceState, StatusBadge, useApiResource } from "./foundation.js";
5
+ import { recordArrayField } from "./types.js";
6
+ export function FeatureCatalog() {
7
+ const resource = useApiResource("/api/admin/features");
8
+ useLiveEvent((event) => ["healthcheck", "circuit"].some((word) => String(event.what || "").includes(word)), resource.reload);
9
+ const features = recordArrayField(resource.value, "features");
10
+ return _jsxs("section", { className: "cf-ui-card", children: [_jsxs("header", { children: [_jsx("h1", { children: "Features" }), _jsx("p", { children: "Application-registered capabilities. Open a feature to inspect health checks and circuit-breaker diagnostics." })] }), _jsx(ResourceState, { ...resource, empty: "No features registered.", children: features.length ? _jsx("div", { className: "cf-ui-list", children: features.map((item) => _jsxs("article", { className: "cf-ui-feature-row", children: [_jsx("div", { className: `cf-ui-health-icon cf-ui-status-${item.health}`, "aria-label": `${item.health} health`, title: `${item.health} health`, children: "\u25CF" }), _jsxs("div", { children: [_jsx("h2", { children: _jsx("a", { href: `/admin/features/${encodeURIComponent(item.feature || "")}`, children: item.display_name || item.feature }) }), _jsxs("small", { children: [item.feature, " \u00B7 ", item.package_name || "Unknown package", " ", item.version || ""] })] }), _jsxs("div", { children: [_jsx("small", { children: "Health" }), _jsx(StatusBadge, { state: item.health })] }), _jsxs("div", { children: [_jsx("small", { children: "Circuit" }), item.circuit_breaker ? _jsx(StatusBadge, { state: item.circuit_breaker.state }) : "None"] }), _jsx("div", { children: _jsxs("small", { children: [item.healthchecks?.length || 0, " checks \u00B7 ", item.circuit_breakers?.length || 0, " breakers"] }) })] }, item.feature)) }) : null })] });
11
+ }
12
+ export function HealthcheckCatalog() {
13
+ const resource = useApiResource("/api/admin/healthchecks");
14
+ const items = recordArrayField(resource.value, "healthchecks");
15
+ return _jsxs("section", { className: "cf-ui-card", children: [_jsx("h1", { children: "Healthchecks" }), _jsx(ResourceState, { ...resource, empty: "No healthchecks registered.", children: items.length ? _jsx("div", { className: "cf-ui-card-grid", children: items.map((item) => _jsxs("article", { className: "cf-ui-card", children: [_jsx("h2", { children: _jsx("a", { href: `/admin/healthchecks/${encodeURIComponent(item.id || "")}`, children: item.display_name }) }), _jsx(StatusBadge, { state: item.state }), _jsxs("p", { children: [item.feature, " / ", item.component] })] }, item.id)) }) : null })] });
16
+ }
17
+ export function CircuitBreakerCatalog() {
18
+ const resource = useApiResource("/api/admin/circuit-breakers");
19
+ const items = recordArrayField(resource.value, "circuit_breakers");
20
+ const update = async (item, state) => { if (!item.id)
21
+ return; await apiJson(`/api/admin/circuit-breakers/${encodeURIComponent(item.id)}`, { state }, { method: "PUT" }); await resource.reload(); };
22
+ return _jsxs("section", { className: "cf-ui-card", children: [_jsx("h1", { children: "Circuit breakers" }), _jsx("p", { children: "Automation owns the tripped state. Administrators may only choose On or Off." }), _jsx(ResourceState, { ...resource, empty: "No circuit breakers registered.", children: items.length ? _jsx("div", { className: "cf-ui-list", children: items.map((item) => _jsxs("article", { className: "cf-ui-breaker", children: [_jsxs("div", { children: [_jsx("h2", { children: _jsx("a", { href: `/admin/circuit-breakers/${encodeURIComponent(item.id || "")}`, children: item.display_name }) }), _jsxs("small", { children: [item.feature, "/", item.name] })] }), _jsx(StatusBadge, { state: item.state }), _jsxs("select", { "aria-label": `Set ${item.display_name} state`, value: item.state || "off", onChange: (event) => void update(item, event.target.value), children: [_jsx("option", { value: "off", children: "Off" }), _jsx("option", { value: "on", children: "On" }), item.state === "tripped" ? _jsx("option", { value: "tripped", children: "Tripped" }) : null] })] }, item.id)) }) : null })] });
23
+ }
24
+ export function ScopeCatalog() {
25
+ const resource = useApiResource("/api/admin/scopes");
26
+ const scopes = recordArrayField(resource.value, "scopes");
27
+ return _jsxs("section", { className: "cf-ui-card", children: [_jsx("h1", { children: "Scopes" }), _jsx(ResourceState, { ...resource, empty: "No scopes registered.", children: scopes.length ? _jsx("ul", { className: "cf-ui-list", children: scopes.map((scope) => _jsxs("li", { children: [_jsx("a", { href: `/admin/scopes/${encodeURIComponent(scope.name || "")}`, children: _jsx("strong", { children: scope.label || scope.name }) }), _jsx("small", { children: scope.name }), _jsx("p", { children: scope.description })] }, scope.name)) }) : null })] });
28
+ }
29
+ export function GroupCatalog() {
30
+ const resource = useApiResource("/api/admin/groups");
31
+ const groups = recordArrayField(resource.value, "groups");
32
+ return _jsxs("section", { className: "cf-ui-card", children: [_jsx("h1", { children: "Groups" }), _jsx(ResourceState, { ...resource, empty: "No groups registered.", children: groups.length ? _jsx("ul", { className: "cf-ui-list", children: groups.map((group) => _jsxs("li", { children: [_jsx("a", { href: `/admin/groups/${encodeURIComponent(group.name || "")}`, children: _jsx("strong", { children: group.display_name || group.name }) }), _jsx("small", { children: group.name })] }, group.id || group.name)) }) : null })] });
33
+ }
34
+ function CatalogList({ items = [] }) {
35
+ return items.length ? _jsx("ul", { className: "cf-ui-inline-list", children: items.map((item, index) => _jsxs("li", { children: [_jsx("strong", { children: item.display_name || item.name }), ": ", _jsx(StatusBadge, { state: item.state })] }, item.id || item.name || index)) }) : _jsx("span", { children: "None registered" });
36
+ }
37
+ //# sourceMappingURL=admin-catalogs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-catalogs.js","sourceRoot":"","sources":["../../../src/ui/react/admin-catalogs.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { type ReactNode } from "react";
2
+ import type { AdminLinkItem, AdminSelection, ApplicationAdminSection } from "./types.js";
3
+ export type AdminDashboardSection = "home" | "users" | "tenants" | "groups" | "scopes" | "subscriptions" | "jobs" | "features" | "audit-log" | "healthchecks" | "circuit-breakers";
4
+ export declare const ADMIN_DASHBOARD_SECTIONS: readonly AdminDashboardSection[];
5
+ export interface AdminDashboardProps {
6
+ title?: string;
7
+ initialSection?: string;
8
+ enabledSections?: readonly string[];
9
+ applicationSections?: readonly ApplicationAdminSection[];
10
+ overview?: ReactNode;
11
+ applicationRegistration?: ApplicationRegistration;
12
+ onSectionChange?: (selection: AdminSelection) => void;
13
+ }
14
+ /**
15
+ * Complete client-side administration surface. Mount it on one protected page;
16
+ * it owns section/detail navigation and does not require a site-side admin router.
17
+ */
18
+ export declare function AdminDashboard({ title, initialSection, enabledSections, applicationSections, overview, applicationRegistration, onSectionChange, }: AdminDashboardProps): import("react").JSX.Element;
19
+ export interface ApplicationRegistration {
20
+ name?: string;
21
+ version?: string;
22
+ registeredFeatures?: readonly {
23
+ name?: string;
24
+ displayName?: string;
25
+ packageName?: string;
26
+ version?: string;
27
+ }[];
28
+ domains?: readonly string[];
29
+ ui?: boolean;
30
+ api?: boolean;
31
+ admin?: boolean;
32
+ }
33
+ export interface AdminOverviewProps {
34
+ registration?: ApplicationRegistration;
35
+ links?: readonly AdminLinkItem[];
36
+ onNavigate?: (key: string) => void;
37
+ }
38
+ export declare function AdminOverview({ registration }: AdminOverviewProps): import("react").JSX.Element;
39
+ //# sourceMappingURL=admin-dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-dashboard.d.ts","sourceRoot":"","sources":["../../../src/ui/react/admin-dashboard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAkB3E,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAIzF,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,eAAe,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,kBAAkB,CAAC;AACnL,eAAO,MAAM,wBAAwB,EAAE,SAAS,qBAAqB,EAYnE,CAAC;AA2BH,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,mBAAmB,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACzD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAClD,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,IAAI,CAAC;CACvD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAC7B,KAAwB,EACxB,cAAuB,EACvB,eAA0C,EAC1C,mBAAwB,EACxB,QAAQ,EACR,uBAAuB,EACvB,eAAe,GAChB,EAAE,mBAAmB,+BA4CrB;AAED,MAAM,WAAW,uBAAuB;IAAG,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,SAAS;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,EAAE,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE;AACxQ,MAAM,WAAW,kBAAkB;IAAG,YAAY,CAAC,EAAE,uBAAuB,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE;AACpJ,wBAAgB,aAAa,CAAC,EAAE,YAAY,EAAE,EAAE,kBAAkB,+BAMjE"}