@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,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for the generated CRUD API (`routes/data/`,
|
|
3
|
+
* 08-server-api.md §2.7). Row payloads are dynamic per-table shapes and
|
|
4
|
+
* pass through as open records — identifier validation happens against the
|
|
5
|
+
* schema snapshot in the handlers, never here.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
export declare const rowSchema: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
9
|
+
export declare const dataTableParams: z.ZodObject<{
|
|
10
|
+
connectionId: z.ZodString;
|
|
11
|
+
table: z.ZodString;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
export declare const dataRecordParams: z.ZodObject<{
|
|
14
|
+
connectionId: z.ZodString;
|
|
15
|
+
table: z.ZodString;
|
|
16
|
+
recordId: z.ZodString;
|
|
17
|
+
}, z.core.$strip>;
|
|
18
|
+
export declare const recordListQuery: z.ZodObject<{
|
|
19
|
+
select: z.ZodOptional<z.ZodString>;
|
|
20
|
+
where: z.ZodOptional<z.ZodString>;
|
|
21
|
+
q: z.ZodOptional<z.ZodString>;
|
|
22
|
+
order: z.ZodOptional<z.ZodString>;
|
|
23
|
+
limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
24
|
+
offset: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
25
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
26
|
+
count: z.ZodOptional<z.ZodEnum<{
|
|
27
|
+
exact: "exact";
|
|
28
|
+
none: "none";
|
|
29
|
+
estimated: "estimated";
|
|
30
|
+
}>>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
export declare const recordListReply: z.ZodObject<{
|
|
33
|
+
data: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
34
|
+
page: z.ZodOptional<z.ZodObject<{
|
|
35
|
+
limit: z.ZodNumber;
|
|
36
|
+
offset: z.ZodNumber;
|
|
37
|
+
total: z.ZodNullable<z.ZodNumber>;
|
|
38
|
+
}, z.core.$strip>>;
|
|
39
|
+
cursor: z.ZodOptional<z.ZodObject<{
|
|
40
|
+
next: z.ZodNullable<z.ZodString>;
|
|
41
|
+
}, z.core.$strip>>;
|
|
42
|
+
}, z.core.$strip>;
|
|
43
|
+
export declare const recordGetQuery: z.ZodObject<{
|
|
44
|
+
include: z.ZodOptional<z.ZodEnum<{
|
|
45
|
+
inboundCounts: "inboundCounts";
|
|
46
|
+
}>>;
|
|
47
|
+
}, z.core.$strip>;
|
|
48
|
+
export declare const referenceCountSchema: z.ZodObject<{
|
|
49
|
+
relationId: z.ZodString;
|
|
50
|
+
table: z.ZodString;
|
|
51
|
+
column: z.ZodString;
|
|
52
|
+
count: z.ZodNumber;
|
|
53
|
+
}, z.core.$strip>;
|
|
54
|
+
export declare const recordReply: z.ZodObject<{
|
|
55
|
+
data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
56
|
+
inboundCounts: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
57
|
+
relationId: z.ZodString;
|
|
58
|
+
table: z.ZodString;
|
|
59
|
+
column: z.ZodString;
|
|
60
|
+
count: z.ZodNumber;
|
|
61
|
+
}, z.core.$strip>>>;
|
|
62
|
+
}, z.core.$strip>;
|
|
63
|
+
export declare const referencesReply: z.ZodObject<{
|
|
64
|
+
references: z.ZodArray<z.ZodObject<{
|
|
65
|
+
relationId: z.ZodString;
|
|
66
|
+
table: z.ZodString;
|
|
67
|
+
column: z.ZodString;
|
|
68
|
+
count: z.ZodNumber;
|
|
69
|
+
}, z.core.$strip>>;
|
|
70
|
+
}, z.core.$strip>;
|
|
71
|
+
export declare const recordCreateBody: z.ZodObject<{
|
|
72
|
+
values: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
73
|
+
}, z.core.$strip>;
|
|
74
|
+
export declare const recordUpdateBody: z.ZodObject<{
|
|
75
|
+
values: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
76
|
+
}, z.core.$strip>;
|
|
77
|
+
export declare const recordDeleteQuery: z.ZodObject<{
|
|
78
|
+
dryRun: z.ZodOptional<z.ZodCoercedBoolean<unknown>>;
|
|
79
|
+
confirm: z.ZodOptional<z.ZodCoercedBoolean<unknown>>;
|
|
80
|
+
}, z.core.$strip>;
|
|
81
|
+
export declare const recordMutationReply: z.ZodObject<{
|
|
82
|
+
data: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
83
|
+
undoToken: z.ZodNullable<z.ZodString>;
|
|
84
|
+
}, z.core.$strip>;
|
|
85
|
+
export declare const recordCascadeReply: z.ZodObject<{
|
|
86
|
+
references: z.ZodArray<z.ZodObject<{
|
|
87
|
+
relationId: z.ZodString;
|
|
88
|
+
table: z.ZodString;
|
|
89
|
+
column: z.ZodString;
|
|
90
|
+
count: z.ZodNumber;
|
|
91
|
+
}, z.core.$strip>>;
|
|
92
|
+
requiresConfirm: z.ZodBoolean;
|
|
93
|
+
}, z.core.$strip>;
|
|
94
|
+
export declare const recordDeleteReply: z.ZodUnion<readonly [z.ZodObject<{
|
|
95
|
+
data: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
96
|
+
undoToken: z.ZodNullable<z.ZodString>;
|
|
97
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
98
|
+
references: z.ZodArray<z.ZodObject<{
|
|
99
|
+
relationId: z.ZodString;
|
|
100
|
+
table: z.ZodString;
|
|
101
|
+
column: z.ZodString;
|
|
102
|
+
count: z.ZodNumber;
|
|
103
|
+
}, z.core.$strip>>;
|
|
104
|
+
requiresConfirm: z.ZodBoolean;
|
|
105
|
+
}, z.core.$strip>]>;
|
|
106
|
+
export declare const recordBulkBody: z.ZodObject<{
|
|
107
|
+
action: z.ZodEnum<{
|
|
108
|
+
delete: "delete";
|
|
109
|
+
update: "update";
|
|
110
|
+
}>;
|
|
111
|
+
ids: z.ZodArray<z.ZodUnknown>;
|
|
112
|
+
values: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
113
|
+
}, z.core.$strip>;
|
|
114
|
+
export declare const recordBulkReply: z.ZodObject<{
|
|
115
|
+
results: z.ZodArray<z.ZodObject<{
|
|
116
|
+
id: z.ZodUnknown;
|
|
117
|
+
ok: z.ZodBoolean;
|
|
118
|
+
error: z.ZodOptional<z.ZodString>;
|
|
119
|
+
}, z.core.$strip>>;
|
|
120
|
+
undoToken: z.ZodNullable<z.ZodString>;
|
|
121
|
+
}, z.core.$strip>;
|
|
122
|
+
export declare const undoParams: z.ZodObject<{
|
|
123
|
+
token: z.ZodString;
|
|
124
|
+
}, z.core.$strip>;
|
|
125
|
+
export declare const undoReply: z.ZodObject<{
|
|
126
|
+
restoredIds: z.ZodArray<z.ZodUnknown>;
|
|
127
|
+
}, z.core.$strip>;
|
|
128
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/routes/data/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,SAAS,wCAAoC,CAAC;AAE3D,eAAO,MAAM,eAAe;;;iBAI1B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;iBAG3B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;iBAY1B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;iBAM1B,CAAC;AAEH,eAAO,MAAM,cAAc;;;;iBAEzB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;iBAK/B,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;iBAGtB,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;iBAE1B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;iBAAkC,CAAC;AAChE,eAAO,MAAM,gBAAgB;;iBAAkC,CAAC;AAEhE,eAAO,MAAM,iBAAiB;;;iBAK5B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;iBAI9B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;iBAG7B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;mBAAqD,CAAC;AAEpF,eAAO,MAAM,cAAc;;;;;;;iBAIzB,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;iBAG1B,CAAC;AAEH,eAAO,MAAM,UAAU;;iBAAyC,CAAC;AACjE,eAAO,MAAM,SAAS;;iBAAkD,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for the generated CRUD API (`routes/data/`,
|
|
3
|
+
* 08-server-api.md §2.7). Row payloads are dynamic per-table shapes and
|
|
4
|
+
* pass through as open records — identifier validation happens against the
|
|
5
|
+
* schema snapshot in the handlers, never here.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
export const rowSchema = z.record(z.string(), z.unknown());
|
|
9
|
+
export const dataTableParams = z.object({
|
|
10
|
+
connectionId: z.string().min(1),
|
|
11
|
+
/** URL-encoded qualified name, e.g. `public.customers` (§2.7). */
|
|
12
|
+
table: z.string().min(1),
|
|
13
|
+
});
|
|
14
|
+
export const dataRecordParams = dataTableParams.extend({
|
|
15
|
+
/** Single PK value, or JSON tuple/object for composite PKs (§2.7.2). */
|
|
16
|
+
recordId: z.string().min(1),
|
|
17
|
+
});
|
|
18
|
+
export const recordListQuery = z.object({
|
|
19
|
+
select: z.string().optional(),
|
|
20
|
+
/** URL-encoded JSON filter tree (§2.7.1 grammar). */
|
|
21
|
+
where: z.string().optional(),
|
|
22
|
+
q: z.string().optional(),
|
|
23
|
+
/** `col.desc,col2.asc` — ≤ 3 keys. */
|
|
24
|
+
order: z.string().optional(),
|
|
25
|
+
limit: z.coerce.number().int().min(1).max(200).optional(),
|
|
26
|
+
offset: z.coerce.number().int().min(0).optional(),
|
|
27
|
+
/** Keyset cursor; empty string = first keyset page. */
|
|
28
|
+
cursor: z.string().optional(),
|
|
29
|
+
count: z.enum(['exact', 'estimated', 'none']).optional(),
|
|
30
|
+
});
|
|
31
|
+
export const recordListReply = z.object({
|
|
32
|
+
data: z.array(rowSchema),
|
|
33
|
+
page: z
|
|
34
|
+
.object({ limit: z.number(), offset: z.number(), total: z.number().nullable() })
|
|
35
|
+
.optional(),
|
|
36
|
+
cursor: z.object({ next: z.string().nullable() }).optional(),
|
|
37
|
+
});
|
|
38
|
+
export const recordGetQuery = z.object({
|
|
39
|
+
include: z.enum(['inboundCounts']).optional(),
|
|
40
|
+
});
|
|
41
|
+
export const referenceCountSchema = z.object({
|
|
42
|
+
relationId: z.string(),
|
|
43
|
+
table: z.string(),
|
|
44
|
+
column: z.string(),
|
|
45
|
+
count: z.number(),
|
|
46
|
+
});
|
|
47
|
+
export const recordReply = z.object({
|
|
48
|
+
data: rowSchema,
|
|
49
|
+
inboundCounts: z.array(referenceCountSchema).optional(),
|
|
50
|
+
});
|
|
51
|
+
export const referencesReply = z.object({
|
|
52
|
+
references: z.array(referenceCountSchema),
|
|
53
|
+
});
|
|
54
|
+
export const recordCreateBody = z.object({ values: rowSchema });
|
|
55
|
+
export const recordUpdateBody = z.object({ values: rowSchema });
|
|
56
|
+
export const recordDeleteQuery = z.object({
|
|
57
|
+
/** Referential consequences only — no write happens (§2.7.2). */
|
|
58
|
+
dryRun: z.coerce.boolean().optional(),
|
|
59
|
+
/** Required when inbound references exist (cascade modal confirm). */
|
|
60
|
+
confirm: z.coerce.boolean().optional(),
|
|
61
|
+
});
|
|
62
|
+
export const recordMutationReply = z.object({
|
|
63
|
+
data: rowSchema.nullable(),
|
|
64
|
+
/** Single-use undo token (§2.7.3); null for non-undoable mutations. */
|
|
65
|
+
undoToken: z.string().nullable(),
|
|
66
|
+
});
|
|
67
|
+
export const recordCascadeReply = z.object({
|
|
68
|
+
references: z.array(referenceCountSchema),
|
|
69
|
+
requiresConfirm: z.boolean(),
|
|
70
|
+
});
|
|
71
|
+
export const recordDeleteReply = z.union([recordMutationReply, recordCascadeReply]);
|
|
72
|
+
export const recordBulkBody = z.object({
|
|
73
|
+
action: z.enum(['update', 'delete']),
|
|
74
|
+
ids: z.array(z.unknown()).min(1).max(1000),
|
|
75
|
+
values: rowSchema.optional(),
|
|
76
|
+
});
|
|
77
|
+
export const recordBulkReply = z.object({
|
|
78
|
+
results: z.array(z.object({ id: z.unknown(), ok: z.boolean(), error: z.string().optional() })),
|
|
79
|
+
undoToken: z.string().nullable(),
|
|
80
|
+
});
|
|
81
|
+
export const undoParams = z.object({ token: z.string().min(1) });
|
|
82
|
+
export const undoReply = z.object({ restoredIds: z.array(z.unknown()) });
|
|
83
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/routes/data/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `POST /api/v1/desktop/backup` — the §9 backup, run where the data lives
|
|
3
|
+
* (11-electron.md §9, §1 principle 2).
|
|
4
|
+
*
|
|
5
|
+
* ─── The gates, in order, mirroring `routes/auth/desktop-session.ts` ─────────
|
|
6
|
+
*
|
|
7
|
+
* 1. EXISTENCE. `compose.ts` registers this factory only when
|
|
8
|
+
* `ADMINIUM_RUNTIME=desktop`. A self-host, Docker or npx instance does not
|
|
9
|
+
* have the route at all — an absent route cannot be misconfigured or
|
|
10
|
+
* bypassed, which is why §5's sibling takes the same shape. It is also
|
|
11
|
+
* simply correct: `<dataDir>/backups` and `config.json` are desktop
|
|
12
|
+
* concepts, and self-host's answer to "back up my instance" is
|
|
13
|
+
* `adminium export-zip` plus whatever backs up its Postgres.
|
|
14
|
+
* 2. PEER. The SOCKET's `remoteAddress` must be loopback. Not `request.ip` —
|
|
15
|
+
* see `auth/desktop-session.ts` for why that distinction is the difference
|
|
16
|
+
* between a check and a vulnerability. It matters here for the same reason
|
|
17
|
+
* it matters there: §8.3 binds `0.0.0.0` whenever LAN share is on, and a
|
|
18
|
+
* backup archive is every row in every database plus every user record.
|
|
19
|
+
* Whoever can call this can exfiltrate the whole install in one request.
|
|
20
|
+
* 3. SESSION + RBAC. `system:settings:manage`, i.e. Super Admin. There is no
|
|
21
|
+
* `backups.manage` in meta's closed set (`SYSTEM_ACTION_KEYS`) and this
|
|
22
|
+
* route is not the place to invent one; `settings:manage` is the strictest
|
|
23
|
+
* grant that exists and a backup deserves the strictest. A LAN user with a
|
|
24
|
+
* real super-admin account CAN take a backup — that is §8.3's RBAC promise
|
|
25
|
+
* working, not a hole — but gate 2 means they cannot: they are not loopback.
|
|
26
|
+
* Both gates, and the AND is the point.
|
|
27
|
+
*
|
|
28
|
+
* ─── The save dialog's path never reaches this process ───────────────────────
|
|
29
|
+
*
|
|
30
|
+
* §9's manual flow is "saveFile dialog → server does the work", which reads like
|
|
31
|
+
* the chosen path should be the request body. It is not, and this is the one
|
|
32
|
+
* design decision in the route worth arguing with. An `outPath` parameter would
|
|
33
|
+
* make this endpoint an arbitrary-file-write primitive with the server's
|
|
34
|
+
* privileges: post `{ outPath: "~/.zshrc" }` and the reply tells you it worked.
|
|
35
|
+
* Every gate above would have to hold forever for that to stay safe, and gates
|
|
36
|
+
* are exactly the things that get relaxed.
|
|
37
|
+
*
|
|
38
|
+
* So the server writes only inside `<dataDir>/backups`, and `destination:
|
|
39
|
+
* "staged"` puts the archive somewhere the MAIN PROCESS can then move to the
|
|
40
|
+
* path the user picked. Main is allowed to write there — the user just chose it
|
|
41
|
+
* in a native dialog — and main is where §4 already puts every other path
|
|
42
|
+
* decision (`main/ipc.ts`'s `saveFileSchema` refuses a separator inside
|
|
43
|
+
* `defaultName` for precisely this reason). The cost is one rename; the benefit
|
|
44
|
+
* is that the API surface has no path in it to abuse.
|
|
45
|
+
*/
|
|
46
|
+
import type { FastifyPluginAsyncZod } from 'fastify-type-provider-zod';
|
|
47
|
+
import type { DsnCrypto, MetaDb } from '@adminium/meta';
|
|
48
|
+
export interface DesktopRoutesDeps {
|
|
49
|
+
meta: MetaDb;
|
|
50
|
+
/** Decrypts source DSNs so local SQLite files can be located. */
|
|
51
|
+
crypto: DsnCrypto;
|
|
52
|
+
/** `ADMINIUM_DATA_DIR`. */
|
|
53
|
+
dataDir: string;
|
|
54
|
+
/** Absolute path of the live meta store file (`<dataDir>/meta.db` on desktop). */
|
|
55
|
+
metaPath: string;
|
|
56
|
+
/** The shell's `app.getVersion()`, forwarded through the fork env. */
|
|
57
|
+
appVersion?: string | null | undefined;
|
|
58
|
+
now?: (() => number) | undefined;
|
|
59
|
+
}
|
|
60
|
+
export declare function desktopRoutes(deps: DesktopRoutesDeps): FastifyPluginAsyncZod;
|
|
61
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/desktop/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAaxD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,MAAM,EAAE,SAAS,CAAC;IAClB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACvC,GAAG,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC;CAClC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,qBAAqB,CAuG5E"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { isLoopbackPeer } from '../../auth/desktop-session.js';
|
|
2
|
+
import { createBackup, rotateBackupsOnDisk, } from '../../backup/backup-service.js';
|
|
3
|
+
import { notifyBackupCompleted } from '../../backup/notify.js';
|
|
4
|
+
import { AppError } from '../../errors.js';
|
|
5
|
+
import { PERMISSIONS } from '../../rbac/permissions.js';
|
|
6
|
+
import { desktopBackupBody, desktopBackupReply } from './schema.js';
|
|
7
|
+
export function desktopRoutes(deps) {
|
|
8
|
+
return async (app) => {
|
|
9
|
+
app.post('/desktop/backup', {
|
|
10
|
+
// Gate 3. `rbac.require` runs `requireAuth` semantics for us: an
|
|
11
|
+
// anonymous request has no principal to resolve and is refused before
|
|
12
|
+
// the handler exists.
|
|
13
|
+
preHandler: [app.requireMeta, app.rbac.require(PERMISSIONS.settingsManage)],
|
|
14
|
+
schema: { body: desktopBackupBody, response: { 200: desktopBackupReply } },
|
|
15
|
+
}, async (request) => {
|
|
16
|
+
// Gate 2. Before any work: a non-loopback caller learns nothing about
|
|
17
|
+
// this install, not even how long a backup takes.
|
|
18
|
+
if (!isLoopbackPeer(request.raw.socket)) {
|
|
19
|
+
throw new AppError(403, 'FORBIDDEN', 'Backups can only be taken from the computer Adminium is running on.');
|
|
20
|
+
}
|
|
21
|
+
const { destination, keep } = request.body;
|
|
22
|
+
const result = await createBackup({
|
|
23
|
+
meta: deps.meta,
|
|
24
|
+
crypto: deps.crypto,
|
|
25
|
+
dataDir: deps.dataDir,
|
|
26
|
+
metaPath: deps.metaPath,
|
|
27
|
+
redactedConfig: request.body.config ?? null,
|
|
28
|
+
appVersion: deps.appVersion ?? null,
|
|
29
|
+
destination,
|
|
30
|
+
...(deps.now === undefined ? {} : { now: deps.now }),
|
|
31
|
+
});
|
|
32
|
+
let rotated = { kept: [], removed: [] };
|
|
33
|
+
if (destination === 'auto') {
|
|
34
|
+
rotated = await rotateBackupsOnDisk(deps.dataDir, keep);
|
|
35
|
+
await raiseNotification(request, result.path, result.bytes, result.manifest);
|
|
36
|
+
}
|
|
37
|
+
// A backup is a `system`-category event with no `changes` worth
|
|
38
|
+
// recording: the archive's contents are the manifest, and the manifest
|
|
39
|
+
// is in the reply. What an audit reader needs is that it HAPPENED, by
|
|
40
|
+
// whom, from where — which is what `audit` already writes.
|
|
41
|
+
await app.rbac.audit(request, {
|
|
42
|
+
action: 'desktop_backup_created',
|
|
43
|
+
category: 'system',
|
|
44
|
+
changes: {
|
|
45
|
+
after: {
|
|
46
|
+
destination,
|
|
47
|
+
databases: result.manifest.databases.filter((entry) => entry.kind === 'local').length,
|
|
48
|
+
bytes: result.bytes,
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
return {
|
|
53
|
+
data: {
|
|
54
|
+
path: result.path,
|
|
55
|
+
bytes: result.bytes,
|
|
56
|
+
manifest: result.manifest,
|
|
57
|
+
rotated: rotated.removed,
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* §9's "Completion raises an `adminium_notifications` entry".
|
|
64
|
+
*
|
|
65
|
+
* Best-effort, and deliberately so: the archive is already on disk and its
|
|
66
|
+
* path is already in the reply. Failing the request because a courtesy row
|
|
67
|
+
* did not insert would turn a successful backup into a reported failure — and
|
|
68
|
+
* the scheduler, seeing a failure, would try again, and take another backup.
|
|
69
|
+
* Logged at `warn` so it is not silent.
|
|
70
|
+
*/
|
|
71
|
+
async function raiseNotification(request, path, bytes, manifest) {
|
|
72
|
+
const userId = request.user?.id;
|
|
73
|
+
// An API-key principal has no notification inbox (`user_id` is NOT NULL).
|
|
74
|
+
// Not an error: a fleet script taking backups wants the archive, not a bell.
|
|
75
|
+
if (userId === undefined)
|
|
76
|
+
return;
|
|
77
|
+
try {
|
|
78
|
+
await notifyBackupCompleted({
|
|
79
|
+
meta: deps.meta,
|
|
80
|
+
userId,
|
|
81
|
+
path,
|
|
82
|
+
bytes,
|
|
83
|
+
databases: manifest.databases.filter((entry) => entry.kind === 'local').length,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
request.log.warn({ err: error }, 'backup completed but its notification could not be written');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/desktop/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire schemas for `POST /api/v1/desktop/backup` (11-electron.md §9).
|
|
3
|
+
*
|
|
4
|
+
* The reply carries the whole manifest rather than a summary, because the two
|
|
5
|
+
* callers both need it and neither can re-derive it: the Electron main process
|
|
6
|
+
* puts `metaMigrationVersion` and the local-database list in front of the user
|
|
7
|
+
* before a restore, and the M10 CLI reads the same manifest out of the archive.
|
|
8
|
+
* One shape, described once, in `backup/format.ts`.
|
|
9
|
+
*/
|
|
10
|
+
import { z } from 'zod';
|
|
11
|
+
/**
|
|
12
|
+
* §9's two trigger paths, as the one thing that actually differs between them:
|
|
13
|
+
* where the archive lands and what happens afterwards.
|
|
14
|
+
*
|
|
15
|
+
* - `staged`: File → "Back up now…" and Settings → Desktop → Backups. The
|
|
16
|
+
* archive goes to a staging directory and the MAIN PROCESS moves it to the
|
|
17
|
+
* path the user picked in the save dialog. Not rotated (it is leaving the
|
|
18
|
+
* data dir) and not notified (main reveals it in the file manager, which is
|
|
19
|
+
* a better answer than a notification about a file already on screen).
|
|
20
|
+
* - `auto`: the §9 scheduler. Lands in `<dataDir>/backups/`, rotates to
|
|
21
|
+
* `keep`, and raises the notification — because nobody is watching.
|
|
22
|
+
*
|
|
23
|
+
* NOTE WHAT IS NOT IN THIS BODY: a destination path. The save dialog's result
|
|
24
|
+
* never reaches the server. See the route header — this is the same rule
|
|
25
|
+
* `main/ipc.ts`'s `saveFileSchema` states when it refuses a separator inside
|
|
26
|
+
* `defaultName`: the renderer does not choose paths.
|
|
27
|
+
*/
|
|
28
|
+
export declare const desktopBackupBody: z.ZodObject<{
|
|
29
|
+
destination: z.ZodEnum<{
|
|
30
|
+
auto: "auto";
|
|
31
|
+
staged: "staged";
|
|
32
|
+
}>;
|
|
33
|
+
keep: z.ZodDefault<z.ZodNumber>;
|
|
34
|
+
config: z.ZodOptional<z.ZodUnknown>;
|
|
35
|
+
}, z.core.$strict>;
|
|
36
|
+
export type DesktopBackupBody = z.infer<typeof desktopBackupBody>;
|
|
37
|
+
export declare const desktopBackupReply: z.ZodObject<{
|
|
38
|
+
data: z.ZodObject<{
|
|
39
|
+
path: z.ZodString;
|
|
40
|
+
bytes: z.ZodNumber;
|
|
41
|
+
manifest: z.ZodObject<{
|
|
42
|
+
formatVersion: z.ZodNumber;
|
|
43
|
+
appVersion: z.ZodNullable<z.ZodString>;
|
|
44
|
+
serverVersion: z.ZodString;
|
|
45
|
+
metaMigrationVersion: z.ZodString;
|
|
46
|
+
createdAt: z.ZodNumber;
|
|
47
|
+
meta: z.ZodObject<{
|
|
48
|
+
file: z.ZodLiteral<"meta.db">;
|
|
49
|
+
bytes: z.ZodNumber;
|
|
50
|
+
sha256: z.ZodString;
|
|
51
|
+
}, z.core.$strict>;
|
|
52
|
+
databases: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
53
|
+
kind: z.ZodLiteral<"local">;
|
|
54
|
+
slug: z.ZodString;
|
|
55
|
+
file: z.ZodString;
|
|
56
|
+
bytes: z.ZodNumber;
|
|
57
|
+
sha256: z.ZodString;
|
|
58
|
+
connectionId: z.ZodString;
|
|
59
|
+
sourcePath: z.ZodString;
|
|
60
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
61
|
+
kind: z.ZodLiteral<"external">;
|
|
62
|
+
slug: z.ZodString;
|
|
63
|
+
connectionId: z.ZodString;
|
|
64
|
+
engine: z.ZodString;
|
|
65
|
+
}, z.core.$strict>], "kind">>;
|
|
66
|
+
}, z.core.$strict>;
|
|
67
|
+
rotated: z.ZodArray<z.ZodString>;
|
|
68
|
+
}, z.core.$strip>;
|
|
69
|
+
}, z.core.$strip>;
|
|
70
|
+
export type DesktopBackupReply = z.infer<typeof desktopBackupReply>;
|
|
71
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/routes/desktop/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,iBAAiB;;;;;;;kBAiB5B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAS7B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire schemas for `POST /api/v1/desktop/backup` (11-electron.md §9).
|
|
3
|
+
*
|
|
4
|
+
* The reply carries the whole manifest rather than a summary, because the two
|
|
5
|
+
* callers both need it and neither can re-derive it: the Electron main process
|
|
6
|
+
* puts `metaMigrationVersion` and the local-database list in front of the user
|
|
7
|
+
* before a restore, and the M10 CLI reads the same manifest out of the archive.
|
|
8
|
+
* One shape, described once, in `backup/format.ts`.
|
|
9
|
+
*/
|
|
10
|
+
import { z } from 'zod';
|
|
11
|
+
import { backupManifestSchema } from '../../backup/format.js';
|
|
12
|
+
import { DEFAULT_AUTO_BACKUP_KEEP } from '../../backup/backup-service.js';
|
|
13
|
+
/**
|
|
14
|
+
* §9's two trigger paths, as the one thing that actually differs between them:
|
|
15
|
+
* where the archive lands and what happens afterwards.
|
|
16
|
+
*
|
|
17
|
+
* - `staged`: File → "Back up now…" and Settings → Desktop → Backups. The
|
|
18
|
+
* archive goes to a staging directory and the MAIN PROCESS moves it to the
|
|
19
|
+
* path the user picked in the save dialog. Not rotated (it is leaving the
|
|
20
|
+
* data dir) and not notified (main reveals it in the file manager, which is
|
|
21
|
+
* a better answer than a notification about a file already on screen).
|
|
22
|
+
* - `auto`: the §9 scheduler. Lands in `<dataDir>/backups/`, rotates to
|
|
23
|
+
* `keep`, and raises the notification — because nobody is watching.
|
|
24
|
+
*
|
|
25
|
+
* NOTE WHAT IS NOT IN THIS BODY: a destination path. The save dialog's result
|
|
26
|
+
* never reaches the server. See the route header — this is the same rule
|
|
27
|
+
* `main/ipc.ts`'s `saveFileSchema` states when it refuses a separator inside
|
|
28
|
+
* `defaultName`: the renderer does not choose paths.
|
|
29
|
+
*/
|
|
30
|
+
export const desktopBackupBody = z.strictObject({
|
|
31
|
+
destination: z.enum(['staged', 'auto']),
|
|
32
|
+
/** §9's `autoBackup.keep`. Ignored for `staged`. Bounds match `config.json`. */
|
|
33
|
+
keep: z.number().int().min(1).max(365).default(DEFAULT_AUTO_BACKUP_KEEP),
|
|
34
|
+
/**
|
|
35
|
+
* The desktop `config.json`, ALREADY REDACTED by its owner (§2.3: the main
|
|
36
|
+
* process is that file's only reader). Passed in rather than read here
|
|
37
|
+
* because this process cannot see `<userData>` — it only knows `dataDir`.
|
|
38
|
+
*
|
|
39
|
+
* `unknown` on the wire and re-asserted in the service (`assertNoSecrets`):
|
|
40
|
+
* a schema here would be a second copy of `main/config.ts`'s, in a package
|
|
41
|
+
* that must not know that shape, and it would drift. What this boundary
|
|
42
|
+
* enforces is not the config's shape but the one property that matters — no
|
|
43
|
+
* secret leaves in the archive — and it enforces it by inspection, not by
|
|
44
|
+
* trusting the caller to have used `redactConfig`.
|
|
45
|
+
*/
|
|
46
|
+
config: z.unknown().optional(),
|
|
47
|
+
});
|
|
48
|
+
export const desktopBackupReply = z.object({
|
|
49
|
+
data: z.object({
|
|
50
|
+
/** Absolute path of the archive on this machine. */
|
|
51
|
+
path: z.string(),
|
|
52
|
+
bytes: z.number().int().nonnegative(),
|
|
53
|
+
manifest: backupManifestSchema,
|
|
54
|
+
/** Archive filenames rotation removed. Empty for `staged`. */
|
|
55
|
+
rotated: z.array(z.string()),
|
|
56
|
+
}),
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/routes/desktop/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,YAAY,CAAC;IAC9C,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACvC,gFAAgF;IAChF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC;IACxE;;;;;;;;;;;OAWG;IACH,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,oDAAoD;QACpD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;QACrC,QAAQ,EAAE,oBAAoB;QAC9B,8DAA8D;QAC9D,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC7B,CAAC;CACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { FastifyPluginAsyncZod } from 'fastify-type-provider-zod';
|
|
2
|
+
import type { MetaDb } from '@adminium/meta';
|
|
3
|
+
export interface DesktopCapabilityRoutesDeps {
|
|
4
|
+
meta: MetaDb;
|
|
5
|
+
/** Injectable clock for a deterministic `grantedAt` in tests. */
|
|
6
|
+
now?: (() => number) | undefined;
|
|
7
|
+
}
|
|
8
|
+
export declare function desktopCapabilityRoutes(deps: DesktopCapabilityRoutesDeps): FastifyPluginAsyncZod;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routes/desktop-capabilities/index.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAgB7C,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,GAAG,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC;CAClC;AAaD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,2BAA2B,GAChC,qBAAqB,CAuEvB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { isLoopbackPeer } from '../../auth/desktop-session.js';
|
|
2
|
+
import { addGrant, listGrants, removeGrant } from '../../capabilities/grants.js';
|
|
3
|
+
import { AppError } from '../../errors.js';
|
|
4
|
+
import { PERMISSIONS } from '../../rbac/permissions.js';
|
|
5
|
+
import { capabilityGrantRefBody, capabilityGrantReply, capabilityGrantsListReply, capabilityRevokeReply, } from './schema.js';
|
|
6
|
+
/** Gate 2. A non-loopback caller learns nothing about this machine's grants. */
|
|
7
|
+
function assertLoopback(socket) {
|
|
8
|
+
if (!isLoopbackPeer(socket)) {
|
|
9
|
+
throw new AppError(403, 'FORBIDDEN', 'Capability access can only be changed from the computer Adminium is running on.');
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export function desktopCapabilityRoutes(deps) {
|
|
13
|
+
return async (app) => {
|
|
14
|
+
app.get('/desktop/capability-grants', {
|
|
15
|
+
preHandler: [app.requireMeta, app.rbac.require(PERMISSIONS.settingsManage)],
|
|
16
|
+
schema: { response: { 200: capabilityGrantsListReply } },
|
|
17
|
+
}, async (request) => {
|
|
18
|
+
assertLoopback(request.raw.socket);
|
|
19
|
+
return { data: { grants: await listGrants(deps.meta) } };
|
|
20
|
+
});
|
|
21
|
+
app.post('/desktop/capability-grants', {
|
|
22
|
+
preHandler: [app.requireMeta, app.rbac.require(PERMISSIONS.settingsManage)],
|
|
23
|
+
schema: { body: capabilityGrantRefBody, response: { 200: capabilityGrantReply } },
|
|
24
|
+
}, async (request) => {
|
|
25
|
+
assertLoopback(request.raw.socket);
|
|
26
|
+
const { manifestId, capabilityId } = request.body;
|
|
27
|
+
const grant = await addGrant(deps.meta, { manifestId, capabilityId }, {
|
|
28
|
+
...(deps.now === undefined ? {} : { now: deps.now() }),
|
|
29
|
+
updatedBy: request.user?.id ?? null,
|
|
30
|
+
});
|
|
31
|
+
// A grant is a `settings`-category act, gated on `settings:manage`, so it
|
|
32
|
+
// is audited like one: who consented which app to which capability, from
|
|
33
|
+
// where. The grant IS the change — there is nothing else to record.
|
|
34
|
+
await app.rbac.audit(request, {
|
|
35
|
+
action: 'desktop_capability_granted',
|
|
36
|
+
category: 'settings',
|
|
37
|
+
changes: { after: { manifestId, capabilityId } },
|
|
38
|
+
});
|
|
39
|
+
return { data: { grant } };
|
|
40
|
+
});
|
|
41
|
+
app.delete('/desktop/capability-grants', {
|
|
42
|
+
preHandler: [app.requireMeta, app.rbac.require(PERMISSIONS.settingsManage)],
|
|
43
|
+
schema: { body: capabilityGrantRefBody, response: { 200: capabilityRevokeReply } },
|
|
44
|
+
}, async (request) => {
|
|
45
|
+
assertLoopback(request.raw.socket);
|
|
46
|
+
const { manifestId, capabilityId } = request.body;
|
|
47
|
+
const removed = await removeGrant(deps.meta, { manifestId, capabilityId }, { updatedBy: request.user?.id ?? null });
|
|
48
|
+
// Only audit a real revocation. A no-op DELETE (nothing was granted) is
|
|
49
|
+
// not an event; auditing it would fill the log with the consequences of
|
|
50
|
+
// a double-click.
|
|
51
|
+
if (removed) {
|
|
52
|
+
await app.rbac.audit(request, {
|
|
53
|
+
action: 'desktop_capability_revoked',
|
|
54
|
+
category: 'settings',
|
|
55
|
+
changes: { before: { manifestId, capabilityId } },
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return { data: { removed } };
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/routes/desktop-capabilities/index.ts"],"names":[],"mappings":"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"}
|