poe-code 2.0.1 → 2.0.3

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 (63) hide show
  1. package/README.md +31 -10
  2. package/dist/cli/bootstrap.js +3 -1
  3. package/dist/cli/bootstrap.js.map +1 -1
  4. package/dist/cli/commands/configure.js +2 -11
  5. package/dist/cli/commands/configure.js.map +1 -1
  6. package/dist/cli/commands/install.d.ts +4 -0
  7. package/dist/cli/commands/install.js +32 -0
  8. package/dist/cli/commands/install.js.map +1 -0
  9. package/dist/cli/commands/login.d.ts +6 -0
  10. package/dist/cli/commands/login.js +51 -0
  11. package/dist/cli/commands/login.js.map +1 -0
  12. package/dist/cli/commands/remove.d.ts +6 -0
  13. package/dist/cli/commands/remove.js +83 -0
  14. package/dist/cli/commands/remove.js.map +1 -0
  15. package/dist/cli/commands/spawn.d.ts +12 -2
  16. package/dist/cli/commands/spawn.js +19 -2
  17. package/dist/cli/commands/spawn.js.map +1 -1
  18. package/dist/cli/container.js +1 -1
  19. package/dist/cli/container.js.map +1 -1
  20. package/dist/cli/error-logger.d.ts +1 -0
  21. package/dist/cli/error-logger.js +17 -6
  22. package/dist/cli/error-logger.js.map +1 -1
  23. package/dist/cli/program.js +6 -0
  24. package/dist/cli/program.js.map +1 -1
  25. package/dist/cli/service-registry.d.ts +1 -0
  26. package/dist/cli/service-registry.js.map +1 -1
  27. package/dist/{services → providers}/claude-code.d.ts +23 -2
  28. package/dist/{services → providers}/claude-code.js +99 -5
  29. package/dist/providers/claude-code.js.map +1 -0
  30. package/dist/{services → providers}/codex.d.ts +22 -3
  31. package/dist/{services → providers}/codex.js +54 -6
  32. package/dist/providers/codex.js.map +1 -0
  33. package/dist/providers/index.js +4 -4
  34. package/dist/providers/index.js.map +1 -1
  35. package/dist/{services → providers}/opencode.d.ts +20 -2
  36. package/dist/{services → providers}/opencode.js +51 -2
  37. package/dist/providers/opencode.js.map +1 -0
  38. package/dist/providers/roo-code.d.ts +41 -0
  39. package/dist/{services → providers}/roo-code.js +69 -2
  40. package/dist/providers/roo-code.js.map +1 -0
  41. package/dist/services/credentials.js +29 -5
  42. package/dist/services/credentials.js.map +1 -1
  43. package/dist/tools/label-generator.d.ts +11 -0
  44. package/dist/tools/label-generator.js +78 -0
  45. package/dist/tools/label-generator.js.map +1 -0
  46. package/package.json +2 -1
  47. package/dist/providers/claude-code-adapter.d.ts +0 -20
  48. package/dist/providers/claude-code-adapter.js +0 -54
  49. package/dist/providers/claude-code-adapter.js.map +0 -1
  50. package/dist/providers/codex-adapter.d.ts +0 -19
  51. package/dist/providers/codex-adapter.js +0 -55
  52. package/dist/providers/codex-adapter.js.map +0 -1
  53. package/dist/providers/opencode-adapter.d.ts +0 -18
  54. package/dist/providers/opencode-adapter.js +0 -51
  55. package/dist/providers/opencode-adapter.js.map +0 -1
  56. package/dist/providers/roo-code-adapter.d.ts +0 -19
  57. package/dist/providers/roo-code-adapter.js +0 -70
  58. package/dist/providers/roo-code-adapter.js.map +0 -1
  59. package/dist/services/claude-code.js.map +0 -1
  60. package/dist/services/codex.js.map +0 -1
  61. package/dist/services/opencode.js.map +0 -1
  62. package/dist/services/roo-code.d.ts +0 -22
  63. package/dist/services/roo-code.js.map +0 -1
