poe-code 0.1.26 → 1.0.1-beta.1

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 (342) hide show
  1. package/README.md +110 -29
  2. package/dist/bin/poe-claude.js +16 -0
  3. package/dist/bin/poe-codex.js +16 -0
  4. package/dist/bin/poe-kimi-cli.js +16 -0
  5. package/dist/bin/poe-opencode.js +16 -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-runner.d.ts +1 -1
  13. package/dist/cli/command-runner.js +16 -2
  14. package/dist/cli/command-runner.js.map +1 -1
  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 +4 -3
  19. package/dist/cli/commands/configure.js +102 -101
  20. package/dist/cli/commands/configure.js.map +1 -1
  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 +323 -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.js +62 -8
  31. package/dist/cli/commands/login.js.map +1 -1
  32. package/dist/cli/commands/{root.d.ts → mcp.d.ts} +1 -1
  33. package/dist/cli/commands/mcp.js +168 -0
  34. package/dist/cli/commands/mcp.js.map +1 -0
  35. package/dist/cli/commands/shared.d.ts +16 -11
  36. package/dist/cli/commands/shared.js +45 -24
  37. package/dist/cli/commands/shared.js.map +1 -1
  38. package/dist/cli/commands/spawn.d.ts +14 -4
  39. package/dist/cli/commands/spawn.js +92 -77
  40. package/dist/cli/commands/spawn.js.map +1 -1
  41. package/dist/cli/commands/test.d.ts +6 -4
  42. package/dist/cli/commands/test.js +111 -16
  43. package/dist/cli/commands/test.js.map +1 -1
  44. package/dist/cli/commands/unconfigure.d.ts +7 -0
  45. package/dist/cli/commands/unconfigure.js +116 -0
  46. package/dist/cli/commands/unconfigure.js.map +1 -0
  47. package/dist/cli/commands/version.d.ts +3 -0
  48. package/dist/cli/commands/version.js +31 -0
  49. package/dist/cli/commands/version.js.map +1 -0
  50. package/dist/cli/commands/wrap.d.ts +3 -0
  51. package/dist/cli/commands/wrap.js +61 -0
  52. package/dist/cli/commands/wrap.js.map +1 -0
  53. package/dist/cli/constants.d.ts +23 -9
  54. package/dist/cli/constants.js +42 -9
  55. package/dist/cli/constants.js.map +1 -1
  56. package/dist/cli/container.d.ts +4 -10
  57. package/dist/cli/container.js +18 -22
  58. package/dist/cli/container.js.map +1 -1
  59. package/dist/cli/context.d.ts +9 -13
  60. package/dist/cli/context.js +45 -152
  61. package/dist/cli/context.js.map +1 -1
  62. package/dist/cli/environment.d.ts +2 -0
  63. package/dist/cli/environment.js +80 -0
  64. package/dist/cli/environment.js.map +1 -1
  65. package/dist/cli/error-logger.d.ts +18 -2
  66. package/dist/cli/error-logger.js +25 -7
  67. package/dist/cli/error-logger.js.map +1 -1
  68. package/dist/cli/errors.d.ts +14 -10
  69. package/dist/cli/errors.js +25 -12
  70. package/dist/cli/errors.js.map +1 -1
  71. package/dist/cli/exit-signals.d.ts +4 -0
  72. package/dist/cli/exit-signals.js +8 -0
  73. package/dist/cli/exit-signals.js.map +1 -0
  74. package/dist/cli/http.d.ts +1 -0
  75. package/dist/cli/isolated-env-runner.d.ts +10 -0
  76. package/dist/cli/isolated-env-runner.js +46 -0
  77. package/dist/cli/isolated-env-runner.js.map +1 -0
  78. package/dist/cli/isolated-env.d.ts +22 -0
  79. package/dist/cli/isolated-env.js +176 -0
  80. package/dist/cli/isolated-env.js.map +1 -0
  81. package/dist/cli/logger.d.ts +11 -1
  82. package/dist/cli/logger.js +101 -16
  83. package/dist/cli/logger.js.map +1 -1
  84. package/dist/cli/mcp-output-format.d.ts +2 -0
  85. package/dist/cli/mcp-output-format.js +22 -0
  86. package/dist/cli/mcp-output-format.js.map +1 -0
  87. package/dist/cli/mcp-server.d.ts +21 -0
  88. package/dist/cli/mcp-server.js +286 -0
  89. package/dist/cli/mcp-server.js.map +1 -0
  90. package/dist/cli/options.d.ts +18 -3
  91. package/dist/cli/options.js +39 -12
  92. package/dist/cli/options.js.map +1 -1
  93. package/dist/cli/poe-code-command-runner.d.ts +6 -0
  94. package/dist/cli/poe-code-command-runner.js +57 -0
  95. package/dist/cli/poe-code-command-runner.js.map +1 -0
  96. package/dist/cli/program.js +134 -23
  97. package/dist/cli/program.js.map +1 -1
  98. package/dist/cli/prompt-runner.d.ts +10 -0
  99. package/dist/cli/prompt-runner.js +79 -0
  100. package/dist/cli/prompt-runner.js.map +1 -0
  101. package/dist/cli/prompts.d.ts +23 -7
  102. package/dist/cli/prompts.js +17 -33
  103. package/dist/cli/prompts.js.map +1 -1
  104. package/dist/cli/service-registry.d.ts +86 -21
  105. package/dist/cli/service-registry.js +60 -12
  106. package/dist/cli/service-registry.js.map +1 -1
  107. package/dist/cli/ui/service-menu.d.ts +7 -0
  108. package/dist/cli/ui/service-menu.js +43 -0
  109. package/dist/cli/ui/service-menu.js.map +1 -0
  110. package/dist/index.d.ts +6 -2
  111. package/dist/index.js +7 -74
  112. package/dist/index.js.map +1 -1
  113. package/dist/providers/claude-code.d.ts +13 -0
  114. package/dist/providers/claude-code.js +136 -0
  115. package/dist/providers/claude-code.js.map +1 -0
  116. package/dist/providers/codex.d.ts +17 -0
  117. package/dist/providers/codex.js +144 -0
  118. package/dist/providers/codex.js.map +1 -0
  119. package/dist/providers/create-provider.d.ts +29 -0
  120. package/dist/providers/create-provider.js +63 -0
  121. package/dist/providers/create-provider.js.map +1 -0
  122. package/dist/providers/index.d.ts +2 -2
  123. package/dist/providers/index.js +5 -10
  124. package/dist/providers/index.js.map +1 -1
  125. package/dist/providers/kimi.d.ts +4 -0
  126. package/dist/providers/kimi.js +123 -0
  127. package/dist/providers/kimi.js.map +1 -0
  128. package/dist/providers/opencode.d.ts +3 -0
  129. package/dist/providers/opencode.js +119 -0
  130. package/dist/providers/opencode.js.map +1 -0
  131. package/dist/providers/spawn-options.d.ts +12 -0
  132. package/dist/providers/spawn-options.js +2 -0
  133. package/dist/providers/spawn-options.js.map +1 -0
  134. package/dist/sdk/container.d.ts +18 -0
  135. package/dist/sdk/container.js +127 -0
  136. package/dist/sdk/container.js.map +1 -0
  137. package/dist/sdk/credentials.d.ts +9 -0
  138. package/dist/sdk/credentials.js +35 -0
  139. package/dist/sdk/credentials.js.map +1 -0
  140. package/dist/sdk/generate.d.ts +5 -0
  141. package/dist/sdk/generate.js +97 -0
  142. package/dist/sdk/generate.js.map +1 -0
  143. package/dist/sdk/spawn-core.d.ts +23 -0
  144. package/dist/sdk/spawn-core.js +105 -0
  145. package/dist/sdk/spawn-core.js.map +1 -0
  146. package/dist/sdk/spawn.d.ts +23 -0
  147. package/dist/sdk/spawn.js +41 -0
  148. package/dist/sdk/spawn.js.map +1 -0
  149. package/dist/sdk/types.d.ts +38 -0
  150. package/dist/sdk/types.js +2 -0
  151. package/dist/sdk/types.js.map +1 -0
  152. package/dist/services/client-instance.d.ts +12 -0
  153. package/dist/services/client-instance.js +36 -0
  154. package/dist/services/client-instance.js.map +1 -0
  155. package/dist/services/credentials.d.ts +13 -0
  156. package/dist/services/credentials.js +132 -14
  157. package/dist/services/credentials.js.map +1 -1
  158. package/dist/services/llm-client.d.ts +22 -0
  159. package/dist/services/llm-client.js +138 -0
  160. package/dist/services/llm-client.js.map +1 -0
  161. package/dist/services/media-download.d.ts +17 -0
  162. package/dist/services/media-download.js +42 -0
  163. package/dist/services/media-download.js.map +1 -0
  164. package/dist/services/model-strategy.d.ts +2 -2
  165. package/dist/services/model-strategy.js +36 -31
  166. package/dist/services/model-strategy.js.map +1 -1
  167. package/dist/services/mutation-events.d.ts +4 -0
  168. package/dist/services/mutation-events.js +53 -0
  169. package/dist/services/mutation-events.js.map +1 -0
  170. package/dist/services/service-install.d.ts +5 -4
  171. package/dist/services/service-install.js +36 -13
  172. package/dist/services/service-install.js.map +1 -1
  173. package/dist/services/version.d.ts +11 -0
  174. package/dist/services/version.js +28 -0
  175. package/dist/services/version.js.map +1 -0
  176. package/dist/templates/codex/config.toml.hbs +3 -3
  177. package/dist/tools/label-generator.d.ts +11 -0
  178. package/dist/tools/label-generator.js +78 -0
  179. package/dist/tools/label-generator.js.map +1 -0
  180. package/dist/utils/command-checks.d.ts +45 -0
  181. package/dist/utils/command-checks.js +120 -0
  182. package/dist/utils/command-checks.js.map +1 -0
  183. package/dist/utils/dry-run.d.ts +1 -0
  184. package/dist/utils/dry-run.js +116 -7
  185. package/dist/utils/dry-run.js.map +1 -1
  186. package/dist/utils/execution-context.d.ts +40 -0
  187. package/dist/utils/execution-context.js +128 -0
  188. package/dist/utils/execution-context.js.map +1 -0
  189. package/dist/utils/json.js +3 -0
  190. package/dist/utils/json.js.map +1 -1
  191. package/dist/utils/templates.d.ts +1 -0
  192. package/dist/utils/templates.js +3 -4
  193. package/dist/utils/templates.js.map +1 -1
  194. package/package.json +54 -46
  195. package/dist/cli/api-client.d.ts +0 -14
  196. package/dist/cli/api-client.js +0 -140
  197. package/dist/cli/api-client.js.map +0 -1
  198. package/dist/cli/chat.d.ts +0 -32
  199. package/dist/cli/chat.js +0 -2
  200. package/dist/cli/chat.js.map +0 -1
  201. package/dist/cli/commands/agent.d.ts +0 -18
  202. package/dist/cli/commands/agent.js +0 -84
  203. package/dist/cli/commands/agent.js.map +0 -1
  204. package/dist/cli/commands/configure-agents.d.ts +0 -3
  205. package/dist/cli/commands/configure-agents.js +0 -72
  206. package/dist/cli/commands/configure-agents.js.map +0 -1
  207. package/dist/cli/commands/init.d.ts +0 -8
  208. package/dist/cli/commands/init.js +0 -45
  209. package/dist/cli/commands/init.js.map +0 -1
  210. package/dist/cli/commands/interactive.d.ts +0 -3
  211. package/dist/cli/commands/interactive.js +0 -17
  212. package/dist/cli/commands/interactive.js.map +0 -1
  213. package/dist/cli/commands/logout.d.ts +0 -3
  214. package/dist/cli/commands/logout.js +0 -31
  215. package/dist/cli/commands/logout.js.map +0 -1
  216. package/dist/cli/commands/prerequisites.d.ts +0 -3
  217. package/dist/cli/commands/prerequisites.js +0 -23
  218. package/dist/cli/commands/prerequisites.js.map +0 -1
  219. package/dist/cli/commands/query.d.ts +0 -7
  220. package/dist/cli/commands/query.js +0 -46
  221. package/dist/cli/commands/query.js.map +0 -1
  222. package/dist/cli/commands/remove.d.ts +0 -6
  223. package/dist/cli/commands/remove.js +0 -80
  224. package/dist/cli/commands/remove.js.map +0 -1
  225. package/dist/cli/commands/root.js +0 -7
  226. package/dist/cli/commands/root.js.map +0 -1
  227. package/dist/cli/commands/spawn-worktree.d.ts +0 -6
  228. package/dist/cli/commands/spawn-worktree.js +0 -91
  229. package/dist/cli/commands/spawn-worktree.js.map +0 -1
  230. package/dist/cli/file-mentions.d.ts +0 -13
  231. package/dist/cli/file-mentions.js +0 -87
  232. package/dist/cli/file-mentions.js.map +0 -1
  233. package/dist/cli/file-picker-state.d.ts +0 -14
  234. package/dist/cli/file-picker-state.js +0 -23
  235. package/dist/cli/file-picker-state.js.map +0 -1
  236. package/dist/cli/interactive-command-runner.d.ts +0 -11
  237. package/dist/cli/interactive-command-runner.js +0 -142
  238. package/dist/cli/interactive-command-runner.js.map +0 -1
  239. package/dist/cli/interactive-launcher.d.ts +0 -2
  240. package/dist/cli/interactive-launcher.js +0 -404
  241. package/dist/cli/interactive-launcher.js.map +0 -1
  242. package/dist/cli/interactive-tasks.d.ts +0 -7
  243. package/dist/cli/interactive-tasks.js +0 -199
  244. package/dist/cli/interactive-tasks.js.map +0 -1
  245. package/dist/cli/interactive.d.ts +0 -19
  246. package/dist/cli/interactive.js +0 -479
  247. package/dist/cli/interactive.js.map +0 -1
  248. package/dist/cli/markdown-renderer.d.ts +0 -27
  249. package/dist/cli/markdown-renderer.js +0 -178
  250. package/dist/cli/markdown-renderer.js.map +0 -1
  251. package/dist/cli/markdown-renderer.test.d.ts +0 -1
  252. package/dist/cli/markdown-renderer.test.js +0 -105
  253. package/dist/cli/markdown-renderer.test.js.map +0 -1
  254. package/dist/cli/telemetry.d.ts +0 -15
  255. package/dist/cli/telemetry.js +0 -45
  256. package/dist/cli/telemetry.js.map +0 -1
  257. package/dist/commands/init.d.ts +0 -9
  258. package/dist/commands/init.js +0 -43
  259. package/dist/commands/init.js.map +0 -1
  260. package/dist/commands/publish-placeholder.d.ts +0 -8
  261. package/dist/commands/publish-placeholder.js +0 -50
  262. package/dist/commands/publish-placeholder.js.map +0 -1
  263. package/dist/commands/spawn-worktree.d.ts +0 -25
  264. package/dist/commands/spawn-worktree.js +0 -139
  265. package/dist/commands/spawn-worktree.js.map +0 -1
  266. package/dist/providers/claude-code-adapter.d.ts +0 -20
  267. package/dist/providers/claude-code-adapter.js +0 -48
  268. package/dist/providers/claude-code-adapter.js.map +0 -1
  269. package/dist/providers/codex-adapter.d.ts +0 -19
  270. package/dist/providers/codex-adapter.js +0 -49
  271. package/dist/providers/codex-adapter.js.map +0 -1
  272. package/dist/providers/opencode-adapter.d.ts +0 -18
  273. package/dist/providers/opencode-adapter.js +0 -45
  274. package/dist/providers/opencode-adapter.js.map +0 -1
  275. package/dist/providers/roo-code-adapter.d.ts +0 -19
  276. package/dist/providers/roo-code-adapter.js +0 -70
  277. package/dist/providers/roo-code-adapter.js.map +0 -1
  278. package/dist/services/agent-config-manager.d.ts +0 -32
  279. package/dist/services/agent-config-manager.js +0 -130
  280. package/dist/services/agent-config-manager.js.map +0 -1
  281. package/dist/services/agent-registry.d.ts +0 -27
  282. package/dist/services/agent-registry.js +0 -89
  283. package/dist/services/agent-registry.js.map +0 -1
  284. package/dist/services/agent-session.d.ts +0 -24
  285. package/dist/services/agent-session.js +0 -107
  286. package/dist/services/agent-session.js.map +0 -1
  287. package/dist/services/agent-task-registry.d.ts +0 -131
  288. package/dist/services/agent-task-registry.js +0 -491
  289. package/dist/services/agent-task-registry.js.map +0 -1
  290. package/dist/services/chat.d.ts +0 -94
  291. package/dist/services/chat.js +0 -241
  292. package/dist/services/chat.js.map +0 -1
  293. package/dist/services/claude-code.d.ts +0 -28
  294. package/dist/services/claude-code.js +0 -155
  295. package/dist/services/claude-code.js.map +0 -1
  296. package/dist/services/codex.d.ts +0 -27
  297. package/dist/services/codex.js +0 -231
  298. package/dist/services/codex.js.map +0 -1
  299. package/dist/services/mcp-client.d.ts +0 -38
  300. package/dist/services/mcp-client.js +0 -170
  301. package/dist/services/mcp-client.js.map +0 -1
  302. package/dist/services/mcp-manager.d.ts +0 -28
  303. package/dist/services/mcp-manager.js +0 -157
  304. package/dist/services/mcp-manager.js.map +0 -1
  305. package/dist/services/opencode.d.ts +0 -25
  306. package/dist/services/opencode.js +0 -161
  307. package/dist/services/opencode.js.map +0 -1
  308. package/dist/services/poe-code.d.ts +0 -7
  309. package/dist/services/poe-code.js +0 -5
  310. package/dist/services/poe-code.js.map +0 -1
  311. package/dist/services/roo-code.d.ts +0 -22
  312. package/dist/services/roo-code.js +0 -134
  313. package/dist/services/roo-code.js.map +0 -1
  314. package/dist/services/service-manifest.d.ts +0 -122
  315. package/dist/services/service-manifest.js +0 -368
  316. package/dist/services/service-manifest.js.map +0 -1
  317. package/dist/services/task-logger.d.ts +0 -24
  318. package/dist/services/task-logger.js +0 -73
  319. package/dist/services/task-logger.js.map +0 -1
  320. package/dist/services/task-runner.d.ts +0 -19
  321. package/dist/services/task-runner.js +0 -157
  322. package/dist/services/task-runner.js.map +0 -1
  323. package/dist/services/tools.d.ts +0 -76
  324. package/dist/services/tools.js +0 -870
  325. package/dist/services/tools.js.map +0 -1
  326. package/dist/templates/claude-code/anthropic_key.sh.hbs +0 -2
  327. package/dist/utils/e2e-flags.d.ts +0 -1
  328. package/dist/utils/e2e-flags.js +0 -9
  329. package/dist/utils/e2e-flags.js.map +0 -1
  330. package/dist/utils/prerequisites.d.ts +0 -41
  331. package/dist/utils/prerequisites.js +0 -92
  332. package/dist/utils/prerequisites.js.map +0 -1
  333. package/dist/utils/toml.d.ts +0 -8
  334. package/dist/utils/toml.js +0 -30
  335. package/dist/utils/toml.js.map +0 -1
  336. package/dist/utils/worktree.d.ts +0 -40
  337. package/dist/utils/worktree.js +0 -179
  338. package/dist/utils/worktree.js.map +0 -1
  339. package/shared/conversation-layout.cjs +0 -11
  340. package/shared/conversation-layout.d.ts +0 -7
  341. package/shared/conversation-layout.js +0 -11
  342. package/shared/package.json +0 -13
