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
package/package.json CHANGED
@@ -1,84 +1,92 @@
1
1
  {
2
2
  "name": "poe-code",
3
- "version": "0.1.26",
3
+ "version": "1.0.1-beta.1",
4
4
  "description": "CLI tool to configure Poe API for developer workflows.",
5
5
  "type": "module",
6
+ "workspaces": [
7
+ "packages/*"
8
+ ],
6
9
  "scripts": {
7
- "build": "npm run build:webview && tsc -p tsconfig.build.json && node scripts/copy-templates.mjs",
10
+ "build": "turbo run build && tsc -p tsconfig.build.json && node scripts/copy-templates.mjs && node scripts/generate-bin-wrappers.mjs",
11
+ "predev": "turbo run build --filter=@poe-code/agent-mcp-config --filter=@poe-code/tiny-mcp-server --output-logs=none --log-prefix=none --verbosity=0 > /dev/null 2>&1",
8
12
  "dev": "tsx src/index.ts",
9
13
  "start": "node dist/index.js",
10
- "test": "npm run test:root && npm run test --prefix vscode-extension",
11
- "test:root": "vitest run",
14
+ "test": "vitest run",
15
+ "check:semver": "node -e \"const semver=require('semver'); const pkg=require('./package.json'); if(!semver.valid(pkg.version)){console.error('Invalid semver version in package.json:', pkg.version); process.exit(1);}\"",
12
16
  "lint": "npm run lint:eslint && npm run lint:types && npm run lint:workflows",
13
17
  "lint:workflows": "(command -v actionlint > /dev/null || bash scripts/setup-actionlint.sh) && (command -v actionlint > /dev/null && actionlint || ./actionlint)",
14
18
  "lint:eslint": "eslint . --ext ts",
15
- "lint:types": "tsc -p tsconfig.build.json --noEmit && npm run typecheck --prefix vscode-extension",
19
+ "lint:types": "tsc -p tsconfig.build.json --noEmit",
20
+ "labels:generate": "tsx scripts/generate-labels.ts",
21
+ "screenshot": "tsx scripts/screenshot.ts",
22
+ "screenshot-poe-code": "tsx scripts/screenshot.ts --poe-code",
23
+ "generate:design-docs": "turbo run generate:docs --filter=@poe-code/design-system",
16
24
  "format": "prettier --check .",
17
25
  "format:write": "prettier --write .",
18
- "watch": "tsx watch src/index.ts",
19
- "extension:build": "npm run compile --prefix vscode-extension",
20
- "extension:watch": "npm run watch --prefix vscode-extension",
21
- "extension:preview": "npm run build && npm run extension:build && cd vscode-extension/preview && npm install && npm run dev",
22
- "build:webview": "webpack --config webpack.webview.config.cjs",
23
- "test:e2e": "playwright test"
26
+ "watch:diff": "tsx local_scripts/watch-diff.ts",
27
+ "test:integration": "vitest run tests/integration/",
28
+ "test:record": "POE_SNAPSHOT_MODE=record npm run test:integration",
29
+ "test-generate": "tsx scripts/test-generate.ts",
30
+ "snapshots": "tsx scripts/snapshots.ts",
31
+ "snapshots:list": "npm run snapshots -- list",
32
+ "snapshots:refresh": "npm run snapshots -- refresh",
33
+ "snapshots:delete": "npm run snapshots -- delete",
34
+ "snapshots:list:stale": "npm run snapshots -- list --stale",
35
+ "snapshots:delete:stale": "npm run snapshots -- delete --stale",
36
+ "e2e": "vitest run --config e2e/vitest.config.ts",
37
+ "e2e:verbose": "E2E_VERBOSE=1 vitest run --config e2e/vitest.config.ts --reporter=verbose",
38
+ "e2e:cleanup": "tsx packages/e2e-docker-test-runner/scripts/cleanup.ts",
39
+ "e2e:logs": "tsx packages/e2e-docker-test-runner/scripts/logs.ts",
40
+ "e2e:logs:rotate": "tsx packages/e2e-docker-test-runner/scripts/logs.ts --rotate",
41
+ "e2e:cache:clear": "rm -rf ~/.cache/poe-e2e",
42
+ "prepare": "husky"
24
43
  },
25
44
  "bin": {
26
- "poe-code": "dist/index.js"
45
+ "poe-code": "dist/index.js",
46
+ "poe-code-configure": "dist/index.js",
47
+ "poe-claude": "dist/bin/poe-claude.js",
48
+ "poe-codex": "dist/bin/poe-codex.js",
49
+ "poe-opencode": "dist/bin/poe-opencode.js"
27
50
  },
28
51
  "files": [
29
- "dist",
30
- "shared"
52
+ "dist"
31
53
  ],
32
54
  "engines": {
33
- "node": ">=18"
55
+ "node": ">=16"
34
56
  },
57
+ "packageManager": "npm@10.9.2",
35
58
  "dependencies": {
36
- "@iarna/toml": "^3.0.0",
37
- "@poe/shared-utils": "file:./shared",
59
+ "@poe-code/config-mutations": "*",
60
+ "@poe-code/design-system": "*",
61
+ "@poe-code/tiny-mcp-server": "*",
38
62
  "chalk": "^5.3.0",
39
63
  "commander": "^11.1.0",
40
- "diff": "^5.2.0",
41
- "handlebars": "^4.7.8",
42
- "ink": "^6.4.0",
43
- "ink-select-input": "^6.2.0",
44
- "ink-text-input": "^6.0.0",
45
- "lit": "^3.3.1",
46
- "prompts": "^2.4.2",
47
- "react": "^19.2.0",
48
- "simple-git": "^3.25.0"
64
+ "diff": ">=8.0.3",
65
+ "mustache": "^4.2.0",
66
+ "semver": "^7.7.3"
49
67
  },
50
68
  "devDependencies": {
51
- "@playwright/test": "^1.47.2",
52
- "@types/diff": "^7.0.2",
69
+ "@modelcontextprotocol/sdk": "^1.25.3",
70
+ "@poe-code/e2e-docker-test-runner": "*",
71
+ "@poe-code/freeze-cli": "*",
72
+ "@types/mustache": "^4.2.6",
53
73
  "@types/node": "^20.12.7",
54
- "@types/prompts": "^2.4.9",
55
- "@types/react": "^19.2.2",
74
+ "@types/semver": "^7.7.1",
56
75
  "@typescript-eslint/eslint-plugin": "^8.46.2",
57
76
  "@typescript-eslint/parser": "^8.46.2",
58
- "@vscode/test-electron": "^2.5.2",
59
- "autoprefixer": "^10.4.20",
60
- "css-loader": "^7.1.2",
61
77
  "eslint": "^9.38.0",
62
78
  "eslint-config-prettier": "^9.1.0",
63
- "happy-dom": "^20.0.10",
64
- "ink-testing-library": "^4.0.0",
65
- "jsdom": "^27.0.1",
79
+ "husky": "^9.1.7",
66
80
  "memfs": "^4.7.3",
67
- "mini-css-extract-plugin": "^2.9.1",
68
- "postcss-loader": "^8.1.1",
69
81
  "prettier": "^3.3.3",
70
- "tailwindcss": "^3.4.18",
71
- "ts-loader": "^9.5.1",
72
- "tsx": "^4.7.1",
82
+ "tsx": ">=4.21.0",
83
+ "turbo": "^2.5.0",
73
84
  "typescript": "^5.4.5",
74
85
  "typescript-eslint": "^8.46.2",
75
- "vitest": "^1.6.1",
76
- "webpack": "^5.96.1",
77
- "webpack-cli": "^5.1.4",
78
- "yaml": "^2.6.0"
86
+ "vitest": ">=4.0.17"
79
87
  },
80
88
  "repository": {
81
89
  "type": "git",
82
- "url": "https://github.com/poe-platform/poe-code.git"
90
+ "url": "git+https://github.com/poe-platform/poe-code.git"
83
91
  }
84
92
  }