@@ -1,7 +1,26 @@
1
+ import type { ProviderAdapter } from "../cli/service-registry.js";
2
+ import type { ServiceMutationHooks } from "../services/service-manifest.js";
1
3
  import type { FileSystem } from "../utils/file-system.js";
2
4
  import type { CommandRunner, CommandRunnerResult, PrerequisiteDefinition, PrerequisiteManager } from "../utils/prerequisites.js";
3
- import { type ServiceRunOptions } from "./service-manifest.js";
4
- import { type InstallContext } from "./service-install.js";
5
+ import { type ServiceRunOptions } from "../services/service-manifest.js";
6
+ import { type InstallContext } from "../services/service-install.js";
7
+ export interface ClaudeCodePaths extends Record<string, string> {
8
+ settingsPath: string;
9
+ keyHelperPath: string;
10
+ credentialsPath: string;
11
+ }
12
+ export interface ClaudeCodeConfigureOptions {
13
+ apiKey: string;
14
+ defaultModel: string;
15
+ mutationHooks?: ServiceMutationHooks;
16
+ }
17
+ export interface ClaudeCodeRemoveOptions {
18
+ mutationHooks?: ServiceMutationHooks;
19
+ }
20
+ export interface ClaudeCodeSpawnOptions {
21
+ prompt: string;
22
+ args: string[];
23
+ }
5
24
  export interface ConfigureClaudeCodeOptions {
6
25
  fs: FileSystem;
7
26
  apiKey: string;
@@ -20,9 +39,11 @@ export interface SpawnClaudeCodeOptions {
20
39
  args?: string[];
21
40
  runCommand: CommandRunner;
22
41
  }
42
+ export type InstallClaudeCodeOptions = InstallContext;
23
43
  export declare function configureClaudeCode(options: ConfigureClaudeCodeOptions, runOptions?: ServiceRunOptions): Promise<void>;
24
44
  export declare function spawnClaudeCode(options: SpawnClaudeCodeOptions): Promise<CommandRunnerResult>;
25
45
  export declare function removeClaudeCode(options: RemoveClaudeCodeOptions, runOptions?: ServiceRunOptions): Promise<boolean>;
26
46
  export declare function registerClaudeCodePrerequisites(prerequisites: PrerequisiteManager): void;
27
47
  export declare function installClaudeCode(context: InstallContext): Promise<boolean>;
28
48
  export declare function createClaudeCliBinaryCheck(): PrerequisiteDefinition;
49
+ export declare const claudeCodeAdapter: ProviderAdapter<ClaudeCodePaths, ClaudeCodeConfigureOptions, ClaudeCodeRemoveOptions, ClaudeCodeSpawnOptions>;
@@ -1,10 +1,12 @@
1
1
  import path from "node:path";
2
- import { createBinaryExistsCheck } from "../utils/prerequisites.js";
3
- import { ensureDirectory, jsonMergeMutation, jsonPruneMutation, runServiceConfigure, runServiceRemove, writeTemplateMutation } from "./service-manifest.js";
4
- import { runServiceInstall } from "./service-install.js";
2
+ import { createBinaryExistsCheck, formatCommandRunnerResult } from "../utils/prerequisites.js";
3
+ import { ensureDirectory, jsonMergeMutation, jsonPruneMutation, runServiceConfigure, runServiceRemove, writeTemplateMutation } from "../services/service-manifest.js";
4
+ import { runServiceInstall } from "../services/service-install.js";
5
5
  import { CLAUDE_MODEL_OPUS, CLAUDE_MODEL_SONNET, CLAUDE_MODEL_HAIKU } from "../cli/constants.js";
6
+ import { isJsonObject } from "../utils/json.js";
6
7
  const KEY_HELPER_TEMPLATE_ID = "claude-code/anthropic_key.sh.hbs";
7
8
  const KEY_HELPER_MODE = 0o700;
9
+ const EMPTY_JSON_DOCUMENT = `${JSON.stringify({}, null, 2)}\n`;
8
10
  const CLAUDE_ENV_SHAPE = {
9
11
  apiKeyHelper: true,
10
12
  env: {
@@ -35,6 +37,7 @@ const CLAUDE_CODE_MANIFEST = {
35
37
  label: "Write API key helper script"
36
38
  }),
37
39
  createChmodMutation(),
40
+ recoverInvalidSettingsMutation(),
38
41
  jsonMergeMutation({
39
42
  target: ({ options }) => options.settingsPath,
40
43
  label: "Merge Claude settings",
@@ -94,6 +97,37 @@ function removeKeyHelperMutation() {
94
97
  label: "Remove API key helper script"
95
98
  };
96
99
  }
100
+ function recoverInvalidSettingsMutation() {
101
+ return {
102
+ kind: "transformFile",
103
+ target: ({ options }) => options.settingsPath,
104
+ label: "Recover invalid Claude settings",
105
+ async transform({ content, context }) {
106
+ if (content == null || isJsonDocument(content)) {
107
+ return { content, changed: false };
108
+ }
109
+ const backupPath = createInvalidBackupPath(context.options.settingsPath);
110
+ await context.fs.writeFile(backupPath, content, { encoding: "utf8" });
111
+ return {
112
+ content: EMPTY_JSON_DOCUMENT,
113
+ changed: true
114
+ };
115
+ }
116
+ };
117
+ }
118
+ function isJsonDocument(content) {
119
+ try {
120
+ const parsed = JSON.parse(content);
121
+ return isJsonObject(parsed);
122
+ }
123
+ catch {
124
+ return false;
125
+ }
126
+ }
127
+ function createInvalidBackupPath(settingsPath) {
128
+ const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
129
+ return `${settingsPath}.invalid-${timestamp}.json`;
130
+ }
97
131
  function toSingleQuotedLiteral(targetPath) {
98
132
  const escaped = targetPath.replace(/'/g, `'\\''`);
99
133
  return `'${escaped}'`;
@@ -143,13 +177,73 @@ function createClaudeCliHealthCheck() {
143
177
  runCommand
144
178
  });
145
179
  if (result.exitCode !== 0) {
146
- throw new Error(`Claude CLI health check failed with exit code ${result.exitCode}.`);
180
+ const detail = formatCommandRunnerResult(result);
181
+ throw new Error([
182
+ `Claude CLI health check failed with exit code ${result.exitCode}.`,
183
+ detail
184
+ ].join("\n"));
147
185
  }
148
186
  const output = result.stdout.trim();
149
187
  if (output !== "CLAUDE_CODE_OK") {
150
- throw new Error(`Claude CLI health check failed: expected "CLAUDE_CODE_OK" but received "${output}".`);
188
+ const detail = formatCommandRunnerResult(result);
189
+ throw new Error([
190
+ `Claude CLI health check failed: expected "CLAUDE_CODE_OK" but received "${output}".`,
191
+ detail
192
+ ].join("\n"));
151
193
  }
152
194
  }
153
195
  };
154
196
  }
197
+ export const claudeCodeAdapter = {
198
+ name: "claude-code",
199
+ label: "Claude Code",
200
+ branding: {
201
+ colors: {
202
+ dark: "#C15F3C",
203
+ light: "#C15F3C"
204
+ }
205
+ },
206
+ supportsSpawn: true,
207
+ resolvePaths(env) {
208
+ return {
209
+ settingsPath: env.resolveHomePath(".claude", "settings.json"),
210
+ keyHelperPath: env.resolveHomePath(".claude", "anthropic_key.sh"),
211
+ credentialsPath: env.credentialsPath
212
+ };
213
+ },
214
+ registerPrerequisites(manager) {
215
+ registerClaudeCodePrerequisites(manager);
216
+ },
217
+ async install(context) {
218
+ await installClaudeCode({
219
+ isDryRun: context.logger.context.dryRun,
220
+ runCommand: context.command.runCommand,
221
+ logger: (message) => context.logger.info(message)
222
+ });
223
+ },
224
+ async configure(context, options) {
225
+ await configureClaudeCode({
226
+ fs: context.command.fs,
227
+ apiKey: options.apiKey,
228
+ settingsPath: context.paths.settingsPath,
229
+ keyHelperPath: context.paths.keyHelperPath,
230
+ credentialsPath: context.paths.credentialsPath,
231
+ defaultModel: options.defaultModel
232
+ }, options.mutationHooks ? { hooks: options.mutationHooks } : undefined);
233
+ },
234
+ async remove(context, options) {
235
+ return await removeClaudeCode({
236
+ fs: context.command.fs,
237
+ settingsPath: context.paths.settingsPath,
238
+ keyHelperPath: context.paths.keyHelperPath
239
+ }, options.mutationHooks ? { hooks: options.mutationHooks } : undefined);
240
+ },
241
+ async spawn(context, options) {
242
+ return await spawnClaudeCode({
243
+ prompt: options.prompt,
244
+ args: options.args,
245
+ runCommand: context.command.runCommand
246
+ });
247
+ }
248
+ };
155
249
  //# sourceMappingURL=claude-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/providers/claude-code.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,25 @@
1
+ import type { ProviderAdapter } from "../cli/service-registry.js";
2
+ import type { ServiceMutationHooks } from "../services/service-manifest.js";
1
3
  import type { FileSystem } from "../utils/file-system.js";
2
4
  import type { CommandRunner, CommandRunnerResult, PrerequisiteManager } from "../utils/prerequisites.js";
3
- import { type ServiceRunOptions } from "./service-manifest.js";
4
- import { type InstallContext } from "./service-install.js";
5
+ import { type ServiceRunOptions } from "../services/service-manifest.js";
6
+ import { type InstallContext } from "../services/service-install.js";
7
+ export interface CodexPaths extends Record<string, string> {
8
+ configPath: string;
9
+ }
10
+ export interface CodexConfigureOptions {
11
+ apiKey: string;
12
+ model: string;
13
+ reasoningEffort: string;
14
+ mutationHooks?: ServiceMutationHooks;
15
+ }
16
+ export interface CodexRemoveOptions {
17
+ mutationHooks?: ServiceMutationHooks;
18
+ }
19
+ export interface CodexSpawnOptions {
20
+ prompt: string;
21
+ args: string[];
22
+ }
5
23
  export interface ConfigureCodexOptions {
6
24
  fs: FileSystem;
7
25
  configPath: string;
@@ -20,8 +38,9 @@ export interface SpawnCodexOptions {
20
38
  runCommand: CommandRunner;
21
39
  }
22
40
  export declare function configureCodex(options: ConfigureCodexOptions, runOptions?: ServiceRunOptions): Promise<void>;
41
+ export declare function buildCodexExecArgs(prompt: string, extraArgs?: string[]): string[];
23
42
  export declare function spawnCodex(options: SpawnCodexOptions): Promise<CommandRunnerResult>;
24
43
  export declare function removeCodex(options: RemoveCodexOptions, runOptions?: ServiceRunOptions): Promise<boolean>;
25
44
  export declare function installCodex(context: InstallContext): Promise<boolean>;
26
45
  export declare function registerCodexPrerequisites(prerequisites: PrerequisiteManager): void;
27
- export declare function buildCodexExecArgs(prompt: string, extraArgs?: string[]): string[];
46
+ export declare const codexAdapter: ProviderAdapter<CodexPaths, CodexConfigureOptions, CodexRemoveOptions, CodexSpawnOptions>;
@@ -1,8 +1,8 @@
1
1
  import path from "node:path";
2
2
  import { createBinaryExistsCheck, formatCommandRunnerResult } from "../utils/prerequisites.js";
3
- import { createBackupMutation, ensureDirectory, runServiceConfigure, runServiceRemove } from "./service-manifest.js";
3
+ import { createBackupMutation, ensureDirectory, runServiceConfigure, runServiceRemove } from "../services/service-manifest.js";
4
4
  import { parseTomlDocument, serializeTomlDocument, mergeTomlTables, isTomlTable } from "../utils/toml.js";
5
- import { runServiceInstall } from "./service-install.js";
5
+ import { runServiceInstall } from "../services/service-install.js";
6
6
  import { renderTemplate } from "../utils/templates.js";
7
7
  const CODEX_PROVIDER_ID = "poe";
8
8
  const CODEX_BASE_URL = "https://api.poe.com/v1";
@@ -166,6 +166,10 @@ export async function configureCodex(options, runOptions) {
166
166
  options
167
167
  }, runOptions);
168
168
  }
169
+ const CODEX_DEFAULT_EXEC_ARGS = ["--full-auto"];
170
+ export function buildCodexExecArgs(prompt, extraArgs = []) {
171
+ return ["exec", prompt, ...CODEX_DEFAULT_EXEC_ARGS, ...extraArgs];
172
+ }
169
173
  export async function spawnCodex(options) {
170
174
  const args = buildCodexExecArgs(options.prompt, options.args);
171
175
  return options.runCommand("codex", args);
@@ -182,10 +186,6 @@ export async function installCodex(context) {
182
186
  export function registerCodexPrerequisites(prerequisites) {
183
187
  prerequisites.registerAfter(createCodexCliHealthCheck());
184
188
  }
185
- const CODEX_DEFAULT_EXEC_ARGS = ["--full-auto"];
186
- export function buildCodexExecArgs(prompt, extraArgs = []) {
187
- return ["exec", prompt, ...CODEX_DEFAULT_EXEC_ARGS, ...extraArgs];
188
- }
189
189
  function createCodexBinaryCheck() {
190
190
  return createBinaryExistsCheck("codex", "codex-cli-binary", "Codex CLI binary must exist");
191
191
  }
@@ -228,4 +228,52 @@ function createCodexCliHealthCheck() {
228
228
  }
229
229
  };
230
230
  }
231
+ export const codexAdapter = {
232
+ name: "codex",
233
+ label: "Codex",
234
+ branding: {
235
+ colors: {
236
+ dark: "#D5D9DF",
237
+ light: "#7A7F86"
238
+ }
239
+ },
240
+ supportsSpawn: true,
241
+ resolvePaths(env) {
242
+ return {
243
+ configPath: env.resolveHomePath(".codex", "config.toml")
244
+ };
245
+ },
246
+ registerPrerequisites(manager) {
247
+ registerCodexPrerequisites(manager);
248
+ },
249
+ async install(context) {
250
+ await installCodex({
251
+ isDryRun: context.logger.context.dryRun,
252
+ runCommand: context.command.runCommand,
253
+ logger: (message) => context.logger.info(message)
254
+ });
255
+ },
256
+ async configure(context, options) {
257
+ await configureCodex({
258
+ fs: context.command.fs,
259
+ configPath: context.paths.configPath,
260
+ apiKey: options.apiKey,
261
+ model: options.model,
262
+ reasoningEffort: options.reasoningEffort
263
+ }, options.mutationHooks ? { hooks: options.mutationHooks } : undefined);
264
+ },
265
+ async remove(context, options) {
266
+ return await removeCodex({
267
+ fs: context.command.fs,
268
+ configPath: context.paths.configPath
269
+ }, options.mutationHooks ? { hooks: options.mutationHooks } : undefined);
270
+ },
271
+ async spawn(context, options) {
272
+ return await spawnCodex({
273
+ prompt: options.prompt,
274
+ args: options.args,
275
+ runCommand: context.command.runCommand
276
+ });
277
+ }
278
+ };
231
279
  //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/providers/codex.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { claudeCodeAdapter } from "./claude-code-adapter.js";
2
- import { codexAdapter } from "./codex-adapter.js";
3
- import { openCodeAdapter } from "./opencode-adapter.js";
4
- import { rooCodeAdapter } from "./roo-code-adapter.js";
1
+ import { claudeCodeAdapter } from "./claude-code.js";
2
+ import { codexAdapter } from "./codex.js";
3
+ import { openCodeAdapter } from "./opencode.js";
4
+ import { rooCodeAdapter } from "./roo-code.js";
5
5
  export function getDefaultProviders() {
6
6
  return [
7
7
  claudeCodeAdapter,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,iBAA+C;QAC/C,YAA0C;QAC1C,eAA6C;QAC7C,cAA4C;KAC7C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,iBAA+C;QAC/C,YAA0C;QAC1C,eAA6C;QAC7C,cAA4C;KAC7C,CAAC;AACJ,CAAC"}
@@ -1,7 +1,24 @@
1
+ import type { ProviderAdapter } from "../cli/service-registry.js";
2
+ import type { ServiceMutationHooks } from "../services/service-manifest.js";
1
3
  import type { FileSystem } from "../utils/file-system.js";
2
4
  import type { CommandRunner, CommandRunnerResult, PrerequisiteManager } from "../utils/prerequisites.js";
3
- import { type ServiceRunOptions } from "./service-manifest.js";
4
- import { type InstallContext } from "./service-install.js";
5
+ import { type ServiceRunOptions } from "../services/service-manifest.js";
6
+ import { type InstallContext } from "../services/service-install.js";
7
+ export interface OpenCodePaths extends Record<string, string> {
8
+ configPath: string;
9
+ authPath: string;
10
+ }
11
+ export interface OpenCodeConfigureOptions {
12
+ apiKey: string;
13
+ mutationHooks?: ServiceMutationHooks;
14
+ }
15
+ export interface OpenCodeRemoveOptions {
16
+ mutationHooks?: ServiceMutationHooks;
17
+ }
18
+ export interface OpenCodeSpawnOptions {
19
+ prompt: string;
20
+ args: string[];
21
+ }
5
22
  export interface ConfigureOpenCodeOptions {
6
23
  fs: FileSystem;
7
24
  configPath: string;
@@ -23,3 +40,4 @@ export declare function spawnOpenCode(options: SpawnOpenCodeOptions): Promise<Co
23
40
  export declare function removeOpenCode(options: RemoveOpenCodeOptions, runOptions?: ServiceRunOptions): Promise<boolean>;
24
41
  export declare function installOpenCode(context: InstallContext): Promise<boolean>;
25
42
  export declare function registerOpenCodePrerequisites(prerequisites: PrerequisiteManager): void;
43
+ export declare const openCodeAdapter: ProviderAdapter<OpenCodePaths, OpenCodeConfigureOptions, OpenCodeRemoveOptions, OpenCodeSpawnOptions>;
@@ -1,7 +1,7 @@
1
1
  import path from "node:path";
2
2
  import { createBinaryExistsCheck, formatCommandRunnerResult } from "../utils/prerequisites.js";
3
- import { ensureDirectory, jsonMergeMutation, jsonPruneMutation, removeFileMutation, runServiceConfigure, runServiceRemove } from "./service-manifest.js";
4
- import { runServiceInstall } from "./service-install.js";
3
+ import { ensureDirectory, jsonMergeMutation, jsonPruneMutation, removeFileMutation, runServiceConfigure, runServiceRemove } from "../services/service-manifest.js";
4
+ import { runServiceInstall } from "../services/service-install.js";
5
5
  const OPEN_CODE_CONFIG_TEMPLATE = {
6
6
  $schema: "https://opencode.ai/config.json",
7
7
  provider: {
@@ -158,4 +158,53 @@ function createOpenCodeHealthCheck() {
158
158
  }
159
159
  };
160
160
  }
161
+ export const openCodeAdapter = {
162
+ name: "opencode",
163
+ label: "OpenCode CLI",
164
+ branding: {
165
+ colors: {
166
+ dark: "#4A4F55",
167
+ light: "#2F3338"
168
+ }
169
+ },
170
+ supportsSpawn: true,
171
+ resolvePaths(env) {
172
+ return {
173
+ configPath: env.resolveHomePath(".config", "opencode", "config.json"),
174
+ authPath: env.resolveHomePath(".local", "share", "opencode", "auth.json")
175
+ };
176
+ },
177
+ registerPrerequisites(manager) {
178
+ registerOpenCodePrerequisites(manager);
179
+ },
180
+ async install(context) {
181
+ await installOpenCode({
182
+ isDryRun: context.logger.context.dryRun,
183
+ runCommand: context.command.runCommand,
184
+ logger: (message) => context.logger.info(message)
185
+ });
186
+ },
187
+ async configure(context, options) {
188
+ await configureOpenCode({
189
+ fs: context.command.fs,
190
+ configPath: context.paths.configPath,
191
+ authPath: context.paths.authPath,
192
+ apiKey: options.apiKey
193
+ }, options.mutationHooks ? { hooks: options.mutationHooks } : undefined);
194
+ },
195
+ async remove(context, options) {
196
+ return await removeOpenCode({
197
+ fs: context.command.fs,
198
+ configPath: context.paths.configPath,
199
+ authPath: context.paths.authPath
200
+ }, options.mutationHooks ? { hooks: options.mutationHooks } : undefined);
201
+ },
202
+ async spawn(context, options) {
203
+ return await spawnOpenCode({
204
+ prompt: options.prompt,
205
+ args: options.args,
206
+ runCommand: context.command.runCommand
207
+ });
208
+ }
209
+ };
161
210
  //# sourceMappingURL=opencode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/providers/opencode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { ProviderAdapter } from "../cli/service-registry.js";
2
+ import type { ServiceMutationHooks } from "../services/service-manifest.js";
3
+ import type { FileSystem } from "../utils/file-system.js";
4
+ import { type ServiceRunOptions } from "../services/service-manifest.js";
5
+ export interface RooCodePaths extends Record<string, string> {
6
+ configPath: string;
7
+ settingsPath: string;
8
+ autoImportPath: string;
9
+ }
10
+ export interface RooCodeConfigureOptions {
11
+ apiKey: string;
12
+ model: string;
13
+ baseUrl: string;
14
+ configName: string;
15
+ mutationHooks?: ServiceMutationHooks;
16
+ }
17
+ export interface RooCodeRemoveOptions {
18
+ configName: string;
19
+ mutationHooks?: ServiceMutationHooks;
20
+ }
21
+ export interface ConfigureRooCodeOptions {
22
+ fs: FileSystem;
23
+ configPath: string;
24
+ settingsPath: string;
25
+ configName: string;
26
+ apiKey: string;
27
+ model: string;
28
+ baseUrl: string;
29
+ autoImportPath: string;
30
+ rateLimitSeconds?: number;
31
+ }
32
+ export interface RemoveRooCodeOptions {
33
+ fs: FileSystem;
34
+ configPath: string;
35
+ settingsPath: string;
36
+ configName: string;
37
+ autoImportPath: string;
38
+ }
39
+ export declare function configureRooCode(options: ConfigureRooCodeOptions, runOptions?: ServiceRunOptions): Promise<void>;
40
+ export declare function removeRooCode(options: RemoveRooCodeOptions, runOptions?: ServiceRunOptions): Promise<boolean>;
41
+ export declare const rooCodeAdapter: ProviderAdapter<RooCodePaths, RooCodeConfigureOptions, RooCodeRemoveOptions>;
@@ -1,7 +1,7 @@
1
- import crypto from "node:crypto";
2
1
  import path from "node:path";
2
+ import crypto from "node:crypto";
3
3
  import { isJsonObject } from "../utils/json.js";
4
- import { ensureDirectory, jsonMergeMutation, runServiceConfigure, runServiceRemove } from "./service-manifest.js";
4
+ import { ensureDirectory, jsonMergeMutation, runServiceConfigure, runServiceRemove } from "../services/service-manifest.js";
5
5
  const DEFAULT_RATE_LIMIT_SECONDS = 0;
6
6
  const ROO_CODE_MANIFEST = {
7
7
  id: "roo-code",
@@ -131,4 +131,71 @@ function readString(value) {
131
131
  function generateProfileId() {
132
132
  return crypto.randomBytes(5).toString("hex");
133
133
  }
134
+ function resolveVsCodeSettingsPath(platform, homeDir, variables) {
135
+ if (platform === "darwin") {
136
+ return path.join(homeDir, "Library", "Application Support", "Code", "User", "settings.json");
137
+ }
138
+ if (platform === "win32") {
139
+ const base = variables.APPDATA ?? path.join(homeDir, "AppData", "Roaming");
140
+ return path.join(base, "Code", "User", "settings.json");
141
+ }
142
+ return path.join(homeDir, ".config", "Code", "User", "settings.json");
143
+ }
144
+ function formatAutoImportPath(homeDir, targetPath) {
145
+ const normalizedHome = path.resolve(homeDir);
146
+ const normalizedTarget = path.resolve(targetPath);
147
+ if (normalizedHome === normalizedTarget) {
148
+ return "~";
149
+ }
150
+ if (normalizedTarget.startsWith(normalizedHome)) {
151
+ const suffix = normalizedTarget.slice(normalizedHome.length);
152
+ const trimmed = suffix.startsWith(path.sep)
153
+ ? suffix.slice(1)
154
+ : suffix;
155
+ if (trimmed.length === 0) {
156
+ return "~";
157
+ }
158
+ return `~/${trimmed.split(path.sep).join("/")}`;
159
+ }
160
+ return normalizedTarget.split(path.sep).join("/");
161
+ }
162
+ export const rooCodeAdapter = {
163
+ name: "roo-code",
164
+ label: "Roo Code",
165
+ disabled: true,
166
+ supportsSpawn: false,
167
+ resolvePaths(env) {
168
+ const settingsPath = resolveVsCodeSettingsPath(env.platform, env.homeDir, env.variables);
169
+ if (!settingsPath) {
170
+ throw new Error("Unable to determine VSCode settings path for the current platform.");
171
+ }
172
+ const configPath = env.resolveHomePath("Documents", "roo-config.json");
173
+ return {
174
+ configPath,
175
+ settingsPath,
176
+ autoImportPath: formatAutoImportPath(env.homeDir, configPath)
177
+ };
178
+ },
179
+ async configure(context, options) {
180
+ await configureRooCode({
181
+ fs: context.command.fs,
182
+ configPath: context.paths.configPath,
183
+ settingsPath: context.paths.settingsPath,
184
+ configName: options.configName,
185
+ apiKey: options.apiKey,
186
+ model: options.model,
187
+ baseUrl: options.baseUrl,
188
+ autoImportPath: context.paths.autoImportPath
189
+ }, options.mutationHooks ? { hooks: options.mutationHooks } : undefined);
190
+ },
191
+ async remove(context, options) {
192
+ return await removeRooCode({
193
+ fs: context.command.fs,
194
+ configPath: context.paths.configPath,
195
+ settingsPath: context.paths.settingsPath,
196
+ configName: options.configName,
197
+ autoImportPath: context.paths.autoImportPath
198
+ }, options.mutationHooks ? { hooks: options.mutationHooks } : undefined);
199
+ }
200
+ };
134
201
  //# sourceMappingURL=roo-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roo-code.js","sourceRoot":"","sources":["../../src/providers/roo-code.ts"],"names":[],"mappings":"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"}