poe-code 2.0.59 → 2.0.61
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.
- package/dist/cli/commands/generate.d.ts +9 -0
- package/dist/cli/commands/generate.js +320 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +9 -0
- package/dist/cli/commands/mcp.js +132 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/constants.d.ts +4 -1
- package/dist/cli/constants.js +4 -1
- package/dist/cli/constants.js.map +1 -1
- package/dist/cli/container.js +2 -1
- package/dist/cli/container.js.map +1 -1
- package/dist/cli/http.d.ts +1 -0
- package/dist/cli/mcp-server.d.ts +34 -0
- package/dist/cli/mcp-server.js +239 -0
- package/dist/cli/mcp-server.js.map +1 -0
- package/dist/cli/program.js +9 -4
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/prompts.d.ts +0 -1
- package/dist/cli/prompts.js +1 -6
- package/dist/cli/prompts.js.map +1 -1
- package/dist/cli/service-registry.d.ts +10 -0
- package/dist/cli/service-registry.js.map +1 -1
- package/dist/cli/ui/clack-static.d.ts +51 -0
- package/dist/cli/ui/clack-static.js +59 -0
- package/dist/cli/ui/clack-static.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/claude-code.js +4 -0
- package/dist/providers/claude-code.js.map +1 -1
- package/dist/providers/codex.js +5 -0
- package/dist/providers/codex.js.map +1 -1
- package/dist/providers/create-provider.d.ts +3 -1
- package/dist/providers/create-provider.js +6 -0
- package/dist/providers/create-provider.js.map +1 -1
- package/dist/providers/kimi.js +4 -0
- package/dist/providers/kimi.js.map +1 -1
- package/dist/providers/mcp-config.d.ts +35 -0
- package/dist/providers/mcp-config.js +135 -0
- package/dist/providers/mcp-config.js.map +1 -0
- package/dist/providers/opencode.js +11 -0
- package/dist/providers/opencode.js.map +1 -1
- package/dist/sdk/generate.d.ts +5 -0
- package/dist/sdk/generate.js +94 -0
- package/dist/sdk/generate.js.map +1 -0
- package/dist/sdk/types.d.ts +14 -0
- package/dist/services/client-instance.d.ts +12 -0
- package/dist/services/client-instance.js +36 -0
- package/dist/services/client-instance.js.map +1 -0
- package/dist/services/llm-client.d.ts +21 -0
- package/dist/services/llm-client.js +131 -0
- package/dist/services/llm-client.js.map +1 -0
- package/dist/services/media-download.d.ts +17 -0
- package/dist/services/media-download.js +42 -0
- package/dist/services/media-download.js.map +1 -0
- package/dist/utils/execution-context.d.ts +40 -0
- package/dist/utils/execution-context.js +128 -0
- package/dist/utils/execution-context.js.map +1 -0
- package/package.json +13 -3
- package/dist/cli/commands/query.d.ts +0 -6
- package/dist/cli/commands/query.js +0 -76
- package/dist/cli/commands/query.js.map +0 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
import type { CliContainer } from "../container.js";
|
|
3
|
+
export interface GenerateCommandOptions {
|
|
4
|
+
model?: string;
|
|
5
|
+
param?: string[] | string;
|
|
6
|
+
output?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function registerGenerateCommand(program: Command, container: CliContainer): void;
|
|
9
|
+
export declare function parseParams(params: string[]): Record<string, string>;
|
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { intro, outro, spinner } from "@clack/prompts";
|
|
3
|
+
import { DEFAULT_TEXT_MODEL, DEFAULT_IMAGE_BOT, DEFAULT_AUDIO_BOT, DEFAULT_VIDEO_BOT } from "../constants.js";
|
|
4
|
+
import { createExecutionResources, resolveCommandFlags } from "./shared.js";
|
|
5
|
+
import { createCliDesignLanguage } from "../ui/design-language.js";
|
|
6
|
+
import { getGlobalClient, initializeClient } from "../../services/client-instance.js";
|
|
7
|
+
import { downloadToFile, MediaDownloadError } from "../../services/media-download.js";
|
|
8
|
+
import { ValidationError } from "../errors.js";
|
|
9
|
+
const MODEL_ENV_KEYS = {
|
|
10
|
+
text: "POE_TEXT_MODEL",
|
|
11
|
+
image: "POE_IMAGE_MODEL",
|
|
12
|
+
video: "POE_VIDEO_MODEL",
|
|
13
|
+
audio: "POE_AUDIO_MODEL"
|
|
14
|
+
};
|
|
15
|
+
const DEFAULT_MODELS = {
|
|
16
|
+
text: DEFAULT_TEXT_MODEL,
|
|
17
|
+
image: DEFAULT_IMAGE_BOT,
|
|
18
|
+
video: DEFAULT_VIDEO_BOT,
|
|
19
|
+
audio: DEFAULT_AUDIO_BOT
|
|
20
|
+
};
|
|
21
|
+
export function registerGenerateCommand(program, container) {
|
|
22
|
+
const generate = program
|
|
23
|
+
.command("generate")
|
|
24
|
+
.description("Generate content via Poe API")
|
|
25
|
+
.option("--model <model>", `Model identifier (default: ${DEFAULT_TEXT_MODEL})`)
|
|
26
|
+
.option("--param <key=value>", "Additional parameters (repeatable)", collectParam, [])
|
|
27
|
+
.option("-o, --output <path>", "Output file path (media only)")
|
|
28
|
+
.argument("[prompt]", "Generation prompt (for text without subcommand)")
|
|
29
|
+
.action(async function (promptArg) {
|
|
30
|
+
const flags = resolveCommandFlags(program);
|
|
31
|
+
const resources = createExecutionResources(container, flags, "generate");
|
|
32
|
+
const design = createCliDesignLanguage(container.env);
|
|
33
|
+
const prompt = ensurePrompt(promptArg, { type: "text", isDefault: true });
|
|
34
|
+
const opts = resolveGenerateOptions(this);
|
|
35
|
+
const params = parseParams(normalizeParamList(opts.param));
|
|
36
|
+
const model = resolveModel("text", opts, container.env.variables);
|
|
37
|
+
if (flags.dryRun) {
|
|
38
|
+
resources.logger.dryRun(`Dry run: would generate text with model ${model} and prompt (${prompt.length} chars)`);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
intro(design.text.intro("generate"));
|
|
42
|
+
const client = await resolveClient(container);
|
|
43
|
+
const response = await withSpinner({
|
|
44
|
+
message: `Generating with ${model}...`,
|
|
45
|
+
fn: () => client.text({ model, prompt, params }),
|
|
46
|
+
stopMessage: () => model,
|
|
47
|
+
subtext: (r) => r.content
|
|
48
|
+
});
|
|
49
|
+
if (!response.content) {
|
|
50
|
+
throw new ValidationError("No response from LLM");
|
|
51
|
+
}
|
|
52
|
+
outro();
|
|
53
|
+
});
|
|
54
|
+
generate
|
|
55
|
+
.command("text")
|
|
56
|
+
.description(`Generate text (default model: ${DEFAULT_TEXT_MODEL})`)
|
|
57
|
+
.option("--model <model>", `Model identifier (default: ${DEFAULT_TEXT_MODEL})`)
|
|
58
|
+
.option("--param <key=value>", "Additional parameters (repeatable)", collectParam, [])
|
|
59
|
+
.argument("[prompt]", "Generation prompt")
|
|
60
|
+
.action(async function (promptArg) {
|
|
61
|
+
const flags = resolveCommandFlags(program);
|
|
62
|
+
const resources = createExecutionResources(container, flags, "generate");
|
|
63
|
+
const design = createCliDesignLanguage(container.env);
|
|
64
|
+
const prompt = ensurePrompt(promptArg, { type: "text", isDefault: false });
|
|
65
|
+
const opts = resolveGenerateOptions(this);
|
|
66
|
+
const params = parseParams(normalizeParamList(opts.param));
|
|
67
|
+
const model = resolveModel("text", opts, container.env.variables);
|
|
68
|
+
if (flags.dryRun) {
|
|
69
|
+
resources.logger.dryRun(`Dry run: would generate text with model ${model} and prompt (${prompt.length} chars)`);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
intro(design.text.intro("generate text"));
|
|
73
|
+
const client = await resolveClient(container);
|
|
74
|
+
const response = await withSpinner({
|
|
75
|
+
message: `Generating with ${model}...`,
|
|
76
|
+
fn: () => client.text({ model, prompt, params }),
|
|
77
|
+
stopMessage: () => model,
|
|
78
|
+
subtext: (r) => r.content
|
|
79
|
+
});
|
|
80
|
+
if (!response.content) {
|
|
81
|
+
throw new ValidationError("No response from LLM");
|
|
82
|
+
}
|
|
83
|
+
outro();
|
|
84
|
+
});
|
|
85
|
+
registerMediaSubcommand(generate, program, container, "image");
|
|
86
|
+
registerMediaSubcommand(generate, program, container, "video");
|
|
87
|
+
registerMediaSubcommand(generate, program, container, "audio");
|
|
88
|
+
}
|
|
89
|
+
function registerMediaSubcommand(generate, program, container, type) {
|
|
90
|
+
const defaultModel = DEFAULT_MODELS[type];
|
|
91
|
+
generate
|
|
92
|
+
.command(type)
|
|
93
|
+
.description(`Generate ${type} (default model: ${defaultModel})`)
|
|
94
|
+
.option("--model <model>", `Model identifier (default: ${defaultModel})`)
|
|
95
|
+
.option("--param <key=value>", "Additional parameters (repeatable)", collectParam, [])
|
|
96
|
+
.option("-o, --output <path>", "Output file path")
|
|
97
|
+
.argument("[prompt]", "Generation prompt")
|
|
98
|
+
.action(async function (promptArg) {
|
|
99
|
+
const flags = resolveCommandFlags(program);
|
|
100
|
+
const resources = createExecutionResources(container, flags, "generate");
|
|
101
|
+
const design = createCliDesignLanguage(container.env);
|
|
102
|
+
const prompt = ensurePrompt(promptArg, { type, isDefault: false });
|
|
103
|
+
const opts = resolveGenerateOptions(this);
|
|
104
|
+
const params = parseParams(normalizeParamList(opts.param));
|
|
105
|
+
const model = resolveModel(type, opts, container.env.variables);
|
|
106
|
+
if (flags.dryRun) {
|
|
107
|
+
resources.logger.dryRun(`Dry run: would generate ${type} with model ${model} and prompt (${prompt.length} chars)`);
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
intro(design.text.intro(`generate ${type}`));
|
|
111
|
+
const client = await resolveClient(container);
|
|
112
|
+
const saved = await withSpinner({
|
|
113
|
+
message: `Generating ${type} with ${model}...`,
|
|
114
|
+
fn: async () => {
|
|
115
|
+
const response = await client.media(type, { model, prompt, params });
|
|
116
|
+
if (!response.url) {
|
|
117
|
+
throw new ValidationError(buildMissingMediaMessage(type, model, response.content));
|
|
118
|
+
}
|
|
119
|
+
const mimeType = response.mimeType ?? getDefaultMimeType(type);
|
|
120
|
+
const filename = opts.output ?? generateFilename(type, mimeType);
|
|
121
|
+
const resolved = resolveOutputPath(filename, container.env.cwd);
|
|
122
|
+
try {
|
|
123
|
+
await downloadToFile({
|
|
124
|
+
url: response.url,
|
|
125
|
+
outputPath: resolved.path,
|
|
126
|
+
fs: container.fs
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
if (error instanceof MediaDownloadError) {
|
|
131
|
+
if (error.kind === "write") {
|
|
132
|
+
throw new ValidationError(`Cannot write to "${resolved.label}". Check the path exists and is writable.`);
|
|
133
|
+
}
|
|
134
|
+
throw new ValidationError(`Failed to download ${type} from URL.\nThe file may no longer be available or the URL may have expired.`);
|
|
135
|
+
}
|
|
136
|
+
throw error;
|
|
137
|
+
}
|
|
138
|
+
return resolved;
|
|
139
|
+
},
|
|
140
|
+
stopMessage: () => `Generated ${type}`
|
|
141
|
+
});
|
|
142
|
+
outro(`Saved ${saved.label}`);
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
export function parseParams(params) {
|
|
146
|
+
const result = {};
|
|
147
|
+
for (const param of params) {
|
|
148
|
+
const eqIndex = param.indexOf("=");
|
|
149
|
+
if (eqIndex === -1) {
|
|
150
|
+
throw new ValidationError(`Invalid param format: "${param}". Expected key=value`);
|
|
151
|
+
}
|
|
152
|
+
const key = param.slice(0, eqIndex);
|
|
153
|
+
const value = param.slice(eqIndex + 1);
|
|
154
|
+
result[key] = value;
|
|
155
|
+
}
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
function normalizeParamList(value) {
|
|
159
|
+
if (Array.isArray(value)) {
|
|
160
|
+
return value;
|
|
161
|
+
}
|
|
162
|
+
if (typeof value === "string") {
|
|
163
|
+
return [value];
|
|
164
|
+
}
|
|
165
|
+
return [];
|
|
166
|
+
}
|
|
167
|
+
function resolveGenerateOptions(command) {
|
|
168
|
+
const current = command.opts();
|
|
169
|
+
const parent = command.parent?.opts() ?? {};
|
|
170
|
+
return {
|
|
171
|
+
model: current.model ?? parent.model,
|
|
172
|
+
param: mergeParamValues(current.param, parent.param),
|
|
173
|
+
output: current.output ?? parent.output
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
function mergeParamValues(current, parent) {
|
|
177
|
+
const currentList = normalizeParamList(current);
|
|
178
|
+
const parentList = normalizeParamList(parent);
|
|
179
|
+
if (currentList.length === 0 && parentList.length === 0) {
|
|
180
|
+
return undefined;
|
|
181
|
+
}
|
|
182
|
+
return [...parentList, ...currentList];
|
|
183
|
+
}
|
|
184
|
+
function collectParam(value, previous) {
|
|
185
|
+
const list = Array.isArray(previous) ? [...previous] : [];
|
|
186
|
+
list.push(value);
|
|
187
|
+
return list;
|
|
188
|
+
}
|
|
189
|
+
async function withSpinner(options) {
|
|
190
|
+
const { message, fn, stopMessage, subtext } = options;
|
|
191
|
+
const noSpinner = process.env.POE_NO_SPINNER === "1";
|
|
192
|
+
const isTTY = process.stdout.isTTY;
|
|
193
|
+
if (noSpinner || !isTTY) {
|
|
194
|
+
const result = await fn();
|
|
195
|
+
const msg = stopMessage ? stopMessage(result) : undefined;
|
|
196
|
+
if (msg) {
|
|
197
|
+
process.stdout.write(`\x1b[32m◆\x1b[0m ${msg}\n`);
|
|
198
|
+
}
|
|
199
|
+
const sub = subtext ? subtext(result) : undefined;
|
|
200
|
+
if (sub) {
|
|
201
|
+
const lines = sub.split("\n");
|
|
202
|
+
for (const line of lines) {
|
|
203
|
+
process.stdout.write(`\x1b[90m│\x1b[0m ${line}\n`);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return result;
|
|
207
|
+
}
|
|
208
|
+
const s = spinner();
|
|
209
|
+
s.start(message);
|
|
210
|
+
try {
|
|
211
|
+
const result = await fn();
|
|
212
|
+
const msg = stopMessage ? stopMessage(result) : undefined;
|
|
213
|
+
s.stop(msg);
|
|
214
|
+
const sub = subtext ? subtext(result) : undefined;
|
|
215
|
+
if (sub) {
|
|
216
|
+
const lines = sub.split("\n");
|
|
217
|
+
for (const line of lines) {
|
|
218
|
+
process.stdout.write(`\x1b[90m│\x1b[0m ${line}\n`);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return result;
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
s.stop("", 1);
|
|
225
|
+
throw error;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
async function resolveClient(container) {
|
|
229
|
+
try {
|
|
230
|
+
return getGlobalClient();
|
|
231
|
+
}
|
|
232
|
+
catch {
|
|
233
|
+
const apiBaseUrl = resolveApiBaseUrl(container);
|
|
234
|
+
await initializeClient({
|
|
235
|
+
fs: container.fs,
|
|
236
|
+
credentialsPath: container.env.credentialsPath,
|
|
237
|
+
baseUrl: apiBaseUrl,
|
|
238
|
+
httpClient: container.httpClient
|
|
239
|
+
});
|
|
240
|
+
return getGlobalClient();
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
function resolveApiBaseUrl(container) {
|
|
244
|
+
const override = container.env.getVariable("POE_API_BASE_URL");
|
|
245
|
+
if (override && override.trim().length > 0) {
|
|
246
|
+
return override.trim();
|
|
247
|
+
}
|
|
248
|
+
return container.env.poeApiBaseUrl;
|
|
249
|
+
}
|
|
250
|
+
function resolveModel(type, options, variables) {
|
|
251
|
+
const envKey = MODEL_ENV_KEYS[type];
|
|
252
|
+
const envModel = normalizeEnvModel(variables ? variables[envKey] : undefined);
|
|
253
|
+
return options.model ?? envModel ?? DEFAULT_MODELS[type];
|
|
254
|
+
}
|
|
255
|
+
function normalizeEnvModel(value) {
|
|
256
|
+
if (typeof value !== "string") {
|
|
257
|
+
return undefined;
|
|
258
|
+
}
|
|
259
|
+
const trimmed = value.trim();
|
|
260
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
261
|
+
}
|
|
262
|
+
function buildMissingMediaMessage(type, model, responseContent) {
|
|
263
|
+
const article = type === "video" ? "a" : "an";
|
|
264
|
+
const base = (`The model "${model}" did not return ${article} ${type}.` +
|
|
265
|
+
`\nThis model may not support ${type} generation. Try using a different model with --model.`);
|
|
266
|
+
const trimmed = responseContent?.trim();
|
|
267
|
+
if (trimmed && trimmed.length > 0) {
|
|
268
|
+
return `${base}\nResponse: ${trimmed}`;
|
|
269
|
+
}
|
|
270
|
+
return base;
|
|
271
|
+
}
|
|
272
|
+
function ensurePrompt(prompt, options) {
|
|
273
|
+
if (prompt && prompt.length > 0) {
|
|
274
|
+
return prompt;
|
|
275
|
+
}
|
|
276
|
+
const usage = options.isDefault
|
|
277
|
+
? "poe-code generate \"your prompt\""
|
|
278
|
+
: `poe-code generate ${options.type} "your prompt"`;
|
|
279
|
+
throw new ValidationError(`No prompt provided. Usage: ${usage}`);
|
|
280
|
+
}
|
|
281
|
+
function generateFilename(type, mimeType) {
|
|
282
|
+
const timestamp = Date.now();
|
|
283
|
+
const ext = mimeTypeToExt(mimeType);
|
|
284
|
+
return `${type}-${timestamp}.${ext}`;
|
|
285
|
+
}
|
|
286
|
+
function mimeTypeToExt(mimeType) {
|
|
287
|
+
const known = {
|
|
288
|
+
"image/png": "png",
|
|
289
|
+
"video/mp4": "mp4",
|
|
290
|
+
"audio/mp3": "mp3",
|
|
291
|
+
"audio/mpeg": "mp3"
|
|
292
|
+
};
|
|
293
|
+
const mapped = known[mimeType];
|
|
294
|
+
if (mapped) {
|
|
295
|
+
return mapped;
|
|
296
|
+
}
|
|
297
|
+
const slashIndex = mimeType.indexOf("/");
|
|
298
|
+
if (slashIndex === -1 || slashIndex === mimeType.length - 1) {
|
|
299
|
+
return "bin";
|
|
300
|
+
}
|
|
301
|
+
return mimeType.slice(slashIndex + 1);
|
|
302
|
+
}
|
|
303
|
+
function getDefaultMimeType(type) {
|
|
304
|
+
const defaults = {
|
|
305
|
+
image: "image/png",
|
|
306
|
+
video: "video/mp4",
|
|
307
|
+
audio: "audio/mp3"
|
|
308
|
+
};
|
|
309
|
+
return defaults[type];
|
|
310
|
+
}
|
|
311
|
+
function resolveOutputPath(filename, cwd) {
|
|
312
|
+
if (path.isAbsolute(filename)) {
|
|
313
|
+
return { path: filename, label: filename };
|
|
314
|
+
}
|
|
315
|
+
return {
|
|
316
|
+
path: path.join(cwd, filename),
|
|
317
|
+
label: `./${filename}`
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
import type { CliContainer } from "../container.js";
|
|
3
|
+
export declare const MCP_SERVER_CONFIG: {
|
|
4
|
+
readonly "poe-code": {
|
|
5
|
+
readonly command: "npx";
|
|
6
|
+
readonly args: readonly ["--yes", "poe-code", "mcp"];
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
export declare function registerMcpCommand(program: Command, container: CliContainer): void;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { select, isCancel, cancel } from "@clack/prompts";
|
|
2
|
+
import { loadCredentials } from "../../services/credentials.js";
|
|
3
|
+
import { initializeClient } from "../../services/client-instance.js";
|
|
4
|
+
import { runMcpServerWithTransport, formatMcpToolsDocs } from "../mcp-server.js";
|
|
5
|
+
import { createExecutionResources, resolveCommandFlags } from "./shared.js";
|
|
6
|
+
export const MCP_SERVER_CONFIG = {
|
|
7
|
+
"poe-code": {
|
|
8
|
+
command: "npx",
|
|
9
|
+
args: ["--yes", "poe-code", "mcp"]
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
const MCP_PROVIDERS = ["claude-code", "codex", "kimi", "opencode"];
|
|
13
|
+
const DEFAULT_MCP_PROVIDER = "claude-code";
|
|
14
|
+
function buildHelpText() {
|
|
15
|
+
const lines = [
|
|
16
|
+
"",
|
|
17
|
+
"Configuration:",
|
|
18
|
+
JSON.stringify(MCP_SERVER_CONFIG, null, 2),
|
|
19
|
+
"",
|
|
20
|
+
formatMcpToolsDocs()
|
|
21
|
+
];
|
|
22
|
+
return lines.join("\n");
|
|
23
|
+
}
|
|
24
|
+
export function registerMcpCommand(program, container) {
|
|
25
|
+
const mcp = program
|
|
26
|
+
.command("mcp")
|
|
27
|
+
.description("Run MCP server on stdin/stdout")
|
|
28
|
+
.addHelpText("after", buildHelpText())
|
|
29
|
+
.action(async function () {
|
|
30
|
+
await runMcpServer(container);
|
|
31
|
+
});
|
|
32
|
+
mcp
|
|
33
|
+
.command("configure [provider]")
|
|
34
|
+
.description("Configure MCP client to use poe-code")
|
|
35
|
+
.option("-y, --yes", "Skip prompt, use claude-code")
|
|
36
|
+
.action(async (providerArg, options) => {
|
|
37
|
+
const flags = resolveCommandFlags(program);
|
|
38
|
+
const resources = createExecutionResources(container, flags, "mcp");
|
|
39
|
+
let provider = providerArg;
|
|
40
|
+
if (!provider) {
|
|
41
|
+
if (options.yes) {
|
|
42
|
+
provider = DEFAULT_MCP_PROVIDER;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
const selected = await select({
|
|
46
|
+
message: "Select MCP provider to configure:",
|
|
47
|
+
options: MCP_PROVIDERS.map((p) => ({ value: p, label: p }))
|
|
48
|
+
});
|
|
49
|
+
if (isCancel(selected)) {
|
|
50
|
+
cancel("Operation cancelled");
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
provider = selected;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
resources.logger.intro(`mcp configure ${provider}`);
|
|
57
|
+
const service = container.registry.get(provider);
|
|
58
|
+
if (!service) {
|
|
59
|
+
resources.logger.error(`Unknown provider: ${provider}`);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (!service.mcpConfigure) {
|
|
63
|
+
resources.logger.error(`Provider "${provider}" does not support MCP configuration`);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
const commandContext = container.contextFactory.create({
|
|
67
|
+
dryRun: flags.dryRun,
|
|
68
|
+
logger: resources.logger,
|
|
69
|
+
runner: container.commandRunner
|
|
70
|
+
});
|
|
71
|
+
await service.mcpConfigure({
|
|
72
|
+
env: container.env,
|
|
73
|
+
command: commandContext,
|
|
74
|
+
logger: resources.logger
|
|
75
|
+
}, { dryRun: flags.dryRun });
|
|
76
|
+
resources.context.complete({
|
|
77
|
+
success: `Configured MCP for ${provider}.`,
|
|
78
|
+
dry: `Would configure MCP for ${provider}.`
|
|
79
|
+
});
|
|
80
|
+
resources.context.finalize();
|
|
81
|
+
});
|
|
82
|
+
mcp
|
|
83
|
+
.command("unconfigure <provider>")
|
|
84
|
+
.description("Remove poe-code from MCP client")
|
|
85
|
+
.action(async (provider) => {
|
|
86
|
+
const flags = resolveCommandFlags(program);
|
|
87
|
+
const resources = createExecutionResources(container, flags, "mcp");
|
|
88
|
+
resources.logger.intro(`mcp unconfigure ${provider}`);
|
|
89
|
+
const service = container.registry.get(provider);
|
|
90
|
+
if (!service) {
|
|
91
|
+
resources.logger.error(`Unknown provider: ${provider}`);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (!service.mcpUnconfigure) {
|
|
95
|
+
resources.logger.error(`Provider "${provider}" does not support MCP unconfiguration`);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const commandContext = container.contextFactory.create({
|
|
99
|
+
dryRun: flags.dryRun,
|
|
100
|
+
logger: resources.logger,
|
|
101
|
+
runner: container.commandRunner
|
|
102
|
+
});
|
|
103
|
+
await service.mcpUnconfigure({
|
|
104
|
+
env: container.env,
|
|
105
|
+
command: commandContext,
|
|
106
|
+
logger: resources.logger
|
|
107
|
+
}, { dryRun: flags.dryRun });
|
|
108
|
+
resources.context.complete({
|
|
109
|
+
success: `Removed MCP configuration from ${provider}.`,
|
|
110
|
+
dry: `Would remove MCP configuration from ${provider}.`
|
|
111
|
+
});
|
|
112
|
+
resources.context.finalize();
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
async function runMcpServer(container) {
|
|
116
|
+
const apiKey = await loadCredentials({
|
|
117
|
+
fs: container.fs,
|
|
118
|
+
filePath: container.env.credentialsPath
|
|
119
|
+
});
|
|
120
|
+
if (!apiKey) {
|
|
121
|
+
process.stderr.write("No credentials found. Run 'poe-code login' first.\n");
|
|
122
|
+
process.exit(1);
|
|
123
|
+
}
|
|
124
|
+
await initializeClient({
|
|
125
|
+
fs: container.fs,
|
|
126
|
+
credentialsPath: container.env.credentialsPath,
|
|
127
|
+
baseUrl: container.env.poeApiBaseUrl,
|
|
128
|
+
httpClient: container.httpClient
|
|
129
|
+
});
|
|
130
|
+
await runMcpServerWithTransport();
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/constants.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
export declare const FRONTIER_MODELS: readonly ["Claude-Opus-4.5", "Claude-Sonnet-4.5", "gpt-5.2", "Gemini-3-Pro"];
|
|
2
2
|
export declare const DEFAULT_FRONTIER_MODEL = "Claude-Sonnet-4.5";
|
|
3
|
+
export declare const DEFAULT_TEXT_MODEL = "Claude-Sonnet-4.5";
|
|
4
|
+
export declare const DEFAULT_IMAGE_BOT = "nano-banana-pro";
|
|
5
|
+
export declare const DEFAULT_AUDIO_BOT = "ElevenLabs-2.5";
|
|
6
|
+
export declare const DEFAULT_VIDEO_BOT = "veo-3.1";
|
|
3
7
|
export declare const CLAUDE_CODE_VARIANTS: {
|
|
4
8
|
readonly haiku: "Claude-Haiku-4.5";
|
|
5
9
|
readonly sonnet: "Claude-Sonnet-4.5";
|
|
@@ -11,6 +15,5 @@ export declare const DEFAULT_CODEX_MODEL: "GPT-5.2-codex";
|
|
|
11
15
|
export declare const KIMI_MODELS: readonly ["Kimi-K2-Thinking"];
|
|
12
16
|
export declare const DEFAULT_KIMI_MODEL: "Kimi-K2-Thinking";
|
|
13
17
|
export declare const DEFAULT_REASONING = "medium";
|
|
14
|
-
export declare const DEFAULT_QUERY_MODEL: "Claude-Opus-4.5";
|
|
15
18
|
export declare const PROVIDER_NAME = "poe";
|
|
16
19
|
export declare const FEEDBACK_URL = "https://github.com/poe-platform/poe-code/issues";
|
package/dist/cli/constants.js
CHANGED
|
@@ -5,6 +5,10 @@ export const FRONTIER_MODELS = [
|
|
|
5
5
|
"Gemini-3-Pro"
|
|
6
6
|
];
|
|
7
7
|
export const DEFAULT_FRONTIER_MODEL = "Claude-Sonnet-4.5";
|
|
8
|
+
export const DEFAULT_TEXT_MODEL = "Claude-Sonnet-4.5";
|
|
9
|
+
export const DEFAULT_IMAGE_BOT = "nano-banana-pro";
|
|
10
|
+
export const DEFAULT_AUDIO_BOT = "ElevenLabs-2.5";
|
|
11
|
+
export const DEFAULT_VIDEO_BOT = "veo-3.1";
|
|
8
12
|
export const CLAUDE_CODE_VARIANTS = {
|
|
9
13
|
haiku: "Claude-Haiku-4.5",
|
|
10
14
|
sonnet: "Claude-Sonnet-4.5",
|
|
@@ -25,7 +29,6 @@ export const KIMI_MODELS = [
|
|
|
25
29
|
];
|
|
26
30
|
export const DEFAULT_KIMI_MODEL = KIMI_MODELS[0];
|
|
27
31
|
export const DEFAULT_REASONING = "medium";
|
|
28
|
-
export const DEFAULT_QUERY_MODEL = FRONTIER_MODELS[0];
|
|
29
32
|
export const PROVIDER_NAME = "poe";
|
|
30
33
|
export const FEEDBACK_URL = "https://github.com/poe-platform/poe-code/issues";
|
|
31
34
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/cli/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,iBAAiB;IACjB,mBAAmB;IACnB,SAAS;IACT,cAAc;CACN,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAC;AAE1D,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAE,kBAAkB;IACzB,MAAM,EAAE,mBAAmB;IAC3B,IAAI,EAAE,iBAAiB;CACf,CAAC;AAEX,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAAoB,CAAC,IAAI,CAAC;AAEnE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,eAAe;IACf,SAAS;IACT,cAAc;IACd,aAAa;IACb,SAAS;IACT,oBAAoB;CACZ,CAAC;AACX,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAEnD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,kBAAkB;CACV,CAAC;AACX,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAEjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAC1C,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/cli/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,iBAAiB;IACjB,mBAAmB;IACnB,SAAS;IACT,cAAc;CACN,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAC;AAE1D,MAAM,CAAC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AACtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AACnD,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAE3C,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAE,kBAAkB;IACzB,MAAM,EAAE,mBAAmB;IAC3B,IAAI,EAAE,iBAAiB;CACf,CAAC;AAEX,MAAM,CAAC,MAAM,yBAAyB,GAAG,oBAAoB,CAAC,IAAI,CAAC;AAEnE,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,eAAe;IACf,SAAS;IACT,cAAc;IACd,aAAa;IACb,SAAS;IACT,oBAAoB;CACZ,CAAC;AACX,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAEnD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,kBAAkB;CACV,CAAC;AACX,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;AAEjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAC1C,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC;AACnC,MAAM,CAAC,MAAM,YAAY,GAAG,iDAAiD,CAAC"}
|
package/dist/cli/container.js
CHANGED
|
@@ -40,7 +40,8 @@ export function createCliContainer(dependencies) {
|
|
|
40
40
|
return {
|
|
41
41
|
ok: response.ok,
|
|
42
42
|
status: response.status,
|
|
43
|
-
json: () => response.json()
|
|
43
|
+
json: () => response.json(),
|
|
44
|
+
text: () => response.text()
|
|
44
45
|
};
|
|
45
46
|
});
|
|
46
47
|
const commandRunner = dependencies.commandRunner ?? createDefaultCommandRunner();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/cli/container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,SAAS,CAAC;AAEtC,OAAO,EACL,eAAe,EACf,eAAe,EAChB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EACL,qBAAqB,EAEtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,2BAA2B,EAE5B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EACL,qBAAqB,EAEtB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,mBAAmB,EAEpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAkC1E,MAAM,UAAU,kBAAkB,CAChC,YAA6B;IAE7B,MAAM,WAAW,GAAG,oBAAoB,CAAC;QACvC,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG;QACzB,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,OAAO;QACjC,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,QAAQ;QACnC,SAAS,EAAE,YAAY,CAAC,GAAG,CAAC,SAAS;KACtC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,mBAAmB,CAAC,YAAY,CAAC,MAAM,EAAE;QAC7D,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK;QAC9B,cAAc,EAAE,SAAS,CAAC,OAAO,CAAC,cAAc;KACjD,CAAC,CAAC;IAEH,wDAAwD;IACxD,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC;QAClC,EAAE,EAAE,UAAiB;QACrB,MAAM,EAAE,WAAW,CAAC,MAAM;QAC1B,WAAW,EAAE,IAAI;KAClB,CAAC,CAAC;IAEH,wCAAwC;IACxC,aAAa,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAE1C,MAAM,cAAc,GAAG,2BAA2B,CAAC;QACjD,EAAE,EAAE,YAAY,CAAC,EAAE;KACpB,CAAC,CAAC;IAEH,MAAM,UAAU,GACd,YAAY,CAAC,UAAU;QACvB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACnB,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACnD,OAAO;gBACL,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE;aAC5B,CAAC;QACJ,CAAC,CAAC,CAAC;IAEL,MAAM,aAAa,GACjB,YAAY,CAAC,aAAa,IAAI,0BAA0B,EAAE,CAAC;IAE7D,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAC;IAE5C,MAAM,OAAO,GAAG,qBAAqB,CAAC;QACpC,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,aAAa;QACb,WAAW,EAAE;YACX,IAAI,EAAE,GAAG,EAAE,CACT,eAAe,CAAC;gBACd,EAAE,EAAE,YAAY,CAAC,EAAE;gBACnB,QAAQ,EAAE,WAAW,CAAC,eAAe;aACtC,CAAC;YACJ,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,eAAe,CAAC;gBACd,EAAE,EAAE,YAAY,CAAC,EAAE;gBACnB,QAAQ,EAAE,WAAW,CAAC,eAAe;gBACrC,MAAM,EAAE,KAAK;aACd,CAAC;SACL;KACF,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IAEzC,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC,MAAM,CAC5C,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAC/B,CAAC;IACF,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;QAChC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,SAAS,GAAiB,IAA+B,CAAC;IAC9D,MAAM,aAAa,GAAG,0BAA0B,CAAC;QAC/C,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS;QAC7B,UAAU,EAAE,aAAa;KAC1B,CAAC,CAAC;IAEH,SAAS,GAAG;QACV,GAAG,EAAE,WAAW;QAChB,EAAE,EAAE,YAAY,CAAC,EAAE;QACnB,OAAO,EAAE,YAAY,CAAC,OAAO;QAC7B,aAAa;QACb,aAAa;QACb,WAAW;QACX,OAAO;QACP,cAAc;QACd,QAAQ;QACR,UAAU;QACV,aAAa,EAAE,aAAa;QAC5B,SAAS;QACT,YAAY;KACb,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/cli/container.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/http.d.ts
CHANGED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
export declare function formatMcpToolsDocs(): string;
|
|
3
|
+
interface McpTextContent {
|
|
4
|
+
type: "text";
|
|
5
|
+
text: string;
|
|
6
|
+
}
|
|
7
|
+
interface McpResourceContent {
|
|
8
|
+
type: "resource";
|
|
9
|
+
resource: {
|
|
10
|
+
uri: string;
|
|
11
|
+
mimeType?: string;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
type McpContent = McpTextContent | McpResourceContent;
|
|
15
|
+
interface McpToolResult {
|
|
16
|
+
content: McpContent[];
|
|
17
|
+
}
|
|
18
|
+
interface GenerateTextArgs {
|
|
19
|
+
bot_name: string;
|
|
20
|
+
message: string;
|
|
21
|
+
params?: Record<string, string>;
|
|
22
|
+
}
|
|
23
|
+
interface GenerateMediaArgs {
|
|
24
|
+
prompt: string;
|
|
25
|
+
bot_name?: string;
|
|
26
|
+
params?: Record<string, string>;
|
|
27
|
+
}
|
|
28
|
+
export declare function generateText(args: GenerateTextArgs): Promise<McpToolResult>;
|
|
29
|
+
export declare function generateImage(args: GenerateMediaArgs): Promise<McpToolResult>;
|
|
30
|
+
export declare function generateVideo(args: GenerateMediaArgs): Promise<McpToolResult>;
|
|
31
|
+
export declare function generateAudio(args: GenerateMediaArgs): Promise<McpToolResult>;
|
|
32
|
+
export declare function createMcpServer(): McpServer;
|
|
33
|
+
export declare function runMcpServerWithTransport(): Promise<void>;
|
|
34
|
+
export {};
|