@adminiumjs/adminium 0.1.0-rc.1

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 (875) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +94 -0
  3. package/dashboard/assets/DeltaPill-dxlsGh-1.js +2 -0
  4. package/dashboard/assets/DeltaPill-dxlsGh-1.js.map +1 -0
  5. package/dashboard/assets/DistributionCorrelationWidgets-ztVy_W_R.js +2 -0
  6. package/dashboard/assets/DistributionCorrelationWidgets-ztVy_W_R.js.map +1 -0
  7. package/dashboard/assets/PartWholeWidgets-BDn0i0jt.js +2 -0
  8. package/dashboard/assets/PartWholeWidgets-BDn0i0jt.js.map +1 -0
  9. package/dashboard/assets/RemapEditor-z3vRY12e.js +2 -0
  10. package/dashboard/assets/RemapEditor-z3vRY12e.js.map +1 -0
  11. package/dashboard/assets/ReviewScreen-COkLQ3T7.js +2 -0
  12. package/dashboard/assets/ReviewScreen-COkLQ3T7.js.map +1 -0
  13. package/dashboard/assets/Sparkline-Cvwo368J.js +2 -0
  14. package/dashboard/assets/Sparkline-Cvwo368J.js.map +1 -0
  15. package/dashboard/assets/WidgetMissingCard-D0bPJKIs.js +2 -0
  16. package/dashboard/assets/WidgetMissingCard-D0bPJKIs.js.map +1 -0
  17. package/dashboard/assets/arc-CPxb74pf.js +2 -0
  18. package/dashboard/assets/arc-CPxb74pf.js.map +1 -0
  19. package/dashboard/assets/bars-ranking-components-9Asn_0gR.js +2 -0
  20. package/dashboard/assets/bars-ranking-components-9Asn_0gR.js.map +1 -0
  21. package/dashboard/assets/blocks-track-components-BST-NjK2.js +2 -0
  22. package/dashboard/assets/blocks-track-components-BST-NjK2.js.map +1 -0
  23. package/dashboard/assets/calendar-track-components-RgNtGtZR.js +2 -0
  24. package/dashboard/assets/calendar-track-components-RgNtGtZR.js.map +1 -0
  25. package/dashboard/assets/chrome-track-components-ClNsentC.js +2 -0
  26. package/dashboard/assets/chrome-track-components-ClNsentC.js.map +1 -0
  27. package/dashboard/assets/common-BY1j__bD.js +2 -0
  28. package/dashboard/assets/common-BY1j__bD.js.map +1 -0
  29. package/dashboard/assets/common-BdlXKpcB.js +2 -0
  30. package/dashboard/assets/common-BdlXKpcB.js.map +1 -0
  31. package/dashboard/assets/common-BqqhgMgB.js +2 -0
  32. package/dashboard/assets/common-BqqhgMgB.js.map +1 -0
  33. package/dashboard/assets/common-BribWmIo.js +2 -0
  34. package/dashboard/assets/common-BribWmIo.js.map +1 -0
  35. package/dashboard/assets/common-Cmf0_lKV.js +2 -0
  36. package/dashboard/assets/common-Cmf0_lKV.js.map +1 -0
  37. package/dashboard/assets/common-i0r48qY9.js +2 -0
  38. package/dashboard/assets/common-i0r48qY9.js.map +1 -0
  39. package/dashboard/assets/common-x8cfkwpc.js +2 -0
  40. package/dashboard/assets/common-x8cfkwpc.js.map +1 -0
  41. package/dashboard/assets/communication-track-components-CNLZXOH_.js +2 -0
  42. package/dashboard/assets/communication-track-components-CNLZXOH_.js.map +1 -0
  43. package/dashboard/assets/components-Bp5cFm2d.js +2 -0
  44. package/dashboard/assets/components-Bp5cFm2d.js.map +1 -0
  45. package/dashboard/assets/components-C4-O3_gD.js +2 -0
  46. package/dashboard/assets/components-C4-O3_gD.js.map +1 -0
  47. package/dashboard/assets/domain-ops-track-components-BPa41AU7.js +2 -0
  48. package/dashboard/assets/domain-ops-track-components-BPa41AU7.js.map +1 -0
  49. package/dashboard/assets/domain-track-components-CQ1i1X1t.js +2 -0
  50. package/dashboard/assets/domain-track-components-CQ1i1X1t.js.map +1 -0
  51. package/dashboard/assets/errors-BHUWiAQ3.js +2 -0
  52. package/dashboard/assets/errors-BHUWiAQ3.js.map +1 -0
  53. package/dashboard/assets/errors-BbyKweDG.js +2 -0
  54. package/dashboard/assets/errors-BbyKweDG.js.map +1 -0
  55. package/dashboard/assets/errors-CMQ6JC31.js +2 -0
  56. package/dashboard/assets/errors-CMQ6JC31.js.map +1 -0
  57. package/dashboard/assets/errors-D3nVgTmf.js +2 -0
  58. package/dashboard/assets/errors-D3nVgTmf.js.map +1 -0
  59. package/dashboard/assets/errors-IqJSoANC.js +2 -0
  60. package/dashboard/assets/errors-IqJSoANC.js.map +1 -0
  61. package/dashboard/assets/errors-gmIkO9F6.js +2 -0
  62. package/dashboard/assets/errors-gmIkO9F6.js.map +1 -0
  63. package/dashboard/assets/errors-vFk058Vh.js +2 -0
  64. package/dashboard/assets/errors-vFk058Vh.js.map +1 -0
  65. package/dashboard/assets/feeds-track-f-components-Cl_8SkGs.js +2 -0
  66. package/dashboard/assets/feeds-track-f-components-Cl_8SkGs.js.map +1 -0
  67. package/dashboard/assets/format-Lx4cQ8k-.js +2 -0
  68. package/dashboard/assets/format-Lx4cQ8k-.js.map +1 -0
  69. package/dashboard/assets/forms-track-components-Bc2Hoxdh.js +2 -0
  70. package/dashboard/assets/forms-track-components-Bc2Hoxdh.js.map +1 -0
  71. package/dashboard/assets/generated-1EfWhCMA.js +2 -0
  72. package/dashboard/assets/generated-1EfWhCMA.js.map +1 -0
  73. package/dashboard/assets/generated-BB3ZMxvx.js +2 -0
  74. package/dashboard/assets/generated-BB3ZMxvx.js.map +1 -0
  75. package/dashboard/assets/generated-C0JVNBRX.js +2 -0
  76. package/dashboard/assets/generated-C0JVNBRX.js.map +1 -0
  77. package/dashboard/assets/generated-C1W48_-3.js +2 -0
  78. package/dashboard/assets/generated-C1W48_-3.js.map +1 -0
  79. package/dashboard/assets/generated-CluiB_xY.js +2 -0
  80. package/dashboard/assets/generated-CluiB_xY.js.map +1 -0
  81. package/dashboard/assets/generated-DDGtlf-4.js +2 -0
  82. package/dashboard/assets/generated-DDGtlf-4.js.map +1 -0
  83. package/dashboard/assets/generated-DPCHvNto.js +2 -0
  84. package/dashboard/assets/generated-DPCHvNto.js.map +1 -0
  85. package/dashboard/assets/geo-track-components-Ct4-MSRw.js +3 -0
  86. package/dashboard/assets/geo-track-components-Ct4-MSRw.js.map +1 -0
  87. package/dashboard/assets/ibm-plex-sans-arabic-arabic-400-normal-CyU-ddYS.woff2 +0 -0
  88. package/dashboard/assets/ibm-plex-sans-arabic-arabic-500-normal-C4MQITzh.woff2 +0 -0
  89. package/dashboard/assets/ibm-plex-sans-arabic-arabic-600-normal-0pRdybE_.woff2 +0 -0
  90. package/dashboard/assets/ibm-plex-sans-arabic-arabic-700-normal-DrtBj6UE.woff2 +0 -0
  91. package/dashboard/assets/index-DPi4cduu.css +1 -0
  92. package/dashboard/assets/index-PB1II0WV.js +137 -0
  93. package/dashboard/assets/index-PB1II0WV.js.map +1 -0
  94. package/dashboard/assets/jetbrains-mono-latin-ext-wght-italic-BrDczivE.woff2 +0 -0
  95. package/dashboard/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  96. package/dashboard/assets/jetbrains-mono-latin-wght-italic-B2M6KQje.woff2 +0 -0
  97. package/dashboard/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  98. package/dashboard/assets/leaflet-CIGW-MKW.css +1 -0
  99. package/dashboard/assets/leaflet-src-D12shr04.js +2 -0
  100. package/dashboard/assets/leaflet-src-D12shr04.js.map +1 -0
  101. package/dashboard/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2 +0 -0
  102. package/dashboard/assets/manrope-latin-wght-normal-DHIcAJRg.woff2 +0 -0
  103. package/dashboard/assets/media-track-components-CpeII-tT.js +2 -0
  104. package/dashboard/assets/media-track-components-CpeII-tT.js.map +1 -0
  105. package/dashboard/assets/scales-e0tkfEy1.js +2 -0
  106. package/dashboard/assets/scales-e0tkfEy1.js.map +1 -0
  107. package/dashboard/assets/sparkline-2JUGDrMW.js +2 -0
  108. package/dashboard/assets/sparkline-2JUGDrMW.js.map +1 -0
  109. package/dashboard/assets/stats-BNgXz5BD.js +2 -0
  110. package/dashboard/assets/stats-BNgXz5BD.js.map +1 -0
  111. package/dashboard/assets/studio-B7hMOwAF.js +2 -0
  112. package/dashboard/assets/studio-B7hMOwAF.js.map +1 -0
  113. package/dashboard/assets/studio-BN_9xHY3.js +2 -0
  114. package/dashboard/assets/studio-BN_9xHY3.js.map +1 -0
  115. package/dashboard/assets/studio-Cn2MObe8.js +2 -0
  116. package/dashboard/assets/studio-Cn2MObe8.js.map +1 -0
  117. package/dashboard/assets/studio-DZEZCCkw.js +2 -0
  118. package/dashboard/assets/studio-DZEZCCkw.js.map +1 -0
  119. package/dashboard/assets/studio-DzatTvLl.js +2 -0
  120. package/dashboard/assets/studio-DzatTvLl.js.map +1 -0
  121. package/dashboard/assets/studio-cBlD8x90.js +2 -0
  122. package/dashboard/assets/studio-cBlD8x90.js.map +1 -0
  123. package/dashboard/assets/studio-cglZPbJK.js +2 -0
  124. package/dashboard/assets/studio-cglZPbJK.js.map +1 -0
  125. package/dashboard/assets/system-track-components-GTYYpnfB.js +2 -0
  126. package/dashboard/assets/system-track-components-GTYYpnfB.js.map +1 -0
  127. package/dashboard/assets/tables-tail-components-DiA5GeHB.js +2 -0
  128. package/dashboard/assets/tables-tail-components-DiA5GeHB.js.map +1 -0
  129. package/dashboard/assets/tables-track-f-components-CVNPd7rq.js +2 -0
  130. package/dashboard/assets/tables-track-f-components-CVNPd7rq.js.map +1 -0
  131. package/dashboard/assets/time-flow-components-nKsaryry.js +2 -0
  132. package/dashboard/assets/time-flow-components-nKsaryry.js.map +1 -0
  133. package/dashboard/assets/ui-B-kZetor.js +2 -0
  134. package/dashboard/assets/ui-B-kZetor.js.map +1 -0
  135. package/dashboard/assets/ui-BEStJ5Pw.js +2 -0
  136. package/dashboard/assets/ui-BEStJ5Pw.js.map +1 -0
  137. package/dashboard/assets/ui-BS5_eDN4.js +2 -0
  138. package/dashboard/assets/ui-BS5_eDN4.js.map +1 -0
  139. package/dashboard/assets/ui-BZ0EyxRH.js +2 -0
  140. package/dashboard/assets/ui-BZ0EyxRH.js.map +1 -0
  141. package/dashboard/assets/ui-BloJDdt6.js +2 -0
  142. package/dashboard/assets/ui-BloJDdt6.js.map +1 -0
  143. package/dashboard/assets/ui-CpdrplJH.js +2 -0
  144. package/dashboard/assets/ui-CpdrplJH.js.map +1 -0
  145. package/dashboard/assets/ui-YJfT644k.js +2 -0
  146. package/dashboard/assets/ui-YJfT644k.js.map +1 -0
  147. package/dashboard/assets/widgets-uDqZWw4A.js +2 -0
  148. package/dashboard/assets/widgets-uDqZWw4A.js.map +1 -0
  149. package/dashboard/index.html +41 -0
  150. package/dist/app.d.ts +48 -0
  151. package/dist/app.d.ts.map +1 -0
  152. package/dist/app.js +250 -0
  153. package/dist/app.js.map +1 -0
  154. package/dist/auth/audit.d.ts +22 -0
  155. package/dist/auth/audit.d.ts.map +1 -0
  156. package/dist/auth/audit.js +17 -0
  157. package/dist/auth/audit.js.map +1 -0
  158. package/dist/auth/desktop-session.d.ts +53 -0
  159. package/dist/auth/desktop-session.d.ts.map +1 -0
  160. package/dist/auth/desktop-session.js +111 -0
  161. package/dist/auth/desktop-session.js.map +1 -0
  162. package/dist/auth/passwords.d.ts +17 -0
  163. package/dist/auth/passwords.d.ts.map +1 -0
  164. package/dist/auth/passwords.js +40 -0
  165. package/dist/auth/passwords.js.map +1 -0
  166. package/dist/auth/sessions.d.ts +77 -0
  167. package/dist/auth/sessions.d.ts.map +1 -0
  168. package/dist/auth/sessions.js +137 -0
  169. package/dist/auth/sessions.js.map +1 -0
  170. package/dist/auth/totp.d.ts +30 -0
  171. package/dist/auth/totp.d.ts.map +1 -0
  172. package/dist/auth/totp.js +97 -0
  173. package/dist/auth/totp.js.map +1 -0
  174. package/dist/backup/backup-service.d.ts +157 -0
  175. package/dist/backup/backup-service.d.ts.map +1 -0
  176. package/dist/backup/backup-service.js +354 -0
  177. package/dist/backup/backup-service.js.map +1 -0
  178. package/dist/backup/format.d.ts +300 -0
  179. package/dist/backup/format.d.ts.map +1 -0
  180. package/dist/backup/format.js +304 -0
  181. package/dist/backup/format.js.map +1 -0
  182. package/dist/backup/notify.d.ts +55 -0
  183. package/dist/backup/notify.d.ts.map +1 -0
  184. package/dist/backup/notify.js +60 -0
  185. package/dist/backup/notify.js.map +1 -0
  186. package/dist/backup/snapshot.d.ts +78 -0
  187. package/dist/backup/snapshot.d.ts.map +1 -0
  188. package/dist/backup/snapshot.js +142 -0
  189. package/dist/backup/snapshot.js.map +1 -0
  190. package/dist/capabilities/catalog.d.ts +33 -0
  191. package/dist/capabilities/catalog.d.ts.map +1 -0
  192. package/dist/capabilities/catalog.js +32 -0
  193. package/dist/capabilities/catalog.js.map +1 -0
  194. package/dist/capabilities/grants.d.ts +44 -0
  195. package/dist/capabilities/grants.d.ts.map +1 -0
  196. package/dist/capabilities/grants.js +65 -0
  197. package/dist/capabilities/grants.js.map +1 -0
  198. package/dist/cli/allowlist.d.ts +46 -0
  199. package/dist/cli/allowlist.d.ts.map +1 -0
  200. package/dist/cli/allowlist.js +99 -0
  201. package/dist/cli/allowlist.js.map +1 -0
  202. package/dist/cli/args.d.ts +63 -0
  203. package/dist/cli/args.d.ts.map +1 -0
  204. package/dist/cli/args.js +92 -0
  205. package/dist/cli/args.js.map +1 -0
  206. package/dist/cli/command.d.ts +32 -0
  207. package/dist/cli/command.d.ts.map +1 -0
  208. package/dist/cli/command.js +64 -0
  209. package/dist/cli/command.js.map +1 -0
  210. package/dist/cli/commands/apply-llm-response.d.ts +32 -0
  211. package/dist/cli/commands/apply-llm-response.d.ts.map +1 -0
  212. package/dist/cli/commands/apply-llm-response.js +209 -0
  213. package/dist/cli/commands/apply-llm-response.js.map +1 -0
  214. package/dist/cli/commands/export-zip.d.ts +17 -0
  215. package/dist/cli/commands/export-zip.d.ts.map +1 -0
  216. package/dist/cli/commands/export-zip.js +111 -0
  217. package/dist/cli/commands/export-zip.js.map +1 -0
  218. package/dist/cli/commands/generate-prompt.d.ts +29 -0
  219. package/dist/cli/commands/generate-prompt.d.ts.map +1 -0
  220. package/dist/cli/commands/generate-prompt.js +154 -0
  221. package/dist/cli/commands/generate-prompt.js.map +1 -0
  222. package/dist/cli/commands/import-zip.d.ts +13 -0
  223. package/dist/cli/commands/import-zip.d.ts.map +1 -0
  224. package/dist/cli/commands/import-zip.js +95 -0
  225. package/dist/cli/commands/import-zip.js.map +1 -0
  226. package/dist/cli/commands/init.d.ts +47 -0
  227. package/dist/cli/commands/init.d.ts.map +1 -0
  228. package/dist/cli/commands/init.js +372 -0
  229. package/dist/cli/commands/init.js.map +1 -0
  230. package/dist/cli/commands/introspect.d.ts +11 -0
  231. package/dist/cli/commands/introspect.d.ts.map +1 -0
  232. package/dist/cli/commands/introspect.js +100 -0
  233. package/dist/cli/commands/introspect.js.map +1 -0
  234. package/dist/cli/commands/migrate.d.ts +11 -0
  235. package/dist/cli/commands/migrate.d.ts.map +1 -0
  236. package/dist/cli/commands/migrate.js +80 -0
  237. package/dist/cli/commands/migrate.js.map +1 -0
  238. package/dist/cli/commands/start.d.ts +22 -0
  239. package/dist/cli/commands/start.d.ts.map +1 -0
  240. package/dist/cli/commands/start.js +101 -0
  241. package/dist/cli/commands/start.js.map +1 -0
  242. package/dist/cli/exit.d.ts +37 -0
  243. package/dist/cli/exit.d.ts.map +1 -0
  244. package/dist/cli/exit.js +39 -0
  245. package/dist/cli/exit.js.map +1 -0
  246. package/dist/cli/index.d.ts +10 -0
  247. package/dist/cli/index.d.ts.map +1 -0
  248. package/dist/cli/index.js +17 -0
  249. package/dist/cli/index.js.map +1 -0
  250. package/dist/cli/io.d.ts +49 -0
  251. package/dist/cli/io.d.ts.map +1 -0
  252. package/dist/cli/io.js +77 -0
  253. package/dist/cli/io.js.map +1 -0
  254. package/dist/cli/run.d.ts +35 -0
  255. package/dist/cli/run.d.ts.map +1 -0
  256. package/dist/cli/run.js +139 -0
  257. package/dist/cli/run.js.map +1 -0
  258. package/dist/cli/runtime.d.ts +116 -0
  259. package/dist/cli/runtime.d.ts.map +1 -0
  260. package/dist/cli/runtime.js +181 -0
  261. package/dist/cli/runtime.js.map +1 -0
  262. package/dist/cli/static-root.d.ts +42 -0
  263. package/dist/cli/static-root.d.ts.map +1 -0
  264. package/dist/cli/static-root.js +58 -0
  265. package/dist/cli/static-root.js.map +1 -0
  266. package/dist/compose.d.ts +135 -0
  267. package/dist/compose.d.ts.map +1 -0
  268. package/dist/compose.js +383 -0
  269. package/dist/compose.js.map +1 -0
  270. package/dist/config/bootstrap.d.ts +33 -0
  271. package/dist/config/bootstrap.d.ts.map +1 -0
  272. package/dist/config/bootstrap.js +81 -0
  273. package/dist/config/bootstrap.js.map +1 -0
  274. package/dist/config/env.d.ts +95 -0
  275. package/dist/config/env.d.ts.map +1 -0
  276. package/dist/config/env.js +236 -0
  277. package/dist/config/env.js.map +1 -0
  278. package/dist/config/secrets.d.ts +24 -0
  279. package/dist/config/secrets.d.ts.map +1 -0
  280. package/dist/config/secrets.js +74 -0
  281. package/dist/config/secrets.js.map +1 -0
  282. package/dist/connections/crypto.d.ts +9 -0
  283. package/dist/connections/crypto.d.ts.map +1 -0
  284. package/dist/connections/crypto.js +16 -0
  285. package/dist/connections/crypto.js.map +1 -0
  286. package/dist/connections/dsn.d.ts +42 -0
  287. package/dist/connections/dsn.d.ts.map +1 -0
  288. package/dist/connections/dsn.js +131 -0
  289. package/dist/connections/dsn.js.map +1 -0
  290. package/dist/connections/effective-schema.d.ts +65 -0
  291. package/dist/connections/effective-schema.d.ts.map +1 -0
  292. package/dist/connections/effective-schema.js +249 -0
  293. package/dist/connections/effective-schema.js.map +1 -0
  294. package/dist/connections/introspect.d.ts +52 -0
  295. package/dist/connections/introspect.d.ts.map +1 -0
  296. package/dist/connections/introspect.js +111 -0
  297. package/dist/connections/introspect.js.map +1 -0
  298. package/dist/connections/manager.d.ts +97 -0
  299. package/dist/connections/manager.d.ts.map +1 -0
  300. package/dist/connections/manager.js +224 -0
  301. package/dist/connections/manager.js.map +1 -0
  302. package/dist/connections/register-adapters.d.ts +42 -0
  303. package/dist/connections/register-adapters.d.ts.map +1 -0
  304. package/dist/connections/register-adapters.js +92 -0
  305. package/dist/connections/register-adapters.js.map +1 -0
  306. package/dist/crud/filters.d.ts +57 -0
  307. package/dist/crud/filters.d.ts.map +1 -0
  308. package/dist/crud/filters.js +177 -0
  309. package/dist/crud/filters.js.map +1 -0
  310. package/dist/crud/identifiers.d.ts +58 -0
  311. package/dist/crud/identifiers.d.ts.map +1 -0
  312. package/dist/crud/identifiers.js +99 -0
  313. package/dist/crud/identifiers.js.map +1 -0
  314. package/dist/crud/list.d.ts +51 -0
  315. package/dist/crud/list.d.ts.map +1 -0
  316. package/dist/crud/list.js +126 -0
  317. package/dist/crud/list.js.map +1 -0
  318. package/dist/crud/mask.d.ts +23 -0
  319. package/dist/crud/mask.d.ts.map +1 -0
  320. package/dist/crud/mask.js +41 -0
  321. package/dist/crud/mask.js.map +1 -0
  322. package/dist/crud/records.d.ts +33 -0
  323. package/dist/crud/records.d.ts.map +1 -0
  324. package/dist/crud/records.js +126 -0
  325. package/dist/crud/records.js.map +1 -0
  326. package/dist/crud/undo.d.ts +55 -0
  327. package/dist/crud/undo.d.ts.map +1 -0
  328. package/dist/crud/undo.js +74 -0
  329. package/dist/crud/undo.js.map +1 -0
  330. package/dist/data-io/coerce.d.ts +28 -0
  331. package/dist/data-io/coerce.d.ts.map +1 -0
  332. package/dist/data-io/coerce.js +123 -0
  333. package/dist/data-io/coerce.js.map +1 -0
  334. package/dist/data-io/csv.d.ts +38 -0
  335. package/dist/data-io/csv.d.ts.map +1 -0
  336. package/dist/data-io/csv.js +138 -0
  337. package/dist/data-io/csv.js.map +1 -0
  338. package/dist/data-io/snapshot-view.d.ts +10 -0
  339. package/dist/data-io/snapshot-view.d.ts.map +1 -0
  340. package/dist/data-io/snapshot-view.js +19 -0
  341. package/dist/data-io/snapshot-view.js.map +1 -0
  342. package/dist/desktop/demo-seed.d.ts +23 -0
  343. package/dist/desktop/demo-seed.d.ts.map +1 -0
  344. package/dist/desktop/demo-seed.js +28 -0
  345. package/dist/desktop/demo-seed.js.map +1 -0
  346. package/dist/desktop/lan-share.d.ts +94 -0
  347. package/dist/desktop/lan-share.d.ts.map +1 -0
  348. package/dist/desktop/lan-share.js +150 -0
  349. package/dist/desktop/lan-share.js.map +1 -0
  350. package/dist/errors.d.ts +72 -0
  351. package/dist/errors.d.ts.map +1 -0
  352. package/dist/errors.js +82 -0
  353. package/dist/errors.js.map +1 -0
  354. package/dist/export/bundle.d.ts +235 -0
  355. package/dist/export/bundle.d.ts.map +1 -0
  356. package/dist/export/bundle.js +172 -0
  357. package/dist/export/bundle.js.map +1 -0
  358. package/dist/export/import-service.d.ts +99 -0
  359. package/dist/export/import-service.d.ts.map +1 -0
  360. package/dist/export/import-service.js +515 -0
  361. package/dist/export/import-service.js.map +1 -0
  362. package/dist/export/readme.d.ts +25 -0
  363. package/dist/export/readme.d.ts.map +1 -0
  364. package/dist/export/readme.js +154 -0
  365. package/dist/export/readme.js.map +1 -0
  366. package/dist/export/redaction.d.ts +118 -0
  367. package/dist/export/redaction.d.ts.map +1 -0
  368. package/dist/export/redaction.js +233 -0
  369. package/dist/export/redaction.js.map +1 -0
  370. package/dist/export/zip-service.d.ts +66 -0
  371. package/dist/export/zip-service.d.ts.map +1 -0
  372. package/dist/export/zip-service.js +306 -0
  373. package/dist/export/zip-service.js.map +1 -0
  374. package/dist/files/storage.d.ts +50 -0
  375. package/dist/files/storage.d.ts.map +1 -0
  376. package/dist/files/storage.js +100 -0
  377. package/dist/files/storage.js.map +1 -0
  378. package/dist/generate/materialize-llm.d.ts +45 -0
  379. package/dist/generate/materialize-llm.d.ts.map +1 -0
  380. package/dist/generate/materialize-llm.js +167 -0
  381. package/dist/generate/materialize-llm.js.map +1 -0
  382. package/dist/generate/run.d.ts +48 -0
  383. package/dist/generate/run.d.ts.map +1 -0
  384. package/dist/generate/run.js +123 -0
  385. package/dist/generate/run.js.map +1 -0
  386. package/dist/index.d.ts +89 -0
  387. package/dist/index.d.ts.map +1 -0
  388. package/dist/index.js +116 -0
  389. package/dist/index.js.map +1 -0
  390. package/dist/jobs/export-run.d.ts +38 -0
  391. package/dist/jobs/export-run.d.ts.map +1 -0
  392. package/dist/jobs/export-run.js +172 -0
  393. package/dist/jobs/export-run.js.map +1 -0
  394. package/dist/jobs/import-run.d.ts +43 -0
  395. package/dist/jobs/import-run.d.ts.map +1 -0
  396. package/dist/jobs/import-run.js +290 -0
  397. package/dist/jobs/import-run.js.map +1 -0
  398. package/dist/jobs/llm-run.d.ts +73 -0
  399. package/dist/jobs/llm-run.d.ts.map +1 -0
  400. package/dist/jobs/llm-run.js +225 -0
  401. package/dist/jobs/llm-run.js.map +1 -0
  402. package/dist/jobs/register.d.ts +90 -0
  403. package/dist/jobs/register.d.ts.map +1 -0
  404. package/dist/jobs/register.js +121 -0
  405. package/dist/jobs/register.js.map +1 -0
  406. package/dist/jobs/registry.d.ts +74 -0
  407. package/dist/jobs/registry.d.ts.map +1 -0
  408. package/dist/jobs/registry.js +78 -0
  409. package/dist/jobs/registry.js.map +1 -0
  410. package/dist/jobs/report-run.d.ts +64 -0
  411. package/dist/jobs/report-run.d.ts.map +1 -0
  412. package/dist/jobs/report-run.js +221 -0
  413. package/dist/jobs/report-run.js.map +1 -0
  414. package/dist/jobs/scheduler.d.ts +72 -0
  415. package/dist/jobs/scheduler.d.ts.map +1 -0
  416. package/dist/jobs/scheduler.js +121 -0
  417. package/dist/jobs/scheduler.js.map +1 -0
  418. package/dist/jobs/worker.d.ts +110 -0
  419. package/dist/jobs/worker.d.ts.map +1 -0
  420. package/dist/jobs/worker.js +282 -0
  421. package/dist/jobs/worker.js.map +1 -0
  422. package/dist/llm/apply-service.d.ts +150 -0
  423. package/dist/llm/apply-service.d.ts.map +1 -0
  424. package/dist/llm/apply-service.js +463 -0
  425. package/dist/llm/apply-service.js.map +1 -0
  426. package/dist/llm/apply-undo-store.d.ts +50 -0
  427. package/dist/llm/apply-undo-store.d.ts.map +1 -0
  428. package/dist/llm/apply-undo-store.js +60 -0
  429. package/dist/llm/apply-undo-store.js.map +1 -0
  430. package/dist/llm/direct-runner.d.ts +146 -0
  431. package/dist/llm/direct-runner.d.ts.map +1 -0
  432. package/dist/llm/direct-runner.js +204 -0
  433. package/dist/llm/direct-runner.js.map +1 -0
  434. package/dist/llm/prompt-service.d.ts +90 -0
  435. package/dist/llm/prompt-service.d.ts.map +1 -0
  436. package/dist/llm/prompt-service.js +93 -0
  437. package/dist/llm/prompt-service.js.map +1 -0
  438. package/dist/llm/provider-resolver.d.ts +25 -0
  439. package/dist/llm/provider-resolver.d.ts.map +1 -0
  440. package/dist/llm/provider-resolver.js +81 -0
  441. package/dist/llm/provider-resolver.js.map +1 -0
  442. package/dist/llm/run-service.d.ts +215 -0
  443. package/dist/llm/run-service.d.ts.map +1 -0
  444. package/dist/llm/run-service.js +343 -0
  445. package/dist/llm/run-service.js.map +1 -0
  446. package/dist/llm/stats-collector.d.ts +40 -0
  447. package/dist/llm/stats-collector.d.ts.map +1 -0
  448. package/dist/llm/stats-collector.js +74 -0
  449. package/dist/llm/stats-collector.js.map +1 -0
  450. package/dist/log-scrub.d.ts +58 -0
  451. package/dist/log-scrub.d.ts.map +1 -0
  452. package/dist/log-scrub.js +103 -0
  453. package/dist/log-scrub.js.map +1 -0
  454. package/dist/meta/store.d.ts +96 -0
  455. package/dist/meta/store.d.ts.map +1 -0
  456. package/dist/meta/store.js +192 -0
  457. package/dist/meta/store.js.map +1 -0
  458. package/dist/notifications/notify.d.ts +43 -0
  459. package/dist/notifications/notify.d.ts.map +1 -0
  460. package/dist/notifications/notify.js +42 -0
  461. package/dist/notifications/notify.js.map +1 -0
  462. package/dist/plugins/auth.d.ts +42 -0
  463. package/dist/plugins/auth.d.ts.map +1 -0
  464. package/dist/plugins/auth.js +84 -0
  465. package/dist/plugins/auth.js.map +1 -0
  466. package/dist/plugins/core.d.ts +48 -0
  467. package/dist/plugins/core.d.ts.map +1 -0
  468. package/dist/plugins/core.js +248 -0
  469. package/dist/plugins/core.js.map +1 -0
  470. package/dist/plugins/rbac.d.ts +54 -0
  471. package/dist/plugins/rbac.d.ts.map +1 -0
  472. package/dist/plugins/rbac.js +103 -0
  473. package/dist/plugins/rbac.js.map +1 -0
  474. package/dist/plugins/static.d.ts +12 -0
  475. package/dist/plugins/static.d.ts.map +1 -0
  476. package/dist/plugins/static.js +36 -0
  477. package/dist/plugins/static.js.map +1 -0
  478. package/dist/rbac/api-keys.d.ts +30 -0
  479. package/dist/rbac/api-keys.d.ts.map +1 -0
  480. package/dist/rbac/api-keys.js +41 -0
  481. package/dist/rbac/api-keys.js.map +1 -0
  482. package/dist/rbac/index.d.ts +6 -0
  483. package/dist/rbac/index.d.ts.map +1 -0
  484. package/dist/rbac/index.js +6 -0
  485. package/dist/rbac/index.js.map +1 -0
  486. package/dist/rbac/permissions.d.ts +107 -0
  487. package/dist/rbac/permissions.d.ts.map +1 -0
  488. package/dist/rbac/permissions.js +250 -0
  489. package/dist/rbac/permissions.js.map +1 -0
  490. package/dist/rbac/principal.d.ts +33 -0
  491. package/dist/rbac/principal.d.ts.map +1 -0
  492. package/dist/rbac/principal.js +31 -0
  493. package/dist/rbac/principal.js.map +1 -0
  494. package/dist/rbac/resolver.d.ts +26 -0
  495. package/dist/rbac/resolver.d.ts.map +1 -0
  496. package/dist/rbac/resolver.js +46 -0
  497. package/dist/rbac/resolver.js.map +1 -0
  498. package/dist/realtime/hub.d.ts +90 -0
  499. package/dist/realtime/hub.d.ts.map +1 -0
  500. package/dist/realtime/hub.js +146 -0
  501. package/dist/realtime/hub.js.map +1 -0
  502. package/dist/realtime/sse.d.ts +35 -0
  503. package/dist/realtime/sse.d.ts.map +1 -0
  504. package/dist/realtime/sse.js +88 -0
  505. package/dist/realtime/sse.js.map +1 -0
  506. package/dist/realtime/ws.d.ts +38 -0
  507. package/dist/realtime/ws.d.ts.map +1 -0
  508. package/dist/realtime/ws.js +124 -0
  509. package/dist/realtime/ws.js.map +1 -0
  510. package/dist/reports/schedule.d.ts +14 -0
  511. package/dist/reports/schedule.d.ts.map +1 -0
  512. package/dist/reports/schedule.js +63 -0
  513. package/dist/reports/schedule.js.map +1 -0
  514. package/dist/routes/about/index.d.ts +39 -0
  515. package/dist/routes/about/index.d.ts.map +1 -0
  516. package/dist/routes/about/index.js +73 -0
  517. package/dist/routes/about/index.js.map +1 -0
  518. package/dist/routes/about/schema.d.ts +50 -0
  519. package/dist/routes/about/schema.d.ts.map +1 -0
  520. package/dist/routes/about/schema.js +53 -0
  521. package/dist/routes/about/schema.js.map +1 -0
  522. package/dist/routes/api-keys/index.d.ts +11 -0
  523. package/dist/routes/api-keys/index.d.ts.map +1 -0
  524. package/dist/routes/api-keys/index.js +79 -0
  525. package/dist/routes/api-keys/index.js.map +1 -0
  526. package/dist/routes/api-keys/schema.d.ts +62 -0
  527. package/dist/routes/api-keys/schema.d.ts.map +1 -0
  528. package/dist/routes/api-keys/schema.js +37 -0
  529. package/dist/routes/api-keys/schema.js.map +1 -0
  530. package/dist/routes/audit/index.d.ts +11 -0
  531. package/dist/routes/audit/index.d.ts.map +1 -0
  532. package/dist/routes/audit/index.js +107 -0
  533. package/dist/routes/audit/index.js.map +1 -0
  534. package/dist/routes/audit/schema.d.ts +129 -0
  535. package/dist/routes/audit/schema.d.ts.map +1 -0
  536. package/dist/routes/audit/schema.js +43 -0
  537. package/dist/routes/audit/schema.js.map +1 -0
  538. package/dist/routes/auth/desktop-session.d.ts +48 -0
  539. package/dist/routes/auth/desktop-session.d.ts.map +1 -0
  540. package/dist/routes/auth/desktop-session.js +132 -0
  541. package/dist/routes/auth/desktop-session.js.map +1 -0
  542. package/dist/routes/auth/handlers.d.ts +21 -0
  543. package/dist/routes/auth/handlers.d.ts.map +1 -0
  544. package/dist/routes/auth/handlers.js +256 -0
  545. package/dist/routes/auth/handlers.js.map +1 -0
  546. package/dist/routes/auth/index.d.ts +27 -0
  547. package/dist/routes/auth/index.d.ts.map +1 -0
  548. package/dist/routes/auth/index.js +67 -0
  549. package/dist/routes/auth/index.js.map +1 -0
  550. package/dist/routes/auth/schema.d.ts +129 -0
  551. package/dist/routes/auth/schema.d.ts.map +1 -0
  552. package/dist/routes/auth/schema.js +84 -0
  553. package/dist/routes/auth/schema.js.map +1 -0
  554. package/dist/routes/bootstrap/handlers.d.ts +34 -0
  555. package/dist/routes/bootstrap/handlers.d.ts.map +1 -0
  556. package/dist/routes/bootstrap/handlers.js +96 -0
  557. package/dist/routes/bootstrap/handlers.js.map +1 -0
  558. package/dist/routes/bootstrap/index.d.ts +9 -0
  559. package/dist/routes/bootstrap/index.d.ts.map +1 -0
  560. package/dist/routes/bootstrap/index.js +16 -0
  561. package/dist/routes/bootstrap/index.js.map +1 -0
  562. package/dist/routes/bootstrap/schema.d.ts +177 -0
  563. package/dist/routes/bootstrap/schema.d.ts.map +1 -0
  564. package/dist/routes/bootstrap/schema.js +55 -0
  565. package/dist/routes/bootstrap/schema.js.map +1 -0
  566. package/dist/routes/connections/index.d.ts +21 -0
  567. package/dist/routes/connections/index.d.ts.map +1 -0
  568. package/dist/routes/connections/index.js +260 -0
  569. package/dist/routes/connections/index.js.map +1 -0
  570. package/dist/routes/connections/schema.d.ts +161 -0
  571. package/dist/routes/connections/schema.d.ts.map +1 -0
  572. package/dist/routes/connections/schema.js +91 -0
  573. package/dist/routes/connections/schema.js.map +1 -0
  574. package/dist/routes/data/index.d.ts +46 -0
  575. package/dist/routes/data/index.d.ts.map +1 -0
  576. package/dist/routes/data/index.js +508 -0
  577. package/dist/routes/data/index.js.map +1 -0
  578. package/dist/routes/data/schema.d.ts +128 -0
  579. package/dist/routes/data/schema.d.ts.map +1 -0
  580. package/dist/routes/data/schema.js +83 -0
  581. package/dist/routes/data/schema.js.map +1 -0
  582. package/dist/routes/desktop/index.d.ts +61 -0
  583. package/dist/routes/desktop/index.d.ts.map +1 -0
  584. package/dist/routes/desktop/index.js +91 -0
  585. package/dist/routes/desktop/index.js.map +1 -0
  586. package/dist/routes/desktop/schema.d.ts +71 -0
  587. package/dist/routes/desktop/schema.d.ts.map +1 -0
  588. package/dist/routes/desktop/schema.js +58 -0
  589. package/dist/routes/desktop/schema.js.map +1 -0
  590. package/dist/routes/desktop-capabilities/index.d.ts +9 -0
  591. package/dist/routes/desktop-capabilities/index.d.ts.map +1 -0
  592. package/dist/routes/desktop-capabilities/index.js +62 -0
  593. package/dist/routes/desktop-capabilities/index.js.map +1 -0
  594. package/dist/routes/desktop-capabilities/schema.d.ts +46 -0
  595. package/dist/routes/desktop-capabilities/schema.d.ts.map +1 -0
  596. package/dist/routes/desktop-capabilities/schema.js +30 -0
  597. package/dist/routes/desktop-capabilities/schema.js.map +1 -0
  598. package/dist/routes/desktop-demo/handlers.d.ts +94 -0
  599. package/dist/routes/desktop-demo/handlers.d.ts.map +1 -0
  600. package/dist/routes/desktop-demo/handlers.js +182 -0
  601. package/dist/routes/desktop-demo/handlers.js.map +1 -0
  602. package/dist/routes/desktop-demo/index.d.ts +39 -0
  603. package/dist/routes/desktop-demo/index.d.ts.map +1 -0
  604. package/dist/routes/desktop-demo/index.js +73 -0
  605. package/dist/routes/desktop-demo/index.js.map +1 -0
  606. package/dist/routes/desktop-demo/schema.d.ts +17 -0
  607. package/dist/routes/desktop-demo/schema.d.ts.map +1 -0
  608. package/dist/routes/desktop-demo/schema.js +30 -0
  609. package/dist/routes/desktop-demo/schema.js.map +1 -0
  610. package/dist/routes/desktop-lan/index.d.ts +54 -0
  611. package/dist/routes/desktop-lan/index.d.ts.map +1 -0
  612. package/dist/routes/desktop-lan/index.js +33 -0
  613. package/dist/routes/desktop-lan/index.js.map +1 -0
  614. package/dist/routes/desktop-lan/schema.d.ts +24 -0
  615. package/dist/routes/desktop-lan/schema.d.ts.map +1 -0
  616. package/dist/routes/desktop-lan/schema.js +40 -0
  617. package/dist/routes/desktop-lan/schema.js.map +1 -0
  618. package/dist/routes/desktop-local-db/handlers.d.ts +92 -0
  619. package/dist/routes/desktop-local-db/handlers.d.ts.map +1 -0
  620. package/dist/routes/desktop-local-db/handlers.js +300 -0
  621. package/dist/routes/desktop-local-db/handlers.js.map +1 -0
  622. package/dist/routes/desktop-local-db/index.d.ts +39 -0
  623. package/dist/routes/desktop-local-db/index.d.ts.map +1 -0
  624. package/dist/routes/desktop-local-db/index.js +83 -0
  625. package/dist/routes/desktop-local-db/index.js.map +1 -0
  626. package/dist/routes/desktop-local-db/placeholder.d.ts +75 -0
  627. package/dist/routes/desktop-local-db/placeholder.d.ts.map +1 -0
  628. package/dist/routes/desktop-local-db/placeholder.js +420 -0
  629. package/dist/routes/desktop-local-db/placeholder.js.map +1 -0
  630. package/dist/routes/desktop-local-db/schema.d.ts +50 -0
  631. package/dist/routes/desktop-local-db/schema.d.ts.map +1 -0
  632. package/dist/routes/desktop-local-db/schema.js +71 -0
  633. package/dist/routes/desktop-local-db/schema.js.map +1 -0
  634. package/dist/routes/desktop-local-db/sqlite-ddl.d.ts +104 -0
  635. package/dist/routes/desktop-local-db/sqlite-ddl.d.ts.map +1 -0
  636. package/dist/routes/desktop-local-db/sqlite-ddl.js +419 -0
  637. package/dist/routes/desktop-local-db/sqlite-ddl.js.map +1 -0
  638. package/dist/routes/email-templates/index.d.ts +7 -0
  639. package/dist/routes/email-templates/index.d.ts.map +1 -0
  640. package/dist/routes/email-templates/index.js +70 -0
  641. package/dist/routes/email-templates/index.js.map +1 -0
  642. package/dist/routes/email-templates/schema.d.ts +54 -0
  643. package/dist/routes/email-templates/schema.d.ts.map +1 -0
  644. package/dist/routes/email-templates/schema.js +35 -0
  645. package/dist/routes/email-templates/schema.js.map +1 -0
  646. package/dist/routes/exports/index.d.ts +19 -0
  647. package/dist/routes/exports/index.d.ts.map +1 -0
  648. package/dist/routes/exports/index.js +145 -0
  649. package/dist/routes/exports/index.js.map +1 -0
  650. package/dist/routes/exports/schema.d.ts +183 -0
  651. package/dist/routes/exports/schema.d.ts.map +1 -0
  652. package/dist/routes/exports/schema.js +37 -0
  653. package/dist/routes/exports/schema.js.map +1 -0
  654. package/dist/routes/generate/index.d.ts +23 -0
  655. package/dist/routes/generate/index.d.ts.map +1 -0
  656. package/dist/routes/generate/index.js +80 -0
  657. package/dist/routes/generate/index.js.map +1 -0
  658. package/dist/routes/generate/schema.d.ts +43 -0
  659. package/dist/routes/generate/schema.d.ts.map +1 -0
  660. package/dist/routes/generate/schema.js +37 -0
  661. package/dist/routes/generate/schema.js.map +1 -0
  662. package/dist/routes/imports/index.d.ts +21 -0
  663. package/dist/routes/imports/index.d.ts.map +1 -0
  664. package/dist/routes/imports/index.js +288 -0
  665. package/dist/routes/imports/index.js.map +1 -0
  666. package/dist/routes/imports/schema.d.ts +292 -0
  667. package/dist/routes/imports/schema.d.ts.map +1 -0
  668. package/dist/routes/imports/schema.js +78 -0
  669. package/dist/routes/imports/schema.js.map +1 -0
  670. package/dist/routes/index.d.ts +11 -0
  671. package/dist/routes/index.d.ts.map +1 -0
  672. package/dist/routes/index.js +8 -0
  673. package/dist/routes/index.js.map +1 -0
  674. package/dist/routes/jobs/index.d.ts +29 -0
  675. package/dist/routes/jobs/index.d.ts.map +1 -0
  676. package/dist/routes/jobs/index.js +175 -0
  677. package/dist/routes/jobs/index.js.map +1 -0
  678. package/dist/routes/jobs/schema.d.ts +170 -0
  679. package/dist/routes/jobs/schema.d.ts.map +1 -0
  680. package/dist/routes/jobs/schema.js +57 -0
  681. package/dist/routes/jobs/schema.js.map +1 -0
  682. package/dist/routes/llm/config-service.d.ts +48 -0
  683. package/dist/routes/llm/config-service.d.ts.map +1 -0
  684. package/dist/routes/llm/config-service.js +102 -0
  685. package/dist/routes/llm/config-service.js.map +1 -0
  686. package/dist/routes/llm/index.d.ts +69 -0
  687. package/dist/routes/llm/index.d.ts.map +1 -0
  688. package/dist/routes/llm/index.js +412 -0
  689. package/dist/routes/llm/index.js.map +1 -0
  690. package/dist/routes/llm/schema.d.ts +605 -0
  691. package/dist/routes/llm/schema.d.ts.map +1 -0
  692. package/dist/routes/llm/schema.js +238 -0
  693. package/dist/routes/llm/schema.js.map +1 -0
  694. package/dist/routes/me/handlers.d.ts +14 -0
  695. package/dist/routes/me/handlers.d.ts.map +1 -0
  696. package/dist/routes/me/handlers.js +88 -0
  697. package/dist/routes/me/handlers.js.map +1 -0
  698. package/dist/routes/me/index.d.ts +8 -0
  699. package/dist/routes/me/index.d.ts.map +1 -0
  700. package/dist/routes/me/index.js +17 -0
  701. package/dist/routes/me/index.js.map +1 -0
  702. package/dist/routes/me/schema.d.ts +270 -0
  703. package/dist/routes/me/schema.d.ts.map +1 -0
  704. package/dist/routes/me/schema.js +59 -0
  705. package/dist/routes/me/schema.js.map +1 -0
  706. package/dist/routes/me-views/index.d.ts +23 -0
  707. package/dist/routes/me-views/index.d.ts.map +1 -0
  708. package/dist/routes/me-views/index.js +76 -0
  709. package/dist/routes/me-views/index.js.map +1 -0
  710. package/dist/routes/me-views/schema.d.ts +44 -0
  711. package/dist/routes/me-views/schema.d.ts.map +1 -0
  712. package/dist/routes/me-views/schema.js +13 -0
  713. package/dist/routes/me-views/schema.js.map +1 -0
  714. package/dist/routes/notifications/index.d.ts +19 -0
  715. package/dist/routes/notifications/index.d.ts.map +1 -0
  716. package/dist/routes/notifications/index.js +123 -0
  717. package/dist/routes/notifications/index.js.map +1 -0
  718. package/dist/routes/notifications/schema.d.ts +122 -0
  719. package/dist/routes/notifications/schema.d.ts.map +1 -0
  720. package/dist/routes/notifications/schema.js +83 -0
  721. package/dist/routes/notifications/schema.js.map +1 -0
  722. package/dist/routes/onboarding/derive.d.ts +41 -0
  723. package/dist/routes/onboarding/derive.d.ts.map +1 -0
  724. package/dist/routes/onboarding/derive.js +30 -0
  725. package/dist/routes/onboarding/derive.js.map +1 -0
  726. package/dist/routes/onboarding/index.d.ts +26 -0
  727. package/dist/routes/onboarding/index.d.ts.map +1 -0
  728. package/dist/routes/onboarding/index.js +95 -0
  729. package/dist/routes/onboarding/index.js.map +1 -0
  730. package/dist/routes/onboarding/schema.d.ts +22 -0
  731. package/dist/routes/onboarding/schema.d.ts.map +1 -0
  732. package/dist/routes/onboarding/schema.js +22 -0
  733. package/dist/routes/onboarding/schema.js.map +1 -0
  734. package/dist/routes/pages/index.d.ts +26 -0
  735. package/dist/routes/pages/index.d.ts.map +1 -0
  736. package/dist/routes/pages/index.js +119 -0
  737. package/dist/routes/pages/index.js.map +1 -0
  738. package/dist/routes/pages/layout-schema.d.ts +19 -0
  739. package/dist/routes/pages/layout-schema.d.ts.map +1 -0
  740. package/dist/routes/pages/layout-schema.js +19 -0
  741. package/dist/routes/pages/layout-schema.js.map +1 -0
  742. package/dist/routes/pages/schema.d.ts +52 -0
  743. package/dist/routes/pages/schema.d.ts.map +1 -0
  744. package/dist/routes/pages/schema.js +35 -0
  745. package/dist/routes/pages/schema.js.map +1 -0
  746. package/dist/routes/roles/index.d.ts +17 -0
  747. package/dist/routes/roles/index.d.ts.map +1 -0
  748. package/dist/routes/roles/index.js +255 -0
  749. package/dist/routes/roles/index.js.map +1 -0
  750. package/dist/routes/roles/schema.d.ts +94 -0
  751. package/dist/routes/roles/schema.d.ts.map +1 -0
  752. package/dist/routes/roles/schema.js +57 -0
  753. package/dist/routes/roles/schema.js.map +1 -0
  754. package/dist/routes/scheduled-reports/index.d.ts +15 -0
  755. package/dist/routes/scheduled-reports/index.d.ts.map +1 -0
  756. package/dist/routes/scheduled-reports/index.js +195 -0
  757. package/dist/routes/scheduled-reports/index.js.map +1 -0
  758. package/dist/routes/scheduled-reports/schema.d.ts +154 -0
  759. package/dist/routes/scheduled-reports/schema.d.ts.map +1 -0
  760. package/dist/routes/scheduled-reports/schema.js +49 -0
  761. package/dist/routes/scheduled-reports/schema.js.map +1 -0
  762. package/dist/routes/schema/index.d.ts +24 -0
  763. package/dist/routes/schema/index.d.ts.map +1 -0
  764. package/dist/routes/schema/index.js +224 -0
  765. package/dist/routes/schema/index.js.map +1 -0
  766. package/dist/routes/schema/schema.d.ts +92 -0
  767. package/dist/routes/schema/schema.d.ts.map +1 -0
  768. package/dist/routes/schema/schema.js +64 -0
  769. package/dist/routes/schema/schema.js.map +1 -0
  770. package/dist/routes/schema-import/fallback-parser.d.ts +35 -0
  771. package/dist/routes/schema-import/fallback-parser.d.ts.map +1 -0
  772. package/dist/routes/schema-import/fallback-parser.js +349 -0
  773. package/dist/routes/schema-import/fallback-parser.js.map +1 -0
  774. package/dist/routes/schema-import/index.d.ts +43 -0
  775. package/dist/routes/schema-import/index.d.ts.map +1 -0
  776. package/dist/routes/schema-import/index.js +167 -0
  777. package/dist/routes/schema-import/index.js.map +1 -0
  778. package/dist/routes/schema-import/schema.d.ts +65 -0
  779. package/dist/routes/schema-import/schema.d.ts.map +1 -0
  780. package/dist/routes/schema-import/schema.js +40 -0
  781. package/dist/routes/schema-import/schema.js.map +1 -0
  782. package/dist/routes/search/index.d.ts +71 -0
  783. package/dist/routes/search/index.d.ts.map +1 -0
  784. package/dist/routes/search/index.js +361 -0
  785. package/dist/routes/search/index.js.map +1 -0
  786. package/dist/routes/search/schema.d.ts +125 -0
  787. package/dist/routes/search/schema.d.ts.map +1 -0
  788. package/dist/routes/search/schema.js +70 -0
  789. package/dist/routes/search/schema.js.map +1 -0
  790. package/dist/routes/settings/index.d.ts +24 -0
  791. package/dist/routes/settings/index.d.ts.map +1 -0
  792. package/dist/routes/settings/index.js +164 -0
  793. package/dist/routes/settings/index.js.map +1 -0
  794. package/dist/routes/settings/schema.d.ts +110 -0
  795. package/dist/routes/settings/schema.d.ts.map +1 -0
  796. package/dist/routes/settings/schema.js +71 -0
  797. package/dist/routes/settings/schema.js.map +1 -0
  798. package/dist/routes/setup/index.d.ts +29 -0
  799. package/dist/routes/setup/index.d.ts.map +1 -0
  800. package/dist/routes/setup/index.js +68 -0
  801. package/dist/routes/setup/index.js.map +1 -0
  802. package/dist/routes/setup/schema.d.ts +61 -0
  803. package/dist/routes/setup/schema.d.ts.map +1 -0
  804. package/dist/routes/setup/schema.js +47 -0
  805. package/dist/routes/setup/schema.js.map +1 -0
  806. package/dist/routes/system/handlers.d.ts +63 -0
  807. package/dist/routes/system/handlers.d.ts.map +1 -0
  808. package/dist/routes/system/handlers.js +121 -0
  809. package/dist/routes/system/handlers.js.map +1 -0
  810. package/dist/routes/system/index.d.ts +34 -0
  811. package/dist/routes/system/index.d.ts.map +1 -0
  812. package/dist/routes/system/index.js +18 -0
  813. package/dist/routes/system/index.js.map +1 -0
  814. package/dist/routes/system/schema.d.ts +93 -0
  815. package/dist/routes/system/schema.d.ts.map +1 -0
  816. package/dist/routes/system/schema.js +109 -0
  817. package/dist/routes/system/schema.js.map +1 -0
  818. package/dist/routes/views/index.d.ts +21 -0
  819. package/dist/routes/views/index.d.ts.map +1 -0
  820. package/dist/routes/views/index.js +155 -0
  821. package/dist/routes/views/index.js.map +1 -0
  822. package/dist/routes/views/schema.d.ts +127 -0
  823. package/dist/routes/views/schema.d.ts.map +1 -0
  824. package/dist/routes/views/schema.js +56 -0
  825. package/dist/routes/views/schema.js.map +1 -0
  826. package/dist/routes/widget-data/index.d.ts +29 -0
  827. package/dist/routes/widget-data/index.d.ts.map +1 -0
  828. package/dist/routes/widget-data/index.js +152 -0
  829. package/dist/routes/widget-data/index.js.map +1 -0
  830. package/dist/routes/widget-data/schema.d.ts +252 -0
  831. package/dist/routes/widget-data/schema.d.ts.map +1 -0
  832. package/dist/routes/widget-data/schema.js +44 -0
  833. package/dist/routes/widget-data/schema.js.map +1 -0
  834. package/dist/setup/service.d.ts +63 -0
  835. package/dist/setup/service.d.ts.map +1 -0
  836. package/dist/setup/service.js +103 -0
  837. package/dist/setup/service.js.map +1 -0
  838. package/dist/start.d.ts +12 -0
  839. package/dist/start.d.ts.map +1 -0
  840. package/dist/start.js +28 -0
  841. package/dist/start.js.map +1 -0
  842. package/dist/telemetry/payload.d.ts +66 -0
  843. package/dist/telemetry/payload.d.ts.map +1 -0
  844. package/dist/telemetry/payload.js +69 -0
  845. package/dist/telemetry/payload.js.map +1 -0
  846. package/dist/telemetry/service.d.ts +67 -0
  847. package/dist/telemetry/service.d.ts.map +1 -0
  848. package/dist/telemetry/service.js +103 -0
  849. package/dist/telemetry/service.js.map +1 -0
  850. package/dist/telemetry/update-check.d.ts +79 -0
  851. package/dist/telemetry/update-check.d.ts.map +1 -0
  852. package/dist/telemetry/update-check.js +103 -0
  853. package/dist/telemetry/update-check.js.map +1 -0
  854. package/dist/version.d.ts +14 -0
  855. package/dist/version.d.ts.map +1 -0
  856. package/dist/version.js +21 -0
  857. package/dist/version.js.map +1 -0
  858. package/dist/widget-data/cache.d.ts +35 -0
  859. package/dist/widget-data/cache.d.ts.map +1 -0
  860. package/dist/widget-data/cache.js +67 -0
  861. package/dist/widget-data/cache.js.map +1 -0
  862. package/dist/widget-data/compiler.d.ts +107 -0
  863. package/dist/widget-data/compiler.d.ts.map +1 -0
  864. package/dist/widget-data/compiler.js +362 -0
  865. package/dist/widget-data/compiler.js.map +1 -0
  866. package/dist/widget-data/shapers.d.ts +75 -0
  867. package/dist/widget-data/shapers.d.ts.map +1 -0
  868. package/dist/widget-data/shapers.js +128 -0
  869. package/dist/widget-data/shapers.js.map +1 -0
  870. package/dist/widget-data/stream-publisher.d.ts +42 -0
  871. package/dist/widget-data/stream-publisher.d.ts.map +1 -0
  872. package/dist/widget-data/stream-publisher.js +34 -0
  873. package/dist/widget-data/stream-publisher.js.map +1 -0
  874. package/package.json +79 -0
  875. package/vocabulary/llm-allowlist.json +76 -0
