anypick 1.0.0 → 1.1.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/README.md +16 -582
- package/bin/anypick.js +249 -0
- package/package.json +14 -106
- package/dist/adapters.d.ts +0 -4
- package/dist/adapters.d.ts.map +0 -1
- package/dist/adapters.js +0 -2
- package/dist/catalog/model-fetch.d.ts +0 -34
- package/dist/catalog/model-fetch.d.ts.map +0 -1
- package/dist/catalog/model-fetch.js +0 -99
- package/dist/catalog/model-fetch.js.map +0 -1
- package/dist/catalog/providers.d.ts +0 -42
- package/dist/catalog/providers.d.ts.map +0 -1
- package/dist/catalog/providers.js +0 -424
- package/dist/catalog/providers.js.map +0 -1
- package/dist/cli/bootstrap.d.ts +0 -3
- package/dist/cli/bootstrap.d.ts.map +0 -1
- package/dist/cli/bootstrap.js +0 -78
- package/dist/cli/bootstrap.js.map +0 -1
- package/dist/cli/commands.d.ts +0 -29
- package/dist/cli/commands.d.ts.map +0 -1
- package/dist/cli/commands.js +0 -1043
- package/dist/cli/commands.js.map +0 -1
- package/dist/cli/completion.d.ts +0 -6
- package/dist/cli/completion.d.ts.map +0 -1
- package/dist/cli/completion.js +0 -202
- package/dist/cli/completion.js.map +0 -1
- package/dist/cli/errors.d.ts +0 -20
- package/dist/cli/errors.d.ts.map +0 -1
- package/dist/cli/errors.js +0 -47
- package/dist/cli/errors.js.map +0 -1
- package/dist/cli/format.d.ts +0 -6
- package/dist/cli/format.d.ts.map +0 -1
- package/dist/cli/format.js +0 -75
- package/dist/cli/format.js.map +0 -1
- package/dist/cli/help.d.ts +0 -6
- package/dist/cli/help.d.ts.map +0 -1
- package/dist/cli/help.js +0 -66
- package/dist/cli/help.js.map +0 -1
- package/dist/cli/interactive-accounts.d.ts +0 -3
- package/dist/cli/interactive-accounts.d.ts.map +0 -1
- package/dist/cli/interactive-accounts.js +0 -86
- package/dist/cli/interactive-accounts.js.map +0 -1
- package/dist/cli/interactive-maintenance.d.ts +0 -4
- package/dist/cli/interactive-maintenance.d.ts.map +0 -1
- package/dist/cli/interactive-maintenance.js +0 -30
- package/dist/cli/interactive-maintenance.js.map +0 -1
- package/dist/cli/interactive.d.ts +0 -14
- package/dist/cli/interactive.d.ts.map +0 -1
- package/dist/cli/interactive.js +0 -242
- package/dist/cli/interactive.js.map +0 -1
- package/dist/cli/launch-client.d.ts +0 -18
- package/dist/cli/launch-client.d.ts.map +0 -1
- package/dist/cli/launch-client.js +0 -117
- package/dist/cli/launch-client.js.map +0 -1
- package/dist/cli/launcher-model.d.ts +0 -64
- package/dist/cli/launcher-model.d.ts.map +0 -1
- package/dist/cli/launcher-model.js +0 -200
- package/dist/cli/launcher-model.js.map +0 -1
- package/dist/cli/launcher-render.d.ts +0 -22
- package/dist/cli/launcher-render.d.ts.map +0 -1
- package/dist/cli/launcher-render.js +0 -113
- package/dist/cli/launcher-render.js.map +0 -1
- package/dist/cli/launcher.d.ts +0 -27
- package/dist/cli/launcher.d.ts.map +0 -1
- package/dist/cli/launcher.js +0 -93
- package/dist/cli/launcher.js.map +0 -1
- package/dist/cli/local-health.d.ts +0 -17
- package/dist/cli/local-health.d.ts.map +0 -1
- package/dist/cli/local-health.js +0 -31
- package/dist/cli/local-health.js.map +0 -1
- package/dist/cli/plugin-commands.d.ts +0 -4
- package/dist/cli/plugin-commands.d.ts.map +0 -1
- package/dist/cli/plugin-commands.js +0 -160
- package/dist/cli/plugin-commands.js.map +0 -1
- package/dist/cli/primary.d.ts +0 -18
- package/dist/cli/primary.d.ts.map +0 -1
- package/dist/cli/primary.js +0 -593
- package/dist/cli/primary.js.map +0 -1
- package/dist/cli/render-util.d.ts +0 -24
- package/dist/cli/render-util.d.ts.map +0 -1
- package/dist/cli/render-util.js +0 -58
- package/dist/cli/render-util.js.map +0 -1
- package/dist/cli/ux.d.ts +0 -43
- package/dist/cli/ux.d.ts.map +0 -1
- package/dist/cli/ux.js +0 -114
- package/dist/cli/ux.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -35
- package/dist/cli.js.map +0 -1
- package/dist/clients/claude-client-apply.d.ts +0 -8
- package/dist/clients/claude-client-apply.d.ts.map +0 -1
- package/dist/clients/claude-client-apply.js +0 -108
- package/dist/clients/claude-client-apply.js.map +0 -1
- package/dist/clients/claude-code.d.ts +0 -5
- package/dist/clients/claude-code.d.ts.map +0 -1
- package/dist/clients/claude-code.js +0 -189
- package/dist/clients/claude-code.js.map +0 -1
- package/dist/clients/claude-settings-guard.d.ts +0 -18
- package/dist/clients/claude-settings-guard.d.ts.map +0 -1
- package/dist/clients/codex-desktop-catalog.d.ts +0 -67
- package/dist/clients/codex-desktop-catalog.d.ts.map +0 -1
- package/dist/clients/codex-desktop-catalog.js +0 -212
- package/dist/clients/codex-desktop-catalog.js.map +0 -1
- package/dist/clients/codex.d.ts +0 -181
- package/dist/clients/codex.d.ts.map +0 -1
- package/dist/clients/codex.js +0 -783
- package/dist/clients/codex.js.map +0 -1
- package/dist/clients/env-files.d.ts +0 -14
- package/dist/clients/env-files.d.ts.map +0 -1
- package/dist/clients/env-files.js +0 -50
- package/dist/clients/env-files.js.map +0 -1
- package/dist/clients/gemini-client-utils.d.ts +0 -4
- package/dist/clients/gemini-client-utils.d.ts.map +0 -1
- package/dist/clients/gemini-client-utils.js +0 -33
- package/dist/clients/gemini-client-utils.js.map +0 -1
- package/dist/clients/gemini.d.ts +0 -16
- package/dist/clients/gemini.d.ts.map +0 -1
- package/dist/clients/gemini.js +0 -233
- package/dist/clients/gemini.js.map +0 -1
- package/dist/clients/index.d.ts +0 -14
- package/dist/clients/index.d.ts.map +0 -1
- package/dist/clients/index.js +0 -18
- package/dist/clients/index.js.map +0 -1
- package/dist/clients/isolation.d.ts +0 -28
- package/dist/clients/isolation.d.ts.map +0 -1
- package/dist/clients/isolation.js +0 -131
- package/dist/clients/isolation.js.map +0 -1
- package/dist/clients/kiro.d.ts +0 -10
- package/dist/clients/kiro.d.ts.map +0 -1
- package/dist/clients/kiro.js +0 -168
- package/dist/clients/kiro.js.map +0 -1
- package/dist/clients/model-roles.d.ts +0 -58
- package/dist/clients/model-roles.d.ts.map +0 -1
- package/dist/clients/model-roles.js +0 -139
- package/dist/clients/model-roles.js.map +0 -1
- package/dist/clients/registry.d.ts +0 -7
- package/dist/clients/registry.d.ts.map +0 -1
- package/dist/clients/registry.js +0 -16
- package/dist/clients/registry.js.map +0 -1
- package/dist/clients/resolve.d.ts +0 -27
- package/dist/clients/resolve.d.ts.map +0 -1
- package/dist/clients/resolve.js +0 -49
- package/dist/clients/resolve.js.map +0 -1
- package/dist/core/account-codec.d.ts +0 -32
- package/dist/core/account-codec.d.ts.map +0 -1
- package/dist/core/account-codec.js +0 -134
- package/dist/core/account-codec.js.map +0 -1
- package/dist/core/account-transfer.d.ts +0 -20
- package/dist/core/account-transfer.d.ts.map +0 -1
- package/dist/core/account-transfer.js +0 -136
- package/dist/core/account-transfer.js.map +0 -1
- package/dist/core/activation-executor.d.ts +0 -72
- package/dist/core/activation-executor.d.ts.map +0 -1
- package/dist/core/activation-executor.js +0 -690
- package/dist/core/activation-executor.js.map +0 -1
- package/dist/core/activation-models.d.ts +0 -6
- package/dist/core/activation-models.d.ts.map +0 -1
- package/dist/core/activation-models.js +0 -33
- package/dist/core/activation-models.js.map +0 -1
- package/dist/core/activation-planner.d.ts +0 -38
- package/dist/core/activation-planner.d.ts.map +0 -1
- package/dist/core/activation-planner.js +0 -248
- package/dist/core/activation-planner.js.map +0 -1
- package/dist/core/activation-protocol.d.ts +0 -3
- package/dist/core/activation-protocol.d.ts.map +0 -1
- package/dist/core/activation-protocol.js +0 -9
- package/dist/core/activation-protocol.js.map +0 -1
- package/dist/core/activation-transport.d.ts +0 -15
- package/dist/core/activation-transport.d.ts.map +0 -1
- package/dist/core/activation-transport.js +0 -23
- package/dist/core/activation-transport.js.map +0 -1
- package/dist/core/app.d.ts +0 -149
- package/dist/core/app.d.ts.map +0 -1
- package/dist/core/app.js +0 -372
- package/dist/core/app.js.map +0 -1
- package/dist/core/binding-service.d.ts +0 -93
- package/dist/core/binding-service.d.ts.map +0 -1
- package/dist/core/binding-service.js +0 -281
- package/dist/core/binding-service.js.map +0 -1
- package/dist/core/binding-store.d.ts +0 -23
- package/dist/core/binding-store.d.ts.map +0 -1
- package/dist/core/binding-store.js +0 -154
- package/dist/core/binding-store.js.map +0 -1
- package/dist/core/brand.d.ts +0 -18
- package/dist/core/brand.d.ts.map +0 -1
- package/dist/core/brand.js +0 -22
- package/dist/core/brand.js.map +0 -1
- package/dist/core/capabilities.d.ts +0 -30
- package/dist/core/capabilities.d.ts.map +0 -1
- package/dist/core/capabilities.js +0 -27
- package/dist/core/capabilities.js.map +0 -1
- package/dist/core/client-state-store.d.ts +0 -17
- package/dist/core/client-state-store.d.ts.map +0 -1
- package/dist/core/client-state-store.js +0 -47
- package/dist/core/client-state-store.js.map +0 -1
- package/dist/core/codec/account.d.ts +0 -52
- package/dist/core/codec/account.d.ts.map +0 -1
- package/dist/core/codec/account.js +0 -69
- package/dist/core/codec/account.js.map +0 -1
- package/dist/core/codec/bindings.d.ts +0 -38
- package/dist/core/codec/bindings.d.ts.map +0 -1
- package/dist/core/codec/bindings.js +0 -79
- package/dist/core/codec/bindings.js.map +0 -1
- package/dist/core/codec/operations.d.ts +0 -36
- package/dist/core/codec/operations.d.ts.map +0 -1
- package/dist/core/codec/operations.js +0 -82
- package/dist/core/codec/operations.js.map +0 -1
- package/dist/core/codec/primitives.d.ts +0 -59
- package/dist/core/codec/primitives.d.ts.map +0 -1
- package/dist/core/codec/primitives.js +0 -123
- package/dist/core/codec/primitives.js.map +0 -1
- package/dist/core/codec/proxy-hub.d.ts +0 -43
- package/dist/core/codec/proxy-hub.d.ts.map +0 -1
- package/dist/core/codec/proxy-hub.js +0 -69
- package/dist/core/codec/proxy-hub.js.map +0 -1
- package/dist/core/codec/runtime.d.ts +0 -41
- package/dist/core/codec/runtime.d.ts.map +0 -1
- package/dist/core/codec/runtime.js +0 -66
- package/dist/core/codec/runtime.js.map +0 -1
- package/dist/core/codec.d.ts +0 -43
- package/dist/core/codec.d.ts.map +0 -1
- package/dist/core/codec.js +0 -69
- package/dist/core/codec.js.map +0 -1
- package/dist/core/codex-live-config.d.ts +0 -92
- package/dist/core/codex-live-config.d.ts.map +0 -1
- package/dist/core/codex-live-config.js +0 -263
- package/dist/core/codex-live-config.js.map +0 -1
- package/dist/core/config-service.d.ts +0 -35
- package/dist/core/config-service.d.ts.map +0 -1
- package/dist/core/config-service.js +0 -87
- package/dist/core/config-service.js.map +0 -1
- package/dist/core/config.d.ts +0 -14
- package/dist/core/config.d.ts.map +0 -1
- package/dist/core/config.js +0 -45
- package/dist/core/config.js.map +0 -1
- package/dist/core/db-schema.d.ts +0 -30
- package/dist/core/db-schema.d.ts.map +0 -1
- package/dist/core/db-schema.js +0 -278
- package/dist/core/db-schema.js.map +0 -1
- package/dist/core/db.d.ts +0 -72
- package/dist/core/db.d.ts.map +0 -1
- package/dist/core/db.js +0 -192
- package/dist/core/db.js.map +0 -1
- package/dist/core/doctor-fixes.d.ts +0 -3
- package/dist/core/doctor-fixes.d.ts.map +0 -1
- package/dist/core/doctor-fixes.js +0 -102
- package/dist/core/doctor-fixes.js.map +0 -1
- package/dist/core/doctor-format.d.ts +0 -10
- package/dist/core/doctor-format.d.ts.map +0 -1
- package/dist/core/doctor-format.js +0 -45
- package/dist/core/doctor-format.js.map +0 -1
- package/dist/core/doctor-report.d.ts +0 -3
- package/dist/core/doctor-report.d.ts.map +0 -1
- package/dist/core/doctor-report.js +0 -174
- package/dist/core/doctor-report.js.map +0 -1
- package/dist/core/doctor-scan.d.ts +0 -7
- package/dist/core/doctor-scan.d.ts.map +0 -1
- package/dist/core/doctor-scan.js +0 -139
- package/dist/core/doctor-scan.js.map +0 -1
- package/dist/core/doctor-types.d.ts +0 -89
- package/dist/core/doctor-types.d.ts.map +0 -1
- package/dist/core/doctor-types.js +0 -14
- package/dist/core/doctor-types.js.map +0 -1
- package/dist/core/doctor-utils.d.ts +0 -3
- package/dist/core/doctor-utils.d.ts.map +0 -1
- package/dist/core/doctor-utils.js +0 -36
- package/dist/core/doctor-utils.js.map +0 -1
- package/dist/core/doctor.d.ts +0 -14
- package/dist/core/doctor.d.ts.map +0 -1
- package/dist/core/doctor.js +0 -127
- package/dist/core/doctor.js.map +0 -1
- package/dist/core/events.d.ts +0 -58
- package/dist/core/events.d.ts.map +0 -1
- package/dist/core/events.js +0 -88
- package/dist/core/events.js.map +0 -1
- package/dist/core/journal.d.ts +0 -23
- package/dist/core/journal.d.ts.map +0 -1
- package/dist/core/journal.js +0 -93
- package/dist/core/journal.js.map +0 -1
- package/dist/core/lease-store.d.ts +0 -22
- package/dist/core/lease-store.d.ts.map +0 -1
- package/dist/core/lease-store.js +0 -81
- package/dist/core/lease-store.js.map +0 -1
- package/dist/core/migrate-bindings.d.ts +0 -10
- package/dist/core/migrate-bindings.d.ts.map +0 -1
- package/dist/core/migrate-bindings.js +0 -98
- package/dist/core/migrate-bindings.js.map +0 -1
- package/dist/core/migrate-fs.d.ts +0 -11
- package/dist/core/migrate-fs.d.ts.map +0 -1
- package/dist/core/migrate-fs.js +0 -184
- package/dist/core/migrate-fs.js.map +0 -1
- package/dist/core/model-cache-store.d.ts +0 -27
- package/dist/core/model-cache-store.d.ts.map +0 -1
- package/dist/core/model-cache-store.js +0 -50
- package/dist/core/model-cache-store.js.map +0 -1
- package/dist/core/model-discovery.d.ts +0 -66
- package/dist/core/model-discovery.d.ts.map +0 -1
- package/dist/core/model-discovery.js +0 -127
- package/dist/core/model-discovery.js.map +0 -1
- package/dist/core/model-policy.d.ts +0 -40
- package/dist/core/model-policy.d.ts.map +0 -1
- package/dist/core/model-policy.js +0 -77
- package/dist/core/model-policy.js.map +0 -1
- package/dist/core/model-roles.d.ts +0 -9
- package/dist/core/model-roles.d.ts.map +0 -1
- package/dist/core/model-roles.js +0 -20
- package/dist/core/model-roles.js.map +0 -1
- package/dist/core/mutation-lock.d.ts +0 -31
- package/dist/core/mutation-lock.d.ts.map +0 -1
- package/dist/core/mutation-lock.js +0 -69
- package/dist/core/mutation-lock.js.map +0 -1
- package/dist/core/paths.d.ts +0 -49
- package/dist/core/paths.d.ts.map +0 -1
- package/dist/core/paths.js +0 -110
- package/dist/core/paths.js.map +0 -1
- package/dist/core/plugin-loader.d.ts +0 -40
- package/dist/core/plugin-loader.d.ts.map +0 -1
- package/dist/core/plugin-loader.js +0 -184
- package/dist/core/plugin-loader.js.map +0 -1
- package/dist/core/plugin-service.d.ts +0 -32
- package/dist/core/plugin-service.d.ts.map +0 -1
- package/dist/core/plugin-service.js +0 -110
- package/dist/core/plugin-service.js.map +0 -1
- package/dist/core/plugin-store.d.ts +0 -18
- package/dist/core/plugin-store.d.ts.map +0 -1
- package/dist/core/plugin-store.js +0 -50
- package/dist/core/plugin-store.js.map +0 -1
- package/dist/core/pool-store.d.ts +0 -44
- package/dist/core/pool-store.d.ts.map +0 -1
- package/dist/core/pool-store.js +0 -198
- package/dist/core/pool-store.js.map +0 -1
- package/dist/core/preset-store.d.ts +0 -29
- package/dist/core/preset-store.d.ts.map +0 -1
- package/dist/core/preset-store.js +0 -105
- package/dist/core/preset-store.js.map +0 -1
- package/dist/core/profile-service.d.ts +0 -50
- package/dist/core/profile-service.d.ts.map +0 -1
- package/dist/core/profile-service.js +0 -149
- package/dist/core/profile-service.js.map +0 -1
- package/dist/core/profile-store.d.ts +0 -20
- package/dist/core/profile-store.d.ts.map +0 -1
- package/dist/core/profile-store.js +0 -92
- package/dist/core/profile-store.js.map +0 -1
- package/dist/core/profile-synth.d.ts +0 -24
- package/dist/core/profile-synth.d.ts.map +0 -1
- package/dist/core/profile-synth.js +0 -30
- package/dist/core/profile-synth.js.map +0 -1
- package/dist/core/project-root.d.ts +0 -7
- package/dist/core/project-root.d.ts.map +0 -1
- package/dist/core/project-root.js +0 -23
- package/dist/core/project-root.js.map +0 -1
- package/dist/core/proxy-hub-cli.d.ts +0 -3
- package/dist/core/proxy-hub-cli.d.ts.map +0 -1
- package/dist/core/proxy-hub-cli.js +0 -80
- package/dist/core/proxy-hub-cli.js.map +0 -1
- package/dist/core/proxy-hub-routes.d.ts +0 -22
- package/dist/core/proxy-hub-routes.d.ts.map +0 -1
- package/dist/core/proxy-hub-routes.js +0 -92
- package/dist/core/proxy-hub-routes.js.map +0 -1
- package/dist/core/proxy-hub-server.d.ts +0 -59
- package/dist/core/proxy-hub-server.d.ts.map +0 -1
- package/dist/core/proxy-hub-server.js +0 -409
- package/dist/core/proxy-hub-server.js.map +0 -1
- package/dist/core/proxy-hub-service.d.ts +0 -97
- package/dist/core/proxy-hub-service.d.ts.map +0 -1
- package/dist/core/proxy-hub-service.js +0 -553
- package/dist/core/proxy-hub-service.js.map +0 -1
- package/dist/core/proxy-hub-store.d.ts +0 -28
- package/dist/core/proxy-hub-store.d.ts.map +0 -1
- package/dist/core/proxy-hub-store.js +0 -152
- package/dist/core/proxy-hub-store.js.map +0 -1
- package/dist/core/proxy-lifecycle.d.ts +0 -26
- package/dist/core/proxy-lifecycle.d.ts.map +0 -1
- package/dist/core/proxy-lifecycle.js +0 -33
- package/dist/core/proxy-lifecycle.js.map +0 -1
- package/dist/core/proxy-ports.d.ts +0 -50
- package/dist/core/proxy-ports.d.ts.map +0 -1
- package/dist/core/proxy-ports.js +0 -86
- package/dist/core/proxy-ports.js.map +0 -1
- package/dist/core/proxy-service.d.ts +0 -184
- package/dist/core/proxy-service.d.ts.map +0 -1
- package/dist/core/proxy-service.js +0 -860
- package/dist/core/proxy-service.js.map +0 -1
- package/dist/core/quota-guard-policy.d.ts +0 -8
- package/dist/core/quota-guard-policy.d.ts.map +0 -1
- package/dist/core/quota-guard-policy.js +0 -21
- package/dist/core/quota-guard-policy.js.map +0 -1
- package/dist/core/realign-proxy-clients.d.ts +0 -19
- package/dist/core/realign-proxy-clients.d.ts.map +0 -1
- package/dist/core/realign-proxy-clients.js +0 -40
- package/dist/core/realign-proxy-clients.js.map +0 -1
- package/dist/core/refs.d.ts +0 -84
- package/dist/core/refs.d.ts.map +0 -1
- package/dist/core/refs.js +0 -250
- package/dist/core/refs.js.map +0 -1
- package/dist/core/registry.d.ts +0 -46
- package/dist/core/registry.d.ts.map +0 -1
- package/dist/core/registry.js +0 -70
- package/dist/core/registry.js.map +0 -1
- package/dist/core/resolve-source.d.ts +0 -54
- package/dist/core/resolve-source.d.ts.map +0 -1
- package/dist/core/resolve-source.js +0 -148
- package/dist/core/resolve-source.js.map +0 -1
- package/dist/core/runtime-service.d.ts +0 -158
- package/dist/core/runtime-service.d.ts.map +0 -1
- package/dist/core/runtime-service.js +0 -422
- package/dist/core/runtime-service.js.map +0 -1
- package/dist/core/service.d.ts +0 -200
- package/dist/core/service.d.ts.map +0 -1
- package/dist/core/service.js +0 -643
- package/dist/core/service.js.map +0 -1
- package/dist/core/store-snapshot.d.ts +0 -10
- package/dist/core/store-snapshot.d.ts.map +0 -1
- package/dist/core/store-snapshot.js +0 -79
- package/dist/core/store-snapshot.js.map +0 -1
- package/dist/core/store.d.ts +0 -68
- package/dist/core/store.d.ts.map +0 -1
- package/dist/core/store.js +0 -159
- package/dist/core/store.js.map +0 -1
- package/dist/core/tray-runtime.d.ts +0 -15
- package/dist/core/tray-runtime.d.ts.map +0 -1
- package/dist/core/tray-runtime.js +0 -33
- package/dist/core/tray-runtime.js.map +0 -1
- package/dist/core/tray-settings-service.d.ts +0 -7
- package/dist/core/tray-settings-service.d.ts.map +0 -1
- package/dist/core/tray-settings-service.js +0 -24
- package/dist/core/tray-settings-service.js.map +0 -1
- package/dist/core/update.d.ts +0 -26
- package/dist/core/update.d.ts.map +0 -1
- package/dist/core/update.js +0 -128
- package/dist/core/update.js.map +0 -1
- package/dist/index.d.ts +0 -12
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -7
- package/dist/network/egress/allowlist.d.ts +0 -2
- package/dist/network/egress/allowlist.d.ts.map +0 -1
- package/dist/network/egress/allowlist.js +0 -14
- package/dist/network/egress/allowlist.js.map +0 -1
- package/dist/network/egress/direct.d.ts +0 -17
- package/dist/network/egress/direct.d.ts.map +0 -1
- package/dist/network/egress/direct.js +0 -28
- package/dist/network/egress/direct.js.map +0 -1
- package/dist/network/egress/errors.d.ts +0 -4
- package/dist/network/egress/errors.d.ts.map +0 -1
- package/dist/network/egress/errors.js +0 -8
- package/dist/network/egress/errors.js.map +0 -1
- package/dist/network/egress/index.d.ts +0 -6
- package/dist/network/egress/index.d.ts.map +0 -1
- package/dist/network/egress/index.js +0 -11
- package/dist/network/egress/index.js.map +0 -1
- package/dist/network/egress/types.d.ts +0 -16
- package/dist/network/egress/types.d.ts.map +0 -1
- package/dist/presentation/client-name.d.ts +0 -14
- package/dist/presentation/client-name.d.ts.map +0 -1
- package/dist/presentation/client-name.js +0 -22
- package/dist/presentation/client-name.js.map +0 -1
- package/dist/presentation/layout.d.ts +0 -7
- package/dist/presentation/layout.d.ts.map +0 -1
- package/dist/presentation/layout.js +0 -10
- package/dist/presentation/layout.js.map +0 -1
- package/dist/providers/auth-fingerprint.d.ts +0 -56
- package/dist/providers/auth-fingerprint.d.ts.map +0 -1
- package/dist/providers/auth-fingerprint.js +0 -163
- package/dist/providers/auth-fingerprint.js.map +0 -1
- package/dist/providers/claude.d.ts +0 -43
- package/dist/providers/claude.d.ts.map +0 -1
- package/dist/providers/claude.js +0 -191
- package/dist/providers/claude.js.map +0 -1
- package/dist/providers/codex-identity.d.ts +0 -13
- package/dist/providers/codex-identity.d.ts.map +0 -1
- package/dist/providers/codex-identity.js +0 -69
- package/dist/providers/codex-identity.js.map +0 -1
- package/dist/providers/codex-refresh.d.ts +0 -30
- package/dist/providers/codex-refresh.d.ts.map +0 -1
- package/dist/providers/codex-refresh.js +0 -64
- package/dist/providers/codex-refresh.js.map +0 -1
- package/dist/providers/codex-usage.d.ts +0 -3
- package/dist/providers/codex-usage.d.ts.map +0 -1
- package/dist/providers/codex-usage.js +0 -42
- package/dist/providers/codex-usage.js.map +0 -1
- package/dist/providers/codex.d.ts +0 -61
- package/dist/providers/codex.d.ts.map +0 -1
- package/dist/providers/codex.js +0 -212
- package/dist/providers/codex.js.map +0 -1
- package/dist/providers/gemini-antigravity-oauth.d.ts +0 -83
- package/dist/providers/gemini-antigravity-oauth.d.ts.map +0 -1
- package/dist/providers/gemini-antigravity-oauth.js +0 -343
- package/dist/providers/gemini-antigravity-oauth.js.map +0 -1
- package/dist/providers/gemini-antigravity-state.d.ts +0 -35
- package/dist/providers/gemini-antigravity-state.d.ts.map +0 -1
- package/dist/providers/gemini-antigravity-state.js +0 -433
- package/dist/providers/gemini-antigravity-state.js.map +0 -1
- package/dist/providers/gemini-env.d.ts +0 -8
- package/dist/providers/gemini-env.d.ts.map +0 -1
- package/dist/providers/gemini-env.js +0 -78
- package/dist/providers/gemini-env.js.map +0 -1
- package/dist/providers/gemini-identity.d.ts +0 -2
- package/dist/providers/gemini-identity.d.ts.map +0 -1
- package/dist/providers/gemini-identity.js +0 -14
- package/dist/providers/gemini-identity.js.map +0 -1
- package/dist/providers/gemini-proxy/main.d.ts +0 -3
- package/dist/providers/gemini-proxy/main.d.ts.map +0 -1
- package/dist/providers/gemini-proxy/main.js +0 -176
- package/dist/providers/gemini-proxy/main.js.map +0 -1
- package/dist/providers/gemini-proxy/server.d.ts +0 -57
- package/dist/providers/gemini-proxy/server.d.ts.map +0 -1
- package/dist/providers/gemini-proxy/server.js +0 -1240
- package/dist/providers/gemini-proxy/server.js.map +0 -1
- package/dist/providers/gemini-proxy-entry.d.ts +0 -2
- package/dist/providers/gemini-proxy-entry.d.ts.map +0 -1
- package/dist/providers/gemini-proxy-entry.js +0 -16
- package/dist/providers/gemini-proxy-entry.js.map +0 -1
- package/dist/providers/gemini-proxy-lifecycle.d.ts +0 -11
- package/dist/providers/gemini-proxy-lifecycle.d.ts.map +0 -1
- package/dist/providers/gemini-proxy-lifecycle.js +0 -131
- package/dist/providers/gemini-proxy-lifecycle.js.map +0 -1
- package/dist/providers/gemini.d.ts +0 -137
- package/dist/providers/gemini.d.ts.map +0 -1
- package/dist/providers/gemini.js +0 -471
- package/dist/providers/gemini.js.map +0 -1
- package/dist/providers/grok-proxy/auth.d.ts +0 -27
- package/dist/providers/grok-proxy/auth.d.ts.map +0 -1
- package/dist/providers/grok-proxy/auth.js +0 -123
- package/dist/providers/grok-proxy/auth.js.map +0 -1
- package/dist/providers/grok-proxy/main.d.ts +0 -3
- package/dist/providers/grok-proxy/main.d.ts.map +0 -1
- package/dist/providers/grok-proxy/main.js +0 -111
- package/dist/providers/grok-proxy/main.js.map +0 -1
- package/dist/providers/grok-proxy/server.d.ts +0 -46
- package/dist/providers/grok-proxy/server.d.ts.map +0 -1
- package/dist/providers/grok-proxy/server.js +0 -595
- package/dist/providers/grok-proxy/server.js.map +0 -1
- package/dist/providers/grok.d.ts +0 -38
- package/dist/providers/grok.d.ts.map +0 -1
- package/dist/providers/grok.js +0 -250
- package/dist/providers/grok.js.map +0 -1
- package/dist/providers/index.d.ts +0 -14
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/index.js +0 -23
- package/dist/providers/index.js.map +0 -1
- package/dist/providers/kiro-secret-store.d.ts +0 -39
- package/dist/providers/kiro-secret-store.d.ts.map +0 -1
- package/dist/providers/kiro-secret-store.js +0 -168
- package/dist/providers/kiro-secret-store.js.map +0 -1
- package/dist/providers/kiro.d.ts +0 -50
- package/dist/providers/kiro.d.ts.map +0 -1
- package/dist/providers/kiro.js +0 -373
- package/dist/providers/kiro.js.map +0 -1
- package/dist/providers/model-policy.d.ts +0 -15
- package/dist/providers/model-policy.d.ts.map +0 -1
- package/dist/providers/model-policy.js +0 -26
- package/dist/providers/model-policy.js.map +0 -1
- package/dist/providers/opencode-auth.d.ts +0 -67
- package/dist/providers/opencode-auth.d.ts.map +0 -1
- package/dist/providers/opencode-auth.js +0 -146
- package/dist/providers/opencode-auth.js.map +0 -1
- package/dist/providers/opencode-cli-entry.d.ts +0 -36
- package/dist/providers/opencode-cli-entry.d.ts.map +0 -1
- package/dist/providers/opencode-cli-entry.js +0 -90
- package/dist/providers/opencode-cli-entry.js.map +0 -1
- package/dist/providers/opencode-proxy/abort.d.ts +0 -8
- package/dist/providers/opencode-proxy/abort.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/abort.js +0 -42
- package/dist/providers/opencode-proxy/abort.js.map +0 -1
- package/dist/providers/opencode-proxy/anthropic-handler.d.ts +0 -4
- package/dist/providers/opencode-proxy/anthropic-handler.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/anthropic-handler.js +0 -108
- package/dist/providers/opencode-proxy/anthropic-handler.js.map +0 -1
- package/dist/providers/opencode-proxy/auth.d.ts +0 -38
- package/dist/providers/opencode-proxy/auth.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/auth.js +0 -128
- package/dist/providers/opencode-proxy/auth.js.map +0 -1
- package/dist/providers/opencode-proxy/body.d.ts +0 -9
- package/dist/providers/opencode-proxy/body.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/body.js +0 -69
- package/dist/providers/opencode-proxy/body.js.map +0 -1
- package/dist/providers/opencode-proxy/catalog-handlers.d.ts +0 -7
- package/dist/providers/opencode-proxy/catalog-handlers.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/catalog-handlers.js +0 -132
- package/dist/providers/opencode-proxy/catalog-handlers.js.map +0 -1
- package/dist/providers/opencode-proxy/catalog.d.ts +0 -41
- package/dist/providers/opencode-proxy/catalog.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/catalog.js +0 -146
- package/dist/providers/opencode-proxy/catalog.js.map +0 -1
- package/dist/providers/opencode-proxy/cli.d.ts +0 -2
- package/dist/providers/opencode-proxy/cli.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/cli.js +0 -162
- package/dist/providers/opencode-proxy/cli.js.map +0 -1
- package/dist/providers/opencode-proxy/constants.d.ts +0 -13
- package/dist/providers/opencode-proxy/constants.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/constants.js +0 -15
- package/dist/providers/opencode-proxy/constants.js.map +0 -1
- package/dist/providers/opencode-proxy/context-budget.d.ts +0 -31
- package/dist/providers/opencode-proxy/context-budget.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/context-budget.js +0 -165
- package/dist/providers/opencode-proxy/context-budget.js.map +0 -1
- package/dist/providers/opencode-proxy/errors.d.ts +0 -5
- package/dist/providers/opencode-proxy/errors.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/errors.js +0 -45
- package/dist/providers/opencode-proxy/errors.js.map +0 -1
- package/dist/providers/opencode-proxy/forwarders.d.ts +0 -7
- package/dist/providers/opencode-proxy/forwarders.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/forwarders.js +0 -214
- package/dist/providers/opencode-proxy/forwarders.js.map +0 -1
- package/dist/providers/opencode-proxy/http.d.ts +0 -11
- package/dist/providers/opencode-proxy/http.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/http.js +0 -97
- package/dist/providers/opencode-proxy/http.js.map +0 -1
- package/dist/providers/opencode-proxy/models.d.ts +0 -42
- package/dist/providers/opencode-proxy/models.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/models.js +0 -148
- package/dist/providers/opencode-proxy/models.js.map +0 -1
- package/dist/providers/opencode-proxy/openai-handler.d.ts +0 -5
- package/dist/providers/opencode-proxy/openai-handler.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/openai-handler.js +0 -115
- package/dist/providers/opencode-proxy/openai-handler.js.map +0 -1
- package/dist/providers/opencode-proxy/router.d.ts +0 -4
- package/dist/providers/opencode-proxy/router.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/router.js +0 -65
- package/dist/providers/opencode-proxy/router.js.map +0 -1
- package/dist/providers/opencode-proxy/runtime.d.ts +0 -23
- package/dist/providers/opencode-proxy/runtime.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/runtime.js +0 -158
- package/dist/providers/opencode-proxy/runtime.js.map +0 -1
- package/dist/providers/opencode-proxy/server.d.ts +0 -13
- package/dist/providers/opencode-proxy/server.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/server.js +0 -52
- package/dist/providers/opencode-proxy/server.js.map +0 -1
- package/dist/providers/opencode-proxy/stream.d.ts +0 -4
- package/dist/providers/opencode-proxy/stream.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/stream.js +0 -71
- package/dist/providers/opencode-proxy/stream.js.map +0 -1
- package/dist/providers/opencode-proxy/translate-stream.d.ts +0 -3
- package/dist/providers/opencode-proxy/translate-stream.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/translate-stream.js +0 -205
- package/dist/providers/opencode-proxy/translate-stream.js.map +0 -1
- package/dist/providers/opencode-proxy/translate.d.ts +0 -11
- package/dist/providers/opencode-proxy/translate.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/translate.js +0 -250
- package/dist/providers/opencode-proxy/translate.js.map +0 -1
- package/dist/providers/opencode-proxy/types.d.ts +0 -110
- package/dist/providers/opencode-proxy/types.d.ts.map +0 -1
- package/dist/providers/opencode-proxy/types.js +0 -38
- package/dist/providers/opencode-proxy/types.js.map +0 -1
- package/dist/providers/opencode-proxy-lifecycle.d.ts +0 -11
- package/dist/providers/opencode-proxy-lifecycle.d.ts.map +0 -1
- package/dist/providers/opencode-proxy-lifecycle.js +0 -144
- package/dist/providers/opencode-proxy-lifecycle.js.map +0 -1
- package/dist/providers/opencode.d.ts +0 -40
- package/dist/providers/opencode.d.ts.map +0 -1
- package/dist/providers/opencode.js +0 -190
- package/dist/providers/opencode.js.map +0 -1
- package/dist/providers/protocol/anthropic-convert.d.ts +0 -12
- package/dist/providers/protocol/anthropic-convert.d.ts.map +0 -1
- package/dist/providers/protocol/anthropic-convert.js +0 -113
- package/dist/providers/protocol/anthropic-convert.js.map +0 -1
- package/dist/providers/protocol/anthropic-helpers.d.ts +0 -13
- package/dist/providers/protocol/anthropic-helpers.d.ts.map +0 -1
- package/dist/providers/protocol/anthropic-helpers.js +0 -179
- package/dist/providers/protocol/anthropic-helpers.js.map +0 -1
- package/dist/providers/protocol/anthropic-stream-reader.d.ts +0 -13
- package/dist/providers/protocol/anthropic-stream-reader.d.ts.map +0 -1
- package/dist/providers/protocol/anthropic-stream-reader.js +0 -46
- package/dist/providers/protocol/anthropic-stream-reader.js.map +0 -1
- package/dist/providers/protocol/anthropic-stream.d.ts +0 -7
- package/dist/providers/protocol/anthropic-stream.d.ts.map +0 -1
- package/dist/providers/protocol/anthropic-stream.js +0 -318
- package/dist/providers/protocol/anthropic-stream.js.map +0 -1
- package/dist/providers/protocol/anthropic-types.d.ts +0 -240
- package/dist/providers/protocol/anthropic-types.d.ts.map +0 -1
- package/dist/providers/protocol/anthropic.d.ts +0 -20
- package/dist/providers/protocol/anthropic.d.ts.map +0 -1
- package/dist/providers/protocol/gemini/translate-anthropic.d.ts +0 -15
- package/dist/providers/protocol/gemini/translate-anthropic.d.ts.map +0 -1
- package/dist/providers/protocol/gemini/translate-anthropic.js +0 -84
- package/dist/providers/protocol/gemini/translate-anthropic.js.map +0 -1
- package/dist/providers/protocol/gemini/translate-chat.d.ts +0 -5
- package/dist/providers/protocol/gemini/translate-chat.d.ts.map +0 -1
- package/dist/providers/protocol/gemini/translate-chat.js +0 -142
- package/dist/providers/protocol/gemini/translate-chat.js.map +0 -1
- package/dist/providers/protocol/gemini/translate-models.d.ts +0 -40
- package/dist/providers/protocol/gemini/translate-models.d.ts.map +0 -1
- package/dist/providers/protocol/gemini/translate-models.js +0 -186
- package/dist/providers/protocol/gemini/translate-models.js.map +0 -1
- package/dist/providers/protocol/gemini/translate-responses.d.ts +0 -6
- package/dist/providers/protocol/gemini/translate-responses.d.ts.map +0 -1
- package/dist/providers/protocol/gemini/translate-responses.js +0 -187
- package/dist/providers/protocol/gemini/translate-responses.js.map +0 -1
- package/dist/providers/protocol/gemini/translate-schema.d.ts +0 -9
- package/dist/providers/protocol/gemini/translate-schema.d.ts.map +0 -1
- package/dist/providers/protocol/gemini/translate-schema.js +0 -48
- package/dist/providers/protocol/gemini/translate-schema.js.map +0 -1
- package/dist/providers/protocol/gemini/translate-shared.d.ts +0 -8
- package/dist/providers/protocol/gemini/translate-shared.d.ts.map +0 -1
- package/dist/providers/protocol/gemini/translate-shared.js +0 -47
- package/dist/providers/protocol/gemini/translate-shared.js.map +0 -1
- package/dist/providers/protocol/gemini/translate-thinking.d.ts +0 -7
- package/dist/providers/protocol/gemini/translate-thinking.d.ts.map +0 -1
- package/dist/providers/protocol/gemini/translate-thinking.js +0 -65
- package/dist/providers/protocol/gemini/translate-thinking.js.map +0 -1
- package/dist/providers/protocol/gemini/translate-types.d.ts +0 -133
- package/dist/providers/protocol/gemini/translate-types.d.ts.map +0 -1
- package/dist/providers/protocol/gemini/translate.d.ts +0 -7
- package/dist/providers/protocol/gemini/translate.d.ts.map +0 -1
- package/dist/providers/protocol/json-schema.d.ts +0 -52
- package/dist/providers/protocol/json-schema.d.ts.map +0 -1
- package/dist/providers/protocol/json-schema.js +0 -189
- package/dist/providers/protocol/json-schema.js.map +0 -1
- package/dist/providers/protocol/token-estimate.d.ts +0 -15
- package/dist/providers/protocol/token-estimate.d.ts.map +0 -1
- package/dist/providers/protocol/token-estimate.js +0 -34
- package/dist/providers/protocol/token-estimate.js.map +0 -1
- package/dist/providers/proxy-hub-backend.d.ts +0 -4
- package/dist/providers/proxy-hub-backend.d.ts.map +0 -1
- package/dist/providers/proxy-hub-backend.js +0 -11
- package/dist/providers/proxy-hub-backend.js.map +0 -1
- package/dist/providers/proxy-process.d.ts +0 -35
- package/dist/providers/proxy-process.d.ts.map +0 -1
- package/dist/providers/proxy-process.js +0 -119
- package/dist/providers/proxy-process.js.map +0 -1
- package/dist/providers/proxy-shared.d.ts +0 -43
- package/dist/providers/proxy-shared.d.ts.map +0 -1
- package/dist/providers/proxy-shared.js +0 -128
- package/dist/providers/proxy-shared.js.map +0 -1
- package/dist/providers/quota-guard.d.ts +0 -49
- package/dist/providers/quota-guard.d.ts.map +0 -1
- package/dist/providers/quota-guard.js +0 -107
- package/dist/providers/quota-guard.js.map +0 -1
- package/dist/providers/reasoning.d.ts +0 -27
- package/dist/providers/reasoning.d.ts.map +0 -1
- package/dist/providers/reasoning.js +0 -61
- package/dist/providers/reasoning.js.map +0 -1
- package/dist/providers/upstream-policy.d.ts +0 -33
- package/dist/providers/upstream-policy.d.ts.map +0 -1
- package/dist/providers/upstream-policy.js +0 -97
- package/dist/providers/upstream-policy.js.map +0 -1
- package/dist/public-types.d.ts +0 -3
- package/dist/public-types.d.ts.map +0 -1
- package/dist/public.d.ts +0 -19
- package/dist/public.d.ts.map +0 -1
- package/dist/public.js +0 -16
- package/dist/public.js.map +0 -1
- package/dist/sources/account-adapters.d.ts +0 -64
- package/dist/sources/account-adapters.d.ts.map +0 -1
- package/dist/sources/account-adapters.js +0 -205
- package/dist/sources/account-adapters.js.map +0 -1
- package/dist/sources/gateway-adapters.d.ts +0 -26
- package/dist/sources/gateway-adapters.d.ts.map +0 -1
- package/dist/sources/gateway-adapters.js +0 -43
- package/dist/sources/gateway-adapters.js.map +0 -1
- package/dist/sources/kiro-proxy-bin.d.ts +0 -41
- package/dist/sources/kiro-proxy-bin.d.ts.map +0 -1
- package/dist/sources/kiro-proxy-bin.js +0 -140
- package/dist/sources/kiro-proxy-bin.js.map +0 -1
- package/dist/sources/proxy-hub-adapters.d.ts +0 -7
- package/dist/sources/proxy-hub-adapters.d.ts.map +0 -1
- package/dist/sources/proxy-hub-adapters.js +0 -26
- package/dist/sources/proxy-hub-adapters.js.map +0 -1
- package/dist/testing.d.ts +0 -9
- package/dist/testing.d.ts.map +0 -1
- package/dist/testing.js +0 -6
- package/dist/tray/AnyPickTray.swift +0 -3
- package/dist/tray/activity.d.ts +0 -18
- package/dist/tray/activity.d.ts.map +0 -1
- package/dist/tray/activity.js +0 -51
- package/dist/tray/activity.js.map +0 -1
- 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 +0 -1
- package/dist/tray/icons/googlegemini.svg +0 -1
- package/dist/tray/icons/grok.svg +0 -1
- package/dist/tray/icons/kiro.svg +0 -1
- package/dist/tray/icons/openai.svg +0 -1
- package/dist/tray/icons/opencode.svg +0 -1
- package/dist/tray/icons/openrouter.svg +0 -1
- package/dist/tray/model-role-actions.d.ts +0 -15
- package/dist/tray/model-role-actions.d.ts.map +0 -1
- package/dist/tray/model-role-actions.js +0 -41
- package/dist/tray/model-role-actions.js.map +0 -1
- package/dist/tray/native/AccountsPanel.swift +0 -434
- package/dist/tray/native/AppEntry.swift +0 -229
- package/dist/tray/native/MainWindow.swift +0 -300
- package/dist/tray/native/ManageFormChrome.swift +0 -332
- package/dist/tray/native/ManageForms.swift +0 -472
- package/dist/tray/native/ManagePanel.swift +0 -356
- package/dist/tray/native/Models.swift +0 -259
- package/dist/tray/native/ModelsEditor.swift +0 -390
- package/dist/tray/native/ModelsOverview.swift +0 -76
- package/dist/tray/native/ModelsPickers.swift +0 -273
- package/dist/tray/native/ModelsRoutePickers.swift +0 -718
- package/dist/tray/native/MonitorPanel.swift +0 -375
- package/dist/tray/native/ProxyPanel.swift +0 -326
- package/dist/tray/native/QuickActivityRow.swift +0 -40
- package/dist/tray/native/QuickNav.swift +0 -62
- package/dist/tray/native/QuickPanel.swift +0 -447
- package/dist/tray/native/QuickRouteRow.swift +0 -189
- package/dist/tray/native/QuickServiceRows.swift +0 -292
- package/dist/tray/native/RoutingIssues.swift +0 -293
- package/dist/tray/native/SettingsPanel.swift +0 -225
- package/dist/tray/native/SharedUI.swift +0 -681
- package/dist/tray/native/Store.swift +0 -540
- package/dist/tray/native/Theme.swift +0 -139
- package/dist/tray/native/TrayChrome.swift +0 -657
- package/dist/tray/native/TrayControls.swift +0 -475
- package/dist/tray/native/TrayPreferences.swift +0 -46
- package/dist/tray/native/sources.txt +0 -26
- package/dist/tray/native-sources.d.ts +0 -8
- package/dist/tray/native-sources.d.ts.map +0 -1
- package/dist/tray/native-sources.js +0 -19
- package/dist/tray/native-sources.js.map +0 -1
- package/dist/tray/protocol.d.ts +0 -79
- package/dist/tray/protocol.d.ts.map +0 -1
- package/dist/tray/protocol.js +0 -145
- package/dist/tray/protocol.js.map +0 -1
- package/dist/tray/settings.d.ts +0 -15
- package/dist/tray/settings.d.ts.map +0 -1
- package/dist/tray/settings.js +0 -72
- package/dist/tray/settings.js.map +0 -1
- package/dist/tray/snapshot-client-routes.d.ts +0 -11
- package/dist/tray/snapshot-client-routes.d.ts.map +0 -1
- package/dist/tray/snapshot-client-routes.js +0 -305
- package/dist/tray/snapshot-client-routes.js.map +0 -1
- package/dist/tray/snapshot-helpers.d.ts +0 -20
- package/dist/tray/snapshot-helpers.d.ts.map +0 -1
- package/dist/tray/snapshot-helpers.js +0 -74
- package/dist/tray/snapshot-helpers.js.map +0 -1
- package/dist/tray/snapshot-hub.d.ts +0 -7
- package/dist/tray/snapshot-hub.d.ts.map +0 -1
- package/dist/tray/snapshot-hub.js +0 -93
- package/dist/tray/snapshot-hub.js.map +0 -1
- package/dist/tray/snapshot-resources.d.ts +0 -19
- package/dist/tray/snapshot-resources.d.ts.map +0 -1
- package/dist/tray/snapshot-resources.js +0 -216
- package/dist/tray/snapshot-resources.js.map +0 -1
- package/dist/tray/snapshot-types.d.ts +0 -229
- package/dist/tray/snapshot-types.d.ts.map +0 -1
- package/dist/tray/snapshot-usage.d.ts +0 -9
- package/dist/tray/snapshot-usage.d.ts.map +0 -1
- package/dist/tray/snapshot-usage.js +0 -35
- package/dist/tray/snapshot-usage.js.map +0 -1
- package/dist/tray/snapshot.d.ts +0 -7
- package/dist/tray/snapshot.d.ts.map +0 -1
- package/dist/tray/snapshot.js +0 -48
- package/dist/tray/snapshot.js.map +0 -1
- package/dist/tray/supervisor-actions.d.ts +0 -19
- package/dist/tray/supervisor-actions.d.ts.map +0 -1
- package/dist/tray/supervisor-actions.js +0 -224
- package/dist/tray/supervisor-actions.js.map +0 -1
- package/dist/tray/supervisor-activity.d.ts +0 -5
- package/dist/tray/supervisor-activity.d.ts.map +0 -1
- package/dist/tray/supervisor-activity.js +0 -19
- package/dist/tray/supervisor-activity.js.map +0 -1
- package/dist/tray/supervisor-errors.d.ts +0 -9
- package/dist/tray/supervisor-errors.d.ts.map +0 -1
- package/dist/tray/supervisor-errors.js +0 -91
- package/dist/tray/supervisor-errors.js.map +0 -1
- package/dist/tray/supervisor-logs.d.ts +0 -6
- package/dist/tray/supervisor-logs.d.ts.map +0 -1
- package/dist/tray/supervisor-logs.js +0 -52
- package/dist/tray/supervisor-logs.js.map +0 -1
- package/dist/tray/supervisor-mutations.d.ts +0 -14
- package/dist/tray/supervisor-mutations.d.ts.map +0 -1
- package/dist/tray/supervisor-mutations.js +0 -218
- package/dist/tray/supervisor-mutations.js.map +0 -1
- package/dist/tray/supervisor-native.d.ts +0 -22
- package/dist/tray/supervisor-native.d.ts.map +0 -1
- package/dist/tray/supervisor-native.js +0 -227
- package/dist/tray/supervisor-native.js.map +0 -1
- package/dist/tray/supervisor-proxies.d.ts +0 -6
- package/dist/tray/supervisor-proxies.d.ts.map +0 -1
- package/dist/tray/supervisor-proxies.js +0 -37
- package/dist/tray/supervisor-proxies.js.map +0 -1
- package/dist/tray/supervisor-tauri.d.ts +0 -13
- package/dist/tray/supervisor-tauri.d.ts.map +0 -1
- package/dist/tray/supervisor-tauri.js +0 -36
- package/dist/tray/supervisor-tauri.js.map +0 -1
- package/dist/tray/supervisor.d.ts +0 -17
- package/dist/tray/supervisor.d.ts.map +0 -1
- package/dist/tray/supervisor.js +0 -372
- package/dist/tray/supervisor.js.map +0 -1
- package/dist/tray/terminal-launcher.d.ts +0 -12
- package/dist/tray/terminal-launcher.d.ts.map +0 -1
- package/dist/tray/terminal-launcher.js +0 -130
- package/dist/tray/terminal-launcher.js.map +0 -1
- package/dist/tui/actions/ensure-proxy-up.d.ts +0 -15
- package/dist/tui/actions/ensure-proxy-up.d.ts.map +0 -1
- package/dist/tui/actions/ensure-proxy-up.js +0 -41
- package/dist/tui/actions/ensure-proxy-up.js.map +0 -1
- package/dist/tui/actions/use-account-actions.d.ts +0 -35
- package/dist/tui/actions/use-account-actions.d.ts.map +0 -1
- package/dist/tui/actions/use-account-actions.js +0 -527
- package/dist/tui/actions/use-account-actions.js.map +0 -1
- package/dist/tui/actions/use-app-bindings.d.ts +0 -83
- package/dist/tui/actions/use-app-bindings.d.ts.map +0 -1
- package/dist/tui/actions/use-app-bindings.js +0 -472
- package/dist/tui/actions/use-app-bindings.js.map +0 -1
- package/dist/tui/actions/use-gateway-actions.d.ts +0 -45
- package/dist/tui/actions/use-gateway-actions.d.ts.map +0 -1
- package/dist/tui/actions/use-gateway-actions.js +0 -370
- package/dist/tui/actions/use-gateway-actions.js.map +0 -1
- package/dist/tui/actions/use-home-filter.d.ts +0 -24
- package/dist/tui/actions/use-home-filter.d.ts.map +0 -1
- package/dist/tui/actions/use-home-filter.js +0 -48
- package/dist/tui/actions/use-home-filter.js.map +0 -1
- package/dist/tui/actions/use-model-role-editor.d.ts +0 -44
- package/dist/tui/actions/use-model-role-editor.d.ts.map +0 -1
- package/dist/tui/actions/use-model-role-editor.js +0 -68
- package/dist/tui/actions/use-model-role-editor.js.map +0 -1
- package/dist/tui/actions/use-provider-filter.d.ts +0 -10
- package/dist/tui/actions/use-provider-filter.d.ts.map +0 -1
- package/dist/tui/actions/use-provider-filter.js +0 -22
- package/dist/tui/actions/use-provider-filter.js.map +0 -1
- package/dist/tui/actions/use-proxy-actions.d.ts +0 -31
- package/dist/tui/actions/use-proxy-actions.d.ts.map +0 -1
- package/dist/tui/actions/use-proxy-actions.js +0 -474
- package/dist/tui/actions/use-proxy-actions.js.map +0 -1
- package/dist/tui/actions/use-text-input-submit.d.ts +0 -16
- package/dist/tui/actions/use-text-input-submit.d.ts.map +0 -1
- package/dist/tui/actions/use-text-input-submit.js +0 -96
- package/dist/tui/actions/use-text-input-submit.js.map +0 -1
- package/dist/tui/actions/use-tray-runtime-actions.d.ts +0 -18
- package/dist/tui/actions/use-tray-runtime-actions.d.ts.map +0 -1
- package/dist/tui/actions/use-tray-runtime-actions.js +0 -78
- package/dist/tui/actions/use-tray-runtime-actions.js.map +0 -1
- package/dist/tui/app-ui-helpers.d.ts +0 -14
- package/dist/tui/app-ui-helpers.d.ts.map +0 -1
- package/dist/tui/app-ui-helpers.js +0 -48
- package/dist/tui/app-ui-helpers.js.map +0 -1
- package/dist/tui/app-ui.d.ts +0 -19
- package/dist/tui/app-ui.d.ts.map +0 -1
- package/dist/tui/app-ui.js +0 -98
- package/dist/tui/app-ui.js.map +0 -1
- package/dist/tui/components/chrome/header.d.ts +0 -39
- package/dist/tui/components/chrome/header.d.ts.map +0 -1
- package/dist/tui/components/chrome/header.js +0 -161
- package/dist/tui/components/chrome/header.js.map +0 -1
- package/dist/tui/components/chrome/inputs.d.ts +0 -34
- package/dist/tui/components/chrome/inputs.d.ts.map +0 -1
- package/dist/tui/components/chrome/inputs.js +0 -82
- package/dist/tui/components/chrome/inputs.js.map +0 -1
- package/dist/tui/components/chrome/layout.d.ts +0 -61
- package/dist/tui/components/chrome/layout.d.ts.map +0 -1
- package/dist/tui/components/chrome/layout.js +0 -119
- package/dist/tui/components/chrome/layout.js.map +0 -1
- package/dist/tui/components/chrome/legacy.d.ts +0 -84
- package/dist/tui/components/chrome/legacy.d.ts.map +0 -1
- package/dist/tui/components/chrome/legacy.js +0 -6
- package/dist/tui/components/chrome/rows.d.ts +0 -89
- package/dist/tui/components/chrome/rows.d.ts.map +0 -1
- package/dist/tui/components/chrome/rows.js +0 -151
- package/dist/tui/components/chrome/rows.js.map +0 -1
- package/dist/tui/components/chrome/status.d.ts +0 -50
- package/dist/tui/components/chrome/status.d.ts.map +0 -1
- package/dist/tui/components/chrome/status.js +0 -157
- package/dist/tui/components/chrome/status.js.map +0 -1
- package/dist/tui/components/chrome.d.ts +0 -7
- package/dist/tui/components/chrome.d.ts.map +0 -1
- package/dist/tui/components/chrome.js +0 -7
- package/dist/tui/components.d.ts +0 -26
- package/dist/tui/components.d.ts.map +0 -1
- package/dist/tui/components.js +0 -182
- package/dist/tui/components.js.map +0 -1
- package/dist/tui/model/anypick.d.ts +0 -106
- package/dist/tui/model/anypick.d.ts.map +0 -1
- package/dist/tui/model/anypick.js +0 -116
- package/dist/tui/model/anypick.js.map +0 -1
- package/dist/tui/model/bindings.d.ts +0 -39
- package/dist/tui/model/bindings.d.ts.map +0 -1
- package/dist/tui/model/bindings.js +0 -102
- package/dist/tui/model/bindings.js.map +0 -1
- package/dist/tui/model/detail.d.ts +0 -6
- package/dist/tui/model/detail.d.ts.map +0 -1
- package/dist/tui/model/detail.js +0 -85
- package/dist/tui/model/detail.js.map +0 -1
- package/dist/tui/model/gateway.d.ts +0 -46
- package/dist/tui/model/gateway.d.ts.map +0 -1
- package/dist/tui/model/gateway.js +0 -134
- package/dist/tui/model/gateway.js.map +0 -1
- package/dist/tui/model/home-format.d.ts +0 -52
- package/dist/tui/model/home-format.d.ts.map +0 -1
- package/dist/tui/model/home-format.js +0 -64
- package/dist/tui/model/home-format.js.map +0 -1
- package/dist/tui/model/home-load.d.ts +0 -8
- package/dist/tui/model/home-load.d.ts.map +0 -1
- package/dist/tui/model/home-load.js +0 -244
- package/dist/tui/model/home-load.js.map +0 -1
- package/dist/tui/model/identity.d.ts +0 -53
- package/dist/tui/model/identity.d.ts.map +0 -1
- package/dist/tui/model/identity.js +0 -176
- package/dist/tui/model/identity.js.map +0 -1
- package/dist/tui/model/line-editor.d.ts +0 -99
- package/dist/tui/model/line-editor.d.ts.map +0 -1
- package/dist/tui/model/line-editor.js +0 -186
- package/dist/tui/model/line-editor.js.map +0 -1
- package/dist/tui/model/names.d.ts +0 -28
- package/dist/tui/model/names.d.ts.map +0 -1
- package/dist/tui/model/names.js +0 -42
- package/dist/tui/model/names.js.map +0 -1
- package/dist/tui/model/pool.d.ts +0 -11
- package/dist/tui/model/pool.d.ts.map +0 -1
- package/dist/tui/model/pool.js +0 -115
- package/dist/tui/model/pool.js.map +0 -1
- package/dist/tui/model/provider-filter.d.ts +0 -14
- package/dist/tui/model/provider-filter.d.ts.map +0 -1
- package/dist/tui/model/provider-filter.js +0 -46
- package/dist/tui/model/provider-filter.js.map +0 -1
- package/dist/tui/model/proxy-hub.d.ts +0 -23
- package/dist/tui/model/proxy-hub.d.ts.map +0 -1
- package/dist/tui/model/proxy-hub.js +0 -69
- package/dist/tui/model/proxy-hub.js.map +0 -1
- package/dist/tui/model/proxy-labels.d.ts +0 -5
- package/dist/tui/model/proxy-labels.d.ts.map +0 -1
- package/dist/tui/model/proxy-labels.js +0 -18
- package/dist/tui/model/proxy-labels.js.map +0 -1
- package/dist/tui/model/proxy.d.ts +0 -15
- package/dist/tui/model/proxy.d.ts.map +0 -1
- package/dist/tui/model/proxy.js +0 -214
- package/dist/tui/model/proxy.js.map +0 -1
- package/dist/tui/model/root.d.ts +0 -20
- package/dist/tui/model/root.d.ts.map +0 -1
- package/dist/tui/model/root.js +0 -126
- package/dist/tui/model/root.js.map +0 -1
- package/dist/tui/model/route-builder.d.ts +0 -25
- package/dist/tui/model/route-builder.d.ts.map +0 -1
- package/dist/tui/model/route-builder.js +0 -199
- package/dist/tui/model/route-builder.js.map +0 -1
- package/dist/tui/model/screen.d.ts +0 -260
- package/dist/tui/model/screen.d.ts.map +0 -1
- package/dist/tui/model/types.d.ts +0 -179
- package/dist/tui/model/types.d.ts.map +0 -1
- package/dist/tui/model.d.ts +0 -18
- package/dist/tui/model.d.ts.map +0 -1
- package/dist/tui/model.js +0 -17
- package/dist/tui/proxy-models-fetch.d.ts +0 -34
- package/dist/tui/proxy-models-fetch.d.ts.map +0 -1
- package/dist/tui/proxy-models-fetch.js +0 -87
- package/dist/tui/proxy-models-fetch.js.map +0 -1
- package/dist/tui/routes/account.d.ts +0 -4
- package/dist/tui/routes/account.d.ts.map +0 -1
- package/dist/tui/routes/account.js +0 -327
- package/dist/tui/routes/account.js.map +0 -1
- package/dist/tui/routes/apps.d.ts +0 -3
- package/dist/tui/routes/apps.d.ts.map +0 -1
- package/dist/tui/routes/apps.js +0 -296
- package/dist/tui/routes/apps.js.map +0 -1
- package/dist/tui/routes/common.d.ts +0 -4
- package/dist/tui/routes/common.d.ts.map +0 -1
- package/dist/tui/routes/common.js +0 -117
- package/dist/tui/routes/common.js.map +0 -1
- package/dist/tui/routes/context.d.ts +0 -43
- package/dist/tui/routes/context.d.ts.map +0 -1
- package/dist/tui/routes/gateway.d.ts +0 -3
- package/dist/tui/routes/gateway.d.ts.map +0 -1
- package/dist/tui/routes/gateway.js +0 -199
- package/dist/tui/routes/gateway.js.map +0 -1
- package/dist/tui/routes/proxy.d.ts +0 -3
- package/dist/tui/routes/proxy.d.ts.map +0 -1
- package/dist/tui/routes/proxy.js +0 -234
- package/dist/tui/routes/proxy.js.map +0 -1
- package/dist/tui/screens/account-detail.d.ts +0 -14
- package/dist/tui/screens/account-detail.d.ts.map +0 -1
- package/dist/tui/screens/account-detail.js +0 -98
- package/dist/tui/screens/account-detail.js.map +0 -1
- package/dist/tui/screens/accounts-home.d.ts +0 -42
- package/dist/tui/screens/accounts-home.d.ts.map +0 -1
- package/dist/tui/screens/accounts-home.js +0 -321
- package/dist/tui/screens/accounts-home.js.map +0 -1
- package/dist/tui/screens/add-account.d.ts +0 -70
- package/dist/tui/screens/add-account.d.ts.map +0 -1
- package/dist/tui/screens/add-account.js +0 -323
- package/dist/tui/screens/add-account.js.map +0 -1
- package/dist/tui/screens/anypick-home.d.ts +0 -39
- package/dist/tui/screens/anypick-home.d.ts.map +0 -1
- package/dist/tui/screens/anypick-home.js +0 -253
- package/dist/tui/screens/anypick-home.js.map +0 -1
- package/dist/tui/screens/anypick-preview.d.ts +0 -13
- package/dist/tui/screens/anypick-preview.d.ts.map +0 -1
- package/dist/tui/screens/anypick-preview.js +0 -49
- package/dist/tui/screens/anypick-preview.js.map +0 -1
- package/dist/tui/screens/app-route-preview.d.ts +0 -14
- package/dist/tui/screens/app-route-preview.d.ts.map +0 -1
- package/dist/tui/screens/app-route-preview.js +0 -35
- package/dist/tui/screens/app-route-preview.js.map +0 -1
- package/dist/tui/screens/app-route-source.d.ts +0 -15
- package/dist/tui/screens/app-route-source.d.ts.map +0 -1
- package/dist/tui/screens/app-route-source.js +0 -97
- package/dist/tui/screens/app-route-source.js.map +0 -1
- package/dist/tui/screens/apps-home.d.ts +0 -22
- package/dist/tui/screens/apps-home.d.ts.map +0 -1
- package/dist/tui/screens/apps-home.js +0 -111
- package/dist/tui/screens/apps-home.js.map +0 -1
- package/dist/tui/screens/confirm.d.ts +0 -19
- package/dist/tui/screens/confirm.d.ts.map +0 -1
- package/dist/tui/screens/confirm.js +0 -42
- package/dist/tui/screens/confirm.js.map +0 -1
- package/dist/tui/screens/credential-form.d.ts +0 -30
- package/dist/tui/screens/credential-form.d.ts.map +0 -1
- package/dist/tui/screens/credential-form.js +0 -241
- package/dist/tui/screens/credential-form.js.map +0 -1
- package/dist/tui/screens/gateway-connection-form.d.ts +0 -16
- package/dist/tui/screens/gateway-connection-form.d.ts.map +0 -1
- package/dist/tui/screens/gateway-connection-form.js +0 -127
- package/dist/tui/screens/gateway-connection-form.js.map +0 -1
- package/dist/tui/screens/gateway-pick-provider.d.ts +0 -19
- package/dist/tui/screens/gateway-pick-provider.d.ts.map +0 -1
- package/dist/tui/screens/gateway-pick-provider.js +0 -62
- package/dist/tui/screens/gateway-pick-provider.js.map +0 -1
- package/dist/tui/screens/gateways-home.d.ts +0 -38
- package/dist/tui/screens/gateways-home.d.ts.map +0 -1
- package/dist/tui/screens/gateways-home.js +0 -247
- package/dist/tui/screens/gateways-home.js.map +0 -1
- package/dist/tui/screens/health.d.ts +0 -16
- package/dist/tui/screens/health.d.ts.map +0 -1
- package/dist/tui/screens/health.js +0 -109
- package/dist/tui/screens/health.js.map +0 -1
- package/dist/tui/screens/help.d.ts +0 -10
- package/dist/tui/screens/help.d.ts.map +0 -1
- package/dist/tui/screens/help.js +0 -213
- package/dist/tui/screens/help.js.map +0 -1
- package/dist/tui/screens/manage-apps.d.ts +0 -29
- package/dist/tui/screens/manage-apps.d.ts.map +0 -1
- package/dist/tui/screens/manage-apps.js +0 -165
- package/dist/tui/screens/manage-apps.js.map +0 -1
- package/dist/tui/screens/proxy-board-helpers.d.ts +0 -9
- package/dist/tui/screens/proxy-board-helpers.d.ts.map +0 -1
- package/dist/tui/screens/proxy-board-helpers.js +0 -70
- package/dist/tui/screens/proxy-board-helpers.js.map +0 -1
- package/dist/tui/screens/proxy-board.d.ts +0 -43
- package/dist/tui/screens/proxy-board.d.ts.map +0 -1
- package/dist/tui/screens/proxy-board.js +0 -351
- package/dist/tui/screens/proxy-board.js.map +0 -1
- package/dist/tui/screens/proxy-hub.d.ts +0 -21
- package/dist/tui/screens/proxy-hub.d.ts.map +0 -1
- package/dist/tui/screens/proxy-hub.js +0 -150
- package/dist/tui/screens/proxy-hub.js.map +0 -1
- package/dist/tui/screens/proxy-models-utils.d.ts +0 -13
- package/dist/tui/screens/proxy-models-utils.d.ts.map +0 -1
- package/dist/tui/screens/proxy-models-utils.js +0 -53
- package/dist/tui/screens/proxy-models-utils.js.map +0 -1
- package/dist/tui/screens/proxy-models.d.ts +0 -65
- package/dist/tui/screens/proxy-models.d.ts.map +0 -1
- package/dist/tui/screens/proxy-models.js +0 -252
- package/dist/tui/screens/proxy-models.js.map +0 -1
- package/dist/tui/screens/proxy.d.ts +0 -26
- package/dist/tui/screens/proxy.d.ts.map +0 -1
- package/dist/tui/screens/text-input.d.ts +0 -18
- package/dist/tui/screens/text-input.d.ts.map +0 -1
- package/dist/tui/screens/text-input.js +0 -67
- package/dist/tui/screens/text-input.js.map +0 -1
- package/dist/tui/screens/tray-runtime.d.ts +0 -19
- package/dist/tui/screens/tray-runtime.d.ts.map +0 -1
- package/dist/tui/screens/tray-runtime.js +0 -108
- package/dist/tui/screens/tray-runtime.js.map +0 -1
- package/dist/tui/use-tui-nav.d.ts +0 -40
- package/dist/tui/use-tui-nav.d.ts.map +0 -1
- package/dist/tui/use-tui-nav.js +0 -256
- package/dist/tui/use-tui-nav.js.map +0 -1
- package/dist/tui/use-tui-shell.d.ts +0 -46
- package/dist/tui/use-tui-shell.d.ts.map +0 -1
- package/dist/tui/use-tui-shell.js +0 -95
- package/dist/tui/use-tui-shell.js.map +0 -1
- package/dist/types/account.d.ts +0 -410
- package/dist/types/account.d.ts.map +0 -1
- package/dist/types/account.js +0 -7
- package/dist/types/account.js.map +0 -1
- package/dist/types/bindings.d.ts +0 -300
- package/dist/types/bindings.d.ts.map +0 -1
- package/dist/types/catalog.d.ts +0 -165
- package/dist/types/catalog.d.ts.map +0 -1
- package/dist/types/clients.d.ts +0 -174
- package/dist/types/clients.d.ts.map +0 -1
- package/dist/types/clients.js +0 -11
- package/dist/types/clients.js.map +0 -1
- package/dist/types/plugins.d.ts +0 -89
- package/dist/types/plugins.d.ts.map +0 -1
- package/dist/types/plugins.js +0 -14
- package/dist/types/plugins.js.map +0 -1
- package/dist/types/proxy-hub.d.ts +0 -109
- package/dist/types/proxy-hub.d.ts.map +0 -1
- package/dist/types.d.ts +0 -7
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -1
- package/dist/utils/errors.d.ts +0 -61
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/errors.js +0 -119
- package/dist/utils/errors.js.map +0 -1
- package/dist/utils/fs.d.ts +0 -39
- package/dist/utils/fs.d.ts.map +0 -1
- package/dist/utils/fs.js +0 -126
- package/dist/utils/fs.js.map +0 -1
- package/dist/utils/lock.d.ts +0 -33
- package/dist/utils/lock.d.ts.map +0 -1
- package/dist/utils/lock.js +0 -95
- package/dist/utils/lock.js.map +0 -1
- package/dist/utils/log.d.ts +0 -10
- package/dist/utils/log.d.ts.map +0 -1
- package/dist/utils/log.js +0 -21
- package/dist/utils/log.js.map +0 -1
- package/dist/utils/network.d.ts +0 -3
- package/dist/utils/network.d.ts.map +0 -1
- package/dist/utils/network.js +0 -13
- package/dist/utils/network.js.map +0 -1
- package/dist/utils/process/binary.d.ts +0 -14
- package/dist/utils/process/binary.d.ts.map +0 -1
- package/dist/utils/process/binary.js +0 -29
- package/dist/utils/process/binary.js.map +0 -1
- package/dist/utils/process/follow.d.ts +0 -2
- package/dist/utils/process/follow.d.ts.map +0 -1
- package/dist/utils/process/follow.js +0 -90
- package/dist/utils/process/follow.js.map +0 -1
- package/dist/utils/process/health.d.ts +0 -43
- package/dist/utils/process/health.d.ts.map +0 -1
- package/dist/utils/process/health.js +0 -132
- package/dist/utils/process/health.js.map +0 -1
- package/dist/utils/process/pid.d.ts +0 -95
- package/dist/utils/process/pid.d.ts.map +0 -1
- package/dist/utils/process/pid.js +0 -243
- package/dist/utils/process/pid.js.map +0 -1
- package/dist/utils/process.d.ts +0 -5
- package/dist/utils/process.d.ts.map +0 -1
- package/dist/utils/process.js +0 -5
- package/dist/utils/slug.d.ts +0 -18
- package/dist/utils/slug.d.ts.map +0 -1
- package/dist/utils/slug.js +0 -42
- package/dist/utils/slug.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","names":[],"sources":["../../src/clients/codex.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\nimport { basename, join } from 'node:path';\nimport { homedir } from 'node:os';\nimport type {\n ApplyContext,\n ClientAdapter,\n ClientInspectResult,\n ClientLiveState,\n ClientState,\n IsolatablePath,\n IsolatedClientRuntime,\n ModelCatalogDescriptor,\n ModelInputModality,\n ModelReasoningLevel,\n ResolvedClientPlan,\n} from '../types';\nimport { configuredModelCatalog, mergeModelCatalogs } from '../core/model-policy';\nimport { AnyPickError } from '../utils/errors';\nimport { ensureDir, pathExists, writeJsonFile, writeTextFile } from '../utils/fs';\nimport { resolveFromContext } from './resolve';\nimport { removeClientEnvFiles, writeClientEnvFiles } from './env-files';\nimport {\n createTempRuntimeRoot,\n makeIsolatedRuntime,\n materializeIsolatablePaths,\n syntheticProxyProfile,\n} from './isolation';\nimport { CODEX_DESKTOP_MODEL_ROLES } from './model-roles';\nconst LEGACY_BEGIN = '# >>> anypick:managed';\nconst LEGACY_END = '# <<< anypick:managed';\n/**\n * Live-config block: the single active AnyPick route, published into the user's\n * base ~/.codex/config.toml so plain `codex` (and the desktop app, where it\n * honors config) routes through the proxy/gateway without a `--profile` flag.\n * Distinct from the legacy per-install managed block so reset() can strip them\n * separately.\n *\n * Split into two markers because TOML scopes keys by position: a bare key after\n * a `[table]` header belongs to that table. Root keys must therefore be written\n * above the first table header, while the provider table goes at EOF.\n *\n * When a proxy/gateway is active the live root block *takes over* top-level\n * `model_provider` (and `model` when known). The user's previous values are\n * stashed beside the catalog and restored on native account / reset / clear.\n */\nexport const LIVE_BEGIN = '# >>> anypick:live';\nexport const LIVE_END = '# <<< anypick:live';\nexport const LIVE_PROVIDER_BEGIN = '# >>> anypick:provider';\nexport const LIVE_PROVIDER_END = '# <<< anypick:provider';\n\n/** Top-level keys AnyPick takes over while a routed source is active. */\nexport const LIVE_TAKEOVER_KEYS = ['model', 'model_provider'] as const;\nexport type LiveTakeoverKey = (typeof LIVE_TAKEOVER_KEYS)[number];\nconst CODEX_OUTPUT_TOKEN_MAX = 32_000;\nconst LOCAL_MODEL_METADATA_TIMEOUT_MS = 8_000;\nconst LOCAL_MODEL_CATALOG_TIMEOUT_MS = 5_000;\nexport interface CodexCatalogModel extends Omit<ModelCatalogDescriptor, 'id'> {\n slug: string;\n}\n\ninterface CodexModelLimits {\n contextWindow: number;\n autoCompactTokenLimit: number;\n}\n\ninterface ModelMetadataResponse {\n id?: unknown;\n slug?: unknown;\n model?: unknown;\n name?: unknown;\n display_name?: unknown;\n description?: unknown;\n default_reasoning_level?: unknown;\n supported_reasoning_levels?: unknown;\n context_window?: unknown;\n max_context_window?: unknown;\n auto_compact_token_limit?: unknown;\n max_input_tokens?: unknown;\n max_output_tokens?: unknown;\n input_modalities?: unknown;\n supports_parallel_tool_calls?: unknown;\n supports_search_tool?: unknown;\n support_verbosity?: unknown;\n supports_image_detail_original?: unknown;\n capabilities?: unknown;\n}\n\nfunction codexDir(home = process.env.HOME ?? homedir()): string {\n return join(home, '.codex');\n}\n\nexport function configTomlPath(home = process.env.HOME ?? homedir()): string {\n return join(codexDir(home), 'config.toml');\n}\n\nexport function codexLiveCatalogPath(home = process.env.HOME ?? homedir()): string {\n return join(codexDir(home), 'anypick-live.model-catalog.json');\n}\n\n/** Sidecar: user's top-level model/model_provider before AnyPick takeover. */\nexport function codexUserDefaultsStashPath(home = process.env.HOME ?? homedir()): string {\n return join(codexDir(home), 'anypick-user-defaults.json');\n}\n\n/**\n * Whether Codex live config is in routed (proxy/gateway/hub) or native mode.\n * Proxy lifecycle re-sync must not re-publish while the user is on a native\n * Codex account.\n */\nexport function codexLiveModePath(home = process.env.HOME ?? homedir()): string {\n return join(codexDir(home), 'anypick-live-mode.json');\n}\n\n/**\n * Last explicitly published live route (gateway, or a sticky override). Used\n * when no hub route / running proxy is available but mode is still routed.\n */\nexport function codexLiveRoutePath(home = process.env.HOME ?? homedir()): string {\n return join(codexDir(home), 'anypick-live-route.json');\n}\n\nexport type CodexLiveMode = 'routed' | 'native';\n\nexport interface CodexUserDefaultsStash {\n version: 1;\n /** Absent key → user had no top-level entry (restore must not invent one). */\n model?: string;\n model_provider?: string;\n /** True when the key existed; false/omitted when it did not. */\n had_model: boolean;\n had_model_provider: boolean;\n}\n\nexport interface StoredLiveRoute {\n version: 1;\n source: string;\n endpoint: string;\n token: string;\n defaultModel?: string;\n}\n\nfunction modelCatalogPath(profileName: string, home = process.env.HOME ?? homedir()): string {\n return join(codexDir(home), `${profileName}.model-catalog.json`);\n}\n\nfunction profileConfigPath(profileName: string, home = process.env.HOME ?? homedir()): string {\n return join(codexDir(home), `${profileName}.config.toml`);\n}\n\n/**\n * Codex custom providers are global within one config layer. Derive a stable,\n * source-specific ID so a Grok proxy, Gemini proxy, and arbitrary gateway can\n * coexist without taking over one another's provider configuration.\n */\nexport function codexProfileName(sourceName: string): string {\n const stem = sourceName\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9_-]+/g, '-')\n .replace(/^-+|-+$/g, '')\n .slice(0, 48);\n const fingerprint = createHash('sha256').update(sourceName).digest('hex').slice(0, 10);\n return `anypick-${stem || 'provider'}-${fingerprint}`;\n}\n\nfunction codexProviderEnvKey(profileName: string): string {\n return `ANYPICK_CODEX_${profileName\n .replace(/^anypick-/, '')\n .toUpperCase()\n .replace(/-/g, '_')}_API_KEY`;\n}\n\n/**\n * Codex CLI client adapter (API runtime, not ChatGPT auth files).\n *\n * Persistent: one source-specific Codex profile + source-specific environment\n * file. Ephemeral: isolated CODEX_HOME / HOME with the same profile selected.\n */\nexport function createCodexClient(home = process.env.HOME ?? homedir()): ClientAdapter {\n const liveConfigPath = configTomlPath(home);\n\n async function applyToHome(ctx: ApplyContext, targetHome: string) {\n const r = resolveFromContext(ctx);\n const profileName = codexProfileName(ctx.profile.meta.name);\n const configPath = profileConfigPath(profileName, targetHome);\n const catalogPath = modelCatalogPath(profileName, targetHome);\n const envKey = codexProviderEnvKey(profileName);\n const env: Record<string, string> = {\n [envKey]: r.apiKey,\n };\n\n const extraEnv = r.overlay.env;\n if (extraEnv && typeof extraEnv === 'object' && !Array.isArray(extraEnv)) {\n for (const [k, v] of Object.entries(extraEnv)) {\n if (typeof v === 'string') {\n env[k] = v;\n }\n }\n }\n\n const managedPaths = [configPath, catalogPath];\n const managedEnvKeys = Object.keys(env);\n\n if (ctx.dryRun) {\n return {\n managedPaths: [\n ...managedPaths,\n join(ctx.anypickRoot, 'clients', 'codex', 'env.sh'),\n join(ctx.anypickRoot, 'clients', 'codex', 'env.ps1'),\n ],\n managedEnvKeys,\n profileName,\n };\n }\n\n // Bridge the limits published by AnyPick's local proxy into Codex's\n // official top-level config knobs so Codex can compact its own stateful\n // history before the provider rejects the request.\n const modelLimits = await discoverLocalModelLimits(r.endpoint, r.apiKey, r.defaultModel);\n\n // Codex does not fetch the OpenAI-compatible /models catalog for a custom\n // provider. Publish the active gateway's configured models and the live\n // models from local proxies through Codex's supported catalog override.\n // This makes them available from `/model`, rather than only via an\n // explicit `--model` flag.\n const catalogModels = await codexCatalogModels(r);\n await writeJsonFile(\n catalogPath,\n buildCodexModelCatalog(catalogModels, { provider: profileName }),\n 0o600,\n );\n\n let envPaths: string[] = [];\n if (!ctx.isolatedHome) {\n envPaths = await writeClientEnvFiles(ctx.anypickRoot, 'codex', env);\n }\n\n await ensureDir(codexDir(targetHome));\n const profileConfig = [\n '# Generated by AnyPick. Do not edit by hand.',\n `# source: ${ctx.profile.meta.name}`,\n `model = ${tomlString(r.defaultModel ?? 'gpt-4o')}`,\n `model_catalog_json = ${tomlString(catalogPath)}`,\n ...(modelLimits\n ? [\n `model_context_window = ${modelLimits.contextWindow}`,\n `model_auto_compact_token_limit = ${modelLimits.autoCompactTokenLimit}`,\n ]\n : []),\n `model_provider = ${tomlString(profileName)}`,\n '',\n `[model_providers.${profileName}]`,\n `name = ${tomlString(`AnyPick: ${ctx.profile.meta.name}`)}`,\n `base_url = ${tomlString(r.endpoint)}`,\n `env_key = ${tomlString(envKey)}`,\n `wire_api = \"responses\"`,\n `requires_openai_auth = false`,\n `supports_websockets = false`,\n '',\n ].join('\\n');\n\n await writeTextFile(configPath, profileConfig, 0o600);\n\n return {\n managedPaths: [configPath, catalogPath, ...envPaths],\n managedEnvKeys,\n profileName,\n };\n }\n\n const adapter: ClientAdapter = {\n id: 'codex',\n name: 'Codex CLI',\n shortName: 'Codex',\n binaryName: 'codex',\n binaryEnvVar: 'CODEX_BINARY',\n description: 'OpenAI Codex CLI (API / gateway runtime)',\n supportedApiStyles: ['openai', 'custom'],\n nativeInstallations: [\n {\n sourceId: 'codex',\n executables: ['codex'],\n macApplications: ['Codex.app'],\n },\n ],\n routingSurfacePolicy: 'all-compatible',\n capabilities: {\n id: 'codex',\n acceptedProtocols: ['openai'],\n supportsEnvironmentOverlay: false,\n supportsIsolatedHome: true,\n supportsPersistentConfig: true,\n protocolPreference: 'openai',\n },\n modelRoles: () => CODEX_DESKTOP_MODEL_ROLES,\n\n async validate(ctx: ApplyContext): Promise<void> {\n const r = resolveFromContext(ctx);\n if (!r.endpoint) {\n throw new AnyPickError(\n 'Profile has no endpoint. Set with: profile edit <name> --endpoint …',\n 'CLIENT_CONFIG_INVALID',\n );\n }\n },\n\n async apply(ctx: ApplyContext) {\n return applyToHome(ctx, ctx.isolatedHome ?? home);\n },\n\n async listIsolatablePaths(liveState: ClientLiveState): Promise<readonly IsolatablePath[]> {\n return [\n {\n sourcePath: configTomlPath(liveState.home),\n destinationPath: join('.codex', 'config.toml'),\n kind: 'file',\n required: false,\n },\n // Do not copy live ChatGPT auth.json — secrets stay out of ephemeral\n // gateway runs. Native account activation uses WriteNativeAuth separately.\n ];\n },\n\n async createIsolatedRuntime(\n plan: ResolvedClientPlan,\n paths: readonly IsolatablePath[],\n ): Promise<IsolatedClientRuntime> {\n const runtimeRoot = await createTempRuntimeRoot('anypick-codex-');\n const isoHome = join(runtimeRoot, 'home');\n await ensureDir(isoHome);\n await materializeIsolatablePaths(isoHome, paths);\n\n const profile =\n plan.profile ??\n syntheticProxyProfile({\n name: `ephemeral-${plan.source.display}`,\n endpoint: plan.transport.endpoint ?? '',\n apiKey: 'anypick-proxy',\n defaultModel: plan.model.mode === 'explicit' ? plan.model.id : undefined,\n });\n\n const endpoint =\n plan.transport.endpoint ??\n (plan.transport.managedProxy\n ? `http://127.0.0.1:${plan.transport.managedProxy.port}`\n : (profile.meta.endpoint ?? ''));\n\n const ctx: ApplyContext = {\n profile: {\n ...profile,\n meta: { ...profile.meta, endpoint },\n secrets: {\n ...profile.secrets,\n apiKey: profile.secrets.apiKey ?? 'anypick-proxy',\n },\n },\n clientId: 'codex',\n dryRun: plan.dryRun,\n verbose: plan.verbose,\n proxyEndpoint: endpoint || undefined,\n anypickRoot: plan.anypickRoot,\n isolatedHome: isoHome,\n };\n\n if (!plan.dryRun && endpoint) {\n await adapter.validate(ctx);\n await applyToHome(ctx, isoHome);\n }\n\n const codexHome = codexDir(isoHome);\n const profileName = codexProfileName(ctx.profile.meta.name);\n return {\n ...makeIsolatedRuntime(runtimeRoot, {\n HOME: isoHome,\n CODEX_HOME: codexHome,\n [codexProviderEnvKey(profileName)]: resolveFromContext(ctx).apiKey,\n }),\n args: ['--profile', profileName],\n };\n },\n\n async applyPersistent(plan: ResolvedClientPlan) {\n const profile =\n plan.profile ??\n syntheticProxyProfile({\n name: `proxy-${plan.source.display}`,\n endpoint: plan.transport.endpoint ?? '',\n apiKey: 'anypick-proxy',\n defaultModel: plan.model.mode === 'explicit' ? plan.model.id : undefined,\n });\n const endpoint =\n plan.transport.endpoint ??\n (plan.transport.managedProxy\n ? `http://127.0.0.1:${plan.transport.managedProxy.port}`\n : (profile.meta.endpoint ?? ''));\n const ctx: ApplyContext = {\n profile: {\n ...profile,\n meta: { ...profile.meta, endpoint },\n },\n clientId: 'codex',\n dryRun: plan.dryRun,\n verbose: plan.verbose,\n proxyEndpoint: endpoint || undefined,\n anypickRoot: plan.anypickRoot,\n };\n await adapter.validate(ctx);\n return applyToHome(ctx, home);\n },\n\n async reset(state: ClientState): Promise<void> {\n const anypickRoot =\n inferAnyPickRoot(state) ?? process.env.ANYPICK_HOME ?? join(homedir(), '.anypick');\n await removeClientEnvFiles(anypickRoot, 'codex');\n\n const { rm, readFile } = await import('node:fs/promises');\n for (const path of state.managedPaths) {\n if (isAnyPickProfilePath(path)) {\n await rm(path, { force: true });\n }\n }\n\n // Clean up files written by the old singleton implementation.\n for (const legacyPath of [\n join(codexDir(home), 'anypick.auth.json'),\n join(codexDir(home), 'anypick-model-catalog.json'),\n ]) {\n if (await pathExists(legacyPath)) {\n await rm(legacyPath, { force: true });\n }\n }\n\n // Drop managed live state and restore the user's stashed top-level defaults.\n await rm(codexLiveCatalogPath(home), { force: true });\n await rm(codexLiveModePath(home), { force: true });\n await rm(codexLiveRoutePath(home), { force: true });\n let stash: CodexUserDefaultsStash | null = null;\n const stashPath = codexUserDefaultsStashPath(home);\n if (await pathExists(stashPath)) {\n try {\n const raw = JSON.parse(await readFile(stashPath, 'utf8')) as CodexUserDefaultsStash;\n if (raw && raw.version === 1) {\n stash = raw;\n }\n } catch {\n stash = null;\n }\n await rm(stashPath, { force: true });\n }\n if (await pathExists(liveConfigPath)) {\n const existing = await readFile(liveConfigPath, 'utf8');\n const next = restoreUserTopLevelDefaults(stripLegacyManagedBlock(existing), stash);\n if (next.trim().length === 0) {\n await rm(liveConfigPath, { force: true });\n } else if (next !== existing) {\n await writeTextFile(liveConfigPath, next, 0o600);\n }\n }\n },\n\n async inspect(): Promise<ClientInspectResult> {\n const profilePaths = await anypickProfilePaths(home);\n const hasBaseConfig = await pathExists(liveConfigPath);\n return {\n present: hasBaseConfig || profilePaths.length > 0,\n configPaths: [liveConfigPath, ...profilePaths],\n summary: profilePaths.length\n ? `${profilePaths.length} AnyPick Codex profile${profilePaths.length === 1 ? '' : 's'}`\n : hasBaseConfig\n ? 'config.toml present (no AnyPick profile)'\n : undefined,\n };\n },\n };\n\n return adapter;\n}\n\nfunction isAnyPickProfilePath(path: string): boolean {\n const name = basename(path);\n return (\n /^anypick-[a-z0-9_-]+\\.config\\.toml$/.test(name) ||\n /^anypick-[a-z0-9_-]+\\.model-catalog\\.json$/.test(name)\n );\n}\n\nasync function anypickProfilePaths(home: string): Promise<string[]> {\n const dir = codexDir(home);\n try {\n const { readdir } = await import('node:fs/promises');\n return (await readdir(dir))\n .filter((name) => isAnyPickProfilePath(name))\n .map((name) => join(dir, name));\n } catch {\n return [];\n }\n}\n\nfunction stripLegacyManagedBlock(content: string): string {\n if (!content.includes(LEGACY_BEGIN)) {\n return content;\n }\n const re = new RegExp(\n `\\\\n*${escapeRegExp(LEGACY_BEGIN)}[\\\\s\\\\S]*?${escapeRegExp(LEGACY_END)}\\\\n?`,\n );\n return content\n .replace(re, '\\n')\n .replace(/\\n{3,}/g, '\\n\\n')\n .trimStart();\n}\n\nfunction escapeRegExp(s: string): string {\n return s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\n/**\n * Build the subset of Codex's model catalog schema needed for custom gateway\n * models. Required client-side fields use conservative values. Provider\n * capabilities and limits are only enabled when an authoritative descriptor\n * supplied them.\n *\n * `provider` must match the `model_providers.<id>` key: Desktop and recent CLI\n * builds bind catalog entries to a provider, and without it custom models are\n * filtered out of the picker (only stock GPT ids remain visible).\n */\nexport function buildCodexModelCatalog(\n models: readonly CodexCatalogModel[],\n opts: { provider?: string } = {},\n): Record<string, unknown> {\n const provider = opts.provider?.trim();\n return {\n models: models.map((model, index) => {\n const contextWindow = positiveInteger(model.contextWindow);\n const maxContextWindow = positiveInteger(model.maxContextWindow);\n const autoCompactTokenLimit = positiveInteger(model.autoCompactTokenLimit);\n const displayName = model.displayName ?? model.slug;\n return {\n slug: model.slug,\n // snake_case for CLI; camelCase kept for Desktop catalog parsers.\n display_name: displayName,\n displayName,\n description: model.description ?? 'Model supplied by the active AnyPick gateway or proxy.',\n ...(provider ? { provider } : {}),\n hidden: false,\n ...(model.defaultReasoningLevel\n ? { default_reasoning_level: model.defaultReasoningLevel }\n : {}),\n supported_reasoning_levels: model.supportedReasoningLevels ?? [],\n visibility: 'list',\n supported_in_api: true,\n priority: index + 1,\n ...(contextWindow ? { context_window: contextWindow } : {}),\n ...(maxContextWindow ? { max_context_window: maxContextWindow } : {}),\n ...(autoCompactTokenLimit ? { auto_compact_token_limit: autoCompactTokenLimit } : {}),\n supports_search_tool: model.supportsSearchTool ?? false,\n supports_parallel_tool_calls: model.supportsParallelToolCalls ?? false,\n support_verbosity: model.supportsVerbosity ?? false,\n shell_type: 'shell_command',\n input_modalities: model.inputModalities ?? ['text'],\n base_instructions: 'You are Codex, a coding agent. Help the user complete their task.',\n model_messages: {},\n web_search_tool_type: 'text',\n truncation_policy: { mode: 'tokens', limit: 10_000 },\n experimental_supported_tools: [],\n use_responses_lite: false,\n include_skills_usage_instructions: false,\n supports_image_detail_original: model.supportsImageDetailOriginal ?? false,\n };\n }),\n };\n}\n\nasync function codexCatalogModels(\n r: ReturnType<typeof resolveFromContext>,\n): Promise<CodexCatalogModel[]> {\n const configured = configuredModelCatalog(r.models);\n\n // Account-backed proxies are loopback-only. Query their live catalog so a\n // newly released model becomes selectable in Codex without a AnyPick update.\n // Gateway profiles stay deterministic: their saved model map is the source\n // of truth and activation never adds an unexpected external network probe.\n if (!isLoopbackEndpoint(r.endpoint)) {\n return toCodexCatalog(configured.length ? configured : [fallbackCatalogModel(r.defaultModel)]);\n }\n\n const live = await discoverLocalCatalogModels(r.endpoint, r.apiKey, r.headers);\n const merged = mergeModelCatalogs(configured, live);\n return toCodexCatalog(merged.length ? merged : [fallbackCatalogModel(r.defaultModel)]);\n}\n\nfunction fallbackCatalogModel(defaultModel: string | undefined): ModelCatalogDescriptor {\n return { id: defaultModel?.trim() || 'gpt-4o' };\n}\n\nfunction toCodexCatalog(models: readonly ModelCatalogDescriptor[]): CodexCatalogModel[] {\n return models.map(({ id, ...descriptor }) => ({ slug: id, ...descriptor }));\n}\n\n/** A single active route to publish into the user's base Codex config. */\nexport interface LiveCodexProvider {\n /** Human label, e.g. the Proxy Hub name or `proxy:<provider>/<account>`. */\n source: string;\n endpoint: string;\n /** Per-instance Proxy Hub route / proxy secret (ADR 0006). */\n token: string;\n defaultModel?: string;\n}\n\n/**\n * Render the live managed blocks for the ONE active AnyPick provider. Codex\n * routes globally (top-level `model_provider`), so exactly one provider table\n * is published — pointing at the Proxy Hub / proxy / gateway, which dispatches\n * each model to its own upstream.\n *\n * The root block *takes over* top-level `model_provider` (and `model` when a\n * default is known) so plain `codex` and the desktop app route through AnyPick\n * without `--profile`. Callers must stash the user's previous top-level values\n * via {@link extractUserTopLevelDefaults} before the first takeover and restore\n * them with {@link restoreUserTopLevelDefaults} on native/reset.\n *\n * Returns the root-scope block and the provider table separately: TOML binds a\n * bare key to whatever `[table]` precedes it, so root keys have to be placed\n * above the user's first table header rather than appended at EOF.\n */\nexport function renderLiveManagedBlock(\n provider: LiveCodexProvider,\n catalogPath: string,\n opts: { includeCatalog?: boolean } = {},\n): { root: string; providerTable: string } {\n const profileName = codexProfileName(provider.source);\n const includeCatalog = opts.includeCatalog ?? true;\n const defaultModel = provider.defaultModel?.trim();\n const root = [\n LIVE_BEGIN,\n `model_provider = ${tomlString(profileName)}`,\n ...(defaultModel ? [`model = ${tomlString(defaultModel)}`] : []),\n ...(includeCatalog ? [`model_catalog_json = ${tomlString(catalogPath)}`] : []),\n LIVE_END,\n ].join('\\n');\n const providerTable = [\n LIVE_PROVIDER_BEGIN,\n `[model_providers.${profileName}]`,\n `name = ${tomlString(`AnyPick: ${provider.source}`)}`,\n `base_url = ${tomlString(codexProviderBaseUrl(provider.endpoint))}`,\n `http_headers = { \"Authorization\" = \"Bearer ${provider.token}\" }`,\n 'wire_api = \"responses\"',\n 'requires_openai_auth = false',\n 'supports_websockets = false',\n LIVE_PROVIDER_END,\n ].join('\\n');\n return { root, providerTable };\n}\n\n/**\n * Codex treats a model-provider `base_url` as a prefix and appends `/responses`.\n * The Proxy Hub and the per-provider proxies serve the canonical `/v1/*` paths,\n * so the published URL must carry the `/v1` suffix or every request 404s.\n */\nexport function codexProviderBaseUrl(endpoint: string): string {\n const trimmed = endpoint.replace(/\\/+$/u, '');\n return trimmed.endsWith('/v1') ? trimmed : `${trimmed}/v1`;\n}\n\nfunction blockRegExp(begin: string, end: string): RegExp {\n return new RegExp(`\\\\n*${escapeRegExp(begin)}[\\\\s\\\\S]*?${escapeRegExp(end)}\\\\n?`, 'u');\n}\n\n/** Index of the first TOML table/array-of-tables header, or -1. */\nfunction firstTableHeaderIndex(lines: readonly string[]): number {\n return lines.findIndex((line) => /^\\s*\\[\\[?[^\\]]+\\]\\]?\\s*(?:#.*)?$/u.test(line));\n}\n\n/**\n * Replace both managed blocks with `root` (above the user's first table header)\n * and `providerTable` (at EOF), leaving the rest of the config untouched.\n */\nexport function upsertLiveBlock(\n content: string,\n block: { root: string; providerTable: string },\n): string {\n const stripped = stripLiveBlock(content);\n const lines = stripped.length ? stripped.split('\\n') : [];\n const headerIndex = firstTableHeaderIndex(lines);\n const rootLines = block.root.split('\\n');\n const withRoot =\n headerIndex === -1\n ? [...lines, ...rootLines]\n : [...lines.slice(0, headerIndex), ...rootLines, '', ...lines.slice(headerIndex)];\n const joined = [...withRoot, '', ...block.providerTable.split('\\n')].join('\\n');\n return `${joined\n .replace(/\\n{3,}/gu, '\\n\\n')\n .trimStart()\n .trimEnd()}\\n`;\n}\n\n/** Remove both live blocks, preserving the rest of the config. */\nexport function stripLiveBlock(content: string): string {\n return content\n .replace(blockRegExp(LIVE_PROVIDER_BEGIN, LIVE_PROVIDER_END), '\\n')\n .replace(blockRegExp(LIVE_BEGIN, LIVE_END), '\\n')\n .replace(/\\n{3,}/gu, '\\n\\n')\n .trimStart();\n}\n\n/**\n * Read a bare top-level TOML string assignment outside managed blocks.\n * Returns the unquoted string value, or `undefined` if the key is absent.\n */\nexport function readTopLevelStringKey(content: string, key: string): string | undefined {\n const outside = stripLiveBlock(content).split('\\n');\n const headerIndex = firstTableHeaderIndex(outside);\n const rootLines = headerIndex === -1 ? outside : outside.slice(0, headerIndex);\n const re = new RegExp(`^${escapeRegExp(key)}\\\\s*=\\\\s*(.*)$`, 'u');\n for (const line of rootLines) {\n const match = re.exec(line.trimEnd());\n if (!match) {\n continue;\n }\n return parseTomlStringValue(match[1] ?? '');\n }\n return undefined;\n}\n\n/** Snapshot the user's top-level model / model_provider before takeover. */\nexport function extractUserTopLevelDefaults(content: string): CodexUserDefaultsStash {\n const model = readTopLevelStringKey(content, 'model');\n const modelProvider = readTopLevelStringKey(content, 'model_provider');\n return {\n version: 1,\n had_model: model !== undefined,\n had_model_provider: modelProvider !== undefined,\n ...(model !== undefined ? { model } : {}),\n ...(modelProvider !== undefined ? { model_provider: modelProvider } : {}),\n };\n}\n\n/**\n * Strip live blocks and remove top-level takeover keys so the managed block can\n * own `model` / `model_provider` without duplicating user assignments.\n */\nexport function prepareConfigForLiveTakeover(content: string): string {\n return removeTopLevelKeys(stripLiveBlock(content), LIVE_TAKEOVER_KEYS);\n}\n\n/**\n * Strip live blocks and put stashed user defaults back at root scope.\n * Keys the user never had are left absent. Without a stash, only the managed\n * blocks are removed — user top-level keys outside them stay put.\n */\nexport function restoreUserTopLevelDefaults(\n content: string,\n stash: CodexUserDefaultsStash | null | undefined,\n): string {\n let next = stripLiveBlock(content);\n if (!stash) {\n return normalizeToml(next);\n }\n // Drop residual takeover keys (if any) before re-inserting the stashed ones.\n next = removeTopLevelKeys(next, LIVE_TAKEOVER_KEYS);\n const toInsert: Array<[string, string]> = [];\n if (stash.had_model && typeof stash.model === 'string') {\n toInsert.push(['model', stash.model]);\n }\n if (stash.had_model_provider && typeof stash.model_provider === 'string') {\n toInsert.push(['model_provider', stash.model_provider]);\n }\n if (toInsert.length === 0) {\n return normalizeToml(next);\n }\n return normalizeToml(insertTopLevelKeys(next, toInsert));\n}\n\n/** Remove bare root-scope assignments for the given keys (outside tables). */\nexport function removeTopLevelKeys(content: string, keys: readonly string[]): string {\n if (!content) {\n return content;\n }\n const keySet = new Set(keys);\n const lines = content.split('\\n');\n const headerIndex = firstTableHeaderIndex(lines);\n const rootEnd = headerIndex === -1 ? lines.length : headerIndex;\n const next: string[] = [];\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i] ?? '';\n if (i < rootEnd) {\n const trimmed = line.trim();\n const eq = trimmed.indexOf('=');\n if (eq > 0) {\n const key = trimmed.slice(0, eq).trim();\n if (keySet.has(key)) {\n continue;\n }\n }\n }\n next.push(line);\n }\n return next.join('\\n');\n}\n\n/** Insert bare root-scope string keys above the first table header. */\nexport function insertTopLevelKeys(\n content: string,\n entries: ReadonlyArray<readonly [string, string]>,\n): string {\n if (entries.length === 0) {\n return content;\n }\n const lines = content.length ? content.split('\\n') : [];\n const headerIndex = firstTableHeaderIndex(lines);\n const insertLines = entries.map(([key, value]) => `${key} = ${tomlString(value)}`);\n const withKeys =\n headerIndex === -1\n ? [...insertLines, ...lines]\n : [...lines.slice(0, headerIndex), ...insertLines, '', ...lines.slice(headerIndex)];\n return withKeys.join('\\n');\n}\n\nfunction parseTomlStringValue(raw: string): string {\n const trimmed = raw.trim();\n // Strip trailing comments outside quotes: ` \"gpt-5.2\" # note `\n let value = trimmed;\n if (value.startsWith('\"')) {\n let end = 1;\n while (end < value.length) {\n if (value[end] === '\\\\') {\n end += 2;\n continue;\n }\n if (value[end] === '\"') {\n break;\n }\n end += 1;\n }\n value = value.slice(0, end + 1);\n } else {\n const hash = value.indexOf('#');\n if (hash >= 0) {\n value = value.slice(0, hash).trim();\n }\n }\n if (\n (value.startsWith('\"') && value.endsWith('\"')) ||\n (value.startsWith(\"'\") && value.endsWith(\"'\"))\n ) {\n const inner = value.slice(1, -1);\n return inner.replace(/\\\\\"/g, '\"').replace(/\\\\\\\\/g, '\\\\');\n }\n return value;\n}\n\nfunction normalizeToml(content: string): string {\n const next = content\n .replace(/\\n{3,}/gu, '\\n\\n')\n .trimStart()\n .trimEnd();\n return next.length ? `${next}\\n` : '';\n}\n\n/**\n * Catalog for live publishing: the active route's models only, tagged with the\n * live provider id so Codex binds them to the Hub/proxy provider table.\n *\n * Deliberately does **not** merge stock OpenAI GPT entries. With top-level\n * `model_provider` pointing at the AnyPick route, GPT ids would be sent to the\n * Hub and 404 — and they drowned out real Hub models in some pickers.\n */\nexport function buildLiveCatalog(\n routeModels: readonly CodexCatalogModel[],\n opts: { provider: string } | string,\n): Record<string, unknown> {\n // Accept a bare provider string for call-site clarity.\n const provider = typeof opts === 'string' ? opts : opts.provider;\n const merged = new Map<string, CodexCatalogModel>();\n for (const model of routeModels) {\n merged.set(model.slug, model);\n }\n return buildCodexModelCatalog([...merged.values()], { provider });\n}\n\n/**\n * Discover the catalog the live route serves. Loopback hubs/proxies expose a\n * live /v1/models; fall back to a deterministic default when unavailable.\n */\nexport async function liveRouteCatalogModels(opts: {\n endpoint: string;\n token: string;\n defaultModel?: string;\n}): Promise<CodexCatalogModel[]> {\n const configured = opts.defaultModel ? [{ id: opts.defaultModel }] : [];\n const live = await discoverLocalCatalogModels(opts.endpoint, opts.token, {});\n const merged = mergeModelCatalogs(configured, live);\n return toCodexCatalog(merged.length ? merged : [fallbackCatalogModel(opts.defaultModel)]);\n}\n\n/**\n * True when the given key exists at ROOT scope outside the managed blocks.\n * Keys under a `[table]` header are a different setting entirely and must not\n * suppress the managed `model_catalog_json`.\n */\nexport function hasTopLevelKeyOutsideLiveBlock(content: string, key: string): boolean {\n const outside = stripLiveBlock(content).split('\\n');\n const headerIndex = firstTableHeaderIndex(outside);\n const rootLines = headerIndex === -1 ? outside : outside.slice(0, headerIndex);\n return rootLines.some((line) => new RegExp(`^${escapeRegExp(key)}\\\\s*=`, 'u').test(line));\n}\n\nasync function discoverLocalCatalogModels(\n endpoint: string,\n apiKey: string,\n headers: Record<string, string>,\n): Promise<ModelCatalogDescriptor[]> {\n let url: URL;\n try {\n url = new URL(endpoint);\n } catch {\n return [];\n }\n if (!isLoopbackHost(url.hostname) || (url.protocol !== 'http:' && url.protocol !== 'https:')) {\n return [];\n }\n\n const basePath = url.pathname.replace(/\\/$/, '');\n url.pathname = basePath.endsWith('/v1') ? `${basePath}/models` : `${basePath}/v1/models`;\n url.search = '';\n url.hash = '';\n\n try {\n const response = await fetch(url, {\n headers: {\n accept: 'application/json',\n ...headers,\n ...(apiKey ? { authorization: `Bearer ${apiKey}` } : {}),\n },\n signal: AbortSignal.timeout(LOCAL_MODEL_CATALOG_TIMEOUT_MS),\n });\n if (!response.ok) {\n return [];\n }\n const body = (await response.json()) as { data?: unknown; models?: unknown };\n const discovered = [...unknownArray(body.data), ...unknownArray(body.models)]\n .map(modelDescriptorFromMetadata)\n .filter((model): model is ModelCatalogDescriptor => model != null);\n return mergeModelCatalogs(discovered);\n } catch {\n return [];\n }\n}\n\nfunction modelDescriptorFromMetadata(value: unknown): ModelCatalogDescriptor | undefined {\n if (typeof value === 'string') {\n const id = normalizeModelId(value);\n return id ? { id } : undefined;\n }\n const metadata = recordValue(value);\n if (!metadata) {\n return undefined;\n }\n\n const explicitId = firstString(metadata.id, metadata.slug, metadata.model);\n const name = nonEmptyString(metadata.name);\n const id = normalizeModelId(explicitId ?? name);\n if (!id) {\n return undefined;\n }\n const capabilities = recordValue(metadata.capabilities);\n const displayName = firstString(metadata.display_name, explicitId ? name : undefined);\n const description = nonEmptyString(metadata.description);\n const defaultReasoningLevel = nonEmptyString(metadata.default_reasoning_level);\n const supportedReasoningLevels = reasoningLevels(metadata.supported_reasoning_levels);\n const inputModalities = modelInputModalities(metadata.input_modalities);\n const supportsParallelToolCalls = firstBoolean(\n metadata.supports_parallel_tool_calls,\n capabilities?.supports_parallel_tool_calls,\n );\n const supportsSearchTool = firstBoolean(\n metadata.supports_search_tool,\n capabilities?.supports_search_tool,\n );\n\n return {\n id,\n ...(displayName ? { displayName } : {}),\n ...(description ? { description } : {}),\n ...(defaultReasoningLevel ? { defaultReasoningLevel } : {}),\n ...(supportedReasoningLevels ? { supportedReasoningLevels } : {}),\n ...(positiveInteger(metadata.context_window)\n ? { contextWindow: positiveInteger(metadata.context_window) }\n : {}),\n ...(positiveInteger(metadata.max_context_window)\n ? { maxContextWindow: positiveInteger(metadata.max_context_window) }\n : {}),\n ...(positiveInteger(metadata.auto_compact_token_limit)\n ? { autoCompactTokenLimit: positiveInteger(metadata.auto_compact_token_limit) }\n : {}),\n ...(inputModalities ? { inputModalities } : {}),\n ...(supportsParallelToolCalls != null ? { supportsParallelToolCalls } : {}),\n ...(supportsSearchTool != null ? { supportsSearchTool } : {}),\n ...(typeof metadata.support_verbosity === 'boolean'\n ? { supportsVerbosity: metadata.support_verbosity }\n : {}),\n ...(typeof metadata.supports_image_detail_original === 'boolean'\n ? { supportsImageDetailOriginal: metadata.supports_image_detail_original }\n : {}),\n };\n}\n\nfunction normalizeModelId(value: string | undefined): string | undefined {\n const id = value?.trim().replace(/^models\\//, '');\n return id || undefined;\n}\n\nfunction recordValue(value: unknown): Record<string, unknown> | undefined {\n return value != null && typeof value === 'object' && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : undefined;\n}\n\nfunction unknownArray(value: unknown): readonly unknown[] {\n return Array.isArray(value) ? (value as readonly unknown[]) : [];\n}\n\nfunction nonEmptyString(value: unknown): string | undefined {\n return typeof value === 'string' && value.trim() ? value.trim() : undefined;\n}\n\nfunction firstString(...values: unknown[]): string | undefined {\n for (const value of values) {\n const found = nonEmptyString(value);\n if (found) {\n return found;\n }\n }\n return undefined;\n}\n\nfunction firstBoolean(...values: unknown[]): boolean | undefined {\n return values.find((value): value is boolean => typeof value === 'boolean');\n}\n\nfunction reasoningLevels(value: unknown): readonly ModelReasoningLevel[] | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n const levels = value.flatMap((item) => {\n const level = recordValue(item);\n const effort = nonEmptyString(level?.effort);\n const description = nonEmptyString(level?.description);\n return effort && description ? [{ effort, description }] : [];\n });\n return levels.length ? levels : undefined;\n}\n\nfunction modelInputModalities(value: unknown): readonly ModelInputModality[] | undefined {\n if (!Array.isArray(value)) {\n return undefined;\n }\n const allowed = new Set<ModelInputModality>(['text', 'image', 'audio']);\n const modalities = value.filter(\n (item): item is ModelInputModality =>\n typeof item === 'string' && allowed.has(item as ModelInputModality),\n );\n return modalities.length ? [...new Set(modalities)] : undefined;\n}\n\nasync function discoverLocalModelLimits(\n endpoint: string,\n apiKey: string,\n model: string | undefined,\n): Promise<CodexModelLimits | undefined> {\n if (!model) {\n return undefined;\n }\n\n let url: URL;\n try {\n url = new URL(endpoint);\n } catch {\n return undefined;\n }\n if (!isLoopbackHost(url.hostname) || (url.protocol !== 'http:' && url.protocol !== 'https:')) {\n return undefined;\n }\n\n const basePath = url.pathname.replace(/\\/$/, '');\n url.pathname = `${basePath}/models/${encodeURIComponent(model)}`;\n url.search = '';\n url.hash = '';\n\n try {\n const response = await fetch(url, {\n headers: {\n accept: 'application/json',\n ...(apiKey ? { authorization: `Bearer ${apiKey}` } : {}),\n },\n // The first request may trigger the proxy's remote catalog refresh;\n // keep this in line with the proxy's model-fetch timeout while still\n // bounding activation if the local service is unavailable.\n signal: AbortSignal.timeout(LOCAL_MODEL_METADATA_TIMEOUT_MS),\n });\n if (!response.ok) {\n return undefined;\n }\n return codexLimitsFromMetadata((await response.json()) as ModelMetadataResponse);\n } catch {\n // Metadata is an optimization hint. Applying the client config must still\n // work if an older proxy is running or the local proxy is not ready yet.\n return undefined;\n }\n}\n\nfunction codexLimitsFromMetadata(metadata: ModelMetadataResponse): CodexModelLimits | undefined {\n const contextWindow = positiveInteger(metadata.context_window ?? metadata.max_context_window);\n if (!contextWindow) {\n return undefined;\n }\n\n const providerOutputLimit = positiveInteger(metadata.max_output_tokens);\n const outputReserve = Math.min(\n providerOutputLimit ?? CODEX_OUTPUT_TOKEN_MAX,\n CODEX_OUTPUT_TOKEN_MAX,\n );\n const providerInputLimit = positiveInteger(metadata.max_input_tokens);\n const advertisedCompactLimit = positiveInteger(metadata.auto_compact_token_limit);\n const candidates = [\n Math.floor(contextWindow * 0.9),\n contextWindow - outputReserve,\n providerInputLimit,\n advertisedCompactLimit,\n ].filter((value): value is number => value != null && value > 0);\n const autoCompactTokenLimit = Math.min(...candidates);\n if (!Number.isSafeInteger(autoCompactTokenLimit) || autoCompactTokenLimit <= 0) {\n return undefined;\n }\n return { contextWindow, autoCompactTokenLimit };\n}\n\nfunction positiveInteger(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isSafeInteger(value) && value > 0 ? value : undefined;\n}\n\nfunction isLoopbackHost(hostname: string): boolean {\n const normalized = hostname.toLowerCase().replace(/^\\[|\\]$/g, '');\n return normalized === 'localhost' || normalized === '127.0.0.1' || normalized === '::1';\n}\n\nfunction isLoopbackEndpoint(endpoint: string): boolean {\n try {\n return isLoopbackHost(new URL(endpoint).hostname);\n } catch {\n return false;\n }\n}\n\nfunction tomlString(value: string): string {\n return `\"${value.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')}\"`;\n}\n\nfunction inferAnyPickRoot(state: ClientState): string | undefined {\n for (const p of state.managedPaths) {\n const idx = p.replace(/\\\\/g, '/').indexOf('/clients/codex/');\n if (idx > 0) {\n return p.slice(0, idx);\n }\n }\n return undefined;\n}\n\nexport const codexClient = createCodexClient();\n"],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Write portable env files for a client under ~/.anypick/clients/<id>/.
|
|
3
|
-
* Always written so users can `source` them; adapters may also write native config.
|
|
4
|
-
*/
|
|
5
|
-
export declare function writeClientEnvFiles(anypickRoot: string, clientId: string, env: Record<string, string>): Promise<string[]>;
|
|
6
|
-
export declare function removeClientEnvFiles(anypickRoot: string, clientId: string): Promise<void>;
|
|
7
|
-
/** Marker used in JSON settings to track anypick-managed env keys. */
|
|
8
|
-
export declare const ANYPICK_MANAGED_KEY = "_anypickManaged";
|
|
9
|
-
export declare function managedMarker(keys: string[]): {
|
|
10
|
-
keys: string[];
|
|
11
|
-
updatedAt: string;
|
|
12
|
-
};
|
|
13
|
-
export declare function clientHomeConfigDir(clientId: string, home: string): string;
|
|
14
|
-
//# sourceMappingURL=env-files.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env-files.d.ts","sourceRoot":"","sources":["../../src/clients/env-files.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,OAAO,CAAC,MAAM,EAAE,CAAC,CA8BnB;AAED,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS/F;AAUD,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAErD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAC7C,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAEA;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAK1E"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { AnyPickError } from "../utils/errors.js";
|
|
2
|
-
import { ensureDir, pathExists, removePath, writeTextFile } from "../utils/fs.js";
|
|
3
|
-
import { clientDir, clientEnvPath, clientEnvPs1Path } from "../core/paths.js";
|
|
4
|
-
import "node:path";
|
|
5
|
-
//#region src/clients/env-files.ts
|
|
6
|
-
/**
|
|
7
|
-
* Write portable env files for a client under ~/.anypick/clients/<id>/.
|
|
8
|
-
* Always written so users can `source` them; adapters may also write native config.
|
|
9
|
-
*/
|
|
10
|
-
async function writeClientEnvFiles(anypickRoot, clientId, env) {
|
|
11
|
-
for (const key of Object.keys(env)) if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) throw new AnyPickError(`Invalid environment variable name: ${JSON.stringify(key)}.`, { code: "CLIENT_CONFIG_INVALID" });
|
|
12
|
-
await ensureDir(clientDir(anypickRoot, clientId));
|
|
13
|
-
const shPath = clientEnvPath(anypickRoot, clientId);
|
|
14
|
-
const ps1Path = clientEnvPs1Path(anypickRoot, clientId);
|
|
15
|
-
const shLines = [
|
|
16
|
-
`# Generated by anypick — do not edit by hand`,
|
|
17
|
-
`# source ${shPath}`,
|
|
18
|
-
...Object.entries(env).map(([k, v]) => `export ${k}=${shellQuote(v)}`),
|
|
19
|
-
""
|
|
20
|
-
];
|
|
21
|
-
const ps1Lines = [
|
|
22
|
-
`# Generated by anypick — do not edit by hand`,
|
|
23
|
-
...Object.entries(env).map(([k, v]) => `$env:${k} = ${psQuote(v)}`),
|
|
24
|
-
""
|
|
25
|
-
];
|
|
26
|
-
await writeTextFile(shPath, shLines.join("\n"), 384);
|
|
27
|
-
await writeTextFile(ps1Path, ps1Lines.join("\n"), 384);
|
|
28
|
-
return [shPath, ps1Path];
|
|
29
|
-
}
|
|
30
|
-
async function removeClientEnvFiles(anypickRoot, clientId) {
|
|
31
|
-
for (const path of [clientEnvPath(anypickRoot, clientId), clientEnvPs1Path(anypickRoot, clientId)]) if (await pathExists(path)) await removePath(path);
|
|
32
|
-
}
|
|
33
|
-
function shellQuote(value) {
|
|
34
|
-
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
35
|
-
}
|
|
36
|
-
function psQuote(value) {
|
|
37
|
-
return `'${value.replace(/'/g, "''")}'`;
|
|
38
|
-
}
|
|
39
|
-
/** Marker used in JSON settings to track anypick-managed env keys. */
|
|
40
|
-
var ANYPICK_MANAGED_KEY = "_anypickManaged";
|
|
41
|
-
function managedMarker(keys) {
|
|
42
|
-
return {
|
|
43
|
-
keys,
|
|
44
|
-
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
//#endregion
|
|
48
|
-
export { ANYPICK_MANAGED_KEY, managedMarker, removeClientEnvFiles, writeClientEnvFiles };
|
|
49
|
-
|
|
50
|
-
//# sourceMappingURL=env-files.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env-files.js","names":[],"sources":["../../src/clients/env-files.ts"],"sourcesContent":["import { join } from 'node:path';\nimport { ensureDir, pathExists, removePath, writeTextFile } from '../utils/fs';\nimport { clientDir, clientEnvPath, clientEnvPs1Path } from '../core/paths';\nimport { AnyPickError } from '../utils/errors';\n\n/**\n * Write portable env files for a client under ~/.anypick/clients/<id>/.\n * Always written so users can `source` them; adapters may also write native config.\n */\nexport async function writeClientEnvFiles(\n anypickRoot: string,\n clientId: string,\n env: Record<string, string>,\n): Promise<string[]> {\n for (const key of Object.keys(env)) {\n // These names are emitted into executable shell and PowerShell files.\n // Profile overlay keys are user/config supplied, so never let one become\n // syntax (for example `X; Invoke-Expression ...`).\n if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) {\n throw new AnyPickError(`Invalid environment variable name: ${JSON.stringify(key)}.`, {\n code: 'CLIENT_CONFIG_INVALID',\n });\n }\n }\n await ensureDir(clientDir(anypickRoot, clientId));\n const shPath = clientEnvPath(anypickRoot, clientId);\n const ps1Path = clientEnvPs1Path(anypickRoot, clientId);\n\n const shLines = [\n `# Generated by anypick — do not edit by hand`,\n `# source ${shPath}`,\n ...Object.entries(env).map(([k, v]) => `export ${k}=${shellQuote(v)}`),\n '',\n ];\n const ps1Lines = [\n `# Generated by anypick — do not edit by hand`,\n ...Object.entries(env).map(([k, v]) => `$env:${k} = ${psQuote(v)}`),\n '',\n ];\n\n await writeTextFile(shPath, shLines.join('\\n'), 0o600);\n await writeTextFile(ps1Path, ps1Lines.join('\\n'), 0o600);\n return [shPath, ps1Path];\n}\n\nexport async function removeClientEnvFiles(anypickRoot: string, clientId: string): Promise<void> {\n for (const path of [\n clientEnvPath(anypickRoot, clientId),\n clientEnvPs1Path(anypickRoot, clientId),\n ]) {\n if (await pathExists(path)) {\n await removePath(path);\n }\n }\n}\n\nfunction shellQuote(value: string): string {\n return `'${value.replace(/'/g, `'\\\\''`)}'`;\n}\n\nfunction psQuote(value: string): string {\n return `'${value.replace(/'/g, \"''\")}'`;\n}\n\n/** Marker used in JSON settings to track anypick-managed env keys. */\nexport const ANYPICK_MANAGED_KEY = '_anypickManaged';\n\nexport function managedMarker(keys: string[]): {\n keys: string[];\n updatedAt: string;\n} {\n return { keys, updatedAt: new Date().toISOString() };\n}\n\nexport function clientHomeConfigDir(clientId: string, home: string): string {\n // Client ids already match their home-config directory names (`.claude`,\n // `.codex`, …). Do not special-case built-ins here — third-party clients\n // would inherit the wrong path.\n return join(home, `.${clientId}`);\n}\n"],"mappings":";;;;;;;;;AASA,eAAsB,oBACpB,aACA,UACA,KACmB;CACnB,KAAK,MAAM,OAAO,OAAO,KAAK,GAAG,GAI/B,IAAI,CAAC,2BAA2B,KAAK,GAAG,GACtC,MAAM,IAAI,aAAa,sCAAsC,KAAK,UAAU,GAAG,EAAE,IAAI,EACnF,MAAM,wBACR,CAAC;CAGL,MAAM,UAAU,UAAU,aAAa,QAAQ,CAAC;CAChD,MAAM,SAAS,cAAc,aAAa,QAAQ;CAClD,MAAM,UAAU,iBAAiB,aAAa,QAAQ;CAEtD,MAAM,UAAU;EACd;EACA,YAAY;EACZ,GAAG,OAAO,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,OAAO,UAAU,EAAE,GAAG,WAAW,CAAC,GAAG;EACrE;CACF;CACA,MAAM,WAAW;EACf;EACA,GAAG,OAAO,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,KAAK,QAAQ,CAAC,GAAG;EAClE;CACF;CAEA,MAAM,cAAc,QAAQ,QAAQ,KAAK,IAAI,GAAG,GAAK;CACrD,MAAM,cAAc,SAAS,SAAS,KAAK,IAAI,GAAG,GAAK;CACvD,OAAO,CAAC,QAAQ,OAAO;AACzB;AAEA,eAAsB,qBAAqB,aAAqB,UAAiC;CAC/F,KAAK,MAAM,QAAQ,CACjB,cAAc,aAAa,QAAQ,GACnC,iBAAiB,aAAa,QAAQ,CACxC,GACE,IAAI,MAAM,WAAW,IAAI,GACvB,MAAM,WAAW,IAAI;AAG3B;AAEA,SAAS,WAAW,OAAuB;CACzC,OAAO,IAAI,MAAM,QAAQ,MAAM,OAAO,EAAE;AAC1C;AAEA,SAAS,QAAQ,OAAuB;CACtC,OAAO,IAAI,MAAM,QAAQ,MAAM,IAAI,EAAE;AACvC;;AAGA,IAAa,sBAAsB;AAEnC,SAAgB,cAAc,MAG5B;CACA,OAAO;EAAE;EAAM,4BAAW,IAAI,KAAK,EAAA,CAAE,YAAY;CAAE;AACrD"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { ClientState } from '../types.js';
|
|
2
|
-
export declare function stripKeysFromEnv(filePath: string, keys: string[]): Promise<void>;
|
|
3
|
-
export declare function stateHomeRoot(state: ClientState, fallbackHome: string): string;
|
|
4
|
-
//# sourceMappingURL=gemini-client-utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-client-utils.d.ts","sourceRoot":"","sources":["../../src/clients/gemini-client-utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBtF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAQ9E"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { pathExists, removePath } from "../utils/fs.js";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
//#region src/clients/gemini-client-utils.ts
|
|
4
|
-
async function stripKeysFromEnv(filePath, keys) {
|
|
5
|
-
if (!keys.length || !await pathExists(filePath)) return;
|
|
6
|
-
const { readFile } = await import("node:fs/promises");
|
|
7
|
-
const raw = await readFile(filePath, "utf8");
|
|
8
|
-
const drop = new Set(keys);
|
|
9
|
-
const kept = [];
|
|
10
|
-
for (const line of raw.split(/\r?\n/)) {
|
|
11
|
-
const m = line.match(/^(?:export\s+)?([A-Za-z_][A-Za-z0-9_]*)=/);
|
|
12
|
-
if (m && drop.has(m[1])) continue;
|
|
13
|
-
kept.push(line);
|
|
14
|
-
}
|
|
15
|
-
while (kept.length && kept[kept.length - 1] === "") kept.pop();
|
|
16
|
-
if (!kept.length) {
|
|
17
|
-
await removePath(filePath);
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
const { writeTextFile } = await import("../utils/fs.js");
|
|
21
|
-
await writeTextFile(filePath, `${kept.join("\n")}\n`, 384);
|
|
22
|
-
}
|
|
23
|
-
function stateHomeRoot(state, fallbackHome) {
|
|
24
|
-
for (const p of state.managedPaths) {
|
|
25
|
-
const idx = p.replace(/\\/g, "/").indexOf("/clients/gemini/");
|
|
26
|
-
if (idx > 0) return p.slice(0, idx);
|
|
27
|
-
}
|
|
28
|
-
return process.env.ANYPICK_HOME ?? join(fallbackHome, ".anypick");
|
|
29
|
-
}
|
|
30
|
-
//#endregion
|
|
31
|
-
export { stateHomeRoot, stripKeysFromEnv };
|
|
32
|
-
|
|
33
|
-
//# sourceMappingURL=gemini-client-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-client-utils.js","names":[],"sources":["../../src/clients/gemini-client-utils.ts"],"sourcesContent":["import { join } from 'node:path';\nimport { pathExists, removePath } from '../utils/fs';\nimport type { ClientState } from '../types';\n\nexport async function stripKeysFromEnv(filePath: string, keys: string[]): Promise<void> {\n if (!keys.length || !(await pathExists(filePath))) {\n return;\n }\n const { readFile } = await import('node:fs/promises');\n const raw = await readFile(filePath, 'utf8');\n const drop = new Set(keys);\n const kept: string[] = [];\n for (const line of raw.split(/\\r?\\n/)) {\n const m = line.match(/^(?:export\\s+)?([A-Za-z_][A-Za-z0-9_]*)=/);\n if (m && drop.has(m[1])) {\n continue;\n }\n kept.push(line);\n }\n while (kept.length && kept[kept.length - 1] === '') {\n kept.pop();\n }\n if (!kept.length) {\n await removePath(filePath);\n return;\n }\n const { writeTextFile } = await import('../utils/fs');\n await writeTextFile(filePath, `${kept.join('\\n')}\\n`, 0o600);\n}\n\nexport function stateHomeRoot(state: ClientState, fallbackHome: string): string {\n for (const p of state.managedPaths) {\n const idx = p.replace(/\\\\/g, '/').indexOf('/clients/gemini/');\n if (idx > 0) {\n return p.slice(0, idx);\n }\n }\n return process.env.ANYPICK_HOME ?? join(fallbackHome, '.anypick');\n}\n"],"mappings":";;;AAIA,eAAsB,iBAAiB,UAAkB,MAA+B;CACtF,IAAI,CAAC,KAAK,UAAU,CAAE,MAAM,WAAW,QAAQ,GAC7C;CAEF,MAAM,EAAE,aAAa,MAAM,OAAO;CAClC,MAAM,MAAM,MAAM,SAAS,UAAU,MAAM;CAC3C,MAAM,OAAO,IAAI,IAAI,IAAI;CACzB,MAAM,OAAiB,CAAC;CACxB,KAAK,MAAM,QAAQ,IAAI,MAAM,OAAO,GAAG;EACrC,MAAM,IAAI,KAAK,MAAM,0CAA0C;EAC/D,IAAI,KAAK,KAAK,IAAI,EAAE,EAAE,GACpB;EAEF,KAAK,KAAK,IAAI;CAChB;CACA,OAAO,KAAK,UAAU,KAAK,KAAK,SAAS,OAAO,IAC9C,KAAK,IAAI;CAEX,IAAI,CAAC,KAAK,QAAQ;EAChB,MAAM,WAAW,QAAQ;EACzB;CACF;CACA,MAAM,EAAE,kBAAkB,MAAM,OAAO;CACvC,MAAM,cAAc,UAAU,GAAG,KAAK,KAAK,IAAI,EAAE,KAAK,GAAK;AAC7D;AAEA,SAAgB,cAAc,OAAoB,cAA8B;CAC9E,KAAK,MAAM,KAAK,MAAM,cAAc;EAClC,MAAM,MAAM,EAAE,QAAQ,OAAO,GAAG,CAAC,CAAC,QAAQ,kBAAkB;EAC5D,IAAI,MAAM,GACR,OAAO,EAAE,MAAM,GAAG,GAAG;CAEzB;CACA,OAAO,QAAQ,IAAI,gBAAgB,KAAK,cAAc,UAAU;AAClE"}
|
package/dist/clients/gemini.d.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Gemini CLI client adapter.
|
|
3
|
-
*
|
|
4
|
-
* Persistent writes:
|
|
5
|
-
* - ~/.anypick/clients/gemini/env.sh (+ env.ps1)
|
|
6
|
-
* - ~/.gemini/.env managed keys (GEMINI_API_KEY, GEMINI_MODEL, …)
|
|
7
|
-
*
|
|
8
|
-
* Gemini CLI primarily authenticates via API key or Google OAuth.
|
|
9
|
-
* This adapter targets API-key / gateway-style apply. When the source is a
|
|
10
|
-
* native Gemini account, activation uses direct auth restore (provider.restore)
|
|
11
|
-
* rather than rewriting settings for a remote OpenAI proxy.
|
|
12
|
-
*/
|
|
13
|
-
import type { ClientAdapter } from '../types.js';
|
|
14
|
-
export declare function createGeminiClient(home?: string): ClientAdapter;
|
|
15
|
-
export declare const geminiClient: ClientAdapter;
|
|
16
|
-
//# sourceMappingURL=gemini.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/clients/gemini.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAEV,aAAa,EAOd,MAAM,UAAU,CAAC;AAqClB,wBAAgB,kBAAkB,CAAC,IAAI,SAAgC,GAAG,aAAa,CA8QtF;AAED,eAAO,MAAM,YAAY,eAAuB,CAAC"}
|
package/dist/clients/gemini.js
DELETED
|
@@ -1,233 +0,0 @@
|
|
|
1
|
-
import { AnyPickError } from "../utils/errors.js";
|
|
2
|
-
import { ensureDir, pathExists, readJsonFile, writeJsonFile } from "../utils/fs.js";
|
|
3
|
-
import { resolveFromContext } from "./resolve.js";
|
|
4
|
-
import { syntheticProxyProfile } from "../core/profile-synth.js";
|
|
5
|
-
import { ANYPICK_MANAGED_KEY, managedMarker, removeClientEnvFiles, writeClientEnvFiles } from "./env-files.js";
|
|
6
|
-
import { createTempRuntimeRoot, makeIsolatedRuntime, materializeIsolatablePaths } from "./isolation.js";
|
|
7
|
-
import { DEFAULT_MODEL_ROLE } from "./model-roles.js";
|
|
8
|
-
import { upsertEnvFile } from "../providers/gemini-env.js";
|
|
9
|
-
import "../providers/gemini.js";
|
|
10
|
-
import { stateHomeRoot, stripKeysFromEnv } from "./gemini-client-utils.js";
|
|
11
|
-
import { join } from "node:path";
|
|
12
|
-
import { homedir } from "node:os";
|
|
13
|
-
//#region src/clients/gemini.ts
|
|
14
|
-
/**
|
|
15
|
-
* Gemini CLI client adapter.
|
|
16
|
-
*
|
|
17
|
-
* Persistent writes:
|
|
18
|
-
* - ~/.anypick/clients/gemini/env.sh (+ env.ps1)
|
|
19
|
-
* - ~/.gemini/.env managed keys (GEMINI_API_KEY, GEMINI_MODEL, …)
|
|
20
|
-
*
|
|
21
|
-
* Gemini CLI primarily authenticates via API key or Google OAuth.
|
|
22
|
-
* This adapter targets API-key / gateway-style apply. When the source is a
|
|
23
|
-
* native Gemini account, activation uses direct auth restore (provider.restore)
|
|
24
|
-
* rather than rewriting settings for a remote OpenAI proxy.
|
|
25
|
-
*/
|
|
26
|
-
function geminiDir(home = process.env.HOME ?? homedir()) {
|
|
27
|
-
return process.env.GEMINI_CONFIG_DIR ?? join(home, ".gemini");
|
|
28
|
-
}
|
|
29
|
-
function envPath(home = process.env.HOME ?? homedir()) {
|
|
30
|
-
return join(geminiDir(home), ".env");
|
|
31
|
-
}
|
|
32
|
-
function settingsPath(home = process.env.HOME ?? homedir()) {
|
|
33
|
-
return join(geminiDir(home), "settings.json");
|
|
34
|
-
}
|
|
35
|
-
function effectiveHome(ctx, liveHome) {
|
|
36
|
-
return ctx.isolatedHome ?? liveHome;
|
|
37
|
-
}
|
|
38
|
-
function createGeminiClient(home = process.env.HOME ?? homedir()) {
|
|
39
|
-
const liveEnv = envPath(home);
|
|
40
|
-
const liveSettings = settingsPath(home);
|
|
41
|
-
async function applyToHome(ctx, targetHome) {
|
|
42
|
-
const r = resolveFromContext(ctx);
|
|
43
|
-
const targetEnv = envPath(targetHome);
|
|
44
|
-
const targetSettings = settingsPath(targetHome);
|
|
45
|
-
const env = {};
|
|
46
|
-
if (r.apiKey) env.GEMINI_API_KEY = r.apiKey;
|
|
47
|
-
if (r.endpoint) {
|
|
48
|
-
env.GOOGLE_GEMINI_BASE_URL = r.endpoint;
|
|
49
|
-
env.GEMINI_API_BASE_URL = r.endpoint;
|
|
50
|
-
}
|
|
51
|
-
if (r.defaultModel) env.GEMINI_MODEL = r.defaultModel;
|
|
52
|
-
const extraEnv = r.overlay.env;
|
|
53
|
-
if (extraEnv && typeof extraEnv === "object" && !Array.isArray(extraEnv)) for (const [k, v] of Object.entries(extraEnv)) {
|
|
54
|
-
if (typeof v !== "string") continue;
|
|
55
|
-
if (k.startsWith("GEMINI_") || k.startsWith("GOOGLE_") || k === "GOOGLE_APPLICATION_CREDENTIALS") env[k] = v;
|
|
56
|
-
}
|
|
57
|
-
const managedPaths = [targetEnv, targetSettings];
|
|
58
|
-
const managedEnvKeys = Object.keys(env);
|
|
59
|
-
if (ctx.dryRun) return {
|
|
60
|
-
managedPaths: [
|
|
61
|
-
...managedPaths,
|
|
62
|
-
join(ctx.anypickRoot, "clients", "gemini", "env.sh"),
|
|
63
|
-
join(ctx.anypickRoot, "clients", "gemini", "env.ps1")
|
|
64
|
-
],
|
|
65
|
-
managedEnvKeys
|
|
66
|
-
};
|
|
67
|
-
let doc = {};
|
|
68
|
-
if (await pathExists(targetSettings)) try {
|
|
69
|
-
const parsed = await readJsonFile(targetSettings);
|
|
70
|
-
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) throw new Error("root value is not an object");
|
|
71
|
-
doc = parsed;
|
|
72
|
-
} catch (err) {
|
|
73
|
-
throw new AnyPickError(`Refusing to overwrite unreadable Gemini settings at ${targetSettings}: ${err instanceof Error ? err.message : String(err)}`, "CLIENT_CONFIG_INVALID");
|
|
74
|
-
}
|
|
75
|
-
let envPaths = [];
|
|
76
|
-
if (!ctx.isolatedHome) envPaths = await writeClientEnvFiles(ctx.anypickRoot, "gemini", env);
|
|
77
|
-
await ensureDir(geminiDir(targetHome));
|
|
78
|
-
await upsertEnvFile(targetEnv, env);
|
|
79
|
-
doc[ANYPICK_MANAGED_KEY] = managedMarker(managedEnvKeys);
|
|
80
|
-
await writeJsonFile(targetSettings, doc, 384);
|
|
81
|
-
return {
|
|
82
|
-
managedPaths: [...managedPaths, ...envPaths],
|
|
83
|
-
managedEnvKeys
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
const adapter = {
|
|
87
|
-
id: "gemini",
|
|
88
|
-
name: "Gemini CLI",
|
|
89
|
-
shortName: "Gemini",
|
|
90
|
-
binaryName: "gemini",
|
|
91
|
-
binaryEnvVar: "GEMINI_BINARY",
|
|
92
|
-
description: "Google Gemini CLI (API key / env runtime)",
|
|
93
|
-
supportedApiStyles: ["custom", "openai"],
|
|
94
|
-
nativeInstallations: [{
|
|
95
|
-
sourceId: "gemini-cli",
|
|
96
|
-
executables: ["gemini"]
|
|
97
|
-
}, {
|
|
98
|
-
sourceId: "antigravity",
|
|
99
|
-
macApplications: ["Antigravity.app", "Antigravity IDE.app"]
|
|
100
|
-
}],
|
|
101
|
-
capabilities: {
|
|
102
|
-
id: "gemini",
|
|
103
|
-
acceptedProtocols: ["openai"],
|
|
104
|
-
supportsEnvironmentOverlay: false,
|
|
105
|
-
supportsIsolatedHome: true,
|
|
106
|
-
supportsPersistentConfig: true,
|
|
107
|
-
protocolPreference: "openai"
|
|
108
|
-
},
|
|
109
|
-
modelRoles: () => DEFAULT_MODEL_ROLE,
|
|
110
|
-
async validate(ctx) {
|
|
111
|
-
const r = resolveFromContext(ctx);
|
|
112
|
-
if (!r.apiKey && !r.endpoint) throw new AnyPickError("Gemini apply needs an API key or endpoint. Use a gateway profile, or switch a Gemini account directly.", "CLIENT_CONFIG_INVALID");
|
|
113
|
-
},
|
|
114
|
-
async apply(ctx) {
|
|
115
|
-
return applyToHome(ctx, effectiveHome(ctx, home));
|
|
116
|
-
},
|
|
117
|
-
async listIsolatablePaths(liveState) {
|
|
118
|
-
return [{
|
|
119
|
-
sourcePath: envPath(liveState.home),
|
|
120
|
-
destinationPath: join(".gemini", ".env"),
|
|
121
|
-
kind: "file",
|
|
122
|
-
required: false
|
|
123
|
-
}, {
|
|
124
|
-
sourcePath: settingsPath(liveState.home),
|
|
125
|
-
destinationPath: join(".gemini", "settings.json"),
|
|
126
|
-
kind: "file",
|
|
127
|
-
required: false
|
|
128
|
-
}];
|
|
129
|
-
},
|
|
130
|
-
async createIsolatedRuntime(plan, paths) {
|
|
131
|
-
const runtimeRoot = await createTempRuntimeRoot("anypick-gemini-");
|
|
132
|
-
const isoHome = join(runtimeRoot, "home");
|
|
133
|
-
await ensureDir(isoHome);
|
|
134
|
-
await materializeIsolatablePaths(isoHome, paths);
|
|
135
|
-
const endpoint = plan.transport.endpoint ?? "";
|
|
136
|
-
const profile = plan.profile ?? syntheticProxyProfile({
|
|
137
|
-
name: `ephemeral-${plan.source.display}`,
|
|
138
|
-
endpoint,
|
|
139
|
-
apiKey: "anypick-proxy",
|
|
140
|
-
defaultModel: plan.model.mode === "explicit" ? plan.model.id : void 0
|
|
141
|
-
});
|
|
142
|
-
const ctx = {
|
|
143
|
-
profile: {
|
|
144
|
-
...profile,
|
|
145
|
-
meta: {
|
|
146
|
-
...profile.meta,
|
|
147
|
-
endpoint: endpoint || profile.meta.endpoint
|
|
148
|
-
},
|
|
149
|
-
secrets: {
|
|
150
|
-
...profile.secrets,
|
|
151
|
-
apiKey: profile.secrets.apiKey ?? "anypick-proxy"
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
|
-
clientId: "gemini",
|
|
155
|
-
dryRun: plan.dryRun,
|
|
156
|
-
verbose: plan.verbose,
|
|
157
|
-
proxyEndpoint: endpoint || void 0,
|
|
158
|
-
anypickRoot: plan.anypickRoot,
|
|
159
|
-
isolatedHome: isoHome
|
|
160
|
-
};
|
|
161
|
-
if (!plan.dryRun) await applyToHome(ctx, isoHome);
|
|
162
|
-
return makeIsolatedRuntime(runtimeRoot, {
|
|
163
|
-
HOME: isoHome,
|
|
164
|
-
GEMINI_CONFIG_DIR: join(isoHome, ".gemini"),
|
|
165
|
-
GEMINI_API_KEY: ctx.profile.secrets.apiKey ?? "",
|
|
166
|
-
...endpoint ? {
|
|
167
|
-
GOOGLE_GEMINI_BASE_URL: endpoint,
|
|
168
|
-
GEMINI_API_BASE_URL: endpoint
|
|
169
|
-
} : {}
|
|
170
|
-
});
|
|
171
|
-
},
|
|
172
|
-
async applyPersistent(plan) {
|
|
173
|
-
const profile = plan.profile ?? syntheticProxyProfile({
|
|
174
|
-
name: plan.source.display,
|
|
175
|
-
endpoint: plan.transport.endpoint ?? "",
|
|
176
|
-
apiKey: "anypick-proxy",
|
|
177
|
-
defaultModel: plan.model.mode === "explicit" ? plan.model.id : void 0
|
|
178
|
-
});
|
|
179
|
-
const endpoint = plan.transport.endpoint ?? (plan.transport.managedProxy ? `http://127.0.0.1:${plan.transport.managedProxy.port}` : profile.meta.endpoint ?? "");
|
|
180
|
-
const ctx = {
|
|
181
|
-
profile: {
|
|
182
|
-
...profile,
|
|
183
|
-
meta: {
|
|
184
|
-
...profile.meta,
|
|
185
|
-
endpoint
|
|
186
|
-
}
|
|
187
|
-
},
|
|
188
|
-
clientId: "gemini",
|
|
189
|
-
dryRun: plan.dryRun,
|
|
190
|
-
verbose: plan.verbose,
|
|
191
|
-
proxyEndpoint: endpoint || void 0,
|
|
192
|
-
anypickRoot: plan.anypickRoot
|
|
193
|
-
};
|
|
194
|
-
await adapter.validate(ctx);
|
|
195
|
-
return applyToHome(ctx, home);
|
|
196
|
-
},
|
|
197
|
-
async reset(state) {
|
|
198
|
-
await removeClientEnvFiles(stateHomeRoot(state, home), "gemini");
|
|
199
|
-
if (await pathExists(liveEnv)) {
|
|
200
|
-
const keys = state.managedEnvKeys ?? [];
|
|
201
|
-
await stripKeysFromEnv(liveEnv, keys);
|
|
202
|
-
}
|
|
203
|
-
if (await pathExists(liveSettings)) try {
|
|
204
|
-
const doc = await readJsonFile(liveSettings);
|
|
205
|
-
delete doc[ANYPICK_MANAGED_KEY];
|
|
206
|
-
await writeJsonFile(liveSettings, doc, 384);
|
|
207
|
-
} catch {}
|
|
208
|
-
},
|
|
209
|
-
async inspect() {
|
|
210
|
-
const present = await pathExists(liveEnv) || await pathExists(liveSettings);
|
|
211
|
-
const issues = [];
|
|
212
|
-
let summary;
|
|
213
|
-
if (await pathExists(liveSettings)) try {
|
|
214
|
-
const managed = (await readJsonFile(liveSettings))[ANYPICK_MANAGED_KEY];
|
|
215
|
-
summary = managed?.keys?.length ? `anypick-managed env keys: ${managed.keys.length}` : "settings present";
|
|
216
|
-
} catch {
|
|
217
|
-
issues.push("settings.json unreadable");
|
|
218
|
-
}
|
|
219
|
-
return {
|
|
220
|
-
present,
|
|
221
|
-
configPaths: [liveEnv, liveSettings],
|
|
222
|
-
summary,
|
|
223
|
-
issues: issues.length ? issues : void 0
|
|
224
|
-
};
|
|
225
|
-
}
|
|
226
|
-
};
|
|
227
|
-
return adapter;
|
|
228
|
-
}
|
|
229
|
-
var geminiClient = createGeminiClient();
|
|
230
|
-
//#endregion
|
|
231
|
-
export { createGeminiClient, geminiClient };
|
|
232
|
-
|
|
233
|
-
//# sourceMappingURL=gemini.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","names":[],"sources":["../../src/clients/gemini.ts"],"sourcesContent":["/**\n * Gemini CLI client adapter.\n *\n * Persistent writes:\n * - ~/.anypick/clients/gemini/env.sh (+ env.ps1)\n * - ~/.gemini/.env managed keys (GEMINI_API_KEY, GEMINI_MODEL, …)\n *\n * Gemini CLI primarily authenticates via API key or Google OAuth.\n * This adapter targets API-key / gateway-style apply. When the source is a\n * native Gemini account, activation uses direct auth restore (provider.restore)\n * rather than rewriting settings for a remote OpenAI proxy.\n */\n\nimport { join } from 'node:path';\nimport { homedir } from 'node:os';\nimport type {\n ApplyContext,\n ClientAdapter,\n ClientInspectResult,\n ClientLiveState,\n ClientState,\n IsolatablePath,\n IsolatedClientRuntime,\n ResolvedClientPlan,\n} from '../types';\nimport { AnyPickError } from '../utils/errors';\nimport { ensureDir, pathExists } from '../utils/fs';\nimport { resolveFromContext } from './resolve';\nimport {\n managedMarker,\n removeClientEnvFiles,\n ANYPICK_MANAGED_KEY,\n writeClientEnvFiles,\n} from './env-files';\nimport {\n createTempRuntimeRoot,\n makeIsolatedRuntime,\n materializeIsolatablePaths,\n syntheticProxyProfile,\n} from './isolation';\nimport { DEFAULT_MODEL_ROLE } from './model-roles';\nimport { upsertEnvFile } from '../providers/gemini';\nimport { writeJsonFile, readJsonFile } from '../utils/fs';\nimport { stripKeysFromEnv, stateHomeRoot } from './gemini-client-utils';\n\nfunction geminiDir(home = process.env.HOME ?? homedir()): string {\n return process.env.GEMINI_CONFIG_DIR ?? join(home, '.gemini');\n}\n\nfunction envPath(home = process.env.HOME ?? homedir()): string {\n return join(geminiDir(home), '.env');\n}\n\nfunction settingsPath(home = process.env.HOME ?? homedir()): string {\n return join(geminiDir(home), 'settings.json');\n}\n\nfunction effectiveHome(ctx: ApplyContext, liveHome: string): string {\n return ctx.isolatedHome ?? liveHome;\n}\n\nexport function createGeminiClient(home = process.env.HOME ?? homedir()): ClientAdapter {\n const liveEnv = envPath(home);\n const liveSettings = settingsPath(home);\n\n async function applyToHome(ctx: ApplyContext, targetHome: string) {\n const r = resolveFromContext(ctx);\n const targetEnv = envPath(targetHome);\n const targetSettings = settingsPath(targetHome);\n\n const env: Record<string, string> = {};\n if (r.apiKey) {\n env.GEMINI_API_KEY = r.apiKey;\n }\n if (r.endpoint) {\n // Best-effort: some forks / gateways honor a base URL override.\n env.GOOGLE_GEMINI_BASE_URL = r.endpoint;\n env.GEMINI_API_BASE_URL = r.endpoint;\n }\n if (r.defaultModel) {\n env.GEMINI_MODEL = r.defaultModel;\n }\n\n const extraEnv = r.overlay.env;\n if (extraEnv && typeof extraEnv === 'object' && !Array.isArray(extraEnv)) {\n for (const [k, v] of Object.entries(extraEnv)) {\n if (typeof v !== 'string') {\n continue;\n }\n if (\n k.startsWith('GEMINI_') ||\n k.startsWith('GOOGLE_') ||\n k === 'GOOGLE_APPLICATION_CREDENTIALS'\n ) {\n env[k] = v;\n }\n }\n }\n\n const managedPaths = [targetEnv, targetSettings];\n const managedEnvKeys = Object.keys(env);\n\n if (ctx.dryRun) {\n return {\n managedPaths: [\n ...managedPaths,\n join(ctx.anypickRoot, 'clients', 'gemini', 'env.sh'),\n join(ctx.anypickRoot, 'clients', 'gemini', 'env.ps1'),\n ],\n managedEnvKeys,\n };\n }\n\n // Existing user config is authoritative. A malformed JSON file must never\n // be replaced with an empty object, which would silently destroy unrelated\n // Gemini settings. Fail before writing env files or the .env target.\n let doc: Record<string, unknown> = {};\n if (await pathExists(targetSettings)) {\n try {\n const parsed = await readJsonFile<unknown>(targetSettings);\n if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {\n throw new Error('root value is not an object');\n }\n doc = parsed as Record<string, unknown>;\n } catch (err) {\n throw new AnyPickError(\n `Refusing to overwrite unreadable Gemini settings at ${targetSettings}: ${err instanceof Error ? err.message : String(err)}`,\n 'CLIENT_CONFIG_INVALID',\n );\n }\n }\n\n let envPaths: string[] = [];\n if (!ctx.isolatedHome) {\n envPaths = await writeClientEnvFiles(ctx.anypickRoot, 'gemini', env);\n }\n\n await ensureDir(geminiDir(targetHome));\n await upsertEnvFile(targetEnv, env);\n\n // Mark managed keys in settings.json (non-destructive)\n doc[ANYPICK_MANAGED_KEY] = managedMarker(managedEnvKeys);\n await writeJsonFile(targetSettings, doc, 0o600);\n\n return {\n managedPaths: [...managedPaths, ...envPaths],\n managedEnvKeys,\n };\n }\n\n const adapter: ClientAdapter = {\n id: 'gemini',\n name: 'Gemini CLI',\n shortName: 'Gemini',\n binaryName: 'gemini',\n binaryEnvVar: 'GEMINI_BINARY',\n description: 'Google Gemini CLI (API key / env runtime)',\n supportedApiStyles: ['custom', 'openai'],\n nativeInstallations: [\n { sourceId: 'gemini-cli', executables: ['gemini'] },\n {\n sourceId: 'antigravity',\n macApplications: ['Antigravity.app', 'Antigravity IDE.app'],\n },\n ],\n capabilities: {\n id: 'gemini',\n acceptedProtocols: ['openai'],\n supportsEnvironmentOverlay: false,\n supportsIsolatedHome: true,\n supportsPersistentConfig: true,\n protocolPreference: 'openai',\n },\n modelRoles: () => DEFAULT_MODEL_ROLE,\n\n async validate(ctx: ApplyContext): Promise<void> {\n const r = resolveFromContext(ctx);\n // API key optional when user relies on OAuth account switch (direct transport)\n if (!r.apiKey && !r.endpoint) {\n throw new AnyPickError(\n 'Gemini apply needs an API key or endpoint. Use a gateway profile, or switch a Gemini account directly.',\n 'CLIENT_CONFIG_INVALID',\n );\n }\n },\n\n async apply(ctx: ApplyContext) {\n return applyToHome(ctx, effectiveHome(ctx, home));\n },\n\n async listIsolatablePaths(liveState: ClientLiveState): Promise<readonly IsolatablePath[]> {\n return [\n {\n sourcePath: envPath(liveState.home),\n destinationPath: join('.gemini', '.env'),\n kind: 'file',\n required: false,\n },\n {\n sourcePath: settingsPath(liveState.home),\n destinationPath: join('.gemini', 'settings.json'),\n kind: 'file',\n required: false,\n },\n ];\n },\n\n async createIsolatedRuntime(\n plan: ResolvedClientPlan,\n paths: readonly IsolatablePath[],\n ): Promise<IsolatedClientRuntime> {\n const runtimeRoot = await createTempRuntimeRoot('anypick-gemini-');\n const isoHome = join(runtimeRoot, 'home');\n await ensureDir(isoHome);\n await materializeIsolatablePaths(isoHome, paths);\n\n const endpoint = plan.transport.endpoint ?? '';\n const profile =\n plan.profile ??\n syntheticProxyProfile({\n name: `ephemeral-${plan.source.display}`,\n endpoint,\n apiKey: 'anypick-proxy',\n defaultModel: plan.model.mode === 'explicit' ? plan.model.id : undefined,\n });\n\n const ctx: ApplyContext = {\n profile: {\n ...profile,\n meta: { ...profile.meta, endpoint: endpoint || profile.meta.endpoint },\n secrets: {\n ...profile.secrets,\n apiKey: profile.secrets.apiKey ?? 'anypick-proxy',\n },\n },\n clientId: 'gemini',\n dryRun: plan.dryRun,\n verbose: plan.verbose,\n proxyEndpoint: endpoint || undefined,\n anypickRoot: plan.anypickRoot,\n isolatedHome: isoHome,\n };\n\n if (!plan.dryRun) {\n await applyToHome(ctx, isoHome);\n }\n\n return makeIsolatedRuntime(runtimeRoot, {\n HOME: isoHome,\n GEMINI_CONFIG_DIR: join(isoHome, '.gemini'),\n GEMINI_API_KEY: ctx.profile.secrets.apiKey ?? '',\n ...(endpoint ? { GOOGLE_GEMINI_BASE_URL: endpoint, GEMINI_API_BASE_URL: endpoint } : {}),\n });\n },\n\n async applyPersistent(plan: ResolvedClientPlan) {\n const profile =\n plan.profile ??\n syntheticProxyProfile({\n name: plan.source.display,\n endpoint: plan.transport.endpoint ?? '',\n apiKey: 'anypick-proxy',\n defaultModel: plan.model.mode === 'explicit' ? plan.model.id : undefined,\n });\n const endpoint =\n plan.transport.endpoint ??\n (plan.transport.managedProxy\n ? `http://127.0.0.1:${plan.transport.managedProxy.port}`\n : (profile.meta.endpoint ?? ''));\n const ctx: ApplyContext = {\n profile: {\n ...profile,\n meta: { ...profile.meta, endpoint },\n },\n clientId: 'gemini',\n dryRun: plan.dryRun,\n verbose: plan.verbose,\n proxyEndpoint: endpoint || undefined,\n anypickRoot: plan.anypickRoot,\n };\n await adapter.validate(ctx);\n return applyToHome(ctx, home);\n },\n\n async reset(state: ClientState): Promise<void> {\n const root = stateHomeRoot(state, home);\n await removeClientEnvFiles(root, 'gemini');\n\n // Strip managed keys from live .env\n if (await pathExists(liveEnv)) {\n const keys = state.managedEnvKeys ?? [];\n // upsertEnvFile only writes defined keys; remove by rewrite\n await stripKeysFromEnv(liveEnv, keys);\n }\n\n if (await pathExists(liveSettings)) {\n try {\n const doc = await readJsonFile<Record<string, unknown>>(liveSettings);\n delete doc[ANYPICK_MANAGED_KEY];\n await writeJsonFile(liveSettings, doc, 0o600);\n } catch {\n // ignore\n }\n }\n },\n\n async inspect(): Promise<ClientInspectResult> {\n const present = (await pathExists(liveEnv)) || (await pathExists(liveSettings));\n const issues: string[] = [];\n let summary: string | undefined;\n if (await pathExists(liveSettings)) {\n try {\n const doc = await readJsonFile<Record<string, unknown>>(liveSettings);\n const managed = doc[ANYPICK_MANAGED_KEY] as { keys?: string[] } | undefined;\n summary = managed?.keys?.length\n ? `anypick-managed env keys: ${managed.keys.length}`\n : 'settings present';\n } catch {\n issues.push('settings.json unreadable');\n }\n }\n return {\n present,\n configPaths: [liveEnv, liveSettings],\n summary,\n issues: issues.length ? issues : undefined,\n };\n },\n };\n\n return adapter;\n}\n\nexport const geminiClient = createGeminiClient();\n"],"mappings":"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"}
|
package/dist/clients/index.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { ClientRegistry } from './registry.js';
|
|
2
|
-
import { claudeCodeClient } from './claude-code.js';
|
|
3
|
-
import { codexClient } from './codex.js';
|
|
4
|
-
import { geminiClient } from './gemini.js';
|
|
5
|
-
import { kiroClient } from './kiro.js';
|
|
6
|
-
export declare function registerBuiltinClients(registry: ClientRegistry): void;
|
|
7
|
-
export { claudeCodeClient, codexClient, geminiClient, kiroClient };
|
|
8
|
-
export { ClientRegistry, clientRegistry } from './registry.js';
|
|
9
|
-
export { createClaudeCodeClient } from './claude-code.js';
|
|
10
|
-
export { createCodexClient } from './codex.js';
|
|
11
|
-
export { createGeminiClient } from './gemini.js';
|
|
12
|
-
export { createKiroClient } from './kiro.js';
|
|
13
|
-
export { CLAUDE_MODEL_ROLES, CODEX_DESKTOP_MODEL_ROLES, DEFAULT_MODEL_ROLE, defaultModelRolesForProxy, modelDefaultsForSuggestions, modelRolesForClient, modelRolesFromClientOptions, normalizeModelRoles, suggestModelsForProxyProvider, } from './model-roles.js';
|
|
14
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clients/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAKrE;AAED,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,yBAAyB,EACzB,2BAA2B,EAC3B,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,6BAA6B,GAC9B,MAAM,eAAe,CAAC"}
|
package/dist/clients/index.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { modelRolesFromClientOptions } from "../core/model-roles.js";
|
|
2
|
-
import { defaultModelRolesForProxy, modelDefaultsForSuggestions, modelRolesForClient } from "./model-roles.js";
|
|
3
|
-
import { claudeCodeClient } from "./claude-code.js";
|
|
4
|
-
import { codexClient } from "./codex.js";
|
|
5
|
-
import { geminiClient } from "./gemini.js";
|
|
6
|
-
import { kiroClient } from "./kiro.js";
|
|
7
|
-
import { ClientRegistry } from "./registry.js";
|
|
8
|
-
//#region src/clients/index.ts
|
|
9
|
-
function registerBuiltinClients(registry) {
|
|
10
|
-
registry.register(claudeCodeClient);
|
|
11
|
-
registry.register(codexClient);
|
|
12
|
-
registry.register(geminiClient);
|
|
13
|
-
registry.register(kiroClient);
|
|
14
|
-
}
|
|
15
|
-
//#endregion
|
|
16
|
-
export { ClientRegistry, claudeCodeClient, codexClient, defaultModelRolesForProxy, geminiClient, kiroClient, modelDefaultsForSuggestions, modelRolesForClient, modelRolesFromClientOptions, registerBuiltinClients };
|
|
17
|
-
|
|
18
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/clients/index.ts"],"sourcesContent":["import type { ClientRegistry } from './registry';\nimport { claudeCodeClient } from './claude-code';\nimport { codexClient } from './codex';\nimport { geminiClient } from './gemini';\nimport { kiroClient } from './kiro';\n\nexport function registerBuiltinClients(registry: ClientRegistry): void {\n registry.register(claudeCodeClient);\n registry.register(codexClient);\n registry.register(geminiClient);\n registry.register(kiroClient);\n}\n\nexport { claudeCodeClient, codexClient, geminiClient, kiroClient };\nexport { ClientRegistry, clientRegistry } from './registry';\nexport { createClaudeCodeClient } from './claude-code';\nexport { createCodexClient } from './codex';\nexport { createGeminiClient } from './gemini';\nexport { createKiroClient } from './kiro';\nexport {\n CLAUDE_MODEL_ROLES,\n CODEX_DESKTOP_MODEL_ROLES,\n DEFAULT_MODEL_ROLE,\n defaultModelRolesForProxy,\n modelDefaultsForSuggestions,\n modelRolesForClient,\n modelRolesFromClientOptions,\n normalizeModelRoles,\n suggestModelsForProxyProvider,\n} from './model-roles';\n"],"mappings":";;;;;;;;AAMA,SAAgB,uBAAuB,UAAgC;CACrE,SAAS,SAAS,gBAAgB;CAClC,SAAS,SAAS,WAAW;CAC7B,SAAS,SAAS,YAAY;CAC9B,SAAS,SAAS,UAAU;AAC9B"}
|