@@ -0,0 +1,21 @@
1
+ import { type Server, type ContentBlock } from "@poe-code/tiny-mcp-server";
2
+ import type { McpOutputFormat } from "./mcp-output-format.js";
3
+ export declare function formatMcpToolsDocs(): string;
4
+ type McpToolResult = ContentBlock[];
5
+ interface GenerateTextArgs {
6
+ bot_name: string;
7
+ message: string;
8
+ params?: Record<string, string>;
9
+ }
10
+ interface GenerateMediaArgs {
11
+ prompt: string;
12
+ bot_name?: string;
13
+ params?: Record<string, string>;
14
+ }
15
+ export declare function generateText(args: GenerateTextArgs): Promise<McpToolResult>;
16
+ export declare function generateImage(args: GenerateMediaArgs, outputFormatPreferences?: McpOutputFormat[]): Promise<McpToolResult>;
17
+ export declare function generateVideo(args: GenerateMediaArgs): Promise<McpToolResult>;
18
+ export declare function generateAudio(args: GenerateMediaArgs, outputFormatPreferences?: McpOutputFormat[]): Promise<McpToolResult>;
19
+ export declare function createMcpServer(outputFormatPreferences?: McpOutputFormat[]): Server;
20
+ export declare function runMcpServerWithTransport(outputFormatPreferences?: McpOutputFormat[]): Promise<void>;
21
+ export {};
@@ -0,0 +1,286 @@
1
+ import { createServer, defineSchema, Image, Audio } from "@poe-code/tiny-mcp-server";
2
+ import chalk from "chalk";
3
+ import { getGlobalClient } from "../services/client-instance.js";
4
+ import { DEFAULT_IMAGE_BOT, DEFAULT_VIDEO_BOT, DEFAULT_AUDIO_BOT } from "./constants.js";
5
+ // Tool schemas using defineSchema
6
+ const generateTextSchema = defineSchema({
7
+ bot_name: { type: "string", description: "Name of the Poe bot to query" },
8
+ message: { type: "string", description: "Message to send to the bot" },
9
+ params: { type: "object", description: "Additional parameters", optional: true }
10
+ });
11
+ const generateImageSchema = defineSchema({
12
+ prompt: { type: "string", description: "Text prompt for image generation" },
13
+ bot_name: { type: "string", description: `Bot to use (default: ${DEFAULT_IMAGE_BOT})`, optional: true },
14
+ params: { type: "object", description: "Additional parameters", optional: true }
15
+ });
16
+ const generateVideoSchema = defineSchema({
17
+ prompt: { type: "string", description: "Text prompt for video generation" },
18
+ bot_name: { type: "string", description: `Bot to use (default: ${DEFAULT_VIDEO_BOT})`, optional: true },
19
+ params: { type: "object", description: "Additional parameters", optional: true }
20
+ });
21
+ const generateAudioSchema = defineSchema({
22
+ prompt: { type: "string", description: "Text to convert to audio" },
23
+ bot_name: { type: "string", description: `Bot to use (default: ${DEFAULT_AUDIO_BOT})`, optional: true },
24
+ params: { type: "object", description: "Additional parameters", optional: true }
25
+ });
26
+ const TOOL_REGISTRY = [
27
+ {
28
+ name: "generate_text",
29
+ description: "Generate text using a Poe bot",
30
+ schema: {
31
+ bot_name: { type: "string", description: "Name of the Poe bot to query" },
32
+ message: { type: "string", description: "Message to send to the bot" },
33
+ params: { type: "object", description: "Additional parameters", optional: true }
34
+ }
35
+ },
36
+ {
37
+ name: "generate_image",
38
+ description: "Generate an image using a Poe image model",
39
+ schema: {
40
+ prompt: { type: "string", description: "Text prompt for image generation" },
41
+ bot_name: { type: "string", description: `Bot to use (default: ${DEFAULT_IMAGE_BOT})`, optional: true },
42
+ params: { type: "object", description: "Additional parameters", optional: true }
43
+ }
44
+ },
45
+ {
46
+ name: "generate_video",
47
+ description: "Generate a video using a Poe video model",
48
+ schema: {
49
+ prompt: { type: "string", description: "Text prompt for video generation" },
50
+ bot_name: { type: "string", description: `Bot to use (default: ${DEFAULT_VIDEO_BOT})`, optional: true },
51
+ params: { type: "object", description: "Additional parameters", optional: true }
52
+ }
53
+ },
54
+ {
55
+ name: "generate_audio",
56
+ description: "Convert text to audio using a Poe audio model",
57
+ schema: {
58
+ prompt: { type: "string", description: "Text to convert to audio" },
59
+ bot_name: { type: "string", description: `Bot to use (default: ${DEFAULT_AUDIO_BOT})`, optional: true },
60
+ params: { type: "object", description: "Additional parameters", optional: true }
61
+ }
62
+ }
63
+ ];
64
+ export function formatMcpToolsDocs() {
65
+ const lines = [];
66
+ lines.push(chalk.magenta.bold("Available Tools"));
67
+ lines.push("");
68
+ for (const tool of TOOL_REGISTRY) {
69
+ lines.push(` ${chalk.cyan(tool.name)}`);
70
+ lines.push(` ${chalk.dim(tool.description)}`);
71
+ lines.push("");
72
+ for (const [paramName, paramDef] of Object.entries(tool.schema)) {
73
+ const typeInfo = paramDef.optional
74
+ ? chalk.dim(`${paramDef.type}, optional`)
75
+ : chalk.dim(paramDef.type);
76
+ lines.push(` ${chalk.yellow(paramName)} ${typeInfo}`);
77
+ lines.push(` ${paramDef.description ?? ""}`);
78
+ }
79
+ lines.push("");
80
+ }
81
+ return lines.join("\n");
82
+ }
83
+ export async function generateText(args) {
84
+ const client = getGlobalClient();
85
+ const response = await client.text({
86
+ model: args.bot_name,
87
+ prompt: args.message,
88
+ params: args.params
89
+ });
90
+ return [{ type: "text", text: response.content ?? "" }];
91
+ }
92
+ export async function generateImage(args, outputFormatPreferences = ["url"]) {
93
+ const client = getGlobalClient();
94
+ const model = args.bot_name ?? DEFAULT_IMAGE_BOT;
95
+ const response = await client.media("image", {
96
+ model,
97
+ prompt: args.prompt,
98
+ params: args.params
99
+ });
100
+ return toPreferredMediaContent({
101
+ mediaType: "image",
102
+ model,
103
+ outputFormatPreferences,
104
+ response
105
+ });
106
+ }
107
+ export async function generateVideo(args) {
108
+ const client = getGlobalClient();
109
+ const model = args.bot_name ?? DEFAULT_VIDEO_BOT;
110
+ const response = await client.media("video", {
111
+ model,
112
+ prompt: args.prompt,
113
+ params: args.params
114
+ });
115
+ return toPreferredMediaContent({
116
+ mediaType: "video",
117
+ model,
118
+ outputFormatPreferences: ["url"],
119
+ response
120
+ });
121
+ }
122
+ export async function generateAudio(args, outputFormatPreferences = ["url"]) {
123
+ const client = getGlobalClient();
124
+ const model = args.bot_name ?? DEFAULT_AUDIO_BOT;
125
+ const response = await client.media("audio", {
126
+ model,
127
+ prompt: args.prompt,
128
+ params: args.params
129
+ });
130
+ return toPreferredMediaContent({
131
+ mediaType: "audio",
132
+ model,
133
+ outputFormatPreferences,
134
+ response
135
+ });
136
+ }
137
+ async function toPreferredMediaContent(options) {
138
+ const content = [];
139
+ if (options.response.content) {
140
+ content.push({ type: "text", text: options.response.content });
141
+ }
142
+ const preferenceErrors = [];
143
+ for (const format of options.outputFormatPreferences) {
144
+ if (format === "url") {
145
+ if (options.response.url) {
146
+ content.push({ type: "text", text: options.response.url });
147
+ return content;
148
+ }
149
+ preferenceErrors.push("url output requires a URL");
150
+ continue;
151
+ }
152
+ if (format === "base64") {
153
+ const base64Block = await tryToBase64ContentBlock(options.mediaType, options.response);
154
+ if (base64Block) {
155
+ content.push(base64Block);
156
+ return content;
157
+ }
158
+ preferenceErrors.push(base64OutputRequirement(options.mediaType));
159
+ continue;
160
+ }
161
+ }
162
+ if (options.outputFormatPreferences.length === 1 &&
163
+ options.outputFormatPreferences[0] === "url") {
164
+ throw new Error(`Cannot produce url output for ${options.mediaType} from model "${options.model}": ` +
165
+ `response did not include a URL. ` +
166
+ `If the model returns base64 data, try "--output-format base64" or "--output-format base64,url".`);
167
+ }
168
+ throw new Error(`Cannot produce requested media output for ${options.mediaType} from model "${options.model}". ` +
169
+ `Preferences: ${options.outputFormatPreferences.join(",")}. ` +
170
+ `Available: ${describeMediaAvailability(options.mediaType, options.response)}. ` +
171
+ `Tried: ${preferenceErrors.join("; ")}.`);
172
+ }
173
+ function base64OutputRequirement(mediaType) {
174
+ if (mediaType === "video") {
175
+ return "base64 output is not supported for video";
176
+ }
177
+ return "base64 output requires base64 data or a convertible URL";
178
+ }
179
+ function describeMediaAvailability(mediaType, response) {
180
+ const parts = [];
181
+ if (typeof response.url === "string") {
182
+ parts.push("url: present");
183
+ }
184
+ else {
185
+ parts.push("url: missing");
186
+ }
187
+ if (typeof response.data === "string") {
188
+ parts.push("data: present");
189
+ if (typeof response.mimeType === "string") {
190
+ parts.push(`mimeType: ${response.mimeType}`);
191
+ }
192
+ else if (mediaType !== "video") {
193
+ parts.push("mimeType: missing");
194
+ }
195
+ }
196
+ else {
197
+ parts.push("data: missing");
198
+ }
199
+ if (typeof response.content === "string" && response.content.trim().length > 0) {
200
+ parts.push("content: present");
201
+ }
202
+ return parts.join(", ");
203
+ }
204
+ async function tryToBase64ContentBlock(mediaType, response) {
205
+ if (mediaType === "video") {
206
+ return undefined;
207
+ }
208
+ if (typeof response.data === "string") {
209
+ try {
210
+ if (typeof response.mimeType === "string") {
211
+ return mediaType === "image"
212
+ ? Image.fromBase64(response.data, response.mimeType).toContentBlock()
213
+ : Audio.fromBase64(response.data, response.mimeType).toContentBlock();
214
+ }
215
+ const decoded = Buffer.from(response.data, "base64");
216
+ const bytes = new Uint8Array(decoded);
217
+ return mediaType === "image"
218
+ ? Image.fromBytes(bytes).toContentBlock()
219
+ : Audio.fromBytes(bytes).toContentBlock();
220
+ }
221
+ catch {
222
+ // fall through to URL conversion if available
223
+ }
224
+ }
225
+ if (typeof response.url === "string") {
226
+ try {
227
+ return mediaType === "image"
228
+ ? (await Image.fromUrl(response.url)).toContentBlock()
229
+ : (await Audio.fromUrl(response.url)).toContentBlock();
230
+ }
231
+ catch {
232
+ return undefined;
233
+ }
234
+ }
235
+ return undefined;
236
+ }
237
+ function normalizeParams(params) {
238
+ if (!params)
239
+ return undefined;
240
+ const result = {};
241
+ for (const [key, value] of Object.entries(params)) {
242
+ if (typeof value === "string") {
243
+ result[key] = value;
244
+ }
245
+ }
246
+ return Object.keys(result).length > 0 ? result : undefined;
247
+ }
248
+ export function createMcpServer(outputFormatPreferences = ["url"]) {
249
+ return createServer({
250
+ name: "poe-code",
251
+ version: "1.0.0"
252
+ })
253
+ .tool("generate_text", "Generate text using a Poe bot", generateTextSchema, async (args) => {
254
+ return generateText({
255
+ bot_name: args.bot_name,
256
+ message: args.message,
257
+ params: normalizeParams(args.params)
258
+ });
259
+ })
260
+ .tool("generate_image", "Generate an image using a Poe image model", generateImageSchema, async (args) => {
261
+ return generateImage({
262
+ prompt: args.prompt,
263
+ bot_name: args.bot_name,
264
+ params: normalizeParams(args.params)
265
+ }, outputFormatPreferences);
266
+ })
267
+ .tool("generate_video", "Generate a video using a Poe video model", generateVideoSchema, async (args) => {
268
+ return generateVideo({
269
+ prompt: args.prompt,
270
+ bot_name: args.bot_name,
271
+ params: normalizeParams(args.params)
272
+ });
273
+ })
274
+ .tool("generate_audio", "Convert text to audio using a Poe audio model", generateAudioSchema, async (args) => {
275
+ return generateAudio({
276
+ prompt: args.prompt,
277
+ bot_name: args.bot_name,
278
+ params: normalizeParams(args.params)
279
+ }, outputFormatPreferences);
280
+ });
281
+ }
282
+ export async function runMcpServerWithTransport(outputFormatPreferences = ["url"]) {
283
+ const server = createMcpServer(outputFormatPreferences);
284
+ await server.listen();
285
+ }
286
+ //# sourceMappingURL=mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/cli/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -13,11 +13,26 @@ export interface ResolveApiKeyInput {
13
13
  value?: string;