@@ -0,0 +1,383 @@
1
+ /**
2
+ * THE COMPOSITION ROOT (01-architecture.md §4: "All four deployment modes run
3
+ * the identical `@adminium/server` process; only the wrapper differs").
4
+ *
5
+ * `buildServer` is the Fastify *skeleton* — logger, error envelope, auth, static,
6
+ * and the handful of resources that need no injected services (system/auth/me/
7
+ * bootstrap/setup/about). Every other resource is a FACTORY over injected
8
+ * services (`connectionsRoutes({ manager, meta })`, `llmRoutes({ … })`, …),
9
+ * because 01 §2.3 forbids the route tree from reaching out and constructing a
10
+ * `ConnectionManager` or importing `@adminium/widgets` on its own. Somebody has
11
+ * to do that construction. This module is that somebody, and it is the ONLY one.
12
+ *
13
+ * WHY IT EXISTS. It used to be `scripts/demo-v01.mjs` — a demo script — which
14
+ * meant `adminium start`, `adminium init`'s final boot and the Docker CMD all
15
+ * served a hollow API: the SPA loaded, setup created the super admin, and then
16
+ * the connect wizard's `POST /api/v1/connections` 404'd, because the plugin that
17
+ * answers it was only ever registered by a script nobody runs in production. The
18
+ * dashboard calls 17 `/api/v1` namespaces; the skeleton serves 6. This module
19
+ * closes that gap so the M10 exit criterion — "`npx adminium` (or `docker run`)
20
+ * on a clean machine → first-run wizard → create super admin → connect any of the
21
+ * 3 engines → generated app" — is met by the shipped artifact and not only by a
22
+ * script in the repo.
23
+ *
24
+ * DEGRADATION. The LLM surface is the one optional part: `LLM_ALLOWED_TEMPLATES`
25
+ * / `LLM_ALLOWED_WIDGETS` come from `@adminium/widgets` (01 §2.3: the server tree
26
+ * may not import it), loaded by file path at runtime. When that load fails the
27
+ * `/llm` routes are skipped and everything else boots — the demo script's
28
+ * behavior, kept, because a missing AI vocabulary must not cost you your CRUD.
29
+ */
30
+ import { llmKeyCryptoFromSecret } from '@adminium/llm';
31
+ import { exportsRepo, filesRepo, settingsRepo } from '@adminium/meta';
32
+ import { buildServer } from './app.js';
33
+ import { decryptSecret, deriveKey, encryptSecret } from './config/secrets.js';
34
+ import { dsnCryptoFromSecret } from './connections/crypto.js';
35
+ import { registerIntrospectJob } from './connections/introspect.js';
36
+ import { UndoStore } from './crud/undo.js';
37
+ import { createFileStorage } from './files/storage.js';
38
+ import { registerJobsAndRealtime } from './jobs/register.js';
39
+ import { SCHEDULED_REPORTS_POLL_CRON, SCHEDULED_REPORTS_POLL_NAME, enqueueDueReports, } from './jobs/report-run.js';
40
+ import { createProviderResolver } from './llm/provider-resolver.js';
41
+ import { rbacPlugin } from './plugins/rbac.js';
42
+ import { permissionSetAllows, resolvePermissionSet } from './rbac/resolver.js';
43
+ import { API_PREFIX } from './routes/index.js';
44
+ import { apiKeysRoutes } from './routes/api-keys/index.js';
45
+ import { auditRoutes } from './routes/audit/index.js';
46
+ import { desktopSessionRoutes } from './routes/auth/desktop-session.js';
47
+ import { desktopRoutes } from './routes/desktop/index.js';
48
+ import { demoSeedScriptPath } from './desktop/demo-seed.js';
49
+ import { desktopDemoRoutes } from './routes/desktop-demo/index.js';
50
+ import { desktopLanRoutes } from './routes/desktop-lan/index.js';
51
+ import { desktopLocalDbRoutes } from './routes/desktop-local-db/index.js';
52
+ import { desktopCapabilityRoutes } from './routes/desktop-capabilities/index.js';
53
+ import { connectionsRoutes } from './routes/connections/index.js';
54
+ import { dataRoutes } from './routes/data/index.js';
55
+ import { emailTemplatesRoutes } from './routes/email-templates/index.js';
56
+ import { exportsRoutes } from './routes/exports/index.js';
57
+ import { generateRoutes } from './routes/generate/index.js';
58
+ import { importsRoutes } from './routes/imports/index.js';
59
+ import { llmRoutes } from './routes/llm/index.js';
60
+ import { meViewsRoutes } from './routes/me-views/index.js';
61
+ import { notificationsRoutes } from './routes/notifications/index.js';
62
+ import { onboardingRoutes } from './routes/onboarding/index.js';
63
+ import { pagesRoutes } from './routes/pages/index.js';
64
+ import { rolesRoutes } from './routes/roles/index.js';
65
+ import { scheduledReportsRoutes } from './routes/scheduled-reports/index.js';
66
+ import { schemaRoutes } from './routes/schema/index.js';
67
+ import { schemaImportRoutes } from './routes/schema-import/index.js';
68
+ import { searchRoutes } from './routes/search/index.js';
69
+ import { settingsRoutes } from './routes/settings/index.js';
70
+ import { viewsRoutes } from './routes/views/index.js';
71
+ import { widgetDataRoutes } from './routes/widget-data/index.js';
72
+ import { createTelemetryService } from './telemetry/service.js';
73
+ import { APP_VERSION } from './version.js';
74
+ import { sqlitePathFromUrl } from './meta/store.js';
75
+ /**
76
+ * Daily, at 04:00 UTC, with an hour of jitter (below). Telemetry is the least
77
+ * urgent thing this process does; a daily ping is what the payload documents
78
+ * (`telemetry/payload.ts`) and nothing downstream reads it sooner. Runs on the
79
+ * existing croner scheduler rather than a `setInterval`, per BRIEF §3 (no
80
+ * external scheduler, and no second timing mechanism either).
81
+ */
82
+ export const TELEMETRY_SCHEDULE_NAME = 'telemetry-ping';
83
+ export const TELEMETRY_CRON = '0 4 * * *';
84
+ /** De-synchronize a fleet so a self-host cohort does not ping in lockstep. */
85
+ export const TELEMETRY_JITTER_MS = 60 * 60 * 1000;
86
+ /**
87
+ * Daily export-retention sweep (M7-T07): flips `ready` → `expired` on
88
+ * `adminium_exports` rows past `expires_at`, then GCs the expired artifacts'
89
+ * BYTES (`filesRepo.markDeleted` + `storage.remove`) so a snapshot never
90
+ * outlives the "kept for 30 days, then expire" promise on disk. Offset from
91
+ * the telemetry ping so the two dailies never contend.
92
+ */
93
+ export const EXPORTS_RETENTION_SCHEDULE_NAME = 'exports-retention-sweep';
94
+ export const EXPORTS_RETENTION_CRON = '30 4 * * *';
95
+ /**
96
+ * Mirror `config.json`'s §2.3 `singleUser` into the setting the §5 route reads.
97
+ *
98
+ * §5: "only while `config.singleUser` is true (mirrored into `adminium_settings`
99
+ * … by the server at boot)". The desktop main process owns `config.json` and the
100
+ * child cannot read it (different process, different lifetime, and §2.3 makes the
101
+ * main process its only writer), so the env var IS the mirror channel — see
102
+ * `config/env.ts`. Unset ⇒ this does nothing at all, deliberately: absent input
103
+ * must not be read as `false` and quietly overwrite an answer the user gave.
104
+ */
105
+ async function mirrorDesktopSingleUser(meta, value) {
106
+ await settingsRepo(meta).set('desktop.singleUser', value, { updatedBy: null });
107
+ }
108
+ /**
109
+ * Build the COMPLETE server: skeleton + RBAC + jobs/realtime + every resource
110
+ * the dashboard calls. Does not listen — the caller decides that (`startServer`
111
+ * for the CLI, a test's `inject` for the suites).
112
+ */
113
+ export async function composeServer(opts) {
114
+ const { env, manager, runService, applyService, allowed } = opts;
115
+ const meta = opts.metaStore.meta;
116
+ const app = await buildServer({
117
+ env,
118
+ metaDb: meta,
119
+ ...(opts.staticRoot === undefined ? {} : { staticRoot: opts.staticRoot }),
120
+ ...(opts.logger === undefined ? {} : { logger: opts.logger }),
121
+ });
122
+ await app.register(rbacPlugin, { meta });
123
+ // LLM assist (M6, 06-llm-assist.md §10.5). Only the vocabulary is optional;
124
+ // the key crypto and the resolver are cheap and pure.
125
+ const llm = allowed === null
126
+ ? null
127
+ : (() => {
128
+ const keyCrypto = llmKeyCryptoFromSecret(env.ADMINIUM_SECRET, {
129
+ deriveKey,
130
+ encryptSecret,
131
+ decryptSecret,
132
+ });
133
+ return {
134
+ keyCrypto,
135
+ resolve: createProviderResolver({
136
+ meta,
137
+ keyCrypto,
138
+ allowedTemplates: allowed.templates,
139
+ allowedWidgets: allowed.widgets,
140
+ }),
141
+ };
142
+ })();
143
+ // Artifact storage for the data-io pipeline (M7-T07): exports, imports and
144
+ // scheduled-report snapshots all live under `<dataDir>/files/`.
145
+ const storage = createFileStorage({ dataDir: env.ADMINIUM_DATA_DIR });
146
+ const jobs = await registerJobsAndRealtime(app, {
147
+ meta,
148
+ resolveUser: (req) => req.user ?? null,
149
+ // Registers the export-run / import-run / report-run handlers on the shared
150
+ // registry — the same instances the exports/imports routes receive below.
151
+ dataIo: { manager, storage },
152
+ // The realtime hub authorizes a SUBSCRIBED USER, not a request, so it cannot
153
+ // reuse `request.can()` (which caches per request and needs a principal on
154
+ // one). It goes through the same resolver + the same decision function the
155
+ // route guards use — `resolvePermissionSet` → `permissionSetAllows`, including
156
+ // the super-admin bypass — so a channel can never grant what a route denies.
157
+ can: async (user, permission) => permissionSetAllows(
158
+ // `label` is only ever read for audit `actor_label`; a channel
159
+ // subscription writes no audit entry, so the id is the whole principal.
160
+ await resolvePermissionSet(meta, { kind: 'user', id: user.id, label: user.id }), permission),
161
+ ...(llm === null ? {} : { llm: { resolve: llm.resolve } }),
162
+ });
163
+ // The `introspect` job kind (08 §2.4): without this, POST
164
+ // /connections/:id/introspect silently falls back to its synchronous
165
+ // dev/test path (30s request-thread budget) in every deployment and the
166
+ // wizard's job-polling branch never runs.
167
+ registerIntrospectJob(jobs.registry, { manager, meta });
168
+ const undoStore = new UndoStore();
169
+ /**
170
+ * THE DESKTOP AUTO-LOGIN DOOR (11-electron.md §5) — the one route in the
171
+ * product that mints a super-admin session without a password.
172
+ *
173
+ * Both conditions are load-bearing, and the AND is the point:
174
+ *
175
+ * - `ADMINIUM_RUNTIME=desktop` — §5 registers this "only when" the Electron
176
+ * shell is the wrapper. Every other deployment (self-host, Docker, npx, and
177
+ * every test that does not opt in) composes a server with NO such route:
178
+ * `/auth/desktop-session` 404s there, which is a stronger guarantee than any
179
+ * runtime check inside a handler could make.
180
+ * - a boot token — a desktop boot without one has nothing to exchange, so the
181
+ * route would be an unreachable surface. §2.2 mints a fresh token per boot;
182
+ * absence means the shell chose not to (or could not), and the app lands on
183
+ * the normal login screen.
184
+ *
185
+ * The mirror runs first so the route's own §5 policy gate reads THIS boot's
186
+ * answer rather than the last one's.
187
+ */
188
+ const desktopSession = env.ADMINIUM_RUNTIME === 'desktop' && env.ADMINIUM_BOOT_TOKEN !== undefined
189
+ ? { bootToken: env.ADMINIUM_BOOT_TOKEN }
190
+ : null;
191
+ if (env.ADMINIUM_RUNTIME === 'desktop' && env.ADMINIUM_DESKTOP_SINGLE_USER !== undefined) {
192
+ await mirrorDesktopSingleUser(meta, env.ADMINIUM_DESKTOP_SINGLE_USER);
193
+ }
194
+ /**
195
+ * §8.3's share panel, behind gate 1 of `routes/desktop-lan/index.ts`.
196
+ *
197
+ * ONE condition, unlike the boot-token door above, and the asymmetry is
198
+ * deliberate. That route needs a token to exchange, so a desktop boot without
199
+ * one has nothing to serve. This one reports on the SOCKET this process is
200
+ * bound to, which every desktop boot has — including (especially) a
201
+ * loopback-only one, where the honest answer `active: false` is what tells the
202
+ * panel that a toggle the user flipped has not taken effect.
203
+ */
204
+ const desktopLan = env.ADMINIUM_RUNTIME === 'desktop';
205
+ /**
206
+ * §6 step 2's two server-side source cards — "Create a new local database"
207
+ * (card 1) and "Explore the demo database" (card 4).
208
+ *
209
+ * Both are gated on the runtime for the same reason, and it is not the §5
210
+ * reason: neither mints a credential, and both do exactly what
211
+ * `POST /connections` does, under the same `system:connections:manage` grant.
212
+ * What makes them desktop-only is their SUBJECT. Both write into
213
+ * `<dataDir>/databases/`, a directory that exists because the Electron shell
214
+ * created it and passed `ADMINIUM_DATA_DIR` (§2.2 step 5). On Docker that path
215
+ * is inside a container, so a database created there is one the user can
216
+ * neither find with a file dialog, back up, nor delete — a button that appears
217
+ * to work and produces something unreachable.
218
+ *
219
+ * The demo carries a second condition, and it is load-bearing in the same way
220
+ * the boot token is for §5: with no seed script there is nothing to run, so the
221
+ * route would be an unreachable surface and the wizard hides the card instead
222
+ * of offering a demo it cannot seed.
223
+ */
224
+ const desktopLocalDb = env.ADMINIUM_RUNTIME === 'desktop';
225
+ // `demoSeedScriptPath` rather than the condition inline: `/system/info`'s
226
+ // `desktopDemo` flag reports whether this route exists, and the wizard gates
227
+ // its fourth source card on that answer. Two spellings of one condition is a
228
+ // card that offers a 404 (or hides a working one) the day they diverge.
229
+ const seedScriptPath = demoSeedScriptPath(env);
230
+ const desktopDemo = seedScriptPath === null ? null : { seedScriptPath };
231
+ /**
232
+ * §9's backup, behind gate 1 of `routes/desktop/index.ts` (the route's own
233
+ * header documents gates 2 and 3 — loopback peer, then `settings:manage`).
234
+ *
235
+ * One condition, like the LAN panel and for the same reason: every desktop
236
+ * boot has data to back up. What makes it desktop-only is `<dataDir>/backups`
237
+ * and `config.json` — self-host's answer to "back up my instance" is
238
+ * `adminium export-zip` plus whatever backs up its Postgres.
239
+ *
240
+ * `metaPath` is derived rather than passed because §2.1 makes it an invariant:
241
+ * the meta store is ALWAYS local SQLite on desktop (`ADMINIUM_META_DSN=
242
+ * sqlite:<dataDir>/meta.db`, §2.2 step 5), even when the source DB is a remote
243
+ * Postgres. `metaStore.url` is therefore the one true answer to "which file is
244
+ * the live meta store", and asking the caller to repeat it would let the two
245
+ * drift — the backup would snapshot a file the server is not using.
246
+ */
247
+ const desktopBackup = env.ADMINIUM_RUNTIME === 'desktop';
248
+ /**
249
+ * §12's capability grant table, behind gate 1 of
250
+ * `routes/desktop-capabilities/index.ts`. One condition, like its siblings:
251
+ * every desktop boot can install an app that declares a capability, so the
252
+ * consent/revoke door and the grant reader the `CapabilityHost` calls both
253
+ * need to exist. Off-desktop there is no host and no hardware, so §12's answer
254
+ * there is "every capability `unavailable`" — a claim the SPA makes, not a
255
+ * grant table.
256
+ */
257
+ const desktopCapabilities = env.ADMINIUM_RUNTIME === 'desktop';
258
+ await app.register(async (api) => {
259
+ if (desktopSession !== null) {
260
+ await api.register(desktopSessionRoutes({ meta, bootToken: desktopSession.bootToken }));
261
+ }
262
+ // AFTER `rbacPlugin` above, which is what `app.rbac.require` needs to
263
+ // exist at registration time — the reason this lives here and not in
264
+ // `buildServer`'s route block, where `settingsManage` could not be
265
+ // enforced at all.
266
+ if (desktopLan) {
267
+ await api.register(desktopLanRoutes({ meta, env }));
268
+ }
269
+ // Also after `rbacPlugin`: both guard on `system:connections:manage`.
270
+ if (desktopLocalDb) {
271
+ await api.register(desktopLocalDbRoutes({ manager, dataDir: env.ADMINIUM_DATA_DIR }));
272
+ }
273
+ if (desktopDemo !== null) {
274
+ await api.register(desktopDemoRoutes({
275
+ manager,
276
+ dataDir: env.ADMINIUM_DATA_DIR,
277
+ seedScriptPath: desktopDemo.seedScriptPath,
278
+ }));
279
+ }
280
+ // Also after `rbacPlugin`: guards on `system:settings:manage`.
281
+ if (desktopBackup) {
282
+ await api.register(desktopRoutes({
283
+ meta,
284
+ crypto: dsnCryptoFromSecret(env.ADMINIUM_SECRET),
285
+ dataDir: env.ADMINIUM_DATA_DIR,
286
+ metaPath: sqlitePathFromUrl(opts.metaStore.url),
287
+ }));
288
+ }
289
+ // Also after `rbacPlugin`: all three verbs guard on `system:settings:manage`.
290
+ if (desktopCapabilities) {
291
+ await api.register(desktopCapabilityRoutes({ meta }));
292
+ }
293
+ await api.register(connectionsRoutes({ manager, meta }));
294
+ await api.register(schemaRoutes({ manager, meta }));
295
+ await api.register(dataRoutes({ manager, meta, undoStore }));
296
+ // M7 data-io + reports/notifications (T5/T6): exports and imports share
297
+ // the jobs pipeline wired above; scheduled reports ride the same registry
298
+ // via the poll schedule below.
299
+ const enqueueDataIo = (input) => jobs.enqueue(input);
300
+ await api.register(exportsRoutes({ meta, manager, storage, enqueue: enqueueDataIo }));
301
+ await api.register(importsRoutes({ meta, manager, storage, enqueue: enqueueDataIo }));
302
+ await api.register(notificationsRoutes({ meta, hub: jobs.hub }));
303
+ await api.register(scheduledReportsRoutes({ meta }));
304
+ await api.register(emailTemplatesRoutes({ meta }));
305
+ await api.register(generateRoutes({ manager, meta }));
306
+ await api.register(schemaImportRoutes());
307
+ await api.register(pagesRoutes({ meta }));
308
+ // ⌘K global search (08 §2.9, M4-T06): pages by title + records via the
309
+ // crud quick-search path, RBAC/PII-filtered like the data routes.
310
+ await api.register(searchRoutes({ manager, meta }));
311
+ await api.register(widgetDataRoutes({ manager, meta }));
312
+ await api.register(settingsRoutes({ meta }));
313
+ await api.register(viewsRoutes({ meta }));
314
+ await api.register(meViewsRoutes({ meta }));
315
+ await api.register(onboardingRoutes({ meta }));
316
+ await api.register(rolesRoutes);
317
+ await api.register(apiKeysRoutes);
318
+ await api.register(auditRoutes);
319
+ if (llm !== null && allowed !== null) {
320
+ await api.register(llmRoutes({
321
+ meta,
322
+ runService,
323
+ applyService,
324
+ keyCrypto: llm.keyCrypto,
325
+ allowed,
326
+ ...(opts.collectStats === undefined ? {} : { collectStats: opts.collectStats }),
327
+ }));
328
+ }
329
+ }, { prefix: API_PREFIX });
330
+ // Telemetry (M10-T04). OPT-IN: `report()` reads `telemetry.enabled` FIRST and
331
+ // returns before building a payload, so an instance that has not consented
332
+ // makes zero network calls — the property `telemetry-network-isolation.test.ts`
333
+ // pins. Registering the schedule is not consent; the schedule ticking on an
334
+ // opted-out instance is a no-op read of one settings row.
335
+ if (opts.telemetry !== false) {
336
+ const telemetry = createTelemetryService({
337
+ meta,
338
+ version: APP_VERSION,
339
+ envOverride: env.ADMINIUM_TELEMETRY,
340
+ });
341
+ jobs.scheduler.registerSchedule(TELEMETRY_SCHEDULE_NAME, TELEMETRY_CRON, async () => {
342
+ await telemetry.report();
343
+ }, { jitterMs: TELEMETRY_JITTER_MS });
344
+ }
345
+ // Scheduled-reports poll (M7 T6): every minute, enqueue a `report-run` job
346
+ // per due report. `enqueueDueReports` dedupes per occurrence
347
+ // (`report-run:<id>:<nextRunAt>`), so overlapping ticks collapse; the
348
+ // scheduler's own no-overlap guard rides on top.
349
+ jobs.scheduler.registerSchedule(SCHEDULED_REPORTS_POLL_NAME, SCHEDULED_REPORTS_POLL_CRON, async () => {
350
+ await enqueueDueReports(meta, (input) => jobs.enqueue(input));
351
+ });
352
+ // Export retention (M7-T07): daily `ready` → `expired` sweep past
353
+ // `expires_at`, then byte GC — expired snapshots (potentially unmasked PII)
354
+ // must not persist on disk past the promised retention window. `remove` is
355
+ // idempotent and the worklist re-derives from rows, so a crash mid-pass
356
+ // self-heals on the next tick.
357
+ jobs.scheduler.registerSchedule(EXPORTS_RETENTION_SCHEDULE_NAME, EXPORTS_RETENTION_CRON, async () => {
358
+ const repo = exportsRepo(meta);
359
+ await repo.expireDue();
360
+ const files = filesRepo(meta);
361
+ for (const artifact of await repo.listExpiredArtifacts()) {
362
+ await files.markDeleted(artifact.fileId);
363
+ await storage.remove(artifact.storageKey);
364
+ }
365
+ });
366
+ // The manager owns live source-DB pools; the server owns the manager's
367
+ // lifetime once it is listening (the CLI hands it over at `startServer`).
368
+ app.addHook('onClose', async () => {
369
+ await manager.disposeAll();
370
+ });
371
+ return {
372
+ app,
373
+ jobs,
374
+ llmEnabled: llm !== null,
375
+ desktopSessionEnabled: desktopSession !== null,
376
+ desktopLanEnabled: desktopLan,
377
+ desktopLocalDbEnabled: desktopLocalDb,
378
+ desktopDemoEnabled: desktopDemo !== null,
379
+ desktopBackupEnabled: desktopBackup,
380
+ desktopCapabilitiesEnabled: desktopCapabilities,
381
+ };
382
+ }
383
+ //# sourceMappingURL=compose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../src/compose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,sBAAsB,EAA4B,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AAE5F,OAAO,EAAE,WAAW,EAAuB,MAAM,UAAU,CAAC;AAE5D,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAwB,MAAM,oBAAoB,CAAC;AACnF,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAwB,MAAM,iBAAiB,CAAC;AAE1E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,gBAAgB,CAAC;AACxD,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;AAC1C,8EAA8E;AAC9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,yBAAyB,CAAC;AACzE,MAAM,CAAC,MAAM,sBAAsB,GAAG,YAAY,CAAC;AA0EnD;;;;;;;;;GASG;AACH,KAAK,UAAU,uBAAuB,CAAC,IAA6B,EAAE,KAAc;IAClF,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACjF,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAA0B;IAC5D,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAEjC,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC;QAC5B,GAAG;QACH,MAAM,EAAE,IAAI;QACZ,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QACzE,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;KAC9D,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,4EAA4E;IAC5E,sDAAsD;IACtD,MAAM,GAAG,GACP,OAAO,KAAK,IAAI;QACd,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,CAAC,GAAG,EAAE;YACJ,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,CAAC,eAAe,EAAE;gBAC5D,SAAS;gBACT,aAAa;gBACb,aAAa;aACd,CAAC,CAAC;YACH,OAAO;gBACL,SAAS;gBACT,OAAO,EAAE,sBAAsB,CAAC;oBAC9B,IAAI;oBACJ,SAAS;oBACT,gBAAgB,EAAE,OAAO,CAAC,SAAS;oBACnC,cAAc,EAAE,OAAO,CAAC,OAAO;iBAChC,CAAC;aACH,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;IAEX,2EAA2E;IAC3E,gEAAgE;IAChE,MAAM,OAAO,GAAG,iBAAiB,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAEtE,MAAM,IAAI,GAAG,MAAM,uBAAuB,CAAC,GAAG,EAAE;QAC9C,IAAI;QACJ,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI;QACtC,4EAA4E;QAC5E,0EAA0E;QAC1E,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;QAC5B,6EAA6E;QAC7E,2EAA2E;QAC3E,2EAA2E;QAC3E,+EAA+E;QAC/E,6EAA6E;QAC7E,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAC9B,mBAAmB;QACjB,+DAA+D;QAC/D,wEAAwE;QACxE,MAAM,oBAAoB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAC/E,UAAU,CACX;QACH,GAAG,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;KAC3D,CAAC,CAAC;IAEH,0DAA0D;IAC1D,qEAAqE;IACrE,wEAAwE;IACxE,0CAA0C;IAC1C,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAExD,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;IAElC;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,cAAc,GAClB,GAAG,CAAC,gBAAgB,KAAK,SAAS,IAAI,GAAG,CAAC,mBAAmB,KAAK,SAAS;QACzE,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,mBAAmB,EAAE;QACxC,CAAC,CAAC,IAAI,CAAC;IACX,IAAI,GAAG,CAAC,gBAAgB,KAAK,SAAS,IAAI,GAAG,CAAC,4BAA4B,KAAK,SAAS,EAAE,CAAC;QACzF,MAAM,uBAAuB,CAAC,IAAI,EAAE,GAAG,CAAC,4BAA4B,CAAC,CAAC;IACxE,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,UAAU,GAAG,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC;IAEtD;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,cAAc,GAAG,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC;IAC1D,0EAA0E;IAC1E,6EAA6E;IAC7E,6EAA6E;IAC7E,wEAAwE;IACxE,MAAM,cAAc,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;IAExE;;;;;;;;;;;;;;;OAeG;IACH,MAAM,aAAa,GAAG,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC;IAEzD;;;;;;;;OAQG;IACH,MAAM,mBAAmB,GAAG,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC;IAE/D,MAAM,GAAG,CAAC,QAAQ,CAChB,KAAK,EAAE,GAAG,EAAE,EAAE;QACZ,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YAC5B,MAAM,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC1F,CAAC;QACD,sEAAsE;QACtE,qEAAqE;QACrE,mEAAmE;QACnE,mBAAmB;QACnB,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,sEAAsE;QACtE,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,GAAG,CAAC,QAAQ,CAChB,iBAAiB,CAAC;gBAChB,OAAO;gBACP,OAAO,EAAE,GAAG,CAAC,iBAAiB;gBAC9B,cAAc,EAAE,WAAW,CAAC,cAAc;aAC3C,CAAC,CACH,CAAC;QACJ,CAAC;QACD,+DAA+D;QAC/D,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,GAAG,CAAC,QAAQ,CAChB,aAAa,CAAC;gBACZ,IAAI;gBACJ,MAAM,EAAE,mBAAmB,CAAC,GAAG,CAAC,eAAe,CAAC;gBAChD,OAAO,EAAE,GAAG,CAAC,iBAAiB;gBAC9B,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;aAChD,CAAC,CACH,CAAC;QACJ,CAAC;QACD,8EAA8E;QAC9E,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACpD,MAAM,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAC7D,wEAAwE;QACxE,0EAA0E;QAC1E,+BAA+B;QAC/B,MAAM,aAAa,GAAG,CAAC,KAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;QACtF,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;QACtF,MAAM,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACjE,MAAM,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACrD,MAAM,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACnD,MAAM,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtD,MAAM,GAAG,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACzC,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1C,uEAAuE;QACvE,kEAAkE;QAClE,MAAM,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACpD,MAAM,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACxD,MAAM,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7C,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC1C,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5C,MAAM,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/C,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAChC,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAClC,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAChC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrC,MAAM,GAAG,CAAC,QAAQ,CAChB,SAAS,CAAC;gBACR,IAAI;gBACJ,UAAU;gBACV,YAAY;gBACZ,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,OAAO;gBACP,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC;aAChF,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC,EACD,EAAE,MAAM,EAAE,UAAU,EAAE,CACvB,CAAC;IAEF,8EAA8E;IAC9E,2EAA2E;IAC3E,gFAAgF;IAChF,4EAA4E;IAC5E,0DAA0D;IAC1D,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,sBAAsB,CAAC;YACvC,IAAI;YACJ,OAAO,EAAE,WAAW;YACpB,WAAW,EAAE,GAAG,CAAC,kBAAkB;SACpC,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAC7B,uBAAuB,EACvB,cAAc,EACd,KAAK,IAAI,EAAE;YACT,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC;QAC3B,CAAC,EACD,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAClC,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,6DAA6D;IAC7D,sEAAsE;IACtE,iDAAiD;IACjD,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACnG,MAAM,iBAAiB,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,kEAAkE;IAClE,4EAA4E;IAC5E,2EAA2E;IAC3E,wEAAwE;IACxE,+BAA+B;IAC/B,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,+BAA+B,EAAE,sBAAsB,EAAE,KAAK,IAAI,EAAE;QAClG,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9B,KAAK,MAAM,QAAQ,IAAI,MAAM,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;YACzD,MAAM,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,uEAAuE;IACvE,0EAA0E;IAC1E,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,GAAG;QACH,IAAI;QACJ,UAAU,EAAE,GAAG,KAAK,IAAI;QACxB,qBAAqB,EAAE,cAAc,KAAK,IAAI;QAC9C,iBAAiB,EAAE,UAAU;QAC7B,qBAAqB,EAAE,cAAc;QACrC,kBAAkB,EAAE,WAAW,KAAK,IAAI;QACxC,oBAAoB,EAAE,aAAa;QACnC,0BAA0B,EAAE,mBAAmB;KAChD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Bootstrap file `<dataDir>/adminium.json` (01-architecture.md §7.2). The
4
+ * meta DSN cannot live in the meta store itself (chicken-and-egg), so when
5
+ * it is not provided by `ADMINIUM_META_URL` the first-run wizard persists it
6
+ * here, AES-256-GCM-encrypted with the key derived from `ADMINIUM_SECRET`.
7
+ * Environment always wins over this file.
8
+ */
9
+ export declare const BOOTSTRAP_FILENAME = "adminium.json";
10
+ export declare const bootstrapSchema: z.ZodObject<{
11
+ v: z.ZodLiteral<1>;
12
+ metaUrl: z.ZodOptional<z.ZodString>;
13
+ createdAt: z.ZodISODateTime;
14
+ instanceId: z.ZodString;
15
+ }, z.core.$strip>;
16
+ export type Bootstrap = z.infer<typeof bootstrapSchema>;
17
+ export declare class BootstrapFileError extends Error {
18
+ readonly name = "BootstrapFileError";
19
+ }
20
+ export declare function bootstrapPath(dataDir: string): string;
21
+ /**
22
+ * Reads and validates `<dataDir>/adminium.json`. Returns `null` when the
23
+ * file does not exist (first run); throws `BootstrapFileError` when it
24
+ * exists but is unreadable as a bootstrap document.
25
+ */
26
+ export declare function readBootstrap(dataDir: string): Promise<Bootstrap | null>;
27
+ /**
28
+ * Atomically writes `<dataDir>/adminium.json` with mode 0600: the document
29
+ * is written to a temp file in the same directory, then renamed over the
30
+ * target, so a crash mid-write can never leave a truncated bootstrap file.
31
+ */
32
+ export declare function writeBootstrap(dataDir: string, bootstrap: Bootstrap): Promise<void>;
33
+ //# sourceMappingURL=bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/config/bootstrap.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,eAAO,MAAM,eAAe;;;;;iBAS1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,SAAkB,IAAI,wBAAwB;CAC/C;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAyB9E;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAYzF"}
@@ -0,0 +1,81 @@
1
+ import { randomBytes } from 'node:crypto';
2
+ import { mkdir, readFile, rename, rm, writeFile } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ import { z } from 'zod';
5
+ import { ENC_TOKEN_PREFIX } from './secrets.js';
6
+ /**
7
+ * Bootstrap file `<dataDir>/adminium.json` (01-architecture.md §7.2). The
8
+ * meta DSN cannot live in the meta store itself (chicken-and-egg), so when
9
+ * it is not provided by `ADMINIUM_META_URL` the first-run wizard persists it
10
+ * here, AES-256-GCM-encrypted with the key derived from `ADMINIUM_SECRET`.
11
+ * Environment always wins over this file.
12
+ */
13
+ export const BOOTSTRAP_FILENAME = 'adminium.json';
14
+ export const bootstrapSchema = z.object({
15
+ v: z.literal(1),
16
+ /** Encrypted meta-store DSN (`enc:v1:` token); absent until the wizard sets it. */
17
+ metaUrl: z
18
+ .string()
19
+ .startsWith(ENC_TOKEN_PREFIX, `must be an encrypted "${ENC_TOKEN_PREFIX}" token`)
20
+ .optional(),
21
+ createdAt: z.iso.datetime(),
22
+ instanceId: z.string().min(1),
23
+ });
24
+ export class BootstrapFileError extends Error {
25
+ name = 'BootstrapFileError';
26
+ }
27
+ export function bootstrapPath(dataDir) {
28
+ return join(dataDir, BOOTSTRAP_FILENAME);
29
+ }
30
+ /**
31
+ * Reads and validates `<dataDir>/adminium.json`. Returns `null` when the
32
+ * file does not exist (first run); throws `BootstrapFileError` when it
33
+ * exists but is unreadable as a bootstrap document.
34
+ */
35
+ export async function readBootstrap(dataDir) {
36
+ const file = bootstrapPath(dataDir);
37
+ let text;
38
+ try {
39
+ text = await readFile(file, 'utf8');
40
+ }
41
+ catch (error) {
42
+ if (error.code === 'ENOENT')
43
+ return null;
44
+ throw error;
45
+ }
46
+ let parsed;
47
+ try {
48
+ parsed = JSON.parse(text);
49
+ }
50
+ catch {
51
+ throw new BootstrapFileError(`${file} is not valid JSON`);
52
+ }
53
+ const result = bootstrapSchema.safeParse(parsed);
54
+ if (!result.success) {
55
+ const problems = result.error.issues
56
+ .map((issue) => `${issue.path.map(String).join('.') || '(root)'}: ${issue.message}`)
57
+ .join('; ');
58
+ throw new BootstrapFileError(`${file} is not a valid bootstrap file — ${problems}`);
59
+ }
60
+ return result.data;
61
+ }
62
+ /**
63
+ * Atomically writes `<dataDir>/adminium.json` with mode 0600: the document
64
+ * is written to a temp file in the same directory, then renamed over the
65
+ * target, so a crash mid-write can never leave a truncated bootstrap file.
66
+ */
67
+ export async function writeBootstrap(dataDir, bootstrap) {
68
+ const doc = bootstrapSchema.parse(bootstrap);
69
+ await mkdir(dataDir, { recursive: true });
70
+ const target = bootstrapPath(dataDir);
71
+ const tmp = `${target}.${randomBytes(6).toString('hex')}.tmp`;
72
+ try {
73
+ await writeFile(tmp, `${JSON.stringify(doc, null, 2)}\n`, { mode: 0o600, flag: 'wx' });
74
+ await rename(tmp, target);
75
+ }
76
+ catch (error) {
77
+ await rm(tmp, { force: true });
78
+ throw error;
79
+ }
80
+ }
81
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/config/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Environment validation (01-architecture.md §7.1). `loadEnv()` is called
4
+ * first in the boot sequence; on invalid input it prints a fail-fast table
5
+ * (variable | problem | hint) to stderr and throws — it never calls
6
+ * `process.exit` so callers (CLI, tests, Electron) decide how to die.
7
+ */
8
+ export declare const LOG_LEVELS: readonly ["fatal", "error", "warn", "info", "debug", "trace"];
9
+ /**
10
+ * The DEPLOYMENT WRAPPER this process is running under (01-architecture.md §4:
11
+ * "All four deployment modes run the identical `@adminium/server` process; only
12
+ * the wrapper differs"). Only the wrapper sets it, and only `desktop` means
13
+ * anything today: 11-electron.md §5 registers `POST /api/v1/auth/desktop-session`
14
+ * ONLY under that value, so a self-host or Docker instance does not expose the
15
+ * boot-token exchange at all — it has no route to attack, not merely a guarded
16
+ * one. Everything that is not the Electron shell is `self-host` (Docker and npx
17
+ * included); `cloud` joins when 12-cloud-platform.md lands.
18
+ */
19
+ export declare const RUNTIMES: readonly ["self-host", "desktop"];
20
+ export type Runtime = (typeof RUNTIMES)[number];
21
+ /** 11-electron.md §2.2 step 4: the per-boot token is 32 random bytes, hex. */
22
+ export declare const BOOT_TOKEN_HEX_LENGTH = 64;
23
+ export declare const envSchema: z.ZodObject<{
24
+ ADMINIUM_SECRET: z.ZodString;
25
+ PORT: z.ZodPreprocess<z.ZodDefault<z.ZodCoercedNumber<unknown>>>;
26
+ HOST: z.ZodPreprocess<z.ZodDefault<z.ZodString>>;
27
+ DATABASE_URL: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
28
+ ADMINIUM_META_URL: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
29
+ ADMINIUM_DATA_DIR: z.ZodPreprocess<z.ZodDefault<z.ZodString>>;
30
+ ADMINIUM_LOG_LEVEL: z.ZodPreprocess<z.ZodDefault<z.ZodEnum<{
31
+ fatal: "fatal";
32
+ error: "error";
33
+ warn: "warn";
34
+ info: "info";
35
+ debug: "debug";
36
+ trace: "trace";
37
+ }>>>;
38
+ ADMINIUM_RUNTIME: z.ZodPreprocess<z.ZodDefault<z.ZodEnum<{
39
+ "self-host": "self-host";
40
+ desktop: "desktop";
41
+ }>>>;
42
+ ADMINIUM_BOOT_TOKEN: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
43
+ ADMINIUM_DESKTOP_SINGLE_USER: z.ZodPreprocess<z.ZodPipe<z.ZodOptional<z.ZodEnum<{
44
+ on: "on";
45
+ 0: "0";
46
+ true: "true";
47
+ 1: "1";
48
+ off: "off";
49
+ false: "false";
50
+ }>>, z.ZodTransform<boolean | undefined, "on" | "0" | "true" | "1" | "off" | "false" | undefined>>>;
51
+ ADMINIUM_DEMO_SEED_SCRIPT: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
52
+ ADMINIUM_TELEMETRY: z.ZodPreprocess<z.ZodPipe<z.ZodOptional<z.ZodEnum<{
53
+ on: "on";
54
+ 0: "0";
55
+ true: "true";
56
+ 1: "1";
57
+ off: "off";
58
+ false: "false";
59
+ }>>, z.ZodTransform<boolean | undefined, "on" | "0" | "true" | "1" | "off" | "false" | undefined>>>;
60
+ ADMINIUM_NETWORK_FEATURES: z.ZodPreprocess<z.ZodPipe<z.ZodOptional<z.ZodEnum<{
61
+ on: "on";
62
+ 0: "0";
63
+ true: "true";
64
+ 1: "1";
65
+ off: "off";
66
+ false: "false";
67
+ }>>, z.ZodTransform<boolean, "on" | "0" | "true" | "1" | "off" | "false" | undefined>>>;
68
+ ADMINIUM_TRUST_PROXY: z.ZodPreprocess<z.ZodPipe<z.ZodOptional<z.ZodEnum<{
69
+ on: "on";
70
+ 0: "0";
71
+ true: "true";
72
+ 1: "1";
73
+ off: "off";
74
+ false: "false";
75
+ }>>, z.ZodTransform<boolean, "on" | "0" | "true" | "1" | "off" | "false" | undefined>>>;
76
+ ADMINIUM_CORS_ORIGINS: z.ZodPreprocess<z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<string[] | undefined, string | undefined>>>;
77
+ }, z.core.$strip>;
78
+ export type Env = z.infer<typeof envSchema>;
79
+ export declare class EnvValidationError extends Error {
80
+ readonly name = "EnvValidationError";
81
+ readonly issues: readonly z.core.$ZodIssue[];
82
+ readonly table: string;
83
+ constructor(issues: readonly z.core.$ZodIssue[], table: string);
84
+ }
85
+ /** Renders the fail-fast `variable | problem | hint` table. */
86
+ export declare function formatEnvErrorTable(issues: readonly z.core.$ZodIssue[]): string;
87
+ export interface EnvWriter {
88
+ write(chunk: string): unknown;
89
+ }
90
+ /**
91
+ * Parses and validates the process environment. On failure, prints the
92
+ * problem table to stderr and throws `EnvValidationError`.
93
+ */
94
+ export declare function loadEnv(env?: Record<string, string | undefined>, stderr?: EnvWriter): Env;
95
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,eAAO,MAAM,UAAU,+DAAgE,CAAC;AAExF;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,mCAAoC,CAAC;AAC1D,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhD,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAQxC,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAkLpB,CAAC;AAEH,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAsB5C,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,SAAkB,IAAI,wBAAwB;IAC9C,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAC7C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,MAAM,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM;CAK/D;AAED,+DAA+D;AAC/D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,MAAM,CAY/E;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,OAAO,CACrB,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EACrD,MAAM,GAAE,SAA0B,GACjC,GAAG,CAQL"}