@kaitranntt/ccs 7.64.0 → 7.65.1

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.
Files changed (144) hide show
  1. package/README.md +2 -0
  2. package/dist/api/services/profile-types.d.ts +17 -0
  3. package/dist/api/services/profile-types.d.ts.map +1 -1
  4. package/dist/ccs.js +61 -6
  5. package/dist/ccs.js.map +1 -1
  6. package/dist/cliproxy/executor/env-resolver.d.ts +27 -0
  7. package/dist/cliproxy/executor/env-resolver.d.ts.map +1 -1
  8. package/dist/cliproxy/executor/env-resolver.js +87 -3
  9. package/dist/cliproxy/executor/env-resolver.js.map +1 -1
  10. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  11. package/dist/cliproxy/executor/index.js +30 -0
  12. package/dist/cliproxy/executor/index.js.map +1 -1
  13. package/dist/cliproxy/model-catalog.d.ts +6 -0
  14. package/dist/cliproxy/model-catalog.d.ts.map +1 -1
  15. package/dist/cliproxy/model-catalog.js +38 -1
  16. package/dist/cliproxy/model-catalog.js.map +1 -1
  17. package/dist/cliproxy/proxy-config-resolver.d.ts +2 -1
  18. package/dist/cliproxy/proxy-config-resolver.d.ts.map +1 -1
  19. package/dist/cliproxy/proxy-config-resolver.js +1 -0
  20. package/dist/cliproxy/proxy-config-resolver.js.map +1 -1
  21. package/dist/cliproxy/proxy-target-resolver.d.ts +2 -0
  22. package/dist/cliproxy/proxy-target-resolver.d.ts.map +1 -1
  23. package/dist/cliproxy/proxy-target-resolver.js +3 -0
  24. package/dist/cliproxy/proxy-target-resolver.js.map +1 -1
  25. package/dist/cliproxy/remote-auth-fetcher.d.ts.map +1 -1
  26. package/dist/cliproxy/remote-auth-fetcher.js +89 -8
  27. package/dist/cliproxy/remote-auth-fetcher.js.map +1 -1
  28. package/dist/cliproxy/services/variant-settings.d.ts.map +1 -1
  29. package/dist/cliproxy/services/variant-settings.js +19 -4
  30. package/dist/cliproxy/services/variant-settings.js.map +1 -1
  31. package/dist/cliproxy/types.d.ts +2 -0
  32. package/dist/cliproxy/types.d.ts.map +1 -1
  33. package/dist/commands/config-image-analysis-command.d.ts.map +1 -1
  34. package/dist/commands/config-image-analysis-command.js +87 -1
  35. package/dist/commands/config-image-analysis-command.js.map +1 -1
  36. package/dist/config/unified-config-loader.d.ts.map +1 -1
  37. package/dist/config/unified-config-loader.js +9 -4
  38. package/dist/config/unified-config-loader.js.map +1 -1
  39. package/dist/config/unified-config-types.d.ts +4 -0
  40. package/dist/config/unified-config-types.d.ts.map +1 -1
  41. package/dist/config/unified-config-types.js +4 -2
  42. package/dist/config/unified-config-types.js.map +1 -1
  43. package/dist/copilot/copilot-executor.d.ts +13 -0
  44. package/dist/copilot/copilot-executor.d.ts.map +1 -1
  45. package/dist/copilot/copilot-executor.js +52 -2
  46. package/dist/copilot/copilot-executor.js.map +1 -1
  47. package/dist/management/checks/image-analysis-check.js +1 -1
  48. package/dist/management/checks/image-analysis-check.js.map +1 -1
  49. package/dist/shared/compatible-cli-contracts.d.ts +4 -0
  50. package/dist/shared/compatible-cli-contracts.d.ts.map +1 -1
  51. package/dist/types/config.d.ts +5 -0
  52. package/dist/types/config.d.ts.map +1 -1
  53. package/dist/types/config.js.map +1 -1
  54. package/dist/ui/assets/{accounts-D0UZf0nz.js → accounts-BHEYnq6b.js} +1 -1
  55. package/dist/ui/assets/{alert-dialog-Da7R-FpD.js → alert-dialog-D0EFRcfB.js} +1 -1
  56. package/dist/ui/assets/api-DhM3BYXr.js +4 -0
  57. package/dist/ui/assets/{auth-section-CH2_H6xn.js → auth-section-DVp8FQGm.js} +1 -1
  58. package/dist/ui/assets/{backups-section-C0k3svHF.js → backups-section-CRo0NZkA.js} +1 -1
  59. package/dist/ui/assets/channels-uZ_9CBqO.js +1 -0
  60. package/dist/ui/assets/checkbox-32DNqW_Q.js +1 -0
  61. package/dist/ui/assets/{claude-extension-CSnMQC_L.js → claude-extension-BfXlz5gV.js} +1 -1
  62. package/dist/ui/assets/cliproxy-DjNY9H-U.js +3 -0
  63. package/dist/ui/assets/{cliproxy-ai-providers-DdQZEqoN.js → cliproxy-ai-providers-5SHLMHiy.js} +5 -5
  64. package/dist/ui/assets/{cliproxy-control-panel-3Glps_oU.js → cliproxy-control-panel-Zax_m1AC.js} +1 -1
  65. package/dist/ui/assets/codex-CRUSpjsu.js +27 -0
  66. package/dist/ui/assets/{confirm-dialog-tjayxZcM.js → confirm-dialog-DVf5ZmCZ.js} +1 -1
  67. package/dist/ui/assets/copilot-BZrihl_Z.js +3 -0
  68. package/dist/ui/assets/cursor-BP4nbEk_.js +1 -0
  69. package/dist/ui/assets/{droid-C4qduLWT.js → droid-BG92rdM2.js} +2 -2
  70. package/dist/ui/assets/globalenv-section-Cf6dKgSf.js +1 -0
  71. package/dist/ui/assets/{health-ocBJ9xoH.js → health-BTy1UZs3.js} +1 -1
  72. package/dist/ui/assets/icons-CeH5899d.js +1 -0
  73. package/dist/ui/assets/index-B6SrL1O-.css +1 -0
  74. package/dist/ui/assets/index-BVeN0dIB.js +1 -0
  75. package/dist/ui/assets/{index-B3D2Pi4S.js → index-Corv1lSo.js} +32 -32
  76. package/dist/ui/assets/{index-BkXZkwWB.js → index-DHrTq-0n.js} +1 -1
  77. package/dist/ui/assets/index-DuRYaONg.js +1 -0
  78. package/dist/ui/assets/index-N2ZSJurX.js +1 -0
  79. package/dist/ui/assets/index-wg7UtkFv.js +1 -0
  80. package/dist/ui/assets/{masked-input-XGpOJSYQ.js → masked-input-DX9bedLy.js} +1 -1
  81. package/dist/ui/assets/{proxy-status-widget-DwizqfDs.js → proxy-status-widget-DVDMuZK5.js} +1 -1
  82. package/dist/ui/assets/{radix-ui-Dt3edmE5.js → radix-ui-C98W0NRG.js} +1 -1
  83. package/dist/ui/assets/{raw-json-settings-editor-panel-DLf0iq8r.js → raw-json-settings-editor-panel-Dkt5E6Z_.js} +1 -1
  84. package/dist/ui/assets/{searchable-select-C2N5ZoC7.js → searchable-select-BP3Q1-Yn.js} +1 -1
  85. package/dist/ui/assets/separator-BLGGUlh9.js +1 -0
  86. package/dist/ui/assets/{shared-CbpV9mUS.js → shared-G0XRyLig.js} +1 -1
  87. package/dist/ui/assets/{table-CkgTbRUO.js → table-B4lRrWC-.js} +1 -1
  88. package/dist/ui/assets/{tanstack-CkjseTWE.js → tanstack-CfKik0yL.js} +1 -1
  89. package/dist/ui/assets/{updates-HsQEuJIR.js → updates--A2Sdo7N.js} +1 -1
  90. package/dist/ui/index.html +5 -5
  91. package/dist/utils/hooks/get-image-analysis-hook-env.d.ts +3 -2
  92. package/dist/utils/hooks/get-image-analysis-hook-env.d.ts.map +1 -1
  93. package/dist/utils/hooks/get-image-analysis-hook-env.js +15 -6
  94. package/dist/utils/hooks/get-image-analysis-hook-env.js.map +1 -1
  95. package/dist/utils/hooks/image-analysis-backend-resolver.d.ts +53 -0
  96. package/dist/utils/hooks/image-analysis-backend-resolver.d.ts.map +1 -0
  97. package/dist/utils/hooks/image-analysis-backend-resolver.js +376 -0
  98. package/dist/utils/hooks/image-analysis-backend-resolver.js.map +1 -0
  99. package/dist/utils/hooks/image-analysis-runtime-status.d.ts +17 -0
  100. package/dist/utils/hooks/image-analysis-runtime-status.d.ts.map +1 -0
  101. package/dist/utils/hooks/image-analysis-runtime-status.js +132 -0
  102. package/dist/utils/hooks/image-analysis-runtime-status.js.map +1 -0
  103. package/dist/utils/hooks/image-analyzer-profile-hook-injector.d.ts +6 -5
  104. package/dist/utils/hooks/image-analyzer-profile-hook-injector.d.ts.map +1 -1
  105. package/dist/utils/hooks/image-analyzer-profile-hook-injector.js +37 -17
  106. package/dist/utils/hooks/image-analyzer-profile-hook-injector.js.map +1 -1
  107. package/dist/utils/hooks/index.d.ts +2 -0
  108. package/dist/utils/hooks/index.d.ts.map +1 -1
  109. package/dist/utils/hooks/index.js +8 -1
  110. package/dist/utils/hooks/index.js.map +1 -1
  111. package/dist/web-server/index.d.ts.map +1 -1
  112. package/dist/web-server/index.js +6 -1
  113. package/dist/web-server/index.js.map +1 -1
  114. package/dist/web-server/routes/image-analysis-routes.d.ts +3 -0
  115. package/dist/web-server/routes/image-analysis-routes.d.ts.map +1 -0
  116. package/dist/web-server/routes/image-analysis-routes.js +362 -0
  117. package/dist/web-server/routes/image-analysis-routes.js.map +1 -0
  118. package/dist/web-server/routes/index.d.ts.map +1 -1
  119. package/dist/web-server/routes/index.js +2 -0
  120. package/dist/web-server/routes/index.js.map +1 -1
  121. package/dist/web-server/routes/settings-routes.d.ts.map +1 -1
  122. package/dist/web-server/routes/settings-routes.js +67 -5
  123. package/dist/web-server/routes/settings-routes.js.map +1 -1
  124. package/dist/web-server/services/codex-dashboard-service.d.ts.map +1 -1
  125. package/dist/web-server/services/codex-dashboard-service.js +14 -0
  126. package/dist/web-server/services/codex-dashboard-service.js.map +1 -1
  127. package/package.json +2 -2
  128. package/scripts/github/normalize-ai-review-output.mjs +305 -17
  129. package/scripts/github/prepare-ai-review-scope.mjs +338 -0
  130. package/dist/ui/assets/api-DpKfrsn2.js +0 -4
  131. package/dist/ui/assets/channels-Cpxagv1M.js +0 -1
  132. package/dist/ui/assets/checkbox-B_ZY6YZW.js +0 -1
  133. package/dist/ui/assets/cliproxy-D9B-TLY3.js +0 -3
  134. package/dist/ui/assets/codex-xj_XJVjB.js +0 -27
  135. package/dist/ui/assets/copilot-DQ5Dr5Ff.js +0 -3
  136. package/dist/ui/assets/cursor-DtFjK37Z.js +0 -1
  137. package/dist/ui/assets/globalenv-section-B2YBzWoz.js +0 -1
  138. package/dist/ui/assets/icons-Cn04FDSc.js +0 -1
  139. package/dist/ui/assets/index-1TKCj6WA.js +0 -1
  140. package/dist/ui/assets/index-9Qv0NQVB.js +0 -1
  141. package/dist/ui/assets/index-C9UUemEw.js +0 -1
  142. package/dist/ui/assets/index-DGQOg_8Q.css +0 -1
  143. package/dist/ui/assets/separator-CuY8SIhQ.js +0 -1
  144. package/dist/ui/assets/switch-Dz4ptkeA.js +0 -1
