@kaitranntt/ccs 8.2.0 → 8.3.0-dev.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/README.md +12 -0
- package/config/base-claude.settings.json +1 -5
- package/dist/api/services/cliproxy-profile-bridge.d.ts.map +1 -1
- package/dist/api/services/cliproxy-profile-bridge.js +6 -0
- package/dist/api/services/cliproxy-profile-bridge.js.map +1 -1
- package/dist/api/services/profile-writer.d.ts.map +1 -1
- package/dist/api/services/profile-writer.js +18 -8
- package/dist/api/services/profile-writer.js.map +1 -1
- package/dist/auth/commands/create-command.d.ts.map +1 -1
- package/dist/auth/commands/create-command.js +11 -0
- package/dist/auth/commands/create-command.js.map +1 -1
- package/dist/cliproxy/accounts/account-safety-cross-lane.d.ts +41 -0
- package/dist/cliproxy/accounts/account-safety-cross-lane.d.ts.map +1 -0
- package/dist/cliproxy/accounts/account-safety-cross-lane.js +177 -0
- package/dist/cliproxy/accounts/account-safety-cross-lane.js.map +1 -0
- package/dist/cliproxy/accounts/account-safety.d.ts +29 -1
- package/dist/cliproxy/accounts/account-safety.d.ts.map +1 -1
- package/dist/cliproxy/accounts/account-safety.js +41 -7
- package/dist/cliproxy/accounts/account-safety.js.map +1 -1
- package/dist/cliproxy/accounts/drain-order.d.ts +277 -0
- package/dist/cliproxy/accounts/drain-order.d.ts.map +1 -0
- package/dist/cliproxy/accounts/drain-order.js +575 -0
- package/dist/cliproxy/accounts/drain-order.js.map +1 -0
- package/dist/cliproxy/accounts/pool-state.d.ts +132 -0
- package/dist/cliproxy/accounts/pool-state.d.ts.map +1 -0
- package/dist/cliproxy/accounts/pool-state.js +201 -0
- package/dist/cliproxy/accounts/pool-state.js.map +1 -0
- package/dist/cliproxy/accounts/registry.d.ts +17 -1
- package/dist/cliproxy/accounts/registry.d.ts.map +1 -1
- package/dist/cliproxy/accounts/registry.js +47 -1
- package/dist/cliproxy/accounts/registry.js.map +1 -1
- package/dist/cliproxy/accounts/types.d.ts +20 -0
- package/dist/cliproxy/accounts/types.d.ts.map +1 -1
- package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
- package/dist/cliproxy/auth/oauth-handler.js +29 -0
- package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
- package/dist/cliproxy/binary/platform-detector.d.ts.map +1 -1
- package/dist/cliproxy/binary/platform-detector.js +34 -1
- package/dist/cliproxy/binary/platform-detector.js.map +1 -1
- package/dist/cliproxy/binary/types.d.ts +3 -0
- package/dist/cliproxy/binary/types.d.ts.map +1 -1
- package/dist/cliproxy/binary/types.js +7 -2
- package/dist/cliproxy/binary/types.js.map +1 -1
- package/dist/cliproxy/binary/version-cache.d.ts.map +1 -1
- package/dist/cliproxy/binary/version-cache.js +4 -0
- package/dist/cliproxy/binary/version-cache.js.map +1 -1
- package/dist/cliproxy/claude-shadow-warning.d.ts +39 -0
- package/dist/cliproxy/claude-shadow-warning.d.ts.map +1 -0
- package/dist/cliproxy/claude-shadow-warning.js +187 -0
- package/dist/cliproxy/claude-shadow-warning.js.map +1 -0
- package/dist/cliproxy/config/base-config-loader.d.ts +6 -5
- package/dist/cliproxy/config/base-config-loader.d.ts.map +1 -1
- package/dist/cliproxy/config/base-config-loader.js +19 -12
- package/dist/cliproxy/config/base-config-loader.js.map +1 -1
- package/dist/cliproxy/config/env-builder.d.ts +3 -0
- package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
- package/dist/cliproxy/config/env-builder.js +158 -20
- package/dist/cliproxy/config/env-builder.js.map +1 -1
- package/dist/cliproxy/config/generator.d.ts +2 -1
- package/dist/cliproxy/config/generator.d.ts.map +1 -1
- package/dist/cliproxy/config/generator.js +66 -9
- package/dist/cliproxy/config/generator.js.map +1 -1
- package/dist/cliproxy/config/thinking-config.d.ts.map +1 -1
- package/dist/cliproxy/config/thinking-config.js +2 -0
- package/dist/cliproxy/config/thinking-config.js.map +1 -1
- package/dist/cliproxy/executor/account-resolution.d.ts.map +1 -1
- package/dist/cliproxy/executor/account-resolution.js +5 -0
- package/dist/cliproxy/executor/account-resolution.js.map +1 -1
- package/dist/cliproxy/executor/auth-coordinator.d.ts +4 -0
- package/dist/cliproxy/executor/auth-coordinator.d.ts.map +1 -1
- package/dist/cliproxy/executor/auth-coordinator.js +5 -1
- package/dist/cliproxy/executor/auth-coordinator.js.map +1 -1
- package/dist/cliproxy/executor/index.d.ts.map +1 -1
- package/dist/cliproxy/executor/index.js +20 -0
- package/dist/cliproxy/executor/index.js.map +1 -1
- package/dist/cliproxy/model-catalog.d.ts.map +1 -1
- package/dist/cliproxy/model-catalog.js +15 -0
- package/dist/cliproxy/model-catalog.js.map +1 -1
- package/dist/cliproxy/proxy/upstream-response-timeout.d.ts.map +1 -1
- package/dist/cliproxy/proxy/upstream-response-timeout.js +8 -1
- package/dist/cliproxy/proxy/upstream-response-timeout.js.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-claude.d.ts +9 -0
- package/dist/cliproxy/quota/quota-fetcher-claude.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher-claude.js +53 -16
- package/dist/cliproxy/quota/quota-fetcher-claude.js.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-fetcher.js +4 -0
- package/dist/cliproxy/quota/quota-fetcher.js.map +1 -1
- package/dist/cliproxy/quota/quota-manager.d.ts +7 -0
- package/dist/cliproxy/quota/quota-manager.d.ts.map +1 -1
- package/dist/cliproxy/quota/quota-manager.js +51 -2
- package/dist/cliproxy/quota/quota-manager.js.map +1 -1
- package/dist/cliproxy/routing/pool-onboarding-hint.d.ts +95 -0
- package/dist/cliproxy/routing/pool-onboarding-hint.d.ts.map +1 -0
- package/dist/cliproxy/routing/pool-onboarding-hint.js +172 -0
- package/dist/cliproxy/routing/pool-onboarding-hint.js.map +1 -0
- package/dist/cliproxy/routing/pool-opt-in-prompt.d.ts +50 -0
- package/dist/cliproxy/routing/pool-opt-in-prompt.d.ts.map +1 -0
- package/dist/cliproxy/routing/pool-opt-in-prompt.js +232 -0
- package/dist/cliproxy/routing/pool-opt-in-prompt.js.map +1 -0
- package/dist/cliproxy/routing/routing-strategy.d.ts +132 -0
- package/dist/cliproxy/routing/routing-strategy.d.ts.map +1 -1
- package/dist/cliproxy/routing/routing-strategy.js +342 -5
- package/dist/cliproxy/routing/routing-strategy.js.map +1 -1
- package/dist/cliproxy/services/stats-fetcher.d.ts +13 -0
- package/dist/cliproxy/services/stats-fetcher.d.ts.map +1 -1
- package/dist/cliproxy/services/stats-fetcher.js +25 -1
- package/dist/cliproxy/services/stats-fetcher.js.map +1 -1
- package/dist/commands/bar/bar-paths.d.ts +32 -0
- package/dist/commands/bar/bar-paths.d.ts.map +1 -0
- package/dist/commands/bar/bar-paths.js +62 -0
- package/dist/commands/bar/bar-paths.js.map +1 -0
- package/dist/commands/bar/bar-server-probe.d.ts +27 -0
- package/dist/commands/bar/bar-server-probe.d.ts.map +1 -0
- package/dist/commands/bar/bar-server-probe.js +94 -0
- package/dist/commands/bar/bar-server-probe.js.map +1 -0
- package/dist/commands/bar/help-subcommand.d.ts +2 -0
- package/dist/commands/bar/help-subcommand.d.ts.map +1 -0
- package/dist/commands/bar/help-subcommand.js +69 -0
- package/dist/commands/bar/help-subcommand.js.map +1 -0
- package/dist/commands/bar/index.d.ts +12 -0
- package/dist/commands/bar/index.d.ts.map +1 -0
- package/dist/commands/bar/index.js +93 -0
- package/dist/commands/bar/index.js.map +1 -0
- package/dist/commands/bar/install-subcommand.d.ts +100 -0
- package/dist/commands/bar/install-subcommand.d.ts.map +1 -0
- package/dist/commands/bar/install-subcommand.js +629 -0
- package/dist/commands/bar/install-subcommand.js.map +1 -0
- package/dist/commands/bar/launch-subcommand.d.ts +66 -0
- package/dist/commands/bar/launch-subcommand.d.ts.map +1 -0
- package/dist/commands/bar/launch-subcommand.js +257 -0
- package/dist/commands/bar/launch-subcommand.js.map +1 -0
- package/dist/commands/bar/serve-subcommand.d.ts +47 -0
- package/dist/commands/bar/serve-subcommand.d.ts.map +1 -0
- package/dist/commands/bar/serve-subcommand.js +192 -0
- package/dist/commands/bar/serve-subcommand.js.map +1 -0
- package/dist/commands/bar/status-subcommand.d.ts +32 -0
- package/dist/commands/bar/status-subcommand.d.ts.map +1 -0
- package/dist/commands/bar/status-subcommand.js +128 -0
- package/dist/commands/bar/status-subcommand.js.map +1 -0
- package/dist/commands/bar/stop-subcommand.d.ts +24 -0
- package/dist/commands/bar/stop-subcommand.d.ts.map +1 -0
- package/dist/commands/bar/stop-subcommand.js +107 -0
- package/dist/commands/bar/stop-subcommand.js.map +1 -0
- package/dist/commands/bar/uninstall-subcommand.d.ts +13 -0
- package/dist/commands/bar/uninstall-subcommand.d.ts.map +1 -0
- package/dist/commands/bar/uninstall-subcommand.js +78 -0
- package/dist/commands/bar/uninstall-subcommand.js.map +1 -0
- package/dist/commands/bar/version-subcommand.d.ts +8 -0
- package/dist/commands/bar/version-subcommand.d.ts.map +1 -0
- package/dist/commands/bar/version-subcommand.js +62 -0
- package/dist/commands/bar/version-subcommand.js.map +1 -0
- package/dist/commands/cliproxy/help-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/help-subcommand.js +20 -1
- package/dist/commands/cliproxy/help-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/index.d.ts.map +1 -1
- package/dist/commands/cliproxy/index.js +20 -0
- package/dist/commands/cliproxy/index.js.map +1 -1
- package/dist/commands/cliproxy/order-subcommand.d.ts +16 -0
- package/dist/commands/cliproxy/order-subcommand.d.ts.map +1 -0
- package/dist/commands/cliproxy/order-subcommand.js +520 -0
- package/dist/commands/cliproxy/order-subcommand.js.map +1 -0
- package/dist/commands/cliproxy/pool-state-renderer.d.ts +40 -0
- package/dist/commands/cliproxy/pool-state-renderer.d.ts.map +1 -0
- package/dist/commands/cliproxy/pool-state-renderer.js +220 -0
- package/dist/commands/cliproxy/pool-state-renderer.js.map +1 -0
- package/dist/commands/cliproxy/pool-subcommand.d.ts +10 -0
- package/dist/commands/cliproxy/pool-subcommand.d.ts.map +1 -0
- package/dist/commands/cliproxy/pool-subcommand.js +112 -0
- package/dist/commands/cliproxy/pool-subcommand.js.map +1 -0
- package/dist/commands/cliproxy/quota-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/quota-subcommand.js +7 -0
- package/dist/commands/cliproxy/quota-subcommand.js.map +1 -1
- package/dist/commands/cliproxy/routing-subcommand.d.ts.map +1 -1
- package/dist/commands/cliproxy/routing-subcommand.js +19 -0
- package/dist/commands/cliproxy/routing-subcommand.js.map +1 -1
- package/dist/commands/command-catalog.d.ts.map +1 -1
- package/dist/commands/command-catalog.js +7 -0
- package/dist/commands/command-catalog.js.map +1 -1
- package/dist/commands/help-command.d.ts.map +1 -1
- package/dist/commands/help-command.js +6 -1
- package/dist/commands/help-command.js.map +1 -1
- package/dist/commands/root-command-router.d.ts.map +1 -1
- package/dist/commands/root-command-router.js +7 -0
- package/dist/commands/root-command-router.js.map +1 -1
- package/dist/config/loader/yaml-serializer.d.ts.map +1 -1
- package/dist/config/loader/yaml-serializer.js +13 -0
- package/dist/config/loader/yaml-serializer.js.map +1 -1
- package/dist/config/schemas/cliproxy.d.ts +37 -0
- package/dist/config/schemas/cliproxy.d.ts.map +1 -1
- package/dist/config/schemas/quota.d.ts +26 -2
- package/dist/config/schemas/quota.d.ts.map +1 -1
- package/dist/config/schemas/quota.js +20 -1
- package/dist/config/schemas/quota.js.map +1 -1
- package/dist/config/unified-config-loader.d.ts.map +1 -1
- package/dist/config/unified-config-loader.js +3 -0
- package/dist/config/unified-config-loader.js.map +1 -1
- package/dist/dispatcher/flows/account-flow.d.ts.map +1 -1
- package/dist/dispatcher/flows/account-flow.js +9 -0
- package/dist/dispatcher/flows/account-flow.js.map +1 -1
- package/dist/glmt/delta-accumulator.d.ts.map +1 -1
- package/dist/glmt/delta-accumulator.js +1 -0
- package/dist/glmt/delta-accumulator.js.map +1 -1
- package/dist/management/doctor.d.ts.map +1 -1
- package/dist/management/doctor.js +10 -0
- package/dist/management/doctor.js.map +1 -1
- package/dist/proxy/profile-router.d.ts +14 -0
- package/dist/proxy/profile-router.d.ts.map +1 -1
- package/dist/proxy/profile-router.js +1 -0
- package/dist/proxy/profile-router.js.map +1 -1
- package/dist/proxy/server/http-helpers.d.ts +5 -0
- package/dist/proxy/server/http-helpers.d.ts.map +1 -1
- package/dist/proxy/server/http-helpers.js +40 -1
- package/dist/proxy/server/http-helpers.js.map +1 -1
- package/dist/proxy/server/messages-route.d.ts.map +1 -1
- package/dist/proxy/server/messages-route.js +173 -10
- package/dist/proxy/server/messages-route.js.map +1 -1
- package/dist/proxy/upstream-url.d.ts +42 -2
- package/dist/proxy/upstream-url.d.ts.map +1 -1
- package/dist/proxy/upstream-url.js +83 -4
- package/dist/proxy/upstream-url.js.map +1 -1
- package/dist/ui/assets/{Trans-DsGR5Bhb.js → Trans-RG_sMDEu.js} +1 -1
- package/dist/ui/assets/accounts-yTXURc-q.js +1 -0
- package/dist/ui/assets/{alert-dialog-Do0XfN46.js → alert-dialog-DjvPgzFs.js} +1 -1
- package/dist/ui/assets/{api-B7OYas_V.js → api-Ck1dtNEM.js} +3 -3
- package/dist/ui/assets/{auth-section-BmTeNetL.js → auth-section-DBnY_LPz.js} +1 -1
- package/dist/ui/assets/{backups-section-COawLfTr.js → backups-section-Ci-uL4Of.js} +1 -1
- package/dist/ui/assets/{channels-C9LVYmNJ.js → channels-BeS9O5q0.js} +1 -1
- package/dist/ui/assets/{checkbox-BkFzg8C-.js → checkbox-DFeFDZBp.js} +1 -1
- package/dist/ui/assets/{claude-extension-Ch7L4lTF.js → claude-extension-DS5qN19Z.js} +1 -1
- package/dist/ui/assets/{cliproxy-B3uWt6gn.js → cliproxy-D7HJH4mZ.js} +1 -1
- package/dist/ui/assets/{cliproxy-ai-providers-Bn1_AdKD.js → cliproxy-ai-providers-oJQZXrtc.js} +1 -1
- package/dist/ui/assets/{cliproxy-control-panel-DC4pOOfY.js → cliproxy-control-panel-2mRPEcRj.js} +1 -1
- package/dist/ui/assets/codex-D0AUQ6jA.js +30 -0
- package/dist/ui/assets/{confirm-dialog-4rb-E8-R.js → confirm-dialog-B37-CVuq.js} +1 -1
- package/dist/ui/assets/{copilot-zgPXNkMw.js → copilot-KaaW-mko.js} +2 -2
- package/dist/ui/assets/{cursor-lRPpppk-.js → cursor-BKiTgYi5.js} +1 -1
- package/dist/ui/assets/{droid-koOj34SB.js → droid-DHdqGnFw.js} +2 -2
- package/dist/ui/assets/{globalenv-section-jOkPVwvN.js → globalenv-section-SfZO97nU.js} +1 -1
- package/dist/ui/assets/health-CSRS9O0D.js +1 -0
- package/dist/ui/assets/icons-DSLG1YsC.js +1 -0
- package/dist/ui/assets/{index-D7crOfea.js → index-CGgavq2X.js} +37 -37
- package/dist/ui/assets/{index-BLC5PyZn.js → index-ChTYEBCZ.js} +1 -1
- package/dist/ui/assets/index-Cu_F55_O.js +1 -0
- package/dist/ui/assets/{index-CRhKyfnS.js → index-DJ66NrBH.js} +1 -1
- package/dist/ui/assets/index-DWUuSBUe.js +1 -0
- package/dist/ui/assets/{index-BK-PSsqi.js → index-DycwEe96.js} +1 -1
- package/dist/ui/assets/index-DzFlVVV3.css +1 -0
- package/dist/ui/assets/{index-De3yNJ94.js → index-iQuEEGbH.js} +1 -1
- package/dist/ui/assets/{logs-BplpQHRb.js → logs-tiZ_51mo.js} +1 -1
- package/dist/ui/assets/{masked-input-DuLL3EwS.js → masked-input-D9FVoeMA.js} +1 -1
- package/dist/ui/assets/proxy-status-widget-2k26d8pS.js +1 -0
- package/dist/ui/assets/{raw-json-settings-editor-panel-ClPqZ6iZ.js → raw-json-settings-editor-panel-CguBh93H.js} +1 -1
- package/dist/ui/assets/{searchable-select-BH1b065u.js → searchable-select-C4wShshD.js} +1 -1
- package/dist/ui/assets/{separator-BOiJ0l4s.js → separator-mvGlDdEW.js} +1 -1
- package/dist/ui/assets/{shared-CunXigZu.js → shared-Ck0yAwbs.js} +1 -1
- package/dist/ui/assets/{table-C7ysR1Xz.js → table-DrUJOxKL.js} +1 -1
- package/dist/ui/assets/updates-BVHBFcq8.js +1 -0
- package/dist/ui/assets/{use-accounts-CwRU3ln9.js → use-accounts-DLtuaniS.js} +1 -1
- package/dist/ui/index.html +3 -3
- package/dist/utils/browser/mcp-installer.d.ts.map +1 -1
- package/dist/utils/browser/mcp-installer.js +5 -34
- package/dist/utils/browser/mcp-installer.js.map +1 -1
- package/dist/utils/claude-user-config-lock.d.ts +9 -0
- package/dist/utils/claude-user-config-lock.d.ts.map +1 -0
- package/dist/utils/claude-user-config-lock.js +96 -0
- package/dist/utils/claude-user-config-lock.js.map +1 -0
- package/dist/utils/image-analysis/mcp-installer.d.ts.map +1 -1
- package/dist/utils/image-analysis/mcp-installer.js +5 -34
- package/dist/utils/image-analysis/mcp-installer.js.map +1 -1
- package/dist/utils/websearch/mcp-installer.d.ts.map +1 -1
- package/dist/utils/websearch/mcp-installer.js +112 -78
- package/dist/utils/websearch/mcp-installer.js.map +1 -1
- package/dist/web-server/model-pricing.d.ts.map +1 -1
- package/dist/web-server/model-pricing.js +7 -0
- package/dist/web-server/model-pricing.js.map +1 -1
- package/dist/web-server/routes/account-routes.d.ts.map +1 -1
- package/dist/web-server/routes/account-routes.js +116 -0
- package/dist/web-server/routes/account-routes.js.map +1 -1
- package/dist/web-server/routes/bar-routes.d.ts +149 -0
- package/dist/web-server/routes/bar-routes.d.ts.map +1 -0
- package/dist/web-server/routes/bar-routes.js +415 -0
- package/dist/web-server/routes/bar-routes.js.map +1 -0
- package/dist/web-server/routes/index.d.ts.map +1 -1
- package/dist/web-server/routes/index.js +18 -0
- package/dist/web-server/routes/index.js.map +1 -1
- package/dist/web-server/usage/bar-analytics.d.ts +101 -0
- package/dist/web-server/usage/bar-analytics.d.ts.map +1 -0
- package/dist/web-server/usage/bar-analytics.js +315 -0
- package/dist/web-server/usage/bar-analytics.js.map +1 -0
- package/dist/web-server/usage/claude-native-credentials.d.ts +56 -0
- package/dist/web-server/usage/claude-native-credentials.d.ts.map +1 -0
- package/dist/web-server/usage/claude-native-credentials.js +140 -0
- package/dist/web-server/usage/claude-native-credentials.js.map +1 -0
- package/dist/web-server/usage/cliproxy-snapshot-reader.d.ts +24 -0
- package/dist/web-server/usage/cliproxy-snapshot-reader.d.ts.map +1 -0
- package/dist/web-server/usage/cliproxy-snapshot-reader.js +82 -0
- package/dist/web-server/usage/cliproxy-snapshot-reader.js.map +1 -0
- package/dist/web-server/usage/cliproxy-usage-syncer.d.ts +3 -2
- package/dist/web-server/usage/cliproxy-usage-syncer.d.ts.map +1 -1
- package/dist/web-server/usage/cliproxy-usage-syncer.js +14 -2
- package/dist/web-server/usage/cliproxy-usage-syncer.js.map +1 -1
- package/dist/web-server/usage/cliproxy-usage-transformer.d.ts +8 -1
- package/dist/web-server/usage/cliproxy-usage-transformer.d.ts.map +1 -1
- package/dist/web-server/usage/cliproxy-usage-transformer.js +31 -4
- package/dist/web-server/usage/cliproxy-usage-transformer.js.map +1 -1
- package/dist/web-server/usage/codex-local-quota-collector.d.ts +74 -0
- package/dist/web-server/usage/codex-local-quota-collector.d.ts.map +1 -0
- package/dist/web-server/usage/codex-local-quota-collector.js +250 -0
- package/dist/web-server/usage/codex-local-quota-collector.js.map +1 -0
- package/dist/web-server/usage/data-aggregator.d.ts +11 -0
- package/dist/web-server/usage/data-aggregator.d.ts.map +1 -1
- package/dist/web-server/usage/data-aggregator.js +29 -1
- package/dist/web-server/usage/data-aggregator.js.map +1 -1
- package/dist/web-server/usage/native-quota-collector.d.ts +44 -0
- package/dist/web-server/usage/native-quota-collector.d.ts.map +1 -0
- package/dist/web-server/usage/native-quota-collector.js +378 -0
- package/dist/web-server/usage/native-quota-collector.js.map +1 -0
- package/dist/web-server/usage/types.d.ts +2 -0
- package/dist/web-server/usage/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/scripts/run-test-bucket.js +183 -17
- package/dist/ui/assets/accounts-DHBmHeH-.js +0 -1
- package/dist/ui/assets/codex-CcODhykP.js +0 -30
- package/dist/ui/assets/health-CxHauE3Y.js +0 -1
- package/dist/ui/assets/icons-DzKUh8vG.js +0 -1
- package/dist/ui/assets/index-DOfPoKe_.css +0 -1
- package/dist/ui/assets/index-DUGnoURR.js +0 -1
- package/dist/ui/assets/index-I_ek1xyD.js +0 -1
- package/dist/ui/assets/proxy-status-widget-BruRPTSl.js +0 -1
- package/dist/ui/assets/updates-BtBCV2xk.js +0 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared path helpers for the `ccs bar` command family.
|
|
4
|
+
*
|
|
5
|
+
* Centralises the paths under ~/.ccs/bar/ so every subcommand stays DRY.
|
|
6
|
+
* All paths derive from ccsDir (i.e. getCcsDir()) so CCS_HOME isolation
|
|
7
|
+
* works correctly in tests.
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
26
|
+
if (mod && mod.__esModule) return mod;
|
|
27
|
+
var result = {};
|
|
28
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
29
|
+
__setModuleDefault(result, mod);
|
|
30
|
+
return result;
|
|
31
|
+
};
|
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
exports.LAUNCH_JSON_SCHEMA = exports.getBarDir = exports.getBarJsonPath = exports.getServeLogPath = exports.getServerPidPath = exports.getLaunchJsonPath = void 0;
|
|
34
|
+
const path = __importStar(require("path"));
|
|
35
|
+
/** launch.json — consumed by the Swift app to spawn the server without a shell PATH. */
|
|
36
|
+
function getLaunchJsonPath(ccsDir) {
|
|
37
|
+
return path.join(ccsDir, 'bar', 'launch.json');
|
|
38
|
+
}
|
|
39
|
+
exports.getLaunchJsonPath = getLaunchJsonPath;
|
|
40
|
+
/** server.pid — PID of the live detached server process. */
|
|
41
|
+
function getServerPidPath(ccsDir) {
|
|
42
|
+
return path.join(ccsDir, 'bar', 'server.pid');
|
|
43
|
+
}
|
|
44
|
+
exports.getServerPidPath = getServerPidPath;
|
|
45
|
+
/** serve.log — stdout/stderr of the detached server process. */
|
|
46
|
+
function getServeLogPath(ccsDir) {
|
|
47
|
+
return path.join(ccsDir, 'bar', 'serve.log');
|
|
48
|
+
}
|
|
49
|
+
exports.getServeLogPath = getServeLogPath;
|
|
50
|
+
/** bar.json — live discovery file consumed by the Swift app. */
|
|
51
|
+
function getBarJsonPath(ccsDir) {
|
|
52
|
+
return path.join(ccsDir, 'bar.json');
|
|
53
|
+
}
|
|
54
|
+
exports.getBarJsonPath = getBarJsonPath;
|
|
55
|
+
/** bar/ subdirectory (parent of all bar artefacts). */
|
|
56
|
+
function getBarDir(ccsDir) {
|
|
57
|
+
return path.join(ccsDir, 'bar');
|
|
58
|
+
}
|
|
59
|
+
exports.getBarDir = getBarDir;
|
|
60
|
+
/** Schema version constant for launch.json. */
|
|
61
|
+
exports.LAUNCH_JSON_SCHEMA = 1;
|
|
62
|
+
//# sourceMappingURL=bar-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bar-paths.js","sourceRoot":"","sources":["../../../src/commands/bar/bar-paths.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,2CAA6B;AAE7B,wFAAwF;AACxF,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;AACjD,CAAC;AAFD,8CAEC;AAED,4DAA4D;AAC5D,SAAgB,gBAAgB,CAAC,MAAc;IAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AAChD,CAAC;AAFD,4CAEC;AAED,gEAAgE;AAChE,SAAgB,eAAe,CAAC,MAAc;IAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;AAC/C,CAAC;AAFD,0CAEC;AAED,gEAAgE;AAChE,SAAgB,cAAc,CAAC,MAAc;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACvC,CAAC;AAFD,wCAEC;AAED,uDAAuD;AACvD,SAAgB,SAAS,CAAC,MAAc;IACtC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC;AAFD,8BAEC;AAED,+CAA+C;AAClC,QAAA,kBAAkB,GAAG,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CCS Bar — server liveness probe utilities.
|
|
3
|
+
*
|
|
4
|
+
* Shared by launch-subcommand.ts and serve-subcommand.ts so neither imports
|
|
5
|
+
* from the other (which would create a cross-module dependency that breaks
|
|
6
|
+
* Bun's test module isolation when cache-busting URLs are used).
|
|
7
|
+
*/
|
|
8
|
+
export interface DashboardInfo {
|
|
9
|
+
port: number;
|
|
10
|
+
baseUrl: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Read the port recorded in an existing bar.json.
|
|
14
|
+
* Returns null when the file is absent or malformed.
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolveBarPort(ccsDir: string): number | null;
|
|
17
|
+
/**
|
|
18
|
+
* Probe candidate ports for a running CCS server.
|
|
19
|
+
*
|
|
20
|
+
* Both IPv4 (127.0.0.1) and IPv6 (::1) loopback addresses are probed for each
|
|
21
|
+
* port. All probes are fired concurrently so worst-case latency is ~1.5 s
|
|
22
|
+
* (one timeout) rather than N × 1.5 s sequentially. Priority selection is
|
|
23
|
+
* applied after all results are in: the bar.json port is preferred over the
|
|
24
|
+
* defaults, and within a port 127.0.0.1 is preferred over [::1].
|
|
25
|
+
*/
|
|
26
|
+
export declare function defaultFindRunningServer(ccsDir: string): Promise<DashboardInfo | null>;
|
|
27
|
+
//# sourceMappingURL=bar-server-probe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bar-server-probe.d.ts","sourceRoot":"","sources":["../../../src/commands/bar/bar-server-probe.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS5D;AAED;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAoC5F"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CCS Bar — server liveness probe utilities.
|
|
4
|
+
*
|
|
5
|
+
* Shared by launch-subcommand.ts and serve-subcommand.ts so neither imports
|
|
6
|
+
* from the other (which would create a cross-module dependency that breaks
|
|
7
|
+
* Bun's test module isolation when cache-busting URLs are used).
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
26
|
+
if (mod && mod.__esModule) return mod;
|
|
27
|
+
var result = {};
|
|
28
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
29
|
+
__setModuleDefault(result, mod);
|
|
30
|
+
return result;
|
|
31
|
+
};
|
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
exports.defaultFindRunningServer = exports.resolveBarPort = void 0;
|
|
34
|
+
const fs = __importStar(require("fs"));
|
|
35
|
+
const path = __importStar(require("path"));
|
|
36
|
+
/**
|
|
37
|
+
* Read the port recorded in an existing bar.json.
|
|
38
|
+
* Returns null when the file is absent or malformed.
|
|
39
|
+
*/
|
|
40
|
+
function resolveBarPort(ccsDir) {
|
|
41
|
+
const barJsonPath = path.join(ccsDir, 'bar.json');
|
|
42
|
+
try {
|
|
43
|
+
const raw = fs.readFileSync(barJsonPath, 'utf8');
|
|
44
|
+
const parsed = JSON.parse(raw);
|
|
45
|
+
return typeof parsed.port === 'number' ? parsed.port : null;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.resolveBarPort = resolveBarPort;
|
|
52
|
+
/**
|
|
53
|
+
* Probe candidate ports for a running CCS server.
|
|
54
|
+
*
|
|
55
|
+
* Both IPv4 (127.0.0.1) and IPv6 (::1) loopback addresses are probed for each
|
|
56
|
+
* port. All probes are fired concurrently so worst-case latency is ~1.5 s
|
|
57
|
+
* (one timeout) rather than N × 1.5 s sequentially. Priority selection is
|
|
58
|
+
* applied after all results are in: the bar.json port is preferred over the
|
|
59
|
+
* defaults, and within a port 127.0.0.1 is preferred over [::1].
|
|
60
|
+
*/
|
|
61
|
+
async function defaultFindRunningServer(ccsDir) {
|
|
62
|
+
const { request } = await Promise.resolve().then(() => __importStar(require('undici')));
|
|
63
|
+
async function probe(url) {
|
|
64
|
+
try {
|
|
65
|
+
const { statusCode, body } = await request(url, {
|
|
66
|
+
method: 'GET',
|
|
67
|
+
headersTimeout: 1500,
|
|
68
|
+
bodyTimeout: 1500,
|
|
69
|
+
});
|
|
70
|
+
await body.text();
|
|
71
|
+
return { ok: statusCode === 200 };
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return { ok: false };
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const barJsonPort = resolveBarPort(ccsDir);
|
|
78
|
+
const base = [3000, 3001, 3002, 8000, 8080];
|
|
79
|
+
const candidates = barJsonPort !== null ? [barJsonPort, ...base.filter((p) => p !== barJsonPort)] : base;
|
|
80
|
+
const probeTargets = candidates.flatMap((port) => [
|
|
81
|
+
{ port, baseUrl: `http://127.0.0.1:${port}`, url: `http://127.0.0.1:${port}/api/bar/summary` },
|
|
82
|
+
{ port, baseUrl: `http://[::1]:${port}`, url: `http://[::1]:${port}/api/bar/summary` },
|
|
83
|
+
]);
|
|
84
|
+
const results = await Promise.all(probeTargets.map((t) => probe(t.url)));
|
|
85
|
+
for (let i = 0; i < probeTargets.length; i++) {
|
|
86
|
+
if (results[i].ok) {
|
|
87
|
+
const { port, baseUrl } = probeTargets[i];
|
|
88
|
+
return { port, baseUrl };
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
exports.defaultFindRunningServer = defaultFindRunningServer;
|
|
94
|
+
//# sourceMappingURL=bar-server-probe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bar-server-probe.js","sourceRoot":"","sources":["../../../src/commands/bar/bar-server-probe.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAO7B;;;GAGG;AACH,SAAgB,cAAc,CAAC,MAAc;IAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA8B,CAAC;QAC5D,OAAO,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AATD,wCASC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,wBAAwB,CAAC,MAAc;IAC3D,MAAM,EAAE,OAAO,EAAE,GAAG,wDAAa,QAAQ,GAAC,CAAC;IAE3C,KAAK,UAAU,KAAK,CAAC,GAAW;QAC9B,IAAI,CAAC;YACH,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE;gBAC9C,MAAM,EAAE,KAAK;gBACb,cAAc,EAAE,IAAI;gBACpB,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,EAAE,EAAE,EAAE,UAAU,KAAK,GAAG,EAAE,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,UAAU,GACd,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAExF,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAChD,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,IAAI,EAAE,EAAE,GAAG,EAAE,oBAAoB,IAAI,kBAAkB,EAAE;QAC9F,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,IAAI,EAAE,EAAE,GAAG,EAAE,gBAAgB,IAAI,kBAAkB,EAAE;KACvF,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEzE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAClB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC1C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AApCD,4DAoCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help-subcommand.d.ts","sourceRoot":"","sources":["../../../src/commands/bar/help-subcommand.ts"],"names":[],"mappings":"AAEA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAuE9C"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.showHelp = void 0;
|
|
4
|
+
const ui_1 = require("../../utils/ui");
|
|
5
|
+
async function showHelp() {
|
|
6
|
+
await (0, ui_1.initUI)();
|
|
7
|
+
console.log('');
|
|
8
|
+
console.log((0, ui_1.header)('CCS Bar (macOS Menu Bar App)'));
|
|
9
|
+
console.log('');
|
|
10
|
+
console.log((0, ui_1.subheader)('Usage:'));
|
|
11
|
+
console.log(` ${(0, ui_1.color)('ccs bar', 'command')} [command] [options]`);
|
|
12
|
+
console.log('');
|
|
13
|
+
const sections = [
|
|
14
|
+
[
|
|
15
|
+
'Commands:',
|
|
16
|
+
[
|
|
17
|
+
['launch', 'Spawn the server detached, write ~/.ccs/bar.json, open the app (default)'],
|
|
18
|
+
['stop', 'Stop the detached CCS Bar server'],
|
|
19
|
+
['status', 'Show whether the CCS Bar server is running'],
|
|
20
|
+
['install', 'Download CCS Bar from the ccs-bar-latest GitHub release into ~/Applications'],
|
|
21
|
+
['uninstall', 'Remove the app and version pin'],
|
|
22
|
+
['version', 'Show CLI and installed app versions'],
|
|
23
|
+
],
|
|
24
|
+
],
|
|
25
|
+
[
|
|
26
|
+
'Options:',
|
|
27
|
+
[
|
|
28
|
+
['--help, -h', 'Show this help message'],
|
|
29
|
+
['--version', 'Show CLI and installed app versions'],
|
|
30
|
+
],
|
|
31
|
+
],
|
|
32
|
+
[
|
|
33
|
+
'Install options:',
|
|
34
|
+
[
|
|
35
|
+
['--launch', 'Launch CCS Bar immediately after install without prompting'],
|
|
36
|
+
['--no-launch', 'Skip the launch prompt after install'],
|
|
37
|
+
],
|
|
38
|
+
],
|
|
39
|
+
[
|
|
40
|
+
'Examples:',
|
|
41
|
+
[
|
|
42
|
+
['ccs bar', 'Start the server detached and open CCS Bar'],
|
|
43
|
+
['ccs bar stop', 'Stop the detached CCS Bar server'],
|
|
44
|
+
['ccs bar status', 'Show server running state and PID'],
|
|
45
|
+
['ccs bar install', 'Download and install CCS Bar, then prompt to launch'],
|
|
46
|
+
['ccs bar install --launch', 'Install and launch immediately (no prompt)'],
|
|
47
|
+
['ccs bar install --no-launch', 'Install without launching'],
|
|
48
|
+
['ccs bar version', 'Show CLI and installed app versions'],
|
|
49
|
+
['ccs bar uninstall', 'Remove CCS Bar and its version pin'],
|
|
50
|
+
],
|
|
51
|
+
],
|
|
52
|
+
];
|
|
53
|
+
for (const [title, rows] of sections) {
|
|
54
|
+
console.log((0, ui_1.subheader)(title));
|
|
55
|
+
const width = Math.max(...rows.map(([command]) => command.length));
|
|
56
|
+
for (const [command, description] of rows) {
|
|
57
|
+
console.log(` ${(0, ui_1.color)(command.padEnd(width + 2), 'command')} ${description}`);
|
|
58
|
+
}
|
|
59
|
+
console.log('');
|
|
60
|
+
}
|
|
61
|
+
console.log((0, ui_1.dim)(' macOS only. The app communicates with the CCS web-server on localhost only.'));
|
|
62
|
+
console.log((0, ui_1.dim)(' `ccs bar launch` spawns the server detached — the terminal is freed immediately.'));
|
|
63
|
+
console.log((0, ui_1.dim)(' The server persists until stopped with `ccs bar stop` or system reboot.'));
|
|
64
|
+
console.log((0, ui_1.dim)(' Gatekeeper quarantine is cleared automatically after install. If the app is still blocked,'));
|
|
65
|
+
console.log((0, ui_1.dim)(' right-click > Open or run `xattr -dr com.apple.quarantine` manually.'));
|
|
66
|
+
console.log('');
|
|
67
|
+
}
|
|
68
|
+
exports.showHelp = showHelp;
|
|
69
|
+
//# sourceMappingURL=help-subcommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help-subcommand.js","sourceRoot":"","sources":["../../../src/commands/bar/help-subcommand.ts"],"names":[],"mappings":";;;AAAA,uCAAuE;AAEhE,KAAK,UAAU,QAAQ;IAC5B,MAAM,IAAA,WAAM,GAAE,CAAC;IACf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,IAAA,WAAM,EAAC,8BAA8B,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,IAAA,cAAS,EAAC,QAAQ,CAAC,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,UAAK,EAAC,SAAS,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,QAAQ,GAAmC;QAC/C;YACE,WAAW;YACX;gBACE,CAAC,QAAQ,EAAE,0EAA0E,CAAC;gBACtF,CAAC,MAAM,EAAE,kCAAkC,CAAC;gBAC5C,CAAC,QAAQ,EAAE,4CAA4C,CAAC;gBACxD,CAAC,SAAS,EAAE,6EAA6E,CAAC;gBAC1F,CAAC,WAAW,EAAE,gCAAgC,CAAC;gBAC/C,CAAC,SAAS,EAAE,qCAAqC,CAAC;aACnD;SACF;QACD;YACE,UAAU;YACV;gBACE,CAAC,YAAY,EAAE,wBAAwB,CAAC;gBACxC,CAAC,WAAW,EAAE,qCAAqC,CAAC;aACrD;SACF;QACD;YACE,kBAAkB;YAClB;gBACE,CAAC,UAAU,EAAE,4DAA4D,CAAC;gBAC1E,CAAC,aAAa,EAAE,sCAAsC,CAAC;aACxD;SACF;QACD;YACE,WAAW;YACX;gBACE,CAAC,SAAS,EAAE,4CAA4C,CAAC;gBACzD,CAAC,cAAc,EAAE,kCAAkC,CAAC;gBACpD,CAAC,gBAAgB,EAAE,mCAAmC,CAAC;gBACvD,CAAC,iBAAiB,EAAE,qDAAqD,CAAC;gBAC1E,CAAC,0BAA0B,EAAE,4CAA4C,CAAC;gBAC1E,CAAC,6BAA6B,EAAE,2BAA2B,CAAC;gBAC5D,CAAC,iBAAiB,EAAE,qCAAqC,CAAC;gBAC1D,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;aAC5D;SACF;KACF,CAAC;IAEF,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,IAAA,cAAS,EAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACnE,KAAK,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,UAAK,EAAC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,IAAA,QAAG,EAAC,+EAA+E,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,GAAG,CACT,IAAA,QAAG,EAAC,oFAAoF,CAAC,CAC1F,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,IAAA,QAAG,EAAC,2EAA2E,CAAC,CAAC,CAAC;IAC9F,OAAO,CAAC,GAAG,CACT,IAAA,QAAG,EACD,8FAA8F,CAC/F,CACF,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,IAAA,QAAG,EAAC,wEAAwE,CAAC,CAAC,CAAC;IAC3F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAvED,4BAuEC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ccs bar` command dispatcher
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the pattern in src/commands/docker/index.ts.
|
|
5
|
+
* Subcommands: launch (default), serve, stop, status, install, uninstall,
|
|
6
|
+
* version / --version, help / --help / -h.
|
|
7
|
+
*
|
|
8
|
+
* `serve` is the long-lived server host (spawned detached by `launch` and by
|
|
9
|
+
* the Swift app). `stop` and `status` manage the detached server lifecycle.
|
|
10
|
+
*/
|
|
11
|
+
export declare function handleBarCommand(args: string[]): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/bar/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DpE"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `ccs bar` command dispatcher
|
|
4
|
+
*
|
|
5
|
+
* Mirrors the pattern in src/commands/docker/index.ts.
|
|
6
|
+
* Subcommands: launch (default), serve, stop, status, install, uninstall,
|
|
7
|
+
* version / --version, help / --help / -h.
|
|
8
|
+
*
|
|
9
|
+
* `serve` is the long-lived server host (spawned detached by `launch` and by
|
|
10
|
+
* the Swift app). `stop` and `status` manage the detached server lifecycle.
|
|
11
|
+
*/
|
|
12
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
15
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
16
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
17
|
+
}
|
|
18
|
+
Object.defineProperty(o, k2, desc);
|
|
19
|
+
}) : (function(o, m, k, k2) {
|
|
20
|
+
if (k2 === undefined) k2 = k;
|
|
21
|
+
o[k2] = m[k];
|
|
22
|
+
}));
|
|
23
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
24
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
25
|
+
}) : function(o, v) {
|
|
26
|
+
o["default"] = v;
|
|
27
|
+
});
|
|
28
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.handleBarCommand = void 0;
|
|
37
|
+
const arg_extractor_1 = require("../arg-extractor");
|
|
38
|
+
async function handleBarCommand(args) {
|
|
39
|
+
const subcommand = args[0];
|
|
40
|
+
// --help / -h anywhere in args (e.g. `ccs bar install --help`) → show help.
|
|
41
|
+
// Also dispatch bare `help` subcommand for symmetry.
|
|
42
|
+
if ((0, arg_extractor_1.hasAnyFlag)(args, ['--help', '-h']) || subcommand === 'help') {
|
|
43
|
+
const { showHelp } = await Promise.resolve().then(() => __importStar(require('./help-subcommand')));
|
|
44
|
+
await showHelp();
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// --version / version are aliases for the version subcommand
|
|
48
|
+
if (subcommand === '--version' || subcommand === 'version') {
|
|
49
|
+
const { handleBarVersion } = await Promise.resolve().then(() => __importStar(require('./version-subcommand')));
|
|
50
|
+
await handleBarVersion();
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
const commandHandlers = {
|
|
54
|
+
launch: async (subArgs) => {
|
|
55
|
+
const { handleBarLaunch } = await Promise.resolve().then(() => __importStar(require('./launch-subcommand')));
|
|
56
|
+
await handleBarLaunch(subArgs);
|
|
57
|
+
},
|
|
58
|
+
serve: async (subArgs) => {
|
|
59
|
+
const { handleBarServe } = await Promise.resolve().then(() => __importStar(require('./serve-subcommand')));
|
|
60
|
+
await handleBarServe(subArgs);
|
|
61
|
+
},
|
|
62
|
+
stop: async (subArgs) => {
|
|
63
|
+
const { handleBarStop } = await Promise.resolve().then(() => __importStar(require('./stop-subcommand')));
|
|
64
|
+
await handleBarStop(subArgs);
|
|
65
|
+
},
|
|
66
|
+
status: async (subArgs) => {
|
|
67
|
+
const { handleBarStatus } = await Promise.resolve().then(() => __importStar(require('./status-subcommand')));
|
|
68
|
+
await handleBarStatus(subArgs);
|
|
69
|
+
},
|
|
70
|
+
install: async (subArgs) => {
|
|
71
|
+
const { handleBarInstall } = await Promise.resolve().then(() => __importStar(require('./install-subcommand')));
|
|
72
|
+
await handleBarInstall(subArgs);
|
|
73
|
+
},
|
|
74
|
+
uninstall: async (subArgs) => {
|
|
75
|
+
const { handleBarUninstall } = await Promise.resolve().then(() => __importStar(require('./uninstall-subcommand')));
|
|
76
|
+
await handleBarUninstall(subArgs);
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
// Bare `ccs bar` → launch
|
|
80
|
+
if (!subcommand || subcommand === 'launch') {
|
|
81
|
+
await commandHandlers.launch(subcommand ? args.slice(1) : []);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const handler = commandHandlers[subcommand];
|
|
85
|
+
if (!handler) {
|
|
86
|
+
console.error(`[X] Unknown bar subcommand: ${subcommand}`);
|
|
87
|
+
console.error('[i] Usage: ccs bar [launch|serve|stop|status|install|uninstall|version|--help]');
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
await handler(args.slice(1));
|
|
91
|
+
}
|
|
92
|
+
exports.handleBarCommand = handleBarCommand;
|
|
93
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/bar/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,oDAA8C;AAEvC,KAAK,UAAU,gBAAgB,CAAC,IAAc;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAE3B,4EAA4E;IAC5E,qDAAqD;IACrD,IAAI,IAAA,0BAAU,EAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAChE,MAAM,EAAE,QAAQ,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;QACvD,MAAM,QAAQ,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,6DAA6D;IAC7D,IAAI,UAAU,KAAK,WAAW,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC3D,MAAM,EAAE,gBAAgB,EAAE,GAAG,wDAAa,sBAAsB,GAAC,CAAC;QAClE,MAAM,gBAAgB,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,MAAM,eAAe,GAAyD;QAC5E,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACxB,MAAM,EAAE,eAAe,EAAE,GAAG,wDAAa,qBAAqB,GAAC,CAAC;YAChE,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QACD,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACvB,MAAM,EAAE,cAAc,EAAE,GAAG,wDAAa,oBAAoB,GAAC,CAAC;YAC9D,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACtB,MAAM,EAAE,aAAa,EAAE,GAAG,wDAAa,mBAAmB,GAAC,CAAC;YAC5D,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACxB,MAAM,EAAE,eAAe,EAAE,GAAG,wDAAa,qBAAqB,GAAC,CAAC;YAChE,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACzB,MAAM,EAAE,gBAAgB,EAAE,GAAG,wDAAa,sBAAsB,GAAC,CAAC;YAClE,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC3B,MAAM,EAAE,kBAAkB,EAAE,GAAG,wDAAa,wBAAwB,GAAC,CAAC;YACtE,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;KACF,CAAC;IAEF,0BAA0B;IAC1B,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC3C,MAAM,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9D,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;QAChG,OAAO;IACT,CAAC;IAED,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC;AA3DD,4CA2DC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ccs bar install` — download the CCS Bar app from the floating
|
|
3
|
+
* `ccs-bar-latest` GitHub release tag and install to ~/Applications.
|
|
4
|
+
*
|
|
5
|
+
* Intentionally uses a FLOATING tag (not the exact CLI version) so the
|
|
6
|
+
* Swift app can be rebuilt and published independently. After extraction,
|
|
7
|
+
* the real app version is read from the bundle's Contents/Info.plist
|
|
8
|
+
* (CFBundleShortVersionString) and pinned to ~/.ccs/bar/.version.
|
|
9
|
+
*
|
|
10
|
+
* Post-install compat check: single GET {baseUrl}/api/bar/summary.
|
|
11
|
+
* 200 = server serves the bar API (compatible).
|
|
12
|
+
* 404 = server too old (actionable warning).
|
|
13
|
+
* Other / unreachable = soft-warn, never hard-fail install.
|
|
14
|
+
*
|
|
15
|
+
* Mirrors the download/version-pin pattern in src/cliproxy/binary-manager.ts.
|
|
16
|
+
*/
|
|
17
|
+
import type { LaunchJson } from './bar-paths';
|
|
18
|
+
export interface ReleaseAssetResult {
|
|
19
|
+
downloadUrl: string;
|
|
20
|
+
}
|
|
21
|
+
export interface CompatResult {
|
|
22
|
+
compatible: boolean;
|
|
23
|
+
reason: 'ok' | 'no-bar-api' | 'unreachable';
|
|
24
|
+
}
|
|
25
|
+
export interface InstallDeps {
|
|
26
|
+
/**
|
|
27
|
+
* Resolve the asset download URL from a GitHub release tag.
|
|
28
|
+
* Production: calls GitHub API releases/tags/{tag}.
|
|
29
|
+
* Test: mock that returns a fake URL.
|
|
30
|
+
*/
|
|
31
|
+
fetchReleaseAsset: (tag: string, asset: string) => Promise<ReleaseAssetResult>;
|
|
32
|
+
/**
|
|
33
|
+
* Download the zip archive and extract the .app bundle into dest/.
|
|
34
|
+
* Production: uses undici to stream + extract (with redirect + status check).
|
|
35
|
+
*/
|
|
36
|
+
downloadAndExtract: (url: string, dest: string) => Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* GET {baseUrl}/api/bar/summary — capability handshake.
|
|
39
|
+
* 200 → compatible; 404 → no-bar-api; else/unreachable → unreachable.
|
|
40
|
+
* Never hard-fails install.
|
|
41
|
+
*/
|
|
42
|
+
verifyCompat: (baseUrl: string) => Promise<CompatResult>;
|
|
43
|
+
/**
|
|
44
|
+
* Read CFBundleShortVersionString from {appPath}/Contents/Info.plist.
|
|
45
|
+
* Returns null if the file is absent or unreadable.
|
|
46
|
+
*/
|
|
47
|
+
readAppBundleVersion: (appPath: string) => string | null;
|
|
48
|
+
/** Returns path to ~/.ccs (respects CCS_HOME). */
|
|
49
|
+
getCcsDir: () => string;
|
|
50
|
+
/** Destination directory for the .app bundle (~/Applications by default). */
|
|
51
|
+
getAppsDir: () => string;
|
|
52
|
+
/**
|
|
53
|
+
* Clear the macOS Gatekeeper quarantine attribute from the installed app.
|
|
54
|
+
* Run via `/usr/bin/xattr -dr com.apple.quarantine <appPath>` (execFile, not shell-string).
|
|
55
|
+
* Returns true on success, false if xattr is unavailable or the call fails (non-fatal).
|
|
56
|
+
* Injectable for tests — avoids touching the real system.
|
|
57
|
+
*/
|
|
58
|
+
clearQuarantine: (appPath: string) => Promise<boolean>;
|
|
59
|
+
/**
|
|
60
|
+
* Invoke handleBarLaunch after a successful install when the user consents.
|
|
61
|
+
* Injectable so tests can assert invocation without starting a real server.
|
|
62
|
+
*/
|
|
63
|
+
launchBar: (args: string[]) => Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Ask the user whether to launch CCS Bar now (stdin-TTY-only).
|
|
66
|
+
* Returns true on yes/default, false on no or non-TTY stdin.
|
|
67
|
+
* Injectable for tests.
|
|
68
|
+
*/
|
|
69
|
+
promptLaunch: () => Promise<boolean>;
|
|
70
|
+
/**
|
|
71
|
+
* Detect whether CCS Bar is already running.
|
|
72
|
+
* Production: uses /usr/bin/pgrep -x CCSBar (exit 0 = running, exit 1 = not found).
|
|
73
|
+
* Returns false on any error (treat pgrep failure as not running).
|
|
74
|
+
* Injectable for tests — avoids touching the real process table.
|
|
75
|
+
*/
|
|
76
|
+
isBarRunning: () => Promise<boolean>;
|
|
77
|
+
/**
|
|
78
|
+
* Remove an existing app bundle before extraction so a malformed archive
|
|
79
|
+
* cannot silently leave the old version in place.
|
|
80
|
+
* Production: fs.rmSync(appPath, { recursive: true, force: true }).
|
|
81
|
+
* Injectable for tests — avoids real filesystem side-effects.
|
|
82
|
+
* Throws on failure; caller catches and aborts install.
|
|
83
|
+
*/
|
|
84
|
+
removeExistingApp: (appPath: string) => void;
|
|
85
|
+
/**
|
|
86
|
+
* Write launch.json so the Swift app can spawn the server without a shell PATH.
|
|
87
|
+
* Called after successful install so the descriptor is always fresh.
|
|
88
|
+
* Injectable for tests — asserts the file is written without real fs side-effects.
|
|
89
|
+
* Non-fatal when it throws (install already succeeded).
|
|
90
|
+
*/
|
|
91
|
+
writeLaunchDescriptor: (jsonPath: string, descriptor: LaunchJson) => void;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Validate that a download URL is https and its hostname is in the allowlist
|
|
95
|
+
* (exact match or *.githubusercontent.com wildcard).
|
|
96
|
+
* Throws a descriptive Error if validation fails.
|
|
97
|
+
*/
|
|
98
|
+
export declare function validateDownloadUrl(url: string): void;
|
|
99
|
+
export declare function handleBarInstall(args: string[], deps?: Partial<InstallDeps>): Promise<void>;
|
|
100
|
+
//# sourceMappingURL=install-subcommand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-subcommand.d.ts","sourceRoot":"","sources":["../../../src/commands/bar/install-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA8B9C,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,IAAI,GAAG,YAAY,GAAG,aAAa,CAAC;CAC7C;AAED,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/E;;;OAGG;IACH,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE;;;;OAIG;IACH,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACzD;;;OAGG;IACH,oBAAoB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACzD,kDAAkD;IAClD,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB,6EAA6E;IAC7E,UAAU,EAAE,MAAM,MAAM,CAAC;IACzB;;;;;OAKG;IACH,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD;;;OAGG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C;;;;OAIG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC;;;;;OAKG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC;;;;;;OAMG;IACH,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C;;;;;OAKG;IACH,qBAAqB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;CAC3E;AAMD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAuBrD;AA+TD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,OAAO,CAAC,WAAW,CAAM,GAC9B,OAAO,CAAC,IAAI,CAAC,CAuPf"}
|