poe-code 2.0.3 → 2.0.5

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 (100) hide show
  1. package/README.md +17 -30
  2. package/dist/cli/command-runner.d.ts +1 -1
  3. package/dist/cli/commands/configure.d.ts +0 -2
  4. package/dist/cli/commands/configure.js +99 -34
  5. package/dist/cli/commands/configure.js.map +1 -1
  6. package/dist/cli/commands/doctor.d.ts +4 -0
  7. package/dist/cli/commands/doctor.js +73 -0
  8. package/dist/cli/commands/doctor.js.map +1 -0
  9. package/dist/cli/commands/remove.d.ts +1 -0
  10. package/dist/cli/commands/remove.js +41 -28
  11. package/dist/cli/commands/remove.js.map +1 -1
  12. package/dist/cli/commands/shared.d.ts +9 -12
  13. package/dist/cli/commands/shared.js +26 -24
  14. package/dist/cli/commands/shared.js.map +1 -1
  15. package/dist/cli/commands/spawn.d.ts +1 -0
  16. package/dist/cli/commands/spawn.js +14 -5
  17. package/dist/cli/commands/spawn.js.map +1 -1
  18. package/dist/cli/commands/test.d.ts +4 -0
  19. package/dist/cli/commands/test.js +36 -0
  20. package/dist/cli/commands/test.js.map +1 -0
  21. package/dist/cli/constants.d.ts +12 -9
  22. package/dist/cli/constants.js +15 -9
  23. package/dist/cli/constants.js.map +1 -1
  24. package/dist/cli/container.d.ts +3 -3
  25. package/dist/cli/context.d.ts +4 -13
  26. package/dist/cli/context.js +19 -149
  27. package/dist/cli/context.js.map +1 -1
  28. package/dist/cli/error-logger.js +1 -1
  29. package/dist/cli/error-logger.js.map +1 -1
  30. package/dist/cli/errors.d.ts +0 -10
  31. package/dist/cli/errors.js +0 -12
  32. package/dist/cli/errors.js.map +1 -1
  33. package/dist/cli/logger.js +9 -11
  34. package/dist/cli/logger.js.map +1 -1
  35. package/dist/cli/options.d.ts +13 -4
  36. package/dist/cli/options.js +12 -11
  37. package/dist/cli/options.js.map +1 -1
  38. package/dist/cli/program.js +5 -2
  39. package/dist/cli/program.js.map +1 -1
  40. package/dist/cli/prompts.d.ts +14 -4
  41. package/dist/cli/prompts.js +12 -24
  42. package/dist/cli/prompts.js.map +1 -1
  43. package/dist/cli/service-registry.d.ts +37 -15
  44. package/dist/cli/service-registry.js.map +1 -1
  45. package/dist/cli/telemetry.d.ts +1 -1
  46. package/dist/cli/ui/service-menu.d.ts +2 -2
  47. package/dist/cli/ui/theme.js +6 -6
  48. package/dist/cli/ui/theme.js.map +1 -1
  49. package/dist/providers/claude-code.d.ts +10 -46
  50. package/dist/providers/claude-code.js +94 -224
  51. package/dist/providers/claude-code.js.map +1 -1
  52. package/dist/providers/codex.d.ts +14 -40
  53. package/dist/providers/codex.js +74 -177
  54. package/dist/providers/codex.js.map +1 -1
  55. package/dist/providers/create-provider.d.ts +26 -0
  56. package/dist/providers/create-provider.js +120 -0
  57. package/dist/providers/create-provider.js.map +1 -0
  58. package/dist/providers/index.d.ts +2 -2
  59. package/dist/providers/index.js +4 -10
  60. package/dist/providers/index.js.map +1 -1
  61. package/dist/providers/opencode.d.ts +3 -43
  62. package/dist/providers/opencode.js +112 -173
  63. package/dist/providers/opencode.js.map +1 -1
  64. package/dist/providers/provider-helpers.d.ts +10 -0
  65. package/dist/providers/provider-helpers.js +62 -0
  66. package/dist/providers/provider-helpers.js.map +1 -0
  67. package/dist/providers/versioned-provider.d.ts +3 -0
  68. package/dist/providers/versioned-provider.js +9 -0
  69. package/dist/providers/versioned-provider.js.map +1 -0
  70. package/dist/services/credentials.d.ts +14 -0
  71. package/dist/services/credentials.js +123 -22
  72. package/dist/services/credentials.js.map +1 -1
  73. package/dist/services/model-strategy.d.ts +1 -1
  74. package/dist/services/model-strategy.js +20 -15
  75. package/dist/services/model-strategy.js.map +1 -1
  76. package/dist/services/mutation-events.d.ts +4 -0
  77. package/dist/services/mutation-events.js +56 -0
  78. package/dist/services/mutation-events.js.map +1 -0
  79. package/dist/services/service-install.d.ts +3 -4
  80. package/dist/services/service-install.js +30 -12
  81. package/dist/services/service-install.js.map +1 -1
  82. package/dist/services/service-manifest.d.ts +49 -21
  83. package/dist/services/service-manifest.js +261 -64
  84. package/dist/services/service-manifest.js.map +1 -1
  85. package/dist/tools/label-generator.d.ts +2 -2
  86. package/dist/tools/label-generator.js +1 -1
  87. package/dist/tools/label-generator.js.map +1 -1
  88. package/dist/utils/binary-version.d.ts +6 -0
  89. package/dist/utils/binary-version.js +35 -0
  90. package/dist/utils/binary-version.js.map +1 -0
  91. package/dist/utils/command-checks.d.ts +39 -0
  92. package/dist/utils/command-checks.js +116 -0
  93. package/dist/utils/command-checks.js.map +1 -0
  94. package/package.json +6 -8
  95. package/dist/providers/roo-code.d.ts +0 -41
  96. package/dist/providers/roo-code.js +0 -201
  97. package/dist/providers/roo-code.js.map +0 -1
  98. package/dist/utils/prerequisites.d.ts +0 -41
  99. package/dist/utils/prerequisites.js +0 -92
  100. package/dist/utils/prerequisites.js.map +0 -1
