poe-code 3.0.29 → 3.0.31

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 (227) hide show
  1. package/README.md +2 -2
  2. package/dist/bin/poe-claude.js +23 -0
  3. package/dist/bin/poe-codex.js +23 -0
  4. package/dist/bin/poe-kimi-cli.js +23 -0
  5. package/dist/bin/poe-opencode.js +23 -0
  6. package/dist/bin.cjs +9 -0
  7. package/dist/cli/binary-aliases.d.ts +7 -0
  8. package/dist/cli/binary-aliases.js +26 -0
  9. package/dist/cli/binary-aliases.js.map +1 -0
  10. package/dist/cli/bootstrap.d.ts +4 -0
  11. package/dist/cli/bootstrap.js +78 -0
  12. package/dist/cli/bootstrap.js.map +1 -0
  13. package/dist/cli/command-not-found.d.ts +8 -0
  14. package/dist/cli/command-not-found.js +34 -0
  15. package/dist/cli/command-not-found.js.map +1 -0
  16. package/dist/cli/commands/configure-payload.d.ts +15 -0
  17. package/dist/cli/commands/configure-payload.js +31 -0
  18. package/dist/cli/commands/configure-payload.js.map +1 -0
  19. package/dist/cli/commands/configure.d.ts +12 -0
  20. package/dist/cli/commands/configure.js +151 -0
  21. package/dist/cli/commands/configure.js.map +1 -0
  22. package/dist/cli/commands/ensure-isolated-config.d.ts +12 -0
  23. package/dist/cli/commands/ensure-isolated-config.js +53 -0
  24. package/dist/cli/commands/ensure-isolated-config.js.map +1 -0
  25. package/dist/cli/commands/generate.d.ts +9 -0
  26. package/dist/cli/commands/generate.js +322 -0
  27. package/dist/cli/commands/generate.js.map +1 -0
  28. package/dist/cli/commands/install.d.ts +4 -0
  29. package/dist/cli/commands/install.js +40 -0
  30. package/dist/cli/commands/install.js.map +1 -0
  31. package/dist/cli/commands/login.d.ts +6 -0
  32. package/dist/cli/commands/login.js +105 -0
  33. package/dist/cli/commands/login.js.map +1 -0
  34. package/dist/cli/commands/mcp.d.ts +3 -0
  35. package/dist/cli/commands/mcp.js +178 -0
  36. package/dist/cli/commands/mcp.js.map +1 -0
  37. package/dist/cli/commands/models.d.ts +3 -0
  38. package/dist/cli/commands/models.js +183 -0
  39. package/dist/cli/commands/models.js.map +1 -0
  40. package/dist/cli/commands/ralph-worktree.d.ts +3 -0
  41. package/dist/cli/commands/ralph-worktree.js +73 -0
  42. package/dist/cli/commands/ralph-worktree.js.map +1 -0
  43. package/dist/cli/commands/ralph.d.ts +3 -0
  44. package/dist/cli/commands/ralph.js +424 -0
  45. package/dist/cli/commands/ralph.js.map +1 -0
  46. package/dist/cli/commands/shared.d.ts +29 -0
  47. package/dist/cli/commands/shared.js +82 -0
  48. package/dist/cli/commands/shared.js.map +1 -0
  49. package/dist/cli/commands/skill.d.ts +3 -0
  50. package/dist/cli/commands/skill.js +242 -0
  51. package/dist/cli/commands/skill.js.map +1 -0
  52. package/dist/cli/commands/spawn.d.ts +17 -0
  53. package/dist/cli/commands/spawn.js +226 -0
  54. package/dist/cli/commands/spawn.js.map +1 -0
  55. package/dist/cli/commands/test.d.ts +8 -0
  56. package/dist/cli/commands/test.js +124 -0
  57. package/dist/cli/commands/test.js.map +1 -0
  58. package/dist/cli/commands/unconfigure.d.ts +7 -0
  59. package/dist/cli/commands/unconfigure.js +116 -0
  60. package/dist/cli/commands/unconfigure.js.map +1 -0
  61. package/dist/cli/commands/usage.d.ts +3 -0
  62. package/dist/cli/commands/usage.js +186 -0
  63. package/dist/cli/commands/usage.js.map +1 -0
  64. package/dist/cli/commands/version.d.ts +3 -0
  65. package/dist/cli/commands/version.js +31 -0
  66. package/dist/cli/commands/version.js.map +1 -0
  67. package/dist/cli/commands/wrap.d.ts +3 -0
  68. package/dist/cli/commands/wrap.js +61 -0
  69. package/dist/cli/commands/wrap.js.map +1 -0
  70. package/dist/cli/constants.d.ts +24 -0
  71. package/dist/cli/constants.js +44 -0
  72. package/dist/cli/constants.js.map +1 -0
  73. package/dist/cli/container.d.ts +42 -0
  74. package/dist/cli/container.js +90 -0
  75. package/dist/cli/container.js.map +1 -0
  76. package/dist/cli/context.d.ts +33 -0
  77. package/dist/cli/context.js +91 -0
  78. package/dist/cli/context.js.map +1 -0
  79. package/dist/cli/environment.d.ts +21 -0
  80. package/dist/cli/environment.js +106 -0
  81. package/dist/cli/environment.js.map +1 -0
  82. package/dist/cli/error-logger.d.ts +62 -0
  83. package/dist/cli/error-logger.js +155 -0
  84. package/dist/cli/error-logger.js.map +1 -0
  85. package/dist/cli/errors.d.ts +95 -0
  86. package/dist/cli/errors.js +141 -0
  87. package/dist/cli/errors.js.map +1 -0
  88. package/dist/cli/exit-signals.d.ts +4 -0
  89. package/dist/cli/exit-signals.js +8 -0
  90. package/dist/cli/exit-signals.js.map +1 -0
  91. package/dist/cli/http.d.ts +12 -0
  92. package/dist/cli/http.js +2 -0
  93. package/dist/cli/http.js.map +1 -0
  94. package/dist/cli/isolated-env-runner.d.ts +10 -0
  95. package/dist/cli/isolated-env-runner.js +50 -0
  96. package/dist/cli/isolated-env-runner.js.map +1 -0
  97. package/dist/cli/isolated-env.d.ts +24 -0
  98. package/dist/cli/isolated-env.js +210 -0
  99. package/dist/cli/isolated-env.js.map +1 -0
  100. package/dist/cli/logger.d.ts +36 -0
  101. package/dist/cli/logger.js +191 -0
  102. package/dist/cli/logger.js.map +1 -0
  103. package/dist/cli/mcp-output-format.d.ts +2 -0
  104. package/dist/cli/mcp-output-format.js +27 -0
  105. package/dist/cli/mcp-output-format.js.map +1 -0
  106. package/dist/cli/mcp-server.d.ts +21 -0
  107. package/dist/cli/mcp-server.js +321 -0
  108. package/dist/cli/mcp-server.js.map +1 -0
  109. package/dist/cli/options.d.ts +45 -0
  110. package/dist/cli/options.js +111 -0
  111. package/dist/cli/options.js.map +1 -0
  112. package/dist/cli/poe-code-command-runner.d.ts +6 -0
  113. package/dist/cli/poe-code-command-runner.js +63 -0
  114. package/dist/cli/poe-code-command-runner.js.map +1 -0
  115. package/dist/cli/program.d.ts +4 -0
  116. package/dist/cli/program.js +249 -0
  117. package/dist/cli/program.js.map +1 -0
  118. package/dist/cli/prompt-runner.d.ts +10 -0
  119. package/dist/cli/prompt-runner.js +79 -0
  120. package/dist/cli/prompt-runner.js.map +1 -0
  121. package/dist/cli/prompts.d.ts +39 -0
  122. package/dist/cli/prompts.js +42 -0
  123. package/dist/cli/prompts.js.map +1 -0
  124. package/dist/cli/service-registry.d.ts +108 -0
  125. package/dist/cli/service-registry.js +83 -0
  126. package/dist/cli/service-registry.js.map +1 -0
  127. package/dist/cli/types.d.ts +2 -0
  128. package/dist/cli/types.js +2 -0
  129. package/dist/cli/types.js.map +1 -0
  130. package/dist/cli/ui/service-menu.d.ts +7 -0
  131. package/dist/cli/ui/service-menu.js +43 -0
  132. package/dist/cli/ui/service-menu.js.map +1 -0
  133. package/dist/index.d.ts +8 -0
  134. package/dist/index.js +36812 -0
  135. package/dist/index.js.map +7 -0
  136. package/dist/providers/claude-code.d.ts +13 -0
  137. package/dist/providers/claude-code.js +143 -0
  138. package/dist/providers/claude-code.js.map +1 -0
  139. package/dist/providers/codex.d.ts +17 -0
  140. package/dist/providers/codex.js +144 -0
  141. package/dist/providers/codex.js.map +1 -0
  142. package/dist/providers/create-provider.d.ts +29 -0
  143. package/dist/providers/create-provider.js +78 -0
  144. package/dist/providers/create-provider.js.map +1 -0
  145. package/dist/providers/index.d.ts +2 -0
  146. package/dist/providers/index.js +8 -0
  147. package/dist/providers/index.js.map +1 -0
  148. package/dist/providers/kimi.d.ts +4 -0
  149. package/dist/providers/kimi.js +123 -0
  150. package/dist/providers/kimi.js.map +1 -0
  151. package/dist/providers/opencode.d.ts +3 -0
  152. package/dist/providers/opencode.js +119 -0
  153. package/dist/providers/opencode.js.map +1 -0
  154. package/dist/providers/spawn-options.d.ts +13 -0
  155. package/dist/providers/spawn-options.js +2 -0
  156. package/dist/providers/spawn-options.js.map +1 -0
  157. package/dist/sdk/container.d.ts +18 -0
  158. package/dist/sdk/container.js +127 -0
  159. package/dist/sdk/container.js.map +1 -0
  160. package/dist/sdk/credentials.d.ts +9 -0
  161. package/dist/sdk/credentials.js +35 -0
  162. package/dist/sdk/credentials.js.map +1 -0
  163. package/dist/sdk/generate.d.ts +5 -0
  164. package/dist/sdk/generate.js +97 -0
  165. package/dist/sdk/generate.js.map +1 -0
  166. package/dist/sdk/spawn-core.d.ts +23 -0
  167. package/dist/sdk/spawn-core.js +105 -0
  168. package/dist/sdk/spawn-core.js.map +1 -0
  169. package/dist/sdk/spawn.d.ts +31 -0
  170. package/dist/sdk/spawn.js +109 -0
  171. package/dist/sdk/spawn.js.map +1 -0
  172. package/dist/sdk/types.d.ts +44 -0
  173. package/dist/sdk/types.js +2 -0
  174. package/dist/sdk/types.js.map +1 -0
  175. package/dist/services/client-instance.d.ts +12 -0
  176. package/dist/services/client-instance.js +36 -0
  177. package/dist/services/client-instance.js.map +1 -0
  178. package/dist/services/credentials.d.ts +24 -0
  179. package/dist/services/credentials.js +157 -0
  180. package/dist/services/credentials.js.map +1 -0
  181. package/dist/services/llm-client.d.ts +22 -0
  182. package/dist/services/llm-client.js +138 -0
  183. package/dist/services/llm-client.js.map +1 -0
  184. package/dist/services/media-download.d.ts +17 -0
  185. package/dist/services/media-download.js +42 -0
  186. package/dist/services/media-download.js.map +1 -0
  187. package/dist/services/model-strategy.d.ts +99 -0
  188. package/dist/services/model-strategy.js +187 -0
  189. package/dist/services/model-strategy.js.map +1 -0
  190. package/dist/services/mutation-events.d.ts +4 -0
  191. package/dist/services/mutation-events.js +53 -0
  192. package/dist/services/mutation-events.js.map +1 -0
  193. package/dist/services/service-install.d.ts +22 -0
  194. package/dist/services/service-install.js +70 -0
  195. package/dist/services/service-install.js.map +1 -0
  196. package/dist/services/version.d.ts +11 -0
  197. package/dist/services/version.js +28 -0
  198. package/dist/services/version.js.map +1 -0
  199. package/dist/tools/label-generator.d.ts +11 -0
  200. package/dist/tools/label-generator.js +78 -0
  201. package/dist/tools/label-generator.js.map +1 -0
  202. package/dist/utils/backup.d.ts +5 -0
  203. package/dist/utils/backup.js +56 -0
  204. package/dist/utils/backup.js.map +1 -0
  205. package/dist/utils/cli-settings-merge.d.ts +22 -0
  206. package/dist/utils/cli-settings-merge.js +56 -0
  207. package/dist/utils/cli-settings-merge.js.map +1 -0
  208. package/dist/utils/command-checks.d.ts +36 -0
  209. package/dist/utils/command-checks.js +120 -0
  210. package/dist/utils/command-checks.js.map +1 -0
  211. package/dist/utils/command-line.d.ts +1 -0
  212. package/dist/utils/command-line.js +54 -0
  213. package/dist/utils/command-line.js.map +1 -0
  214. package/dist/utils/dry-run.d.ts +39 -0
  215. package/dist/utils/dry-run.js +315 -0
  216. package/dist/utils/dry-run.js.map +1 -0
  217. package/dist/utils/execution-context.d.ts +48 -0
  218. package/dist/utils/execution-context.js +151 -0
  219. package/dist/utils/execution-context.js.map +1 -0
  220. package/dist/utils/file-system.d.ts +21 -0
  221. package/dist/utils/file-system.js +2 -0
  222. package/dist/utils/file-system.js.map +1 -0
  223. package/dist/utils/json.d.ts +12 -0
  224. package/dist/utils/json.js +45 -0
  225. package/dist/utils/json.js.map +1 -0
  226. package/package.json +5 -2
  227. package/packages/tiny-mcp-test-server/dist/index.js +47 -0
