poe-code 0.1.26

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 (245) hide show
  1. package/README.md +64 -0
  2. package/dist/cli/api-client.d.ts +14 -0
  3. package/dist/cli/api-client.js +140 -0
  4. package/dist/cli/api-client.js.map +1 -0
  5. package/dist/cli/chat.d.ts +32 -0
  6. package/dist/cli/chat.js +2 -0
  7. package/dist/cli/chat.js.map +1 -0
  8. package/dist/cli/command-runner.d.ts +2 -0
  9. package/dist/cli/command-runner.js +37 -0
  10. package/dist/cli/command-runner.js.map +1 -0
  11. package/dist/cli/commands/agent.d.ts +18 -0
  12. package/dist/cli/commands/agent.js +84 -0
  13. package/dist/cli/commands/agent.js.map +1 -0
  14. package/dist/cli/commands/configure-agents.d.ts +3 -0
  15. package/dist/cli/commands/configure-agents.js +72 -0
  16. package/dist/cli/commands/configure-agents.js.map +1 -0
  17. package/dist/cli/commands/configure.d.ts +11 -0
  18. package/dist/cli/commands/configure.js +150 -0
  19. package/dist/cli/commands/configure.js.map +1 -0
  20. package/dist/cli/commands/init.d.ts +8 -0
  21. package/dist/cli/commands/init.js +45 -0
  22. package/dist/cli/commands/init.js.map +1 -0
  23. package/dist/cli/commands/interactive.d.ts +3 -0
  24. package/dist/cli/commands/interactive.js +17 -0
  25. package/dist/cli/commands/interactive.js.map +1 -0
  26. package/dist/cli/commands/login.d.ts +6 -0
  27. package/dist/cli/commands/login.js +51 -0
  28. package/dist/cli/commands/login.js.map +1 -0
  29. package/dist/cli/commands/logout.d.ts +3 -0
  30. package/dist/cli/commands/logout.js +31 -0
  31. package/dist/cli/commands/logout.js.map +1 -0
  32. package/dist/cli/commands/prerequisites.d.ts +3 -0
  33. package/dist/cli/commands/prerequisites.js +23 -0
  34. package/dist/cli/commands/prerequisites.js.map +1 -0
  35. package/dist/cli/commands/query.d.ts +7 -0
  36. package/dist/cli/commands/query.js +46 -0
  37. package/dist/cli/commands/query.js.map +1 -0
  38. package/dist/cli/commands/remove.d.ts +6 -0
  39. package/dist/cli/commands/remove.js +80 -0
  40. package/dist/cli/commands/remove.js.map +1 -0
  41. package/dist/cli/commands/root.d.ts +3 -0
  42. package/dist/cli/commands/root.js +7 -0
  43. package/dist/cli/commands/root.js.map +1 -0
  44. package/dist/cli/commands/shared.d.ts +24 -0
  45. package/dist/cli/commands/shared.js +61 -0
  46. package/dist/cli/commands/shared.js.map +1 -0
  47. package/dist/cli/commands/spawn-worktree.d.ts +6 -0
  48. package/dist/cli/commands/spawn-worktree.js +91 -0
  49. package/dist/cli/commands/spawn-worktree.js.map +1 -0
  50. package/dist/cli/commands/spawn.d.ts +7 -0
  51. package/dist/cli/commands/spawn.js +112 -0
  52. package/dist/cli/commands/spawn.js.map +1 -0
  53. package/dist/cli/commands/test.d.ts +6 -0
  54. package/dist/cli/commands/test.js +26 -0
  55. package/dist/cli/commands/test.js.map +1 -0
  56. package/dist/cli/constants.d.ts +10 -0
  57. package/dist/cli/constants.js +11 -0
  58. package/dist/cli/constants.js.map +1 -0
  59. package/dist/cli/container.d.ts +48 -0
  60. package/dist/cli/container.js +94 -0
  61. package/dist/cli/container.js.map +1 -0
  62. package/dist/cli/context.d.ts +37 -0
  63. package/dist/cli/context.js +198 -0
  64. package/dist/cli/context.js.map +1 -0
  65. package/dist/cli/environment.d.ts +19 -0
  66. package/dist/cli/environment.js +26 -0
  67. package/dist/cli/environment.js.map +1 -0
  68. package/dist/cli/error-logger.d.ts +46 -0
  69. package/dist/cli/error-logger.js +137 -0
  70. package/dist/cli/error-logger.js.map +1 -0
  71. package/dist/cli/errors.d.ts +91 -0
  72. package/dist/cli/errors.js +128 -0
  73. package/dist/cli/errors.js.map +1 -0
  74. package/dist/cli/file-mentions.d.ts +13 -0
  75. package/dist/cli/file-mentions.js +87 -0
  76. package/dist/cli/file-mentions.js.map +1 -0
  77. package/dist/cli/file-picker-state.d.ts +14 -0
  78. package/dist/cli/file-picker-state.js +23 -0
  79. package/dist/cli/file-picker-state.js.map +1 -0
  80. package/dist/cli/http.d.ts +11 -0
  81. package/dist/cli/http.js +2 -0
  82. package/dist/cli/http.js.map +1 -0
  83. package/dist/cli/interactive-command-runner.d.ts +11 -0
  84. package/dist/cli/interactive-command-runner.js +142 -0
  85. package/dist/cli/interactive-command-runner.js.map +1 -0
  86. package/dist/cli/interactive-launcher.d.ts +2 -0
  87. package/dist/cli/interactive-launcher.js +404 -0
  88. package/dist/cli/interactive-launcher.js.map +1 -0
  89. package/dist/cli/interactive-tasks.d.ts +7 -0
  90. package/dist/cli/interactive-tasks.js +199 -0
  91. package/dist/cli/interactive-tasks.js.map +1 -0
  92. package/dist/cli/interactive.d.ts +19 -0
  93. package/dist/cli/interactive.js +479 -0
  94. package/dist/cli/interactive.js.map +1 -0
  95. package/dist/cli/logger.d.ts +26 -0
  96. package/dist/cli/logger.js +87 -0
  97. package/dist/cli/logger.js.map +1 -0
  98. package/dist/cli/markdown-renderer.d.ts +27 -0
  99. package/dist/cli/markdown-renderer.js +178 -0
  100. package/dist/cli/markdown-renderer.js.map +1 -0
  101. package/dist/cli/markdown-renderer.test.d.ts +1 -0
  102. package/dist/cli/markdown-renderer.test.js +105 -0
  103. package/dist/cli/markdown-renderer.test.js.map +1 -0
  104. package/dist/cli/options.d.ts +30 -0
  105. package/dist/cli/options.js +84 -0
  106. package/dist/cli/options.js.map +1 -0
  107. package/dist/cli/program.d.ts +4 -0
  108. package/dist/cli/program.js +64 -0
  109. package/dist/cli/program.js.map +1 -0
  110. package/dist/cli/prompts.d.ts +23 -0
  111. package/dist/cli/prompts.js +58 -0
  112. package/dist/cli/prompts.js.map +1 -0
  113. package/dist/cli/service-registry.d.ts +33 -0
  114. package/dist/cli/service-registry.js +35 -0
  115. package/dist/cli/service-registry.js.map +1 -0
  116. package/dist/cli/telemetry.d.ts +15 -0
  117. package/dist/cli/telemetry.js +45 -0
  118. package/dist/cli/telemetry.js.map +1 -0
  119. package/dist/cli/types.d.ts +2 -0
  120. package/dist/cli/types.js +2 -0
  121. package/dist/cli/types.js.map +1 -0
  122. package/dist/commands/init.d.ts +9 -0
  123. package/dist/commands/init.js +43 -0
  124. package/dist/commands/init.js.map +1 -0
  125. package/dist/commands/publish-placeholder.d.ts +8 -0
  126. package/dist/commands/publish-placeholder.js +50 -0
  127. package/dist/commands/publish-placeholder.js.map +1 -0
  128. package/dist/commands/spawn-worktree.d.ts +25 -0
  129. package/dist/commands/spawn-worktree.js +139 -0
  130. package/dist/commands/spawn-worktree.js.map +1 -0
  131. package/dist/index.d.ts +4 -0
  132. package/dist/index.js +81 -0
  133. package/dist/index.js.map +1 -0
  134. package/dist/providers/claude-code-adapter.d.ts +20 -0
  135. package/dist/providers/claude-code-adapter.js +48 -0
  136. package/dist/providers/claude-code-adapter.js.map +1 -0
  137. package/dist/providers/codex-adapter.d.ts +19 -0
  138. package/dist/providers/codex-adapter.js +49 -0
  139. package/dist/providers/codex-adapter.js.map +1 -0
  140. package/dist/providers/index.d.ts +2 -0
  141. package/dist/providers/index.js +13 -0
  142. package/dist/providers/index.js.map +1 -0
  143. package/dist/providers/opencode-adapter.d.ts +18 -0
  144. package/dist/providers/opencode-adapter.js +45 -0
  145. package/dist/providers/opencode-adapter.js.map +1 -0
  146. package/dist/providers/roo-code-adapter.d.ts +19 -0
  147. package/dist/providers/roo-code-adapter.js +70 -0
  148. package/dist/providers/roo-code-adapter.js.map +1 -0
  149. package/dist/services/agent-config-manager.d.ts +32 -0
  150. package/dist/services/agent-config-manager.js +130 -0
  151. package/dist/services/agent-config-manager.js.map +1 -0
  152. package/dist/services/agent-registry.d.ts +27 -0
  153. package/dist/services/agent-registry.js +89 -0
  154. package/dist/services/agent-registry.js.map +1 -0
  155. package/dist/services/agent-session.d.ts +24 -0
  156. package/dist/services/agent-session.js +107 -0
  157. package/dist/services/agent-session.js.map +1 -0
  158. package/dist/services/agent-task-registry.d.ts +131 -0
  159. package/dist/services/agent-task-registry.js +491 -0
  160. package/dist/services/agent-task-registry.js.map +1 -0
  161. package/dist/services/chat.d.ts +94 -0
  162. package/dist/services/chat.js +241 -0
  163. package/dist/services/chat.js.map +1 -0
  164. package/dist/services/claude-code.d.ts +28 -0
  165. package/dist/services/claude-code.js +155 -0
  166. package/dist/services/claude-code.js.map +1 -0
  167. package/dist/services/codex.d.ts +27 -0
  168. package/dist/services/codex.js +231 -0
  169. package/dist/services/codex.js.map +1 -0
  170. package/dist/services/credentials.d.ts +11 -0
  171. package/dist/services/credentials.js +44 -0
  172. package/dist/services/credentials.js.map +1 -0
  173. package/dist/services/mcp-client.d.ts +38 -0
  174. package/dist/services/mcp-client.js +170 -0
  175. package/dist/services/mcp-client.js.map +1 -0
  176. package/dist/services/mcp-manager.d.ts +28 -0
  177. package/dist/services/mcp-manager.js +157 -0
  178. package/dist/services/mcp-manager.js.map +1 -0
  179. package/dist/services/model-strategy.d.ts +99 -0
  180. package/dist/services/model-strategy.js +182 -0
  181. package/dist/services/model-strategy.js.map +1 -0
  182. package/dist/services/opencode.d.ts +25 -0
  183. package/dist/services/opencode.js +161 -0
  184. package/dist/services/opencode.js.map +1 -0
  185. package/dist/services/poe-code.d.ts +7 -0
  186. package/dist/services/poe-code.js +5 -0
  187. package/dist/services/poe-code.js.map +1 -0
  188. package/dist/services/roo-code.d.ts +22 -0
  189. package/dist/services/roo-code.js +134 -0
  190. package/dist/services/roo-code.js.map +1 -0
  191. package/dist/services/service-install.d.ts +21 -0
  192. package/dist/services/service-install.js +47 -0
  193. package/dist/services/service-install.js.map +1 -0
  194. package/dist/services/service-manifest.d.ts +122 -0
  195. package/dist/services/service-manifest.js +368 -0
  196. package/dist/services/service-manifest.js.map +1 -0
  197. package/dist/services/task-logger.d.ts +24 -0
  198. package/dist/services/task-logger.js +73 -0
  199. package/dist/services/task-logger.js.map +1 -0
  200. package/dist/services/task-runner.d.ts +19 -0
  201. package/dist/services/task-runner.js +157 -0
  202. package/dist/services/task-runner.js.map +1 -0
  203. package/dist/services/tools.d.ts +76 -0
  204. package/dist/services/tools.js +870 -0
  205. package/dist/services/tools.js.map +1 -0
  206. package/dist/templates/claude-code/anthropic_key.sh.hbs +2 -0
  207. package/dist/templates/codex/config.toml.hbs +9 -0
  208. package/dist/templates/python/env.hbs +3 -0
  209. package/dist/templates/python/main.py.hbs +17 -0
  210. package/dist/templates/python/requirements.txt.hbs +2 -0
  211. package/dist/utils/backup.d.ts +5 -0
  212. package/dist/utils/backup.js +61 -0
  213. package/dist/utils/backup.js.map +1 -0
  214. package/dist/utils/command-line.d.ts +1 -0
  215. package/dist/utils/command-line.js +54 -0
  216. package/dist/utils/command-line.js.map +1 -0
  217. package/dist/utils/dry-run.d.ts +38 -0
  218. package/dist/utils/dry-run.js +211 -0
  219. package/dist/utils/dry-run.js.map +1 -0
  220. package/dist/utils/e2e-flags.d.ts +1 -0
  221. package/dist/utils/e2e-flags.js +9 -0
  222. package/dist/utils/e2e-flags.js.map +1 -0
  223. package/dist/utils/file-system.d.ts +21 -0
  224. package/dist/utils/file-system.js +2 -0
  225. package/dist/utils/file-system.js.map +1 -0
  226. package/dist/utils/json.d.ts +12 -0
  227. package/dist/utils/json.js +42 -0
  228. package/dist/utils/json.js.map +1 -0
  229. package/dist/utils/prerequisites.d.ts +41 -0
  230. package/dist/utils/prerequisites.js +92 -0
  231. package/dist/utils/prerequisites.js.map +1 -0
  232. package/dist/utils/templates.d.ts +4 -0
  233. package/dist/utils/templates.js +22 -0
  234. package/dist/utils/templates.js.map +1 -0
  235. package/dist/utils/toml.d.ts +8 -0
  236. package/dist/utils/toml.js +30 -0
  237. package/dist/utils/toml.js.map +1 -0
  238. package/dist/utils/worktree.d.ts +40 -0
  239. package/dist/utils/worktree.js +179 -0
  240. package/dist/utils/worktree.js.map +1 -0
  241. package/package.json +84 -0
  242. package/shared/conversation-layout.cjs +11 -0
  243. package/shared/conversation-layout.d.ts +7 -0
  244. package/shared/conversation-layout.js +11 -0
  245. package/shared/package.json +13 -0
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Simple terminal markdown renderer with ANSI escape codes
3
+ * Falls back to plaintext for unsupported features
4
+ */
5
+ interface RenderOptions {
6
+ /**
7
+ * Maximum width for wrapping text (0 = no wrapping)
8
+ */
9
+ maxWidth?: number;
10
+ /**
11
+ * Indent for nested content (lists, quotes, code blocks)
12
+ */
13
+ indent?: string;
14
+ }
15
+ /**
16
+ * Renders markdown text to terminal with ANSI formatting
17
+ */
18
+ export declare function renderMarkdown(markdown: string, options?: RenderOptions): string;
19
+ /**
20
+ * Strips all ANSI codes from a string (useful for testing or length calculation)
21
+ */
22
+ export declare function stripAnsi(text: string): string;
23
+ /**
24
+ * Simple markdown-to-plaintext converter (no formatting)
25
+ */
26
+ export declare function markdownToPlaintext(markdown: string): string;
27
+ export {};
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Simple terminal markdown renderer with ANSI escape codes
3
+ * Falls back to plaintext for unsupported features
4
+ */
5
+ // ANSI escape codes
6
+ const RESET = "\x1b[0m";
7
+ const BOLD = "\x1b[1m";
8
+ const DIM = "\x1b[2m";
9
+ const ITALIC = "\x1b[3m";
10
+ const UNDERLINE = "\x1b[4m";
11
+ // Colors
12
+ const RED = "\x1b[31m";
13
+ const GREEN = "\x1b[32m";
14
+ const YELLOW = "\x1b[33m";
15
+ const BLUE = "\x1b[34m";
16
+ const MAGENTA = "\x1b[35m";
17
+ const CYAN = "\x1b[36m";
18
+ const GRAY = "\x1b[90m";
19
+ // Background colors
20
+ const BG_BLACK = "\x1b[40m";
21
+ const BG_GRAY = "\x1b[100m";
22
+ /**
23
+ * Renders markdown text to terminal with ANSI formatting
24
+ */
25
+ export function renderMarkdown(markdown, options = {}) {
26
+ const { indent = "" } = options;
27
+ const lines = markdown.split("\n");
28
+ const output = [];
29
+ let inCodeBlock = false;
30
+ let codeBlockLang = "";
31
+ let inList = false;
32
+ let listIndent = 0;
33
+ for (let i = 0; i < lines.length; i++) {
34
+ const line = lines[i];
35
+ const trimmed = line.trim();
36
+ // Code blocks
37
+ if (trimmed.startsWith("```")) {
38
+ if (!inCodeBlock) {
39
+ // Start code block
40
+ inCodeBlock = true;
41
+ codeBlockLang = trimmed.slice(3).trim();
42
+ output.push(""); // Empty line before code block
43
+ continue;
44
+ }
45
+ else {
46
+ // End code block
47
+ inCodeBlock = false;
48
+ codeBlockLang = "";
49
+ output.push(""); // Empty line after code block
50
+ continue;
51
+ }
52
+ }
53
+ if (inCodeBlock) {
54
+ // Render code block line
55
+ output.push(indent + " " + GRAY + BG_GRAY + line + RESET);
56
+ continue;
57
+ }
58
+ // Headers (# ## ###)
59
+ const headerMatch = line.match(/^(#{1,6})\s+(.+)$/);
60
+ if (headerMatch) {
61
+ const level = headerMatch[1].length;
62
+ const text = headerMatch[2];
63
+ const color = level === 1 ? CYAN : level === 2 ? BLUE : MAGENTA;
64
+ output.push("");
65
+ output.push(indent + color + BOLD + text + RESET);
66
+ output.push("");
67
+ continue;
68
+ }
69
+ // Horizontal rule (---, ___, ***)
70
+ if (/^(\*{3,}|-{3,}|_{3,})$/.test(trimmed)) {
71
+ output.push(indent + GRAY + "─".repeat(40) + RESET);
72
+ continue;
73
+ }
74
+ // Lists (- item, * item, 1. item)
75
+ const listMatch = line.match(/^(\s*)([-*+]|\d+\.)\s+(.+)$/);
76
+ if (listMatch) {
77
+ const listIndentStr = listMatch[1];
78
+ const bullet = listMatch[2];
79
+ const content = listMatch[3];
80
+ const level = Math.floor(listIndentStr.length / 2);
81
+ const renderedBullet = bullet.match(/\d+\./) ? bullet : "•";
82
+ output.push(indent + " ".repeat(level) + YELLOW + renderedBullet + RESET + " " + renderInline(content));
83
+ inList = true;
84
+ listIndent = level;
85
+ continue;
86
+ }
87
+ else if (inList && trimmed === "") {
88
+ inList = false;
89
+ listIndent = 0;
90
+ }
91
+ // Blockquotes (> text)
92
+ if (trimmed.startsWith(">")) {
93
+ const quoteText = trimmed.slice(1).trim();
94
+ output.push(indent + GRAY + "│ " + RESET + DIM + renderInline(quoteText) + RESET);
95
+ continue;
96
+ }
97
+ // Empty lines
98
+ if (trimmed === "") {
99
+ output.push("");
100
+ continue;
101
+ }
102
+ // Regular paragraph text
103
+ output.push(indent + renderInline(line));
104
+ }
105
+ return output.join("\n");
106
+ }
107
+ /**
108
+ * Renders inline markdown formatting (bold, italic, code, links)
109
+ */
110
+ function renderInline(text) {
111
+ let result = text;
112
+ // Inline code (`code`)
113
+ result = result.replace(/`([^`]+)`/g, (_match, code) => {
114
+ return YELLOW + BG_BLACK + code + RESET;
115
+ });
116
+ // Bold (**text** or __text__)
117
+ result = result.replace(/\*\*([^*]+)\*\*/g, (_match, text) => {
118
+ return BOLD + text + RESET;
119
+ });
120
+ result = result.replace(/__([^_]+)__/g, (_match, text) => {
121
+ return BOLD + text + RESET;
122
+ });
123
+ // Italic (*text* or _text_) - must come after bold
124
+ result = result.replace(/\*([^*]+)\*/g, (_match, text) => {
125
+ return ITALIC + text + RESET;
126
+ });
127
+ result = result.replace(/_([^_]+)_/g, (_match, text) => {
128
+ return ITALIC + text + RESET;
129
+ });
130
+ // Strikethrough (~~text~~)
131
+ result = result.replace(/~~([^~]+)~~/g, (_match, text) => {
132
+ return DIM + text + RESET;
133
+ });
134
+ // Links ([text](url))
135
+ result = result.replace(/\[([^\]]+)\]\(([^)]+)\)/g, (_match, text, url) => {
136
+ return UNDERLINE + BLUE + text + RESET + GRAY + " (" + url + ")" + RESET;
137
+ });
138
+ // Bare URLs
139
+ result = result.replace(/(https?:\/\/[^\s]+)/g, (_match, url) => UNDERLINE + BLUE + url + RESET);
140
+ return result;
141
+ }
142
+ /**
143
+ * Strips all ANSI codes from a string (useful for testing or length calculation)
144
+ */
145
+ export function stripAnsi(text) {
146
+ // eslint-disable-next-line no-control-regex
147
+ return text.replace(/\x1b\[[0-9;]*m/g, "");
148
+ }
149
+ /**
150
+ * Simple markdown-to-plaintext converter (no formatting)
151
+ */
152
+ export function markdownToPlaintext(markdown) {
153
+ let result = markdown;
154
+ // Remove code blocks
155
+ result = result.replace(/```[\s\S]*?```/g, (match) => {
156
+ const lines = match.split("\n").slice(1, -1);
157
+ return lines.map((l) => " " + l).join("\n");
158
+ });
159
+ // Remove inline code backticks
160
+ result = result.replace(/`([^`]+)`/g, "$1");
161
+ // Remove bold/italic
162
+ result = result.replace(/\*\*([^*]+)\*\*/g, "$1");
163
+ result = result.replace(/__([^_]+)__/g, "$1");
164
+ result = result.replace(/\*([^*]+)\*/g, "$1");
165
+ result = result.replace(/_([^_]+)_/g, "$1");
166
+ // Remove strikethrough
167
+ result = result.replace(/~~([^~]+)~~/g, "$1");
168
+ // Convert links to text + URL
169
+ result = result.replace(/\[([^\]]+)\]\(([^)]+)\)/g, "$1 ($2)");
170
+ // Remove headers
171
+ result = result.replace(/^#{1,6}\s+/gm, "");
172
+ // Remove blockquotes
173
+ result = result.replace(/^>\s*/gm, "");
174
+ // Remove horizontal rules
175
+ result = result.replace(/^(\*{3,}|-{3,}|_{3,})$/gm, "---");
176
+ return result;
177
+ }
178
+ //# sourceMappingURL=markdown-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-renderer.js","sourceRoot":"","sources":["../../src/cli/markdown-renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,105 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { renderMarkdown, stripAnsi, markdownToPlaintext } from "./markdown-renderer.js";
3
+ describe("markdown-renderer", () => {
4
+ describe("renderMarkdown", () => {
5
+ it("should render headers with formatting", () => {
6
+ const input = "# Header 1\n## Header 2\n### Header 3";
7
+ const output = renderMarkdown(input);
8
+ expect(stripAnsi(output)).toContain("Header 1");
9
+ expect(stripAnsi(output)).toContain("Header 2");
10
+ expect(stripAnsi(output)).toContain("Header 3");
11
+ });
12
+ it("should render bold text", () => {
13
+ const input = "This is **bold** text";
14
+ const output = renderMarkdown(input);
15
+ expect(stripAnsi(output)).toBe("This is bold text");
16
+ expect(output).toContain("\x1b[1m"); // BOLD code
17
+ });
18
+ it("should render italic text", () => {
19
+ const input = "This is *italic* text";
20
+ const output = renderMarkdown(input);
21
+ expect(stripAnsi(output)).toBe("This is italic text");
22
+ expect(output).toContain("\x1b[3m"); // ITALIC code
23
+ });
24
+ it("should render inline code", () => {
25
+ const input = "Use `console.log()` for debugging";
26
+ const output = renderMarkdown(input);
27
+ expect(stripAnsi(output)).toBe("Use console.log() for debugging");
28
+ expect(output).toContain("\x1b[33m"); // YELLOW code
29
+ });
30
+ it("should render code blocks", () => {
31
+ const input = "```javascript\nconst x = 1;\n```";
32
+ const output = renderMarkdown(input);
33
+ expect(stripAnsi(output)).toContain("const x = 1;");
34
+ });
35
+ it("should render lists", () => {
36
+ const input = "- Item 1\n- Item 2\n- Item 3";
37
+ const output = renderMarkdown(input);
38
+ expect(stripAnsi(output)).toContain("Item 1");
39
+ expect(stripAnsi(output)).toContain("Item 2");
40
+ expect(stripAnsi(output)).toContain("Item 3");
41
+ });
42
+ it("should render numbered lists", () => {
43
+ const input = "1. First\n2. Second\n3. Third";
44
+ const output = renderMarkdown(input);
45
+ expect(stripAnsi(output)).toContain("First");
46
+ expect(stripAnsi(output)).toContain("Second");
47
+ expect(stripAnsi(output)).toContain("Third");
48
+ });
49
+ it("should render blockquotes", () => {
50
+ const input = "> This is a quote";
51
+ const output = renderMarkdown(input);
52
+ expect(stripAnsi(output)).toContain("This is a quote");
53
+ });
54
+ it("should render links", () => {
55
+ const input = "[Google](https://google.com)";
56
+ const output = renderMarkdown(input);
57
+ expect(stripAnsi(output)).toContain("Google");
58
+ expect(stripAnsi(output)).toContain("https://google.com");
59
+ });
60
+ it("should handle mixed formatting", () => {
61
+ const input = "This is **bold** and *italic* and `code`";
62
+ const output = renderMarkdown(input);
63
+ expect(stripAnsi(output)).toBe("This is bold and italic and code");
64
+ });
65
+ it("should preserve empty lines", () => {
66
+ const input = "Line 1\n\nLine 2";
67
+ const output = renderMarkdown(input);
68
+ expect(output.split("\n")).toHaveLength(3);
69
+ });
70
+ });
71
+ describe("stripAnsi", () => {
72
+ it("should remove all ANSI codes", () => {
73
+ const input = "\x1b[1mBold\x1b[0m \x1b[3mItalic\x1b[0m";
74
+ const output = stripAnsi(input);
75
+ expect(output).toBe("Bold Italic");
76
+ });
77
+ it("should handle text without ANSI codes", () => {
78
+ const input = "Plain text";
79
+ const output = stripAnsi(input);
80
+ expect(output).toBe("Plain text");
81
+ });
82
+ });
83
+ describe("markdownToPlaintext", () => {
84
+ it("should convert markdown to plain text", () => {
85
+ const input = "# Header\n\nThis is **bold** and *italic*";
86
+ const output = markdownToPlaintext(input);
87
+ expect(output).not.toContain("**");
88
+ expect(output).not.toContain("*");
89
+ expect(output).not.toContain("#");
90
+ });
91
+ it("should convert links to text with URL", () => {
92
+ const input = "[Google](https://google.com)";
93
+ const output = markdownToPlaintext(input);
94
+ expect(output).toContain("Google");
95
+ expect(output).toContain("https://google.com");
96
+ });
97
+ it("should handle code blocks", () => {
98
+ const input = "```\ncode\n```";
99
+ const output = markdownToPlaintext(input);
100
+ expect(output).toContain("code");
101
+ expect(output).not.toContain("```");
102
+ });
103
+ });
104
+ });
105
+ //# sourceMappingURL=markdown-renderer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-renderer.test.js","sourceRoot":"","sources":["../../src/cli/markdown-renderer.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { PromptDescriptor, PromptLibrary } from "./prompts.js";
2
+ import type { PromptFn } from "./types.js";
3
+ export interface ApiKeyStore {
4
+ read(): Promise<string | null>;
5
+ write(value: string): Promise<void>;
6
+ }
7
+ export interface EnsureOptionInput<TName extends string = string> {
8
+ value?: string;
9
+ fallback?: string;
10
+ descriptor: PromptDescriptor<TName>;
11
+ }
12
+ export interface ResolveApiKeyInput {
13
+ value?: string;
14
+ dryRun: boolean;
15
+ }
16
+ export interface OptionResolvers {
17
+ 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>;
21
+ resolveConfigName(value: string | undefined, defaultValue: string): Promise<string>;
22
+ resolveApiKey(input: ResolveApiKeyInput): Promise<string>;
23
+ normalizeApiKey(value: string): string;
24
+ }
25
+ export interface OptionResolverInit {
26
+ prompts: PromptFn;
27
+ promptLibrary: PromptLibrary;
28
+ apiKeyStore: ApiKeyStore;
29
+ }
30
+ export declare function createOptionResolvers(init: OptionResolverInit): OptionResolvers;
@@ -0,0 +1,84 @@
1
+ export function createOptionResolvers(init) {
2
+ const ensure = async (input) => {
3
+ if (input.value != null) {
4
+ return input.value;
5
+ }
6
+ if (input.fallback != null) {
7
+ return input.fallback;
8
+ }
9
+ const response = await init.prompts(input.descriptor);
10
+ const result = response[input.descriptor.name];
11
+ if (typeof result !== "string" || result.trim() === "") {
12
+ throw new Error(`Missing value for "${input.descriptor.name}".`);
13
+ }
14
+ return result;
15
+ };
16
+ const normalizeApiKey = (value) => {
17
+ const trimmed = value.trim();
18
+ if (trimmed.length === 0) {
19
+ throw new Error("POE API key cannot be empty.");
20
+ }
21
+ return trimmed;
22
+ };
23
+ const resolveApiKey = async (input) => {
24
+ if (input.value != null) {
25
+ const apiKey = normalizeApiKey(input.value);
26
+ if (!input.dryRun) {
27
+ await init.apiKeyStore.write(apiKey);
28
+ }
29
+ return apiKey;
30
+ }
31
+ const stored = await init.apiKeyStore.read();
32
+ if (stored) {
33
+ return normalizeApiKey(stored);
34
+ }
35
+ const descriptor = init.promptLibrary.apiKey();
36
+ const response = await init.prompts(descriptor);
37
+ const result = response[descriptor.name];
38
+ if (typeof result !== "string") {
39
+ throw new Error("POE API key is required.");
40
+ }
41
+ const apiKey = normalizeApiKey(result);
42
+ if (!input.dryRun) {
43
+ await init.apiKeyStore.write(apiKey);
44
+ }
45
+ return apiKey;
46
+ };
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) => {
53
+ if (value != null) {
54
+ return value;
55
+ }
56
+ const descriptor = init.promptLibrary.claudeModel();
57
+ const response = await init.prompts(descriptor);
58
+ const result = response[descriptor.name];
59
+ if (typeof result !== "string" || result.trim() === "") {
60
+ throw new Error(`Missing value for "${descriptor.name}".`);
61
+ }
62
+ return result;
63
+ };
64
+ const resolveReasoning = async (value, defaultValue) => await ensure({
65
+ value,
66
+ descriptor: init.promptLibrary.reasoningEffort(defaultValue),
67
+ fallback: defaultValue
68
+ });
69
+ const resolveConfigName = async (value, defaultValue) => await ensure({
70
+ value,
71
+ descriptor: init.promptLibrary.configName(defaultValue),
72
+ fallback: defaultValue
73
+ });
74
+ return {
75
+ ensure,
76
+ resolveModel,
77
+ resolveClaudeModel,
78
+ resolveReasoning,
79
+ resolveConfigName,
80
+ resolveApiKey,
81
+ normalizeApiKey
82
+ };
83
+ }
84
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Command } from "commander";
2
+ import { type CliDependencies } from "./container.js";
3
+ export declare function createProgram(dependencies: CliDependencies): Command;
4
+ export type { CliDependencies };
@@ -0,0 +1,64 @@
1
+ import { Command } from "commander";
2
+ import { createCliContainer } from "./container.js";
3
+ import { registerRootHandler } from "./commands/root.js";
4
+ import { registerInitCommand } from "./commands/init.js";
5
+ import { registerConfigureCommand } from "./commands/configure.js";
6
+ import { registerLoginCommand } from "./commands/login.js";
7
+ import { registerLogoutCommand } from "./commands/logout.js";
8
+ import { registerTestCommand } from "./commands/test.js";
9
+ import { registerQueryCommand } from "./commands/query.js";
10
+ import { registerAgentCommand } from "./commands/agent.js";
11
+ import { registerPrerequisitesCommand } from "./commands/prerequisites.js";
12
+ import { registerRemoveCommand } from "./commands/remove.js";
13
+ import { registerSpawnCommand } from "./commands/spawn.js";
14
+ import { registerSpawnWorktreeCommand } from "./commands/spawn-worktree.js";
15
+ import { registerInteractiveCommand } from "./commands/interactive.js";
16
+ export function createProgram(dependencies) {
17
+ const container = createCliContainer(dependencies);
18
+ const program = bootstrapProgram(container);
19
+ if (dependencies.exitOverride ?? true) {
20
+ applyExitOverride(program);
21
+ }
22
+ if (dependencies.suppressCommanderOutput) {
23
+ suppressCommanderOutput(program);
24
+ }
25
+ return program;
26
+ }
27
+ function bootstrapProgram(container) {
28
+ const program = new Command();
29
+ program
30
+ .name("poe-code")
31
+ .description("CLI tool to configure Poe API for developer workflows.")
32
+ .option("--dry-run", "Simulate commands without writing changes.")
33
+ .option("--verbose", "Enable verbose logging.");
34
+ registerRootHandler(program, container);
35
+ registerInitCommand(program, container);
36
+ registerConfigureCommand(program, container);
37
+ registerLoginCommand(program, container);
38
+ registerLogoutCommand(program, container);
39
+ registerTestCommand(program, container);
40
+ registerQueryCommand(program, container);
41
+ registerAgentCommand(program, container);
42
+ registerPrerequisitesCommand(program, container);
43
+ registerRemoveCommand(program, container);
44
+ registerSpawnCommand(program, container);
45
+ registerSpawnWorktreeCommand(program, container);
46
+ registerInteractiveCommand(program, container);
47
+ return program;
48
+ }
49
+ function applyExitOverride(command) {
50
+ command.exitOverride();
51
+ for (const child of command.commands) {
52
+ applyExitOverride(child);
53
+ }
54
+ }
55
+ function suppressCommanderOutput(command) {
56
+ command.configureOutput({
57
+ writeOut: () => { },
58
+ writeErr: () => { }
59
+ });
60
+ for (const child of command.commands) {
61
+ suppressCommanderOutput(child);
62
+ }
63
+ }
64
+ //# sourceMappingURL=program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export interface PromptDescriptor<TName extends string = string> {
2
+ readonly name: TName;
3
+ readonly message: string;
4
+ readonly type?: string;
5
+ readonly initial?: string | number;
6
+ readonly choices?: Array<{
7
+ title: string;
8
+ value: string;
9
+ }>;
10
+ }
11
+ export interface PromptLibrary {
12
+ apiKey(): PromptDescriptor<"apiKey">;
13
+ loginApiKey(): PromptDescriptor<"apiKey">;
14
+ model(defaultModel: string): PromptDescriptor<"model">;
15
+ claudeModel(): PromptDescriptor<"model">;
16
+ reasoningEffort(defaultValue: string): PromptDescriptor<"reasoningEffort">;
17
+ configName(defaultName: string): PromptDescriptor<"configName">;
18
+ serviceSelection(): PromptDescriptor<"serviceSelection"> & {
19
+ type: "number";
20
+ };
21
+ queryPrompt(): PromptDescriptor<"prompt">;
22
+ }
23
+ export declare function createPromptLibrary(): PromptLibrary;
@@ -0,0 +1,58 @@
1
+ export function createPromptLibrary() {
2
+ const describe = (descriptor) => descriptor;
3
+ return {
4
+ apiKey: () => describe({
5
+ name: "apiKey",
6
+ message: "POE API key",
7
+ type: "text"
8
+ }),
9
+ loginApiKey: () => describe({
10
+ name: "apiKey",
11
+ message: "Enter your Poe API key (get one at https://poe.com/api_key)",
12
+ type: "password"
13
+ }),
14
+ model: (defaultModel) => describe({
15
+ name: "model",
16
+ message: "Model",
17
+ type: "text",
18
+ initial: defaultModel
19
+ }),
20
+ claudeModel: () => describe({
21
+ name: "model",
22
+ message: "Default Model",
23
+ type: "select",
24
+ initial: 1,
25
+ choices: [
26
+ { title: "Claude-Haiku-4.5", value: "Claude-Haiku-4.5" },
27
+ { title: "Claude-Sonnet-4.5", value: "Claude-Sonnet-4.5" },
28
+ { title: "Claude-Opus-4.1", value: "Claude-Opus-4.1" }
29
+ ]
30
+ }),
31
+ reasoningEffort: (defaultValue) => describe({
32
+ name: "reasoningEffort",
33
+ message: "Reasoning effort",
34
+ type: "text",
35
+ initial: defaultValue
36
+ }),
37
+ configName: (defaultName) => describe({
38
+ name: "configName",
39
+ message: "Configuration name",
40
+ type: "text",
41
+ initial: defaultName
42
+ }),
43
+ serviceSelection: () => {
44
+ const descriptor = {
45
+ name: "serviceSelection",
46
+ message: "Enter number that you want to configure",
47
+ type: "number"
48
+ };
49
+ return descriptor;
50
+ },
51
+ queryPrompt: () => describe({
52
+ name: "prompt",
53
+ message: "Prompt",
54
+ type: "text"
55
+ })
56
+ };
57
+ }
58
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/cli/prompts.ts"],"names":[],"mappings":"AAqBA,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,CACf,UAAmC,EACV,EAAE,CAAC,UAAU,CAAC;IAEzC,OAAO;QACL,MAAM,EAAE,GAAG,EAAE,CACX,QAAQ,CAAC;YACP,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,aAAa;YACtB,IAAI,EAAE,MAAM;SACb,CAAC;QACJ,WAAW,EAAE,GAAG,EAAE,CAChB,QAAQ,CAAC;YACP,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,6DAA6D;YACtE,IAAI,EAAE,UAAU;SACjB,CAAC;QACJ,KAAK,EAAE,CAAC,YAAoB,EAAE,EAAE,CAC9B,QAAQ,CAAC;YACP,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,YAAY;SACtB,CAAC;QACJ,WAAW,EAAE,GAAG,EAAE,CAChB,QAAQ,CAAC;YACP,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,eAAe;YACxB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,CAAC;YACV,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;gBACxD,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;gBAC1D,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;aACvD;SACF,CAAC;QACJ,eAAe,EAAE,CAAC,YAAoB,EAAE,EAAE,CACxC,QAAQ,CAAC;YACP,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,kBAAkB;YAC3B,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,YAAY;SACtB,CAAC;QACJ,UAAU,EAAE,CAAC,WAAmB,EAAE,EAAE,CAClC,QAAQ,CAAC;YACP,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,oBAAoB;YAC7B,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,WAAW;SACrB,CAAC;QACJ,gBAAgB,EAAE,GAAG,EAAE;YACrB,MAAM,UAAU,GAEZ;gBACF,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,yCAAyC;gBAClD,IAAI,EAAE,QAAQ;aACf,CAAC;YACF,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,WAAW,EAAE,GAAG,EAAE,CAChB,QAAQ,CAAC;YACP,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,QAAQ;YACjB,IAAI,EAAE,MAAM;SACb,CAAC;KACL,CAAC;AACJ,CAAC"}