package/README.md CHANGED
@@ -5,13 +5,7 @@
5
5
  ## Quick Start
6
6
 
7
7
  ```bash
8
- npx poe-code configure claude-code
9
- ```
10
-
11
- ## Installation
12
-
13
- ```bash
14
- npm i -g poe-code
8
+ npx poe-code@latest configure claude-code
15
9
  ```
16
10
 
17
11
  ## Usage
@@ -19,41 +13,49 @@ npm i -g poe-code
19
13
  ### Authenticate Once
20
14
 
21
15
  ```bash
22
- poe-code login
16
+ npx poe-code@latest login
23
17
  ```
24
18
 
25
19
  ### Install Coding CLIs
26
20
 
27
21
  ```bash
28
22
  # Claude Code
29
- poe-code install claude-code
23
+ npx poe-code@latest install claude-code
30
24
 
31
25
  # Codex
32
- poe-code install codex
26
+ npx poe-code@latest install codex
33
27
 
34
28
  # OpenCode
35
- poe-code install opencode
29
+ npx poe-code@latest install opencode
36
30
  ```
37
31
 
38
32
  ### Configure Coding CLIs
39
33
 
40
34
  ```bash
41
35
  # Claude Code
42
- poe-code configure claude-code
36
+ npx poe-code@latest configure claude-code
43
37
 
44
38
  # Codex
45
- poe-code configure codex
39
+ npx poe-code@latest configure codex
46
40
 
47
41
  # OpenCode
48
- poe-code configure opencode
42
+ npx poe-code@latest configure opencode
49
43
 
50
44
  ```
51
45
 
46
+ ### Uninstall Configuration
47
+
48
+ ```bash
49
+ npx poe-code@latest remove codex
50
+ ```
51
+
52
+ Removes the Codex settings previously applied by `npx poe-code@latest configure codex`.
53
+
52
54
  ### Spawn a coding agent
53
55
 
54
56
  ```bash
55
57
  # Claude Code
56
- poe-code spawn claude-code "Explain this error message"
58
+ npx poe-code@latest spawn claude-code "Explain this error message"
57
59
  ```
58
60
 
59
61
  ### Optional Flags
@@ -61,18 +63,3 @@ poe-code spawn claude-code "Explain this error message"
61
63
  - `--dry-run` – show every mutation without touching disk.
