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,176 @@
|
|
|
1
|
+
import { normalizeSlug } from "../../utils/slug.js";
|
|
2
|
+
import "../components/chrome/status.js";
|
|
3
|
+
//#region src/tui/model/identity.ts
|
|
4
|
+
function normalizeIdentity(value) {
|
|
5
|
+
if (value == null) return null;
|
|
6
|
+
const t = String(value).trim();
|
|
7
|
+
return t === "" ? null : t.toLowerCase();
|
|
8
|
+
}
|
|
9
|
+
/** Keep credential fingerprints useful for matching without exposing them as UI identity. */
|
|
10
|
+
function identityDisplayText(value, fallback = "—") {
|
|
11
|
+
const identity = value?.trim();
|
|
12
|
+
if (!identity) return fallback;
|
|
13
|
+
if (/^antigravity:[0-9a-f]{12,}$/i.test(identity)) return "Antigravity OAuth";
|
|
14
|
+
return identity;
|
|
15
|
+
}
|
|
16
|
+
function identitiesMatch(a, b) {
|
|
17
|
+
const na = normalizeIdentity(a);
|
|
18
|
+
const nb = normalizeIdentity(b);
|
|
19
|
+
if (na == null || nb == null) return null;
|
|
20
|
+
return na === nb;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Derive live ↔ active saved-account relationship.
|
|
24
|
+
* Does not invent a match when either identity is missing.
|
|
25
|
+
*/
|
|
26
|
+
function deriveLiveRelation(input) {
|
|
27
|
+
if (input.error) return "error";
|
|
28
|
+
if (!input.livePresent && input.savedCount === 0) return "empty";
|
|
29
|
+
if (!input.livePresent && input.savedCount > 0) return "no-live";
|
|
30
|
+
const liveNorm = normalizeIdentity(input.liveIdentity);
|
|
31
|
+
const saved = input.savedIdentities ?? [];
|
|
32
|
+
const matchesSaved = liveNorm != null && saved.some((id) => {
|
|
33
|
+
const n = normalizeIdentity(id);
|
|
34
|
+
return n != null && n === liveNorm;
|
|
35
|
+
});
|
|
36
|
+
if (!input.activeName) return matchesSaved ? "unknown" : liveNorm ? "unsaved-live" : "unknown";
|
|
37
|
+
const match = identitiesMatch(input.liveIdentity, input.activeIdentity);
|
|
38
|
+
if (match === true) return "match";
|
|
39
|
+
if (match === false) {
|
|
40
|
+
if (!matchesSaved && liveNorm) return "unsaved-live";
|
|
41
|
+
return "drift";
|
|
42
|
+
}
|
|
43
|
+
if (!matchesSaved && liveNorm) return "unknown";
|
|
44
|
+
return "unknown";
|
|
45
|
+
}
|
|
46
|
+
function relationStatusHint(relation) {
|
|
47
|
+
switch (relation) {
|
|
48
|
+
case "match": return "";
|
|
49
|
+
case "drift": return "changed";
|
|
50
|
+
case "unsaved-live": return "save this login";
|
|
51
|
+
case "no-live": return "signed out";
|
|
52
|
+
case "empty": return "no saved logins";
|
|
53
|
+
case "unknown": return "";
|
|
54
|
+
case "error": return "unavailable";
|
|
55
|
+
default: return relation;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function formatRelativeTime(iso, nowMs = Date.now()) {
|
|
59
|
+
const t = Date.parse(iso);
|
|
60
|
+
if (Number.isNaN(t)) return iso;
|
|
61
|
+
const diff = Math.max(0, nowMs - t);
|
|
62
|
+
const sec = Math.floor(diff / 1e3);
|
|
63
|
+
if (sec < 45) return "just now";
|
|
64
|
+
const min = Math.floor(sec / 60);
|
|
65
|
+
if (min < 60) return `${min}m ago`;
|
|
66
|
+
const hr = Math.floor(min / 60);
|
|
67
|
+
if (hr < 48) return `${hr}h ago`;
|
|
68
|
+
const days = Math.floor(hr / 24);
|
|
69
|
+
if (days < 60) return `${days}d ago`;
|
|
70
|
+
const months = Math.floor(days / 30);
|
|
71
|
+
if (months < 24) return `${months}mo ago`;
|
|
72
|
+
return `${Math.floor(days / 365)}y ago`;
|
|
73
|
+
}
|
|
74
|
+
/** Relative "resets in …" phrasing for a usage window reset timestamp. */
|
|
75
|
+
function formatResetIn(resetsAtMs, nowMs = Date.now()) {
|
|
76
|
+
if (resetsAtMs == null) return "";
|
|
77
|
+
const diff = resetsAtMs - nowMs;
|
|
78
|
+
if (diff <= 0) return "resets now";
|
|
79
|
+
const min = Math.round(diff / 6e4);
|
|
80
|
+
if (min < 60) return `resets in ${min}m`;
|
|
81
|
+
const hr = Math.round(min / 60);
|
|
82
|
+
if (hr < 48) return `resets in ${hr}h`;
|
|
83
|
+
return `resets in ${Math.round(hr / 24)}d`;
|
|
84
|
+
}
|
|
85
|
+
/** A textual progress bar for a remaining percentage (0–100). */
|
|
86
|
+
function usageBar(remainingPercent, width = 10) {
|
|
87
|
+
const filled = Math.round(Math.max(0, Math.min(100, remainingPercent)) / 100 * width);
|
|
88
|
+
return `${"▓".repeat(filled)}${"░".repeat(Math.max(0, width - filled))}`;
|
|
89
|
+
}
|
|
90
|
+
/** Full one-line usage window: `5h ▓▓▓░░ 62% resets in 2h`. */
|
|
91
|
+
function formatUsageWindow(window, nowMs = Date.now()) {
|
|
92
|
+
const reset = formatResetIn(window.resetsAtMs, nowMs);
|
|
93
|
+
const bar = usageBar(window.remainingPercent);
|
|
94
|
+
return `${window.label} ${bar} ${window.remainingPercent}%${reset ? ` ${reset}` : ""}`;
|
|
95
|
+
}
|
|
96
|
+
/** Compact usage summary for a single-line rail: `5h 62% · resets in 2h`. */
|
|
97
|
+
function formatUsageSummary(windows, nowMs = Date.now()) {
|
|
98
|
+
if (!windows || windows.length === 0) return "";
|
|
99
|
+
const tightest = [...windows].toSorted((a, b) => a.remainingPercent - b.remainingPercent)[0];
|
|
100
|
+
const reset = formatResetIn(tightest.resetsAtMs, nowMs);
|
|
101
|
+
return `${tightest.label} ${tightest.remainingPercent}% left${reset ? ` · ${reset}` : ""}`;
|
|
102
|
+
}
|
|
103
|
+
/** Suggest an account name slug from detected identity (email local-part preferred). */
|
|
104
|
+
function suggestAccountSlug(identity) {
|
|
105
|
+
if (!identity || !String(identity).trim()) return "main";
|
|
106
|
+
const raw = String(identity).trim();
|
|
107
|
+
const at = raw.indexOf("@");
|
|
108
|
+
const local = at > 0 ? raw.slice(0, at) : raw;
|
|
109
|
+
try {
|
|
110
|
+
return normalizeSlug(local, "name");
|
|
111
|
+
} catch {
|
|
112
|
+
return "main";
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/** Labels that look like file paths / import artifacts — never show in the list. */
|
|
116
|
+
function isPathLikeLabel(label) {
|
|
117
|
+
return /[~\\/]|\.json\b|^live\s+~|^live\s+\//i.test(label);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Short list name for a saved login — same style for every tool.
|
|
121
|
+
* Prefer a human label, then account name, then email local-part.
|
|
122
|
+
* Never show "Live ~/.codex/auth.json" style path labels.
|
|
123
|
+
*/
|
|
124
|
+
function accountDisplayName(row) {
|
|
125
|
+
const label = row.label?.trim();
|
|
126
|
+
if (label && !isPathLikeLabel(label) && label.toLowerCase() !== "live") return label;
|
|
127
|
+
if (row.name && row.name.toLowerCase() !== "live") return row.name;
|
|
128
|
+
if (row.identity) return suggestAccountSlug(row.identity);
|
|
129
|
+
return row.name || "main";
|
|
130
|
+
}
|
|
131
|
+
function proxyStateLabel(status) {
|
|
132
|
+
if (status.detail === "unavailable" || status.detail?.toLowerCase().includes("unavailable")) return "unavailable";
|
|
133
|
+
if (status.running) return "running";
|
|
134
|
+
if (status.enabled) return "enabled-stopped";
|
|
135
|
+
return "disabled";
|
|
136
|
+
}
|
|
137
|
+
function proxyStateText(status, opts = {}) {
|
|
138
|
+
const label = proxyStateLabel(status);
|
|
139
|
+
if (label === "running") return "running";
|
|
140
|
+
if (label === "unavailable") return status.detail ?? "unavailable";
|
|
141
|
+
if (label === "enabled-stopped") {
|
|
142
|
+
if (opts.active === false) return "enabled";
|
|
143
|
+
return "stopped";
|
|
144
|
+
}
|
|
145
|
+
return "disabled";
|
|
146
|
+
}
|
|
147
|
+
function formatProxyEndpoint(status) {
|
|
148
|
+
if (status.endpoint) try {
|
|
149
|
+
const u = new URL(status.endpoint);
|
|
150
|
+
return `${u.hostname}:${u.port || (u.protocol === "https:" ? "443" : "80")}`;
|
|
151
|
+
} catch {
|
|
152
|
+
return status.endpoint;
|
|
153
|
+
}
|
|
154
|
+
const host = status.host ?? "127.0.0.1";
|
|
155
|
+
if (status.port != null) return `${host}:${status.port}`;
|
|
156
|
+
return "—";
|
|
157
|
+
}
|
|
158
|
+
function formatProxyPortLabel(status) {
|
|
159
|
+
if (!status) return;
|
|
160
|
+
if (status.running && status.port != null) return `proxy :${status.port}`;
|
|
161
|
+
if (status.running && status.endpoint) try {
|
|
162
|
+
const u = new URL(status.endpoint);
|
|
163
|
+
if (u.port) return `proxy :${u.port}`;
|
|
164
|
+
} catch {
|
|
165
|
+
return "proxy running";
|
|
166
|
+
}
|
|
167
|
+
if (status.enabled && !status.running) {
|
|
168
|
+
const detail = status.detail?.toLowerCase() ?? "";
|
|
169
|
+
if (detail.includes("kirolink") || detail.includes("missing")) return status.detail ?? "proxy unavailable";
|
|
170
|
+
return "proxy stopped";
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
//#endregion
|
|
174
|
+
export { accountDisplayName, deriveLiveRelation, formatProxyEndpoint, formatProxyPortLabel, formatRelativeTime, formatResetIn, formatUsageSummary, formatUsageWindow, identitiesMatch, identityDisplayText, normalizeIdentity, proxyStateLabel, proxyStateText, relationStatusHint, suggestAccountSlug, usageBar };
|
|
175
|
+
|
|
176
|
+
//# sourceMappingURL=identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.js","names":[],"sources":["../../../src/tui/model/identity.ts"],"sourcesContent":["import type { LiveUsageWindow, ProxyStatus } from '../../types';\nimport { layoutForColumns, type LayoutWidth } from '../../presentation/layout';\nimport { normalizeSlug } from '../../utils/slug';\nimport type { AccountRow, LiveAccountRelation, ProviderPoolRow, ProxyStateLabel } from './types';\nimport { G } from '../components/chrome/status';\n\nexport function normalizeIdentity(value: string | undefined | null): string | null {\n if (value == null) {\n return null;\n }\n const t = String(value).trim();\n return t === '' ? null : t.toLowerCase();\n}\n\n/** Keep credential fingerprints useful for matching without exposing them as UI identity. */\nexport function identityDisplayText(value: string | undefined | null, fallback = '—'): string {\n const identity = value?.trim();\n if (!identity) {\n return fallback;\n }\n if (/^antigravity:[0-9a-f]{12,}$/i.test(identity)) {\n return 'Antigravity OAuth';\n }\n return identity;\n}\n\nexport function identitiesMatch(\n a: string | undefined | null,\n b: string | undefined | null,\n): boolean | null {\n const na = normalizeIdentity(a);\n const nb = normalizeIdentity(b);\n if (na == null || nb == null) {\n return null;\n }\n return na === nb;\n}\n\n/**\n * Derive live ↔ active saved-account relationship.\n * Does not invent a match when either identity is missing.\n */\nexport function deriveLiveRelation(input: {\n savedCount: number;\n livePresent: boolean;\n liveIdentity?: string;\n activeName: string | null;\n activeIdentity?: string;\n savedIdentities?: Array<string | undefined>;\n error?: boolean;\n}): LiveAccountRelation {\n if (input.error) {\n return 'error';\n }\n if (!input.livePresent && input.savedCount === 0) {\n return 'empty';\n }\n if (!input.livePresent && input.savedCount > 0) {\n return 'no-live';\n }\n\n // live present\n const liveNorm = normalizeIdentity(input.liveIdentity);\n const saved = input.savedIdentities ?? [];\n const matchesSaved =\n liveNorm != null &&\n saved.some((id) => {\n const n = normalizeIdentity(id);\n return n != null && n === liveNorm;\n });\n\n if (!input.activeName) {\n return matchesSaved ? 'unknown' : liveNorm ? 'unsaved-live' : 'unknown';\n }\n\n const match = identitiesMatch(input.liveIdentity, input.activeIdentity);\n if (match === true) {\n return 'match';\n }\n if (match === false) {\n // Live may still match some other saved account\n if (!matchesSaved && liveNorm) {\n return 'unsaved-live';\n }\n return 'drift';\n }\n\n // Missing identities — cannot claim match or drift\n if (!matchesSaved && liveNorm) {\n // Check if any saved account has no identity either — stay unknown\n return 'unknown';\n }\n return 'unknown';\n}\n\nexport function relationStatusHint(relation: LiveAccountRelation): string {\n switch (relation) {\n case 'match':\n return '';\n case 'drift':\n return 'changed';\n case 'unsaved-live':\n return 'save this login';\n case 'no-live':\n return 'signed out';\n case 'empty':\n return 'no saved logins';\n case 'unknown':\n return '';\n case 'error':\n return 'unavailable';\n default: {\n const _exhaustive: never = relation;\n return _exhaustive;\n }\n }\n}\n\n// ── Time / slug helpers ──────────────────────────────────────────\n\nexport function formatRelativeTime(iso: string, nowMs = Date.now()): string {\n const t = Date.parse(iso);\n if (Number.isNaN(t)) {\n return iso;\n }\n const diff = Math.max(0, nowMs - t);\n const sec = Math.floor(diff / 1000);\n if (sec < 45) {\n return 'just now';\n }\n const min = Math.floor(sec / 60);\n if (min < 60) {\n return `${min}m ago`;\n }\n const hr = Math.floor(min / 60);\n if (hr < 48) {\n return `${hr}h ago`;\n }\n const days = Math.floor(hr / 24);\n if (days < 60) {\n return `${days}d ago`;\n }\n const months = Math.floor(days / 30);\n if (months < 24) {\n return `${months}mo ago`;\n }\n const years = Math.floor(days / 365);\n return `${years}y ago`;\n}\n\n/** Relative \"resets in …\" phrasing for a usage window reset timestamp. */\nexport function formatResetIn(resetsAtMs: number | undefined, nowMs = Date.now()): string {\n if (resetsAtMs == null) {\n return '';\n }\n const diff = resetsAtMs - nowMs;\n if (diff <= 0) {\n return 'resets now';\n }\n const min = Math.round(diff / 60_000);\n if (min < 60) {\n return `resets in ${min}m`;\n }\n const hr = Math.round(min / 60);\n if (hr < 48) {\n return `resets in ${hr}h`;\n }\n const days = Math.round(hr / 24);\n return `resets in ${days}d`;\n}\n\n/** A textual progress bar for a remaining percentage (0–100). */\nexport function usageBar(remainingPercent: number, width = 10): string {\n const clamped = Math.max(0, Math.min(100, remainingPercent));\n const filled = Math.round((clamped / 100) * width);\n return `${'▓'.repeat(filled)}${'░'.repeat(Math.max(0, width - filled))}`;\n}\n\n/** Full one-line usage window: `5h ▓▓▓░░ 62% resets in 2h`. */\nexport function formatUsageWindow(window: LiveUsageWindow, nowMs = Date.now()): string {\n const reset = formatResetIn(window.resetsAtMs, nowMs);\n const bar = usageBar(window.remainingPercent);\n return `${window.label} ${bar} ${window.remainingPercent}%${reset ? ` ${reset}` : ''}`;\n}\n\n/** Compact usage summary for a single-line rail: `5h 62% · resets in 2h`. */\nexport function formatUsageSummary(\n windows: LiveUsageWindow[] | undefined,\n nowMs = Date.now(),\n): string {\n if (!windows || windows.length === 0) {\n return '';\n }\n // Prefer the window closest to exhaustion (least remaining).\n const tightest = [...windows].toSorted((a, b) => a.remainingPercent - b.remainingPercent)[0];\n const reset = formatResetIn(tightest.resetsAtMs, nowMs);\n return `${tightest.label} ${tightest.remainingPercent}% left${reset ? ` · ${reset}` : ''}`;\n}\n\n/** Suggest an account name slug from detected identity (email local-part preferred). */\nexport function suggestAccountSlug(identity?: string | null): string {\n if (!identity || !String(identity).trim()) {\n return 'main';\n }\n const raw = String(identity).trim();\n const at = raw.indexOf('@');\n const local = at > 0 ? raw.slice(0, at) : raw;\n try {\n return normalizeSlug(local, 'name');\n } catch {\n return 'main';\n }\n}\n\n/** Labels that look like file paths / import artifacts — never show in the list. */\nfunction isPathLikeLabel(label: string): boolean {\n return /[~\\\\/]|\\.json\\b|^live\\s+~|^live\\s+\\//i.test(label);\n}\n\n/**\n * Short list name for a saved login — same style for every tool.\n * Prefer a human label, then account name, then email local-part.\n * Never show \"Live ~/.codex/auth.json\" style path labels.\n */\nexport function accountDisplayName(row: {\n name: string;\n label?: string;\n identity?: string;\n}): string {\n const label = row.label?.trim();\n if (label && !isPathLikeLabel(label) && label.toLowerCase() !== 'live') {\n return label;\n }\n if (row.name && row.name.toLowerCase() !== 'live') {\n return row.name;\n }\n if (row.identity) {\n return suggestAccountSlug(row.identity);\n }\n return row.name || 'main';\n}\n\n// ── Proxy display ────────────────────────────────────────────────\n\nexport function proxyStateLabel(status: ProxyStatus): ProxyStateLabel {\n if (status.detail === 'unavailable' || status.detail?.toLowerCase().includes('unavailable')) {\n return 'unavailable';\n }\n if (status.running) {\n return 'running';\n }\n if (status.enabled) {\n return 'enabled-stopped';\n }\n return 'disabled';\n}\n\nexport function proxyStateText(\n status: ProxyStatus,\n opts: { active?: boolean; detail?: string } = {},\n): string {\n const label = proxyStateLabel(status);\n if (label === 'running') {\n return 'running';\n }\n if (label === 'unavailable') {\n return status.detail ?? 'unavailable';\n }\n if (label === 'enabled-stopped') {\n if (opts.active === false) {\n return 'enabled';\n }\n return 'stopped';\n }\n return 'disabled';\n}\n\nexport function formatProxyEndpoint(status: ProxyStatus): string {\n if (status.endpoint) {\n try {\n const u = new URL(status.endpoint);\n return `${u.hostname}:${u.port || (u.protocol === 'https:' ? '443' : '80')}`;\n } catch {\n return status.endpoint;\n }\n }\n const host = status.host ?? '127.0.0.1';\n if (status.port != null) {\n return `${host}:${status.port}`;\n }\n return '—';\n}\n\nexport function formatProxyPortLabel(status: ProxyStatus | null | undefined): string | undefined {\n if (!status) {\n return undefined;\n }\n if (status.running && status.port != null) {\n return `proxy :${status.port}`;\n }\n if (status.running && status.endpoint) {\n try {\n const u = new URL(status.endpoint);\n if (u.port) {\n return `proxy :${u.port}`;\n }\n } catch {\n return 'proxy running';\n }\n }\n if (status.enabled && !status.running) {\n const detail = status.detail?.toLowerCase() ?? '';\n if (detail.includes('kirolink') || detail.includes('missing')) {\n return status.detail ?? 'proxy unavailable';\n }\n return 'proxy stopped';\n }\n return undefined;\n}\n\n// ── Row formatting ───────────────────────────────────────────────\n\nexport function formatProviderRowLines(\n row: ProviderPoolRow,\n selected: boolean,\n width: LayoutWidth,\n): string[] {\n const mark = selected ? G.focus : ' ';\n const name = row.displayName;\n const active = row.activeName ?? '—';\n const id = identityDisplayText(row.identityLabel);\n const count = row.savedCount === 0 ? 'no saved' : `${row.savedCount} saved`;\n const hint = row.statusHint || row.proxyLabel || '';\n const err = row.error ? 'error' : '';\n\n if (width === 'narrow') {\n const line1 = `${mark} ${name} ${active}`;\n const line2 = ` ${id} ${count}${hint ? ` ${hint}` : ''}${err ? ` ${err}` : ''}`;\n return [line1, line2];\n }\n\n if (width === 'medium') {\n const extra = hint || err || row.proxyLabel || '';\n return [`${mark} ${name} ${active} ${id} ${count}${extra ? ` ${extra}` : ''}`];\n }\n\n // wide\n const parts = [`${mark} ${name}`, active, id, count];\n if (row.proxyLabel) {\n parts.push(row.proxyLabel);\n }\n if (row.statusHint && row.statusHint !== row.proxyLabel) {\n parts.push(row.statusHint);\n }\n if (row.error) {\n parts.push('status unavailable');\n }\n return [parts.join(' ')];\n}\n\nexport function formatAccountRowLines(\n row: AccountRow,\n selected: boolean,\n width: LayoutWidth,\n): string[] {\n const sel = selected ? G.focus : ' ';\n const marker = row.isLiveMatch ? G.live : '·';\n const name = row.label || row.name;\n const id = identityDisplayText(row.identity);\n const updated = `updated ${row.updatedRelative}`;\n\n if (width === 'narrow') {\n return [`${sel} ${marker} ${name}`, ` ${id} ${updated}`];\n }\n return [`${sel} ${marker} ${name} ${id} ${updated}`];\n}\n\nexport function layoutFromColumns(cols: number): LayoutWidth {\n return layoutForColumns(cols);\n}\n\n// ── Loaders ──────────────────────────────────────────────────────\n"],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One readline-shaped line editor for every text field in the TUI.
|
|
3
|
+
*
|
|
4
|
+
* Two rules the ad-hoc per-screen handlers kept getting wrong:
|
|
5
|
+
*
|
|
6
|
+
* 1. A cursor is a *grapheme* offset, not a UTF-16 offset. Vietnamese typed as
|
|
7
|
+
* NFD ("ắ" = ă + U+0301) is two code units, so slicing by index deletes half
|
|
8
|
+
* a letter and the rest of the line appears to shift.
|
|
9
|
+
* 2. Ink hands a pasted or IME-composed string to `useInput` as one multi-char
|
|
10
|
+
* `input`. Anything gated on `input.length === 1` silently drops it.
|
|
11
|
+
*
|
|
12
|
+
* Editing keys follow GNU readline emacs mode, which is what fzf, enquirer and
|
|
13
|
+
* @inquirer all implement; printable characters — digits, `j`, `k`, space —
|
|
14
|
+
* are always literal text here. Screens that also drive a list must test
|
|
15
|
+
* `isEditingKey` first and keep their vim-style navigation for non-edit mode.
|
|
16
|
+
*/
|
|
17
|
+
/** Split into grapheme clusters, so one visible letter is one cursor step. */
|
|
18
|
+
export declare function graphemes(value: string): string[];
|
|
19
|
+
/** Visible length in cursor steps, which is not `value.length`. */
|
|
20
|
+
export declare function graphemeLength(value: string): number;
|
|
21
|
+
/** Slice by grapheme offset. Both bounds are clamped. */
|
|
22
|
+
export declare function graphemeSlice(value: string, start: number, end?: number): string;
|
|
23
|
+
export interface LineState {
|
|
24
|
+
value: string;
|
|
25
|
+
/** Grapheme offset in `value`, from 0 to its grapheme length. */
|
|
26
|
+
cursor: number;
|
|
27
|
+
}
|
|
28
|
+
export declare function clampCursor(state: LineState): LineState;
|
|
29
|
+
/** A line with the cursor at the end — the usual starting point for a field. */
|
|
30
|
+
export declare function lineAtEnd(value: string): LineState;
|
|
31
|
+
export type LineEdit = {
|
|
32
|
+
kind: 'insert';
|
|
33
|
+
text: string;
|
|
34
|
+
} | {
|
|
35
|
+
kind: 'delete-back';
|
|
36
|
+
} | {
|
|
37
|
+
kind: 'delete-forward';
|
|
38
|
+
} | {
|
|
39
|
+
kind: 'delete-word-back';
|
|
40
|
+
} | {
|
|
41
|
+
kind: 'delete-to-start';
|
|
42
|
+
} | {
|
|
43
|
+
kind: 'delete-to-end';
|
|
44
|
+
} | {
|
|
45
|
+
kind: 'move';
|
|
46
|
+
delta: number;
|
|
47
|
+
} | {
|
|
48
|
+
kind: 'move-word';
|
|
49
|
+
delta: number;
|
|
50
|
+
} | {
|
|
51
|
+
kind: 'move-to-start';
|
|
52
|
+
} | {
|
|
53
|
+
kind: 'move-to-end';
|
|
54
|
+
} | {
|
|
55
|
+
kind: 'replace';
|
|
56
|
+
value: string;
|
|
57
|
+
};
|
|
58
|
+
export declare function applyLineEdit(state: LineState, edit: LineEdit): LineState;
|
|
59
|
+
/** The subset of Ink's `Key` this module reads. */
|
|
60
|
+
export interface EditorKey {
|
|
61
|
+
leftArrow?: boolean;
|
|
62
|
+
rightArrow?: boolean;
|
|
63
|
+
backspace?: boolean;
|
|
64
|
+
delete?: boolean;
|
|
65
|
+
ctrl?: boolean;
|
|
66
|
+
meta?: boolean;
|
|
67
|
+
shift?: boolean;
|
|
68
|
+
return?: boolean;
|
|
69
|
+
escape?: boolean;
|
|
70
|
+
tab?: boolean;
|
|
71
|
+
upArrow?: boolean;
|
|
72
|
+
downArrow?: boolean;
|
|
73
|
+
home?: boolean;
|
|
74
|
+
end?: boolean;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Map one Ink key event to an edit, or `undefined` when the screen owns the key.
|
|
78
|
+
*
|
|
79
|
+
* Ink reports ctrl-letters as the bare letter plus `key.ctrl`, so the control
|
|
80
|
+
* combinations are matched before the printable branch — otherwise ctrl-a types
|
|
81
|
+
* an "a". `key.return` is left alone: the terminal delivers ctrl-j as return, so
|
|
82
|
+
* it can never be an editing key.
|
|
83
|
+
*/
|
|
84
|
+
export declare function lineEditFor(input: string, key: EditorKey): LineEdit | undefined;
|
|
85
|
+
/** True when this key is text editing, so a list screen must not also act on it. */
|
|
86
|
+
export declare function isEditingKey(input: string, key: EditorKey): boolean;
|
|
87
|
+
/** What a field shows when it does not have the cursor. `•` per grapheme. */
|
|
88
|
+
export declare function displayValue(value: string, password?: boolean): string;
|
|
89
|
+
export interface RenderedLine {
|
|
90
|
+
before: string;
|
|
91
|
+
at: string;
|
|
92
|
+
after: string;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Split a line for rendering a block cursor. `password` masks per grapheme so
|
|
96
|
+
* the dot count matches what the user typed.
|
|
97
|
+
*/
|
|
98
|
+
export declare function renderLine(state: LineState, password?: boolean): RenderedLine;
|
|
99
|
+
//# sourceMappingURL=line-editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line-editor.d.ts","sourceRoot":"","sources":["../../../src/tui/model/line-editor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
//#region src/tui/model/line-editor.ts
|
|
2
|
+
/**
|
|
3
|
+
* One readline-shaped line editor for every text field in the TUI.
|
|
4
|
+
*
|
|
5
|
+
* Two rules the ad-hoc per-screen handlers kept getting wrong:
|
|
6
|
+
*
|
|
7
|
+
* 1. A cursor is a *grapheme* offset, not a UTF-16 offset. Vietnamese typed as
|
|
8
|
+
* NFD ("ắ" = ă + U+0301) is two code units, so slicing by index deletes half
|
|
9
|
+
* a letter and the rest of the line appears to shift.
|
|
10
|
+
* 2. Ink hands a pasted or IME-composed string to `useInput` as one multi-char
|
|
11
|
+
* `input`. Anything gated on `input.length === 1` silently drops it.
|
|
12
|
+
*
|
|
13
|
+
* Editing keys follow GNU readline emacs mode, which is what fzf, enquirer and
|
|
14
|
+
* @inquirer all implement; printable characters — digits, `j`, `k`, space —
|
|
15
|
+
* are always literal text here. Screens that also drive a list must test
|
|
16
|
+
* `isEditingKey` first and keep their vim-style navigation for non-edit mode.
|
|
17
|
+
*/
|
|
18
|
+
var segmenter = new Intl.Segmenter(void 0, { granularity: "grapheme" });
|
|
19
|
+
/** Drop C0 controls and DEL, so an unnamed escape sequence never enters a value. */
|
|
20
|
+
function stripControl(input) {
|
|
21
|
+
let out = "";
|
|
22
|
+
for (const ch of input) {
|
|
23
|
+
const code = ch.codePointAt(0) ?? 0;
|
|
24
|
+
if (code >= 32 && code !== 127) out += ch;
|
|
25
|
+
}
|
|
26
|
+
return out;
|
|
27
|
+
}
|
|
28
|
+
/** Split into grapheme clusters, so one visible letter is one cursor step. */
|
|
29
|
+
function graphemes(value) {
|
|
30
|
+
return Array.from(segmenter.segment(value), (s) => s.segment);
|
|
31
|
+
}
|
|
32
|
+
/** Visible length in cursor steps, which is not `value.length`. */
|
|
33
|
+
function graphemeLength(value) {
|
|
34
|
+
return graphemes(value).length;
|
|
35
|
+
}
|
|
36
|
+
function clampCursor(state) {
|
|
37
|
+
const max = graphemeLength(state.value);
|
|
38
|
+
const cursor = Math.min(Math.max(0, state.cursor), max);
|
|
39
|
+
return cursor === state.cursor ? state : {
|
|
40
|
+
...state,
|
|
41
|
+
cursor
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/** A line with the cursor at the end — the usual starting point for a field. */
|
|
45
|
+
function lineAtEnd(value) {
|
|
46
|
+
return {
|
|
47
|
+
value,
|
|
48
|
+
cursor: graphemeLength(value)
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/** Word boundaries follow readline: runs of non-space separated by space. */
|
|
52
|
+
function wordStart(cells, from) {
|
|
53
|
+
let i = from;
|
|
54
|
+
while (i > 0 && cells[i - 1]?.trim() === "") i -= 1;
|
|
55
|
+
while (i > 0 && cells[i - 1]?.trim() !== "") i -= 1;
|
|
56
|
+
return i;
|
|
57
|
+
}
|
|
58
|
+
function wordEnd(cells, from) {
|
|
59
|
+
let i = from;
|
|
60
|
+
while (i < cells.length && cells[i]?.trim() === "") i += 1;
|
|
61
|
+
while (i < cells.length && cells[i]?.trim() !== "") i += 1;
|
|
62
|
+
return i;
|
|
63
|
+
}
|
|
64
|
+
function applyLineEdit(state, edit) {
|
|
65
|
+
const cells = graphemes(state.value);
|
|
66
|
+
const at = Math.min(Math.max(0, state.cursor), cells.length);
|
|
67
|
+
const join = (next, cursor) => clampCursor({
|
|
68
|
+
value: next.join(""),
|
|
69
|
+
cursor
|
|
70
|
+
});
|
|
71
|
+
switch (edit.kind) {
|
|
72
|
+
case "insert": {
|
|
73
|
+
if (!edit.text) return state;
|
|
74
|
+
const added = graphemes(edit.text);
|
|
75
|
+
return join([
|
|
76
|
+
...cells.slice(0, at),
|
|
77
|
+
...added,
|
|
78
|
+
...cells.slice(at)
|
|
79
|
+
], at + added.length);
|
|
80
|
+
}
|
|
81
|
+
case "delete-back": return at === 0 ? state : join([...cells.slice(0, at - 1), ...cells.slice(at)], at - 1);
|
|
82
|
+
case "delete-forward": return at >= cells.length ? state : join([...cells.slice(0, at), ...cells.slice(at + 1)], at);
|
|
83
|
+
case "delete-word-back": {
|
|
84
|
+
const start = wordStart(cells, at);
|
|
85
|
+
return start === at ? state : join([...cells.slice(0, start), ...cells.slice(at)], start);
|
|
86
|
+
}
|
|
87
|
+
case "delete-to-start": return at === 0 ? state : join(cells.slice(at), 0);
|
|
88
|
+
case "delete-to-end": return at >= cells.length ? state : join(cells.slice(0, at), at);
|
|
89
|
+
case "move": return clampCursor({
|
|
90
|
+
...state,
|
|
91
|
+
cursor: at + edit.delta
|
|
92
|
+
});
|
|
93
|
+
case "move-word": return clampCursor({
|
|
94
|
+
...state,
|
|
95
|
+
cursor: edit.delta < 0 ? wordStart(cells, at) : wordEnd(cells, at)
|
|
96
|
+
});
|
|
97
|
+
case "move-to-start": return {
|
|
98
|
+
...state,
|
|
99
|
+
cursor: 0
|
|
100
|
+
};
|
|
101
|
+
case "move-to-end": return {
|
|
102
|
+
...state,
|
|
103
|
+
cursor: cells.length
|
|
104
|
+
};
|
|
105
|
+
case "replace": return lineAtEnd(edit.value);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Map one Ink key event to an edit, or `undefined` when the screen owns the key.
|
|
110
|
+
*
|
|
111
|
+
* Ink reports ctrl-letters as the bare letter plus `key.ctrl`, so the control
|
|
112
|
+
* combinations are matched before the printable branch — otherwise ctrl-a types
|
|
113
|
+
* an "a". `key.return` is left alone: the terminal delivers ctrl-j as return, so
|
|
114
|
+
* it can never be an editing key.
|
|
115
|
+
*/
|
|
116
|
+
function lineEditFor(input, key) {
|
|
117
|
+
if (key.escape || key.return || key.tab || key.upArrow || key.downArrow) return;
|
|
118
|
+
if (key.backspace) return { kind: "delete-back" };
|
|
119
|
+
if (key.delete) return { kind: "delete-forward" };
|
|
120
|
+
if (key.home) return { kind: "move-to-start" };
|
|
121
|
+
if (key.end) return { kind: "move-to-end" };
|
|
122
|
+
if (key.ctrl) switch (input) {
|
|
123
|
+
case "a": return { kind: "move-to-start" };
|
|
124
|
+
case "e": return { kind: "move-to-end" };
|
|
125
|
+
case "b": return {
|
|
126
|
+
kind: "move",
|
|
127
|
+
delta: -1
|
|
128
|
+
};
|
|
129
|
+
case "f": return {
|
|
130
|
+
kind: "move",
|
|
131
|
+
delta: 1
|
|
132
|
+
};
|
|
133
|
+
case "w": return { kind: "delete-word-back" };
|
|
134
|
+
case "u": return { kind: "delete-to-start" };
|
|
135
|
+
case "k": return { kind: "delete-to-end" };
|
|
136
|
+
case "d": return { kind: "delete-forward" };
|
|
137
|
+
case "h": return { kind: "delete-back" };
|
|
138
|
+
default: return;
|
|
139
|
+
}
|
|
140
|
+
if (key.meta) switch (input) {
|
|
141
|
+
case "b": return {
|
|
142
|
+
kind: "move-word",
|
|
143
|
+
delta: -1
|
|
144
|
+
};
|
|
145
|
+
case "f": return {
|
|
146
|
+
kind: "move-word",
|
|
147
|
+
delta: 1
|
|
148
|
+
};
|
|
149
|
+
default: return;
|
|
150
|
+
}
|
|
151
|
+
if (key.leftArrow) return {
|
|
152
|
+
kind: "move",
|
|
153
|
+
delta: -1
|
|
154
|
+
};
|
|
155
|
+
if (key.rightArrow) return {
|
|
156
|
+
kind: "move",
|
|
157
|
+
delta: 1
|
|
158
|
+
};
|
|
159
|
+
const text = stripControl(input);
|
|
160
|
+
if (text) return {
|
|
161
|
+
kind: "insert",
|
|
162
|
+
text
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/** What a field shows when it does not have the cursor. `•` per grapheme. */
|
|
166
|
+
function displayValue(value, password = false) {
|
|
167
|
+
return password ? graphemes(value).map(() => "•").join("") : value;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Split a line for rendering a block cursor. `password` masks per grapheme so
|
|
171
|
+
* the dot count matches what the user typed.
|
|
172
|
+
*/
|
|
173
|
+
function renderLine(state, password = false) {
|
|
174
|
+
const cells = graphemes(state.value);
|
|
175
|
+
const shown = password ? cells.map(() => "•") : cells;
|
|
176
|
+
const at = Math.min(Math.max(0, state.cursor), shown.length);
|
|
177
|
+
return {
|
|
178
|
+
before: shown.slice(0, at).join(""),
|
|
179
|
+
at: shown[at] ?? " ",
|
|
180
|
+
after: shown.slice(at + 1).join("")
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
//#endregion
|
|
184
|
+
export { applyLineEdit, clampCursor, displayValue, graphemeLength, graphemes, lineAtEnd, lineEditFor, renderLine };
|
|
185
|
+
|
|
186
|
+
//# sourceMappingURL=line-editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"line-editor.js","names":[],"sources":["../../../src/tui/model/line-editor.ts"],"sourcesContent":["/**\n * One readline-shaped line editor for every text field in the TUI.\n *\n * Two rules the ad-hoc per-screen handlers kept getting wrong:\n *\n * 1. A cursor is a *grapheme* offset, not a UTF-16 offset. Vietnamese typed as\n * NFD (\"ắ\" = ă + U+0301) is two code units, so slicing by index deletes half\n * a letter and the rest of the line appears to shift.\n * 2. Ink hands a pasted or IME-composed string to `useInput` as one multi-char\n * `input`. Anything gated on `input.length === 1` silently drops it.\n *\n * Editing keys follow GNU readline emacs mode, which is what fzf, enquirer and\n * @inquirer all implement; printable characters — digits, `j`, `k`, space —\n * are always literal text here. Screens that also drive a list must test\n * `isEditingKey` first and keep their vim-style navigation for non-edit mode.\n */\n\nconst segmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });\n\n/** Drop C0 controls and DEL, so an unnamed escape sequence never enters a value. */\nfunction stripControl(input: string): string {\n let out = '';\n for (const ch of input) {\n const code = ch.codePointAt(0) ?? 0;\n if (code >= 0x20 && code !== 0x7f) {\n out += ch;\n }\n }\n return out;\n}\n\n/** Split into grapheme clusters, so one visible letter is one cursor step. */\nexport function graphemes(value: string): string[] {\n return Array.from(segmenter.segment(value), (s) => s.segment);\n}\n\n/** Visible length in cursor steps, which is not `value.length`. */\nexport function graphemeLength(value: string): number {\n return graphemes(value).length;\n}\n\n/** Slice by grapheme offset. Both bounds are clamped. */\nexport function graphemeSlice(value: string, start: number, end?: number): string {\n return graphemes(value).slice(start, end).join('');\n}\n\nexport interface LineState {\n value: string;\n /** Grapheme offset in `value`, from 0 to its grapheme length. */\n cursor: number;\n}\n\nexport function clampCursor(state: LineState): LineState {\n const max = graphemeLength(state.value);\n const cursor = Math.min(Math.max(0, state.cursor), max);\n return cursor === state.cursor ? state : { ...state, cursor };\n}\n\n/** A line with the cursor at the end — the usual starting point for a field. */\nexport function lineAtEnd(value: string): LineState {\n return { value, cursor: graphemeLength(value) };\n}\n\n/** Word boundaries follow readline: runs of non-space separated by space. */\nfunction wordStart(cells: string[], from: number): number {\n let i = from;\n while (i > 0 && cells[i - 1]?.trim() === '') {\n i -= 1;\n }\n while (i > 0 && cells[i - 1]?.trim() !== '') {\n i -= 1;\n }\n return i;\n}\n\nfunction wordEnd(cells: string[], from: number): number {\n let i = from;\n while (i < cells.length && cells[i]?.trim() === '') {\n i += 1;\n }\n while (i < cells.length && cells[i]?.trim() !== '') {\n i += 1;\n }\n return i;\n}\n\nexport type LineEdit =\n | { kind: 'insert'; text: string }\n | { kind: 'delete-back' }\n | { kind: 'delete-forward' }\n | { kind: 'delete-word-back' }\n | { kind: 'delete-to-start' }\n | { kind: 'delete-to-end' }\n | { kind: 'move'; delta: number }\n | { kind: 'move-word'; delta: number }\n | { kind: 'move-to-start' }\n | { kind: 'move-to-end' }\n | { kind: 'replace'; value: string };\n\nexport function applyLineEdit(state: LineState, edit: LineEdit): LineState {\n const cells = graphemes(state.value);\n const at = Math.min(Math.max(0, state.cursor), cells.length);\n const join = (next: string[], cursor: number): LineState =>\n clampCursor({ value: next.join(''), cursor });\n\n switch (edit.kind) {\n case 'insert': {\n if (!edit.text) {\n return state;\n }\n const added = graphemes(edit.text);\n return join([...cells.slice(0, at), ...added, ...cells.slice(at)], at + added.length);\n }\n case 'delete-back':\n return at === 0 ? state : join([...cells.slice(0, at - 1), ...cells.slice(at)], at - 1);\n case 'delete-forward':\n return at >= cells.length ? state : join([...cells.slice(0, at), ...cells.slice(at + 1)], at);\n case 'delete-word-back': {\n const start = wordStart(cells, at);\n return start === at ? state : join([...cells.slice(0, start), ...cells.slice(at)], start);\n }\n case 'delete-to-start':\n return at === 0 ? state : join(cells.slice(at), 0);\n case 'delete-to-end':\n return at >= cells.length ? state : join(cells.slice(0, at), at);\n case 'move':\n return clampCursor({ ...state, cursor: at + edit.delta });\n case 'move-word':\n return clampCursor({\n ...state,\n cursor: edit.delta < 0 ? wordStart(cells, at) : wordEnd(cells, at),\n });\n case 'move-to-start':\n return { ...state, cursor: 0 };\n case 'move-to-end':\n return { ...state, cursor: cells.length };\n case 'replace':\n return lineAtEnd(edit.value);\n }\n}\n\n/** The subset of Ink's `Key` this module reads. */\nexport interface EditorKey {\n leftArrow?: boolean;\n rightArrow?: boolean;\n backspace?: boolean;\n delete?: boolean;\n ctrl?: boolean;\n meta?: boolean;\n shift?: boolean;\n return?: boolean;\n escape?: boolean;\n tab?: boolean;\n upArrow?: boolean;\n downArrow?: boolean;\n home?: boolean;\n end?: boolean;\n}\n\n/**\n * Map one Ink key event to an edit, or `undefined` when the screen owns the key.\n *\n * Ink reports ctrl-letters as the bare letter plus `key.ctrl`, so the control\n * combinations are matched before the printable branch — otherwise ctrl-a types\n * an \"a\". `key.return` is left alone: the terminal delivers ctrl-j as return, so\n * it can never be an editing key.\n */\nexport function lineEditFor(input: string, key: EditorKey): LineEdit | undefined {\n if (key.escape || key.return || key.tab || key.upArrow || key.downArrow) {\n return undefined;\n }\n if (key.backspace) {\n return { kind: 'delete-back' };\n }\n if (key.delete) {\n // Ink names the DEL byte (0x7f) `backspace`, so `delete` really is the\n // forward-delete escape sequence and must not erase backwards.\n return { kind: 'delete-forward' };\n }\n if (key.home) {\n return { kind: 'move-to-start' };\n }\n if (key.end) {\n return { kind: 'move-to-end' };\n }\n if (key.ctrl) {\n switch (input) {\n case 'a':\n return { kind: 'move-to-start' };\n case 'e':\n return { kind: 'move-to-end' };\n case 'b':\n return { kind: 'move', delta: -1 };\n case 'f':\n return { kind: 'move', delta: 1 };\n case 'w':\n return { kind: 'delete-word-back' };\n case 'u':\n return { kind: 'delete-to-start' };\n case 'k':\n return { kind: 'delete-to-end' };\n case 'd':\n return { kind: 'delete-forward' };\n case 'h':\n return { kind: 'delete-back' };\n default:\n return undefined;\n }\n }\n if (key.meta) {\n switch (input) {\n case 'b':\n return { kind: 'move-word', delta: -1 };\n case 'f':\n return { kind: 'move-word', delta: 1 };\n default:\n return undefined;\n }\n }\n if (key.leftArrow) {\n return { kind: 'move', delta: -1 };\n }\n if (key.rightArrow) {\n return { kind: 'move', delta: 1 };\n }\n // Printable text, including a whole pasted or IME-composed string. Control\n // characters other than the ones handled above are dropped rather than\n // inserted, so a stray escape sequence cannot corrupt the value.\n const text = stripControl(input);\n if (text) {\n return { kind: 'insert', text };\n }\n return undefined;\n}\n\n/** True when this key is text editing, so a list screen must not also act on it. */\nexport function isEditingKey(input: string, key: EditorKey): boolean {\n return lineEditFor(input, key) !== undefined;\n}\n\n/** What a field shows when it does not have the cursor. `•` per grapheme. */\nexport function displayValue(value: string, password = false): string {\n return password\n ? graphemes(value)\n .map(() => '•')\n .join('')\n : value;\n}\n\nexport interface RenderedLine {\n before: string;\n at: string;\n after: string;\n}\n\n/**\n * Split a line for rendering a block cursor. `password` masks per grapheme so\n * the dot count matches what the user typed.\n */\nexport function renderLine(state: LineState, password = false): RenderedLine {\n const cells = graphemes(state.value);\n const shown = password ? cells.map(() => '•') : cells;\n const at = Math.min(Math.max(0, state.cursor), shown.length);\n return {\n before: shown.slice(0, at).join(''),\n at: shown[at] ?? ' ',\n after: shown.slice(at + 1).join(''),\n };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { AnyPickApp } from '../../core/app.js';
|
|
2
|
+
/**
|
|
3
|
+
* Short UI label for an app/client.
|
|
4
|
+
*
|
|
5
|
+
* Prefer the adapter's `shortName` / `name` via `fallback`. Never hardcode
|
|
6
|
+
* built-in client ids — third-party clients would otherwise show raw slugs
|
|
7
|
+
* only when the switch misses them.
|
|
8
|
+
*/
|
|
9
|
+
export declare function shortAppName(clientId: string, fallback?: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Short UI label for a tool/provider.
|
|
12
|
+
*
|
|
13
|
+
* Callers pass the provider's own `shortName ?? name` as `fallback`, so a
|
|
14
|
+
* registered provider supplies its own label. The switch that used to live here
|
|
15
|
+
* hardcoded the built-in ids and left third-party providers showing raw slugs.
|
|
16
|
+
*/
|
|
17
|
+
export declare function shortToolName(providerId: string, fallback?: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* A provider's display name, falling back to its id.
|
|
20
|
+
*
|
|
21
|
+
* Screens reached from a stale binding or a removed plugin may name a provider
|
|
22
|
+
* the registry no longer has, and a label is never worth throwing over.
|
|
23
|
+
*/
|
|
24
|
+
export declare function providerDisplayName(app: AnyPickApp, providerId?: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Apps that can use this proxy source (transport allows managed/external proxy).
|
|
27
|
+
*/
|
|
28
|
+
//# sourceMappingURL=names.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../../src/tui/model/names.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAExE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAShF;AAED;;GAEG"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
//#region src/tui/model/names.ts
|
|
2
|
+
/**
|
|
3
|
+
* Short UI label for an app/client.
|
|
4
|
+
*
|
|
5
|
+
* Prefer the adapter's `shortName` / `name` via `fallback`. Never hardcode
|
|
6
|
+
* built-in client ids — third-party clients would otherwise show raw slugs
|
|
7
|
+
* only when the switch misses them.
|
|
8
|
+
*/
|
|
9
|
+
function shortAppName(clientId, fallback) {
|
|
10
|
+
return fallback ?? clientId;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Short UI label for a tool/provider.
|
|
14
|
+
*
|
|
15
|
+
* Callers pass the provider's own `shortName ?? name` as `fallback`, so a
|
|
16
|
+
* registered provider supplies its own label. The switch that used to live here
|
|
17
|
+
* hardcoded the built-in ids and left third-party providers showing raw slugs.
|
|
18
|
+
*/
|
|
19
|
+
function shortToolName(providerId, fallback) {
|
|
20
|
+
return fallback ?? providerId;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* A provider's display name, falling back to its id.
|
|
24
|
+
*
|
|
25
|
+
* Screens reached from a stale binding or a removed plugin may name a provider
|
|
26
|
+
* the registry no longer has, and a label is never worth throwing over.
|
|
27
|
+
*/
|
|
28
|
+
function providerDisplayName(app, providerId) {
|
|
29
|
+
if (!providerId) return "";
|
|
30
|
+
try {
|
|
31
|
+
return app.accounts.provider(providerId).name;
|
|
32
|
+
} catch {
|
|
33
|
+
return providerId;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Apps that can use this proxy source (transport allows managed/external proxy).
|
|
38
|
+
*/
|
|
39
|
+
//#endregion
|
|
40
|
+
export { providerDisplayName, shortAppName, shortToolName };
|
|
41
|
+
|
|
42
|
+
//# sourceMappingURL=names.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"names.js","names":[],"sources":["../../../src/tui/model/names.ts"],"sourcesContent":["import type { AnyPickApp } from '../../core/app';\n\n/**\n * Short UI label for an app/client.\n *\n * Prefer the adapter's `shortName` / `name` via `fallback`. Never hardcode\n * built-in client ids — third-party clients would otherwise show raw slugs\n * only when the switch misses them.\n */\nexport function shortAppName(clientId: string, fallback?: string): string {\n return fallback ?? clientId;\n}\n\n/**\n * Short UI label for a tool/provider.\n *\n * Callers pass the provider's own `shortName ?? name` as `fallback`, so a\n * registered provider supplies its own label. The switch that used to live here\n * hardcoded the built-in ids and left third-party providers showing raw slugs.\n */\nexport function shortToolName(providerId: string, fallback?: string): string {\n return fallback ?? providerId;\n}\n\n/**\n * A provider's display name, falling back to its id.\n *\n * Screens reached from a stale binding or a removed plugin may name a provider\n * the registry no longer has, and a label is never worth throwing over.\n */\nexport function providerDisplayName(app: AnyPickApp, providerId?: string): string {\n if (!providerId) {\n return '';\n }\n try {\n return app.accounts.provider(providerId).name;\n } catch {\n return providerId;\n }\n}\n\n/**\n * Apps that can use this proxy source (transport allows managed/external proxy).\n */\n"],"mappings":";;;;;;;;AASA,SAAgB,aAAa,UAAkB,UAA2B;CACxE,OAAO,YAAY;AACrB;;;;;;;;AASA,SAAgB,cAAc,YAAoB,UAA2B;CAC3E,OAAO,YAAY;AACrB;;;;;;;AAQA,SAAgB,oBAAoB,KAAiB,YAA6B;CAChF,IAAI,CAAC,YACH,OAAO;CAET,IAAI;EACF,OAAO,IAAI,SAAS,SAAS,UAAU,CAAC,CAAC;CAC3C,QAAQ;EACN,OAAO;CACT;AACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AnyPickApp } from '../../core/app.js';
|
|
2
|
+
import type { SwitchResult } from '../../core/service.js';
|
|
3
|
+
import type { OperationReceipt, ProviderPoolModel, AnyPickPreviewModel } from './types.js';
|
|
4
|
+
export declare function loadProviderPool(app: AnyPickApp, providerId: string, nowMs?: number): Promise<ProviderPoolModel>;
|
|
5
|
+
export declare function buildAnyPickPreview(app: AnyPickApp, providerId: string, targetName: string): Promise<AnyPickPreviewModel>;
|
|
6
|
+
export declare function receiptFromSwitchResult(result: SwitchResult): OperationReceipt;
|
|
7
|
+
/**
|
|
8
|
+
* All accounts on proxy-capable providers (not only enabled/active).
|
|
9
|
+
* Also surfaces multi pools and unsaved live logins so the board is never "empty" when something is usable.
|
|
10
|
+
*/
|
|
11
|
+
//# sourceMappingURL=pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../src/tui/model/pool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,OAAO,KAAK,EAEV,gBAAgB,EAEhB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AASjB,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,UAAU,EACf,UAAU,EAAE,MAAM,EAClB,KAAK,SAAa,GACjB,OAAO,CAAC,iBAAiB,CAAC,CA2E5B;AAED,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,UAAU,EACf,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,mBAAmB,CAAC,CAsH9B;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAiB9E;AAED;;;GAGG"}
|