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 @@
|
|
|
1
|
+
{"version":3,"file":"primary.js","names":[],"sources":["../../src/cli/primary.ts"],"sourcesContent":["/**\n * Primary DX command surface (spec §5): use, run, current, list, add, link, unlink, reset.\n */\n\nimport { Command } from 'commander';\nimport type { AnyPickApp } from '../core/app';\nimport type { ResolvedTransport } from '../types';\nimport { parseNativeAccountShorthand, displayRef } from '../core/refs';\nimport { resolveProjectRoot } from '../core/project-root';\nimport { ExitCode, anypickError } from '../utils/errors';\nimport { formatModel, formatUseSuccess, handleCliError } from './errors';\nimport { MARK, info, success, warn } from './ux';\nimport pc from 'picocolors';\n\nexport interface GlobalOpts {\n json?: boolean;\n verbose?: boolean;\n dryRun?: boolean;\n reveal?: boolean;\n quiet?: boolean;\n /** Commander exposes a negated --no-input option as `input: false`. */\n input?: boolean;\n yes?: boolean;\n trace?: boolean;\n}\n\nfunction canPrompt(g: GlobalOpts): boolean {\n return (\n Boolean(process.stdin.isTTY && process.stderr.isTTY) &&\n !g.json &&\n g.input !== false &&\n !process.env.CI\n );\n}\n\nfunction printDryRun(\n g: GlobalOpts,\n action: string,\n detail: string,\n extra?: Record<string, unknown>,\n): void {\n if (g.json) {\n console.log(JSON.stringify({ dryRun: true, action, ...extra }));\n } else {\n info(`[dry-run] ${detail}`);\n }\n}\n\nconst API_KEY_INPUT = 'api-key';\n\n/**\n * Save an API key as an account. The key is credential material the user holds\n * rather than a login on this machine, so there is nothing to detect, stash, or\n * restore — the account exists only to be served through the provider's proxy.\n */\nasync function addApiKeyAccount(\n accounts: AnyPickApp['accounts'],\n provider: string,\n opts: {\n name?: string;\n current?: boolean;\n new?: boolean;\n apiKey?: string | boolean;\n region?: string;\n },\n g: GlobalOpts,\n): Promise<void> {\n if (opts.current || opts.new) {\n throw anypickError(\n '--api-key saves a key you already hold; drop --current and --new.',\n 'INVALID_USAGE',\n { exitCode: ExitCode.INVALID_USAGE },\n );\n }\n if (opts.apiKey == null) {\n throw anypickError('--region only applies together with --api-key.', 'INVALID_USAGE', {\n exitCode: ExitCode.INVALID_USAGE,\n });\n }\n\n const target = accounts.provider(provider);\n if (!target.credentialInputs?.includes(API_KEY_INPUT)) {\n throw anypickError(`Provider \"${provider}\" does not accept an API key.`, 'INVALID_USAGE', {\n exitCode: ExitCode.INVALID_USAGE,\n });\n }\n\n let secret = typeof opts.apiKey === 'string' ? opts.apiKey.trim() : '';\n if (!secret) {\n if (!canPrompt(g)) {\n throw anypickError(\n `An API key is required.\\n\\n anypick add account ${provider} --api-key <key> --name work`,\n 'INVALID_USAGE',\n { exitCode: ExitCode.INVALID_USAGE },\n );\n }\n const { isCancel, password } = await import('@clack/prompts');\n const entered = await password({ message: `${target.name} API key` });\n if (isCancel(entered) || !entered.trim()) {\n process.exit(ExitCode.CANCELLED);\n }\n secret = entered.trim();\n }\n\n const name = opts.name ?? API_KEY_INPUT;\n if (g.dryRun) {\n printDryRun(g, 'account.save', `Would save ${provider}/${name} from an API key`, {\n provider,\n name,\n mode: API_KEY_INPUT,\n });\n return;\n }\n\n const meta = await accounts.save(provider, name, {\n force: true,\n input: {\n kind: API_KEY_INPUT,\n secret,\n ...(opts.region ? { options: { region: opts.region } } : {}),\n },\n });\n if (g.json) {\n console.log(JSON.stringify({ saved: meta, mode: API_KEY_INPUT }));\n } else {\n success(`Saved ${provider}/${meta.name}`);\n }\n}\n\nfunction transportLabel(plan: {\n transport: {\n capability: string;\n endpoint?: string;\n managedProxy?: { port: number };\n };\n}): string {\n const t = plan.transport;\n switch (t.capability) {\n case 'direct':\n return t.endpoint ? `direct · ${t.endpoint}` : 'direct';\n case 'managed_builtin_proxy':\n return `managed proxy · ${t.endpoint ?? `127.0.0.1:${t.managedProxy?.port ?? '?'}`}`;\n case 'managed_external_proxy':\n return `managed external proxy · ${t.endpoint ?? ''}`;\n case 'external_manual_proxy':\n return 'external proxy (manual)';\n default:\n return t.capability;\n }\n}\n\n/** Serialize transport metadata without bearer/API secrets or lease internals. */\nfunction publicTransport(transport: ResolvedTransport): Omit<ResolvedTransport, 'managedProxy'> & {\n managedProxy?: Omit<NonNullable<ResolvedTransport['managedProxy']>, 'token' | 'leaseId'>;\n} {\n const { managedProxy, ...rest } = transport;\n return {\n ...rest,\n ...(managedProxy\n ? {\n managedProxy: {\n provider: managedProxy.provider,\n ...(managedProxy.account ? { account: managedProxy.account } : {}),\n port: managedProxy.port,\n },\n }\n : {}),\n };\n}\n\nexport function registerPrimaryCommands(\n program: Command,\n app: AnyPickApp,\n globals: () => GlobalOpts,\n): void {\n const { bindingService, clients, accounts, profiles, presets, bindings } = app;\n\n // ── use ────────────────────────────────────────────────────────\n program\n .command('use')\n .description('Set what a client uses by default')\n .argument('[client]', 'Client id (claude, codex, kiro)')\n .option('--with <source>', 'Account (provider/name), gateway, or @preset')\n .option('--current', 'Re-apply the stored global binding', false)\n .option('--model <model>', 'Explicit model id')\n .option('--save <name>', 'Also save as a named preset')\n .action(\n async (\n clientArg: string | undefined,\n opts: {\n with?: string;\n current?: boolean;\n model?: string;\n save?: string;\n },\n ) => {\n try {\n const g = globals();\n let client = clientArg;\n let withSource = opts.with;\n\n // Native shorthand: anypick use codex/personal\n if (client && !withSource && !opts.current && client.includes('/')) {\n const sh = parseNativeAccountShorthand(client, {\n accountProviders: new Set(app.accountRegistry.ids()),\n clientIds: new Set(clients.ids()),\n });\n if (sh) {\n client = sh.client;\n withSource = displayRef(sh.source);\n }\n }\n\n if (!client) {\n if (canPrompt(g)) {\n // Interactive: pick client then source — minimal for now\n const { select } = await import('@clack/prompts');\n const picked = await select({\n message: 'Which client?',\n options: clients.list().map((c) => ({\n value: c.id,\n label: c.name,\n })),\n });\n if (typeof picked !== 'string') {\n process.exit(ExitCode.CANCELLED);\n }\n client = picked;\n } else {\n throw anypickError(\n 'A client is required.\\n\\nTry:\\n anypick use claude --with grok/work',\n 'MISSING_CLIENT',\n {\n exitCode: ExitCode.INVALID_USAGE,\n suggestions: ['anypick use claude --with grok/work'],\n },\n );\n }\n }\n\n // TTY bare client: allow re-apply or picker via allowMissingSource\n const ttyBare = !withSource && !opts.current && canPrompt(g);\n\n let result;\n try {\n result = await bindingService.use(client, {\n with: withSource,\n current: opts.current,\n model: opts.model,\n save: opts.save,\n dryRun: g.dryRun,\n verbose: g.verbose,\n allowMissingSource: ttyBare,\n });\n } catch (err) {\n // TTY: no binding → open source picker then retry\n if (\n ttyBare &&\n err &&\n typeof err === 'object' &&\n 'details' in err &&\n (err as { details?: { needsPicker?: boolean } }).details?.needsPicker\n ) {\n const { select, text } = await import('@clack/prompts');\n const kind = await select({\n message: `What should ${clients.get(client).name} use?`,\n options: [\n { value: 'account', label: 'An account (provider/name)' },\n { value: 'gateway', label: 'A gateway' },\n { value: 'preset', label: 'A preset (@name)' },\n ],\n });\n if (typeof kind !== 'string') {\n process.exit(ExitCode.CANCELLED);\n }\n if (kind === 'preset') {\n const name = await text({ message: 'Preset name (without @)' });\n if (typeof name !== 'string') {\n process.exit(ExitCode.CANCELLED);\n }\n withSource = `@${name}`;\n } else {\n const raw = await text({\n message: kind === 'account' ? 'Account (provider/name)' : 'Gateway name',\n });\n if (typeof raw !== 'string') {\n process.exit(ExitCode.CANCELLED);\n }\n withSource = raw;\n }\n result = await bindingService.use(client, {\n with: withSource,\n model: opts.model,\n save: opts.save,\n dryRun: g.dryRun,\n verbose: g.verbose,\n });\n } else {\n throw err;\n }\n }\n\n if (g.json) {\n console.log(\n JSON.stringify({\n client,\n source: result.plan.resolvedSource.display,\n model: result.plan.model,\n transport: publicTransport(result.plan.transport),\n alreadyActive: result.alreadyActive,\n dryRun: result.dryRun,\n savedPreset: result.savedPreset,\n steps: g.verbose ? result.plan.steps.map((s) => s.kind) : undefined,\n }),\n );\n return;\n }\n\n if (result.dryRun) {\n info('Dry run — plan only:');\n for (const step of result.plan.steps) {\n console.log(` · ${step.kind}${step.detail ? ` — ${step.detail}` : ''}`);\n }\n return;\n }\n\n const clientName = clients.get(client).name;\n const endpoint = result.proxyEndpoint ?? result.plan.transport.endpoint ?? undefined;\n if (result.alreadyActive) {\n success(\n formatUseSuccess({\n clientName,\n sourceDisplay: result.plan.resolvedSource.display,\n alreadyActive: true,\n model: formatModel(result.plan.model),\n transport: transportLabel(result.plan),\n configEndpoint: endpoint,\n savedPreset: result.savedPreset,\n }),\n );\n return;\n }\n\n success(\n formatUseSuccess({\n clientName,\n sourceDisplay: result.plan.resolvedSource.display,\n model: formatModel(result.plan.model),\n transport: transportLabel(result.plan),\n configEndpoint: endpoint,\n scope: 'global default',\n savedPreset: result.savedPreset,\n }),\n );\n } catch (err) {\n handleCliError(err);\n }\n },\n );\n\n // ── run ────────────────────────────────────────────────────────\n program\n .command('run')\n .description('Launch a client with its effective AnyPick binding')\n .argument('[client]', 'Client id')\n .option('--with <source>', 'Temporary source override')\n .option('--model <model>', 'Explicit model id')\n .allowUnknownOption(true)\n .action(\n async (\n clientArg: string | undefined,\n opts: { with?: string; model?: string },\n cmd: Command,\n ) => {\n try {\n const g = globals();\n let client = clientArg;\n\n // Pass-through args after --\n const raw = cmd.args;\n // commander puts remainder differently; use process.argv after --\n const dd = process.argv.indexOf('--');\n const childArgs = dd >= 0 ? process.argv.slice(dd + 1) : [];\n\n if (!client) {\n if (canPrompt(g)) {\n const { select } = await import('@clack/prompts');\n const options = clients.list().map((c) => {\n const b = bindings.getGlobal(c.id);\n return {\n value: c.id,\n label: b ? `${c.name} · ${displayRef(b.spec.source)}` : `${c.name} · no binding`,\n };\n });\n const picked = await select({\n message: 'Which client?',\n options,\n });\n if (typeof picked !== 'string') {\n process.exit(ExitCode.CANCELLED);\n }\n client = picked;\n } else {\n throw anypickError(\n 'A client is required.\\n\\nTry:\\n anypick run claude\\n anypick run codex',\n 'MISSING_CLIENT',\n {\n exitCode: ExitCode.INVALID_USAGE,\n suggestions: ['anypick run claude', 'anypick run codex'],\n },\n );\n }\n }\n\n // Ignore unknown clientArg when it's actually a flag remnant\n void raw;\n\n const { launchClient } = await import('./launch-client');\n const code = await launchClient(app, client, {\n with: opts.with,\n model: opts.model,\n dryRun: g.dryRun,\n verbose: g.verbose,\n json: g.json,\n childArgs,\n });\n process.exit(code);\n } catch (err) {\n handleCliError(err);\n }\n },\n );\n\n // ── current ────────────────────────────────────────────────────\n program\n .command('current')\n .description('Show effective AnyPick bindings')\n .argument('[client]', 'Optional client filter')\n .action(async (clientArg: string | undefined) => {\n try {\n const g = globals();\n const rows = bindingService.current(clientArg);\n if (g.json) {\n console.log(\n JSON.stringify(\n {\n projectRoot: resolveProjectRoot(),\n clients: rows.map((r) => ({\n client: r.client,\n name: r.clientName,\n scope: r.scope,\n source: r.binding ? displayRef(r.binding.spec.source) : null,\n model: r.binding?.spec.model ?? null,\n provenance: r.binding?.provenance ?? null,\n })),\n },\n null,\n 2,\n ),\n );\n return;\n }\n\n if (rows.length === 0) {\n info('No clients registered.');\n return;\n }\n\n console.log(pc.bold('AnyPick current'));\n console.log(pc.dim(`Project root: ${resolveProjectRoot()}`));\n console.log();\n for (const r of rows) {\n console.log(pc.bold(r.clientName) + pc.dim(` (${r.client})`));\n if (!r.binding) {\n console.log(pc.dim(' No AnyPick binding'));\n console.log(pc.dim(` Set one: anypick use ${r.client} --with <source>`));\n } else {\n console.log(` Source ${displayRef(r.binding.spec.source)}`);\n console.log(` Model ${formatModel(r.binding.spec.model)}`);\n console.log(` Scope ${r.scope}`);\n }\n console.log();\n }\n } catch (err) {\n handleCliError(err);\n }\n });\n\n // ── list ───────────────────────────────────────────────────────\n program\n .command('list')\n .alias('ls')\n .description('List accounts, gateways, clients, or presets')\n .argument('[kind]', 'accounts | gateways | clients | presets')\n .action(async (kind: string | undefined) => {\n try {\n const g = globals();\n const k = (kind ?? 'all').toLowerCase();\n\n if (g.json) {\n const payload: Record<string, unknown> = {};\n if (k === 'all' || k === 'accounts') {\n payload.accounts = await accounts.list();\n }\n if (k === 'all' || k === 'gateways') {\n payload.gateways = (await profiles.list()).map((p) => ({\n name: p.meta.name,\n provider: p.meta.provider,\n endpoint: p.meta.endpoint,\n defaultModel: p.meta.defaultModel,\n }));\n }\n if (k === 'all' || k === 'clients') {\n payload.clients = clients.list().map((c) => ({\n id: c.id,\n name: c.name,\n binding: bindings.getGlobal(c.id)\n ? displayRef(bindings.getGlobal(c.id)!.spec.source)\n : null,\n }));\n }\n if (k === 'all' || k === 'presets') {\n payload.presets = presets.list().map((p) => ({\n name: p.name,\n client: p.spec.client,\n source: displayRef(p.spec.source),\n revision: p.revision,\n }));\n }\n console.log(JSON.stringify(payload, null, 2));\n return;\n }\n\n if (k === 'all' || k === 'accounts') {\n console.log(pc.bold('Accounts'));\n const list = await accounts.list();\n if (list.length === 0) {\n console.log(pc.dim(' (none)'));\n }\n for (const a of list) {\n const mark = a.active ? pc.green(MARK.live) : ' ';\n console.log(\n ` ${mark} ${a.provider}/${a.name}${a.identity ? pc.dim(` · ${a.identity}`) : ''}`,\n );\n }\n console.log();\n }\n if (k === 'all' || k === 'gateways') {\n console.log(pc.bold('Gateways'));\n const list = await profiles.list();\n if (list.length === 0) {\n console.log(pc.dim(' (none)'));\n }\n for (const p of list) {\n console.log(\n ` ${p.meta.name}${pc.dim(` · ${p.meta.provider}`)}${p.meta.defaultModel ? pc.dim(` · ${p.meta.defaultModel}`) : ''}`,\n );\n }\n console.log();\n }\n if (k === 'all' || k === 'clients') {\n console.log(pc.bold('Clients'));\n for (const c of clients.list()) {\n const b = bindings.getGlobal(c.id);\n console.log(\n ` ${c.name}${pc.dim(` (${c.id})`)}${b ? ` → ${displayRef(b.spec.source)}` : pc.dim(' · unbound')}`,\n );\n }\n console.log();\n }\n if (k === 'all' || k === 'presets') {\n console.log(pc.bold('Presets'));\n const list = presets.list();\n if (list.length === 0) {\n console.log(pc.dim(' (none)'));\n }\n for (const p of list) {\n console.log(\n ` @${p.name}${pc.dim(` · ${p.spec.client} · ${displayRef(p.spec.source)}`)}`,\n );\n }\n }\n } catch (err) {\n handleCliError(err);\n }\n });\n\n // ── add ────────────────────────────────────────────────────────\n const add = program.command('add').description('Add an account or gateway');\n\n add\n .command('account')\n .description('Add a saved account login')\n .argument('[provider]', 'Auth provider (codex, grok, …)')\n .option('--current', 'Save the currently live login', false)\n .option('--new', 'Start a new login flow', false)\n .option('--name <name>', 'Account name')\n .option('--source <source>', 'Gemini sign-in source: gemini-cli|antigravity')\n .option('--api-key [key]', 'Save an API key instead of a login; omit the value to be prompted')\n .option('--region <region>', 'API region for --api-key')\n .action(\n async (\n provider: string | undefined,\n opts: {\n current?: boolean;\n new?: boolean;\n name?: string;\n source?: string;\n apiKey?: string | boolean;\n region?: string;\n },\n ) => {\n try {\n const g = globals();\n if (!provider) {\n if (!canPrompt(g)) {\n throw anypickError(\n 'Provider required.\\n\\n anypick add account codex --current --name personal',\n 'INVALID_USAGE',\n { exitCode: ExitCode.INVALID_USAGE },\n );\n }\n const { select } = await import('@clack/prompts');\n const picked = await select({\n message: 'Provider?',\n options: accounts.listProviders().map((p) => ({\n value: p.id,\n label: p.name,\n })),\n });\n if (typeof picked !== 'string') {\n process.exit(ExitCode.CANCELLED);\n }\n provider = picked;\n }\n\n if (opts.current && opts.new) {\n throw anypickError('--current and --new are mutually exclusive.', 'INVALID_USAGE', {\n exitCode: ExitCode.INVALID_USAGE,\n });\n }\n\n if (opts.apiKey != null || opts.region != null) {\n await addApiKeyAccount(accounts, provider, opts, g);\n return;\n }\n\n if (opts.source && opts.source !== 'gemini-cli' && opts.source !== 'antigravity') {\n throw anypickError(\n `Unknown source \"${opts.source}\". Use gemini-cli or antigravity.`,\n 'INVALID_USAGE',\n { exitCode: ExitCode.INVALID_USAGE },\n );\n }\n const source = opts.source as 'gemini-cli' | 'antigravity' | undefined;\n if (source && !accounts.provider(provider).detectLiveSource) {\n throw anypickError(\n `Provider \"${provider}\" has a single sign-in source; drop --source.`,\n 'INVALID_USAGE',\n { exitCode: ExitCode.INVALID_USAGE },\n );\n }\n\n if (!opts.current && !opts.new) {\n if (!canPrompt(g)) {\n throw anypickError(\n `Choose how to add the ${provider} account.\\n\\nSave the current login:\\n anypick add account ${provider} --current --name personal\\n\\nAdd another login:\\n anypick add account ${provider} --new --name work`,\n 'INVALID_USAGE',\n { exitCode: ExitCode.INVALID_USAGE },\n );\n }\n const { select } = await import('@clack/prompts');\n const target = accounts.provider(provider);\n const live =\n source && target.detectLiveSource\n ? await target.detectLiveSource(source)\n : await target.detectLive();\n const label = source ?? provider;\n const choice = await select({\n message: live.present\n ? `${label} is currently logged in${live.identity ? ` as ${live.identity}` : ''}.\\nWhat do you want to do?`\n : `No live ${label} login detected. What do you want to do?`,\n options: [\n { value: 'new', label: 'Add another account' },\n ...(live.present ? [{ value: 'current', label: 'Save the current account' }] : []),\n { value: 'cancel', label: 'Cancel' },\n ],\n });\n if (choice === 'cancel' || typeof choice !== 'string') {\n process.exit(ExitCode.CANCELLED);\n }\n if (choice === 'current') {\n opts.current = true;\n } else {\n opts.new = true;\n }\n }\n\n if (opts.current) {\n // A non-default source has no ~/.gemini identity to derive a name from.\n const name = source\n ? (opts.name ?? source)\n : await accounts.resolveCurrentSaveName(provider, opts.name);\n if (g.dryRun) {\n printDryRun(\n g,\n 'account.save',\n `Would save ${provider}/${name} from the current login`,\n {\n provider,\n name,\n mode: 'current',\n ...(source ? { source } : {}),\n },\n );\n return;\n }\n const meta = source\n ? await accounts.save(provider, name, { force: true, source })\n : await accounts.saveCurrent(provider, name);\n if (g.json) {\n console.log(JSON.stringify({ saved: meta, mode: 'current' }));\n } else {\n success(`Saved ${provider}/${meta.name}`);\n }\n return;\n }\n\n if (opts.new) {\n const label = source ?? provider;\n const nextName = opts.name ?? (source === 'antigravity' ? 'antigravity-2' : 'work');\n const next = `anypick add account ${provider} --current --name ${nextName}${\n source ? ` --source ${source}` : ''\n }`;\n if (g.dryRun) {\n printDryRun(\n g,\n 'account.stash',\n `Would clear the live ${label} login and start a new flow`,\n {\n provider,\n name: nextName,\n mode: 'new',\n ...(source ? { source } : {}),\n },\n );\n return;\n }\n // stash current, clear, let user login externally, then save\n await accounts.stash(provider, { source });\n if (!g.json) {\n info(\n `Live ${label} auth cleared. Log in with the official tool, then re-run:\\n ${next}`,\n );\n } else {\n console.log(JSON.stringify({ mode: 'new', next }));\n }\n }\n } catch (err) {\n handleCliError(err);\n }\n },\n );\n\n add\n .command('gateway')\n .description('Add an API gateway')\n .argument('[name]', 'Gateway name')\n .option('--provider <id>', 'Catalog provider id')\n .option('--endpoint <url>', 'API endpoint')\n .option('--api-key <key>', 'API key')\n .option('--api-key-env <var>', 'Env var holding the API key')\n .option('--model <model>', 'Default model')\n .option('--models <id...>', 'Models to expose in Codex /model')\n .action(\n async (\n name: string | undefined,\n opts: {\n provider?: string;\n endpoint?: string;\n apiKey?: string;\n apiKeyEnv?: string;\n model?: string;\n models?: string[];\n },\n ) => {\n try {\n const g = globals();\n if (!name || !opts.provider) {\n if (!canPrompt(g)) {\n throw anypickError(\n 'Usage: anypick add gateway <name> --provider <id> --endpoint <url> --api-key <key>',\n 'INVALID_USAGE',\n { exitCode: ExitCode.INVALID_USAGE },\n );\n }\n // Fall through to interactive is partial — require non-interactive for now if missing\n if (!name || !opts.provider) {\n throw anypickError(\n 'Name and --provider are required for automation.',\n 'INVALID_USAGE',\n { exitCode: ExitCode.INVALID_USAGE },\n );\n }\n }\n\n let apiKey = opts.apiKey;\n if (!apiKey && opts.apiKeyEnv) {\n apiKey = process.env[opts.apiKeyEnv];\n }\n\n if (g.dryRun) {\n printDryRun(g, 'gateway.create', `Would create gateway ${name}`, {\n name,\n provider: opts.provider,\n endpoint: opts.endpoint,\n model: opts.model,\n models: opts.models,\n hasApiKey: Boolean(apiKey),\n });\n return;\n }\n\n const profile = await profiles.create(name, {\n provider: opts.provider,\n endpoint: opts.endpoint,\n apiKey,\n defaultModel: opts.model,\n models: modelMap(opts.models),\n });\n\n if (g.json) {\n console.log(\n JSON.stringify({\n gateway: profile.meta.name,\n provider: profile.meta.provider,\n }),\n );\n } else {\n success(`Gateway ${profile.meta.name} created`);\n info(`Use it: anypick use claude --with ${profile.meta.name}`);\n }\n } catch (err) {\n handleCliError(err);\n }\n },\n );\n\n // ── link / unlink ──────────────────────────────────────────────\n program\n .command('link')\n .description('Set a project-specific client source')\n .argument('<client>', 'Client id')\n .option('--with <source>', 'Source or @preset')\n .option('--model <model>', 'Explicit model')\n .action(async (client: string, opts: { with?: string; model?: string }) => {\n try {\n const g = globals();\n const result = await bindingService.link(client, {\n with: opts.with,\n model: opts.model,\n dryRun: g.dryRun,\n verbose: g.verbose,\n });\n if (g.json) {\n console.log(\n JSON.stringify({\n client,\n source: result.plan.resolvedSource.display,\n dryRun: result.dryRun,\n scope: 'project',\n }),\n );\n } else if (result.dryRun) {\n info('Dry run — project link plan:');\n for (const s of result.plan.steps) {\n console.log(` · ${s.kind}`);\n }\n } else {\n success(\n `Linked ${clients.get(client).name} → ${result.plan.resolvedSource.display} (project)`,\n );\n }\n } catch (err) {\n handleCliError(err);\n }\n });\n\n program\n .command('unlink')\n .description('Remove a project binding')\n .argument('[client]', 'Client id (omit for all in this project)')\n .action(async (client: string | undefined) => {\n try {\n const g = globals();\n if (g.dryRun) {\n const projectRoot = resolveProjectRoot();\n const existing = client\n ? bindings.getProject(projectRoot, client)\n ? 1\n : 0\n : bindings.listProject(projectRoot).length;\n printDryRun(g, 'binding.unlink', `Would remove ${existing} project binding(s)`, {\n client: client ?? null,\n removed: existing,\n });\n return;\n }\n const n = await bindingService.unlink(client);\n if (g.json) {\n console.log(JSON.stringify({ removed: n }));\n } else {\n success(n ? `Removed ${n} project binding(s)` : 'Nothing to unlink');\n }\n } catch (err) {\n handleCliError(err);\n }\n });\n\n // ── reset ──────────────────────────────────────────────────────\n program\n .command('reset')\n .description('Remove AnyPick-managed configuration for a client')\n .argument('[client]', 'Client id')\n .action(async (clientArg: string | undefined) => {\n try {\n const g = globals();\n let client = clientArg;\n if (!client) {\n if (!canPrompt(g)) {\n throw anypickError('Client required.\\n\\n anypick reset claude', 'INVALID_USAGE', {\n exitCode: ExitCode.INVALID_USAGE,\n });\n }\n const { select } = await import('@clack/prompts');\n const picked = await select({\n message: 'Reset which client?',\n options: clients.list().map((c) => ({\n value: c.id,\n label: c.name,\n })),\n });\n if (typeof picked !== 'string') {\n process.exit(ExitCode.CANCELLED);\n }\n client = picked;\n }\n const result = await bindingService.reset(client, {\n dryRun: g.dryRun,\n });\n if (g.json) {\n console.log(JSON.stringify(result));\n } else if (result.dryRun) {\n info(\n result.removedGlobal\n ? `Would remove global binding for ${client}`\n : `No global binding for ${client}`,\n );\n } else {\n success(`Reset AnyPick-managed state for ${client}`);\n }\n } catch (err) {\n handleCliError(err);\n }\n });\n\n // ── preset namespace ───────────────────────────────────────────\n const presetCmd = program.command('preset').description('Manage saved presets');\n\n presetCmd\n .command('list')\n .description('List presets')\n .action(async () => {\n const list = presets.list();\n if (globals().json) {\n console.log(JSON.stringify(list, null, 2));\n return;\n }\n for (const p of list) {\n console.log(\n `@${p.name} ${p.spec.client} → ${displayRef(p.spec.source)} rev ${p.revision}`,\n );\n }\n });\n\n presetCmd\n .command('show')\n .argument('<name>', 'Preset name (without @)')\n .action(async (name: string) => {\n const p = presets.getByName(name);\n if (!p) {\n handleCliError(\n anypickError(`Preset @${name} not found`, 'PRESET_NOT_FOUND', {\n exitCode: ExitCode.NOT_FOUND,\n mutated: false,\n }),\n );\n }\n console.log(JSON.stringify(p, null, 2));\n });\n\n presetCmd\n .command('remove')\n .alias('rm')\n .argument('<name>', 'Preset name')\n .action(async (name: string) => {\n if (globals().dryRun) {\n printDryRun(globals(), 'preset.remove', `Would remove preset @${name}`, { name });\n return;\n }\n const ok = presets.remove(name);\n if (globals().json) {\n console.log(JSON.stringify({ removed: ok }));\n } else if (ok) {\n success(`Removed @${name}`);\n } else {\n warn(`Preset @${name} not found`);\n }\n });\n}\n\nfunction modelMap(modelIds: readonly string[] | undefined): Record<string, string> | undefined {\n const models = [...new Set((modelIds ?? []).map((model) => model.trim()).filter(Boolean))];\n return models.length ? Object.fromEntries(models.map((model) => [model, model])) : undefined;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared terminal rendering helpers for launcher + TUI.
|
|
3
|
+
* Visible-length aware (ANSI-stripped) so colored columns align.
|
|
4
|
+
*/
|
|
5
|
+
export type { LayoutWidth } from '../presentation/layout.js';
|
|
6
|
+
export { layoutForColumns } from '../presentation/layout.js';
|
|
7
|
+
export declare function noColor(): boolean;
|
|
8
|
+
declare const identity: (s: string) => string;
|
|
9
|
+
export declare function paint(enabled: boolean): {
|
|
10
|
+
bold: typeof identity;
|
|
11
|
+
dim: typeof identity;
|
|
12
|
+
green: typeof identity;
|
|
13
|
+
red: typeof identity;
|
|
14
|
+
yellow: typeof identity;
|
|
15
|
+
cyan: typeof identity;
|
|
16
|
+
white: typeof identity;
|
|
17
|
+
inverse: typeof identity;
|
|
18
|
+
};
|
|
19
|
+
export type Paint = ReturnType<typeof paint>;
|
|
20
|
+
export declare function visibleLen(s: string): number;
|
|
21
|
+
export declare function padEndVisible(s: string, n: number): string;
|
|
22
|
+
export declare function truncate(s: string, n: number): string;
|
|
23
|
+
export declare function shortCwd(cwd: string): string;
|
|
24
|
+
//# sourceMappingURL=render-util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-util.d.ts","sourceRoot":"","sources":["../../src/cli/render-util.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,wBAAgB,OAAO,IAAI,OAAO,CAEjC;AAED,QAAA,MAAM,QAAQ,MAAO,MAAM,WAAM,CAAC;AAElC,wBAAgB,KAAK,CAAC,OAAO,EAAE,OAAO;;;;;;;;;EAuBrC;AAED,MAAM,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;AAI7C,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAQrD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAU5C"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { layoutForColumns } from "../presentation/layout.js";
|
|
2
|
+
import pc from "picocolors";
|
|
3
|
+
//#region src/cli/render-util.ts
|
|
4
|
+
/**
|
|
5
|
+
* Shared terminal rendering helpers for launcher + TUI.
|
|
6
|
+
* Visible-length aware (ANSI-stripped) so colored columns align.
|
|
7
|
+
*/
|
|
8
|
+
function noColor() {
|
|
9
|
+
return Boolean(process.env.NO_COLOR) || process.env.FORCE_COLOR === "0";
|
|
10
|
+
}
|
|
11
|
+
var identity = (s) => s;
|
|
12
|
+
function paint(enabled) {
|
|
13
|
+
if (!enabled) return {
|
|
14
|
+
bold: identity,
|
|
15
|
+
dim: identity,
|
|
16
|
+
green: identity,
|
|
17
|
+
red: identity,
|
|
18
|
+
yellow: identity,
|
|
19
|
+
cyan: identity,
|
|
20
|
+
white: identity,
|
|
21
|
+
inverse: identity
|
|
22
|
+
};
|
|
23
|
+
return {
|
|
24
|
+
bold: pc.bold,
|
|
25
|
+
dim: pc.dim,
|
|
26
|
+
green: pc.green,
|
|
27
|
+
red: pc.red,
|
|
28
|
+
yellow: pc.yellow,
|
|
29
|
+
cyan: pc.cyan,
|
|
30
|
+
white: pc.white,
|
|
31
|
+
inverse: pc.inverse
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
var ANSI_RE = new RegExp(String.raw`\u001b\[[0-9;]*m`, "g");
|
|
35
|
+
function visibleLen(s) {
|
|
36
|
+
return s.replace(ANSI_RE, "").length;
|
|
37
|
+
}
|
|
38
|
+
function padEndVisible(s, n) {
|
|
39
|
+
const len = visibleLen(s);
|
|
40
|
+
if (len >= n) return s;
|
|
41
|
+
return s + " ".repeat(n - len);
|
|
42
|
+
}
|
|
43
|
+
function truncate(s, n) {
|
|
44
|
+
if (s.length <= n) return s;
|
|
45
|
+
if (n <= 1) return s.slice(0, n);
|
|
46
|
+
return s.slice(0, n - 1) + "…";
|
|
47
|
+
}
|
|
48
|
+
function shortCwd(cwd) {
|
|
49
|
+
const home = process.env.HOME;
|
|
50
|
+
if (home && (cwd === home || cwd.startsWith(home + "/"))) return "~" + cwd.slice(home.length);
|
|
51
|
+
const parts = cwd.split("/").filter(Boolean);
|
|
52
|
+
if (parts.length > 3 && cwd.length > 28) return "…/" + parts.slice(-2).join("/");
|
|
53
|
+
return cwd;
|
|
54
|
+
}
|
|
55
|
+
//#endregion
|
|
56
|
+
export { layoutForColumns, noColor, padEndVisible, paint, shortCwd, truncate, visibleLen };
|
|
57
|
+
|
|
58
|
+
//# sourceMappingURL=render-util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-util.js","names":[],"sources":["../../src/cli/render-util.ts"],"sourcesContent":["/**\n * Shared terminal rendering helpers for launcher + TUI.\n * Visible-length aware (ANSI-stripped) so colored columns align.\n */\n\nimport pc from 'picocolors';\n\nexport type { LayoutWidth } from '../presentation/layout';\nexport { layoutForColumns } from '../presentation/layout';\n\nexport function noColor(): boolean {\n return Boolean(process.env.NO_COLOR) || process.env.FORCE_COLOR === '0';\n}\n\nconst identity = (s: string) => s;\n\nexport function paint(enabled: boolean) {\n if (!enabled) {\n return {\n bold: identity,\n dim: identity,\n green: identity,\n red: identity,\n yellow: identity,\n cyan: identity,\n white: identity,\n inverse: identity,\n };\n }\n return {\n bold: pc.bold,\n dim: pc.dim,\n green: pc.green,\n red: pc.red,\n yellow: pc.yellow,\n cyan: pc.cyan,\n white: pc.white,\n inverse: pc.inverse,\n };\n}\n\nexport type Paint = ReturnType<typeof paint>;\n\nconst ANSI_RE = new RegExp(String.raw`\\u001b\\[[0-9;]*m`, 'g');\n\nexport function visibleLen(s: string): number {\n return s.replace(ANSI_RE, '').length;\n}\n\nexport function padEndVisible(s: string, n: number): string {\n const len = visibleLen(s);\n if (len >= n) {\n return s;\n }\n return s + ' '.repeat(n - len);\n}\n\nexport function truncate(s: string, n: number): string {\n if (s.length <= n) {\n return s;\n }\n if (n <= 1) {\n return s.slice(0, n);\n }\n return s.slice(0, n - 1) + '…';\n}\n\nexport function shortCwd(cwd: string): string {\n const home = process.env.HOME;\n if (home && (cwd === home || cwd.startsWith(home + '/'))) {\n return '~' + cwd.slice(home.length);\n }\n const parts = cwd.split('/').filter(Boolean);\n if (parts.length > 3 && cwd.length > 28) {\n return '…/' + parts.slice(-2).join('/');\n }\n return cwd;\n}\n"],"mappings":";;;;;;;AAUA,SAAgB,UAAmB;CACjC,OAAO,QAAQ,QAAQ,IAAI,QAAQ,KAAK,QAAQ,IAAI,gBAAgB;AACtE;AAEA,IAAM,YAAY,MAAc;AAEhC,SAAgB,MAAM,SAAkB;CACtC,IAAI,CAAC,SACH,OAAO;EACL,MAAM;EACN,KAAK;EACL,OAAO;EACP,KAAK;EACL,QAAQ;EACR,MAAM;EACN,OAAO;EACP,SAAS;CACX;CAEF,OAAO;EACL,MAAM,GAAG;EACT,KAAK,GAAG;EACR,OAAO,GAAG;EACV,KAAK,GAAG;EACR,QAAQ,GAAG;EACX,MAAM,GAAG;EACT,OAAO,GAAG;EACV,SAAS,GAAG;CACd;AACF;AAIA,IAAM,UAAU,IAAI,OAAO,OAAO,GAAG,oBAAoB,GAAG;AAE5D,SAAgB,WAAW,GAAmB;CAC5C,OAAO,EAAE,QAAQ,SAAS,EAAE,CAAC,CAAC;AAChC;AAEA,SAAgB,cAAc,GAAW,GAAmB;CAC1D,MAAM,MAAM,WAAW,CAAC;CACxB,IAAI,OAAO,GACT,OAAO;CAET,OAAO,IAAI,IAAI,OAAO,IAAI,GAAG;AAC/B;AAEA,SAAgB,SAAS,GAAW,GAAmB;CACrD,IAAI,EAAE,UAAU,GACd,OAAO;CAET,IAAI,KAAK,GACP,OAAO,EAAE,MAAM,GAAG,CAAC;CAErB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI;AAC7B;AAEA,SAAgB,SAAS,KAAqB;CAC5C,MAAM,OAAO,QAAQ,IAAI;CACzB,IAAI,SAAS,QAAQ,QAAQ,IAAI,WAAW,OAAO,GAAG,IACpD,OAAO,MAAM,IAAI,MAAM,KAAK,MAAM;CAEpC,MAAM,QAAQ,IAAI,MAAM,GAAG,CAAC,CAAC,OAAO,OAAO;CAC3C,IAAI,MAAM,SAAS,KAAK,IAAI,SAAS,IACnC,OAAO,OAAO,MAAM,MAAM,EAAE,CAAC,CAAC,KAAK,GAAG;CAExC,OAAO;AACT"}
|
package/dist/cli/ux.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** Mirrors the TUI glyph set so both surfaces degrade the same way. */
|
|
2
|
+
export declare const MARK: {
|
|
3
|
+
readonly ok: 'OK';
|
|
4
|
+
readonly info: 'i';
|
|
5
|
+
readonly warn: '!';
|
|
6
|
+
readonly fail: 'x';
|
|
7
|
+
readonly done: '*';
|
|
8
|
+
readonly live: '*';
|
|
9
|
+
readonly open: 'o';
|
|
10
|
+
readonly focus: '>';
|
|
11
|
+
} | {
|
|
12
|
+
readonly ok: '✔';
|
|
13
|
+
readonly info: 'ℹ';
|
|
14
|
+
readonly warn: '⚠';
|
|
15
|
+
readonly fail: '✖';
|
|
16
|
+
readonly done: '✓';
|
|
17
|
+
readonly live: '●';
|
|
18
|
+
readonly open: '○';
|
|
19
|
+
readonly focus: '›';
|
|
20
|
+
};
|
|
21
|
+
export type UxMode = {
|
|
22
|
+
json: boolean;
|
|
23
|
+
quiet: boolean;
|
|
24
|
+
verbose: boolean;
|
|
25
|
+
/** No spinner when not a TTY or quiet/json */
|
|
26
|
+
interactive: boolean;
|
|
27
|
+
};
|
|
28
|
+
export declare function setUxMode(partial: Partial<UxMode>): void;
|
|
29
|
+
export declare function getUxMode(): UxMode;
|
|
30
|
+
export declare function hintsForError(err: unknown): string[];
|
|
31
|
+
export declare function printError(err: unknown): void;
|
|
32
|
+
/** Suggest a follow-up command after success. */
|
|
33
|
+
export declare function next(cmd: string, note?: string): void;
|
|
34
|
+
/**
|
|
35
|
+
* Run an async op with a spinner when interactive; plain otherwise.
|
|
36
|
+
*/
|
|
37
|
+
export declare function withSpin<T>(label: string, fn: () => Promise<T>, opts?: {
|
|
38
|
+
success?: string | ((result: T) => string);
|
|
39
|
+
}): Promise<T>;
|
|
40
|
+
export declare function success(msg: string): void;
|
|
41
|
+
export declare function info(msg: string): void;
|
|
42
|
+
export declare function warn(msg: string): void;
|
|
43
|
+
//# sourceMappingURL=ux.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ux.d.ts","sourceRoot":"","sources":["../../src/cli/ux.ts"],"names":[],"mappings":"AAMA,uEAAuE;AACvE,eAAO,MAAM,IAAI;iBAEP,IAAI;mBACF,GAAG;mBACH,GAAG;mBACH,GAAG;mBACH,GAAG;mBACH,GAAG;mBACH,GAAG;oBACF,GAAG;;iBAGN,GAAG;mBACD,GAAG;mBACH,GAAG;mBACH,GAAG;mBACH,GAAG;mBACH,GAAG;mBACH,GAAG;oBACF,GAAG;CACD,CAAC;AAEhB,MAAM,MAAM,MAAM,GAAG;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,8CAA8C;IAC9C,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AASF,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAKxD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAuDD,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAKpD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAW7C;AAED,iDAAiD;AACjD,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAMrD;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,CAAC,CAAA;CAAE,GACpD,OAAO,CAAC,CAAC,CAAC,CAkBZ;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAKzC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAKtC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAKtC"}
|
package/dist/cli/ux.js
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { isAnyPickError } from "../utils/errors.js";
|
|
2
|
+
import pc from "picocolors";
|
|
3
|
+
import * as clack from "@clack/prompts";
|
|
4
|
+
/** Mirrors the TUI glyph set so both surfaces degrade the same way. */
|
|
5
|
+
var MARK = process.env.TERM === "dumb" ? {
|
|
6
|
+
ok: "OK",
|
|
7
|
+
info: "i",
|
|
8
|
+
warn: "!",
|
|
9
|
+
fail: "x",
|
|
10
|
+
done: "*",
|
|
11
|
+
live: "*",
|
|
12
|
+
open: "o",
|
|
13
|
+
focus: ">"
|
|
14
|
+
} : {
|
|
15
|
+
ok: "✔",
|
|
16
|
+
info: "ℹ",
|
|
17
|
+
warn: "⚠",
|
|
18
|
+
fail: "✖",
|
|
19
|
+
done: "✓",
|
|
20
|
+
live: "●",
|
|
21
|
+
open: "○",
|
|
22
|
+
focus: "›"
|
|
23
|
+
};
|
|
24
|
+
var mode = {
|
|
25
|
+
json: false,
|
|
26
|
+
quiet: false,
|
|
27
|
+
verbose: false,
|
|
28
|
+
interactive: Boolean(process.stdout.isTTY && process.stdin.isTTY)
|
|
29
|
+
};
|
|
30
|
+
function setUxMode(partial) {
|
|
31
|
+
mode = {
|
|
32
|
+
...mode,
|
|
33
|
+
...partial
|
|
34
|
+
};
|
|
35
|
+
if (mode.json || mode.quiet) mode.interactive = false;
|
|
36
|
+
}
|
|
37
|
+
function getUxMode() {
|
|
38
|
+
return mode;
|
|
39
|
+
}
|
|
40
|
+
/** Map error codes → actionable next steps (Claude/Codex-style recovery). */
|
|
41
|
+
var ERROR_HINTS = {
|
|
42
|
+
NO_LIVE_AUTH: ["Log in with the tool first (e.g. codex login / grok login)", "Then: anypick add account <provider> --current --name <name>"],
|
|
43
|
+
ACCOUNT_NOT_FOUND: ["List accounts: anypick list accounts", "Or save current: anypick add account <provider> --current --name <name>"],
|
|
44
|
+
PROFILE_NOT_FOUND: ["List gateways: anypick list gateways", "Or create: anypick add gateway <name> --provider custom --endpoint …"],
|
|
45
|
+
GATEWAY_NOT_FOUND: ["List gateways: anypick list gateways", "Or create: anypick add gateway <name> --provider openrouter --endpoint …"],
|
|
46
|
+
PROFILE_EXISTS: ["Use --force to overwrite, or pick another name"],
|
|
47
|
+
STASH_BACKUP_FAILED: ["Fix the backup error, or: anypick add account <provider> --new"],
|
|
48
|
+
STASH_UNSUPPORTED: ["This provider cannot clear live auth for a new login"],
|
|
49
|
+
REFRESH_UNSUPPORTED: ["Only codex/grok/opencode support refresh today", "Re-login if tokens expired: anypick add account <provider> --new"],
|
|
50
|
+
REFRESH_EMPTY: ["Save an account first: anypick add account <provider> --current --name <name>", "Or refresh live: anypick account refresh <provider>"],
|
|
51
|
+
UNKNOWN_PROVIDER: ["See: anypick providers"],
|
|
52
|
+
UNKNOWN_CLIENT: ["See: anypick clients"],
|
|
53
|
+
UNKNOWN_CATALOG_PROVIDER: ["See: anypick providers"],
|
|
54
|
+
PROXY_UNSUPPORTED: ["This tool has no compatibility proxy", "Proxy is available for grok / kiro / opencode today"],
|
|
55
|
+
PROXY_DISABLED: ["Enable first: anypick proxy enable <provider> <name> -p <port>", "Then: anypick proxy start"],
|
|
56
|
+
PROXY_PORT_IN_USE: ["Pick another port: anypick proxy config <provider> <name> -p <port>", "Or: anypick proxy enable <provider> <name> -p <port>"],
|
|
57
|
+
PROXY_PORT_INVALID: ["Port must be an integer between 1 and 65535"],
|
|
58
|
+
PROXY_CONFIG_EMPTY: ["Example: anypick proxy config grok work -p 8081"],
|
|
59
|
+
NO_ACTIVE_ACCOUNT: ["Pass an account name, or: anypick use <client> --with <provider>/<name>"],
|
|
60
|
+
CLIENT_CONFIG_INVALID: ["Edit gateway: anypick gateway edit <name> --endpoint … --model …", "Or reset: anypick reset <client>"]
|
|
61
|
+
};
|
|
62
|
+
function hintsForError(err) {
|
|
63
|
+
if (isAnyPickError(err) && err.code && ERROR_HINTS[err.code]) return ERROR_HINTS[err.code];
|
|
64
|
+
return [];
|
|
65
|
+
}
|
|
66
|
+
function printError(err) {
|
|
67
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
68
|
+
if (!mode.quiet) {
|
|
69
|
+
console.error(pc.red(MARK.fail), msg);
|
|
70
|
+
for (const h of hintsForError(err)) console.error(pc.dim(` → ${h}`));
|
|
71
|
+
if (mode.verbose && err instanceof Error && err.stack) console.error(pc.dim(err.stack));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/** Suggest a follow-up command after success. */
|
|
75
|
+
function next(cmd, note) {
|
|
76
|
+
if (mode.json || mode.quiet) return;
|
|
77
|
+
const line = note ? `${note} ${pc.cyan(cmd)}` : pc.cyan(cmd);
|
|
78
|
+
console.log(pc.dim(" next"), line);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Run an async op with a spinner when interactive; plain otherwise.
|
|
82
|
+
*/
|
|
83
|
+
async function withSpin(label, fn, opts) {
|
|
84
|
+
if (!mode.interactive || mode.json || mode.quiet) return fn();
|
|
85
|
+
const s = clack.spinner();
|
|
86
|
+
s.start(label);
|
|
87
|
+
const t0 = Date.now();
|
|
88
|
+
try {
|
|
89
|
+
const result = await fn();
|
|
90
|
+
const ms = Date.now() - t0;
|
|
91
|
+
const ok = typeof opts?.success === "function" ? opts.success(result) : opts?.success ?? label;
|
|
92
|
+
s.stop(mode.verbose ? `${ok} ${pc.dim(`${ms}ms`)}` : ok);
|
|
93
|
+
return result;
|
|
94
|
+
} catch (err) {
|
|
95
|
+
s.stop(pc.red("Failed"));
|
|
96
|
+
throw err;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function success(msg) {
|
|
100
|
+
if (mode.json || mode.quiet) return;
|
|
101
|
+
console.log(pc.green(MARK.ok), msg);
|
|
102
|
+
}
|
|
103
|
+
function info(msg) {
|
|
104
|
+
if (mode.json || mode.quiet) return;
|
|
105
|
+
console.log(pc.cyan(MARK.info), msg);
|
|
106
|
+
}
|
|
107
|
+
function warn(msg) {
|
|
108
|
+
if (mode.json || mode.quiet) return;
|
|
109
|
+
console.log(pc.yellow(MARK.warn), msg);
|
|
110
|
+
}
|
|
111
|
+
//#endregion
|
|
112
|
+
export { MARK, getUxMode, hintsForError, info, next, printError, setUxMode, success, warn, withSpin };
|
|
113
|
+
|
|
114
|
+
//# sourceMappingURL=ux.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ux.js","names":[],"sources":["../../src/cli/ux.ts"],"sourcesContent":["import * as clack from '@clack/prompts';\nimport pc from 'picocolors';\nimport { isAnyPickError } from '../utils/errors';\n\nconst DUMB = process.env.TERM === 'dumb';\n\n/** Mirrors the TUI glyph set so both surfaces degrade the same way. */\nexport const MARK = DUMB\n ? ({\n ok: 'OK',\n info: 'i',\n warn: '!',\n fail: 'x',\n done: '*',\n live: '*',\n open: 'o',\n focus: '>',\n } as const)\n : ({\n ok: '✔',\n info: 'ℹ',\n warn: '⚠',\n fail: '✖',\n done: '✓',\n live: '●',\n open: '○',\n focus: '›',\n } as const);\n\nexport type UxMode = {\n json: boolean;\n quiet: boolean;\n verbose: boolean;\n /** No spinner when not a TTY or quiet/json */\n interactive: boolean;\n};\n\nlet mode: UxMode = {\n json: false,\n quiet: false,\n verbose: false,\n interactive: Boolean(process.stdout.isTTY && process.stdin.isTTY),\n};\n\nexport function setUxMode(partial: Partial<UxMode>): void {\n mode = { ...mode, ...partial };\n if (mode.json || mode.quiet) {\n mode.interactive = false;\n }\n}\n\nexport function getUxMode(): UxMode {\n return mode;\n}\n\n/** Map error codes → actionable next steps (Claude/Codex-style recovery). */\nconst ERROR_HINTS: Record<string, string[]> = {\n NO_LIVE_AUTH: [\n 'Log in with the tool first (e.g. codex login / grok login)',\n 'Then: anypick add account <provider> --current --name <name>',\n ],\n ACCOUNT_NOT_FOUND: [\n 'List accounts: anypick list accounts',\n 'Or save current: anypick add account <provider> --current --name <name>',\n ],\n PROFILE_NOT_FOUND: [\n 'List gateways: anypick list gateways',\n 'Or create: anypick add gateway <name> --provider custom --endpoint …',\n ],\n GATEWAY_NOT_FOUND: [\n 'List gateways: anypick list gateways',\n 'Or create: anypick add gateway <name> --provider openrouter --endpoint …',\n ],\n PROFILE_EXISTS: ['Use --force to overwrite, or pick another name'],\n STASH_BACKUP_FAILED: ['Fix the backup error, or: anypick add account <provider> --new'],\n STASH_UNSUPPORTED: ['This provider cannot clear live auth for a new login'],\n REFRESH_UNSUPPORTED: [\n 'Only codex/grok/opencode support refresh today',\n 'Re-login if tokens expired: anypick add account <provider> --new',\n ],\n REFRESH_EMPTY: [\n 'Save an account first: anypick add account <provider> --current --name <name>',\n 'Or refresh live: anypick account refresh <provider>',\n ],\n UNKNOWN_PROVIDER: ['See: anypick providers'],\n UNKNOWN_CLIENT: ['See: anypick clients'],\n UNKNOWN_CATALOG_PROVIDER: ['See: anypick providers'],\n PROXY_UNSUPPORTED: [\n 'This tool has no compatibility proxy',\n 'Proxy is available for grok / kiro / opencode today',\n ],\n PROXY_DISABLED: [\n 'Enable first: anypick proxy enable <provider> <name> -p <port>',\n 'Then: anypick proxy start',\n ],\n PROXY_PORT_IN_USE: [\n 'Pick another port: anypick proxy config <provider> <name> -p <port>',\n 'Or: anypick proxy enable <provider> <name> -p <port>',\n ],\n PROXY_PORT_INVALID: ['Port must be an integer between 1 and 65535'],\n PROXY_CONFIG_EMPTY: ['Example: anypick proxy config grok work -p 8081'],\n NO_ACTIVE_ACCOUNT: ['Pass an account name, or: anypick use <client> --with <provider>/<name>'],\n CLIENT_CONFIG_INVALID: [\n 'Edit gateway: anypick gateway edit <name> --endpoint … --model …',\n 'Or reset: anypick reset <client>',\n ],\n};\n\nexport function hintsForError(err: unknown): string[] {\n if (isAnyPickError(err) && err.code && ERROR_HINTS[err.code]) {\n return ERROR_HINTS[err.code];\n }\n return [];\n}\n\nexport function printError(err: unknown): void {\n const msg = err instanceof Error ? err.message : String(err);\n if (!mode.quiet) {\n console.error(pc.red(MARK.fail), msg);\n for (const h of hintsForError(err)) {\n console.error(pc.dim(` → ${h}`));\n }\n if (mode.verbose && err instanceof Error && err.stack) {\n console.error(pc.dim(err.stack));\n }\n }\n}\n\n/** Suggest a follow-up command after success. */\nexport function next(cmd: string, note?: string): void {\n if (mode.json || mode.quiet) {\n return;\n }\n const line = note ? `${note} ${pc.cyan(cmd)}` : pc.cyan(cmd);\n console.log(pc.dim(' next'), line);\n}\n\n/**\n * Run an async op with a spinner when interactive; plain otherwise.\n */\nexport async function withSpin<T>(\n label: string,\n fn: () => Promise<T>,\n opts?: { success?: string | ((result: T) => string) },\n): Promise<T> {\n if (!mode.interactive || mode.json || mode.quiet) {\n return fn();\n }\n const s = clack.spinner();\n s.start(label);\n const t0 = Date.now();\n try {\n const result = await fn();\n const ms = Date.now() - t0;\n const ok =\n typeof opts?.success === 'function' ? opts.success(result) : (opts?.success ?? label);\n s.stop(mode.verbose ? `${ok} ${pc.dim(`${ms}ms`)}` : ok);\n return result;\n } catch (err) {\n s.stop(pc.red('Failed'));\n throw err;\n }\n}\n\nexport function success(msg: string): void {\n if (mode.json || mode.quiet) {\n return;\n }\n console.log(pc.green(MARK.ok), msg);\n}\n\nexport function info(msg: string): void {\n if (mode.json || mode.quiet) {\n return;\n }\n console.log(pc.cyan(MARK.info), msg);\n}\n\nexport function warn(msg: string): void {\n if (mode.json || mode.quiet) {\n return;\n }\n console.log(pc.yellow(MARK.warn), msg);\n}\n"],"mappings":";;;;AAOA,IAAa,OAHA,QAAQ,IAAI,SAAS,SAI7B;CACC,IAAI;CACJ,MAAM;CACN,MAAM;CACN,MAAM;CACN,MAAM;CACN,MAAM;CACN,MAAM;CACN,OAAO;AACT,IACC;CACC,IAAI;CACJ,MAAM;CACN,MAAM;CACN,MAAM;CACN,MAAM;CACN,MAAM;CACN,MAAM;CACN,OAAO;AACT;AAUJ,IAAI,OAAe;CACjB,MAAM;CACN,OAAO;CACP,SAAS;CACT,aAAa,QAAQ,QAAQ,OAAO,SAAS,QAAQ,MAAM,KAAK;AAClE;AAEA,SAAgB,UAAU,SAAgC;CACxD,OAAO;EAAE,GAAG;EAAM,GAAG;CAAQ;CAC7B,IAAI,KAAK,QAAQ,KAAK,OACpB,KAAK,cAAc;AAEvB;AAEA,SAAgB,YAAoB;CAClC,OAAO;AACT;;AAGA,IAAM,cAAwC;CAC5C,cAAc,CACZ,8DACA,8DACF;CACA,mBAAmB,CACjB,wCACA,yEACF;CACA,mBAAmB,CACjB,wCACA,sEACF;CACA,mBAAmB,CACjB,wCACA,0EACF;CACA,gBAAgB,CAAC,gDAAgD;CACjE,qBAAqB,CAAC,gEAAgE;CACtF,mBAAmB,CAAC,sDAAsD;CAC1E,qBAAqB,CACnB,kDACA,kEACF;CACA,eAAe,CACb,iFACA,qDACF;CACA,kBAAkB,CAAC,wBAAwB;CAC3C,gBAAgB,CAAC,sBAAsB;CACvC,0BAA0B,CAAC,wBAAwB;CACnD,mBAAmB,CACjB,wCACA,qDACF;CACA,gBAAgB,CACd,kEACA,2BACF;CACA,mBAAmB,CACjB,uEACA,sDACF;CACA,oBAAoB,CAAC,6CAA6C;CAClE,oBAAoB,CAAC,iDAAiD;CACtE,mBAAmB,CAAC,yEAAyE;CAC7F,uBAAuB,CACrB,oEACA,kCACF;AACF;AAEA,SAAgB,cAAc,KAAwB;CACpD,IAAI,eAAe,GAAG,KAAK,IAAI,QAAQ,YAAY,IAAI,OACrD,OAAO,YAAY,IAAI;CAEzB,OAAO,CAAC;AACV;AAEA,SAAgB,WAAW,KAAoB;CAC7C,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;CAC3D,IAAI,CAAC,KAAK,OAAO;EACf,QAAQ,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,GAAG;EACpC,KAAK,MAAM,KAAK,cAAc,GAAG,GAC/B,QAAQ,MAAM,GAAG,IAAI,OAAO,GAAG,CAAC;EAElC,IAAI,KAAK,WAAW,eAAe,SAAS,IAAI,OAC9C,QAAQ,MAAM,GAAG,IAAI,IAAI,KAAK,CAAC;CAEnC;AACF;;AAGA,SAAgB,KAAK,KAAa,MAAqB;CACrD,IAAI,KAAK,QAAQ,KAAK,OACpB;CAEF,MAAM,OAAO,OAAO,GAAG,KAAK,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG;CAC5D,QAAQ,IAAI,GAAG,IAAI,QAAQ,GAAG,IAAI;AACpC;;;;AAKA,eAAsB,SACpB,OACA,IACA,MACY;CACZ,IAAI,CAAC,KAAK,eAAe,KAAK,QAAQ,KAAK,OACzC,OAAO,GAAG;CAEZ,MAAM,IAAI,MAAM,QAAQ;CACxB,EAAE,MAAM,KAAK;CACb,MAAM,KAAK,KAAK,IAAI;CACpB,IAAI;EACF,MAAM,SAAS,MAAM,GAAG;EACxB,MAAM,KAAK,KAAK,IAAI,IAAI;EACxB,MAAM,KACJ,OAAO,MAAM,YAAY,aAAa,KAAK,QAAQ,MAAM,IAAK,MAAM,WAAW;EACjF,EAAE,KAAK,KAAK,UAAU,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,MAAM,EAAE;EACvD,OAAO;CACT,SAAS,KAAK;EACZ,EAAE,KAAK,GAAG,IAAI,QAAQ,CAAC;EACvB,MAAM;CACR;AACF;AAEA,SAAgB,QAAQ,KAAmB;CACzC,IAAI,KAAK,QAAQ,KAAK,OACpB;CAEF,QAAQ,IAAI,GAAG,MAAM,KAAK,EAAE,GAAG,GAAG;AACpC;AAEA,SAAgB,KAAK,KAAmB;CACtC,IAAI,KAAK,QAAQ,KAAK,OACpB;CAEF,QAAQ,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,GAAG;AACrC;AAEA,SAAgB,KAAK,KAAmB;CACtC,IAAI,KAAK,QAAQ,KAAK,OACpB;CAEF,QAAQ,IAAI,GAAG,OAAO,KAAK,IAAI,GAAG,GAAG;AACvC"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
//#region src/cli.ts
|
|
3
|
+
/**
|
|
4
|
+
* Soften experimental node:sqlite warning for end users.
|
|
5
|
+
* Must run before any module that imports node:sqlite (ESM hoist-safe via dynamic import).
|
|
6
|
+
*/
|
|
7
|
+
function silenceSqliteExperimentalWarning() {
|
|
8
|
+
const original = process.emitWarning.bind(process);
|
|
9
|
+
process.emitWarning = (warning, ...rest) => {
|
|
10
|
+
const message = typeof warning === "string" ? warning : String(warning?.message ?? warning);
|
|
11
|
+
if ((typeof rest[0] === "string" ? rest[0] : typeof warning === "object" && warning && "name" in warning ? String(warning.name) : "") === "ExperimentalWarning" || message.includes("ExperimentalWarning")) {
|
|
12
|
+
if (message.includes("SQLite") || message.includes("sqlite")) return;
|
|
13
|
+
}
|
|
14
|
+
if (message.includes("SQLite is an experimental feature")) return;
|
|
15
|
+
return original(warning, ...rest);
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
silenceSqliteExperimentalWarning();
|
|
19
|
+
var earlyArgs = process.argv.slice(2);
|
|
20
|
+
var openCodeProxyCommand = earlyArgs[0] === "proxy" && earlyArgs[1] === "serve" && earlyArgs[2] === "opencode";
|
|
21
|
+
var proxyHubCommand = earlyArgs[0] === "proxy" && earlyArgs[1] === "serve" && earlyArgs[2] === "hub";
|
|
22
|
+
if (openCodeProxyCommand) {
|
|
23
|
+
const { runOpenCodeProxyCli } = await import("./providers/opencode-proxy/cli.js");
|
|
24
|
+
await runOpenCodeProxyCli(earlyArgs.slice(3));
|
|
25
|
+
} else if (proxyHubCommand) {
|
|
26
|
+
const { runProxyHubCli } = await import("./core/proxy-hub-cli.js");
|
|
27
|
+
await runProxyHubCli(earlyArgs.slice(3));
|
|
28
|
+
} else {
|
|
29
|
+
const { runAnyPickCli } = await import("./cli/bootstrap.js");
|
|
30
|
+
await runAnyPickCli(earlyArgs);
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
export {};
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","names":[],"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\n/**\n * Soften experimental node:sqlite warning for end users.\n * Must run before any module that imports node:sqlite (ESM hoist-safe via dynamic import).\n */\nfunction silenceSqliteExperimentalWarning(): void {\n const original = process.emitWarning.bind(process);\n process.emitWarning = (warning: string | Error, ...rest: unknown[]) => {\n const message = typeof warning === 'string' ? warning : String(warning?.message ?? warning);\n const typeOrName =\n typeof rest[0] === 'string'\n ? rest[0]\n : typeof warning === 'object' && warning && 'name' in warning\n ? String((warning as { name?: string }).name)\n : '';\n if (typeOrName === 'ExperimentalWarning' || message.includes('ExperimentalWarning')) {\n if (message.includes('SQLite') || message.includes('sqlite')) {\n return;\n }\n }\n if (message.includes('SQLite is an experimental feature')) {\n return;\n }\n return (original as (...a: unknown[]) => void)(warning, ...rest);\n };\n}\n\nsilenceSqliteExperimentalWarning();\n\nconst earlyArgs = process.argv.slice(2);\nconst openCodeProxyCommand =\n earlyArgs[0] === 'proxy' && earlyArgs[1] === 'serve' && earlyArgs[2] === 'opencode';\nconst proxyHubCommand =\n earlyArgs[0] === 'proxy' && earlyArgs[1] === 'serve' && earlyArgs[2] === 'hub';\nif (openCodeProxyCommand) {\n const { runOpenCodeProxyCli } = await import('./providers/opencode-proxy/cli');\n await runOpenCodeProxyCli(earlyArgs.slice(3));\n} else if (proxyHubCommand) {\n const { runProxyHubCli } = await import('./core/proxy-hub-cli');\n await runProxyHubCli(earlyArgs.slice(3));\n} else {\n const { runAnyPickCli } = await import('./cli/bootstrap');\n await runAnyPickCli(earlyArgs);\n}\n"],"mappings":";;;;;;AAMA,SAAS,mCAAyC;CAChD,MAAM,WAAW,QAAQ,YAAY,KAAK,OAAO;CACjD,QAAQ,eAAe,SAAyB,GAAG,SAAoB;EACrE,MAAM,UAAU,OAAO,YAAY,WAAW,UAAU,OAAO,SAAS,WAAW,OAAO;EAO1F,KALE,OAAO,KAAK,OAAO,WACf,KAAK,KACL,OAAO,YAAY,YAAY,WAAW,UAAU,UAClD,OAAQ,QAA8B,IAAI,IAC1C,QACW,yBAAyB,QAAQ,SAAS,qBAAqB;OAC5E,QAAQ,SAAS,QAAQ,KAAK,QAAQ,SAAS,QAAQ,GACzD;EAAA;EAGJ,IAAI,QAAQ,SAAS,mCAAmC,GACtD;EAEF,OAAQ,SAAuC,SAAS,GAAG,IAAI;CACjE;AACF;AAEA,iCAAiC;AAEjC,IAAM,YAAY,QAAQ,KAAK,MAAM,CAAC;AACtC,IAAM,uBACJ,UAAU,OAAO,WAAW,UAAU,OAAO,WAAW,UAAU,OAAO;AAC3E,IAAM,kBACJ,UAAU,OAAO,WAAW,UAAU,OAAO,WAAW,UAAU,OAAO;AAC3E,IAAI,sBAAsB;CACxB,MAAM,EAAE,wBAAwB,MAAM,OAAO;CAC7C,MAAM,oBAAoB,UAAU,MAAM,CAAC,CAAC;AAC9C,OAAO,IAAI,iBAAiB;CAC1B,MAAM,EAAE,mBAAmB,MAAM,OAAO;CACxC,MAAM,eAAe,UAAU,MAAM,CAAC,CAAC;AACzC,OAAO;CACL,MAAM,EAAE,kBAAkB,MAAM,OAAO;CACvC,MAAM,cAAc,SAAS;AAC/B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ApplyContext } from '../types.js';
|
|
2
|
+
export declare function settingsPath(home?: string): string;
|
|
3
|
+
export declare function bareModelId(id: string | undefined): string | undefined;
|
|
4
|
+
export declare function applyClaudeToHome(ctx: ApplyContext, targetHome: string): Promise<{
|
|
5
|
+
managedPaths: string[];
|
|
6
|
+
managedEnvKeys: string[];
|
|
7
|
+
}>;
|
|
8
|
+
//# sourceMappingURL=claude-client-apply.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-client-apply.d.ts","sourceRoot":"","sources":["../../src/clients/claude-client-apply.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAO7C,wBAAgB,YAAY,CAAC,IAAI,SAAgC,GAAG,MAAM,CAEzE;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAUtE;AAkBD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM;;;GA2J5E"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { AnyPickError } from "../utils/errors.js";
|
|
2
|
+
import { copyFileSafe, ensureDir, pathExists, readJsonFile, writeJsonFile } from "../utils/fs.js";
|
|
3
|
+
import { clientBackupDir } from "../core/paths.js";
|
|
4
|
+
import { resolveFromContext } from "./resolve.js";
|
|
5
|
+
import { ANYPICK_MANAGED_KEY, managedMarker, writeClientEnvFiles } from "./env-files.js";
|
|
6
|
+
import { join } from "node:path";
|
|
7
|
+
import { homedir } from "node:os";
|
|
8
|
+
//#region src/clients/claude-client-apply.ts
|
|
9
|
+
function settingsPath(home = process.env.HOME ?? homedir()) {
|
|
10
|
+
return join(home, ".claude", "settings.json");
|
|
11
|
+
}
|
|
12
|
+
function bareModelId(id) {
|
|
13
|
+
if (!id) return;
|
|
14
|
+
const trimmed = id.trim();
|
|
15
|
+
if (!trimmed) return;
|
|
16
|
+
const slash = trimmed.lastIndexOf("/");
|
|
17
|
+
return slash >= 0 ? trimmed.slice(slash + 1) : trimmed;
|
|
18
|
+
}
|
|
19
|
+
function isOfficialAnthropicEndpoint(endpoint) {
|
|
20
|
+
try {
|
|
21
|
+
const host = new URL(endpoint).hostname.toLowerCase();
|
|
22
|
+
return host === "api.anthropic.com" || host.endsWith(".anthropic.com");
|
|
23
|
+
} catch {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function expectedEnvPaths(anypickRoot) {
|
|
28
|
+
return [join(anypickRoot, "clients", "claude", "env.sh"), join(anypickRoot, "clients", "claude", "env.ps1")];
|
|
29
|
+
}
|
|
30
|
+
async function applyClaudeToHome(ctx, targetHome) {
|
|
31
|
+
const settings = settingsPath(targetHome);
|
|
32
|
+
const r = resolveFromContext(ctx);
|
|
33
|
+
const apiKey = r.apiKey;
|
|
34
|
+
const env = {};
|
|
35
|
+
const official = isOfficialAnthropicEndpoint(r.endpoint);
|
|
36
|
+
env.ANTHROPIC_BASE_URL = r.endpoint;
|
|
37
|
+
if (official) env.ANTHROPIC_API_KEY = apiKey;
|
|
38
|
+
else env.ANTHROPIC_AUTH_TOKEN = apiKey;
|
|
39
|
+
const defaultModel = bareModelId(r.roles.default ?? r.defaultModel);
|
|
40
|
+
const sonnet = bareModelId(r.roles.sonnet) ?? defaultModel;
|
|
41
|
+
const opus = bareModelId(r.roles.opus) ?? defaultModel;
|
|
42
|
+
const haiku = bareModelId(r.roles.haiku) ?? defaultModel;
|
|
43
|
+
if (defaultModel) env.ANTHROPIC_MODEL = defaultModel;
|
|
44
|
+
if (sonnet) env.ANTHROPIC_DEFAULT_SONNET_MODEL = sonnet;
|
|
45
|
+
if (opus) env.ANTHROPIC_DEFAULT_OPUS_MODEL = opus;
|
|
46
|
+
if (haiku) env.ANTHROPIC_DEFAULT_HAIKU_MODEL = haiku;
|
|
47
|
+
const extraEnv = r.overlay.env;
|
|
48
|
+
if (extraEnv && typeof extraEnv === "object" && !Array.isArray(extraEnv)) for (const [k, v] of Object.entries(extraEnv)) {
|
|
49
|
+
if (typeof v !== "string") continue;
|
|
50
|
+
if (k.startsWith("ANTHROPIC_") || k.startsWith("CLAUDE_") || k.startsWith("CLAUDE_CODE_")) env[k] = v;
|
|
51
|
+
}
|
|
52
|
+
if (ctx.dryRun) return {
|
|
53
|
+
managedPaths: [settings, ...expectedEnvPaths(ctx.anypickRoot)],
|
|
54
|
+
managedEnvKeys: Object.keys(env)
|
|
55
|
+
};
|
|
56
|
+
let doc = {};
|
|
57
|
+
if (await pathExists(settings)) try {
|
|
58
|
+
const parsed = await readJsonFile(settings);
|
|
59
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) throw new Error("root value is not an object");
|
|
60
|
+
doc = parsed;
|
|
61
|
+
} catch (err) {
|
|
62
|
+
throw new AnyPickError(`Refusing to overwrite unreadable Claude settings at ${settings}: ${err instanceof Error ? err.message : String(err)}`, "CLIENT_CONFIG_INVALID");
|
|
63
|
+
}
|
|
64
|
+
const prevKeys = doc["_anypickManaged"]?.keys ?? [];
|
|
65
|
+
const existingEnv = doc.env && typeof doc.env === "object" && !Array.isArray(doc.env) ? { ...doc.env } : {};
|
|
66
|
+
for (const key of prevKeys) delete existingEnv[key];
|
|
67
|
+
delete existingEnv.OPENAI_API_KEY;
|
|
68
|
+
delete existingEnv.OPENAI_BASE_URL;
|
|
69
|
+
delete existingEnv.OPENAI_MODEL;
|
|
70
|
+
if (official) delete existingEnv.ANTHROPIC_AUTH_TOKEN;
|
|
71
|
+
else delete existingEnv.ANTHROPIC_API_KEY;
|
|
72
|
+
for (const k of [
|
|
73
|
+
"ANTHROPIC_MODEL",
|
|
74
|
+
"ANTHROPIC_DEFAULT_SONNET_MODEL",
|
|
75
|
+
"ANTHROPIC_DEFAULT_OPUS_MODEL",
|
|
76
|
+
"ANTHROPIC_DEFAULT_HAIKU_MODEL"
|
|
77
|
+
]) if (!(k in env)) delete existingEnv[k];
|
|
78
|
+
Object.assign(existingEnv, env);
|
|
79
|
+
const managedKeys = [...Object.keys(env), official ? "ANTHROPIC_AUTH_TOKEN" : "ANTHROPIC_API_KEY"];
|
|
80
|
+
doc.env = existingEnv;
|
|
81
|
+
doc[ANYPICK_MANAGED_KEY] = managedMarker([...new Set(managedKeys)]);
|
|
82
|
+
let envPaths = [];
|
|
83
|
+
if (!ctx.isolatedHome) {
|
|
84
|
+
envPaths = await writeClientEnvFiles(ctx.anypickRoot, "claude", env);
|
|
85
|
+
const backupDir = clientBackupDir(ctx.anypickRoot, "claude");
|
|
86
|
+
await ensureDir(backupDir);
|
|
87
|
+
const backupFile = join(backupDir, "settings.json");
|
|
88
|
+
if (await pathExists(settings) && !await pathExists(backupFile)) await copyFileSafe(settings, backupFile);
|
|
89
|
+
}
|
|
90
|
+
await ensureDir(join(targetHome, ".claude"));
|
|
91
|
+
await writeJsonFile(settings, doc, 384);
|
|
92
|
+
try {
|
|
93
|
+
const verify = await readJsonFile(settings);
|
|
94
|
+
const venv = verify.env && typeof verify.env === "object" && !Array.isArray(verify.env) ? verify.env : {};
|
|
95
|
+
if (venv.ANTHROPIC_BASE_URL !== r.endpoint) throw new AnyPickError(`Failed to write proxy into ${settings}: ANTHROPIC_BASE_URL is "${venv.ANTHROPIC_BASE_URL ?? ""}" (expected ${r.endpoint})`, "CLIENT_CONFIG_INVALID");
|
|
96
|
+
} catch (err) {
|
|
97
|
+
if (err instanceof AnyPickError) throw err;
|
|
98
|
+
throw new AnyPickError(`Could not verify ${settings} after write: ${err instanceof Error ? err.message : String(err)}`, "CLIENT_CONFIG_INVALID");
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
managedPaths: [settings, ...envPaths],
|
|
102
|
+
managedEnvKeys: managedKeys
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//#endregion
|
|
106
|
+
export { applyClaudeToHome, bareModelId, settingsPath };
|
|
107
|
+
|
|
108
|
+
//# sourceMappingURL=claude-client-apply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-client-apply.js","names":[],"sources":["../../src/clients/claude-client-apply.ts"],"sourcesContent":["import { join } from 'node:path';\nimport { homedir } from 'node:os';\nimport type { ApplyContext } from '../types';\nimport { AnyPickError } from '../utils/errors';\nimport { copyFileSafe, ensureDir, pathExists, readJsonFile, writeJsonFile } from '../utils/fs';\nimport { clientBackupDir } from '../core/paths';\nimport { resolveFromContext } from './resolve';\nimport { managedMarker, ANYPICK_MANAGED_KEY, writeClientEnvFiles } from './env-files';\n\nexport function settingsPath(home = process.env.HOME ?? homedir()): string {\n return join(home, '.claude', 'settings.json');\n}\n\nexport function bareModelId(id: string | undefined): string | undefined {\n if (!id) {\n return undefined;\n }\n const trimmed = id.trim();\n if (!trimmed) {\n return undefined;\n }\n const slash = trimmed.lastIndexOf('/');\n return slash >= 0 ? trimmed.slice(slash + 1) : trimmed;\n}\n\nfunction isOfficialAnthropicEndpoint(endpoint: string): boolean {\n try {\n const host = new URL(endpoint).hostname.toLowerCase();\n return host === 'api.anthropic.com' || host.endsWith('.anthropic.com');\n } catch {\n return false;\n }\n}\n\nfunction expectedEnvPaths(anypickRoot: string): string[] {\n return [\n join(anypickRoot, 'clients', 'claude', 'env.sh'),\n join(anypickRoot, 'clients', 'claude', 'env.ps1'),\n ];\n}\n\nexport async function applyClaudeToHome(ctx: ApplyContext, targetHome: string) {\n const settings = settingsPath(targetHome);\n const r = resolveFromContext(ctx);\n const apiKey = r.apiKey;\n const env: Record<string, string> = {};\n const official = isOfficialAnthropicEndpoint(r.endpoint);\n\n env.ANTHROPIC_BASE_URL = r.endpoint;\n\n if (official) {\n env.ANTHROPIC_API_KEY = apiKey;\n } else {\n env.ANTHROPIC_AUTH_TOKEN = apiKey;\n }\n\n // Claude Code slots: default + sonnet/opus/haiku. When only default is set\n // (common for proxy model maps), fill all slots so UI model \"sonnet[…]\"\n // still hits the proxy model instead of a built-in Claude id.\n const defaultModel = bareModelId(r.roles.default ?? r.defaultModel);\n const sonnet = bareModelId(r.roles.sonnet) ?? defaultModel;\n const opus = bareModelId(r.roles.opus) ?? defaultModel;\n const haiku = bareModelId(r.roles.haiku) ?? defaultModel;\n\n if (defaultModel) {\n env.ANTHROPIC_MODEL = defaultModel;\n }\n if (sonnet) {\n env.ANTHROPIC_DEFAULT_SONNET_MODEL = sonnet;\n }\n if (opus) {\n env.ANTHROPIC_DEFAULT_OPUS_MODEL = opus;\n }\n if (haiku) {\n env.ANTHROPIC_DEFAULT_HAIKU_MODEL = haiku;\n }\n\n const extraEnv = r.overlay.env;\n if (extraEnv && typeof extraEnv === 'object' && !Array.isArray(extraEnv)) {\n for (const [k, v] of Object.entries(extraEnv)) {\n if (typeof v !== 'string') {\n continue;\n }\n if (k.startsWith('ANTHROPIC_') || k.startsWith('CLAUDE_') || k.startsWith('CLAUDE_CODE_')) {\n env[k] = v;\n }\n }\n }\n\n if (ctx.dryRun) {\n return {\n managedPaths: [settings, ...expectedEnvPaths(ctx.anypickRoot)],\n managedEnvKeys: Object.keys(env),\n };\n }\n\n // Never turn malformed user JSON into `{}`. Parse and validate before any\n // env/config write so a failed apply leaves the user's files untouched.\n let doc: Record<string, unknown> = {};\n if (await pathExists(settings)) {\n try {\n const parsed = await readJsonFile<unknown>(settings);\n if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {\n throw new Error('root value is not an object');\n }\n doc = parsed as Record<string, unknown>;\n } catch (err) {\n throw new AnyPickError(\n `Refusing to overwrite unreadable Claude settings at ${settings}: ${err instanceof Error ? err.message : String(err)}`,\n 'CLIENT_CONFIG_INVALID',\n );\n }\n }\n\n const prevManaged = doc[ANYPICK_MANAGED_KEY] as { keys?: string[] } | undefined;\n const prevKeys = prevManaged?.keys ?? [];\n const existingEnv =\n doc.env && typeof doc.env === 'object' && !Array.isArray(doc.env)\n ? { ...(doc.env as Record<string, string>) }\n : {};\n\n for (const key of prevKeys) {\n delete existingEnv[key];\n }\n\n delete existingEnv.OPENAI_API_KEY;\n delete existingEnv.OPENAI_BASE_URL;\n delete existingEnv.OPENAI_MODEL;\n if (official) {\n delete existingEnv.ANTHROPIC_AUTH_TOKEN;\n } else {\n delete existingEnv.ANTHROPIC_API_KEY;\n }\n for (const k of [\n 'ANTHROPIC_MODEL',\n 'ANTHROPIC_DEFAULT_SONNET_MODEL',\n 'ANTHROPIC_DEFAULT_OPUS_MODEL',\n 'ANTHROPIC_DEFAULT_HAIKU_MODEL',\n ]) {\n if (!(k in env)) {\n delete existingEnv[k];\n }\n }\n\n Object.assign(existingEnv, env);\n\n const managedKeys = [\n ...Object.keys(env),\n official ? 'ANTHROPIC_AUTH_TOKEN' : 'ANTHROPIC_API_KEY',\n ];\n doc.env = existingEnv;\n doc[ANYPICK_MANAGED_KEY] = managedMarker([...new Set(managedKeys)]);\n\n // Env files only for live (persistent) applies — not for isolated runtimes.\n // Keep the shell environment and settings.json in sync.\n let envPaths: string[] = [];\n if (!ctx.isolatedHome) {\n envPaths = await writeClientEnvFiles(ctx.anypickRoot, 'claude', env);\n const backupDir = clientBackupDir(ctx.anypickRoot, 'claude');\n await ensureDir(backupDir);\n const backupFile = join(backupDir, 'settings.json');\n if ((await pathExists(settings)) && !(await pathExists(backupFile))) {\n await copyFileSafe(settings, backupFile);\n }\n }\n\n await ensureDir(join(targetHome, '.claude'));\n await writeJsonFile(settings, doc, 0o600);\n\n // Hard guarantee: Claude Code reads settings.json env, not only env.sh\n try {\n const verify = await readJsonFile<Record<string, unknown>>(settings);\n const venv =\n verify.env && typeof verify.env === 'object' && !Array.isArray(verify.env)\n ? (verify.env as Record<string, string>)\n : {};\n if (venv.ANTHROPIC_BASE_URL !== r.endpoint) {\n throw new AnyPickError(\n `Failed to write proxy into ${settings}: ANTHROPIC_BASE_URL is \"${venv.ANTHROPIC_BASE_URL ?? ''}\" (expected ${r.endpoint})`,\n 'CLIENT_CONFIG_INVALID',\n );\n }\n } catch (err) {\n if (err instanceof AnyPickError) {\n throw err;\n }\n throw new AnyPickError(\n `Could not verify ${settings} after write: ${err instanceof Error ? err.message : String(err)}`,\n 'CLIENT_CONFIG_INVALID',\n );\n }\n\n return {\n managedPaths: [settings, ...envPaths],\n managedEnvKeys: managedKeys,\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ClientAdapter } from '../types.js';
|
|
2
|
+
export { bareModelId } from './claude-client-apply.js';
|
|
3
|
+
export declare function createClaudeCodeClient(home?: string): ClientAdapter;
|
|
4
|
+
export declare const claudeCodeClient: ClientAdapter;
|
|
5
|
+
//# sourceMappingURL=claude-code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/clients/claude-code.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,aAAa,EAOd,MAAM,UAAU,CAAC;AAalB,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAMpD,wBAAgB,sBAAsB,CAAC,IAAI,SAAgC,GAAG,aAAa,CA2N1F;AAgBD,eAAO,MAAM,gBAAgB,eAA2B,CAAC"}
|