62
64
  - `--verbose` – print shell commands as they run.
63
65
  - `--yes` – accept defaults for prompts.
64
-
65
- ## Beta Workspace
66
-
67
- Looking for the interactive agent or VSCode extension?
68
- Those experimental features now live in [`beta/`](beta/README.md) under the `poe-code-beta` package.
69
-
70
- ## Automation Labels
71
-
72
- Agent labels used by workflows are generated via:
73
-
74
- ```bash
75
- npm run labels:generate
76
- ```
77
-
78
- See the generated definitions in `docs/LABELS.md`. Assigned issues trigger the `Poe Code` GitHub workflow, which uses these labels to pick an agent automatically.
@@ -1,2 +1,2 @@
1
- import type { CommandRunner } from "../utils/prerequisites.js";
1
+ import type { CommandRunner } from "../utils/command-checks.js";
2
2
  export declare function createDefaultCommandRunner(): CommandRunner;
@@ -4,8 +4,6 @@ export interface ConfigureCommandOptions {
4
4
  apiKey?: string;
5
5
  model?: string;
6
6
  reasoningEffort?: string;
7
- configName?: string;
8
- baseUrl?: string;
9
7
  }
10
8
  export declare function registerConfigureCommand(program: Command, container: CliContainer): Command;
11
9
  export declare function executeConfigure(program: Command, container: CliContainer, service: string, options: ConfigureCommandOptions): Promise<void>;
@@ -1,7 +1,8 @@
1
- import { buildProviderContext, createExecutionResources, resolveCommandFlags, resolveServiceAdapter } from "./shared.js";
2
- import { DEFAULT_MODEL, DEFAULT_REASONING, DEFAULT_ROO_BASE_URL, DEFAULT_ROO_CONFIG_NAME, DEFAULT_ROO_MODEL, DEFAULT_CLAUDE_MODEL } from "../constants.js";
1
+ import { buildProviderContext, createExecutionResources, resolveCommandFlags, resolveServiceAdapter, resolveProviderHandler } from "./shared.js";
3
2
  import { renderServiceMenu } from "../ui/service-menu.js";
4
3
  import { createMenuTheme } from "../ui/theme.js";
