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":"activation-executor.js","names":[],"sources":["../../src/core/activation-executor.ts"],"sourcesContent":["/**\n * Execute activation plans transactionally (spec §P7, §23).\n * Journals only serializable ResourceRef values — never adapter instances.\n */\n\nimport { copyFile, mkdir } from 'node:fs/promises';\nimport { dirname } from 'node:path';\nimport type {\n ActivationPlan,\n GlobalBinding,\n PlanStep,\n ProjectBinding,\n ResolvedClientPlan,\n ResourceRef,\n} from '../types';\nimport { displayRef, mutationScopeForRef, parseRef, serializeRef } from './refs';\nimport type { OperationJournal } from './journal';\nimport type { LeaseStore } from './lease-store';\nimport type { AccountService } from './service';\nimport type { LiveAuthCheckpoint } from './service';\nimport type { ClientConfigRecovery, RuntimeService } from './runtime-service';\nimport {\n loadAccountForRef,\n loadProfileForRef,\n materializeResolvedSource,\n type ResolveSourceDeps,\n} from './resolve-source';\nimport type { ProxyService } from './proxy-service';\nimport type { ProxyHubRouteSecret } from './proxy-hub-store';\nimport { anypickError, ExitCode, isAnyPickError } from '../utils/errors';\nimport { pathExists } from '../utils/fs';\nimport { waitForHttp } from '../utils/process/health';\nimport { withMutationLocks } from './mutation-lock';\nimport { makeEmitter, type AnyPickEventSink } from './events';\n\nexport interface ExecuteResult {\n plan: ActivationPlan;\n dryRun: boolean;\n alreadyActive: boolean;\n binding?: GlobalBinding | ProjectBinding;\n proxyEndpoint?: string;\n journalId?: string;\n childExitCode?: number;\n /** Ephemeral isolated runtime (spec §9.7.1) — must be cleaned up by caller. */\n isolated?: {\n directory: string;\n environment: Record<string, string>;\n args?: string[];\n cleanup: () => Promise<void>;\n };\n /** Scoped rollback for a successful ephemeral run. Idempotent. */\n cleanup?: () => Promise<void>;\n}\n\nexport interface ExecutorDeps extends ResolveSourceDeps {\n journal: OperationJournal;\n leases: LeaseStore;\n runtime: RuntimeService;\n accounts: AccountService;\n proxy: ProxyService;\n /**\n * Structured sink for degraded-state conditions (OBS-01). Optional.\n * Named `eventSink` rather than `events` so an entire `AnyPickApp` (whose\n * `events` is a `{ sink, emit, list }` facade) can still be passed where\n * `ExecutorDeps` is expected without a structural type collision.\n */\n eventSink?: AnyPickEventSink;\n}\n\nexport interface ExecuteOptions {\n dryRun?: boolean;\n verbose?: boolean;\n projectRoot?: string;\n /** Report an equal persistent binding as already active after it is safely re-applied. */\n skipIfActive?: boolean;\n /** Budget for the WaitForHealth step. Lowered by tests; defaults to 5s. */\n healthTimeoutMs?: number;\n}\n\nfunction bindingEqual(\n a: {\n source: { kind: string };\n model: unknown;\n client: string;\n clientOptions?: Record<string, unknown>;\n },\n b: {\n source: { kind: string };\n model: unknown;\n client: string;\n clientOptions?: Record<string, unknown>;\n },\n): boolean {\n // Include clientOptions (modelRoles) — editing models must re-apply, not no-op.\n return (\n JSON.stringify({\n client: a.client,\n source: a.source,\n model: a.model,\n clientOptions: a.clientOptions ?? {},\n }) ===\n JSON.stringify({\n client: b.client,\n source: b.source,\n model: b.model,\n clientOptions: b.clientOptions ?? {},\n })\n );\n}\n\nfunction mutationScopes(plan: ActivationPlan): string[] {\n // Hub mutations own their complete Hub + provider lock set inside\n // ProxyHubService. Keeping the executor's outer lock client-scoped avoids\n // holding the Hub lock before the service can acquire its sorted scope set.\n if (plan.resolvedSource.ref.kind === 'proxy-hub') {\n return [`client/${plan.client}`];\n }\n return [`client/${plan.client}`, mutationScopeForRef(plan.resolvedSource.ref)];\n}\n\nexport async function executeActivation(\n plan: ActivationPlan,\n deps: ExecutorDeps,\n opts: ExecuteOptions = {},\n): Promise<ExecuteResult> {\n const dryRun = Boolean(opts.dryRun);\n // An equal binding still goes through the transaction. The historical fast\n // path rewrote client files and started proxies outside the operation journal,\n // leaving no durable compensation if the process died mid-write.\n const existing =\n plan.mode === 'persistent' && plan.bindingSpec && opts.skipIfActive !== false\n ? deps.bindings.getGlobal(plan.client)\n : undefined;\n const alreadyActive = Boolean(\n existing && plan.bindingSpec && bindingEqual(existing.spec, plan.bindingSpec),\n );\n\n if (dryRun) {\n return {\n plan,\n dryRun: true,\n alreadyActive: false,\n proxyEndpoint: plan.transport.endpoint,\n };\n }\n\n // Concurrent mutations are locked (spec §23.3 / §28.2 #67)\n return withMutationLocks(deps.runtime.root, mutationScopes(plan), async () => {\n const result = await executeActivationLocked(plan, deps, opts);\n return { ...result, alreadyActive };\n });\n}\n\ninterface ActivationContext {\n /** True once any step has mutated live state / config. */\n mutated: boolean;\n /** LIFO stack of undo operations, run in reverse on failure. */\n undo: Array<() => Promise<void>>;\n /** Proxies started by this activation (for stop-on-rollback). */\n startedProxies: Array<{ provider: string; account?: string }>;\n /** Lease ids created by this activation (for release-on-rollback). */\n leaseIds: string[];\n /** Exact local auth checkpoint before a native-auth switch. */\n nativeAuthCheckpoint?: LiveAuthCheckpoint;\n /** Client config written by this activation (for reset-on-rollback). */\n clientConfigWritten?: string;\n /** Isolated runtime from an ephemeral run (for cleanup-on-rollback). */\n isolated?: {\n directory: string;\n environment: Record<string, string>;\n args?: string[];\n cleanup: () => Promise<void>;\n };\n /** `src=>dest` backups of on-disk config files overwritten by this activation. */\n backupPaths: string[];\n /** Binding committed by the authoritative plan step. */\n binding?: GlobalBinding | ProjectBinding;\n}\n\n/**\n * Execute an activation plan by interpreting its `steps` as the source of\n * truth. Each mutating step records an inverse operation onto a rollback\n * stack; if any step throws, the stack is unwound in reverse so partial\n * state is undone (proxy stopped, lease released, prior account restored,\n * client config reset, binding removed).\n *\n * The plan is authoritative: the executor does not re-derive behavior from\n * transport capability, so the planner and executor cannot silently diverge.\n */\nasync function executeActivationLocked(\n plan: ActivationPlan,\n deps: ExecutorDeps,\n opts: ExecuteOptions,\n): Promise<ExecuteResult> {\n const affected = [`client/${plan.client}`, serializeRef(plan.resolvedSource.ref)];\n const ctx: ActivationContext = {\n mutated: false,\n undo: [],\n startedProxies: [],\n leaseIds: [],\n backupPaths: [],\n };\n\n const journal = deps.journal.create(`activate:${plan.mode}`, {\n affectedResources: affected,\n params: {\n client: plan.client,\n source: serializeRef(plan.resolvedSource.ref),\n mode: plan.mode,\n steps: plan.steps.map((s) => s.kind),\n },\n state: 'planned',\n });\n\n try {\n deps.journal.update(journal.id, { state: 'executing' });\n\n // Transport gates before any mutation (planner does not emit steps for these).\n if (plan.transport.capability === 'external_manual_proxy') {\n throw anypickError(\n `Required external proxy for ${plan.resolvedSource.display} is not installed.\\n\\nInstall the provider proxy and retry.`,\n 'MISSING_DEPENDENCY',\n {\n exitCode: ExitCode.MISSING_DEPENDENCY,\n suggestions: [`anypick doctor ${plan.client}`],\n mutated: false,\n },\n );\n }\n if (plan.transport.capability === 'unsupported') {\n throw anypickError(\n `Unsupported transport for ${plan.client} × ${plan.resolvedSource.display}`,\n 'UNSUPPORTED_TRANSPORT',\n { exitCode: ExitCode.CAPABILITY_CONFLICT },\n );\n }\n\n for (const step of plan.steps) {\n await runStep(step, plan, deps, opts, ctx, journal.id);\n }\n\n deps.journal.update(journal.id, {\n state: 'verifying',\n backupPaths: ctx.backupPaths,\n });\n\n deps.journal.update(journal.id, { state: 'committed' });\n\n const cleanup = plan.mode === 'ephemeral' ? makeEphemeralCleanup(ctx, deps) : undefined;\n\n return {\n plan,\n dryRun: false,\n alreadyActive: false,\n binding: ctx.binding,\n proxyEndpoint: plan.transport.endpoint,\n journalId: journal.id,\n isolated: ctx.isolated,\n cleanup,\n };\n } catch (err) {\n const rethrow = err instanceof Error ? err : new Error(String(err));\n const rolledBack = await runRollback(ctx, deps, journal.id);\n await finalizeJournal(deps, journal.id, rolledBack);\n // Surface whether any live state was left changed.\n const mutated = ctx.mutated && !rolledBack;\n if (isAnyPickError(rethrow)) {\n rethrow.mutated = mutated;\n }\n throw rethrow;\n }\n}\n\n/**\n * Per-step execution context. Handlers register undo on `ctx` and never re-derive\n * transport capability from adapters — the plan is the single source of truth.\n */\ninterface StepRunArgs {\n step: PlanStep;\n plan: ActivationPlan;\n deps: ExecutorDeps;\n opts: ExecuteOptions;\n ctx: ActivationContext;\n journalId: string;\n}\n\ntype StepHandler = (args: StepRunArgs) => Promise<void>;\n\n/** Planner-time markers: resolved while building the plan, no execution work. */\nconst plannerOnlyStep: StepHandler = async () => {};\n\n/**\n * Exhaustive step-handler registry.\n *\n * Adding a PlanStepKind without a handler is a compile error (`satisfies`),\n * which is how ValidateCredential/WaitForHealth/VerifyEffectiveState came to\n * be advertised in `--dry-run` while doing nothing under a silent default.\n */\nconst STEP_HANDLERS = {\n EnsureProxyHub: async ({ step, plan, deps, ctx }) => {\n const name = hubNameForStep(step, plan);\n const hub = requireProxyHub(deps);\n const started = await hub.ensureRunning(name);\n plan.transport.endpoint = started.endpoint;\n if (started.startedNow) {\n ctx.mutated = true;\n ctx.undo.push(async () => {\n if (hub.getAttachedRouteCount(name) === 0) {\n await hub.stop(name);\n }\n });\n }\n },\n\n AttachProxyHubRoute: async ({ step, plan, deps, ctx }) => {\n const name = hubNameForStep(step, plan);\n const routeId = routeIdForStep(step);\n const hub = requireProxyHub(deps);\n const previous: ProxyHubRouteSecret | null = hub.getAttachedRoute(routeId);\n const attached = await hub.attachRoute(\n routeId,\n plan.client,\n plan.transport.protocol,\n name,\n requestedHubModels(plan),\n );\n if (plan.transport.managedProxy) {\n plan.transport.managedProxy.token = attached.token;\n }\n ctx.mutated = true;\n ctx.undo.push(async () => {\n await hub.restoreRoute(routeId, previous);\n });\n },\n\n WaitForHubHealth: async ({ plan, opts }) => {\n const endpoint = plan.transport.endpoint;\n if (!endpoint) {\n throw new Error('Internal plan error: Proxy Hub has no endpoint');\n }\n const ready = await waitForHttp(`${endpoint}/health`, { timeoutMs: opts.healthTimeoutMs });\n if (!ready) {\n throw anypickError('Proxy Hub did not become healthy.', 'PROXY_START_FAILED');\n }\n },\n\n ValidateProxyHubRoute: async ({ plan, opts }) => {\n const endpoint = plan.transport.endpoint;\n const token = plan.transport.managedProxy?.token;\n if (!endpoint || !token) {\n throw new Error('Internal plan error: Proxy Hub route has no token');\n }\n const response = await fetch(`${endpoint}/v1/models`, {\n headers: { authorization: `Bearer ${token}` },\n signal: AbortSignal.timeout(opts.healthTimeoutMs ?? 5000),\n });\n if (!response.ok) {\n throw anypickError('Proxy Hub route could not be validated.', 'PROXY_START_FAILED');\n }\n },\n\n StartProxy: async ({ plan, deps, ctx }) => {\n const endpoint = await startManagedProxy(plan, deps, ctx);\n if (endpoint) {\n plan.transport.endpoint = endpoint;\n }\n },\n\n WriteNativeAuth: async ({ plan, deps, ctx, journalId }) => {\n if (plan.mode === 'ephemeral') {\n throw anypickError(\n 'Internal plan error: ephemeral activation must not write live native auth.',\n 'UNSUPPORTED_TRANSPORT',\n { exitCode: ExitCode.CAPABILITY_CONFLICT },\n );\n }\n if (plan.resolvedSource.ref.kind === 'account') {\n const { provider, name } = plan.resolvedSource.ref;\n // Snapshot before invoking provider.restore. Mark mutation intent and\n // register undo before the call so a provider that writes one auth file\n // and then throws is still compensated.\n const checkpoint = await deps.accounts.checkpointLiveAuth(provider, { durable: true });\n const journal = deps.journal.get(journalId);\n deps.journal.update(journalId, {\n params: {\n ...journal?.params,\n nativeAuthCheckpoint: checkpoint,\n },\n });\n ctx.nativeAuthCheckpoint = checkpoint;\n ctx.mutated = true;\n ctx.undo.push(async () => {\n try {\n await deps.accounts.restoreLiveAuthCheckpoint(checkpoint);\n } finally {\n await deps.accounts.discardLiveAuthCheckpoint(checkpoint);\n }\n });\n await deps.accounts.use(provider, name, {\n noProxy: plan.transport.capability !== 'direct',\n });\n }\n },\n\n WriteClientConfig: async ({ plan, deps, opts, ctx, journalId }) => {\n if (\n (plan.resolvedSource.kind === 'account' || plan.resolvedSource.kind === 'proxy-hub') &&\n plan.transport.endpoint &&\n plan.transport.capability !== 'direct'\n ) {\n // Persist exact file compensation before an adapter can touch disk.\n const recovery = await prepareClientRecovery(plan.client, deps, ctx, journalId);\n ctx.clientConfigWritten = plan.client;\n ctx.mutated = true;\n ctx.undo.push(async () => {\n await deps.runtime.restoreClientConfigRecovery(recovery);\n });\n // Leaving the Hub must drop this client's route so Claude's Hub attach\n // cannot keep a stale global/<client> route that confuses live Codex config.\n if (plan.mode === 'persistent' && plan.resolvedSource.ref.kind !== 'proxy-hub') {\n await detachClientHubRoute(deps, plan.client);\n }\n // Account + managed proxy: inject endpoint into native client config.\n await injectProxyEndpoint(plan, deps, opts, recovery);\n } else if (\n plan.resolvedSource.kind === 'gateway' &&\n plan.resolvedSource.ref.kind === 'gateway' &&\n (plan.mode === 'persistent' || plan.mode === 'project')\n ) {\n // Persist exact file compensation before an adapter can touch disk.\n const recovery = await prepareClientRecovery(plan.client, deps, ctx, journalId);\n ctx.clientConfigWritten = plan.client;\n ctx.mutated = true;\n ctx.undo.push(async () => {\n await deps.runtime.restoreClientConfigRecovery(recovery);\n });\n if (plan.mode === 'persistent') {\n await detachClientHubRoute(deps, plan.client);\n }\n // Gateway profile: apply the saved profile to the client.\n await deps.runtime.apply(plan.resolvedSource.ref.name, plan.client, {\n dryRun: false,\n verbose: opts.verbose,\n proxyEndpoint: plan.transport.endpoint,\n recovery,\n });\n } else if (\n plan.client === 'codex' &&\n plan.mode === 'persistent' &&\n plan.transport.capability === 'direct'\n ) {\n // Native Codex account: restore the user's top-level model/model_provider\n // and mark live mode native so a still-running proxy cannot re-takeover.\n await deps.runtime.restoreCodexLiveForNative();\n await detachClientHubRoute(deps, 'codex');\n }\n },\n\n ValidateCredential: async ({ plan, deps }) => {\n await validateCredential(plan, deps);\n },\n\n WaitForHealth: async ({ plan, opts }) => {\n await waitForProxyHealth(plan, opts);\n },\n\n VerifyEffectiveState: async ({ plan, deps }) => {\n await verifyEffectiveState(plan, deps);\n },\n\n CreateTemporaryClientHome: async (args) => {\n await createEphemeralHome(args);\n },\n\n CreateEnvironmentOverlay: async (args) => {\n await createEphemeralHome(args);\n },\n\n SpawnChild: async () => {\n // The actual child process is spawned by the CLI launcher (launch-client),\n // which uses `result.isolated.environment` + `result.isolated.cleanup`.\n // The executor must NOT spawn here — it only builds the ephemeral session\n // so a single temp-home step produces exactly one dir.\n },\n\n CommitGlobalBinding: async ({ plan, deps, ctx }) => {\n if (plan.mode !== 'persistent' || !plan.bindingSpec || !plan.provenance) {\n throw new Error('Internal plan error: invalid global binding commit');\n }\n const previous = deps.bindings.getGlobal(plan.client);\n ctx.binding = deps.bindings.upsertGlobal(plan.client, plan.bindingSpec, plan.provenance);\n ctx.mutated = true;\n ctx.undo.push(async () => {\n if (previous) {\n deps.bindings.upsertGlobal(plan.client, previous.spec, previous.provenance);\n } else {\n deps.bindings.deleteGlobal(plan.client);\n }\n });\n // Codex Desktop catalog aliases read modelRoles from the binding store.\n // Re-sync after commit so Default/Model 2–5 win over the pre-binding attach.\n if (plan.client === 'codex' && plan.resolvedSource.ref.kind === 'proxy-hub') {\n await deps.runtime.refreshCodexLiveConfig({ forceRouted: true });\n }\n },\n\n CommitProjectBinding: async ({ step, plan, deps, opts, ctx }) => {\n if (plan.mode !== 'project' || !plan.bindingSpec || !plan.provenance) {\n throw new Error('Internal plan error: invalid project binding commit');\n }\n const root =\n typeof step.params?.projectRoot === 'string' ? step.params.projectRoot : opts.projectRoot;\n if (!root) {\n throw anypickError('projectRoot required for project binding commit', 'INVALID_USAGE', {\n exitCode: ExitCode.INVALID_USAGE,\n });\n }\n const previous = deps.bindings.getProject(root, plan.client);\n ctx.binding = deps.bindings.upsertProject(root, plan.client, plan.bindingSpec, plan.provenance);\n ctx.mutated = true;\n ctx.undo.push(async () => {\n if (previous) {\n deps.bindings.upsertProject(root, plan.client, previous.spec, previous.provenance);\n } else {\n deps.bindings.deleteProject(root, plan.client);\n }\n });\n },\n\n ResolveSource: plannerOnlyStep,\n ExpandPreset: plannerOnlyStep,\n ValidateCompatibility: plannerOnlyStep,\n ResolveTransport: plannerOnlyStep,\n ValidateExternalDependency: plannerOnlyStep,\n AllocateProxyLease: plannerOnlyStep,\n InspectClientState: plannerOnlyStep,\n ReleaseLease: plannerOnlyStep,\n RestoreTemporaryState: plannerOnlyStep,\n} as const satisfies Record<PlanStep['kind'], StepHandler>;\n\nasync function createEphemeralHome({ plan, deps, opts, ctx }: StepRunArgs): Promise<void> {\n // Exactly one isolated home is created for the whole ephemeral run. The\n // returned session owns its own temp dir + acquired handles; cleanup is\n // idempotent so the launcher can call it on every exit path.\n if (\n plan.resolvedSource.ref.kind === 'account' ||\n plan.resolvedSource.ref.kind === 'gateway' ||\n plan.resolvedSource.ref.kind === 'proxy-hub'\n ) {\n const profile = await loadProfileForRef(plan.resolvedSource.ref, deps);\n const account = await loadAccountForRef(plan.resolvedSource.ref, deps);\n const resolvedPlan: ResolvedClientPlan = {\n clientId: plan.client,\n source: plan.resolvedSource,\n transport: plan.transport,\n model: plan.model,\n mode: 'ephemeral',\n profile,\n account,\n dryRun: false,\n verbose: Boolean(opts.verbose),\n anypickRoot: deps.runtime.root,\n };\n const isolated = await deps.runtime.createEphemeralRuntime(resolvedPlan);\n ctx.isolated = isolated;\n ctx.mutated = true;\n ctx.undo.push(async () => {\n await isolated.cleanup();\n });\n }\n}\n\n/**\n * Execute one plan step. Validation/inspection steps are no-ops at execution\n * time (the planner already resolved and validated); mutating steps perform\n * the side effect and register its inverse on the rollback stack.\n */\nasync function runStep(\n step: PlanStep,\n plan: ActivationPlan,\n deps: ExecutorDeps,\n opts: ExecuteOptions,\n ctx: ActivationContext,\n journalId: string,\n): Promise<void> {\n const handler = STEP_HANDLERS[step.kind];\n await handler({ step, plan, deps, opts, ctx, journalId });\n}\n\n/**\n * Assert the credential behind this source is usable before anything mutates\n * live state. For accounts this is a presence check on the saved snapshot plus\n * an opportunistic refresh when the provider supports it: activating onto an\n * expired token otherwise fails later, after the client config was rewritten.\n * Gateways carry their key material in the profile, so presence is sufficient.\n */\nasync function validateCredential(plan: ActivationPlan, deps: ExecutorDeps): Promise<void> {\n const ref = plan.resolvedSource.ref;\n\n if (ref.kind === 'account') {\n // `accounts.get` returns null unless the account has snapshot rows in the\n // database, and materializes them to disk as a side effect. That row check\n // *is* the credential-presence check — a filesystem probe here would be\n // meaningless, since the directory is (re)created by this very call.\n const account = await deps.accounts.get(ref.provider, ref.name);\n if (!account) {\n throw anypickError(\n `Account ${ref.provider}/${ref.name} has no stored credential snapshot.`,\n 'AUTH_REQUIRED',\n {\n exitCode: ExitCode.AUTH_REQUIRED,\n suggestions: [`anypick add ${ref.provider} --name ${ref.name}`],\n },\n );\n }\n // Best-effort: a provider that can refresh does so now, while we still hold\n // the mutation lock and before any client file is touched. A refresh failure\n // is not fatal — the credential may still be valid — but it is observable.\n if (plan.resolvedSource.adapter.capabilities.canRefresh) {\n try {\n await deps.accounts.refresh(ref.provider, ref.name);\n } catch (err) {\n makeEmitter(deps.eventSink)(\n 'warn',\n 'credential_refresh_failed',\n `Could not refresh credential for ${ref.provider}/${ref.name} before activation`,\n {\n step: 'ValidateCredential',\n resourceIds: [serializeRef(ref)],\n context: { error: err instanceof Error ? err.message : String(err) },\n },\n );\n }\n }\n return;\n }\n\n if (ref.kind === 'gateway') {\n const profile = await loadProfileForRef(ref, deps);\n if (!profile) {\n throw anypickError(`Gateway not found: ${ref.name}`, 'GATEWAY_NOT_FOUND', {\n exitCode: ExitCode.NOT_FOUND,\n });\n }\n return;\n }\n\n if (ref.kind === 'proxy-hub') {\n const hub = await requireProxyHub(deps).get(ref.name);\n if (!hub.enabled) {\n throw anypickError(`Proxy Hub hub:${ref.name} is disabled.`, 'PROXY_DISABLED');\n }\n return;\n }\n\n if (ref.kind === 'account-pool') {\n const pool = deps.pools ? await deps.pools.get(ref.provider) : undefined;\n const enabled = pool?.members.filter((m) => m.enabled) ?? [];\n if (enabled.length === 0) {\n throw anypickError(\n `Pool ${ref.provider} has no enabled members to activate.`,\n 'AUTH_REQUIRED',\n {\n exitCode: ExitCode.AUTH_REQUIRED,\n suggestions: [`anypick proxy pool ${ref.provider}`],\n },\n );\n }\n }\n}\n\n/**\n * Confirm the managed proxy is actually serving before its endpoint is written\n * into a client config.\n *\n * Provider `startProxy` implementations already poll `/health` with instance-id\n * verification and throw `PROXY_START_FAILED` on timeout, so under normal\n * sequencing this step is a cheap re-assertion rather than the primary gate.\n * It matters for the reuse path: when `startProxy` adopts an already-running\n * process it returns without a fresh readiness probe, and for a process that\n * died in the window between start and config write.\n */\nasync function waitForProxyHealth(plan: ActivationPlan, opts: ExecuteOptions): Promise<void> {\n const endpoint = plan.transport.endpoint;\n if (!endpoint) {\n return;\n }\n const ref = plan.resolvedSource.ref;\n const ok = await waitForHttp(`${endpoint}/health`, {\n timeoutMs: opts.healthTimeoutMs ?? 5000,\n });\n if (!ok) {\n throw anypickError(\n `Proxy for ${plan.resolvedSource.display} is not responding at ${endpoint}.`,\n 'HEALTH_FAILURE',\n {\n exitCode: ExitCode.HEALTH_FAILURE,\n suggestions: [\n `anypick proxy logs ${ref.kind === 'account' ? `${ref.provider} ${ref.name}` : ''}`.trim(),\n `anypick doctor ${plan.client}`,\n ],\n },\n );\n }\n}\n\n/**\n * Read back the client configuration this activation just wrote and confirm the\n * adapter reports it as present. Without this, a client adapter whose write\n * silently no-ops leaves `anypick use` reporting success while the client keeps\n * talking to the previous endpoint — the exact silent inconsistency the journal\n * exists to prevent.\n *\n * Non-fatal by design: a failed read-back is reported as a degraded-state event\n * rather than rolling back a correct write, because `inspect()` is a heuristic\n * and a false negative must not undo a good activation.\n */\nasync function verifyEffectiveState(plan: ActivationPlan, deps: ExecutorDeps): Promise<void> {\n if (plan.mode === 'ephemeral') {\n return;\n }\n const client = deps.clients.get(plan.client);\n let inspected;\n try {\n inspected = await client.inspect();\n } catch (err) {\n makeEmitter(deps.eventSink)(\n 'warn',\n 'effective_state_unverified',\n `Could not read back ${plan.client} configuration after activation`,\n {\n step: 'VerifyEffectiveState',\n resourceIds: [`client/${plan.client}`],\n context: { error: err instanceof Error ? err.message : String(err) },\n },\n );\n return;\n }\n if (!inspected.present) {\n makeEmitter(deps.eventSink)(\n 'warn',\n 'effective_state_mismatch',\n `${plan.client} reports no anypick-managed configuration after activation`,\n {\n step: 'VerifyEffectiveState',\n resourceIds: [`client/${plan.client}`],\n context: { issues: inspected.issues?.join('; ') },\n },\n );\n }\n}\n\n/**\n * Start the managed proxy (pool or account) for this activation, create its\n * lease, and record inverse operations. Returns the proxy endpoint.\n */\nasync function startManagedProxy(\n plan: ActivationPlan,\n deps: ExecutorDeps,\n ctx: ActivationContext,\n): Promise<string | undefined> {\n const ref = plan.resolvedSource.ref;\n if (ref.kind === 'account-pool') {\n const started = await deps.proxy.startPoolProxy(ref.provider);\n if (started.startedNow) {\n ctx.startedProxies.push({ provider: ref.provider });\n }\n ctx.mutated = true;\n if (started.startedNow) {\n ctx.undo.push(async () => {\n await deps.proxy.stopPoolProxy(ref.provider);\n });\n }\n if (started.leaseId) {\n ctx.leaseIds.push(started.leaseId);\n }\n if (plan.transport.managedProxy) {\n if (started.leaseId) {\n plan.transport.managedProxy.leaseId = started.leaseId;\n }\n // The proxy token is independent of lease bookkeeping. A lease can be\n // unavailable (for example while a tray owns the process) even though\n // the reused proxy returned its live token; never fall back to the\n // unauthenticated `anypick-proxy` placeholder in that case.\n if (started.token) {\n plan.transport.managedProxy.token = started.token;\n }\n }\n return started.endpoint;\n }\n\n if (ref.kind === 'account') {\n const accountBefore = await deps.accounts.get(ref.provider, ref.name);\n if (!accountBefore) {\n throw anypickError(`Account not found: ${ref.provider}/${ref.name}`, 'NOT_FOUND');\n }\n if (plan.mode === 'ephemeral' && !accountBefore.proxy.enabled) {\n // `startProxy` needs an enabled account config. Restore the exact prior\n // config after the child exits so one-shot runs do not silently opt an\n // account into future automatic proxy starts.\n const priorConfig = accountBefore.proxy;\n ctx.mutated = true;\n ctx.undo.push(async () => {\n await deps.proxy.restoreProxyConfig(ref.provider, ref.name, priorConfig);\n });\n }\n try {\n await deps.proxy.enableProxy(ref.provider, ref.name, {});\n } catch {\n // may already be enabled\n }\n const started = await deps.proxy.startProxy(ref.provider, ref.name);\n if (started.startedNow) {\n ctx.startedProxies.push({ provider: ref.provider, account: ref.name });\n }\n ctx.mutated = true;\n if (started.startedNow) {\n ctx.undo.push(async () => {\n await deps.proxy.stopProxy(ref.provider, ref.name);\n });\n }\n if (started.leaseId) {\n ctx.leaseIds.push(started.leaseId);\n }\n if (plan.transport.managedProxy) {\n if (started.leaseId) {\n plan.transport.managedProxy.leaseId = started.leaseId;\n }\n if (started.token) {\n plan.transport.managedProxy.token = started.token;\n }\n }\n return started.endpoint;\n }\n\n return undefined;\n}\n\n/** Inject the managed proxy endpoint into native client config (account proxy). */\nasync function injectProxyEndpoint(\n plan: ActivationPlan,\n deps: ExecutorDeps,\n opts: ExecuteOptions,\n recovery: ClientConfigRecovery,\n): Promise<void> {\n const endpoint = plan.transport.endpoint;\n if (!endpoint) {\n return;\n }\n const ref = plan.resolvedSource.ref;\n const modelId = plan.model.mode === 'explicit' ? plan.model.id : undefined;\n const rawRoles = plan.bindingSpec?.clientOptions?.modelRoles;\n const modelRoles =\n rawRoles && typeof rawRoles === 'object' && !Array.isArray(rawRoles)\n ? Object.fromEntries(\n Object.entries(rawRoles as Record<string, unknown>).filter(\n (e): e is [string, string] => typeof e[1] === 'string' && e[1].trim() !== '',\n ),\n )\n : undefined;\n const accountRef =\n ref.kind === 'account'\n ? { provider: ref.provider, name: ref.name }\n : { provider: plan.resolvedSource.adapter.capabilities.provider, name: '*' };\n await deps.runtime.applyProxyEndpoint(plan.client, {\n endpoint,\n apiKey: plan.transport.managedProxy?.token ?? 'anypick-proxy',\n defaultModel: modelRoles?.default ?? modelId,\n modelRoles,\n accountRef,\n dryRun: false,\n verbose: opts.verbose,\n // Canonical source id (hub:default, grok/work, …) so live sticky routes match bindings.\n label: displayRef(plan.resolvedSource.ref),\n recovery,\n });\n}\n\nfunction hubNameForStep(step: PlanStep, plan: ActivationPlan): string {\n const name = typeof step.params?.hub === 'string' ? step.params.hub : undefined;\n if (name) {\n return name;\n }\n if (plan.resolvedSource.ref.kind === 'proxy-hub') {\n return plan.resolvedSource.ref.name;\n }\n throw new Error('Internal plan error: Proxy Hub step has no hub name');\n}\n\nfunction requireProxyHub(deps: ExecutorDeps): NonNullable<ExecutorDeps['hub']> {\n if (!deps.hub) {\n throw new Error('Proxy Hub service is unavailable in this composition.');\n }\n return deps.hub;\n}\n\n/** Drop a client's persistent Hub route when it leaves the Hub for another source. */\nasync function detachClientHubRoute(deps: ExecutorDeps, clientId: string): Promise<void> {\n try {\n await deps.hub?.detachRoute(`global/${clientId}`);\n } catch {\n // Hub may be unavailable in some compositions / tests.\n }\n}\n\nfunction routeIdForStep(step: PlanStep): string {\n const routeId = typeof step.params?.routeId === 'string' ? step.params.routeId : undefined;\n if (!routeId) {\n throw new Error('Internal plan error: Proxy Hub route step has no route id');\n }\n return routeId;\n}\n\nfunction requestedHubModels(plan: ActivationPlan): string[] {\n // Prefer Desktop role order (default → list2…list5) so attachRoute aliases\n // pin the same slots Configure Models chose. Fall back to explicit model.\n const models: string[] = [];\n const seen = new Set<string>();\n const push = (raw: unknown) => {\n if (typeof raw !== 'string') {\n return;\n }\n const model = raw.trim();\n if (!model || seen.has(model)) {\n return;\n }\n seen.add(model);\n models.push(model);\n };\n const rawRoles = plan.bindingSpec?.clientOptions?.modelRoles;\n if (rawRoles && typeof rawRoles === 'object' && !Array.isArray(rawRoles)) {\n const roles = rawRoles as Record<string, unknown>;\n for (const id of ['default', 'list2', 'list3', 'list4', 'list5'] as const) {\n push(roles[id]);\n }\n for (const value of Object.values(roles)) {\n push(value);\n }\n }\n if (plan.model.mode === 'explicit') {\n push(plan.model.id);\n }\n return models;\n}\n\n/** Persist file compensation before a client adapter is permitted to mutate. */\nasync function prepareClientRecovery(\n clientId: string,\n deps: ExecutorDeps,\n ctx: ActivationContext,\n journalId: string,\n): Promise<ClientConfigRecovery> {\n const recovery = await deps.runtime.prepareClientConfigRecovery(clientId, journalId);\n ctx.backupPaths.push(...recovery.backupPaths);\n deps.journal.update(journalId, { backupPaths: ctx.backupPaths });\n return recovery;\n}\n\n/**\n * Unwind a failed activation in reverse. Returns true when every recorded\n * inverse operation completed (state fully restored).\n */\nasync function runRollback(\n ctx: ActivationContext,\n deps: ExecutorDeps,\n journalId: string,\n): Promise<boolean> {\n if (!ctx.mutated) {\n return true;\n }\n deps.journal.update(journalId, { state: 'rolling_back' });\n return runUndo(ctx);\n}\n\nasync function runUndo(ctx: ActivationContext): Promise<boolean> {\n let allUndone = true;\n for (let i = ctx.undo.length - 1; i >= 0; i--) {\n try {\n await ctx.undo[i]();\n } catch {\n allUndone = false;\n }\n }\n return allUndone;\n}\n\n/**\n * A successful `run` is still scoped: when its child exits we reverse every\n * setup side effect (temporary home, native auth, proxy and lease). The closure\n * is idempotent because signal/error paths can race normal child exit.\n */\nfunction makeEphemeralCleanup(ctx: ActivationContext, deps: ExecutorDeps): () => Promise<void> {\n let cleanup: Promise<void> | undefined;\n return async () => {\n cleanup ??= (async () => {\n const restored = await runUndo(ctx);\n for (const leaseId of ctx.leaseIds) {\n deps.leases.release(leaseId);\n }\n if (!restored) {\n throw anypickError(\n 'Ephemeral run cleanup could not restore all local state. Run anypick doctor before switching accounts.',\n 'EPHEMERAL_CLEANUP_FAILED',\n );\n }\n })();\n return cleanup;\n };\n}\n\nasync function finalizeJournal(\n deps: ExecutorDeps,\n journalId: string,\n rolledBack: boolean,\n): Promise<void> {\n try {\n deps.journal.update(journalId, { state: rolledBack ? 'rolled_back' : 'failed' });\n } catch {\n // journal update failure must not mask the original error\n }\n}\n\nexport interface RecoveryDeps extends Pick<ExecutorDeps, 'journal'> {\n /** When present, recovery re-resolves source adapters from journal ResourceRefs. */\n resolve?: ResolveSourceDeps;\n /** Structured event sink for refusing recovery that cannot be made exact (OBS-01). */\n events?: AnyPickEventSink;\n}\n\nexport interface RecoveryResult {\n recovered: number;\n failed: string[];\n /** Entries where source/adapter could not be re-resolved exactly (no forward exec). */\n refused: string[];\n}\n\n/**\n * Parse a canonical resource ref from journal params / affectedResources.\n */\nfunction sourceRefFromJournal(entry: {\n params?: Record<string, unknown>;\n affectedResources: string[];\n}): ResourceRef | null {\n const raw =\n (typeof entry.params?.source === 'string' ? entry.params.source : undefined) ??\n entry.affectedResources.find(\n (r) =>\n r.startsWith('account/') ||\n r.startsWith('gateway/') ||\n r.startsWith('hub/') ||\n r.startsWith('preset/'),\n );\n if (!raw) {\n return null;\n }\n try {\n return parseRef(raw);\n } catch {\n return null;\n }\n}\n\n/**\n * Startup recovery: re-resolve adapters from stored ResourceRef values;\n * complete exact rollbacks when possible; never substitute another source (spec §23.4).\n */\nexport async function recoverIncompleteOperations(deps: RecoveryDeps): Promise<RecoveryResult> {\n const incomplete = deps.journal.listIncomplete();\n const failed: string[] = [];\n const refused: string[] = [];\n let recovered = 0;\n const emit = makeEmitter(deps.events);\n\n for (const entry of incomplete) {\n // Re-resolve source adapter from stored canonical ref when possible\n const sourceRef = sourceRefFromJournal(entry);\n let reResolvedOk = true;\n\n if (sourceRef && deps.resolve) {\n if (sourceRef.kind === 'preset') {\n // Presets must never be forward-executed from journal; mark failed\n reResolvedOk = false;\n } else {\n try {\n const resolved = await materializeResolvedSource(sourceRef, deps.resolve);\n const identity = serializeRef(resolved.ref);\n const expected =\n typeof entry.params?.source === 'string'\n ? entry.params.source\n : serializeRef(sourceRef);\n if (identity !== expected) {\n reResolvedOk = false;\n }\n // Touch adapter.transportFor to ensure it is live (not a serialized object)\n if (typeof resolved.adapter.transportFor !== 'function') {\n reResolvedOk = false;\n }\n } catch {\n reResolvedOk = false;\n }\n }\n } else if (sourceRef && !deps.resolve) {\n // Without resolve deps we cannot re-resolve — refuse forward paths later\n reResolvedOk = false;\n }\n\n let restoredDurableState = false;\n\n // Exact file rollback from recorded backups (no adapter substitution)\n if (entry.backupPaths.length > 0) {\n try {\n let allRestored = true;\n for (const backup of entry.backupPaths) {\n // backupPaths entries are either \"src=>dest\" or plain backup file paths\n if (backup.includes('=>')) {\n const [src, dest] = backup.split('=>').map((s) => s.trim());\n if (!src || !dest) {\n allRestored = false;\n break;\n }\n if (src === 'delete') {\n const { rm } = await import('node:fs/promises');\n await rm(dest, { force: true });\n continue;\n }\n if (!(await pathExists(src))) {\n allRestored = false;\n break;\n }\n await mkdir(dirname(dest), { recursive: true });\n await copyFile(src, dest);\n } else if (!(await pathExists(backup))) {\n allRestored = false;\n break;\n }\n }\n if (allRestored) {\n restoredDurableState = true;\n } else {\n deps.journal.update(entry.id, { state: 'failed' });\n failed.push(entry.id);\n continue;\n }\n } catch {\n deps.journal.update(entry.id, { state: 'failed' });\n failed.push(entry.id);\n continue;\n }\n }\n\n // Persistent native-auth switches store their exact checkpoint before the\n // provider is allowed to restore anything. Recover it after client config\n // (reverse mutation order) and only then mark the journal terminal.\n const rawCheckpoint = entry.params?.nativeAuthCheckpoint;\n if (isLiveAuthCheckpoint(rawCheckpoint)) {\n if (!deps.resolve) {\n deps.journal.update(entry.id, { state: 'failed' });\n failed.push(entry.id);\n continue;\n }\n try {\n await deps.resolve.accounts.restoreLiveAuthCheckpoint(rawCheckpoint);\n await deps.resolve.accounts.discardLiveAuthCheckpoint(rawCheckpoint);\n restoredDurableState = true;\n } catch {\n deps.journal.update(entry.id, { state: 'failed' });\n failed.push(entry.id);\n continue;\n }\n }\n\n if (restoredDurableState) {\n deps.journal.update(entry.id, { state: 'rolled_back' });\n recovered++;\n continue;\n }\n\n // Never forward-execute when original source cannot be re-resolved exactly\n if (sourceRef && !reResolvedOk) {\n deps.journal.update(entry.id, { state: 'failed' });\n refused.push(entry.id);\n failed.push(entry.id);\n emit(\n 'warn',\n 'recovery_refused',\n 'Journal recovery refused: source could not be re-resolved exactly',\n {\n opId: entry.id,\n context: { reason: 'source-not-reresolvable', resourceIds: entry.affectedResources },\n },\n );\n continue;\n }\n\n if (entry.state === 'planned') {\n // Never started — mark failed, no mutation\n deps.journal.update(entry.id, { state: 'failed' });\n recovered++;\n continue;\n }\n\n // executing / verifying / rolling_back without backups: cannot safely continue\n deps.journal.update(entry.id, { state: 'failed' });\n failed.push(entry.id);\n }\n\n return { recovered, failed, refused };\n}\n\nfunction isLiveAuthCheckpoint(value: unknown): value is LiveAuthCheckpoint {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const checkpoint = value as Partial<LiveAuthCheckpoint>;\n return (\n typeof checkpoint.providerId === 'string' &&\n (typeof checkpoint.activeAccount === 'string' || checkpoint.activeAccount === null) &&\n typeof checkpoint.hadLiveAuth === 'boolean' &&\n typeof checkpoint.directory === 'string'\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AA+EA,SAAS,aACP,GAMA,GAMS;CAET,OACE,KAAK,UAAU;EACb,QAAQ,EAAE;EACV,QAAQ,EAAE;EACV,OAAO,EAAE;EACT,eAAe,EAAE,iBAAiB,CAAC;CACrC,CAAC,MACD,KAAK,UAAU;EACb,QAAQ,EAAE;EACV,QAAQ,EAAE;EACV,OAAO,EAAE;EACT,eAAe,EAAE,iBAAiB,CAAC;CACrC,CAAC;AAEL;AAEA,SAAS,eAAe,MAAgC;CAItD,IAAI,KAAK,eAAe,IAAI,SAAS,aACnC,OAAO,CAAC,UAAU,KAAK,QAAQ;CAEjC,OAAO,CAAC,UAAU,KAAK,UAAU,oBAAoB,KAAK,eAAe,GAAG,CAAC;AAC/E;AAEA,eAAsB,kBACpB,MACA,MACA,OAAuB,CAAC,GACA;CACxB,MAAM,SAAS,QAAQ,KAAK,MAAM;CAIlC,MAAM,WACJ,KAAK,SAAS,gBAAgB,KAAK,eAAe,KAAK,iBAAiB,QACpE,KAAK,SAAS,UAAU,KAAK,MAAM,IACnC,KAAA;CACN,MAAM,gBAAgB,QACpB,YAAY,KAAK,eAAe,aAAa,SAAS,MAAM,KAAK,WAAW,CAC9E;CAEA,IAAI,QACF,OAAO;EACL;EACA,QAAQ;EACR,eAAe;EACf,eAAe,KAAK,UAAU;CAChC;CAIF,OAAO,kBAAkB,KAAK,QAAQ,MAAM,eAAe,IAAI,GAAG,YAAY;EAE5E,OAAO;GAAE,GAAG,MADS,wBAAwB,MAAM,MAAM,IAAI;GACzC;EAAc;CACpC,CAAC;AACH;;;;;;;;;;;AAsCA,eAAe,wBACb,MACA,MACA,MACwB;CACxB,MAAM,WAAW,CAAC,UAAU,KAAK,UAAU,aAAa,KAAK,eAAe,GAAG,CAAC;CAChF,MAAM,MAAyB;EAC7B,SAAS;EACT,MAAM,CAAC;EACP,gBAAgB,CAAC;EACjB,UAAU,CAAC;EACX,aAAa,CAAC;CAChB;CAEA,MAAM,UAAU,KAAK,QAAQ,OAAO,YAAY,KAAK,QAAQ;EAC3D,mBAAmB;EACnB,QAAQ;GACN,QAAQ,KAAK;GACb,QAAQ,aAAa,KAAK,eAAe,GAAG;GAC5C,MAAM,KAAK;GACX,OAAO,KAAK,MAAM,KAAK,MAAM,EAAE,IAAI;EACrC;EACA,OAAO;CACT,CAAC;CAED,IAAI;EACF,KAAK,QAAQ,OAAO,QAAQ,IAAI,EAAE,OAAO,YAAY,CAAC;EAGtD,IAAI,KAAK,UAAU,eAAe,yBAChC,MAAM,aACJ,+BAA+B,KAAK,eAAe,QAAQ,8DAC3D,sBACA;GACE,UAAU,SAAS;GACnB,aAAa,CAAC,kBAAkB,KAAK,QAAQ;GAC7C,SAAS;EACX,CACF;EAEF,IAAI,KAAK,UAAU,eAAe,eAChC,MAAM,aACJ,6BAA6B,KAAK,OAAO,KAAK,KAAK,eAAe,WAClE,yBACA,EAAE,UAAU,SAAS,oBAAoB,CAC3C;EAGF,KAAK,MAAM,QAAQ,KAAK,OACtB,MAAM,QAAQ,MAAM,MAAM,MAAM,MAAM,KAAK,QAAQ,EAAE;EAGvD,KAAK,QAAQ,OAAO,QAAQ,IAAI;GAC9B,OAAO;GACP,aAAa,IAAI;EACnB,CAAC;EAED,KAAK,QAAQ,OAAO,QAAQ,IAAI,EAAE,OAAO,YAAY,CAAC;EAEtD,MAAM,UAAU,KAAK,SAAS,cAAc,qBAAqB,KAAK,IAAI,IAAI,KAAA;EAE9E,OAAO;GACL;GACA,QAAQ;GACR,eAAe;GACf,SAAS,IAAI;GACb,eAAe,KAAK,UAAU;GAC9B,WAAW,QAAQ;GACnB,UAAU,IAAI;GACd;EACF;CACF,SAAS,KAAK;EACZ,MAAM,UAAU,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,GAAG,CAAC;EAClE,MAAM,aAAa,MAAM,YAAY,KAAK,MAAM,QAAQ,EAAE;EAC1D,MAAM,gBAAgB,MAAM,QAAQ,IAAI,UAAU;EAElD,MAAM,UAAU,IAAI,WAAW,CAAC;EAChC,IAAI,eAAe,OAAO,GACxB,QAAQ,UAAU;EAEpB,MAAM;CACR;AACF;;AAkBA,IAAM,kBAA+B,YAAY,CAAC;;;;;;;;AASlD,IAAM,gBAAgB;CACpB,gBAAgB,OAAO,EAAE,MAAM,MAAM,MAAM,UAAU;EACnD,MAAM,OAAO,eAAe,MAAM,IAAI;EACtC,MAAM,MAAM,gBAAgB,IAAI;EAChC,MAAM,UAAU,MAAM,IAAI,cAAc,IAAI;EAC5C,KAAK,UAAU,WAAW,QAAQ;EAClC,IAAI,QAAQ,YAAY;GACtB,IAAI,UAAU;GACd,IAAI,KAAK,KAAK,YAAY;IACxB,IAAI,IAAI,sBAAsB,IAAI,MAAM,GACtC,MAAM,IAAI,KAAK,IAAI;GAEvB,CAAC;EACH;CACF;CAEA,qBAAqB,OAAO,EAAE,MAAM,MAAM,MAAM,UAAU;EACxD,MAAM,OAAO,eAAe,MAAM,IAAI;EACtC,MAAM,UAAU,eAAe,IAAI;EACnC,MAAM,MAAM,gBAAgB,IAAI;EAChC,MAAM,WAAuC,IAAI,iBAAiB,OAAO;EACzE,MAAM,WAAW,MAAM,IAAI,YACzB,SACA,KAAK,QACL,KAAK,UAAU,UACf,MACA,mBAAmB,IAAI,CACzB;EACA,IAAI,KAAK,UAAU,cACjB,KAAK,UAAU,aAAa,QAAQ,SAAS;EAE/C,IAAI,UAAU;EACd,IAAI,KAAK,KAAK,YAAY;GACxB,MAAM,IAAI,aAAa,SAAS,QAAQ;EAC1C,CAAC;CACH;CAEA,kBAAkB,OAAO,EAAE,MAAM,WAAW;EAC1C,MAAM,WAAW,KAAK,UAAU;EAChC,IAAI,CAAC,UACH,MAAM,IAAI,MAAM,gDAAgD;EAGlE,IAAI,CAAC,MADe,YAAY,GAAG,SAAS,UAAU,EAAE,WAAW,KAAK,gBAAgB,CAAC,GAEvF,MAAM,aAAa,qCAAqC,oBAAoB;CAEhF;CAEA,uBAAuB,OAAO,EAAE,MAAM,WAAW;EAC/C,MAAM,WAAW,KAAK,UAAU;EAChC,MAAM,QAAQ,KAAK,UAAU,cAAc;EAC3C,IAAI,CAAC,YAAY,CAAC,OAChB,MAAM,IAAI,MAAM,mDAAmD;EAMrE,IAAI,EAAC,MAJkB,MAAM,GAAG,SAAS,aAAa;GACpD,SAAS,EAAE,eAAe,UAAU,QAAQ;GAC5C,QAAQ,YAAY,QAAQ,KAAK,mBAAmB,GAAI;EAC1D,CAAC,EAAA,CACa,IACZ,MAAM,aAAa,2CAA2C,oBAAoB;CAEtF;CAEA,YAAY,OAAO,EAAE,MAAM,MAAM,UAAU;EACzC,MAAM,WAAW,MAAM,kBAAkB,MAAM,MAAM,GAAG;EACxD,IAAI,UACF,KAAK,UAAU,WAAW;CAE9B;CAEA,iBAAiB,OAAO,EAAE,MAAM,MAAM,KAAK,gBAAgB;EACzD,IAAI,KAAK,SAAS,aAChB,MAAM,aACJ,8EACA,yBACA,EAAE,UAAU,SAAS,oBAAoB,CAC3C;EAEF,IAAI,KAAK,eAAe,IAAI,SAAS,WAAW;GAC9C,MAAM,EAAE,UAAU,SAAS,KAAK,eAAe;GAI/C,MAAM,aAAa,MAAM,KAAK,SAAS,mBAAmB,UAAU,EAAE,SAAS,KAAK,CAAC;GACrF,MAAM,UAAU,KAAK,QAAQ,IAAI,SAAS;GAC1C,KAAK,QAAQ,OAAO,WAAW,EAC7B,QAAQ;IACN,GAAG,SAAS;IACZ,sBAAsB;GACxB,EACF,CAAC;GACD,IAAI,uBAAuB;GAC3B,IAAI,UAAU;GACd,IAAI,KAAK,KAAK,YAAY;IACxB,IAAI;KACF,MAAM,KAAK,SAAS,0BAA0B,UAAU;IAC1D,UAAU;KACR,MAAM,KAAK,SAAS,0BAA0B,UAAU;IAC1D;GACF,CAAC;GACD,MAAM,KAAK,SAAS,IAAI,UAAU,MAAM,EACtC,SAAS,KAAK,UAAU,eAAe,SACzC,CAAC;EACH;CACF;CAEA,mBAAmB,OAAO,EAAE,MAAM,MAAM,MAAM,KAAK,gBAAgB;EACjE,KACG,KAAK,eAAe,SAAS,aAAa,KAAK,eAAe,SAAS,gBACxE,KAAK,UAAU,YACf,KAAK,UAAU,eAAe,UAC9B;GAEA,MAAM,WAAW,MAAM,sBAAsB,KAAK,QAAQ,MAAM,KAAK,SAAS;GAC9E,IAAI,sBAAsB,KAAK;GAC/B,IAAI,UAAU;GACd,IAAI,KAAK,KAAK,YAAY;IACxB,MAAM,KAAK,QAAQ,4BAA4B,QAAQ;GACzD,CAAC;GAGD,IAAI,KAAK,SAAS,gBAAgB,KAAK,eAAe,IAAI,SAAS,aACjE,MAAM,qBAAqB,MAAM,KAAK,MAAM;GAG9C,MAAM,oBAAoB,MAAM,MAAM,MAAM,QAAQ;EACtD,OAAO,IACL,KAAK,eAAe,SAAS,aAC7B,KAAK,eAAe,IAAI,SAAS,cAChC,KAAK,SAAS,gBAAgB,KAAK,SAAS,YAC7C;GAEA,MAAM,WAAW,MAAM,sBAAsB,KAAK,QAAQ,MAAM,KAAK,SAAS;GAC9E,IAAI,sBAAsB,KAAK;GAC/B,IAAI,UAAU;GACd,IAAI,KAAK,KAAK,YAAY;IACxB,MAAM,KAAK,QAAQ,4BAA4B,QAAQ;GACzD,CAAC;GACD,IAAI,KAAK,SAAS,cAChB,MAAM,qBAAqB,MAAM,KAAK,MAAM;GAG9C,MAAM,KAAK,QAAQ,MAAM,KAAK,eAAe,IAAI,MAAM,KAAK,QAAQ;IAClE,QAAQ;IACR,SAAS,KAAK;IACd,eAAe,KAAK,UAAU;IAC9B;GACF,CAAC;EACH,OAAO,IACL,KAAK,WAAW,WAChB,KAAK,SAAS,gBACd,KAAK,UAAU,eAAe,UAC9B;GAGA,MAAM,KAAK,QAAQ,0BAA0B;GAC7C,MAAM,qBAAqB,MAAM,OAAO;EAC1C;CACF;CAEA,oBAAoB,OAAO,EAAE,MAAM,WAAW;EAC5C,MAAM,mBAAmB,MAAM,IAAI;CACrC;CAEA,eAAe,OAAO,EAAE,MAAM,WAAW;EACvC,MAAM,mBAAmB,MAAM,IAAI;CACrC;CAEA,sBAAsB,OAAO,EAAE,MAAM,WAAW;EAC9C,MAAM,qBAAqB,MAAM,IAAI;CACvC;CAEA,2BAA2B,OAAO,SAAS;EACzC,MAAM,oBAAoB,IAAI;CAChC;CAEA,0BAA0B,OAAO,SAAS;EACxC,MAAM,oBAAoB,IAAI;CAChC;CAEA,YAAY,YAAY,CAKxB;CAEA,qBAAqB,OAAO,EAAE,MAAM,MAAM,UAAU;EAClD,IAAI,KAAK,SAAS,gBAAgB,CAAC,KAAK,eAAe,CAAC,KAAK,YAC3D,MAAM,IAAI,MAAM,oDAAoD;EAEtE,MAAM,WAAW,KAAK,SAAS,UAAU,KAAK,MAAM;EACpD,IAAI,UAAU,KAAK,SAAS,aAAa,KAAK,QAAQ,KAAK,aAAa,KAAK,UAAU;EACvF,IAAI,UAAU;EACd,IAAI,KAAK,KAAK,YAAY;GACxB,IAAI,UACF,KAAK,SAAS,aAAa,KAAK,QAAQ,SAAS,MAAM,SAAS,UAAU;QAE1E,KAAK,SAAS,aAAa,KAAK,MAAM;EAE1C,CAAC;EAGD,IAAI,KAAK,WAAW,WAAW,KAAK,eAAe,IAAI,SAAS,aAC9D,MAAM,KAAK,QAAQ,uBAAuB,EAAE,aAAa,KAAK,CAAC;CAEnE;CAEA,sBAAsB,OAAO,EAAE,MAAM,MAAM,MAAM,MAAM,UAAU;EAC/D,IAAI,KAAK,SAAS,aAAa,CAAC,KAAK,eAAe,CAAC,KAAK,YACxD,MAAM,IAAI,MAAM,qDAAqD;EAEvE,MAAM,OACJ,OAAO,KAAK,QAAQ,gBAAgB,WAAW,KAAK,OAAO,cAAc,KAAK;EAChF,IAAI,CAAC,MACH,MAAM,aAAa,mDAAmD,iBAAiB,EACrF,UAAU,SAAS,cACrB,CAAC;EAEH,MAAM,WAAW,KAAK,SAAS,WAAW,MAAM,KAAK,MAAM;EAC3D,IAAI,UAAU,KAAK,SAAS,cAAc,MAAM,KAAK,QAAQ,KAAK,aAAa,KAAK,UAAU;EAC9F,IAAI,UAAU;EACd,IAAI,KAAK,KAAK,YAAY;GACxB,IAAI,UACF,KAAK,SAAS,cAAc,MAAM,KAAK,QAAQ,SAAS,MAAM,SAAS,UAAU;QAEjF,KAAK,SAAS,cAAc,MAAM,KAAK,MAAM;EAEjD,CAAC;CACH;CAEA,eAAe;CACf,cAAc;CACd,uBAAuB;CACvB,kBAAkB;CAClB,4BAA4B;CAC5B,oBAAoB;CACpB,oBAAoB;CACpB,cAAc;CACd,uBAAuB;AACzB;AAEA,eAAe,oBAAoB,EAAE,MAAM,MAAM,MAAM,OAAmC;CAIxF,IACE,KAAK,eAAe,IAAI,SAAS,aACjC,KAAK,eAAe,IAAI,SAAS,aACjC,KAAK,eAAe,IAAI,SAAS,aACjC;EACA,MAAM,UAAU,MAAM,kBAAkB,KAAK,eAAe,KAAK,IAAI;EACrE,MAAM,UAAU,MAAM,kBAAkB,KAAK,eAAe,KAAK,IAAI;EACrE,MAAM,eAAmC;GACvC,UAAU,KAAK;GACf,QAAQ,KAAK;GACb,WAAW,KAAK;GAChB,OAAO,KAAK;GACZ,MAAM;GACN;GACA;GACA,QAAQ;GACR,SAAS,QAAQ,KAAK,OAAO;GAC7B,aAAa,KAAK,QAAQ;EAC5B;EACA,MAAM,WAAW,MAAM,KAAK,QAAQ,uBAAuB,YAAY;EACvE,IAAI,WAAW;EACf,IAAI,UAAU;EACd,IAAI,KAAK,KAAK,YAAY;GACxB,MAAM,SAAS,QAAQ;EACzB,CAAC;CACH;AACF;;;;;;AAOA,eAAe,QACb,MACA,MACA,MACA,MACA,KACA,WACe;CACf,MAAM,UAAU,cAAc,KAAK;CACnC,MAAM,QAAQ;EAAE;EAAM;EAAM;EAAM;EAAM;EAAK;CAAU,CAAC;AAC1D;;;;;;;;AASA,eAAe,mBAAmB,MAAsB,MAAmC;CACzF,MAAM,MAAM,KAAK,eAAe;CAEhC,IAAI,IAAI,SAAS,WAAW;EAM1B,IAAI,CAAC,MADiB,KAAK,SAAS,IAAI,IAAI,UAAU,IAAI,IAAI,GAE5D,MAAM,aACJ,WAAW,IAAI,SAAS,GAAG,IAAI,KAAK,sCACpC,iBACA;GACE,UAAU,SAAS;GACnB,aAAa,CAAC,eAAe,IAAI,SAAS,UAAU,IAAI,MAAM;EAChE,CACF;EAKF,IAAI,KAAK,eAAe,QAAQ,aAAa,YAC3C,IAAI;GACF,MAAM,KAAK,SAAS,QAAQ,IAAI,UAAU,IAAI,IAAI;EACpD,SAAS,KAAK;GACZ,YAAY,KAAK,SAAS,CAAC,CACzB,QACA,6BACA,oCAAoC,IAAI,SAAS,GAAG,IAAI,KAAK,qBAC7D;IACE,MAAM;IACN,aAAa,CAAC,aAAa,GAAG,CAAC;IAC/B,SAAS,EAAE,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,EAAE;GACrE,CACF;EACF;EAEF;CACF;CAEA,IAAI,IAAI,SAAS,WAAW;EAE1B,IAAI,CAAC,MADiB,kBAAkB,KAAK,IAAI,GAE/C,MAAM,aAAa,sBAAsB,IAAI,QAAQ,qBAAqB,EACxE,UAAU,SAAS,UACrB,CAAC;EAEH;CACF;CAEA,IAAI,IAAI,SAAS,aAAa;EAE5B,IAAI,EAAC,MADa,gBAAgB,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,EAAA,CAC3C,SACP,MAAM,aAAa,iBAAiB,IAAI,KAAK,gBAAgB,gBAAgB;EAE/E;CACF;CAEA,IAAI,IAAI,SAAS;QACF,KAAK,QAAQ,MAAM,KAAK,MAAM,IAAI,IAAI,QAAQ,IAAI,KAAA,EAAA,EACzC,QAAQ,QAAQ,MAAM,EAAE,OAAO,KAAK,CAAC,EAAA,CAC/C,WAAW,GACrB,MAAM,aACJ,QAAQ,IAAI,SAAS,uCACrB,iBACA;GACE,UAAU,SAAS;GACnB,aAAa,CAAC,sBAAsB,IAAI,UAAU;EACpD,CACF;CAAA;AAGN;;;;;;;;;;;;AAaA,eAAe,mBAAmB,MAAsB,MAAqC;CAC3F,MAAM,WAAW,KAAK,UAAU;CAChC,IAAI,CAAC,UACH;CAEF,MAAM,MAAM,KAAK,eAAe;CAIhC,IAAI,CAAC,MAHY,YAAY,GAAG,SAAS,UAAU,EACjD,WAAW,KAAK,mBAAmB,IACrC,CAAC,GAEC,MAAM,aACJ,aAAa,KAAK,eAAe,QAAQ,wBAAwB,SAAS,IAC1E,kBACA;EACE,UAAU,SAAS;EACnB,aAAa,CACX,sBAAsB,IAAI,SAAS,YAAY,GAAG,IAAI,SAAS,GAAG,IAAI,SAAS,KAAK,KAAK,GACzF,kBAAkB,KAAK,QACzB;CACF,CACF;AAEJ;;;;;;;;;;;;AAaA,eAAe,qBAAqB,MAAsB,MAAmC;CAC3F,IAAI,KAAK,SAAS,aAChB;CAEF,MAAM,SAAS,KAAK,QAAQ,IAAI,KAAK,MAAM;CAC3C,IAAI;CACJ,IAAI;EACF,YAAY,MAAM,OAAO,QAAQ;CACnC,SAAS,KAAK;EACZ,YAAY,KAAK,SAAS,CAAC,CACzB,QACA,8BACA,uBAAuB,KAAK,OAAO,kCACnC;GACE,MAAM;GACN,aAAa,CAAC,UAAU,KAAK,QAAQ;GACrC,SAAS,EAAE,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,EAAE;EACrE,CACF;EACA;CACF;CACA,IAAI,CAAC,UAAU,SACb,YAAY,KAAK,SAAS,CAAC,CACzB,QACA,4BACA,GAAG,KAAK,OAAO,6DACf;EACE,MAAM;EACN,aAAa,CAAC,UAAU,KAAK,QAAQ;EACrC,SAAS,EAAE,QAAQ,UAAU,QAAQ,KAAK,IAAI,EAAE;CAClD,CACF;AAEJ;;;;;AAMA,eAAe,kBACb,MACA,MACA,KAC6B;CAC7B,MAAM,MAAM,KAAK,eAAe;CAChC,IAAI,IAAI,SAAS,gBAAgB;EAC/B,MAAM,UAAU,MAAM,KAAK,MAAM,eAAe,IAAI,QAAQ;EAC5D,IAAI,QAAQ,YACV,IAAI,eAAe,KAAK,EAAE,UAAU,IAAI,SAAS,CAAC;EAEpD,IAAI,UAAU;EACd,IAAI,QAAQ,YACV,IAAI,KAAK,KAAK,YAAY;GACxB,MAAM,KAAK,MAAM,cAAc,IAAI,QAAQ;EAC7C,CAAC;EAEH,IAAI,QAAQ,SACV,IAAI,SAAS,KAAK,QAAQ,OAAO;EAEnC,IAAI,KAAK,UAAU,cAAc;GAC/B,IAAI,QAAQ,SACV,KAAK,UAAU,aAAa,UAAU,QAAQ;GAMhD,IAAI,QAAQ,OACV,KAAK,UAAU,aAAa,QAAQ,QAAQ;EAEhD;EACA,OAAO,QAAQ;CACjB;CAEA,IAAI,IAAI,SAAS,WAAW;EAC1B,MAAM,gBAAgB,MAAM,KAAK,SAAS,IAAI,IAAI,UAAU,IAAI,IAAI;EACpE,IAAI,CAAC,eACH,MAAM,aAAa,sBAAsB,IAAI,SAAS,GAAG,IAAI,QAAQ,WAAW;EAElF,IAAI,KAAK,SAAS,eAAe,CAAC,cAAc,MAAM,SAAS;GAI7D,MAAM,cAAc,cAAc;GAClC,IAAI,UAAU;GACd,IAAI,KAAK,KAAK,YAAY;IACxB,MAAM,KAAK,MAAM,mBAAmB,IAAI,UAAU,IAAI,MAAM,WAAW;GACzE,CAAC;EACH;EACA,IAAI;GACF,MAAM,KAAK,MAAM,YAAY,IAAI,UAAU,IAAI,MAAM,CAAC,CAAC;EACzD,QAAQ,CAER;EACA,MAAM,UAAU,MAAM,KAAK,MAAM,WAAW,IAAI,UAAU,IAAI,IAAI;EAClE,IAAI,QAAQ,YACV,IAAI,eAAe,KAAK;GAAE,UAAU,IAAI;GAAU,SAAS,IAAI;EAAK,CAAC;EAEvE,IAAI,UAAU;EACd,IAAI,QAAQ,YACV,IAAI,KAAK,KAAK,YAAY;GACxB,MAAM,KAAK,MAAM,UAAU,IAAI,UAAU,IAAI,IAAI;EACnD,CAAC;EAEH,IAAI,QAAQ,SACV,IAAI,SAAS,KAAK,QAAQ,OAAO;EAEnC,IAAI,KAAK,UAAU,cAAc;GAC/B,IAAI,QAAQ,SACV,KAAK,UAAU,aAAa,UAAU,QAAQ;GAEhD,IAAI,QAAQ,OACV,KAAK,UAAU,aAAa,QAAQ,QAAQ;EAEhD;EACA,OAAO,QAAQ;CACjB;AAGF;;AAGA,eAAe,oBACb,MACA,MACA,MACA,UACe;CACf,MAAM,WAAW,KAAK,UAAU;CAChC,IAAI,CAAC,UACH;CAEF,MAAM,MAAM,KAAK,eAAe;CAChC,MAAM,UAAU,KAAK,MAAM,SAAS,aAAa,KAAK,MAAM,KAAK,KAAA;CACjE,MAAM,WAAW,KAAK,aAAa,eAAe;CAClD,MAAM,aACJ,YAAY,OAAO,aAAa,YAAY,CAAC,MAAM,QAAQ,QAAQ,IAC/D,OAAO,YACL,OAAO,QAAQ,QAAmC,CAAC,CAAC,QACjD,MAA6B,OAAO,EAAE,OAAO,YAAY,EAAE,EAAE,CAAC,KAAK,MAAM,EAC5E,CACF,IACA,KAAA;CACN,MAAM,aACJ,IAAI,SAAS,YACT;EAAE,UAAU,IAAI;EAAU,MAAM,IAAI;CAAK,IACzC;EAAE,UAAU,KAAK,eAAe,QAAQ,aAAa;EAAU,MAAM;CAAI;CAC/E,MAAM,KAAK,QAAQ,mBAAmB,KAAK,QAAQ;EACjD;EACA,QAAQ,KAAK,UAAU,cAAc,SAAS;EAC9C,cAAc,YAAY,WAAW;EACrC;EACA;EACA,QAAQ;EACR,SAAS,KAAK;EAEd,OAAO,WAAW,KAAK,eAAe,GAAG;EACzC;CACF,CAAC;AACH;AAEA,SAAS,eAAe,MAAgB,MAA8B;CACpE,MAAM,OAAO,OAAO,KAAK,QAAQ,QAAQ,WAAW,KAAK,OAAO,MAAM,KAAA;CACtE,IAAI,MACF,OAAO;CAET,IAAI,KAAK,eAAe,IAAI,SAAS,aACnC,OAAO,KAAK,eAAe,IAAI;CAEjC,MAAM,IAAI,MAAM,qDAAqD;AACvE;AAEA,SAAS,gBAAgB,MAAsD;CAC7E,IAAI,CAAC,KAAK,KACR,MAAM,IAAI,MAAM,uDAAuD;CAEzE,OAAO,KAAK;AACd;;AAGA,eAAe,qBAAqB,MAAoB,UAAiC;CACvF,IAAI;EACF,MAAM,KAAK,KAAK,YAAY,UAAU,UAAU;CAClD,QAAQ,CAER;AACF;AAEA,SAAS,eAAe,MAAwB;CAC9C,MAAM,UAAU,OAAO,KAAK,QAAQ,YAAY,WAAW,KAAK,OAAO,UAAU,KAAA;CACjF,IAAI,CAAC,SACH,MAAM,IAAI,MAAM,2DAA2D;CAE7E,OAAO;AACT;AAEA,SAAS,mBAAmB,MAAgC;CAG1D,MAAM,SAAmB,CAAC;CAC1B,MAAM,uBAAO,IAAI,IAAY;CAC7B,MAAM,QAAQ,QAAiB;EAC7B,IAAI,OAAO,QAAQ,UACjB;EAEF,MAAM,QAAQ,IAAI,KAAK;EACvB,IAAI,CAAC,SAAS,KAAK,IAAI,KAAK,GAC1B;EAEF,KAAK,IAAI,KAAK;EACd,OAAO,KAAK,KAAK;CACnB;CACA,MAAM,WAAW,KAAK,aAAa,eAAe;CAClD,IAAI,YAAY,OAAO,aAAa,YAAY,CAAC,MAAM,QAAQ,QAAQ,GAAG;EACxE,MAAM,QAAQ;EACd,KAAK,MAAM,MAAM;GAAC;GAAW;GAAS;GAAS;GAAS;EAAO,GAC7D,KAAK,MAAM,GAAG;EAEhB,KAAK,MAAM,SAAS,OAAO,OAAO,KAAK,GACrC,KAAK,KAAK;CAEd;CACA,IAAI,KAAK,MAAM,SAAS,YACtB,KAAK,KAAK,MAAM,EAAE;CAEpB,OAAO;AACT;;AAGA,eAAe,sBACb,UACA,MACA,KACA,WAC+B;CAC/B,MAAM,WAAW,MAAM,KAAK,QAAQ,4BAA4B,UAAU,SAAS;CACnF,IAAI,YAAY,KAAK,GAAG,SAAS,WAAW;CAC5C,KAAK,QAAQ,OAAO,WAAW,EAAE,aAAa,IAAI,YAAY,CAAC;CAC/D,OAAO;AACT;;;;;AAMA,eAAe,YACb,KACA,MACA,WACkB;CAClB,IAAI,CAAC,IAAI,SACP,OAAO;CAET,KAAK,QAAQ,OAAO,WAAW,EAAE,OAAO,eAAe,CAAC;CACxD,OAAO,QAAQ,GAAG;AACpB;AAEA,eAAe,QAAQ,KAA0C;CAC/D,IAAI,YAAY;CAChB,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,KACxC,IAAI;EACF,MAAM,IAAI,KAAK,EAAE,CAAC;CACpB,QAAQ;EACN,YAAY;CACd;CAEF,OAAO;AACT;;;;;;AAOA,SAAS,qBAAqB,KAAwB,MAAyC;CAC7F,IAAI;CACJ,OAAO,YAAY;EACjB,aAAa,YAAY;GACvB,MAAM,WAAW,MAAM,QAAQ,GAAG;GAClC,KAAK,MAAM,WAAW,IAAI,UACxB,KAAK,OAAO,QAAQ,OAAO;GAE7B,IAAI,CAAC,UACH,MAAM,aACJ,0GACA,0BACF;EAEJ,EAAA,CAAG;EACH,OAAO;CACT;AACF;AAEA,eAAe,gBACb,MACA,WACA,YACe;CACf,IAAI;EACF,KAAK,QAAQ,OAAO,WAAW,EAAE,OAAO,aAAa,gBAAgB,SAAS,CAAC;CACjF,QAAQ,CAER;AACF;;;;AAmBA,SAAS,qBAAqB,OAGP;CACrB,MAAM,OACH,OAAO,MAAM,QAAQ,WAAW,WAAW,MAAM,OAAO,SAAS,KAAA,MAClE,MAAM,kBAAkB,MACrB,MACC,EAAE,WAAW,UAAU,KACvB,EAAE,WAAW,UAAU,KACvB,EAAE,WAAW,MAAM,KACnB,EAAE,WAAW,SAAS,CAC1B;CACF,IAAI,CAAC,KACH,OAAO;CAET,IAAI;EACF,OAAO,SAAS,GAAG;CACrB,QAAQ;EACN,OAAO;CACT;AACF;;;;;AAMA,eAAsB,4BAA4B,MAA6C;CAC7F,MAAM,aAAa,KAAK,QAAQ,eAAe;CAC/C,MAAM,SAAmB,CAAC;CAC1B,MAAM,UAAoB,CAAC;CAC3B,IAAI,YAAY;CAChB,MAAM,OAAO,YAAY,KAAK,MAAM;CAEpC,KAAK,MAAM,SAAS,YAAY;EAE9B,MAAM,YAAY,qBAAqB,KAAK;EAC5C,IAAI,eAAe;EAEnB,IAAI,aAAa,KAAK,SACpB,IAAI,UAAU,SAAS,UAErB,eAAe;OAEf,IAAI;GACF,MAAM,WAAW,MAAM,0BAA0B,WAAW,KAAK,OAAO;GAMxE,IALiB,aAAa,SAAS,GAKnC,OAHF,OAAO,MAAM,QAAQ,WAAW,WAC5B,MAAM,OAAO,SACb,aAAa,SAAS,IAE1B,eAAe;GAGjB,IAAI,OAAO,SAAS,QAAQ,iBAAiB,YAC3C,eAAe;EAEnB,QAAQ;GACN,eAAe;EACjB;OAEG,IAAI,aAAa,CAAC,KAAK,SAE5B,eAAe;EAGjB,IAAI,uBAAuB;EAG3B,IAAI,MAAM,YAAY,SAAS,GAC7B,IAAI;GACF,IAAI,cAAc;GAClB,KAAK,MAAM,UAAU,MAAM,aAEzB,IAAI,OAAO,SAAS,IAAI,GAAG;IACzB,MAAM,CAAC,KAAK,QAAQ,OAAO,MAAM,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,KAAK,CAAC;IAC1D,IAAI,CAAC,OAAO,CAAC,MAAM;KACjB,cAAc;KACd;IACF;IACA,IAAI,QAAQ,UAAU;KACpB,MAAM,EAAE,OAAO,MAAM,OAAO;KAC5B,MAAM,GAAG,MAAM,EAAE,OAAO,KAAK,CAAC;KAC9B;IACF;IACA,IAAI,CAAE,MAAM,WAAW,GAAG,GAAI;KAC5B,cAAc;KACd;IACF;IACA,MAAM,MAAM,QAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;IAC9C,MAAM,SAAS,KAAK,IAAI;GAC1B,OAAO,IAAI,CAAE,MAAM,WAAW,MAAM,GAAI;IACtC,cAAc;IACd;GACF;GAEF,IAAI,aACF,uBAAuB;QAClB;IACL,KAAK,QAAQ,OAAO,MAAM,IAAI,EAAE,OAAO,SAAS,CAAC;IACjD,OAAO,KAAK,MAAM,EAAE;IACpB;GACF;EACF,QAAQ;GACN,KAAK,QAAQ,OAAO,MAAM,IAAI,EAAE,OAAO,SAAS,CAAC;GACjD,OAAO,KAAK,MAAM,EAAE;GACpB;EACF;EAMF,MAAM,gBAAgB,MAAM,QAAQ;EACpC,IAAI,qBAAqB,aAAa,GAAG;GACvC,IAAI,CAAC,KAAK,SAAS;IACjB,KAAK,QAAQ,OAAO,MAAM,IAAI,EAAE,OAAO,SAAS,CAAC;IACjD,OAAO,KAAK,MAAM,EAAE;IACpB;GACF;GACA,IAAI;IACF,MAAM,KAAK,QAAQ,SAAS,0BAA0B,aAAa;IACnE,MAAM,KAAK,QAAQ,SAAS,0BAA0B,aAAa;IACnE,uBAAuB;GACzB,QAAQ;IACN,KAAK,QAAQ,OAAO,MAAM,IAAI,EAAE,OAAO,SAAS,CAAC;IACjD,OAAO,KAAK,MAAM,EAAE;IACpB;GACF;EACF;EAEA,IAAI,sBAAsB;GACxB,KAAK,QAAQ,OAAO,MAAM,IAAI,EAAE,OAAO,cAAc,CAAC;GACtD;GACA;EACF;EAGA,IAAI,aAAa,CAAC,cAAc;GAC9B,KAAK,QAAQ,OAAO,MAAM,IAAI,EAAE,OAAO,SAAS,CAAC;GACjD,QAAQ,KAAK,MAAM,EAAE;GACrB,OAAO,KAAK,MAAM,EAAE;GACpB,KACE,QACA,oBACA,qEACA;IACE,MAAM,MAAM;IACZ,SAAS;KAAE,QAAQ;KAA2B,aAAa,MAAM;IAAkB;GACrF,CACF;GACA;EACF;EAEA,IAAI,MAAM,UAAU,WAAW;GAE7B,KAAK,QAAQ,OAAO,MAAM,IAAI,EAAE,OAAO,SAAS,CAAC;GACjD;GACA;EACF;EAGA,KAAK,QAAQ,OAAO,MAAM,IAAI,EAAE,OAAO,SAAS,CAAC;EACjD,OAAO,KAAK,MAAM,EAAE;CACtB;CAEA,OAAO;EAAE;EAAW;EAAQ;CAAQ;AACtC;AAEA,SAAS,qBAAqB,OAA6C;CACzE,IAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAC5D,OAAO;CAET,MAAM,aAAa;CACnB,OACE,OAAO,WAAW,eAAe,aAChC,OAAO,WAAW,kBAAkB,YAAY,WAAW,kBAAkB,SAC9E,OAAO,WAAW,gBAAgB,aAClC,OAAO,WAAW,cAAc;AAEpC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { BindingSpec, ModelSelection } from '../types.js';
|
|
2
|
-
/** Merge model roles into client options and seed default from an explicit model. */
|
|
3
|
-
export declare function mergeModelRolesIntoClientOptions(base: Record<string, unknown> | undefined, modelRoles: Record<string, string> | undefined, model: ModelSelection): Record<string, unknown>;
|
|
4
|
-
/** Prefer clientOptions.modelRoles.default when model selection is omitted. */
|
|
5
|
-
export declare function modelFromRolesOrSelection(bindingSpec: BindingSpec, model: ModelSelection): ModelSelection;
|
|
6
|
-
//# sourceMappingURL=activation-models.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activation-models.d.ts","sourceRoot":"","sources":["../../src/core/activation-models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE5D,qFAAqF;AACrF,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACzC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC9C,KAAK,EAAE,cAAc,GACpB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyBzB;AAED,+EAA+E;AAC/E,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,cAAc,GACpB,cAAc,CAYhB"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
//#region src/core/activation-models.ts
|
|
2
|
-
/** Merge model roles into client options and seed default from an explicit model. */
|
|
3
|
-
function mergeModelRolesIntoClientOptions(base, modelRoles, model) {
|
|
4
|
-
const out = { ...base };
|
|
5
|
-
const roles = {};
|
|
6
|
-
const existing = out.modelRoles;
|
|
7
|
-
if (existing && typeof existing === "object" && !Array.isArray(existing)) {
|
|
8
|
-
for (const [key, value] of Object.entries(existing)) if (typeof value === "string" && value.trim()) roles[key] = value.trim();
|
|
9
|
-
}
|
|
10
|
-
if (modelRoles) {
|
|
11
|
-
for (const [key, value] of Object.entries(modelRoles)) if (typeof value === "string" && value.trim()) roles[key] = value.trim();
|
|
12
|
-
}
|
|
13
|
-
if (model.mode === "explicit" && model.id && !roles.default) roles.default = model.id;
|
|
14
|
-
if (Object.keys(roles).length > 0) out.modelRoles = roles;
|
|
15
|
-
return out;
|
|
16
|
-
}
|
|
17
|
-
/** Prefer clientOptions.modelRoles.default when model selection is omitted. */
|
|
18
|
-
function modelFromRolesOrSelection(bindingSpec, model) {
|
|
19
|
-
if (model.mode === "explicit") return model;
|
|
20
|
-
const roles = bindingSpec.clientOptions?.modelRoles;
|
|
21
|
-
if (roles && typeof roles === "object" && !Array.isArray(roles)) {
|
|
22
|
-
const defaultModel = roles.default;
|
|
23
|
-
if (typeof defaultModel === "string" && defaultModel.trim()) return {
|
|
24
|
-
mode: "explicit",
|
|
25
|
-
id: defaultModel.trim()
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
return model;
|
|
29
|
-
}
|
|
30
|
-
//#endregion
|
|
31
|
-
export { mergeModelRolesIntoClientOptions, modelFromRolesOrSelection };
|
|
32
|
-
|
|
33
|
-
//# sourceMappingURL=activation-models.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activation-models.js","names":[],"sources":["../../src/core/activation-models.ts"],"sourcesContent":["import type { BindingSpec, ModelSelection } from '../types';\n\n/** Merge model roles into client options and seed default from an explicit model. */\nexport function mergeModelRolesIntoClientOptions(\n base: Record<string, unknown> | undefined,\n modelRoles: Record<string, string> | undefined,\n model: ModelSelection,\n): Record<string, unknown> {\n const out: Record<string, unknown> = { ...base };\n const roles: Record<string, string> = {};\n const existing = out.modelRoles;\n if (existing && typeof existing === 'object' && !Array.isArray(existing)) {\n for (const [key, value] of Object.entries(existing as Record<string, unknown>)) {\n if (typeof value === 'string' && value.trim()) {\n roles[key] = value.trim();\n }\n }\n }\n if (modelRoles) {\n for (const [key, value] of Object.entries(modelRoles)) {\n if (typeof value === 'string' && value.trim()) {\n roles[key] = value.trim();\n }\n }\n }\n if (model.mode === 'explicit' && model.id && !roles.default) {\n roles.default = model.id;\n }\n if (Object.keys(roles).length > 0) {\n out.modelRoles = roles;\n }\n return out;\n}\n\n/** Prefer clientOptions.modelRoles.default when model selection is omitted. */\nexport function modelFromRolesOrSelection(\n bindingSpec: BindingSpec,\n model: ModelSelection,\n): ModelSelection {\n if (model.mode === 'explicit') {\n return model;\n }\n const roles = bindingSpec.clientOptions?.modelRoles;\n if (roles && typeof roles === 'object' && !Array.isArray(roles)) {\n const defaultModel = (roles as Record<string, unknown>).default;\n if (typeof defaultModel === 'string' && defaultModel.trim()) {\n return { mode: 'explicit', id: defaultModel.trim() };\n }\n }\n return model;\n}\n"],"mappings":";;AAGA,SAAgB,iCACd,MACA,YACA,OACyB;CACzB,MAAM,MAA+B,EAAE,GAAG,KAAK;CAC/C,MAAM,QAAgC,CAAC;CACvC,MAAM,WAAW,IAAI;CACrB,IAAI,YAAY,OAAO,aAAa,YAAY,CAAC,MAAM,QAAQ,QAAQ;OAChE,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,QAAmC,GAC3E,IAAI,OAAO,UAAU,YAAY,MAAM,KAAK,GAC1C,MAAM,OAAO,MAAM,KAAK;CAAA;CAI9B,IAAI;OACG,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,UAAU,GAClD,IAAI,OAAO,UAAU,YAAY,MAAM,KAAK,GAC1C,MAAM,OAAO,MAAM,KAAK;CAAA;CAI9B,IAAI,MAAM,SAAS,cAAc,MAAM,MAAM,CAAC,MAAM,SAClD,MAAM,UAAU,MAAM;CAExB,IAAI,OAAO,KAAK,KAAK,CAAC,CAAC,SAAS,GAC9B,IAAI,aAAa;CAEnB,OAAO;AACT;;AAGA,SAAgB,0BACd,aACA,OACgB;CAChB,IAAI,MAAM,SAAS,YACjB,OAAO;CAET,MAAM,QAAQ,YAAY,eAAe;CACzC,IAAI,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,GAAG;EAC/D,MAAM,eAAgB,MAAkC;EACxD,IAAI,OAAO,iBAAiB,YAAY,aAAa,KAAK,GACxD,OAAO;GAAE,MAAM;GAAY,IAAI,aAAa,KAAK;EAAE;CAEvD;CACA,OAAO;AACT"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Activation planner — structured plans for use / run / link (spec §22).
|
|
3
|
-
*/
|
|
4
|
-
import type { ActivationPlan, ActivationRequest, BindingProvenance, BindingSpec, ClientId } from '../types.js';
|
|
5
|
-
import { type ResolveSourceDeps } from './resolve-source.js';
|
|
6
|
-
import type { ClientRegistry } from '../clients/registry.js';
|
|
7
|
-
export interface PlanOptions {
|
|
8
|
-
dryRun?: boolean;
|
|
9
|
-
verbose?: boolean;
|
|
10
|
-
/** When re-applying a stored binding snapshot (use --current). */
|
|
11
|
-
reapplySnapshot?: {
|
|
12
|
-
spec: BindingSpec;
|
|
13
|
-
provenance: BindingProvenance;
|
|
14
|
-
};
|
|
15
|
-
savePreset?: string;
|
|
16
|
-
projectRoot?: string;
|
|
17
|
-
/** Origin for provenance when expanding a preset. */
|
|
18
|
-
originPreset?: {
|
|
19
|
-
id: string;
|
|
20
|
-
name: string;
|
|
21
|
-
revision: number;
|
|
22
|
-
};
|
|
23
|
-
/** Role id → model id stored on binding clientOptions.modelRoles. */
|
|
24
|
-
modelRoles?: Record<string, string>;
|
|
25
|
-
}
|
|
26
|
-
export declare function planActivation(request: ActivationRequest, deps: ResolveSourceDeps & {
|
|
27
|
-
clients: ClientRegistry;
|
|
28
|
-
}, opts?: PlanOptions): Promise<ActivationPlan>;
|
|
29
|
-
/**
|
|
30
|
-
* Plan from a raw --with string (parses ref / expands preset).
|
|
31
|
-
*/
|
|
32
|
-
export declare function planFromWith(mode: ActivationRequest['mode'], client: ClientId, withInput: string, deps: ResolveSourceDeps & {
|
|
33
|
-
clients: ClientRegistry;
|
|
34
|
-
}, opts?: PlanOptions & {
|
|
35
|
-
model?: string;
|
|
36
|
-
modelRoles?: Record<string, string>;
|
|
37
|
-
}): Promise<ActivationPlan>;
|
|
38
|
-
//# sourceMappingURL=activation-planner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activation-planner.d.ts","sourceRoot":"","sources":["../../src/core/activation-planner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,QAAQ,EAOT,MAAM,UAAU,CAAC;AAGlB,OAAO,EAOL,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAK1D,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kEAAkE;IAClE,eAAe,CAAC,EAAE;QAChB,IAAI,EAAE,WAAW,CAAC;QAClB,UAAU,EAAE,iBAAiB,CAAC;KAC/B,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qDAAqD;IACrD,YAAY,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,iBAAiB,EAC1B,IAAI,EAAE,iBAAiB,GAAG;IAAE,OAAO,EAAE,cAAc,CAAA;CAAE,EACrD,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,cAAc,CAAC,CAwTzB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAC/B,MAAM,EAAE,QAAQ,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,iBAAiB,GAAG;IAAE,OAAO,EAAE,cAAc,CAAA;CAAE,EACrD,IAAI,GAAE,WAAW,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAO,GAC/E,OAAO,CAAC,cAAc,CAAC,CA4BzB"}
|
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
import { ExitCode, anypickError } from "../utils/errors.js";
|
|
2
|
-
import { displayRef, serializeRef } from "./refs.js";
|
|
3
|
-
import { expandPreset, loadAccountForRef, loadProfileForRef, materializeResolvedSource, modelFromRequest, parseAndResolveSourceInput } from "./resolve-source.js";
|
|
4
|
-
import { mergeModelRolesIntoClientOptions, modelFromRolesOrSelection } from "./activation-models.js";
|
|
5
|
-
import { buildTransport } from "./activation-transport.js";
|
|
6
|
-
import { randomUUID } from "node:crypto";
|
|
7
|
-
//#region src/core/activation-planner.ts
|
|
8
|
-
async function planActivation(request, deps, opts = {}) {
|
|
9
|
-
const clientId = request.client;
|
|
10
|
-
if (!deps.clients.has(clientId)) throw anypickError(`Unknown client "${clientId}".`, "CLIENT_NOT_FOUND", {
|
|
11
|
-
exitCode: ExitCode.NOT_FOUND,
|
|
12
|
-
suggestions: [`Known clients: ${deps.clients.ids().join(", ")}`]
|
|
13
|
-
});
|
|
14
|
-
const client = deps.clients.get(clientId);
|
|
15
|
-
const caps = client.capabilities;
|
|
16
|
-
const steps = [];
|
|
17
|
-
const rollback = [];
|
|
18
|
-
const warnings = [];
|
|
19
|
-
let resolvedSource;
|
|
20
|
-
let model;
|
|
21
|
-
let bindingSpec;
|
|
22
|
-
let provenance = { kind: "direct" };
|
|
23
|
-
let sourceRef;
|
|
24
|
-
if (opts.reapplySnapshot) {
|
|
25
|
-
sourceRef = opts.reapplySnapshot.spec.source;
|
|
26
|
-
if (sourceRef.kind === "preset") throw anypickError("Stored binding has invalid preset source pointer.", "STATE_CONFLICT", { exitCode: ExitCode.CAPABILITY_CONFLICT });
|
|
27
|
-
steps.push({
|
|
28
|
-
kind: "ResolveSource",
|
|
29
|
-
detail: `Re-apply snapshot ${displayRef(sourceRef)}`,
|
|
30
|
-
params: { ref: serializeRef(sourceRef) }
|
|
31
|
-
});
|
|
32
|
-
resolvedSource = await materializeResolvedSource(sourceRef, deps);
|
|
33
|
-
model = opts.reapplySnapshot.spec.model;
|
|
34
|
-
bindingSpec = { ...opts.reapplySnapshot.spec };
|
|
35
|
-
provenance = opts.reapplySnapshot.provenance;
|
|
36
|
-
} else if (request.preset || request.source && request.source.kind === "preset") {
|
|
37
|
-
const presetName = request.preset ?? (request.source?.kind === "preset" ? request.source.name : void 0);
|
|
38
|
-
if (!presetName) throw anypickError("Preset name required.", "INVALID_USAGE", { exitCode: ExitCode.INVALID_USAGE });
|
|
39
|
-
steps.push({
|
|
40
|
-
kind: "ExpandPreset",
|
|
41
|
-
detail: `@${presetName}`,
|
|
42
|
-
params: { preset: presetName }
|
|
43
|
-
});
|
|
44
|
-
const expanded = await expandPreset(presetName, clientId, deps);
|
|
45
|
-
resolvedSource = expanded.source;
|
|
46
|
-
sourceRef = expanded.source.ref;
|
|
47
|
-
model = modelFromRequest(request.model, expanded.model);
|
|
48
|
-
bindingSpec = {
|
|
49
|
-
...expanded.bindingSpec,
|
|
50
|
-
model,
|
|
51
|
-
clientOptions: mergeModelRolesIntoClientOptions(expanded.bindingSpec.clientOptions, request.modelRoles ?? opts.modelRoles, model)
|
|
52
|
-
};
|
|
53
|
-
model = modelFromRolesOrSelection(bindingSpec, model);
|
|
54
|
-
bindingSpec = {
|
|
55
|
-
...bindingSpec,
|
|
56
|
-
model
|
|
57
|
-
};
|
|
58
|
-
provenance = {
|
|
59
|
-
kind: "preset_snapshot",
|
|
60
|
-
presetId: expanded.preset.id,
|
|
61
|
-
presetNameAtSnapshot: expanded.preset.name,
|
|
62
|
-
presetRevisionAtSnapshot: expanded.preset.revision
|
|
63
|
-
};
|
|
64
|
-
} else if (request.source) {
|
|
65
|
-
sourceRef = request.source;
|
|
66
|
-
steps.push({
|
|
67
|
-
kind: "ResolveSource",
|
|
68
|
-
detail: displayRef(sourceRef),
|
|
69
|
-
params: { ref: serializeRef(sourceRef) }
|
|
70
|
-
});
|
|
71
|
-
resolvedSource = await materializeResolvedSource(sourceRef, deps);
|
|
72
|
-
model = modelFromRequest(request.model, { mode: "omitted" });
|
|
73
|
-
bindingSpec = {
|
|
74
|
-
client: clientId,
|
|
75
|
-
source: sourceRef,
|
|
76
|
-
model,
|
|
77
|
-
transportPolicy: "auto",
|
|
78
|
-
clientOptions: mergeModelRolesIntoClientOptions({}, request.modelRoles ?? opts.modelRoles, model)
|
|
79
|
-
};
|
|
80
|
-
model = modelFromRolesOrSelection(bindingSpec, model);
|
|
81
|
-
bindingSpec = {
|
|
82
|
-
...bindingSpec,
|
|
83
|
-
model
|
|
84
|
-
};
|
|
85
|
-
provenance = { kind: "direct" };
|
|
86
|
-
} else throw anypickError("A source or --current is required.", "MISSING_SOURCE", {
|
|
87
|
-
exitCode: ExitCode.INVALID_USAGE,
|
|
88
|
-
suggestions: [`anypick use ${clientId} --with <source>`, `anypick use ${clientId} --current`]
|
|
89
|
-
});
|
|
90
|
-
steps.push({
|
|
91
|
-
kind: "ValidateCompatibility",
|
|
92
|
-
detail: `${clientId} × ${resolvedSource.display}`
|
|
93
|
-
});
|
|
94
|
-
steps.push({ kind: "ValidateCredential" });
|
|
95
|
-
const capability = resolvedSource.adapter.transportFor(clientId);
|
|
96
|
-
steps.push({
|
|
97
|
-
kind: "ResolveTransport",
|
|
98
|
-
detail: capability,
|
|
99
|
-
params: { capability }
|
|
100
|
-
});
|
|
101
|
-
if (capability === "unsupported") throw anypickError(`Source ${resolvedSource.display} cannot be used with client ${clientId} (unsupported transport).`, "UNSUPPORTED_TRANSPORT", {
|
|
102
|
-
exitCode: ExitCode.CAPABILITY_CONFLICT,
|
|
103
|
-
suggestions: ["Try a different source or client.", `anypick list`]
|
|
104
|
-
});
|
|
105
|
-
if (capability === "external_manual_proxy") steps.push({
|
|
106
|
-
kind: "ValidateExternalDependency",
|
|
107
|
-
detail: "external proxy executable required"
|
|
108
|
-
});
|
|
109
|
-
const account = await loadAccountForRef(resolvedSource.ref, deps);
|
|
110
|
-
const profile = await loadProfileForRef(resolvedSource.ref, deps);
|
|
111
|
-
let poolPort;
|
|
112
|
-
if (resolvedSource.ref.kind === "account-pool" && deps.pools) poolPort = (await deps.pools.get(resolvedSource.ref.provider))?.port;
|
|
113
|
-
const transport = buildTransport(client.capabilities, resolvedSource, capability, account, profile, poolPort);
|
|
114
|
-
if (resolvedSource.ref.kind === "proxy-hub") {
|
|
115
|
-
const hubService = deps.hub;
|
|
116
|
-
if (!hubService) throw new Error("Proxy Hub service is unavailable in this composition.");
|
|
117
|
-
const hub = await hubService.get(resolvedSource.ref.name);
|
|
118
|
-
transport.endpoint = `http://${hub.host}:${hub.port}`;
|
|
119
|
-
transport.managedProxy = {
|
|
120
|
-
provider: "proxy-hub",
|
|
121
|
-
account: hub.name,
|
|
122
|
-
port: hub.port,
|
|
123
|
-
leaseId: "pending"
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
if (model.mode === "unknown") warnings.push({
|
|
127
|
-
code: "MODEL_UNKNOWN",
|
|
128
|
-
message: "Migrated binding has unknown model; will not inject a model override."
|
|
129
|
-
});
|
|
130
|
-
if (resolvedSource.ref.kind === "proxy-hub" && (request.mode === "persistent" || request.mode === "ephemeral")) {
|
|
131
|
-
const routeId = request.mode === "persistent" ? `global/${clientId}` : `ephemeral/${clientId}/${randomUUID()}`;
|
|
132
|
-
steps.push({
|
|
133
|
-
kind: "EnsureProxyHub",
|
|
134
|
-
params: { hub: resolvedSource.ref.name }
|
|
135
|
-
});
|
|
136
|
-
steps.push({
|
|
137
|
-
kind: "AttachProxyHubRoute",
|
|
138
|
-
params: {
|
|
139
|
-
hub: resolvedSource.ref.name,
|
|
140
|
-
routeId
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
steps.push({
|
|
144
|
-
kind: "WaitForHubHealth",
|
|
145
|
-
params: { hub: resolvedSource.ref.name }
|
|
146
|
-
});
|
|
147
|
-
steps.push({
|
|
148
|
-
kind: "ValidateProxyHubRoute",
|
|
149
|
-
params: {
|
|
150
|
-
hub: resolvedSource.ref.name,
|
|
151
|
-
routeId
|
|
152
|
-
}
|
|
153
|
-
});
|
|
154
|
-
rollback.push({
|
|
155
|
-
kind: "DetachProxyHubRoute",
|
|
156
|
-
params: {
|
|
157
|
-
hub: resolvedSource.ref.name,
|
|
158
|
-
routeId
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
rollback.push({
|
|
162
|
-
kind: "StopProxyHubIfStartedAndIdle",
|
|
163
|
-
params: { hub: resolvedSource.ref.name }
|
|
164
|
-
});
|
|
165
|
-
} else if ((request.mode === "persistent" || request.mode === "ephemeral") && (capability === "managed_builtin_proxy" || capability === "managed_external_proxy")) {
|
|
166
|
-
steps.push({
|
|
167
|
-
kind: "AllocateProxyLease",
|
|
168
|
-
params: { port: transport.managedProxy?.port }
|
|
169
|
-
});
|
|
170
|
-
steps.push({ kind: "StartProxy" });
|
|
171
|
-
steps.push({ kind: "WaitForHealth" });
|
|
172
|
-
rollback.push({ kind: "ReleaseLease" });
|
|
173
|
-
rollback.push({ kind: "StopProxy" });
|
|
174
|
-
}
|
|
175
|
-
if (request.mode === "ephemeral" && resolvedSource.kind === "account" && resolvedSource.adapter.capabilities.requiresNativeAuthWrite && capability === "direct") throw anypickError(`Safe ephemeral execution is not available for ${resolvedSource.display} × ${clientId}: this source requires live native auth. Use \`anypick use\` first or add an isolated-auth adapter.`, "UNSUPPORTED_TRANSPORT", { exitCode: ExitCode.CAPABILITY_CONFLICT });
|
|
176
|
-
if (request.mode === "persistent" && resolvedSource.kind === "account" && resolvedSource.adapter.capabilities.requiresNativeAuthWrite && capability === "direct") {
|
|
177
|
-
steps.push({
|
|
178
|
-
kind: "WriteNativeAuth",
|
|
179
|
-
detail: resolvedSource.display,
|
|
180
|
-
params: { ref: serializeRef(resolvedSource.ref) }
|
|
181
|
-
});
|
|
182
|
-
rollback.push({ kind: "RestoreNativeAuth" });
|
|
183
|
-
}
|
|
184
|
-
if (request.mode === "ephemeral") {
|
|
185
|
-
if (caps?.supportsIsolatedHome) {
|
|
186
|
-
steps.push({ kind: "CreateTemporaryClientHome" });
|
|
187
|
-
rollback.push({ kind: "RestoreTemporaryState" });
|
|
188
|
-
} else if (caps?.supportsEnvironmentOverlay) {
|
|
189
|
-
steps.push({ kind: "CreateEnvironmentOverlay" });
|
|
190
|
-
rollback.push({ kind: "RestoreTemporaryState" });
|
|
191
|
-
} else throw anypickError(`Client ${clientId} cannot run ephemerally: no isolated home or environment overlay support.`, "UNSUPPORTED_TRANSPORT", { exitCode: ExitCode.CAPABILITY_CONFLICT });
|
|
192
|
-
if (caps?.supportsIsolatedHome && steps.some((s) => s.kind === "CreateEnvironmentOverlay")) throw new Error("Internal planner error: CreateEnvironmentOverlay with supportsIsolatedHome");
|
|
193
|
-
steps.push({ kind: "SpawnChild" });
|
|
194
|
-
} else if (request.mode === "project") steps.push({
|
|
195
|
-
kind: "CommitProjectBinding",
|
|
196
|
-
params: { projectRoot: opts.projectRoot ?? request.projectRoot }
|
|
197
|
-
});
|
|
198
|
-
else {
|
|
199
|
-
steps.push({ kind: "InspectClientState" });
|
|
200
|
-
steps.push({ kind: "WriteClientConfig" });
|
|
201
|
-
steps.push({ kind: "VerifyEffectiveState" });
|
|
202
|
-
steps.push({ kind: "CommitGlobalBinding" });
|
|
203
|
-
}
|
|
204
|
-
if (resolvedSource.kind === "gateway") {
|
|
205
|
-
if (steps.find((s) => s.kind === "WriteNativeAuth")) throw new Error("Internal planner error: WriteNativeAuth for gateway");
|
|
206
|
-
}
|
|
207
|
-
if (resolvedSource.kind === "proxy-hub") {
|
|
208
|
-
if (steps.find((step) => step.kind === "WriteNativeAuth")) throw new Error("Internal planner error: WriteNativeAuth for Proxy Hub");
|
|
209
|
-
}
|
|
210
|
-
return {
|
|
211
|
-
mode: request.mode,
|
|
212
|
-
client: clientId,
|
|
213
|
-
resolvedSource,
|
|
214
|
-
transport,
|
|
215
|
-
model,
|
|
216
|
-
steps,
|
|
217
|
-
rollback,
|
|
218
|
-
warnings,
|
|
219
|
-
bindingSpec,
|
|
220
|
-
provenance
|
|
221
|
-
};
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Plan from a raw --with string (parses ref / expands preset).
|
|
225
|
-
*/
|
|
226
|
-
async function planFromWith(mode, client, withInput, deps, opts = {}) {
|
|
227
|
-
const ref = await parseAndResolveSourceInput(withInput, deps);
|
|
228
|
-
if (ref.kind === "preset") return planActivation({
|
|
229
|
-
mode,
|
|
230
|
-
client,
|
|
231
|
-
preset: ref.name,
|
|
232
|
-
model: opts.model,
|
|
233
|
-
modelRoles: opts.modelRoles,
|
|
234
|
-
projectRoot: opts.projectRoot
|
|
235
|
-
}, deps, opts);
|
|
236
|
-
return planActivation({
|
|
237
|
-
mode,
|
|
238
|
-
client,
|
|
239
|
-
source: ref,
|
|
240
|
-
model: opts.model,
|
|
241
|
-
modelRoles: opts.modelRoles,
|
|
242
|
-
projectRoot: opts.projectRoot
|
|
243
|
-
}, deps, opts);
|
|
244
|
-
}
|
|
245
|
-
//#endregion
|
|
246
|
-
export { planActivation, planFromWith };
|
|
247
|
-
|
|
248
|
-
//# sourceMappingURL=activation-planner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activation-planner.js","names":[],"sources":["../../src/core/activation-planner.ts"],"sourcesContent":["/**\n * Activation planner — structured plans for use / run / link (spec §22).\n */\n\nimport type {\n ActivationPlan,\n ActivationRequest,\n BindingProvenance,\n BindingSpec,\n ClientId,\n ModelSelection,\n PlanStep,\n PlanWarning,\n ResolvedSource,\n ResourceRef,\n RollbackStep,\n} from '../types';\nimport { anypickError, ExitCode } from '../utils/errors';\nimport { displayRef, serializeRef } from './refs';\nimport {\n expandPreset,\n loadAccountForRef,\n loadProfileForRef,\n materializeResolvedSource,\n modelFromRequest,\n parseAndResolveSourceInput,\n type ResolveSourceDeps,\n} from './resolve-source';\nimport type { ClientRegistry } from '../clients/registry';\nimport { mergeModelRolesIntoClientOptions, modelFromRolesOrSelection } from './activation-models';\nimport { buildTransport } from './activation-transport';\nimport { randomUUID } from 'node:crypto';\n\nexport interface PlanOptions {\n dryRun?: boolean;\n verbose?: boolean;\n /** When re-applying a stored binding snapshot (use --current). */\n reapplySnapshot?: {\n spec: BindingSpec;\n provenance: BindingProvenance;\n };\n savePreset?: string;\n projectRoot?: string;\n /** Origin for provenance when expanding a preset. */\n originPreset?: { id: string; name: string; revision: number };\n /** Role id → model id stored on binding clientOptions.modelRoles. */\n modelRoles?: Record<string, string>;\n}\n\nexport async function planActivation(\n request: ActivationRequest,\n deps: ResolveSourceDeps & { clients: ClientRegistry },\n opts: PlanOptions = {},\n): Promise<ActivationPlan> {\n const clientId = request.client;\n if (!deps.clients.has(clientId)) {\n throw anypickError(`Unknown client \"${clientId}\".`, 'CLIENT_NOT_FOUND', {\n exitCode: ExitCode.NOT_FOUND,\n suggestions: [`Known clients: ${deps.clients.ids().join(', ')}`],\n });\n }\n\n const client = deps.clients.get(clientId);\n const caps = client.capabilities;\n\n const steps: PlanStep[] = [];\n const rollback: RollbackStep[] = [];\n const warnings: PlanWarning[] = [];\n\n let resolvedSource: ResolvedSource;\n let model: ModelSelection;\n let bindingSpec: BindingSpec;\n let provenance: BindingProvenance = { kind: 'direct' };\n let sourceRef: ResourceRef;\n\n // Re-apply stored snapshot without re-resolving preset provenance\n if (opts.reapplySnapshot) {\n sourceRef = opts.reapplySnapshot.spec.source;\n if (sourceRef.kind === 'preset') {\n throw anypickError('Stored binding has invalid preset source pointer.', 'STATE_CONFLICT', {\n exitCode: ExitCode.CAPABILITY_CONFLICT,\n });\n }\n steps.push({\n kind: 'ResolveSource',\n detail: `Re-apply snapshot ${displayRef(sourceRef)}`,\n params: { ref: serializeRef(sourceRef) },\n });\n resolvedSource = await materializeResolvedSource(sourceRef, deps);\n model = opts.reapplySnapshot.spec.model;\n bindingSpec = { ...opts.reapplySnapshot.spec };\n provenance = opts.reapplySnapshot.provenance;\n } else if (request.preset || (request.source && request.source.kind === 'preset')) {\n const presetName =\n request.preset ?? (request.source?.kind === 'preset' ? request.source.name : undefined);\n if (!presetName) {\n throw anypickError('Preset name required.', 'INVALID_USAGE', {\n exitCode: ExitCode.INVALID_USAGE,\n });\n }\n steps.push({\n kind: 'ExpandPreset',\n detail: `@${presetName}`,\n params: { preset: presetName },\n });\n const expanded = await expandPreset(presetName, clientId, deps);\n resolvedSource = expanded.source;\n sourceRef = expanded.source.ref;\n model = modelFromRequest(request.model, expanded.model);\n bindingSpec = {\n ...expanded.bindingSpec,\n model,\n clientOptions: mergeModelRolesIntoClientOptions(\n expanded.bindingSpec.clientOptions,\n request.modelRoles ?? opts.modelRoles,\n model,\n ),\n };\n // Prefer default role from modelRoles when request.model was omitted\n model = modelFromRolesOrSelection(bindingSpec, model);\n bindingSpec = { ...bindingSpec, model };\n provenance = {\n kind: 'preset_snapshot',\n presetId: expanded.preset.id,\n presetNameAtSnapshot: expanded.preset.name,\n presetRevisionAtSnapshot: expanded.preset.revision,\n };\n } else if (request.source) {\n // Preset sources handled above; remaining are account | gateway\n sourceRef = request.source;\n steps.push({\n kind: 'ResolveSource',\n detail: displayRef(sourceRef),\n params: { ref: serializeRef(sourceRef) },\n });\n resolvedSource = await materializeResolvedSource(sourceRef, deps);\n model = modelFromRequest(request.model, { mode: 'omitted' });\n bindingSpec = {\n client: clientId,\n source: sourceRef,\n model,\n transportPolicy: 'auto',\n clientOptions: mergeModelRolesIntoClientOptions(\n {},\n request.modelRoles ?? opts.modelRoles,\n model,\n ),\n };\n model = modelFromRolesOrSelection(bindingSpec, model);\n bindingSpec = { ...bindingSpec, model };\n provenance = { kind: 'direct' };\n } else {\n throw anypickError('A source or --current is required.', 'MISSING_SOURCE', {\n exitCode: ExitCode.INVALID_USAGE,\n suggestions: [`anypick use ${clientId} --with <source>`, `anypick use ${clientId} --current`],\n });\n }\n\n // Validate compatibility / transport\n steps.push({ kind: 'ValidateCompatibility', detail: `${clientId} × ${resolvedSource.display}` });\n steps.push({ kind: 'ValidateCredential' });\n\n const capability = resolvedSource.adapter.transportFor(clientId);\n steps.push({\n kind: 'ResolveTransport',\n detail: capability,\n params: { capability },\n });\n\n if (capability === 'unsupported') {\n throw anypickError(\n `Source ${resolvedSource.display} cannot be used with client ${clientId} (unsupported transport).`,\n 'UNSUPPORTED_TRANSPORT',\n {\n exitCode: ExitCode.CAPABILITY_CONFLICT,\n suggestions: ['Try a different source or client.', `anypick list`],\n },\n );\n }\n\n if (capability === 'external_manual_proxy') {\n steps.push({\n kind: 'ValidateExternalDependency',\n detail: 'external proxy executable required',\n });\n }\n\n const account = await loadAccountForRef(resolvedSource.ref, deps);\n const profile = await loadProfileForRef(resolvedSource.ref, deps);\n let poolPort: number | undefined;\n if (resolvedSource.ref.kind === 'account-pool' && deps.pools) {\n const pool = await deps.pools.get(resolvedSource.ref.provider);\n poolPort = pool?.port;\n }\n\n const transport = buildTransport(\n client.capabilities,\n resolvedSource,\n capability,\n account,\n profile,\n poolPort,\n );\n if (resolvedSource.ref.kind === 'proxy-hub') {\n const hubService = deps.hub;\n if (!hubService) {\n throw new Error('Proxy Hub service is unavailable in this composition.');\n }\n const hub = await hubService.get(resolvedSource.ref.name);\n transport.endpoint = `http://${hub.host}:${hub.port}`;\n transport.managedProxy = {\n provider: 'proxy-hub',\n account: hub.name,\n port: hub.port,\n leaseId: 'pending',\n };\n }\n\n // Model unknown handling\n if (model.mode === 'unknown') {\n warnings.push({\n code: 'MODEL_UNKNOWN',\n message: 'Migrated binding has unknown model; will not inject a model override.',\n });\n }\n\n // Proxy steps: only persistent use and ephemeral run own shared proxy\n // lifecycle. A project binding (`link`) records project-scoped metadata only\n // and must not start a proxy (or otherwise mutate live state) at link time —\n // the proxy is started when `run` resolves the binding into an isolated\n // session (spec decision #7).\n if (\n resolvedSource.ref.kind === 'proxy-hub' &&\n (request.mode === 'persistent' || request.mode === 'ephemeral')\n ) {\n const routeId =\n request.mode === 'persistent'\n ? `global/${clientId}`\n : `ephemeral/${clientId}/${randomUUID()}`;\n steps.push({ kind: 'EnsureProxyHub', params: { hub: resolvedSource.ref.name } });\n steps.push({\n kind: 'AttachProxyHubRoute',\n params: { hub: resolvedSource.ref.name, routeId },\n });\n steps.push({ kind: 'WaitForHubHealth', params: { hub: resolvedSource.ref.name } });\n steps.push({\n kind: 'ValidateProxyHubRoute',\n params: { hub: resolvedSource.ref.name, routeId },\n });\n rollback.push({\n kind: 'DetachProxyHubRoute',\n params: { hub: resolvedSource.ref.name, routeId },\n });\n rollback.push({\n kind: 'StopProxyHubIfStartedAndIdle',\n params: { hub: resolvedSource.ref.name },\n });\n } else if (\n (request.mode === 'persistent' || request.mode === 'ephemeral') &&\n (capability === 'managed_builtin_proxy' || capability === 'managed_external_proxy')\n ) {\n steps.push({ kind: 'AllocateProxyLease', params: { port: transport.managedProxy?.port } });\n steps.push({ kind: 'StartProxy' });\n steps.push({ kind: 'WaitForHealth' });\n rollback.push({ kind: 'ReleaseLease' });\n rollback.push({ kind: 'StopProxy' });\n }\n\n // Native auth writes are deliberately persistent-only. An ephemeral run must\n // never switch the machine's live login: a SIGKILL or power loss between the\n // switch and cleanup would otherwise leave the user on the wrong account.\n // Providers that need native credentials during `run` must first implement\n // isolated auth materialization for the target client.\n if (\n request.mode === 'ephemeral' &&\n resolvedSource.kind === 'account' &&\n resolvedSource.adapter.capabilities.requiresNativeAuthWrite &&\n capability === 'direct'\n ) {\n throw anypickError(\n `Safe ephemeral execution is not available for ${resolvedSource.display} × ${clientId}: this source requires live native auth. Use \\`anypick use\\` first or add an isolated-auth adapter.`,\n 'UNSUPPORTED_TRANSPORT',\n { exitCode: ExitCode.CAPABILITY_CONFLICT },\n );\n }\n\n // Persistent activation is the only mode allowed to change native auth.\n if (\n request.mode === 'persistent' &&\n resolvedSource.kind === 'account' &&\n resolvedSource.adapter.capabilities.requiresNativeAuthWrite &&\n capability === 'direct'\n ) {\n steps.push({\n kind: 'WriteNativeAuth',\n detail: resolvedSource.display,\n params: { ref: serializeRef(resolvedSource.ref) },\n });\n rollback.push({ kind: 'RestoreNativeAuth' });\n }\n\n // Mode-specific steps\n if (request.mode === 'ephemeral') {\n // §9.7.1: Claude/Codex/Kiro must use CreateTemporaryClientHome, never live patch\n if (caps?.supportsIsolatedHome) {\n steps.push({ kind: 'CreateTemporaryClientHome' });\n rollback.push({ kind: 'RestoreTemporaryState' });\n } else if (caps?.supportsEnvironmentOverlay) {\n steps.push({ kind: 'CreateEnvironmentOverlay' });\n rollback.push({ kind: 'RestoreTemporaryState' });\n } else {\n throw anypickError(\n `Client ${clientId} cannot run ephemerally: no isolated home or environment overlay support.`,\n 'UNSUPPORTED_TRANSPORT',\n { exitCode: ExitCode.CAPABILITY_CONFLICT },\n );\n }\n // Never emit CreateEnvironmentOverlay for isolated-home clients\n if (caps?.supportsIsolatedHome && steps.some((s) => s.kind === 'CreateEnvironmentOverlay')) {\n throw new Error('Internal planner error: CreateEnvironmentOverlay with supportsIsolatedHome');\n }\n steps.push({ kind: 'SpawnChild' });\n } else if (request.mode === 'project') {\n // SCOPE-01 (spec decision #7): a project binding records project-scoped\n // metadata only. It does NOT write the global client config, does NOT start\n // a proxy, and does NOT mutate live account selection. `run` inside the\n // project resolves this binding into an isolated ephemeral session.\n steps.push({\n kind: 'CommitProjectBinding',\n params: { projectRoot: opts.projectRoot ?? request.projectRoot },\n });\n } else {\n // persistent\n steps.push({ kind: 'InspectClientState' });\n steps.push({ kind: 'WriteClientConfig' });\n steps.push({ kind: 'VerifyEffectiveState' });\n steps.push({ kind: 'CommitGlobalBinding' });\n }\n\n // Gateway sources must never have WriteNativeAuth\n if (resolvedSource.kind === 'gateway') {\n const bad = steps.find((s) => s.kind === 'WriteNativeAuth');\n if (bad) {\n throw new Error('Internal planner error: WriteNativeAuth for gateway');\n }\n }\n if (resolvedSource.kind === 'proxy-hub') {\n const bad = steps.find((step) => step.kind === 'WriteNativeAuth');\n if (bad) {\n throw new Error('Internal planner error: WriteNativeAuth for Proxy Hub');\n }\n }\n\n return {\n mode: request.mode,\n client: clientId,\n resolvedSource,\n transport,\n model,\n steps,\n rollback,\n warnings,\n bindingSpec,\n provenance,\n };\n}\n\n/**\n * Plan from a raw --with string (parses ref / expands preset).\n */\nexport async function planFromWith(\n mode: ActivationRequest['mode'],\n client: ClientId,\n withInput: string,\n deps: ResolveSourceDeps & { clients: ClientRegistry },\n opts: PlanOptions & { model?: string; modelRoles?: Record<string, string> } = {},\n): Promise<ActivationPlan> {\n const ref = await parseAndResolveSourceInput(withInput, deps);\n if (ref.kind === 'preset') {\n return planActivation(\n {\n mode,\n client,\n preset: ref.name,\n model: opts.model,\n modelRoles: opts.modelRoles,\n projectRoot: opts.projectRoot,\n },\n deps,\n opts,\n );\n }\n return planActivation(\n {\n mode,\n client,\n source: ref,\n model: opts.model,\n modelRoles: opts.modelRoles,\n projectRoot: opts.projectRoot,\n },\n deps,\n opts,\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activation-protocol.d.ts","sourceRoot":"","sources":["../../src/core/activation-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE7D,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,kBAAkB,GAAG,SAAS,EACpC,eAAe,EAAE,QAAQ,EAAE,GAC1B,QAAQ,CAIV"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
//#region src/core/activation-protocol.ts
|
|
2
|
-
function protocolForClient(caps, sourceProtocols) {
|
|
3
|
-
const preferred = caps?.protocolPreference ?? caps?.acceptedProtocols[0] ?? sourceProtocols[0] ?? "openai";
|
|
4
|
-
return sourceProtocols.includes(preferred) ? preferred : sourceProtocols[0] ?? "openai";
|
|
5
|
-
}
|
|
6
|
-
//#endregion
|
|
7
|
-
export { protocolForClient };
|
|
8
|
-
|
|
9
|
-
//# sourceMappingURL=activation-protocol.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activation-protocol.js","names":[],"sources":["../../src/core/activation-protocol.ts"],"sourcesContent":["import type { ClientCapabilities, Protocol } from '../types';\n\nexport function protocolForClient(\n caps: ClientCapabilities | undefined,\n sourceProtocols: Protocol[],\n): Protocol {\n const preferred =\n caps?.protocolPreference ?? caps?.acceptedProtocols[0] ?? sourceProtocols[0] ?? 'openai';\n return sourceProtocols.includes(preferred) ? preferred : (sourceProtocols[0] ?? 'openai');\n}\n"],"mappings":";AAEA,SAAgB,kBACd,MACA,iBACU;CACV,MAAM,YACJ,MAAM,sBAAsB,MAAM,kBAAkB,MAAM,gBAAgB,MAAM;CAClF,OAAO,gBAAgB,SAAS,SAAS,IAAI,YAAa,gBAAgB,MAAM;AAClF"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { ClientCapabilities, ResolvedSource, ResolvedTransport, TransportCapability } from '../types.js';
|
|
2
|
-
export declare function buildTransport(clientCaps: ClientCapabilities | undefined, source: ResolvedSource, capability: TransportCapability, account?: {
|
|
3
|
-
meta: {
|
|
4
|
-
provider: string;
|
|
5
|
-
name: string;
|
|
6
|
-
};
|
|
7
|
-
proxy?: {
|
|
8
|
-
port?: number;
|
|
9
|
-
};
|
|
10
|
-
}, profile?: {
|
|
11
|
-
meta: {
|
|
12
|
-
endpoint?: string;
|
|
13
|
-
};
|
|
14
|
-
}, poolPort?: number): ResolvedTransport;
|
|
15
|
-
//# sourceMappingURL=activation-transport.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activation-transport.d.ts","sourceRoot":"","sources":["../../src/core/activation-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAGlB,wBAAgB,cAAc,CAC5B,UAAU,EAAE,kBAAkB,GAAG,SAAS,EAC1C,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,mBAAmB,EAC/B,OAAO,CAAC,EAAE;IAAE,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACjF,OAAO,CAAC,EAAE;IAAE,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACzC,QAAQ,CAAC,EAAE,MAAM,GAChB,iBAAiB,CAmBnB"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { protocolForClient } from "./activation-protocol.js";
|
|
2
|
-
//#region src/core/activation-transport.ts
|
|
3
|
-
function buildTransport(clientCaps, source, capability, account, profile, poolPort) {
|
|
4
|
-
const transport = {
|
|
5
|
-
capability,
|
|
6
|
-
protocol: protocolForClient(clientCaps, source.adapter.capabilities.protocols)
|
|
7
|
-
};
|
|
8
|
-
if (capability === "managed_builtin_proxy" || capability === "managed_external_proxy") {
|
|
9
|
-
const port = poolPort ?? account?.proxy?.port ?? 8080;
|
|
10
|
-
transport.managedProxy = {
|
|
11
|
-
provider: source.ref.kind === "account" || source.ref.kind === "account-pool" ? source.ref.provider : source.adapter.capabilities.provider,
|
|
12
|
-
account: source.ref.kind === "account" ? source.ref.name : void 0,
|
|
13
|
-
port,
|
|
14
|
-
leaseId: "pending"
|
|
15
|
-
};
|
|
16
|
-
transport.endpoint = `http://127.0.0.1:${port}`;
|
|
17
|
-
} else if (capability === "direct" && profile?.meta.endpoint) transport.endpoint = profile.meta.endpoint;
|
|
18
|
-
return transport;
|
|
19
|
-
}
|
|
20
|
-
//#endregion
|
|
21
|
-
export { buildTransport };
|
|
22
|
-
|
|
23
|
-
//# sourceMappingURL=activation-transport.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activation-transport.js","names":[],"sources":["../../src/core/activation-transport.ts"],"sourcesContent":["import type {\n ClientCapabilities,\n ResolvedSource,\n ResolvedTransport,\n TransportCapability,\n} from '../types';\nimport { protocolForClient } from './activation-protocol';\n\nexport function buildTransport(\n clientCaps: ClientCapabilities | undefined,\n source: ResolvedSource,\n capability: TransportCapability,\n account?: { meta: { provider: string; name: string }; proxy?: { port?: number } },\n profile?: { meta: { endpoint?: string } },\n poolPort?: number,\n): ResolvedTransport {\n const protocol = protocolForClient(clientCaps, source.adapter.capabilities.protocols);\n const transport: ResolvedTransport = { capability, protocol };\n if (capability === 'managed_builtin_proxy' || capability === 'managed_external_proxy') {\n const port = poolPort ?? account?.proxy?.port ?? 8080;\n transport.managedProxy = {\n provider:\n source.ref.kind === 'account' || source.ref.kind === 'account-pool'\n ? source.ref.provider\n : source.adapter.capabilities.provider,\n account: source.ref.kind === 'account' ? source.ref.name : undefined,\n port,\n leaseId: 'pending',\n };\n transport.endpoint = `http://127.0.0.1:${port}`;\n } else if (capability === 'direct' && profile?.meta.endpoint) {\n transport.endpoint = profile.meta.endpoint;\n }\n return transport;\n}\n"],"mappings":";;AAQA,SAAgB,eACd,YACA,QACA,YACA,SACA,SACA,UACmB;CAEnB,MAAM,YAA+B;EAAE;EAAY,UADlC,kBAAkB,YAAY,OAAO,QAAQ,aAAa,SACxB;CAAS;CAC5D,IAAI,eAAe,2BAA2B,eAAe,0BAA0B;EACrF,MAAM,OAAO,YAAY,SAAS,OAAO,QAAQ;EACjD,UAAU,eAAe;GACvB,UACE,OAAO,IAAI,SAAS,aAAa,OAAO,IAAI,SAAS,iBACjD,OAAO,IAAI,WACX,OAAO,QAAQ,aAAa;GAClC,SAAS,OAAO,IAAI,SAAS,YAAY,OAAO,IAAI,OAAO,KAAA;GAC3D;GACA,SAAS;EACX;EACA,UAAU,WAAW,oBAAoB;CAC3C,OAAO,IAAI,eAAe,YAAY,SAAS,KAAK,UAClD,UAAU,WAAW,QAAQ,KAAK;CAEpC,OAAO;AACT"}
|