@vibeapi/cli 0.0.30

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 (186) hide show
  1. package/LICENSE +25 -0
  2. package/README.md +77 -0
  3. package/dist/__tests__/api-validator.test.d.ts +1 -0
  4. package/dist/__tests__/api-validator.test.js +1 -0
  5. package/dist/__tests__/api-validator.test.js.map +1 -0
  6. package/dist/__tests__/claude-code-manager.test.d.ts +1 -0
  7. package/dist/__tests__/claude-code-manager.test.js +1 -0
  8. package/dist/__tests__/claude-code-manager.test.js.map +1 -0
  9. package/dist/__tests__/command.test.d.ts +1 -0
  10. package/dist/__tests__/command.test.js +1 -0
  11. package/dist/__tests__/command.test.js.map +1 -0
  12. package/dist/__tests__/commands.test.d.ts +1 -0
  13. package/dist/__tests__/commands.test.js +1 -0
  14. package/dist/__tests__/commands.test.js.map +1 -0
  15. package/dist/__tests__/config-profiles.test.d.ts +1 -0
  16. package/dist/__tests__/config-profiles.test.js +1 -0
  17. package/dist/__tests__/config-profiles.test.js.map +1 -0
  18. package/dist/__tests__/config.test.d.ts +1 -0
  19. package/dist/__tests__/config.test.js +1 -0
  20. package/dist/__tests__/config.test.js.map +1 -0
  21. package/dist/__tests__/env-cleanup.test.d.ts +1 -0
  22. package/dist/__tests__/env-cleanup.test.js +1 -0
  23. package/dist/__tests__/env-cleanup.test.js.map +1 -0
  24. package/dist/__tests__/extra-commands.test.d.ts +1 -0
  25. package/dist/__tests__/extra-commands.test.js +1 -0
  26. package/dist/__tests__/extra-commands.test.js.map +1 -0
  27. package/dist/__tests__/i18n.test.d.ts +1 -0
  28. package/dist/__tests__/i18n.test.js +1 -0
  29. package/dist/__tests__/i18n.test.js.map +1 -0
  30. package/dist/__tests__/logger.test.d.ts +1 -0
  31. package/dist/__tests__/logger.test.js +1 -0
  32. package/dist/__tests__/logger.test.js.map +1 -0
  33. package/dist/__tests__/model-registry.test.d.ts +1 -0
  34. package/dist/__tests__/model-registry.test.js +1 -0
  35. package/dist/__tests__/model-registry.test.js.map +1 -0
  36. package/dist/__tests__/opencode-manager.test.d.ts +1 -0
  37. package/dist/__tests__/opencode-manager.test.js +1 -0
  38. package/dist/__tests__/opencode-manager.test.js.map +1 -0
  39. package/dist/__tests__/runtime-options.test.d.ts +1 -0
  40. package/dist/__tests__/runtime-options.test.js +1 -0
  41. package/dist/__tests__/runtime-options.test.js.map +1 -0
  42. package/dist/__tests__/secret-store.test.d.ts +1 -0
  43. package/dist/__tests__/secret-store.test.js +1 -0
  44. package/dist/__tests__/secret-store.test.js.map +1 -0
  45. package/dist/__tests__/settings-template.test.d.ts +1 -0
  46. package/dist/__tests__/settings-template.test.js +1 -0
  47. package/dist/__tests__/settings-template.test.js.map +1 -0
  48. package/dist/__tests__/setup-command.test.d.ts +1 -0
  49. package/dist/__tests__/setup-command.test.js +1 -0
  50. package/dist/__tests__/setup-command.test.js.map +1 -0
  51. package/dist/__tests__/string-width.test.d.ts +1 -0
  52. package/dist/__tests__/string-width.test.js +1 -0
  53. package/dist/__tests__/string-width.test.js.map +1 -0
  54. package/dist/__tests__/tool-adapters.test.d.ts +1 -0
  55. package/dist/__tests__/tool-adapters.test.js +1 -0
  56. package/dist/__tests__/tool-adapters.test.js.map +1 -0
  57. package/dist/__tests__/tool-manager.test.d.ts +1 -0
  58. package/dist/__tests__/tool-manager.test.js +1 -0
  59. package/dist/__tests__/tool-manager.test.js.map +1 -0
  60. package/dist/__tests__/wizard.test.d.ts +1 -0
  61. package/dist/__tests__/wizard.test.js +1 -0
  62. package/dist/__tests__/wizard.test.js.map +1 -0
  63. package/dist/cli.d.ts +2 -0
  64. package/dist/cli.js +2 -0
  65. package/dist/cli.js.map +1 -0
  66. package/dist/commands/auth.d.ts +1 -0
  67. package/dist/commands/auth.js +1 -0
  68. package/dist/commands/auth.js.map +1 -0
  69. package/dist/commands/bench.d.ts +6 -0
  70. package/dist/commands/bench.js +1 -0
  71. package/dist/commands/bench.js.map +1 -0
  72. package/dist/commands/completion.d.ts +1 -0
  73. package/dist/commands/completion.js +1 -0
  74. package/dist/commands/completion.js.map +1 -0
  75. package/dist/commands/config.d.ts +1 -0
  76. package/dist/commands/config.js +1 -0
  77. package/dist/commands/config.js.map +1 -0
  78. package/dist/commands/doctor.d.ts +1 -0
  79. package/dist/commands/doctor.js +1 -0
  80. package/dist/commands/doctor.js.map +1 -0
  81. package/dist/commands/index.d.ts +9 -0
  82. package/dist/commands/index.js +1 -0
  83. package/dist/commands/index.js.map +1 -0
  84. package/dist/commands/lang.d.ts +1 -0
  85. package/dist/commands/lang.js +1 -0
  86. package/dist/commands/lang.js.map +1 -0
  87. package/dist/commands/logs.d.ts +1 -0
  88. package/dist/commands/logs.js +1 -0
  89. package/dist/commands/logs.js.map +1 -0
  90. package/dist/commands/setup.d.ts +20 -0
  91. package/dist/commands/setup.js +1 -0
  92. package/dist/commands/setup.js.map +1 -0
  93. package/dist/commands/status.d.ts +1 -0
  94. package/dist/commands/status.js +1 -0
  95. package/dist/commands/status.js.map +1 -0
  96. package/dist/commands/update.d.ts +7 -0
  97. package/dist/commands/update.js +1 -0
  98. package/dist/commands/update.js.map +1 -0
  99. package/dist/index.d.ts +12 -0
  100. package/dist/index.js +1 -0
  101. package/dist/index.js.map +1 -0
  102. package/dist/lib/api-validator.d.ts +35 -0
  103. package/dist/lib/api-validator.js +1 -0
  104. package/dist/lib/api-validator.js.map +1 -0
  105. package/dist/lib/brand.d.ts +13 -0
  106. package/dist/lib/brand.js +1 -0
  107. package/dist/lib/brand.js.map +1 -0
  108. package/dist/lib/claude-code-manager.d.ts +91 -0
  109. package/dist/lib/claude-code-manager.js +1 -0
  110. package/dist/lib/claude-code-manager.js.map +1 -0
  111. package/dist/lib/command.d.ts +16 -0
  112. package/dist/lib/command.js +1 -0
  113. package/dist/lib/command.js.map +1 -0
  114. package/dist/lib/config.d.ts +124 -0
  115. package/dist/lib/config.js +1 -0
  116. package/dist/lib/config.js.map +1 -0
  117. package/dist/lib/confirm.d.ts +12 -0
  118. package/dist/lib/confirm.js +1 -0
  119. package/dist/lib/confirm.js.map +1 -0
  120. package/dist/lib/env-cleanup.d.ts +23 -0
  121. package/dist/lib/env-cleanup.js +1 -0
  122. package/dist/lib/env-cleanup.js.map +1 -0
  123. package/dist/lib/i18n.d.ts +26 -0
  124. package/dist/lib/i18n.js +1 -0
  125. package/dist/lib/i18n.js.map +1 -0
  126. package/dist/lib/model-registry.d.ts +34 -0
  127. package/dist/lib/model-registry.js +1 -0
  128. package/dist/lib/model-registry.js.map +1 -0
  129. package/dist/lib/opencode-manager.d.ts +51 -0
  130. package/dist/lib/opencode-manager.js +1 -0
  131. package/dist/lib/opencode-manager.js.map +1 -0
  132. package/dist/lib/runtime-options.d.ts +17 -0
  133. package/dist/lib/runtime-options.js +1 -0
  134. package/dist/lib/runtime-options.js.map +1 -0
  135. package/dist/lib/secret-store.d.ts +37 -0
  136. package/dist/lib/secret-store.js +1 -0
  137. package/dist/lib/secret-store.js.map +1 -0
  138. package/dist/lib/settings-template.d.ts +6 -0
  139. package/dist/lib/settings-template.js +1 -0
  140. package/dist/lib/settings-template.js.map +1 -0
  141. package/dist/lib/tool-manager.d.ts +49 -0
  142. package/dist/lib/tool-manager.js +1 -0
  143. package/dist/lib/tool-manager.js.map +1 -0
  144. package/dist/lib/tools/atomcode.d.ts +2 -0
  145. package/dist/lib/tools/atomcode.js +1 -0
  146. package/dist/lib/tools/atomcode.js.map +1 -0
  147. package/dist/lib/tools/backup.d.ts +53 -0
  148. package/dist/lib/tools/backup.js +1 -0
  149. package/dist/lib/tools/backup.js.map +1 -0
  150. package/dist/lib/tools/claude-code.d.ts +3 -0
  151. package/dist/lib/tools/claude-code.js +1 -0
  152. package/dist/lib/tools/claude-code.js.map +1 -0
  153. package/dist/lib/tools/codex.d.ts +2 -0
  154. package/dist/lib/tools/codex.js +1 -0
  155. package/dist/lib/tools/codex.js.map +1 -0
  156. package/dist/lib/tools/hermes.d.ts +2 -0
  157. package/dist/lib/tools/hermes.js +1 -0
  158. package/dist/lib/tools/hermes.js.map +1 -0
  159. package/dist/lib/tools/openclaw.d.ts +2 -0
  160. package/dist/lib/tools/openclaw.js +1 -0
  161. package/dist/lib/tools/openclaw.js.map +1 -0
  162. package/dist/lib/tools/opencode.d.ts +3 -0
  163. package/dist/lib/tools/opencode.js +1 -0
  164. package/dist/lib/tools/opencode.js.map +1 -0
  165. package/dist/lib/tools/registry.d.ts +4 -0
  166. package/dist/lib/tools/registry.js +1 -0
  167. package/dist/lib/tools/registry.js.map +1 -0
  168. package/dist/lib/tools/types.d.ts +75 -0
  169. package/dist/lib/tools/types.js +1 -0
  170. package/dist/lib/tools/types.js.map +1 -0
  171. package/dist/lib/wizard.d.ts +48 -0
  172. package/dist/lib/wizard.js +1 -0
  173. package/dist/lib/wizard.js.map +1 -0
  174. package/dist/locales/en_US.json +321 -0
  175. package/dist/locales/zh_CN.json +321 -0
  176. package/dist/models.json +25 -0
  177. package/dist/settings-template.json +13 -0
  178. package/dist/utils/logger.d.ts +64 -0
  179. package/dist/utils/logger.js +1 -0
  180. package/dist/utils/logger.js.map +1 -0
  181. package/dist/utils/string-width.d.ts +38 -0
  182. package/dist/utils/string-width.js +1 -0
  183. package/dist/utils/string-width.js.map +1 -0
  184. package/models.json +25 -0
  185. package/package.json +93 -0
  186. package/settings-template.json +13 -0