14
14
  dryRun: boolean;
15
15
  }
16
+ export interface ResolveModelInput {
17
+ value?: string;
18
+ assumeDefault?: boolean;
19
+ defaultValue: string;
20
+ choices: Array<{
21
+ title: string;
22
+ value: string;
23
+ }>;
24
+ label: string;
25
+ onResolve?: (label: string, value: string) => void;
26
+ }
27
+ export interface ResolveReasoningInput {
28
+ value?: string;
29
+ defaultValue: string;
30
+ label: string;
31
+ }
16
32
  export interface OptionResolvers {
17
33
  ensure<TName extends string>(input: EnsureOptionInput<TName>): Promise<string>;
18
- resolveModel(value: string | undefined, defaultModel: string): Promise<string>;
19
- resolveClaudeModel(value: string | undefined): Promise<string>;
20
- resolveReasoning(value: string | undefined, defaultValue: string): Promise<string>;
34
+ resolveModel(input: ResolveModelInput): Promise<string>;
35
+ resolveReasoning(input: ResolveReasoningInput): Promise<string>;
21
36
  resolveConfigName(value: string | undefined, defaultValue: string): Promise<string>;
22
37
  resolveApiKey(input: ResolveApiKeyInput): Promise<string>;
23
38
  normalizeApiKey(value: string): string;
@@ -1,3 +1,19 @@
1
+ /**
2
+ * Strips bracketed paste artifacts from input.
3
+ *
4
+ * When pasting in tmux/iTerm2, terminals send bracketed paste escape sequences
5
+ * (\x1b[200~ at start, \x1b[201~ at end). Some prompt inputs leak these into the
6
+ * captured value and produce artifacts like "undefined" or "ndefined". We strip
7
+ * both the raw escape sequences and the mangled string artifacts.
8
+ */
9
+ function stripBracketedPaste(value) {
10
+ return value
11
+ .replace(/\x1b\[200~/g, "")
12
+ .replace(/\x1b\[201~/g, "")
13
+ .replace(/undefinedndefined$/, "")
14
+ .replace(/undefined$/, "")
15
+ .replace(/ndefined$/, "");
16
+ }
1
17
  export function createOptionResolvers(init) {
2
18
  const ensure = async (input) => {
3
19
  if (input.value != null) {
@@ -14,7 +30,8 @@ export function createOptionResolvers(init) {
14
30
  return result;
15
31
  };
16
32
  const normalizeApiKey = (value) => {
17
- const trimmed = value.trim();
33
+ const sanitized = stripBracketedPaste(value);
34
+ const trimmed = sanitized.trim();
18
35
  if (trimmed.length === 0) {
19
36
  throw new Error("POE API key cannot be empty.");
20
37
  }
@@ -32,7 +49,7 @@ export function createOptionResolvers(init) {
32
49
  if (stored) {
33
50
  return normalizeApiKey(stored);
34
51
  }
35
- const descriptor = init.promptLibrary.apiKey();
52
+ const descriptor = init.promptLibrary.loginApiKey();
36
53
  const response = await init.prompts(descriptor);
37
54
  const result = response[descriptor.name];
38
55
  if (typeof result !== "string") {
@@ -44,16 +61,24 @@ export function createOptionResolvers(init) {
44
61
  }
45
62
  return apiKey;
46
63
  };
47
- const resolveModel = async (value, defaultModel) => await ensure({
48
- value,
49
- descriptor: init.promptLibrary.model(defaultModel),
50
- fallback: defaultModel
51
- });
52
- const resolveClaudeModel = async (value) => {
64
+ const resolveModel = async ({ value, assumeDefault, defaultValue, choices, label, onResolve }) => {
53
65
  if (value != null) {
66
+ onResolve?.(label, value);
54
67
  return value;
55
68
  }
56
- const descriptor = init.promptLibrary.claudeModel();
69
+ if (choices.length === 1) {
70
+ onResolve?.(label, choices[0].value);
71
+ return choices[0].value;
72
+ }
73
+ if (assumeDefault) {
74
+ onResolve?.(label, defaultValue);
75
+ return defaultValue;
76
+ }
77
+ const descriptor = init.promptLibrary.model({
78
+ label,
79
+ defaultValue,
80
+ choices
81
+ });
57
82
  const response = await init.prompts(descriptor);
58
83
  const result = response[descriptor.name];
59
84
  if (typeof result !== "string" || result.trim() === "") {
@@ -61,9 +86,12 @@ export function createOptionResolvers(init) {
61
86
  }
62
87
  return result;
63
88
  };
64
- const resolveReasoning = async (value, defaultValue) => await ensure({
89
+ const resolveReasoning = async ({ value, defaultValue, label }) => await ensure({
65
90
  value,
66
- descriptor: init.promptLibrary.reasoningEffort(defaultValue),
91
+ descriptor: init.promptLibrary.reasoningEffort({
92
+ label,
93
+ defaultValue
94
+ }),
67
95
  fallback: defaultValue
68
96
  });
69
97
  const resolveConfigName = async (value, defaultValue) => await ensure({
@@ -74,7 +102,6 @@ export function createOptionResolvers(init) {
74
102
  return {
75
103
  ensure,
76
104
  resolveModel,
77
- resolveClaudeModel,
78
105
  resolveReasoning,
79
106
  resolveConfigName,
80
107
  resolveApiKey,
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK;SACT,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;SAC1B,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;SAC1B,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;SACjC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC9B,CAAC;AAuDD,MAAM,UAAU,qBAAqB,CACnC,IAAwB;IAExB,MAAM,MAAM,GAAG,KAAK,EAClB,KAA+B,EACd,EAAE;QACnB,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC,KAAK,CAAC;QACrB,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC,QAAQ,CAAC;QACxB,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,KAAa,EAAU,EAAE;QAChD,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,KAAK,EACzB,KAAyB,EACR,EAAE;QACnB,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,KAAK,EAAE,EAC1B,KAAK,EACL,aAAa,EACb,YAAY,EACZ,OAAO,EACP,KAAK,EACL,SAAS,EACS,EAAmB,EAAE;QACvC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,CAAC;YACtC,OAAO,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC;QAC3B,CAAC;QACD,IAAI,aAAa,EAAE,CAAC;YAClB,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YACjC,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YAC1C,KAAK;YACL,YAAY;YACZ,OAAO;SACR,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,sBAAsB,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,KAAK,EAAE,EAC9B,KAAK,EACL,YAAY,EACZ,KAAK,EACiB,EAAmB,EAAE,CAC3C,MAAM,MAAM,CAAC;QACX,KAAK;QACL,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;YAC7C,KAAK;YACL,YAAY;SACb,CAAC;QACF,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAC;IAEL,MAAM,iBAAiB,GAAG,KAAK,EAC7B,KAAyB,EACzB,YAAoB,EACH,EAAE,CACnB,MAAM,MAAM,CAAC;QACX,KAAK;QACL,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC;QACvD,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAC;IAEL,OAAO;QACL,MAAM;QACN,YAAY;QACZ,gBAAgB;QAChB,iBAAiB;QACjB,aAAa;QACb,eAAe;KAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { CommandRunner } from "../utils/command-checks.js";
2
+ import type { CliContainer } from "./container.js";
3
+ export declare function createPoeCodeCommandRunner(input: {
4
+ getContainer: () => CliContainer;
5
+ baseRunner: CommandRunner;
6
+ }): CommandRunner;
@@ -0,0 +1,57 @@
1
+ import { applyIsolatedEnvRepairs, resolveIsolatedEnvDetails, isolatedConfigExists } from "./isolated-env.js";
2
+ import { ensureIsolatedConfigForService } from "./commands/ensure-isolated-config.js";
3
+ export function createPoeCodeCommandRunner(input) {
4
+ return async (command, args, options) => {
5
+ const container = input.getContainer();
6
+ if (command !== "poe-code" || args.length === 0) {
7
+ return input.baseRunner(command, args, options);
8
+ }
9
+ if (args[0] !== "wrap") {
10
+ return input.baseRunner(command, args, options);
11
+ }
12
+ const service = args[1];
13
+ if (typeof service !== "string" || service.trim() === "") {
14
+ return input.baseRunner(command, args, options);
15
+ }
16
+ const adapter = container.registry.get(service);
17
+ if (!adapter?.isolatedEnv) {
18
+ return input.baseRunner(command, args, options);
19
+ }
20
+ const details = await resolveIsolatedEnvDetails(container.env, adapter.isolatedEnv, adapter.name, container.fs);
21
+ if (adapter.isolatedEnv.requiresConfig !== false) {
22
+ const hasConfig = await isolatedConfigExists(container.fs, details.configProbePath);
23
+ if (!hasConfig) {
24
+ await ensureIsolatedConfigForService({
25
+ container,
26
+ adapter,
27
+ service,
28
+ flags: { dryRun: false, assumeYes: true, verbose: false },
29
+ refresh: true
30
+ });
31
+ }
32
+ }
33
+ await applyIsolatedEnvRepairs({
34
+ fs: container.fs,
35
+ env: container.env,
36
+ providerName: adapter.name,
37
+ isolated: adapter.isolatedEnv
38
+ });
39
+ let forwarded = args.slice(2);
40
+ if (forwarded[0] === "--") {
41
+ forwarded = forwarded.slice(1);
42
+ }
43
+ const mergedEnv = {
44
+ ...(options?.env ?? {}),
45
+ ...details.env
46
+ };
47
+ const runOptions = { env: mergedEnv };
48
+ if (options?.cwd) {
49
+ runOptions.cwd = options.cwd;
50
+ }
51
+ if (options?.stdin != null) {
52
+ runOptions.stdin = options.stdin;
53
+ }
54
+ return input.baseRunner(details.agentBinary, forwarded, runOptions);
55
+ };
56
+ }
57
+ //# sourceMappingURL=poe-code-command-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poe-code-command-runner.js","sourceRoot":"","sources":["../../src/cli/poe-code-command-runner.ts"],"names":[],"mappings":"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"}