@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,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite snapshotting for the §9 backup (11-electron.md §9), and the discovery
|
|
3
|
+
* of what there is to snapshot.
|
|
4
|
+
*
|
|
5
|
+
* ─── Why `backup()` and not `copyFile()` ─────────────────────────────────────
|
|
6
|
+
*
|
|
7
|
+
* §9 is specific — "the server snapshots each SQLite file with the
|
|
8
|
+
* `better-sqlite3` online `backup()` API (WAL-safe, no locking of live writers)"
|
|
9
|
+
* — and the alternative it rules out is not merely inferior, it is silently
|
|
10
|
+
* wrong. Every local database runs `journal_mode = WAL` (§9's pragma block), so
|
|
11
|
+
* a committed row lives in `<db>-wal` until a checkpoint folds it back. Copying
|
|
12
|
+
* the `.sqlite` file therefore copies a database that is missing its most recent
|
|
13
|
+
* commits; copying all three files copies them at three different instants, so
|
|
14
|
+
* the WAL can describe pages the main file does not have yet. Both produce an
|
|
15
|
+
* archive that unzips, opens, passes `PRAGMA integrity_check`, and has lost
|
|
16
|
+
* data — the worst failure a backup can have, because it is invisible until the
|
|
17
|
+
* restore.
|
|
18
|
+
*
|
|
19
|
+
* `backup()` runs SQLite's own online backup: it reads through the same page
|
|
20
|
+
* cache and WAL a reader would, restarts itself if a writer changes the source
|
|
21
|
+
* mid-copy, and lands a self-contained, checkpointed file. The destination is
|
|
22
|
+
* complete at whatever instant the copy finished, and live writers are never
|
|
23
|
+
* blocked.
|
|
24
|
+
*
|
|
25
|
+
* ─── Why a second connection ─────────────────────────────────────────────────
|
|
26
|
+
*
|
|
27
|
+
* The obvious move is to reach through `ConnectionManager` for the handle the
|
|
28
|
+
* server already holds. It is the wrong move: those handles are role-branded
|
|
29
|
+
* (01 §3's privilege model), pooled, and owned by request-scoped code, and a
|
|
30
|
+
* backup that borrowed one would serialize itself behind whatever CRUD is in
|
|
31
|
+
* flight — the exact locking §9 says not to do. A second connection to a WAL
|
|
32
|
+
* database is the normal, supported thing (WAL exists so readers and a writer
|
|
33
|
+
* coexist), so this module opens its own, READONLY, and closes it. `readonly`
|
|
34
|
+
* is belt and braces: a backup is the one operation in the product with no
|
|
35
|
+
* reason whatsoever to be able to write to a source database, and
|
|
36
|
+
* `fileMustExist` keeps a stale DSN from CREATING an empty database and
|
|
37
|
+
* cheerfully backing it up.
|
|
38
|
+
*/
|
|
39
|
+
import { mkdir } from 'node:fs/promises';
|
|
40
|
+
import { dirname, isAbsolute, resolve } from 'node:path';
|
|
41
|
+
import { normalizeSqliteFile } from '@adminium/adapter-sqlite';
|
|
42
|
+
import { connectionsRepo } from '@adminium/meta';
|
|
43
|
+
import Database from 'better-sqlite3';
|
|
44
|
+
import { deriveDatabaseSlug, uniqueSlug } from './format.js';
|
|
45
|
+
/**
|
|
46
|
+
* `:memory:` and a relative path are both "not a file on this disk we can
|
|
47
|
+
* snapshot", for different reasons, and both must be classified rather than
|
|
48
|
+
* crashed on.
|
|
49
|
+
*
|
|
50
|
+
* `:memory:` is a real, supported SQLite target (`adapter-sqlite`'s own file
|
|
51
|
+
* normalizer names it for demos and tests) that has no bytes to copy. A relative
|
|
52
|
+
* path is a DSN whose meaning depends on the server's cwd — which, for a
|
|
53
|
+
* utilityProcess forked by Electron, is not a place anybody chose. Backing up
|
|
54
|
+
* "whatever `./app.db` resolves to from the app bundle's working directory"
|
|
55
|
+
* would be worse than not backing it up, because the manifest would claim it.
|
|
56
|
+
*/
|
|
57
|
+
function localFileOf(dsn) {
|
|
58
|
+
if (dsn === null)
|
|
59
|
+
return null;
|
|
60
|
+
const file = normalizeSqliteFile({ dsn });
|
|
61
|
+
if (file === null || file === ':memory:')
|
|
62
|
+
return null;
|
|
63
|
+
return isAbsolute(file) ? file : null;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Split every configured connection into "we dump this" and "we list this".
|
|
67
|
+
*
|
|
68
|
+
* §9's rule is about the ENGINE, not about reachability: a Postgres on
|
|
69
|
+
* `localhost` is still external (we do not have a byte-level snapshot mechanism
|
|
70
|
+
* for it, and `pg_dump` is not a thing this process may assume exists), and a
|
|
71
|
+
* SQLite file on a network share is still local. Anything that is neither — a
|
|
72
|
+
* `sqlite:` connection whose DSN is `:memory:` or relative — is listed as
|
|
73
|
+
* external too, which is the honest answer: the manifest says the connection
|
|
74
|
+
* existed and says its bytes are not in this archive.
|
|
75
|
+
*/
|
|
76
|
+
export async function discoverSources(meta, crypto) {
|
|
77
|
+
const repo = connectionsRepo(meta, crypto);
|
|
78
|
+
const connections = await repo.list();
|
|
79
|
+
const local = [];
|
|
80
|
+
const external = [];
|
|
81
|
+
const taken = new Set();
|
|
82
|
+
const claim = (candidate) => {
|
|
83
|
+
const slug = uniqueSlug(candidate, taken);
|
|
84
|
+
taken.add(slug);
|
|
85
|
+
return slug;
|
|
86
|
+
};
|
|
87
|
+
for (const connection of connections) {
|
|
88
|
+
const file = connection.engine === 'sqlite' ? localFileOf(await dataDsnOf(repo, connection)) : null;
|
|
89
|
+
if (file === null) {
|
|
90
|
+
external.push({
|
|
91
|
+
connectionId: connection.id,
|
|
92
|
+
slug: claim(deriveDatabaseSlug(connection.name, connection.id)),
|
|
93
|
+
engine: connection.engine,
|
|
94
|
+
});
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
local.push({
|
|
98
|
+
connectionId: connection.id,
|
|
99
|
+
slug: claim(deriveDatabaseSlug(file, connection.id)),
|
|
100
|
+
path: resolve(file),
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
return { local, external };
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* The data DSN, or `null` when it cannot be read.
|
|
107
|
+
*
|
|
108
|
+
* A decrypt failure means `ADMINIUM_SECRET` no longer opens this row — the
|
|
109
|
+
* keyring case `config.ts`'s {@link SecretUnavailableError} exists for, seen from
|
|
110
|
+
* the other side. It must NOT become an exception here: a backup is precisely
|
|
111
|
+
* what a user with one unreadable connection needs to take before touching
|
|
112
|
+
* anything, and failing the whole archive over one row would deny them the copy
|
|
113
|
+
* of the other nine. The row still appears in the manifest, as external — i.e.
|
|
114
|
+
* "this connection existed and its bytes are not in here", which is true.
|
|
115
|
+
*/
|
|
116
|
+
async function dataDsnOf(repo, connection) {
|
|
117
|
+
try {
|
|
118
|
+
return (await repo.getDsns(connection.id))?.dataDsn ?? null;
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Snapshot `sourcePath` to `destPath` with SQLite's online backup.
|
|
126
|
+
*
|
|
127
|
+
* Awaited rather than fire-and-forget: better-sqlite3's `backup()` returns a
|
|
128
|
+
* promise that resolves when `remainingPages` hits 0, and a caller that hashed
|
|
129
|
+
* the destination without waiting would hash a partial file and write a checksum
|
|
130
|
+
* for a database that does not exist yet.
|
|
131
|
+
*/
|
|
132
|
+
export async function snapshotSqliteFile(sourcePath, destPath) {
|
|
133
|
+
await mkdir(dirname(destPath), { recursive: true });
|
|
134
|
+
const db = new Database(sourcePath, { readonly: true, fileMustExist: true });
|
|
135
|
+
try {
|
|
136
|
+
await db.backup(destPath);
|
|
137
|
+
}
|
|
138
|
+
finally {
|
|
139
|
+
db.close();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/backup/snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAgD,MAAM,gBAAgB,CAAC;AAC/F,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAsB7D;;;;;;;;;;;GAWG;AACH,SAAS,WAAW,CAAC,GAAkB;IACrC,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,IAAI,GAAG,mBAAmB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC;IACtD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY,EACZ,MAAiB;IAEjB,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAiB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAEpD,MAAM,KAAK,GAA0B,EAAE,CAAC;IACxC,MAAM,QAAQ,GAA6B,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhC,MAAM,KAAK,GAAG,CAAC,SAAiB,EAAU,EAAE;QAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC1C,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEpG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,QAAQ,CAAC,IAAI,CAAC;gBACZ,YAAY,EAAE,UAAU,CAAC,EAAE;gBAC3B,IAAI,EAAE,KAAK,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC/D,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,KAAK,CAAC,IAAI,CAAC;YACT,YAAY,EAAE,UAAU,CAAC,EAAE;YAC3B,IAAI,EAAE,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;YACpD,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;SACpB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,SAAS,CACtB,IAAwC,EACxC,UAAsB;IAEtB,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,UAAkB,EAAE,QAAgB;IAC3E,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The host-capability vocabulary the desktop shell can be granted (11-electron.md
|
|
3
|
+
* §12 / 13-marketplace.md §2.11).
|
|
4
|
+
*
|
|
5
|
+
* A CLOSED set, and that is the point. A capability grant is an authorization to
|
|
6
|
+
* reach real hardware on the user's machine, so the route that writes one
|
|
7
|
+
* validates its `capabilityId` against this list rather than trusting the caller
|
|
8
|
+
* — an unknown id is a bad request (a typo, a manifest for a driver this build
|
|
9
|
+
* does not have), not a grant for a capability that cannot exist. v1 ships one
|
|
10
|
+
* concrete id, the ESC/POS receipt printer the POS micro-SaaS (13-marketplace.md
|
|
11
|
+
* §10) will use; the list grows with the drivers.
|
|
12
|
+
*
|
|
13
|
+
* WHAT THIS FILE DOES NOT OWN: the DESCRIPTOR — a capability's status
|
|
14
|
+
* (`available` / `stub` / `unavailable`) and method list. Those belong to the
|
|
15
|
+
* main-process `CapabilityHost`, which holds the providers and is the only thing
|
|
16
|
+
* that ever sees a device (§1 principle 2: the server owns data, not hardware).
|
|
17
|
+
* The server owns the id vocabulary — enough to validate a grant — and the grant
|
|
18
|
+
* table itself (`adminium_settings`, reached over the loopback REST API by main).
|
|
19
|
+
*/
|
|
20
|
+
import { z } from 'zod';
|
|
21
|
+
/**
|
|
22
|
+
* The dotted capability ids this build knows how to grant. Reverse-mapped from
|
|
23
|
+
* 13-marketplace.md's advisory `capabilities` vocabulary: a manifest declaring
|
|
24
|
+
* `receipt-printer` needs `printer.escpos`.
|
|
25
|
+
*/
|
|
26
|
+
export declare const capabilityIdSchema: z.ZodEnum<{
|
|
27
|
+
"printer.escpos": "printer.escpos";
|
|
28
|
+
}>;
|
|
29
|
+
export type KnownCapabilityId = z.infer<typeof capabilityIdSchema>;
|
|
30
|
+
/** The known ids as a tuple, for callers that want to iterate the vocabulary. */
|
|
31
|
+
export declare const KNOWN_CAPABILITY_IDS: "printer.escpos"[];
|
|
32
|
+
export declare function isKnownCapabilityId(id: string): id is KnownCapabilityId;
|
|
33
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/capabilities/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,kBAAkB;;EAA6B,CAAC;AAE7D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,oBAA6B,CAAC;AAE/D,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,iBAAiB,CAEvE"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The host-capability vocabulary the desktop shell can be granted (11-electron.md
|
|
3
|
+
* §12 / 13-marketplace.md §2.11).
|
|
4
|
+
*
|
|
5
|
+
* A CLOSED set, and that is the point. A capability grant is an authorization to
|
|
6
|
+
* reach real hardware on the user's machine, so the route that writes one
|
|
7
|
+
* validates its `capabilityId` against this list rather than trusting the caller
|
|
8
|
+
* — an unknown id is a bad request (a typo, a manifest for a driver this build
|
|
9
|
+
* does not have), not a grant for a capability that cannot exist. v1 ships one
|
|
10
|
+
* concrete id, the ESC/POS receipt printer the POS micro-SaaS (13-marketplace.md
|
|
11
|
+
* §10) will use; the list grows with the drivers.
|
|
12
|
+
*
|
|
13
|
+
* WHAT THIS FILE DOES NOT OWN: the DESCRIPTOR — a capability's status
|
|
14
|
+
* (`available` / `stub` / `unavailable`) and method list. Those belong to the
|
|
15
|
+
* main-process `CapabilityHost`, which holds the providers and is the only thing
|
|
16
|
+
* that ever sees a device (§1 principle 2: the server owns data, not hardware).
|
|
17
|
+
* The server owns the id vocabulary — enough to validate a grant — and the grant
|
|
18
|
+
* table itself (`adminium_settings`, reached over the loopback REST API by main).
|
|
19
|
+
*/
|
|
20
|
+
import { z } from 'zod';
|
|
21
|
+
/**
|
|
22
|
+
* The dotted capability ids this build knows how to grant. Reverse-mapped from
|
|
23
|
+
* 13-marketplace.md's advisory `capabilities` vocabulary: a manifest declaring
|
|
24
|
+
* `receipt-printer` needs `printer.escpos`.
|
|
25
|
+
*/
|
|
26
|
+
export const capabilityIdSchema = z.enum(['printer.escpos']);
|
|
27
|
+
/** The known ids as a tuple, for callers that want to iterate the vocabulary. */
|
|
28
|
+
export const KNOWN_CAPABILITY_IDS = capabilityIdSchema.options;
|
|
29
|
+
export function isKnownCapabilityId(id) {
|
|
30
|
+
return capabilityIdSchema.safeParse(id).success;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/capabilities/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAI7D,iFAAiF;AACjF,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,OAAO,CAAC;AAE/D,MAAM,UAAU,mBAAmB,CAAC,EAAU;IAC5C,OAAO,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The desktop capability grant table (11-electron.md §12), over `adminium_settings`.
|
|
3
|
+
*
|
|
4
|
+
* §1 principle 2 puts the meta store on the server's side of the process
|
|
5
|
+
* boundary, so grant reads and writes live here and the main-process
|
|
6
|
+
* `CapabilityHost` reaches them over the loopback REST API (`routes/
|
|
7
|
+
* desktop-capabilities`). Grants are a SET keyed by `{ manifestId, capabilityId }`:
|
|
8
|
+
*
|
|
9
|
+
* - granting twice is idempotent — the consent step records an authorization,
|
|
10
|
+
* not a counter, so a re-install of the same app must not stack rows;
|
|
11
|
+
* - revoking removes exactly the one identity;
|
|
12
|
+
* - the whole array round-trips through `settingsRepo`, so its Zod schema
|
|
13
|
+
* (`capabilityGrantsSchema`) validates every write and a corrupt row can never
|
|
14
|
+
* be persisted.
|
|
15
|
+
*
|
|
16
|
+
* CONCURRENCY: each mutation is a read-modify-write of the single settings row.
|
|
17
|
+
* Two truly-simultaneous grants could lose one. That is acceptable here and only
|
|
18
|
+
* here — consent and revoke are deliberate, one-at-a-time admin actions on a
|
|
19
|
+
* single-user desktop reached over loopback, not a hot write path — and it is the
|
|
20
|
+
* same read-modify-write every other array-valued setting already accepts.
|
|
21
|
+
*/
|
|
22
|
+
import { type CapabilityGrant, type MetaDb } from '@adminium/meta';
|
|
23
|
+
/** The identity of a grant — everything but its timestamp. */
|
|
24
|
+
export interface GrantRef {
|
|
25
|
+
manifestId: string;
|
|
26
|
+
capabilityId: string;
|
|
27
|
+
}
|
|
28
|
+
/** Every consented grant, newest write order preserved. */
|
|
29
|
+
export declare function listGrants(meta: MetaDb): Promise<CapabilityGrant[]>;
|
|
30
|
+
/** True when `ref` is already granted — the check `CapabilityHost.invoke` makes. */
|
|
31
|
+
export declare function isGranted(meta: MetaDb, ref: GrantRef): Promise<boolean>;
|
|
32
|
+
/**
|
|
33
|
+
* Idempotent add. Returns the grant that is now in the table — the existing one
|
|
34
|
+
* if this identity was already granted, otherwise the newly written one.
|
|
35
|
+
*/
|
|
36
|
+
export declare function addGrant(meta: MetaDb, ref: GrantRef, opts?: {
|
|
37
|
+
now?: number;
|
|
38
|
+
updatedBy?: string | null;
|
|
39
|
+
}): Promise<CapabilityGrant>;
|
|
40
|
+
/** Remove a grant. Returns true when a row was actually removed (revoke is a no-op otherwise). */
|
|
41
|
+
export declare function removeGrant(meta: MetaDb, ref: GrantRef, opts?: {
|
|
42
|
+
updatedBy?: string | null;
|
|
43
|
+
}): Promise<boolean>;
|
|
44
|
+
//# sourceMappingURL=grants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grants.d.ts","sourceRoot":"","sources":["../../src/capabilities/grants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAgB,KAAK,eAAe,EAAE,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAKjF,8DAA8D;AAC9D,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAMD,2DAA2D;AAC3D,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAEzE;AAED,oFAAoF;AACpF,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAG7E;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GACrD,OAAO,CAAC,eAAe,CAAC,CAY1B;AAED,kGAAkG;AAClG,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GACvC,OAAO,CAAC,OAAO,CAAC,CAOlB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The desktop capability grant table (11-electron.md §12), over `adminium_settings`.
|
|
3
|
+
*
|
|
4
|
+
* §1 principle 2 puts the meta store on the server's side of the process
|
|
5
|
+
* boundary, so grant reads and writes live here and the main-process
|
|
6
|
+
* `CapabilityHost` reaches them over the loopback REST API (`routes/
|
|
7
|
+
* desktop-capabilities`). Grants are a SET keyed by `{ manifestId, capabilityId }`:
|
|
8
|
+
*
|
|
9
|
+
* - granting twice is idempotent — the consent step records an authorization,
|
|
10
|
+
* not a counter, so a re-install of the same app must not stack rows;
|
|
11
|
+
* - revoking removes exactly the one identity;
|
|
12
|
+
* - the whole array round-trips through `settingsRepo`, so its Zod schema
|
|
13
|
+
* (`capabilityGrantsSchema`) validates every write and a corrupt row can never
|
|
14
|
+
* be persisted.
|
|
15
|
+
*
|
|
16
|
+
* CONCURRENCY: each mutation is a read-modify-write of the single settings row.
|
|
17
|
+
* Two truly-simultaneous grants could lose one. That is acceptable here and only
|
|
18
|
+
* here — consent and revoke are deliberate, one-at-a-time admin actions on a
|
|
19
|
+
* single-user desktop reached over loopback, not a hot write path — and it is the
|
|
20
|
+
* same read-modify-write every other array-valued setting already accepts.
|
|
21
|
+
*/
|
|
22
|
+
import { settingsRepo } from '@adminium/meta';
|
|
23
|
+
/** The `adminium_settings` key; camelCased per the registry convention (§12 note). */
|
|
24
|
+
const GRANTS_KEY = 'desktop.capabilityGrants';
|
|
25
|
+
function isSameGrant(grant, ref) {
|
|
26
|
+
return grant.manifestId === ref.manifestId && grant.capabilityId === ref.capabilityId;
|
|
27
|
+
}
|
|
28
|
+
/** Every consented grant, newest write order preserved. */
|
|
29
|
+
export async function listGrants(meta) {
|
|
30
|
+
return [...(await settingsRepo(meta).get(GRANTS_KEY))];
|
|
31
|
+
}
|
|
32
|
+
/** True when `ref` is already granted — the check `CapabilityHost.invoke` makes. */
|
|
33
|
+
export async function isGranted(meta, ref) {
|
|
34
|
+
const grants = await settingsRepo(meta).get(GRANTS_KEY);
|
|
35
|
+
return grants.some((grant) => isSameGrant(grant, ref));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Idempotent add. Returns the grant that is now in the table — the existing one
|
|
39
|
+
* if this identity was already granted, otherwise the newly written one.
|
|
40
|
+
*/
|
|
41
|
+
export async function addGrant(meta, ref, opts = {}) {
|
|
42
|
+
const repo = settingsRepo(meta);
|
|
43
|
+
const current = await repo.get(GRANTS_KEY);
|
|
44
|
+
const existing = current.find((grant) => isSameGrant(grant, ref));
|
|
45
|
+
if (existing !== undefined)
|
|
46
|
+
return existing;
|
|
47
|
+
const grant = {
|
|
48
|
+
manifestId: ref.manifestId,
|
|
49
|
+
capabilityId: ref.capabilityId,
|
|
50
|
+
grantedAt: opts.now ?? Date.now(),
|
|
51
|
+
};
|
|
52
|
+
await repo.set(GRANTS_KEY, [...current, grant], { updatedBy: opts.updatedBy ?? null });
|
|
53
|
+
return grant;
|
|
54
|
+
}
|
|
55
|
+
/** Remove a grant. Returns true when a row was actually removed (revoke is a no-op otherwise). */
|
|
56
|
+
export async function removeGrant(meta, ref, opts = {}) {
|
|
57
|
+
const repo = settingsRepo(meta);
|
|
58
|
+
const current = await repo.get(GRANTS_KEY);
|
|
59
|
+
const next = current.filter((grant) => !isSameGrant(grant, ref));
|
|
60
|
+
if (next.length === current.length)
|
|
61
|
+
return false;
|
|
62
|
+
await repo.set(GRANTS_KEY, next, { updatedBy: opts.updatedBy ?? null });
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=grants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grants.js","sourceRoot":"","sources":["../../src/capabilities/grants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,YAAY,EAAqC,MAAM,gBAAgB,CAAC;AAEjF,sFAAsF;AACtF,MAAM,UAAU,GAAG,0BAAmC,CAAC;AAQvD,SAAS,WAAW,CAAC,KAAsB,EAAE,GAAa;IACxD,OAAO,KAAK,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU,IAAI,KAAK,CAAC,YAAY,KAAK,GAAG,CAAC,YAAY,CAAC;AACxF,CAAC;AAED,2DAA2D;AAC3D,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,OAAO,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,GAAa;IACzD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,IAAY,EACZ,GAAa,EACb,OAAoD,EAAE;IAEtD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAClE,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,MAAM,KAAK,GAAoB;QAC7B,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,SAAS,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE;KAClC,CAAC;IACF,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC,CAAC;IACvF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kGAAkG;AAClG,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAY,EACZ,GAAa,EACb,OAAsC,EAAE;IAExC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IACjE,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACjD,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC,CAAC;IACxE,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM allowed-vocabulary loading for the CLI.
|
|
3
|
+
*
|
|
4
|
+
* `LLM_ALLOWED_TEMPLATES` / `LLM_ALLOWED_WIDGETS` live in `@adminium/widgets`,
|
|
5
|
+
* which **the server tree may never import** (01-architecture.md §2.3, enforced
|
|
6
|
+
* by `.dependency-cruiser.cjs` `server-no-ui-widgets-charts`). Routes solve this
|
|
7
|
+
* by having the app-wiring layer inject them (`LlmRoutesDeps.allowed`); the CLI
|
|
8
|
+
* has no wiring layer above it, so it reads them as DATA at runtime. Every
|
|
9
|
+
* specifier below is computed, so no static import edge exists for the rule to
|
|
10
|
+
* catch and none is created — the ban is about the compiled import graph, and
|
|
11
|
+
* this respects it.
|
|
12
|
+
*
|
|
13
|
+
* THE CANDIDATE ORDER IS THE WHOLE POINT. `@adminium/widgets` is not a
|
|
14
|
+
* dependency of `@adminium/server` and cannot become one: it is `private: true`,
|
|
15
|
+
* so it can never be published, and `pnpm deploy --filter=@adminium/server
|
|
16
|
+
* --prod` (the Dockerfile) injects only declared workspace deps. Probing
|
|
17
|
+
* node_modules or a monorepo `packages/` path therefore finds NOTHING in any
|
|
18
|
+
* deployed artifact — the image and the tarball both — and both LLM subcommands
|
|
19
|
+
* died there with a "run `pnpm --filter @adminium/widgets build`" hint that a
|
|
20
|
+
* container or npm user cannot act on. So the build SNAPSHOTS the two lists into
|
|
21
|
+
* the package itself (`scripts/bundle-allowlists.mjs`, run at `prepack` beside
|
|
22
|
+
* the dashboard bundling) and that snapshot is probed FIRST. The dist paths
|
|
23
|
+
* remain as the dev-checkout fallback, where they do work and where nobody
|
|
24
|
+
* should have to run a bundling step to use the CLI.
|
|
25
|
+
*/
|
|
26
|
+
import type { AllowedVocabularies } from '@adminium/llm';
|
|
27
|
+
/**
|
|
28
|
+
* The build-emitted snapshot inside the published package. Kept next to the
|
|
29
|
+
* resolver so `scripts/bundle-allowlists.mjs` and this lookup share one path.
|
|
30
|
+
*/
|
|
31
|
+
export declare const BUNDLED_VOCABULARY_FILE: string;
|
|
32
|
+
/**
|
|
33
|
+
* Candidate allow-list sources, in precedence order. Exported for the test — the
|
|
34
|
+
* point of the resolver is the ORDER, and asserting on it beats asserting on
|
|
35
|
+
* whichever candidate happens to exist on the machine running the suite.
|
|
36
|
+
*/
|
|
37
|
+
export declare function allowlistCandidates(moduleUrl?: string): string[];
|
|
38
|
+
/**
|
|
39
|
+
* Load the allow-lists. Throws a {@link CliError} when no candidate resolves —
|
|
40
|
+
* in a shipped artifact that means the `prepack` bundling step did not run,
|
|
41
|
+
* which is a packaging bug; in a dev tree it means the widgets dist is unbuilt.
|
|
42
|
+
* The hint names both, because the message has to be actionable for whichever
|
|
43
|
+
* of the two the reader is holding.
|
|
44
|
+
*/
|
|
45
|
+
export declare function loadAllowedVocabularies(moduleUrl?: string): Promise<AllowedVocabularies>;
|
|
46
|
+
//# sourceMappingURL=allowlist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"allowlist.d.ts","sourceRoot":"","sources":["../../src/cli/allowlist.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAMH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAOzD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAA2C,CAAC;AAMhF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,GAAE,MAAwB,GAAG,MAAM,EAAE,CAWjF;AA2BD;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,GAAE,MAAwB,GAClC,OAAO,CAAC,mBAAmB,CAAC,CAW9B"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM allowed-vocabulary loading for the CLI.
|
|
3
|
+
*
|
|
4
|
+
* `LLM_ALLOWED_TEMPLATES` / `LLM_ALLOWED_WIDGETS` live in `@adminium/widgets`,
|
|
5
|
+
* which **the server tree may never import** (01-architecture.md §2.3, enforced
|
|
6
|
+
* by `.dependency-cruiser.cjs` `server-no-ui-widgets-charts`). Routes solve this
|
|
7
|
+
* by having the app-wiring layer inject them (`LlmRoutesDeps.allowed`); the CLI
|
|
8
|
+
* has no wiring layer above it, so it reads them as DATA at runtime. Every
|
|
9
|
+
* specifier below is computed, so no static import edge exists for the rule to
|
|
10
|
+
* catch and none is created — the ban is about the compiled import graph, and
|
|
11
|
+
* this respects it.
|
|
12
|
+
*
|
|
13
|
+
* THE CANDIDATE ORDER IS THE WHOLE POINT. `@adminium/widgets` is not a
|
|
14
|
+
* dependency of `@adminium/server` and cannot become one: it is `private: true`,
|
|
15
|
+
* so it can never be published, and `pnpm deploy --filter=@adminium/server
|
|
16
|
+
* --prod` (the Dockerfile) injects only declared workspace deps. Probing
|
|
17
|
+
* node_modules or a monorepo `packages/` path therefore finds NOTHING in any
|
|
18
|
+
* deployed artifact — the image and the tarball both — and both LLM subcommands
|
|
19
|
+
* died there with a "run `pnpm --filter @adminium/widgets build`" hint that a
|
|
20
|
+
* container or npm user cannot act on. So the build SNAPSHOTS the two lists into
|
|
21
|
+
* the package itself (`scripts/bundle-allowlists.mjs`, run at `prepack` beside
|
|
22
|
+
* the dashboard bundling) and that snapshot is probed FIRST. The dist paths
|
|
23
|
+
* remain as the dev-checkout fallback, where they do work and where nobody
|
|
24
|
+
* should have to run a bundling step to use the CLI.
|
|
25
|
+
*/
|
|
26
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
27
|
+
import { dirname, join, resolve } from 'node:path';
|
|
28
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
29
|
+
import { CliError } from './exit.js';
|
|
30
|
+
/** Path inside the widgets package that exports the two allow-lists. */
|
|
31
|
+
const ALLOWLIST_SUBPATH = join('dist', 'registry', 'llm-allowlist.js');
|
|
32
|
+
/**
|
|
33
|
+
* The build-emitted snapshot inside the published package. Kept next to the
|
|
34
|
+
* resolver so `scripts/bundle-allowlists.mjs` and this lookup share one path.
|
|
35
|
+
*/
|
|
36
|
+
export const BUNDLED_VOCABULARY_FILE = join('vocabulary', 'llm-allowlist.json');
|
|
37
|
+
function packageRoot(moduleUrl) {
|
|
38
|
+
return resolve(dirname(fileURLToPath(moduleUrl)), '..', '..');
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Candidate allow-list sources, in precedence order. Exported for the test — the
|
|
42
|
+
* point of the resolver is the ORDER, and asserting on it beats asserting on
|
|
43
|
+
* whichever candidate happens to exist on the machine running the suite.
|
|
44
|
+
*/
|
|
45
|
+
export function allowlistCandidates(moduleUrl = import.meta.url) {
|
|
46
|
+
const root = packageRoot(moduleUrl);
|
|
47
|
+
return [
|
|
48
|
+
// Published/deployed: the JSON snapshot this package carries. FIRST, because
|
|
49
|
+
// it is the only one that exists in the Docker image or an npm install.
|
|
50
|
+
join(root, BUNDLED_VOCABULARY_FILE),
|
|
51
|
+
// Dev checkout: apps/server/../../packages/widgets/… (what demo-v01.mjs uses).
|
|
52
|
+
join(root, '..', '..', 'packages', 'widgets', ALLOWLIST_SUBPATH),
|
|
53
|
+
// A hoisted node_modules layout that happens to expose the package.
|
|
54
|
+
join(root, 'node_modules', '@adminium', 'widgets', ALLOWLIST_SUBPATH),
|
|
55
|
+
].map((candidate) => resolve(candidate));
|
|
56
|
+
}
|
|
57
|
+
/** Read one candidate; `null` when it is absent or does not carry both lists. */
|
|
58
|
+
async function readCandidate(candidate) {
|
|
59
|
+
if (!existsSync(candidate))
|
|
60
|
+
return null;
|
|
61
|
+
let mod;
|
|
62
|
+
if (candidate.endsWith('.json')) {
|
|
63
|
+
try {
|
|
64
|
+
mod = JSON.parse(readFileSync(candidate, 'utf8'));
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
// Computed specifier: a file URL, never a package name — no static edge.
|
|
72
|
+
mod = (await import(pathToFileURL(candidate).href));
|
|
73
|
+
}
|
|
74
|
+
const templates = mod.LLM_ALLOWED_TEMPLATES;
|
|
75
|
+
const widgets = mod.LLM_ALLOWED_WIDGETS;
|
|
76
|
+
if (templates === undefined || widgets === undefined)
|
|
77
|
+
return null;
|
|
78
|
+
return { templates, widgets };
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Load the allow-lists. Throws a {@link CliError} when no candidate resolves —
|
|
82
|
+
* in a shipped artifact that means the `prepack` bundling step did not run,
|
|
83
|
+
* which is a packaging bug; in a dev tree it means the widgets dist is unbuilt.
|
|
84
|
+
* The hint names both, because the message has to be actionable for whichever
|
|
85
|
+
* of the two the reader is holding.
|
|
86
|
+
*/
|
|
87
|
+
export async function loadAllowedVocabularies(moduleUrl = import.meta.url) {
|
|
88
|
+
for (const candidate of allowlistCandidates(moduleUrl)) {
|
|
89
|
+
const loaded = await readCandidate(candidate);
|
|
90
|
+
if (loaded !== null)
|
|
91
|
+
return loaded;
|
|
92
|
+
}
|
|
93
|
+
throw new CliError('The widget vocabulary is missing, so no AI prompt can be built.', {
|
|
94
|
+
hint: 'In a source checkout, build it: `pnpm --filter @adminium/widgets build`.\n' +
|
|
95
|
+
'In a released build this is a packaging bug — please report it, quoting your ' +
|
|
96
|
+
'`adminium --version`.',
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=allowlist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"allowlist.js","sourceRoot":"","sources":["../../src/cli/allowlist.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIxD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,wEAAwE;AACxE,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;AAEvE;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;AAEhF,SAAS,WAAW,CAAC,SAAiB;IACpC,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAAoB,MAAM,CAAC,IAAI,CAAC,GAAG;IACrE,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACpC,OAAO;QACL,6EAA6E;QAC7E,wEAAwE;QACxE,IAAI,CAAC,IAAI,EAAE,uBAAuB,CAAC;QACnC,+EAA+E;QAC/E,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,CAAC;QAChE,oEAAoE;QACpE,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,CAAC;KACtE,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3C,CAAC;AAOD,iFAAiF;AACjF,KAAK,UAAU,aAAa,CAAC,SAAiB;IAC5C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,GAAoB,CAAC;IACzB,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAoB,CAAC;QACvE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;SAAM,CAAC;QACN,yEAAyE;QACzE,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAoB,CAAC;IACzE,CAAC;IACD,MAAM,SAAS,GAAG,GAAG,CAAC,qBAAqB,CAAC;IAC5C,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,CAAC;IACxC,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAClE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,YAAoB,MAAM,CAAC,IAAI,CAAC,GAAG;IAEnC,KAAK,MAAM,SAAS,IAAI,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;IACrC,CAAC;IACD,MAAM,IAAI,QAAQ,CAAC,iEAAiE,EAAE;QACpF,IAAI,EACF,4EAA4E;YAC5E,+EAA+E;YAC/E,uBAAuB;KAC1B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Argument parsing for the `adminium` CLI (01-architecture.md §4.1).
|
|
3
|
+
*
|
|
4
|
+
* WHY NO CLI FRAMEWORK. `npx adminium` is advertised as "a complete install"
|
|
5
|
+
* — the published tarball already carries the server, the dashboard build, and
|
|
6
|
+
* the meta migrations, so every extra runtime dependency is weight on the very
|
|
7
|
+
* first thing a new user does. Node 22's built-in `node:util` `parseArgs`
|
|
8
|
+
* covers the whole surface this CLI needs (long flags, `--flag=value`, short
|
|
9
|
+
* aliases, repeatables, `--` passthrough, strict unknown-flag rejection) at
|
|
10
|
+
* zero dependencies, and Zod — already a dependency, already the house rule for
|
|
11
|
+
* external input — does the typing and coercion `parseArgs` deliberately omits.
|
|
12
|
+
* A framework would buy help-text formatting we want to control anyway.
|
|
13
|
+
*
|
|
14
|
+
* The shape below is deliberately declarative: a command's flags are data, so
|
|
15
|
+
* `--help` renders from the same spec the parser enforces and the two cannot
|
|
16
|
+
* drift.
|
|
17
|
+
*/
|
|
18
|
+
export type FlagType = 'string' | 'boolean';
|
|
19
|
+
export interface FlagSpec {
|
|
20
|
+
type: FlagType;
|
|
21
|
+
/** Single-character alias, e.g. `-p` for `--port`. */
|
|
22
|
+
short?: string;
|
|
23
|
+
/** Repeatable → the parsed value is an array (`--sections a --sections b`). */
|
|
24
|
+
multiple?: boolean;
|
|
25
|
+
/** Rendered in `--help`. */
|
|
26
|
+
describe: string;
|
|
27
|
+
/** Placeholder for the value in `--help`, e.g. `<id>`; string flags only. */
|
|
28
|
+
placeholder?: string;
|
|
29
|
+
/** Shown in `--help` as `(default: …)`. Documentation only — commands own defaults. */
|
|
30
|
+
defaultDescription?: string;
|
|
31
|
+
}
|
|
32
|
+
export type FlagSpecs = Readonly<Record<string, FlagSpec>>;
|
|
33
|
+
/** What `parseArgs` hands back, before a command's Zod schema refines it. */
|
|
34
|
+
export interface ParsedArgs {
|
|
35
|
+
/** Flag values keyed by the long flag name (no leading `--`). */
|
|
36
|
+
values: Record<string, string | boolean | string[] | undefined>;
|
|
37
|
+
/** Non-flag operands, in order. */
|
|
38
|
+
positionals: string[];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Parse `argv` against `specs`. Unknown flags are rejected (strict) and
|
|
42
|
+
* re-thrown as a {@link CliUsageError} so the dispatcher can print help rather
|
|
43
|
+
* than a raw Node error — `parseArgs`'s own message is good but its stack is not
|
|
44
|
+
* something a user should ever see.
|
|
45
|
+
*/
|
|
46
|
+
export declare function parseFlags(argv: readonly string[], specs: FlagSpecs, command?: string | null): ParsedArgs;
|
|
47
|
+
/**
|
|
48
|
+
* Split a repeatable-or-CSV flag into items. 06-llm-assist.md §10.4 writes
|
|
49
|
+
* `--sections labels,enums,…` and `--locales en_US,de_DE`; supporting the
|
|
50
|
+
* repeated form too costs nothing and is what people reflexively try.
|
|
51
|
+
* `--sections a,b --sections c` → `['a','b','c']`.
|
|
52
|
+
*/
|
|
53
|
+
export declare function splitList(value: string | boolean | string[] | undefined): string[];
|
|
54
|
+
/** A string flag's value, or `undefined`. Repeated flags take the LAST value. */
|
|
55
|
+
export declare function stringFlag(value: string | boolean | string[] | undefined): string | undefined;
|
|
56
|
+
/** A boolean flag's presence. */
|
|
57
|
+
export declare function boolFlag(value: string | boolean | string[] | undefined): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* A numeric flag, validated. `--port banana` must say so in one line rather
|
|
60
|
+
* than surface later as `NaN` from `app.listen`.
|
|
61
|
+
*/
|
|
62
|
+
export declare function numberFlag(value: string | boolean | string[] | undefined, flagName: string, command?: string | null): number | undefined;
|
|
63
|
+
//# sourceMappingURL=args.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE5C,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uFAAuF;IACvF,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE3D,6EAA6E;AAC7E,MAAM,WAAW,UAAU;IACzB,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IAChE,mCAAmC;IACnC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAeD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,GAAE,MAAM,GAAG,IAAW,GAAG,UAAU,CAa/G;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAOlF;AAED,iFAAiF;AACjF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG7F;AAED,iCAAiC;AACjC,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,OAAO,CAEhF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,EAC9C,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,MAAM,GAAG,IAAW,GAC5B,MAAM,GAAG,SAAS,CAQpB"}
|