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":"kiro.js","names":[],"sources":["../../src/providers/kiro.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\nimport { join } from 'node:path';\nimport { homedir } from 'node:os';\nimport type {\n Account,\n AccountMeta,\n CredentialInput,\n CredentialInputField,\n LiveAuthStatus,\n Provider,\n ProxyContext,\n ProxyHandle,\n ProxyStatus,\n SnapshotMeta,\n SourceAdapter,\n} from '../types';\nimport { kiroAccountAdapter, poolAdapterFor } from '../sources/account-adapters';\nimport { KIRO_PROXY_BINARIES, resolveKiroProxyCommand } from '../sources/kiro-proxy-bin';\nimport {\n copyFileSafe,\n ensureDir,\n pathExists,\n readJsonFile,\n removePath,\n restoreRequiredFile,\n writeJsonFile,\n} from '../utils/fs';\nimport { AnyPickError } from '../utils/errors';\nimport {\n clearKiroSecrets,\n kiroSecretIdentity,\n readKiroSecrets,\n writeKiroSecrets,\n type KiroSecrets,\n} from './kiro-secret-store';\nimport {\n readExternalProxyLogs,\n startExternalProxy,\n statusExternalProxy,\n stopExternalProxy,\n} from './proxy-process';\nimport { snapshotMatchesLiveByFiles } from './auth-fingerprint';\nimport { rolesFromLiveDiscovery } from './model-policy';\n\n/**\n * AWS Kiro (CLI + IDE social/Builder ID session tokens)\n *\n * A Kiro login has two possible homes and a machine can hold both:\n * - kiro-cli 2.x keeps it in a secret store (see `kiro-secret-store.ts`)\n * - the Kiro IDE and older kiro-cli write ~/.aws/sso/cache/*.json\n *\n * The IDE's filenames are SHA-1 hashes of the SSO session, not the two names\n * kiro-cli used, so files are recognised by *shape* rather than by name — that\n * also skips the client-registration files sitting in the same directory, which\n * carry a clientId but no token.\n *\n * Compatibility proxy: `kirolink` (Anthropic + OpenAI → Kiro API).\n */\n\n/** Snapshot member holding the secret store; never a token file itself. */\nconst SECRETS_FILE = 'kiro-secret-store.json';\n\n/**\n * Snapshot member holding a user-supplied Kiro API key. Its presence is what\n * makes the account `proxy-only`: nothing on this machine reads it, only the\n * proxy this account starts.\n */\nconst API_KEY_FILE = 'kiro-api-key.json';\n\ntype ApiKeySnapshot = { kiroApiKey: string; apiRegion?: string };\n\n/** Mirrors kirolink's own floor for `KIROLINK_KIRO_API_KEY`. */\nconst MIN_API_KEY_BYTES = 16;\n\n/**\n * Kiro runtime regions kirolink knows about, mirroring its own setup wizard.\n * The region selects the data-plane host (`runtime.<region>.kiro.dev`), so a\n * wrong one starts fine and then fails every request — offer the list rather\n * than a text box.\n */\nconst API_REGIONS = ['us-east-1', 'eu-central-1', 'ap-southeast-1', 'ap-northeast-1'] as const;\n\nconst DEFAULT_PORT = 4119;\n\ntype TokenFile = { name: string; path: string; expiresAt: number };\n\n/**\n * True for an SSO cache entry that carries a credential.\n *\n * Deliberately just \"has an access token\": that is already enough to exclude\n * the client-registration files sharing the directory, which hold a clientId\n * and an expiry but never a token. Demanding more — a profileArn, a parseable\n * expiry — would risk rejecting a real Kiro IDE token whose shape differs, and\n * failing to see a login is the bug this scan exists to fix.\n */\nfunction looksLikeToken(data: Record<string, unknown>): boolean {\n const accessToken = data.accessToken ?? data.access_token;\n return typeof accessToken === 'string' && accessToken.length > 0;\n}\n\nexport class KiroProvider implements Provider {\n readonly id = 'kiro';\n readonly name = 'AWS Kiro';\n readonly shortName = 'Kiro';\n readonly description =\n 'Manages the kiro-cli secret store and ~/.aws/sso/cache (+ optional kirolink proxy)';\n readonly defaultProxyPort = DEFAULT_PORT;\n readonly proxyCompatibility = 'Anthropic + OpenAI API';\n\n roleDefaults(): Record<string, string> {\n return rolesFromLiveDiscovery();\n }\n\n roleFriendlyModels(): readonly string[] {\n return [\n 'claude-sonnet-5',\n 'claude-opus-5',\n 'claude-haiku-4-5',\n 'claude-sonnet',\n 'claude-opus',\n 'claude-haiku',\n ];\n }\n\n constructor(private readonly home = homedir()) {}\n\n sourceAdapter(account: Account): SourceAdapter {\n return kiroAccountAdapter(account);\n }\n\n poolSourceAdapter(): SourceAdapter {\n // Kiro is served by the external `kirolink` bridge, not the builtin proxy.\n return poolAdapterFor(this.id, this, { proxyTransport: 'managed_external_proxy' });\n }\n\n private get cacheDir(): string {\n return process.env.KIRO_SSO_CACHE_DIR ?? join(this.home, '.aws', 'sso', 'cache');\n }\n\n private livePath(file: string): string {\n return join(this.cacheDir, file);\n }\n\n /** Cache entries that carry a credential, freshest first. */\n private async liveTokenFiles(): Promise<TokenFile[]> {\n const { readdir } = await import('node:fs/promises');\n let entries: string[];\n try {\n entries = await readdir(this.cacheDir);\n } catch {\n return [];\n }\n\n const found: TokenFile[] = [];\n for (const name of entries) {\n if (!name.endsWith('.json')) {\n continue;\n }\n const path = this.livePath(name);\n try {\n const data = await readJsonFile<Record<string, unknown>>(path);\n if (!looksLikeToken(data)) {\n continue;\n }\n const raw = data.expiresAt ?? data.expires_at;\n const at = typeof raw === 'string' ? new Date(raw).getTime() : Number.NaN;\n found.push({ name, path, expiresAt: Number.isFinite(at) ? at : 0 });\n } catch {\n // Unreadable or not JSON: not a credential.\n }\n }\n return found.sort((a, b) => b.expiresAt - a.expiresAt);\n }\n\n /** Token files a snapshot carries, by their original cache-dir names. */\n private async snapshotTokenFiles(srcDir: string): Promise<string[]> {\n const { readdir } = await import('node:fs/promises');\n try {\n return (await readdir(srcDir)).filter(\n (name) => name !== SECRETS_FILE && name !== API_KEY_FILE,\n );\n } catch {\n return [];\n }\n }\n\n async detectLive(): Promise<LiveAuthStatus> {\n const [secrets, files] = await Promise.all([readKiroSecrets(this.home), this.liveTokenFiles()]);\n\n const where: string[] = [];\n if (Object.keys(secrets).length > 0) {\n where.push('kiro-cli secret store');\n }\n where.push(...files.map((file) => file.name));\n\n if (where.length === 0) {\n return { present: false };\n }\n\n const identity =\n kiroSecretIdentity(secrets) ?? (await identityFrom(files.map((file) => file.path)));\n\n return { present: true, identity, details: where.join(', ') };\n }\n\n async snapshotMatchesLive(snapshotDir: string): Promise<boolean> {\n // An API key is never on disk as a Kiro login, and its snapshot carries no\n // token files — which the file comparison below would read as a vacuous\n // match, marking every api-key account live.\n if (await readApiKeyFile(join(snapshotDir, API_KEY_FILE))) {\n return false;\n }\n\n const snapshotSecrets = await readSecretsFile(join(snapshotDir, SECRETS_FILE));\n if (snapshotSecrets) {\n // The secret store is what kiro-cli actually reads, so when a snapshot has\n // one it decides the answer on its own — a leftover cache file from an\n // older login must not make a live account look stale, or the reverse.\n return sameSecrets(snapshotSecrets, await readKiroSecrets(this.home));\n }\n\n const names = await this.snapshotTokenFiles(snapshotDir);\n return snapshotMatchesLiveByFiles(\n names.map((name) => ({\n name,\n livePath: this.livePath(name),\n snapshotPath: join(snapshotDir, name),\n })),\n );\n }\n\n readonly credentialInputs = ['api-key'] as const;\n\n credentialInputFields(kind: string): readonly CredentialInputField[] {\n if (kind !== 'api-key') {\n return [];\n }\n return [{ name: 'region', label: 'API region', choices: API_REGIONS, default: API_REGIONS[0] }];\n }\n\n /**\n * Save a Kiro API key (`ksk_…`) as an account. There is no live login to read\n * and nothing to restore later: the key only ever reaches the Kiro runtime\n * through `kirolink`, which this account's proxy starts in `api-key` mode.\n */\n async backupInput(input: CredentialInput, destDir: string): Promise<SnapshotMeta> {\n if (input.kind !== 'api-key') {\n throw new AnyPickError(\n `AWS Kiro does not accept a ${input.kind} credential.`,\n 'UNSUPPORTED_CREDENTIAL_INPUT',\n );\n }\n const kiroApiKey = input.secret.trim();\n if (!kiroApiKey) {\n throw new AnyPickError('The Kiro API key is empty.', 'INVALID_CREDENTIAL');\n }\n // kirolink refuses a shorter key, and it refuses it at proxy start — which\n // is long after the point where the user could still see what they typed.\n if (Buffer.byteLength(kiroApiKey) < MIN_API_KEY_BYTES) {\n throw new AnyPickError(\n `That Kiro API key is too short to be valid (needs at least ${MIN_API_KEY_BYTES} characters).`,\n {\n code: 'INVALID_CREDENTIAL',\n suggestions: ['Copy the whole key, including its ksk_ prefix.'],\n },\n );\n }\n\n const apiRegion = input.options?.region?.trim() || undefined;\n // The region becomes a hostname (`runtime.<region>.kiro.dev`), so a shape\n // kirolink would refuse has to fail here. At proxy start it is a line in a\n // log file nobody is watching.\n if (apiRegion && !/^[a-z0-9-]+$/u.test(apiRegion)) {\n throw new AnyPickError(`\"${apiRegion}\" is not a valid Kiro API region.`, {\n code: 'INVALID_CREDENTIAL',\n suggestions: [`Known regions: ${API_REGIONS.join(', ')}.`],\n });\n }\n await ensureDir(destDir);\n const snapshot: ApiKeySnapshot = { kiroApiKey, apiRegion };\n await writeJsonFile(join(destDir, API_KEY_FILE), snapshot);\n\n return { identity: apiKeyIdentity(kiroApiKey), credentialKind: 'proxy-only' };\n }\n\n async backup(\n destDir: string,\n ): Promise<Partial<Pick<AccountMeta, 'identity' | 'label' | 'notes'>>> {\n await ensureDir(destDir);\n const [secrets, files] = await Promise.all([readKiroSecrets(this.home), this.liveTokenFiles()]);\n\n let saved = 0;\n if (Object.keys(secrets).length > 0) {\n await writeJsonFile(join(destDir, SECRETS_FILE), secrets);\n saved += 1;\n }\n\n const copied: string[] = [];\n for (const file of files) {\n if (await copyFileSafe(file.path, join(destDir, file.name))) {\n saved += 1;\n copied.push(join(destDir, file.name));\n }\n }\n\n const identity = kiroSecretIdentity(secrets) ?? (await identityFrom(copied));\n\n if (saved === 0) {\n throw new AnyPickError(\n `No Kiro login found in the kiro-cli secret store or ${this.cacheDir}. Run kiro-cli login first.`,\n 'NO_LIVE_AUTH',\n );\n }\n\n return { identity };\n }\n\n async restore(srcDir: string): Promise<void> {\n // Core already skips restore for a proxy-only account; this also holds for\n // any other caller, because writing an empty secret store and pruning the\n // cache would wipe a real login to activate a key that never lived there.\n if (await readApiKeyFile(join(srcDir, API_KEY_FILE))) {\n return;\n }\n\n const secrets = await readSecretsFile(join(srcDir, SECRETS_FILE));\n const names = await this.snapshotTokenFiles(srcDir);\n if (!secrets && names.length === 0) {\n throw new AnyPickError(`Kiro snapshot has no credentials in ${srcDir}`, 'EMPTY_SNAPSHOT');\n }\n\n // Another account's cache file left in place would still be picked up — the\n // proxy chooses by expiry, not by name — so the switch has to remove what it\n // is not restoring rather than just overwriting.\n for (const file of await this.liveTokenFiles()) {\n if (!names.includes(file.name)) {\n await removePath(file.path);\n }\n }\n\n await ensureDir(this.cacheDir);\n for (const name of names) {\n await restoreRequiredFile(join(srcDir, name), this.livePath(name), name);\n }\n\n await writeKiroSecrets(secrets ?? {}, this.home);\n }\n\n async describeSnapshot(\n srcDir: string,\n ): Promise<Partial<Pick<AccountMeta, 'identity' | 'label' | 'notes'>>> {\n const apiKey = await readApiKeyFile(join(srcDir, API_KEY_FILE));\n if (apiKey) {\n return { identity: apiKeyIdentity(apiKey.kiroApiKey) };\n }\n\n const secrets = await readSecretsFile(join(srcDir, SECRETS_FILE));\n const names = await this.snapshotTokenFiles(srcDir);\n const identity =\n (secrets ? kiroSecretIdentity(secrets) : undefined) ??\n (await identityFrom(names.map((name) => join(srcDir, name))));\n return identity ? { identity } : {};\n }\n\n /**\n * Remove the local Kiro login only — does NOT call AWS/Kiro logout.\n */\n async clearLive(): Promise<void> {\n for (const file of await this.liveTokenFiles()) {\n await removePath(file.path);\n }\n await clearKiroSecrets(this.home);\n }\n\n // ── Proxy (kirolink) ────────────────────────────────────────────\n\n async startProxy(ctx: ProxyContext): Promise<ProxyHandle> {\n // Force kirolink onto the credential this binding activated. Left to its own\n // saved config it may run in a mode against an unrelated Kiro credential, so\n // the proxy would serve a different identity than the account the user\n // bound — silently, since it still starts and answers /health. These are\n // environment overrides, which kirolink applies for the run without writing\n // them back, so a bare `kirolink` outside AnyPick keeps the user's own mode.\n const apiKey = await readApiKeyFile(join(ctx.snapshotDir, API_KEY_FILE));\n const authMode: Record<string, string> = apiKey\n ? {\n KIROLINK_AUTH: 'api-key',\n KIROLINK_KIRO_API_KEY: apiKey.kiroApiKey,\n ...(apiKey.apiRegion ? { KIROLINK_API_REGION: apiKey.apiRegion } : {}),\n }\n : { KIROLINK_AUTH: 'cli' };\n\n const tokenPath = apiKey ? undefined : await this.resolveTokenPath();\n\n // Discovery is shared with the capability gate (spec §19.5) so a machine\n // that classified `managed_external_proxy` cannot then fail to spawn:\n // - KIROLINK_BIN : explicit binary override (full path or alias)\n // - KIROLINK_JS : run a JS entry via `node` (no shebang exec needed)\n // - PATH + derived package-manager / user-local bin dirs otherwise\n const env = () => ({\n ...process.env,\n ...authMode,\n ...(tokenPath ? { KIRO_PROXY_TOKEN_PATH: tokenPath } : {}),\n });\n const command = resolveKiroProxyCommand();\n\n if (command?.kind === 'node-entry') {\n return startExternalProxy(ctx, {\n label: 'Kiro',\n binaries: ['node'],\n defaultPort: DEFAULT_PORT,\n compatibility: this.proxyCompatibility,\n buildArgs: (_c, port, host) => [command.entry, '-p', String(port), '--host', host],\n env,\n });\n }\n\n return startExternalProxy(ctx, {\n label: 'Kiro',\n // A resolved path is passed as the sole binary so `startExternalProxy`\n // spawns exactly what the gate saw; the name list is the fallback when\n // discovery returned nothing (its error names all the tried names).\n binaries: command ? [command.path] : [...KIRO_PROXY_BINARIES],\n defaultPort: DEFAULT_PORT,\n compatibility: this.proxyCompatibility,\n buildArgs: (_c, port, host) => ['-p', String(port), '--host', host],\n env,\n });\n }\n\n async stopProxy(ctx: ProxyContext): Promise<void> {\n await stopExternalProxy(ctx);\n }\n\n async proxyStatus(ctx: ProxyContext): Promise<ProxyStatus> {\n const status = await statusExternalProxy(ctx, {\n compatibility: this.proxyCompatibility,\n });\n // Fill endpoint from defaults when running but port was defaulted\n if (status.running && !status.endpoint) {\n const host = ctx.config.host ?? '127.0.0.1';\n const port = ctx.config.port ?? DEFAULT_PORT;\n status.endpoint = `http://${host}:${port}`;\n }\n return status;\n }\n\n async readProxyLogs(ctx: ProxyContext, lines?: number): Promise<string> {\n return readExternalProxyLogs(ctx, lines);\n }\n\n /**\n * Pin the proxy to a cache file only when the secret store is empty. A pin is\n * an override that stops kirolink searching, so pinning while kiro-cli holds\n * the real login would force the proxy onto a stale file.\n */\n private async resolveTokenPath(): Promise<string | undefined> {\n if (Object.keys(await readKiroSecrets(this.home)).length > 0) {\n return undefined;\n }\n const [freshest] = await this.liveTokenFiles();\n return freshest?.path;\n }\n}\n\nasync function readApiKeyFile(path: string): Promise<ApiKeySnapshot | null> {\n if (!(await pathExists(path))) {\n return null;\n }\n try {\n const data = await readJsonFile<Record<string, unknown>>(path);\n if (typeof data.kiroApiKey !== 'string' || !data.kiroApiKey) {\n return null;\n }\n return {\n kiroApiKey: data.kiroApiKey,\n apiRegion: typeof data.apiRegion === 'string' ? data.apiRegion : undefined,\n };\n } catch {\n return null;\n }\n}\n\n/**\n * A stable name for an API key that does not disclose it. A key carries no\n * email, and the raw value must not become an account identity — identities are\n * printed, exported, and stored in meta.\n */\nfunction apiKeyIdentity(kiroApiKey: string): string {\n return `api-key:${createHash('sha256').update(kiroApiKey).digest('hex').slice(0, 12)}`;\n}\n\nasync function readSecretsFile(path: string): Promise<KiroSecrets | null> {\n if (!(await pathExists(path))) {\n return null;\n }\n try {\n const data = await readJsonFile<Record<string, unknown>>(path);\n const secrets: KiroSecrets = {};\n for (const [key, value] of Object.entries(data)) {\n if (typeof value === 'string') {\n secrets[key] = value;\n }\n }\n return secrets;\n } catch {\n return null;\n }\n}\n\nfunction sameSecrets(a: KiroSecrets, b: KiroSecrets): boolean {\n const keys = Object.keys(a);\n return keys.length === Object.keys(b).length && keys.every((key) => a[key] === b[key]);\n}\n\n/**\n * A name for the account a token file belongs to, or undefined when the file\n * carries nothing identifying.\n *\n * The placeholder for \"a token with no identity in it\" is applied by\n * `identityFrom` rather than here: cache filenames are content hashes, so the\n * scan order is arbitrary, and returning the placeholder early would let it win\n * over a real identity sitting in the next file.\n */\nasync function tryIdentity(path: string): Promise<string | undefined> {\n try {\n const data = await readJsonFile<Record<string, unknown>>(path);\n for (const key of ['email', 'username', 'startUrl', 'clientId', 'provider']) {\n if (typeof data[key] === 'string' && data[key]) {\n return data[key];\n }\n }\n const arn = data.profileArn ?? data.profile_arn;\n if (typeof arn === 'string') {\n return arn.split('/').pop() ?? undefined;\n }\n } catch {\n // ignore\n }\n return undefined;\n}\n\n/** The best identity across some token files, falling back to a placeholder. */\nasync function identityFrom(paths: string[]): Promise<string | undefined> {\n for (const path of paths) {\n const identity = await tryIdentity(path);\n if (identity) {\n return identity;\n }\n }\n return paths.length > 0 ? 'session-token' : undefined;\n}\n\nexport const kiroProvider = new KiroProvider();\n"],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared model-policy helpers for providers whose model catalog is account- or
|
|
3
|
-
* upstream-specific.
|
|
4
|
-
*
|
|
5
|
-
* These providers front a proxy that exposes `/v1/models`, so the authoritative
|
|
6
|
-
* list is only knowable at runtime. Declaring the four Claude-Code roles with
|
|
7
|
-
* empty values says "this role applies, fill it from live discovery" — which is
|
|
8
|
-
* meaningfully different from omitting the key (role does not apply) and from
|
|
9
|
-
* inventing a plausible-looking id the account may not be entitled to.
|
|
10
|
-
*/
|
|
11
|
-
/** Role ids Claude Code exposes. Other clients use `default` only. */
|
|
12
|
-
export declare const CLAUDE_ROLE_IDS: readonly ['default', 'sonnet', 'opus', 'haiku'];
|
|
13
|
-
/** Four roles, all awaiting live discovery. */
|
|
14
|
-
export declare function rolesFromLiveDiscovery(): Record<string, string>;
|
|
15
|
-
//# sourceMappingURL=model-policy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-policy.d.ts","sourceRoot":"","sources":["../../src/providers/model-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,sEAAsE;AACtE,eAAO,MAAM,eAAe,YAAI,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAU,CAAC;AAE/E,+CAA+C;AAC/C,wBAAgB,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAE/D"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
//#region src/providers/model-policy.ts
|
|
2
|
-
/**
|
|
3
|
-
* Shared model-policy helpers for providers whose model catalog is account- or
|
|
4
|
-
* upstream-specific.
|
|
5
|
-
*
|
|
6
|
-
* These providers front a proxy that exposes `/v1/models`, so the authoritative
|
|
7
|
-
* list is only knowable at runtime. Declaring the four Claude-Code roles with
|
|
8
|
-
* empty values says "this role applies, fill it from live discovery" — which is
|
|
9
|
-
* meaningfully different from omitting the key (role does not apply) and from
|
|
10
|
-
* inventing a plausible-looking id the account may not be entitled to.
|
|
11
|
-
*/
|
|
12
|
-
/** Role ids Claude Code exposes. Other clients use `default` only. */
|
|
13
|
-
var CLAUDE_ROLE_IDS = [
|
|
14
|
-
"default",
|
|
15
|
-
"sonnet",
|
|
16
|
-
"opus",
|
|
17
|
-
"haiku"
|
|
18
|
-
];
|
|
19
|
-
/** Four roles, all awaiting live discovery. */
|
|
20
|
-
function rolesFromLiveDiscovery() {
|
|
21
|
-
return Object.fromEntries(CLAUDE_ROLE_IDS.map((r) => [r, ""]));
|
|
22
|
-
}
|
|
23
|
-
//#endregion
|
|
24
|
-
export { CLAUDE_ROLE_IDS, rolesFromLiveDiscovery };
|
|
25
|
-
|
|
26
|
-
//# sourceMappingURL=model-policy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-policy.js","names":[],"sources":["../../src/providers/model-policy.ts"],"sourcesContent":["/**\n * Shared model-policy helpers for providers whose model catalog is account- or\n * upstream-specific.\n *\n * These providers front a proxy that exposes `/v1/models`, so the authoritative\n * list is only knowable at runtime. Declaring the four Claude-Code roles with\n * empty values says \"this role applies, fill it from live discovery\" — which is\n * meaningfully different from omitting the key (role does not apply) and from\n * inventing a plausible-looking id the account may not be entitled to.\n */\n\n/** Role ids Claude Code exposes. Other clients use `default` only. */\nexport const CLAUDE_ROLE_IDS = ['default', 'sonnet', 'opus', 'haiku'] as const;\n\n/** Four roles, all awaiting live discovery. */\nexport function rolesFromLiveDiscovery(): Record<string, string> {\n return Object.fromEntries(CLAUDE_ROLE_IDS.map((r) => [r, '']));\n}\n"],"mappings":";;;;;;;;;;;;AAYA,IAAa,kBAAkB;CAAC;CAAW;CAAU;CAAQ;AAAO;;AAGpE,SAAgB,yBAAiD;CAC/D,OAAO,OAAO,YAAY,gBAAgB,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AAC/D"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenCode auth.json helpers.
|
|
3
|
-
*
|
|
4
|
-
* OpenCode is a multi-provider CLI (like Codex), not just API keys.
|
|
5
|
-
* Each key in auth.json is a provider id with one of:
|
|
6
|
-
*
|
|
7
|
-
* oauth: { type: "oauth", access, refresh, expires, accountId? }
|
|
8
|
-
* api: { type: "api", key, metadata? }
|
|
9
|
-
* wellknown: { type: "wellknown", key, token }
|
|
10
|
-
*
|
|
11
|
-
* ChatGPT Plus/Pro OAuth uses the same OpenAI client_id as Codex.
|
|
12
|
-
* Zen/Go are just `type: "api"` entries under opencode / opencode-go.
|
|
13
|
-
*/
|
|
14
|
-
export type OpenCodeAuthEntry = OpenCodeOauthAuth | OpenCodeApiAuth | OpenCodeWellKnownAuth;
|
|
15
|
-
export interface OpenCodeOauthAuth {
|
|
16
|
-
type: 'oauth';
|
|
17
|
-
access: string;
|
|
18
|
-
refresh: string;
|
|
19
|
-
expires: number;
|
|
20
|
-
accountId?: string;
|
|
21
|
-
enterpriseUrl?: string;
|
|
22
|
-
methodID?: string;
|
|
23
|
-
metadata?: Record<string, unknown>;
|
|
24
|
-
[k: string]: unknown;
|
|
25
|
-
}
|
|
26
|
-
export interface OpenCodeApiAuth {
|
|
27
|
-
type: 'api';
|
|
28
|
-
key: string;
|
|
29
|
-
metadata?: Record<string, string>;
|
|
30
|
-
[k: string]: unknown;
|
|
31
|
-
}
|
|
32
|
-
export interface OpenCodeWellKnownAuth {
|
|
33
|
-
type: 'wellknown';
|
|
34
|
-
key: string;
|
|
35
|
-
token: string;
|
|
36
|
-
[k: string]: unknown;
|
|
37
|
-
}
|
|
38
|
-
export declare function isAuthEntry(v: unknown): v is OpenCodeAuthEntry;
|
|
39
|
-
export declare function listAuthEntries(data: Record<string, unknown>): Array<{
|
|
40
|
-
provider: string;
|
|
41
|
-
entry: OpenCodeAuthEntry;
|
|
42
|
-
}>;
|
|
43
|
-
export declare function hasAnyAuth(data: Record<string, unknown>): boolean;
|
|
44
|
-
/** Summarize credentials for status lines: "openai:oauth, opencode-go:api". */
|
|
45
|
-
export declare function summarizeAuth(data: Record<string, unknown>): string | undefined;
|
|
46
|
-
/**
|
|
47
|
-
* Best-effort identity for display (email / account / short summary).
|
|
48
|
-
* Prefer OAuth email from JWT, then accountId.
|
|
49
|
-
* For API-key bags, do NOT join provider ids as identity — that drifts and
|
|
50
|
-
* breaks live matching. Use a stable short label instead.
|
|
51
|
-
*/
|
|
52
|
-
export declare function extractOpenCodeIdentity(data: Record<string, unknown>): string | undefined;
|
|
53
|
-
/** Improve JWT decode for OpenCode (padding-safe base64). */
|
|
54
|
-
export declare function emailFromJwtRobust(token: string | undefined): string | undefined;
|
|
55
|
-
export declare function emailFromJwt(token: string | undefined): string | undefined;
|
|
56
|
-
/**
|
|
57
|
-
* Refresh OpenCode OAuth entries in-place.
|
|
58
|
-
* OpenAI ChatGPT OAuth uses Codex client_id / token URL.
|
|
59
|
-
* Other oauth providers without a known refresh path are left untouched.
|
|
60
|
-
*/
|
|
61
|
-
export declare function refreshOpenCodeAuth(data: Record<string, unknown>, fetchFn?: typeof fetch): Promise<{
|
|
62
|
-
data: Record<string, unknown>;
|
|
63
|
-
refreshed: string[];
|
|
64
|
-
skipped: string[];
|
|
65
|
-
identity?: string;
|
|
66
|
-
}>;
|
|
67
|
-
//# sourceMappingURL=opencode-auth.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-auth.d.ts","sourceRoot":"","sources":["../../src/providers/opencode-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,eAAe,GAAG,qBAAqB,CAAC;AAE5F,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,iBAAiB,CAM9D;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,iBAAiB,CAAA;CAAE,CAAC,CAQvD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAEjE;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAM/E;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAwCzF;AAED,6DAA6D;AAC7D,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAmChF;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAuB1E;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC;IACT,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC,CAsCD"}
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
//#region src/providers/opencode-auth.ts
|
|
2
|
-
function isAuthEntry(v) {
|
|
3
|
-
if (!v || typeof v !== "object") return false;
|
|
4
|
-
const t = v.type;
|
|
5
|
-
return t === "oauth" || t === "api" || t === "wellknown";
|
|
6
|
-
}
|
|
7
|
-
function listAuthEntries(data) {
|
|
8
|
-
const out = [];
|
|
9
|
-
for (const [provider, raw] of Object.entries(data)) if (isAuthEntry(raw)) out.push({
|
|
10
|
-
provider,
|
|
11
|
-
entry: raw
|
|
12
|
-
});
|
|
13
|
-
return out;
|
|
14
|
-
}
|
|
15
|
-
function hasAnyAuth(data) {
|
|
16
|
-
return listAuthEntries(data).length > 0;
|
|
17
|
-
}
|
|
18
|
-
/** Summarize credentials for status lines: "openai:oauth, opencode-go:api". */
|
|
19
|
-
function summarizeAuth(data) {
|
|
20
|
-
const entries = listAuthEntries(data);
|
|
21
|
-
if (entries.length === 0) return;
|
|
22
|
-
return entries.map((e) => `${e.provider}:${e.entry.type}`).join(", ");
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Best-effort identity for display (email / account / short summary).
|
|
26
|
-
* Prefer OAuth email from JWT, then accountId.
|
|
27
|
-
* For API-key bags, do NOT join provider ids as identity — that drifts and
|
|
28
|
-
* breaks live matching. Use a stable short label instead.
|
|
29
|
-
*/
|
|
30
|
-
function extractOpenCodeIdentity(data) {
|
|
31
|
-
const entries = listAuthEntries(data);
|
|
32
|
-
for (const { provider, entry } of entries) {
|
|
33
|
-
if (entry.type !== "oauth") continue;
|
|
34
|
-
const email = emailFromJwtRobust(entry.access) ?? emailFromJwt(entry.access) ?? (typeof entry.metadata?.email === "string" ? entry.metadata.email : void 0);
|
|
35
|
-
if (email) return email;
|
|
36
|
-
if (entry.accountId) return `${provider}:${entry.accountId.slice(0, 12)}`;
|
|
37
|
-
}
|
|
38
|
-
for (const { provider, entry } of entries) if (entry.type === "oauth" && entry.accountId) return `${provider}:${entry.accountId.slice(0, 12)}`;
|
|
39
|
-
if (entries.length === 0) return;
|
|
40
|
-
if (entries.every((e) => e.entry.type === "api")) {
|
|
41
|
-
if (entries.length === 1) return entries[0].provider;
|
|
42
|
-
return `${entries.length} api keys`;
|
|
43
|
-
}
|
|
44
|
-
return `${entries.length} credentials`;
|
|
45
|
-
}
|
|
46
|
-
/** Improve JWT decode for OpenCode (padding-safe base64). */
|
|
47
|
-
function emailFromJwtRobust(token) {
|
|
48
|
-
if (!token) return;
|
|
49
|
-
try {
|
|
50
|
-
const parts = token.split(".");
|
|
51
|
-
if (parts.length < 2 || !parts[1]) return;
|
|
52
|
-
let b64 = parts[1].replace(/-/g, "+").replace(/_/g, "/");
|
|
53
|
-
const pad = b64.length % 4;
|
|
54
|
-
if (pad) b64 += "=".repeat(4 - pad);
|
|
55
|
-
const payload = JSON.parse(Buffer.from(b64, "base64").toString("utf8"));
|
|
56
|
-
if (typeof payload.email === "string" && payload.email.trim()) return payload.email.trim();
|
|
57
|
-
if (typeof payload.preferred_username === "string" && payload.preferred_username.trim()) return payload.preferred_username.trim();
|
|
58
|
-
const profile = payload["https://api.openai.com/profile"];
|
|
59
|
-
if (profile && typeof profile === "object") {
|
|
60
|
-
const email = profile.email;
|
|
61
|
-
if (typeof email === "string" && email.trim()) return email.trim();
|
|
62
|
-
}
|
|
63
|
-
} catch {}
|
|
64
|
-
}
|
|
65
|
-
function emailFromJwt(token) {
|
|
66
|
-
if (!token) return;
|
|
67
|
-
try {
|
|
68
|
-
const parts = token.split(".");
|
|
69
|
-
if (parts.length < 2) return;
|
|
70
|
-
const payload = JSON.parse(Buffer.from(parts[1], "base64url").toString("utf8"));
|
|
71
|
-
if (typeof payload.email === "string") return payload.email;
|
|
72
|
-
if (typeof payload.preferred_username === "string") return payload.preferred_username;
|
|
73
|
-
} catch {}
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Refresh OpenCode OAuth entries in-place.
|
|
77
|
-
* OpenAI ChatGPT OAuth uses Codex client_id / token URL.
|
|
78
|
-
* Other oauth providers without a known refresh path are left untouched.
|
|
79
|
-
*/
|
|
80
|
-
async function refreshOpenCodeAuth(data, fetchFn = fetch) {
|
|
81
|
-
const next = { ...data };
|
|
82
|
-
const refreshed = [];
|
|
83
|
-
const skipped = [];
|
|
84
|
-
for (const [provider, raw] of Object.entries(data)) {
|
|
85
|
-
if (!isAuthEntry(raw) || raw.type !== "oauth") continue;
|
|
86
|
-
if (provider === "openai" || looksLikeOpenAiOauth(raw)) {
|
|
87
|
-
next[provider] = await refreshOpenAiOauth(raw, fetchFn);
|
|
88
|
-
refreshed.push(provider);
|
|
89
|
-
continue;
|
|
90
|
-
}
|
|
91
|
-
skipped.push(provider);
|
|
92
|
-
}
|
|
93
|
-
if (refreshed.length === 0 && skipped.length > 0) throw new Error(`No refreshable OAuth in OpenCode auth (found: ${skipped.join(", ")}). Re-login: opencode auth login`);
|
|
94
|
-
if (refreshed.length === 0) throw new Error("No OAuth credentials to refresh. API keys don't need refresh. Login: opencode auth login");
|
|
95
|
-
return {
|
|
96
|
-
data: next,
|
|
97
|
-
refreshed,
|
|
98
|
-
skipped,
|
|
99
|
-
identity: extractOpenCodeIdentity(next)
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
function looksLikeOpenAiOauth(entry) {
|
|
103
|
-
if (typeof entry.methodID === "string" && entry.methodID.includes("chatgpt")) return true;
|
|
104
|
-
try {
|
|
105
|
-
const parts = entry.access.split(".");
|
|
106
|
-
if (parts.length < 2) return false;
|
|
107
|
-
const payload = JSON.parse(Buffer.from(parts[1], "base64url").toString("utf8"));
|
|
108
|
-
return Boolean(payload.iss?.includes("openai") || payload.iss?.includes("auth0"));
|
|
109
|
-
} catch {
|
|
110
|
-
return false;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
async function refreshOpenAiOauth(entry, fetchFn) {
|
|
114
|
-
const { CODEX_OAUTH_TOKEN_URL, CODEX_OAUTH_CLIENT_ID } = await import("./codex-refresh.js");
|
|
115
|
-
if (!entry.refresh) throw new Error("OpenAI OAuth entry has no refresh token");
|
|
116
|
-
const res = await fetchFn(CODEX_OAUTH_TOKEN_URL, {
|
|
117
|
-
method: "POST",
|
|
118
|
-
headers: {
|
|
119
|
-
"content-type": "application/x-www-form-urlencoded",
|
|
120
|
-
accept: "application/json",
|
|
121
|
-
"user-agent": "anypick-opencode/0.8"
|
|
122
|
-
},
|
|
123
|
-
body: new URLSearchParams({
|
|
124
|
-
grant_type: "refresh_token",
|
|
125
|
-
refresh_token: entry.refresh,
|
|
126
|
-
client_id: CODEX_OAUTH_CLIENT_ID
|
|
127
|
-
})
|
|
128
|
-
});
|
|
129
|
-
if (!res.ok) {
|
|
130
|
-
const text = await res.text().catch(() => "");
|
|
131
|
-
throw new Error(`OpenCode OpenAI OAuth refresh failed (${res.status}): ${text.slice(0, 240)}`);
|
|
132
|
-
}
|
|
133
|
-
const data = await res.json();
|
|
134
|
-
if (!data.access_token) throw new Error("OpenAI OAuth refresh returned no access_token");
|
|
135
|
-
return {
|
|
136
|
-
...entry,
|
|
137
|
-
type: "oauth",
|
|
138
|
-
access: data.access_token,
|
|
139
|
-
refresh: data.refresh_token ?? entry.refresh,
|
|
140
|
-
expires: Date.now() + (data.expires_in ?? 3600) * 1e3
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
//#endregion
|
|
144
|
-
export { emailFromJwt, emailFromJwtRobust, extractOpenCodeIdentity, hasAnyAuth, isAuthEntry, listAuthEntries, refreshOpenCodeAuth, summarizeAuth };
|
|
145
|
-
|
|
146
|
-
//# sourceMappingURL=opencode-auth.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-auth.js","names":[],"sources":["../../src/providers/opencode-auth.ts"],"sourcesContent":["/**\n * OpenCode auth.json helpers.\n *\n * OpenCode is a multi-provider CLI (like Codex), not just API keys.\n * Each key in auth.json is a provider id with one of:\n *\n * oauth: { type: \"oauth\", access, refresh, expires, accountId? }\n * api: { type: \"api\", key, metadata? }\n * wellknown: { type: \"wellknown\", key, token }\n *\n * ChatGPT Plus/Pro OAuth uses the same OpenAI client_id as Codex.\n * Zen/Go are just `type: \"api\"` entries under opencode / opencode-go.\n */\n\nexport type OpenCodeAuthEntry = OpenCodeOauthAuth | OpenCodeApiAuth | OpenCodeWellKnownAuth;\n\nexport interface OpenCodeOauthAuth {\n type: 'oauth';\n access: string;\n refresh: string;\n expires: number;\n accountId?: string;\n enterpriseUrl?: string;\n methodID?: string;\n metadata?: Record<string, unknown>;\n [k: string]: unknown;\n}\n\nexport interface OpenCodeApiAuth {\n type: 'api';\n key: string;\n metadata?: Record<string, string>;\n [k: string]: unknown;\n}\n\nexport interface OpenCodeWellKnownAuth {\n type: 'wellknown';\n key: string;\n token: string;\n [k: string]: unknown;\n}\n\nexport function isAuthEntry(v: unknown): v is OpenCodeAuthEntry {\n if (!v || typeof v !== 'object') {\n return false;\n }\n const t = (v as { type?: unknown }).type;\n return t === 'oauth' || t === 'api' || t === 'wellknown';\n}\n\nexport function listAuthEntries(\n data: Record<string, unknown>,\n): Array<{ provider: string; entry: OpenCodeAuthEntry }> {\n const out: Array<{ provider: string; entry: OpenCodeAuthEntry }> = [];\n for (const [provider, raw] of Object.entries(data)) {\n if (isAuthEntry(raw)) {\n out.push({ provider, entry: raw });\n }\n }\n return out;\n}\n\nexport function hasAnyAuth(data: Record<string, unknown>): boolean {\n return listAuthEntries(data).length > 0;\n}\n\n/** Summarize credentials for status lines: \"openai:oauth, opencode-go:api\". */\nexport function summarizeAuth(data: Record<string, unknown>): string | undefined {\n const entries = listAuthEntries(data);\n if (entries.length === 0) {\n return undefined;\n }\n return entries.map((e) => `${e.provider}:${e.entry.type}`).join(', ');\n}\n\n/**\n * Best-effort identity for display (email / account / short summary).\n * Prefer OAuth email from JWT, then accountId.\n * For API-key bags, do NOT join provider ids as identity — that drifts and\n * breaks live matching. Use a stable short label instead.\n */\nexport function extractOpenCodeIdentity(data: Record<string, unknown>): string | undefined {\n const entries = listAuthEntries(data);\n\n // Prefer openai oauth email\n for (const { provider, entry } of entries) {\n if (entry.type !== 'oauth') {\n continue;\n }\n const email =\n emailFromJwtRobust(entry.access) ??\n emailFromJwt(entry.access) ??\n (typeof entry.metadata?.email === 'string' ? entry.metadata.email : undefined);\n if (email) {\n return email;\n }\n if (entry.accountId) {\n return `${provider}:${entry.accountId.slice(0, 12)}`;\n }\n }\n\n // Any oauth with accountId\n for (const { provider, entry } of entries) {\n if (entry.type === 'oauth' && entry.accountId) {\n return `${provider}:${entry.accountId.slice(0, 12)}`;\n }\n }\n\n if (entries.length === 0) {\n return undefined;\n }\n\n // API-only (or mixed without oauth email): stable short label, not a provider dump.\n const apiOnly = entries.every((e) => e.entry.type === 'api');\n if (apiOnly) {\n if (entries.length === 1) {\n return entries[0].provider;\n }\n return `${entries.length} api keys`;\n }\n return `${entries.length} credentials`;\n}\n\n/** Improve JWT decode for OpenCode (padding-safe base64). */\nexport function emailFromJwtRobust(token: string | undefined): string | undefined {\n if (!token) {\n return undefined;\n }\n try {\n const parts = token.split('.');\n if (parts.length < 2 || !parts[1]) {\n return undefined;\n }\n let b64 = parts[1].replace(/-/g, '+').replace(/_/g, '/');\n const pad = b64.length % 4;\n if (pad) {\n b64 += '='.repeat(4 - pad);\n }\n const payload = JSON.parse(Buffer.from(b64, 'base64').toString('utf8')) as Record<\n string,\n unknown\n >;\n if (typeof payload.email === 'string' && payload.email.trim()) {\n return payload.email.trim();\n }\n if (typeof payload.preferred_username === 'string' && payload.preferred_username.trim()) {\n return payload.preferred_username.trim();\n }\n const profile = payload['https://api.openai.com/profile'];\n if (profile && typeof profile === 'object') {\n const email = (profile as { email?: unknown }).email;\n if (typeof email === 'string' && email.trim()) {\n return email.trim();\n }\n }\n } catch {\n // ignore\n }\n return undefined;\n}\n\nexport function emailFromJwt(token: string | undefined): string | undefined {\n if (!token) {\n return undefined;\n }\n try {\n const parts = token.split('.');\n if (parts.length < 2) {\n return undefined;\n }\n const payload = JSON.parse(Buffer.from(parts[1], 'base64url').toString('utf8')) as Record<\n string,\n unknown\n >;\n if (typeof payload.email === 'string') {\n return payload.email;\n }\n if (typeof payload.preferred_username === 'string') {\n return payload.preferred_username;\n }\n } catch {\n // ignore\n }\n return undefined;\n}\n\n/**\n * Refresh OpenCode OAuth entries in-place.\n * OpenAI ChatGPT OAuth uses Codex client_id / token URL.\n * Other oauth providers without a known refresh path are left untouched.\n */\nexport async function refreshOpenCodeAuth(\n data: Record<string, unknown>,\n fetchFn: typeof fetch = fetch,\n): Promise<{\n data: Record<string, unknown>;\n refreshed: string[];\n skipped: string[];\n identity?: string;\n}> {\n const next = { ...data };\n const refreshed: string[] = [];\n const skipped: string[] = [];\n\n for (const [provider, raw] of Object.entries(data)) {\n if (!isAuthEntry(raw) || raw.type !== 'oauth') {\n continue;\n }\n\n // OpenAI ChatGPT OAuth (same as Codex)\n if (provider === 'openai' || looksLikeOpenAiOauth(raw)) {\n const updated = await refreshOpenAiOauth(raw, fetchFn);\n next[provider] = updated;\n refreshed.push(provider);\n continue;\n }\n\n skipped.push(provider);\n }\n\n if (refreshed.length === 0 && skipped.length > 0) {\n throw new Error(\n `No refreshable OAuth in OpenCode auth (found: ${skipped.join(', ')}). Re-login: opencode auth login`,\n );\n }\n if (refreshed.length === 0) {\n throw new Error(\n \"No OAuth credentials to refresh. API keys don't need refresh. Login: opencode auth login\",\n );\n }\n\n return {\n data: next,\n refreshed,\n skipped,\n identity: extractOpenCodeIdentity(next),\n };\n}\n\nfunction looksLikeOpenAiOauth(entry: OpenCodeOauthAuth): boolean {\n // methodID from opencode binary: chatgpt-browser / chatgpt-headless\n if (typeof entry.methodID === 'string' && entry.methodID.includes('chatgpt')) {\n return true;\n }\n // access token JWT iss\n try {\n const parts = entry.access.split('.');\n if (parts.length < 2) {\n return false;\n }\n const payload = JSON.parse(Buffer.from(parts[1], 'base64url').toString('utf8')) as {\n iss?: string;\n };\n return Boolean(payload.iss?.includes('openai') || payload.iss?.includes('auth0'));\n } catch {\n return false;\n }\n}\n\nasync function refreshOpenAiOauth(\n entry: OpenCodeOauthAuth,\n fetchFn: typeof fetch,\n): Promise<OpenCodeOauthAuth> {\n const { CODEX_OAUTH_TOKEN_URL, CODEX_OAUTH_CLIENT_ID } = await import('./codex-refresh');\n\n if (!entry.refresh) {\n throw new Error('OpenAI OAuth entry has no refresh token');\n }\n\n const body = new URLSearchParams({\n grant_type: 'refresh_token',\n refresh_token: entry.refresh,\n client_id: CODEX_OAUTH_CLIENT_ID,\n });\n\n const res = await fetchFn(CODEX_OAUTH_TOKEN_URL, {\n method: 'POST',\n headers: {\n 'content-type': 'application/x-www-form-urlencoded',\n accept: 'application/json',\n 'user-agent': 'anypick-opencode/0.8',\n },\n body,\n });\n\n if (!res.ok) {\n const text = await res.text().catch(() => '');\n throw new Error(`OpenCode OpenAI OAuth refresh failed (${res.status}): ${text.slice(0, 240)}`);\n }\n\n const data = (await res.json()) as {\n access_token?: string;\n refresh_token?: string;\n expires_in?: number;\n id_token?: string;\n };\n\n if (!data.access_token) {\n throw new Error('OpenAI OAuth refresh returned no access_token');\n }\n\n return {\n ...entry,\n type: 'oauth',\n access: data.access_token,\n refresh: data.refresh_token ?? entry.refresh,\n expires: Date.now() + (data.expires_in ?? 3600) * 1000,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Path to the built CLI (`dist/cli.js`) for detached re-exec.
|
|
3
|
-
* Prefer this only when the parent is already a compiled package entry.
|
|
4
|
-
*/
|
|
5
|
-
export declare function resolveCliEntry(): string;
|
|
6
|
-
export interface AnyPickCliLaunch {
|
|
7
|
-
command: string;
|
|
8
|
-
args: string[];
|
|
9
|
-
/** CLI entry file (`.ts` in dev, `dist/cli.js` in package). */
|
|
10
|
-
entry: string;
|
|
11
|
-
/** True when the child is supervised by `tsx watch` (dev hot-reload). */
|
|
12
|
-
watch: boolean;
|
|
13
|
-
}
|
|
14
|
-
export interface ResolveAnyPickCliLaunchOptions {
|
|
15
|
-
/**
|
|
16
|
-
* Force watch on/off. Default: on for TypeScript entries unless
|
|
17
|
-
* `ANYPICK_DEV_WATCH=0` (matches `scripts/dev.mjs`).
|
|
18
|
-
*/
|
|
19
|
-
watch?: boolean;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* How to re-exec the AnyPick CLI as a detached child.
|
|
23
|
-
*
|
|
24
|
-
* When the parent is running TypeScript via `pnpm dev` / tray-from-source,
|
|
25
|
-
* spawn through `tsx watch` so edits under `src/` restart the child without a
|
|
26
|
-
* manual stop/start. Package installs (`dist/cli.js`) stay plain Node — no
|
|
27
|
-
* watch, no tsx dependency at runtime.
|
|
28
|
-
*
|
|
29
|
-
* The recorded pid is the long-lived `tsx watch` supervisor (stable across
|
|
30
|
-
* reloads). `ANYPICK_INSTANCE_ID` is in the env and survives each restart so
|
|
31
|
-
* health identity checks keep matching.
|
|
32
|
-
*/
|
|
33
|
-
export declare function resolveAnyPickCliLaunch(subArgs: string[], opts?: ResolveAnyPickCliLaunchOptions): AnyPickCliLaunch;
|
|
34
|
-
/** Same policy as `scripts/dev.mjs` for long-running supervisors. */
|
|
35
|
-
export declare function shouldWatchDetachedDev(): boolean;
|
|
36
|
-
//# sourceMappingURL=opencode-cli-entry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-cli-entry.d.ts","sourceRoot":"","sources":["../../src/providers/opencode-cli-entry.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAWxC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,8BAA8B;IAC7C;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,GAAE,8BAAmC,GACxC,gBAAgB,CAoClB;AAED,qEAAqE;AACrE,wBAAgB,sBAAsB,IAAI,OAAO,CAShD"}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { createRequire } from "node:module";
|
|
2
|
-
import { existsSync } from "node:fs";
|
|
3
|
-
import { join, resolve } from "node:path";
|
|
4
|
-
import { fileURLToPath } from "node:url";
|
|
5
|
-
//#region src/providers/opencode-cli-entry.ts
|
|
6
|
-
/**
|
|
7
|
-
* Path to the built CLI (`dist/cli.js`) for detached re-exec.
|
|
8
|
-
* Prefer this only when the parent is already a compiled package entry.
|
|
9
|
-
*/
|
|
10
|
-
function resolveCliEntry() {
|
|
11
|
-
const here = fileURLToPath(new URL(".", import.meta.url));
|
|
12
|
-
const primary = join(here, "..", "cli.js");
|
|
13
|
-
if (existsSync(primary)) return primary;
|
|
14
|
-
const fromSrc = join(here, "..", "..", "dist", "cli.js");
|
|
15
|
-
if (existsSync(fromSrc)) return fromSrc;
|
|
16
|
-
return primary;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* How to re-exec the AnyPick CLI as a detached child.
|
|
20
|
-
*
|
|
21
|
-
* When the parent is running TypeScript via `pnpm dev` / tray-from-source,
|
|
22
|
-
* spawn through `tsx watch` so edits under `src/` restart the child without a
|
|
23
|
-
* manual stop/start. Package installs (`dist/cli.js`) stay plain Node — no
|
|
24
|
-
* watch, no tsx dependency at runtime.
|
|
25
|
-
*
|
|
26
|
-
* The recorded pid is the long-lived `tsx watch` supervisor (stable across
|
|
27
|
-
* reloads). `ANYPICK_INSTANCE_ID` is in the env and survives each restart so
|
|
28
|
-
* health identity checks keep matching.
|
|
29
|
-
*/
|
|
30
|
-
function resolveAnyPickCliLaunch(subArgs, opts = {}) {
|
|
31
|
-
const tsEntry = preferTypeScriptCliEntry();
|
|
32
|
-
if (tsEntry) {
|
|
33
|
-
if (opts.watch ?? shouldWatchDetachedDev()) return {
|
|
34
|
-
command: process.execPath,
|
|
35
|
-
args: [
|
|
36
|
-
resolveTsxCli(),
|
|
37
|
-
"watch",
|
|
38
|
-
"--clear-screen=false",
|
|
39
|
-
"--exclude",
|
|
40
|
-
"**/dist/**",
|
|
41
|
-
"--exclude",
|
|
42
|
-
"**/node_modules/**",
|
|
43
|
-
tsEntry,
|
|
44
|
-
...subArgs
|
|
45
|
-
],
|
|
46
|
-
entry: tsEntry,
|
|
47
|
-
watch: true
|
|
48
|
-
};
|
|
49
|
-
return {
|
|
50
|
-
command: process.execPath,
|
|
51
|
-
args: [
|
|
52
|
-
"--import",
|
|
53
|
-
"tsx",
|
|
54
|
-
tsEntry,
|
|
55
|
-
...subArgs
|
|
56
|
-
],
|
|
57
|
-
entry: tsEntry,
|
|
58
|
-
watch: false
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
|
-
const cli = resolveCliEntry();
|
|
62
|
-
return {
|
|
63
|
-
command: process.execPath,
|
|
64
|
-
args: [cli, ...subArgs],
|
|
65
|
-
entry: cli,
|
|
66
|
-
watch: false
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
/** Same policy as `scripts/dev.mjs` for long-running supervisors. */
|
|
70
|
-
function shouldWatchDetachedDev() {
|
|
71
|
-
if (process.env.ANYPICK_DEV_WATCH === "0") return false;
|
|
72
|
-
if (process.env.ANYPICK_DEV_WATCH === "1") return true;
|
|
73
|
-
return true;
|
|
74
|
-
}
|
|
75
|
-
function preferTypeScriptCliEntry() {
|
|
76
|
-
const candidates = [process.env.ANYPICK_TRAY_CLI_ENTRY, process.argv[1]];
|
|
77
|
-
for (const raw of candidates) {
|
|
78
|
-
if (typeof raw !== "string" || !raw.trim()) continue;
|
|
79
|
-
const entry = resolve(raw.trim());
|
|
80
|
-
if ((entry.endsWith(".ts") || entry.endsWith(".tsx")) && existsSync(entry)) return entry;
|
|
81
|
-
}
|
|
82
|
-
return null;
|
|
83
|
-
}
|
|
84
|
-
function resolveTsxCli() {
|
|
85
|
-
return createRequire(import.meta.url).resolve("tsx/cli");
|
|
86
|
-
}
|
|
87
|
-
//#endregion
|
|
88
|
-
export { resolveAnyPickCliLaunch, resolveCliEntry, shouldWatchDetachedDev };
|
|
89
|
-
|
|
90
|
-
//# sourceMappingURL=opencode-cli-entry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-cli-entry.js","names":[],"sources":["../../src/providers/opencode-cli-entry.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\nimport { createRequire } from 'node:module';\nimport { join, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\n/**\n * Path to the built CLI (`dist/cli.js`) for detached re-exec.\n * Prefer this only when the parent is already a compiled package entry.\n */\nexport function resolveCliEntry(): string {\n const here = fileURLToPath(new URL('.', import.meta.url));\n const primary = join(here, '..', 'cli.js');\n if (existsSync(primary)) {\n return primary;\n }\n const fromSrc = join(here, '..', '..', 'dist', 'cli.js');\n if (existsSync(fromSrc)) {\n return fromSrc;\n }\n return primary;\n}\n\nexport interface AnyPickCliLaunch {\n command: string;\n args: string[];\n /** CLI entry file (`.ts` in dev, `dist/cli.js` in package). */\n entry: string;\n /** True when the child is supervised by `tsx watch` (dev hot-reload). */\n watch: boolean;\n}\n\nexport interface ResolveAnyPickCliLaunchOptions {\n /**\n * Force watch on/off. Default: on for TypeScript entries unless\n * `ANYPICK_DEV_WATCH=0` (matches `scripts/dev.mjs`).\n */\n watch?: boolean;\n}\n\n/**\n * How to re-exec the AnyPick CLI as a detached child.\n *\n * When the parent is running TypeScript via `pnpm dev` / tray-from-source,\n * spawn through `tsx watch` so edits under `src/` restart the child without a\n * manual stop/start. Package installs (`dist/cli.js`) stay plain Node — no\n * watch, no tsx dependency at runtime.\n *\n * The recorded pid is the long-lived `tsx watch` supervisor (stable across\n * reloads). `ANYPICK_INSTANCE_ID` is in the env and survives each restart so\n * health identity checks keep matching.\n */\nexport function resolveAnyPickCliLaunch(\n subArgs: string[],\n opts: ResolveAnyPickCliLaunchOptions = {},\n): AnyPickCliLaunch {\n const tsEntry = preferTypeScriptCliEntry();\n if (tsEntry) {\n const watch = opts.watch ?? shouldWatchDetachedDev();\n if (watch) {\n return {\n command: process.execPath,\n args: [\n resolveTsxCli(),\n 'watch',\n '--clear-screen=false',\n '--exclude',\n '**/dist/**',\n '--exclude',\n '**/node_modules/**',\n tsEntry,\n ...subArgs,\n ],\n entry: tsEntry,\n watch: true,\n };\n }\n return {\n command: process.execPath,\n args: ['--import', 'tsx', tsEntry, ...subArgs],\n entry: tsEntry,\n watch: false,\n };\n }\n const cli = resolveCliEntry();\n return {\n command: process.execPath,\n args: [cli, ...subArgs],\n entry: cli,\n watch: false,\n };\n}\n\n/** Same policy as `scripts/dev.mjs` for long-running supervisors. */\nexport function shouldWatchDetachedDev(): boolean {\n if (process.env.ANYPICK_DEV_WATCH === '0') {\n return false;\n }\n if (process.env.ANYPICK_DEV_WATCH === '1') {\n return true;\n }\n // TypeScript entry implies local dev (`pnpm dev` / tray from source).\n return true;\n}\n\nfunction preferTypeScriptCliEntry(): string | null {\n const candidates = [process.env.ANYPICK_TRAY_CLI_ENTRY, process.argv[1]];\n for (const raw of candidates) {\n if (typeof raw !== 'string' || !raw.trim()) {\n continue;\n }\n const entry = resolve(raw.trim());\n if ((entry.endsWith('.ts') || entry.endsWith('.tsx')) && existsSync(entry)) {\n return entry;\n }\n }\n return null;\n}\n\nfunction resolveTsxCli(): string {\n const require = createRequire(import.meta.url);\n return require.resolve('tsx/cli');\n}\n"],"mappings":";;;;;;;;;AASA,SAAgB,kBAA0B;CACxC,MAAM,OAAO,cAAc,IAAI,IAAI,KAAK,OAAO,KAAK,GAAG,CAAC;CACxD,MAAM,UAAU,KAAK,MAAM,MAAM,QAAQ;CACzC,IAAI,WAAW,OAAO,GACpB,OAAO;CAET,MAAM,UAAU,KAAK,MAAM,MAAM,MAAM,QAAQ,QAAQ;CACvD,IAAI,WAAW,OAAO,GACpB,OAAO;CAET,OAAO;AACT;;;;;;;;;;;;;AA+BA,SAAgB,wBACd,SACA,OAAuC,CAAC,GACtB;CAClB,MAAM,UAAU,yBAAyB;CACzC,IAAI,SAAS;EAEX,IADc,KAAK,SAAS,uBAAuB,GAEjD,OAAO;GACL,SAAS,QAAQ;GACjB,MAAM;IACJ,cAAc;IACd;IACA;IACA;IACA;IACA;IACA;IACA;IACA,GAAG;GACL;GACA,OAAO;GACP,OAAO;EACT;EAEF,OAAO;GACL,SAAS,QAAQ;GACjB,MAAM;IAAC;IAAY;IAAO;IAAS,GAAG;GAAO;GAC7C,OAAO;GACP,OAAO;EACT;CACF;CACA,MAAM,MAAM,gBAAgB;CAC5B,OAAO;EACL,SAAS,QAAQ;EACjB,MAAM,CAAC,KAAK,GAAG,OAAO;EACtB,OAAO;EACP,OAAO;CACT;AACF;;AAGA,SAAgB,yBAAkC;CAChD,IAAI,QAAQ,IAAI,sBAAsB,KACpC,OAAO;CAET,IAAI,QAAQ,IAAI,sBAAsB,KACpC,OAAO;CAGT,OAAO;AACT;AAEA,SAAS,2BAA0C;CACjD,MAAM,aAAa,CAAC,QAAQ,IAAI,wBAAwB,QAAQ,KAAK,EAAE;CACvE,KAAK,MAAM,OAAO,YAAY;EAC5B,IAAI,OAAO,QAAQ,YAAY,CAAC,IAAI,KAAK,GACvC;EAEF,MAAM,QAAQ,QAAQ,IAAI,KAAK,CAAC;EAChC,KAAK,MAAM,SAAS,KAAK,KAAK,MAAM,SAAS,MAAM,MAAM,WAAW,KAAK,GACvE,OAAO;CAEX;CACA,OAAO;AACT;AAEA,SAAS,gBAAwB;CAE/B,OADgB,cAAc,OAAO,KAAK,GACnC,CAAA,CAAQ,QAAQ,SAAS;AAClC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
-
export declare function linkClientAbort(req: IncomingMessage, res: ServerResponse): {
|
|
3
|
-
signal: AbortSignal;
|
|
4
|
-
dispose: () => void;
|
|
5
|
-
};
|
|
6
|
-
export declare function isAbortError(err: unknown): boolean;
|
|
7
|
-
export declare function describeAbort(signal: AbortSignal, err: unknown): string;
|
|
8
|
-
//# sourceMappingURL=abort.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"abort.d.ts","sourceRoot":"","sources":["../../../src/providers/opencode-proxy/abort.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjE,wBAAgB,eAAe,CAC7B,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,GAClB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CA2B9C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAkBlD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAiBvE"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { UPSTREAM_TIMEOUT_MS } from "./constants.js";
|
|
2
|
-
//#region src/providers/opencode-proxy/abort.ts
|
|
3
|
-
function linkClientAbort(req, res) {
|
|
4
|
-
const ac = new AbortController();
|
|
5
|
-
const timer = setTimeout(() => ac.abort(/* @__PURE__ */ new Error(`upstream timeout after ${UPSTREAM_TIMEOUT_MS}ms`)), UPSTREAM_TIMEOUT_MS);
|
|
6
|
-
timer.unref?.();
|
|
7
|
-
const onClientGone = () => {
|
|
8
|
-
if (!ac.signal.aborted) ac.abort(/* @__PURE__ */ new Error("client disconnected"));
|
|
9
|
-
};
|
|
10
|
-
req.once("aborted", onClientGone);
|
|
11
|
-
const onResClose = () => {
|
|
12
|
-
if (!res.writableFinished) onClientGone();
|
|
13
|
-
};
|
|
14
|
-
res.once("close", onResClose);
|
|
15
|
-
return {
|
|
16
|
-
signal: ac.signal,
|
|
17
|
-
dispose: () => {
|
|
18
|
-
clearTimeout(timer);
|
|
19
|
-
req.removeListener("aborted", onClientGone);
|
|
20
|
-
res.removeListener("close", onResClose);
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
function isAbortError(err) {
|
|
25
|
-
if (!err || typeof err !== "object") return false;
|
|
26
|
-
const value = err;
|
|
27
|
-
if (value.name === "AbortError" || value.name === "TimeoutError") return true;
|
|
28
|
-
if (value.code === "ABORT_ERR" || value.code === "STREAM_IDLE") return true;
|
|
29
|
-
if (typeof value.message === "string" && /aborted|abort|disconnect|client gone|STREAM_IDLE|upstream timeout/i.test(value.message)) return true;
|
|
30
|
-
return value.cause ? isAbortError(value.cause) : false;
|
|
31
|
-
}
|
|
32
|
-
function describeAbort(signal, err) {
|
|
33
|
-
const reason = signal.aborted ? signal.reason : err;
|
|
34
|
-
const message = reason instanceof Error ? reason.message : typeof reason === "string" ? reason : err instanceof Error ? err.message : String(reason ?? "aborted");
|
|
35
|
-
if (/client disconnected|client gone/i.test(message)) return "client disconnected (Claude cancelled the request)";
|
|
36
|
-
if (/upstream timeout|stream idle|STREAM_IDLE/i.test(message)) return message;
|
|
37
|
-
return message && !/^this operation was aborted$/i.test(message) ? message : "request aborted";
|
|
38
|
-
}
|
|
39
|
-
//#endregion
|
|
40
|
-
export { describeAbort, isAbortError, linkClientAbort };
|
|
41
|
-
|
|
42
|
-
//# sourceMappingURL=abort.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"abort.js","names":[],"sources":["../../../src/providers/opencode-proxy/abort.ts"],"sourcesContent":["import type { IncomingMessage, ServerResponse } from 'node:http';\nimport { UPSTREAM_TIMEOUT_MS } from './constants';\n\nexport function linkClientAbort(\n req: IncomingMessage,\n res: ServerResponse,\n): { signal: AbortSignal; dispose: () => void } {\n const ac = new AbortController();\n const timer = setTimeout(\n () => ac.abort(new Error(`upstream timeout after ${UPSTREAM_TIMEOUT_MS}ms`)),\n UPSTREAM_TIMEOUT_MS,\n );\n timer.unref?.();\n const onClientGone = () => {\n if (!ac.signal.aborted) {\n ac.abort(new Error('client disconnected'));\n }\n };\n req.once('aborted', onClientGone);\n const onResClose = () => {\n if (!res.writableFinished) {\n onClientGone();\n }\n };\n res.once('close', onResClose);\n return {\n signal: ac.signal,\n dispose: () => {\n clearTimeout(timer);\n req.removeListener('aborted', onClientGone);\n res.removeListener('close', onResClose);\n },\n };\n}\n\nexport function isAbortError(err: unknown): boolean {\n if (!err || typeof err !== 'object') {\n return false;\n }\n const value = err as { name?: string; code?: string; message?: string; cause?: unknown };\n if (value.name === 'AbortError' || value.name === 'TimeoutError') {\n return true;\n }\n if (value.code === 'ABORT_ERR' || value.code === 'STREAM_IDLE') {\n return true;\n }\n if (\n typeof value.message === 'string' &&\n /aborted|abort|disconnect|client gone|STREAM_IDLE|upstream timeout/i.test(value.message)\n ) {\n return true;\n }\n return value.cause ? isAbortError(value.cause) : false;\n}\n\nexport function describeAbort(signal: AbortSignal, err: unknown): string {\n const reason: unknown = signal.aborted ? (signal.reason as unknown) : err;\n const message =\n reason instanceof Error\n ? reason.message\n : typeof reason === 'string'\n ? reason\n : err instanceof Error\n ? err.message\n : String(reason ?? 'aborted');\n if (/client disconnected|client gone/i.test(message)) {\n return 'client disconnected (Claude cancelled the request)';\n }\n if (/upstream timeout|stream idle|STREAM_IDLE/i.test(message)) {\n return message;\n }\n return message && !/^this operation was aborted$/i.test(message) ? message : 'request aborted';\n}\n"],"mappings":";;AAGA,SAAgB,gBACd,KACA,KAC8C;CAC9C,MAAM,KAAK,IAAI,gBAAgB;CAC/B,MAAM,QAAQ,iBACN,GAAG,sBAAM,IAAI,MAAM,0BAA0B,oBAAoB,GAAG,CAAC,GAC3E,mBACF;CACA,MAAM,QAAQ;CACd,MAAM,qBAAqB;EACzB,IAAI,CAAC,GAAG,OAAO,SACb,GAAG,sBAAM,IAAI,MAAM,qBAAqB,CAAC;CAE7C;CACA,IAAI,KAAK,WAAW,YAAY;CAChC,MAAM,mBAAmB;EACvB,IAAI,CAAC,IAAI,kBACP,aAAa;CAEjB;CACA,IAAI,KAAK,SAAS,UAAU;CAC5B,OAAO;EACL,QAAQ,GAAG;EACX,eAAe;GACb,aAAa,KAAK;GAClB,IAAI,eAAe,WAAW,YAAY;GAC1C,IAAI,eAAe,SAAS,UAAU;EACxC;CACF;AACF;AAEA,SAAgB,aAAa,KAAuB;CAClD,IAAI,CAAC,OAAO,OAAO,QAAQ,UACzB,OAAO;CAET,MAAM,QAAQ;CACd,IAAI,MAAM,SAAS,gBAAgB,MAAM,SAAS,gBAChD,OAAO;CAET,IAAI,MAAM,SAAS,eAAe,MAAM,SAAS,eAC/C,OAAO;CAET,IACE,OAAO,MAAM,YAAY,YACzB,qEAAqE,KAAK,MAAM,OAAO,GAEvF,OAAO;CAET,OAAO,MAAM,QAAQ,aAAa,MAAM,KAAK,IAAI;AACnD;AAEA,SAAgB,cAAc,QAAqB,KAAsB;CACvE,MAAM,SAAkB,OAAO,UAAW,OAAO,SAAqB;CACtE,MAAM,UACJ,kBAAkB,QACd,OAAO,UACP,OAAO,WAAW,WAChB,SACA,eAAe,QACb,IAAI,UACJ,OAAO,UAAU,SAAS;CACpC,IAAI,mCAAmC,KAAK,OAAO,GACjD,OAAO;CAET,IAAI,4CAA4C,KAAK,OAAO,GAC1D,OAAO;CAET,OAAO,WAAW,CAAC,gCAAgC,KAAK,OAAO,IAAI,UAAU;AAC/E"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
-
import type { OpenCodeRuntime } from './runtime.js';
|
|
3
|
-
export declare function handleAnthropicMessages(runtime: OpenCodeRuntime, req: IncomingMessage, res: ServerResponse, log: (line: string) => void): Promise<void>;
|
|
4
|
-
//# sourceMappingURL=anthropic-handler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-handler.d.ts","sourceRoot":"","sources":["../../../src/providers/opencode-proxy/anthropic-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAMjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AASjD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,eAAe,EACxB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAC1B,OAAO,CAAC,IAAI,CAAC,CAsGf"}
|