@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,81 @@
|
|
|
1
|
+
import { createProviderClient, DEFAULT_MAX_OUTPUT_TOKENS, ProviderError, validateResponse, } from '@adminium/llm';
|
|
2
|
+
import { settingsRepo, snapshotsRepo } from '@adminium/meta';
|
|
3
|
+
/**
|
|
4
|
+
* Per-provider `maxTokens` ceiling the `LLM_TRUNCATED` escalation raises to
|
|
5
|
+
* before counting a repair (§7.5). Conservative output caps for the chat
|
|
6
|
+
* contract each client speaks; a truncated reply retries once at this budget.
|
|
7
|
+
*/
|
|
8
|
+
export const PROVIDER_OUTPUT_CEILING = {
|
|
9
|
+
anthropic: 64_000,
|
|
10
|
+
openai: 16_384,
|
|
11
|
+
'openai-compatible': 32_000,
|
|
12
|
+
ollama: 32_000,
|
|
13
|
+
'adminium-managed': 64_000,
|
|
14
|
+
};
|
|
15
|
+
/** Build the production run resolver. */
|
|
16
|
+
export function createProviderResolver(deps) {
|
|
17
|
+
const settings = settingsRepo(deps.meta);
|
|
18
|
+
const snapshots = snapshotsRepo(deps.meta);
|
|
19
|
+
const makeClient = deps.createClient ?? createProviderClient;
|
|
20
|
+
return async (run) => {
|
|
21
|
+
if (run.provider === null) {
|
|
22
|
+
throw new ProviderError({
|
|
23
|
+
provider: 'anthropic',
|
|
24
|
+
code: 'config',
|
|
25
|
+
message: `run ${run.id} has no provider recorded`,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
const provider = run.provider;
|
|
29
|
+
const [storedKey, baseUrl, settingModel, maxOut] = await Promise.all([
|
|
30
|
+
settings.get('llm.apiKey'),
|
|
31
|
+
settings.get('llm.baseUrl'),
|
|
32
|
+
settings.get('llm.model'),
|
|
33
|
+
settings.get('llm.maxOutputTokens'),
|
|
34
|
+
]);
|
|
35
|
+
const apiKey = decryptKey(storedKey, deps.keyCrypto);
|
|
36
|
+
const model = run.model ?? settingModel ?? '';
|
|
37
|
+
const maxTokens = maxOut ?? DEFAULT_MAX_OUTPUT_TOKENS;
|
|
38
|
+
const config = { provider, model, maxOutputTokens: maxTokens };
|
|
39
|
+
if (apiKey !== undefined)
|
|
40
|
+
config.apiKey = apiKey;
|
|
41
|
+
if (baseUrl !== null)
|
|
42
|
+
config.baseUrl = baseUrl;
|
|
43
|
+
const client = makeClient(config);
|
|
44
|
+
const snapshot = await snapshots.findById(run.snapshotId);
|
|
45
|
+
if (snapshot === null) {
|
|
46
|
+
throw new ProviderError({
|
|
47
|
+
provider,
|
|
48
|
+
code: 'config',
|
|
49
|
+
message: `run ${run.id} references a missing snapshot ${run.snapshotId}`,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
const schemaIr = snapshot.schema;
|
|
53
|
+
const locales = (run.locales ?? ['en_US']);
|
|
54
|
+
const validate = (rawText) => validateResponse(rawText, {
|
|
55
|
+
snapshot: schemaIr,
|
|
56
|
+
locales,
|
|
57
|
+
allowedTemplates: deps.allowedTemplates,
|
|
58
|
+
allowedWidgets: deps.allowedWidgets,
|
|
59
|
+
...(deps.allowedIcons !== undefined ? { allowedIcons: deps.allowedIcons } : {}),
|
|
60
|
+
runId: run.id,
|
|
61
|
+
});
|
|
62
|
+
return {
|
|
63
|
+
client,
|
|
64
|
+
provider,
|
|
65
|
+
model,
|
|
66
|
+
maxTokens,
|
|
67
|
+
maxTokensCeiling: Math.max(maxTokens, PROVIDER_OUTPUT_CEILING[provider]),
|
|
68
|
+
validate,
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Decrypt the stored key. Tolerates a plaintext value (the settings-secret write
|
|
74
|
+
* path is still landing) by only decrypting recognizably-encrypted `enc:` tokens.
|
|
75
|
+
*/
|
|
76
|
+
function decryptKey(stored, crypto) {
|
|
77
|
+
if (stored === null || stored.length === 0)
|
|
78
|
+
return undefined;
|
|
79
|
+
return stored.startsWith('enc:') ? crypto.decrypt(stored) : stored;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=provider-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-resolver.js","sourceRoot":"","sources":["../../src/llm/provider-resolver.ts"],"names":[],"mappings":"AAoBA,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,aAAa,EACb,gBAAgB,GAOjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,aAAa,EAA4B,MAAM,gBAAgB,CAAC;AAIvF;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAA+B;IACjE,SAAS,EAAE,MAAM;IACjB,MAAM,EAAE,MAAM;IACd,mBAAmB,EAAE,MAAM;IAC3B,MAAM,EAAE,MAAM;IACd,kBAAkB,EAAE,MAAM;CAC3B,CAAC;AAgBF,yCAAyC;AACzC,MAAM,UAAU,sBAAsB,CAAC,IAA0B;IAC/D,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,IAAI,oBAAoB,CAAC;IAE7D,OAAO,KAAK,EAAE,GAAW,EAAwB,EAAE;QACjD,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC1B,MAAM,IAAI,aAAa,CAAC;gBACtB,QAAQ,EAAE,WAAW;gBACrB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,OAAO,GAAG,CAAC,EAAE,2BAA2B;aAClD,CAAC,CAAC;QACL,CAAC;QACD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAsB,CAAC;QAE5C,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACnE,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC;YAC1B,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC;YAC3B,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;YACzB,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC;SACpC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,YAAY,IAAI,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,MAAM,IAAI,yBAAyB,CAAC;QAEtD,MAAM,MAAM,GAAmB,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC;QAC/E,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACjD,IAAI,OAAO,KAAK,IAAI;YAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QAC/C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC1D,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,IAAI,aAAa,CAAC;gBACtB,QAAQ;gBACR,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,OAAO,GAAG,CAAC,EAAE,kCAAkC,GAAG,CAAC,UAAU,EAAE;aACzE,CAAC,CAAC;QACL,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAuB,CAAC;QAClD,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAiB,CAAC;QAE3D,MAAM,QAAQ,GAAG,CAAC,OAAe,EAAoB,EAAE,CACrD,gBAAgB,CAAC,OAAO,EAAE;YACxB,QAAQ,EAAE,QAAQ;YAClB,OAAO;YACP,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/E,KAAK,EAAE,GAAG,CAAC,EAAE;SACd,CAAC,CAAC;QAEL,OAAO;YACL,MAAM;YACN,QAAQ;YACR,KAAK;YACL,SAAS;YACT,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,uBAAuB,CAAC,QAAQ,CAAC,CAAC;YACxE,QAAQ;SACT,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAC,MAAqB,EAAE,MAAoB;IAC7D,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7D,OAAO,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM run lifecycle service (06-llm-assist.md §7.4, §7.5, §9).
|
|
3
|
+
*
|
|
4
|
+
* The shared layer the direct-path runner (T08), the apply executor (T10b), and
|
|
5
|
+
* the `/api/v1/llm/*` routes (T11) all call. It owns:
|
|
6
|
+
* - `createRun` — build the prompt (via the browser-safe `@adminium/llm`
|
|
7
|
+
* `buildPrompt`) against the connection's snapshot IR + collected stats,
|
|
8
|
+
* persist a `draft` run with its flattened `prompt_text` + `prompt_sha256`,
|
|
9
|
+
* and (§9) keep `provider`/`model` NULL for BYO runs;
|
|
10
|
+
* - `receiveResponse` — the BYO intake: validate a pasted chunk through the
|
|
11
|
+
* shared `validateResponse` pipeline and advance the run (fatal → stays
|
|
12
|
+
* `awaiting_response`; clean → `validated`);
|
|
13
|
+
* - the §7.4 status machine (legal transitions + run immutability after a
|
|
14
|
+
* terminal state).
|
|
15
|
+
*
|
|
16
|
+
* Architecture (01 §2.3): the transactional apply-EXECUTOR that writes overrides
|
|
17
|
+
* /pages lives in T10b, not here — this service persists run rows and validation
|
|
18
|
+
* outcomes only. Provider NETWORK calls belong to T08's job runner; this service
|
|
19
|
+
* performs none.
|
|
20
|
+
*/
|
|
21
|
+
import type { DatabaseModel, StatsResult } from '@adminium/engine';
|
|
22
|
+
import { type AllowedVocabularies, type LlmResponseV1, type LlmRunStatus, type LlmValidationError, type LocaleCode, type ProviderId, type PromptArtifact, type RequestedSection, type Sampling, type ValidationResult } from '@adminium/llm';
|
|
23
|
+
import { type LlmRun, type LlmRunReview, type MetaDb } from '@adminium/meta';
|
|
24
|
+
import type { RunFailureError } from './direct-runner.js';
|
|
25
|
+
/**
|
|
26
|
+
* Joins multiple flattened chunk prompts into the persisted `prompt_text` blob.
|
|
27
|
+
* Exported so the direct-path runner can split `prompt_text` back into the
|
|
28
|
+
* per-chunk `system`/`user` messages it sends (byte-identical to what BYO shows,
|
|
29
|
+
* §1 invariant 1).
|
|
30
|
+
*/
|
|
31
|
+
export declare const CHUNK_SEPARATOR = "\n\n=== NEXT PROMPT ===\n\n";
|
|
32
|
+
/**
|
|
33
|
+
* §7.4 legal transitions. A terminal state has no outgoing edges, which is how
|
|
34
|
+
* run immutability after `applied` is enforced (any transition off it throws).
|
|
35
|
+
*/
|
|
36
|
+
export declare const LEGAL_RUN_TRANSITIONS: Readonly<Record<LlmRunStatus, readonly LlmRunStatus[]>>;
|
|
37
|
+
export declare function canTransition(from: LlmRunStatus, to: LlmRunStatus): boolean;
|
|
38
|
+
export declare class RunNotFoundError extends Error {
|
|
39
|
+
readonly runId: string;
|
|
40
|
+
name: string;
|
|
41
|
+
constructor(runId: string);
|
|
42
|
+
}
|
|
43
|
+
/** A mutating call targeted a run already in a terminal state (§7.4 immutability). */
|
|
44
|
+
export declare class RunImmutableError extends Error {
|
|
45
|
+
readonly runId: string;
|
|
46
|
+
readonly status: LlmRunStatus;
|
|
47
|
+
name: string;
|
|
48
|
+
constructor(runId: string, status: LlmRunStatus);
|
|
49
|
+
}
|
|
50
|
+
export declare class InvalidRunTransitionError extends Error {
|
|
51
|
+
readonly runId: string;
|
|
52
|
+
readonly from: LlmRunStatus;
|
|
53
|
+
readonly to: LlmRunStatus;
|
|
54
|
+
name: string;
|
|
55
|
+
constructor(runId: string, from: LlmRunStatus, to: LlmRunStatus);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* A BYO run was asked to record a provider/model — forbidden by the §9
|
|
59
|
+
* telemetry-free guarantee (BYO `provider`/`model` stay NULL, never recorded).
|
|
60
|
+
*/
|
|
61
|
+
export declare class ByoTelemetryError extends Error {
|
|
62
|
+
name: string;
|
|
63
|
+
constructor(message: string);
|
|
64
|
+
}
|
|
65
|
+
export interface CreateRunInput {
|
|
66
|
+
connectionId: string;
|
|
67
|
+
/** The snapshot the run is built and later validated against (§7.4). */
|
|
68
|
+
snapshotId: string;
|
|
69
|
+
/** The classified schema IR (from the snapshot). */
|
|
70
|
+
schemaIr: DatabaseModel;
|
|
71
|
+
/** Aggregate statistics (adapter `collectTableStats` output). */
|
|
72
|
+
stats: readonly StatsResult[];
|
|
73
|
+
/** Requested output locales; must include `en_US` (enforced by `buildPrompt`). */
|
|
74
|
+
locales: readonly LocaleCode[];
|
|
75
|
+
/** Requested decision groups (§4.4); empty ⇒ all sections. */
|
|
76
|
+
sections: readonly RequestedSection[];
|
|
77
|
+
/** Sampling opt-in (§4.2); `null` = sample-free (default). */
|
|
78
|
+
sampling: Sampling;
|
|
79
|
+
/** `provider` = direct API path, `byo` = copy-paste round-trip. */
|
|
80
|
+
mode: 'provider' | 'byo';
|
|
81
|
+
/** Direct path only. MUST be null/undefined for `byo` (§9). */
|
|
82
|
+
provider?: ProviderId | null;
|
|
83
|
+
/** Direct path only. MUST be null/undefined for `byo` (§9). */
|
|
84
|
+
model?: string | null;
|
|
85
|
+
/** `LLM_ALLOWED_TEMPLATES` / `LLM_ALLOWED_WIDGETS` from `@adminium/widgets`. */
|
|
86
|
+
allowed: AllowedVocabularies;
|
|
87
|
+
createdBy?: string | null;
|
|
88
|
+
/** Override the default input-token budget (§4.5). */
|
|
89
|
+
tokenBudget?: number;
|
|
90
|
+
}
|
|
91
|
+
export interface CreateRunResult {
|
|
92
|
+
run: LlmRun;
|
|
93
|
+
artifact: PromptArtifact;
|
|
94
|
+
}
|
|
95
|
+
/** BYO response intake — everything the shared validation pipeline needs (§7.2). */
|
|
96
|
+
export interface ReceiveResponseInput {
|
|
97
|
+
/** Raw pasted/received text (a full JSON object, fences/prose tolerated). */
|
|
98
|
+
text: string;
|
|
99
|
+
/** 1-based chunk index (unchunked runs omit it). */
|
|
100
|
+
chunkIndex?: number;
|
|
101
|
+
/** The classified schema IR the run was built against (from the snapshot). */
|
|
102
|
+
snapshot: DatabaseModel;
|
|
103
|
+
/** `LLM_ALLOWED_TEMPLATES` — recommendable page-template ids. */
|
|
104
|
+
allowedTemplates: readonly string[];
|
|
105
|
+
/** `LLM_ALLOWED_WIDGETS` — the curated dashboard-widget subset. */
|
|
106
|
+
allowedWidgets: readonly string[];
|
|
107
|
+
/** Bundled lucide manifest for the icon-fallback warning (optional). */
|
|
108
|
+
allowedIcons?: ReadonlySet<string> | readonly string[];
|
|
109
|
+
/** Stats enabling pseudo-enum acceptance in referential checks (optional). */
|
|
110
|
+
stats?: readonly StatsResult[];
|
|
111
|
+
/** Tables present only as chunk context (§4.5). */
|
|
112
|
+
stubTables?: readonly string[];
|
|
113
|
+
/**
|
|
114
|
+
* Validate WITHOUT persisting anything: no `recordResponse`, no status
|
|
115
|
+
* transition, no chunk counted. The returned `run` is a projection of what the
|
|
116
|
+
* row WOULD have become, so callers can render the same summary they would
|
|
117
|
+
* from a real intake.
|
|
118
|
+
*
|
|
119
|
+
* This exists because `adminium apply-llm-response --dry-run` promises
|
|
120
|
+
* "Nothing was written" and validation is the only thing it can honestly do
|
|
121
|
+
* along the way: intake is a WRITE (it commits the response and flips the run
|
|
122
|
+
* to `validated`, after which the run can never take a different pasted
|
|
123
|
+
* response). Doing it and then printing "nothing was written" was the
|
|
124
|
+
* opposite of the flag. Chunked runs made it worse — a dry run of chunk 1
|
|
125
|
+
* consumed the slot, so a later real apply of chunk 1 could reach
|
|
126
|
+
* `chunksReceived === chunksTotal` with chunk 2 never pasted.
|
|
127
|
+
*/
|
|
128
|
+
dryRun?: boolean;
|
|
129
|
+
}
|
|
130
|
+
export interface ReceiveResponseResult {
|
|
131
|
+
run: LlmRun;
|
|
132
|
+
/** The full validation result (errors + warnings + cleaned response). */
|
|
133
|
+
validation: ValidationResult;
|
|
134
|
+
}
|
|
135
|
+
export interface MarkFailedInput {
|
|
136
|
+
/** Preserved error list — validation failures and/or a provider transport error (§7.5). */
|
|
137
|
+
errors?: readonly RunFailureError[];
|
|
138
|
+
/** Token usage consumed before the failure (recorded for observability). */
|
|
139
|
+
tokensIn?: number | null;
|
|
140
|
+
tokensOut?: number | null;
|
|
141
|
+
durationMs?: number | null;
|
|
142
|
+
}
|
|
143
|
+
/** running → validated persistence for the direct path (T08). */
|
|
144
|
+
export interface RecordDirectResultInput {
|
|
145
|
+
/** The merged (map-reduce) parsed response (§7.4 `parsed_response`). */
|
|
146
|
+
response: LlmResponseV1;
|
|
147
|
+
/** Chunks that validated cleanly (== chunksTotal on success). */
|
|
148
|
+
chunksReceived: number;
|
|
149
|
+
tokensIn: number;
|
|
150
|
+
tokensOut: number;
|
|
151
|
+
durationMs: number;
|
|
152
|
+
/** Accumulated per-item errors → `validation_status` `partial` vs `valid`. */
|
|
153
|
+
validationErrors?: readonly LlmValidationError[] | null;
|
|
154
|
+
}
|
|
155
|
+
export interface MarkAppliedInput {
|
|
156
|
+
appliedBy?: string | null;
|
|
157
|
+
/** True when some suggestions were rejected in review → `partially_applied`. */
|
|
158
|
+
partial?: boolean;
|
|
159
|
+
review?: LlmRunReview;
|
|
160
|
+
}
|
|
161
|
+
export interface RunServiceDeps {
|
|
162
|
+
meta: MetaDb;
|
|
163
|
+
/** Clock override — tests. */
|
|
164
|
+
now?: () => number;
|
|
165
|
+
}
|
|
166
|
+
export declare function createRunService(deps: RunServiceDeps): {
|
|
167
|
+
getRun: (runId: string) => Promise<LlmRun | null>;
|
|
168
|
+
listRuns: (connectionId: string) => Promise<LlmRun[]>;
|
|
169
|
+
/**
|
|
170
|
+
* Build the prompt and persist a `draft` run. For BYO runs `provider`/`model`
|
|
171
|
+
* are forced NULL (§9); passing either is a {@link ByoTelemetryError}. The run
|
|
172
|
+
* id equals the runId embedded in the prompt (§7.4).
|
|
173
|
+
*/
|
|
174
|
+
createRun(input: CreateRunInput): Promise<CreateRunResult>;
|
|
175
|
+
/** draft → running (direct path; T08 calls this before the provider call). */
|
|
176
|
+
markRunning(runId: string): Promise<LlmRun>;
|
|
177
|
+
/** draft → awaiting_response (BYO; the run now waits for a pasted response). */
|
|
178
|
+
markAwaitingResponse(runId: string): Promise<LlmRun>;
|
|
179
|
+
/**
|
|
180
|
+
* BYO intake (§7.2): validate a pasted chunk against the run's snapshot and
|
|
181
|
+
* requested locales. A fatal error keeps the run in `awaiting_response` (the
|
|
182
|
+
* user can fix and re-paste); a clean parse advances it to `validated` once
|
|
183
|
+
* every chunk is received.
|
|
184
|
+
*/
|
|
185
|
+
receiveResponse(runId: string, input: ReceiveResponseInput): Promise<ReceiveResponseResult>;
|
|
186
|
+
/**
|
|
187
|
+
* Persist the accepted/rejected suggestion-id lists (§8.3). Allowed once the
|
|
188
|
+
* run is `validated` and before it terminates; survives reload for re-review.
|
|
189
|
+
*/
|
|
190
|
+
recordReview(runId: string, review: LlmRunReview): Promise<LlmRun>;
|
|
191
|
+
/**
|
|
192
|
+
* validated → applied | partially_applied. The transactional overrides/pages
|
|
193
|
+
* writes are the apply-EXECUTOR's job (T10b); this only stamps the terminal
|
|
194
|
+
* run row (and, optionally, the final review).
|
|
195
|
+
*/
|
|
196
|
+
markApplied(runId: string, input?: MarkAppliedInput): Promise<LlmRun>;
|
|
197
|
+
/**
|
|
198
|
+
* running → validated for the direct path (T08). Records the merged parsed
|
|
199
|
+
* response, token usage and wall-clock duration; `validation_status` is
|
|
200
|
+
* `partial` when per-item errors survived, else `valid` (§7.4).
|
|
201
|
+
*/
|
|
202
|
+
recordDirectResult(runId: string, input: RecordDirectResultInput): Promise<LlmRun>;
|
|
203
|
+
/**
|
|
204
|
+
* Bump `chunks_received` on a still-`running` chunked run (§7.5 map phase
|
|
205
|
+
* progress). Best-effort — swallows the terminal/immutable case so a
|
|
206
|
+
* cancellation racing the update never resurrects a discarded run.
|
|
207
|
+
*/
|
|
208
|
+
recordChunkProgress(runId: string, chunksReceived: number): Promise<void>;
|
|
209
|
+
/** running | awaiting_response → failed (repair exhausted / provider error, §7.5). */
|
|
210
|
+
markFailed(runId: string, input?: MarkFailedInput): Promise<LlmRun>;
|
|
211
|
+
/** Abandon a non-terminal run (user cancel) → discarded. */
|
|
212
|
+
discard(runId: string): Promise<LlmRun>;
|
|
213
|
+
};
|
|
214
|
+
export type RunService = ReturnType<typeof createRunService>;
|
|
215
|
+
//# sourceMappingURL=run-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-service.d.ts","sourceRoot":"","sources":["../../src/llm/run-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM run lifecycle service (06-llm-assist.md §7.4, §7.5, §9).
|
|
3
|
+
*
|
|
4
|
+
* The shared layer the direct-path runner (T08), the apply executor (T10b), and
|
|
5
|
+
* the `/api/v1/llm/*` routes (T11) all call. It owns:
|
|
6
|
+
* - `createRun` — build the prompt (via the browser-safe `@adminium/llm`
|
|
7
|
+
* `buildPrompt`) against the connection's snapshot IR + collected stats,
|
|
8
|
+
* persist a `draft` run with its flattened `prompt_text` + `prompt_sha256`,
|
|
9
|
+
* and (§9) keep `provider`/`model` NULL for BYO runs;
|
|
10
|
+
* - `receiveResponse` — the BYO intake: validate a pasted chunk through the
|
|
11
|
+
* shared `validateResponse` pipeline and advance the run (fatal → stays
|
|
12
|
+
* `awaiting_response`; clean → `validated`);
|
|
13
|
+
* - the §7.4 status machine (legal transitions + run immutability after a
|
|
14
|
+
* terminal state).
|
|
15
|
+
*
|
|
16
|
+
* Architecture (01 §2.3): the transactional apply-EXECUTOR that writes overrides
|
|
17
|
+
* /pages lives in T10b, not here — this service persists run rows and validation
|
|
18
|
+
* outcomes only. Provider NETWORK calls belong to T08's job runner; this service
|
|
19
|
+
* performs none.
|
|
20
|
+
*/
|
|
21
|
+
import { createHash } from 'node:crypto';
|
|
22
|
+
import { buildPrompt, isTerminalRunStatus, PROMPT_VERSION, validateResponse, } from '@adminium/llm';
|
|
23
|
+
import { llmRunsRepo, newId } from '@adminium/meta';
|
|
24
|
+
/**
|
|
25
|
+
* Joins multiple flattened chunk prompts into the persisted `prompt_text` blob.
|
|
26
|
+
* Exported so the direct-path runner can split `prompt_text` back into the
|
|
27
|
+
* per-chunk `system`/`user` messages it sends (byte-identical to what BYO shows,
|
|
28
|
+
* §1 invariant 1).
|
|
29
|
+
*/
|
|
30
|
+
export const CHUNK_SEPARATOR = '\n\n=== NEXT PROMPT ===\n\n';
|
|
31
|
+
/**
|
|
32
|
+
* §7.4 legal transitions. A terminal state has no outgoing edges, which is how
|
|
33
|
+
* run immutability after `applied` is enforced (any transition off it throws).
|
|
34
|
+
*/
|
|
35
|
+
export const LEGAL_RUN_TRANSITIONS = {
|
|
36
|
+
draft: ['running', 'awaiting_response', 'failed', 'discarded'],
|
|
37
|
+
running: ['validated', 'failed', 'discarded'],
|
|
38
|
+
awaiting_response: ['validated', 'failed', 'discarded'],
|
|
39
|
+
validated: ['applied', 'partially_applied', 'discarded'],
|
|
40
|
+
applied: [],
|
|
41
|
+
partially_applied: [],
|
|
42
|
+
failed: [],
|
|
43
|
+
discarded: [],
|
|
44
|
+
};
|
|
45
|
+
export function canTransition(from, to) {
|
|
46
|
+
return LEGAL_RUN_TRANSITIONS[from].includes(to);
|
|
47
|
+
}
|
|
48
|
+
// ─── Errors ──────────────────────────────────────────────────────────────────
|
|
49
|
+
export class RunNotFoundError extends Error {
|
|
50
|
+
runId;
|
|
51
|
+
name = 'RunNotFoundError';
|
|
52
|
+
constructor(runId) {
|
|
53
|
+
super(`llm run not found: ${runId}`);
|
|
54
|
+
this.runId = runId;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/** A mutating call targeted a run already in a terminal state (§7.4 immutability). */
|
|
58
|
+
export class RunImmutableError extends Error {
|
|
59
|
+
runId;
|
|
60
|
+
status;
|
|
61
|
+
name = 'RunImmutableError';
|
|
62
|
+
constructor(runId, status) {
|
|
63
|
+
super(`llm run ${runId} is ${status} and immutable`);
|
|
64
|
+
this.runId = runId;
|
|
65
|
+
this.status = status;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export class InvalidRunTransitionError extends Error {
|
|
69
|
+
runId;
|
|
70
|
+
from;
|
|
71
|
+
to;
|
|
72
|
+
name = 'InvalidRunTransitionError';
|
|
73
|
+
constructor(runId, from, to) {
|
|
74
|
+
super(`illegal llm run transition ${from} → ${to} (run ${runId})`);
|
|
75
|
+
this.runId = runId;
|
|
76
|
+
this.from = from;
|
|
77
|
+
this.to = to;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* A BYO run was asked to record a provider/model — forbidden by the §9
|
|
82
|
+
* telemetry-free guarantee (BYO `provider`/`model` stay NULL, never recorded).
|
|
83
|
+
*/
|
|
84
|
+
export class ByoTelemetryError extends Error {
|
|
85
|
+
name = 'ByoTelemetryError';
|
|
86
|
+
constructor(message) {
|
|
87
|
+
super(message);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// ─── Service ─────────────────────────────────────────────────────────────────
|
|
91
|
+
export function createRunService(deps) {
|
|
92
|
+
const runs = llmRunsRepo(deps.meta);
|
|
93
|
+
const now = deps.now ?? Date.now;
|
|
94
|
+
async function findOrThrow(runId) {
|
|
95
|
+
const run = await runs.findById(runId);
|
|
96
|
+
if (run === null)
|
|
97
|
+
throw new RunNotFoundError(runId);
|
|
98
|
+
return run;
|
|
99
|
+
}
|
|
100
|
+
function assertTransition(run, to) {
|
|
101
|
+
if (isTerminalRunStatus(run.status))
|
|
102
|
+
throw new RunImmutableError(run.id, run.status);
|
|
103
|
+
if (!canTransition(run.status, to)) {
|
|
104
|
+
throw new InvalidRunTransitionError(run.id, run.status, to);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/** Move `runId` to `to`, guarding on its current status so the write is atomic. */
|
|
108
|
+
async function transition(run, to) {
|
|
109
|
+
assertTransition(run, to);
|
|
110
|
+
const ok = await runs.updateStatus(run.id, to, { expected: run.status, at: now() });
|
|
111
|
+
if (!ok) {
|
|
112
|
+
// The row changed under us (concurrent transition) — re-read and reject.
|
|
113
|
+
const fresh = await findOrThrow(run.id);
|
|
114
|
+
throw new InvalidRunTransitionError(run.id, fresh.status, to);
|
|
115
|
+
}
|
|
116
|
+
return findOrThrow(run.id);
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
getRun: (runId) => runs.findById(runId),
|
|
120
|
+
listRuns: (connectionId) => runs.listForConnection(connectionId),
|
|
121
|
+
/**
|
|
122
|
+
* Build the prompt and persist a `draft` run. For BYO runs `provider`/`model`
|
|
123
|
+
* are forced NULL (§9); passing either is a {@link ByoTelemetryError}. The run
|
|
124
|
+
* id equals the runId embedded in the prompt (§7.4).
|
|
125
|
+
*/
|
|
126
|
+
async createRun(input) {
|
|
127
|
+
if (input.mode === 'byo') {
|
|
128
|
+
if ((input.provider ?? null) !== null || (input.model ?? null) !== null) {
|
|
129
|
+
throw new ByoTelemetryError('BYO runs must not record a provider or model (06-llm-assist.md §9).');
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
const id = newId('run');
|
|
133
|
+
const artifact = buildPrompt({
|
|
134
|
+
snapshotId: input.snapshotId,
|
|
135
|
+
schemaIr: input.schemaIr,
|
|
136
|
+
stats: input.stats,
|
|
137
|
+
locales: input.locales,
|
|
138
|
+
sections: input.sections,
|
|
139
|
+
sampling: input.sampling,
|
|
140
|
+
runId: id,
|
|
141
|
+
}, {
|
|
142
|
+
allowed: input.allowed,
|
|
143
|
+
...(input.tokenBudget !== undefined ? { tokenBudget: input.tokenBudget } : {}),
|
|
144
|
+
});
|
|
145
|
+
const promptText = artifact.chunks.map((chunk) => chunk.byo).join(CHUNK_SEPARATOR);
|
|
146
|
+
const promptHash = createHash('sha256').update(promptText).digest('hex');
|
|
147
|
+
const run = await runs.create({
|
|
148
|
+
id,
|
|
149
|
+
connectionId: input.connectionId,
|
|
150
|
+
snapshotId: input.snapshotId,
|
|
151
|
+
mode: input.mode,
|
|
152
|
+
provider: input.mode === 'byo' ? null : input.provider ?? null,
|
|
153
|
+
model: input.mode === 'byo' ? null : input.model ?? null,
|
|
154
|
+
promptVersion: PROMPT_VERSION,
|
|
155
|
+
promptHash,
|
|
156
|
+
promptText,
|
|
157
|
+
sections: artifact.sections,
|
|
158
|
+
locales: input.locales,
|
|
159
|
+
sampling: input.sampling,
|
|
160
|
+
chunksTotal: artifact.chunks.length,
|
|
161
|
+
chunksReceived: 0,
|
|
162
|
+
status: 'draft',
|
|
163
|
+
createdBy: input.createdBy ?? null,
|
|
164
|
+
}, now());
|
|
165
|
+
return { run, artifact };
|
|
166
|
+
},
|
|
167
|
+
/** draft → running (direct path; T08 calls this before the provider call). */
|
|
168
|
+
async markRunning(runId) {
|
|
169
|
+
const run = await findOrThrow(runId);
|
|
170
|
+
return transition(run, 'running');
|
|
171
|
+
},
|
|
172
|
+
/** draft → awaiting_response (BYO; the run now waits for a pasted response). */
|
|
173
|
+
async markAwaitingResponse(runId) {
|
|
174
|
+
const run = await findOrThrow(runId);
|
|
175
|
+
return transition(run, 'awaiting_response');
|
|
176
|
+
},
|
|
177
|
+
/**
|
|
178
|
+
* BYO intake (§7.2): validate a pasted chunk against the run's snapshot and
|
|
179
|
+
* requested locales. A fatal error keeps the run in `awaiting_response` (the
|
|
180
|
+
* user can fix and re-paste); a clean parse advances it to `validated` once
|
|
181
|
+
* every chunk is received.
|
|
182
|
+
*/
|
|
183
|
+
async receiveResponse(runId, input) {
|
|
184
|
+
const run = await findOrThrow(runId);
|
|
185
|
+
if (isTerminalRunStatus(run.status))
|
|
186
|
+
throw new RunImmutableError(run.id, run.status);
|
|
187
|
+
if (run.status !== 'awaiting_response') {
|
|
188
|
+
throw new InvalidRunTransitionError(run.id, run.status, 'validated');
|
|
189
|
+
}
|
|
190
|
+
const validation = validateResponse(input.text, {
|
|
191
|
+
snapshot: input.snapshot,
|
|
192
|
+
locales: (run.locales ?? ['en_US']),
|
|
193
|
+
allowedTemplates: input.allowedTemplates,
|
|
194
|
+
allowedWidgets: input.allowedWidgets,
|
|
195
|
+
...(input.allowedIcons !== undefined ? { allowedIcons: input.allowedIcons } : {}),
|
|
196
|
+
...(input.stats !== undefined ? { stats: input.stats } : {}),
|
|
197
|
+
...(input.stubTables !== undefined ? { stubTables: input.stubTables } : {}),
|
|
198
|
+
runId: run.id,
|
|
199
|
+
});
|
|
200
|
+
const dryRun = input.dryRun === true;
|
|
201
|
+
if (validation.response === undefined) {
|
|
202
|
+
// Fatal (stage 1–4): stays awaiting_response, errors preserved (§7.2/§7.5).
|
|
203
|
+
if (dryRun) {
|
|
204
|
+
return {
|
|
205
|
+
run: {
|
|
206
|
+
...run,
|
|
207
|
+
validationStatus: 'invalid',
|
|
208
|
+
responseRaw: input.text,
|
|
209
|
+
validationErrors: validation.errors,
|
|
210
|
+
},
|
|
211
|
+
validation,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
await runs.recordResponse(run.id, {
|
|
215
|
+
status: 'awaiting_response',
|
|
216
|
+
validationStatus: 'invalid',
|
|
217
|
+
responseRaw: input.text,
|
|
218
|
+
validationErrors: validation.errors,
|
|
219
|
+
});
|
|
220
|
+
return { run: await findOrThrow(run.id), validation };
|
|
221
|
+
}
|
|
222
|
+
const chunksReceived = Math.min(run.chunksReceived + 1, run.chunksTotal);
|
|
223
|
+
const allReceived = chunksReceived >= run.chunksTotal;
|
|
224
|
+
const nextStatus = allReceived ? 'validated' : 'awaiting_response';
|
|
225
|
+
const validationStatus = validation.errors.length > 0 ? 'partial' : 'valid';
|
|
226
|
+
if (dryRun) {
|
|
227
|
+
// The row the caller WOULD have got — computed from the same values the
|
|
228
|
+
// write below uses, so the projection cannot drift from the real thing.
|
|
229
|
+
return {
|
|
230
|
+
run: {
|
|
231
|
+
...run,
|
|
232
|
+
status: nextStatus,
|
|
233
|
+
validationStatus,
|
|
234
|
+
responseRaw: input.text,
|
|
235
|
+
responseJson: validation.response,
|
|
236
|
+
validationErrors: validation.errors.length > 0 ? validation.errors : null,
|
|
237
|
+
chunksReceived,
|
|
238
|
+
},
|
|
239
|
+
validation,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
await runs.recordResponse(run.id, {
|
|
243
|
+
status: nextStatus,
|
|
244
|
+
validationStatus,
|
|
245
|
+
responseRaw: input.text,
|
|
246
|
+
responseJson: validation.response,
|
|
247
|
+
validationErrors: validation.errors.length > 0 ? validation.errors : null,
|
|
248
|
+
chunksReceived,
|
|
249
|
+
});
|
|
250
|
+
return { run: await findOrThrow(run.id), validation };
|
|
251
|
+
},
|
|
252
|
+
/**
|
|
253
|
+
* Persist the accepted/rejected suggestion-id lists (§8.3). Allowed once the
|
|
254
|
+
* run is `validated` and before it terminates; survives reload for re-review.
|
|
255
|
+
*/
|
|
256
|
+
async recordReview(runId, review) {
|
|
257
|
+
const run = await findOrThrow(runId);
|
|
258
|
+
if (isTerminalRunStatus(run.status))
|
|
259
|
+
throw new RunImmutableError(run.id, run.status);
|
|
260
|
+
if (run.status !== 'validated') {
|
|
261
|
+
throw new InvalidRunTransitionError(run.id, run.status, run.status);
|
|
262
|
+
}
|
|
263
|
+
await runs.recordReview(run.id, review);
|
|
264
|
+
return findOrThrow(run.id);
|
|
265
|
+
},
|
|
266
|
+
/**
|
|
267
|
+
* validated → applied | partially_applied. The transactional overrides/pages
|
|
268
|
+
* writes are the apply-EXECUTOR's job (T10b); this only stamps the terminal
|
|
269
|
+
* run row (and, optionally, the final review).
|
|
270
|
+
*/
|
|
271
|
+
async markApplied(runId, input = {}) {
|
|
272
|
+
const run = await findOrThrow(runId);
|
|
273
|
+
const to = input.partial === true ? 'partially_applied' : 'applied';
|
|
274
|
+
assertTransition(run, to);
|
|
275
|
+
await runs.markApplied(run.id, {
|
|
276
|
+
appliedBy: input.appliedBy ?? null,
|
|
277
|
+
status: to,
|
|
278
|
+
...(input.review !== undefined ? { review: input.review } : {}),
|
|
279
|
+
}, now());
|
|
280
|
+
return findOrThrow(run.id);
|
|
281
|
+
},
|
|
282
|
+
/**
|
|
283
|
+
* running → validated for the direct path (T08). Records the merged parsed
|
|
284
|
+
* response, token usage and wall-clock duration; `validation_status` is
|
|
285
|
+
* `partial` when per-item errors survived, else `valid` (§7.4).
|
|
286
|
+
*/
|
|
287
|
+
async recordDirectResult(runId, input) {
|
|
288
|
+
const run = await findOrThrow(runId);
|
|
289
|
+
if (isTerminalRunStatus(run.status))
|
|
290
|
+
throw new RunImmutableError(run.id, run.status);
|
|
291
|
+
if (run.status !== 'running') {
|
|
292
|
+
throw new InvalidRunTransitionError(run.id, run.status, 'validated');
|
|
293
|
+
}
|
|
294
|
+
const hasItemErrors = (input.validationErrors?.length ?? 0) > 0;
|
|
295
|
+
await runs.recordResponse(run.id, {
|
|
296
|
+
status: 'validated',
|
|
297
|
+
validationStatus: hasItemErrors ? 'partial' : 'valid',
|
|
298
|
+
responseJson: input.response,
|
|
299
|
+
validationErrors: hasItemErrors ? input.validationErrors ?? null : null,
|
|
300
|
+
chunksReceived: input.chunksReceived,
|
|
301
|
+
tokensIn: input.tokensIn,
|
|
302
|
+
tokensOut: input.tokensOut,
|
|
303
|
+
durationMs: input.durationMs,
|
|
304
|
+
});
|
|
305
|
+
return findOrThrow(run.id);
|
|
306
|
+
},
|
|
307
|
+
/**
|
|
308
|
+
* Bump `chunks_received` on a still-`running` chunked run (§7.5 map phase
|
|
309
|
+
* progress). Best-effort — swallows the terminal/immutable case so a
|
|
310
|
+
* cancellation racing the update never resurrects a discarded run.
|
|
311
|
+
*/
|
|
312
|
+
async recordChunkProgress(runId, chunksReceived) {
|
|
313
|
+
const run = await runs.findById(runId);
|
|
314
|
+
if (run === null || run.status !== 'running')
|
|
315
|
+
return;
|
|
316
|
+
await runs.recordResponse(runId, {
|
|
317
|
+
status: 'running',
|
|
318
|
+
validationStatus: 'pending',
|
|
319
|
+
chunksReceived,
|
|
320
|
+
});
|
|
321
|
+
},
|
|
322
|
+
/** running | awaiting_response → failed (repair exhausted / provider error, §7.5). */
|
|
323
|
+
async markFailed(runId, input = {}) {
|
|
324
|
+
const run = await findOrThrow(runId);
|
|
325
|
+
assertTransition(run, 'failed');
|
|
326
|
+
await runs.recordResponse(run.id, {
|
|
327
|
+
status: 'failed',
|
|
328
|
+
validationStatus: 'invalid',
|
|
329
|
+
validationErrors: input.errors ?? null,
|
|
330
|
+
...(input.tokensIn !== undefined ? { tokensIn: input.tokensIn } : {}),
|
|
331
|
+
...(input.tokensOut !== undefined ? { tokensOut: input.tokensOut } : {}),
|
|
332
|
+
...(input.durationMs !== undefined ? { durationMs: input.durationMs } : {}),
|
|
333
|
+
});
|
|
334
|
+
return findOrThrow(run.id);
|
|
335
|
+
},
|
|
336
|
+
/** Abandon a non-terminal run (user cancel) → discarded. */
|
|
337
|
+
async discard(runId) {
|
|
338
|
+
const run = await findOrThrow(runId);
|
|
339
|
+
return transition(run, 'discarded');
|
|
340
|
+
},
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
//# sourceMappingURL=run-service.js.map
|