@@ -0,0 +1,191 @@
1
+ import { intro as designIntro, introPlain, log, note, outro, resolveOutputFormat } from "@poe-code/design-system";
2
+ import chalk from "chalk";
3
+ function wrapText(text, maxWidth) {
4
+ const words = text.split(" ");
5
+ const lines = [];
6
+ let currentLine = "";
7
+ for (const word of words) {
8
+ if (currentLine.length === 0) {
9
+ currentLine = word;
10
+ }
11
+ else if (currentLine.length + 1 + word.length <= maxWidth) {
12
+ currentLine += " " + word;
13
+ }
14
+ else {
15
+ lines.push(currentLine);
16
+ currentLine = word;
17
+ }
18
+ }
19
+ if (currentLine.length > 0) {
20
+ lines.push(currentLine);
21
+ }
22
+ return lines.join("\n");
23
+ }
24
+ export function createLoggerFactory(emitter, theme) {
25
+ let errorLogger;
26
+ const infoSymbol = chalk.magenta("●");
27
+ const successSymbol = chalk.magenta("◆");
28
+ const emit = (level, message) => {
29
+ if (emitter) {
30
+ emitter(message);
31
+ return;
32
+ }
33
+ if (resolveOutputFormat() !== "terminal") {
34
+ process.stdout.write(message + "\n");
35
+ return;
36
+ }
37
+ if (level === "success") {
38
+ log.message(message, { symbol: successSymbol });
39
+ return;
40
+ }
41
+ if (level === "warn") {
42
+ log.warn(message);
43
+ return;
44
+ }
45
+ if (level === "error") {
46
+ log.error(message);
47
+ return;
48
+ }
49
+ log.message(message, { symbol: infoSymbol });
50
+ };
51
+ const create = (context = {}) => {
52
+ const dryRun = context.dryRun ?? false;
53
+ const verbose = context.verbose ?? false;
54
+ const scope = context.scope;
55
+ const formatMessage = (message) => scope && verbose ? `[${scope}] ${message}` : message;
56
+ const scoped = {
57
+ context: { dryRun, verbose, scope: context.scope },
58
+ info(message) {
59
+ emit("info", formatMessage(message));
60
+ },
61
+ success(message) {
62
+ emit("success", message);
63
+ },
64
+ warn(message) {
65
+ emit("warn", formatMessage(message));
66
+ },
67
+ error(message) {
68
+ emit("error", formatMessage(message));
69
+ },
70
+ errorResolved(label, value) {
71
+ if (emitter) {
72
+ emitter(`${label}: ${value}`);
73
+ return;
74
+ }
75
+ if (resolveOutputFormat() !== "terminal") {
76
+ process.stdout.write(`${label}: ${value}\n`);
77
+ return;
78
+ }
79
+ const symbol = theme?.errorSymbol ?? chalk.red("■");
80
+ log.message(`${label}\n ${value}`, { symbol });
81
+ },
82
+ errorWithStack(error, errorContext) {
83
+ emit("error", formatMessage(error.message));
84
+ if (errorLogger) {
85
+ const fullContext = {
86
+ ...errorContext,
87
+ scope,
88
+ component: scope
89
+ };
90
+ errorLogger.logError(error, fullContext);
91
+ }
92
+ else {
93
+ // Fallback if error logger not available
94
+ console.error("Stack trace:", error.stack);
95
+ }
96
+ },
97
+ logException(error, operation, errorContext) {
98
+ emit("error", formatMessage(`Error during ${operation}: ${error.message}`));
99
+ if (errorLogger) {
100
+ const fullContext = {
101
+ ...errorContext,
102
+ operation,
103
+ scope,
104
+ component: scope
105
+ };
106
+ errorLogger.logErrorWithStackTrace(error, operation, fullContext);
107
+ }
108
+ else {
109
+ // Fallback if error logger not available
110
+ console.error("Stack trace:", error.stack);
111
+ }
112
+ },
113
+ dryRun(message) {
114
+ emit("info", formatMessage(message));
115
+ },
116
+ verbose(message) {
117
+ if (!verbose) {
118
+ return;
119
+ }
120
+ if (emitter) {
121
+ emitter(formatMessage(message));
122
+ return;
123
+ }
124
+ if (resolveOutputFormat() !== "terminal") {
125
+ process.stdout.write(formatMessage(message) + "\n");
126
+ return;
127
+ }
128
+ log.message(formatMessage(message), { symbol: chalk.gray("│") });
129
+ },
130
+ intro(title) {
131
+ if (emitter) {
132
+ emitter(title);
133
+ return;
134
+ }
135
+ if (theme?.intro) {
136
+ introPlain(theme.intro(title));
137
+ return;
138
+ }
139
+ designIntro(title);
140
+ },
141
+ resolved(label, value) {
142
+ if (emitter) {
143
+ emitter(`${label}: ${value}`);
144
+ return;
145
+ }
146
+ if (resolveOutputFormat() !== "terminal") {
147
+ process.stdout.write(`${label}: ${value}\n`);
148
+ return;
149
+ }
150
+ const symbol = theme?.resolvedSymbol ?? chalk.magenta("◇");
151
+ log.message(`${label}\n ${value}`, { symbol });
152
+ },
153
+ nextSteps(steps) {
154
+ if (steps.length === 0) {
155
+ return;
156
+ }
157
+ if (emitter) {
158
+ emitter(steps.join("\n"));
159
+ return;
160
+ }
161
+ const maxWidth = Math.min(process.stdout.columns || 80, 80) - 6;
162
+ const wrapped = steps.map((step) => wrapText(step, maxWidth)).join("\n");
163
+ note(wrapped, "Next steps.");
164
+ },
165
+ feedback(label, url) {
166
+ if (emitter) {
167
+ emitter(`${label} ${url}`);
168
+ return;
169
+ }
170
+ outro(chalk.dim(`${label} ${url}`));
171
+ },
172
+ child(next) {
173
+ return create({
174
+ dryRun: next.dryRun ?? dryRun,
175
+ verbose: next.verbose ?? verbose,
176
+ scope: next.scope ?? scope
177
+ });
178
+ }
179
+ };
180
+ return scoped;
181
+ };
182
+ return {
183
+ base: emitter ?? ((message) => log.message(message, { symbol: infoSymbol })),
184
+ errorLogger,
185
+ create,
186
+ setErrorLogger(logger) {
187
+ errorLogger = logger;
188
+ }
189
+ };
190
+ }
191
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/cli/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export type McpOutputFormat = "url" | "base64" | "markdown";
2
+ export declare function parseMcpOutputFormatPreferences(value: string | undefined): McpOutputFormat[];
@@ -0,0 +1,27 @@
1
+ import { ValidationError } from "./errors.js";
2
+ export function parseMcpOutputFormatPreferences(value) {
3
+ if (value === undefined) {
4
+ return ["url"];
5
+ }
6
+ const rawParts = value.split(",");
7
+ const preferences = [];
8
+ for (const raw of rawParts) {
9
+ const normalized = raw.trim().toLowerCase();
10
+ if (normalized.length === 0) {
11
+ throw new ValidationError(`Invalid --output-format: empty entry in "${value}". ` +
12
+ `Use "url", "base64", "markdown", or a comma-separated list like "base64,url".`);
13
+ }
14
+ if (normalized !== "url" &&
15
+ normalized !== "base64" &&
16
+ normalized !== "markdown") {
17
+ throw new ValidationError(`Invalid --output-format entry "${raw.trim()}". ` +
18
+ `Expected "url", "base64", or "markdown".`);
19
+ }
20
+ preferences.push(normalized);
21
+ }
22
+ if (preferences.includes("markdown") && preferences.length > 1) {
23
+ throw new ValidationError("markdown output format cannot be combined with other formats. Use markdown alone or choose a different format combination.");
24
+ }
25
+ return preferences;
26
+ }
27
+ //# sourceMappingURL=mcp-output-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-output-format.js","sourceRoot":"","sources":["../../src/cli/mcp-output-format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAI9C,MAAM,UAAU,+BAA+B,CAC7C,KAAyB;IAEzB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,WAAW,GAAsB,EAAE,CAAC;IAE1C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,eAAe,CACvB,4CAA4C,KAAK,KAAK;gBACpD,+EAA+E,CAClF,CAAC;QACJ,CAAC;QAED,IACE,UAAU,KAAK,KAAK;YACpB,UAAU,KAAK,QAAQ;YACvB,UAAU,KAAK,UAAU,EACzB,CAAC;YACD,MAAM,IAAI,eAAe,CACvB,kCAAkC,GAAG,CAAC,IAAI,EAAE,KAAK;gBAC/C,0CAA0C,CAC7C,CAAC;QACJ,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,UAA6B,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,eAAe,CACvB,4HAA4H,CAC7H,CAAC;IACJ,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -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, outputFormatPreferences?: McpOutputFormat[]): 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,321 @@
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, outputFormatPreferences = ["url"]) {
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,
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
+ function filenameFromUrlPathname(url, fallback) {
138
+ try {
139
+ const parsed = new URL(url);
140
+ if (parsed.pathname.endsWith("/")) {
141
+ return fallback;
142
+ }
143
+ const segments = parsed.pathname
144
+ .split("/")
145
+ .filter((segment) => segment.length > 0);
146
+ const last = segments.at(-1);
147
+ return last && last.length > 0 ? last : fallback;
148
+ }
149
+ catch {
150
+ return fallback;
151
+ }
152
+ }
153
+ async function toPreferredMediaContent(options) {
154
+ const content = [];
155
+ if (options.response.content) {
156
+ content.push({ type: "text", text: options.response.content });
157
+ }
158
+ const preferenceErrors = [];
159
+ for (const format of options.outputFormatPreferences) {
160
+ if (format === "markdown") {
161
+ if (!options.response.url) {
162
+ throw new Error(`markdown output requires a URL for ${options.mediaType}. Model response did not include a URL.`);
163
+ }
164
+ if (options.mediaType === "image") {
165
+ content.push({
166
+ type: "text",
167
+ text: `![Image](${options.response.url})`
168
+ });
169
+ return content;
170
+ }
171
+ const fallbackFilename = options.mediaType === "audio" ? "audio" : "video";
172
+ const filename = filenameFromUrlPathname(options.response.url, fallbackFilename);
173
+ content.push({
174
+ type: "text",
175
+ text: `[${filename}](${options.response.url})`
176
+ });
177
+ return content;
178
+ }
179
+ if (format === "url") {
180
+ if (options.response.url) {
181
+ content.push({ type: "text", text: options.response.url });
182
+ return content;
183
+ }
184
+ preferenceErrors.push("url output requires a URL");
185
+ continue;
186
+ }
187
+ if (format === "base64") {
188
+ const base64Block = await tryToBase64ContentBlock(options.mediaType, options.response);
189
+ if (base64Block) {
190
+ content.push(base64Block);
191
+ return content;
192
+ }
193
+ preferenceErrors.push(base64OutputRequirement(options.mediaType));
194
+ continue;
195
+ }
196
+ }
197
+ if (options.outputFormatPreferences.length === 1 &&
198
+ options.outputFormatPreferences[0] === "url") {
199
+ throw new Error(`Cannot produce url output for ${options.mediaType} from model "${options.model}": ` +
200
+ `response did not include a URL. ` +
201
+ `If the model returns base64 data, try "--output-format base64" or "--output-format base64,url".`);
202
+ }
203
+ throw new Error(`Cannot produce requested media output for ${options.mediaType} from model "${options.model}". ` +
204
+ `Preferences: ${options.outputFormatPreferences.join(",")}. ` +
205
+ `Available: ${describeMediaAvailability(options.mediaType, options.response)}. ` +
206
+ `Tried: ${preferenceErrors.join("; ")}.`);
207
+ }
208
+ function base64OutputRequirement(mediaType) {
209
+ if (mediaType === "video") {
210
+ return "base64 output is not supported for video";
211
+ }
212
+ return "base64 output requires base64 data or a convertible URL";
213
+ }
214
+ function describeMediaAvailability(mediaType, response) {
215
+ const parts = [];
216
+ if (typeof response.url === "string") {
217
+ parts.push("url: present");
218
+ }
219
+ else {
220
+ parts.push("url: missing");
221
+ }
222
+ if (typeof response.data === "string") {
223
+ parts.push("data: present");
224
+ if (typeof response.mimeType === "string") {
225
+ parts.push(`mimeType: ${response.mimeType}`);
226
+ }
227
+ else if (mediaType !== "video") {
228
+ parts.push("mimeType: missing");
229
+ }
230
+ }
231
+ else {
232
+ parts.push("data: missing");
233
+ }
234
+ if (typeof response.content === "string" && response.content.trim().length > 0) {
235
+ parts.push("content: present");
236
+ }
237
+ return parts.join(", ");
238
+ }
239
+ async function tryToBase64ContentBlock(mediaType, response) {
240
+ if (mediaType === "video") {
241
+ return undefined;
242
+ }
243
+ if (typeof response.data === "string") {
244
+ try {
245
+ if (typeof response.mimeType === "string") {
246
+ return mediaType === "image"
247
+ ? Image.fromBase64(response.data, response.mimeType).toContentBlock()
248
+ : Audio.fromBase64(response.data, response.mimeType).toContentBlock();
249
+ }
250
+ const decoded = Buffer.from(response.data, "base64");
251
+ const bytes = new Uint8Array(decoded);
252
+ return mediaType === "image"
253
+ ? Image.fromBytes(bytes).toContentBlock()
254
+ : Audio.fromBytes(bytes).toContentBlock();
255
+ }
256
+ catch {
257
+ // fall through to URL conversion if available
258
+ }
259
+ }
260
+ if (typeof response.url === "string") {
261
+ try {
262
+ return mediaType === "image"
263
+ ? (await Image.fromUrl(response.url)).toContentBlock()
264
+ : (await Audio.fromUrl(response.url)).toContentBlock();
265
+ }
266
+ catch {
267
+ return undefined;
268
+ }
269
+ }
270
+ return undefined;
271
+ }
272
+ function normalizeParams(params) {
273
+ if (!params)
274
+ return undefined;
275
+ const result = {};
276
+ for (const [key, value] of Object.entries(params)) {
277
+ if (typeof value === "string") {
278
+ result[key] = value;
279
+ }
280
+ }
281
+ return Object.keys(result).length > 0 ? result : undefined;
282
+ }
283
+ export function createMcpServer(outputFormatPreferences = ["url"]) {
284
+ return createServer({
285
+ name: "poe-code",
286
+ version: "1.0.0"
287
+ })
288
+ .tool("generate_text", "Generate text using a Poe bot", generateTextSchema, async (args) => {
289
+ return generateText({
290
+ bot_name: args.bot_name,
291
+ message: args.message,
292
+ params: normalizeParams(args.params)
293
+ });
294
+ })
295
+ .tool("generate_image", "Generate an image using a Poe image model", generateImageSchema, async (args) => {
296
+ return generateImage({
297
+ prompt: args.prompt,
298
+ bot_name: args.bot_name,
299
+ params: normalizeParams(args.params)
300
+ }, outputFormatPreferences);
301
+ })
302
+ .tool("generate_video", "Generate a video using a Poe video model", generateVideoSchema, async (args) => {
303
+ return generateVideo({
304
+ prompt: args.prompt,
305
+ bot_name: args.bot_name,
306
+ params: normalizeParams(args.params)
307
+ }, outputFormatPreferences);
308
+ })
309
+ .tool("generate_audio", "Convert text to audio using a Poe audio model", generateAudioSchema, async (args) => {
310
+ return generateAudio({
311
+ prompt: args.prompt,
312
+ bot_name: args.bot_name,
313
+ params: normalizeParams(args.params)
314
+ }, outputFormatPreferences);
315
+ });
316
+ }
317
+ export async function runMcpServerWithTransport(outputFormatPreferences = ["url"]) {
318
+ const server = createMcpServer(outputFormatPreferences);
319
+ await server.listen();
320
+ }
321
+ //# 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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"}
@@ -0,0 +1,45 @@
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 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
+ }
32
+ export interface OptionResolvers {
33
+ ensure<TName extends string>(input: EnsureOptionInput<TName>): Promise<string>;
34
+ resolveModel(input: ResolveModelInput): Promise<string>;
35
+ resolveReasoning(input: ResolveReasoningInput): Promise<string>;
36
+ resolveConfigName(value: string | undefined, defaultValue: string): Promise<string>;
37
+ resolveApiKey(input: ResolveApiKeyInput): Promise<string>;
38
+ normalizeApiKey(value: string): string;
39
+ }
40
+ export interface OptionResolverInit {
41
+ prompts: PromptFn;
42
+ promptLibrary: PromptLibrary;
43
+ apiKeyStore: ApiKeyStore;
44
+ }
45
+ export declare function createOptionResolvers(init: OptionResolverInit): OptionResolvers;