@wrongstack/cli 0.295.0 → 0.296.2
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/data/providers.json +0 -24
- package/dist/acp-A5OSIU2P.js +824 -0
- package/dist/acp-A5OSIU2P.js.map +7 -0
- package/dist/acp-server-agent.d.ts.map +1 -1
- package/dist/arg-parser.d.ts.map +1 -1
- package/dist/audit-2ZSFGNIF.js +102 -0
- package/dist/audit-2ZSFGNIF.js.map +7 -0
- package/dist/auth-CJWQJVRH.js +504 -0
- package/dist/auth-CJWQJVRH.js.map +7 -0
- package/dist/auth-menu/auth-menu-audit.d.ts +1 -5
- package/dist/auth-menu/auth-menu-audit.d.ts.map +1 -1
- package/dist/auth-menu/local.d.ts +1 -1
- package/dist/auth-menu/local.d.ts.map +1 -1
- package/dist/auth-menu/shared.d.ts +1 -1
- package/dist/auth-menu/shared.d.ts.map +1 -1
- package/dist/bench-7ZDWSNEF.js +278 -0
- package/dist/bench-7ZDWSNEF.js.map +7 -0
- package/dist/boot/brain-decision-log.d.ts +7 -5
- package/dist/boot/brain-decision-log.d.ts.map +1 -1
- package/dist/boot/dispatch-webui.d.ts +4 -8
- package/dist/boot/dispatch-webui.d.ts.map +1 -1
- package/dist/boot/launch-menu.d.ts +1 -1
- package/dist/boot/launch-menu.d.ts.map +1 -1
- package/dist/boot/system-prompt-builder.d.ts +4 -1
- package/dist/boot/system-prompt-builder.d.ts.map +1 -1
- package/dist/boot/tui-coordinator-callbacks.d.ts +45 -0
- package/dist/boot/tui-coordinator-callbacks.d.ts.map +1 -0
- package/dist/boot/tui-coordinator-setup.d.ts +2 -2
- package/dist/boot/tui-coordinator-setup.d.ts.map +1 -1
- package/dist/boot/tui-project-picker-callback.d.ts +1 -1
- package/dist/boot/tui-project-picker-callback.d.ts.map +1 -1
- package/dist/boot/tui-project-switch.d.ts +3 -4
- package/dist/boot/tui-project-switch.d.ts.map +1 -1
- package/dist/boot/tui-runtime-state.d.ts +5 -6
- package/dist/boot/tui-runtime-state.d.ts.map +1 -1
- package/dist/boot/tui-session-resume.d.ts.map +1 -1
- package/dist/boot/tui-settings-adapter.d.ts +2 -3
- package/dist/boot/tui-settings-adapter.d.ts.map +1 -1
- package/dist/boot-config.d.ts +2 -2
- package/dist/boot-config.d.ts.map +1 -1
- package/dist/boot.d.ts +1 -1
- package/dist/boot.d.ts.map +1 -1
- package/dist/brain-menu/panel-service.d.ts.map +1 -1
- package/dist/chimera-review-task.d.ts +6 -0
- package/dist/chimera-review-task.d.ts.map +1 -0
- package/dist/chimera-reviewer-policy.d.ts +34 -0
- package/dist/chimera-reviewer-policy.d.ts.map +1 -0
- package/dist/chronicle-QQEQFSSE.js +256 -0
- package/dist/chronicle-QQEQFSSE.js.map +7 -0
- package/dist/chunk-5N34EWJR.js +418 -0
- package/dist/chunk-5N34EWJR.js.map +7 -0
- package/dist/chunk-66T43Q4Y.js +90 -0
- package/dist/chunk-66T43Q4Y.js.map +7 -0
- package/dist/chunk-7OCVIDC7.js +11 -0
- package/dist/chunk-7OCVIDC7.js.map +7 -0
- package/dist/chunk-ABXK4VVY.js +84 -0
- package/dist/chunk-ABXK4VVY.js.map +7 -0
- package/dist/chunk-AXVZMEWG.js +306 -0
- package/dist/chunk-AXVZMEWG.js.map +7 -0
- package/dist/chunk-AZESNNIC.js +216 -0
- package/dist/chunk-AZESNNIC.js.map +7 -0
- package/dist/chunk-BGFM3PD7.js +41 -0
- package/dist/chunk-BGFM3PD7.js.map +7 -0
- package/dist/chunk-DPJZQCVP.js +13 -0
- package/dist/chunk-DPJZQCVP.js.map +7 -0
- package/dist/chunk-F4PEGAJZ.js +176 -0
- package/dist/chunk-F4PEGAJZ.js.map +7 -0
- package/dist/chunk-IHBYBYGA.js +443 -0
- package/dist/chunk-IHBYBYGA.js.map +7 -0
- package/dist/chunk-IN4GXGYW.js +425 -0
- package/dist/chunk-IN4GXGYW.js.map +7 -0
- package/dist/chunk-JBSQ7ONN.js +1023 -0
- package/dist/chunk-JBSQ7ONN.js.map +7 -0
- package/dist/chunk-JBTFWWKV.js +1325 -0
- package/dist/chunk-JBTFWWKV.js.map +7 -0
- package/dist/chunk-JUHRI6OV.js +100 -0
- package/dist/chunk-JUHRI6OV.js.map +7 -0
- package/dist/chunk-OP47B3IX.js +142 -0
- package/dist/chunk-OP47B3IX.js.map +7 -0
- package/dist/chunk-PJHET45A.js +158 -0
- package/dist/chunk-PJHET45A.js.map +7 -0
- package/dist/chunk-Q5GTM25S.js +17 -0
- package/dist/chunk-Q5GTM25S.js.map +7 -0
- package/dist/chunk-QD544J2B.js +19 -0
- package/dist/chunk-QD544J2B.js.map +7 -0
- package/dist/chunk-QUNHS6O3.js +258 -0
- package/dist/chunk-QUNHS6O3.js.map +7 -0
- package/dist/chunk-TADVX644.js +480 -0
- package/dist/chunk-TADVX644.js.map +7 -0
- package/dist/chunk-TGDHN4LM.js +81 -0
- package/dist/chunk-TGDHN4LM.js.map +7 -0
- package/dist/chunk-TYO2OVAD.js +50 -0
- package/dist/chunk-TYO2OVAD.js.map +7 -0
- package/dist/chunk-VCYZ3WZV.js +14 -0
- package/dist/chunk-VCYZ3WZV.js.map +7 -0
- package/dist/chunk-VJUEZZYB.js +29 -0
- package/dist/chunk-VJUEZZYB.js.map +7 -0
- package/dist/chunk-WHOIR577.js +1 -0
- package/dist/chunk-WHOIR577.js.map +7 -0
- package/dist/chunk-WY7KKOUK.js +460 -0
- package/dist/chunk-WY7KKOUK.js.map +7 -0
- package/dist/chunk-X5DQTPXT.js +3059 -0
- package/dist/chunk-X5DQTPXT.js.map +7 -0
- package/dist/chunk-XJXDOF63.js +28 -0
- package/dist/chunk-XJXDOF63.js.map +7 -0
- package/dist/chunk-XWEGWYDU.js +560 -0
- package/dist/chunk-XWEGWYDU.js.map +7 -0
- package/dist/chunk-YWUPHRGB.js +346 -0
- package/dist/chunk-YWUPHRGB.js.map +7 -0
- package/dist/chunk-Z7YGASQP.js +313 -0
- package/dist/chunk-Z7YGASQP.js.map +7 -0
- package/dist/cli-entry-main.d.ts +2 -0
- package/dist/cli-entry-main.d.ts.map +1 -0
- package/dist/cli-entry-point.d.ts +3 -3
- package/dist/cli-entry-point.d.ts.map +1 -1
- package/dist/cli-eternal-flag.d.ts +2 -2
- package/dist/cli-eternal-flag.d.ts.map +1 -1
- package/dist/cli-main-6AU6E4XZ.js +29126 -0
- package/dist/cli-main-6AU6E4XZ.js.map +7 -0
- package/dist/cli-main-helpers.d.ts +21 -0
- package/dist/cli-main-helpers.d.ts.map +1 -0
- package/dist/cli-main.d.ts +25 -1
- package/dist/cli-main.d.ts.map +1 -1
- package/dist/context-limit.d.ts +48 -0
- package/dist/context-limit.d.ts.map +1 -1
- package/dist/diag-doctor-OQ3AA63O.js +170 -0
- package/dist/diag-doctor-OQ3AA63O.js.map +7 -0
- package/dist/execute-deps.d.ts +10 -12
- package/dist/execute-deps.d.ts.map +1 -1
- package/dist/execution-V26SE52F.js +4656 -0
- package/dist/execution-V26SE52F.js.map +7 -0
- package/dist/execution-chimera-ask.d.ts +10 -0
- package/dist/execution-chimera-ask.d.ts.map +1 -0
- package/dist/execution-chimera-cascade.d.ts +15 -0
- package/dist/execution-chimera-cascade.d.ts.map +1 -0
- package/dist/execution-cleanup.d.ts +23 -0
- package/dist/execution-cleanup.d.ts.map +1 -0
- package/dist/execution-kanban-dispatch.d.ts +10 -0
- package/dist/execution-kanban-dispatch.d.ts.map +1 -0
- package/dist/execution-repl-fleet-callbacks.d.ts +11 -0
- package/dist/execution-repl-fleet-callbacks.d.ts.map +1 -0
- package/dist/execution-storage-observability.d.ts +3 -0
- package/dist/execution-storage-observability.d.ts.map +1 -0
- package/dist/execution-tui-next-step-callbacks.d.ts +20 -0
- package/dist/execution-tui-next-step-callbacks.d.ts.map +1 -0
- package/dist/execution.d.ts +2 -139
- package/dist/execution.d.ts.map +1 -1
- package/dist/export-TPORYVRZ.js +64 -0
- package/dist/export-TPORYVRZ.js.map +7 -0
- package/dist/fleet/host-acp-runner-cache.d.ts +9 -0
- package/dist/fleet/host-acp-runner-cache.d.ts.map +1 -0
- package/dist/fleet/host-acp.d.ts +3 -0
- package/dist/fleet/host-acp.d.ts.map +1 -0
- package/dist/fleet/host-concurrency.d.ts +2 -0
- package/dist/fleet/host-concurrency.d.ts.map +1 -0
- package/dist/fleet/host-context.d.ts +5 -0
- package/dist/fleet/host-context.d.ts.map +1 -0
- package/dist/fleet/host-director-builder.d.ts +24 -0
- package/dist/fleet/host-director-builder.d.ts.map +1 -0
- package/dist/fleet/host-director-event-bridges.d.ts +37 -0
- package/dist/fleet/host-director-event-bridges.d.ts.map +1 -0
- package/dist/fleet/host-director-services.d.ts +20 -0
- package/dist/fleet/host-director-services.d.ts.map +1 -0
- package/dist/fleet/host-event-bridge.d.ts +17 -0
- package/dist/fleet/host-event-bridge.d.ts.map +1 -0
- package/dist/fleet/host-helpers.d.ts +22 -0
- package/dist/fleet/host-helpers.d.ts.map +1 -0
- package/dist/fleet/host-learning-tracker.d.ts +11 -0
- package/dist/fleet/host-learning-tracker.d.ts.map +1 -0
- package/dist/fleet/host-learning.d.ts +4 -0
- package/dist/fleet/host-learning.d.ts.map +1 -0
- package/dist/fleet/host-lifecycle-events.d.ts +4 -0
- package/dist/fleet/host-lifecycle-events.d.ts.map +1 -0
- package/dist/fleet/host-paths.d.ts +3 -0
- package/dist/fleet/host-paths.d.ts.map +1 -0
- package/dist/fleet/host-provider.d.ts +22 -0
- package/dist/fleet/host-provider.d.ts.map +1 -0
- package/dist/fleet/host-session-writer.d.ts +3 -0
- package/dist/fleet/host-session-writer.d.ts.map +1 -0
- package/dist/fleet/host-shadow-pass.d.ts +21 -0
- package/dist/fleet/host-shadow-pass.d.ts.map +1 -0
- package/dist/fleet/host-spawn-types.d.ts +25 -0
- package/dist/fleet/host-spawn-types.d.ts.map +1 -0
- package/dist/fleet/host-status.d.ts +48 -0
- package/dist/fleet/host-status.d.ts.map +1 -0
- package/dist/fleet/host-subagent-factory.d.ts +16 -0
- package/dist/fleet/host-subagent-factory.d.ts.map +1 -0
- package/dist/fleet/host-supervisor.d.ts +16 -0
- package/dist/fleet/host-supervisor.d.ts.map +1 -0
- package/dist/fleet/host-task-result-report.d.ts +11 -0
- package/dist/fleet/host-task-result-report.d.ts.map +1 -0
- package/dist/fleet/host-types.d.ts +89 -0
- package/dist/fleet/host-types.d.ts.map +1 -0
- package/dist/fleet/host.d.ts +10 -357
- package/dist/fleet/host.d.ts.map +1 -1
- package/dist/fleet/routing.d.ts +1 -1
- package/dist/fleet/routing.d.ts.map +1 -1
- package/dist/fleet/status-broadcast.d.ts.map +1 -1
- package/dist/goal-host.d.ts +2 -2
- package/dist/goal-host.d.ts.map +1 -1
- package/dist/hq-BECGICEZ.js +547 -0
- package/dist/hq-BECGICEZ.js.map +7 -0
- package/dist/hq-command-controller.d.ts +2 -2
- package/dist/hq-command-controller.d.ts.map +1 -1
- package/dist/hq-publisher.d.ts +2 -2
- package/dist/hq-publisher.d.ts.map +1 -1
- package/dist/hq-server/auth-state.d.ts +1 -1
- package/dist/hq-server/auth-state.d.ts.map +1 -1
- package/dist/hq-server/project-root.d.ts +5 -0
- package/dist/hq-server/project-root.d.ts.map +1 -0
- package/dist/hq-server/routes/auth-handlers.d.ts +32 -0
- package/dist/hq-server/routes/auth-handlers.d.ts.map +1 -0
- package/dist/hq-server/routes/session-handlers.d.ts +8 -0
- package/dist/hq-server/routes/session-handlers.d.ts.map +1 -0
- package/dist/hq-server/routes/system-handlers.d.ts +16 -0
- package/dist/hq-server/routes/system-handlers.d.ts.map +1 -0
- package/dist/hq-server/routes.d.ts +6 -6
- package/dist/hq-server/routes.d.ts.map +1 -1
- package/dist/hq-server/ws.d.ts +1 -1
- package/dist/hq-server/ws.d.ts.map +1 -1
- package/dist/hq-server-FJOVOERO.js +39 -0
- package/dist/hq-server-FJOVOERO.js.map +7 -0
- package/dist/hq-server.d.ts.map +1 -1
- package/dist/hq-ttl-U2FAYFAT.js +8 -0
- package/dist/hq-ttl-U2FAYFAT.js.map +7 -0
- package/dist/hq-tunnel-YZLRONPV.js +111 -0
- package/dist/hq-tunnel-YZLRONPV.js.map +7 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2507 -52632
- package/dist/index.js.map +4 -4
- package/dist/init-E2NDDOHI.js +27 -0
- package/dist/init-E2NDDOHI.js.map +7 -0
- package/dist/input-reader.d.ts +1 -1
- package/dist/input-reader.d.ts.map +1 -1
- package/dist/kanban-dispatch-route.d.ts +14 -0
- package/dist/kanban-dispatch-route.d.ts.map +1 -0
- package/dist/kanban-hq-sync.d.ts +2 -0
- package/dist/kanban-hq-sync.d.ts.map +1 -1
- package/dist/kanban-run-mirror-EKVNGXWW.js +12 -0
- package/dist/kanban-run-mirror-EKVNGXWW.js.map +7 -0
- package/dist/live-settings-input.d.ts +69 -0
- package/dist/live-settings-input.d.ts.map +1 -0
- package/dist/mailbox-serve-2UWHEN3M.js +302 -0
- package/dist/mailbox-serve-2UWHEN3M.js.map +7 -0
- package/dist/mcp-CYLPUEHC.js +413 -0
- package/dist/mcp-CYLPUEHC.js.map +7 -0
- package/dist/mcp-serve.d.ts +1 -1
- package/dist/mcp-serve.d.ts.map +1 -1
- package/dist/modeldiag-HENYJ4N7.js +1290 -0
- package/dist/modeldiag-HENYJ4N7.js.map +7 -0
- package/dist/next-task-predictor.d.ts +1 -1
- package/dist/next-task-predictor.d.ts.map +1 -1
- package/dist/permissions-FNYLZIL4.js +115 -0
- package/dist/permissions-FNYLZIL4.js.map +7 -0
- package/dist/picker-key-state.d.ts +7 -0
- package/dist/picker-key-state.d.ts.map +1 -0
- package/dist/picker-model-picker.d.ts +6 -0
- package/dist/picker-model-picker.d.ts.map +1 -0
- package/dist/picker-ui.d.ts +17 -0
- package/dist/picker-ui.d.ts.map +1 -0
- package/dist/picker.d.ts +4 -37
- package/dist/picker.d.ts.map +1 -1
- package/dist/plugin-management.d.ts +1 -1
- package/dist/plugin-management.d.ts.map +1 -1
- package/dist/plugin-usage-OU6X6LM3.js +40 -0
- package/dist/plugin-usage-OU6X6LM3.js.map +7 -0
- package/dist/plugins-4LJ5IUBI.js +24 -0
- package/dist/plugins-4LJ5IUBI.js.map +7 -0
- package/dist/pre-launch.d.ts +0 -1
- package/dist/pre-launch.d.ts.map +1 -1
- package/dist/project-BLQ3ALVL.js +76 -0
- package/dist/project-BLQ3ALVL.js.map +7 -0
- package/dist/project-manifest-GE25PW4S.js +18 -0
- package/dist/project-manifest-GE25PW4S.js.map +7 -0
- package/dist/project-picker-BOCWHBXP.js +17 -0
- package/dist/project-picker-BOCWHBXP.js.map +7 -0
- package/dist/projects-XE76NFNZ.js +38 -0
- package/dist/projects-XE76NFNZ.js.map +7 -0
- package/dist/provider-helpers.d.ts +22 -6
- package/dist/provider-helpers.d.ts.map +1 -1
- package/dist/providers-models-GDELBHZK.js +589 -0
- package/dist/providers-models-GDELBHZK.js.map +7 -0
- package/dist/quick-VIO2BEHS.js +10 -0
- package/dist/quick-VIO2BEHS.js.map +7 -0
- package/dist/repl-auto-proceed.d.ts +19 -0
- package/dist/repl-auto-proceed.d.ts.map +1 -0
- package/dist/repl-client-registration.d.ts +7 -0
- package/dist/repl-client-registration.d.ts.map +1 -0
- package/dist/repl-input.d.ts +11 -0
- package/dist/repl-input.d.ts.map +1 -0
- package/dist/repl-options.d.ts +54 -0
- package/dist/repl-options.d.ts.map +1 -0
- package/dist/repl-rendering.d.ts +4 -0
- package/dist/repl-rendering.d.ts.map +1 -0
- package/dist/repl-suggestions.d.ts +21 -0
- package/dist/repl-suggestions.d.ts.map +1 -0
- package/dist/repl.d.ts +3 -162
- package/dist/repl.d.ts.map +1 -1
- package/dist/replay-KCTXNMZQ.js +75 -0
- package/dist/replay-KCTXNMZQ.js.map +7 -0
- package/dist/rewind-EJMVFVLS.js +185 -0
- package/dist/rewind-EJMVFVLS.js.map +7 -0
- package/dist/sdd-runtime-IKPROVV2.js +54 -0
- package/dist/sdd-runtime-IKPROVV2.js.map +7 -0
- package/dist/services/dispatch-classifier.d.ts +1 -1
- package/dist/services/dispatch-classifier.d.ts.map +1 -1
- package/dist/services/project-facts.d.ts.map +1 -1
- package/dist/services/sdd/project-context.d.ts +1 -1
- package/dist/services/sdd/project-context.d.ts.map +1 -1
- package/dist/services/sdd/task-manager.d.ts +1 -1
- package/dist/services/sdd/task-manager.d.ts.map +1 -1
- package/dist/services/statusline-config.d.ts +1 -1
- package/dist/services/statusline-config.d.ts.map +1 -1
- package/dist/session-event-wiring.d.ts +5 -2
- package/dist/session-event-wiring.d.ts.map +1 -1
- package/dist/sessions-config-NLCMK3BY.js +409 -0
- package/dist/sessions-config-NLCMK3BY.js.map +7 -0
- package/dist/settings-menu.d.ts +4 -19
- package/dist/settings-menu.d.ts.map +1 -1
- package/dist/simpleui-dist-JIFGUJO7.js +93 -0
- package/dist/simpleui-dist-JIFGUJO7.js.map +7 -0
- package/dist/slash-commands/agent-improve.d.ts +6 -5
- package/dist/slash-commands/agent-improve.d.ts.map +1 -1
- package/dist/slash-commands/brain.d.ts.map +1 -1
- package/dist/slash-commands/btw.d.ts +1 -1
- package/dist/slash-commands/btw.d.ts.map +1 -1
- package/dist/slash-commands/clear.d.ts +1 -1
- package/dist/slash-commands/clear.d.ts.map +1 -1
- package/dist/slash-commands/fallback.d.ts.map +1 -1
- package/dist/slash-commands/goal-refiner.d.ts +2 -2
- package/dist/slash-commands/goal-refiner.d.ts.map +1 -1
- package/dist/slash-commands/interrupt.d.ts +1 -1
- package/dist/slash-commands/interrupt.d.ts.map +1 -1
- package/dist/slash-commands/kanban-agent-helpers.d.ts +18 -0
- package/dist/slash-commands/kanban-agent-helpers.d.ts.map +1 -0
- package/dist/slash-commands/kanban-format.d.ts +16 -0
- package/dist/slash-commands/kanban-format.d.ts.map +1 -0
- package/dist/slash-commands/kanban-help.d.ts +2 -0
- package/dist/slash-commands/kanban-help.d.ts.map +1 -0
- package/dist/slash-commands/kanban.d.ts +1 -1
- package/dist/slash-commands/kanban.d.ts.map +1 -1
- package/dist/slash-commands/mailbox-demo.d.ts.map +1 -1
- package/dist/slash-commands/mailbox.d.ts +3 -2
- package/dist/slash-commands/mailbox.d.ts.map +1 -1
- package/dist/slash-commands/memory-compact.d.ts +5 -0
- package/dist/slash-commands/memory-compact.d.ts.map +1 -0
- package/dist/slash-commands/memory-flags.d.ts +36 -0
- package/dist/slash-commands/memory-flags.d.ts.map +1 -0
- package/dist/slash-commands/memory-formatters.d.ts +16 -0
- package/dist/slash-commands/memory-formatters.d.ts.map +1 -0
- package/dist/slash-commands/memory.d.ts.map +1 -1
- package/dist/slash-commands/mouse.d.ts +2 -2
- package/dist/slash-commands/refiner.d.ts +1 -1
- package/dist/slash-commands/refiner.d.ts.map +1 -1
- package/dist/slash-commands/review.d.ts.map +1 -1
- package/dist/slash-commands/sdd-command-helpers.d.ts +23 -0
- package/dist/slash-commands/sdd-command-helpers.d.ts.map +1 -0
- package/dist/slash-commands/sdd-format.d.ts +32 -0
- package/dist/slash-commands/sdd-format.d.ts.map +1 -0
- package/dist/slash-commands/sdd.d.ts +1 -1
- package/dist/slash-commands/sdd.d.ts.map +1 -1
- package/dist/slash-commands/tool.d.ts +1 -1
- package/dist/slash-commands/tool.d.ts.map +1 -1
- package/dist/slash-commands/working-dir.d.ts +1 -1
- package/dist/slash-commands/working-dir.d.ts.map +1 -1
- package/dist/subcommands/handlers/chronicle.d.ts.map +1 -1
- package/dist/subcommands/handlers/mailbox-serve.d.ts.map +1 -1
- package/dist/subcommands/handlers/model-smoke-test.d.ts +51 -0
- package/dist/subcommands/handlers/model-smoke-test.d.ts.map +1 -0
- package/dist/subcommands/handlers/modeldiag-profiles.d.ts +64 -0
- package/dist/subcommands/handlers/modeldiag-profiles.d.ts.map +1 -0
- package/dist/subcommands/handlers/modeldiag.d.ts.map +1 -1
- package/dist/subcommands/handlers/per-subcommand-deep-help-table.d.ts +3 -0
- package/dist/subcommands/handlers/per-subcommand-deep-help-table.d.ts.map +1 -0
- package/dist/subcommands/handlers/per-subcommand-help-data.d.ts +3 -0
- package/dist/subcommands/handlers/per-subcommand-help-data.d.ts.map +1 -0
- package/dist/subcommands/handlers/per-subcommand-help-table.d.ts +36 -0
- package/dist/subcommands/handlers/per-subcommand-help-table.d.ts.map +1 -0
- package/dist/subcommands/handlers/per-subcommand-help-types.d.ts +18 -0
- package/dist/subcommands/handlers/per-subcommand-help-types.d.ts.map +1 -0
- package/dist/subcommands/handlers/per-subcommand-help.d.ts +2 -80
- package/dist/subcommands/handlers/per-subcommand-help.d.ts.map +1 -1
- package/dist/subcommands/handlers/rewind.d.ts.map +1 -1
- package/dist/subcommands/index.d.ts +7 -0
- package/dist/subcommands/index.d.ts.map +1 -1
- package/dist/tools-skills-UNKLOB7M.js +29 -0
- package/dist/tools-skills-UNKLOB7M.js.map +7 -0
- package/dist/update-YC4TYW2Y.js +16 -0
- package/dist/update-YC4TYW2Y.js.map +7 -0
- package/dist/update-check-UMYTOH7Z.js +18 -0
- package/dist/update-check-UMYTOH7Z.js.map +7 -0
- package/dist/version-help-DROHZRW6.js +11 -0
- package/dist/version-help-DROHZRW6.js.map +7 -0
- package/dist/webui-server/connection-handler.d.ts +2 -1
- package/dist/webui-server/connection-handler.d.ts.map +1 -1
- package/dist/webui-server/kanban-host-adapter.d.ts +9 -5
- package/dist/webui-server/kanban-host-adapter.d.ts.map +1 -1
- package/dist/webui-server/listen-helpers.d.ts +18 -0
- package/dist/webui-server/listen-helpers.d.ts.map +1 -0
- package/dist/webui-server/node-pty-loader.d.ts +6 -0
- package/dist/webui-server/node-pty-loader.d.ts.map +1 -0
- package/dist/webui-server/prefs-seeding.d.ts.map +1 -1
- package/dist/webui-server/terminal-log-view.d.ts +30 -0
- package/dist/webui-server/terminal-log-view.d.ts.map +1 -0
- package/dist/webui-server-G3TISUIY.js +1459 -0
- package/dist/webui-server-G3TISUIY.js.map +7 -0
- package/dist/webui-server-options.d.ts +189 -0
- package/dist/webui-server-options.d.ts.map +1 -0
- package/dist/webui-server.d.ts +2 -178
- package/dist/webui-server.d.ts.map +1 -1
- package/dist/wiring/brain-and-orchestration.d.ts +2 -2
- package/dist/wiring/brain-and-orchestration.d.ts.map +1 -1
- package/dist/wiring/codebase-index.d.ts.map +1 -1
- package/dist/wiring/command-host-adapters.d.ts +2 -2
- package/dist/wiring/command-host-adapters.d.ts.map +1 -1
- package/dist/wiring/command-host-state.d.ts +7 -7
- package/dist/wiring/command-host-state.d.ts.map +1 -1
- package/dist/wiring/dep-watcher-bridge.d.ts +23 -0
- package/dist/wiring/dep-watcher-bridge.d.ts.map +1 -0
- package/dist/wiring/dep-watcher.d.ts +1 -1
- package/dist/wiring/dep-watcher.d.ts.map +1 -1
- package/dist/wiring/director-setup.d.ts +4 -4
- package/dist/wiring/director-setup.d.ts.map +1 -1
- package/dist/wiring/eternal-command-handlers.d.ts +5 -5
- package/dist/wiring/eternal-command-handlers.d.ts.map +1 -1
- package/dist/wiring/fleet-command-handlers.d.ts +2 -2
- package/dist/wiring/fleet-command-handlers.d.ts.map +1 -1
- package/dist/wiring/hq-telemetry.d.ts +5 -5
- package/dist/wiring/hq-telemetry.d.ts.map +1 -1
- package/dist/wiring/lifecycle-plugins.d.ts +9 -8
- package/dist/wiring/lifecycle-plugins.d.ts.map +1 -1
- package/dist/wiring/mailbox-bridge-bootstrap.d.ts +1 -1
- package/dist/wiring/management-tools.d.ts +15 -0
- package/dist/wiring/management-tools.d.ts.map +1 -0
- package/dist/wiring/pipeline.d.ts +4 -3
- package/dist/wiring/pipeline.d.ts.map +1 -1
- package/dist/wiring/plugins.d.ts +1 -1
- package/dist/wiring/plugins.d.ts.map +1 -1
- package/dist/wiring/provider-runtime-setup.d.ts +18 -5
- package/dist/wiring/provider-runtime-setup.d.ts.map +1 -1
- package/dist/wiring/provider-status.d.ts +3 -3
- package/dist/wiring/provider-status.d.ts.map +1 -1
- package/dist/wiring/provider-utility-tools.d.ts +4 -4
- package/dist/wiring/provider-utility-tools.d.ts.map +1 -1
- package/dist/wiring/provider.d.ts.map +1 -1
- package/dist/wiring/replay.d.ts +2 -2
- package/dist/wiring/replay.d.ts.map +1 -1
- package/dist/wiring/runtime-controller-deps.d.ts +4 -4
- package/dist/wiring/runtime-controller-deps.d.ts.map +1 -1
- package/dist/wiring/runtime-dispatch-state.d.ts +5 -5
- package/dist/wiring/runtime-dispatch-state.d.ts.map +1 -1
- package/dist/wiring/runtime-picker-deps.d.ts +3 -3
- package/dist/wiring/runtime-picker-deps.d.ts.map +1 -1
- package/dist/wiring/sage.d.ts.map +1 -1
- package/dist/wiring/sdd-handlers.d.ts.map +1 -1
- package/dist/wiring/session-command-handlers.d.ts +5 -5
- package/dist/wiring/session-command-handlers.d.ts.map +1 -1
- package/dist/wiring/session-registry.d.ts +38 -0
- package/dist/wiring/session-registry.d.ts.map +1 -0
- package/dist/wiring/session.d.ts +7 -5
- package/dist/wiring/session.d.ts.map +1 -1
- package/dist/wiring/tools.d.ts +2 -2
- package/dist/wiring/tools.d.ts.map +1 -1
- package/package.json +22 -22
- package/dist/cli-recovery-prompt.d.ts +0 -19
- package/dist/cli-recovery-prompt.d.ts.map +0 -1
- package/dist/first-run-auth-gate.d.ts +0 -20
- package/dist/first-run-auth-gate.d.ts.map +0 -1
- package/dist/pre-launch/indexing-question.d.ts +0 -28
- package/dist/pre-launch/indexing-question.d.ts.map +0 -1
|
@@ -0,0 +1,504 @@
|
|
|
1
|
+
import {
|
|
2
|
+
addCustomProvider,
|
|
3
|
+
addFromCatalog,
|
|
4
|
+
addKeyForProvider,
|
|
5
|
+
confirm,
|
|
6
|
+
loadProviders,
|
|
7
|
+
readKeyInput,
|
|
8
|
+
renderActions,
|
|
9
|
+
renderProviderHeader,
|
|
10
|
+
renderTopMenu,
|
|
11
|
+
resolveOAuthKind,
|
|
12
|
+
runAuthLocal,
|
|
13
|
+
runOAuthLoginKind,
|
|
14
|
+
runOAuthLoginMenu,
|
|
15
|
+
validateFamily
|
|
16
|
+
} from "./chunk-JBTFWWKV.js";
|
|
17
|
+
import {
|
|
18
|
+
parseAuthFlags
|
|
19
|
+
} from "./chunk-JBSQ7ONN.js";
|
|
20
|
+
import "./chunk-66T43Q4Y.js";
|
|
21
|
+
import "./chunk-TADVX644.js";
|
|
22
|
+
import {
|
|
23
|
+
loadConfigProviders,
|
|
24
|
+
maskedKey,
|
|
25
|
+
mutateConfigProviders,
|
|
26
|
+
normalizeKeys,
|
|
27
|
+
nowIso,
|
|
28
|
+
writeKeysBack
|
|
29
|
+
} from "./chunk-PJHET45A.js";
|
|
30
|
+
import "./chunk-YWUPHRGB.js";
|
|
31
|
+
import {
|
|
32
|
+
activeProfileConfigPath
|
|
33
|
+
} from "./chunk-DPJZQCVP.js";
|
|
34
|
+
import "./chunk-7OCVIDC7.js";
|
|
35
|
+
|
|
36
|
+
// src/subcommands/handlers/auth.ts
|
|
37
|
+
import { color as color3 } from "@wrongstack/core/utils";
|
|
38
|
+
|
|
39
|
+
// src/auth-menu/direct.ts
|
|
40
|
+
async function runAuthDirect(deps, opts) {
|
|
41
|
+
const { providerId } = opts;
|
|
42
|
+
const providers = await loadProviders(deps);
|
|
43
|
+
const existing = providers[providerId];
|
|
44
|
+
if (!existing && !opts.family) {
|
|
45
|
+
let knownFamily;
|
|
46
|
+
let knownBase;
|
|
47
|
+
let knownEnv;
|
|
48
|
+
try {
|
|
49
|
+
const k = await deps.modelsRegistry.getProvider(providerId);
|
|
50
|
+
if (k) {
|
|
51
|
+
knownFamily = k.family;
|
|
52
|
+
knownBase = k.apiBase;
|
|
53
|
+
knownEnv = k.envVars;
|
|
54
|
+
}
|
|
55
|
+
} catch {
|
|
56
|
+
}
|
|
57
|
+
if (!knownFamily || knownFamily === "unsupported") {
|
|
58
|
+
deps.renderer.writeError(
|
|
59
|
+
`Provider "${providerId}" not in catalog. Pass --family <anthropic|openai|openai-compatible|google>.`
|
|
60
|
+
);
|
|
61
|
+
return 1;
|
|
62
|
+
}
|
|
63
|
+
opts.family = knownFamily;
|
|
64
|
+
opts.baseUrl ??= knownBase;
|
|
65
|
+
opts.envVars ??= knownEnv;
|
|
66
|
+
}
|
|
67
|
+
const usedLabels = new Set(existing ? normalizeKeys(existing).map((k) => k.label) : []);
|
|
68
|
+
let label = opts.label ?? "default";
|
|
69
|
+
if (usedLabels.has(label)) {
|
|
70
|
+
let n = 2;
|
|
71
|
+
while (usedLabels.has(`${label}-${n}`)) n++;
|
|
72
|
+
label = `${label}-${n}`;
|
|
73
|
+
deps.renderer.writeInfo(`Label collided; saving as "${label}".`);
|
|
74
|
+
}
|
|
75
|
+
const apiKey = await readKeyInput(deps, `API key for ${providerId}/${label}`);
|
|
76
|
+
if (!apiKey) return 1;
|
|
77
|
+
await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {
|
|
78
|
+
const p = all[providerId] ?? { type: providerId };
|
|
79
|
+
if (!p.type) p.type = providerId;
|
|
80
|
+
if (!p.family && opts.family) p.family = opts.family;
|
|
81
|
+
if (!p.baseUrl && opts.baseUrl) p.baseUrl = opts.baseUrl;
|
|
82
|
+
if (!p.envVars && opts.envVars) p.envVars = opts.envVars;
|
|
83
|
+
const list = normalizeKeys(p);
|
|
84
|
+
list.push({ label, apiKey, createdAt: nowIso() });
|
|
85
|
+
writeKeysBack(p, list);
|
|
86
|
+
if (!p.activeKey) p.activeKey = label;
|
|
87
|
+
all[providerId] = p;
|
|
88
|
+
}, deps.profileConfigPath);
|
|
89
|
+
deps.renderer.writeInfo(`Stored encrypted key for ${providerId} (label "${label}").`);
|
|
90
|
+
deps.renderer.writeInfo(`Use: wstack --provider ${providerId} "<task>"`);
|
|
91
|
+
return 0;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// src/auth-menu/top-menu.ts
|
|
95
|
+
import { color as color2 } from "@wrongstack/core/utils";
|
|
96
|
+
|
|
97
|
+
// src/auth-menu/provider-menu.ts
|
|
98
|
+
import { color, expectDefined } from "@wrongstack/core/utils";
|
|
99
|
+
async function manageProvider(providerId, deps) {
|
|
100
|
+
for (; ; ) {
|
|
101
|
+
const providers = await loadProviders(deps);
|
|
102
|
+
const cfg = providers[providerId];
|
|
103
|
+
if (!cfg) {
|
|
104
|
+
deps.renderer.writeError(`Provider "${providerId}" no longer in config.`);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const keys = normalizeKeys(cfg);
|
|
108
|
+
renderProviderHeader(deps.renderer, providerId, cfg);
|
|
109
|
+
renderActions(deps.renderer, keys.length);
|
|
110
|
+
const raw = (await deps.reader.readLine(`
|
|
111
|
+
${color.amber("?")} ${providerId} > `)).trim();
|
|
112
|
+
if (!raw || raw === "b" || raw === "back" || raw === "q" || raw === "quit") {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const [verb = "", argRaw = ""] = raw.split(/\s+/, 2);
|
|
116
|
+
const arg = argRaw ? Number.parseInt(argRaw, 10) : Number.NaN;
|
|
117
|
+
const handled = await dispatchAction(verb, arg, providerId, keys, cfg, deps);
|
|
118
|
+
if (handled === "exit") return;
|
|
119
|
+
if (handled === "continue") continue;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
async function dispatchAction(verb, arg, providerId, keys, cfg, deps) {
|
|
123
|
+
if (verb === "a" || verb === "add") {
|
|
124
|
+
await addKeyForProvider(providerId, deps, cfg);
|
|
125
|
+
return "continue";
|
|
126
|
+
}
|
|
127
|
+
if (verb === "x" || verb === "remove") {
|
|
128
|
+
const answer = await confirm(
|
|
129
|
+
deps,
|
|
130
|
+
`Remove provider "${providerId}" and ${keys.length} key(s)?`
|
|
131
|
+
);
|
|
132
|
+
if (answer === null) return "continue";
|
|
133
|
+
if (answer) {
|
|
134
|
+
await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {
|
|
135
|
+
delete all[providerId];
|
|
136
|
+
}, deps.profileConfigPath);
|
|
137
|
+
deps.renderer.write(` ${color.green("\u2713")} Removed ${providerId}.
|
|
138
|
+
`);
|
|
139
|
+
return "exit";
|
|
140
|
+
}
|
|
141
|
+
return "continue";
|
|
142
|
+
}
|
|
143
|
+
if (verb === "u" || verb === "update") {
|
|
144
|
+
if (!validKeyIndex(arg, keys.length, deps, "u")) return "continue";
|
|
145
|
+
const target = expectDefined(keys[arg - 1]);
|
|
146
|
+
const newKey = await readKeyInput(deps, `New key for ${target.label}`);
|
|
147
|
+
if (!newKey) return "continue";
|
|
148
|
+
await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {
|
|
149
|
+
const p = all[providerId];
|
|
150
|
+
if (!p) return;
|
|
151
|
+
const list = normalizeKeys(p).map(
|
|
152
|
+
(k) => k.label === target.label ? { ...k, apiKey: newKey, createdAt: nowIso() } : k
|
|
153
|
+
);
|
|
154
|
+
writeKeysBack(p, list);
|
|
155
|
+
}, deps.profileConfigPath);
|
|
156
|
+
deps.renderer.write(` ${color.green("\u2713")} Updated ${providerId}/${target.label}.
|
|
157
|
+
`);
|
|
158
|
+
return "continue";
|
|
159
|
+
}
|
|
160
|
+
if (verb === "d" || verb === "delete" || verb === "rm") {
|
|
161
|
+
if (!validKeyIndex(arg, keys.length, deps, "d")) return "continue";
|
|
162
|
+
const target = expectDefined(keys[arg - 1]);
|
|
163
|
+
const answer = await confirm(
|
|
164
|
+
deps,
|
|
165
|
+
`Delete key "${target.label}" (${maskedKey(target.apiKey)})?`
|
|
166
|
+
);
|
|
167
|
+
if (answer === null) return "continue";
|
|
168
|
+
if (!answer) return "continue";
|
|
169
|
+
await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {
|
|
170
|
+
const p = all[providerId];
|
|
171
|
+
if (!p) return;
|
|
172
|
+
const list = normalizeKeys(p).filter((k) => k.label !== target.label);
|
|
173
|
+
writeKeysBack(p, list);
|
|
174
|
+
if (p.activeKey === target.label) {
|
|
175
|
+
p.activeKey = list[0]?.label;
|
|
176
|
+
}
|
|
177
|
+
}, deps.profileConfigPath);
|
|
178
|
+
deps.renderer.write(` ${color.green("\u2713")} Deleted ${providerId}/${target.label}.
|
|
179
|
+
`);
|
|
180
|
+
return "continue";
|
|
181
|
+
}
|
|
182
|
+
if (verb === "s" || verb === "set" || verb === "active") {
|
|
183
|
+
if (!validKeyIndex(arg, keys.length, deps, "s")) return "continue";
|
|
184
|
+
const target = expectDefined(keys[arg - 1]);
|
|
185
|
+
await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {
|
|
186
|
+
const p = all[providerId];
|
|
187
|
+
if (!p) return;
|
|
188
|
+
const list = normalizeKeys(p);
|
|
189
|
+
writeKeysBack(p, list);
|
|
190
|
+
p.activeKey = target.label;
|
|
191
|
+
}, deps.profileConfigPath);
|
|
192
|
+
deps.renderer.write(` ${color.green("\u2713")} Active key \u2192 ${color.bold(target.label)}.
|
|
193
|
+
`);
|
|
194
|
+
return "continue";
|
|
195
|
+
}
|
|
196
|
+
if (verb === "f" || verb === "family") {
|
|
197
|
+
const current = cfg.family ?? "";
|
|
198
|
+
const ans = (await deps.reader.readLine(
|
|
199
|
+
` ${color.amber("?")} Family ${color.dim(`(anthropic | openai | openai-compatible | google, empty = unset, current: ${current || "unset"})`)}: `
|
|
200
|
+
)).trim();
|
|
201
|
+
if (ans !== "") {
|
|
202
|
+
const validated = validateFamily(ans);
|
|
203
|
+
if (!validated) {
|
|
204
|
+
deps.renderer.writeError(
|
|
205
|
+
`Invalid family: "${ans}". Must be one of: anthropic, openai, openai-compatible, google.`
|
|
206
|
+
);
|
|
207
|
+
return "continue";
|
|
208
|
+
}
|
|
209
|
+
await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {
|
|
210
|
+
const p = all[providerId];
|
|
211
|
+
if (!p) return;
|
|
212
|
+
p.family = validated;
|
|
213
|
+
}, deps.profileConfigPath);
|
|
214
|
+
deps.renderer.write(` ${color.green("\u2713")} family \u2192 ${validated}
|
|
215
|
+
`);
|
|
216
|
+
} else {
|
|
217
|
+
await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {
|
|
218
|
+
const p = all[providerId];
|
|
219
|
+
if (!p) return;
|
|
220
|
+
delete p.family;
|
|
221
|
+
}, deps.profileConfigPath);
|
|
222
|
+
deps.renderer.write(` ${color.green("\u2713")} family \u2192 (unset)
|
|
223
|
+
`);
|
|
224
|
+
}
|
|
225
|
+
return "continue";
|
|
226
|
+
}
|
|
227
|
+
if (verb === "B" || verb === "baseurl" || verb === "base-url" || verb === "url") {
|
|
228
|
+
const current = cfg.baseUrl ?? "";
|
|
229
|
+
const ans = (await deps.reader.readLine(
|
|
230
|
+
` ${color.amber("?")} Base URL ${color.dim(`(empty = unset, current: ${current || "unset"})`)}: `
|
|
231
|
+
)).trim();
|
|
232
|
+
await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {
|
|
233
|
+
const p = all[providerId];
|
|
234
|
+
if (!p) return;
|
|
235
|
+
if (ans === "") delete p.baseUrl;
|
|
236
|
+
else p.baseUrl = ans;
|
|
237
|
+
}, deps.profileConfigPath);
|
|
238
|
+
deps.renderer.write(` ${color.green("\u2713")} baseUrl \u2192 ${ans || "(unset)"}
|
|
239
|
+
`);
|
|
240
|
+
return "continue";
|
|
241
|
+
}
|
|
242
|
+
if (verb === "m" || verb === "models") {
|
|
243
|
+
const current = (cfg.models ?? []).join(", ");
|
|
244
|
+
const ans = (await deps.reader.readLine(
|
|
245
|
+
` ${color.amber("?")} Model ids ${color.dim(`(comma-separated, empty = catalog default, current: ${current || "none"})`)}: `
|
|
246
|
+
)).trim();
|
|
247
|
+
const list = ans ? ans.split(",").map((s) => s.trim()).filter(Boolean) : [];
|
|
248
|
+
await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {
|
|
249
|
+
const p = all[providerId];
|
|
250
|
+
if (!p) return;
|
|
251
|
+
if (list.length === 0) delete p.models;
|
|
252
|
+
else p.models = list;
|
|
253
|
+
}, deps.profileConfigPath);
|
|
254
|
+
deps.renderer.write(
|
|
255
|
+
` ${color.green("\u2713")} models \u2192 ${list.length === 0 ? "(catalog default)" : list.join(", ")}
|
|
256
|
+
`
|
|
257
|
+
);
|
|
258
|
+
return "continue";
|
|
259
|
+
}
|
|
260
|
+
deps.renderer.writeError(`Unknown action: "${verb}". Type b for back or q to quit.`);
|
|
261
|
+
return "unknown";
|
|
262
|
+
}
|
|
263
|
+
function validKeyIndex(arg, max, deps, verb) {
|
|
264
|
+
if (!Number.isFinite(arg) || arg < 1 || arg > max) {
|
|
265
|
+
deps.renderer.writeError(`Usage: ${verb} <1-${max}>`);
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// src/auth-menu/top-menu.ts
|
|
272
|
+
async function runTopMenu(deps) {
|
|
273
|
+
for (; ; ) {
|
|
274
|
+
const providers = await loadProviders(deps);
|
|
275
|
+
renderTopMenu(deps.renderer, providers);
|
|
276
|
+
const ids = Object.keys(providers).sort();
|
|
277
|
+
const choice = (await deps.reader.readLine(`
|
|
278
|
+
${color2.amber("?")} Pick: `)).trim().toLowerCase();
|
|
279
|
+
if (!choice || choice === "q" || choice === "quit" || choice === "exit") {
|
|
280
|
+
deps.renderer.write(color2.dim("Done.\n"));
|
|
281
|
+
return 0;
|
|
282
|
+
}
|
|
283
|
+
if (choice === "a" || choice === "add") {
|
|
284
|
+
await addFromCatalog(deps);
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
if (choice === "l" || choice === "local") {
|
|
288
|
+
await runAuthLocal(deps);
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
if (choice === "c" || choice === "custom") {
|
|
292
|
+
await addCustomProvider(deps);
|
|
293
|
+
continue;
|
|
294
|
+
}
|
|
295
|
+
if (choice === "s" || choice === "signin" || choice === "login" || choice === "oauth") {
|
|
296
|
+
await runOAuthLoginMenu(deps);
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
const idx = Number.parseInt(choice, 10);
|
|
300
|
+
if (!Number.isNaN(idx) && idx >= 1 && idx <= ids.length) {
|
|
301
|
+
const pid = ids[idx - 1];
|
|
302
|
+
await manageProvider(pid, deps);
|
|
303
|
+
continue;
|
|
304
|
+
}
|
|
305
|
+
const byId = ids.find((id) => id.toLowerCase() === choice);
|
|
306
|
+
if (byId) {
|
|
307
|
+
await manageProvider(byId, deps);
|
|
308
|
+
continue;
|
|
309
|
+
}
|
|
310
|
+
deps.renderer.writeError(`Unknown selection: "${choice}"`);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
// src/subcommands/handlers/auth.ts
|
|
315
|
+
var authCmd = async (args, deps) => {
|
|
316
|
+
const flags = parseAuthFlags(args);
|
|
317
|
+
const profileConfigPath = activeProfileConfigPath(deps.paths, deps.config);
|
|
318
|
+
const menuDeps = {
|
|
319
|
+
renderer: deps.renderer,
|
|
320
|
+
reader: deps.reader,
|
|
321
|
+
modelsRegistry: deps.modelsRegistry,
|
|
322
|
+
vault: deps.vault,
|
|
323
|
+
profileConfigPath
|
|
324
|
+
};
|
|
325
|
+
if (flags.positional.length === 0) {
|
|
326
|
+
return runTopMenu(menuDeps);
|
|
327
|
+
}
|
|
328
|
+
const first = flags.positional[0];
|
|
329
|
+
if (first === "list" || first === "ls") {
|
|
330
|
+
return runAuthList(menuDeps);
|
|
331
|
+
}
|
|
332
|
+
if (first === "status") {
|
|
333
|
+
const pid = flags.positional[1];
|
|
334
|
+
if (!pid) {
|
|
335
|
+
deps.renderer.writeError("Usage: wstack auth status <provider>");
|
|
336
|
+
return 1;
|
|
337
|
+
}
|
|
338
|
+
return runAuthStatus(menuDeps, pid);
|
|
339
|
+
}
|
|
340
|
+
if (first === "remove" || first === "rm") {
|
|
341
|
+
const pid = flags.positional[1];
|
|
342
|
+
if (!pid) {
|
|
343
|
+
deps.renderer.writeError("Usage: wstack auth remove <provider> [--force]");
|
|
344
|
+
return 1;
|
|
345
|
+
}
|
|
346
|
+
return runAuthRemove(menuDeps, pid);
|
|
347
|
+
}
|
|
348
|
+
if (first === "login") {
|
|
349
|
+
const pid = (flags.positional[1] ?? "").toLowerCase();
|
|
350
|
+
if (!pid) return runOAuthLoginKind(menuDeps, "chatgpt");
|
|
351
|
+
const kind = resolveOAuthKind(pid, { allowNumeric: false });
|
|
352
|
+
if (kind) return runOAuthLoginKind(menuDeps, kind);
|
|
353
|
+
deps.renderer.writeError("OAuth login is only supported for ChatGPT, Claude, and GitHub Copilot.");
|
|
354
|
+
deps.renderer.write(
|
|
355
|
+
color3.dim(" Sign in with ChatGPT: ") + color3.bold("wstack auth login chatgpt") + "\n" + color3.dim(" Sign in with Claude: ") + color3.bold("wstack auth login claude") + "\n" + color3.dim(" Sign in with Copilot: ") + color3.bold("wstack auth login copilot") + "\n" + color3.dim(" For an API key instead: ") + color3.bold(`wstack auth ${pid}`) + "\n"
|
|
356
|
+
);
|
|
357
|
+
return 1;
|
|
358
|
+
}
|
|
359
|
+
return runAuthDirect(menuDeps, {
|
|
360
|
+
providerId: first,
|
|
361
|
+
label: flags.label,
|
|
362
|
+
family: flags.family,
|
|
363
|
+
baseUrl: flags.baseUrl,
|
|
364
|
+
envVars: flags.envVars
|
|
365
|
+
});
|
|
366
|
+
};
|
|
367
|
+
async function runAuthList(deps) {
|
|
368
|
+
let providers;
|
|
369
|
+
try {
|
|
370
|
+
providers = await loadConfigProviders(deps.profileConfigPath, deps.vault);
|
|
371
|
+
} catch (err) {
|
|
372
|
+
deps.renderer.writeError(`Could not read config: ${err.message}`);
|
|
373
|
+
return 1;
|
|
374
|
+
}
|
|
375
|
+
const ids = Object.keys(providers).sort();
|
|
376
|
+
if (ids.length === 0) {
|
|
377
|
+
deps.renderer.write(
|
|
378
|
+
`${color3.dim("No providers configured.")}
|
|
379
|
+
${color3.dim("Run")} ${color3.bold("wstack auth")} ${color3.dim("to add one.")}
|
|
380
|
+
`
|
|
381
|
+
);
|
|
382
|
+
return 0;
|
|
383
|
+
}
|
|
384
|
+
deps.renderer.write(`
|
|
385
|
+
${color3.bold("Saved providers")} ${color3.dim(`(${ids.length})`)}
|
|
386
|
+
|
|
387
|
+
`);
|
|
388
|
+
for (const id of ids) {
|
|
389
|
+
const cfg = providers[id];
|
|
390
|
+
if (!cfg) continue;
|
|
391
|
+
const keys = normalizeKeys(cfg);
|
|
392
|
+
const active = cfg.activeKey ?? keys[0]?.label;
|
|
393
|
+
const famTag = cfg.family ? `${cfg.family}` : color3.amber("no-family");
|
|
394
|
+
const aliasHint = cfg.type && cfg.type !== id ? color3.dim(` (\u2192 ${cfg.type})`) : "";
|
|
395
|
+
const modelHint = cfg.models && cfg.models.length > 0 ? color3.dim(` [${cfg.models.length} models]`) : "";
|
|
396
|
+
deps.renderer.write(` ${color3.bold(id)}${aliasHint}
|
|
397
|
+
`);
|
|
398
|
+
deps.renderer.write(
|
|
399
|
+
` family: ${famTag} baseUrl: ${cfg.baseUrl ?? color3.dim("unset")}${modelHint}
|
|
400
|
+
`
|
|
401
|
+
);
|
|
402
|
+
if (keys.length === 0) {
|
|
403
|
+
deps.renderer.write(` ${color3.amber("no keys")}
|
|
404
|
+
`);
|
|
405
|
+
} else {
|
|
406
|
+
deps.renderer.write(
|
|
407
|
+
` ${color3.dim(`${keys.length} key${keys.length === 1 ? "" : "s"}:`)}
|
|
408
|
+
`
|
|
409
|
+
);
|
|
410
|
+
for (const k of keys) {
|
|
411
|
+
const marker = k.label === active ? color3.green("\u25CF") : color3.dim("\u25CB");
|
|
412
|
+
deps.renderer.write(
|
|
413
|
+
` ${marker} ${k.label.padEnd(18)} ${maskedKey(k.apiKey)} ${color3.dim(k.createdAt)}
|
|
414
|
+
`
|
|
415
|
+
);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
deps.renderer.write("\n");
|
|
419
|
+
}
|
|
420
|
+
deps.renderer.write(color3.dim(`Manage: wstack auth Add key: wstack auth <provider>
|
|
421
|
+
`));
|
|
422
|
+
return 0;
|
|
423
|
+
}
|
|
424
|
+
async function runAuthStatus(deps, providerId) {
|
|
425
|
+
let providers;
|
|
426
|
+
try {
|
|
427
|
+
providers = await loadConfigProviders(deps.profileConfigPath, deps.vault);
|
|
428
|
+
} catch (err) {
|
|
429
|
+
deps.renderer.writeError(`Could not read config: ${err.message}`);
|
|
430
|
+
return 1;
|
|
431
|
+
}
|
|
432
|
+
const cfg = providers[providerId];
|
|
433
|
+
if (!cfg) {
|
|
434
|
+
deps.renderer.writeError(`Provider "${providerId}" not found in config.`);
|
|
435
|
+
deps.renderer.write(
|
|
436
|
+
color3.dim(`Run ${color3.bold("wstack auth list")} to see saved providers.
|
|
437
|
+
`)
|
|
438
|
+
);
|
|
439
|
+
return 1;
|
|
440
|
+
}
|
|
441
|
+
const keys = normalizeKeys(cfg);
|
|
442
|
+
const active = cfg.activeKey ?? keys[0]?.label;
|
|
443
|
+
const lines = [
|
|
444
|
+
`
|
|
445
|
+
${color3.bold(providerId)} ${cfg.family ? color3.dim(`[${cfg.family}]`) : color3.amber("[no family]")}`,
|
|
446
|
+
"",
|
|
447
|
+
` type: ${color3.cyan(cfg.type ?? providerId)}`,
|
|
448
|
+
` family: ${cfg.family ? color3.cyan(cfg.family) : color3.dim("unset")}`,
|
|
449
|
+
` baseUrl: ${cfg.baseUrl ? color3.cyan(cfg.baseUrl) : color3.dim("unset")}`
|
|
450
|
+
];
|
|
451
|
+
if (cfg.models?.length) {
|
|
452
|
+
lines.push(` models: ${color3.cyan(cfg.models.join(", "))}`);
|
|
453
|
+
}
|
|
454
|
+
if (cfg.envVars?.length) {
|
|
455
|
+
lines.push(` envVars: ${color3.cyan(cfg.envVars.join(", "))}`);
|
|
456
|
+
}
|
|
457
|
+
lines.push("");
|
|
458
|
+
if (keys.length === 0) {
|
|
459
|
+
lines.push(color3.amber(" (no keys saved)"));
|
|
460
|
+
} else {
|
|
461
|
+
lines.push(` ${color3.dim("Keys:")}`);
|
|
462
|
+
for (const k of keys) {
|
|
463
|
+
const marker = k.label === active ? color3.green("\u25CF") : color3.dim("\u25CB");
|
|
464
|
+
lines.push(
|
|
465
|
+
` ${marker} ${color3.bold(k.label.padEnd(18))} ${maskedKey(k.apiKey)} ${color3.dim(k.createdAt)}`
|
|
466
|
+
);
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
lines.push("");
|
|
470
|
+
lines.push(color3.dim(`Manage: wstack auth \u2192 pick ${providerId}`));
|
|
471
|
+
deps.renderer.write(lines.join("\n") + "\n");
|
|
472
|
+
return 0;
|
|
473
|
+
}
|
|
474
|
+
async function runAuthRemove(deps, providerId) {
|
|
475
|
+
const providers = await loadConfigProviders(deps.profileConfigPath, deps.vault);
|
|
476
|
+
if (!providers[providerId]) {
|
|
477
|
+
deps.renderer.writeError(`Provider "${providerId}" not found.`);
|
|
478
|
+
return 1;
|
|
479
|
+
}
|
|
480
|
+
deps.renderer.write(
|
|
481
|
+
`${color3.amber("!")} This will remove "${providerId}" and all its saved keys.
|
|
482
|
+
`
|
|
483
|
+
);
|
|
484
|
+
const answer = (await deps.reader.readLine(` ${color3.amber("?")} Confirm removal? ${color3.dim("[y/N]")} `)).trim().toLowerCase();
|
|
485
|
+
if (answer !== "y" && answer !== "yes") {
|
|
486
|
+
deps.renderer.write(color3.dim("Cancelled.\n"));
|
|
487
|
+
return 0;
|
|
488
|
+
}
|
|
489
|
+
try {
|
|
490
|
+
await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {
|
|
491
|
+
delete all[providerId];
|
|
492
|
+
});
|
|
493
|
+
deps.renderer.write(` ${color3.green("\u2713")} Removed ${color3.bold(providerId)}.
|
|
494
|
+
`);
|
|
495
|
+
return 0;
|
|
496
|
+
} catch (err) {
|
|
497
|
+
deps.renderer.writeError(`Failed to remove: ${err.message}`);
|
|
498
|
+
return 1;
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
export {
|
|
502
|
+
authCmd
|
|
503
|
+
};
|
|
504
|
+
//# sourceMappingURL=auth-CJWQJVRH.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/subcommands/handlers/auth.ts", "../src/auth-menu/direct.ts", "../src/auth-menu/top-menu.ts", "../src/auth-menu/provider-menu.ts"],
|
|
4
|
+
"sourcesContent": ["import { color } from '@wrongstack/core/utils';\nimport { parseAuthFlags } from '../../arg-parser.js';\nimport {\n type AuthMenuDeps,\n resolveOAuthKind,\n runAuthDirect,\n runAuthMenu,\n runOAuthLoginKind,\n} from '../../auth-menu/index.js';\nimport {\n loadConfigProviders,\n maskedKey,\n mutateConfigProviders,\n normalizeKeys,\n} from '../../provider-config-utils.js';\nimport { activeProfileConfigPath } from '../../profile-config-path.js';\nimport type { SubcommandHandler } from '../index.js';\n\nexport const authCmd: SubcommandHandler = async (args, deps) => {\n const flags = parseAuthFlags(args);\n const profileConfigPath = activeProfileConfigPath(deps.paths, deps.config);\n const menuDeps: AuthMenuDeps = {\n renderer: deps.renderer,\n reader: deps.reader,\n modelsRegistry: deps.modelsRegistry,\n vault: deps.vault,\n profileConfigPath,\n };\n\n // No args \u2192 interactive menu\n if (flags.positional.length === 0) {\n return runAuthMenu(menuDeps);\n }\n\n const first = flags.positional[0]!;\n\n // `wstack auth list` / `wstack auth ls` \u2014 quick listing\n if (first === 'list' || first === 'ls') {\n return runAuthList(menuDeps);\n }\n\n // `wstack auth status <provider>` \u2014 detailed view\n if (first === 'status') {\n const pid = flags.positional[1];\n if (!pid) {\n deps.renderer.writeError('Usage: wstack auth status <provider>');\n return 1;\n }\n return runAuthStatus(menuDeps, pid);\n }\n\n // `wstack auth remove <provider>` / `wstack auth rm <provider>` \u2014 quick delete\n if (first === 'remove' || first === 'rm') {\n const pid = flags.positional[1];\n if (!pid) {\n deps.renderer.writeError('Usage: wstack auth remove <provider> [--force]');\n return 1;\n }\n return runAuthRemove(menuDeps, pid);\n }\n\n // `wstack auth login <chatgpt|claude>` \u2014 subscription OAuth login.\n // chatgpt/openai/codex \u2192 \"Sign in with ChatGPT\" (provider openai-codex)\n // claude/anthropic \u2192 \"Sign in with Claude\" (provider anthropic-oauth)\n // Both store under a canonical provider id so they never clobber a separately\n // configured API-key `openai`/`anthropic` provider.\n if (first === 'login') {\n const pid = (flags.positional[1] ?? '').toLowerCase();\n // Bare `wstack auth login` keeps its historical default: ChatGPT.\n if (!pid) return runOAuthLoginKind(menuDeps, 'chatgpt');\n // Numeric picks are a menu affordance, not a CLI one \u2014 `auth login 2`\n // is a typo, not a request to sign into Claude.\n const kind = resolveOAuthKind(pid, { allowNumeric: false });\n if (kind) return runOAuthLoginKind(menuDeps, kind);\n deps.renderer.writeError('OAuth login is only supported for ChatGPT, Claude, and GitHub Copilot.');\n deps.renderer.write(\n color.dim(' Sign in with ChatGPT: ') + color.bold('wstack auth login chatgpt') + '\\n' +\n color.dim(' Sign in with Claude: ') + color.bold('wstack auth login claude') + '\\n' +\n color.dim(' Sign in with Copilot: ') + color.bold('wstack auth login copilot') + '\\n' +\n color.dim(' For an API key instead: ') + color.bold(`wstack auth ${pid}`) + '\\n',\n );\n return 1;\n }\n\n // `wstack auth <provider>` \u2014 direct add\n return runAuthDirect(menuDeps, {\n providerId: first,\n label: flags.label,\n family: flags.family,\n baseUrl: flags.baseUrl,\n envVars: flags.envVars,\n });\n};\n\n/** Quick read-only listing of all saved providers and their keys. */\nasync function runAuthList(deps: AuthMenuDeps): Promise<number> {\n let providers: Record<string, unknown>;\n try {\n providers = await loadConfigProviders(deps.profileConfigPath, deps.vault);\n } catch (err) {\n deps.renderer.writeError(`Could not read config: ${(err as Error).message}`);\n return 1;\n }\n\n const ids = Object.keys(providers).sort();\n\n if (ids.length === 0) {\n deps.renderer.write(\n `${color.dim('No providers configured.')}\\n` +\n `${color.dim('Run')} ${color.bold('wstack auth')} ${color.dim('to add one.')}\\n`,\n );\n return 0;\n }\n\n deps.renderer.write(`\\n${color.bold('Saved providers')} ${color.dim(`(${ids.length})`)}\\n\\n`);\n\n for (const id of ids) {\n const cfg = providers[id] as\n | {\n type?: string;\n family?: string;\n baseUrl?: string;\n activeKey?: string;\n apiKeys?: { label: string; apiKey: string; createdAt: string }[];\n apiKey?: string;\n models?: string[];\n }\n | undefined;\n if (!cfg) continue;\n\n const keys = normalizeKeys(cfg as Parameters<typeof normalizeKeys>[0]);\n const active = cfg.activeKey ?? keys[0]?.label;\n const famTag = cfg.family ? `${cfg.family}` : color.amber('no-family');\n const aliasHint = cfg.type && cfg.type !== id ? color.dim(` (\u2192 ${cfg.type})`) : '';\n const modelHint =\n cfg.models && cfg.models.length > 0 ? color.dim(` [${cfg.models.length} models]`) : '';\n\n deps.renderer.write(` ${color.bold(id)}${aliasHint}\\n`);\n deps.renderer.write(\n ` family: ${famTag} baseUrl: ${cfg.baseUrl ?? color.dim('unset')}${modelHint}\\n`,\n );\n\n if (keys.length === 0) {\n deps.renderer.write(` ${color.amber('no keys')}\\n`);\n } else {\n deps.renderer.write(\n ` ${color.dim(`${keys.length} key${keys.length === 1 ? '' : 's'}:`)}\\n`,\n );\n for (const k of keys) {\n const marker = k.label === active ? color.green('\u25CF') : color.dim('\u25CB');\n deps.renderer.write(\n ` ${marker} ${k.label.padEnd(18)} ${maskedKey(k.apiKey)} ${color.dim(k.createdAt)}\\n`,\n );\n }\n }\n deps.renderer.write('\\n');\n }\n\n deps.renderer.write(color.dim(`Manage: wstack auth Add key: wstack auth <provider>\\n`));\n return 0;\n}\n\n/** Detailed view of a single provider. */\nasync function runAuthStatus(deps: AuthMenuDeps, providerId: string): Promise<number> {\n let providers: Record<string, unknown>;\n try {\n providers = await loadConfigProviders(deps.profileConfigPath, deps.vault);\n } catch (err) {\n deps.renderer.writeError(`Could not read config: ${(err as Error).message}`);\n return 1;\n }\n\n const cfg = providers[providerId] as\n | {\n type?: string;\n family?: string;\n baseUrl?: string;\n activeKey?: string;\n envVars?: string[];\n models?: string[];\n apiKeys?: { label: string; apiKey: string; createdAt: string }[];\n apiKey?: string;\n }\n | undefined;\n\n if (!cfg) {\n deps.renderer.writeError(`Provider \"${providerId}\" not found in config.`);\n deps.renderer.write(\n color.dim(`Run ${color.bold('wstack auth list')} to see saved providers.\\n`),\n );\n return 1;\n }\n\n const keys = normalizeKeys(cfg as Parameters<typeof normalizeKeys>[0]);\n const active = cfg.activeKey ?? keys[0]?.label;\n\n const lines: string[] = [\n `\\n${color.bold(providerId)} ${cfg.family ? color.dim(`[${cfg.family}]`) : color.amber('[no family]')}`,\n '',\n ` type: ${color.cyan(cfg.type ?? providerId)}`,\n ` family: ${cfg.family ? color.cyan(cfg.family) : color.dim('unset')}`,\n ` baseUrl: ${cfg.baseUrl ? color.cyan(cfg.baseUrl) : color.dim('unset')}`,\n ];\n\n if (cfg.models?.length) {\n lines.push(` models: ${color.cyan(cfg.models.join(', '))}`);\n }\n if (cfg.envVars?.length) {\n lines.push(` envVars: ${color.cyan(cfg.envVars.join(', '))}`);\n }\n lines.push('');\n\n if (keys.length === 0) {\n lines.push(color.amber(' (no keys saved)'));\n } else {\n lines.push(` ${color.dim('Keys:')}`);\n for (const k of keys) {\n const marker = k.label === active ? color.green('\u25CF') : color.dim('\u25CB');\n lines.push(\n ` ${marker} ${color.bold(k.label.padEnd(18))} ${maskedKey(k.apiKey)} ${color.dim(k.createdAt)}`,\n );\n }\n }\n\n lines.push('');\n lines.push(color.dim(`Manage: wstack auth \u2192 pick ${providerId}`));\n deps.renderer.write(lines.join('\\n') + '\\n');\n return 0;\n}\n\n/** Quick removal of a provider without the interactive menu. */\nasync function runAuthRemove(deps: AuthMenuDeps, providerId: string): Promise<number> {\n const providers = await loadConfigProviders(deps.profileConfigPath, deps.vault);\n if (!providers[providerId]) {\n deps.renderer.writeError(`Provider \"${providerId}\" not found.`);\n return 1;\n }\n\n // Confirm before deleting unless --force\n deps.renderer.write(\n `${color.amber('!')} This will remove \"${providerId}\" and all its saved keys.\\n`,\n );\n const answer = (\n await deps.reader.readLine(` ${color.amber('?')} Confirm removal? ${color.dim('[y/N]')} `)\n )\n .trim()\n .toLowerCase();\n\n if (answer !== 'y' && answer !== 'yes') {\n deps.renderer.write(color.dim('Cancelled.\\n'));\n return 0;\n }\n\n try {\n await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {\n delete all[providerId];\n });\n deps.renderer.write(` ${color.green('\u2713')} Removed ${color.bold(providerId)}.\\n`);\n return 0;\n } catch (err) {\n deps.renderer.writeError(`Failed to remove: ${(err as Error).message}`);\n return 1;\n }\n}\n", "import type { WireFamily } from '@wrongstack/core/types';\nimport {\n mutateConfigProviders,\n normalizeKeys,\n nowIso,\n writeKeysBack,\n} from '../provider-config-utils.js';\nimport { loadProviders } from './helpers.js';\nimport { readKeyInput } from './shared.js';\nimport type { AuthMenuDeps } from './types.js';\n\n/**\n * One-shot add: used by `wstack auth <provider>` to skip the menu and\n * append a single key. Honors --label / --family / --base-url / --env\n * flags. If the label collides, we suffix with a counter.\n */\nexport async function runAuthDirect(\n deps: AuthMenuDeps,\n opts: {\n providerId: string;\n label?: string | undefined;\n family?: WireFamily | undefined;\n baseUrl?: string | undefined;\n envVars?: string[] | undefined;\n },\n): Promise<number> {\n const { providerId } = opts;\n const providers = await loadProviders(deps);\n const existing = providers[providerId];\n\n if (!existing && !opts.family) {\n // Try the catalog before giving up\n let knownFamily: WireFamily | undefined;\n let knownBase: string | undefined;\n let knownEnv: string[] | undefined;\n try {\n const k = await deps.modelsRegistry.getProvider(providerId);\n if (k) {\n knownFamily = k.family as WireFamily;\n knownBase = k.apiBase;\n knownEnv = k.envVars;\n }\n } catch {\n // catalog unavailable\n }\n if (!knownFamily || knownFamily === 'unsupported') {\n deps.renderer.writeError(\n `Provider \"${providerId}\" not in catalog. Pass --family <anthropic|openai|openai-compatible|google>.`,\n );\n return 1;\n }\n opts.family = knownFamily;\n opts.baseUrl ??= knownBase;\n opts.envVars ??= knownEnv;\n }\n\n const usedLabels = new Set(existing ? normalizeKeys(existing).map((k) => k.label) : []);\n let label = opts.label ?? 'default';\n if (usedLabels.has(label)) {\n let n = 2;\n while (usedLabels.has(`${label}-${n}`)) n++;\n label = `${label}-${n}`;\n deps.renderer.writeInfo(`Label collided; saving as \"${label}\".`);\n }\n\n const apiKey = await readKeyInput(deps, `API key for ${providerId}/${label}`);\n if (!apiKey) return 1;\n\n await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {\n const p = all[providerId] ?? { type: providerId };\n if (!p.type) p.type = providerId;\n if (!p.family && opts.family) p.family = opts.family;\n if (!p.baseUrl && opts.baseUrl) p.baseUrl = opts.baseUrl;\n if (!p.envVars && opts.envVars) p.envVars = opts.envVars;\n const list = normalizeKeys(p);\n list.push({ label, apiKey, createdAt: nowIso() });\n writeKeysBack(p, list);\n if (!p.activeKey) p.activeKey = label;\n all[providerId] = p;\n }, deps.profileConfigPath);\n\n deps.renderer.writeInfo(`Stored encrypted key for ${providerId} (label \"${label}\").`);\n deps.renderer.writeInfo(`Use: wstack --provider ${providerId} \"<task>\"`);\n return 0;\n}\n", "import { color } from '@wrongstack/core/utils';\nimport { addCustomProvider, addFromCatalog } from './add-provider.js';\nimport { loadProviders } from './helpers.js';\nimport { runAuthLocal } from './local.js';\nimport { runOAuthLoginMenu } from './oauth-menu.js';\nimport { manageProvider } from './provider-menu.js';\nimport { renderTopMenu } from './shared.js';\nimport type { AuthMenuDeps } from './types.js';\n\n/**\n * Interactive auth manager. Shows saved providers + keys, lets the user\n * add/manage providers, and loops until they exit.\n *\n * The legacy single-key `apiKey` field is migrated to `apiKeys[]` lazily\n * on first edit, so users who set up under the old schema upgrade\n * transparently the first time they open this menu.\n */\nexport async function runTopMenu(deps: AuthMenuDeps): Promise<number> {\n for (;;) {\n const providers = await loadProviders(deps);\n renderTopMenu(deps.renderer, providers);\n\n const ids = Object.keys(providers).sort();\n const choice = (await deps.reader.readLine(`\\n${color.amber('?')} Pick: `))\n .trim()\n .toLowerCase();\n\n // Quit\n if (!choice || choice === 'q' || choice === 'quit' || choice === 'exit') {\n deps.renderer.write(color.dim('Done.\\n'));\n return 0;\n }\n\n // Add from catalog\n if (choice === 'a' || choice === 'add') {\n await addFromCatalog(deps);\n continue;\n }\n\n // Add a local server (OmniRoute / Ollama / vLLM / LM Studio)\n if (choice === 'l' || choice === 'local') {\n await runAuthLocal(deps);\n continue;\n }\n\n // Custom provider\n if (choice === 'c' || choice === 'custom') {\n await addCustomProvider(deps);\n continue;\n }\n\n // Sign in with a subscription (OAuth)\n if (choice === 's' || choice === 'signin' || choice === 'login' || choice === 'oauth') {\n await runOAuthLoginMenu(deps);\n continue;\n }\n\n // Numeric selection\n const idx = Number.parseInt(choice, 10);\n if (!Number.isNaN(idx) && idx >= 1 && idx <= ids.length) {\n const pid = ids[idx - 1]!;\n await manageProvider(pid, deps);\n continue;\n }\n\n // Match by provider id directly\n const byId = ids.find((id) => id.toLowerCase() === choice);\n if (byId) {\n await manageProvider(byId, deps);\n continue;\n }\n\n deps.renderer.writeError(`Unknown selection: \"${choice}\"`);\n }\n}\n", "import type { ProviderConfig } from '@wrongstack/core/types';\nimport { color, expectDefined } from '@wrongstack/core/utils';\nimport {\n maskedKey,\n mutateConfigProviders,\n normalizeKeys,\n nowIso,\n writeKeysBack,\n} from '../provider-config-utils.js';\nimport { addKeyForProvider } from './add-provider.js';\nimport { loadProviders } from './helpers.js';\nimport {\n confirm,\n readKeyInput,\n renderActions,\n renderProviderHeader,\n validateFamily,\n} from './shared.js';\nimport type { AuthMenuDeps } from './types.js';\n\n/**\n * Interactive submenu for managing a single provider's keys and settings.\n * Loops until the user goes back or quits.\n */\nexport async function manageProvider(providerId: string, deps: AuthMenuDeps): Promise<void> {\n for (;;) {\n const providers = await loadProviders(deps);\n const cfg = providers[providerId];\n if (!cfg) {\n deps.renderer.writeError(`Provider \"${providerId}\" no longer in config.`);\n return;\n }\n const keys = normalizeKeys(cfg);\n\n renderProviderHeader(deps.renderer, providerId, cfg);\n renderActions(deps.renderer, keys.length);\n\n const raw = (await deps.reader.readLine(`\\n${color.amber('?')} ${providerId} > `)).trim();\n\n if (!raw || raw === 'b' || raw === 'back' || raw === 'q' || raw === 'quit') {\n return;\n }\n\n const [verb = '', argRaw = ''] = raw.split(/\\s+/, 2);\n const arg = argRaw ? Number.parseInt(argRaw, 10) : Number.NaN;\n\n const handled = await dispatchAction(verb, arg, providerId, keys, cfg, deps);\n if (handled === 'exit') return;\n if (handled === 'continue') continue;\n // Unknown command \u2014 error message already printed\n }\n}\n\ntype ActionResult = 'continue' | 'exit' | 'unknown' | void;\n\nasync function dispatchAction(\n verb: string,\n arg: number,\n providerId: string,\n keys: ReturnType<typeof normalizeKeys>,\n cfg: ProviderConfig,\n deps: AuthMenuDeps,\n): Promise<ActionResult> {\n // --- Add another key ---\n if (verb === 'a' || verb === 'add') {\n await addKeyForProvider(providerId, deps, cfg);\n return 'continue';\n }\n\n // --- Remove provider ---\n if (verb === 'x' || verb === 'remove') {\n const answer = await confirm(\n deps,\n `Remove provider \"${providerId}\" and ${keys.length} key(s)?`,\n );\n if (answer === null) return 'continue'; // cancelled\n if (answer) {\n await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {\n delete all[providerId];\n }, deps.profileConfigPath);\n deps.renderer.write(` ${color.green('\u2713')} Removed ${providerId}.\\n`);\n return 'exit';\n }\n return 'continue';\n }\n\n // --- Update key ---\n if (verb === 'u' || verb === 'update') {\n if (!validKeyIndex(arg, keys.length, deps, 'u')) return 'continue';\n const target = expectDefined(keys[arg - 1]);\n const newKey = await readKeyInput(deps, `New key for ${target.label}`);\n if (!newKey) return 'continue';\n await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {\n const p = all[providerId];\n if (!p) return;\n const list = normalizeKeys(p).map((k) =>\n k.label === target.label ? { ...k, apiKey: newKey, createdAt: nowIso() } : k,\n );\n writeKeysBack(p, list);\n }, deps.profileConfigPath);\n deps.renderer.write(` ${color.green('\u2713')} Updated ${providerId}/${target.label}.\\n`);\n return 'continue';\n }\n\n // --- Delete key ---\n if (verb === 'd' || verb === 'delete' || verb === 'rm') {\n if (!validKeyIndex(arg, keys.length, deps, 'd')) return 'continue';\n const target = expectDefined(keys[arg - 1]);\n const answer = await confirm(\n deps,\n `Delete key \"${target.label}\" (${maskedKey(target.apiKey)})?`,\n );\n if (answer === null) return 'continue'; // cancelled\n if (!answer) return 'continue'; // declined\n await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {\n const p = all[providerId];\n if (!p) return;\n const list = normalizeKeys(p).filter((k) => k.label !== target.label);\n writeKeysBack(p, list);\n if (p.activeKey === target.label) {\n p.activeKey = list[0]?.label;\n }\n }, deps.profileConfigPath);\n deps.renderer.write(` ${color.green('\u2713')} Deleted ${providerId}/${target.label}.\\n`);\n return 'continue';\n }\n\n // --- Set active key ---\n if (verb === 's' || verb === 'set' || verb === 'active') {\n if (!validKeyIndex(arg, keys.length, deps, 's')) return 'continue';\n const target = expectDefined(keys[arg - 1]);\n await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {\n const p = all[providerId];\n if (!p) return;\n const list = normalizeKeys(p);\n writeKeysBack(p, list);\n p.activeKey = target.label;\n }, deps.profileConfigPath);\n deps.renderer.write(` ${color.green('\u2713')} Active key \u2192 ${color.bold(target.label)}.\\n`);\n return 'continue';\n }\n\n // --- Edit family ---\n if (verb === 'f' || verb === 'family') {\n const current = cfg.family ?? '';\n const ans = (\n await deps.reader.readLine(\n ` ${color.amber('?')} Family ${color.dim(`(anthropic | openai | openai-compatible | google, empty = unset, current: ${current || 'unset'})`)}: `,\n )\n ).trim();\n if (ans !== '') {\n const validated = validateFamily(ans);\n if (!validated) {\n deps.renderer.writeError(\n `Invalid family: \"${ans}\". Must be one of: anthropic, openai, openai-compatible, google.`,\n );\n return 'continue';\n }\n await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {\n const p = all[providerId];\n if (!p) return;\n p.family = validated;\n }, deps.profileConfigPath);\n deps.renderer.write(` ${color.green('\u2713')} family \u2192 ${validated}\\n`);\n } else {\n await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {\n const p = all[providerId];\n if (!p) return;\n delete p.family;\n }, deps.profileConfigPath);\n deps.renderer.write(` ${color.green('\u2713')} family \u2192 (unset)\\n`);\n }\n return 'continue';\n }\n\n // --- Edit baseUrl ---\n // `B` is capitalised because bare `b` is \"back\" \u2014 accept the spelled-out\n // forms too so a user who types `b`, sees the menu close, and reaches for\n // the obvious word doesn't have to guess the shift key.\n if (verb === 'B' || verb === 'baseurl' || verb === 'base-url' || verb === 'url') {\n const current = cfg.baseUrl ?? '';\n const ans = (\n await deps.reader.readLine(\n ` ${color.amber('?')} Base URL ${color.dim(`(empty = unset, current: ${current || 'unset'})`)}: `,\n )\n ).trim();\n await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {\n const p = all[providerId];\n if (!p) return;\n if (ans === '') delete p.baseUrl;\n else p.baseUrl = ans;\n }, deps.profileConfigPath);\n deps.renderer.write(` ${color.green('\u2713')} baseUrl \u2192 ${ans || '(unset)'}\\n`);\n return 'continue';\n }\n\n // --- Edit models ---\n if (verb === 'm' || verb === 'models') {\n const current = (cfg.models ?? []).join(', ');\n const ans = (\n await deps.reader.readLine(\n ` ${color.amber('?')} Model ids ${color.dim(`(comma-separated, empty = catalog default, current: ${current || 'none'})`)}: `,\n )\n ).trim();\n const list = ans\n ? ans\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean)\n : [];\n await mutateConfigProviders(deps.profileConfigPath, deps.vault, (all) => {\n const p = all[providerId];\n if (!p) return;\n if (list.length === 0) delete p.models;\n else p.models = list;\n }, deps.profileConfigPath);\n deps.renderer.write(\n ` ${color.green('\u2713')} models \u2192 ${list.length === 0 ? '(catalog default)' : list.join(', ')}\\n`,\n );\n return 'continue';\n }\n\n // --- Unknown ---\n deps.renderer.writeError(`Unknown action: \"${verb}\". Type b for back or q to quit.`);\n return 'unknown';\n}\n\nfunction validKeyIndex(\n arg: number,\n max: number,\n deps: { renderer: AuthMenuDeps['renderer'] },\n verb: string,\n): boolean {\n if (!Number.isFinite(arg) || arg < 1 || arg > max) {\n deps.renderer.writeError(`Usage: ${verb} <1-${max}>`);\n return false;\n }\n return true;\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,SAAAA,cAAa;;;ACgBtB,eAAsB,cACpB,MACA,MAOiB;AACjB,QAAM,EAAE,WAAW,IAAI;AACvB,QAAM,YAAY,MAAM,cAAc,IAAI;AAC1C,QAAM,WAAW,UAAU,UAAU;AAErC,MAAI,CAAC,YAAY,CAAC,KAAK,QAAQ;AAE7B,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AACF,YAAM,IAAI,MAAM,KAAK,eAAe,YAAY,UAAU;AAC1D,UAAI,GAAG;AACL,sBAAc,EAAE;AAChB,oBAAY,EAAE;AACd,mBAAW,EAAE;AAAA,MACf;AAAA,IACF,QAAQ;AAAA,IAER;AACA,QAAI,CAAC,eAAe,gBAAgB,eAAe;AACjD,WAAK,SAAS;AAAA,QACZ,aAAa,UAAU;AAAA,MACzB;AACA,aAAO;AAAA,IACT;AACA,SAAK,SAAS;AACd,SAAK,YAAY;AACjB,SAAK,YAAY;AAAA,EACnB;AAEA,QAAM,aAAa,IAAI,IAAI,WAAW,cAAc,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,CAAC;AACtF,MAAI,QAAQ,KAAK,SAAS;AAC1B,MAAI,WAAW,IAAI,KAAK,GAAG;AACzB,QAAI,IAAI;AACR,WAAO,WAAW,IAAI,GAAG,KAAK,IAAI,CAAC,EAAE,EAAG;AACxC,YAAQ,GAAG,KAAK,IAAI,CAAC;AACrB,SAAK,SAAS,UAAU,8BAA8B,KAAK,IAAI;AAAA,EACjE;AAEA,QAAM,SAAS,MAAM,aAAa,MAAM,eAAe,UAAU,IAAI,KAAK,EAAE;AAC5E,MAAI,CAAC,OAAQ,QAAO;AAEpB,QAAM,sBAAsB,KAAK,mBAAmB,KAAK,OAAO,CAAC,QAAQ;AACvE,UAAM,IAAI,IAAI,UAAU,KAAK,EAAE,MAAM,WAAW;AAChD,QAAI,CAAC,EAAE,KAAM,GAAE,OAAO;AACtB,QAAI,CAAC,EAAE,UAAU,KAAK,OAAQ,GAAE,SAAS,KAAK;AAC9C,QAAI,CAAC,EAAE,WAAW,KAAK,QAAS,GAAE,UAAU,KAAK;AACjD,QAAI,CAAC,EAAE,WAAW,KAAK,QAAS,GAAE,UAAU,KAAK;AACjD,UAAM,OAAO,cAAc,CAAC;AAC5B,SAAK,KAAK,EAAE,OAAO,QAAQ,WAAW,OAAO,EAAE,CAAC;AAChD,kBAAc,GAAG,IAAI;AACrB,QAAI,CAAC,EAAE,UAAW,GAAE,YAAY;AAChC,QAAI,UAAU,IAAI;AAAA,EACpB,GAAG,KAAK,iBAAiB;AAEzB,OAAK,SAAS,UAAU,4BAA4B,UAAU,YAAY,KAAK,KAAK;AACpF,OAAK,SAAS,UAAU,0BAA0B,UAAU,WAAW;AACvE,SAAO;AACT;;;ACpFA,SAAS,SAAAC,cAAa;;;ACCtB,SAAS,OAAO,qBAAqB;AAuBrC,eAAsB,eAAe,YAAoB,MAAmC;AAC1F,aAAS;AACP,UAAM,YAAY,MAAM,cAAc,IAAI;AAC1C,UAAM,MAAM,UAAU,UAAU;AAChC,QAAI,CAAC,KAAK;AACR,WAAK,SAAS,WAAW,aAAa,UAAU,wBAAwB;AACxE;AAAA,IACF;AACA,UAAM,OAAO,cAAc,GAAG;AAE9B,yBAAqB,KAAK,UAAU,YAAY,GAAG;AACnD,kBAAc,KAAK,UAAU,KAAK,MAAM;AAExC,UAAM,OAAO,MAAM,KAAK,OAAO,SAAS;AAAA,EAAK,MAAM,MAAM,GAAG,CAAC,IAAI,UAAU,KAAK,GAAG,KAAK;AAExF,QAAI,CAAC,OAAO,QAAQ,OAAO,QAAQ,UAAU,QAAQ,OAAO,QAAQ,QAAQ;AAC1E;AAAA,IACF;AAEA,UAAM,CAAC,OAAO,IAAI,SAAS,EAAE,IAAI,IAAI,MAAM,OAAO,CAAC;AACnD,UAAM,MAAM,SAAS,OAAO,SAAS,QAAQ,EAAE,IAAI,OAAO;AAE1D,UAAM,UAAU,MAAM,eAAe,MAAM,KAAK,YAAY,MAAM,KAAK,IAAI;AAC3E,QAAI,YAAY,OAAQ;AACxB,QAAI,YAAY,WAAY;AAAA,EAE9B;AACF;AAIA,eAAe,eACb,MACA,KACA,YACA,MACA,KACA,MACuB;AAEvB,MAAI,SAAS,OAAO,SAAS,OAAO;AAClC,UAAM,kBAAkB,YAAY,MAAM,GAAG;AAC7C,WAAO;AAAA,EACT;AAGA,MAAI,SAAS,OAAO,SAAS,UAAU;AACrC,UAAM,SAAS,MAAM;AAAA,MACnB;AAAA,MACA,oBAAoB,UAAU,SAAS,KAAK,MAAM;AAAA,IACpD;AACA,QAAI,WAAW,KAAM,QAAO;AAC5B,QAAI,QAAQ;AACV,YAAM,sBAAsB,KAAK,mBAAmB,KAAK,OAAO,CAAC,QAAQ;AACvE,eAAO,IAAI,UAAU;AAAA,MACvB,GAAG,KAAK,iBAAiB;AACzB,WAAK,SAAS,MAAM,KAAK,MAAM,MAAM,QAAG,CAAC,YAAY,UAAU;AAAA,CAAK;AACpE,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAGA,MAAI,SAAS,OAAO,SAAS,UAAU;AACrC,QAAI,CAAC,cAAc,KAAK,KAAK,QAAQ,MAAM,GAAG,EAAG,QAAO;AACxD,UAAM,SAAS,cAAc,KAAK,MAAM,CAAC,CAAC;AAC1C,UAAM,SAAS,MAAM,aAAa,MAAM,eAAe,OAAO,KAAK,EAAE;AACrE,QAAI,CAAC,OAAQ,QAAO;AACpB,UAAM,sBAAsB,KAAK,mBAAmB,KAAK,OAAO,CAAC,QAAQ;AACvE,YAAM,IAAI,IAAI,UAAU;AACxB,UAAI,CAAC,EAAG;AACR,YAAM,OAAO,cAAc,CAAC,EAAE;AAAA,QAAI,CAAC,MACjC,EAAE,UAAU,OAAO,QAAQ,EAAE,GAAG,GAAG,QAAQ,QAAQ,WAAW,OAAO,EAAE,IAAI;AAAA,MAC7E;AACA,oBAAc,GAAG,IAAI;AAAA,IACvB,GAAG,KAAK,iBAAiB;AACzB,SAAK,SAAS,MAAM,KAAK,MAAM,MAAM,QAAG,CAAC,YAAY,UAAU,IAAI,OAAO,KAAK;AAAA,CAAK;AACpF,WAAO;AAAA,EACT;AAGA,MAAI,SAAS,OAAO,SAAS,YAAY,SAAS,MAAM;AACtD,QAAI,CAAC,cAAc,KAAK,KAAK,QAAQ,MAAM,GAAG,EAAG,QAAO;AACxD,UAAM,SAAS,cAAc,KAAK,MAAM,CAAC,CAAC;AAC1C,UAAM,SAAS,MAAM;AAAA,MACnB;AAAA,MACA,eAAe,OAAO,KAAK,MAAM,UAAU,OAAO,MAAM,CAAC;AAAA,IAC3D;AACA,QAAI,WAAW,KAAM,QAAO;AAC5B,QAAI,CAAC,OAAQ,QAAO;AACpB,UAAM,sBAAsB,KAAK,mBAAmB,KAAK,OAAO,CAAC,QAAQ;AACvE,YAAM,IAAI,IAAI,UAAU;AACxB,UAAI,CAAC,EAAG;AACR,YAAM,OAAO,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,OAAO,KAAK;AACpE,oBAAc,GAAG,IAAI;AACrB,UAAI,EAAE,cAAc,OAAO,OAAO;AAChC,UAAE,YAAY,KAAK,CAAC,GAAG;AAAA,MACzB;AAAA,IACF,GAAG,KAAK,iBAAiB;AACzB,SAAK,SAAS,MAAM,KAAK,MAAM,MAAM,QAAG,CAAC,YAAY,UAAU,IAAI,OAAO,KAAK;AAAA,CAAK;AACpF,WAAO;AAAA,EACT;AAGA,MAAI,SAAS,OAAO,SAAS,SAAS,SAAS,UAAU;AACvD,QAAI,CAAC,cAAc,KAAK,KAAK,QAAQ,MAAM,GAAG,EAAG,QAAO;AACxD,UAAM,SAAS,cAAc,KAAK,MAAM,CAAC,CAAC;AAC1C,UAAM,sBAAsB,KAAK,mBAAmB,KAAK,OAAO,CAAC,QAAQ;AACvE,YAAM,IAAI,IAAI,UAAU;AACxB,UAAI,CAAC,EAAG;AACR,YAAM,OAAO,cAAc,CAAC;AAC5B,oBAAc,GAAG,IAAI;AACrB,QAAE,YAAY,OAAO;AAAA,IACvB,GAAG,KAAK,iBAAiB;AACzB,SAAK,SAAS,MAAM,KAAK,MAAM,MAAM,QAAG,CAAC,sBAAiB,MAAM,KAAK,OAAO,KAAK,CAAC;AAAA,CAAK;AACvF,WAAO;AAAA,EACT;AAGA,MAAI,SAAS,OAAO,SAAS,UAAU;AACrC,UAAM,UAAU,IAAI,UAAU;AAC9B,UAAM,OACJ,MAAM,KAAK,OAAO;AAAA,MAChB,KAAK,MAAM,MAAM,GAAG,CAAC,WAAW,MAAM,IAAI,6EAA6E,WAAW,OAAO,GAAG,CAAC;AAAA,IAC/I,GACA,KAAK;AACP,QAAI,QAAQ,IAAI;AACd,YAAM,YAAY,eAAe,GAAG;AACpC,UAAI,CAAC,WAAW;AACd,aAAK,SAAS;AAAA,UACZ,oBAAoB,GAAG;AAAA,QACzB;AACA,eAAO;AAAA,MACT;AACA,YAAM,sBAAsB,KAAK,mBAAmB,KAAK,OAAO,CAAC,QAAQ;AACvE,cAAM,IAAI,IAAI,UAAU;AACxB,YAAI,CAAC,EAAG;AACR,UAAE,SAAS;AAAA,MACb,GAAG,KAAK,iBAAiB;AACzB,WAAK,SAAS,MAAM,KAAK,MAAM,MAAM,QAAG,CAAC,kBAAa,SAAS;AAAA,CAAI;AAAA,IACrE,OAAO;AACL,YAAM,sBAAsB,KAAK,mBAAmB,KAAK,OAAO,CAAC,QAAQ;AACvE,cAAM,IAAI,IAAI,UAAU;AACxB,YAAI,CAAC,EAAG;AACR,eAAO,EAAE;AAAA,MACX,GAAG,KAAK,iBAAiB;AACzB,WAAK,SAAS,MAAM,KAAK,MAAM,MAAM,QAAG,CAAC;AAAA,CAAqB;AAAA,IAChE;AACA,WAAO;AAAA,EACT;AAMA,MAAI,SAAS,OAAO,SAAS,aAAa,SAAS,cAAc,SAAS,OAAO;AAC/E,UAAM,UAAU,IAAI,WAAW;AAC/B,UAAM,OACJ,MAAM,KAAK,OAAO;AAAA,MAChB,KAAK,MAAM,MAAM,GAAG,CAAC,aAAa,MAAM,IAAI,4BAA4B,WAAW,OAAO,GAAG,CAAC;AAAA,IAChG,GACA,KAAK;AACL,UAAM,sBAAsB,KAAK,mBAAmB,KAAK,OAAO,CAAC,QAAQ;AACzE,YAAM,IAAI,IAAI,UAAU;AACxB,UAAI,CAAC,EAAG;AACR,UAAI,QAAQ,GAAI,QAAO,EAAE;AAAA,UACpB,GAAE,UAAU;AAAA,IACnB,GAAG,KAAK,iBAAiB;AACzB,SAAK,SAAS,MAAM,KAAK,MAAM,MAAM,QAAG,CAAC,mBAAc,OAAO,SAAS;AAAA,CAAI;AAC3E,WAAO;AAAA,EACT;AAGA,MAAI,SAAS,OAAO,SAAS,UAAU;AACrC,UAAM,WAAW,IAAI,UAAU,CAAC,GAAG,KAAK,IAAI;AAC5C,UAAM,OACJ,MAAM,KAAK,OAAO;AAAA,MAChB,KAAK,MAAM,MAAM,GAAG,CAAC,cAAc,MAAM,IAAI,uDAAuD,WAAW,MAAM,GAAG,CAAC;AAAA,IAC3H,GACA,KAAK;AACP,UAAM,OAAO,MACT,IACG,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EACnB,OAAO,OAAO,IACjB,CAAC;AACL,UAAM,sBAAsB,KAAK,mBAAmB,KAAK,OAAO,CAAC,QAAQ;AACvE,YAAM,IAAI,IAAI,UAAU;AACxB,UAAI,CAAC,EAAG;AACR,UAAI,KAAK,WAAW,EAAG,QAAO,EAAE;AAAA,UAC3B,GAAE,SAAS;AAAA,IAClB,GAAG,KAAK,iBAAiB;AACzB,SAAK,SAAS;AAAA,MACZ,KAAK,MAAM,MAAM,QAAG,CAAC,kBAAa,KAAK,WAAW,IAAI,sBAAsB,KAAK,KAAK,IAAI,CAAC;AAAA;AAAA,IAC7F;AACA,WAAO;AAAA,EACT;AAGA,OAAK,SAAS,WAAW,oBAAoB,IAAI,kCAAkC;AACnF,SAAO;AACT;AAEA,SAAS,cACP,KACA,KACA,MACA,MACS;AACT,MAAI,CAAC,OAAO,SAAS,GAAG,KAAK,MAAM,KAAK,MAAM,KAAK;AACjD,SAAK,SAAS,WAAW,UAAU,IAAI,OAAO,GAAG,GAAG;AACpD,WAAO;AAAA,EACT;AACA,SAAO;AACT;;;AD7NA,eAAsB,WAAW,MAAqC;AACpE,aAAS;AACP,UAAM,YAAY,MAAM,cAAc,IAAI;AAC1C,kBAAc,KAAK,UAAU,SAAS;AAEtC,UAAM,MAAM,OAAO,KAAK,SAAS,EAAE,KAAK;AACxC,UAAM,UAAU,MAAM,KAAK,OAAO,SAAS;AAAA,EAAKC,OAAM,MAAM,GAAG,CAAC,SAAS,GACtE,KAAK,EACL,YAAY;AAGf,QAAI,CAAC,UAAU,WAAW,OAAO,WAAW,UAAU,WAAW,QAAQ;AACvE,WAAK,SAAS,MAAMA,OAAM,IAAI,SAAS,CAAC;AACxC,aAAO;AAAA,IACT;AAGA,QAAI,WAAW,OAAO,WAAW,OAAO;AACtC,YAAM,eAAe,IAAI;AACzB;AAAA,IACF;AAGA,QAAI,WAAW,OAAO,WAAW,SAAS;AACxC,YAAM,aAAa,IAAI;AACvB;AAAA,IACF;AAGA,QAAI,WAAW,OAAO,WAAW,UAAU;AACzC,YAAM,kBAAkB,IAAI;AAC5B;AAAA,IACF;AAGA,QAAI,WAAW,OAAO,WAAW,YAAY,WAAW,WAAW,WAAW,SAAS;AACrF,YAAM,kBAAkB,IAAI;AAC5B;AAAA,IACF;AAGA,UAAM,MAAM,OAAO,SAAS,QAAQ,EAAE;AACtC,QAAI,CAAC,OAAO,MAAM,GAAG,KAAK,OAAO,KAAK,OAAO,IAAI,QAAQ;AACvD,YAAM,MAAM,IAAI,MAAM,CAAC;AACvB,YAAM,eAAe,KAAK,IAAI;AAC9B;AAAA,IACF;AAGA,UAAM,OAAO,IAAI,KAAK,CAAC,OAAO,GAAG,YAAY,MAAM,MAAM;AACzD,QAAI,MAAM;AACR,YAAM,eAAe,MAAM,IAAI;AAC/B;AAAA,IACF;AAEA,SAAK,SAAS,WAAW,uBAAuB,MAAM,GAAG;AAAA,EAC3D;AACF;;;AFxDO,IAAM,UAA6B,OAAO,MAAM,SAAS;AAC9D,QAAM,QAAQ,eAAe,IAAI;AACjC,QAAM,oBAAoB,wBAAwB,KAAK,OAAO,KAAK,MAAM;AACzE,QAAM,WAAyB;AAAA,IAC7B,UAAU,KAAK;AAAA,IACf,QAAQ,KAAK;AAAA,IACb,gBAAgB,KAAK;AAAA,IACrB,OAAO,KAAK;AAAA,IACZ;AAAA,EACF;AAGA,MAAI,MAAM,WAAW,WAAW,GAAG;AACjC,WAAO,WAAY,QAAQ;AAAA,EAC7B;AAEA,QAAM,QAAQ,MAAM,WAAW,CAAC;AAGhC,MAAI,UAAU,UAAU,UAAU,MAAM;AACtC,WAAO,YAAY,QAAQ;AAAA,EAC7B;AAGA,MAAI,UAAU,UAAU;AACtB,UAAM,MAAM,MAAM,WAAW,CAAC;AAC9B,QAAI,CAAC,KAAK;AACR,WAAK,SAAS,WAAW,sCAAsC;AAC/D,aAAO;AAAA,IACT;AACA,WAAO,cAAc,UAAU,GAAG;AAAA,EACpC;AAGA,MAAI,UAAU,YAAY,UAAU,MAAM;AACxC,UAAM,MAAM,MAAM,WAAW,CAAC;AAC9B,QAAI,CAAC,KAAK;AACR,WAAK,SAAS,WAAW,gDAAgD;AACzE,aAAO;AAAA,IACT;AACA,WAAO,cAAc,UAAU,GAAG;AAAA,EACpC;AAOA,MAAI,UAAU,SAAS;AACrB,UAAM,OAAO,MAAM,WAAW,CAAC,KAAK,IAAI,YAAY;AAEpD,QAAI,CAAC,IAAK,QAAO,kBAAkB,UAAU,SAAS;AAGtD,UAAM,OAAO,iBAAiB,KAAK,EAAE,cAAc,MAAM,CAAC;AAC1D,QAAI,KAAM,QAAO,kBAAkB,UAAU,IAAI;AACjD,SAAK,SAAS,WAAW,wEAAwE;AACjG,SAAK,SAAS;AAAA,MACZC,OAAM,IAAI,0BAA0B,IAAIA,OAAM,KAAK,2BAA2B,IAAI,OAChFA,OAAM,IAAI,0BAA0B,IAAIA,OAAM,KAAK,0BAA0B,IAAI,OACjFA,OAAM,IAAI,0BAA0B,IAAIA,OAAM,KAAK,2BAA2B,IAAI,OAClFA,OAAM,IAAI,4BAA4B,IAAIA,OAAM,KAAK,eAAe,GAAG,EAAE,IAAI;AAAA,IACjF;AACA,WAAO;AAAA,EACT;AAGA,SAAO,cAAc,UAAU;AAAA,IAC7B,YAAY;AAAA,IACZ,OAAO,MAAM;AAAA,IACb,QAAQ,MAAM;AAAA,IACd,SAAS,MAAM;AAAA,IACf,SAAS,MAAM;AAAA,EACjB,CAAC;AACH;AAGA,eAAe,YAAY,MAAqC;AAC9D,MAAI;AACJ,MAAI;AACF,gBAAY,MAAM,oBAAoB,KAAK,mBAAmB,KAAK,KAAK;AAAA,EAC1E,SAAS,KAAK;AACZ,SAAK,SAAS,WAAW,0BAA2B,IAAc,OAAO,EAAE;AAC3E,WAAO;AAAA,EACT;AAEA,QAAM,MAAM,OAAO,KAAK,SAAS,EAAE,KAAK;AAExC,MAAI,IAAI,WAAW,GAAG;AACpB,SAAK,SAAS;AAAA,MACZ,GAAGA,OAAM,IAAI,0BAA0B,CAAC;AAAA,EACnCA,OAAM,IAAI,KAAK,CAAC,IAAIA,OAAM,KAAK,aAAa,CAAC,IAAIA,OAAM,IAAI,aAAa,CAAC;AAAA;AAAA,IAChF;AACA,WAAO;AAAA,EACT;AAEA,OAAK,SAAS,MAAM;AAAA,EAAKA,OAAM,KAAK,iBAAiB,CAAC,IAAIA,OAAM,IAAI,IAAI,IAAI,MAAM,GAAG,CAAC;AAAA;AAAA,CAAM;AAE5F,aAAW,MAAM,KAAK;AACpB,UAAM,MAAM,UAAU,EAAE;AAWxB,QAAI,CAAC,IAAK;AAEV,UAAM,OAAO,cAAc,GAA0C;AACrE,UAAM,SAAS,IAAI,aAAa,KAAK,CAAC,GAAG;AACzC,UAAM,SAAS,IAAI,SAAS,GAAG,IAAI,MAAM,KAAKA,OAAM,MAAM,WAAW;AACrE,UAAM,YAAY,IAAI,QAAQ,IAAI,SAAS,KAAKA,OAAM,IAAI,YAAO,IAAI,IAAI,GAAG,IAAI;AAChF,UAAM,YACJ,IAAI,UAAU,IAAI,OAAO,SAAS,IAAIA,OAAM,IAAI,KAAK,IAAI,OAAO,MAAM,UAAU,IAAI;AAEtF,SAAK,SAAS,MAAM,KAAKA,OAAM,KAAK,EAAE,CAAC,GAAG,SAAS;AAAA,CAAI;AACvD,SAAK,SAAS;AAAA,MACZ,gBAAgB,MAAM,cAAc,IAAI,WAAWA,OAAM,IAAI,OAAO,CAAC,GAAG,SAAS;AAAA;AAAA,IACnF;AAEA,QAAI,KAAK,WAAW,GAAG;AACrB,WAAK,SAAS,MAAM,OAAOA,OAAM,MAAM,SAAS,CAAC;AAAA,CAAI;AAAA,IACvD,OAAO;AACL,WAAK,SAAS;AAAA,QACZ,OAAOA,OAAM,IAAI,GAAG,KAAK,MAAM,OAAO,KAAK,WAAW,IAAI,KAAK,GAAG,GAAG,CAAC;AAAA;AAAA,MACxE;AACA,iBAAW,KAAK,MAAM;AACpB,cAAM,SAAS,EAAE,UAAU,SAASA,OAAM,MAAM,QAAG,IAAIA,OAAM,IAAI,QAAG;AACpE,aAAK,SAAS;AAAA,UACZ,SAAS,MAAM,IAAI,EAAE,MAAM,OAAO,EAAE,CAAC,IAAI,UAAU,EAAE,MAAM,CAAC,KAAKA,OAAM,IAAI,EAAE,SAAS,CAAC;AAAA;AAAA,QACzF;AAAA,MACF;AAAA,IACF;AACA,SAAK,SAAS,MAAM,IAAI;AAAA,EAC1B;AAEA,OAAK,SAAS,MAAMA,OAAM,IAAI;AAAA,CAAyD,CAAC;AACxF,SAAO;AACT;AAGA,eAAe,cAAc,MAAoB,YAAqC;AACpF,MAAI;AACJ,MAAI;AACF,gBAAY,MAAM,oBAAoB,KAAK,mBAAmB,KAAK,KAAK;AAAA,EAC1E,SAAS,KAAK;AACZ,SAAK,SAAS,WAAW,0BAA2B,IAAc,OAAO,EAAE;AAC3E,WAAO;AAAA,EACT;AAEA,QAAM,MAAM,UAAU,UAAU;AAahC,MAAI,CAAC,KAAK;AACR,SAAK,SAAS,WAAW,aAAa,UAAU,wBAAwB;AACxE,SAAK,SAAS;AAAA,MACZA,OAAM,IAAI,OAAOA,OAAM,KAAK,kBAAkB,CAAC;AAAA,CAA4B;AAAA,IAC7E;AACA,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,cAAc,GAA0C;AACrE,QAAM,SAAS,IAAI,aAAa,KAAK,CAAC,GAAG;AAEzC,QAAM,QAAkB;AAAA,IACtB;AAAA,EAAKA,OAAM,KAAK,UAAU,CAAC,IAAI,IAAI,SAASA,OAAM,IAAI,IAAI,IAAI,MAAM,GAAG,IAAIA,OAAM,MAAM,aAAa,CAAC;AAAA,IACrG;AAAA,IACA,cAAcA,OAAM,KAAK,IAAI,QAAQ,UAAU,CAAC;AAAA,IAChD,cAAc,IAAI,SAASA,OAAM,KAAK,IAAI,MAAM,IAAIA,OAAM,IAAI,OAAO,CAAC;AAAA,IACtE,cAAc,IAAI,UAAUA,OAAM,KAAK,IAAI,OAAO,IAAIA,OAAM,IAAI,OAAO,CAAC;AAAA,EAC1E;AAEA,MAAI,IAAI,QAAQ,QAAQ;AACtB,UAAM,KAAK,cAAcA,OAAM,KAAK,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,EAAE;AAAA,EAC9D;AACA,MAAI,IAAI,SAAS,QAAQ;AACvB,UAAM,KAAK,cAAcA,OAAM,KAAK,IAAI,QAAQ,KAAK,IAAI,CAAC,CAAC,EAAE;AAAA,EAC/D;AACA,QAAM,KAAK,EAAE;AAEb,MAAI,KAAK,WAAW,GAAG;AACrB,UAAM,KAAKA,OAAM,MAAM,mBAAmB,CAAC;AAAA,EAC7C,OAAO;AACL,UAAM,KAAK,KAAKA,OAAM,IAAI,OAAO,CAAC,EAAE;AACpC,eAAW,KAAK,MAAM;AACpB,YAAM,SAAS,EAAE,UAAU,SAASA,OAAM,MAAM,QAAG,IAAIA,OAAM,IAAI,QAAG;AACpE,YAAM;AAAA,QACJ,OAAO,MAAM,IAAIA,OAAM,KAAK,EAAE,MAAM,OAAO,EAAE,CAAC,CAAC,IAAI,UAAU,EAAE,MAAM,CAAC,KAAKA,OAAM,IAAI,EAAE,SAAS,CAAC;AAAA,MACnG;AAAA,IACF;AAAA,EACF;AAEA,QAAM,KAAK,EAAE;AACb,QAAM,KAAKA,OAAM,IAAI,mCAA8B,UAAU,EAAE,CAAC;AAChE,OAAK,SAAS,MAAM,MAAM,KAAK,IAAI,IAAI,IAAI;AAC3C,SAAO;AACT;AAGA,eAAe,cAAc,MAAoB,YAAqC;AACpF,QAAM,YAAY,MAAM,oBAAoB,KAAK,mBAAmB,KAAK,KAAK;AAC9E,MAAI,CAAC,UAAU,UAAU,GAAG;AAC1B,SAAK,SAAS,WAAW,aAAa,UAAU,cAAc;AAC9D,WAAO;AAAA,EACT;AAGA,OAAK,SAAS;AAAA,IACZ,GAAGA,OAAM,MAAM,GAAG,CAAC,sBAAsB,UAAU;AAAA;AAAA,EACrD;AACA,QAAM,UACJ,MAAM,KAAK,OAAO,SAAS,KAAKA,OAAM,MAAM,GAAG,CAAC,qBAAqBA,OAAM,IAAI,OAAO,CAAC,GAAG,GAEzF,KAAK,EACL,YAAY;AAEf,MAAI,WAAW,OAAO,WAAW,OAAO;AACtC,SAAK,SAAS,MAAMA,OAAM,IAAI,cAAc,CAAC;AAC7C,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,sBAAsB,KAAK,mBAAmB,KAAK,OAAO,CAAC,QAAQ;AACvE,aAAO,IAAI,UAAU;AAAA,IACvB,CAAC;AACD,SAAK,SAAS,MAAM,KAAKA,OAAM,MAAM,QAAG,CAAC,YAAYA,OAAM,KAAK,UAAU,CAAC;AAAA,CAAK;AAChF,WAAO;AAAA,EACT,SAAS,KAAK;AACZ,SAAK,SAAS,WAAW,qBAAsB,IAAc,OAAO,EAAE;AACtE,WAAO;AAAA,EACT;AACF;",
|
|
6
|
+
"names": ["color", "color", "color", "color"]
|
|
7
|
+
}
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* long-running consumer (file rotation, OTLP export) would
|
|
28
28
|
* belong in a dedicated audit-sink module, not here.
|
|
29
29
|
*/
|
|
30
|
-
import {
|
|
30
|
+
import type { SecretScrubber } from '@wrongstack/core/types';
|
|
31
31
|
/**
|
|
32
32
|
* Discriminated union of every event the auth-menu local flow
|
|
33
33
|
* can emit. New events slot in here as the lifecycle grows —
|
|
@@ -99,10 +99,6 @@ export type AuthAuditEvent = {
|
|
|
99
99
|
export interface AuthAuditSink {
|
|
100
100
|
write(line: string): void;
|
|
101
101
|
}
|
|
102
|
-
/** Default sink: one JSON line per event on stdout. */
|
|
103
|
-
export declare function defaultStdoutSink(): AuthAuditSink;
|
|
104
|
-
/** Stderr sink: one JSON line per event on stderr. */
|
|
105
|
-
export declare function defaultStderrSink(): AuthAuditSink;
|
|
106
102
|
/**
|
|
107
103
|
* File sink: appends one JSON line per event to the named
|
|
108
104
|
* path. Uses synchronous append + newline so events are
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-menu-audit.d.ts","sourceRoot":"","sources":["../../src/auth-menu/auth-menu-audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"auth-menu-audit.d.ts","sourceRoot":"","sources":["../../src/auth-menu/auth-menu-audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D;;;;GAIG;AACH,MAAM,MAAM,cAAc,GACtB;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB;sCACkC;IAClC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B,GACD;IACE;;;;;OAKG;IACH,IAAI,EAAE,kBAAkB,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,GACD;IACE;;;;;OAKG;IACH,IAAI,EAAE,iBAAiB,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,GACD;IACE;;;;;;OAMG;IACH,IAAI,EAAE,uBAAuB,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,OAAO,GAAG,MAAM,CAAC;CAClC,GACD;IACE;;;;;OAKG;IACH,IAAI,EAAE,8BAA8B,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC,CAAC;AAEN;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAwBD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAWzD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GACjC,aAAa,GAAG,SAAS,CAa3B;AAED,6DAA6D;AAC7D,wBAAgB,gBAAgB,IAAI,aAAa,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAQtE;AAED,MAAM,WAAW,eAAe;IAC9B;;;wCAGoC;IACpC,IAAI,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;CACnC;AAED,4DAA4D;AAC5D,eAAO,MAAM,iBAAiB,EAAE,eAE/B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,aAAa,GAAG,SAAS,EAC/B,QAAQ,GAAE,cAA4C,GACrD,eAAe,CAYjB;AA0DD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACrC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACpD,eAAe,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CACnE,GAAG,cAAc,EAAE,CA4FnB"}
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
* accidentally captured in a probe log can never echo to the terminal
|
|
25
25
|
* in plaintext.
|
|
26
26
|
*/
|
|
27
|
-
import {
|
|
27
|
+
import type { SecretScrubber } from '@wrongstack/core/types';
|
|
28
28
|
import { LOCAL_LLM_PRESETS, type LocalLlmPresetEntry } from './local-presets.js';
|
|
29
29
|
import { suggestLabel } from './shared.js';
|
|
30
30
|
import type { AuthMenuDeps } from './types.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/auth-menu/local.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../src/auth-menu/local.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAU7D,OAAO,EAAE,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EACL,KAAK,eAAe,EAIrB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,CAAC;AAM9D,OAAO,EAAE,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,CAAC;AAIvD,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,KAAK,GAAG,SAAS,CAAC;IACrC;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;CACrC;AAED;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,YAAY,EAClB,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAiNjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,WAAW,GAAG,SAAS,EAC9B,QAAQ,EAAE,cAAc,GACvB,MAAM,EAAE,GAAG,IAAI,CAoCjB;AAqJD,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ProviderConfig, WireFamily } from '@wrongstack/core/types';
|
|
2
2
|
import type { AuthMenuDeps } from './types.js';
|
|
3
3
|
/** Render the header for the provider management submenu. */
|
|
4
4
|
export declare function renderProviderHeader(renderer: AuthMenuDeps['renderer'], providerId: string, cfg: ProviderConfig): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/auth-menu/shared.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/auth-menu/shared.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,cAAc,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAsC/C,6DAA6D;AAC7D,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,EAClC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,cAAc,GAClB,IAAI,CAgCN;AAgBD,+BAA+B;AAC/B,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAc1F;AAED,wCAAwC;AACxC,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,EAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GACxC,IAAI,CAqCN;AAMD,qEAAqE;AACrE,wBAAsB,YAAY,CAChC,IAAI,EAAE;IAAE,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,CAAA;CAAE,EAC5E,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAW7B;AAED;;;;;GAKG;AACH,wBAAsB,OAAO,CAC3B,IAAI,EAAE;IAAE,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAAC,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,CAAA;CAAE,EAC5E,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAQzB;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAM5D;AAED,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAG7D"}
|