4
+ import { saveConfiguredService } from "../../services/credentials.js";
5
+ import { combineMutationObservers, createMutationReporter } from "../../services/mutation-events.js";
5
6
  export function registerConfigureCommand(program, container) {
6
7
  const configureCommand = program
7
8
  .command("configure")
@@ -10,8 +11,6 @@ export function registerConfigureCommand(program, container) {
10
11
  .option("--api-key <key>", "Poe API key")
11
12
  .option("--model <model>", "Model identifier")
12
13
  .option("--reasoning-effort <level>", "Reasoning effort level")
13
- .option("--config-name <name>", "Configuration profile name")
14
- .option("--base-url <url>", "API base URL")
15
14
  .action(async (service, options) => {
16
15
  const resolved = await resolveServiceArgument(program, container, service);
17
16
  await executeConfigure(program, container, resolved, options);
@@ -28,13 +27,38 @@ export async function executeConfigure(program, container, service, options) {
28
27
  container,
29
28
  flags,
30
29
  options,
31
- resources
30
+ context: providerContext,
31
+ adapter
32
32
  });
33
33
  await container.registry.invoke(service, "configure", async (entry) => {
34
34
  if (!entry.configure) {
35
35
  throw new Error(`Service "${service}" does not support configure.`);
36
36
  }
37
- await entry.configure(providerContext, payload);
37
+ const resolution = await resolveProviderHandler(entry, providerContext);
38
+ const tracker = createMutationTracker();
39
+ const mutationLogger = createMutationReporter(resources.logger);
40
+ const observers = combineMutationObservers(tracker.observers, mutationLogger);
41
+ await resolution.adapter.configure({
42
+ fs: providerContext.command.fs,
43
+ env: providerContext.env,
44
+ command: providerContext.command,
45
+ options: payload
46
+ }, observers
47
+ ? {
48
+ observers
49
+ }
50
+ : undefined);
51
+ if (!flags.dryRun) {
52
+ await saveConfiguredService({
53
+ fs: container.fs,
54
+ filePath: providerContext.env.credentialsPath,
55
+ service,
56
+ metadata: {
57
+ version: resolution.version,
58
+ files: tracker.files()
59
+ }
60
+ });
61
+ }
38
62
  });
39
63
  const dryMessage = service === "claude-code"
40
64
  ? `${adapter.label} (dry run)`
@@ -45,23 +69,25 @@ export async function executeConfigure(program, container, service, options) {
45
69
  });
46
70
  }
47
71
  async function createConfigurePayload(init) {
48
- const { service, container, flags, options, resources } = init;
49
- const mutationHooks = resources.mutationHooks;
72
+ const { service, container, flags, options, context, adapter } = init;
50
73
  switch (service) {
51
74
  case "claude-code": {
52
75
  const apiKey = await container.options.resolveApiKey({
53
76
  value: options.apiKey,
54
77
  dryRun: flags.dryRun
55
78
  });
56
- const defaultModel = await container.options.resolveClaudeModel({
79
+ const modelPrompt = requireModelPrompt(adapter);
80
+ const defaultModel = await container.options.resolveModel({
57
81
  value: options.model,
58
- defaultValue: DEFAULT_CLAUDE_MODEL,
59
- assumeDefault: flags.assumeYes
82
+ assumeDefault: flags.assumeYes,
83
+ defaultValue: modelPrompt.defaultValue,
84
+ choices: modelPrompt.choices,
85
+ label: modelPrompt.label
60
86
  });
61
87
  return {
88
+ env: context.env,
62
89
  apiKey,
63
- defaultModel,
64
- mutationHooks
90
+ defaultModel
65
91
  };
66
92
  }
67
93
  case "codex": {
@@ -69,13 +95,25 @@ async function createConfigurePayload(init) {
69
95
  value: options.apiKey,
70
96
  dryRun: flags.dryRun
71
97
  });
72
- const model = await container.options.resolveModel(options.model, DEFAULT_MODEL);
73
- const reasoningEffort = await container.options.resolveReasoning(options.reasoningEffort, DEFAULT_REASONING);
98
+ const modelPrompt = requireModelPrompt(adapter);
99
+ const model = await container.options.resolveModel({
100
+ value: options.model,
101
+ assumeDefault: flags.assumeYes,
102
+ defaultValue: modelPrompt.defaultValue,
103
+ choices: modelPrompt.choices,
104
+ label: modelPrompt.label
105
+ });
106
+ const reasoningPrompt = requireReasoningPrompt(adapter);
107
+ const reasoningEffort = await container.options.resolveReasoning({
108
+ value: options.reasoningEffort,
109
+ defaultValue: reasoningPrompt.defaultValue,
110
+ label: reasoningPrompt.label
111
+ });
74
112
  return {
113
+ env: context.env,
75
114
  apiKey,
76
115
  model,
77
- reasoningEffort,
78
- mutationHooks
116
+ reasoningEffort
79
117
  };
80
118
  }
81
119
  case "opencode": {
@@ -83,31 +121,58 @@ async function createConfigurePayload(init) {
83
121
  value: options.apiKey,
84
122
  dryRun: flags.dryRun
85
123
  });
86
- return {
87
- apiKey,
88
- mutationHooks
89
- };
90
- }
91
- case "roo-code": {
92
- const apiKey = await container.options.resolveApiKey({
93
- value: options.apiKey,
94
- dryRun: flags.dryRun
124
+ const modelPrompt = requireModelPrompt(adapter);
125
+ const model = await container.options.resolveModel({
126
+ value: options.model,
127
+ assumeDefault: flags.assumeYes,
128
+ defaultValue: modelPrompt.defaultValue,
129
+ choices: modelPrompt.choices,
130
+ label: modelPrompt.label
95
131
  });
96
- const model = await container.options.resolveModel(options.model, DEFAULT_ROO_MODEL);
97
- const configName = await container.options.resolveConfigName(options.configName, DEFAULT_ROO_CONFIG_NAME);
98
- const baseUrl = options.baseUrl ?? DEFAULT_ROO_BASE_URL;
99
132
  return {
133
+ env: context.env,
100
134
  apiKey,
101
- model,
102
- baseUrl,
103
- configName,
104
- mutationHooks
135
+ model
105
136
  };
106
137
  }
107
138
  default:
108
139
  throw new Error(`Unknown service "${service}".`);
109
140
  }
110
141
  }
142
+ function createMutationTracker() {
143
+ const targets = new Set();
144
+ const observers = {
145
+ onComplete(details, outcome) {
146
+ if (!outcome.changed || !details.targetPath) {
147
+ return;
148
+ }
149
+ if (outcome.effect !== "write" && outcome.effect !== "delete") {
150
+ return;
151
+ }
152
+ targets.add(details.targetPath);
153
+ }
154
+ };
155
+ return {
156
+ observers,
157
+ files() {
158
+ return Array.from(targets).sort();
159
+ }
160
+ };
161
+ }
162
+ function requireModelPrompt(adapter) {
163
+ const prompt = adapter.configurePrompts?.model;
164
+ if (!prompt) {
165
+ throw new Error(`${adapter.label} must define a model prompt.`);
166
+ }
167
+ return prompt;
168
+ }
169
+ function requireReasoningPrompt(adapter) {
170
+ const prompt = adapter.configurePrompts?.reasoningEffort;
171
+ if (!prompt) {
172
+ throw new Error(`${adapter.label} must define a reasoning prompt.`);
173
+ }
174
+ return prompt;
175
+ }
111
176
  export async function resolveServiceArgument(program, container, provided) {
112
177
  if (provided) {
113
178
  return provided;
@@ -119,7 +184,7 @@ export async function resolveServiceArgument(program, container, provided) {
119
184
  const flags = resolveCommandFlags(program);
120
185
  const logger = container.loggerFactory.create({
121
186
  dryRun: flags.dryRun,
122
- verbose: flags.verbose,
187
+ verbose: true,
123
188
  scope: "configure"
124
189
  });
125
190
  const menuTheme = createMenuTheme(container.env);
@@ -1 +1 @@
1
- {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../../src/cli/commands/configure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../../src/cli/commands/configure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Command } from "commander";
2
+ import type { CliContainer } from "../container.js";
3
+ export declare function registerDoctorCommand(program: Command, container: CliContainer): Command;
4
+ export declare function executeDoctor(program: Command, container: CliContainer): Promise<void>;
@@ -0,0 +1,73 @@
1
+ import { buildProviderContext, createExecutionResources, resolveCommandFlags, resolveServiceAdapter, resolveProviderHandler } from "./shared.js";
2
+ import { loadConfiguredServices } from "../../services/credentials.js";
3
+ import { executeConfigure } from "./configure.js";
4
+ import { executeRemove } from "./remove.js";
5
+ export function registerDoctorCommand(program, container) {
6
+ return program
7
+ .command("doctor")
8
+ .description("Check installed agent versions and refresh outdated configurations.")
9
+ .action(async () => {
10
+ await executeDoctor(program, container);
11
+ });
12
+ }
13
+ export async function executeDoctor(program, container) {
14
+ const configured = await loadConfiguredServices({
15
+ fs: container.fs,
16
+ filePath: container.env.credentialsPath
17
+ });
18
+ const services = Object.entries(configured);
19
+ if (services.length === 0) {
20
+ const logger = container.loggerFactory.create({ scope: "doctor" });
21
+ logger.info("No configured services found to inspect.");
22
+ return;
23
+ }
24
+ const flags = resolveCommandFlags(program);
25
+ for (const [service, metadata] of services) {
26
+ await reconcileService({
27
+ program,
28
+ container,
29
+ service,
30
+ metadata: metadata ?? { version: null, files: [] },
31
+ flags
32
+ });
33
+ }
34
+ }
35
+ async function reconcileService(context) {
36
+ const { program, container, service, metadata, flags } = context;
37
+ let adapter;
38
+ try {
39
+ adapter = resolveServiceAdapter(container, service);
40
+ }
41
+ catch (error) {
42
+ const logger = container.loggerFactory.create({ scope: `doctor:${service}` });
43
+ logger.warn(`Skipping unknown service "${service}": ${error instanceof Error ? error.message : String(error)}`);
44
+ return;
45
+ }
46
+ const resources = createExecutionResources(container, flags, `doctor:${service}`);
47
+ const providerContext = buildProviderContext(container, adapter, resources);
48
+ const resolution = await resolveProviderHandler(adapter, providerContext);
49
+ const detectedVersion = resolution.version;
50
+ const storedVersion = metadata.version ?? null;
51
+ if (detectedVersion == null) {
52
+ resources.logger.warn(`${adapter.label}: unable to detect CLI version; skipping refresh.`);
53
+ return;
54
+ }
55
+ if (!needsRefresh(storedVersion, detectedVersion)) {
56
+ resources.logger.info(`${adapter.label} is up to date (version ${detectedVersion}).`);
57
+ return;
58
+ }
59
+ if (flags.dryRun) {
60
+ resources.logger.dryRun(`Dry run: would refresh ${adapter.label} from ${storedVersion ?? "unknown"} to ${detectedVersion}.`);
61
+ return;
62
+ }
63
+ resources.logger.info(`Refreshing ${adapter.label} from ${storedVersion ?? "unknown"} to ${detectedVersion}.`);
64
+ await executeRemove(program, container, service, {});
65
+ await executeConfigure(program, container, service, {});
66
+ }
67
+ function needsRefresh(stored, detected) {
68
+ if (stored == null && detected == null) {
69
+ return false;
70
+ }
71
+ return stored !== detected;
72
+ }
73
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -4,3 +4,4 @@ export interface RemoveCommandOptions {
4
4
  configName?: string;
5
5
  }
6
6
  export declare function registerRemoveCommand(program: Command, container: CliContainer): Command;
7
+ export declare function executeRemove(program: Command, container: CliContainer, service: string, options: RemoveCommandOptions): Promise<void>;
@@ -1,42 +1,66 @@
1
- import { buildProviderContext, createExecutionResources, resolveCommandFlags, resolveServiceAdapter } from "./shared.js";
2
- import { DEFAULT_ROO_CONFIG_NAME } from "../constants.js";
1
+ import { removeConfiguredService } from "../../services/credentials.js";
2
+ import { createMutationReporter } from "../../services/mutation-events.js";
3
+ import { buildProviderContext, createExecutionResources, resolveCommandFlags, resolveServiceAdapter, resolveProviderHandler } from "./shared.js";
3
4
  export function registerRemoveCommand(program, container) {
4
5
  return program
5
6
  .command("remove")
6
7
  .description("Remove existing Poe API tooling configuration.")
7
- .argument("<service>", "Service to remove (claude-code | codex | opencode | roo-code)")
8
- .option("--config-name <name>", "Configuration profile name")
8
+ .argument("<service>", "Service to remove (claude-code | codex | opencode)")
9
9
  .action(async (service, options) => {
10
10
  await executeRemove(program, container, service, options);
11
11
  });
12
12
  }
13
- async function executeRemove(program, container, service, options) {
13
+ export async function executeRemove(program, container, service, options) {
14
14
  const adapter = resolveServiceAdapter(container, service);
15
15
  const flags = resolveCommandFlags(program);
16
16
  const resources = createExecutionResources(container, flags, `remove:${service}`);
17
17
  const providerContext = buildProviderContext(container, adapter, resources);
18
- const payload = await createRemovePayload(service, container, options, resources);
18
+ const mutationLogger = createMutationReporter(resources.logger);
19
+ const payload = await createRemovePayload({
20
+ service,
21
+ container,
22
+ options,
23
+ context: providerContext
24
+ });
19
25
  const removed = await container.registry.invoke(service, "remove", async (entry) => {
20
26
  if (!entry.remove) {
21
27
  throw new Error(`Service "${service}" does not support remove.`);
22
28
  }
23
- return await entry.remove(providerContext, payload);
29
+ const resolution = await resolveProviderHandler(entry, providerContext);
30
+ if (!resolution.adapter.remove) {
31
+ return false;
32
+ }
33
+ return await resolution.adapter.remove({
34
+ fs: providerContext.command.fs,
35
+ env: providerContext.env,
36
+ command: providerContext.command,
37
+ options: payload
38
+ }, { observers: mutationLogger });
24
39
  });
40
+ if (!flags.dryRun) {
41
+ await removeConfiguredService({
42
+ fs: container.fs,
43
+ filePath: providerContext.env.credentialsPath,
44
+ service
45
+ });
46
+ }
25
47
  const messages = formatRemovalMessages(service, adapter.label, removed, payload);
26
48
  resources.context.complete(messages);
27
49
  }
28
- async function createRemovePayload(service, container, options, resources) {
29
- const mutationHooks = resources.mutationHooks;
30
- if (service === "roo-code") {
31
- const configName = await container.options.resolveConfigName(options.configName, DEFAULT_ROO_CONFIG_NAME);
32
- return {
33
- configName,
34
- mutationHooks
35
- };
50
+ async function createRemovePayload(init) {
51
+ const { service, context } = init;
52
+ switch (service) {
53
+ case "claude-code":
54
+ return { env: context.env };
55
+ case "codex":
56
+ return { env: context.env };
57
+ case "opencode":
58
+ return { env: context.env };
59
+ default:
60
+ return {};
36
61
  }
37
- return { mutationHooks };
38
62
  }
39
- function formatRemovalMessages(service, label, removed, payload) {
63
+ function formatRemovalMessages(service, label, removed, _payload) {
40
64
  const didRemove = typeof removed === "boolean" ? removed : Boolean(removed);
41
65
  switch (service) {
42
66
  case "claude-code":
@@ -60,17 +84,6 @@ function formatRemovalMessages(service, label, removed, payload) {
60
84
  : "No OpenCode CLI configuration found.",
61
85
  dry: "Dry run: would remove OpenCode CLI configuration."
62
86
  };
63
- case "roo-code": {
64
- const configName = typeof payload.configName === "string"
65
- ? payload.configName
66
- : DEFAULT_ROO_CONFIG_NAME;
67
- return {
68
- success: didRemove
69
- ? `Removed Roo Code configuration "${configName}".`
70
- : `No Roo Code configuration named "${configName}" found.`,
71
- dry: "Dry run: would remove Roo Code configuration."
72
- };
73
- }
74
87
  default:
75
88
  return {
76
89
  success: didRemove
@@ -1 +1 @@
1
- {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/cli/commands/remove.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,22 @@
1
1
  import type { Command } from "commander";
2
2
  import type { CliContainer } from "../container.js";
3
- import type { ProviderAdapter, ProviderContext } from "../service-registry.js";
4
- import { normalizePhase, type CommandContext, type MutationLogEntry } from "../context.js";
3
+ import type { ProviderService, ProviderContext } from "../service-registry.js";
4
+ import { type CommandContext } from "../context.js";
5
5
  import type { ScopedLogger } from "../logger.js";
6
- import type { ServiceMutationHooks } from "../../services/service-manifest.js";
7
- import type { PrerequisitePhase } from "../../utils/prerequisites.js";
8
6
  export interface CommandFlags {
9
7
  dryRun: boolean;
10
- verbose: boolean;
11
8
  assumeYes: boolean;
12
9
  }
13
10
  export interface ExecutionResources {
14
11
  logger: ScopedLogger;
15
12
  context: CommandContext;
16
- mutationHooks?: ServiceMutationHooks;
17
- recordMutation?: (entry: MutationLogEntry) => void;
18
13
  }
19
14
  export declare function resolveCommandFlags(program: Command): CommandFlags;
20
15
  export declare function createExecutionResources(container: CliContainer, flags: CommandFlags, scope: string): ExecutionResources;
21
- export declare function buildProviderContext(container: CliContainer, adapter: ProviderAdapter, resources: ExecutionResources): ProviderContext;
22
- export declare function registerProviderPrerequisites(adapter: ProviderAdapter, resources: ExecutionResources): void;
23
- export declare function runPrerequisites(adapter: ProviderAdapter, resources: ExecutionResources, phase: PrerequisitePhase): Promise<void>;
24
- export declare function resolveServiceAdapter(container: CliContainer, service: string): ProviderAdapter;
25
- export { normalizePhase };
16
+ export declare function buildProviderContext(container: CliContainer, adapter: ProviderService, resources: ExecutionResources): ProviderContext;
17
+ export interface ProviderResolution {
18
+ adapter: ProviderService;
19
+ version: string | null;
20
+ }
21
+ export declare function resolveProviderHandler(adapter: ProviderService, context: ProviderContext): Promise<ProviderResolution>;
22
+ export declare function resolveServiceAdapter(container: CliContainer, service: string): ProviderService;