@@ -0,0 +1,34 @@
1
+ export interface Models {
2
+ haiku: string;
3
+ sonnet: string;
4
+ opus: string;
5
+ reasoning: string;
6
+ /** Additional custom slots are preserved verbatim. */
7
+ [slot: string]: string;
8
+ }
9
+ export interface ModelPreset {
10
+ name: string;
11
+ model?: string;
12
+ models?: Models;
13
+ recommended?: boolean;
14
+ }
15
+ export interface ModelRegistryData {
16
+ defaultModels: Models;
17
+ /** Default model for non-Claude tools (Codex/OpenCode/OpenClaw/Hermes/AtomCode). */
18
+ defaultToolModel?: string;
19
+ /** Per-tool default model. Empty string (e.g. claude-code) means "use the tool's built-in default". */
20
+ toolDefaults?: Record<string, string>;
21
+ presets: ModelPreset[];
22
+ }
23
+ export declare function getDefaultModels(): Models;
24
+ /** The model non-Claude tools use unless the user configured something else. */
25
+ export declare function getDefaultToolModel(): string;
26
+ /**
27
+ * Default model for a specific tool. Returns the per-tool entry from
28
+ * `toolDefaults` when present (including an empty string, meaning "use the
29
+ * tool's own built-in default"), otherwise the global default tool model.
30
+ */
31
+ export declare function getToolDefaultModel(toolName: string): string;
32
+ export declare function getPresets(): ModelPreset[];
33
+ export declare function resolvePreset(preset: ModelPreset): Models;
34
+ export declare function reloadRegistry(): void;
@@ -0,0 +1 @@
1
+ import{dirname as o,join as e}from"path";import{fileURLToPath as t}from"url";import{existsSync as r,readFileSync as l}from"fs";const n=o(t(import.meta.url));let s=null;function u(){return s||(s=function(){const o=[e(n,"..","..","models.json"),e(n,"..","models.json"),e(n,"models.json")];for(const e of o)if(r(e))return JSON.parse(l(e,"utf-8"));throw new Error(`models.json not found, searched: ${o.join(", ")}`)}()),s}export function getDefaultModels(){return{...u().defaultModels}}export function getDefaultToolModel(){return u().defaultToolModel?.trim()||"gpt-5.5"}export function getToolDefaultModel(o){const e=u().toolDefaults;return e&&Object.prototype.hasOwnProperty.call(e,o)?(e[o]??"").trim():getDefaultToolModel()}export function getPresets(){return[...u().presets]}export function resolvePreset(o){return o.models?{...o.models}:o.model?{haiku:o.model,sonnet:o.model,opus:o.model,reasoning:o.model}:getDefaultModels()}export function reloadRegistry(){s=null}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-registry.js","sourceRoot":"","sources":["../../src/lib/model-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAE9C,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AA2BtC,2DAA2D;AAC3D,MAAM,mBAAmB,GAAG,SAAS,CAAC;AAEtC,SAAS,gBAAgB;IACrB,MAAM,UAAU,GAAG;QACf,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC;QAC1C,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC;QACpC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;KACjC,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QACzB,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,IAAI,UAAU,GAA6B,IAAI,CAAC;AAEhD,SAAS,OAAO;IACZ,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,UAAU,GAAG,gBAAgB,EAAE,CAAC;IACpC,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC5B,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,aAAa,EAAE,CAAC;AAC1C,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,mBAAmB;IAC/B,OAAO,OAAO,EAAE,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,mBAAmB,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAChD,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC,YAAY,CAAC;IACnC,IAAI,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,mBAAmB,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,UAAU;IACtB,OAAO,CAAC,GAAG,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAmB;IAC7C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO;YACH,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,KAAK;YACpB,IAAI,EAAE,MAAM,CAAC,KAAK;YAClB,SAAS,EAAE,MAAM,CAAC,KAAK;SAC1B,CAAC;IACN,CAAC;IACD,OAAO,gBAAgB,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,cAAc;IAC1B,UAAU,GAAG,IAAI,CAAC;AACtB,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { DEFAULT_MODELS } from './config.js';
2
+ export interface OpenCodeConfig {
3
+ $schema?: string;
4
+ provider?: Record<string, {
5
+ options?: {
6
+ apiKey?: string;
7
+ [key: string]: any;
8
+ };
9
+ [key: string]: any;
10
+ }>;
11
+ model?: string;
12
+ small_model?: string;
13
+ mcp?: Record<string, OpenCodeMCPServerConfig>;
14
+ [key: string]: any;
15
+ }
16
+ export interface OpenCodeMCPServerConfig {
17
+ type: 'local' | 'remote';
18
+ command?: string[];
19
+ environment?: Record<string, string>;
20
+ url?: string;
21
+ headers?: Record<string, string>;
22
+ }
23
+ export declare class OpenCodeManager {
24
+ private static instance;
25
+ private configPath;
26
+ private constructor();
27
+ static getInstance(): OpenCodeManager;
28
+ /**
29
+ * 读取配置
30
+ */
31
+ getConfig(): OpenCodeConfig;
32
+ /**
33
+ * 保存配置
34
+ */
35
+ saveConfig(config: OpenCodeConfig): void;
36
+ /**
37
+ * 加载私有 NewAPI 配置到 OpenCode
38
+ */
39
+ loadPrivateConfig(apiKey: string, models: typeof DEFAULT_MODELS): void;
40
+ /**
41
+ * 卸载私有配置
42
+ */
43
+ unloadPrivateConfig(): void;
44
+ /**
45
+ * 检测当前 OpenCode 配置的 API Key
46
+ */
47
+ detectCurrentConfig(): {
48
+ apiKey: string | null;
49
+ };
50
+ }
51
+ export declare const openCodeManager: OpenCodeManager;
@@ -0,0 +1 @@
1
+ import{existsSync as e,readFileSync as o}from"fs";import{join as n}from"path";import{homedir as t}from"os";import{logger as i}from"../utils/logger.js";import{configManager as r,DEFAULT_MODELS as a}from"./config.js";import{atomicWriteFile as p}from"./tools/backup.js";export class OpenCodeManager{static instance;configPath;constructor(){this.configPath=n(t(),".config","opencode","opencode.json")}static getInstance(){return OpenCodeManager.instance||(OpenCodeManager.instance=new OpenCodeManager),OpenCodeManager.instance}getConfig(){try{if(e(this.configPath)){const e=o(this.configPath,"utf-8");return JSON.parse(e)}}catch(e){i.warn("Failed to read OpenCode config:",e),i.logError("OpenCodeManager.getConfig",e)}return{}}saveConfig(e){try{p(this.configPath,JSON.stringify(e,null,4))}catch(e){throw new Error(`Failed to save OpenCode config: ${e}`)}}loadPrivateConfig(e,o){const n=this.getConfig(),{provider:t,...i}=n,p={};if(t)for(const[e,o]of Object.entries(t))"private-newapi"!==e&&(p[e]=o);p["private-newapi"]={options:{apiKey:e,baseURL:r.getBaseUrl()}};const s={$schema:"https://opencode.ai/config.json",...i,provider:p,model:`private-newapi/${o.opus||a.opus}`,small_model:`private-newapi/${o.haiku||a.haiku}`};this.saveConfig(s)}unloadPrivateConfig(){const e=this.getConfig();e.provider&&(delete e.provider["private-newapi"],0===Object.keys(e.provider).length&&delete e.provider),e.model?.includes("private-newapi")&&delete e.model,e.small_model?.includes("private-newapi")&&delete e.small_model,this.saveConfig(e)}detectCurrentConfig(){try{const e=this.getConfig();if(!e.provider)return{apiKey:null};let o=null;return e.provider["private-newapi"]&&(o=e.provider["private-newapi"].options?.apiKey||null),{apiKey:o}}catch{return{apiKey:null}}}}export const openCodeManager=OpenCodeManager.getInstance();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode-manager.js","sourceRoot":"","sources":["../../src/lib/opencode-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface CliRuntimeOptions {
2
+ nonInteractive: boolean;
3
+ json: boolean;
4
+ yes: boolean;
5
+ dryRun: boolean;
6
+ color: boolean;
7
+ }
8
+ export declare function setRuntimeOptions(options: Partial<CliRuntimeOptions>): void;
9
+ export declare function getRuntimeOptions(): CliRuntimeOptions;
10
+ export declare function isJsonMode(): boolean;
11
+ export declare function isNonInteractive(): boolean;
12
+ export declare function isDryRun(): boolean;
13
+ export declare function shouldAutoConfirm(): boolean;
14
+ export declare function isColorEnabled(): boolean;
15
+ export declare function resetRuntimeOptions(): void;
16
+ export declare function detectColorPreferenceFromEnv(env?: NodeJS.ProcessEnv): boolean;
17
+ export declare function emitJson(data: unknown, output?: (line: string) => void): void;
@@ -0,0 +1 @@
1
+ const n={nonInteractive:!1,json:!1,yes:!1,dryRun:!1,color:!0};let t={...n};export function setRuntimeOptions(n){t={...t,...n}}export function getRuntimeOptions(){return{...t}}export function isJsonMode(){return t.json}export function isNonInteractive(){return t.nonInteractive||t.json}export function isDryRun(){return t.dryRun}export function shouldAutoConfirm(){return t.yes||t.nonInteractive||t.json}export function isColorEnabled(){return t.color}export function resetRuntimeOptions(){t={...n}}export function detectColorPreferenceFromEnv(n=process.env){return(!n.NO_COLOR||"0"===n.NO_COLOR)&&"0"!==n.FORCE_COLOR&&"false"!==n.FORCE_COLOR}export function emitJson(n,t=n=>process.stdout.write(n+"\n")){t(JSON.stringify(n,null,2))}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-options.js","sourceRoot":"","sources":["../../src/lib/runtime-options.ts"],"names":[],"mappings":"AAQA,MAAM,eAAe,GAAsB;IACvC,cAAc,EAAE,KAAK;IACrB,IAAI,EAAE,KAAK;IACX,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,IAAI;CACd,CAAC;AAEF,IAAI,cAAc,GAAsB,EAAE,GAAG,eAAe,EAAE,CAAC;AAE/D,MAAM,UAAU,iBAAiB,CAAC,OAAmC;IACjE,cAAc,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC7B,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,UAAU;IACtB,OAAO,cAAc,CAAC,IAAI,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC5B,OAAO,cAAc,CAAC,cAAc,IAAI,cAAc,CAAC,IAAI,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,QAAQ;IACpB,OAAO,cAAc,CAAC,MAAM,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC7B,OAAO,cAAc,CAAC,GAAG,IAAI,cAAc,CAAC,cAAc,IAAI,cAAc,CAAC,IAAI,CAAC;AACtF,CAAC;AAED,MAAM,UAAU,cAAc;IAC1B,OAAO,cAAc,CAAC,KAAK,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,mBAAmB;IAC/B,cAAc,GAAG,EAAE,GAAG,eAAe,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7E,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,GAAG,CAAC,WAAW,KAAK,GAAG,IAAI,GAAG,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;QACzD,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAa,EAAE,SAAiC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAChH,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,37 @@
1
+ export declare class SecretStoreDecryptError extends Error {
2
+ readonly cause?: unknown | undefined;
3
+ constructor(message: string, cause?: unknown | undefined);
4
+ }
5
+ export declare class SecretStore {
6
+ private static instance;
7
+ private secretsDir;
8
+ private secretsPath;
9
+ private lastDecryptError;
10
+ private constructor();
11
+ static getInstance(): SecretStore;
12
+ private ensureDir;
13
+ private writeAtomic;
14
+ private readEnvelope;
15
+ private decrypt;
16
+ private encrypt;
17
+ private loadRecord;
18
+ private safeLoadRecord;
19
+ private persistRecord;
20
+ isAvailable(): boolean;
21
+ getLastDecryptError(): SecretStoreDecryptError | null;
22
+ fingerprint(profile: string): string;
23
+ getApiKey(profile: string): string | undefined;
24
+ setApiKey(profile: string, apiKey: string): void;
25
+ deleteApiKey(profile: string): void;
26
+ listProfilesWithKeys(): string[];
27
+ /** 读取某工具的专属 Key(没有则 undefined,调用方回退 profile 默认 Key)。 */
28
+ getToolApiKey(profile: string, tool: string): string | undefined;
29
+ setToolApiKey(profile: string, tool: string, apiKey: string): void;
30
+ deleteToolApiKey(profile: string, tool: string): void;
31
+ /** 撤销 profile 时连同其全部工具专属 Key 一起清掉。 */
32
+ deleteToolApiKeys(profile: string): void;
33
+ listToolsWithKeys(profile: string): string[];
34
+ toolFingerprint(profile: string, tool: string): string;
35
+ deleteAll(): void;
36
+ }
37
+ export declare const secretStore: SecretStore;
@@ -0,0 +1 @@
1
+ import{existsSync as e,mkdirSync as t,readFileSync as r,writeFileSync as s,renameSync as o,unlinkSync as i,chmodSync as c}from"fs";import{join as n,dirname as a}from"path";import{homedir as l,hostname as p,userInfo as h}from"os";import{createCipheriv as y,createDecipheriv as d,randomBytes as u,scryptSync as f,createHash as S}from"crypto";import{logger as _}from"../utils/logger.js";const g="aes-256-gcm";export class SecretStoreDecryptError extends Error{cause;constructor(e,t){super(e),this.cause=t,this.name="SecretStoreDecryptError"}}function v(e,t=32768){const r=`${h().username}:${p()}:vibecli-secret-store`;return f(r,e,32,{N:t,maxmem:67108864})}export class SecretStore{static instance;secretsDir;secretsPath;lastDecryptError=null;constructor(){this.secretsDir=function(){const e=process.env.VIBECLI_CONFIG_DIR;if(e&&e.trim())return e.trim();const t=process.env.VIBECLI_TEST_HOME;return t&&t.trim()?n(t.trim(),".vibecli"):n(l(),".vibecli")}(),this.secretsPath=n(this.secretsDir,"secrets.enc")}static getInstance(){return SecretStore.instance||(SecretStore.instance=new SecretStore),SecretStore.instance}ensureDir(){const r=a(this.secretsPath);e(r)||t(r,{recursive:!0})}writeAtomic(t){const r=`${this.secretsPath}.tmp`;try{s(r,t,{encoding:"utf-8",mode:384}),o(r,this.secretsPath);try{c(this.secretsPath,384)}catch{}}catch(t){if(e(r))try{i(r)}catch{}throw t}}readEnvelope(){if(!e(this.secretsPath))return null;try{const e=r(this.secretsPath,"utf-8"),t=JSON.parse(e);return function(e){if(!e||"object"!=typeof e)return!1;const t=e;return(2===t.version||1===t.version)&&"string"==typeof t.iv&&"string"==typeof t.salt&&"string"==typeof t.auth_tag&&"string"==typeof t.cipher_text}(t)?t:null}catch(e){return _.logError("SecretStore.readEnvelope",e),null}}decrypt(e){const t=Buffer.from(e.salt,"base64"),r=Buffer.from(e.iv,"base64"),s=Buffer.from(e.auth_tag,"base64"),o=Buffer.from(e.cipher_text,"base64"),i=v(t,1===e.version?16384:32768),c=d(g,i,r);c.setAuthTag(s);try{const e=Buffer.concat([c.update(o),c.final()]);return JSON.parse(e.toString("utf-8"))}catch(e){throw new SecretStoreDecryptError("Failed to decrypt secret envelope (host or user identity may have changed)",e)}}encrypt(e){const t=u(16),r=u(12),s=v(t),o=y(g,s,r),i=Buffer.from(JSON.stringify(e),"utf-8"),c=Buffer.concat([o.update(i),o.final()]),n=o.getAuthTag();return{version:2,iv:r.toString("base64"),salt:t.toString("base64"),auth_tag:n.toString("base64"),cipher_text:c.toString("base64")}}loadRecord(){const e=this.readEnvelope();if(!e)return{};try{const t=this.decrypt(e);if(1===e.version&&t.api_keys&&Object.keys(t.api_keys).length>0)try{this.persistRecord(t)}catch(e){_.logError("SecretStore.upgradeEnvelope",e)}return t}catch(e){throw e instanceof SecretStoreDecryptError&&(this.lastDecryptError=e,_.warn("SecretStore decrypt failed - identity drift suspected; refusing to drop existing envelope")),_.logError("SecretStore.loadRecord",e),e}}safeLoadRecord(){try{return this.loadRecord()}catch{return{}}}persistRecord(e){this.ensureDir();const t=this.encrypt(e);this.writeAtomic(JSON.stringify(t,null,2))}isAvailable(){return!0}getLastDecryptError(){return this.lastDecryptError}fingerprint(e){const t=this.getApiKey(e);return t?S("sha256").update(t).digest("hex").slice(0,12):""}getApiKey(e){const t=this.safeLoadRecord();return t.api_keys?.[e]}setApiKey(t,r){const s=this.safeLoadRecord();if(this.lastDecryptError&&e(this.secretsPath))throw new SecretStoreDecryptError("Refusing to overwrite an undecryptable secrets envelope; remove it explicitly via deleteAll() or delete ~/.vibecli/secrets.enc to proceed",this.lastDecryptError);s.api_keys={...s.api_keys||{},[t]:r},this.persistRecord(s),this.lastDecryptError=null}deleteApiKey(t){const r=this.safeLoadRecord();if(this.lastDecryptError&&e(this.secretsPath))throw new SecretStoreDecryptError("Refusing to mutate an undecryptable secrets envelope; remove it explicitly via deleteAll() or delete ~/.vibecli/secrets.enc to proceed",this.lastDecryptError);if(!r.api_keys||!(t in r.api_keys))return;const{[t]:s,...o}=r.api_keys;r.api_keys=o,this.persistRecord(r)}listProfilesWithKeys(){const e=this.safeLoadRecord();return Object.keys(e.api_keys||{}).sort()}getToolApiKey(e,t){const r=this.safeLoadRecord();return r.tool_api_keys?.[e]?.[t]}setToolApiKey(t,r,s){const o=this.safeLoadRecord();if(this.lastDecryptError&&e(this.secretsPath))throw new SecretStoreDecryptError("Refusing to overwrite an undecryptable secrets envelope; remove it explicitly via deleteAll() or delete ~/.vibecli/secrets.enc to proceed",this.lastDecryptError);o.tool_api_keys={...o.tool_api_keys||{},[t]:{...o.tool_api_keys?.[t]||{},[r]:s}},this.persistRecord(o),this.lastDecryptError=null}deleteToolApiKey(t,r){const s=this.safeLoadRecord();if(this.lastDecryptError&&e(this.secretsPath))throw new SecretStoreDecryptError("Refusing to mutate an undecryptable secrets envelope; remove it explicitly via deleteAll() or delete ~/.vibecli/secrets.enc to proceed",this.lastDecryptError);const o=s.tool_api_keys?.[t];if(!o||!(r in o))return;const{[r]:i,...c}=o;if(s.tool_api_keys={...s.tool_api_keys||{},[t]:c},0===Object.keys(c).length){const{[t]:e,...r}=s.tool_api_keys;s.tool_api_keys=r}this.persistRecord(s)}deleteToolApiKeys(t){const r=this.safeLoadRecord();if(this.lastDecryptError&&e(this.secretsPath))throw new SecretStoreDecryptError("Refusing to mutate an undecryptable secrets envelope; remove it explicitly via deleteAll() or delete ~/.vibecli/secrets.enc to proceed",this.lastDecryptError);if(!r.tool_api_keys||!(t in r.tool_api_keys))return;const{[t]:s,...o}=r.tool_api_keys;r.tool_api_keys=o,this.persistRecord(r)}listToolsWithKeys(e){const t=this.safeLoadRecord();return Object.keys(t.tool_api_keys?.[e]||{}).sort()}toolFingerprint(e,t){const r=this.getToolApiKey(e,t);return r?S("sha256").update(r).digest("hex").slice(0,12):""}deleteAll(){if(e(this.secretsPath))try{i(this.secretsPath)}catch(e){_.logError("SecretStore.deleteAll",e)}}}export const secretStore=SecretStore.getInstance();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret-store.js","sourceRoot":"","sources":["../../src/lib/secret-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3G,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC/F,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,CAAC;AAC5B,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,CAAC;AACnC,MAAM,SAAS,GAAG,aAAa,CAAC;AAChC,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IACD;IAA7C,YAAY,OAAe,EAAkB,KAAe;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QAD0B,UAAK,GAAL,KAAK,CAAU;QAExD,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IAC1C,CAAC;CACJ;AAgBD,SAAS,iBAAiB;IACtB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACjD,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC/C,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,OAAe,WAAW;IACvD,MAAM,YAAY,GAAG,GAAG,QAAQ,EAAE,CAAC,QAAQ,IAAI,QAAQ,EAAE,uBAAuB,CAAC;IACjF,OAAO,UAAU,CAAC,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACnC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,SAAS,GAAG,KAAgC,CAAC;IACnD,OAAO,CAAC,SAAS,CAAC,OAAO,KAAK,mBAAmB,IAAI,SAAS,CAAC,OAAO,KAAK,mBAAmB,CAAC;WACxF,OAAO,SAAS,CAAC,EAAE,KAAK,QAAQ;WAChC,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ;WAClC,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ;WACtC,OAAO,SAAS,CAAC,WAAW,KAAK,QAAQ,CAAC;AACrD,CAAC;AAED,MAAM,OAAO,WAAW;IACZ,MAAM,CAAC,QAAQ,CAAc;IAC7B,UAAU,CAAS;IACnB,WAAW,CAAS;IACpB,gBAAgB,GAAmC,IAAI,CAAC;IAEhE;QACI,IAAI,CAAC,UAAU,GAAG,iBAAiB,EAAE,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,WAAW;QACd,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YACxB,WAAW,CAAC,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,WAAW,CAAC,QAAQ,CAAC;IAChC,CAAC;IAEO,SAAS;QACb,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,CAAC;IACL,CAAC;IAEO,WAAW,CAAC,OAAe;QAC/B,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,WAAW,MAAM,CAAC;QAC3C,IAAI,CAAC;YACD,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACrE,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACvC,IAAI,CAAC;gBAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,6CAA6C,CAAC,CAAC;QACvG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC;oBAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAEO,YAAY;QAChB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,QAAQ,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAEO,OAAO,CAAC,QAAwB;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACzD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,KAAK,mBAAmB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,CAAC;QACzF,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACtD,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC7E,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAiB,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,uBAAuB,CAAC,4EAA4E,EAAE,KAAK,CAAC,CAAC;QAC3H,CAAC;IACL,CAAC;IAEO,OAAO,CAAC,MAAoB;QAChC,MAAM,IAAI,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,EAAE,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACzE,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO;YACH,OAAO,EAAE,mBAAmB;YAC5B,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACzB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC7B,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACpC,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;SAC7C,CAAC;IACN,CAAC;IAEO,UAAU;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACd,CAAC;QACD,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,QAAQ,CAAC,OAAO,KAAK,mBAAmB,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzG,IAAI,CAAC;oBAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAAC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAAC,MAAM,CAAC,QAAQ,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;gBAAC,CAAC;YAChH,CAAC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,KAAK,YAAY,uBAAuB,EAAE,CAAC;gBAC3C,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAC;YAC7G,CAAC;YACD,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YACjD,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAEO,cAAc;QAClB,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,MAAoB;QACtC,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,mBAAmB;QACf,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED,WAAW,CAAC,OAAe;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,SAAS,CAAC,OAAe;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,SAAS,CAAC,OAAe,EAAE,MAAc;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,+EAA+E;QAC/E,+EAA+E;QAC/E,+EAA+E;QAC/E,2EAA2E;QAC3E,IAAI,IAAI,CAAC,gBAAgB,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,uBAAuB,CAC7B,2IAA2I,EAC3I,IAAI,CAAC,gBAAgB,CACxB,CAAC;QACN,CAAC;QACD,MAAM,CAAC,QAAQ,GAAG;YACd,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;YAC1B,CAAC,OAAO,CAAC,EAAE,MAAM;SACpB,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACjC,CAAC;IAED,YAAY,CAAC,OAAe;QACxB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,0EAA0E;QAC1E,IAAI,IAAI,CAAC,gBAAgB,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,uBAAuB,CAC7B,wIAAwI,EACxI,IAAI,CAAC,gBAAgB,CACxB,CAAC;QACN,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpD,OAAO;QACX,CAAC;QACD,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;QACzD,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,oBAAoB;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,CAAC;IAED,wDAAwD;IACxD,aAAa,CAAC,OAAe,EAAE,IAAY;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,aAAa,CAAC,OAAe,EAAE,IAAY,EAAE,MAAc;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,gBAAgB,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,uBAAuB,CAC7B,2IAA2I,EAC3I,IAAI,CAAC,gBAAgB,CACxB,CAAC;QACN,CAAC;QACD,MAAM,CAAC,aAAa,GAAG;YACnB,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;YAC/B,CAAC,OAAO,CAAC,EAAE;gBACP,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC1C,CAAC,IAAI,CAAC,EAAE,MAAM;aACjB;SACJ,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACjC,CAAC;IAED,gBAAgB,CAAC,OAAe,EAAE,IAAY;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,gBAAgB,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,uBAAuB,CAC7B,wIAAwI,EACxI,IAAI,CAAC,gBAAgB,CACxB,CAAC;QACN,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,IAAI,WAAW,CAAC,EAAE,CAAC;YACzC,OAAO;QACX,CAAC;QACD,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,WAAW,CAAC;QAClD,MAAM,CAAC,aAAa,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;QAC5E,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC;YAC1D,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,sCAAsC;IACtC,iBAAiB,CAAC,OAAe;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,gBAAgB,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,uBAAuB,CAC7B,wIAAwI,EACxI,IAAI,CAAC,gBAAgB,CACxB,CAAC;QACN,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9D,OAAO;QACX,CAAC;QACD,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC;QAC9D,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,iBAAiB,CAAC,OAAe;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrE,CAAC;IAED,eAAe,CAAC,OAAe,EAAE,IAAY;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,SAAS;QACL,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC;gBAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAAC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACjD,MAAM,CAAC,QAAQ,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YACpD,CAAC;QACL,CAAC;IACL,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ export interface SettingsTemplate {
2
+ env?: Record<string, string | number>;
3
+ [key: string]: any;
4
+ }
5
+ export declare function loadSettingsTemplate(): SettingsTemplate;
6
+ export declare function reloadTemplate(): void;
@@ -0,0 +1 @@
1
+ import{existsSync as t,readFileSync as r}from"fs";import{dirname as e,join as n}from"path";import{fileURLToPath as o}from"url";const l=e(o(import.meta.url));let s=null;export function loadSettingsTemplate(){if(s)return s;const e=function(){const r=[n(l,"..","..","settings-template.json"),n(l,"..","settings-template.json"),n(l,"settings-template.json")];for(const e of r)if(t(e))return e;return null}();if(!e)return s={},s;try{return s=JSON.parse(r(e,"utf-8")),s}catch{return s={},s}}export function reloadTemplate(){s=null}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-template.js","sourceRoot":"","sources":["../../src/lib/settings-template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAOtC,SAAS,gBAAgB;IACrB,MAAM,UAAU,GAAG;QACf,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,wBAAwB,CAAC;QACrD,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,wBAAwB,CAAC;QAC/C,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC;KAC5C,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QACzB,IAAI,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,IAAI,cAAc,GAA4B,IAAI,CAAC;AAEnD,MAAM,UAAU,oBAAoB;IAChC,IAAI,cAAc;QAAE,OAAO,cAAc,CAAC;IAE1C,MAAM,YAAY,GAAG,gBAAgB,EAAE,CAAC;IACxC,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,cAAc,GAAG,EAAE,CAAC;QACpB,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC;QACD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;QACjE,OAAO,cAAe,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACL,cAAc,GAAG,EAAE,CAAC;QACpB,OAAO,cAAc,CAAC;IAC1B,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc;IAC1B,cAAc,GAAG,IAAI,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { type VibecliModels } from './config.js';
2
+ import { type BackupEntry, type RestoreResult } from './tools/backup.js';
3
+ export interface ToolRestoreEntry {
4
+ file: string;
5
+ result: RestoreResult;
6
+ }
7
+ export interface ToolBackupListEntry {
8
+ file: string;
9
+ backups: BackupEntry[];
10
+ }
11
+ export interface ToolInfo {
12
+ name: string;
13
+ command: string;
14
+ installCommand: string;
15
+ configPath: string;
16
+ displayName: string;
17
+ hidden?: boolean;
18
+ }
19
+ /**
20
+ * Tool metadata keyed by id. Derived from the adapter registry so the list of
21
+ * supported tools lives in exactly one place (`lib/tools/registry.ts`).
22
+ */
23
+ export declare const SUPPORTED_TOOLS: Record<string, ToolInfo>;
24
+ export declare class ToolManager {
25
+ private static instance;
26
+ private constructor();
27
+ static getInstance(): ToolManager;
28
+ isToolInstalled(toolName: string): boolean;
29
+ installTool(toolName: string): Promise<void>;
30
+ getToolConfig(toolName: string): any;
31
+ updateToolConfig(toolName: string, config: any): void;
32
+ loadPrivateConfig(toolName: string, apiKey: string, models: VibecliModels): void;
33
+ unloadPrivateConfig(toolName: string): void;
34
+ detectCurrentConfig(toolName: string): {
35
+ apiKey: string | null;
36
+ };
37
+ private backupPathsFor;
38
+ /** List timestamped snapshots for every file a tool writes (newest first). */
39
+ listToolBackups(toolName: string): ToolBackupListEntry[];
40
+ /**
41
+ * Restore a tool's config from its latest snapshot (undo the last change).
42
+ * The current state is snapshotted first, so the restore is itself undoable.
43
+ */
44
+ restorePrivateConfig(toolName: string): ToolRestoreEntry[];
45
+ getInstalledTools(): string[];
46
+ getSupportedTools(): ToolInfo[];
47
+ isGitInstalled(): boolean;
48
+ }
49
+ export declare const toolManager: ToolManager;
@@ -0,0 +1 @@
1
+ import{execSync as o}from"child_process";import{i18n as n}from"./i18n.js";import t from"inquirer";import l from"chalk";import e from"terminal-link";import s from"ora";import{logger as i}from"../utils/logger.js";import{configManager as a}from"./config.js";import{getAdapter as r,listAdapters as c,TOOL_ADAPTERS as d}from"./tools/registry.js";import{listBackups as g,restoreBackup as m}from"./tools/backup.js";function u(o){const n=d[o];return{name:n.name,command:n.command,installCommand:n.installCommand,configPath:n.configPath,displayName:n.displayName,...n.hidden?{hidden:!0}:{}}}export const SUPPORTED_TOOLS=Object.fromEntries(Object.keys(d).map(o=>[o,u(o)]));export class ToolManager{static instance;constructor(){}static getInstance(){return ToolManager.instance||(ToolManager.instance=new ToolManager),ToolManager.instance}isToolInstalled(n){const t=SUPPORTED_TOOLS[n];if(!t)return!1;try{const n="win32"===process.platform?`where ${t.command}`:`which ${t.command}`;return o(n,{stdio:"pipe"}),!0}catch{return!1}}async installTool(a){const r=SUPPORTED_TOOLS[a];if(!r)throw new Error(`Unknown tool: ${a}`);const c=s(n.t("wizard.installing_tool")).start();try{c.info(l.gray("$ ")+l.white(r.installCommand)),c.stop(),o(r.installCommand,{stdio:"inherit"}),c.succeed(n.t("wizard.tool_installed"))}catch(s){c.fail(n.t("wizard.install_failed"));const d=(s.message||"")+(s.stderr?.toString()||"")+(s.stdout?.toString()||"");if(!(d.includes("EACCES")||d.includes("permission denied")||d.includes("EPERM")||243===s.status))throw new Error(`Failed to install ${r.displayName}: ${s}`);if(console.log("\n⚠️ "+n.t("install.permission_detected")+"\n"),"win32"===process.platform)try{const t=r.installCommand.replace("npm install -g","npm install -g --force");return console.log("🔧 "+n.t("install.trying_solution",{num:"1",desc:n.t("install.using_force")})),console.log(l.gray("$ ")+l.white(t)),o(t,{stdio:"inherit"}),void console.log("\n✅ "+n.t("install.permission_fixed"))}catch(o){i.warn("Retry install failed:",o),console.log("\n❌ "+n.t("install.auto_fix_failed")),console.log(l.yellow("\n📌 "+n.t("install.windows_solutions"))),console.log(""),console.log(l.cyan.bold(n.t("install.windows_solution_1_title"))),console.log(l.gray(" "+n.t("install.windows_solution_1_step1"))),console.log(l.gray(" "+n.t("install.windows_solution_1_step2"))),console.log(l.gray(" "+n.t("install.windows_solution_1_step3"))),console.log(l.white(` ${r.installCommand}`)),console.log(""),console.log(l.cyan.bold(n.t("install.windows_solution_2_title"))),console.log(l.gray(" "+n.t("install.windows_solution_2_command"))),console.log(l.white(` ${r.installCommand.replace("npm install -g","npm install -g --prefix=%APPDATA%\\npm")}`)),console.log("");const{action:e}=await t.prompt([{type:"list",name:"action",message:n.t("install.what_next"),choices:[{name:n.t("install.installed_continue"),value:"continue"},{name:n.t("install.cancel_install"),value:"cancel"}]}]);if("cancel"===e)throw new Error(n.t("install.user_cancelled"));if(!this.isToolInstalled(a))throw console.log(l.red("\n❌ "+n.t("install.still_not_installed",{tool:r.displayName}))),new Error(`${r.displayName} is not installed`);return void console.log(l.green("\n✅ "+n.t("install.verified_success",{tool:r.displayName})))}console.log(l.yellow("\n📌 "+n.t("install.unix_solutions"))),console.log(""),console.log(l.cyan.bold(n.t("install.unix_solution_1_title"))),console.log(l.gray(" "+n.t("install.unix_solution_1_desc"))),console.log(l.white(` sudo ${r.installCommand}`)),console.log("");const g="https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally",m=e(g,g,{fallback:()=>g});console.log(l.cyan.bold(n.t("install.unix_solution_2_title"))),console.log(l.gray(" "+n.t("install.unix_solution_2_desc"))),console.log(l.blue(" 📖 "+n.t("install.npm_docs_link")+": ")+m),console.log("");const{action:u}=await t.prompt([{type:"list",name:"action",message:n.t("install.what_next"),choices:[{name:n.t("install.installed_continue"),value:"continue"},{name:n.t("install.cancel_install"),value:"cancel"}]}]);if("cancel"===u)throw new Error(n.t("install.user_cancelled"));if(!this.isToolInstalled(a))throw console.log(l.red("\n❌ "+n.t("install.still_not_installed",{tool:r.displayName}))),new Error(`${r.displayName} is not installed`);console.log(l.green("\n✅ "+n.t("install.verified_success",{tool:r.displayName})))}}getToolConfig(o){const n=r(o);if(!n)throw new Error(`Unknown tool: ${o}`);try{return n.getConfig()}catch(n){return i.warn(`Failed to read config for ${o}:`,n),i.logError(`ToolManager.getToolConfig(${o})`,n),null}}updateToolConfig(o,n){const t=r(o);if(!t)throw new Error(`Unknown tool: ${o}`);if(!t.updateConfig)throw new Error(`Tool ${o} does not support raw config updates`);t.updateConfig(n)}loadPrivateConfig(o,n,t){const l=r(o);if(!l)throw new Error(`Unknown tool: ${o}`);l.loadPrivateConfig({apiKey:n,baseUrl:a.getBaseUrl(),models:t})}unloadPrivateConfig(o){const n=r(o);if(!n)throw new Error(`Unknown tool: ${o}`);n.unloadPrivateConfig()}detectCurrentConfig(o){const n=r(o);if(!n)throw new Error(`Unknown tool: ${o}`);return n.detectCurrentConfig()}backupPathsFor(o){return o.backupPaths?o.backupPaths():[o.configPath]}listToolBackups(o){const n=r(o);if(!n)throw new Error(`Unknown tool: ${o}`);return this.backupPathsFor(n).map(o=>({file:o,backups:g(o)}))}restorePrivateConfig(o){const n=r(o);if(!n)throw new Error(`Unknown tool: ${o}`);return this.backupPathsFor(n).map(o=>({file:o,result:m(o)}))}getInstalledTools(){return Object.keys(SUPPORTED_TOOLS).filter(o=>this.isToolInstalled(o))}getSupportedTools(){return c().filter(o=>!o.hidden).map(o=>u(o.name))}isGitInstalled(){try{const n="win32"===process.platform?"where git":"which git";return o(n,{stdio:"pipe"}),!0}catch{return!1}}}export const toolManager=ToolManager.getInstance();
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-manager.js","sourceRoot":"","sources":["../../src/lib/tool-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { type ToolAdapter } from './types.js';
2
+ export declare const atomcodeAdapter: ToolAdapter;
@@ -0,0 +1 @@
1
+ import{existsSync as r,readFileSync as o}from"fs";import{join as t}from"path";import*as e from"@iarna/toml";import{logger as i}from"../../utils/logger.js";import{BRAND_NAME as n}from"../brand.js";import{backupBeforeWrite as a,atomicWriteFile as d}from"./backup.js";import{pickModel as m,toolHome as s,withV1 as p}from"./types.js";import{getToolDefaultModel as l}from"../model-registry.js";const c=()=>t(t(s(),".atomcode"),"config.toml"),f=n;function u(r){return!!r&&"object"==typeof r&&!Array.isArray(r)}function g(){if(!r(c()))return{};const t=o(c(),"utf-8");if(!t.trim())return{};try{const r=e.parse(t);if(!u(r))throw new Error("config.toml root must be a TOML table");return r}catch(r){throw new Error(`Existing ~/.atomcode/config.toml cannot be parsed, back it up and fix it first: ${r instanceof Error?r.message:String(r)}`)}}export const atomcodeAdapter={name:"atomcode",displayName:"AtomCode",command:"atomcode",installCommand:"npm install -g atomcode",configPath:c(),loadPrivateConfig(r){const o=g(),t=u(o.providers)?o.providers:o.providers={},i=u(t[f])?{...t[f]}:{};t[f]={...i,type:"openai",base_url:p(r.baseUrl),context_window:2e5,api_key:r.apiKey,model:m(r.models,l("atomcode"))},o.default_provider=f,a(c()),d(c(),e.stringify(o))},unloadPrivateConfig(){if(!r(c()))return;let o;try{o=g()}catch(r){return void i.logError("atomcodeAdapter.unloadPrivateConfig",r)}u(o.providers)&&(delete o.providers[f],0===Object.keys(o.providers).length&&delete o.providers),o.default_provider===f&&delete o.default_provider,a(c()),d(c(),e.stringify(o))},detectCurrentConfig(){try{const r=g(),o=u(r.providers)?r.providers[f]:null,t=u(o)?o.api_key:null;return{apiKey:"string"==typeof t&&t.trim()?t:null}}catch{return{apiKey:null}}},getConfig(){try{return g()}catch(r){return i.logError("atomcodeAdapter.getConfig",r),null}}};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atomcode.js","sourceRoot":"","sources":["../../../src/lib/tools/atomcode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Write a file atomically: ensure the dir, write to a temp sibling, then rename
3
+ * over the target (rename is atomic on the same filesystem). A crash mid-write
4
+ * leaves the original intact instead of a half-written config. Cleans up the
5
+ * temp file on failure and rethrows.
6
+ */
7
+ export declare function atomicWriteFile(filePath: string, content: string): void;
8
+ /** How many timestamped backups to keep per file before the oldest are pruned. */
9
+ export declare const MAX_TOOL_BACKUPS = 10;
10
+ /**
11
+ * Snapshot a tool config file before we overwrite it.
12
+ *
13
+ * Copies `<file>` to `<file>.bak-<timestamp>` (in place, next to the original) so
14
+ * the user can always recover the exact bytes from before this CLI touched it.
15
+ * Keeps at most `keep` snapshots per file — normal config tweaks would otherwise
16
+ * spawn backups without bound — pruning the oldest. Never throws: a failed backup
17
+ * must not block the real config write.
18
+ */
19
+ export declare function backupBeforeWrite(filePath: string, keep?: number): void;
20
+ export interface BackupEntry {
21
+ /** Absolute path of the snapshot file. */
22
+ path: string;
23
+ /** Basename, e.g. `config.toml.bak-2026-06-30T06-15-00-000Z`. */
24
+ name: string;
25
+ /** Modification time (ms) — used for newest-first ordering. */
26
+ mtimeMs: number;
27
+ /** Within-millisecond sequence from `uniqueBackupPath` (0 when absent). */
28
+ seq: number;
29
+ }
30
+ /**
31
+ * List a file's snapshots, newest first. mtime only has millisecond resolution,
32
+ * so several backups created in the same ms tie — break the tie by the sequence
33
+ * counter so ordering reflects true creation order (restore/rotate depend on it).
34
+ * Empty if the dir/file has none.
35
+ */
36
+ export declare function listBackups(filePath: string): BackupEntry[];
37
+ export interface RestoreResult {
38
+ restored: boolean;
39
+ /** The snapshot that was restored from (basename), when restored. */
40
+ from?: string;
41
+ /** The snapshot taken of the pre-restore state (so restore is itself undoable). */
42
+ snapshot?: string;
43
+ /** Reason when nothing was restored. */
44
+ reason?: 'no_backup';
45
+ }
46
+ /**
47
+ * Restore a file from one of its snapshots (defaults to the newest).
48
+ *
49
+ * Data-safety: before overwriting, the current file is itself snapshotted, so a
50
+ * restore can be undone (you can restore the snapshot it just created). Never
51
+ * throws on a missing backup — returns `{ restored: false, reason: 'no_backup' }`.
52
+ */
53
+ export declare function restoreBackup(filePath: string, backupPath?: string): RestoreResult;
@@ -0,0 +1 @@
1
+ import{existsSync as t,copyFileSync as r,readdirSync as o,statSync as e,unlinkSync as c,writeFileSync as s,renameSync as n,mkdirSync as a}from"fs";import{dirname as i,basename as p,join as u}from"path";import{logger as f}from"../../utils/logger.js";export function atomicWriteFile(r,o){const e=i(r);t(e)||a(e,{recursive:!0});const p=`${r}.tmp-${process.pid}-${Date.now()}`;try{s(p,o,"utf-8"),n(p,r)}catch(r){try{t(p)&&c(p)}catch{}throw r}}export const MAX_TOOL_BACKUPS=10;const m=".bak-";function h(r){const o=`${r}${m}${(new Date).toISOString().replace(/[:.]/g,"-")}`;let e=o,c=1;for(;t(e);)e=`${o}-${c++}`;return e}export function backupBeforeWrite(o,e=10){try{if(!t(o))return;r(o,h(o)),k(o,e)}catch(t){f.logError("backupBeforeWrite",t)}}function l(t){const r=t.match(/Z-(\d+)$/);return r?Number(r[1]):0}export function listBackups(t){const r=i(t),c=p(t)+m;try{return o(r).filter(t=>t.startsWith(c)).map(t=>{const o=u(r,t);return{path:o,name:t,mtimeMs:e(o).mtimeMs,seq:l(t)}}).sort((t,r)=>r.mtimeMs-t.mtimeMs||r.seq-t.seq)}catch{return[]}}export function restoreBackup(o,e){const c=e?listBackups(o).find(t=>t.path===e||t.name===e)?.path:listBackups(o)[0]?.path;if(!c||!t(c))return{restored:!1,reason:"no_backup"};let s;if(t(o)){const t=h(o);try{r(o,t),s=p(t)}catch(t){f.logError("restoreBackup.snapshot",t)}}return r(c,o),k(o,10),{restored:!0,from:p(c),snapshot:s}}function k(t,r){for(const o of listBackups(t).slice(Math.max(0,r)))try{c(o.path)}catch(t){f.logError("backupBeforeWrite.rotate",t)}}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../../src/lib/tools/backup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ToolAdapter } from './types.js';
2
+ /** Thin adapter over the full-featured ClaudeCodeManager singleton. */
3
+ export declare const claudeCodeAdapter: ToolAdapter;
@@ -0,0 +1 @@
1
+ import{join as e}from"path";import{homedir as t}from"os";import{claudeCodeManager as o}from"../claude-code-manager.js";import{backupBeforeWrite as a}from"./backup.js";const n=e(t(),".claude","settings.json"),i=e(t(),".claude.json");export const claudeCodeAdapter={name:"claude-code",displayName:"Claude Code",command:"claude",installCommand:"npm install -g @anthropic-ai/claude-code",configPath:n,loadPrivateConfig(e){a(n),a(i),o.loadPrivateConfig(e.apiKey,e.models)},unloadPrivateConfig(){a(n),o.unloadPrivateConfig()},detectCurrentConfig:()=>o.detectCurrentConfig(),getConfig:()=>({settings:o.getSettings(),mcp:o.getMCPConfig()}),updateConfig(e){const t=e||{};t.settings&&o.saveSettings(t.settings),t.mcp&&o.saveMCPConfig(t.mcp)},backupPaths:()=>[n,i]};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/lib/tools/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AACjE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;AAEtD,uEAAuE;AACvE,MAAM,CAAC,MAAM,iBAAiB,GAAgB;IAC1C,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,aAAa;IAC1B,OAAO,EAAE,QAAQ;IACjB,cAAc,EAAE,0CAA0C;IAC1D,UAAU,EAAE,YAAY;IAExB,iBAAiB,CAAC,GAAqB;QACnC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAChC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACjC,iBAAiB,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAChE,CAAC;IACD,mBAAmB;QACf,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAChC,iBAAiB,CAAC,mBAAmB,EAAE,CAAC;IAC5C,CAAC;IACD,mBAAmB;QACf,OAAO,iBAAiB,CAAC,mBAAmB,EAAE,CAAC;IACnD,CAAC;IACD,SAAS;QACL,OAAO,EAAE,QAAQ,EAAE,iBAAiB,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC;IAChG,CAAC;IACD,YAAY,CAAC,MAAe;QACxB,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,EAAE,CAA0C,CAAC;QACtE,IAAI,KAAK,CAAC,QAAQ;YAAE,iBAAiB,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,GAAG;YAAE,iBAAiB,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,YAAY,EAAE,aAAa,CAAC;CACnD,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { type ToolAdapter } from './types.js';
2
+ export declare const codexAdapter: ToolAdapter;
@@ -0,0 +1 @@
1
+ import{existsSync as r,readFileSync as e}from"fs";import{join as t}from"path";import*as o from"@iarna/toml";import{logger as n}from"../../utils/logger.js";import{backupBeforeWrite as i,atomicWriteFile as s}from"./backup.js";import{pickModel as a,toolHome as c,withV1 as l}from"./types.js";import{getToolDefaultModel as d}from"../model-registry.js";const m=()=>t(c(),".codex"),f=()=>t(m(),"config.toml"),u=()=>t(m(),"auth.json"),p="OPENAI_API_KEY",g="custom";function y(r){return!!r&&"object"==typeof r&&!Array.isArray(r)}function _(r,e){return y(r[e])||(r[e]={}),r[e]}function h(){if(!r(f()))return{};const t=e(f(),"utf-8");if(!t.trim())return{};try{const r=o.parse(t);if(!y(r))throw new Error("config.toml root must be a TOML table");return r}catch(r){throw new Error(`Existing ~/.codex/config.toml cannot be parsed, back it up and fix it first: ${r instanceof Error?r.message:String(r)}`)}}function x(){if(!r(u()))return{};try{const r=JSON.parse(e(u(),"utf-8"));return y(r)?r:{}}catch{return{}}}export const codexAdapter={name:"codex",displayName:"Codex",command:"codex",installCommand:"npm install -g @openai/codex",configPath:f(),loadPrivateConfig(r){const e=a(r.models,d("codex")),t=l(r.baseUrl),n=h();n.model=e,n.model_provider=g,n.model_reasoning_effort="xhigh";const c=_(n,"model_providers"),m=y(c[g])?{...c[g]}:{};delete m.env_key,c[g]={...m,name:"custom",wire_api:"responses",requires_openai_auth:!0,base_url:t};const v=_(n,"profiles"),b=y(v[e])?{...v[e]}:{};v[e]={...b,model_provider:g,model:e},_(_(n,"tui"),"model_availability_nux")[e]=4;const C=_(n,"features");C.goals=!0,C.js_repl=!1,i(f()),s(f(),o.stringify(n)),function(r){const e=r.trim();if(!e)return;const t={...x(),auth_mode:"apikey",[p]:e};i(u()),s(u(),JSON.stringify(t,null,2)+"\n")}(r.apiKey)},unloadPrivateConfig(){if(!r(f()))return;let e;try{e=h()}catch(r){return void n.logError("codexAdapter.unloadPrivateConfig",r)}const t=e.model_providers;y(t)&&(delete t[g],0===Object.keys(t).length&&delete e.model_providers),e.model_provider===g&&delete e.model_provider,i(f()),s(f(),o.stringify(e))},detectCurrentConfig(){const r=x()[p];return{apiKey:"string"==typeof r&&r.trim()?r.trim():null}},getConfig(){try{return h()}catch(r){return n.logError("codexAdapter.getConfig",r),null}},backupPaths:()=>[f(),u()]};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/lib/tools/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,IAAI,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAA2C,MAAM,YAAY,CAAC;AAClG,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,SAAS,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC3D,MAAM,UAAU,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,CAAC;AAClE,MAAM,QAAQ,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,CAAC;AAC9D,qGAAqG;AACrG,MAAM,cAAc,GAAG,gBAAgB,CAAC;AACxC,6FAA6F;AAC7F,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AACpC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AACrC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AACvC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAInC,SAAS,aAAa,CAAC,KAAc;IACjC,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAY,EAAE,GAAW;IAChD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAS,CAAC;AAC/B,CAAC;AAED,SAAS,WAAW;IAChB,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC3B,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClJ,CAAC;AACL,CAAC;AAED,SAAS,YAAY;IACjB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QAC3D,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,MAAc;IAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC1B,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,MAAM,IAAI,GAAG,EAAE,GAAG,YAAY,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,CAAC;IAC/E,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9B,eAAe,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAgB;IACrC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,OAAO;IACpB,OAAO,EAAE,OAAO;IAChB,cAAc,EAAE,8BAA8B;IAC9C,UAAU,EAAE,UAAU,EAAE;IAExB,iBAAiB,CAAC,GAAqB;QACnC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;QAE3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,kBAAkB,CAAC;QACzC,IAAI,CAAC,sBAAsB,GAAG,sBAAsB,CAAC;QAErD,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAI,SAAS,CAAC,kBAAkB,CAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxH,OAAO,YAAY,CAAC,OAAO,CAAC;QAC5B,SAAS,CAAC,kBAAkB,CAAC,GAAG;YAC5B,GAAG,YAAY;YACf,IAAI,EAAE,mBAAmB;YACzB,QAAQ,EAAE,WAAW;YACrB,oBAAoB,EAAE,IAAI;YAC1B,QAAQ,EAAE,OAAO;SACpB,CAAC;QAEF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAI,QAAQ,CAAC,KAAK,CAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3F,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC;QAEhF,MAAM,YAAY,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,wBAAwB,CAAC,CAAC;QACjG,YAAY,CAAC,KAAK,CAAC,GAAG,wBAAwB,CAAC;QAE/C,2EAA2E;QAC3E,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACrD,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;QACtB,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;QAEzB,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC;QAChC,eAAe,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,mBAAmB;QACf,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAAE,OAAO;QACtC,IAAI,IAAU,CAAC;QACf,IAAI,CAAC;YACD,IAAI,GAAG,WAAW,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,QAAQ,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;YAC3D,OAAO;QACX,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC;QACvC,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAC,kBAAkB,CAAC,CAAC;YACrC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC,eAAe,CAAC;QACzE,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,KAAK,kBAAkB,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC,cAAc,CAAC;QAC/B,CAAC;QACD,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC;QAChC,eAAe,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,mBAAmB;QACf,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;QACjC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACjF,CAAC;IAED,SAAS;QACL,IAAI,CAAC;YACD,OAAO,WAAW,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC;CAChD,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { type ToolAdapter } from './types.js';
2
+ export declare const hermesAdapter: ToolAdapter;
@@ -0,0 +1 @@
1
+ import{existsSync as t,readFileSync as r}from"fs";import{join as e}from"path";import*as n from"js-yaml";import{logger as o}from"../../utils/logger.js";import{API_KEY_ENV as i}from"../brand.js";import{backupBeforeWrite as s,atomicWriteFile as m}from"./backup.js";import{pickModel as l,toolHome as a,withV1 as c}from"./types.js";import{getToolDefaultModel as f}from"../model-registry.js";const d=()=>e(a(),".hermes"),u=()=>e(d(),"config.yaml"),p=()=>e(d(),".env");function h(t){return!!t&&"object"==typeof t&&!Array.isArray(t)}function g(){if(!t(u()))return{};const e=r(u(),"utf-8");if(!e.trim())return{};const o=n.load(e);if(!h(o))throw new Error("config.yaml root must be a YAML mapping");return o}export const hermesAdapter={name:"hermes",displayName:"Hermes",command:"hermes",installCommand:"npm install -g hermes-cli",configPath:u(),loadPrivateConfig(e){let o;try{o=g()}catch(t){throw new Error(`Existing ~/.hermes/config.yaml cannot be parsed, back it up and fix it first: ${t instanceof Error?t.message:String(t)}`)}const a=h(o.model)?o.model:o.model={};a.provider="custom",a.base_url=c(e.baseUrl),a.default=l(e.models,f("hermes")),s(u()),m(u(),n.dump(o,{indent:2,lineWidth:-1,noRefs:!0,sortKeys:!1}));const d=t(p())?r(p(),"utf-8"):"";s(p()),m(p(),function(t,r,e){const n=(t||"").split(/\r?\n/),o=`${r}=${e}`;let i=!1;const s=n.map(t=>{const e=t.trim();if(!e||e.startsWith("#"))return t;const n=e.indexOf("=");return n<=0?t:e.slice(0,n).trim()===r?(i=!0,o):t});if(!i){if(!(t||"").trim())return o+"\n";s.length&&""!==s[s.length-1]&&s.push(""),s.push(o)}const m=s.join("\n");return m.endsWith("\n")?m:m+"\n"}(d,i,e.apiKey))},unloadPrivateConfig(){if(t(u()))try{const t=g();h(t.model)&&(delete t.model.provider,delete t.model.base_url,delete t.model.default,0===Object.keys(t.model).length&&delete t.model),s(u()),m(u(),n.dump(t,{indent:2,lineWidth:-1,noRefs:!0,sortKeys:!1}))}catch(t){o.logError("hermesAdapter.unloadPrivateConfig",t)}t(p())&&(s(p()),m(p(),function(t,r){const e=(t||"").split(/\r?\n/).filter(t=>{const e=t.trim();if(!e||e.startsWith("#"))return!0;const n=e.indexOf("=");return n<=0||e.slice(0,n).trim()!==r}).join("\n");return e.endsWith("\n")||""===e?e:e+"\n"}(r(p(),"utf-8"),i)))},detectCurrentConfig(){const e=function(){if(!t(p()))return{};const e={};for(const t of r(p(),"utf-8").split(/\r?\n/)){const r=t.trim();if(!r||r.startsWith("#"))continue;const n=r.indexOf("=");if(n<=0)continue;const o=r.slice(0,n).trim();let i=r.slice(n+1).trim();(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))&&(i=i.slice(1,-1)),e[o]=i}return e}()[i];return{apiKey:e&&e.trim()?e:null}},getConfig(){try{return g()}catch(t){return o.logError("hermesAdapter.getConfig",t),null}},backupPaths:()=>[u(),p()]};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../../src/lib/tools/hermes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAA2C,MAAM,YAAY,CAAC;AAClG,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,SAAS,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;AAC5D,MAAM,UAAU,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,CAAC;AAClE,MAAM,OAAO,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;AAIxD,SAAS,aAAa,CAAC,KAAc;IACjC,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,YAAY;IACjB,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,WAAW;IAChB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,EAAE,CAAC;IACtC,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAClD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS;QACtB,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACnF,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;QACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,mFAAmF;AACnF,SAAS,WAAW,CAAC,GAAW,EAAE,GAAW,EAAE,KAAa;IACxD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;IACrC,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACzC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,EAAE,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAChC,KAAK,GAAG,IAAI,CAAC;YACb,OAAO,UAAU,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;YAAE,OAAO,UAAU,GAAG,IAAI,CAAC;QAClD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;AACpD,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,GAAW;IAC1C,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;SACnB,KAAK,CAAC,OAAO,CAAC;SACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACzC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC;IACpD,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAgB;IACtC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,QAAQ;IACrB,OAAO,EAAE,QAAQ;IACjB,cAAc,EAAE,2BAA2B;IAC3C,UAAU,EAAE,UAAU,EAAE;IAExB,iBAAiB,CAAC,GAAqB;QACnC,IAAI,IAAU,CAAC;QACf,IAAI,CAAC;YACD,IAAI,GAAG,YAAY,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACnJ,CAAC;QAED,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QACxE,KAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACnC,KAAc,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAc,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE/E,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC;QAChC,eAAe,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAE5G,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7B,eAAe,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,mBAAmB;QACf,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACD,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;gBAC5B,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;oBAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;oBAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC1B,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;wBAAE,OAAO,IAAI,CAAC,KAAK,CAAC;gBAChE,CAAC;gBACD,iBAAiB,CAAC,UAAU,EAAE,CAAC,CAAC;gBAChC,eAAe,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAChH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,CAAC,QAAQ,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;YAChE,CAAC;QACL,CAAC;QACD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YACxB,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7B,eAAe,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;QAC5F,CAAC;IACL,CAAC;IAED,mBAAmB;QACf,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC;QACvC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;IAED,SAAS;QACL,IAAI,CAAC;YACD,OAAO,YAAY,EAAE,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,QAAQ,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC;CAC/C,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { type ToolAdapter } from './types.js';
2
+ export declare const openclawAdapter: ToolAdapter;
@@ -0,0 +1 @@
1
+ import{existsSync as e,readFileSync as r}from"fs";import{join as o}from"path";import{logger as t}from"../../utils/logger.js";import{PROVIDER_KEY as n}from"../brand.js";import{backupBeforeWrite as s,atomicWriteFile as l}from"./backup.js";import{pickModel as a,toolHome as i,withV1 as d}from"./types.js";import{getToolDefaultModel as m}from"../model-registry.js";const p=()=>o(o(i(),".openclaw"),"openclaw.json");function c(e){return!!e&&"object"==typeof e&&!Array.isArray(e)}function f(){if(!e(p()))return{};const o=r(p(),"utf-8");if(!o.trim())return{};const t=JSON.parse(o);if(!c(t))throw new Error("openclaw.json root must be a JSON object");return t}export const openclawAdapter={name:"openclaw",displayName:"OpenClaw",command:"openclaw",installCommand:"npm install -g openclaw",configPath:p(),loadPrivateConfig(e){let r;try{r=f()}catch(e){throw new Error(`Existing ~/.openclaw/openclaw.json cannot be parsed, back it up and fix it first: ${e instanceof Error?e.message:String(e)}`)}const o=c(r.models)?r.models:r.models={};o.mode||(o.mode="merge");const t=c(o.providers)?o.providers:o.providers={},i=c(t[n])?{...t[n]}:{},u=a(e.models,m("openclaw"))||function(e){const r=c(e.agents)?e.agents:{},o=c(r.defaults)?r.defaults:{},t=c(o.model)?o.model:{},s=`${n}/`;if("string"==typeof t.primary&&t.primary.startsWith(s))return t.primary.slice(s.length);const l=c(e.models)?e.models:{},a=c(l.providers)?l.providers:{},i=c(a[n])?a[n]:null;return i&&Array.isArray(i.models)&&c(i.models[0])&&"string"==typeof i.models[0].id?i.models[0].id:""}(r);t[n]={...i,baseUrl:d(e.baseUrl),api:"openai-completions",apiKey:e.apiKey,models:[{id:u,name:u}]};const y=c(r.agents)?r.agents:r.agents={},g=c(y.defaults)?y.defaults:y.defaults={},w=c(g.model)?g.model:g.model={},h=`${n}/${u}`;w.primary=h;const v=c(g.models)?g.models:g.models={};Object.prototype.hasOwnProperty.call(v,h)||(v[h]={}),s(p()),l(p(),JSON.stringify(r,null,2))},unloadPrivateConfig(){if(!e(p()))return;let r;try{r=f()}catch(e){return void t.logError("openclawAdapter.unloadPrivateConfig",e)}const o=c(r.models)?r.models:null;o&&c(o.providers)&&delete o.providers[n];const a=c(r.agents)?r.agents:null,i=a&&c(a.defaults)?a.defaults:null,d=i&&c(i.model)?i.model:null,m=`${n}/`;if(d&&"string"==typeof d.primary&&d.primary.startsWith(m)&&delete d.primary,i&&c(i.models))for(const e of Object.keys(i.models))e.startsWith(m)&&delete i.models[e];s(p()),l(p(),JSON.stringify(r,null,2))},detectCurrentConfig(){try{const e=f(),r=c(e.models)?e.models:{},o=c(r.providers)?r.providers:{},t=c(o[n])?o[n]:null,s=t&&"string"==typeof t.apiKey?t.apiKey:null;return{apiKey:s&&s.trim()?s:null}}catch{return{apiKey:null}}},getConfig(){try{return f()}catch(e){return t.logError("openclawAdapter.getConfig",e),null}}};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclaw.js","sourceRoot":"","sources":["../../../src/lib/tools/openclaw.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type ToolAdapter } from './types.js';
2
+ /** Thin adapter over the OpenCodeManager singleton. */
3
+ export declare const opencodeAdapter: ToolAdapter;
@@ -0,0 +1 @@
1
+ import{join as o}from"path";import{homedir as e}from"os";import{openCodeManager as n}from"../opencode-manager.js";import{backupBeforeWrite as i}from"./backup.js";import{pickModel as t}from"./types.js";import{getToolDefaultModel as a}from"../model-registry.js";const d=o(e(),".config","opencode","opencode.json");export const opencodeAdapter={name:"opencode",displayName:"OpenCode",command:"opencode",installCommand:"npm install -g opencode-ai",configPath:d,hidden:!0,loadPrivateConfig(o){i(d);const e=t(o.models,a("opencode"));n.loadPrivateConfig(o.apiKey,{...o.models,opus:e,haiku:e})},unloadPrivateConfig(){i(d),n.unloadPrivateConfig()},detectCurrentConfig:()=>n.detectCurrentConfig(),getConfig:()=>n.getConfig(),updateConfig(o){n.saveConfig(o)}};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/lib/tools/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,SAAS,EAA2C,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;AAEnF,uDAAuD;AACvD,MAAM,CAAC,MAAM,eAAe,GAAgB;IACxC,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,UAAU;IACnB,cAAc,EAAE,4BAA4B;IAC5C,UAAU,EAAE,kBAAkB;IAC9B,qDAAqD;IACrD,gBAAgB;IAChB,MAAM,EAAE,IAAI;IAEZ,iBAAiB,CAAC,GAAqB;QACnC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;QACtC,6EAA6E;QAC7E,mEAAmE;QACnE,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;QACrE,eAAe,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,mBAAmB;QACf,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;QACtC,eAAe,CAAC,mBAAmB,EAAE,CAAC;IAC1C,CAAC;IACD,mBAAmB;QACf,OAAO,eAAe,CAAC,mBAAmB,EAAE,CAAC;IACjD,CAAC;IACD,SAAS;QACL,OAAO,eAAe,CAAC,SAAS,EAAE,CAAC;IACvC,CAAC;IACD,YAAY,CAAC,MAAe;QACxB,eAAe,CAAC,UAAU,CAAC,MAA0D,CAAC,CAAC;IAC3F,CAAC;CACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ToolAdapter } from './types.js';
2
+ export declare const TOOL_ADAPTERS: Record<string, ToolAdapter>;
3
+ export declare function getAdapter(name: string): ToolAdapter | undefined;
4
+ export declare function listAdapters(): ToolAdapter[];
@@ -0,0 +1 @@
1
+ import{claudeCodeAdapter as o}from"./claude-code.js";import{opencodeAdapter as r}from"./opencode.js";import{codexAdapter as t}from"./codex.js";import{openclawAdapter as e}from"./openclaw.js";import{hermesAdapter as m}from"./hermes.js";import{atomcodeAdapter as p}from"./atomcode.js";const n=[o,r,t,e,m,p];export const TOOL_ADAPTERS=Object.fromEntries(n.map(o=>[o.name,o]));export function getAdapter(o){return TOOL_ADAPTERS[o]}export function listAdapters(){return[...n]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/lib/tools/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;GAIG;AACH,MAAM,QAAQ,GAAkB;IAC5B,iBAAiB;IACjB,eAAe;IACf,YAAY;IACZ,eAAe;IACf,aAAa;IACb,eAAe;CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAgC,MAAM,CAAC,WAAW,CACxE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CACrD,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,IAAY;IACnC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,YAAY;IACxB,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;AACzB,CAAC"}