@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.
- package/LICENSE +661 -0
- package/README.md +94 -0
- package/dashboard/assets/DeltaPill-dxlsGh-1.js +2 -0
- package/dashboard/assets/DeltaPill-dxlsGh-1.js.map +1 -0
- package/dashboard/assets/DistributionCorrelationWidgets-ztVy_W_R.js +2 -0
- package/dashboard/assets/DistributionCorrelationWidgets-ztVy_W_R.js.map +1 -0
- package/dashboard/assets/PartWholeWidgets-BDn0i0jt.js +2 -0
- package/dashboard/assets/PartWholeWidgets-BDn0i0jt.js.map +1 -0
- package/dashboard/assets/RemapEditor-z3vRY12e.js +2 -0
- package/dashboard/assets/RemapEditor-z3vRY12e.js.map +1 -0
- package/dashboard/assets/ReviewScreen-COkLQ3T7.js +2 -0
- package/dashboard/assets/ReviewScreen-COkLQ3T7.js.map +1 -0
- package/dashboard/assets/Sparkline-Cvwo368J.js +2 -0
- package/dashboard/assets/Sparkline-Cvwo368J.js.map +1 -0
- package/dashboard/assets/WidgetMissingCard-D0bPJKIs.js +2 -0
- package/dashboard/assets/WidgetMissingCard-D0bPJKIs.js.map +1 -0
- package/dashboard/assets/arc-CPxb74pf.js +2 -0
- package/dashboard/assets/arc-CPxb74pf.js.map +1 -0
- package/dashboard/assets/bars-ranking-components-9Asn_0gR.js +2 -0
- package/dashboard/assets/bars-ranking-components-9Asn_0gR.js.map +1 -0
- package/dashboard/assets/blocks-track-components-BST-NjK2.js +2 -0
- package/dashboard/assets/blocks-track-components-BST-NjK2.js.map +1 -0
- package/dashboard/assets/calendar-track-components-RgNtGtZR.js +2 -0
- package/dashboard/assets/calendar-track-components-RgNtGtZR.js.map +1 -0
- package/dashboard/assets/chrome-track-components-ClNsentC.js +2 -0
- package/dashboard/assets/chrome-track-components-ClNsentC.js.map +1 -0
- package/dashboard/assets/common-BY1j__bD.js +2 -0
- package/dashboard/assets/common-BY1j__bD.js.map +1 -0
- package/dashboard/assets/common-BdlXKpcB.js +2 -0
- package/dashboard/assets/common-BdlXKpcB.js.map +1 -0
- package/dashboard/assets/common-BqqhgMgB.js +2 -0
- package/dashboard/assets/common-BqqhgMgB.js.map +1 -0
- package/dashboard/assets/common-BribWmIo.js +2 -0
- package/dashboard/assets/common-BribWmIo.js.map +1 -0
- package/dashboard/assets/common-Cmf0_lKV.js +2 -0
- package/dashboard/assets/common-Cmf0_lKV.js.map +1 -0
- package/dashboard/assets/common-i0r48qY9.js +2 -0
- package/dashboard/assets/common-i0r48qY9.js.map +1 -0
- package/dashboard/assets/common-x8cfkwpc.js +2 -0
- package/dashboard/assets/common-x8cfkwpc.js.map +1 -0
- package/dashboard/assets/communication-track-components-CNLZXOH_.js +2 -0
- package/dashboard/assets/communication-track-components-CNLZXOH_.js.map +1 -0
- package/dashboard/assets/components-Bp5cFm2d.js +2 -0
- package/dashboard/assets/components-Bp5cFm2d.js.map +1 -0
- package/dashboard/assets/components-C4-O3_gD.js +2 -0
- package/dashboard/assets/components-C4-O3_gD.js.map +1 -0
- package/dashboard/assets/domain-ops-track-components-BPa41AU7.js +2 -0
- package/dashboard/assets/domain-ops-track-components-BPa41AU7.js.map +1 -0
- package/dashboard/assets/domain-track-components-CQ1i1X1t.js +2 -0
- package/dashboard/assets/domain-track-components-CQ1i1X1t.js.map +1 -0
- package/dashboard/assets/errors-BHUWiAQ3.js +2 -0
- package/dashboard/assets/errors-BHUWiAQ3.js.map +1 -0
- package/dashboard/assets/errors-BbyKweDG.js +2 -0
- package/dashboard/assets/errors-BbyKweDG.js.map +1 -0
- package/dashboard/assets/errors-CMQ6JC31.js +2 -0
- package/dashboard/assets/errors-CMQ6JC31.js.map +1 -0
- package/dashboard/assets/errors-D3nVgTmf.js +2 -0
- package/dashboard/assets/errors-D3nVgTmf.js.map +1 -0
- package/dashboard/assets/errors-IqJSoANC.js +2 -0
- package/dashboard/assets/errors-IqJSoANC.js.map +1 -0
- package/dashboard/assets/errors-gmIkO9F6.js +2 -0
- package/dashboard/assets/errors-gmIkO9F6.js.map +1 -0
- package/dashboard/assets/errors-vFk058Vh.js +2 -0
- package/dashboard/assets/errors-vFk058Vh.js.map +1 -0
- package/dashboard/assets/feeds-track-f-components-Cl_8SkGs.js +2 -0
- package/dashboard/assets/feeds-track-f-components-Cl_8SkGs.js.map +1 -0
- package/dashboard/assets/format-Lx4cQ8k-.js +2 -0
- package/dashboard/assets/format-Lx4cQ8k-.js.map +1 -0
- package/dashboard/assets/forms-track-components-Bc2Hoxdh.js +2 -0
- package/dashboard/assets/forms-track-components-Bc2Hoxdh.js.map +1 -0
- package/dashboard/assets/generated-1EfWhCMA.js +2 -0
- package/dashboard/assets/generated-1EfWhCMA.js.map +1 -0
- package/dashboard/assets/generated-BB3ZMxvx.js +2 -0
- package/dashboard/assets/generated-BB3ZMxvx.js.map +1 -0
- package/dashboard/assets/generated-C0JVNBRX.js +2 -0
- package/dashboard/assets/generated-C0JVNBRX.js.map +1 -0
- package/dashboard/assets/generated-C1W48_-3.js +2 -0
- package/dashboard/assets/generated-C1W48_-3.js.map +1 -0
- package/dashboard/assets/generated-CluiB_xY.js +2 -0
- package/dashboard/assets/generated-CluiB_xY.js.map +1 -0
- package/dashboard/assets/generated-DDGtlf-4.js +2 -0
- package/dashboard/assets/generated-DDGtlf-4.js.map +1 -0
- package/dashboard/assets/generated-DPCHvNto.js +2 -0
- package/dashboard/assets/generated-DPCHvNto.js.map +1 -0
- package/dashboard/assets/geo-track-components-Ct4-MSRw.js +3 -0
- package/dashboard/assets/geo-track-components-Ct4-MSRw.js.map +1 -0
- package/dashboard/assets/ibm-plex-sans-arabic-arabic-400-normal-CyU-ddYS.woff2 +0 -0
- package/dashboard/assets/ibm-plex-sans-arabic-arabic-500-normal-C4MQITzh.woff2 +0 -0
- package/dashboard/assets/ibm-plex-sans-arabic-arabic-600-normal-0pRdybE_.woff2 +0 -0
- package/dashboard/assets/ibm-plex-sans-arabic-arabic-700-normal-DrtBj6UE.woff2 +0 -0
- package/dashboard/assets/index-DPi4cduu.css +1 -0
- package/dashboard/assets/index-PB1II0WV.js +137 -0
- package/dashboard/assets/index-PB1II0WV.js.map +1 -0
- package/dashboard/assets/jetbrains-mono-latin-ext-wght-italic-BrDczivE.woff2 +0 -0
- package/dashboard/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
- package/dashboard/assets/jetbrains-mono-latin-wght-italic-B2M6KQje.woff2 +0 -0
- package/dashboard/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
- package/dashboard/assets/leaflet-CIGW-MKW.css +1 -0
- package/dashboard/assets/leaflet-src-D12shr04.js +2 -0
- package/dashboard/assets/leaflet-src-D12shr04.js.map +1 -0
- package/dashboard/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2 +0 -0
- package/dashboard/assets/manrope-latin-wght-normal-DHIcAJRg.woff2 +0 -0
- package/dashboard/assets/media-track-components-CpeII-tT.js +2 -0
- package/dashboard/assets/media-track-components-CpeII-tT.js.map +1 -0
- package/dashboard/assets/scales-e0tkfEy1.js +2 -0
- package/dashboard/assets/scales-e0tkfEy1.js.map +1 -0
- package/dashboard/assets/sparkline-2JUGDrMW.js +2 -0
- package/dashboard/assets/sparkline-2JUGDrMW.js.map +1 -0
- package/dashboard/assets/stats-BNgXz5BD.js +2 -0
- package/dashboard/assets/stats-BNgXz5BD.js.map +1 -0
- package/dashboard/assets/studio-B7hMOwAF.js +2 -0
- package/dashboard/assets/studio-B7hMOwAF.js.map +1 -0
- package/dashboard/assets/studio-BN_9xHY3.js +2 -0
- package/dashboard/assets/studio-BN_9xHY3.js.map +1 -0
- package/dashboard/assets/studio-Cn2MObe8.js +2 -0
- package/dashboard/assets/studio-Cn2MObe8.js.map +1 -0
- package/dashboard/assets/studio-DZEZCCkw.js +2 -0
- package/dashboard/assets/studio-DZEZCCkw.js.map +1 -0
- package/dashboard/assets/studio-DzatTvLl.js +2 -0
- package/dashboard/assets/studio-DzatTvLl.js.map +1 -0
- package/dashboard/assets/studio-cBlD8x90.js +2 -0
- package/dashboard/assets/studio-cBlD8x90.js.map +1 -0
- package/dashboard/assets/studio-cglZPbJK.js +2 -0
- package/dashboard/assets/studio-cglZPbJK.js.map +1 -0
- package/dashboard/assets/system-track-components-GTYYpnfB.js +2 -0
- package/dashboard/assets/system-track-components-GTYYpnfB.js.map +1 -0
- package/dashboard/assets/tables-tail-components-DiA5GeHB.js +2 -0
- package/dashboard/assets/tables-tail-components-DiA5GeHB.js.map +1 -0
- package/dashboard/assets/tables-track-f-components-CVNPd7rq.js +2 -0
- package/dashboard/assets/tables-track-f-components-CVNPd7rq.js.map +1 -0
- package/dashboard/assets/time-flow-components-nKsaryry.js +2 -0
- package/dashboard/assets/time-flow-components-nKsaryry.js.map +1 -0
- package/dashboard/assets/ui-B-kZetor.js +2 -0
- package/dashboard/assets/ui-B-kZetor.js.map +1 -0
- package/dashboard/assets/ui-BEStJ5Pw.js +2 -0
- package/dashboard/assets/ui-BEStJ5Pw.js.map +1 -0
- package/dashboard/assets/ui-BS5_eDN4.js +2 -0
- package/dashboard/assets/ui-BS5_eDN4.js.map +1 -0
- package/dashboard/assets/ui-BZ0EyxRH.js +2 -0
- package/dashboard/assets/ui-BZ0EyxRH.js.map +1 -0
- package/dashboard/assets/ui-BloJDdt6.js +2 -0
- package/dashboard/assets/ui-BloJDdt6.js.map +1 -0
- package/dashboard/assets/ui-CpdrplJH.js +2 -0
- package/dashboard/assets/ui-CpdrplJH.js.map +1 -0
- package/dashboard/assets/ui-YJfT644k.js +2 -0
- package/dashboard/assets/ui-YJfT644k.js.map +1 -0
- package/dashboard/assets/widgets-uDqZWw4A.js +2 -0
- package/dashboard/assets/widgets-uDqZWw4A.js.map +1 -0
- package/dashboard/index.html +41 -0
- package/dist/app.d.ts +48 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +250 -0
- package/dist/app.js.map +1 -0
- package/dist/auth/audit.d.ts +22 -0
- package/dist/auth/audit.d.ts.map +1 -0
- package/dist/auth/audit.js +17 -0
- package/dist/auth/audit.js.map +1 -0
- package/dist/auth/desktop-session.d.ts +53 -0
- package/dist/auth/desktop-session.d.ts.map +1 -0
- package/dist/auth/desktop-session.js +111 -0
- package/dist/auth/desktop-session.js.map +1 -0
- package/dist/auth/passwords.d.ts +17 -0
- package/dist/auth/passwords.d.ts.map +1 -0
- package/dist/auth/passwords.js +40 -0
- package/dist/auth/passwords.js.map +1 -0
- package/dist/auth/sessions.d.ts +77 -0
- package/dist/auth/sessions.d.ts.map +1 -0
- package/dist/auth/sessions.js +137 -0
- package/dist/auth/sessions.js.map +1 -0
- package/dist/auth/totp.d.ts +30 -0
- package/dist/auth/totp.d.ts.map +1 -0
- package/dist/auth/totp.js +97 -0
- package/dist/auth/totp.js.map +1 -0
- package/dist/backup/backup-service.d.ts +157 -0
- package/dist/backup/backup-service.d.ts.map +1 -0
- package/dist/backup/backup-service.js +354 -0
- package/dist/backup/backup-service.js.map +1 -0
- package/dist/backup/format.d.ts +300 -0
- package/dist/backup/format.d.ts.map +1 -0
- package/dist/backup/format.js +304 -0
- package/dist/backup/format.js.map +1 -0
- package/dist/backup/notify.d.ts +55 -0
- package/dist/backup/notify.d.ts.map +1 -0
- package/dist/backup/notify.js +60 -0
- package/dist/backup/notify.js.map +1 -0
- package/dist/backup/snapshot.d.ts +78 -0
- package/dist/backup/snapshot.d.ts.map +1 -0
- package/dist/backup/snapshot.js +142 -0
- package/dist/backup/snapshot.js.map +1 -0
- package/dist/capabilities/catalog.d.ts +33 -0
- package/dist/capabilities/catalog.d.ts.map +1 -0
- package/dist/capabilities/catalog.js +32 -0
- package/dist/capabilities/catalog.js.map +1 -0
- package/dist/capabilities/grants.d.ts +44 -0
- package/dist/capabilities/grants.d.ts.map +1 -0
- package/dist/capabilities/grants.js +65 -0
- package/dist/capabilities/grants.js.map +1 -0
- package/dist/cli/allowlist.d.ts +46 -0
- package/dist/cli/allowlist.d.ts.map +1 -0
- package/dist/cli/allowlist.js +99 -0
- package/dist/cli/allowlist.js.map +1 -0
- package/dist/cli/args.d.ts +63 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +92 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/command.d.ts +32 -0
- package/dist/cli/command.d.ts.map +1 -0
- package/dist/cli/command.js +64 -0
- package/dist/cli/command.js.map +1 -0
- package/dist/cli/commands/apply-llm-response.d.ts +32 -0
- package/dist/cli/commands/apply-llm-response.d.ts.map +1 -0
- package/dist/cli/commands/apply-llm-response.js +209 -0
- package/dist/cli/commands/apply-llm-response.js.map +1 -0
- package/dist/cli/commands/export-zip.d.ts +17 -0
- package/dist/cli/commands/export-zip.d.ts.map +1 -0
- package/dist/cli/commands/export-zip.js +111 -0
- package/dist/cli/commands/export-zip.js.map +1 -0
- package/dist/cli/commands/generate-prompt.d.ts +29 -0
- package/dist/cli/commands/generate-prompt.d.ts.map +1 -0
- package/dist/cli/commands/generate-prompt.js +154 -0
- package/dist/cli/commands/generate-prompt.js.map +1 -0
- package/dist/cli/commands/import-zip.d.ts +13 -0
- package/dist/cli/commands/import-zip.d.ts.map +1 -0
- package/dist/cli/commands/import-zip.js +95 -0
- package/dist/cli/commands/import-zip.js.map +1 -0
- package/dist/cli/commands/init.d.ts +47 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +372 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/introspect.d.ts +11 -0
- package/dist/cli/commands/introspect.d.ts.map +1 -0
- package/dist/cli/commands/introspect.js +100 -0
- package/dist/cli/commands/introspect.js.map +1 -0
- package/dist/cli/commands/migrate.d.ts +11 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -0
- package/dist/cli/commands/migrate.js +80 -0
- package/dist/cli/commands/migrate.js.map +1 -0
- package/dist/cli/commands/start.d.ts +22 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +101 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/exit.d.ts +37 -0
- package/dist/cli/exit.d.ts.map +1 -0
- package/dist/cli/exit.js +39 -0
- package/dist/cli/exit.js.map +1 -0
- package/dist/cli/index.d.ts +10 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +17 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/io.d.ts +49 -0
- package/dist/cli/io.d.ts.map +1 -0
- package/dist/cli/io.js +77 -0
- package/dist/cli/io.js.map +1 -0
- package/dist/cli/run.d.ts +35 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +139 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/runtime.d.ts +116 -0
- package/dist/cli/runtime.d.ts.map +1 -0
- package/dist/cli/runtime.js +181 -0
- package/dist/cli/runtime.js.map +1 -0
- package/dist/cli/static-root.d.ts +42 -0
- package/dist/cli/static-root.d.ts.map +1 -0
- package/dist/cli/static-root.js +58 -0
- package/dist/cli/static-root.js.map +1 -0
- package/dist/compose.d.ts +135 -0
- package/dist/compose.d.ts.map +1 -0
- package/dist/compose.js +383 -0
- package/dist/compose.js.map +1 -0
- package/dist/config/bootstrap.d.ts +33 -0
- package/dist/config/bootstrap.d.ts.map +1 -0
- package/dist/config/bootstrap.js +81 -0
- package/dist/config/bootstrap.js.map +1 -0
- package/dist/config/env.d.ts +95 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +236 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/secrets.d.ts +24 -0
- package/dist/config/secrets.d.ts.map +1 -0
- package/dist/config/secrets.js +74 -0
- package/dist/config/secrets.js.map +1 -0
- package/dist/connections/crypto.d.ts +9 -0
- package/dist/connections/crypto.d.ts.map +1 -0
- package/dist/connections/crypto.js +16 -0
- package/dist/connections/crypto.js.map +1 -0
- package/dist/connections/dsn.d.ts +42 -0
- package/dist/connections/dsn.d.ts.map +1 -0
- package/dist/connections/dsn.js +131 -0
- package/dist/connections/dsn.js.map +1 -0
- package/dist/connections/effective-schema.d.ts +65 -0
- package/dist/connections/effective-schema.d.ts.map +1 -0
- package/dist/connections/effective-schema.js +249 -0
- package/dist/connections/effective-schema.js.map +1 -0
- package/dist/connections/introspect.d.ts +52 -0
- package/dist/connections/introspect.d.ts.map +1 -0
- package/dist/connections/introspect.js +111 -0
- package/dist/connections/introspect.js.map +1 -0
- package/dist/connections/manager.d.ts +97 -0
- package/dist/connections/manager.d.ts.map +1 -0
- package/dist/connections/manager.js +224 -0
- package/dist/connections/manager.js.map +1 -0
- package/dist/connections/register-adapters.d.ts +42 -0
- package/dist/connections/register-adapters.d.ts.map +1 -0
- package/dist/connections/register-adapters.js +92 -0
- package/dist/connections/register-adapters.js.map +1 -0
- package/dist/crud/filters.d.ts +57 -0
- package/dist/crud/filters.d.ts.map +1 -0
- package/dist/crud/filters.js +177 -0
- package/dist/crud/filters.js.map +1 -0
- package/dist/crud/identifiers.d.ts +58 -0
- package/dist/crud/identifiers.d.ts.map +1 -0
- package/dist/crud/identifiers.js +99 -0
- package/dist/crud/identifiers.js.map +1 -0
- package/dist/crud/list.d.ts +51 -0
- package/dist/crud/list.d.ts.map +1 -0
- package/dist/crud/list.js +126 -0
- package/dist/crud/list.js.map +1 -0
- package/dist/crud/mask.d.ts +23 -0
- package/dist/crud/mask.d.ts.map +1 -0
- package/dist/crud/mask.js +41 -0
- package/dist/crud/mask.js.map +1 -0
- package/dist/crud/records.d.ts +33 -0
- package/dist/crud/records.d.ts.map +1 -0
- package/dist/crud/records.js +126 -0
- package/dist/crud/records.js.map +1 -0
- package/dist/crud/undo.d.ts +55 -0
- package/dist/crud/undo.d.ts.map +1 -0
- package/dist/crud/undo.js +74 -0
- package/dist/crud/undo.js.map +1 -0
- package/dist/data-io/coerce.d.ts +28 -0
- package/dist/data-io/coerce.d.ts.map +1 -0
- package/dist/data-io/coerce.js +123 -0
- package/dist/data-io/coerce.js.map +1 -0
- package/dist/data-io/csv.d.ts +38 -0
- package/dist/data-io/csv.d.ts.map +1 -0
- package/dist/data-io/csv.js +138 -0
- package/dist/data-io/csv.js.map +1 -0
- package/dist/data-io/snapshot-view.d.ts +10 -0
- package/dist/data-io/snapshot-view.d.ts.map +1 -0
- package/dist/data-io/snapshot-view.js +19 -0
- package/dist/data-io/snapshot-view.js.map +1 -0
- package/dist/desktop/demo-seed.d.ts +23 -0
- package/dist/desktop/demo-seed.d.ts.map +1 -0
- package/dist/desktop/demo-seed.js +28 -0
- package/dist/desktop/demo-seed.js.map +1 -0
- package/dist/desktop/lan-share.d.ts +94 -0
- package/dist/desktop/lan-share.d.ts.map +1 -0
- package/dist/desktop/lan-share.js +150 -0
- package/dist/desktop/lan-share.js.map +1 -0
- package/dist/errors.d.ts +72 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +82 -0
- package/dist/errors.js.map +1 -0
- package/dist/export/bundle.d.ts +235 -0
- package/dist/export/bundle.d.ts.map +1 -0
- package/dist/export/bundle.js +172 -0
- package/dist/export/bundle.js.map +1 -0
- package/dist/export/import-service.d.ts +99 -0
- package/dist/export/import-service.d.ts.map +1 -0
- package/dist/export/import-service.js +515 -0
- package/dist/export/import-service.js.map +1 -0
- package/dist/export/readme.d.ts +25 -0
- package/dist/export/readme.d.ts.map +1 -0
- package/dist/export/readme.js +154 -0
- package/dist/export/readme.js.map +1 -0
- package/dist/export/redaction.d.ts +118 -0
- package/dist/export/redaction.d.ts.map +1 -0
- package/dist/export/redaction.js +233 -0
- package/dist/export/redaction.js.map +1 -0
- package/dist/export/zip-service.d.ts +66 -0
- package/dist/export/zip-service.d.ts.map +1 -0
- package/dist/export/zip-service.js +306 -0
- package/dist/export/zip-service.js.map +1 -0
- package/dist/files/storage.d.ts +50 -0
- package/dist/files/storage.d.ts.map +1 -0
- package/dist/files/storage.js +100 -0
- package/dist/files/storage.js.map +1 -0
- package/dist/generate/materialize-llm.d.ts +45 -0
- package/dist/generate/materialize-llm.d.ts.map +1 -0
- package/dist/generate/materialize-llm.js +167 -0
- package/dist/generate/materialize-llm.js.map +1 -0
- package/dist/generate/run.d.ts +48 -0
- package/dist/generate/run.d.ts.map +1 -0
- package/dist/generate/run.js +123 -0
- package/dist/generate/run.js.map +1 -0
- package/dist/index.d.ts +89 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +116 -0
- package/dist/index.js.map +1 -0
- package/dist/jobs/export-run.d.ts +38 -0
- package/dist/jobs/export-run.d.ts.map +1 -0
- package/dist/jobs/export-run.js +172 -0
- package/dist/jobs/export-run.js.map +1 -0
- package/dist/jobs/import-run.d.ts +43 -0
- package/dist/jobs/import-run.d.ts.map +1 -0
- package/dist/jobs/import-run.js +290 -0
- package/dist/jobs/import-run.js.map +1 -0
- package/dist/jobs/llm-run.d.ts +73 -0
- package/dist/jobs/llm-run.d.ts.map +1 -0
- package/dist/jobs/llm-run.js +225 -0
- package/dist/jobs/llm-run.js.map +1 -0
- package/dist/jobs/register.d.ts +90 -0
- package/dist/jobs/register.d.ts.map +1 -0
- package/dist/jobs/register.js +121 -0
- package/dist/jobs/register.js.map +1 -0
- package/dist/jobs/registry.d.ts +74 -0
- package/dist/jobs/registry.d.ts.map +1 -0
- package/dist/jobs/registry.js +78 -0
- package/dist/jobs/registry.js.map +1 -0
- package/dist/jobs/report-run.d.ts +64 -0
- package/dist/jobs/report-run.d.ts.map +1 -0
- package/dist/jobs/report-run.js +221 -0
- package/dist/jobs/report-run.js.map +1 -0
- package/dist/jobs/scheduler.d.ts +72 -0
- package/dist/jobs/scheduler.d.ts.map +1 -0
- package/dist/jobs/scheduler.js +121 -0
- package/dist/jobs/scheduler.js.map +1 -0
- package/dist/jobs/worker.d.ts +110 -0
- package/dist/jobs/worker.d.ts.map +1 -0
- package/dist/jobs/worker.js +282 -0
- package/dist/jobs/worker.js.map +1 -0
- package/dist/llm/apply-service.d.ts +150 -0
- package/dist/llm/apply-service.d.ts.map +1 -0
- package/dist/llm/apply-service.js +463 -0
- package/dist/llm/apply-service.js.map +1 -0
- package/dist/llm/apply-undo-store.d.ts +50 -0
- package/dist/llm/apply-undo-store.d.ts.map +1 -0
- package/dist/llm/apply-undo-store.js +60 -0
- package/dist/llm/apply-undo-store.js.map +1 -0
- package/dist/llm/direct-runner.d.ts +146 -0
- package/dist/llm/direct-runner.d.ts.map +1 -0
- package/dist/llm/direct-runner.js +204 -0
- package/dist/llm/direct-runner.js.map +1 -0
- package/dist/llm/prompt-service.d.ts +90 -0
- package/dist/llm/prompt-service.d.ts.map +1 -0
- package/dist/llm/prompt-service.js +93 -0
- package/dist/llm/prompt-service.js.map +1 -0
- package/dist/llm/provider-resolver.d.ts +25 -0
- package/dist/llm/provider-resolver.d.ts.map +1 -0
- package/dist/llm/provider-resolver.js +81 -0
- package/dist/llm/provider-resolver.js.map +1 -0
- package/dist/llm/run-service.d.ts +215 -0
- package/dist/llm/run-service.d.ts.map +1 -0
- package/dist/llm/run-service.js +343 -0
- package/dist/llm/run-service.js.map +1 -0
- package/dist/llm/stats-collector.d.ts +40 -0
- package/dist/llm/stats-collector.d.ts.map +1 -0
- package/dist/llm/stats-collector.js +74 -0
- package/dist/llm/stats-collector.js.map +1 -0
- package/dist/log-scrub.d.ts +58 -0
- package/dist/log-scrub.d.ts.map +1 -0
- package/dist/log-scrub.js +103 -0
- package/dist/log-scrub.js.map +1 -0
- package/dist/meta/store.d.ts +96 -0
- package/dist/meta/store.d.ts.map +1 -0
- package/dist/meta/store.js +192 -0
- package/dist/meta/store.js.map +1 -0
- package/dist/notifications/notify.d.ts +43 -0
- package/dist/notifications/notify.d.ts.map +1 -0
- package/dist/notifications/notify.js +42 -0
- package/dist/notifications/notify.js.map +1 -0
- package/dist/plugins/auth.d.ts +42 -0
- package/dist/plugins/auth.d.ts.map +1 -0
- package/dist/plugins/auth.js +84 -0
- package/dist/plugins/auth.js.map +1 -0
- package/dist/plugins/core.d.ts +48 -0
- package/dist/plugins/core.d.ts.map +1 -0
- package/dist/plugins/core.js +248 -0
- package/dist/plugins/core.js.map +1 -0
- package/dist/plugins/rbac.d.ts +54 -0
- package/dist/plugins/rbac.d.ts.map +1 -0
- package/dist/plugins/rbac.js +103 -0
- package/dist/plugins/rbac.js.map +1 -0
- package/dist/plugins/static.d.ts +12 -0
- package/dist/plugins/static.d.ts.map +1 -0
- package/dist/plugins/static.js +36 -0
- package/dist/plugins/static.js.map +1 -0
- package/dist/rbac/api-keys.d.ts +30 -0
- package/dist/rbac/api-keys.d.ts.map +1 -0
- package/dist/rbac/api-keys.js +41 -0
- package/dist/rbac/api-keys.js.map +1 -0
- package/dist/rbac/index.d.ts +6 -0
- package/dist/rbac/index.d.ts.map +1 -0
- package/dist/rbac/index.js +6 -0
- package/dist/rbac/index.js.map +1 -0
- package/dist/rbac/permissions.d.ts +107 -0
- package/dist/rbac/permissions.d.ts.map +1 -0
- package/dist/rbac/permissions.js +250 -0
- package/dist/rbac/permissions.js.map +1 -0
- package/dist/rbac/principal.d.ts +33 -0
- package/dist/rbac/principal.d.ts.map +1 -0
- package/dist/rbac/principal.js +31 -0
- package/dist/rbac/principal.js.map +1 -0
- package/dist/rbac/resolver.d.ts +26 -0
- package/dist/rbac/resolver.d.ts.map +1 -0
- package/dist/rbac/resolver.js +46 -0
- package/dist/rbac/resolver.js.map +1 -0
- package/dist/realtime/hub.d.ts +90 -0
- package/dist/realtime/hub.d.ts.map +1 -0
- package/dist/realtime/hub.js +146 -0
- package/dist/realtime/hub.js.map +1 -0
- package/dist/realtime/sse.d.ts +35 -0
- package/dist/realtime/sse.d.ts.map +1 -0
- package/dist/realtime/sse.js +88 -0
- package/dist/realtime/sse.js.map +1 -0
- package/dist/realtime/ws.d.ts +38 -0
- package/dist/realtime/ws.d.ts.map +1 -0
- package/dist/realtime/ws.js +124 -0
- package/dist/realtime/ws.js.map +1 -0
- package/dist/reports/schedule.d.ts +14 -0
- package/dist/reports/schedule.d.ts.map +1 -0
- package/dist/reports/schedule.js +63 -0
- package/dist/reports/schedule.js.map +1 -0
- package/dist/routes/about/index.d.ts +39 -0
- package/dist/routes/about/index.d.ts.map +1 -0
- package/dist/routes/about/index.js +73 -0
- package/dist/routes/about/index.js.map +1 -0
- package/dist/routes/about/schema.d.ts +50 -0
- package/dist/routes/about/schema.d.ts.map +1 -0
- package/dist/routes/about/schema.js +53 -0
- package/dist/routes/about/schema.js.map +1 -0
- package/dist/routes/api-keys/index.d.ts +11 -0
- package/dist/routes/api-keys/index.d.ts.map +1 -0
- package/dist/routes/api-keys/index.js +79 -0
- package/dist/routes/api-keys/index.js.map +1 -0
- package/dist/routes/api-keys/schema.d.ts +62 -0
- package/dist/routes/api-keys/schema.d.ts.map +1 -0
- package/dist/routes/api-keys/schema.js +37 -0
- package/dist/routes/api-keys/schema.js.map +1 -0
- package/dist/routes/audit/index.d.ts +11 -0
- package/dist/routes/audit/index.d.ts.map +1 -0
- package/dist/routes/audit/index.js +107 -0
- package/dist/routes/audit/index.js.map +1 -0
- package/dist/routes/audit/schema.d.ts +129 -0
- package/dist/routes/audit/schema.d.ts.map +1 -0
- package/dist/routes/audit/schema.js +43 -0
- package/dist/routes/audit/schema.js.map +1 -0
- package/dist/routes/auth/desktop-session.d.ts +48 -0
- package/dist/routes/auth/desktop-session.d.ts.map +1 -0
- package/dist/routes/auth/desktop-session.js +132 -0
- package/dist/routes/auth/desktop-session.js.map +1 -0
- package/dist/routes/auth/handlers.d.ts +21 -0
- package/dist/routes/auth/handlers.d.ts.map +1 -0
- package/dist/routes/auth/handlers.js +256 -0
- package/dist/routes/auth/handlers.js.map +1 -0
- package/dist/routes/auth/index.d.ts +27 -0
- package/dist/routes/auth/index.d.ts.map +1 -0
- package/dist/routes/auth/index.js +67 -0
- package/dist/routes/auth/index.js.map +1 -0
- package/dist/routes/auth/schema.d.ts +129 -0
- package/dist/routes/auth/schema.d.ts.map +1 -0
- package/dist/routes/auth/schema.js +84 -0
- package/dist/routes/auth/schema.js.map +1 -0
- package/dist/routes/bootstrap/handlers.d.ts +34 -0
- package/dist/routes/bootstrap/handlers.d.ts.map +1 -0
- package/dist/routes/bootstrap/handlers.js +96 -0
- package/dist/routes/bootstrap/handlers.js.map +1 -0
- package/dist/routes/bootstrap/index.d.ts +9 -0
- package/dist/routes/bootstrap/index.d.ts.map +1 -0
- package/dist/routes/bootstrap/index.js +16 -0
- package/dist/routes/bootstrap/index.js.map +1 -0
- package/dist/routes/bootstrap/schema.d.ts +177 -0
- package/dist/routes/bootstrap/schema.d.ts.map +1 -0
- package/dist/routes/bootstrap/schema.js +55 -0
- package/dist/routes/bootstrap/schema.js.map +1 -0
- package/dist/routes/connections/index.d.ts +21 -0
- package/dist/routes/connections/index.d.ts.map +1 -0
- package/dist/routes/connections/index.js +260 -0
- package/dist/routes/connections/index.js.map +1 -0
- package/dist/routes/connections/schema.d.ts +161 -0
- package/dist/routes/connections/schema.d.ts.map +1 -0
- package/dist/routes/connections/schema.js +91 -0
- package/dist/routes/connections/schema.js.map +1 -0
- package/dist/routes/data/index.d.ts +46 -0
- package/dist/routes/data/index.d.ts.map +1 -0
- package/dist/routes/data/index.js +508 -0
- package/dist/routes/data/index.js.map +1 -0
- package/dist/routes/data/schema.d.ts +128 -0
- package/dist/routes/data/schema.d.ts.map +1 -0
- package/dist/routes/data/schema.js +83 -0
- package/dist/routes/data/schema.js.map +1 -0
- package/dist/routes/desktop/index.d.ts +61 -0
- package/dist/routes/desktop/index.d.ts.map +1 -0
- package/dist/routes/desktop/index.js +91 -0
- package/dist/routes/desktop/index.js.map +1 -0
- package/dist/routes/desktop/schema.d.ts +71 -0
- package/dist/routes/desktop/schema.d.ts.map +1 -0
- package/dist/routes/desktop/schema.js +58 -0
- package/dist/routes/desktop/schema.js.map +1 -0
- package/dist/routes/desktop-capabilities/index.d.ts +9 -0
- package/dist/routes/desktop-capabilities/index.d.ts.map +1 -0
- package/dist/routes/desktop-capabilities/index.js +62 -0
- package/dist/routes/desktop-capabilities/index.js.map +1 -0
- package/dist/routes/desktop-capabilities/schema.d.ts +46 -0
- package/dist/routes/desktop-capabilities/schema.d.ts.map +1 -0
- package/dist/routes/desktop-capabilities/schema.js +30 -0
- package/dist/routes/desktop-capabilities/schema.js.map +1 -0
- package/dist/routes/desktop-demo/handlers.d.ts +94 -0
- package/dist/routes/desktop-demo/handlers.d.ts.map +1 -0
- package/dist/routes/desktop-demo/handlers.js +182 -0
- package/dist/routes/desktop-demo/handlers.js.map +1 -0
- package/dist/routes/desktop-demo/index.d.ts +39 -0
- package/dist/routes/desktop-demo/index.d.ts.map +1 -0
- package/dist/routes/desktop-demo/index.js +73 -0
- package/dist/routes/desktop-demo/index.js.map +1 -0
- package/dist/routes/desktop-demo/schema.d.ts +17 -0
- package/dist/routes/desktop-demo/schema.d.ts.map +1 -0
- package/dist/routes/desktop-demo/schema.js +30 -0
- package/dist/routes/desktop-demo/schema.js.map +1 -0
- package/dist/routes/desktop-lan/index.d.ts +54 -0
- package/dist/routes/desktop-lan/index.d.ts.map +1 -0
- package/dist/routes/desktop-lan/index.js +33 -0
- package/dist/routes/desktop-lan/index.js.map +1 -0
- package/dist/routes/desktop-lan/schema.d.ts +24 -0
- package/dist/routes/desktop-lan/schema.d.ts.map +1 -0
- package/dist/routes/desktop-lan/schema.js +40 -0
- package/dist/routes/desktop-lan/schema.js.map +1 -0
- package/dist/routes/desktop-local-db/handlers.d.ts +92 -0
- package/dist/routes/desktop-local-db/handlers.d.ts.map +1 -0
- package/dist/routes/desktop-local-db/handlers.js +300 -0
- package/dist/routes/desktop-local-db/handlers.js.map +1 -0
- package/dist/routes/desktop-local-db/index.d.ts +39 -0
- package/dist/routes/desktop-local-db/index.d.ts.map +1 -0
- package/dist/routes/desktop-local-db/index.js +83 -0
- package/dist/routes/desktop-local-db/index.js.map +1 -0
- package/dist/routes/desktop-local-db/placeholder.d.ts +75 -0
- package/dist/routes/desktop-local-db/placeholder.d.ts.map +1 -0
- package/dist/routes/desktop-local-db/placeholder.js +420 -0
- package/dist/routes/desktop-local-db/placeholder.js.map +1 -0
- package/dist/routes/desktop-local-db/schema.d.ts +50 -0
- package/dist/routes/desktop-local-db/schema.d.ts.map +1 -0
- package/dist/routes/desktop-local-db/schema.js +71 -0
- package/dist/routes/desktop-local-db/schema.js.map +1 -0
- package/dist/routes/desktop-local-db/sqlite-ddl.d.ts +104 -0
- package/dist/routes/desktop-local-db/sqlite-ddl.d.ts.map +1 -0
- package/dist/routes/desktop-local-db/sqlite-ddl.js +419 -0
- package/dist/routes/desktop-local-db/sqlite-ddl.js.map +1 -0
- package/dist/routes/email-templates/index.d.ts +7 -0
- package/dist/routes/email-templates/index.d.ts.map +1 -0
- package/dist/routes/email-templates/index.js +70 -0
- package/dist/routes/email-templates/index.js.map +1 -0
- package/dist/routes/email-templates/schema.d.ts +54 -0
- package/dist/routes/email-templates/schema.d.ts.map +1 -0
- package/dist/routes/email-templates/schema.js +35 -0
- package/dist/routes/email-templates/schema.js.map +1 -0
- package/dist/routes/exports/index.d.ts +19 -0
- package/dist/routes/exports/index.d.ts.map +1 -0
- package/dist/routes/exports/index.js +145 -0
- package/dist/routes/exports/index.js.map +1 -0
- package/dist/routes/exports/schema.d.ts +183 -0
- package/dist/routes/exports/schema.d.ts.map +1 -0
- package/dist/routes/exports/schema.js +37 -0
- package/dist/routes/exports/schema.js.map +1 -0
- package/dist/routes/generate/index.d.ts +23 -0
- package/dist/routes/generate/index.d.ts.map +1 -0
- package/dist/routes/generate/index.js +80 -0
- package/dist/routes/generate/index.js.map +1 -0
- package/dist/routes/generate/schema.d.ts +43 -0
- package/dist/routes/generate/schema.d.ts.map +1 -0
- package/dist/routes/generate/schema.js +37 -0
- package/dist/routes/generate/schema.js.map +1 -0
- package/dist/routes/imports/index.d.ts +21 -0
- package/dist/routes/imports/index.d.ts.map +1 -0
- package/dist/routes/imports/index.js +288 -0
- package/dist/routes/imports/index.js.map +1 -0
- package/dist/routes/imports/schema.d.ts +292 -0
- package/dist/routes/imports/schema.d.ts.map +1 -0
- package/dist/routes/imports/schema.js +78 -0
- package/dist/routes/imports/schema.js.map +1 -0
- package/dist/routes/index.d.ts +11 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +8 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/jobs/index.d.ts +29 -0
- package/dist/routes/jobs/index.d.ts.map +1 -0
- package/dist/routes/jobs/index.js +175 -0
- package/dist/routes/jobs/index.js.map +1 -0
- package/dist/routes/jobs/schema.d.ts +170 -0
- package/dist/routes/jobs/schema.d.ts.map +1 -0
- package/dist/routes/jobs/schema.js +57 -0
- package/dist/routes/jobs/schema.js.map +1 -0
- package/dist/routes/llm/config-service.d.ts +48 -0
- package/dist/routes/llm/config-service.d.ts.map +1 -0
- package/dist/routes/llm/config-service.js +102 -0
- package/dist/routes/llm/config-service.js.map +1 -0
- package/dist/routes/llm/index.d.ts +69 -0
- package/dist/routes/llm/index.d.ts.map +1 -0
- package/dist/routes/llm/index.js +412 -0
- package/dist/routes/llm/index.js.map +1 -0
- package/dist/routes/llm/schema.d.ts +605 -0
- package/dist/routes/llm/schema.d.ts.map +1 -0
- package/dist/routes/llm/schema.js +238 -0
- package/dist/routes/llm/schema.js.map +1 -0
- package/dist/routes/me/handlers.d.ts +14 -0
- package/dist/routes/me/handlers.d.ts.map +1 -0
- package/dist/routes/me/handlers.js +88 -0
- package/dist/routes/me/handlers.js.map +1 -0
- package/dist/routes/me/index.d.ts +8 -0
- package/dist/routes/me/index.d.ts.map +1 -0
- package/dist/routes/me/index.js +17 -0
- package/dist/routes/me/index.js.map +1 -0
- package/dist/routes/me/schema.d.ts +270 -0
- package/dist/routes/me/schema.d.ts.map +1 -0
- package/dist/routes/me/schema.js +59 -0
- package/dist/routes/me/schema.js.map +1 -0
- package/dist/routes/me-views/index.d.ts +23 -0
- package/dist/routes/me-views/index.d.ts.map +1 -0
- package/dist/routes/me-views/index.js +76 -0
- package/dist/routes/me-views/index.js.map +1 -0
- package/dist/routes/me-views/schema.d.ts +44 -0
- package/dist/routes/me-views/schema.d.ts.map +1 -0
- package/dist/routes/me-views/schema.js +13 -0
- package/dist/routes/me-views/schema.js.map +1 -0
- package/dist/routes/notifications/index.d.ts +19 -0
- package/dist/routes/notifications/index.d.ts.map +1 -0
- package/dist/routes/notifications/index.js +123 -0
- package/dist/routes/notifications/index.js.map +1 -0
- package/dist/routes/notifications/schema.d.ts +122 -0
- package/dist/routes/notifications/schema.d.ts.map +1 -0
- package/dist/routes/notifications/schema.js +83 -0
- package/dist/routes/notifications/schema.js.map +1 -0
- package/dist/routes/onboarding/derive.d.ts +41 -0
- package/dist/routes/onboarding/derive.d.ts.map +1 -0
- package/dist/routes/onboarding/derive.js +30 -0
- package/dist/routes/onboarding/derive.js.map +1 -0
- package/dist/routes/onboarding/index.d.ts +26 -0
- package/dist/routes/onboarding/index.d.ts.map +1 -0
- package/dist/routes/onboarding/index.js +95 -0
- package/dist/routes/onboarding/index.js.map +1 -0
- package/dist/routes/onboarding/schema.d.ts +22 -0
- package/dist/routes/onboarding/schema.d.ts.map +1 -0
- package/dist/routes/onboarding/schema.js +22 -0
- package/dist/routes/onboarding/schema.js.map +1 -0
- package/dist/routes/pages/index.d.ts +26 -0
- package/dist/routes/pages/index.d.ts.map +1 -0
- package/dist/routes/pages/index.js +119 -0
- package/dist/routes/pages/index.js.map +1 -0
- package/dist/routes/pages/layout-schema.d.ts +19 -0
- package/dist/routes/pages/layout-schema.d.ts.map +1 -0
- package/dist/routes/pages/layout-schema.js +19 -0
- package/dist/routes/pages/layout-schema.js.map +1 -0
- package/dist/routes/pages/schema.d.ts +52 -0
- package/dist/routes/pages/schema.d.ts.map +1 -0
- package/dist/routes/pages/schema.js +35 -0
- package/dist/routes/pages/schema.js.map +1 -0
- package/dist/routes/roles/index.d.ts +17 -0
- package/dist/routes/roles/index.d.ts.map +1 -0
- package/dist/routes/roles/index.js +255 -0
- package/dist/routes/roles/index.js.map +1 -0
- package/dist/routes/roles/schema.d.ts +94 -0
- package/dist/routes/roles/schema.d.ts.map +1 -0
- package/dist/routes/roles/schema.js +57 -0
- package/dist/routes/roles/schema.js.map +1 -0
- package/dist/routes/scheduled-reports/index.d.ts +15 -0
- package/dist/routes/scheduled-reports/index.d.ts.map +1 -0
- package/dist/routes/scheduled-reports/index.js +195 -0
- package/dist/routes/scheduled-reports/index.js.map +1 -0
- package/dist/routes/scheduled-reports/schema.d.ts +154 -0
- package/dist/routes/scheduled-reports/schema.d.ts.map +1 -0
- package/dist/routes/scheduled-reports/schema.js +49 -0
- package/dist/routes/scheduled-reports/schema.js.map +1 -0
- package/dist/routes/schema/index.d.ts +24 -0
- package/dist/routes/schema/index.d.ts.map +1 -0
- package/dist/routes/schema/index.js +224 -0
- package/dist/routes/schema/index.js.map +1 -0
- package/dist/routes/schema/schema.d.ts +92 -0
- package/dist/routes/schema/schema.d.ts.map +1 -0
- package/dist/routes/schema/schema.js +64 -0
- package/dist/routes/schema/schema.js.map +1 -0
- package/dist/routes/schema-import/fallback-parser.d.ts +35 -0
- package/dist/routes/schema-import/fallback-parser.d.ts.map +1 -0
- package/dist/routes/schema-import/fallback-parser.js +349 -0
- package/dist/routes/schema-import/fallback-parser.js.map +1 -0
- package/dist/routes/schema-import/index.d.ts +43 -0
- package/dist/routes/schema-import/index.d.ts.map +1 -0
- package/dist/routes/schema-import/index.js +167 -0
- package/dist/routes/schema-import/index.js.map +1 -0
- package/dist/routes/schema-import/schema.d.ts +65 -0
- package/dist/routes/schema-import/schema.d.ts.map +1 -0
- package/dist/routes/schema-import/schema.js +40 -0
- package/dist/routes/schema-import/schema.js.map +1 -0
- package/dist/routes/search/index.d.ts +71 -0
- package/dist/routes/search/index.d.ts.map +1 -0
- package/dist/routes/search/index.js +361 -0
- package/dist/routes/search/index.js.map +1 -0
- package/dist/routes/search/schema.d.ts +125 -0
- package/dist/routes/search/schema.d.ts.map +1 -0
- package/dist/routes/search/schema.js +70 -0
- package/dist/routes/search/schema.js.map +1 -0
- package/dist/routes/settings/index.d.ts +24 -0
- package/dist/routes/settings/index.d.ts.map +1 -0
- package/dist/routes/settings/index.js +164 -0
- package/dist/routes/settings/index.js.map +1 -0
- package/dist/routes/settings/schema.d.ts +110 -0
- package/dist/routes/settings/schema.d.ts.map +1 -0
- package/dist/routes/settings/schema.js +71 -0
- package/dist/routes/settings/schema.js.map +1 -0
- package/dist/routes/setup/index.d.ts +29 -0
- package/dist/routes/setup/index.d.ts.map +1 -0
- package/dist/routes/setup/index.js +68 -0
- package/dist/routes/setup/index.js.map +1 -0
- package/dist/routes/setup/schema.d.ts +61 -0
- package/dist/routes/setup/schema.d.ts.map +1 -0
- package/dist/routes/setup/schema.js +47 -0
- package/dist/routes/setup/schema.js.map +1 -0
- package/dist/routes/system/handlers.d.ts +63 -0
- package/dist/routes/system/handlers.d.ts.map +1 -0
- package/dist/routes/system/handlers.js +121 -0
- package/dist/routes/system/handlers.js.map +1 -0
- package/dist/routes/system/index.d.ts +34 -0
- package/dist/routes/system/index.d.ts.map +1 -0
- package/dist/routes/system/index.js +18 -0
- package/dist/routes/system/index.js.map +1 -0
- package/dist/routes/system/schema.d.ts +93 -0
- package/dist/routes/system/schema.d.ts.map +1 -0
- package/dist/routes/system/schema.js +109 -0
- package/dist/routes/system/schema.js.map +1 -0
- package/dist/routes/views/index.d.ts +21 -0
- package/dist/routes/views/index.d.ts.map +1 -0
- package/dist/routes/views/index.js +155 -0
- package/dist/routes/views/index.js.map +1 -0
- package/dist/routes/views/schema.d.ts +127 -0
- package/dist/routes/views/schema.d.ts.map +1 -0
- package/dist/routes/views/schema.js +56 -0
- package/dist/routes/views/schema.js.map +1 -0
- package/dist/routes/widget-data/index.d.ts +29 -0
- package/dist/routes/widget-data/index.d.ts.map +1 -0
- package/dist/routes/widget-data/index.js +152 -0
- package/dist/routes/widget-data/index.js.map +1 -0
- package/dist/routes/widget-data/schema.d.ts +252 -0
- package/dist/routes/widget-data/schema.d.ts.map +1 -0
- package/dist/routes/widget-data/schema.js +44 -0
- package/dist/routes/widget-data/schema.js.map +1 -0
- package/dist/setup/service.d.ts +63 -0
- package/dist/setup/service.d.ts.map +1 -0
- package/dist/setup/service.js +103 -0
- package/dist/setup/service.js.map +1 -0
- package/dist/start.d.ts +12 -0
- package/dist/start.d.ts.map +1 -0
- package/dist/start.js +28 -0
- package/dist/start.js.map +1 -0
- package/dist/telemetry/payload.d.ts +66 -0
- package/dist/telemetry/payload.d.ts.map +1 -0
- package/dist/telemetry/payload.js +69 -0
- package/dist/telemetry/payload.js.map +1 -0
- package/dist/telemetry/service.d.ts +67 -0
- package/dist/telemetry/service.d.ts.map +1 -0
- package/dist/telemetry/service.js +103 -0
- package/dist/telemetry/service.js.map +1 -0
- package/dist/telemetry/update-check.d.ts +79 -0
- package/dist/telemetry/update-check.d.ts.map +1 -0
- package/dist/telemetry/update-check.js +103 -0
- package/dist/telemetry/update-check.js.map +1 -0
- package/dist/version.d.ts +14 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +21 -0
- package/dist/version.js.map +1 -0
- package/dist/widget-data/cache.d.ts +35 -0
- package/dist/widget-data/cache.d.ts.map +1 -0
- package/dist/widget-data/cache.js +67 -0
- package/dist/widget-data/cache.js.map +1 -0
- package/dist/widget-data/compiler.d.ts +107 -0
- package/dist/widget-data/compiler.d.ts.map +1 -0
- package/dist/widget-data/compiler.js +362 -0
- package/dist/widget-data/compiler.js.map +1 -0
- package/dist/widget-data/shapers.d.ts +75 -0
- package/dist/widget-data/shapers.d.ts.map +1 -0
- package/dist/widget-data/shapers.js +128 -0
- package/dist/widget-data/shapers.js.map +1 -0
- package/dist/widget-data/stream-publisher.d.ts +42 -0
- package/dist/widget-data/stream-publisher.d.ts.map +1 -0
- package/dist/widget-data/stream-publisher.js +34 -0
- package/dist/widget-data/stream-publisher.js.map +1 -0
- package/package.json +79 -0
- package/vocabulary/llm-allowlist.json +76 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The bundle's README. Its whole job is to answer, before anyone opens
|
|
3
|
+
* `config/`, the question this export is most likely to be misread as: "is this
|
|
4
|
+
* my admin panel's source code?" It is not, it never will be, and the first
|
|
5
|
+
* heading says so (BRIEF §3 / 16-milestones M10-T03).
|
|
6
|
+
*
|
|
7
|
+
* Not user-facing dashboard copy — this is a file written into a downloadable
|
|
8
|
+
* artifact, so it is deliberately plain English and not routed through i18n
|
|
9
|
+
* (t('key') has no meaning in a zip read outside the app).
|
|
10
|
+
*/
|
|
11
|
+
import { NPM_PACKAGE_NAME } from '../version.js';
|
|
12
|
+
function secretsSection(manifest) {
|
|
13
|
+
if (manifest.secrets.policy === 'omitted') {
|
|
14
|
+
const dropped = manifest.secrets.omitted.length === 0
|
|
15
|
+
? 'This instance had no secrets configured.'
|
|
16
|
+
: `Dropped: ${manifest.secrets.omitted.join(', ')}.`;
|
|
17
|
+
return [
|
|
18
|
+
'## Secrets',
|
|
19
|
+
'',
|
|
20
|
+
'This bundle contains **no credentials**. Database connection strings and',
|
|
21
|
+
'LLM provider keys were left out entirely, so the file is safe to store and',
|
|
22
|
+
`hand around like any other config. ${dropped}`,
|
|
23
|
+
'',
|
|
24
|
+
'After importing, re-enter each connection\'s credentials in Studio (or with',
|
|
25
|
+
'`adminium init`) before the connection will work.',
|
|
26
|
+
].join('\n');
|
|
27
|
+
}
|
|
28
|
+
return [
|
|
29
|
+
'## Secrets — this bundle is sensitive',
|
|
30
|
+
'',
|
|
31
|
+
'This bundle was exported with `--include-secrets`. It carries the following',
|
|
32
|
+
'still **AES-256-GCM encrypted** values:',
|
|
33
|
+
'',
|
|
34
|
+
...manifest.secrets.encrypted.map((name) => `- \`${name}\``),
|
|
35
|
+
'',
|
|
36
|
+
'They are ciphertext, not plaintext — but they are only ciphertext. **The same',
|
|
37
|
+
'`ADMINIUM_SECRET` that the exporting instance used is required to re-open',
|
|
38
|
+
'them.** Import into an instance with a different `ADMINIUM_SECRET` and these',
|
|
39
|
+
'values will not decrypt; you will need to re-enter them.',
|
|
40
|
+
'',
|
|
41
|
+
'Treat this file as you would the secret itself: anyone who obtains both it',
|
|
42
|
+
'and `ADMINIUM_SECRET` has your database credentials.',
|
|
43
|
+
].join('\n');
|
|
44
|
+
}
|
|
45
|
+
/** Render the bundle README for `manifest`. */
|
|
46
|
+
export function renderReadme(manifest) {
|
|
47
|
+
const scope = manifest.connectionId === null
|
|
48
|
+
? 'the whole instance'
|
|
49
|
+
: `connection \`${manifest.connectionId}\``;
|
|
50
|
+
return [
|
|
51
|
+
'# Adminium configuration bundle',
|
|
52
|
+
'',
|
|
53
|
+
'## This is configuration, not source code',
|
|
54
|
+
'',
|
|
55
|
+
'There is no application source in this archive, and there is no generated',
|
|
56
|
+
'app to compile or deploy. Adminium does not emit code: it reads',
|
|
57
|
+
'configuration at runtime and renders your admin panel from it. What you have',
|
|
58
|
+
'here is that configuration — pages, navigation, settings, roles and',
|
|
59
|
+
'permissions, connection definitions, schema snapshots and overrides — as',
|
|
60
|
+
'portable JSON, plus the manifest that says which Adminium version it came',
|
|
61
|
+
'from.',
|
|
62
|
+
'',
|
|
63
|
+
'To run it you need the Adminium server — a source checkout (or the Docker',
|
|
64
|
+
'image) of the same project that wrote this bundle. The `package.json`',
|
|
65
|
+
'beside this file records the exact version that produced the bundle',
|
|
66
|
+
`(\`${NPM_PACKAGE_NAME}@${manifest.appVersion}\`); run the same or a newer build. A`,
|
|
67
|
+
'checkout is the complete install — it contains the server, the dashboard',
|
|
68
|
+
'build, and the meta-store migrations.',
|
|
69
|
+
'',
|
|
70
|
+
'## What is in here',
|
|
71
|
+
'',
|
|
72
|
+
'```',
|
|
73
|
+
'manifest.json versions + counts + the secrets policy for this bundle',
|
|
74
|
+
'package.json pins the Adminium version that wrote it',
|
|
75
|
+
'config/ the instance configuration, one JSON file per resource',
|
|
76
|
+
' settings.json global settings (secret keys handled per policy below)',
|
|
77
|
+
' roles.json roles',
|
|
78
|
+
' rolePermissions.json the permission matrix',
|
|
79
|
+
' connections.json connection definitions (credentials per policy below)',
|
|
80
|
+
' snapshots.json the active schema snapshot per connection',
|
|
81
|
+
' overrides.json schema overrides (remaps, LLM-applied corrections)',
|
|
82
|
+
' pages.json pages and dashboards, nav placement included',
|
|
83
|
+
' views.json shared saved views',
|
|
84
|
+
'```',
|
|
85
|
+
'',
|
|
86
|
+
`Scope: ${scope}.`,
|
|
87
|
+
'',
|
|
88
|
+
'## Restoring it',
|
|
89
|
+
'',
|
|
90
|
+
'From a built source checkout (see docs: Quickstart from source), with',
|
|
91
|
+
'`adminium` aliased to `node apps/server/dist/cli/index.js`:',
|
|
92
|
+
'',
|
|
93
|
+
'```sh',
|
|
94
|
+
'export ADMINIUM_SECRET=… # 32+ chars; the target instance\'s secret',
|
|
95
|
+
'adminium import-zip --in <this-archive>.zip',
|
|
96
|
+
'adminium start',
|
|
97
|
+
'```',
|
|
98
|
+
'',
|
|
99
|
+
'`import-zip` runs the meta-store migrations first, then replays every config',
|
|
100
|
+
'document forward to the version the running build understands. Add',
|
|
101
|
+
'`--dry-run` to validate the bundle and print what would change without',
|
|
102
|
+
'writing anything.',
|
|
103
|
+
'',
|
|
104
|
+
'## Version replay',
|
|
105
|
+
'',
|
|
106
|
+
`This bundle was written by Adminium \`${manifest.appVersion}\` at config`,
|
|
107
|
+
`version \`${String(manifest.configVersion)}\`, meta schema \`${manifest.metaVersion}\`.`,
|
|
108
|
+
'',
|
|
109
|
+
'It imports into that version or any later one: config documents are migrated',
|
|
110
|
+
'forward on the way in. It will **not** import into an older Adminium — that',
|
|
111
|
+
'build would not understand documents newer than itself, and importing them',
|
|
112
|
+
'would silently drop the parts it cannot read. Upgrade the target instead.',
|
|
113
|
+
'',
|
|
114
|
+
secretsSection(manifest),
|
|
115
|
+
'',
|
|
116
|
+
'## Not included',
|
|
117
|
+
'',
|
|
118
|
+
'Deliberately absent, because these are instance data rather than',
|
|
119
|
+
'configuration — an export is meant to be a portable configuration, not a',
|
|
120
|
+
'clone of your install:',
|
|
121
|
+
'',
|
|
122
|
+
'- users, sessions, and API keys (the target creates its own first super admin)',
|
|
123
|
+
'- the audit log, jobs, and notifications',
|
|
124
|
+
'- LLM run history',
|
|
125
|
+
'- uploaded files',
|
|
126
|
+
'- per-user preferences and per-user saved views (shared views are included)',
|
|
127
|
+
'- **your database contents** — Adminium never copies the data in your source',
|
|
128
|
+
' database; it only records how to connect to it and how to display it.',
|
|
129
|
+
'',
|
|
130
|
+
'---',
|
|
131
|
+
'',
|
|
132
|
+
'Docs: https://docs.adminium.dev',
|
|
133
|
+
'',
|
|
134
|
+
].join('\n');
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* The bundle's `package.json`. Pins the published package exactly: a bundle
|
|
138
|
+
* that replayed into a *different* build than the one it names would defeat
|
|
139
|
+
* the point of the manifest carrying versions at all.
|
|
140
|
+
*
|
|
141
|
+
* The dependency key MUST come from `NPM_PACKAGE_NAME` and never be the bare
|
|
142
|
+
* string `adminium`: that unscoped npm name is an unrelated third party's
|
|
143
|
+
* package, so a hand-written pin would send restorers to install a stranger's
|
|
144
|
+
* library (and fail outright, since its versions start at 1.0.0).
|
|
145
|
+
*/
|
|
146
|
+
export function renderPackageJson(manifest) {
|
|
147
|
+
return (JSON.stringify({
|
|
148
|
+
name: 'adminium-instance',
|
|
149
|
+
private: true,
|
|
150
|
+
description: 'Adminium configuration bundle — run `adminium import-zip --in <archive>.zip` then `adminium start` from a built source checkout. Configuration only; contains no application source.',
|
|
151
|
+
dependencies: { [NPM_PACKAGE_NAME]: manifest.appVersion },
|
|
152
|
+
}, null, 2) + '\n');
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=readme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readme.js","sourceRoot":"","sources":["../../src/export/readme.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The export's secret policy (M10-T03; BRIEF §3).
|
|
3
|
+
*
|
|
4
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
5
|
+
* THE RULE: **a plaintext secret must never reach the bundle.** Adminium keeps
|
|
6
|
+
* source DSNs and provider keys AES-256-GCM-encrypted at rest (`enc:v1:` tokens,
|
|
7
|
+
* `config/secrets.ts`), so the only two defensible outcomes for a secret-bearing
|
|
8
|
+
* field are: OMIT it, or carry the *still-encrypted* token and say loudly that
|
|
9
|
+
* `ADMINIUM_SECRET` is required to re-open it. This module is the single place
|
|
10
|
+
* that decides which, and it fails closed.
|
|
11
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
12
|
+
*
|
|
13
|
+
* WHY AN ALLOW-LIST AND NOT A DENY-LIST. A deny-list rots: the next migration
|
|
14
|
+
* adds a column, nobody remembers this file, and the column ships in every
|
|
15
|
+
* export from then on. {@link EXPORTED_COLUMNS} names — per table — the exact
|
|
16
|
+
* columns that may leave the instance. A new column is invisible to the export
|
|
17
|
+
* until someone adds it here, which is the failure direction we want.
|
|
18
|
+
*
|
|
19
|
+
* Notable exclusions and the reason each is not an oversight:
|
|
20
|
+
* - `adminium_connections.introspect_dsn_encrypted` / `data_dsn_encrypted` —
|
|
21
|
+
* the DSNs. Ciphertext only, and only under `includeSecrets`.
|
|
22
|
+
* - `adminium_connections.last_error` — driver errors routinely quote the whole
|
|
23
|
+
* connection string ("password authentication failed for user … host=…").
|
|
24
|
+
* It is a *plaintext* DSN leak wearing a diagnostics costume. Never exported.
|
|
25
|
+
* - `adminium_connections.ssl.caFileId` — a live file reference the target
|
|
26
|
+
* instance has no file for; nulled rather than left dangling.
|
|
27
|
+
* - `adminium_settings` secret keys (`llm.apiKey`, `email.smtp` — sourced from
|
|
28
|
+
* the registry's own `secret` flag, never a local copy of the list).
|
|
29
|
+
* - `adminium_settings` non-`portable` keys — the instance's own identity
|
|
30
|
+
* (`system.instanceId`, `system.bootstrappedAt`) and, above all, the
|
|
31
|
+
* `system.superAdminCreatedAt` bootstrap CLAIM. Also sourced from the
|
|
32
|
+
* registry, for the same reason and by the same mechanism as `secret`.
|
|
33
|
+
* - every `*_hash` column, `totp_secret_encrypted`, `secret_encrypted`,
|
|
34
|
+
* `license_key_encrypted` — they live in tables the export does not carry at
|
|
35
|
+
* all (users/sessions/api-keys/webhooks/manifests are instance data, not
|
|
36
|
+
* config), and {@link assertNoCredentialColumns} keeps it that way.
|
|
37
|
+
*/
|
|
38
|
+
/** Thrown when a value that must be ciphertext is not — the export aborts. */
|
|
39
|
+
export declare class PlaintextSecretError extends Error {
|
|
40
|
+
readonly name = "PlaintextSecretError";
|
|
41
|
+
constructor(where: string);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Settings keys the export always drops, whatever `includeSecrets` says: they
|
|
45
|
+
* identify the *source instance* or record that its bootstrap already happened,
|
|
46
|
+
* neither of which is configuration.
|
|
47
|
+
*
|
|
48
|
+
* DERIVED from the registry's `portable` flag, not maintained here. It used to
|
|
49
|
+
* be a hand-written list of two — and it rotted inside the same wave that wrote
|
|
50
|
+
* it: `system.superAdminCreatedAt`, the once-only first-boot claim, was added to
|
|
51
|
+
* the registry and nobody remembered this file, so every full-instance bundle
|
|
52
|
+
* carried the claim. Importing one into a fresh install left it with zero users
|
|
53
|
+
* and `/setup/*` closed forever: unusable, unrecoverable, silent. Exactly the
|
|
54
|
+
* rot this module's header predicts of deny-lists. The registry is now the
|
|
55
|
+
* authority — a new key is non-portable until declared otherwise — and this
|
|
56
|
+
* constant is kept only because the manifest and the tests name it.
|
|
57
|
+
*/
|
|
58
|
+
export declare const INSTANCE_IDENTITY_SETTINGS: readonly string[];
|
|
59
|
+
/**
|
|
60
|
+
* The per-table column allow-list. Keys are the tables the bundle carries;
|
|
61
|
+
* every other `adminium_*` table is instance data (users, sessions, api keys,
|
|
62
|
+
* audit, jobs, notifications, llm runs, files, …) and is not config.
|
|
63
|
+
*
|
|
64
|
+
* Columns listed here are the ONLY ones serialized. Secret-bearing columns are
|
|
65
|
+
* absent on purpose and are added back — as ciphertext — by
|
|
66
|
+
* {@link secretColumnsFor} when `includeSecrets` is on.
|
|
67
|
+
*/
|
|
68
|
+
export declare const EXPORTED_COLUMNS: {
|
|
69
|
+
readonly adminium_settings: readonly ["key", "value"];
|
|
70
|
+
readonly adminium_roles: readonly ["id", "slug", "name", "description", "isBuiltin"];
|
|
71
|
+
readonly adminium_role_permissions: readonly ["id", "roleId", "resourceKind", "resourceRef", "actions"];
|
|
72
|
+
readonly adminium_connections: readonly ["id", "name", "engine", "sourceKind", "readOnly", "ssl", "settings"];
|
|
73
|
+
readonly adminium_schema_snapshots: readonly ["id", "connectionId", "source", "importFormat", "engineVersion", "schema", "stats", "checksum", "isActive"];
|
|
74
|
+
readonly adminium_schema_overrides: readonly ["id", "connectionId", "op", "tableName", "columnName", "value", "origin", "status", "confidence"];
|
|
75
|
+
readonly adminium_pages: readonly ["id", "connectionId", "slug", "type", "title", "icon", "navGroup", "navOrder", "config", "origin", "generatedFromSnapshotId", "isEnabled"];
|
|
76
|
+
readonly adminium_views: readonly ["id", "pageId", "kind", "name", "config", "isDefault"];
|
|
77
|
+
};
|
|
78
|
+
export type ExportedTable = keyof typeof EXPORTED_COLUMNS;
|
|
79
|
+
/** Ciphertext columns re-admitted only under `--include-secrets`. */
|
|
80
|
+
export declare function secretColumnsFor(table: ExportedTable): readonly string[];
|
|
81
|
+
/** Throws if any allow-listed column looks credential-bearing. */
|
|
82
|
+
export declare function assertNoCredentialColumns(): void;
|
|
83
|
+
/**
|
|
84
|
+
* Project a row down to its allow-listed columns. Anything not named is
|
|
85
|
+
* dropped — including columns added by a future migration.
|
|
86
|
+
*/
|
|
87
|
+
export declare function pickColumns(row: Record<string, unknown>, columns: readonly string[]): Record<string, unknown>;
|
|
88
|
+
/**
|
|
89
|
+
* Verify a value destined for the bundle is an `enc:v1:` token, and return it.
|
|
90
|
+
* `null` passes through (an unset secret is not a secret).
|
|
91
|
+
*/
|
|
92
|
+
export declare function assertCiphertext(value: unknown, where: string): string | null;
|
|
93
|
+
export interface SettingsRedactionResult {
|
|
94
|
+
/** Rows safe to bundle. */
|
|
95
|
+
rows: {
|
|
96
|
+
key: string;
|
|
97
|
+
value: unknown;
|
|
98
|
+
}[];
|
|
99
|
+
/** Secret keys dropped because `includeSecrets` was off. */
|
|
100
|
+
droppedSecretKeys: string[];
|
|
101
|
+
/** Secret keys carried as ciphertext (require ADMINIUM_SECRET to re-open). */
|
|
102
|
+
encryptedKeys: string[];
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Apply the settings policy. BOTH flags — `secret` and `portable` — come from
|
|
106
|
+
* the `@adminium/meta` settings registry: the registry is the authority on what
|
|
107
|
+
* is sensitive and on what is configuration at all, so a new key is handled
|
|
108
|
+
* correctly the day it is declared, with no edit here. That is the "one code
|
|
109
|
+
* path" rule applied to redaction, and it fails closed in both directions (a new
|
|
110
|
+
* key is neither exported nor assumed harmless).
|
|
111
|
+
*/
|
|
112
|
+
export declare function redactSettings(rows: readonly {
|
|
113
|
+
key: string;
|
|
114
|
+
value: unknown;
|
|
115
|
+
}[], includeSecrets: boolean): SettingsRedactionResult;
|
|
116
|
+
/** True when the registry declares `key` secret. Re-exported for the manifest. */
|
|
117
|
+
export declare function isSecretKey(key: string): boolean;
|
|
118
|
+
//# sourceMappingURL=redaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../../src/export/redaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAMH,8EAA8E;AAC9E,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,SAAkB,IAAI,0BAA0B;gBACpC,KAAK,EAAE,MAAM;CAO1B;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,MAAM,EAEvD,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;CA0CyB,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAE1D,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,MAAM,EAAE,CAIxE;AAmBD,kEAAkE;AAClE,wBAAgB,yBAAyB,IAAI,IAAI,CAShD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM7E;AAED,MAAM,WAAW,uBAAuB;IACtC,2BAA2B;IAC3B,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IACxC,4DAA4D;IAC5D,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,8EAA8E;IAC9E,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,SAAS;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,EAAE,EAChD,cAAc,EAAE,OAAO,GACtB,uBAAuB,CA2BzB;AA0BD,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The export's secret policy (M10-T03; BRIEF §3).
|
|
3
|
+
*
|
|
4
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
5
|
+
* THE RULE: **a plaintext secret must never reach the bundle.** Adminium keeps
|
|
6
|
+
* source DSNs and provider keys AES-256-GCM-encrypted at rest (`enc:v1:` tokens,
|
|
7
|
+
* `config/secrets.ts`), so the only two defensible outcomes for a secret-bearing
|
|
8
|
+
* field are: OMIT it, or carry the *still-encrypted* token and say loudly that
|
|
9
|
+
* `ADMINIUM_SECRET` is required to re-open it. This module is the single place
|
|
10
|
+
* that decides which, and it fails closed.
|
|
11
|
+
* ─────────────────────────────────────────────────────────────────────────────
|
|
12
|
+
*
|
|
13
|
+
* WHY AN ALLOW-LIST AND NOT A DENY-LIST. A deny-list rots: the next migration
|
|
14
|
+
* adds a column, nobody remembers this file, and the column ships in every
|
|
15
|
+
* export from then on. {@link EXPORTED_COLUMNS} names — per table — the exact
|
|
16
|
+
* columns that may leave the instance. A new column is invisible to the export
|
|
17
|
+
* until someone adds it here, which is the failure direction we want.
|
|
18
|
+
*
|
|
19
|
+
* Notable exclusions and the reason each is not an oversight:
|
|
20
|
+
* - `adminium_connections.introspect_dsn_encrypted` / `data_dsn_encrypted` —
|
|
21
|
+
* the DSNs. Ciphertext only, and only under `includeSecrets`.
|
|
22
|
+
* - `adminium_connections.last_error` — driver errors routinely quote the whole
|
|
23
|
+
* connection string ("password authentication failed for user … host=…").
|
|
24
|
+
* It is a *plaintext* DSN leak wearing a diagnostics costume. Never exported.
|
|
25
|
+
* - `adminium_connections.ssl.caFileId` — a live file reference the target
|
|
26
|
+
* instance has no file for; nulled rather than left dangling.
|
|
27
|
+
* - `adminium_settings` secret keys (`llm.apiKey`, `email.smtp` — sourced from
|
|
28
|
+
* the registry's own `secret` flag, never a local copy of the list).
|
|
29
|
+
* - `adminium_settings` non-`portable` keys — the instance's own identity
|
|
30
|
+
* (`system.instanceId`, `system.bootstrappedAt`) and, above all, the
|
|
31
|
+
* `system.superAdminCreatedAt` bootstrap CLAIM. Also sourced from the
|
|
32
|
+
* registry, for the same reason and by the same mechanism as `secret`.
|
|
33
|
+
* - every `*_hash` column, `totp_secret_encrypted`, `secret_encrypted`,
|
|
34
|
+
* `license_key_encrypted` — they live in tables the export does not carry at
|
|
35
|
+
* all (users/sessions/api-keys/webhooks/manifests are instance data, not
|
|
36
|
+
* config), and {@link assertNoCredentialColumns} keeps it that way.
|
|
37
|
+
*/
|
|
38
|
+
import { SETTING_KEYS, isPortableSettingKey, isSecretSettingKey, isSettingKey } from '@adminium/meta';
|
|
39
|
+
import { ENC_TOKEN_PREFIX, isEncryptedSecret } from '../config/secrets.js';
|
|
40
|
+
/** Thrown when a value that must be ciphertext is not — the export aborts. */
|
|
41
|
+
export class PlaintextSecretError extends Error {
|
|
42
|
+
name = 'PlaintextSecretError';
|
|
43
|
+
constructor(where) {
|
|
44
|
+
super(`refusing to export ${where}: the value is not an "${ENC_TOKEN_PREFIX}" token. ` +
|
|
45
|
+
'A secret is only ever bundled still-encrypted; this one would have gone out in plaintext. ' +
|
|
46
|
+
'This is a bug in the write path that stored it — report it rather than working around it.');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Settings keys the export always drops, whatever `includeSecrets` says: they
|
|
51
|
+
* identify the *source instance* or record that its bootstrap already happened,
|
|
52
|
+
* neither of which is configuration.
|
|
53
|
+
*
|
|
54
|
+
* DERIVED from the registry's `portable` flag, not maintained here. It used to
|
|
55
|
+
* be a hand-written list of two — and it rotted inside the same wave that wrote
|
|
56
|
+
* it: `system.superAdminCreatedAt`, the once-only first-boot claim, was added to
|
|
57
|
+
* the registry and nobody remembered this file, so every full-instance bundle
|
|
58
|
+
* carried the claim. Importing one into a fresh install left it with zero users
|
|
59
|
+
* and `/setup/*` closed forever: unusable, unrecoverable, silent. Exactly the
|
|
60
|
+
* rot this module's header predicts of deny-lists. The registry is now the
|
|
61
|
+
* authority — a new key is non-portable until declared otherwise — and this
|
|
62
|
+
* constant is kept only because the manifest and the tests name it.
|
|
63
|
+
*/
|
|
64
|
+
export const INSTANCE_IDENTITY_SETTINGS = SETTING_KEYS.filter((key) => !isPortableSettingKey(key));
|
|
65
|
+
/**
|
|
66
|
+
* The per-table column allow-list. Keys are the tables the bundle carries;
|
|
67
|
+
* every other `adminium_*` table is instance data (users, sessions, api keys,
|
|
68
|
+
* audit, jobs, notifications, llm runs, files, …) and is not config.
|
|
69
|
+
*
|
|
70
|
+
* Columns listed here are the ONLY ones serialized. Secret-bearing columns are
|
|
71
|
+
* absent on purpose and are added back — as ciphertext — by
|
|
72
|
+
* {@link secretColumnsFor} when `includeSecrets` is on.
|
|
73
|
+
*/
|
|
74
|
+
export const EXPORTED_COLUMNS = {
|
|
75
|
+
adminium_settings: ['key', 'value'],
|
|
76
|
+
adminium_roles: ['id', 'slug', 'name', 'description', 'isBuiltin'],
|
|
77
|
+
adminium_role_permissions: ['id', 'roleId', 'resourceKind', 'resourceRef', 'actions'],
|
|
78
|
+
adminium_connections: ['id', 'name', 'engine', 'sourceKind', 'readOnly', 'ssl', 'settings'],
|
|
79
|
+
adminium_schema_snapshots: [
|
|
80
|
+
'id',
|
|
81
|
+
'connectionId',
|
|
82
|
+
'source',
|
|
83
|
+
'importFormat',
|
|
84
|
+
'engineVersion',
|
|
85
|
+
'schema',
|
|
86
|
+
'stats',
|
|
87
|
+
'checksum',
|
|
88
|
+
'isActive',
|
|
89
|
+
],
|
|
90
|
+
adminium_schema_overrides: [
|
|
91
|
+
'id',
|
|
92
|
+
'connectionId',
|
|
93
|
+
'op',
|
|
94
|
+
'tableName',
|
|
95
|
+
'columnName',
|
|
96
|
+
'value',
|
|
97
|
+
'origin',
|
|
98
|
+
'status',
|
|
99
|
+
'confidence',
|
|
100
|
+
],
|
|
101
|
+
adminium_pages: [
|
|
102
|
+
'id',
|
|
103
|
+
'connectionId',
|
|
104
|
+
'slug',
|
|
105
|
+
'type',
|
|
106
|
+
'title',
|
|
107
|
+
'icon',
|
|
108
|
+
'navGroup',
|
|
109
|
+
'navOrder',
|
|
110
|
+
'config',
|
|
111
|
+
'origin',
|
|
112
|
+
'generatedFromSnapshotId',
|
|
113
|
+
'isEnabled',
|
|
114
|
+
],
|
|
115
|
+
adminium_views: ['id', 'pageId', 'kind', 'name', 'config', 'isDefault'],
|
|
116
|
+
};
|
|
117
|
+
/** Ciphertext columns re-admitted only under `--include-secrets`. */
|
|
118
|
+
export function secretColumnsFor(table) {
|
|
119
|
+
return table === 'adminium_connections'
|
|
120
|
+
? ['introspectDsnEncrypted', 'dataDsnEncrypted']
|
|
121
|
+
: [];
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Column-name shapes that must never appear in a bundle. This is the
|
|
125
|
+
* belt-and-braces companion to the allow-list: the allow-list decides what gets
|
|
126
|
+
* in, this asserts nothing credential-shaped slipped through a typo or a future
|
|
127
|
+
* edit. Checked in a unit test against {@link EXPORTED_COLUMNS} itself, so the
|
|
128
|
+
* violation is caught at CI time and not at export time.
|
|
129
|
+
*/
|
|
130
|
+
const CREDENTIAL_COLUMN_PATTERNS = [
|
|
131
|
+
/hash$/i,
|
|
132
|
+
/token/i,
|
|
133
|
+
/password/i,
|
|
134
|
+
/secret/i,
|
|
135
|
+
/^recoveryCodes$/i,
|
|
136
|
+
/apiKey/i,
|
|
137
|
+
/lastError/i,
|
|
138
|
+
];
|
|
139
|
+
/** Throws if any allow-listed column looks credential-bearing. */
|
|
140
|
+
export function assertNoCredentialColumns() {
|
|
141
|
+
for (const [table, columns] of Object.entries(EXPORTED_COLUMNS)) {
|
|
142
|
+
for (const column of columns) {
|
|
143
|
+
const bad = CREDENTIAL_COLUMN_PATTERNS.find((re) => re.test(column));
|
|
144
|
+
if (bad !== undefined) {
|
|
145
|
+
throw new PlaintextSecretError(`${table}.${column} (matches ${String(bad)})`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Project a row down to its allow-listed columns. Anything not named is
|
|
152
|
+
* dropped — including columns added by a future migration.
|
|
153
|
+
*/
|
|
154
|
+
export function pickColumns(row, columns) {
|
|
155
|
+
const out = {};
|
|
156
|
+
for (const column of columns) {
|
|
157
|
+
if (row[column] !== undefined)
|
|
158
|
+
out[column] = row[column];
|
|
159
|
+
}
|
|
160
|
+
return out;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Verify a value destined for the bundle is an `enc:v1:` token, and return it.
|
|
164
|
+
* `null` passes through (an unset secret is not a secret).
|
|
165
|
+
*/
|
|
166
|
+
export function assertCiphertext(value, where) {
|
|
167
|
+
if (value === null || value === undefined)
|
|
168
|
+
return null;
|
|
169
|
+
if (typeof value !== 'string' || !isEncryptedSecret(value)) {
|
|
170
|
+
throw new PlaintextSecretError(where);
|
|
171
|
+
}
|
|
172
|
+
return value;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Apply the settings policy. BOTH flags — `secret` and `portable` — come from
|
|
176
|
+
* the `@adminium/meta` settings registry: the registry is the authority on what
|
|
177
|
+
* is sensitive and on what is configuration at all, so a new key is handled
|
|
178
|
+
* correctly the day it is declared, with no edit here. That is the "one code
|
|
179
|
+
* path" rule applied to redaction, and it fails closed in both directions (a new
|
|
180
|
+
* key is neither exported nor assumed harmless).
|
|
181
|
+
*/
|
|
182
|
+
export function redactSettings(rows, includeSecrets) {
|
|
183
|
+
const out = { rows: [], droppedSecretKeys: [], encryptedKeys: [] };
|
|
184
|
+
for (const row of rows) {
|
|
185
|
+
// Unknown/stale keys are not config this build understands — drop them
|
|
186
|
+
// rather than round-trip something we cannot validate.
|
|
187
|
+
if (!isSettingKey(row.key))
|
|
188
|
+
continue;
|
|
189
|
+
// Not configuration: instance identity, or the bootstrap claim.
|
|
190
|
+
if (!isPortableSettingKey(row.key))
|
|
191
|
+
continue;
|
|
192
|
+
if (!isSecretSettingKey(row.key)) {
|
|
193
|
+
out.rows.push({ key: row.key, value: row.value });
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
if (!includeSecrets) {
|
|
197
|
+
out.droppedSecretKeys.push(row.key);
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
// Secret key, secrets requested: it may only travel as ciphertext.
|
|
201
|
+
assertSecretSettingIsEncrypted(row.key, row.value);
|
|
202
|
+
out.rows.push({ key: row.key, value: row.value });
|
|
203
|
+
out.encryptedKeys.push(row.key);
|
|
204
|
+
}
|
|
205
|
+
return out;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* A secret setting is either a bare `enc:v1:` token (`llm.apiKey`) or an object
|
|
209
|
+
* with encrypted leaves (`email.smtp.passEncrypted`). Both are checked; a
|
|
210
|
+
* `null` value is an unset key and is fine.
|
|
211
|
+
*/
|
|
212
|
+
function assertSecretSettingIsEncrypted(key, value) {
|
|
213
|
+
if (value === null || value === undefined)
|
|
214
|
+
return;
|
|
215
|
+
if (typeof value === 'string') {
|
|
216
|
+
assertCiphertext(value, `settings.${key}`);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
if (typeof value === 'object' && !Array.isArray(value)) {
|
|
220
|
+
for (const [field, leaf] of Object.entries(value)) {
|
|
221
|
+
// Only the *Encrypted fields are secrets; host/port/user/from are config.
|
|
222
|
+
if (field.endsWith('Encrypted'))
|
|
223
|
+
assertCiphertext(leaf, `settings.${key}.${field}`);
|
|
224
|
+
}
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
throw new PlaintextSecretError(`settings.${key} (unexpected value shape)`);
|
|
228
|
+
}
|
|
229
|
+
/** True when the registry declares `key` secret. Re-exported for the manifest. */
|
|
230
|
+
export function isSecretKey(key) {
|
|
231
|
+
return isSettingKey(key) && isSecretSettingKey(key);
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=redaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redaction.js","sourceRoot":"","sources":["../../src/export/redaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zip-export service (M10-T03, 01-architecture.md §4.1/§6.1/§8.2; BRIEF §3).
|
|
3
|
+
*
|
|
4
|
+
* WHAT IT EXPORTS — the design decision the docs make loudly, so the
|
|
5
|
+
* implementation cannot drift: **server + config, never source code.** The zip
|
|
6
|
+
* carries the runtime-interpreted configuration — connection definitions
|
|
7
|
+
* (secrets excluded unless {@link ExportZipOptions.includeSecrets} is set),
|
|
8
|
+
* schema snapshots, overrides, pages/dashboards, views, settings, roles — plus a
|
|
9
|
+
* manifest for version replay on re-import and a README that says all of this in
|
|
10
|
+
* its first heading. Adminium does not emit an app; the bundle names its runtime
|
|
11
|
+
* by pinning the `@adminiumjs/adminium` npm package (01 §4.1: that one package *is* the
|
|
12
|
+
* complete install — server + dashboard dist + meta migrations), it does not
|
|
13
|
+
* carry a copy of it.
|
|
14
|
+
*
|
|
15
|
+
* The secret policy lives in `redaction.ts` and fails closed: every field that
|
|
16
|
+
* leaves is on an allow-list, and any value that must be ciphertext is asserted
|
|
17
|
+
* to be ciphertext before it is written. See that module's header.
|
|
18
|
+
*/
|
|
19
|
+
import { type MetaDb } from '@adminium/meta';
|
|
20
|
+
/** Bumped when the bundle layout changes (re-import replay). */
|
|
21
|
+
export declare const EXPORT_ZIP_MANIFEST_VERSION = 1;
|
|
22
|
+
export interface ExportZipOptions {
|
|
23
|
+
/** The meta store to read the configuration out of. */
|
|
24
|
+
meta: MetaDb;
|
|
25
|
+
/**
|
|
26
|
+
* Restrict the bundle to one connection's configuration. `null`/omitted
|
|
27
|
+
* exports the whole instance (every connection + instance-level settings).
|
|
28
|
+
*/
|
|
29
|
+
connectionId?: string | null | undefined;
|
|
30
|
+
/** Absolute or cwd-relative destination path for the `.zip`. */
|
|
31
|
+
outPath: string;
|
|
32
|
+
/**
|
|
33
|
+
* Include encrypted DSNs / provider keys in the bundle. Default `false` —
|
|
34
|
+
* an export is shareable by default; secrets are re-entered on re-import.
|
|
35
|
+
*/
|
|
36
|
+
includeSecrets?: boolean | undefined;
|
|
37
|
+
/** `ADMINIUM_DATA_DIR` — the bootstrap file + any file-backed artifacts. */
|
|
38
|
+
dataDir: string;
|
|
39
|
+
/** Version stamped into the manifest (defaults to the running app version). */
|
|
40
|
+
appVersion?: string | undefined;
|
|
41
|
+
/** Clock override — tests. */
|
|
42
|
+
now?: () => number;
|
|
43
|
+
}
|
|
44
|
+
export interface ExportZipResult {
|
|
45
|
+
/** Absolute path of the written archive. */
|
|
46
|
+
path: string;
|
|
47
|
+
/** Size of the written archive in bytes. */
|
|
48
|
+
bytes: number;
|
|
49
|
+
/** Archive member paths, for the CLI's summary line and the tests. */
|
|
50
|
+
entries: string[];
|
|
51
|
+
/** {@link EXPORT_ZIP_MANIFEST_VERSION} the bundle was written at. */
|
|
52
|
+
manifestVersion: number;
|
|
53
|
+
/** Row counts per exported resource, e.g. `{ pages: 12, overrides: 41 }`. */
|
|
54
|
+
counts: Readonly<Record<string, number>>;
|
|
55
|
+
}
|
|
56
|
+
/** The seam the CLI (and, later, the Studio download route) call. */
|
|
57
|
+
export type ExportZip = (opts: ExportZipOptions) => Promise<ExportZipResult>;
|
|
58
|
+
/**
|
|
59
|
+
* Export the instance's configuration to `outPath`.
|
|
60
|
+
*
|
|
61
|
+
* Ordering carries the secret guarantee: redaction runs while reading, the
|
|
62
|
+
* manifest is built from what redaction actually *did* (not from what was
|
|
63
|
+
* asked for), and only then are bytes produced.
|
|
64
|
+
*/
|
|
65
|
+
export declare const exportZip: ExportZip;
|
|
66
|
+
//# sourceMappingURL=zip-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip-service.d.ts","sourceRoot":"","sources":["../../src/export/zip-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAMH,OAAO,EAA6B,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAuBxE,gEAAgE;AAChE,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAU7C,MAAM,WAAW,gBAAgB;IAC/B,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACzC,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,8BAA8B;IAC9B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qEAAqE;IACrE,eAAe,EAAE,MAAM,CAAC;IACxB,6EAA6E;IAC7E,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC1C;AAED,qEAAqE;AACrE,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,gBAAgB,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;AAqP7E;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,EAAE,SAgEvB,CAAC"}
|