@@ -10,6 +10,8 @@
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
11
  exports.getImageAnalysisHookEnv = void 0;
12
12
  const unified_config_loader_1 = require("../../config/unified-config-loader");
13
+ const provider_capabilities_1 = require("../../cliproxy/provider-capabilities");
14
+ const image_analysis_backend_resolver_1 = require("./image-analysis-backend-resolver");
13
15
  /**
14
16
  * Serialize provider_models map to env var format: provider:model,provider:model
15
17
  */
@@ -22,19 +24,26 @@ function serializeProviderModels(providerModels) {
22
24
  * Get image analysis hook environment variables.
23
25
  * These env vars control the hook's behavior via Claude Code hook system.
24
26
  *
25
- * @param provider - Current CLIProxy provider (e.g., 'agy', 'gemini', 'codex')
27
+ * @param input - Current runtime context
26
28
  * @returns Environment variables for image analysis hook
27
29
  */
28
- function getImageAnalysisHookEnv(provider) {
30
+ function getImageAnalysisHookEnv(input) {
29
31
  const config = (0, unified_config_loader_1.getImageAnalysisConfig)();
30
- // Check if current provider has a vision model configured
31
- const hasVisionModel = provider && config.provider_models[provider];
32
- const skipImageAnalysis = !config.enabled || !hasVisionModel;
32
+ const context = typeof input === 'string'
33
+ ? {
34
+ profileName: input,
35
+ cliproxyProvider: (0, provider_capabilities_1.mapExternalProviderName)(input) ?? undefined,
36
+ }
37
+ : input;
38
+ const status = context
39
+ ? (0, image_analysis_backend_resolver_1.resolveImageAnalysisStatus)(context, config)
40
+ : (0, image_analysis_backend_resolver_1.resolveImageAnalysisStatus)({ profileName: '' }, config);
41
+ const skipImageAnalysis = !status.supported;
33
42
  return {
34
43
  CCS_IMAGE_ANALYSIS_ENABLED: config.enabled ? '1' : '0',
35
44
  CCS_IMAGE_ANALYSIS_TIMEOUT: String(Number(config.timeout) || 60),
36
45
  CCS_IMAGE_ANALYSIS_PROVIDER_MODELS: serializeProviderModels(config.provider_models),
37
- CCS_CURRENT_PROVIDER: provider || '',
46
+ CCS_CURRENT_PROVIDER: status.backendId || '',
38
47
  CCS_IMAGE_ANALYSIS_SKIP: skipImageAnalysis ? '1' : '0',
39
48
  };
40
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get-image-analysis-hook-env.js","sourceRoot":"","sources":["../../../src/utils/hooks/get-image-analysis-hook-env.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,8EAA4E;AAE5E;;GAEG;AACH,SAAS,uBAAuB,CAAC,cAAsC;IACrE,OAAO,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;SAClC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC;SAClD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,uBAAuB,CAAC,QAAiB;IACvD,MAAM,MAAM,GAAG,IAAA,8CAAsB,GAAE,CAAC;IAExC,0DAA0D;IAC1D,MAAM,cAAc,GAAG,QAAQ,IAAI,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACpE,MAAM,iBAAiB,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC;IAE7D,OAAO;QACL,0BAA0B,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;QACtD,0BAA0B,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAChE,kCAAkC,EAAE,uBAAuB,CAAC,MAAM,CAAC,eAAe,CAAC;QACnF,oBAAoB,EAAE,QAAQ,IAAI,EAAE;QACpC,uBAAuB,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;KACvD,CAAC;AACJ,CAAC;AAdD,0DAcC"}
1
+ {"version":3,"file":"get-image-analysis-hook-env.js","sourceRoot":"","sources":["../../../src/utils/hooks/get-image-analysis-hook-env.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,8EAA4E;AAC5E,gFAA+E;AAC/E,uFAG2C;AAE3C;;GAEG;AACH,SAAS,uBAAuB,CAAC,cAAsC;IACrE,OAAO,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;SAClC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC;SAClD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,uBAAuB,CACrC,KAA+C;IAE/C,MAAM,MAAM,GAAG,IAAA,8CAAsB,GAAE,CAAC;IACxC,MAAM,OAAO,GACX,OAAO,KAAK,KAAK,QAAQ;QACvB,CAAC,CAAC;YACE,WAAW,EAAE,KAAK;YAClB,gBAAgB,EAAE,IAAA,+CAAuB,EAAC,KAAK,CAAC,IAAI,SAAS;SAC9D;QACH,CAAC,CAAC,KAAK,CAAC;IACZ,MAAM,MAAM,GAAG,OAAO;QACpB,CAAC,CAAC,IAAA,4DAA0B,EAAC,OAAO,EAAE,MAAM,CAAC;QAC7C,CAAC,CAAC,IAAA,4DAA0B,EAAC,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5D,MAAM,iBAAiB,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;IAE5C,OAAO;QACL,0BAA0B,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;QACtD,0BAA0B,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAChE,kCAAkC,EAAE,uBAAuB,CAAC,MAAM,CAAC,eAAe,CAAC;QACnF,oBAAoB,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;QAC5C,uBAAuB,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;KACvD,CAAC;AACJ,CAAC;AAvBD,0DAuBC"}
@@ -0,0 +1,53 @@
1
+ import { type ImageAnalysisConfig } from '../../config/unified-config-types';
2
+ import type { CliproxyBridgeMetadata } from '../../api/services/profile-types';
3
+ import type { Settings } from '../../types/config';
4
+ import type { ProfileType } from '../../types/profile';
5
+ export type ImageAnalysisResolutionSource = 'cliproxy-provider' | 'cliproxy-variant' | 'cliproxy-composite' | 'copilot-alias' | 'cliproxy-bridge' | 'profile-backend' | 'fallback-backend' | 'native-compatible' | 'disabled' | 'unsupported-profile' | 'unresolved' | 'missing-model';
6
+ export type ImageAnalysisStatusCode = 'active' | 'mapped' | 'attention' | 'disabled' | 'skipped' | 'hook-missing';
7
+ export type ImageAnalysisAuthReadiness = 'not-needed' | 'ready' | 'missing' | 'unknown';
8
+ export type ImageAnalysisProxyReadiness = 'not-needed' | 'ready' | 'remote' | 'stopped' | 'unavailable' | 'unknown';
9
+ export type ImageAnalysisEffectiveRuntimeMode = 'cliproxy-image-analysis' | 'native-read';
10
+ export interface ImageAnalysisResolutionContext {
11
+ profileName: string;
12
+ profileType?: ProfileType;
13
+ settingsPath?: string | null;
14
+ cliproxyProvider?: string | null;
15
+ isComposite?: boolean;
16
+ settings?: Pick<Settings, 'env' | 'ccs_image'> | null;
17
+ cliproxyBridge?: CliproxyBridgeMetadata | null;
18
+ hookInstalled?: boolean;
19
+ sharedHookInstalled?: boolean;
20
+ }
21
+ export interface ImageAnalysisStatus {
22
+ enabled: boolean;
23
+ supported: boolean;
24
+ status: ImageAnalysisStatusCode;
25
+ backendId: string | null;
26
+ backendDisplayName: string | null;
27
+ model: string | null;
28
+ resolutionSource: ImageAnalysisResolutionSource;
29
+ reason: string | null;
30
+ shouldPersistHook: boolean;
31
+ persistencePath: string | null;
32
+ runtimePath: string | null;
33
+ usesCurrentTarget: boolean | null;
34
+ usesCurrentAuthToken: boolean | null;
35
+ hookInstalled: boolean | null;
36
+ sharedHookInstalled: boolean | null;
37
+ authReadiness: ImageAnalysisAuthReadiness;
38
+ authProvider: string | null;
39
+ authDisplayName: string | null;
40
+ authReason: string | null;
41
+ proxyReadiness: ImageAnalysisProxyReadiness;
42
+ proxyReason: string | null;
43
+ effectiveRuntimeMode: ImageAnalysisEffectiveRuntimeMode;
44
+ effectiveRuntimeReason: string | null;
45
+ profileModel: string | null;
46
+ nativeReadPreference: boolean;
47
+ nativeImageCapable: boolean | null;
48
+ nativeImageReason: string | null;
49
+ }
50
+ export declare function normalizeImageAnalysisBackendId(value: string | null | undefined, knownBackends?: Iterable<string>): string | null;
51
+ export declare function canonicalizeImageAnalysisConfig(config: ImageAnalysisConfig): ImageAnalysisConfig;
52
+ export declare function resolveImageAnalysisStatus(context: ImageAnalysisResolutionContext, rawConfig?: ImageAnalysisConfig): ImageAnalysisStatus;
53
+ //# sourceMappingURL=image-analysis-backend-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-analysis-backend-resolver.d.ts","sourceRoot":"","sources":["../../../src/utils/hooks/image-analysis-backend-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,376 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveImageAnalysisStatus = exports.canonicalizeImageAnalysisConfig = exports.normalizeImageAnalysisBackendId = void 0;
4
+ const unified_config_types_1 = require("../../config/unified-config-types");
5
+ const provider_capabilities_1 = require("../../cliproxy/provider-capabilities");
6
+ const model_catalog_1 = require("../../cliproxy/model-catalog");
7
+ const model_id_normalizer_1 = require("../../cliproxy/model-id-normalizer");
8
+ const extended_context_utils_1 = require("../../shared/extended-context-utils");
9
+ const PROFILE_MODEL_ENV_KEYS = [
10
+ 'ANTHROPIC_MODEL',
11
+ 'ANTHROPIC_DEFAULT_OPUS_MODEL',
12
+ 'ANTHROPIC_DEFAULT_SONNET_MODEL',
13
+ 'ANTHROPIC_DEFAULT_HAIKU_MODEL',
14
+ ];
15
+ function resolveProviderFromBaseUrl(baseUrl) {
16
+ if (typeof baseUrl !== 'string' || baseUrl.trim().length === 0) {
17
+ return null;
18
+ }
19
+ try {
20
+ const parsed = new URL(baseUrl);
21
+ const extracted = (0, model_id_normalizer_1.extractProviderFromPathname)(parsed.pathname);
22
+ return extracted ? (0, provider_capabilities_1.mapExternalProviderName)(extracted) : null;
23
+ }
24
+ catch {
25
+ const extracted = (0, model_id_normalizer_1.extractProviderFromPathname)(baseUrl);
26
+ return extracted ? (0, provider_capabilities_1.mapExternalProviderName)(extracted) : null;
27
+ }
28
+ }
29
+ function findCaseInsensitiveKey(entries, requestedKey) {
30
+ if (!entries) {
31
+ return null;
32
+ }
33
+ const normalizedRequestedKey = requestedKey.trim().toLowerCase();
34
+ for (const key of Object.keys(entries)) {
35
+ if (key.trim().toLowerCase() === normalizedRequestedKey) {
36
+ return key;
37
+ }
38
+ }
39
+ return null;
40
+ }
41
+ function normalizeImageAnalysisBackendId(value, knownBackends = []) {
42
+ if (!value || value.trim().length === 0) {
43
+ return null;
44
+ }
45
+ const trimmed = value.trim();
46
+ const canonicalProvider = (0, provider_capabilities_1.mapExternalProviderName)(trimmed.toLowerCase());
47
+ if (canonicalProvider) {
48
+ return canonicalProvider;
49
+ }
50
+ const knownBackendList = Array.from(knownBackends);
51
+ const exactKey = knownBackendList.find((backend) => backend === trimmed);
52
+ if (exactKey) {
53
+ return exactKey;
54
+ }
55
+ const caseInsensitiveKey = knownBackendList.find((backend) => backend.trim().toLowerCase() === trimmed.toLowerCase());
56
+ if (caseInsensitiveKey) {
57
+ return caseInsensitiveKey;
58
+ }
59
+ return trimmed.toLowerCase();
60
+ }
61
+ exports.normalizeImageAnalysisBackendId = normalizeImageAnalysisBackendId;
62
+ function canonicalizeImageAnalysisConfig(config) {
63
+ const normalizedProviderModels = Object.entries(config.provider_models ?? {}).reduce((acc, [backend, model]) => {
64
+ const normalizedBackend = normalizeImageAnalysisBackendId(backend, Object.keys(unified_config_types_1.DEFAULT_IMAGE_ANALYSIS_CONFIG.provider_models));
65
+ if (!normalizedBackend || typeof model !== 'string' || model.trim().length === 0) {
66
+ return acc;
67
+ }
68
+ acc[normalizedBackend] = model.trim();
69
+ return acc;
70
+ }, {});
71
+ const normalizedFallbackBackend = normalizeImageAnalysisBackendId(config.fallback_backend ?? unified_config_types_1.DEFAULT_IMAGE_ANALYSIS_CONFIG.fallback_backend, Object.keys(normalizedProviderModels)) ?? unified_config_types_1.DEFAULT_IMAGE_ANALYSIS_CONFIG.fallback_backend;
72
+ const normalizedProfileBackends = Object.entries(config.profile_backends ?? {}).reduce((acc, [profileName, backend]) => {
73
+ const trimmedProfileName = profileName.trim();
74
+ const normalizedBackend = normalizeImageAnalysisBackendId(backend, Object.keys(normalizedProviderModels));
75
+ if (!trimmedProfileName || !normalizedBackend) {
76
+ return acc;
77
+ }
78
+ acc[trimmedProfileName] = normalizedBackend;
79
+ return acc;
80
+ }, {});
81
+ return {
82
+ enabled: config.enabled,
83
+ timeout: config.timeout,
84
+ provider_models: normalizedProviderModels,
85
+ fallback_backend: normalizedFallbackBackend,
86
+ profile_backends: normalizedProfileBackends,
87
+ };
88
+ }
89
+ exports.canonicalizeImageAnalysisConfig = canonicalizeImageAnalysisConfig;
90
+ function resolveConfiguredProfileBackend(profileName, config) {
91
+ if (!config.profile_backends) {
92
+ return null;
93
+ }
94
+ const exactKey = config.profile_backends[profileName];
95
+ if (exactKey) {
96
+ return normalizeImageAnalysisBackendId(exactKey, Object.keys(config.provider_models));
97
+ }
98
+ const matchedKey = findCaseInsensitiveKey(config.profile_backends, profileName);
99
+ if (!matchedKey) {
100
+ return null;
101
+ }
102
+ return normalizeImageAnalysisBackendId(config.profile_backends[matchedKey], Object.keys(config.provider_models));
103
+ }
104
+ function getBackendDisplayName(backendId) {
105
+ if (!backendId) {
106
+ return null;
107
+ }
108
+ return (0, provider_capabilities_1.isCLIProxyProvider)(backendId) ? (0, provider_capabilities_1.getProviderDisplayName)(backendId) : backendId;
109
+ }
110
+ function getRuntimePath(backendId) {
111
+ if (!backendId) {
112
+ return null;
113
+ }
114
+ return `/api/provider/${backendId}`;
115
+ }
116
+ function resolveNativeImageProvider(context, knownBackends) {
117
+ return normalizeImageAnalysisBackendId(context.cliproxyProvider ??
118
+ context.cliproxyBridge?.provider ??
119
+ resolveProviderFromBaseUrl(context.settings?.env?.ANTHROPIC_BASE_URL ?? undefined), knownBackends);
120
+ }
121
+ function resolveProfileModel(context, provider) {
122
+ const env = context.settings?.env;
123
+ if (env && typeof env === 'object') {
124
+ for (const key of PROFILE_MODEL_ENV_KEYS) {
125
+ const value = env[key];
126
+ if (typeof value === 'string' && value.trim().length > 0) {
127
+ return value.trim();
128
+ }
129
+ }
130
+ }
131
+ if (provider && (0, provider_capabilities_1.isCLIProxyProvider)(provider)) {
132
+ return (0, model_catalog_1.getProviderCatalog)(provider)?.defaultModel ?? null;
133
+ }
134
+ return null;
135
+ }
136
+ function verifyNativeImageCapability(provider, modelId) {
137
+ if (!modelId) {
138
+ return null;
139
+ }
140
+ if (provider && (0, provider_capabilities_1.isCLIProxyProvider)(provider) && (0, model_catalog_1.supportsNativeImageInput)(provider, modelId)) {
141
+ return true;
142
+ }
143
+ const normalizedModel = (0, extended_context_utils_1.stripModelConfigurationSuffixes)(modelId).trim().toLowerCase();
144
+ if (!normalizedModel) {
145
+ return null;
146
+ }
147
+ if (normalizedModel.startsWith('gemini-') ||
148
+ normalizedModel.startsWith('claude-') ||
149
+ normalizedModel.startsWith('gpt-4o') ||
150
+ normalizedModel.includes('vision') ||
151
+ normalizedModel.includes('multimodal') ||
152
+ /(^|[-_.])vl([-. _]|$)/.test(normalizedModel) ||
153
+ /^glm-[\d.]+v([-. _]|$)/.test(normalizedModel)) {
154
+ return true;
155
+ }
156
+ return null;
157
+ }
158
+ function resolveNativeImageSupport(context, config) {
159
+ const knownBackends = Object.keys(config.provider_models);
160
+ const provider = resolveNativeImageProvider(context, knownBackends);
161
+ const profileModel = resolveProfileModel(context, provider);
162
+ const nativeReadPreference = context.settings?.ccs_image?.native_read === true;
163
+ const nativeImageCapable = verifyNativeImageCapability(provider, profileModel);
164
+ let nativeImageReason = null;
165
+ if (!profileModel) {
166
+ nativeImageReason = 'No current model is configured for this profile yet.';
167
+ }
168
+ else if (nativeImageCapable) {
169
+ nativeImageReason = `${profileModel} can read images natively.`;
170
+ }
171
+ else {
172
+ nativeImageReason = `CCS cannot verify native image support for ${profileModel} yet.`;
173
+ }
174
+ return {
175
+ profileModel,
176
+ nativeReadPreference,
177
+ nativeImageCapable,
178
+ nativeImageReason,
179
+ };
180
+ }
181
+ function resolveBackend(context, config, nativeSupport) {
182
+ const { profileName, profileType, cliproxyProvider, isComposite, cliproxyBridge, settings } = context;
183
+ if (!config.enabled) {
184
+ return {
185
+ backendId: null,
186
+ backendDisplayName: null,
187
+ resolutionSource: 'disabled',
188
+ reason: 'Disabled globally.',
189
+ };
190
+ }
191
+ if (profileType === 'default' || profileType === 'account') {
192
+ return {
193
+ backendId: null,
194
+ backendDisplayName: null,
195
+ resolutionSource: 'unsupported-profile',
196
+ reason: 'This profile type is not currently covered by image-analysis runtime.',
197
+ };
198
+ }
199
+ if (nativeSupport.nativeReadPreference) {
200
+ return {
201
+ backendId: null,
202
+ backendDisplayName: null,
203
+ resolutionSource: 'native-compatible',
204
+ reason: nativeSupport.nativeImageCapable === true
205
+ ? 'This profile is set to use native image reading.'
206
+ : `${nativeSupport.nativeImageReason ?? 'Native image reading is enabled for this profile.'} CCS will bypass the transformer for this profile.`,
207
+ };
208
+ }
209
+ // Explicit profile mappings are the only user-authored override and must
210
+ // win before provider/bridge inference.
211
+ const mappedBackend = resolveConfiguredProfileBackend(profileName, config);
212
+ if (mappedBackend) {
213
+ return {
214
+ backendId: mappedBackend,
215
+ backendDisplayName: getBackendDisplayName(mappedBackend),
216
+ resolutionSource: 'profile-backend',
217
+ reason: null,
218
+ };
219
+ }
220
+ if (profileType === 'copilot' || profileName === 'copilot') {
221
+ const backendId = normalizeImageAnalysisBackendId('ghcp', Object.keys(config.provider_models));
222
+ return {
223
+ backendId,
224
+ backendDisplayName: getBackendDisplayName(backendId),
225
+ resolutionSource: 'copilot-alias',
226
+ reason: null,
227
+ };
228
+ }
229
+ const normalizedCliproxyProvider = normalizeImageAnalysisBackendId(cliproxyProvider, Object.keys(config.provider_models));
230
+ if (normalizedCliproxyProvider) {
231
+ return {
232
+ backendId: normalizedCliproxyProvider,
233
+ backendDisplayName: getBackendDisplayName(normalizedCliproxyProvider),
234
+ resolutionSource: isComposite || profileName.startsWith('composite-')
235
+ ? 'cliproxy-composite'
236
+ : profileName === normalizedCliproxyProvider
237
+ ? 'cliproxy-provider'
238
+ : 'cliproxy-variant',
239
+ reason: null,
240
+ };
241
+ }
242
+ const bridgeBackend = normalizeImageAnalysisBackendId(cliproxyBridge?.provider ??
243
+ resolveProviderFromBaseUrl(settings?.env?.ANTHROPIC_BASE_URL ?? undefined), Object.keys(config.provider_models));
244
+ if (bridgeBackend) {
245
+ return {
246
+ backendId: bridgeBackend,
247
+ backendDisplayName: getBackendDisplayName(bridgeBackend),
248
+ resolutionSource: 'cliproxy-bridge',
249
+ reason: null,
250
+ };
251
+ }
252
+ const hasDirectAnthropicApiKey = Boolean(settings?.env?.ANTHROPIC_API_KEY?.trim());
253
+ const hasBaseUrl = Boolean(settings?.env?.ANTHROPIC_BASE_URL?.trim());
254
+ if (hasDirectAnthropicApiKey && !hasBaseUrl) {
255
+ return {
256
+ backendId: null,
257
+ backendDisplayName: null,
258
+ resolutionSource: 'unresolved',
259
+ reason: 'Direct Anthropic settings profiles use native file access unless explicitly mapped.',
260
+ };
261
+ }
262
+ const fallbackBackend = normalizeImageAnalysisBackendId(config.fallback_backend, Object.keys(config.provider_models));
263
+ if (fallbackBackend) {
264
+ return {
265
+ backendId: fallbackBackend,
266
+ backendDisplayName: getBackendDisplayName(fallbackBackend),
267
+ resolutionSource: 'fallback-backend',
268
+ reason: null,
269
+ };
270
+ }
271
+ return {
272
+ backendId: null,
273
+ backendDisplayName: null,
274
+ resolutionSource: 'unresolved',
275
+ reason: 'No supported backend could be resolved.',
276
+ };
277
+ }
278
+ function resolveImageAnalysisStatus(context, rawConfig = unified_config_types_1.DEFAULT_IMAGE_ANALYSIS_CONFIG) {
279
+ const config = canonicalizeImageAnalysisConfig(rawConfig);
280
+ const nativeSupport = resolveNativeImageSupport(context, config);
281
+ const resolution = resolveBackend(context, config, nativeSupport);
282
+ const model = resolution.backendId
283
+ ? (config.provider_models[resolution.backendId] ?? null)
284
+ : null;
285
+ const shouldPersistHook = config.enabled &&
286
+ context.profileType !== 'default' &&
287
+ context.profileType !== 'account' &&
288
+ Boolean(resolution.backendId && model);
289
+ let status = 'active';
290
+ let reason = resolution.reason;
291
+ if (!config.enabled) {
292
+ status = 'disabled';
293
+ reason ?? (reason = 'This profile falls back to native Read because image analysis is turned off in CCS config.');
294
+ }
295
+ else if (!resolution.backendId) {
296
+ status = 'skipped';
297
+ reason ?? (reason = 'No supported backend could be resolved.');
298
+ }
299
+ else if (!model) {
300
+ status = 'skipped';
301
+ reason = 'Resolved backend has no image-analysis model configured.';
302
+ }
303
+ else if (shouldPersistHook &&
304
+ (context.hookInstalled === false || context.sharedHookInstalled === false)) {
305
+ status = 'hook-missing';
306
+ reason =
307
+ context.sharedHookInstalled === false
308
+ ? 'Shared image-analysis hook is not installed.'
309
+ : 'Profile hook is missing from the persisted settings file.';
310
+ }
311
+ else if (resolution.resolutionSource === 'cliproxy-bridge' &&
312
+ context.cliproxyBridge &&
313
+ (!context.cliproxyBridge.usesCurrentTarget || !context.cliproxyBridge.usesCurrentAuthToken)) {
314
+ status = 'attention';
315
+ if (!context.cliproxyBridge.usesCurrentTarget && !context.cliproxyBridge.usesCurrentAuthToken) {
316
+ reason =
317
+ 'Runtime uses the current CLIProxy route and auth token instead of the saved values in this profile.';
318
+ }
319
+ else if (!context.cliproxyBridge.usesCurrentTarget) {
320
+ reason =
321
+ 'Runtime uses the current CLIProxy route instead of the saved route in this profile.';
322
+ }
323
+ else {
324
+ reason =
325
+ 'Runtime uses the current CLIProxy auth token instead of the saved token in this profile.';
326
+ }
327
+ }
328
+ else if (resolution.resolutionSource === 'profile-backend') {
329
+ status = 'mapped';
330
+ }
331
+ return {
332
+ enabled: config.enabled,
333
+ supported: Boolean(config.enabled && resolution.backendId && model),
334
+ status,
335
+ backendId: resolution.backendId,
336
+ backendDisplayName: resolution.backendDisplayName,
337
+ model,
338
+ resolutionSource: resolution.resolutionSource,
339
+ reason,
340
+ shouldPersistHook,
341
+ persistencePath: shouldPersistHook ? `${context.profileName}.settings.json` : null,
342
+ runtimePath: getRuntimePath(resolution.backendId),
343
+ usesCurrentTarget: context.cliproxyBridge?.usesCurrentTarget ?? null,
344
+ usesCurrentAuthToken: context.cliproxyBridge?.usesCurrentAuthToken ?? null,
345
+ hookInstalled: context.hookInstalled ?? null,
346
+ sharedHookInstalled: context.sharedHookInstalled ?? null,
347
+ authReadiness: resolution.backendId && model && (0, provider_capabilities_1.isCLIProxyProvider)(resolution.backendId)
348
+ ? 'unknown'
349
+ : 'not-needed',
350
+ authProvider: resolution.backendId && (0, provider_capabilities_1.isCLIProxyProvider)(resolution.backendId)
351
+ ? resolution.backendId
352
+ : null,
353
+ authDisplayName: resolution.backendId && (0, provider_capabilities_1.isCLIProxyProvider)(resolution.backendId)
354
+ ? (0, provider_capabilities_1.getProviderDisplayName)(resolution.backendId)
355
+ : null,
356
+ authReason: resolution.backendId && model && (0, provider_capabilities_1.isCLIProxyProvider)(resolution.backendId)
357
+ ? 'Auth readiness has not been verified yet.'
358
+ : null,
359
+ proxyReadiness: resolution.backendId && model ? 'unknown' : 'not-needed',
360
+ proxyReason: resolution.backendId && model
361
+ ? 'CLIProxy runtime readiness has not been verified yet.'
362
+ : null,
363
+ effectiveRuntimeMode: config.enabled && resolution.backendId && model && status !== 'hook-missing'
364
+ ? 'cliproxy-image-analysis'
365
+ : 'native-read',
366
+ effectiveRuntimeReason: status === 'hook-missing' || !config.enabled || !resolution.backendId || !model
367
+ ? reason
368
+ : null,
369
+ profileModel: nativeSupport.profileModel,
370
+ nativeReadPreference: nativeSupport.nativeReadPreference,
371
+ nativeImageCapable: nativeSupport.nativeImageCapable,
372
+ nativeImageReason: nativeSupport.nativeImageReason,
373
+ };
374
+ }
375
+ exports.resolveImageAnalysisStatus = resolveImageAnalysisStatus;
376
+ //# sourceMappingURL=image-analysis-backend-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-analysis-backend-resolver.js","sourceRoot":"","sources":["../../../src/utils/hooks/image-analysis-backend-resolver.ts"],"names":[],"mappings":";;;AAAA,4EAG2C;AAC3C,gFAI8C;AAC9C,gEAA4F;AAC5F,4EAAiF;AAIjF,gFAAsF;AAmFtF,MAAM,sBAAsB,GAAG;IAC7B,iBAAiB;IACjB,8BAA8B;IAC9B,gCAAgC;IAChC,+BAA+B;CACvB,CAAC;AAEX,SAAS,0BAA0B,CAAC,OAAgB;IAClD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,IAAA,iDAA2B,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/D,OAAO,SAAS,CAAC,CAAC,CAAC,IAAA,+CAAuB,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,SAAS,GAAG,IAAA,iDAA2B,EAAC,OAAO,CAAC,CAAC;QACvD,OAAO,SAAS,CAAC,CAAC,CAAC,IAAA,+CAAuB,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAA2C,EAC3C,YAAoB;IAEpB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,sBAAsB,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACjE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,sBAAsB,EAAE,CAAC;YACxD,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,+BAA+B,CAC7C,KAAgC,EAChC,gBAAkC,EAAE;IAEpC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,iBAAiB,GAAG,IAAA,+CAAuB,EAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACzE,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IACzE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,IAAI,CAC9C,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CACpE,CAAC;IACF,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC;AAC/B,CAAC;AA5BD,0EA4BC;AAED,SAAgB,+BAA+B,CAAC,MAA2B;IACzE,MAAM,wBAAwB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,MAAM,CAClF,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE;QACxB,MAAM,iBAAiB,GAAG,+BAA+B,CACvD,OAAO,EACP,MAAM,CAAC,IAAI,CAAC,oDAA6B,CAAC,eAAe,CAAC,CAC3D,CAAC;QACF,IAAI,CAAC,iBAAiB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjF,OAAO,GAAG,CAAC;QACb,CAAC;QAED,GAAG,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAA4B,CAC7B,CAAC;IAEF,MAAM,yBAAyB,GAC7B,+BAA+B,CAC7B,MAAM,CAAC,gBAAgB,IAAI,oDAA6B,CAAC,gBAAgB,EACzE,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CACtC,IAAI,oDAA6B,CAAC,gBAAgB,CAAC;IAEtD,MAAM,yBAAyB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,MAAM,CACpF,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE;QAC9B,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,iBAAiB,GAAG,+BAA+B,CACvD,OAAO,EACP,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CACtC,CAAC;QACF,IAAI,CAAC,kBAAkB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC9C,OAAO,GAAG,CAAC;QACb,CAAC;QAED,GAAG,CAAC,kBAAkB,CAAC,GAAG,iBAAiB,CAAC;QAC5C,OAAO,GAAG,CAAC;IACb,CAAC,EACD,EAA4B,CAC7B,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,eAAe,EAAE,wBAAwB;QACzC,gBAAgB,EAAE,yBAAyB;QAC3C,gBAAgB,EAAE,yBAAyB;KAC5C,CAAC;AACJ,CAAC;AA/CD,0EA+CC;AAED,SAAS,+BAA+B,CACtC,WAAmB,EACnB,MAA2B;IAE3B,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACtD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,+BAA+B,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAChF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,+BAA+B,CACpC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,EACnC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CACpC,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAwB;IACrD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAA,0CAAkB,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAA,8CAAsB,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvF,CAAC;AAED,SAAS,cAAc,CAAC,SAAwB;IAC9C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,iBAAiB,SAAS,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,0BAA0B,CACjC,OAAuC,EACvC,aAAuB;IAEvB,OAAO,+BAA+B,CACpC,OAAO,CAAC,gBAAgB;QACtB,OAAO,CAAC,cAAc,EAAE,QAAQ;QAChC,0BAA0B,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,kBAAkB,IAAI,SAAS,CAAC,EACpF,aAAa,CACd,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAAuC,EACvC,QAAuB;IAEvB,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;IAClC,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,sBAAsB,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,IAAI,IAAA,0CAAkB,EAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,OAAO,IAAA,kCAAkB,EAAC,QAAQ,CAAC,EAAE,YAAY,IAAI,IAAI,CAAC;IAC5D,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,2BAA2B,CAClC,QAAuB,EACvB,OAAsB;IAEtB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,QAAQ,IAAI,IAAA,0CAAkB,EAAC,QAAQ,CAAC,IAAI,IAAA,wCAAwB,EAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;QAC5F,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,eAAe,GAAG,IAAA,wDAA+B,EAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACtF,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IACE,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC;QACrC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC;QACrC,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC;QACpC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAClC,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC;QACtC,uBAAuB,CAAC,IAAI,CAAC,eAAe,CAAC;QAC7C,wBAAwB,CAAC,IAAI,CAAC,eAAe,CAAC,EAC9C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB,CAChC,OAAuC,EACvC,MAA2B;IAE3B,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,0BAA0B,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,oBAAoB,GAAG,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,KAAK,IAAI,CAAC;IAC/E,MAAM,kBAAkB,GAAG,2BAA2B,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAE/E,IAAI,iBAAiB,GAAkB,IAAI,CAAC;IAC5C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,iBAAiB,GAAG,sDAAsD,CAAC;IAC7E,CAAC;SAAM,IAAI,kBAAkB,EAAE,CAAC;QAC9B,iBAAiB,GAAG,GAAG,YAAY,4BAA4B,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,iBAAiB,GAAG,8CAA8C,YAAY,OAAO,CAAC;IACxF,CAAC;IAED,OAAO;QACL,YAAY;QACZ,oBAAoB;QACpB,kBAAkB;QAClB,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,OAAuC,EACvC,MAA2B,EAC3B,aAA2C;IAE3C,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,GACzF,OAAO,CAAC;IAEV,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACL,SAAS,EAAE,IAAI;YACf,kBAAkB,EAAE,IAAI;YACxB,gBAAgB,EAAE,UAAU;YAC5B,MAAM,EAAE,oBAAoB;SAC7B,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC3D,OAAO;YACL,SAAS,EAAE,IAAI;YACf,kBAAkB,EAAE,IAAI;YACxB,gBAAgB,EAAE,qBAAqB;YACvC,MAAM,EAAE,uEAAuE;SAChF,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,CAAC,oBAAoB,EAAE,CAAC;QACvC,OAAO;YACL,SAAS,EAAE,IAAI;YACf,kBAAkB,EAAE,IAAI;YACxB,gBAAgB,EAAE,mBAAmB;YACrC,MAAM,EACJ,aAAa,CAAC,kBAAkB,KAAK,IAAI;gBACvC,CAAC,CAAC,kDAAkD;gBACpD,CAAC,CAAC,GAAG,aAAa,CAAC,iBAAiB,IAAI,mDAAmD,oDAAoD;SACpJ,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,wCAAwC;IACxC,MAAM,aAAa,GAAG,+BAA+B,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC3E,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO;YACL,SAAS,EAAE,aAAa;YACxB,kBAAkB,EAAE,qBAAqB,CAAC,aAAa,CAAC;YACxD,gBAAgB,EAAE,iBAAiB;YACnC,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC3D,MAAM,SAAS,GAAG,+BAA+B,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;QAC/F,OAAO;YACL,SAAS;YACT,kBAAkB,EAAE,qBAAqB,CAAC,SAAS,CAAC;YACpD,gBAAgB,EAAE,eAAe;YACjC,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,MAAM,0BAA0B,GAAG,+BAA+B,CAChE,gBAAgB,EAChB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CACpC,CAAC;IACF,IAAI,0BAA0B,EAAE,CAAC;QAC/B,OAAO;YACL,SAAS,EAAE,0BAA0B;YACrC,kBAAkB,EAAE,qBAAqB,CAAC,0BAA0B,CAAC;YACrE,gBAAgB,EACd,WAAW,IAAI,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC;gBACjD,CAAC,CAAC,oBAAoB;gBACtB,CAAC,CAAC,WAAW,KAAK,0BAA0B;oBAC1C,CAAC,CAAC,mBAAmB;oBACrB,CAAC,CAAC,kBAAkB;YAC1B,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,+BAA+B,CACnD,cAAc,EAAE,QAAQ;QACtB,0BAA0B,CAAC,QAAQ,EAAE,GAAG,EAAE,kBAAkB,IAAI,SAAS,CAAC,EAC5E,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CACpC,CAAC;IACF,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO;YACL,SAAS,EAAE,aAAa;YACxB,kBAAkB,EAAE,qBAAqB,CAAC,aAAa,CAAC;YACxD,gBAAgB,EAAE,iBAAiB;YACnC,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,MAAM,wBAAwB,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;IACnF,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,IAAI,wBAAwB,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5C,OAAO;YACL,SAAS,EAAE,IAAI;YACf,kBAAkB,EAAE,IAAI;YACxB,gBAAgB,EAAE,YAAY;YAC9B,MAAM,EAAE,qFAAqF;SAC9F,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,+BAA+B,CACrD,MAAM,CAAC,gBAAgB,EACvB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CACpC,CAAC;IACF,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO;YACL,SAAS,EAAE,eAAe;YAC1B,kBAAkB,EAAE,qBAAqB,CAAC,eAAe,CAAC;YAC1D,gBAAgB,EAAE,kBAAkB;YACpC,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,EAAE,IAAI;QACf,kBAAkB,EAAE,IAAI;QACxB,gBAAgB,EAAE,YAAY;QAC9B,MAAM,EAAE,yCAAyC;KAClD,CAAC;AACJ,CAAC;AAED,SAAgB,0BAA0B,CACxC,OAAuC,EACvC,YAAiC,oDAA6B;IAE9D,MAAM,MAAM,GAAG,+BAA+B,CAAC,SAAS,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,yBAAyB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS;QAChC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;QACxD,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,iBAAiB,GACrB,MAAM,CAAC,OAAO;QACd,OAAO,CAAC,WAAW,KAAK,SAAS;QACjC,OAAO,CAAC,WAAW,KAAK,SAAS;QACjC,OAAO,CAAC,UAAU,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;IAEzC,IAAI,MAAM,GAA4B,QAAQ,CAAC;IAC/C,IAAI,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAE/B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,GAAG,UAAU,CAAC;QACpB,MAAM,KAAN,MAAM,GACJ,4FAA4F,EAAC;IACjG,CAAC;SAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QACjC,MAAM,GAAG,SAAS,CAAC;QACnB,MAAM,KAAN,MAAM,GAAK,yCAAyC,EAAC;IACvD,CAAC;SAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,GAAG,SAAS,CAAC;QACnB,MAAM,GAAG,0DAA0D,CAAC;IACtE,CAAC;SAAM,IACL,iBAAiB;QACjB,CAAC,OAAO,CAAC,aAAa,KAAK,KAAK,IAAI,OAAO,CAAC,mBAAmB,KAAK,KAAK,CAAC,EAC1E,CAAC;QACD,MAAM,GAAG,cAAc,CAAC;QACxB,MAAM;YACJ,OAAO,CAAC,mBAAmB,KAAK,KAAK;gBACnC,CAAC,CAAC,8CAA8C;gBAChD,CAAC,CAAC,2DAA2D,CAAC;IACpE,CAAC;SAAM,IACL,UAAU,CAAC,gBAAgB,KAAK,iBAAiB;QACjD,OAAO,CAAC,cAAc;QACtB,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,iBAAiB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,oBAAoB,CAAC,EAC3F,CAAC;QACD,MAAM,GAAG,WAAW,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,iBAAiB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC;YAC9F,MAAM;gBACJ,qGAAqG,CAAC;QAC1G,CAAC;aAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;YACrD,MAAM;gBACJ,qFAAqF,CAAC;QAC1F,CAAC;aAAM,CAAC;YACN,MAAM;gBACJ,0FAA0F,CAAC;QAC/F,CAAC;IACH,CAAC;SAAM,IAAI,UAAU,CAAC,gBAAgB,KAAK,iBAAiB,EAAE,CAAC;QAC7D,MAAM,GAAG,QAAQ,CAAC;IACpB,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,UAAU,CAAC,SAAS,IAAI,KAAK,CAAC;QACnE,MAAM;QACN,SAAS,EAAE,UAAU,CAAC,SAAS;QAC/B,kBAAkB,EAAE,UAAU,CAAC,kBAAkB;QACjD,KAAK;QACL,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;QAC7C,MAAM;QACN,iBAAiB;QACjB,eAAe,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,gBAAgB,CAAC,CAAC,CAAC,IAAI;QAClF,WAAW,EAAE,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC;QACjD,iBAAiB,EAAE,OAAO,CAAC,cAAc,EAAE,iBAAiB,IAAI,IAAI;QACpE,oBAAoB,EAAE,OAAO,CAAC,cAAc,EAAE,oBAAoB,IAAI,IAAI;QAC1E,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;QAC5C,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,IAAI,IAAI;QACxD,aAAa,EACX,UAAU,CAAC,SAAS,IAAI,KAAK,IAAI,IAAA,0CAAkB,EAAC,UAAU,CAAC,SAAS,CAAC;YACvE,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,YAAY;QAClB,YAAY,EACV,UAAU,CAAC,SAAS,IAAI,IAAA,0CAAkB,EAAC,UAAU,CAAC,SAAS,CAAC;YAC9D,CAAC,CAAC,UAAU,CAAC,SAAS;YACtB,CAAC,CAAC,IAAI;QACV,eAAe,EACb,UAAU,CAAC,SAAS,IAAI,IAAA,0CAAkB,EAAC,UAAU,CAAC,SAAS,CAAC;YAC9D,CAAC,CAAC,IAAA,8CAAsB,EAAC,UAAU,CAAC,SAAS,CAAC;YAC9C,CAAC,CAAC,IAAI;QACV,UAAU,EACR,UAAU,CAAC,SAAS,IAAI,KAAK,IAAI,IAAA,0CAAkB,EAAC,UAAU,CAAC,SAAS,CAAC;YACvE,CAAC,CAAC,2CAA2C;YAC7C,CAAC,CAAC,IAAI;QACV,cAAc,EAAE,UAAU,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY;QACxE,WAAW,EACT,UAAU,CAAC,SAAS,IAAI,KAAK;YAC3B,CAAC,CAAC,uDAAuD;YACzD,CAAC,CAAC,IAAI;QACV,oBAAoB,EAClB,MAAM,CAAC,OAAO,IAAI,UAAU,CAAC,SAAS,IAAI,KAAK,IAAI,MAAM,KAAK,cAAc;YAC1E,CAAC,CAAC,yBAAyB;YAC3B,CAAC,CAAC,aAAa;QACnB,sBAAsB,EACpB,MAAM,KAAK,cAAc,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,KAAK;YAC7E,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,IAAI;QACV,YAAY,EAAE,aAAa,CAAC,YAAY;QACxC,oBAAoB,EAAE,aAAa,CAAC,oBAAoB;QACxD,kBAAkB,EAAE,aAAa,CAAC,kBAAkB;QACpD,iBAAiB,EAAE,aAAa,CAAC,iBAAiB;KACnD,CAAC;AACJ,CAAC;AA5GD,gEA4GC"}
@@ -0,0 +1,17 @@
1
+ import { type AuthStatus } from '../../cliproxy/auth-handler';
2
+ import { type RemoteAuthStatus } from '../../cliproxy/remote-auth-fetcher';
3
+ import { type ProxyTarget } from '../../cliproxy/proxy-target-resolver';
4
+ import type { CLIProxyProvider } from '../../cliproxy/types';
5
+ import { type ImageAnalysisConfig } from '../../config/unified-config-types';
6
+ import { type ImageAnalysisResolutionContext, type ImageAnalysisStatus } from './image-analysis-backend-resolver';
7
+ interface ImageAnalysisRuntimeStatusDeps {
8
+ fetchRemoteAuthStatus: (target: ProxyTarget) => Promise<RemoteAuthStatus[]>;
9
+ getAuthStatus: (provider: CLIProxyProvider) => AuthStatus;
10
+ getProxyTarget: () => ProxyTarget;
11
+ initializeAccounts: () => void;
12
+ isCliproxyRunning: () => Promise<boolean>;
13
+ }
14
+ export declare function hydrateImageAnalysisRuntimeStatus(baseStatus: ImageAnalysisStatus, deps?: Partial<ImageAnalysisRuntimeStatusDeps>): Promise<ImageAnalysisStatus>;
15
+ export declare function resolveImageAnalysisRuntimeStatus(context: ImageAnalysisResolutionContext, config?: ImageAnalysisConfig, deps?: Partial<ImageAnalysisRuntimeStatusDeps>): Promise<ImageAnalysisStatus>;
16
+ export {};
17
+ //# sourceMappingURL=image-analysis-runtime-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-analysis-runtime-status.d.ts","sourceRoot":"","sources":["../../../src/utils/hooks/image-analysis-runtime-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACjG,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAClG,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAGxF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAEL,KAAK,8BAA8B,EACnC,KAAK,mBAAmB,EACzB,MAAM,mCAAmC,CAAC;AAE3C,UAAU,8BAA8B;IACtC,qBAAqB,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAC5E,aAAa,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,UAAU,CAAC;IAC1D,cAAc,EAAE,MAAM,WAAW,CAAC;IAClC,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,iBAAiB,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3C;AA8HD,wBAAsB,iCAAiC,CACrD,UAAU,EAAE,mBAAmB,EAC/B,IAAI,GAAE,OAAO,CAAC,8BAA8B,CAAM,GACjD,OAAO,CAAC,mBAAmB,CAAC,CAc9B;AAED,wBAAsB,iCAAiC,CACrD,OAAO,EAAE,8BAA8B,EACvC,MAAM,GAAE,mBAAmD,EAC3D,IAAI,GAAE,OAAO,CAAC,8BAA8B,CAAM,GACjD,OAAO,CAAC,mBAAmB,CAAC,CAG9B"}