@@ -1,14 +0,0 @@
1
- import type { HttpClient } from "./http.js";
2
- export interface VerifyApiKeyOptions {
3
- apiKey: string;
4
- }
5
- export interface QueryOptions {
6
- apiKey: string;
7
- model: string;
8
- prompt: string;
9
- }
10
- export interface PoeApiClient {
11
- verify(options: VerifyApiKeyOptions): Promise<void>;
12
- query(options: QueryOptions): Promise<string>;
13
- }
14
- export declare function createPoeApiClient(client: HttpClient): PoeApiClient;
@@ -1,140 +0,0 @@
1
- import { ApiError } from "./errors.js";
2
- const POE_API_ENDPOINT = "https://api.poe.com/v1/chat/completions";
3
- export function createPoeApiClient(client) {
4
- const verify = async (options) => {
5
- const requestBody = {
6
- model: "EchoBot",
7
- messages: [{ role: "user", content: "Ping" }]
8
- };
9
- let response;
10
- let responseBody;
11
- try {
12
- response = await client(POE_API_ENDPOINT, {
13
- method: "POST",
14
- headers: {
15
- "Content-Type": "application/json",
16
- Authorization: `Bearer ${options.apiKey}`
17
- },
18
- body: JSON.stringify(requestBody)
19
- });
20
- responseBody = await response.json();
21
- if (!response.ok) {
22
- throw new ApiError("Poe API test failed", {
23
- httpStatus: response.status,
24
- endpoint: POE_API_ENDPOINT,
25
- context: {
26
- operation: "verify API key",
27
- requestBody,
28
- responseBody
29
- }
30
- });
31
- }
32
- const echoed = extractMessageContent(responseBody);
33
- if (echoed !== "Ping") {
34
- throw new ApiError("Poe API test failed: unexpected response payload", {
35
- httpStatus: response.status,
36
- endpoint: POE_API_ENDPOINT,
37
- context: {
38
- operation: "verify API key",
39
- expected: "Ping",
40
- received: echoed,
41
- responseBody
42
- }
43
- });
44
- }
45
- }
46
- catch (error) {
47
- if (error instanceof ApiError) {
48
- throw error;
49
- }
50
- // Network or other errors
51
- throw new ApiError(`Failed to connect to Poe API: ${String(error)}`, {
52
- endpoint: POE_API_ENDPOINT,
53
- context: {
54
- operation: "verify API key",
55
- requestBody,
56
- originalError: String(error)
57
- }
58
- });
59
- }
60
- };
61
- const query = async (options) => {
62
- const requestBody = {
63
- model: options.model,
64
- messages: [{ role: "user", content: options.prompt }]
65
- };
66
- let response;
67
- let responseBody;
68
- try {
69
- response = await client(POE_API_ENDPOINT, {
70
- method: "POST",
71
- headers: {
72
- "Content-Type": "application/json",
73
- Authorization: `Bearer ${options.apiKey}`
74
- },
75
- body: JSON.stringify(requestBody)
76
- });
77
- responseBody = await response.json();
78
- if (!response.ok) {
79
- throw new ApiError("Poe API query failed", {
80
- httpStatus: response.status,
81
- endpoint: POE_API_ENDPOINT,
82
- context: {
83
- operation: "query",
84
- model: options.model,
85
- requestBody,
86
- responseBody
87
- }
88
- });
89
- }
90
- const content = extractMessageContent(responseBody);
91
- if (!content) {
92
- throw new ApiError("Poe API query failed: missing response content", {
93
- httpStatus: response.status,
94
- endpoint: POE_API_ENDPOINT,
95
- context: {
96
- operation: "query",
97
- model: options.model,
98
- responseBody
99
- }
100
- });
101
- }
102
- return content;
103
- }
104
- catch (error) {
105
- if (error instanceof ApiError) {
106
- throw error;
107
- }
108
- // Network or other errors
109
- throw new ApiError(`Failed to connect to Poe API: ${String(error)}`, {
110
- endpoint: POE_API_ENDPOINT,
111
- context: {
112
- operation: "query",
113
- model: options.model,
114
- requestBody,
115
- originalError: String(error)
116
- }
117
- });
118
- }
119
- };
120
- return { verify, query };
121
- }
122
- function extractMessageContent(payload) {
123
- if (!isPoeResponse(payload)) {
124
- return null;
125
- }
126
- const [first] = payload.choices;
127
- if (!first || typeof first !== "object") {
128
- return null;
129
- }
130
- const content = first.message?.content;
131
- return typeof content === "string" ? content : null;
132
- }
133
- function isPoeResponse(value) {
134
- if (typeof value !== "object" || value === null) {
135
- return false;
136
- }
137
- const candidate = value;
138
- return Array.isArray(candidate.choices) && candidate.choices.length > 0;
139
- }
140
- //# sourceMappingURL=api-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/cli/api-client.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- import type { FileSystem } from "../utils/file-system.js";
2
- import type { AgentTask } from "../services/agent-task-registry.js";
3
- import type { LoggerFn } from "./types.js";
4
- export interface AgentToolCallEvent {
5
- toolName: string;
6
- args: Record<string, unknown>;
7
- result?: string;
8
- error?: string;
9
- }
10
- export interface AgentSession {
11
- getModel?(): string;
12
- setToolCallCallback?(callback: (event: AgentToolCallEvent) => void): void;
13
- sendMessage(prompt: string, options?: {
14
- signal?: AbortSignal;
15
- onChunk?: (chunk: string) => void;
16
- }): Promise<{
17
- content: string;
18
- }>;
19
- waitForAllTasks?(): Promise<void>;
20
- drainCompletedTasks?(): AgentTask[];
21
- dispose?(): Promise<void> | void;
22
- }
23
- export interface ChatServiceFactoryOptions {
24
- apiKey: string;
25
- model: string;
26
- cwd: string;
27
- homeDir: string;
28
- fs: FileSystem;
29
- logger: LoggerFn;
30
- awaitTasksOnDispose?: boolean;
31
- }
32
- export type ChatServiceFactory = (options: ChatServiceFactoryOptions) => Promise<AgentSession> | AgentSession;
package/dist/cli/chat.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=chat.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/cli/chat.ts"],"names":[],"mappings":""}
@@ -1,18 +0,0 @@
1
- import type { Command } from "commander";
2
- import type { AgentToolCallEvent } from "../chat.js";
3
- import type { ScopedLogger } from "../logger.js";
4
- import type { CliContainer } from "../container.js";
5
- export interface AgentCommandOptions {
6
- apiKey?: string;
7
- model?: string;
8
- }
9
- export declare function registerAgentCommand(program: Command, container: CliContainer): void;
10
- export interface AgentConversationOptions {
11
- container: CliContainer;
12
- logger: ScopedLogger;
13
- text: string;
14
- model: string;
15
- apiKey: string;
16
- }
17
- export declare function runAgentConversation(options: AgentConversationOptions): Promise<string>;
18
- export declare function logToolCallEvent(event: AgentToolCallEvent, logger: ScopedLogger): void;
@@ -1,84 +0,0 @@
1
- import { resolveCommandFlags } from "./shared.js";
2
- import { DEFAULT_QUERY_MODEL } from "../constants.js";
3
- export function registerAgentCommand(program, container) {
4
- program
5
- .command("agent")
6
- .description("Run a single Poe agent prompt with local tooling support.")
7
- .argument("<text>", "Prompt text to send to the agent")
8
- .option("--model <model>", "Model identifier", DEFAULT_QUERY_MODEL)
9
- .option("--api-key <key>", "Poe API key")
10
- .action(async (text, options) => {
11
- const flags = resolveCommandFlags(program);
12
- const logger = container.loggerFactory.create({
13
- dryRun: flags.dryRun,
14
- verbose: flags.verbose,
15
- scope: "agent"
16
- });
17
- const model = options.model ?? DEFAULT_QUERY_MODEL;
18
- if (flags.dryRun) {
19
- logger.dryRun(`would run agent with model "${model}" and prompt "${text}".`);
20
- return;
21
- }
22
- const apiKey = await container.options.resolveApiKey({
23
- value: options.apiKey,
24
- dryRun: flags.dryRun
25
- });
26
- const message = await runAgentConversation({
27
- container,
28
- logger,
29
- text,
30
- model,
31
- apiKey
32
- });
33
- logger.info(message);
34
- });
35
- }
36
- export async function runAgentConversation(options) {
37
- const session = await options.container.chatServiceFactory({
38
- apiKey: options.apiKey,
39
- model: options.model,
40
- cwd: options.container.env.cwd,
41
- homeDir: options.container.env.homeDir,
42
- fs: options.container.fs,
43
- logger: (message) => options.logger.info(message),
44
- awaitTasksOnDispose: true
45
- });
46
- try {
47
- if ("setToolCallCallback" in session && session.setToolCallCallback) {
48
- session.setToolCallCallback((event) => logToolCallEvent(event, options.logger));
49
- }
50
- const response = await session.sendMessage(options.text);
51
- if ("waitForAllTasks" in session && typeof session.waitForAllTasks === "function") {
52
- await session.waitForAllTasks();
53
- }
54
- if ("drainCompletedTasks" in session && typeof session.drainCompletedTasks === "function") {
55
- const completed = session.drainCompletedTasks();
56
- for (const task of completed) {
57
- const summary = task.result ?? task.error ?? "Task finished.";
58
- options.logger.info(`Task ${task.id} finished (${task.toolName}): ${summary}`);
59
- }
60
- }
61
- const activeModel = "getModel" in session && session.getModel
62
- ? session.getModel()
63
- : options.model;
64
- return `Agent response (${activeModel}): ${response.content}`;
65
- }
66
- finally {
67
- if ("dispose" in session && session.dispose) {
68
- await session.dispose();
69
- }
70
- }
71
- }
72
- export function logToolCallEvent(event, logger) {
73
- const serializedArgs = JSON.stringify(event.args);
74
- if (event.error) {
75
- logger.error(`Tool ${event.toolName} failed: ${event.error}`);
76
- return;
77
- }
78
- if (event.result) {
79
- logger.info(`Tool ${event.toolName} result: ${event.result}`);
80
- return;
81
- }
82
- logger.verbose(`Tool ${event.toolName} invoked with args ${serializedArgs}`);
83
- }
84
- //# sourceMappingURL=agent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/cli/commands/agent.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { Command } from "commander";
2
- import type { CliContainer } from "../container.js";
3
- export declare function registerConfigureAgentsCommand(configureCommand: Command, container: CliContainer): void;
@@ -1,72 +0,0 @@
1
- import { resolveCommandFlags } from "./shared.js";
2
- import { AgentConfigManager } from "../../services/agent-config-manager.js";
3
- import { createDefaultAgentRegistry } from "../../services/agent-registry.js";
4
- export function registerConfigureAgentsCommand(configureCommand, container) {
5
- configureCommand
6
- .command("agents")
7
- .description("Enable or disable agents for the worktree tool.")
8
- .action(async function () {
9
- const flags = resolveCommandFlags(this);
10
- const logger = container.loggerFactory.create({
11
- scope: "configure:agents",
12
- dryRun: flags.dryRun,
13
- verbose: flags.verbose
14
- });
15
- const registry = createDefaultAgentRegistry();
16
- const manager = new AgentConfigManager({
17
- fs: container.fs,
18
- homeDir: container.env.homeDir,
19
- registry
20
- });
21
- await manager.loadConfig();
22
- const enabledEntries = await manager.getEnabledAgents();
23
- const enabledSet = new Set(enabledEntries.map((entry) => entry.id));
24
- const detectionResults = await Promise.all(registry.list().map(async (adapter) => {
25
- if (!adapter.detect) {
26
- logger.info(`${adapter.id}: available`);
27
- return { adapter, installed: true };
28
- }
29
- try {
30
- const installed = await adapter.detect({
31
- runCommand: container.commandRunner
32
- });
33
- logger.info(`${adapter.id}: ${installed ? "available" : "not detected"}`);
34
- return { adapter, installed };
35
- }
36
- catch (error) {
37
- const message = error instanceof Error ? error.message : String(error);
38
- logger.info(`${adapter.id}: not detected (${message})`);
39
- return { adapter, installed: false };
40
- }
41
- }));
42
- const promptResponse = await container.prompts({
43
- name: "agents",
44
- type: "multiselect",
45
- message: "Select agents to enable",
46
- choices: detectionResults.map(({ adapter, installed }) => ({
47
- title: installed
48
- ? `${adapter.label} (${adapter.id})`
49
- : `${adapter.label} (${adapter.id}) [not detected]`,
50
- value: adapter.id,
51
- selected: enabledSet.has(adapter.id)
52
- }))
53
- });
54
- const selectedValue = promptResponse?.agents;
55
- const selectedIds = Array.isArray(selectedValue)
56
- ? selectedValue.map((id) => String(id))
57
- : [];
58
- if (flags.dryRun) {
59
- logger.dryRun(`would enable agents: ${selectedIds.length > 0 ? selectedIds.join(", ") : "<none>"}`);
60
- return;
61
- }
62
- const selectedSet = new Set(selectedIds);
63
- for (const adapter of registry.list()) {
64
- await manager.updateAgent({
65
- id: adapter.id,
66
- enabled: selectedSet.has(adapter.id)
67
- });
68
- }
69
- logger.info("Updated agent configuration.");
70
- });
71
- }
72
- //# sourceMappingURL=configure-agents.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configure-agents.js","sourceRoot":"","sources":["../../../src/cli/commands/configure-agents.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import type { Command } from "commander";
2
- import type { CliContainer } from "../container.js";
3
- export interface InitCommandOptions {
4
- projectName?: string;
5
- apiKey?: string;
6
- model?: string;
7
- }
8
- export declare function registerInitCommand(program: Command, container: CliContainer): void;
@@ -1,45 +0,0 @@
1
- import { initProject } from "../../commands/init.js";
2
- import { createExecutionResources, resolveCommandFlags } from "./shared.js";
3
- import { DEFAULT_MODEL } from "../constants.js";
4
- export function registerInitCommand(program, container) {
5
- program
6
- .command("init")
7
- .description("Initialize a Python project preconfigured for Poe API.")
8
- .option("--project-name <name>", "Project directory name")
9
- .option("--api-key <key>", "Poe API key")
10
- .option("--model <model>", "Model identifier")
11
- .action(async (options) => {
12
- const flags = resolveCommandFlags(program);
13
- const resources = createExecutionResources(container, flags, "init");
14
- const projectName = options.projectName ?? (await promptForProjectName(container));
15
- const apiKey = await container.options.resolveApiKey({
16
- value: options.apiKey,
17
- dryRun: flags.dryRun
18
- });
19
- const model = await container.options.resolveModel(options.model, DEFAULT_MODEL);
20
- await initProject({
21
- fs: resources.context.fs,
22
- cwd: container.env.cwd,
23
- projectName,
24
- apiKey,
25
- model
26
- });
27
- resources.context.complete({
28
- success: `Initialized project "${projectName}".`,
29
- dry: `Dry run: would initialize project "${projectName}".`
30
- });
31
- });
32
- }
33
- async function promptForProjectName(container) {
34
- const response = await container.prompts({
35
- type: "text",
36
- name: "projectName",
37
- message: "Project name"
38
- });
39
- const value = response.projectName;
40
- if (!value || typeof value !== "string") {
41
- throw new Error("Project name is required.");
42
- }
43
- return value;
44
- }
45
- //# sourceMappingURL=init.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAQhD,MAAM,UAAU,mBAAmB,CACjC,OAAgB,EAChB,SAAuB;IAEvB,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,wDAAwD,CAAC;SACrE,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,CAAC;SACzD,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;SACxC,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;QAC5C,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,wBAAwB,CACxC,SAAS,EACT,KAAK,EACL,MAAM,CACP,CAAC;QAEF,MAAM,WAAW,GACf,OAAO,CAAC,WAAW,IAAI,CAAC,MAAM,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC;QAEjE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC;YACnD,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,YAAY,CAChD,OAAO,CAAC,KAAK,EACb,aAAa,CACd,CAAC;QAEF,MAAM,WAAW,CAAC;YAChB,EAAE,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE;YACxB,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG;YACtB,WAAW;YACX,MAAM;YACN,KAAK;SACN,CAAC,CAAC;QAEH,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;YACzB,OAAO,EAAE,wBAAwB,WAAW,IAAI;YAChD,GAAG,EAAE,sCAAsC,WAAW,IAAI;SAC3D,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,SAAuB;IAEvB,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC;QACvC,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,cAAc;KACxB,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC;IACnC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { Command } from "commander";
2
- import type { CliContainer } from "../container.js";
3
- export declare function registerInteractiveCommand(program: Command, container: CliContainer): void;
@@ -1,17 +0,0 @@
1
- export function registerInteractiveCommand(program, container) {
2
- program
3
- .command("interactive")
4
- .alias("i")
5
- .description("Launch interactive mode with a visual CLI interface.")
6
- .action(async () => {
7
- const logger = container.loggerFactory.create({
8
- dryRun: false,
9
- verbose: true,
10
- scope: "interactive"
11
- });
12
- logger.info("Launching interactive mode...");
13
- const { launchInteractiveMode } = await import("../interactive-launcher.js");
14
- await launchInteractiveMode(container.dependencies);
15
- });
16
- }
17
- //# sourceMappingURL=interactive.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../../src/cli/commands/interactive.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,0BAA0B,CACxC,OAAgB,EAChB,SAAuB;IAEvB,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,KAAK,CAAC,GAAG,CAAC;SACV,WAAW,CAAC,sDAAsD,CAAC;SACnE,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC;YAC5C,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,aAAa;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC7C,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAC5C,4BAA4B,CAC7B,CAAC;QACF,MAAM,qBAAqB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { Command } from "commander";
2
- import type { CliContainer } from "../container.js";
3
- export declare function registerLogoutCommand(program: Command, container: CliContainer): void;