@kaitranntt/ccs 7.50.0-dev.1 → 7.50.0-dev.10

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 (208) hide show
  1. package/README.md +65 -4
  2. package/config/base-iflow.settings.json +4 -4
  3. package/dist/api/services/profile-writer.d.ts +1 -1
  4. package/dist/api/services/profile-writer.d.ts.map +1 -1
  5. package/dist/api/services/profile-writer.js +18 -5
  6. package/dist/api/services/profile-writer.js.map +1 -1
  7. package/dist/auth/account-context.d.ts +11 -0
  8. package/dist/auth/account-context.d.ts.map +1 -1
  9. package/dist/auth/account-context.js +42 -8
  10. package/dist/auth/account-context.js.map +1 -1
  11. package/dist/auth/auth-commands.d.ts.map +1 -1
  12. package/dist/auth/auth-commands.js +9 -0
  13. package/dist/auth/auth-commands.js.map +1 -1
  14. package/dist/auth/commands/create-command-env.d.ts +3 -0
  15. package/dist/auth/commands/create-command-env.d.ts.map +1 -0
  16. package/dist/auth/commands/create-command-env.js +55 -0
  17. package/dist/auth/commands/create-command-env.js.map +1 -0
  18. package/dist/auth/commands/create-command.d.ts.map +1 -1
  19. package/dist/auth/commands/create-command.js +136 -30
  20. package/dist/auth/commands/create-command.js.map +1 -1
  21. package/dist/auth/commands/list-command.d.ts.map +1 -1
  22. package/dist/auth/commands/list-command.js +5 -1
  23. package/dist/auth/commands/list-command.js.map +1 -1
  24. package/dist/auth/commands/show-command.d.ts.map +1 -1
  25. package/dist/auth/commands/show-command.js +1 -0
  26. package/dist/auth/commands/show-command.js.map +1 -1
  27. package/dist/auth/commands/types.d.ts +3 -0
  28. package/dist/auth/commands/types.d.ts.map +1 -1
  29. package/dist/auth/commands/types.js +24 -0
  30. package/dist/auth/commands/types.js.map +1 -1
  31. package/dist/auth/profile-detector.d.ts.map +1 -1
  32. package/dist/auth/profile-detector.js +1 -0
  33. package/dist/auth/profile-detector.js.map +1 -1
  34. package/dist/auth/profile-registry.d.ts +2 -0
  35. package/dist/auth/profile-registry.d.ts.map +1 -1
  36. package/dist/auth/profile-registry.js +45 -7
  37. package/dist/auth/profile-registry.js.map +1 -1
  38. package/dist/ccs.js +46 -8
  39. package/dist/ccs.js.map +1 -1
  40. package/dist/cliproxy/account-safety.d.ts.map +1 -1
  41. package/dist/cliproxy/account-safety.js +4 -0
  42. package/dist/cliproxy/account-safety.js.map +1 -1
  43. package/dist/cliproxy/antigravity-responsibility.d.ts +36 -0
  44. package/dist/cliproxy/antigravity-responsibility.d.ts.map +1 -0
  45. package/dist/cliproxy/antigravity-responsibility.js +171 -0
  46. package/dist/cliproxy/antigravity-responsibility.js.map +1 -0
  47. package/dist/cliproxy/auth/auth-types.d.ts +2 -0
  48. package/dist/cliproxy/auth/auth-types.d.ts.map +1 -1
  49. package/dist/cliproxy/auth/oauth-handler.d.ts.map +1 -1
  50. package/dist/cliproxy/auth/oauth-handler.js +18 -0
  51. package/dist/cliproxy/auth/oauth-handler.js.map +1 -1
  52. package/dist/cliproxy/config/env-builder.d.ts.map +1 -1
  53. package/dist/cliproxy/config/env-builder.js +57 -0
  54. package/dist/cliproxy/config/env-builder.js.map +1 -1
  55. package/dist/cliproxy/config/generator.d.ts +2 -1
  56. package/dist/cliproxy/config/generator.d.ts.map +1 -1
  57. package/dist/cliproxy/config/generator.js +18 -8
  58. package/dist/cliproxy/config/generator.js.map +1 -1
  59. package/dist/cliproxy/executor/index.d.ts.map +1 -1
  60. package/dist/cliproxy/executor/index.js +30 -0
  61. package/dist/cliproxy/executor/index.js.map +1 -1
  62. package/dist/commands/help-command.d.ts.map +1 -1
  63. package/dist/commands/help-command.js +11 -1
  64. package/dist/commands/help-command.js.map +1 -1
  65. package/dist/config/migration-manager.d.ts.map +1 -1
  66. package/dist/config/migration-manager.js +19 -0
  67. package/dist/config/migration-manager.js.map +1 -1
  68. package/dist/config/unified-config-loader.d.ts +11 -1
  69. package/dist/config/unified-config-loader.d.ts.map +1 -1
  70. package/dist/config/unified-config-loader.js +127 -59
  71. package/dist/config/unified-config-loader.js.map +1 -1
  72. package/dist/config/unified-config-types.d.ts +16 -0
  73. package/dist/config/unified-config-types.d.ts.map +1 -1
  74. package/dist/config/unified-config-types.js +8 -1
  75. package/dist/config/unified-config-types.js.map +1 -1
  76. package/dist/management/instance-manager.d.ts +1 -0
  77. package/dist/management/instance-manager.d.ts.map +1 -1
  78. package/dist/management/instance-manager.js +14 -8
  79. package/dist/management/instance-manager.js.map +1 -1
  80. package/dist/management/profile-context-sync-lock.d.ts +14 -0
  81. package/dist/management/profile-context-sync-lock.d.ts.map +1 -0
  82. package/dist/management/profile-context-sync-lock.js +174 -0
  83. package/dist/management/profile-context-sync-lock.js.map +1 -0
  84. package/dist/management/shared-manager.d.ts +18 -0
  85. package/dist/management/shared-manager.d.ts.map +1 -1
  86. package/dist/management/shared-manager.js +145 -6
  87. package/dist/management/shared-manager.js.map +1 -1
  88. package/dist/targets/droid-adapter.d.ts +1 -1
  89. package/dist/targets/droid-adapter.d.ts.map +1 -1
  90. package/dist/targets/droid-adapter.js +16 -4
  91. package/dist/targets/droid-adapter.js.map +1 -1
  92. package/dist/targets/droid-config-manager.d.ts +9 -1
  93. package/dist/targets/droid-config-manager.d.ts.map +1 -1
  94. package/dist/targets/droid-config-manager.js +131 -3
  95. package/dist/targets/droid-config-manager.js.map +1 -1
  96. package/dist/targets/droid-provider.d.ts +40 -0
  97. package/dist/targets/droid-provider.d.ts.map +1 -0
  98. package/dist/targets/droid-provider.js +140 -0
  99. package/dist/targets/droid-provider.js.map +1 -0
  100. package/dist/targets/droid-reasoning-runtime.d.ts +14 -0
  101. package/dist/targets/droid-reasoning-runtime.d.ts.map +1 -0
  102. package/dist/targets/droid-reasoning-runtime.js +42 -0
  103. package/dist/targets/droid-reasoning-runtime.js.map +1 -0
  104. package/dist/targets/index.d.ts +2 -0
  105. package/dist/targets/index.d.ts.map +1 -1
  106. package/dist/targets/index.js +4 -1
  107. package/dist/targets/index.js.map +1 -1
  108. package/dist/targets/target-adapter.d.ts +6 -0
  109. package/dist/targets/target-adapter.d.ts.map +1 -1
  110. package/dist/types/config.d.ts +2 -0
  111. package/dist/types/config.d.ts.map +1 -1
  112. package/dist/types/config.js.map +1 -1
  113. package/dist/ui/assets/accounts-y2u0CVK8.js +1 -0
  114. package/dist/ui/assets/{alert-dialog-DmrIcJav.js → alert-dialog-CetY4Iww.js} +1 -1
  115. package/dist/ui/assets/api-5q1FT1uL.js +1 -0
  116. package/dist/ui/assets/auth-section-CaQeee-F.js +1 -0
  117. package/dist/ui/assets/{backups-section-jwtuA5Ay.js → backups-section-hF88BjYJ.js} +1 -1
  118. package/dist/ui/assets/{checkbox-CNqHZx7Z.js → checkbox-Dhm5Fzkb.js} +1 -1
  119. package/dist/ui/assets/cliproxy-BeYNWmY_.js +3 -0
  120. package/dist/ui/assets/{cliproxy-control-panel--WUVyBIk.js → cliproxy-control-panel-CJELeI80.js} +1 -1
  121. package/dist/ui/assets/{confirm-dialog-CQNxkz9X.js → confirm-dialog-Dn3SrwNV.js} +1 -1
  122. package/dist/ui/assets/{copilot-DLxxmnsW.js → copilot-vwT-4_V4.js} +1 -1
  123. package/dist/ui/assets/{cursor-YRIza7sP.js → cursor-CN3lIX63.js} +1 -1
  124. package/dist/ui/assets/droid-DBP2yCY7.js +2 -0
  125. package/dist/ui/assets/globalenv-section-DNKAJasL.js +1 -0
  126. package/dist/ui/assets/{health-BWPd6F4h.js → health-C7tNiLzc.js} +1 -1
  127. package/dist/ui/assets/icons-DrewC9c3.js +1 -0
  128. package/dist/ui/assets/index-C8-ef-r7.js +1 -0
  129. package/dist/ui/assets/{index-D244tv89.js → index-MGh88HoC.js} +1 -1
  130. package/dist/ui/assets/{index-BlldLmNl.js → index-QBUSDLTx.js} +1 -1
  131. package/dist/ui/assets/index-k-HuyjpO.js +47 -0
  132. package/dist/ui/assets/index-s-oTl3hW.css +1 -0
  133. package/dist/ui/assets/index-uYnNU6Ut.js +1 -0
  134. package/dist/ui/assets/proxy-status-widget-CIm5vKY7.js +1 -0
  135. package/dist/ui/assets/{radix-ui-DIWAxjEp.js → radix-ui-C1Gpgz6I.js} +1 -1
  136. package/dist/ui/assets/{separator-OcJLDgYQ.js → separator-BLVyAGAm.js} +1 -1
  137. package/dist/ui/assets/shared-CHH09ZNi.js +8 -0
  138. package/dist/ui/assets/{switch-s8pp-m8L.js → switch-CwLyB4JK.js} +1 -1
  139. package/dist/ui/assets/{tanstack-Hn82hibe.js → tanstack-DDJIhNJd.js} +1 -1
  140. package/dist/ui/assets/{updates-BQRhDVbP.js → updates-VlxL3aum.js} +1 -1
  141. package/dist/ui/index.html +5 -5
  142. package/dist/web-server/model-pricing.d.ts.map +1 -1
  143. package/dist/web-server/model-pricing.js +114 -22
  144. package/dist/web-server/model-pricing.js.map +1 -1
  145. package/dist/web-server/routes/account-route-helpers.d.ts +20 -0
  146. package/dist/web-server/routes/account-route-helpers.d.ts.map +1 -0
  147. package/dist/web-server/routes/account-route-helpers.js +34 -0
  148. package/dist/web-server/routes/account-route-helpers.js.map +1 -0
  149. package/dist/web-server/routes/account-routes.d.ts.map +1 -1
  150. package/dist/web-server/routes/account-routes.js +160 -27
  151. package/dist/web-server/routes/account-routes.js.map +1 -1
  152. package/dist/web-server/routes/cliproxy-auth-routes.d.ts.map +1 -1
  153. package/dist/web-server/routes/cliproxy-auth-routes.js +58 -24
  154. package/dist/web-server/routes/cliproxy-auth-routes.js.map +1 -1
  155. package/dist/web-server/routes/config-routes.d.ts.map +1 -1
  156. package/dist/web-server/routes/config-routes.js +73 -0
  157. package/dist/web-server/routes/config-routes.js.map +1 -1
  158. package/dist/web-server/routes/droid-routes.d.ts +3 -0
  159. package/dist/web-server/routes/droid-routes.d.ts.map +1 -0
  160. package/dist/web-server/routes/droid-routes.js +61 -0
  161. package/dist/web-server/routes/droid-routes.js.map +1 -0
  162. package/dist/web-server/routes/index.d.ts.map +1 -1
  163. package/dist/web-server/routes/index.js +3 -0
  164. package/dist/web-server/routes/index.js.map +1 -1
  165. package/dist/web-server/routes/profile-routes.d.ts.map +1 -1
  166. package/dist/web-server/routes/profile-routes.js +29 -3
  167. package/dist/web-server/routes/profile-routes.js.map +1 -1
  168. package/dist/web-server/routes/route-helpers.d.ts +2 -1
  169. package/dist/web-server/routes/route-helpers.d.ts.map +1 -1
  170. package/dist/web-server/routes/route-helpers.js +20 -1
  171. package/dist/web-server/routes/route-helpers.js.map +1 -1
  172. package/dist/web-server/routes/settings-routes.d.ts.map +1 -1
  173. package/dist/web-server/routes/settings-routes.js +110 -12
  174. package/dist/web-server/routes/settings-routes.js.map +1 -1
  175. package/dist/web-server/services/compatible-cli-docs-registry.d.ts +23 -0
  176. package/dist/web-server/services/compatible-cli-docs-registry.d.ts.map +1 -0
  177. package/dist/web-server/services/compatible-cli-docs-registry.js +81 -0
  178. package/dist/web-server/services/compatible-cli-docs-registry.js.map +1 -0
  179. package/dist/web-server/services/compatible-cli-json-file-service.d.ts +41 -0
  180. package/dist/web-server/services/compatible-cli-json-file-service.d.ts.map +1 -0
  181. package/dist/web-server/services/compatible-cli-json-file-service.js +205 -0
  182. package/dist/web-server/services/compatible-cli-json-file-service.js.map +1 -0
  183. package/dist/web-server/services/compatible-cli-types.d.ts +82 -0
  184. package/dist/web-server/services/compatible-cli-types.d.ts.map +1 -0
  185. package/dist/web-server/services/compatible-cli-types.js +3 -0
  186. package/dist/web-server/services/compatible-cli-types.js.map +1 -0
  187. package/dist/web-server/services/droid-dashboard-service.d.ts +29 -0
  188. package/dist/web-server/services/droid-dashboard-service.d.ts.map +1 -0
  189. package/dist/web-server/services/droid-dashboard-service.js +238 -0
  190. package/dist/web-server/services/droid-dashboard-service.js.map +1 -0
  191. package/dist/web-server/shared-routes.d.ts.map +1 -1
  192. package/dist/web-server/shared-routes.js +350 -52
  193. package/dist/web-server/shared-routes.js.map +1 -1
  194. package/lib/hooks/websearch-transformer.cjs +78 -52
  195. package/package.json +4 -2
  196. package/scripts/maintainability-check.js +163 -0
  197. package/dist/ui/assets/accounts-BKK-Lc16.js +0 -1
  198. package/dist/ui/assets/api-DzTwRtww.js +0 -1
  199. package/dist/ui/assets/auth-section-CP_2r8oJ.js +0 -1
  200. package/dist/ui/assets/cliproxy-CtO9BwgG.js +0 -3
  201. package/dist/ui/assets/globalenv-section-vUSIK5rf.js +0 -1
  202. package/dist/ui/assets/icons-Dk2sL3Mr.js +0 -1
  203. package/dist/ui/assets/index-B9dJZNls.js +0 -1
  204. package/dist/ui/assets/index-BZdHAol5.js +0 -1
  205. package/dist/ui/assets/index-DEDy1J8t.css +0 -1
  206. package/dist/ui/assets/index-PWMOllOf.js +0 -47
  207. package/dist/ui/assets/proxy-status-widget-MlyNgoPh.js +0 -1
  208. package/dist/ui/assets/shared-LxAdbm4g.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatible-cli-json-file-service.js","sourceRoot":"","sources":["../../../src/web-server/services/compatible-cli-json-file-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ export type DroidBinarySource = 'CCS_DROID_PATH' | 'PATH' | 'missing';
