poe-code 3.0.29 → 3.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 (226) hide show
  1. package/dist/bin/poe-claude.js +23 -0
  2. package/dist/bin/poe-codex.js +23 -0
  3. package/dist/bin/poe-kimi-cli.js +23 -0
  4. package/dist/bin/poe-opencode.js +23 -0
  5. package/dist/bin.cjs +9 -0
  6. package/dist/cli/binary-aliases.d.ts +7 -0
  7. package/dist/cli/binary-aliases.js +26 -0
  8. package/dist/cli/binary-aliases.js.map +1 -0
  9. package/dist/cli/bootstrap.d.ts +4 -0
  10. package/dist/cli/bootstrap.js +78 -0
  11. package/dist/cli/bootstrap.js.map +1 -0
  12. package/dist/cli/command-not-found.d.ts +8 -0
  13. package/dist/cli/command-not-found.js +34 -0
  14. package/dist/cli/command-not-found.js.map +1 -0
  15. package/dist/cli/commands/configure-payload.d.ts +15 -0
  16. package/dist/cli/commands/configure-payload.js +31 -0
  17. package/dist/cli/commands/configure-payload.js.map +1 -0
  18. package/dist/cli/commands/configure.d.ts +12 -0
  19. package/dist/cli/commands/configure.js +151 -0
  20. package/dist/cli/commands/configure.js.map +1 -0
  21. package/dist/cli/commands/ensure-isolated-config.d.ts +12 -0
  22. package/dist/cli/commands/ensure-isolated-config.js +53 -0
  23. package/dist/cli/commands/ensure-isolated-config.js.map +1 -0
  24. package/dist/cli/commands/generate.d.ts +9 -0
  25. package/dist/cli/commands/generate.js +322 -0
  26. package/dist/cli/commands/generate.js.map +1 -0
  27. package/dist/cli/commands/install.d.ts +4 -0
  28. package/dist/cli/commands/install.js +40 -0
  29. package/dist/cli/commands/install.js.map +1 -0
  30. package/dist/cli/commands/login.d.ts +6 -0
  31. package/dist/cli/commands/login.js +105 -0
  32. package/dist/cli/commands/login.js.map +1 -0
  33. package/dist/cli/commands/mcp.d.ts +3 -0
  34. package/dist/cli/commands/mcp.js +178 -0
  35. package/dist/cli/commands/mcp.js.map +1 -0
  36. package/dist/cli/commands/models.d.ts +3 -0
  37. package/dist/cli/commands/models.js +183 -0
  38. package/dist/cli/commands/models.js.map +1 -0
  39. package/dist/cli/commands/ralph-worktree.d.ts +3 -0
  40. package/dist/cli/commands/ralph-worktree.js +73 -0
  41. package/dist/cli/commands/ralph-worktree.js.map +1 -0
  42. package/dist/cli/commands/ralph.d.ts +3 -0
  43. package/dist/cli/commands/ralph.js +424 -0
  44. package/dist/cli/commands/ralph.js.map +1 -0
  45. package/dist/cli/commands/shared.d.ts +29 -0
  46. package/dist/cli/commands/shared.js +82 -0
  47. package/dist/cli/commands/shared.js.map +1 -0
  48. package/dist/cli/commands/skill.d.ts +3 -0
  49. package/dist/cli/commands/skill.js +242 -0
  50. package/dist/cli/commands/skill.js.map +1 -0
  51. package/dist/cli/commands/spawn.d.ts +17 -0
  52. package/dist/cli/commands/spawn.js +226 -0
  53. package/dist/cli/commands/spawn.js.map +1 -0
  54. package/dist/cli/commands/test.d.ts +8 -0
  55. package/dist/cli/commands/test.js +124 -0
  56. package/dist/cli/commands/test.js.map +1 -0
  57. package/dist/cli/commands/unconfigure.d.ts +7 -0
  58. package/dist/cli/commands/unconfigure.js +116 -0
  59. package/dist/cli/commands/unconfigure.js.map +1 -0
  60. package/dist/cli/commands/usage.d.ts +3 -0
  61. package/dist/cli/commands/usage.js +186 -0
  62. package/dist/cli/commands/usage.js.map +1 -0
  63. package/dist/cli/commands/version.d.ts +3 -0
  64. package/dist/cli/commands/version.js +31 -0
  65. package/dist/cli/commands/version.js.map +1 -0
  66. package/dist/cli/commands/wrap.d.ts +3 -0
  67. package/dist/cli/commands/wrap.js +61 -0
  68. package/dist/cli/commands/wrap.js.map +1 -0
  69. package/dist/cli/constants.d.ts +24 -0
  70. package/dist/cli/constants.js +44 -0
  71. package/dist/cli/constants.js.map +1 -0
  72. package/dist/cli/container.d.ts +42 -0
  73. package/dist/cli/container.js +90 -0
  74. package/dist/cli/container.js.map +1 -0
  75. package/dist/cli/context.d.ts +33 -0
  76. package/dist/cli/context.js +91 -0
  77. package/dist/cli/context.js.map +1 -0
  78. package/dist/cli/environment.d.ts +21 -0
  79. package/dist/cli/environment.js +106 -0
  80. package/dist/cli/environment.js.map +1 -0
  81. package/dist/cli/error-logger.d.ts +62 -0
  82. package/dist/cli/error-logger.js +155 -0
  83. package/dist/cli/error-logger.js.map +1 -0
  84. package/dist/cli/errors.d.ts +95 -0
  85. package/dist/cli/errors.js +141 -0
  86. package/dist/cli/errors.js.map +1 -0
  87. package/dist/cli/exit-signals.d.ts +4 -0
  88. package/dist/cli/exit-signals.js +8 -0
  89. package/dist/cli/exit-signals.js.map +1 -0
  90. package/dist/cli/http.d.ts +12 -0
  91. package/dist/cli/http.js +2 -0
  92. package/dist/cli/http.js.map +1 -0
  93. package/dist/cli/isolated-env-runner.d.ts +10 -0
  94. package/dist/cli/isolated-env-runner.js +50 -0
  95. package/dist/cli/isolated-env-runner.js.map +1 -0
  96. package/dist/cli/isolated-env.d.ts +24 -0
  97. package/dist/cli/isolated-env.js +210 -0
  98. package/dist/cli/isolated-env.js.map +1 -0
  99. package/dist/cli/logger.d.ts +36 -0
  100. package/dist/cli/logger.js +191 -0
  101. package/dist/cli/logger.js.map +1 -0
  102. package/dist/cli/mcp-output-format.d.ts +2 -0
  103. package/dist/cli/mcp-output-format.js +27 -0
  104. package/dist/cli/mcp-output-format.js.map +1 -0
  105. package/dist/cli/mcp-server.d.ts +21 -0
  106. package/dist/cli/mcp-server.js +321 -0
  107. package/dist/cli/mcp-server.js.map +1 -0
  108. package/dist/cli/options.d.ts +45 -0
  109. package/dist/cli/options.js +111 -0
  110. package/dist/cli/options.js.map +1 -0
  111. package/dist/cli/poe-code-command-runner.d.ts +6 -0
  112. package/dist/cli/poe-code-command-runner.js +63 -0
  113. package/dist/cli/poe-code-command-runner.js.map +1 -0
  114. package/dist/cli/program.d.ts +4 -0
  115. package/dist/cli/program.js +249 -0
  116. package/dist/cli/program.js.map +1 -0
  117. package/dist/cli/prompt-runner.d.ts +10 -0
  118. package/dist/cli/prompt-runner.js +79 -0
  119. package/dist/cli/prompt-runner.js.map +1 -0
  120. package/dist/cli/prompts.d.ts +39 -0
  121. package/dist/cli/prompts.js +42 -0
  122. package/dist/cli/prompts.js.map +1 -0
  123. package/dist/cli/service-registry.d.ts +108 -0
  124. package/dist/cli/service-registry.js +83 -0
  125. package/dist/cli/service-registry.js.map +1 -0
  126. package/dist/cli/types.d.ts +2 -0
  127. package/dist/cli/types.js +2 -0
  128. package/dist/cli/types.js.map +1 -0
  129. package/dist/cli/ui/service-menu.d.ts +7 -0
  130. package/dist/cli/ui/service-menu.js +43 -0
  131. package/dist/cli/ui/service-menu.js.map +1 -0
  132. package/dist/index.d.ts +8 -0
  133. package/dist/index.js +36812 -0
  134. package/dist/index.js.map +7 -0
  135. package/dist/providers/claude-code.d.ts +13 -0
  136. package/dist/providers/claude-code.js +143 -0
  137. package/dist/providers/claude-code.js.map +1 -0
  138. package/dist/providers/codex.d.ts +17 -0
  139. package/dist/providers/codex.js +144 -0
  140. package/dist/providers/codex.js.map +1 -0
  141. package/dist/providers/create-provider.d.ts +29 -0
  142. package/dist/providers/create-provider.js +78 -0
  143. package/dist/providers/create-provider.js.map +1 -0
  144. package/dist/providers/index.d.ts +2 -0
  145. package/dist/providers/index.js +8 -0
  146. package/dist/providers/index.js.map +1 -0
  147. package/dist/providers/kimi.d.ts +4 -0
  148. package/dist/providers/kimi.js +123 -0
  149. package/dist/providers/kimi.js.map +1 -0
  150. package/dist/providers/opencode.d.ts +3 -0
  151. package/dist/providers/opencode.js +119 -0
  152. package/dist/providers/opencode.js.map +1 -0
  153. package/dist/providers/spawn-options.d.ts +13 -0
  154. package/dist/providers/spawn-options.js +2 -0
  155. package/dist/providers/spawn-options.js.map +1 -0
  156. package/dist/sdk/container.d.ts +18 -0
  157. package/dist/sdk/container.js +127 -0
  158. package/dist/sdk/container.js.map +1 -0
  159. package/dist/sdk/credentials.d.ts +9 -0
  160. package/dist/sdk/credentials.js +35 -0
  161. package/dist/sdk/credentials.js.map +1 -0
  162. package/dist/sdk/generate.d.ts +5 -0
  163. package/dist/sdk/generate.js +97 -0
  164. package/dist/sdk/generate.js.map +1 -0
  165. package/dist/sdk/spawn-core.d.ts +23 -0
  166. package/dist/sdk/spawn-core.js +105 -0
  167. package/dist/sdk/spawn-core.js.map +1 -0
  168. package/dist/sdk/spawn.d.ts +31 -0
  169. package/dist/sdk/spawn.js +109 -0
  170. package/dist/sdk/spawn.js.map +1 -0
  171. package/dist/sdk/types.d.ts +44 -0
  172. package/dist/sdk/types.js +2 -0
  173. package/dist/sdk/types.js.map +1 -0
  174. package/dist/services/client-instance.d.ts +12 -0
  175. package/dist/services/client-instance.js +36 -0
  176. package/dist/services/client-instance.js.map +1 -0
  177. package/dist/services/credentials.d.ts +24 -0
  178. package/dist/services/credentials.js +157 -0
  179. package/dist/services/credentials.js.map +1 -0
  180. package/dist/services/llm-client.d.ts +22 -0
  181. package/dist/services/llm-client.js +138 -0
  182. package/dist/services/llm-client.js.map +1 -0
  183. package/dist/services/media-download.d.ts +17 -0
  184. package/dist/services/media-download.js +42 -0
  185. package/dist/services/media-download.js.map +1 -0
  186. package/dist/services/model-strategy.d.ts +99 -0
  187. package/dist/services/model-strategy.js +187 -0
  188. package/dist/services/model-strategy.js.map +1 -0
  189. package/dist/services/mutation-events.d.ts +4 -0
  190. package/dist/services/mutation-events.js +53 -0
  191. package/dist/services/mutation-events.js.map +1 -0
  192. package/dist/services/service-install.d.ts +22 -0
  193. package/dist/services/service-install.js +70 -0
  194. package/dist/services/service-install.js.map +1 -0
  195. package/dist/services/version.d.ts +11 -0
  196. package/dist/services/version.js +28 -0
  197. package/dist/services/version.js.map +1 -0
  198. package/dist/tools/label-generator.d.ts +11 -0
  199. package/dist/tools/label-generator.js +78 -0
  200. package/dist/tools/label-generator.js.map +1 -0
  201. package/dist/utils/backup.d.ts +5 -0
  202. package/dist/utils/backup.js +56 -0
  203. package/dist/utils/backup.js.map +1 -0
  204. package/dist/utils/cli-settings-merge.d.ts +22 -0
  205. package/dist/utils/cli-settings-merge.js +56 -0
  206. package/dist/utils/cli-settings-merge.js.map +1 -0
  207. package/dist/utils/command-checks.d.ts +36 -0
  208. package/dist/utils/command-checks.js +120 -0
  209. package/dist/utils/command-checks.js.map +1 -0
  210. package/dist/utils/command-line.d.ts +1 -0
  211. package/dist/utils/command-line.js +54 -0
  212. package/dist/utils/command-line.js.map +1 -0
  213. package/dist/utils/dry-run.d.ts +39 -0
  214. package/dist/utils/dry-run.js +315 -0
  215. package/dist/utils/dry-run.js.map +1 -0
  216. package/dist/utils/execution-context.d.ts +48 -0
  217. package/dist/utils/execution-context.js +151 -0
  218. package/dist/utils/execution-context.js.map +1 -0
  219. package/dist/utils/file-system.d.ts +21 -0
  220. package/dist/utils/file-system.js +2 -0
  221. package/dist/utils/file-system.js.map +1 -0
  222. package/dist/utils/json.d.ts +12 -0
  223. package/dist/utils/json.js +45 -0
  224. package/dist/utils/json.js.map +1 -0
  225. package/package.json +5 -2
  226. package/packages/tiny-mcp-test-server/dist/index.js +47 -0
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+ var _major = parseInt(process.versions.node.split(".")[0], 10);
3
+ if (_major < 18) {
4
+ console.error(
5
+ "poe-claude requires Node.js 18 or later. Current: " + process.version
6
+ );
7
+ process.exit(1);
8
+ }
9
+ import { spawn } from "node:child_process";
10
+ import path from "node:path";
11
+ import { fileURLToPath } from "node:url";
12
+
13
+ const currentFile = fileURLToPath(import.meta.url);
14
+ const distDir = path.resolve(path.dirname(currentFile), "..");
15
+ const entry = path.join(distDir, "index.js");
16
+ const service = "claude-code";
17
+ const agentArgs = process.argv.slice(2);
18
+ const args = [entry, "wrap", service, "--", ...agentArgs];
19
+ const child = spawn(process.execPath, args, { stdio: "inherit" });
20
+ child.on("close", (code) => process.exit(code ?? 0));
21
+ child.on("error", (error) => {
22
+ throw error;
23
+ });
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+ var _major = parseInt(process.versions.node.split(".")[0], 10);
3
+ if (_major < 18) {
4
+ console.error(
5
+ "poe-codex requires Node.js 18 or later. Current: " + process.version
6
+ );
7
+ process.exit(1);
8
+ }
9
+ import { spawn } from "node:child_process";
10
+ import path from "node:path";
11
+ import { fileURLToPath } from "node:url";
12
+
13
+ const currentFile = fileURLToPath(import.meta.url);
14
+ const distDir = path.resolve(path.dirname(currentFile), "..");
15
+ const entry = path.join(distDir, "index.js");
16
+ const service = "codex";
17
+ const agentArgs = process.argv.slice(2);
18
+ const args = [entry, "wrap", service, "--", ...agentArgs];
19
+ const child = spawn(process.execPath, args, { stdio: "inherit" });
20
+ child.on("close", (code) => process.exit(code ?? 0));
21
+ child.on("error", (error) => {
22
+ throw error;
23
+ });
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+ var _major = parseInt(process.versions.node.split(".")[0], 10);
3
+ if (_major < 18) {
4
+ console.error(
5
+ "poe-kimi-cli requires Node.js 18 or later. Current: " + process.version
6
+ );
7
+ process.exit(1);
8
+ }
9
+ import { spawn } from "node:child_process";
10
+ import path from "node:path";
11
+ import { fileURLToPath } from "node:url";
12
+
13
+ const currentFile = fileURLToPath(import.meta.url);
14
+ const distDir = path.resolve(path.dirname(currentFile), "..");
15
+ const entry = path.join(distDir, "index.js");
16
+ const service = "kimi";
17
+ const agentArgs = process.argv.slice(2);
18
+ const args = [entry, "wrap", service, "--", ...agentArgs];
19
+ const child = spawn(process.execPath, args, { stdio: "inherit" });
20
+ child.on("close", (code) => process.exit(code ?? 0));
21
+ child.on("error", (error) => {
22
+ throw error;
23
+ });
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+ var _major = parseInt(process.versions.node.split(".")[0], 10);
3
+ if (_major < 18) {
4
+ console.error(
5
+ "poe-opencode requires Node.js 18 or later. Current: " + process.version
6
+ );
7
+ process.exit(1);
8
+ }
9
+ import { spawn } from "node:child_process";
10
+ import path from "node:path";
11
+ import { fileURLToPath } from "node:url";
12
+
13
+ const currentFile = fileURLToPath(import.meta.url);
14
+ const distDir = path.resolve(path.dirname(currentFile), "..");
15
+ const entry = path.join(distDir, "index.js");
16
+ const service = "opencode";
17
+ const agentArgs = process.argv.slice(2);
18
+ const args = [entry, "wrap", service, "--", ...agentArgs];
19
+ const child = spawn(process.execPath, args, { stdio: "inherit" });
20
+ child.on("close", (code) => process.exit(code ?? 0));
21
+ child.on("error", (error) => {
22
+ throw error;
23
+ });
package/dist/bin.cjs ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ var _major = parseInt(process.versions.node.split(".")[0], 10);
3
+ if (_major < 18) {
4
+ console.error(
5
+ "poe-code requires Node.js 18 or later. Current: " + process.version
6
+ );
7
+ process.exit(1);
8
+ }
9
+ import("./index.js").then(function (m) { m.main(); }).catch(function (err) { console.error(err); process.exit(1); });
@@ -0,0 +1,7 @@
1
+ import type { ProviderService } from "./service-registry.js";
2
+ export interface WrapBinaryAlias {
3
+ binName: string;
4
+ serviceName: string;
5
+ agentBinary: string;
6
+ }
7
+ export declare function deriveWrapBinaryAliases(providers: ProviderService[]): WrapBinaryAlias[];
@@ -0,0 +1,26 @@
1
+ export function deriveWrapBinaryAliases(providers) {
2
+ const aliases = [];
3
+ const seen = new Set();
4
+ for (const provider of providers) {
5
+ const isolated = provider.isolatedEnv;
6
+ if (!isolated) {
7
+ continue;
8
+ }
9
+ const agentBinary = isolated.agentBinary.trim();
10
+ if (agentBinary.length === 0) {
11
+ throw new Error(`Provider "${provider.name}" defines an empty agentBinary.`);
12
+ }
13
+ const binName = `poe-${agentBinary}`;
14
+ if (seen.has(binName)) {
15
+ throw new Error(`Duplicate wrapper binary name "${binName}".`);
16
+ }
17
+ seen.add(binName);
18
+ aliases.push({
19
+ binName,
20
+ serviceName: provider.name,
21
+ agentBinary
22
+ });
23
+ }
24
+ return aliases.sort((a, b) => a.binName.localeCompare(b.binName));
25
+ }
26
+ //# sourceMappingURL=binary-aliases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary-aliases.js","sourceRoot":"","sources":["../../src/cli/binary-aliases.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,uBAAuB,CACrC,SAA4B;IAE5B,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,SAAS;QACX,CAAC;QACD,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,aAAa,QAAQ,CAAC,IAAI,iCAAiC,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,WAAW,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,kCAAkC,OAAO,IAAI,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAElB,OAAO,CAAC,IAAI,CAAC;YACX,OAAO;YACP,WAAW,EAAE,QAAQ,CAAC,IAAI;YAC1B,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Command } from "commander";
2
+ import type { CliDependencies } from "./program.js";
3
+ export declare function createCliMain(programFactory: (dependencies: CliDependencies) => Command): () => Promise<void>;
4
+ export declare function isCliInvocation(argv: string[], moduleUrl: string, realpath?: (path: string) => string): boolean;
@@ -0,0 +1,78 @@
1
+ import * as nodeFs from "node:fs/promises";
2
+ import * as nodeFsSync from "node:fs";
3
+ import { realpathSync } from "node:fs";
4
+ import { homedir } from "node:os";
5
+ import { pathToFileURL } from "node:url";
6
+ import { join } from "node:path";
7
+ import { log } from "@poe-code/design-system";
8
+ import chalk from "chalk";
9
+ import { ErrorLogger } from "./error-logger.js";
10
+ import { CliError, SilentError } from "./errors.js";
11
+ import { createPromptRunner } from "./prompt-runner.js";
12
+ const fsAdapter = nodeFs;
13
+ export function createCliMain(programFactory) {
14
+ return async function runCli() {
15
+ const homeDir = homedir();
16
+ const logDir = join(homeDir, ".poe-code", "logs");
17
+ const promptRunner = createPromptRunner();
18
+ // Create global error logger for bootstrapping errors
19
+ const shouldLogToStderr = process.env.POE_CODE_STDERR_LOGS === "1" ||
20
+ process.env.POE_CODE_STDERR_LOGS === "true";
21
+ const errorLogger = new ErrorLogger({
22
+ fs: nodeFsSync,
23
+ logDir,
24
+ logToStderr: shouldLogToStderr
25
+ });
26
+ const program = programFactory({
27
+ fs: fsAdapter,
28
+ prompts: promptRunner,
29
+ env: {
30
+ cwd: process.cwd(),
31
+ homeDir,
32
+ platform: process.platform,
33
+ variables: process.env
34
+ },
35
+ exitOverride: false
36
+ });
37
+ try {
38
+ await program.parseAsync(process.argv);
39
+ }
40
+ catch (error) {
41
+ if (error instanceof SilentError) {
42
+ return;
43
+ }
44
+ if (error instanceof Error) {
45
+ // Log error with full context
46
+ errorLogger.logErrorWithStackTrace(error, "CLI execution", {
47
+ component: "main",
48
+ argv: process.argv
49
+ });
50
+ // Display user-friendly message
51
+ if (error instanceof CliError && error.isUserError) {
52
+ log.error(error.message);
53
+ }
54
+ else {
55
+ log.error(`Error: ${error.message}`);
56
+ log.message(`See logs at ${join(logDir, "errors.log")} for more details.`, { symbol: chalk.magenta("●") });
57
+ }
58
+ process.exit(1);
59
+ }
60
+ throw error;
61
+ }
62
+ };
63
+ }
64
+ export function isCliInvocation(argv, moduleUrl, realpath = realpathSync) {
65
+ const entry = argv.at(1);
66
+ if (typeof entry !== "string") {
67
+ return false;
68
+ }
69
+ const candidates = [pathToFileURL(entry).href];
70
+ try {
71
+ candidates.push(pathToFileURL(realpath(entry)).href);
72
+ }
73
+ catch {
74
+ // Ignore resolution errors; fall back to direct comparison.
75
+ }
76
+ return candidates.includes(moduleUrl);
77
+ }
78
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/cli/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAC3C,OAAO,KAAK,UAAU,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,SAAS,GAAG,MAA+B,CAAC;AAElD,MAAM,UAAU,aAAa,CAC3B,cAA0D;IAE1D,OAAO,KAAK,UAAU,MAAM;QAC1B,MAAM,OAAO,GAAG,OAAO,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;QAE1C,sDAAsD;QACtD,MAAM,iBAAiB,GACrB,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,GAAG;YACxC,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,MAAM,CAAC;QAE9C,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC;YAClC,EAAE,EAAE,UAAiB;YACrB,MAAM;YACN,WAAW,EAAE,iBAAiB;SAC/B,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,cAAc,CAAC;YAC7B,EAAE,EAAE,SAAS;YACb,OAAO,EAAE,YAAY;YACrB,GAAG,EAAE;gBACH,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,OAAO;gBACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,SAAS,EAAE,OAAO,CAAC,GAAG;aACvB;YACD,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;gBACjC,OAAO;YACT,CAAC;YACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,8BAA8B;gBAC9B,WAAW,CAAC,sBAAsB,CAAC,KAAK,EAAE,eAAe,EAAE;oBACzD,SAAS,EAAE,MAAM;oBACjB,IAAI,EAAE,OAAO,CAAC,IAAI;iBACnB,CAAC,CAAC;gBAEH,gCAAgC;gBAChC,IAAI,KAAK,YAAY,QAAQ,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;oBACnD,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBACrC,GAAG,CAAC,OAAO,CACT,eAAe,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,oBAAoB,EAC7D,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAC/B,CAAC;gBACJ,CAAC;gBAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAc,EACd,SAAiB,EACjB,WAAqC,YAAY;IAEjD,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;IAE/C,IAAI,CAAC;QACH,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;IAC9D,CAAC;IAED,OAAO,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { CliContainer } from "./container.js";
2
+ export declare function throwCommandNotFound(input: {
3
+ container: CliContainer;
4
+ scope: "cli" | "mcp" | "skill";
5
+ unknownCommand: string;
6
+ helpArgs: string[];
7
+ moduleUrl: string;
8
+ }): never;
@@ -0,0 +1,34 @@
1
+ import { formatCommandNotFoundPanel, log, outro, symbols } from "@poe-code/design-system";
2
+ import { detectExecutionContext, formatCliHelpCommand } from "../utils/execution-context.js";
3
+ import { SilentError } from "./errors.js";
4
+ export function throwCommandNotFound(input) {
5
+ const { container, scope, unknownCommand, helpArgs, moduleUrl } = input;
6
+ const context = detectExecutionContext({
7
+ argv: process.argv,
8
+ env: container.env.variables,
9
+ moduleUrl
10
+ });
11
+ const helpCommand = formatCliHelpCommand(context, helpArgs);
12
+ const panel = formatCommandNotFoundPanel({
13
+ title: scope === "cli" ? "command not found" : `${scope} command not found`,
14
+ unknownCommand,
15
+ helpCommand
16
+ });
17
+ const logger = container.loggerFactory.create({
18
+ dryRun: false,
19
+ verbose: false,
20
+ scope
21
+ });
22
+ const shouldRenderIntroOutro = container.dependencies.logger == null;
23
+ if (shouldRenderIntroOutro) {
24
+ logger.intro(panel.title);
25
+ log.message(panel.label, { symbol: symbols.errorResolved });
26
+ outro(panel.footer);
27
+ }
28
+ else {
29
+ logger.error(`${panel.label}\n${panel.footer}`);
30
+ }
31
+ process.exitCode = 1;
32
+ throw new SilentError();
33
+ }
34
+ //# sourceMappingURL=command-not-found.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-not-found.js","sourceRoot":"","sources":["../../src/cli/command-not-found.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE7F,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,UAAU,oBAAoB,CAAC,KAMpC;IACC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAExE,MAAM,OAAO,GAAG,sBAAsB,CAAC;QACrC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,SAAS;QAC5B,SAAS;KACV,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,0BAA0B,CAAC;QACvC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,KAAK,oBAAoB;QAC3E,cAAc;QACd,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC;QAC5C,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,KAAK;QACd,KAAK;KACN,CAAC,CAAC;IAEH,MAAM,sBAAsB,GAAG,SAAS,CAAC,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC;IACrE,IAAI,sBAAsB,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QAC5D,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrB,MAAM,IAAI,WAAW,EAAE,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { CliContainer } from "../container.js";
2
+ import type { ScopedLogger } from "../logger.js";
3
+ import type { ProviderContext, ProviderService } from "../service-registry.js";
4
+ import type { CommandFlags } from "./shared.js";
5
+ import type { ConfigureCommandOptions } from "./configure.js";
6
+ interface ConfigurePayloadInit {
7
+ container: CliContainer;
8
+ flags: CommandFlags;
9
+ options: ConfigureCommandOptions;
10
+ context: ProviderContext;
11
+ adapter: ProviderService;
12
+ logger: ScopedLogger;
13
+ }
14
+ export declare function createConfigurePayload(init: ConfigurePayloadInit): Promise<unknown>;
15
+ export {};
@@ -0,0 +1,31 @@
1
+ export async function createConfigurePayload(init) {
2
+ const { container, flags, options, context, adapter, logger } = init;
3
+ const apiKey = await container.options.resolveApiKey({
4
+ value: options.apiKey,
5
+ dryRun: flags.dryRun
6
+ });
7
+ const payload = { env: context.env, apiKey };
8
+ const modelPrompt = adapter.configurePrompts?.model;
9
+ if (modelPrompt) {
10
+ const model = await container.options.resolveModel({
11
+ value: options.model,
12
+ assumeDefault: flags.assumeYes,
13
+ defaultValue: modelPrompt.defaultValue,
14
+ choices: modelPrompt.choices,
15
+ label: modelPrompt.label,
16
+ onResolve: (label, value) => logger.resolved(label, value)
17
+ });
18
+ payload.model = model;
19
+ }
20
+ const reasoningPrompt = adapter.configurePrompts?.reasoningEffort;
21
+ if (reasoningPrompt) {
22
+ const reasoningEffort = await container.options.resolveReasoning({
23
+ value: options.reasoningEffort,
24
+ defaultValue: reasoningPrompt.defaultValue,
25
+ label: reasoningPrompt.label
26
+ });
27
+ payload.reasoningEffort = reasoningEffort;
28
+ }
29
+ return payload;
30
+ }
31
+ //# sourceMappingURL=configure-payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure-payload.js","sourceRoot":"","sources":["../../../src/cli/commands/configure-payload.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAA0B;IAE1B,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAErE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC;QACnD,KAAK,EAAE,OAAO,CAAC,MAAM;QACrB,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC,CAAC;IACH,MAAM,OAAO,GAA4B,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC;IAEtE,MAAM,WAAW,GAAG,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC;IACpD,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC;YACjD,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,aAAa,EAAE,KAAK,CAAC,SAAS;YAC9B,YAAY,EAAE,WAAW,CAAC,YAAY;YACtC,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,KAAK,EAAE,WAAW,CAAC,KAAK;YACxB,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;SAC3D,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,MAAM,eAAe,GAAG,OAAO,CAAC,gBAAgB,EAAE,eAAe,CAAC;IAClE,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,eAAe,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC;YAC/D,KAAK,EAAE,OAAO,CAAC,eAAe;YAC9B,YAAY,EAAE,eAAe,CAAC,YAAY;YAC1C,KAAK,EAAE,eAAe,CAAC,KAAK;SAC7B,CAAC,CAAC;QACH,OAAO,CAAC,eAAe,GAAG,eAAe,CAAC;IAC5C,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { Command } from "commander";
2
+ import type { CliContainer } from "../container.js";
3
+ export interface ConfigureCommandOptions {
4
+ apiKey?: string;
5
+ model?: string;
6
+ reasoningEffort?: string;
7
+ }
8
+ export declare function registerConfigureCommand(program: Command, container: CliContainer): Command;
9
+ export declare function executeConfigure(program: Command, container: CliContainer, service: string, options: ConfigureCommandOptions): Promise<void>;
10
+ export declare function resolveServiceArgument(program: Command, container: CliContainer, provided?: string, selectionContext?: {
11
+ action: string;
12
+ }): Promise<string>;
@@ -0,0 +1,151 @@
1
+ import { buildProviderContext, createExecutionResources, formatServiceList, resolveCommandFlags, resolveServiceAdapter, applyIsolatedConfiguration } from "./shared.js";
2
+ import { OperationCancelledError } from "../errors.js";
3
+ const serviceSelectionPrompt = (action) => `Pick an agent to ${action}:`;
4
+ import { saveConfiguredService } from "../../services/credentials.js";
5
+ import { combineMutationObservers, createMutationReporter } from "../../services/mutation-events.js";
6
+ import { createConfigurePayload } from "./configure-payload.js";
7
+ export function registerConfigureCommand(program, container) {
8
+ const serviceNames = container.registry.list().map((service) => service.name);
9
+ const serviceDescription = `Agent to configure${formatServiceList(serviceNames)}`;
10
+ const configureCommand = program
11
+ .command("configure")
12
+ .description("Configure developer tooling for Poe API.")
13
+ .argument("[agent]", serviceDescription)
14
+ .option("--api-key <key>", "Poe API key")
15
+ .option("--model <model>", "Model identifier")
16
+ .option("--reasoning-effort <level>", "Reasoning effort level")
17
+ .action(async (service, options) => {
18
+ const resolved = await resolveServiceArgument(program, container, service, { action: "configure" });
19
+ await executeConfigure(program, container, resolved, options);
20
+ });
21
+ return configureCommand;
22
+ }
23
+ export async function executeConfigure(program, container, service, options) {
24
+ const adapter = resolveServiceAdapter(container, service);
25
+ const canonicalService = adapter.name;
26
+ const flags = resolveCommandFlags(program);
27
+ const resources = createExecutionResources(container, flags, `configure:${canonicalService}`);
28
+ resources.logger.intro(`configure ${canonicalService}`);
29
+ const providerContext = buildProviderContext(container, adapter, resources);
30
+ const payload = await createConfigurePayload({
31
+ container,
32
+ flags,
33
+ options,
34
+ context: providerContext,
35
+ adapter,
36
+ logger: resources.logger
37
+ });
38
+ await container.registry.invoke(canonicalService, "configure", async (entry) => {
39
+ if (!entry.configure) {
40
+ throw new Error(`Agent "${canonicalService}" does not support configure.`);
41
+ }
42
+ const tracker = createMutationTracker();
43
+ const mutationLogger = createMutationReporter(resources.logger);
44
+ const observers = combineMutationObservers(tracker.observers, mutationLogger);
45
+ await entry.configure({
46
+ fs: providerContext.command.fs,
47
+ env: providerContext.env,
48
+ command: providerContext.command,
49
+ options: payload
50
+ }, observers
51
+ ? {
52
+ observers
53
+ }
54
+ : undefined);
55
+ if (!flags.dryRun) {
56
+ await saveConfiguredService({
57
+ fs: container.fs,
58
+ filePath: providerContext.env.credentialsPath,
59
+ service: canonicalService,
60
+ metadata: {
61
+ files: tracker.files()
62
+ }
63
+ });
64
+ }
65
+ const isolated = adapter.isolatedEnv;
66
+ if (isolated && isolated.requiresConfig !== false) {
67
+ const isolatedTracker = createMutationTracker();
68
+ const isolatedLogger = createMutationReporter(resources.logger);
69
+ const isolatedObservers = combineMutationObservers(isolatedTracker.observers, isolatedLogger);
70
+ await applyIsolatedConfiguration({
71
+ adapter: entry,
72
+ providerContext,
73
+ payload,
74
+ isolated,
75
+ providerName: adapter.name,
76
+ observers: isolatedObservers
77
+ });
78
+ }
79
+ });
80
+ const dryMessage = canonicalService === "claude-code"
81
+ ? `${adapter.label} (dry run)`
82
+ : `Dry run: would configure ${adapter.label}.`;
83
+ resources.context.complete({
84
+ success: `Configured ${adapter.label}.`,
85
+ dry: dryMessage
86
+ });
87
+ if (!flags.dryRun) {
88
+ const postMessages = resolvePostConfigureMessages(adapter);
89
+ resources.logger.nextSteps(postMessages);
90
+ }
91
+ resources.context.finalize();
92
+ }
93
+ function createMutationTracker() {
94
+ const targets = new Set();
95
+ const observers = {
96
+ onComplete(details, outcome) {
97
+ if (!outcome.changed || !details.targetPath) {
98
+ return;
99
+ }
100
+ if (outcome.effect !== "write" && outcome.effect !== "delete") {
101
+ return;
102
+ }
103
+ targets.add(details.targetPath);
104
+ }
105
+ };
106
+ return {
107
+ observers,
108
+ files() {
109
+ return Array.from(targets).sort();
110
+ }
111
+ };
112
+ }
113
+ function resolvePostConfigureMessages(provider) {
114
+ return provider.postConfigureMessages ?? [];
115
+ }
116
+ export async function resolveServiceArgument(program, container, provided, selectionContext) {
117
+ if (provided) {
118
+ return provided;
119
+ }
120
+ const services = container.registry.list();
121
+ const action = selectionContext?.action ?? "configure";
122
+ if (services.length === 0) {
123
+ throw new Error(`No agents available to ${action}.`);
124
+ }
125
+ const flags = resolveCommandFlags(program);
126
+ const selectionLogger = container.loggerFactory.create({
127
+ dryRun: flags.dryRun,
128
+ verbose: flags.verbose,
129
+ scope: action
130
+ });
131
+ selectionLogger.intro(action);
132
+ const choices = services.map((service) => ({
133
+ title: service.label,
134
+ value: service.name
135
+ }));
136
+ const descriptor = container.promptLibrary.serviceSelection({
137
+ message: serviceSelectionPrompt(action),
138
+ choices
139
+ });
140
+ const response = await container.prompts(descriptor);
141
+ const selectionValue = response[descriptor.name];
142
+ if (typeof selectionValue !== "string") {
143
+ throw new OperationCancelledError();
144
+ }
145
+ const resolved = services.find((service) => service.name === selectionValue);
146
+ if (!resolved) {
147
+ throw new Error("Invalid agent selection.");
148
+ }
149
+ return resolved.name;
150
+ }
151
+ //# sourceMappingURL=configure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../../src/cli/commands/configure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { CliContainer } from "../container.js";
2
+ import type { ProviderService } from "../service-registry.js";
3
+ import { type CommandFlags } from "./shared.js";
4
+ import type { ConfigureCommandOptions } from "./configure.js";
5
+ export declare function ensureIsolatedConfigForService(input: {
6
+ container: CliContainer;
7
+ adapter: ProviderService;
8
+ service: string;
9
+ options?: ConfigureCommandOptions;
10
+ flags: CommandFlags;
11
+ refresh?: boolean;
12
+ }): Promise<void>;
@@ -0,0 +1,53 @@
1
+ import { buildProviderContext, createExecutionResources, applyIsolatedConfiguration } from "./shared.js";
2
+ import { isolatedConfigExists, resolveIsolatedEnvDetails } from "../isolated-env.js";
3
+ import { createConfigurePayload } from "./configure-payload.js";
4
+ import { createMutationReporter } from "../../services/mutation-events.js";
5
+ export async function ensureIsolatedConfigForService(input) {
6
+ const { container, adapter } = input;
7
+ const canonicalService = adapter.name;
8
+ const isolated = adapter.isolatedEnv;
9
+ if (!isolated) {
10
+ return;
11
+ }
12
+ const flags = input.flags;
13
+ const shouldRefresh = input.refresh === true;
14
+ const resources = createExecutionResources(container, flags, `isolated:${canonicalService}`);
15
+ const providerContext = buildProviderContext(container, adapter, resources);
16
+ if (isolated.requiresConfig === false) {
17
+ return;
18
+ }
19
+ const details = await resolveIsolatedEnvDetails(container.env, isolated, adapter.name, container.fs);
20
+ const hasConfig = await isolatedConfigExists(container.fs, details.configProbePath);
21
+ if (hasConfig && !shouldRefresh) {
22
+ return;
23
+ }
24
+ const payload = await createConfigurePayload({
25
+ container,
26
+ flags: { ...flags, assumeYes: true },
27
+ options: input.options ?? {},
28
+ context: providerContext,
29
+ adapter,
30
+ logger: resources.logger
31
+ });
32
+ await container.registry.invoke(canonicalService, "configure", async (entry) => {
33
+ if (!entry.configure) {
34
+ throw new Error(`Agent "${canonicalService}" does not support configure.`);
35
+ }
36
+ const mutationLogger = createMutationReporter(resources.logger);
37
+ await applyIsolatedConfiguration({
38
+ adapter: entry,
39
+ providerContext,
40
+ payload,
41
+ isolated,
42
+ providerName: adapter.name,
43
+ observers: mutationLogger
44
+ });
45
+ });
46
+ if (!flags.dryRun) {
47
+ const refreshed = await isolatedConfigExists(container.fs, details.configProbePath);
48
+ if (!refreshed) {
49
+ throw new Error(`${adapter.label} isolated configuration did not create ${details.configProbePath}.`);
50
+ }
51
+ }
52
+ }
53
+ //# sourceMappingURL=ensure-isolated-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ensure-isolated-config.js","sourceRoot":"","sources":["../../../src/cli/commands/ensure-isolated-config.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,0BAA0B,EAE3B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EACL,sBAAsB,EACvB,MAAM,mCAAmC,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,KAOpD;IACC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;IACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC;IAC7C,MAAM,SAAS,GAAG,wBAAwB,CACxC,SAAS,EACT,KAAK,EACL,YAAY,gBAAgB,EAAE,CAC/B,CAAC;IACF,MAAM,eAAe,GAAG,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC5E,IAAI,QAAQ,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;QACtC,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,yBAAyB,CAC7C,SAAS,CAAC,GAAG,EACb,QAAQ,EACR,OAAO,CAAC,IAAI,EACZ,SAAS,CAAC,EAAE,CACb,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAC1C,SAAS,CAAC,EAAE,EACZ,OAAO,CAAC,eAAgB,CACzB,CAAC;IACF,IAAI,SAAS,IAAI,CAAC,aAAa,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC;QAC3C,SAAS;QACT,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;QACpC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;QAC5B,OAAO,EAAE,eAAe;QACxB,OAAO;QACP,MAAM,EAAE,SAAS,CAAC,MAAM;KACzB,CAAC,CAAC;IAEH,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAC7E,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,UAAU,gBAAgB,+BAA+B,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,cAAc,GAAG,sBAAsB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,0BAA0B,CAAC;YAC/B,OAAO,EAAE,KAAK;YACd,eAAe;YACf,OAAO;YACP,QAAQ;YACR,YAAY,EAAE,OAAO,CAAC,IAAI;YAC1B,SAAS,EAAE,cAAc;SAC1B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAC1C,SAAS,CAAC,EAAE,EACZ,OAAO,CAAC,eAAgB,CACzB,CAAC;QACF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,GAAG,OAAO,CAAC,KAAK,0CAA0C,OAAO,CAAC,eAAe,GAAG,CACrF,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Command } from "commander";
2
+ import type { CliContainer } from "../container.js";
3
+ export interface GenerateCommandOptions {
4
+ model?: string;
5
+ param?: string[] | string;
6
+ output?: string;
7
+ }
8
+ export declare function registerGenerateCommand(program: Command, container: CliContainer): void;
9
+ export declare function parseParams(params: string[]): Record<string, string>;