anypick 1.0.0
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 +21 -0
- package/README.md +589 -0
- package/dist/adapters.d.ts +4 -0
- package/dist/adapters.d.ts.map +1 -0
- package/dist/adapters.js +2 -0
- package/dist/catalog/model-fetch.d.ts +34 -0
- package/dist/catalog/model-fetch.d.ts.map +1 -0
- package/dist/catalog/model-fetch.js +99 -0
- package/dist/catalog/model-fetch.js.map +1 -0
- package/dist/catalog/providers.d.ts +42 -0
- package/dist/catalog/providers.d.ts.map +1 -0
- package/dist/catalog/providers.js +424 -0
- package/dist/catalog/providers.js.map +1 -0
- package/dist/cli/bootstrap.d.ts +3 -0
- package/dist/cli/bootstrap.d.ts.map +1 -0
- package/dist/cli/bootstrap.js +78 -0
- package/dist/cli/bootstrap.js.map +1 -0
- package/dist/cli/commands.d.ts +29 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +1043 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/completion.d.ts +6 -0
- package/dist/cli/completion.d.ts.map +1 -0
- package/dist/cli/completion.js +202 -0
- package/dist/cli/completion.js.map +1 -0
- package/dist/cli/errors.d.ts +20 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/errors.js +47 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/format.d.ts +6 -0
- package/dist/cli/format.d.ts.map +1 -0
- package/dist/cli/format.js +75 -0
- package/dist/cli/format.js.map +1 -0
- package/dist/cli/help.d.ts +6 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +66 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/interactive-accounts.d.ts +3 -0
- package/dist/cli/interactive-accounts.d.ts.map +1 -0
- package/dist/cli/interactive-accounts.js +86 -0
- package/dist/cli/interactive-accounts.js.map +1 -0
- package/dist/cli/interactive-maintenance.d.ts +4 -0
- package/dist/cli/interactive-maintenance.d.ts.map +1 -0
- package/dist/cli/interactive-maintenance.js +30 -0
- package/dist/cli/interactive-maintenance.js.map +1 -0
- package/dist/cli/interactive.d.ts +14 -0
- package/dist/cli/interactive.d.ts.map +1 -0
- package/dist/cli/interactive.js +242 -0
- package/dist/cli/interactive.js.map +1 -0
- package/dist/cli/launch-client.d.ts +18 -0
- package/dist/cli/launch-client.d.ts.map +1 -0
- package/dist/cli/launch-client.js +117 -0
- package/dist/cli/launch-client.js.map +1 -0
- package/dist/cli/launcher-model.d.ts +64 -0
- package/dist/cli/launcher-model.d.ts.map +1 -0
- package/dist/cli/launcher-model.js +200 -0
- package/dist/cli/launcher-model.js.map +1 -0
- package/dist/cli/launcher-render.d.ts +22 -0
- package/dist/cli/launcher-render.d.ts.map +1 -0
- package/dist/cli/launcher-render.js +113 -0
- package/dist/cli/launcher-render.js.map +1 -0
- package/dist/cli/launcher.d.ts +27 -0
- package/dist/cli/launcher.d.ts.map +1 -0
- package/dist/cli/launcher.js +93 -0
- package/dist/cli/launcher.js.map +1 -0
- package/dist/cli/local-health.d.ts +17 -0
- package/dist/cli/local-health.d.ts.map +1 -0
- package/dist/cli/local-health.js +31 -0
- package/dist/cli/local-health.js.map +1 -0
- package/dist/cli/plugin-commands.d.ts +4 -0
- package/dist/cli/plugin-commands.d.ts.map +1 -0
- package/dist/cli/plugin-commands.js +160 -0
- package/dist/cli/plugin-commands.js.map +1 -0
- package/dist/cli/primary.d.ts +18 -0
- package/dist/cli/primary.d.ts.map +1 -0
- package/dist/cli/primary.js +593 -0
- package/dist/cli/primary.js.map +1 -0
- package/dist/cli/render-util.d.ts +24 -0
- package/dist/cli/render-util.d.ts.map +1 -0
- package/dist/cli/render-util.js +58 -0
- package/dist/cli/render-util.js.map +1 -0
- package/dist/cli/ux.d.ts +43 -0
- package/dist/cli/ux.d.ts.map +1 -0
- package/dist/cli/ux.js +114 -0
- package/dist/cli/ux.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +35 -0
- package/dist/cli.js.map +1 -0
- package/dist/clients/claude-client-apply.d.ts +8 -0
- package/dist/clients/claude-client-apply.d.ts.map +1 -0
- package/dist/clients/claude-client-apply.js +108 -0
- package/dist/clients/claude-client-apply.js.map +1 -0
- package/dist/clients/claude-code.d.ts +5 -0
- package/dist/clients/claude-code.d.ts.map +1 -0
- package/dist/clients/claude-code.js +189 -0
- package/dist/clients/claude-code.js.map +1 -0
- package/dist/clients/claude-settings-guard.d.ts +18 -0
- package/dist/clients/claude-settings-guard.d.ts.map +1 -0
- package/dist/clients/codex-desktop-catalog.d.ts +67 -0
- package/dist/clients/codex-desktop-catalog.d.ts.map +1 -0
- package/dist/clients/codex-desktop-catalog.js +212 -0
- package/dist/clients/codex-desktop-catalog.js.map +1 -0
- package/dist/clients/codex.d.ts +181 -0
- package/dist/clients/codex.d.ts.map +1 -0
- package/dist/clients/codex.js +783 -0
- package/dist/clients/codex.js.map +1 -0
- package/dist/clients/env-files.d.ts +14 -0
- package/dist/clients/env-files.d.ts.map +1 -0
- package/dist/clients/env-files.js +50 -0
- package/dist/clients/env-files.js.map +1 -0
- package/dist/clients/gemini-client-utils.d.ts +4 -0
- package/dist/clients/gemini-client-utils.d.ts.map +1 -0
- package/dist/clients/gemini-client-utils.js +33 -0
- package/dist/clients/gemini-client-utils.js.map +1 -0
- package/dist/clients/gemini.d.ts +16 -0
- package/dist/clients/gemini.d.ts.map +1 -0
- package/dist/clients/gemini.js +233 -0
- package/dist/clients/gemini.js.map +1 -0
- package/dist/clients/index.d.ts +14 -0
- package/dist/clients/index.d.ts.map +1 -0
- package/dist/clients/index.js +18 -0
- package/dist/clients/index.js.map +1 -0
- package/dist/clients/isolation.d.ts +28 -0
- package/dist/clients/isolation.d.ts.map +1 -0
- package/dist/clients/isolation.js +131 -0
- package/dist/clients/isolation.js.map +1 -0
- package/dist/clients/kiro.d.ts +10 -0
- package/dist/clients/kiro.d.ts.map +1 -0
- package/dist/clients/kiro.js +168 -0
- package/dist/clients/kiro.js.map +1 -0
- package/dist/clients/model-roles.d.ts +58 -0
- package/dist/clients/model-roles.d.ts.map +1 -0
- package/dist/clients/model-roles.js +139 -0
- package/dist/clients/model-roles.js.map +1 -0
- package/dist/clients/registry.d.ts +7 -0
- package/dist/clients/registry.d.ts.map +1 -0
- package/dist/clients/registry.js +16 -0
- package/dist/clients/registry.js.map +1 -0
- package/dist/clients/resolve.d.ts +27 -0
- package/dist/clients/resolve.d.ts.map +1 -0
- package/dist/clients/resolve.js +49 -0
- package/dist/clients/resolve.js.map +1 -0
- package/dist/core/account-codec.d.ts +32 -0
- package/dist/core/account-codec.d.ts.map +1 -0
- package/dist/core/account-codec.js +134 -0
- package/dist/core/account-codec.js.map +1 -0
- package/dist/core/account-transfer.d.ts +20 -0
- package/dist/core/account-transfer.d.ts.map +1 -0
- package/dist/core/account-transfer.js +136 -0
- package/dist/core/account-transfer.js.map +1 -0
- package/dist/core/activation-executor.d.ts +72 -0
- package/dist/core/activation-executor.d.ts.map +1 -0
- package/dist/core/activation-executor.js +690 -0
- package/dist/core/activation-executor.js.map +1 -0
- package/dist/core/activation-models.d.ts +6 -0
- package/dist/core/activation-models.d.ts.map +1 -0
- package/dist/core/activation-models.js +33 -0
- package/dist/core/activation-models.js.map +1 -0
- package/dist/core/activation-planner.d.ts +38 -0
- package/dist/core/activation-planner.d.ts.map +1 -0
- package/dist/core/activation-planner.js +248 -0
- package/dist/core/activation-planner.js.map +1 -0
- package/dist/core/activation-protocol.d.ts +3 -0
- package/dist/core/activation-protocol.d.ts.map +1 -0
- package/dist/core/activation-protocol.js +9 -0
- package/dist/core/activation-protocol.js.map +1 -0
- package/dist/core/activation-transport.d.ts +15 -0
- package/dist/core/activation-transport.d.ts.map +1 -0
- package/dist/core/activation-transport.js +23 -0
- package/dist/core/activation-transport.js.map +1 -0
- package/dist/core/app.d.ts +149 -0
- package/dist/core/app.d.ts.map +1 -0
- package/dist/core/app.js +372 -0
- package/dist/core/app.js.map +1 -0
- package/dist/core/binding-service.d.ts +93 -0
- package/dist/core/binding-service.d.ts.map +1 -0
- package/dist/core/binding-service.js +281 -0
- package/dist/core/binding-service.js.map +1 -0
- package/dist/core/binding-store.d.ts +23 -0
- package/dist/core/binding-store.d.ts.map +1 -0
- package/dist/core/binding-store.js +154 -0
- package/dist/core/binding-store.js.map +1 -0
- package/dist/core/brand.d.ts +18 -0
- package/dist/core/brand.d.ts.map +1 -0
- package/dist/core/brand.js +22 -0
- package/dist/core/brand.js.map +1 -0
- package/dist/core/capabilities.d.ts +30 -0
- package/dist/core/capabilities.d.ts.map +1 -0
- package/dist/core/capabilities.js +27 -0
- package/dist/core/capabilities.js.map +1 -0
- package/dist/core/client-state-store.d.ts +17 -0
- package/dist/core/client-state-store.d.ts.map +1 -0
- package/dist/core/client-state-store.js +47 -0
- package/dist/core/client-state-store.js.map +1 -0
- package/dist/core/codec/account.d.ts +52 -0
- package/dist/core/codec/account.d.ts.map +1 -0
- package/dist/core/codec/account.js +69 -0
- package/dist/core/codec/account.js.map +1 -0
- package/dist/core/codec/bindings.d.ts +38 -0
- package/dist/core/codec/bindings.d.ts.map +1 -0
- package/dist/core/codec/bindings.js +79 -0
- package/dist/core/codec/bindings.js.map +1 -0
- package/dist/core/codec/operations.d.ts +36 -0
- package/dist/core/codec/operations.d.ts.map +1 -0
- package/dist/core/codec/operations.js +82 -0
- package/dist/core/codec/operations.js.map +1 -0
- package/dist/core/codec/primitives.d.ts +59 -0
- package/dist/core/codec/primitives.d.ts.map +1 -0
- package/dist/core/codec/primitives.js +123 -0
- package/dist/core/codec/primitives.js.map +1 -0
- package/dist/core/codec/proxy-hub.d.ts +43 -0
- package/dist/core/codec/proxy-hub.d.ts.map +1 -0
- package/dist/core/codec/proxy-hub.js +69 -0
- package/dist/core/codec/proxy-hub.js.map +1 -0
- package/dist/core/codec/runtime.d.ts +41 -0
- package/dist/core/codec/runtime.d.ts.map +1 -0
- package/dist/core/codec/runtime.js +66 -0
- package/dist/core/codec/runtime.js.map +1 -0
- package/dist/core/codec.d.ts +43 -0
- package/dist/core/codec.d.ts.map +1 -0
- package/dist/core/codec.js +69 -0
- package/dist/core/codec.js.map +1 -0
- package/dist/core/codex-live-config.d.ts +92 -0
- package/dist/core/codex-live-config.d.ts.map +1 -0
- package/dist/core/codex-live-config.js +263 -0
- package/dist/core/codex-live-config.js.map +1 -0
- package/dist/core/config-service.d.ts +35 -0
- package/dist/core/config-service.d.ts.map +1 -0
- package/dist/core/config-service.js +87 -0
- package/dist/core/config-service.js.map +1 -0
- package/dist/core/config.d.ts +14 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +45 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/db-schema.d.ts +30 -0
- package/dist/core/db-schema.d.ts.map +1 -0
- package/dist/core/db-schema.js +278 -0
- package/dist/core/db-schema.js.map +1 -0
- package/dist/core/db.d.ts +72 -0
- package/dist/core/db.d.ts.map +1 -0
- package/dist/core/db.js +192 -0
- package/dist/core/db.js.map +1 -0
- package/dist/core/doctor-fixes.d.ts +3 -0
- package/dist/core/doctor-fixes.d.ts.map +1 -0
- package/dist/core/doctor-fixes.js +102 -0
- package/dist/core/doctor-fixes.js.map +1 -0
- package/dist/core/doctor-format.d.ts +10 -0
- package/dist/core/doctor-format.d.ts.map +1 -0
- package/dist/core/doctor-format.js +45 -0
- package/dist/core/doctor-format.js.map +1 -0
- package/dist/core/doctor-report.d.ts +3 -0
- package/dist/core/doctor-report.d.ts.map +1 -0
- package/dist/core/doctor-report.js +174 -0
- package/dist/core/doctor-report.js.map +1 -0
- package/dist/core/doctor-scan.d.ts +7 -0
- package/dist/core/doctor-scan.d.ts.map +1 -0
- package/dist/core/doctor-scan.js +139 -0
- package/dist/core/doctor-scan.js.map +1 -0
- package/dist/core/doctor-types.d.ts +89 -0
- package/dist/core/doctor-types.d.ts.map +1 -0
- package/dist/core/doctor-types.js +14 -0
- package/dist/core/doctor-types.js.map +1 -0
- package/dist/core/doctor-utils.d.ts +3 -0
- package/dist/core/doctor-utils.d.ts.map +1 -0
- package/dist/core/doctor-utils.js +36 -0
- package/dist/core/doctor-utils.js.map +1 -0
- package/dist/core/doctor.d.ts +14 -0
- package/dist/core/doctor.d.ts.map +1 -0
- package/dist/core/doctor.js +127 -0
- package/dist/core/doctor.js.map +1 -0
- package/dist/core/events.d.ts +58 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/events.js +88 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/journal.d.ts +23 -0
- package/dist/core/journal.d.ts.map +1 -0
- package/dist/core/journal.js +93 -0
- package/dist/core/journal.js.map +1 -0
- package/dist/core/lease-store.d.ts +22 -0
- package/dist/core/lease-store.d.ts.map +1 -0
- package/dist/core/lease-store.js +81 -0
- package/dist/core/lease-store.js.map +1 -0
- package/dist/core/migrate-bindings.d.ts +10 -0
- package/dist/core/migrate-bindings.d.ts.map +1 -0
- package/dist/core/migrate-bindings.js +98 -0
- package/dist/core/migrate-bindings.js.map +1 -0
- package/dist/core/migrate-fs.d.ts +11 -0
- package/dist/core/migrate-fs.d.ts.map +1 -0
- package/dist/core/migrate-fs.js +184 -0
- package/dist/core/migrate-fs.js.map +1 -0
- package/dist/core/model-cache-store.d.ts +27 -0
- package/dist/core/model-cache-store.d.ts.map +1 -0
- package/dist/core/model-cache-store.js +50 -0
- package/dist/core/model-cache-store.js.map +1 -0
- package/dist/core/model-discovery.d.ts +66 -0
- package/dist/core/model-discovery.d.ts.map +1 -0
- package/dist/core/model-discovery.js +127 -0
- package/dist/core/model-discovery.js.map +1 -0
- package/dist/core/model-policy.d.ts +40 -0
- package/dist/core/model-policy.d.ts.map +1 -0
- package/dist/core/model-policy.js +77 -0
- package/dist/core/model-policy.js.map +1 -0
- package/dist/core/model-roles.d.ts +9 -0
- package/dist/core/model-roles.d.ts.map +1 -0
- package/dist/core/model-roles.js +20 -0
- package/dist/core/model-roles.js.map +1 -0
- package/dist/core/mutation-lock.d.ts +31 -0
- package/dist/core/mutation-lock.d.ts.map +1 -0
- package/dist/core/mutation-lock.js +69 -0
- package/dist/core/mutation-lock.js.map +1 -0
- package/dist/core/paths.d.ts +49 -0
- package/dist/core/paths.d.ts.map +1 -0
- package/dist/core/paths.js +110 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/core/plugin-loader.d.ts +40 -0
- package/dist/core/plugin-loader.d.ts.map +1 -0
- package/dist/core/plugin-loader.js +184 -0
- package/dist/core/plugin-loader.js.map +1 -0
- package/dist/core/plugin-service.d.ts +32 -0
- package/dist/core/plugin-service.d.ts.map +1 -0
- package/dist/core/plugin-service.js +110 -0
- package/dist/core/plugin-service.js.map +1 -0
- package/dist/core/plugin-store.d.ts +18 -0
- package/dist/core/plugin-store.d.ts.map +1 -0
- package/dist/core/plugin-store.js +50 -0
- package/dist/core/plugin-store.js.map +1 -0
- package/dist/core/pool-store.d.ts +44 -0
- package/dist/core/pool-store.d.ts.map +1 -0
- package/dist/core/pool-store.js +198 -0
- package/dist/core/pool-store.js.map +1 -0
- package/dist/core/preset-store.d.ts +29 -0
- package/dist/core/preset-store.d.ts.map +1 -0
- package/dist/core/preset-store.js +105 -0
- package/dist/core/preset-store.js.map +1 -0
- package/dist/core/profile-service.d.ts +50 -0
- package/dist/core/profile-service.d.ts.map +1 -0
- package/dist/core/profile-service.js +149 -0
- package/dist/core/profile-service.js.map +1 -0
- package/dist/core/profile-store.d.ts +20 -0
- package/dist/core/profile-store.d.ts.map +1 -0
- package/dist/core/profile-store.js +92 -0
- package/dist/core/profile-store.js.map +1 -0
- package/dist/core/profile-synth.d.ts +24 -0
- package/dist/core/profile-synth.d.ts.map +1 -0
- package/dist/core/profile-synth.js +30 -0
- package/dist/core/profile-synth.js.map +1 -0
- package/dist/core/project-root.d.ts +7 -0
- package/dist/core/project-root.d.ts.map +1 -0
- package/dist/core/project-root.js +23 -0
- package/dist/core/project-root.js.map +1 -0
- package/dist/core/proxy-hub-cli.d.ts +3 -0
- package/dist/core/proxy-hub-cli.d.ts.map +1 -0
- package/dist/core/proxy-hub-cli.js +80 -0
- package/dist/core/proxy-hub-cli.js.map +1 -0
- package/dist/core/proxy-hub-routes.d.ts +22 -0
- package/dist/core/proxy-hub-routes.d.ts.map +1 -0
- package/dist/core/proxy-hub-routes.js +92 -0
- package/dist/core/proxy-hub-routes.js.map +1 -0
- package/dist/core/proxy-hub-server.d.ts +59 -0
- package/dist/core/proxy-hub-server.d.ts.map +1 -0
- package/dist/core/proxy-hub-server.js +409 -0
- package/dist/core/proxy-hub-server.js.map +1 -0
- package/dist/core/proxy-hub-service.d.ts +97 -0
- package/dist/core/proxy-hub-service.d.ts.map +1 -0
- package/dist/core/proxy-hub-service.js +553 -0
- package/dist/core/proxy-hub-service.js.map +1 -0
- package/dist/core/proxy-hub-store.d.ts +28 -0
- package/dist/core/proxy-hub-store.d.ts.map +1 -0
- package/dist/core/proxy-hub-store.js +152 -0
- package/dist/core/proxy-hub-store.js.map +1 -0
- package/dist/core/proxy-lifecycle.d.ts +26 -0
- package/dist/core/proxy-lifecycle.d.ts.map +1 -0
- package/dist/core/proxy-lifecycle.js +33 -0
- package/dist/core/proxy-lifecycle.js.map +1 -0
- package/dist/core/proxy-ports.d.ts +50 -0
- package/dist/core/proxy-ports.d.ts.map +1 -0
- package/dist/core/proxy-ports.js +86 -0
- package/dist/core/proxy-ports.js.map +1 -0
- package/dist/core/proxy-service.d.ts +184 -0
- package/dist/core/proxy-service.d.ts.map +1 -0
- package/dist/core/proxy-service.js +860 -0
- package/dist/core/proxy-service.js.map +1 -0
- package/dist/core/quota-guard-policy.d.ts +8 -0
- package/dist/core/quota-guard-policy.d.ts.map +1 -0
- package/dist/core/quota-guard-policy.js +21 -0
- package/dist/core/quota-guard-policy.js.map +1 -0
- package/dist/core/realign-proxy-clients.d.ts +19 -0
- package/dist/core/realign-proxy-clients.d.ts.map +1 -0
- package/dist/core/realign-proxy-clients.js +40 -0
- package/dist/core/realign-proxy-clients.js.map +1 -0
- package/dist/core/refs.d.ts +84 -0
- package/dist/core/refs.d.ts.map +1 -0
- package/dist/core/refs.js +250 -0
- package/dist/core/refs.js.map +1 -0
- package/dist/core/registry.d.ts +46 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +70 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/resolve-source.d.ts +54 -0
- package/dist/core/resolve-source.d.ts.map +1 -0
- package/dist/core/resolve-source.js +148 -0
- package/dist/core/resolve-source.js.map +1 -0
- package/dist/core/runtime-service.d.ts +158 -0
- package/dist/core/runtime-service.d.ts.map +1 -0
- package/dist/core/runtime-service.js +422 -0
- package/dist/core/runtime-service.js.map +1 -0
- package/dist/core/service.d.ts +200 -0
- package/dist/core/service.d.ts.map +1 -0
- package/dist/core/service.js +643 -0
- package/dist/core/service.js.map +1 -0
- package/dist/core/store-snapshot.d.ts +10 -0
- package/dist/core/store-snapshot.d.ts.map +1 -0
- package/dist/core/store-snapshot.js +79 -0
- package/dist/core/store-snapshot.js.map +1 -0
- package/dist/core/store.d.ts +68 -0
- package/dist/core/store.d.ts.map +1 -0
- package/dist/core/store.js +159 -0
- package/dist/core/store.js.map +1 -0
- package/dist/core/tray-runtime.d.ts +15 -0
- package/dist/core/tray-runtime.d.ts.map +1 -0
- package/dist/core/tray-runtime.js +33 -0
- package/dist/core/tray-runtime.js.map +1 -0
- package/dist/core/tray-settings-service.d.ts +7 -0
- package/dist/core/tray-settings-service.d.ts.map +1 -0
- package/dist/core/tray-settings-service.js +24 -0
- package/dist/core/tray-settings-service.js.map +1 -0
- package/dist/core/update.d.ts +26 -0
- package/dist/core/update.d.ts.map +1 -0
- package/dist/core/update.js +128 -0
- package/dist/core/update.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/network/egress/allowlist.d.ts +2 -0
- package/dist/network/egress/allowlist.d.ts.map +1 -0
- package/dist/network/egress/allowlist.js +14 -0
- package/dist/network/egress/allowlist.js.map +1 -0
- package/dist/network/egress/direct.d.ts +17 -0
- package/dist/network/egress/direct.d.ts.map +1 -0
- package/dist/network/egress/direct.js +28 -0
- package/dist/network/egress/direct.js.map +1 -0
- package/dist/network/egress/errors.d.ts +4 -0
- package/dist/network/egress/errors.d.ts.map +1 -0
- package/dist/network/egress/errors.js +8 -0
- package/dist/network/egress/errors.js.map +1 -0
- package/dist/network/egress/index.d.ts +6 -0
- package/dist/network/egress/index.d.ts.map +1 -0
- package/dist/network/egress/index.js +11 -0
- package/dist/network/egress/index.js.map +1 -0
- package/dist/network/egress/types.d.ts +16 -0
- package/dist/network/egress/types.d.ts.map +1 -0
- package/dist/presentation/client-name.d.ts +14 -0
- package/dist/presentation/client-name.d.ts.map +1 -0
- package/dist/presentation/client-name.js +22 -0
- package/dist/presentation/client-name.js.map +1 -0
- package/dist/presentation/layout.d.ts +7 -0
- package/dist/presentation/layout.d.ts.map +1 -0
- package/dist/presentation/layout.js +10 -0
- package/dist/presentation/layout.js.map +1 -0
- package/dist/providers/auth-fingerprint.d.ts +56 -0
- package/dist/providers/auth-fingerprint.d.ts.map +1 -0
- package/dist/providers/auth-fingerprint.js +163 -0
- package/dist/providers/auth-fingerprint.js.map +1 -0
- package/dist/providers/claude.d.ts +43 -0
- package/dist/providers/claude.d.ts.map +1 -0
- package/dist/providers/claude.js +191 -0
- package/dist/providers/claude.js.map +1 -0
- package/dist/providers/codex-identity.d.ts +13 -0
- package/dist/providers/codex-identity.d.ts.map +1 -0
- package/dist/providers/codex-identity.js +69 -0
- package/dist/providers/codex-identity.js.map +1 -0
- package/dist/providers/codex-refresh.d.ts +30 -0
- package/dist/providers/codex-refresh.d.ts.map +1 -0
- package/dist/providers/codex-refresh.js +64 -0
- package/dist/providers/codex-refresh.js.map +1 -0
- package/dist/providers/codex-usage.d.ts +3 -0
- package/dist/providers/codex-usage.d.ts.map +1 -0
- package/dist/providers/codex-usage.js +42 -0
- package/dist/providers/codex-usage.js.map +1 -0
- package/dist/providers/codex.d.ts +61 -0
- package/dist/providers/codex.d.ts.map +1 -0
- package/dist/providers/codex.js +212 -0
- package/dist/providers/codex.js.map +1 -0
- package/dist/providers/gemini-antigravity-oauth.d.ts +83 -0
- package/dist/providers/gemini-antigravity-oauth.d.ts.map +1 -0
- package/dist/providers/gemini-antigravity-oauth.js +343 -0
- package/dist/providers/gemini-antigravity-oauth.js.map +1 -0
- package/dist/providers/gemini-antigravity-state.d.ts +35 -0
- package/dist/providers/gemini-antigravity-state.d.ts.map +1 -0
- package/dist/providers/gemini-antigravity-state.js +433 -0
- package/dist/providers/gemini-antigravity-state.js.map +1 -0
- package/dist/providers/gemini-env.d.ts +8 -0
- package/dist/providers/gemini-env.d.ts.map +1 -0
- package/dist/providers/gemini-env.js +78 -0
- package/dist/providers/gemini-env.js.map +1 -0
- package/dist/providers/gemini-identity.d.ts +2 -0
- package/dist/providers/gemini-identity.d.ts.map +1 -0
- package/dist/providers/gemini-identity.js +14 -0
- package/dist/providers/gemini-identity.js.map +1 -0
- package/dist/providers/gemini-proxy/main.d.ts +3 -0
- package/dist/providers/gemini-proxy/main.d.ts.map +1 -0
- package/dist/providers/gemini-proxy/main.js +176 -0
- package/dist/providers/gemini-proxy/main.js.map +1 -0
- package/dist/providers/gemini-proxy/server.d.ts +57 -0
- package/dist/providers/gemini-proxy/server.d.ts.map +1 -0
- package/dist/providers/gemini-proxy/server.js +1240 -0
- package/dist/providers/gemini-proxy/server.js.map +1 -0
- package/dist/providers/gemini-proxy-entry.d.ts +2 -0
- package/dist/providers/gemini-proxy-entry.d.ts.map +1 -0
- package/dist/providers/gemini-proxy-entry.js +16 -0
- package/dist/providers/gemini-proxy-entry.js.map +1 -0
- package/dist/providers/gemini-proxy-lifecycle.d.ts +11 -0
- package/dist/providers/gemini-proxy-lifecycle.d.ts.map +1 -0
- package/dist/providers/gemini-proxy-lifecycle.js +131 -0
- package/dist/providers/gemini-proxy-lifecycle.js.map +1 -0
- package/dist/providers/gemini.d.ts +137 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +471 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/grok-proxy/auth.d.ts +27 -0
- package/dist/providers/grok-proxy/auth.d.ts.map +1 -0
- package/dist/providers/grok-proxy/auth.js +123 -0
- package/dist/providers/grok-proxy/auth.js.map +1 -0
- package/dist/providers/grok-proxy/main.d.ts +3 -0
- package/dist/providers/grok-proxy/main.d.ts.map +1 -0
- package/dist/providers/grok-proxy/main.js +111 -0
- package/dist/providers/grok-proxy/main.js.map +1 -0
- package/dist/providers/grok-proxy/server.d.ts +46 -0
- package/dist/providers/grok-proxy/server.d.ts.map +1 -0
- package/dist/providers/grok-proxy/server.js +595 -0
- package/dist/providers/grok-proxy/server.js.map +1 -0
- package/dist/providers/grok.d.ts +38 -0
- package/dist/providers/grok.d.ts.map +1 -0
- package/dist/providers/grok.js +250 -0
- package/dist/providers/grok.js.map +1 -0
- package/dist/providers/index.d.ts +14 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +23 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/kiro-secret-store.d.ts +39 -0
- package/dist/providers/kiro-secret-store.d.ts.map +1 -0
- package/dist/providers/kiro-secret-store.js +168 -0
- package/dist/providers/kiro-secret-store.js.map +1 -0
- package/dist/providers/kiro.d.ts +50 -0
- package/dist/providers/kiro.d.ts.map +1 -0
- package/dist/providers/kiro.js +373 -0
- package/dist/providers/kiro.js.map +1 -0
- package/dist/providers/model-policy.d.ts +15 -0
- package/dist/providers/model-policy.d.ts.map +1 -0
- package/dist/providers/model-policy.js +26 -0
- package/dist/providers/model-policy.js.map +1 -0
- package/dist/providers/opencode-auth.d.ts +67 -0
- package/dist/providers/opencode-auth.d.ts.map +1 -0
- package/dist/providers/opencode-auth.js +146 -0
- package/dist/providers/opencode-auth.js.map +1 -0
- package/dist/providers/opencode-cli-entry.d.ts +36 -0
- package/dist/providers/opencode-cli-entry.d.ts.map +1 -0
- package/dist/providers/opencode-cli-entry.js +90 -0
- package/dist/providers/opencode-cli-entry.js.map +1 -0
- package/dist/providers/opencode-proxy/abort.d.ts +8 -0
- package/dist/providers/opencode-proxy/abort.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/abort.js +42 -0
- package/dist/providers/opencode-proxy/abort.js.map +1 -0
- package/dist/providers/opencode-proxy/anthropic-handler.d.ts +4 -0
- package/dist/providers/opencode-proxy/anthropic-handler.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/anthropic-handler.js +108 -0
- package/dist/providers/opencode-proxy/anthropic-handler.js.map +1 -0
- package/dist/providers/opencode-proxy/auth.d.ts +38 -0
- package/dist/providers/opencode-proxy/auth.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/auth.js +128 -0
- package/dist/providers/opencode-proxy/auth.js.map +1 -0
- package/dist/providers/opencode-proxy/body.d.ts +9 -0
- package/dist/providers/opencode-proxy/body.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/body.js +69 -0
- package/dist/providers/opencode-proxy/body.js.map +1 -0
- package/dist/providers/opencode-proxy/catalog-handlers.d.ts +7 -0
- package/dist/providers/opencode-proxy/catalog-handlers.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/catalog-handlers.js +132 -0
- package/dist/providers/opencode-proxy/catalog-handlers.js.map +1 -0
- package/dist/providers/opencode-proxy/catalog.d.ts +41 -0
- package/dist/providers/opencode-proxy/catalog.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/catalog.js +146 -0
- package/dist/providers/opencode-proxy/catalog.js.map +1 -0
- package/dist/providers/opencode-proxy/cli.d.ts +2 -0
- package/dist/providers/opencode-proxy/cli.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/cli.js +162 -0
- package/dist/providers/opencode-proxy/cli.js.map +1 -0
- package/dist/providers/opencode-proxy/constants.d.ts +13 -0
- package/dist/providers/opencode-proxy/constants.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/constants.js +15 -0
- package/dist/providers/opencode-proxy/constants.js.map +1 -0
- package/dist/providers/opencode-proxy/context-budget.d.ts +31 -0
- package/dist/providers/opencode-proxy/context-budget.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/context-budget.js +165 -0
- package/dist/providers/opencode-proxy/context-budget.js.map +1 -0
- package/dist/providers/opencode-proxy/errors.d.ts +5 -0
- package/dist/providers/opencode-proxy/errors.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/errors.js +45 -0
- package/dist/providers/opencode-proxy/errors.js.map +1 -0
- package/dist/providers/opencode-proxy/forwarders.d.ts +7 -0
- package/dist/providers/opencode-proxy/forwarders.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/forwarders.js +214 -0
- package/dist/providers/opencode-proxy/forwarders.js.map +1 -0
- package/dist/providers/opencode-proxy/http.d.ts +11 -0
- package/dist/providers/opencode-proxy/http.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/http.js +97 -0
- package/dist/providers/opencode-proxy/http.js.map +1 -0
- package/dist/providers/opencode-proxy/models.d.ts +42 -0
- package/dist/providers/opencode-proxy/models.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/models.js +148 -0
- package/dist/providers/opencode-proxy/models.js.map +1 -0
- package/dist/providers/opencode-proxy/openai-handler.d.ts +5 -0
- package/dist/providers/opencode-proxy/openai-handler.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/openai-handler.js +115 -0
- package/dist/providers/opencode-proxy/openai-handler.js.map +1 -0
- package/dist/providers/opencode-proxy/router.d.ts +4 -0
- package/dist/providers/opencode-proxy/router.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/router.js +65 -0
- package/dist/providers/opencode-proxy/router.js.map +1 -0
- package/dist/providers/opencode-proxy/runtime.d.ts +23 -0
- package/dist/providers/opencode-proxy/runtime.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/runtime.js +158 -0
- package/dist/providers/opencode-proxy/runtime.js.map +1 -0
- package/dist/providers/opencode-proxy/server.d.ts +13 -0
- package/dist/providers/opencode-proxy/server.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/server.js +52 -0
- package/dist/providers/opencode-proxy/server.js.map +1 -0
- package/dist/providers/opencode-proxy/stream.d.ts +4 -0
- package/dist/providers/opencode-proxy/stream.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/stream.js +71 -0
- package/dist/providers/opencode-proxy/stream.js.map +1 -0
- package/dist/providers/opencode-proxy/translate-stream.d.ts +3 -0
- package/dist/providers/opencode-proxy/translate-stream.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/translate-stream.js +205 -0
- package/dist/providers/opencode-proxy/translate-stream.js.map +1 -0
- package/dist/providers/opencode-proxy/translate.d.ts +11 -0
- package/dist/providers/opencode-proxy/translate.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/translate.js +250 -0
- package/dist/providers/opencode-proxy/translate.js.map +1 -0
- package/dist/providers/opencode-proxy/types.d.ts +110 -0
- package/dist/providers/opencode-proxy/types.d.ts.map +1 -0
- package/dist/providers/opencode-proxy/types.js +38 -0
- package/dist/providers/opencode-proxy/types.js.map +1 -0
- package/dist/providers/opencode-proxy-lifecycle.d.ts +11 -0
- package/dist/providers/opencode-proxy-lifecycle.d.ts.map +1 -0
- package/dist/providers/opencode-proxy-lifecycle.js +144 -0
- package/dist/providers/opencode-proxy-lifecycle.js.map +1 -0
- package/dist/providers/opencode.d.ts +40 -0
- package/dist/providers/opencode.d.ts.map +1 -0
- package/dist/providers/opencode.js +190 -0
- package/dist/providers/opencode.js.map +1 -0
- package/dist/providers/protocol/anthropic-convert.d.ts +12 -0
- package/dist/providers/protocol/anthropic-convert.d.ts.map +1 -0
- package/dist/providers/protocol/anthropic-convert.js +113 -0
- package/dist/providers/protocol/anthropic-convert.js.map +1 -0
- package/dist/providers/protocol/anthropic-helpers.d.ts +13 -0
- package/dist/providers/protocol/anthropic-helpers.d.ts.map +1 -0
- package/dist/providers/protocol/anthropic-helpers.js +179 -0
- package/dist/providers/protocol/anthropic-helpers.js.map +1 -0
- package/dist/providers/protocol/anthropic-stream-reader.d.ts +13 -0
- package/dist/providers/protocol/anthropic-stream-reader.d.ts.map +1 -0
- package/dist/providers/protocol/anthropic-stream-reader.js +46 -0
- package/dist/providers/protocol/anthropic-stream-reader.js.map +1 -0
- package/dist/providers/protocol/anthropic-stream.d.ts +7 -0
- package/dist/providers/protocol/anthropic-stream.d.ts.map +1 -0
- package/dist/providers/protocol/anthropic-stream.js +318 -0
- package/dist/providers/protocol/anthropic-stream.js.map +1 -0
- package/dist/providers/protocol/anthropic-types.d.ts +240 -0
- package/dist/providers/protocol/anthropic-types.d.ts.map +1 -0
- package/dist/providers/protocol/anthropic.d.ts +20 -0
- package/dist/providers/protocol/anthropic.d.ts.map +1 -0
- package/dist/providers/protocol/gemini/translate-anthropic.d.ts +15 -0
- package/dist/providers/protocol/gemini/translate-anthropic.d.ts.map +1 -0
- package/dist/providers/protocol/gemini/translate-anthropic.js +84 -0
- package/dist/providers/protocol/gemini/translate-anthropic.js.map +1 -0
- package/dist/providers/protocol/gemini/translate-chat.d.ts +5 -0
- package/dist/providers/protocol/gemini/translate-chat.d.ts.map +1 -0
- package/dist/providers/protocol/gemini/translate-chat.js +142 -0
- package/dist/providers/protocol/gemini/translate-chat.js.map +1 -0
- package/dist/providers/protocol/gemini/translate-models.d.ts +40 -0
- package/dist/providers/protocol/gemini/translate-models.d.ts.map +1 -0
- package/dist/providers/protocol/gemini/translate-models.js +186 -0
- package/dist/providers/protocol/gemini/translate-models.js.map +1 -0
- package/dist/providers/protocol/gemini/translate-responses.d.ts +6 -0
- package/dist/providers/protocol/gemini/translate-responses.d.ts.map +1 -0
- package/dist/providers/protocol/gemini/translate-responses.js +187 -0
- package/dist/providers/protocol/gemini/translate-responses.js.map +1 -0
- package/dist/providers/protocol/gemini/translate-schema.d.ts +9 -0
- package/dist/providers/protocol/gemini/translate-schema.d.ts.map +1 -0
- package/dist/providers/protocol/gemini/translate-schema.js +48 -0
- package/dist/providers/protocol/gemini/translate-schema.js.map +1 -0
- package/dist/providers/protocol/gemini/translate-shared.d.ts +8 -0
- package/dist/providers/protocol/gemini/translate-shared.d.ts.map +1 -0
- package/dist/providers/protocol/gemini/translate-shared.js +47 -0
- package/dist/providers/protocol/gemini/translate-shared.js.map +1 -0
- package/dist/providers/protocol/gemini/translate-thinking.d.ts +7 -0
- package/dist/providers/protocol/gemini/translate-thinking.d.ts.map +1 -0
- package/dist/providers/protocol/gemini/translate-thinking.js +65 -0
- package/dist/providers/protocol/gemini/translate-thinking.js.map +1 -0
- package/dist/providers/protocol/gemini/translate-types.d.ts +133 -0
- package/dist/providers/protocol/gemini/translate-types.d.ts.map +1 -0
- package/dist/providers/protocol/gemini/translate.d.ts +7 -0
- package/dist/providers/protocol/gemini/translate.d.ts.map +1 -0
- package/dist/providers/protocol/json-schema.d.ts +52 -0
- package/dist/providers/protocol/json-schema.d.ts.map +1 -0
- package/dist/providers/protocol/json-schema.js +189 -0
- package/dist/providers/protocol/json-schema.js.map +1 -0
- package/dist/providers/protocol/token-estimate.d.ts +15 -0
- package/dist/providers/protocol/token-estimate.d.ts.map +1 -0
- package/dist/providers/protocol/token-estimate.js +34 -0
- package/dist/providers/protocol/token-estimate.js.map +1 -0
- package/dist/providers/proxy-hub-backend.d.ts +4 -0
- package/dist/providers/proxy-hub-backend.d.ts.map +1 -0
- package/dist/providers/proxy-hub-backend.js +11 -0
- package/dist/providers/proxy-hub-backend.js.map +1 -0
- package/dist/providers/proxy-process.d.ts +35 -0
- package/dist/providers/proxy-process.d.ts.map +1 -0
- package/dist/providers/proxy-process.js +119 -0
- package/dist/providers/proxy-process.js.map +1 -0
- package/dist/providers/proxy-shared.d.ts +43 -0
- package/dist/providers/proxy-shared.d.ts.map +1 -0
- package/dist/providers/proxy-shared.js +128 -0
- package/dist/providers/proxy-shared.js.map +1 -0
- package/dist/providers/quota-guard.d.ts +49 -0
- package/dist/providers/quota-guard.d.ts.map +1 -0
- package/dist/providers/quota-guard.js +107 -0
- package/dist/providers/quota-guard.js.map +1 -0
- package/dist/providers/reasoning.d.ts +27 -0
- package/dist/providers/reasoning.d.ts.map +1 -0
- package/dist/providers/reasoning.js +61 -0
- package/dist/providers/reasoning.js.map +1 -0
- package/dist/providers/upstream-policy.d.ts +33 -0
- package/dist/providers/upstream-policy.d.ts.map +1 -0
- package/dist/providers/upstream-policy.js +97 -0
- package/dist/providers/upstream-policy.js.map +1 -0
- package/dist/public-types.d.ts +3 -0
- package/dist/public-types.d.ts.map +1 -0
- package/dist/public.d.ts +19 -0
- package/dist/public.d.ts.map +1 -0
- package/dist/public.js +16 -0
- package/dist/public.js.map +1 -0
- package/dist/sources/account-adapters.d.ts +64 -0
- package/dist/sources/account-adapters.d.ts.map +1 -0
- package/dist/sources/account-adapters.js +205 -0
- package/dist/sources/account-adapters.js.map +1 -0
- package/dist/sources/gateway-adapters.d.ts +26 -0
- package/dist/sources/gateway-adapters.d.ts.map +1 -0
- package/dist/sources/gateway-adapters.js +43 -0
- package/dist/sources/gateway-adapters.js.map +1 -0
- package/dist/sources/kiro-proxy-bin.d.ts +41 -0
- package/dist/sources/kiro-proxy-bin.d.ts.map +1 -0
- package/dist/sources/kiro-proxy-bin.js +140 -0
- package/dist/sources/kiro-proxy-bin.js.map +1 -0
- package/dist/sources/proxy-hub-adapters.d.ts +7 -0
- package/dist/sources/proxy-hub-adapters.d.ts.map +1 -0
- package/dist/sources/proxy-hub-adapters.js +26 -0
- package/dist/sources/proxy-hub-adapters.js.map +1 -0
- package/dist/testing.d.ts +9 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +6 -0
- package/dist/tray/AnyPickTray.swift +3 -0
- package/dist/tray/activity.d.ts +18 -0
- package/dist/tray/activity.d.ts.map +1 -0
- package/dist/tray/activity.js +51 -0
- package/dist/tray/activity.js.map +1 -0
- package/dist/tray/app-icons/icon-1024.png +0 -0
- package/dist/tray/app-icons/icon-128.png +0 -0
- package/dist/tray/app-icons/icon-16.png +0 -0
- package/dist/tray/app-icons/icon-256.png +0 -0
- package/dist/tray/app-icons/icon-32.png +0 -0
- package/dist/tray/app-icons/icon-512.png +0 -0
- package/dist/tray/app-icons/icon-64.png +0 -0
- package/dist/tray/icons/claude.svg +1 -0
- package/dist/tray/icons/googlegemini.svg +1 -0
- package/dist/tray/icons/grok.svg +1 -0
- package/dist/tray/icons/kiro.svg +1 -0
- package/dist/tray/icons/openai.svg +1 -0
- package/dist/tray/icons/opencode.svg +1 -0
- package/dist/tray/icons/openrouter.svg +1 -0
- package/dist/tray/model-role-actions.d.ts +15 -0
- package/dist/tray/model-role-actions.d.ts.map +1 -0
- package/dist/tray/model-role-actions.js +41 -0
- package/dist/tray/model-role-actions.js.map +1 -0
- package/dist/tray/native/AccountsPanel.swift +434 -0
- package/dist/tray/native/AppEntry.swift +229 -0
- package/dist/tray/native/MainWindow.swift +300 -0
- package/dist/tray/native/ManageFormChrome.swift +332 -0
- package/dist/tray/native/ManageForms.swift +472 -0
- package/dist/tray/native/ManagePanel.swift +356 -0
- package/dist/tray/native/Models.swift +259 -0
- package/dist/tray/native/ModelsEditor.swift +390 -0
- package/dist/tray/native/ModelsOverview.swift +76 -0
- package/dist/tray/native/ModelsPickers.swift +273 -0
- package/dist/tray/native/ModelsRoutePickers.swift +718 -0
- package/dist/tray/native/MonitorPanel.swift +375 -0
- package/dist/tray/native/ProxyPanel.swift +326 -0
- package/dist/tray/native/QuickActivityRow.swift +40 -0
- package/dist/tray/native/QuickNav.swift +62 -0
- package/dist/tray/native/QuickPanel.swift +447 -0
- package/dist/tray/native/QuickRouteRow.swift +189 -0
- package/dist/tray/native/QuickServiceRows.swift +292 -0
- package/dist/tray/native/RoutingIssues.swift +293 -0
- package/dist/tray/native/SettingsPanel.swift +225 -0
- package/dist/tray/native/SharedUI.swift +681 -0
- package/dist/tray/native/Store.swift +540 -0
- package/dist/tray/native/Theme.swift +139 -0
- package/dist/tray/native/TrayChrome.swift +657 -0
- package/dist/tray/native/TrayControls.swift +475 -0
- package/dist/tray/native/TrayPreferences.swift +46 -0
- package/dist/tray/native/sources.txt +26 -0
- package/dist/tray/native-sources.d.ts +8 -0
- package/dist/tray/native-sources.d.ts.map +1 -0
- package/dist/tray/native-sources.js +19 -0
- package/dist/tray/native-sources.js.map +1 -0
- package/dist/tray/protocol.d.ts +79 -0
- package/dist/tray/protocol.d.ts.map +1 -0
- package/dist/tray/protocol.js +145 -0
- package/dist/tray/protocol.js.map +1 -0
- package/dist/tray/settings.d.ts +15 -0
- package/dist/tray/settings.d.ts.map +1 -0
- package/dist/tray/settings.js +72 -0
- package/dist/tray/settings.js.map +1 -0
- package/dist/tray/snapshot-client-routes.d.ts +11 -0
- package/dist/tray/snapshot-client-routes.d.ts.map +1 -0
- package/dist/tray/snapshot-client-routes.js +305 -0
- package/dist/tray/snapshot-client-routes.js.map +1 -0
- package/dist/tray/snapshot-helpers.d.ts +20 -0
- package/dist/tray/snapshot-helpers.d.ts.map +1 -0
- package/dist/tray/snapshot-helpers.js +74 -0
- package/dist/tray/snapshot-helpers.js.map +1 -0
- package/dist/tray/snapshot-hub.d.ts +7 -0
- package/dist/tray/snapshot-hub.d.ts.map +1 -0
- package/dist/tray/snapshot-hub.js +93 -0
- package/dist/tray/snapshot-hub.js.map +1 -0
- package/dist/tray/snapshot-resources.d.ts +19 -0
- package/dist/tray/snapshot-resources.d.ts.map +1 -0
- package/dist/tray/snapshot-resources.js +216 -0
- package/dist/tray/snapshot-resources.js.map +1 -0
- package/dist/tray/snapshot-types.d.ts +229 -0
- package/dist/tray/snapshot-types.d.ts.map +1 -0
- package/dist/tray/snapshot-usage.d.ts +9 -0
- package/dist/tray/snapshot-usage.d.ts.map +1 -0
- package/dist/tray/snapshot-usage.js +35 -0
- package/dist/tray/snapshot-usage.js.map +1 -0
- package/dist/tray/snapshot.d.ts +7 -0
- package/dist/tray/snapshot.d.ts.map +1 -0
- package/dist/tray/snapshot.js +48 -0
- package/dist/tray/snapshot.js.map +1 -0
- package/dist/tray/supervisor-actions.d.ts +19 -0
- package/dist/tray/supervisor-actions.d.ts.map +1 -0
- package/dist/tray/supervisor-actions.js +224 -0
- package/dist/tray/supervisor-actions.js.map +1 -0
- package/dist/tray/supervisor-activity.d.ts +5 -0
- package/dist/tray/supervisor-activity.d.ts.map +1 -0
- package/dist/tray/supervisor-activity.js +19 -0
- package/dist/tray/supervisor-activity.js.map +1 -0
- package/dist/tray/supervisor-errors.d.ts +9 -0
- package/dist/tray/supervisor-errors.d.ts.map +1 -0
- package/dist/tray/supervisor-errors.js +91 -0
- package/dist/tray/supervisor-errors.js.map +1 -0
- package/dist/tray/supervisor-logs.d.ts +6 -0
- package/dist/tray/supervisor-logs.d.ts.map +1 -0
- package/dist/tray/supervisor-logs.js +52 -0
- package/dist/tray/supervisor-logs.js.map +1 -0
- package/dist/tray/supervisor-mutations.d.ts +14 -0
- package/dist/tray/supervisor-mutations.d.ts.map +1 -0
- package/dist/tray/supervisor-mutations.js +218 -0
- package/dist/tray/supervisor-mutations.js.map +1 -0
- package/dist/tray/supervisor-native.d.ts +22 -0
- package/dist/tray/supervisor-native.d.ts.map +1 -0
- package/dist/tray/supervisor-native.js +227 -0
- package/dist/tray/supervisor-native.js.map +1 -0
- package/dist/tray/supervisor-proxies.d.ts +6 -0
- package/dist/tray/supervisor-proxies.d.ts.map +1 -0
- package/dist/tray/supervisor-proxies.js +37 -0
- package/dist/tray/supervisor-proxies.js.map +1 -0
- package/dist/tray/supervisor-tauri.d.ts +13 -0
- package/dist/tray/supervisor-tauri.d.ts.map +1 -0
- package/dist/tray/supervisor-tauri.js +36 -0
- package/dist/tray/supervisor-tauri.js.map +1 -0
- package/dist/tray/supervisor.d.ts +17 -0
- package/dist/tray/supervisor.d.ts.map +1 -0
- package/dist/tray/supervisor.js +372 -0
- package/dist/tray/supervisor.js.map +1 -0
- package/dist/tray/terminal-launcher.d.ts +12 -0
- package/dist/tray/terminal-launcher.d.ts.map +1 -0
- package/dist/tray/terminal-launcher.js +130 -0
- package/dist/tray/terminal-launcher.js.map +1 -0
- package/dist/tui/actions/ensure-proxy-up.d.ts +15 -0
- package/dist/tui/actions/ensure-proxy-up.d.ts.map +1 -0
- package/dist/tui/actions/ensure-proxy-up.js +41 -0
- package/dist/tui/actions/ensure-proxy-up.js.map +1 -0
- package/dist/tui/actions/use-account-actions.d.ts +35 -0
- package/dist/tui/actions/use-account-actions.d.ts.map +1 -0
- package/dist/tui/actions/use-account-actions.js +527 -0
- package/dist/tui/actions/use-account-actions.js.map +1 -0
- package/dist/tui/actions/use-app-bindings.d.ts +83 -0
- package/dist/tui/actions/use-app-bindings.d.ts.map +1 -0
- package/dist/tui/actions/use-app-bindings.js +472 -0
- package/dist/tui/actions/use-app-bindings.js.map +1 -0
- package/dist/tui/actions/use-gateway-actions.d.ts +45 -0
- package/dist/tui/actions/use-gateway-actions.d.ts.map +1 -0
- package/dist/tui/actions/use-gateway-actions.js +370 -0
- package/dist/tui/actions/use-gateway-actions.js.map +1 -0
- package/dist/tui/actions/use-home-filter.d.ts +24 -0
- package/dist/tui/actions/use-home-filter.d.ts.map +1 -0
- package/dist/tui/actions/use-home-filter.js +48 -0
- package/dist/tui/actions/use-home-filter.js.map +1 -0
- package/dist/tui/actions/use-model-role-editor.d.ts +44 -0
- package/dist/tui/actions/use-model-role-editor.d.ts.map +1 -0
- package/dist/tui/actions/use-model-role-editor.js +68 -0
- package/dist/tui/actions/use-model-role-editor.js.map +1 -0
- package/dist/tui/actions/use-provider-filter.d.ts +10 -0
- package/dist/tui/actions/use-provider-filter.d.ts.map +1 -0
- package/dist/tui/actions/use-provider-filter.js +22 -0
- package/dist/tui/actions/use-provider-filter.js.map +1 -0
- package/dist/tui/actions/use-proxy-actions.d.ts +31 -0
- package/dist/tui/actions/use-proxy-actions.d.ts.map +1 -0
- package/dist/tui/actions/use-proxy-actions.js +474 -0
- package/dist/tui/actions/use-proxy-actions.js.map +1 -0
- package/dist/tui/actions/use-text-input-submit.d.ts +16 -0
- package/dist/tui/actions/use-text-input-submit.d.ts.map +1 -0
- package/dist/tui/actions/use-text-input-submit.js +96 -0
- package/dist/tui/actions/use-text-input-submit.js.map +1 -0
- package/dist/tui/actions/use-tray-runtime-actions.d.ts +18 -0
- package/dist/tui/actions/use-tray-runtime-actions.d.ts.map +1 -0
- package/dist/tui/actions/use-tray-runtime-actions.js +78 -0
- package/dist/tui/actions/use-tray-runtime-actions.js.map +1 -0
- package/dist/tui/app-ui-helpers.d.ts +14 -0
- package/dist/tui/app-ui-helpers.d.ts.map +1 -0
- package/dist/tui/app-ui-helpers.js +48 -0
- package/dist/tui/app-ui-helpers.js.map +1 -0
- package/dist/tui/app-ui.d.ts +19 -0
- package/dist/tui/app-ui.d.ts.map +1 -0
- package/dist/tui/app-ui.js +98 -0
- package/dist/tui/app-ui.js.map +1 -0
- package/dist/tui/components/chrome/header.d.ts +39 -0
- package/dist/tui/components/chrome/header.d.ts.map +1 -0
- package/dist/tui/components/chrome/header.js +161 -0
- package/dist/tui/components/chrome/header.js.map +1 -0
- package/dist/tui/components/chrome/inputs.d.ts +34 -0
- package/dist/tui/components/chrome/inputs.d.ts.map +1 -0
- package/dist/tui/components/chrome/inputs.js +82 -0
- package/dist/tui/components/chrome/inputs.js.map +1 -0
- package/dist/tui/components/chrome/layout.d.ts +61 -0
- package/dist/tui/components/chrome/layout.d.ts.map +1 -0
- package/dist/tui/components/chrome/layout.js +119 -0
- package/dist/tui/components/chrome/layout.js.map +1 -0
- package/dist/tui/components/chrome/legacy.d.ts +84 -0
- package/dist/tui/components/chrome/legacy.d.ts.map +1 -0
- package/dist/tui/components/chrome/legacy.js +6 -0
- package/dist/tui/components/chrome/rows.d.ts +89 -0
- package/dist/tui/components/chrome/rows.d.ts.map +1 -0
- package/dist/tui/components/chrome/rows.js +151 -0
- package/dist/tui/components/chrome/rows.js.map +1 -0
- package/dist/tui/components/chrome/status.d.ts +50 -0
- package/dist/tui/components/chrome/status.d.ts.map +1 -0
- package/dist/tui/components/chrome/status.js +157 -0
- package/dist/tui/components/chrome/status.js.map +1 -0
- package/dist/tui/components/chrome.d.ts +7 -0
- package/dist/tui/components/chrome.d.ts.map +1 -0
- package/dist/tui/components/chrome.js +7 -0
- package/dist/tui/components.d.ts +26 -0
- package/dist/tui/components.d.ts.map +1 -0
- package/dist/tui/components.js +182 -0
- package/dist/tui/components.js.map +1 -0
- package/dist/tui/model/anypick.d.ts +106 -0
- package/dist/tui/model/anypick.d.ts.map +1 -0
- package/dist/tui/model/anypick.js +116 -0
- package/dist/tui/model/anypick.js.map +1 -0
- package/dist/tui/model/bindings.d.ts +39 -0
- package/dist/tui/model/bindings.d.ts.map +1 -0
- package/dist/tui/model/bindings.js +102 -0
- package/dist/tui/model/bindings.js.map +1 -0
- package/dist/tui/model/detail.d.ts +6 -0
- package/dist/tui/model/detail.d.ts.map +1 -0
- package/dist/tui/model/detail.js +85 -0
- package/dist/tui/model/detail.js.map +1 -0
- package/dist/tui/model/gateway.d.ts +46 -0
- package/dist/tui/model/gateway.d.ts.map +1 -0
- package/dist/tui/model/gateway.js +134 -0
- package/dist/tui/model/gateway.js.map +1 -0
- package/dist/tui/model/home-format.d.ts +52 -0
- package/dist/tui/model/home-format.d.ts.map +1 -0
- package/dist/tui/model/home-format.js +64 -0
- package/dist/tui/model/home-format.js.map +1 -0
- package/dist/tui/model/home-load.d.ts +8 -0
- package/dist/tui/model/home-load.d.ts.map +1 -0
- package/dist/tui/model/home-load.js +244 -0
- package/dist/tui/model/home-load.js.map +1 -0
- package/dist/tui/model/identity.d.ts +53 -0
- package/dist/tui/model/identity.d.ts.map +1 -0
- package/dist/tui/model/identity.js +176 -0
- package/dist/tui/model/identity.js.map +1 -0
- package/dist/tui/model/line-editor.d.ts +99 -0
- package/dist/tui/model/line-editor.d.ts.map +1 -0
- package/dist/tui/model/line-editor.js +186 -0
- package/dist/tui/model/line-editor.js.map +1 -0
- package/dist/tui/model/names.d.ts +28 -0
- package/dist/tui/model/names.d.ts.map +1 -0
- package/dist/tui/model/names.js +42 -0
- package/dist/tui/model/names.js.map +1 -0
- package/dist/tui/model/pool.d.ts +11 -0
- package/dist/tui/model/pool.d.ts.map +1 -0
- package/dist/tui/model/pool.js +115 -0
- package/dist/tui/model/pool.js.map +1 -0
- package/dist/tui/model/provider-filter.d.ts +14 -0
- package/dist/tui/model/provider-filter.d.ts.map +1 -0
- package/dist/tui/model/provider-filter.js +46 -0
- package/dist/tui/model/provider-filter.js.map +1 -0
- package/dist/tui/model/proxy-hub.d.ts +23 -0
- package/dist/tui/model/proxy-hub.d.ts.map +1 -0
- package/dist/tui/model/proxy-hub.js +69 -0
- package/dist/tui/model/proxy-hub.js.map +1 -0
- package/dist/tui/model/proxy-labels.d.ts +5 -0
- package/dist/tui/model/proxy-labels.d.ts.map +1 -0
- package/dist/tui/model/proxy-labels.js +18 -0
- package/dist/tui/model/proxy-labels.js.map +1 -0
- package/dist/tui/model/proxy.d.ts +15 -0
- package/dist/tui/model/proxy.d.ts.map +1 -0
- package/dist/tui/model/proxy.js +214 -0
- package/dist/tui/model/proxy.js.map +1 -0
- package/dist/tui/model/root.d.ts +20 -0
- package/dist/tui/model/root.d.ts.map +1 -0
- package/dist/tui/model/root.js +126 -0
- package/dist/tui/model/root.js.map +1 -0
- package/dist/tui/model/route-builder.d.ts +25 -0
- package/dist/tui/model/route-builder.d.ts.map +1 -0
- package/dist/tui/model/route-builder.js +199 -0
- package/dist/tui/model/route-builder.js.map +1 -0
- package/dist/tui/model/screen.d.ts +260 -0
- package/dist/tui/model/screen.d.ts.map +1 -0
- package/dist/tui/model/types.d.ts +179 -0
- package/dist/tui/model/types.d.ts.map +1 -0
- package/dist/tui/model.d.ts +18 -0
- package/dist/tui/model.d.ts.map +1 -0
- package/dist/tui/model.js +17 -0
- package/dist/tui/proxy-models-fetch.d.ts +34 -0
- package/dist/tui/proxy-models-fetch.d.ts.map +1 -0
- package/dist/tui/proxy-models-fetch.js +87 -0
- package/dist/tui/proxy-models-fetch.js.map +1 -0
- package/dist/tui/routes/account.d.ts +4 -0
- package/dist/tui/routes/account.d.ts.map +1 -0
- package/dist/tui/routes/account.js +327 -0
- package/dist/tui/routes/account.js.map +1 -0
- package/dist/tui/routes/apps.d.ts +3 -0
- package/dist/tui/routes/apps.d.ts.map +1 -0
- package/dist/tui/routes/apps.js +296 -0
- package/dist/tui/routes/apps.js.map +1 -0
- package/dist/tui/routes/common.d.ts +4 -0
- package/dist/tui/routes/common.d.ts.map +1 -0
- package/dist/tui/routes/common.js +117 -0
- package/dist/tui/routes/common.js.map +1 -0
- package/dist/tui/routes/context.d.ts +43 -0
- package/dist/tui/routes/context.d.ts.map +1 -0
- package/dist/tui/routes/gateway.d.ts +3 -0
- package/dist/tui/routes/gateway.d.ts.map +1 -0
- package/dist/tui/routes/gateway.js +199 -0
- package/dist/tui/routes/gateway.js.map +1 -0
- package/dist/tui/routes/proxy.d.ts +3 -0
- package/dist/tui/routes/proxy.d.ts.map +1 -0
- package/dist/tui/routes/proxy.js +234 -0
- package/dist/tui/routes/proxy.js.map +1 -0
- package/dist/tui/screens/account-detail.d.ts +14 -0
- package/dist/tui/screens/account-detail.d.ts.map +1 -0
- package/dist/tui/screens/account-detail.js +98 -0
- package/dist/tui/screens/account-detail.js.map +1 -0
- package/dist/tui/screens/accounts-home.d.ts +42 -0
- package/dist/tui/screens/accounts-home.d.ts.map +1 -0
- package/dist/tui/screens/accounts-home.js +321 -0
- package/dist/tui/screens/accounts-home.js.map +1 -0
- package/dist/tui/screens/add-account.d.ts +70 -0
- package/dist/tui/screens/add-account.d.ts.map +1 -0
- package/dist/tui/screens/add-account.js +323 -0
- package/dist/tui/screens/add-account.js.map +1 -0
- package/dist/tui/screens/anypick-home.d.ts +39 -0
- package/dist/tui/screens/anypick-home.d.ts.map +1 -0
- package/dist/tui/screens/anypick-home.js +253 -0
- package/dist/tui/screens/anypick-home.js.map +1 -0
- package/dist/tui/screens/anypick-preview.d.ts +13 -0
- package/dist/tui/screens/anypick-preview.d.ts.map +1 -0
- package/dist/tui/screens/anypick-preview.js +49 -0
- package/dist/tui/screens/anypick-preview.js.map +1 -0
- package/dist/tui/screens/app-route-preview.d.ts +14 -0
- package/dist/tui/screens/app-route-preview.d.ts.map +1 -0
- package/dist/tui/screens/app-route-preview.js +35 -0
- package/dist/tui/screens/app-route-preview.js.map +1 -0
- package/dist/tui/screens/app-route-source.d.ts +15 -0
- package/dist/tui/screens/app-route-source.d.ts.map +1 -0
- package/dist/tui/screens/app-route-source.js +97 -0
- package/dist/tui/screens/app-route-source.js.map +1 -0
- package/dist/tui/screens/apps-home.d.ts +22 -0
- package/dist/tui/screens/apps-home.d.ts.map +1 -0
- package/dist/tui/screens/apps-home.js +111 -0
- package/dist/tui/screens/apps-home.js.map +1 -0
- package/dist/tui/screens/confirm.d.ts +19 -0
- package/dist/tui/screens/confirm.d.ts.map +1 -0
- package/dist/tui/screens/confirm.js +42 -0
- package/dist/tui/screens/confirm.js.map +1 -0
- package/dist/tui/screens/credential-form.d.ts +30 -0
- package/dist/tui/screens/credential-form.d.ts.map +1 -0
- package/dist/tui/screens/credential-form.js +241 -0
- package/dist/tui/screens/credential-form.js.map +1 -0
- package/dist/tui/screens/gateway-connection-form.d.ts +16 -0
- package/dist/tui/screens/gateway-connection-form.d.ts.map +1 -0
- package/dist/tui/screens/gateway-connection-form.js +127 -0
- package/dist/tui/screens/gateway-connection-form.js.map +1 -0
- package/dist/tui/screens/gateway-pick-provider.d.ts +19 -0
- package/dist/tui/screens/gateway-pick-provider.d.ts.map +1 -0
- package/dist/tui/screens/gateway-pick-provider.js +62 -0
- package/dist/tui/screens/gateway-pick-provider.js.map +1 -0
- package/dist/tui/screens/gateways-home.d.ts +38 -0
- package/dist/tui/screens/gateways-home.d.ts.map +1 -0
- package/dist/tui/screens/gateways-home.js +247 -0
- package/dist/tui/screens/gateways-home.js.map +1 -0
- package/dist/tui/screens/health.d.ts +16 -0
- package/dist/tui/screens/health.d.ts.map +1 -0
- package/dist/tui/screens/health.js +109 -0
- package/dist/tui/screens/health.js.map +1 -0
- package/dist/tui/screens/help.d.ts +10 -0
- package/dist/tui/screens/help.d.ts.map +1 -0
- package/dist/tui/screens/help.js +213 -0
- package/dist/tui/screens/help.js.map +1 -0
- package/dist/tui/screens/manage-apps.d.ts +29 -0
- package/dist/tui/screens/manage-apps.d.ts.map +1 -0
- package/dist/tui/screens/manage-apps.js +165 -0
- package/dist/tui/screens/manage-apps.js.map +1 -0
- package/dist/tui/screens/proxy-board-helpers.d.ts +9 -0
- package/dist/tui/screens/proxy-board-helpers.d.ts.map +1 -0
- package/dist/tui/screens/proxy-board-helpers.js +70 -0
- package/dist/tui/screens/proxy-board-helpers.js.map +1 -0
- package/dist/tui/screens/proxy-board.d.ts +43 -0
- package/dist/tui/screens/proxy-board.d.ts.map +1 -0
- package/dist/tui/screens/proxy-board.js +351 -0
- package/dist/tui/screens/proxy-board.js.map +1 -0
- package/dist/tui/screens/proxy-hub.d.ts +21 -0
- package/dist/tui/screens/proxy-hub.d.ts.map +1 -0
- package/dist/tui/screens/proxy-hub.js +150 -0
- package/dist/tui/screens/proxy-hub.js.map +1 -0
- package/dist/tui/screens/proxy-models-utils.d.ts +13 -0
- package/dist/tui/screens/proxy-models-utils.d.ts.map +1 -0
- package/dist/tui/screens/proxy-models-utils.js +53 -0
- package/dist/tui/screens/proxy-models-utils.js.map +1 -0
- package/dist/tui/screens/proxy-models.d.ts +65 -0
- package/dist/tui/screens/proxy-models.d.ts.map +1 -0
- package/dist/tui/screens/proxy-models.js +252 -0
- package/dist/tui/screens/proxy-models.js.map +1 -0
- package/dist/tui/screens/proxy.d.ts +26 -0
- package/dist/tui/screens/proxy.d.ts.map +1 -0
- package/dist/tui/screens/text-input.d.ts +18 -0
- package/dist/tui/screens/text-input.d.ts.map +1 -0
- package/dist/tui/screens/text-input.js +67 -0
- package/dist/tui/screens/text-input.js.map +1 -0
- package/dist/tui/screens/tray-runtime.d.ts +19 -0
- package/dist/tui/screens/tray-runtime.d.ts.map +1 -0
- package/dist/tui/screens/tray-runtime.js +108 -0
- package/dist/tui/screens/tray-runtime.js.map +1 -0
- package/dist/tui/use-tui-nav.d.ts +40 -0
- package/dist/tui/use-tui-nav.d.ts.map +1 -0
- package/dist/tui/use-tui-nav.js +256 -0
- package/dist/tui/use-tui-nav.js.map +1 -0
- package/dist/tui/use-tui-shell.d.ts +46 -0
- package/dist/tui/use-tui-shell.d.ts.map +1 -0
- package/dist/tui/use-tui-shell.js +95 -0
- package/dist/tui/use-tui-shell.js.map +1 -0
- package/dist/types/account.d.ts +410 -0
- package/dist/types/account.d.ts.map +1 -0
- package/dist/types/account.js +7 -0
- package/dist/types/account.js.map +1 -0
- package/dist/types/bindings.d.ts +300 -0
- package/dist/types/bindings.d.ts.map +1 -0
- package/dist/types/catalog.d.ts +165 -0
- package/dist/types/catalog.d.ts.map +1 -0
- package/dist/types/clients.d.ts +174 -0
- package/dist/types/clients.d.ts.map +1 -0
- package/dist/types/clients.js +11 -0
- package/dist/types/clients.js.map +1 -0
- package/dist/types/plugins.d.ts +89 -0
- package/dist/types/plugins.d.ts.map +1 -0
- package/dist/types/plugins.js +14 -0
- package/dist/types/plugins.js.map +1 -0
- package/dist/types/proxy-hub.d.ts +109 -0
- package/dist/types/proxy-hub.d.ts.map +1 -0
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -0
- package/dist/utils/errors.d.ts +61 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +119 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/fs.d.ts +39 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +126 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/lock.d.ts +33 -0
- package/dist/utils/lock.d.ts.map +1 -0
- package/dist/utils/lock.js +95 -0
- package/dist/utils/lock.js.map +1 -0
- package/dist/utils/log.d.ts +10 -0
- package/dist/utils/log.d.ts.map +1 -0
- package/dist/utils/log.js +21 -0
- package/dist/utils/log.js.map +1 -0
- package/dist/utils/network.d.ts +3 -0
- package/dist/utils/network.d.ts.map +1 -0
- package/dist/utils/network.js +13 -0
- package/dist/utils/network.js.map +1 -0
- package/dist/utils/process/binary.d.ts +14 -0
- package/dist/utils/process/binary.d.ts.map +1 -0
- package/dist/utils/process/binary.js +29 -0
- package/dist/utils/process/binary.js.map +1 -0
- package/dist/utils/process/follow.d.ts +2 -0
- package/dist/utils/process/follow.d.ts.map +1 -0
- package/dist/utils/process/follow.js +90 -0
- package/dist/utils/process/follow.js.map +1 -0
- package/dist/utils/process/health.d.ts +43 -0
- package/dist/utils/process/health.d.ts.map +1 -0
- package/dist/utils/process/health.js +132 -0
- package/dist/utils/process/health.js.map +1 -0
- package/dist/utils/process/pid.d.ts +95 -0
- package/dist/utils/process/pid.d.ts.map +1 -0
- package/dist/utils/process/pid.js +243 -0
- package/dist/utils/process/pid.js.map +1 -0
- package/dist/utils/process.d.ts +5 -0
- package/dist/utils/process.d.ts.map +1 -0
- package/dist/utils/process.js +5 -0
- package/dist/utils/slug.d.ts +18 -0
- package/dist/utils/slug.d.ts.map +1 -0
- package/dist/utils/slug.js +42 -0
- package/dist/utils/slug.js.map +1 -0
- package/package.json +121 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Publish the active AnyPick Codex route into the user's base `~/.codex/config.toml`
|
|
3
|
+
* so plain `codex` (and the desktop app, where it honors config) routes through
|
|
4
|
+
* the proxy / gateway / Proxy Hub without a `--profile` flag.
|
|
5
|
+
*
|
|
6
|
+
* Codex routes globally: the top-level `model_provider` selects ONE provider that
|
|
7
|
+
* serves the top-level `model`, so exactly one live provider is published.
|
|
8
|
+
*
|
|
9
|
+
* **Binding is the source of truth.** A hub route left attached for Claude (or a
|
|
10
|
+
* stale `global/codex` after switching Codex off the Hub) must not takeover
|
|
11
|
+
* Codex's top-level config. Resolve follows the global Codex binding only.
|
|
12
|
+
*
|
|
13
|
+
* Takeover policy: while mode is `routed`, the live managed block owns top-level
|
|
14
|
+
* `model` / `model_provider`. The user's previous values are stashed on first
|
|
15
|
+
* takeover and restored when mode flips to `native` (native account) or when
|
|
16
|
+
* the live block is cleared (reset / nothing active).
|
|
17
|
+
*/
|
|
18
|
+
import type { Account, Provider, ProxyHubStatus, ResourceRef } from '../types.js';
|
|
19
|
+
import type { ProxyHubRouteSecret } from './proxy-hub-store.js';
|
|
20
|
+
import { type LiveCodexProvider } from '../clients/codex.js';
|
|
21
|
+
export interface CodexLiveConfigDeps {
|
|
22
|
+
hub: {
|
|
23
|
+
getAttachedRoute(routeId: string): ProxyHubRouteSecret | null;
|
|
24
|
+
status(name?: string): Promise<ProxyHubStatus>;
|
|
25
|
+
};
|
|
26
|
+
proxy: {
|
|
27
|
+
listProxyRows(): Promise<Array<{
|
|
28
|
+
provider: string;
|
|
29
|
+
name: string;
|
|
30
|
+
active: boolean;
|
|
31
|
+
status: {
|
|
32
|
+
running: boolean;
|
|
33
|
+
endpoint?: string;
|
|
34
|
+
};
|
|
35
|
+
}>>;
|
|
36
|
+
};
|
|
37
|
+
accounts: {
|
|
38
|
+
getAccount(provider: string, name: string): Promise<Account | null>;
|
|
39
|
+
readProxyState(provider: string, name: string): Promise<{
|
|
40
|
+
token?: string;
|
|
41
|
+
} | null>;
|
|
42
|
+
};
|
|
43
|
+
accountRegistry: {
|
|
44
|
+
get(providerId: string): Provider | undefined;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Global Codex binding. When absent, live config clears rather than guessing
|
|
48
|
+
* from leftover hub routes or any running proxy. `modelId` seeds top-level
|
|
49
|
+
* `model` so Desktop/CLI open on a real Hub model, not a stock GPT id.
|
|
50
|
+
* `modelRoles` (Default + List 2–5) pins Desktop picker slots when set.
|
|
51
|
+
*/
|
|
52
|
+
getCodexSource?: () => ResourceRef | null;
|
|
53
|
+
getCodexModelId?: () => string | undefined;
|
|
54
|
+
getCodexModelRoles?: () => Record<string, string> | undefined;
|
|
55
|
+
home?: string;
|
|
56
|
+
log?: (message: string) => void;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Publish an explicit route (gateway activation) and mark mode as routed.
|
|
60
|
+
* Used when resolveActiveProvider cannot see the source (gateways are not
|
|
61
|
+
* process-backed the way proxies are).
|
|
62
|
+
*/
|
|
63
|
+
export declare function publishCodexLiveRoute(deps: CodexLiveConfigDeps, provider: LiveCodexProvider): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Mark Codex as native (ChatGPT account) and restore the user's top-level
|
|
66
|
+
* model / model_provider defaults. Proxy lifecycle re-sync will no-op while
|
|
67
|
+
* mode stays native.
|
|
68
|
+
*/
|
|
69
|
+
export declare function restoreCodexLiveForNative(deps: CodexLiveConfigDeps): Promise<void>;
|
|
70
|
+
export interface SyncCodexLiveOptions {
|
|
71
|
+
/**
|
|
72
|
+
* Activation just bound Codex to a proxy/hub: flip mode to routed even if
|
|
73
|
+
* the previous binding was a native account. Proxy lifecycle events leave
|
|
74
|
+
* this unset so they never undo a native restore.
|
|
75
|
+
*/
|
|
76
|
+
forceRouted?: boolean;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Re-render the live managed block from the current active route. Best-effort:
|
|
80
|
+
* never throws — sync is a convenience that must not break activation.
|
|
81
|
+
*
|
|
82
|
+
* When mode is `native` (and `forceRouted` is not set), leaves config alone so
|
|
83
|
+
* a still-running proxy cannot re-takeover after the user switched to native.
|
|
84
|
+
* When mode is `routed` (or unset with a resolvable provider), takes over
|
|
85
|
+
* top-level `model_provider`.
|
|
86
|
+
*/
|
|
87
|
+
export declare function syncCodexLiveConfig(deps: CodexLiveConfigDeps, opts?: SyncCodexLiveOptions): Promise<void>;
|
|
88
|
+
/** Remove the live managed block, restore stashed defaults, drop sidecars. */
|
|
89
|
+
export declare function clearCodexLiveConfig(deps: CodexLiveConfigDeps, opts?: {
|
|
90
|
+
keepMode?: boolean;
|
|
91
|
+
}): Promise<void>;
|
|
92
|
+
//# sourceMappingURL=codex-live-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-live-config.d.ts","sourceRoot":"","sources":["../../src/core/codex-live-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAgBL,KAAK,iBAAiB,EAGvB,MAAM,kBAAkB,CAAC;AAe1B,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE;QACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;KAChD,CAAC;IACF,KAAK,EAAE;QACL,aAAa,IAAI,OAAO,CACtB,KAAK,CAAC;YACJ,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,OAAO,CAAC;YAChB,MAAM,EAAE;gBAAE,OAAO,EAAE,OAAO,CAAC;gBAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;SACjD,CAAC,CACH,CAAC;KACH,CAAC;IACF,QAAQ,EAAE;QACR,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QACpE,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;YAAE,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC,CAAC;KACpF,CAAC;IACF,eAAe,EAAE;QACf,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;KAC/C,CAAC;IACF;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC3C,kBAAkB,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAiND;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxF;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,mBAAmB,EACzB,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA6Bf;AA2ED,8EAA8E;AAC9E,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,mBAAmB,EACzB,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAChC,OAAO,CAAC,IAAI,CAAC,CA6Bf"}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import { pathExists, writeJsonFile, writeTextFile } from "../utils/fs.js";
|
|
2
|
+
import { accountAdapterFor } from "../sources/account-adapters.js";
|
|
3
|
+
import { buildLiveCatalog, codexLiveCatalogPath, codexLiveModePath, codexLiveRoutePath, codexProfileName, codexUserDefaultsStashPath, configTomlPath, extractUserTopLevelDefaults, hasTopLevelKeyOutsideLiveBlock, liveRouteCatalogModels, prepareConfigForLiveTakeover, renderLiveManagedBlock, restoreUserTopLevelDefaults, upsertLiveBlock } from "../clients/codex.js";
|
|
4
|
+
import { assignDesktopAliases, desktopAwareRouteModels, desktopConfigModelId, loadNativeListSlots, orderHubModelsForDesktop, preferredHubModelsFromRoles } from "../clients/codex-desktop-catalog.js";
|
|
5
|
+
import { readFile, rm } from "node:fs/promises";
|
|
6
|
+
//#region src/core/codex-live-config.ts
|
|
7
|
+
/**
|
|
8
|
+
* Publish the active AnyPick Codex route into the user's base `~/.codex/config.toml`
|
|
9
|
+
* so plain `codex` (and the desktop app, where it honors config) routes through
|
|
10
|
+
* the proxy / gateway / Proxy Hub without a `--profile` flag.
|
|
11
|
+
*
|
|
12
|
+
* Codex routes globally: the top-level `model_provider` selects ONE provider that
|
|
13
|
+
* serves the top-level `model`, so exactly one live provider is published.
|
|
14
|
+
*
|
|
15
|
+
* **Binding is the source of truth.** A hub route left attached for Claude (or a
|
|
16
|
+
* stale `global/codex` after switching Codex off the Hub) must not takeover
|
|
17
|
+
* Codex's top-level config. Resolve follows the global Codex binding only.
|
|
18
|
+
*
|
|
19
|
+
* Takeover policy: while mode is `routed`, the live managed block owns top-level
|
|
20
|
+
* `model` / `model_provider`. The user's previous values are stashed on first
|
|
21
|
+
* takeover and restored when mode flips to `native` (native account) or when
|
|
22
|
+
* the live block is cleared (reset / nothing active).
|
|
23
|
+
*/
|
|
24
|
+
/** Persistent Proxy Hub route id for a client (see activation-planner.ts). */
|
|
25
|
+
var HUB_ROUTE_ID = "global/codex";
|
|
26
|
+
/**
|
|
27
|
+
* Resolve the single active route Codex should point at from its binding, or
|
|
28
|
+
* `null` when there is nothing worth publishing.
|
|
29
|
+
*/
|
|
30
|
+
async function resolveActiveProvider(deps) {
|
|
31
|
+
const source = deps.getCodexSource?.() ?? null;
|
|
32
|
+
if (!source) return null;
|
|
33
|
+
if (source.kind === "proxy-hub") return resolveHubProvider(deps, source.name);
|
|
34
|
+
if (source.kind === "account") return resolveAccountProxyProvider(deps, source.provider, source.name);
|
|
35
|
+
if (source.kind === "account-pool") return resolvePoolProxyProvider(deps, source.provider);
|
|
36
|
+
if (source.kind === "gateway") {
|
|
37
|
+
const sticky = await readStoredLiveRoute(deps.home);
|
|
38
|
+
if (sticky && sticky.source === `gateway:${source.name}`) return sticky;
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
async function resolveHubProvider(deps, hubName) {
|
|
44
|
+
const route = deps.hub.getAttachedRoute(HUB_ROUTE_ID);
|
|
45
|
+
if (route && route.manifest.client === "codex" && route.manifest.hub === hubName) {
|
|
46
|
+
const status = await deps.hub.status(route.manifest.hub);
|
|
47
|
+
if (status.running && status.endpoint) return {
|
|
48
|
+
source: `hub:${route.manifest.hub}`,
|
|
49
|
+
endpoint: status.endpoint,
|
|
50
|
+
token: route.token
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const sticky = await readStoredLiveRoute(deps.home);
|
|
54
|
+
if (sticky && sticky.source === `hub:${hubName}`) return sticky;
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
async function resolveAccountProxyProvider(deps, providerId, accountName) {
|
|
58
|
+
const row = (await deps.proxy.listProxyRows()).find((candidate) => candidate.provider === providerId && candidate.name === accountName && candidate.status.running && candidate.status.endpoint);
|
|
59
|
+
if (!row?.status.endpoint) return null;
|
|
60
|
+
const account = await deps.accounts.getAccount(providerId, accountName);
|
|
61
|
+
const provider = deps.accountRegistry.get(providerId);
|
|
62
|
+
if (!account || !provider) return null;
|
|
63
|
+
const transport = accountAdapterFor(provider, account).transportFor("codex");
|
|
64
|
+
if (transport !== "managed_builtin_proxy" && transport !== "managed_external_proxy") return null;
|
|
65
|
+
const state = await deps.accounts.readProxyState(providerId, accountName);
|
|
66
|
+
if (!state?.token) return null;
|
|
67
|
+
return {
|
|
68
|
+
source: `${providerId}/${accountName}`,
|
|
69
|
+
endpoint: row.status.endpoint,
|
|
70
|
+
token: state.token
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
async function resolvePoolProxyProvider(deps, providerId) {
|
|
74
|
+
const row = (await deps.proxy.listProxyRows()).find((candidate) => candidate.provider === providerId && (candidate.name === "pool" || candidate.name === "*") && candidate.status.running && candidate.status.endpoint);
|
|
75
|
+
if (!row?.status.endpoint) return null;
|
|
76
|
+
const sticky = await readStoredLiveRoute(deps.home);
|
|
77
|
+
if (sticky && (sticky.source === `pool:${providerId}` || sticky.source.startsWith(`${providerId}/`))) return {
|
|
78
|
+
...sticky,
|
|
79
|
+
endpoint: row.status.endpoint,
|
|
80
|
+
source: `pool:${providerId}`
|
|
81
|
+
};
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
async function readFileSafe(path) {
|
|
85
|
+
try {
|
|
86
|
+
return await readFile(path, "utf8");
|
|
87
|
+
} catch {
|
|
88
|
+
return "";
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async function readLiveMode(home) {
|
|
92
|
+
const path = codexLiveModePath(home);
|
|
93
|
+
if (!await pathExists(path)) return null;
|
|
94
|
+
try {
|
|
95
|
+
const raw = JSON.parse(await readFile(path, "utf8"));
|
|
96
|
+
return raw.mode === "routed" || raw.mode === "native" ? raw.mode : null;
|
|
97
|
+
} catch {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
async function writeLiveMode(mode, home) {
|
|
102
|
+
await writeJsonFile(codexLiveModePath(home), {
|
|
103
|
+
version: 1,
|
|
104
|
+
mode
|
|
105
|
+
}, 384);
|
|
106
|
+
}
|
|
107
|
+
async function readStash(home) {
|
|
108
|
+
const path = codexUserDefaultsStashPath(home);
|
|
109
|
+
if (!await pathExists(path)) return null;
|
|
110
|
+
try {
|
|
111
|
+
const raw = JSON.parse(await readFile(path, "utf8"));
|
|
112
|
+
return raw?.version === 1 ? raw : null;
|
|
113
|
+
} catch {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
async function ensureStash(content, home) {
|
|
118
|
+
const path = codexUserDefaultsStashPath(home);
|
|
119
|
+
if (await pathExists(path)) return;
|
|
120
|
+
await writeJsonFile(path, extractUserTopLevelDefaults(content), 384);
|
|
121
|
+
}
|
|
122
|
+
async function readStoredLiveRoute(home) {
|
|
123
|
+
const path = codexLiveRoutePath(home);
|
|
124
|
+
if (!await pathExists(path)) return null;
|
|
125
|
+
try {
|
|
126
|
+
const raw = JSON.parse(await readFile(path, "utf8"));
|
|
127
|
+
if (raw?.version !== 1 || !raw.source || !raw.endpoint || !raw.token) return null;
|
|
128
|
+
return {
|
|
129
|
+
source: raw.source,
|
|
130
|
+
endpoint: raw.endpoint,
|
|
131
|
+
token: raw.token,
|
|
132
|
+
defaultModel: raw.defaultModel
|
|
133
|
+
};
|
|
134
|
+
} catch {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
async function writeStoredLiveRoute(provider, home) {
|
|
139
|
+
const payload = {
|
|
140
|
+
version: 1,
|
|
141
|
+
source: provider.source,
|
|
142
|
+
endpoint: provider.endpoint,
|
|
143
|
+
token: provider.token,
|
|
144
|
+
...provider.defaultModel ? { defaultModel: provider.defaultModel } : {}
|
|
145
|
+
};
|
|
146
|
+
await writeJsonFile(codexLiveRoutePath(home), payload, 384);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Publish an explicit route (gateway activation) and mark mode as routed.
|
|
150
|
+
* Used when resolveActiveProvider cannot see the source (gateways are not
|
|
151
|
+
* process-backed the way proxies are).
|
|
152
|
+
*/
|
|
153
|
+
async function publishCodexLiveRoute(deps, provider) {
|
|
154
|
+
try {
|
|
155
|
+
await writeLiveMode("routed", deps.home);
|
|
156
|
+
await writeStoredLiveRoute(provider, deps.home);
|
|
157
|
+
await writeLiveTakeover(deps, provider);
|
|
158
|
+
} catch (error) {
|
|
159
|
+
deps.log?.(`Codex live config publish failed: ${errorMessage(error)}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Mark Codex as native (ChatGPT account) and restore the user's top-level
|
|
164
|
+
* model / model_provider defaults. Proxy lifecycle re-sync will no-op while
|
|
165
|
+
* mode stays native.
|
|
166
|
+
*/
|
|
167
|
+
async function restoreCodexLiveForNative(deps) {
|
|
168
|
+
try {
|
|
169
|
+
await writeLiveMode("native", deps.home);
|
|
170
|
+
await clearCodexLiveConfig(deps, { keepMode: true });
|
|
171
|
+
} catch (error) {
|
|
172
|
+
deps.log?.(`Codex live config native restore failed: ${errorMessage(error)}`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Re-render the live managed block from the current active route. Best-effort:
|
|
177
|
+
* never throws — sync is a convenience that must not break activation.
|
|
178
|
+
*
|
|
179
|
+
* When mode is `native` (and `forceRouted` is not set), leaves config alone so
|
|
180
|
+
* a still-running proxy cannot re-takeover after the user switched to native.
|
|
181
|
+
* When mode is `routed` (or unset with a resolvable provider), takes over
|
|
182
|
+
* top-level `model_provider`.
|
|
183
|
+
*/
|
|
184
|
+
async function syncCodexLiveConfig(deps, opts = {}) {
|
|
185
|
+
try {
|
|
186
|
+
if (opts.forceRouted) await writeLiveMode("routed", deps.home);
|
|
187
|
+
const mode = await readLiveMode(deps.home);
|
|
188
|
+
if (mode === "native" && !opts.forceRouted) return;
|
|
189
|
+
const provider = await resolveActiveProvider(deps);
|
|
190
|
+
if (!provider) {
|
|
191
|
+
await clearCodexLiveConfig(deps, { keepMode: true });
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
if (mode !== "routed") await writeLiveMode("routed", deps.home);
|
|
195
|
+
await writeStoredLiveRoute(provider, deps.home);
|
|
196
|
+
await writeLiveTakeover(deps, provider);
|
|
197
|
+
} catch (error) {
|
|
198
|
+
deps.log?.(`Codex live config sync failed: ${errorMessage(error)}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
async function writeLiveTakeover(deps, provider) {
|
|
202
|
+
const configPath = configTomlPath(deps.home);
|
|
203
|
+
const catalogPath = codexLiveCatalogPath(deps.home);
|
|
204
|
+
const profileName = codexProfileName(provider.source);
|
|
205
|
+
const preferredFromRoles = preferredHubModelsFromRoles(deps.getCodexModelRoles?.());
|
|
206
|
+
const preferredHubModel = preferredFromRoles[0] || provider.defaultModel?.trim() || deps.getCodexModelId?.()?.trim() || void 0;
|
|
207
|
+
const preferredList = preferredFromRoles.length > 0 ? preferredFromRoles : preferredHubModel ? [preferredHubModel] : [];
|
|
208
|
+
const models = await liveRouteCatalogModels({
|
|
209
|
+
endpoint: provider.endpoint,
|
|
210
|
+
token: provider.token,
|
|
211
|
+
defaultModel: preferredHubModel
|
|
212
|
+
});
|
|
213
|
+
const isHub = provider.source.startsWith("hub:");
|
|
214
|
+
let catalogModels = models;
|
|
215
|
+
let configModel = preferredHubModel;
|
|
216
|
+
if (isHub && models.length > 0) {
|
|
217
|
+
const nativeSlots = loadNativeListSlots();
|
|
218
|
+
const aliases = assignDesktopAliases(orderHubModelsForDesktop(models.map((model) => model.slug), preferredList), nativeSlots);
|
|
219
|
+
catalogModels = desktopAwareRouteModels(models, aliases, nativeSlots);
|
|
220
|
+
configModel = desktopConfigModelId(preferredHubModel, aliases) ?? preferredHubModel;
|
|
221
|
+
deps.log?.(`Codex Desktop: aliased ${aliases.length} Hub model(s) onto native GPT picker slots` + (aliases[0] ? ` (e.g. ${aliases[0].nativeSlug} → ${aliases[0].hubModel})` : ""));
|
|
222
|
+
}
|
|
223
|
+
await writeJsonFile(catalogPath, buildLiveCatalog(catalogModels, profileName), 384);
|
|
224
|
+
const existing = await readFileSafe(configPath);
|
|
225
|
+
await ensureStash(existing, deps.home);
|
|
226
|
+
const includeCatalog = !hasTopLevelKeyOutsideLiveBlock(existing, "model_catalog_json");
|
|
227
|
+
if (!includeCatalog) deps.log?.(`Codex: keeping your own model_catalog_json in ${configPath}; routed models are not auto-listed. Use: codex --profile ${profileName}`);
|
|
228
|
+
const next = upsertLiveBlock(prepareConfigForLiveTakeover(existing), renderLiveManagedBlock({
|
|
229
|
+
...provider,
|
|
230
|
+
defaultModel: configModel
|
|
231
|
+
}, catalogPath, { includeCatalog }));
|
|
232
|
+
if (next !== existing) await writeTextFile(configPath, next, 384);
|
|
233
|
+
}
|
|
234
|
+
/** Remove the live managed block, restore stashed defaults, drop sidecars. */
|
|
235
|
+
async function clearCodexLiveConfig(deps, opts = {}) {
|
|
236
|
+
try {
|
|
237
|
+
await rm(codexLiveCatalogPath(deps.home), { force: true });
|
|
238
|
+
await rm(codexLiveRoutePath(deps.home), { force: true });
|
|
239
|
+
if (!opts.keepMode) await rm(codexLiveModePath(deps.home), { force: true });
|
|
240
|
+
const stash = await readStash(deps.home);
|
|
241
|
+
const stashPath = codexUserDefaultsStashPath(deps.home);
|
|
242
|
+
const configPath = configTomlPath(deps.home);
|
|
243
|
+
if (!await pathExists(configPath)) {
|
|
244
|
+
await rm(stashPath, { force: true });
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
const existing = await readFileSafe(configPath);
|
|
248
|
+
const next = restoreUserTopLevelDefaults(existing, stash);
|
|
249
|
+
await rm(stashPath, { force: true });
|
|
250
|
+
if (next === existing) return;
|
|
251
|
+
if (next.trim().length === 0) await rm(configPath, { force: true });
|
|
252
|
+
else await writeTextFile(configPath, next, 384);
|
|
253
|
+
} catch (error) {
|
|
254
|
+
deps.log?.(`Codex live config cleanup failed: ${errorMessage(error)}`);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
function errorMessage(error) {
|
|
258
|
+
return error instanceof Error ? error.message : String(error);
|
|
259
|
+
}
|
|
260
|
+
//#endregion
|
|
261
|
+
export { clearCodexLiveConfig, publishCodexLiveRoute, restoreCodexLiveForNative, syncCodexLiveConfig };
|
|
262
|
+
|
|
263
|
+
//# sourceMappingURL=codex-live-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-live-config.js","names":[],"sources":["../../src/core/codex-live-config.ts"],"sourcesContent":["/**\n * Publish the active AnyPick Codex route into the user's base `~/.codex/config.toml`\n * so plain `codex` (and the desktop app, where it honors config) routes through\n * the proxy / gateway / Proxy Hub without a `--profile` flag.\n *\n * Codex routes globally: the top-level `model_provider` selects ONE provider that\n * serves the top-level `model`, so exactly one live provider is published.\n *\n * **Binding is the source of truth.** A hub route left attached for Claude (or a\n * stale `global/codex` after switching Codex off the Hub) must not takeover\n * Codex's top-level config. Resolve follows the global Codex binding only.\n *\n * Takeover policy: while mode is `routed`, the live managed block owns top-level\n * `model` / `model_provider`. The user's previous values are stashed on first\n * takeover and restored when mode flips to `native` (native account) or when\n * the live block is cleared (reset / nothing active).\n */\n\nimport { readFile, rm } from 'node:fs/promises';\nimport type { Account, Provider, ProxyHubStatus, ResourceRef } from '../types';\nimport type { ProxyHubRouteSecret } from './proxy-hub-store';\nimport {\n buildLiveCatalog,\n codexLiveCatalogPath,\n codexLiveModePath,\n codexLiveRoutePath,\n codexProfileName,\n codexUserDefaultsStashPath,\n configTomlPath,\n extractUserTopLevelDefaults,\n hasTopLevelKeyOutsideLiveBlock,\n liveRouteCatalogModels,\n prepareConfigForLiveTakeover,\n renderLiveManagedBlock,\n restoreUserTopLevelDefaults,\n type CodexLiveMode,\n type CodexUserDefaultsStash,\n type LiveCodexProvider,\n type StoredLiveRoute,\n upsertLiveBlock,\n} from '../clients/codex';\nimport {\n assignDesktopAliases,\n desktopAwareRouteModels,\n desktopConfigModelId,\n loadNativeListSlots,\n orderHubModelsForDesktop,\n preferredHubModelsFromRoles,\n} from '../clients/codex-desktop-catalog';\nimport { accountAdapterFor } from '../sources/account-adapters';\nimport { pathExists, writeJsonFile, writeTextFile } from '../utils/fs';\n\n/** Persistent Proxy Hub route id for a client (see activation-planner.ts). */\nconst HUB_ROUTE_ID = 'global/codex';\n\nexport interface CodexLiveConfigDeps {\n hub: {\n getAttachedRoute(routeId: string): ProxyHubRouteSecret | null;\n status(name?: string): Promise<ProxyHubStatus>;\n };\n proxy: {\n listProxyRows(): Promise<\n Array<{\n provider: string;\n name: string;\n active: boolean;\n status: { running: boolean; endpoint?: string };\n }>\n >;\n };\n accounts: {\n getAccount(provider: string, name: string): Promise<Account | null>;\n readProxyState(provider: string, name: string): Promise<{ token?: string } | null>;\n };\n accountRegistry: {\n get(providerId: string): Provider | undefined;\n };\n /**\n * Global Codex binding. When absent, live config clears rather than guessing\n * from leftover hub routes or any running proxy. `modelId` seeds top-level\n * `model` so Desktop/CLI open on a real Hub model, not a stock GPT id.\n * `modelRoles` (Default + List 2–5) pins Desktop picker slots when set.\n */\n getCodexSource?: () => ResourceRef | null;\n getCodexModelId?: () => string | undefined;\n getCodexModelRoles?: () => Record<string, string> | undefined;\n home?: string;\n log?: (message: string) => void;\n}\n\n/**\n * Resolve the single active route Codex should point at from its binding, or\n * `null` when there is nothing worth publishing.\n */\nasync function resolveActiveProvider(deps: CodexLiveConfigDeps): Promise<LiveCodexProvider | null> {\n const source = deps.getCodexSource?.() ?? null;\n if (!source) {\n return null;\n }\n\n if (source.kind === 'proxy-hub') {\n return resolveHubProvider(deps, source.name);\n }\n\n if (source.kind === 'account') {\n return resolveAccountProxyProvider(deps, source.provider, source.name);\n }\n\n if (source.kind === 'account-pool') {\n return resolvePoolProxyProvider(deps, source.provider);\n }\n\n if (source.kind === 'gateway') {\n // Gateway credentials are not re-derived here; publishCodexLiveRoute wrote\n // a sticky route at apply time. Only reuse it when it still names this gateway.\n const sticky = await readStoredLiveRoute(deps.home);\n if (sticky && sticky.source === `gateway:${source.name}`) {\n return sticky;\n }\n return null;\n }\n\n // Presets are expanded before binding; a leftover preset pointer is not live.\n return null;\n}\n\nasync function resolveHubProvider(\n deps: CodexLiveConfigDeps,\n hubName: string,\n): Promise<LiveCodexProvider | null> {\n const route = deps.hub.getAttachedRoute(HUB_ROUTE_ID);\n if (route && route.manifest.client === 'codex' && route.manifest.hub === hubName) {\n const status = await deps.hub.status(route.manifest.hub);\n if (status.running && status.endpoint) {\n return {\n source: `hub:${route.manifest.hub}`,\n endpoint: status.endpoint,\n token: route.token,\n };\n }\n }\n const sticky = await readStoredLiveRoute(deps.home);\n if (sticky && sticky.source === `hub:${hubName}`) {\n return sticky;\n }\n return null;\n}\n\nasync function resolveAccountProxyProvider(\n deps: CodexLiveConfigDeps,\n providerId: string,\n accountName: string,\n): Promise<LiveCodexProvider | null> {\n const rows = await deps.proxy.listProxyRows();\n const row = rows.find(\n (candidate) =>\n candidate.provider === providerId &&\n candidate.name === accountName &&\n candidate.status.running &&\n candidate.status.endpoint,\n );\n if (!row?.status.endpoint) {\n return null;\n }\n const account = await deps.accounts.getAccount(providerId, accountName);\n const provider = deps.accountRegistry.get(providerId);\n if (!account || !provider) {\n return null;\n }\n const transport = accountAdapterFor(provider, account).transportFor('codex');\n if (transport !== 'managed_builtin_proxy' && transport !== 'managed_external_proxy') {\n return null;\n }\n const state = await deps.accounts.readProxyState(providerId, accountName);\n if (!state?.token) {\n return null;\n }\n return {\n source: `${providerId}/${accountName}`,\n endpoint: row.status.endpoint,\n token: state.token,\n };\n}\n\nasync function resolvePoolProxyProvider(\n deps: CodexLiveConfigDeps,\n providerId: string,\n): Promise<LiveCodexProvider | null> {\n const rows = await deps.proxy.listProxyRows();\n const row = rows.find(\n (candidate) =>\n candidate.provider === providerId &&\n (candidate.name === 'pool' || candidate.name === '*') &&\n candidate.status.running &&\n candidate.status.endpoint,\n );\n if (!row?.status.endpoint) {\n // Fall back to any running account proxy for this provider when the pool\n // row is not listed separately.\n return null;\n }\n // Pool tokens live on a member account; listProxyRows for pools usually\n // exposes the pool endpoint. Prefer sticky when it matches this pool.\n const sticky = await readStoredLiveRoute(deps.home);\n if (\n sticky &&\n (sticky.source === `pool:${providerId}` || sticky.source.startsWith(`${providerId}/`))\n ) {\n return {\n ...sticky,\n endpoint: row.status.endpoint,\n source: `pool:${providerId}`,\n };\n }\n return null;\n}\n\nasync function readFileSafe(path: string): Promise<string> {\n try {\n return await readFile(path, 'utf8');\n } catch {\n return '';\n }\n}\n\nasync function readLiveMode(home?: string): Promise<CodexLiveMode | null> {\n const path = codexLiveModePath(home);\n if (!(await pathExists(path))) {\n return null;\n }\n try {\n const raw = JSON.parse(await readFile(path, 'utf8')) as { mode?: string };\n return raw.mode === 'routed' || raw.mode === 'native' ? raw.mode : null;\n } catch {\n return null;\n }\n}\n\nasync function writeLiveMode(mode: CodexLiveMode, home?: string): Promise<void> {\n await writeJsonFile(codexLiveModePath(home), { version: 1, mode }, 0o600);\n}\n\nasync function readStash(home?: string): Promise<CodexUserDefaultsStash | null> {\n const path = codexUserDefaultsStashPath(home);\n if (!(await pathExists(path))) {\n return null;\n }\n try {\n const raw = JSON.parse(await readFile(path, 'utf8')) as CodexUserDefaultsStash;\n return raw?.version === 1 ? raw : null;\n } catch {\n return null;\n }\n}\n\nasync function ensureStash(content: string, home?: string): Promise<void> {\n const path = codexUserDefaultsStashPath(home);\n if (await pathExists(path)) {\n return;\n }\n // Only snapshot keys still outside the managed block (true user defaults).\n const stash = extractUserTopLevelDefaults(content);\n await writeJsonFile(path, stash, 0o600);\n}\n\nasync function readStoredLiveRoute(home?: string): Promise<LiveCodexProvider | null> {\n const path = codexLiveRoutePath(home);\n if (!(await pathExists(path))) {\n return null;\n }\n try {\n const raw = JSON.parse(await readFile(path, 'utf8')) as StoredLiveRoute;\n if (raw?.version !== 1 || !raw.source || !raw.endpoint || !raw.token) {\n return null;\n }\n return {\n source: raw.source,\n endpoint: raw.endpoint,\n token: raw.token,\n defaultModel: raw.defaultModel,\n };\n } catch {\n return null;\n }\n}\n\nasync function writeStoredLiveRoute(provider: LiveCodexProvider, home?: string): Promise<void> {\n const payload: StoredLiveRoute = {\n version: 1,\n source: provider.source,\n endpoint: provider.endpoint,\n token: provider.token,\n ...(provider.defaultModel ? { defaultModel: provider.defaultModel } : {}),\n };\n await writeJsonFile(codexLiveRoutePath(home), payload, 0o600);\n}\n\n/**\n * Publish an explicit route (gateway activation) and mark mode as routed.\n * Used when resolveActiveProvider cannot see the source (gateways are not\n * process-backed the way proxies are).\n */\nexport async function publishCodexLiveRoute(\n deps: CodexLiveConfigDeps,\n provider: LiveCodexProvider,\n): Promise<void> {\n try {\n await writeLiveMode('routed', deps.home);\n await writeStoredLiveRoute(provider, deps.home);\n await writeLiveTakeover(deps, provider);\n } catch (error) {\n deps.log?.(`Codex live config publish failed: ${errorMessage(error)}`);\n }\n}\n\n/**\n * Mark Codex as native (ChatGPT account) and restore the user's top-level\n * model / model_provider defaults. Proxy lifecycle re-sync will no-op while\n * mode stays native.\n */\nexport async function restoreCodexLiveForNative(deps: CodexLiveConfigDeps): Promise<void> {\n try {\n await writeLiveMode('native', deps.home);\n await clearCodexLiveConfig(deps, { keepMode: true });\n } catch (error) {\n deps.log?.(`Codex live config native restore failed: ${errorMessage(error)}`);\n }\n}\n\nexport interface SyncCodexLiveOptions {\n /**\n * Activation just bound Codex to a proxy/hub: flip mode to routed even if\n * the previous binding was a native account. Proxy lifecycle events leave\n * this unset so they never undo a native restore.\n */\n forceRouted?: boolean;\n}\n\n/**\n * Re-render the live managed block from the current active route. Best-effort:\n * never throws — sync is a convenience that must not break activation.\n *\n * When mode is `native` (and `forceRouted` is not set), leaves config alone so\n * a still-running proxy cannot re-takeover after the user switched to native.\n * When mode is `routed` (or unset with a resolvable provider), takes over\n * top-level `model_provider`.\n */\nexport async function syncCodexLiveConfig(\n deps: CodexLiveConfigDeps,\n opts: SyncCodexLiveOptions = {},\n): Promise<void> {\n try {\n if (opts.forceRouted) {\n await writeLiveMode('routed', deps.home);\n }\n\n const mode = await readLiveMode(deps.home);\n if (mode === 'native' && !opts.forceRouted) {\n // Stay out of the way after a native account switch — even if a proxy\n // process is still running for some other client.\n return;\n }\n\n const provider = await resolveActiveProvider(deps);\n if (!provider) {\n await clearCodexLiveConfig(deps, { keepMode: true });\n return;\n }\n\n // First time we publish from a lifecycle event without an explicit mode,\n // treat it as routed so later native switches can distinguish.\n if (mode !== 'routed') {\n await writeLiveMode('routed', deps.home);\n }\n await writeStoredLiveRoute(provider, deps.home);\n await writeLiveTakeover(deps, provider);\n } catch (error) {\n deps.log?.(`Codex live config sync failed: ${errorMessage(error)}`);\n }\n}\n\nasync function writeLiveTakeover(\n deps: CodexLiveConfigDeps,\n provider: LiveCodexProvider,\n): Promise<void> {\n const configPath = configTomlPath(deps.home);\n const catalogPath = codexLiveCatalogPath(deps.home);\n const profileName = codexProfileName(provider.source);\n const preferredFromRoles = preferredHubModelsFromRoles(deps.getCodexModelRoles?.());\n const preferredHubModel =\n preferredFromRoles[0] ||\n provider.defaultModel?.trim() ||\n deps.getCodexModelId?.()?.trim() ||\n undefined;\n const preferredList =\n preferredFromRoles.length > 0\n ? preferredFromRoles\n : preferredHubModel\n ? [preferredHubModel]\n : [];\n\n const models = await liveRouteCatalogModels({\n endpoint: provider.endpoint,\n token: provider.token,\n defaultModel: preferredHubModel,\n });\n\n // Desktop allowlist only shows native GPT slugs (~5). Alias top hub models\n // onto those slugs (codex-router technique) so the Desktop picker lists Hub\n // routes with friendly names; real hub slugs stay for the CLI.\n // Preferred list comes from Apps Configure Models (Default + List 2–5).\n const isHub = provider.source.startsWith('hub:');\n let catalogModels = models;\n let configModel = preferredHubModel;\n if (isHub && models.length > 0) {\n const nativeSlots = loadNativeListSlots();\n const ordered = orderHubModelsForDesktop(\n models.map((model) => model.slug),\n preferredList,\n );\n const aliases = assignDesktopAliases(ordered, nativeSlots);\n catalogModels = desktopAwareRouteModels(models, aliases, nativeSlots);\n configModel = desktopConfigModelId(preferredHubModel, aliases) ?? preferredHubModel;\n deps.log?.(\n `Codex Desktop: aliased ${aliases.length} Hub model(s) onto native GPT picker slots` +\n (aliases[0] ? ` (e.g. ${aliases[0].nativeSlug} → ${aliases[0].hubModel})` : ''),\n );\n }\n\n // Tag entries with the live provider id for CLI catalog association.\n await writeJsonFile(catalogPath, buildLiveCatalog(catalogModels, profileName), 0o600);\n\n const existing = await readFileSafe(configPath);\n await ensureStash(existing, deps.home);\n\n const includeCatalog = !hasTopLevelKeyOutsideLiveBlock(existing, 'model_catalog_json');\n // After prepareConfigForLiveTakeover, user model/model_provider are removed;\n // hasTopLevelKeyOutsideLiveBlock for those is irrelevant — we always own them.\n if (!includeCatalog) {\n deps.log?.(\n `Codex: keeping your own model_catalog_json in ${configPath}; routed models are not auto-listed. Use: codex --profile ${profileName}`,\n );\n }\n\n const prepared = prepareConfigForLiveTakeover(existing);\n const block = renderLiveManagedBlock({ ...provider, defaultModel: configModel }, catalogPath, {\n includeCatalog,\n });\n const next = upsertLiveBlock(prepared, block);\n if (next !== existing) {\n await writeTextFile(configPath, next, 0o600);\n }\n}\n\n/** Remove the live managed block, restore stashed defaults, drop sidecars. */\nexport async function clearCodexLiveConfig(\n deps: CodexLiveConfigDeps,\n opts: { keepMode?: boolean } = {},\n): Promise<void> {\n try {\n await rm(codexLiveCatalogPath(deps.home), { force: true });\n await rm(codexLiveRoutePath(deps.home), { force: true });\n if (!opts.keepMode) {\n await rm(codexLiveModePath(deps.home), { force: true });\n }\n\n const stash = await readStash(deps.home);\n const stashPath = codexUserDefaultsStashPath(deps.home);\n const configPath = configTomlPath(deps.home);\n if (!(await pathExists(configPath))) {\n await rm(stashPath, { force: true });\n return;\n }\n const existing = await readFileSafe(configPath);\n const next = restoreUserTopLevelDefaults(existing, stash);\n await rm(stashPath, { force: true });\n if (next === existing) {\n return;\n }\n if (next.trim().length === 0) {\n await rm(configPath, { force: true });\n } else {\n await writeTextFile(configPath, next, 0o600);\n }\n } catch (error) {\n deps.log?.(`Codex live config cleanup failed: ${errorMessage(error)}`);\n }\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAqDA,IAAM,eAAe;;;;;AAyCrB,eAAe,sBAAsB,MAA8D;CACjG,MAAM,SAAS,KAAK,iBAAiB,KAAK;CAC1C,IAAI,CAAC,QACH,OAAO;CAGT,IAAI,OAAO,SAAS,aAClB,OAAO,mBAAmB,MAAM,OAAO,IAAI;CAG7C,IAAI,OAAO,SAAS,WAClB,OAAO,4BAA4B,MAAM,OAAO,UAAU,OAAO,IAAI;CAGvE,IAAI,OAAO,SAAS,gBAClB,OAAO,yBAAyB,MAAM,OAAO,QAAQ;CAGvD,IAAI,OAAO,SAAS,WAAW;EAG7B,MAAM,SAAS,MAAM,oBAAoB,KAAK,IAAI;EAClD,IAAI,UAAU,OAAO,WAAW,WAAW,OAAO,QAChD,OAAO;EAET,OAAO;CACT;CAGA,OAAO;AACT;AAEA,eAAe,mBACb,MACA,SACmC;CACnC,MAAM,QAAQ,KAAK,IAAI,iBAAiB,YAAY;CACpD,IAAI,SAAS,MAAM,SAAS,WAAW,WAAW,MAAM,SAAS,QAAQ,SAAS;EAChF,MAAM,SAAS,MAAM,KAAK,IAAI,OAAO,MAAM,SAAS,GAAG;EACvD,IAAI,OAAO,WAAW,OAAO,UAC3B,OAAO;GACL,QAAQ,OAAO,MAAM,SAAS;GAC9B,UAAU,OAAO;GACjB,OAAO,MAAM;EACf;CAEJ;CACA,MAAM,SAAS,MAAM,oBAAoB,KAAK,IAAI;CAClD,IAAI,UAAU,OAAO,WAAW,OAAO,WACrC,OAAO;CAET,OAAO;AACT;AAEA,eAAe,4BACb,MACA,YACA,aACmC;CAEnC,MAAM,OAAM,MADO,KAAK,MAAM,cAAc,EAAA,CAC3B,MACd,cACC,UAAU,aAAa,cACvB,UAAU,SAAS,eACnB,UAAU,OAAO,WACjB,UAAU,OAAO,QACrB;CACA,IAAI,CAAC,KAAK,OAAO,UACf,OAAO;CAET,MAAM,UAAU,MAAM,KAAK,SAAS,WAAW,YAAY,WAAW;CACtE,MAAM,WAAW,KAAK,gBAAgB,IAAI,UAAU;CACpD,IAAI,CAAC,WAAW,CAAC,UACf,OAAO;CAET,MAAM,YAAY,kBAAkB,UAAU,OAAO,CAAC,CAAC,aAAa,OAAO;CAC3E,IAAI,cAAc,2BAA2B,cAAc,0BACzD,OAAO;CAET,MAAM,QAAQ,MAAM,KAAK,SAAS,eAAe,YAAY,WAAW;CACxE,IAAI,CAAC,OAAO,OACV,OAAO;CAET,OAAO;EACL,QAAQ,GAAG,WAAW,GAAG;EACzB,UAAU,IAAI,OAAO;EACrB,OAAO,MAAM;CACf;AACF;AAEA,eAAe,yBACb,MACA,YACmC;CAEnC,MAAM,OAAM,MADO,KAAK,MAAM,cAAc,EAAA,CAC3B,MACd,cACC,UAAU,aAAa,eACtB,UAAU,SAAS,UAAU,UAAU,SAAS,QACjD,UAAU,OAAO,WACjB,UAAU,OAAO,QACrB;CACA,IAAI,CAAC,KAAK,OAAO,UAGf,OAAO;CAIT,MAAM,SAAS,MAAM,oBAAoB,KAAK,IAAI;CAClD,IACE,WACC,OAAO,WAAW,QAAQ,gBAAgB,OAAO,OAAO,WAAW,GAAG,WAAW,EAAE,IAEpF,OAAO;EACL,GAAG;EACH,UAAU,IAAI,OAAO;EACrB,QAAQ,QAAQ;CAClB;CAEF,OAAO;AACT;AAEA,eAAe,aAAa,MAA+B;CACzD,IAAI;EACF,OAAO,MAAM,SAAS,MAAM,MAAM;CACpC,QAAQ;EACN,OAAO;CACT;AACF;AAEA,eAAe,aAAa,MAA8C;CACxE,MAAM,OAAO,kBAAkB,IAAI;CACnC,IAAI,CAAE,MAAM,WAAW,IAAI,GACzB,OAAO;CAET,IAAI;EACF,MAAM,MAAM,KAAK,MAAM,MAAM,SAAS,MAAM,MAAM,CAAC;EACnD,OAAO,IAAI,SAAS,YAAY,IAAI,SAAS,WAAW,IAAI,OAAO;CACrE,QAAQ;EACN,OAAO;CACT;AACF;AAEA,eAAe,cAAc,MAAqB,MAA8B;CAC9E,MAAM,cAAc,kBAAkB,IAAI,GAAG;EAAE,SAAS;EAAG;CAAK,GAAG,GAAK;AAC1E;AAEA,eAAe,UAAU,MAAuD;CAC9E,MAAM,OAAO,2BAA2B,IAAI;CAC5C,IAAI,CAAE,MAAM,WAAW,IAAI,GACzB,OAAO;CAET,IAAI;EACF,MAAM,MAAM,KAAK,MAAM,MAAM,SAAS,MAAM,MAAM,CAAC;EACnD,OAAO,KAAK,YAAY,IAAI,MAAM;CACpC,QAAQ;EACN,OAAO;CACT;AACF;AAEA,eAAe,YAAY,SAAiB,MAA8B;CACxE,MAAM,OAAO,2BAA2B,IAAI;CAC5C,IAAI,MAAM,WAAW,IAAI,GACvB;CAIF,MAAM,cAAc,MADN,4BAA4B,OAChB,GAAO,GAAK;AACxC;AAEA,eAAe,oBAAoB,MAAkD;CACnF,MAAM,OAAO,mBAAmB,IAAI;CACpC,IAAI,CAAE,MAAM,WAAW,IAAI,GACzB,OAAO;CAET,IAAI;EACF,MAAM,MAAM,KAAK,MAAM,MAAM,SAAS,MAAM,MAAM,CAAC;EACnD,IAAI,KAAK,YAAY,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,YAAY,CAAC,IAAI,OAC7D,OAAO;EAET,OAAO;GACL,QAAQ,IAAI;GACZ,UAAU,IAAI;GACd,OAAO,IAAI;GACX,cAAc,IAAI;EACpB;CACF,QAAQ;EACN,OAAO;CACT;AACF;AAEA,eAAe,qBAAqB,UAA6B,MAA8B;CAC7F,MAAM,UAA2B;EAC/B,SAAS;EACT,QAAQ,SAAS;EACjB,UAAU,SAAS;EACnB,OAAO,SAAS;EAChB,GAAI,SAAS,eAAe,EAAE,cAAc,SAAS,aAAa,IAAI,CAAC;CACzE;CACA,MAAM,cAAc,mBAAmB,IAAI,GAAG,SAAS,GAAK;AAC9D;;;;;;AAOA,eAAsB,sBACpB,MACA,UACe;CACf,IAAI;EACF,MAAM,cAAc,UAAU,KAAK,IAAI;EACvC,MAAM,qBAAqB,UAAU,KAAK,IAAI;EAC9C,MAAM,kBAAkB,MAAM,QAAQ;CACxC,SAAS,OAAO;EACd,KAAK,MAAM,qCAAqC,aAAa,KAAK,GAAG;CACvE;AACF;;;;;;AAOA,eAAsB,0BAA0B,MAA0C;CACxF,IAAI;EACF,MAAM,cAAc,UAAU,KAAK,IAAI;EACvC,MAAM,qBAAqB,MAAM,EAAE,UAAU,KAAK,CAAC;CACrD,SAAS,OAAO;EACd,KAAK,MAAM,4CAA4C,aAAa,KAAK,GAAG;CAC9E;AACF;;;;;;;;;;AAoBA,eAAsB,oBACpB,MACA,OAA6B,CAAC,GACf;CACf,IAAI;EACF,IAAI,KAAK,aACP,MAAM,cAAc,UAAU,KAAK,IAAI;EAGzC,MAAM,OAAO,MAAM,aAAa,KAAK,IAAI;EACzC,IAAI,SAAS,YAAY,CAAC,KAAK,aAG7B;EAGF,MAAM,WAAW,MAAM,sBAAsB,IAAI;EACjD,IAAI,CAAC,UAAU;GACb,MAAM,qBAAqB,MAAM,EAAE,UAAU,KAAK,CAAC;GACnD;EACF;EAIA,IAAI,SAAS,UACX,MAAM,cAAc,UAAU,KAAK,IAAI;EAEzC,MAAM,qBAAqB,UAAU,KAAK,IAAI;EAC9C,MAAM,kBAAkB,MAAM,QAAQ;CACxC,SAAS,OAAO;EACd,KAAK,MAAM,kCAAkC,aAAa,KAAK,GAAG;CACpE;AACF;AAEA,eAAe,kBACb,MACA,UACe;CACf,MAAM,aAAa,eAAe,KAAK,IAAI;CAC3C,MAAM,cAAc,qBAAqB,KAAK,IAAI;CAClD,MAAM,cAAc,iBAAiB,SAAS,MAAM;CACpD,MAAM,qBAAqB,4BAA4B,KAAK,qBAAqB,CAAC;CAClF,MAAM,oBACJ,mBAAmB,MACnB,SAAS,cAAc,KAAK,KAC5B,KAAK,kBAAkB,CAAC,EAAE,KAAK,KAC/B,KAAA;CACF,MAAM,gBACJ,mBAAmB,SAAS,IACxB,qBACA,oBACE,CAAC,iBAAiB,IAClB,CAAC;CAET,MAAM,SAAS,MAAM,uBAAuB;EAC1C,UAAU,SAAS;EACnB,OAAO,SAAS;EAChB,cAAc;CAChB,CAAC;CAMD,MAAM,QAAQ,SAAS,OAAO,WAAW,MAAM;CAC/C,IAAI,gBAAgB;CACpB,IAAI,cAAc;CAClB,IAAI,SAAS,OAAO,SAAS,GAAG;EAC9B,MAAM,cAAc,oBAAoB;EAKxC,MAAM,UAAU,qBAJA,yBACd,OAAO,KAAK,UAAU,MAAM,IAAI,GAChC,aAEmC,GAAS,WAAW;EACzD,gBAAgB,wBAAwB,QAAQ,SAAS,WAAW;EACpE,cAAc,qBAAqB,mBAAmB,OAAO,KAAK;EAClE,KAAK,MACH,0BAA0B,QAAQ,OAAO,+CACtC,QAAQ,KAAK,UAAU,QAAQ,EAAE,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC,SAAS,KAAK,GAChF;CACF;CAGA,MAAM,cAAc,aAAa,iBAAiB,eAAe,WAAW,GAAG,GAAK;CAEpF,MAAM,WAAW,MAAM,aAAa,UAAU;CAC9C,MAAM,YAAY,UAAU,KAAK,IAAI;CAErC,MAAM,iBAAiB,CAAC,+BAA+B,UAAU,oBAAoB;CAGrF,IAAI,CAAC,gBACH,KAAK,MACH,iDAAiD,WAAW,4DAA4D,aAC1H;CAOF,MAAM,OAAO,gBAJI,6BAA6B,QAIjB,GAHf,uBAAuB;EAAE,GAAG;EAAU,cAAc;CAAY,GAAG,aAAa,EAC5F,eACF,CACuC,CAAK;CAC5C,IAAI,SAAS,UACX,MAAM,cAAc,YAAY,MAAM,GAAK;AAE/C;;AAGA,eAAsB,qBACpB,MACA,OAA+B,CAAC,GACjB;CACf,IAAI;EACF,MAAM,GAAG,qBAAqB,KAAK,IAAI,GAAG,EAAE,OAAO,KAAK,CAAC;EACzD,MAAM,GAAG,mBAAmB,KAAK,IAAI,GAAG,EAAE,OAAO,KAAK,CAAC;EACvD,IAAI,CAAC,KAAK,UACR,MAAM,GAAG,kBAAkB,KAAK,IAAI,GAAG,EAAE,OAAO,KAAK,CAAC;EAGxD,MAAM,QAAQ,MAAM,UAAU,KAAK,IAAI;EACvC,MAAM,YAAY,2BAA2B,KAAK,IAAI;EACtD,MAAM,aAAa,eAAe,KAAK,IAAI;EAC3C,IAAI,CAAE,MAAM,WAAW,UAAU,GAAI;GACnC,MAAM,GAAG,WAAW,EAAE,OAAO,KAAK,CAAC;GACnC;EACF;EACA,MAAM,WAAW,MAAM,aAAa,UAAU;EAC9C,MAAM,OAAO,4BAA4B,UAAU,KAAK;EACxD,MAAM,GAAG,WAAW,EAAE,OAAO,KAAK,CAAC;EACnC,IAAI,SAAS,UACX;EAEF,IAAI,KAAK,KAAK,CAAC,CAAC,WAAW,GACzB,MAAM,GAAG,YAAY,EAAE,OAAO,KAAK,CAAC;OAEpC,MAAM,cAAc,YAAY,MAAM,GAAK;CAE/C,SAAS,OAAO;EACd,KAAK,MAAM,qCAAqC,aAAa,KAAK,GAAG;CACvE;AACF;AAEA,SAAS,aAAa,OAAwB;CAC5C,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC9D"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service-owned global config mutations (ADR 0009).
|
|
3
|
+
*
|
|
4
|
+
* Call sites must not take `config/global` locks themselves. Every persisted
|
|
5
|
+
* config write goes through this service so CLI/TUI/tray cannot forget the
|
|
6
|
+
* coordinator.
|
|
7
|
+
*/
|
|
8
|
+
import type { GlobalConfig } from '../types.js';
|
|
9
|
+
import type { GlobalConfigStore } from './config.js';
|
|
10
|
+
export type LaunchSurface = 'tui' | 'tray';
|
|
11
|
+
export declare function launchSurface(config: GlobalConfig): LaunchSurface | undefined;
|
|
12
|
+
export declare function updateLaunchSurface(config: GlobalConfig, surface: LaunchSurface): GlobalConfig;
|
|
13
|
+
export declare function updateQuotaGuardEnabled(config: GlobalConfig, enabled: boolean): GlobalConfig;
|
|
14
|
+
export declare function updateTrayPreference(config: GlobalConfig, key: 'startEnabledProxies' | 'showQuota', enabled: boolean): GlobalConfig;
|
|
15
|
+
export declare class ConfigService {
|
|
16
|
+
private readonly store;
|
|
17
|
+
constructor(store: GlobalConfigStore);
|
|
18
|
+
get root(): string;
|
|
19
|
+
/** Underlying store — only for composition/migration that already holds broader locks. */
|
|
20
|
+
get rawStore(): GlobalConfigStore;
|
|
21
|
+
read(): Promise<GlobalConfig>;
|
|
22
|
+
/**
|
|
23
|
+
* Bootstrap path used under `.migrate.lock`. Does not take `config/global`
|
|
24
|
+
* because startup already serializes open/migrate.
|
|
25
|
+
*/
|
|
26
|
+
ensure(): Promise<GlobalConfig>;
|
|
27
|
+
/** Replace the whole config document under the coordinator. */
|
|
28
|
+
write(config: GlobalConfig): Promise<void>;
|
|
29
|
+
/** Read-modify-write under one lock so concurrent updaters cannot clobber. */
|
|
30
|
+
update(mutator: (config: GlobalConfig) => GlobalConfig): Promise<GlobalConfig>;
|
|
31
|
+
setLaunchSurface(surface: LaunchSurface): Promise<GlobalConfig>;
|
|
32
|
+
setQuotaGuardEnabled(enabled: boolean): Promise<GlobalConfig>;
|
|
33
|
+
setTrayPreference(key: 'startEnabledProxies' | 'showQuota', enabled: boolean): Promise<GlobalConfig>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=config-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-service.d.ts","sourceRoot":"","sources":["../../src/core/config-service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAKlD,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,aAAa,GAAG,SAAS,CAE7E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,GAAG,YAAY,CAQ9F;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,YAAY,CAW5F;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,qBAAqB,GAAG,WAAW,EACxC,OAAO,EAAE,OAAO,GACf,YAAY,CAWd;AAED,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAlC,YAA6B,KAAK,EAAE,iBAAiB,EAAI;IAEzD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,0FAA0F;IAC1F,IAAI,QAAQ,IAAI,iBAAiB,CAEhC;IAEK,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,CAElC;IAED;;;OAGG;IACG,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,CAEpC;IAED,+DAA+D;IACzD,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;IAED,8EAA8E;IACxE,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAMnF;IAEK,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAEpE;IAEK,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAElE;IAEK,iBAAiB,CACrB,GAAG,EAAE,qBAAqB,GAAG,WAAW,EACxC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,YAAY,CAAC,CAEvB;CACF"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { withMutationLock } from "./mutation-lock.js";
|
|
2
|
+
//#region src/core/config-service.ts
|
|
3
|
+
var CONFIG_SCOPE = "config/global";
|
|
4
|
+
function launchSurface(config) {
|
|
5
|
+
return config.ui?.defaultSurface;
|
|
6
|
+
}
|
|
7
|
+
function updateLaunchSurface(config, surface) {
|
|
8
|
+
return {
|
|
9
|
+
...config,
|
|
10
|
+
ui: {
|
|
11
|
+
...config.ui,
|
|
12
|
+
defaultSurface: surface
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function updateQuotaGuardEnabled(config, enabled) {
|
|
17
|
+
return {
|
|
18
|
+
...config,
|
|
19
|
+
ui: {
|
|
20
|
+
...config.ui,
|
|
21
|
+
quotaGuard: {
|
|
22
|
+
...config.ui?.quotaGuard,
|
|
23
|
+
enabled
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function updateTrayPreference(config, key, enabled) {
|
|
29
|
+
return {
|
|
30
|
+
...config,
|
|
31
|
+
ui: {
|
|
32
|
+
...config.ui,
|
|
33
|
+
tray: {
|
|
34
|
+
...config.ui?.tray,
|
|
35
|
+
[key]: enabled
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
var ConfigService = class {
|
|
41
|
+
store;
|
|
42
|
+
constructor(store) {
|
|
43
|
+
this.store = store;
|
|
44
|
+
}
|
|
45
|
+
get root() {
|
|
46
|
+
return this.store.root;
|
|
47
|
+
}
|
|
48
|
+
/** Underlying store — only for composition/migration that already holds broader locks. */
|
|
49
|
+
get rawStore() {
|
|
50
|
+
return this.store;
|
|
51
|
+
}
|
|
52
|
+
async read() {
|
|
53
|
+
return this.store.read();
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Bootstrap path used under `.migrate.lock`. Does not take `config/global`
|
|
57
|
+
* because startup already serializes open/migrate.
|
|
58
|
+
*/
|
|
59
|
+
async ensure() {
|
|
60
|
+
return this.store.ensure();
|
|
61
|
+
}
|
|
62
|
+
/** Replace the whole config document under the coordinator. */
|
|
63
|
+
async write(config) {
|
|
64
|
+
await withMutationLock(this.store.root, CONFIG_SCOPE, () => this.store.write(config));
|
|
65
|
+
}
|
|
66
|
+
/** Read-modify-write under one lock so concurrent updaters cannot clobber. */
|
|
67
|
+
async update(mutator) {
|
|
68
|
+
return withMutationLock(this.store.root, CONFIG_SCOPE, async () => {
|
|
69
|
+
const next = mutator(await this.store.read());
|
|
70
|
+
await this.store.write(next);
|
|
71
|
+
return next;
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
async setLaunchSurface(surface) {
|
|
75
|
+
return this.update((config) => updateLaunchSurface(config, surface));
|
|
76
|
+
}
|
|
77
|
+
async setQuotaGuardEnabled(enabled) {
|
|
78
|
+
return this.update((config) => updateQuotaGuardEnabled(config, enabled));
|
|
79
|
+
}
|
|
80
|
+
async setTrayPreference(key, enabled) {
|
|
81
|
+
return this.update((config) => updateTrayPreference(config, key, enabled));
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
//#endregion
|
|
85
|
+
export { ConfigService, launchSurface, updateLaunchSurface, updateQuotaGuardEnabled, updateTrayPreference };
|
|
86
|
+
|
|
87
|
+
//# sourceMappingURL=config-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-service.js","names":[],"sources":["../../src/core/config-service.ts"],"sourcesContent":["/**\n * Service-owned global config mutations (ADR 0009).\n *\n * Call sites must not take `config/global` locks themselves. Every persisted\n * config write goes through this service so CLI/TUI/tray cannot forget the\n * coordinator.\n */\nimport type { GlobalConfig } from '../types';\nimport type { GlobalConfigStore } from './config';\nimport { withMutationLock } from './mutation-lock';\n\nconst CONFIG_SCOPE = 'config/global';\n\nexport type LaunchSurface = 'tui' | 'tray';\n\nexport function launchSurface(config: GlobalConfig): LaunchSurface | undefined {\n return config.ui?.defaultSurface;\n}\n\nexport function updateLaunchSurface(config: GlobalConfig, surface: LaunchSurface): GlobalConfig {\n return {\n ...config,\n ui: {\n ...config.ui,\n defaultSurface: surface,\n },\n };\n}\n\nexport function updateQuotaGuardEnabled(config: GlobalConfig, enabled: boolean): GlobalConfig {\n return {\n ...config,\n ui: {\n ...config.ui,\n quotaGuard: {\n ...config.ui?.quotaGuard,\n enabled,\n },\n },\n };\n}\n\nexport function updateTrayPreference(\n config: GlobalConfig,\n key: 'startEnabledProxies' | 'showQuota',\n enabled: boolean,\n): GlobalConfig {\n return {\n ...config,\n ui: {\n ...config.ui,\n tray: {\n ...config.ui?.tray,\n [key]: enabled,\n },\n },\n };\n}\n\nexport class ConfigService {\n constructor(private readonly store: GlobalConfigStore) {}\n\n get root(): string {\n return this.store.root;\n }\n\n /** Underlying store — only for composition/migration that already holds broader locks. */\n get rawStore(): GlobalConfigStore {\n return this.store;\n }\n\n async read(): Promise<GlobalConfig> {\n return this.store.read();\n }\n\n /**\n * Bootstrap path used under `.migrate.lock`. Does not take `config/global`\n * because startup already serializes open/migrate.\n */\n async ensure(): Promise<GlobalConfig> {\n return this.store.ensure();\n }\n\n /** Replace the whole config document under the coordinator. */\n async write(config: GlobalConfig): Promise<void> {\n await withMutationLock(this.store.root, CONFIG_SCOPE, () => this.store.write(config));\n }\n\n /** Read-modify-write under one lock so concurrent updaters cannot clobber. */\n async update(mutator: (config: GlobalConfig) => GlobalConfig): Promise<GlobalConfig> {\n return withMutationLock(this.store.root, CONFIG_SCOPE, async () => {\n const next = mutator(await this.store.read());\n await this.store.write(next);\n return next;\n });\n }\n\n async setLaunchSurface(surface: LaunchSurface): Promise<GlobalConfig> {\n return this.update((config) => updateLaunchSurface(config, surface));\n }\n\n async setQuotaGuardEnabled(enabled: boolean): Promise<GlobalConfig> {\n return this.update((config) => updateQuotaGuardEnabled(config, enabled));\n }\n\n async setTrayPreference(\n key: 'startEnabledProxies' | 'showQuota',\n enabled: boolean,\n ): Promise<GlobalConfig> {\n return this.update((config) => updateTrayPreference(config, key, enabled));\n }\n}\n"],"mappings":";;AAWA,IAAM,eAAe;AAIrB,SAAgB,cAAc,QAAiD;CAC7E,OAAO,OAAO,IAAI;AACpB;AAEA,SAAgB,oBAAoB,QAAsB,SAAsC;CAC9F,OAAO;EACL,GAAG;EACH,IAAI;GACF,GAAG,OAAO;GACV,gBAAgB;EAClB;CACF;AACF;AAEA,SAAgB,wBAAwB,QAAsB,SAAgC;CAC5F,OAAO;EACL,GAAG;EACH,IAAI;GACF,GAAG,OAAO;GACV,YAAY;IACV,GAAG,OAAO,IAAI;IACd;GACF;EACF;CACF;AACF;AAEA,SAAgB,qBACd,QACA,KACA,SACc;CACd,OAAO;EACL,GAAG;EACH,IAAI;GACF,GAAG,OAAO;GACV,MAAM;IACJ,GAAG,OAAO,IAAI;KACb,MAAM;GACT;EACF;CACF;AACF;AAEA,IAAa,gBAAb,MAA2B;CACI;CAA7B,YAAY,OAA2C;EAA1B,KAAA,QAAA;CAA2B;CAExD,IAAI,OAAe;EACjB,OAAO,KAAK,MAAM;CACpB;;CAGA,IAAI,WAA8B;EAChC,OAAO,KAAK;CACd;CAEA,MAAM,OAA8B;EAClC,OAAO,KAAK,MAAM,KAAK;CACzB;;;;;CAMA,MAAM,SAAgC;EACpC,OAAO,KAAK,MAAM,OAAO;CAC3B;;CAGA,MAAM,MAAM,QAAqC;EAC/C,MAAM,iBAAiB,KAAK,MAAM,MAAM,oBAAoB,KAAK,MAAM,MAAM,MAAM,CAAC;CACtF;;CAGA,MAAM,OAAO,SAAwE;EACnF,OAAO,iBAAiB,KAAK,MAAM,MAAM,cAAc,YAAY;GACjE,MAAM,OAAO,QAAQ,MAAM,KAAK,MAAM,KAAK,CAAC;GAC5C,MAAM,KAAK,MAAM,MAAM,IAAI;GAC3B,OAAO;EACT,CAAC;CACH;CAEA,MAAM,iBAAiB,SAA+C;EACpE,OAAO,KAAK,QAAQ,WAAW,oBAAoB,QAAQ,OAAO,CAAC;CACrE;CAEA,MAAM,qBAAqB,SAAyC;EAClE,OAAO,KAAK,QAAQ,WAAW,wBAAwB,QAAQ,OAAO,CAAC;CACzE;CAEA,MAAM,kBACJ,KACA,SACuB;EACvB,OAAO,KAAK,QAAQ,WAAW,qBAAqB,QAAQ,KAAK,OAAO,CAAC;CAC3E;AACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { GlobalConfig } from '../types.js';
|
|
2
|
+
import type { AnyPickDatabase } from './db.js';
|
|
3
|
+
/**
|
|
4
|
+
* SQLite-backed global config store.
|
|
5
|
+
*/
|
|
6
|
+
export declare class GlobalConfigStore {
|
|
7
|
+
readonly root: string;
|
|
8
|
+
readonly db: AnyPickDatabase;
|
|
9
|
+
constructor(root: string, db: AnyPickDatabase);
|
|
10
|
+
read(): Promise<GlobalConfig>;
|
|
11
|
+
write(config: GlobalConfig): Promise<void>;
|
|
12
|
+
ensure(): Promise<GlobalConfig>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAM5C;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,eAAe,CAAC;IAE7B,YAAY,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,EAG5C;IAEK,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,CAkBlC;IAEK,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAS/C;IAEK,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,CAQpC;CACF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { DEFAULT_GLOBAL_CONFIG } from "../types/clients.js";
|
|
2
|
+
import { decodeWithFallback, decoders } from "./codec.js";
|
|
3
|
+
import { getAnyPickRoot } from "./paths.js";
|
|
4
|
+
import { getConfigValue, setConfigValue } from "./db.js";
|
|
5
|
+
//#region src/core/config.ts
|
|
6
|
+
var GLOBAL_KEY = "global";
|
|
7
|
+
/**
|
|
8
|
+
* SQLite-backed global config store.
|
|
9
|
+
*/
|
|
10
|
+
var GlobalConfigStore = class {
|
|
11
|
+
root;
|
|
12
|
+
db;
|
|
13
|
+
constructor(root, db) {
|
|
14
|
+
this.root = getAnyPickRoot(root);
|
|
15
|
+
this.db = db;
|
|
16
|
+
}
|
|
17
|
+
async read() {
|
|
18
|
+
const raw = getConfigValue(this.db, GLOBAL_KEY);
|
|
19
|
+
if (!raw) return { ...DEFAULT_GLOBAL_CONFIG };
|
|
20
|
+
const data = decodeWithFallback(raw, decoders.globalConfig, { ...DEFAULT_GLOBAL_CONFIG }, "global");
|
|
21
|
+
return {
|
|
22
|
+
...DEFAULT_GLOBAL_CONFIG,
|
|
23
|
+
...data,
|
|
24
|
+
schemaVersion: data.schemaVersion ?? 2
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
async write(config) {
|
|
28
|
+
setConfigValue(this.db, GLOBAL_KEY, JSON.stringify({
|
|
29
|
+
...config,
|
|
30
|
+
schemaVersion: config.schemaVersion ?? 2
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
async ensure() {
|
|
34
|
+
if (!getConfigValue(this.db, GLOBAL_KEY)) {
|
|
35
|
+
const config = { ...DEFAULT_GLOBAL_CONFIG };
|
|
36
|
+
await this.write(config);
|
|
37
|
+
return config;
|
|
38
|
+
}
|
|
39
|
+
return this.read();
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
//#endregion
|
|
43
|
+
export { GlobalConfigStore };
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","names":[],"sources":["../../src/core/config.ts"],"sourcesContent":["import type { GlobalConfig } from '../types';\nimport { CURRENT_SCHEMA_VERSION, DEFAULT_GLOBAL_CONFIG } from '../types';\nimport { decodeWithFallback, decoders } from './codec';\nimport type { AnyPickDatabase } from './db';\nimport { getConfigValue, setConfigValue } from './db';\nimport { getAnyPickRoot } from './paths';\n\nconst GLOBAL_KEY = 'global';\n\n/**\n * SQLite-backed global config store.\n */\nexport class GlobalConfigStore {\n readonly root: string;\n readonly db: AnyPickDatabase;\n\n constructor(root: string, db: AnyPickDatabase) {\n this.root = getAnyPickRoot(root);\n this.db = db;\n }\n\n async read(): Promise<GlobalConfig> {\n const raw = getConfigValue(this.db, GLOBAL_KEY);\n if (!raw) {\n return { ...DEFAULT_GLOBAL_CONFIG };\n }\n const data = decodeWithFallback(\n raw,\n decoders.globalConfig,\n {\n ...DEFAULT_GLOBAL_CONFIG,\n },\n 'global',\n );\n return {\n ...DEFAULT_GLOBAL_CONFIG,\n ...data,\n schemaVersion: data.schemaVersion ?? CURRENT_SCHEMA_VERSION,\n };\n }\n\n async write(config: GlobalConfig): Promise<void> {\n setConfigValue(\n this.db,\n GLOBAL_KEY,\n JSON.stringify({\n ...config,\n schemaVersion: config.schemaVersion ?? CURRENT_SCHEMA_VERSION,\n }),\n );\n }\n\n async ensure(): Promise<GlobalConfig> {\n const existing = getConfigValue(this.db, GLOBAL_KEY);\n if (!existing) {\n const config = { ...DEFAULT_GLOBAL_CONFIG };\n await this.write(config);\n return config;\n }\n return this.read();\n }\n}\n"],"mappings":";;;;;AAOA,IAAM,aAAa;;;;AAKnB,IAAa,oBAAb,MAA+B;CAC7B;CACA;CAEA,YAAY,MAAc,IAAqB;EAC7C,KAAK,OAAO,eAAe,IAAI;EAC/B,KAAK,KAAK;CACZ;CAEA,MAAM,OAA8B;EAClC,MAAM,MAAM,eAAe,KAAK,IAAI,UAAU;EAC9C,IAAI,CAAC,KACH,OAAO,EAAE,GAAG,sBAAsB;EAEpC,MAAM,OAAO,mBACX,KACA,SAAS,cACT,EACE,GAAG,sBACL,GACA,QACF;EACA,OAAO;GACL,GAAG;GACH,GAAG;GACH,eAAe,KAAK,iBAAA;EACtB;CACF;CAEA,MAAM,MAAM,QAAqC;EAC/C,eACE,KAAK,IACL,YACA,KAAK,UAAU;GACb,GAAG;GACH,eAAe,OAAO,iBAAA;EACxB,CAAC,CACH;CACF;CAEA,MAAM,SAAgC;EAEpC,IAAI,CADa,eAAe,KAAK,IAAI,UACpC,GAAU;GACb,MAAM,SAAS,EAAE,GAAG,sBAAsB;GAC1C,MAAM,KAAK,MAAM,MAAM;GACvB,OAAO;EACT;EACA,OAAO,KAAK,KAAK;CACnB;AACF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AnyPickDatabase } from './db.js';
|
|
2
|
+
/**
|
|
3
|
+
* Schema versioning.
|
|
4
|
+
*
|
|
5
|
+
* `SCHEMA` above is the *baseline* (version 1). It is applied idempotently with
|
|
6
|
+
* `CREATE TABLE IF NOT EXISTS` so a fresh database is fully formed. `MIGRATIONS`
|
|
7
|
+
* holds *ordered* DDL/backfill steps for every schema change *after* the
|
|
8
|
+
* baseline. Each entry bumps `user_version` by one and is applied exactly once
|
|
9
|
+
* per installed database, keyed off `PRAGMA user_version`.
|
|
10
|
+
*
|
|
11
|
+
* This exists because `IF NOT EXISTS` silently skips altered column types and
|
|
12
|
+
* new constraints — without a versioned runner, the installed base would drift
|
|
13
|
+
* from `SCHEMA` the first time a column changes. Add new steps here rather than
|
|
14
|
+
* editing `SCHEMA` for anything that is not purely additive.
|
|
15
|
+
*/
|
|
16
|
+
export declare const BASELINE_VERSION = 1;
|
|
17
|
+
export interface SchemaMigration {
|
|
18
|
+
/** Human label, used in logs. */
|
|
19
|
+
name: string;
|
|
20
|
+
/** Apply against an already-open database. Run inside a transaction by caller. */
|
|
21
|
+
up(db: AnyPickDatabase): void;
|
|
22
|
+
}
|
|
23
|
+
/** Migrations are applied in array order; index i corresponds to version i+2. */
|
|
24
|
+
export declare const MIGRATIONS: SchemaMigration[];
|
|
25
|
+
/**
|
|
26
|
+
* Apply `SCHEMA` (baseline) then any pending versioned migrations. Idempotent:
|
|
27
|
+
* safe to call on every open. Reads/writes `PRAGMA user_version`.
|
|
28
|
+
*/
|
|
29
|
+
export declare function migrateSchema(db: AnyPickDatabase): void;
|
|
30
|
+
//# sourceMappingURL=db-schema.d.ts.map
|