2
+ export interface DroidBinaryDiagnostics {
3
+ installed: boolean;
4
+ path: string | null;
5
+ installDir: string | null;
6
+ source: DroidBinarySource;
7
+ version: string | null;
8
+ overridePath: string | null;
9
+ }
10
+ export interface DroidConfigFileDiagnostics {
11
+ label: string;
12
+ path: string;
13
+ resolvedPath: string;
14
+ exists: boolean;
15
+ isSymlink: boolean;
16
+ isRegularFile: boolean;
17
+ sizeBytes: number | null;
18
+ mtimeMs: number | null;
19
+ parseError: string | null;
20
+ readError: string | null;
21
+ }
22
+ export interface DroidCustomModelDiagnostics {
23
+ displayName: string;
24
+ model: string;
25
+ provider: string;
26
+ baseUrl: string;
27
+ host: string | null;
28
+ maxOutputTokens: number | null;
29
+ isCcsManaged: boolean;
30
+ apiKeyState: 'set' | 'missing';
31
+ apiKeyPreview: string | null;
32
+ }
33
+ export interface DroidByokDiagnostics {
34
+ activeModelSelector: string | null;
35
+ customModelCount: number;
36
+ ccsManagedCount: number;
37
+ userManagedCount: number;
38
+ invalidModelEntryCount: number;
39
+ providerBreakdown: Record<string, number>;
40
+ customModels: DroidCustomModelDiagnostics[];
41
+ }
42
+ export interface CompatibleCliDocLink {
43
+ id: string;
44
+ label: string;
45
+ url: string;
46
+ category: 'overview' | 'configuration' | 'byok' | 'reference';
47
+ source: 'factory' | 'provider';
48
+ description: string;
49
+ }
50
+ export interface CompatibleCliProviderDocLink {
51
+ provider: string;
52
+ label: string;
53
+ apiFormat: string;
54
+ url: string;
55
+ }
56
+ export interface CompatibleCliDocsReference {
57
+ providerValues: string[];
58
+ settingsHierarchy: string[];
59
+ notes: string[];
60
+ links: CompatibleCliDocLink[];
61
+ providerDocs: CompatibleCliProviderDocLink[];
62
+ }
63
+ export interface DroidDashboardDiagnostics {
64
+ binary: DroidBinaryDiagnostics;
65
+ files: {
66
+ settings: DroidConfigFileDiagnostics;
67
+ legacyConfig: DroidConfigFileDiagnostics;
68
+ };
69
+ byok: DroidByokDiagnostics;
70
+ warnings: string[];
71
+ docsReference: CompatibleCliDocsReference;
72
+ }
73
+ export interface DroidRawSettingsResponse {
74
+ path: string;
75
+ resolvedPath: string;
76
+ exists: boolean;
77
+ mtime: number;
78
+ rawText: string;
79
+ settings: Record<string, unknown> | null;
80
+ parseError: string | null;
81
+ }
82
+ //# sourceMappingURL=compatible-cli-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatible-cli-types.d.ts","sourceRoot":"","sources":["../../../src/web-server/services/compatible-cli-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=compatible-cli-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatible-cli-types.js","sourceRoot":"","sources":["../../../src/web-server/services/compatible-cli-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ /// <reference types="node" />
2
+ import type { DroidByokDiagnostics, DroidDashboardDiagnostics, DroidRawSettingsResponse } from './compatible-cli-types';
3
+ import { JsonFileConflictError, JsonFileValidationError } from './compatible-cli-json-file-service';
4
+ interface DroidConfigPaths {
5
+ settingsPath: string;
6
+ settingsDisplayPath: string;
7
+ legacyConfigPath: string;
8
+ legacyConfigDisplayPath: string;
9
+ }
10
+ interface SaveDroidRawSettingsInput {
11
+ rawText: string;
12
+ expectedMtime?: number;
13
+ }
14
+ interface SaveDroidRawSettingsResult {
15
+ success: true;
16
+ mtime: number;
17
+ }
18
+ export { JsonFileConflictError as DroidRawSettingsConflictError, JsonFileValidationError as DroidRawSettingsValidationError, };
19
+ export declare function maskApiKeyPreview(value: string): string;
20
+ export declare function resolveDroidConfigPaths(options?: {
21
+ platform?: NodeJS.Platform;
22
+ env?: NodeJS.ProcessEnv;
23
+ homeDir?: string;
24
+ }): DroidConfigPaths;
25
+ export declare function summarizeDroidCustomModels(customModelsValue: unknown): DroidByokDiagnostics;
26
+ export declare function getDroidDashboardDiagnostics(): Promise<DroidDashboardDiagnostics>;
27
+ export declare function getDroidRawSettings(): Promise<DroidRawSettingsResponse>;
28
+ export declare function saveDroidRawSettings(input: SaveDroidRawSettingsInput): Promise<SaveDroidRawSettingsResult>;
29
+ //# sourceMappingURL=droid-dashboard-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"droid-dashboard-service.d.ts","sourceRoot":"","sources":["../../../src/web-server/services/droid-dashboard-service.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,EACV,oBAAoB,EAEpB,yBAAyB,EACzB,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EAGxB,MAAM,oCAAoC,CAAC;AAG5C,UAAU,gBAAgB;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED,UAAU,yBAAyB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,0BAA0B;IAClC,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,OAAO,EACL,qBAAqB,IAAI,6BAA6B,EACtD,uBAAuB,IAAI,+BAA+B,GAC3D,CAAC;AA0BF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIvD;AAMD,wBAAgB,uBAAuB,CACrC,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CACb,GACL,gBAAgB,CAclB;AAiBD,wBAAgB,0BAA0B,CAAC,iBAAiB,EAAE,OAAO,GAAG,oBAAoB,CAuD3F;AAqBD,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,yBAAyB,CAAC,CA2DvF;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAiB7E;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,0BAA0B,CAAC,CAarC"}
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.saveDroidRawSettings = exports.getDroidRawSettings = exports.getDroidDashboardDiagnostics = exports.summarizeDroidCustomModels = exports.resolveDroidConfigPaths = exports.maskApiKeyPreview = exports.DroidRawSettingsValidationError = exports.DroidRawSettingsConflictError = void 0;
27
+ const os = __importStar(require("os"));
28
+ const path = __importStar(require("path"));
29
+ const child_process_1 = require("child_process");
30
+ const droid_detector_1 = require("../../targets/droid-detector");
31
+ const compatible_cli_json_file_service_1 = require("./compatible-cli-json-file-service");
32
+ Object.defineProperty(exports, "DroidRawSettingsConflictError", { enumerable: true, get: function () { return compatible_cli_json_file_service_1.JsonFileConflictError; } });
33
+ Object.defineProperty(exports, "DroidRawSettingsValidationError", { enumerable: true, get: function () { return compatible_cli_json_file_service_1.JsonFileValidationError; } });
34
+ const compatible_cli_docs_registry_1 = require("./compatible-cli-docs-registry");
35
+ function isObject(value) {
36
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
37
+ }
38
+ function asObject(value) {
39
+ return isObject(value) ? value : null;
40
+ }
41
+ function asString(value) {
42
+ return typeof value === 'string' && value.trim().length > 0 ? value.trim() : null;
43
+ }
44
+ function asNumber(value) {
45
+ return typeof value === 'number' && Number.isFinite(value) ? value : null;
46
+ }
47
+ function parseHost(value) {
48
+ try {
49
+ return new URL(value).host || null;
50
+ }
51
+ catch {
52
+ return null;
53
+ }
54
+ }
55
+ function maskApiKeyPreview(value) {
56
+ if (!value)
57
+ return '';
58
+ const suffix = value.slice(-4);
59
+ return `***${suffix}`;
60
+ }
61
+ exports.maskApiKeyPreview = maskApiKeyPreview;
62
+ function isCcsManagedDisplayName(displayName) {
63
+ return displayName.startsWith('CCS ') || displayName.startsWith('ccs-');
64
+ }
65
+ function resolveDroidConfigPaths(options = {}) {
66
+ const env = options.env ?? process.env;
67
+ const homeDir = options.homeDir ?? os.homedir();
68
+ const byokBase = env.CCS_HOME || homeDir;
69
+ const settingsPath = path.join(byokBase, '.factory', 'settings.json');
70
+ const legacyConfigPath = path.join(byokBase, '.factory', 'config.json');
71
+ return {
72
+ settingsPath,
73
+ settingsDisplayPath: '~/.factory/settings.json',
74
+ legacyConfigPath,
75
+ legacyConfigDisplayPath: '~/.factory/config.json',
76
+ };
77
+ }
78
+ exports.resolveDroidConfigPaths = resolveDroidConfigPaths;
79
+ function getBinaryVersion(binaryPath) {
80
+ try {
81
+ return (0, child_process_1.execFileSync)(binaryPath, ['--version'], {
82
+ encoding: 'utf8',
83
+ stdio: ['ignore', 'pipe', 'ignore'],
84
+ timeout: 5000,
85
+ })
86
+ .trim()
87
+ .split('\n')[0]
88
+ .trim();
89
+ }
90
+ catch {
91
+ return null;
92
+ }
93
+ }
94
+ function summarizeDroidCustomModels(customModelsValue) {
95
+ const rows = [];
96
+ const providerBreakdown = {};
97
+ let invalidModelEntryCount = 0;
98
+ const source = Array.isArray(customModelsValue)
99
+ ? customModelsValue
100
+ : isObject(customModelsValue)
101
+ ? Object.values(customModelsValue)
102
+ : [];
103
+ for (const item of source) {
104
+ if (!isObject(item)) {
105
+ invalidModelEntryCount += 1;
106
+ continue;
107
+ }
108
+ const displayName = asString(item.displayName) ?? asString(item.model_display_name);
109
+ const model = asString(item.model);
110
+ const baseUrl = asString(item.baseUrl) ?? asString(item.base_url);
111
+ const providerRaw = asString(item.provider);
112
+ const apiKey = asString(item.apiKey) ?? asString(item.api_key);
113
+ if (!displayName || !model || !baseUrl || !providerRaw) {
114
+ invalidModelEntryCount += 1;
115
+ continue;
116
+ }
117
+ const provider = providerRaw.toLowerCase();
118
+ providerBreakdown[provider] = (providerBreakdown[provider] ?? 0) + 1;
119
+ rows.push({
120
+ displayName,
121
+ model,
122
+ provider,
123
+ baseUrl,
124
+ host: parseHost(baseUrl),
125
+ maxOutputTokens: asNumber(item.maxOutputTokens) ?? asNumber(item.max_tokens),
126
+ isCcsManaged: isCcsManagedDisplayName(displayName),
127
+ apiKeyState: apiKey ? 'set' : 'missing',
128
+ apiKeyPreview: apiKey ? maskApiKeyPreview(apiKey) : null,
129
+ });
130
+ }
131
+ const ccsManagedCount = rows.filter((row) => row.isCcsManaged).length;
132
+ return {
133
+ activeModelSelector: null,
134
+ customModelCount: rows.length,
135
+ ccsManagedCount,
136
+ userManagedCount: rows.length - ccsManagedCount,
137
+ invalidModelEntryCount,
138
+ providerBreakdown,
139
+ customModels: rows,
140
+ };
141
+ }
142
+ exports.summarizeDroidCustomModels = summarizeDroidCustomModels;
143
+ function resolveCustomModelsValue(settings) {
144
+ if (!settings)
145
+ return undefined;
146
+ const modern = settings.customModels;
147
+ if (Array.isArray(modern) || isObject(modern))
148
+ return modern;
149
+ const legacy = settings.custom_models;
150
+ if (Array.isArray(legacy) || isObject(legacy))
151
+ return legacy;
152
+ return undefined;
153
+ }
154
+ function usesLegacyCustomModelsKey(settings) {
155
+ if (!settings)
156
+ return false;
157
+ const modern = settings.customModels;
158
+ if (Array.isArray(modern) || isObject(modern))
159
+ return false;
160
+ const legacy = settings.custom_models;
161
+ return Array.isArray(legacy) || isObject(legacy);
162
+ }
163
+ async function getDroidDashboardDiagnostics() {
164
+ const paths = resolveDroidConfigPaths();
165
+ const binaryPath = (0, droid_detector_1.detectDroidCli)();
166
+ const docsReference = (0, compatible_cli_docs_registry_1.getCompatibleCliDocsReference)('droid');
167
+ const source = process.env.CCS_DROID_PATH ? 'CCS_DROID_PATH' : binaryPath ? 'PATH' : 'missing';
168
+ const settingsProbe = await (0, compatible_cli_json_file_service_1.probeJsonObjectFile)(paths.settingsPath, 'BYOK settings', paths.settingsDisplayPath);
169
+ const legacyConfigProbe = await (0, compatible_cli_json_file_service_1.probeJsonObjectFile)(paths.legacyConfigPath, 'Legacy config', paths.legacyConfigDisplayPath);
170
+ const settingsJson = asObject(settingsProbe.json);
171
+ const legacyJson = asObject(legacyConfigProbe.json);
172
+ const settingsCustomModels = resolveCustomModelsValue(settingsJson);
173
+ const legacyCustomModels = resolveCustomModelsValue(legacyJson);
174
+ const byok = summarizeDroidCustomModels(settingsCustomModels ?? legacyCustomModels);
175
+ byok.activeModelSelector = asString(settingsProbe.json?.model);
176
+ const warnings = [];
177
+ if (!binaryPath)
178
+ warnings.push('Droid binary is not detected in PATH or CCS_DROID_PATH.');
179
+ if (settingsProbe.diagnostics.parseError) {
180
+ warnings.push('~/.factory/settings.json contains invalid JSON.');
181
+ }
182
+ if (byok.invalidModelEntryCount > 0) {
183
+ warnings.push(`${byok.invalidModelEntryCount} customModels entries are malformed.`);
184
+ }
185
+ if (legacyConfigProbe.diagnostics.parseError) {
186
+ warnings.push('Legacy Droid config (~/.factory/config.json) JSON is invalid.');
187
+ }
188
+ if (usesLegacyCustomModelsKey(settingsJson)) {
189
+ warnings.push('settings.json uses legacy "custom_models" key; prefer "customModels" for forward compatibility.');
190
+ }
191
+ return {
192
+ binary: {
193
+ installed: !!binaryPath,
194
+ path: binaryPath,
195
+ installDir: binaryPath ? path.dirname(binaryPath) : null,
196
+ source,
197
+ version: binaryPath ? getBinaryVersion(binaryPath) : null,
198
+ overridePath: process.env.CCS_DROID_PATH || null,
199
+ },
200
+ files: {
201
+ settings: settingsProbe.diagnostics,
202
+ legacyConfig: legacyConfigProbe.diagnostics,
203
+ },
204
+ byok,
205
+ warnings,
206
+ docsReference,
207
+ };
208
+ }
209
+ exports.getDroidDashboardDiagnostics = getDroidDashboardDiagnostics;
210
+ async function getDroidRawSettings() {
211
+ const paths = resolveDroidConfigPaths();
212
+ const settingsProbe = await (0, compatible_cli_json_file_service_1.probeJsonObjectFile)(paths.settingsPath, 'BYOK settings', paths.settingsDisplayPath);
213
+ return {
214
+ path: paths.settingsDisplayPath,
215
+ resolvedPath: paths.settingsPath,
216
+ exists: settingsProbe.diagnostics.exists,
217
+ mtime: settingsProbe.diagnostics.mtimeMs ?? Date.now(),
218
+ rawText: settingsProbe.rawText,
219
+ settings: settingsProbe.json,
220
+ parseError: settingsProbe.diagnostics.parseError,
221
+ };
222
+ }
223
+ exports.getDroidRawSettings = getDroidRawSettings;
224
+ async function saveDroidRawSettings(input) {
225
+ const paths = resolveDroidConfigPaths();
226
+ if (typeof input.rawText !== 'string') {
227
+ throw new compatible_cli_json_file_service_1.JsonFileValidationError('rawText must be a string.');
228
+ }
229
+ const saved = await (0, compatible_cli_json_file_service_1.writeJsonObjectFileAtomic)({
230
+ filePath: paths.settingsPath,
231
+ rawText: input.rawText,
232
+ expectedMtime: input.expectedMtime,
233
+ fileLabel: 'settings.json',
234
+ });
235
+ return { success: true, mtime: saved.mtime };
236
+ }
237
+ exports.saveDroidRawSettings = saveDroidRawSettings;
238
+ //# sourceMappingURL=droid-dashboard-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"droid-dashboard-service.js","sourceRoot":"","sources":["../../../src/web-server/services/droid-dashboard-service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"shared-routes.d.ts","sourceRoot":"","sources":["../../src/web-server/shared-routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,eAAO,MAAM,YAAY,4CAAW,CAAC"}
1
+ {"version":3,"file":"shared-routes.d.ts","sourceRoot":"","sources":["../../src/web-server/shared-routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,eAAO,MAAM,YAAY,4CAAW,CAAC"}