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.
- package/README.md +2 -2
- package/dist/bin/poe-claude.js +23 -0
- package/dist/bin/poe-codex.js +23 -0
- package/dist/bin/poe-kimi-cli.js +23 -0
- package/dist/bin/poe-opencode.js +23 -0
- package/dist/bin.cjs +9 -0
- package/dist/cli/binary-aliases.d.ts +7 -0
- package/dist/cli/binary-aliases.js +26 -0
- package/dist/cli/binary-aliases.js.map +1 -0
- package/dist/cli/bootstrap.d.ts +4 -0
- package/dist/cli/bootstrap.js +78 -0
- package/dist/cli/bootstrap.js.map +1 -0
- package/dist/cli/command-not-found.d.ts +8 -0
- package/dist/cli/command-not-found.js +34 -0
- package/dist/cli/command-not-found.js.map +1 -0
- package/dist/cli/commands/configure-payload.d.ts +15 -0
- package/dist/cli/commands/configure-payload.js +31 -0
- package/dist/cli/commands/configure-payload.js.map +1 -0
- package/dist/cli/commands/configure.d.ts +12 -0
- package/dist/cli/commands/configure.js +151 -0
- package/dist/cli/commands/configure.js.map +1 -0
- package/dist/cli/commands/ensure-isolated-config.d.ts +12 -0
- package/dist/cli/commands/ensure-isolated-config.js +53 -0
- package/dist/cli/commands/ensure-isolated-config.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +9 -0
- package/dist/cli/commands/generate.js +322 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/install.d.ts +4 -0
- package/dist/cli/commands/install.js +40 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/login.d.ts +6 -0
- package/dist/cli/commands/login.js +105 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +3 -0
- package/dist/cli/commands/mcp.js +178 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/models.d.ts +3 -0
- package/dist/cli/commands/models.js +183 -0
- package/dist/cli/commands/models.js.map +1 -0
- package/dist/cli/commands/ralph-worktree.d.ts +3 -0
- package/dist/cli/commands/ralph-worktree.js +73 -0
- package/dist/cli/commands/ralph-worktree.js.map +1 -0
- package/dist/cli/commands/ralph.d.ts +3 -0
- package/dist/cli/commands/ralph.js +424 -0
- package/dist/cli/commands/ralph.js.map +1 -0
- package/dist/cli/commands/shared.d.ts +29 -0
- package/dist/cli/commands/shared.js +82 -0
- package/dist/cli/commands/shared.js.map +1 -0
- package/dist/cli/commands/skill.d.ts +3 -0
- package/dist/cli/commands/skill.js +242 -0
- package/dist/cli/commands/skill.js.map +1 -0
- package/dist/cli/commands/spawn.d.ts +17 -0
- package/dist/cli/commands/spawn.js +226 -0
- package/dist/cli/commands/spawn.js.map +1 -0
- package/dist/cli/commands/test.d.ts +8 -0
- package/dist/cli/commands/test.js +124 -0
- package/dist/cli/commands/test.js.map +1 -0
- package/dist/cli/commands/unconfigure.d.ts +7 -0
- package/dist/cli/commands/unconfigure.js +116 -0
- package/dist/cli/commands/unconfigure.js.map +1 -0
- package/dist/cli/commands/usage.d.ts +3 -0
- package/dist/cli/commands/usage.js +186 -0
- package/dist/cli/commands/usage.js.map +1 -0
- package/dist/cli/commands/version.d.ts +3 -0
- package/dist/cli/commands/version.js +31 -0
- package/dist/cli/commands/version.js.map +1 -0
- package/dist/cli/commands/wrap.d.ts +3 -0
- package/dist/cli/commands/wrap.js +61 -0
- package/dist/cli/commands/wrap.js.map +1 -0
- package/dist/cli/constants.d.ts +24 -0
- package/dist/cli/constants.js +44 -0
- package/dist/cli/constants.js.map +1 -0
- package/dist/cli/container.d.ts +42 -0
- package/dist/cli/container.js +90 -0
- package/dist/cli/container.js.map +1 -0
- package/dist/cli/context.d.ts +33 -0
- package/dist/cli/context.js +91 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/environment.d.ts +21 -0
- package/dist/cli/environment.js +106 -0
- package/dist/cli/environment.js.map +1 -0
- package/dist/cli/error-logger.d.ts +62 -0
- package/dist/cli/error-logger.js +155 -0
- package/dist/cli/error-logger.js.map +1 -0
- package/dist/cli/errors.d.ts +95 -0
- package/dist/cli/errors.js +141 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/exit-signals.d.ts +4 -0
- package/dist/cli/exit-signals.js +8 -0
- package/dist/cli/exit-signals.js.map +1 -0
- package/dist/cli/http.d.ts +12 -0
- package/dist/cli/http.js +2 -0
- package/dist/cli/http.js.map +1 -0
- package/dist/cli/isolated-env-runner.d.ts +10 -0
- package/dist/cli/isolated-env-runner.js +50 -0
- package/dist/cli/isolated-env-runner.js.map +1 -0
- package/dist/cli/isolated-env.d.ts +24 -0
- package/dist/cli/isolated-env.js +210 -0
- package/dist/cli/isolated-env.js.map +1 -0
- package/dist/cli/logger.d.ts +36 -0
- package/dist/cli/logger.js +191 -0
- package/dist/cli/logger.js.map +1 -0
- package/dist/cli/mcp-output-format.d.ts +2 -0
- package/dist/cli/mcp-output-format.js +27 -0
- package/dist/cli/mcp-output-format.js.map +1 -0
- package/dist/cli/mcp-server.d.ts +21 -0
- package/dist/cli/mcp-server.js +321 -0
- package/dist/cli/mcp-server.js.map +1 -0
- package/dist/cli/options.d.ts +45 -0
- package/dist/cli/options.js +111 -0
- package/dist/cli/options.js.map +1 -0
- package/dist/cli/poe-code-command-runner.d.ts +6 -0
- package/dist/cli/poe-code-command-runner.js +63 -0
- package/dist/cli/poe-code-command-runner.js.map +1 -0
- package/dist/cli/program.d.ts +4 -0
- package/dist/cli/program.js +249 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/prompt-runner.d.ts +10 -0
- package/dist/cli/prompt-runner.js +79 -0
- package/dist/cli/prompt-runner.js.map +1 -0
- package/dist/cli/prompts.d.ts +39 -0
- package/dist/cli/prompts.js +42 -0
- package/dist/cli/prompts.js.map +1 -0
- package/dist/cli/service-registry.d.ts +108 -0
- package/dist/cli/service-registry.js +83 -0
- package/dist/cli/service-registry.js.map +1 -0
- package/dist/cli/types.d.ts +2 -0
- package/dist/cli/types.js +2 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/ui/service-menu.d.ts +7 -0
- package/dist/cli/ui/service-menu.js +43 -0
- package/dist/cli/ui/service-menu.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +36812 -0
- package/dist/index.js.map +7 -0
- package/dist/providers/claude-code.d.ts +13 -0
- package/dist/providers/claude-code.js +143 -0
- package/dist/providers/claude-code.js.map +1 -0
- package/dist/providers/codex.d.ts +17 -0
- package/dist/providers/codex.js +144 -0
- package/dist/providers/codex.js.map +1 -0
- package/dist/providers/create-provider.d.ts +29 -0
- package/dist/providers/create-provider.js +78 -0
- package/dist/providers/create-provider.js.map +1 -0
- package/dist/providers/index.d.ts +2 -0
- package/dist/providers/index.js +8 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/kimi.d.ts +4 -0
- package/dist/providers/kimi.js +123 -0
- package/dist/providers/kimi.js.map +1 -0
- package/dist/providers/opencode.d.ts +3 -0
- package/dist/providers/opencode.js +119 -0
- package/dist/providers/opencode.js.map +1 -0
- package/dist/providers/spawn-options.d.ts +13 -0
- package/dist/providers/spawn-options.js +2 -0
- package/dist/providers/spawn-options.js.map +1 -0
- package/dist/sdk/container.d.ts +18 -0
- package/dist/sdk/container.js +127 -0
- package/dist/sdk/container.js.map +1 -0
- package/dist/sdk/credentials.d.ts +9 -0
- package/dist/sdk/credentials.js +35 -0
- package/dist/sdk/credentials.js.map +1 -0
- package/dist/sdk/generate.d.ts +5 -0
- package/dist/sdk/generate.js +97 -0
- package/dist/sdk/generate.js.map +1 -0
- package/dist/sdk/spawn-core.d.ts +23 -0
- package/dist/sdk/spawn-core.js +105 -0
- package/dist/sdk/spawn-core.js.map +1 -0
- package/dist/sdk/spawn.d.ts +31 -0
- package/dist/sdk/spawn.js +109 -0
- package/dist/sdk/spawn.js.map +1 -0
- package/dist/sdk/types.d.ts +44 -0
- package/dist/sdk/types.js +2 -0
- package/dist/sdk/types.js.map +1 -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/credentials.d.ts +24 -0
- package/dist/services/credentials.js +157 -0
- package/dist/services/credentials.js.map +1 -0
- package/dist/services/llm-client.d.ts +22 -0
- package/dist/services/llm-client.js +138 -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/services/model-strategy.d.ts +99 -0
- package/dist/services/model-strategy.js +187 -0
- package/dist/services/model-strategy.js.map +1 -0
- package/dist/services/mutation-events.d.ts +4 -0
- package/dist/services/mutation-events.js +53 -0
- package/dist/services/mutation-events.js.map +1 -0
- package/dist/services/service-install.d.ts +22 -0
- package/dist/services/service-install.js +70 -0
- package/dist/services/service-install.js.map +1 -0
- package/dist/services/version.d.ts +11 -0
- package/dist/services/version.js +28 -0
- package/dist/services/version.js.map +1 -0
- package/dist/tools/label-generator.d.ts +11 -0
- package/dist/tools/label-generator.js +78 -0
- package/dist/tools/label-generator.js.map +1 -0
- package/dist/utils/backup.d.ts +5 -0
- package/dist/utils/backup.js +56 -0
- package/dist/utils/backup.js.map +1 -0
- package/dist/utils/cli-settings-merge.d.ts +22 -0
- package/dist/utils/cli-settings-merge.js +56 -0
- package/dist/utils/cli-settings-merge.js.map +1 -0
- package/dist/utils/command-checks.d.ts +36 -0
- package/dist/utils/command-checks.js +120 -0
- package/dist/utils/command-checks.js.map +1 -0
- package/dist/utils/command-line.d.ts +1 -0
- package/dist/utils/command-line.js +54 -0
- package/dist/utils/command-line.js.map +1 -0
- package/dist/utils/dry-run.d.ts +39 -0
- package/dist/utils/dry-run.js +315 -0
- package/dist/utils/dry-run.js.map +1 -0
- package/dist/utils/execution-context.d.ts +48 -0
- package/dist/utils/execution-context.js +151 -0
- package/dist/utils/execution-context.js.map +1 -0
- package/dist/utils/file-system.d.ts +21 -0
- package/dist/utils/file-system.js +2 -0
- package/dist/utils/file-system.js.map +1 -0
- package/dist/utils/json.d.ts +12 -0
- package/dist/utils/json.js +45 -0
- package/dist/utils/json.js.map +1 -0
- package/package.json +5 -2
- package/packages/tiny-mcp-test-server/dist/index.js +47 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { DEFAULT_FRONTIER_MODEL, FRONTIER_MODELS, PROVIDER_NAME } from "../cli/constants.js";
|
|
2
|
+
import { createBinaryExistsCheck, createCommandExpectationCheck } from "../utils/command-checks.js";
|
|
3
|
+
import { configMutation, fileMutation } from "@poe-code/config-mutations";
|
|
4
|
+
import { createProvider } from "./create-provider.js";
|
|
5
|
+
import { openCodeAgent } from "@poe-code/agent-defs";
|
|
6
|
+
function providerModel(model) {
|
|
7
|
+
const value = model ?? DEFAULT_FRONTIER_MODEL;
|
|
8
|
+
const prefix = `${PROVIDER_NAME}/`;
|
|
9
|
+
return value.startsWith(prefix) ? value : `${prefix}${value}`;
|
|
10
|
+
}
|
|
11
|
+
export const OPEN_CODE_INSTALL_DEFINITION = {
|
|
12
|
+
id: "opencode",
|
|
13
|
+
summary: "OpenCode CLI",
|
|
14
|
+
check: createBinaryExistsCheck("opencode", "opencode-cli-binary", "OpenCode CLI binary must exist"),
|
|
15
|
+
steps: [
|
|
16
|
+
{
|
|
17
|
+
id: "install-opencode-cli-npm",
|
|
18
|
+
command: "npm",
|
|
19
|
+
args: ["install", "-g", "opencode-ai"]
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
successMessage: "Installed OpenCode CLI via npm."
|
|
23
|
+
};
|
|
24
|
+
function getModelArgs(model) {
|
|
25
|
+
return ["--model", providerModel(model)];
|
|
26
|
+
}
|
|
27
|
+
export const openCodeService = createProvider({
|
|
28
|
+
...openCodeAgent,
|
|
29
|
+
supportsStdinPrompt: false,
|
|
30
|
+
configurePrompts: {
|
|
31
|
+
model: {
|
|
32
|
+
label: "OpenCode model",
|
|
33
|
+
defaultValue: DEFAULT_FRONTIER_MODEL,
|
|
34
|
+
choices: FRONTIER_MODELS.map((id) => ({
|
|
35
|
+
title: id,
|
|
36
|
+
value: id
|
|
37
|
+
}))
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
isolatedEnv: {
|
|
41
|
+
agentBinary: openCodeAgent.binaryName,
|
|
42
|
+
configProbe: {
|
|
43
|
+
kind: "isolatedFile",
|
|
44
|
+
relativePath: ".config/opencode/config.json"
|
|
45
|
+
},
|
|
46
|
+
env: {
|
|
47
|
+
XDG_CONFIG_HOME: { kind: "isolatedDir", relativePath: ".config" },
|
|
48
|
+
XDG_DATA_HOME: { kind: "isolatedDir", relativePath: ".local/share" }
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
manifest: {
|
|
52
|
+
configure: [
|
|
53
|
+
fileMutation.ensureDirectory({ path: "~/.config/opencode" }),
|
|
54
|
+
configMutation.merge({
|
|
55
|
+
target: "~/.config/opencode/config.json",
|
|
56
|
+
value: (ctx) => {
|
|
57
|
+
const { model } = (ctx ?? {});
|
|
58
|
+
return {
|
|
59
|
+
$schema: "https://opencode.ai/config.json",
|
|
60
|
+
model: providerModel(model),
|
|
61
|
+
enabled_providers: [PROVIDER_NAME]
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}),
|
|
65
|
+
fileMutation.ensureDirectory({ path: "~/.opencode-data" }),
|
|
66
|
+
configMutation.merge({
|
|
67
|
+
target: "~/.opencode-data/auth.json",
|
|
68
|
+
value: (ctx) => {
|
|
69
|
+
const { apiKey } = (ctx ?? {});
|
|
70
|
+
return {
|
|
71
|
+
[PROVIDER_NAME]: {
|
|
72
|
+
type: "api",
|
|
73
|
+
key: apiKey ?? ""
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
})
|
|
78
|
+
],
|
|
79
|
+
unconfigure: [
|
|
80
|
+
configMutation.prune({
|
|
81
|
+
target: "~/.config/opencode/config.json",
|
|
82
|
+
shape: { enabled_providers: true }
|
|
83
|
+
}),
|
|
84
|
+
configMutation.prune({
|
|
85
|
+
target: "~/.opencode-data/auth.json",
|
|
86
|
+
shape: { [PROVIDER_NAME]: true }
|
|
87
|
+
})
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
install: OPEN_CODE_INSTALL_DEFINITION,
|
|
91
|
+
test(context) {
|
|
92
|
+
return context.runCheck(createCommandExpectationCheck({
|
|
93
|
+
id: "opencode-cli-health",
|
|
94
|
+
command: "opencode",
|
|
95
|
+
args: [
|
|
96
|
+
...getModelArgs(DEFAULT_FRONTIER_MODEL),
|
|
97
|
+
"run",
|
|
98
|
+
"Output exactly: OPEN_CODE_OK"
|
|
99
|
+
],
|
|
100
|
+
expectedOutput: "OPEN_CODE_OK"
|
|
101
|
+
}));
|
|
102
|
+
},
|
|
103
|
+
spawn(context, options) {
|
|
104
|
+
const opts = (options ?? {});
|
|
105
|
+
const args = [
|
|
106
|
+
...getModelArgs(opts.model),
|
|
107
|
+
"run",
|
|
108
|
+
opts.prompt,
|
|
109
|
+
...(opts.args ?? [])
|
|
110
|
+
];
|
|
111
|
+
if (opts.cwd) {
|
|
112
|
+
return context.command.runCommand("poe-code", ["wrap", "opencode", ...args], {
|
|
113
|
+
cwd: opts.cwd
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
return context.command.runCommand("poe-code", ["wrap", "opencode", ...args]);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
//# sourceMappingURL=opencode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/providers/opencode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface SpawnCommandOptions {
|
|
2
|
+
prompt: string;
|
|
3
|
+
args?: string[];
|
|
4
|
+
model?: string;
|
|
5
|
+
cwd?: string;
|
|
6
|
+
useStdin?: boolean;
|
|
7
|
+
interactive?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export type ProviderSpawnOptions<Extra extends Record<string, unknown> = Record<string, never>> = SpawnCommandOptions & Extra;
|
|
10
|
+
export interface ModelConfigureOptions {
|
|
11
|
+
model: string;
|
|
12
|
+
}
|
|
13
|
+
export type EmptyProviderOptions = Record<string, never>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn-options.js","sourceRoot":"","sources":["../../src/providers/spawn-options.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CliContainer } from "../cli/container.js";
|
|
2
|
+
export interface SdkContainerOptions {
|
|
3
|
+
/** Working directory (defaults to process.cwd()) */
|
|
4
|
+
cwd?: string;
|
|
5
|
+
/** Home directory (defaults to os.homedir()) */
|
|
6
|
+
homeDir?: string;
|
|
7
|
+
/** Environment variables (defaults to process.env) */
|
|
8
|
+
variables?: Record<string, string | undefined>;
|
|
9
|
+
/** Enable verbose logging (defaults to false) */
|
|
10
|
+
verbose?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Creates a lightweight container for SDK usage.
|
|
14
|
+
* Uses real file system and command runner.
|
|
15
|
+
* No prompts needed (non-interactive).
|
|
16
|
+
* Minimal logger (silent by default).
|
|
17
|
+
*/
|
|
18
|
+
export declare function createSdkContainer(options?: SdkContainerOptions): CliContainer;
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import * as fs from "node:fs/promises";
|
|
2
|
+
import * as os from "node:os";
|
|
3
|
+
import { createCliEnvironment } from "../cli/environment.js";
|
|
4
|
+
import { createServiceRegistry } from "../cli/service-registry.js";
|
|
5
|
+
import { createCommandContextFactory } from "../cli/context.js";
|
|
6
|
+
import { createPromptLibrary } from "../cli/prompts.js";
|
|
7
|
+
import { createOptionResolvers } from "../cli/options.js";
|
|
8
|
+
import { createLoggerFactory } from "../cli/logger.js";
|
|
9
|
+
import { ErrorLogger } from "../cli/error-logger.js";
|
|
10
|
+
import { runCommand } from "@poe-code/agent-spawn";
|
|
11
|
+
import { getDefaultProviders } from "../providers/index.js";
|
|
12
|
+
import { createPoeCodeCommandRunner } from "../cli/poe-code-command-runner.js";
|
|
13
|
+
import { loadCredentials, saveCredentials } from "../services/credentials.js";
|
|
14
|
+
import * as nodeFsSync from "node:fs";
|
|
15
|
+
/**
|
|
16
|
+
* Creates a lightweight container for SDK usage.
|
|
17
|
+
* Uses real file system and command runner.
|
|
18
|
+
* No prompts needed (non-interactive).
|
|
19
|
+
* Minimal logger (silent by default).
|
|
20
|
+
*/
|
|
21
|
+
export function createSdkContainer(options) {
|
|
22
|
+
const cwd = options?.cwd ?? process.cwd();
|
|
23
|
+
const homeDir = options?.homeDir ?? os.homedir();
|
|
24
|
+
const variables = options?.variables ?? process.env;
|
|
25
|
+
const verbose = options?.verbose ?? false;
|
|
26
|
+
const environment = createCliEnvironment({
|
|
27
|
+
cwd,
|
|
28
|
+
homeDir,
|
|
29
|
+
platform: process.platform,
|
|
30
|
+
variables
|
|
31
|
+
});
|
|
32
|
+
// Silent logger for SDK - only emits if verbose
|
|
33
|
+
const silentEmitter = verbose ? undefined : () => { };
|
|
34
|
+
const loggerFactory = createLoggerFactory(silentEmitter);
|
|
35
|
+
// Create error logger with sync fs
|
|
36
|
+
const errorLogger = new ErrorLogger({
|
|
37
|
+
fs: nodeFsSync,
|
|
38
|
+
logDir: environment.logDir,
|
|
39
|
+
logToStderr: false
|
|
40
|
+
});
|
|
41
|
+
loggerFactory.setErrorLogger(errorLogger);
|
|
42
|
+
// Create async file system adapter
|
|
43
|
+
const asyncFs = {
|
|
44
|
+
readFile: ((path, encoding) => {
|
|
45
|
+
if (encoding) {
|
|
46
|
+
return fs.readFile(path, encoding);
|
|
47
|
+
}
|
|
48
|
+
return fs.readFile(path);
|
|
49
|
+
}),
|
|
50
|
+
writeFile: (path, data, opts) => fs.writeFile(path, data, opts),
|
|
51
|
+
mkdir: (path, opts) => fs.mkdir(path, opts).then(() => { }),
|
|
52
|
+
stat: (path) => fs.stat(path),
|
|
53
|
+
rm: (path, opts) => fs.rm(path, opts),
|
|
54
|
+
unlink: (path) => fs.unlink(path),
|
|
55
|
+
readdir: (path) => fs.readdir(path),
|
|
56
|
+
copyFile: (src, dest) => fs.copyFile(src, dest),
|
|
57
|
+
chmod: (path, mode) => fs.chmod(path, mode)
|
|
58
|
+
};
|
|
59
|
+
const contextFactory = createCommandContextFactory({ fs: asyncFs });
|
|
60
|
+
// No-op prompts for SDK (non-interactive)
|
|
61
|
+
const noopPrompts = async () => {
|
|
62
|
+
throw new Error("SDK does not support interactive prompts");
|
|
63
|
+
};
|
|
64
|
+
const promptLibrary = createPromptLibrary();
|
|
65
|
+
const optionResolvers = createOptionResolvers({
|
|
66
|
+
prompts: noopPrompts,
|
|
67
|
+
promptLibrary,
|
|
68
|
+
apiKeyStore: {
|
|
69
|
+
read: () => loadCredentials({
|
|
70
|
+
fs: asyncFs,
|
|
71
|
+
filePath: environment.credentialsPath
|
|
72
|
+
}),
|
|
73
|
+
write: (value) => saveCredentials({
|
|
74
|
+
fs: asyncFs,
|
|
75
|
+
filePath: environment.credentialsPath,
|
|
76
|
+
apiKey: value
|
|
77
|
+
})
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
const registry = createServiceRegistry();
|
|
81
|
+
const providers = getDefaultProviders().filter((adapter) => !adapter.disabled);
|
|
82
|
+
for (const adapter of providers) {
|
|
83
|
+
registry.register(adapter);
|
|
84
|
+
}
|
|
85
|
+
const baseRunner = runCommand;
|
|
86
|
+
// Create container with wrapped runner
|
|
87
|
+
let container = null;
|
|
88
|
+
const wrappedRunner = createPoeCodeCommandRunner({
|
|
89
|
+
getContainer: () => container,
|
|
90
|
+
baseRunner
|
|
91
|
+
});
|
|
92
|
+
// HTTP client using global fetch
|
|
93
|
+
const httpClient = async (url, init) => {
|
|
94
|
+
const response = await globalThis.fetch(url, init);
|
|
95
|
+
return {
|
|
96
|
+
ok: response.ok,
|
|
97
|
+
status: response.status,
|
|
98
|
+
json: () => response.json()
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
container = {
|
|
102
|
+
env: environment,
|
|
103
|
+
fs: asyncFs,
|
|
104
|
+
prompts: noopPrompts,
|
|
105
|
+
promptLibrary,
|
|
106
|
+
loggerFactory,
|
|
107
|
+
errorLogger,
|
|
108
|
+
options: optionResolvers,
|
|
109
|
+
contextFactory,
|
|
110
|
+
registry,
|
|
111
|
+
httpClient,
|
|
112
|
+
commandRunner: wrappedRunner,
|
|
113
|
+
providers,
|
|
114
|
+
dependencies: {
|
|
115
|
+
fs: asyncFs,
|
|
116
|
+
prompts: noopPrompts,
|
|
117
|
+
env: {
|
|
118
|
+
cwd,
|
|
119
|
+
homeDir,
|
|
120
|
+
platform: process.platform,
|
|
121
|
+
variables
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
return container;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/sdk/container.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads the Poe API key with the following priority:
|
|
3
|
+
* 1. `POE_API_KEY` environment variable (if set)
|
|
4
|
+
* 2. Credentials file (`~/.poe-code/credentials.json`)
|
|
5
|
+
*
|
|
6
|
+
* @returns The API key
|
|
7
|
+
* @throws Error if no credentials found
|
|
8
|
+
*/
|
|
9
|
+
export declare function getPoeApiKey(): Promise<string>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as fs from "node:fs/promises";
|
|
2
|
+
import * as os from "node:os";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
const CREDENTIALS_RELATIVE_PATH = ".poe-code/credentials.json";
|
|
5
|
+
/**
|
|
6
|
+
* Reads the Poe API key with the following priority:
|
|
7
|
+
* 1. `POE_API_KEY` environment variable (if set)
|
|
8
|
+
* 2. Credentials file (`~/.poe-code/credentials.json`)
|
|
9
|
+
*
|
|
10
|
+
* @returns The API key
|
|
11
|
+
* @throws Error if no credentials found
|
|
12
|
+
*/
|
|
13
|
+
export async function getPoeApiKey() {
|
|
14
|
+
const envKey = process.env.POE_API_KEY;
|
|
15
|
+
if (typeof envKey === "string" && envKey.trim().length > 0) {
|
|
16
|
+
return envKey.trim();
|
|
17
|
+
}
|
|
18
|
+
const homeDir = os.homedir();
|
|
19
|
+
const credentialsPath = path.join(homeDir, CREDENTIALS_RELATIVE_PATH);
|
|
20
|
+
try {
|
|
21
|
+
const content = await fs.readFile(credentialsPath, "utf8");
|
|
22
|
+
const parsed = JSON.parse(content);
|
|
23
|
+
if (typeof parsed === "object" &&
|
|
24
|
+
parsed !== null &&
|
|
25
|
+
typeof parsed.apiKey === "string" &&
|
|
26
|
+
parsed.apiKey.length > 0) {
|
|
27
|
+
return parsed.apiKey;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// File doesn't exist or is invalid
|
|
32
|
+
}
|
|
33
|
+
throw new Error("No API key found. Set POE_API_KEY or run 'poe-code login'.");
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/sdk/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,yBAAyB,GAAG,4BAA4B,CAAC;AAE/D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;IACvC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3D,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;IAEtE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,IACE,OAAO,MAAM,KAAK,QAAQ;YAC1B,MAAM,KAAK,IAAI;YACf,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;YACjC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EACxB,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;IACrC,CAAC;IAED,MAAM,IAAI,KAAK,CACb,4DAA4D,CAC7D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { GenerateOptions, GenerateResult, MediaGenerateOptions, MediaGenerateResult } from "./types.js";
|
|
2
|
+
export declare function generate(prompt: string, options?: GenerateOptions): Promise<GenerateResult>;
|
|
3
|
+
export declare function generateImage(prompt: string, options?: MediaGenerateOptions): Promise<MediaGenerateResult>;
|
|
4
|
+
export declare function generateVideo(prompt: string, options?: MediaGenerateOptions): Promise<MediaGenerateResult>;
|
|
5
|
+
export declare function generateAudio(prompt: string, options?: MediaGenerateOptions): Promise<MediaGenerateResult>;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { DEFAULT_TEXT_MODEL, DEFAULT_IMAGE_BOT, DEFAULT_VIDEO_BOT, DEFAULT_AUDIO_BOT } from "../cli/constants.js";
|
|
2
|
+
import { getPoeApiKey } from "./credentials.js";
|
|
3
|
+
import { getGlobalClient, setGlobalClient } from "../services/client-instance.js";
|
|
4
|
+
import { createPoeClient } from "../services/llm-client.js";
|
|
5
|
+
const MODEL_ENV_KEYS = {
|
|
6
|
+
text: "POE_TEXT_MODEL",
|
|
7
|
+
image: "POE_IMAGE_MODEL",
|
|
8
|
+
video: "POE_VIDEO_MODEL",
|
|
9
|
+
audio: "POE_AUDIO_MODEL"
|
|
10
|
+
};
|
|
11
|
+
const DEFAULT_MODELS = {
|
|
12
|
+
text: DEFAULT_TEXT_MODEL,
|
|
13
|
+
image: DEFAULT_IMAGE_BOT,
|
|
14
|
+
video: DEFAULT_VIDEO_BOT,
|
|
15
|
+
audio: DEFAULT_AUDIO_BOT
|
|
16
|
+
};
|
|
17
|
+
export async function generate(prompt, options = {}) {
|
|
18
|
+
if (!prompt) {
|
|
19
|
+
throw new Error("Prompt is required");
|
|
20
|
+
}
|
|
21
|
+
const client = await resolveClient();
|
|
22
|
+
const model = resolveSdkModel("text", options);
|
|
23
|
+
const response = await client.text({
|
|
24
|
+
model,
|
|
25
|
+
prompt,
|
|
26
|
+
params: options.params
|
|
27
|
+
});
|
|
28
|
+
if (!response.content) {
|
|
29
|
+
throw new Error("No response from LLM");
|
|
30
|
+
}
|
|
31
|
+
return { content: response.content };
|
|
32
|
+
}
|
|
33
|
+
export async function generateImage(prompt, options = {}) {
|
|
34
|
+
return generateMedia("image", prompt, options);
|
|
35
|
+
}
|
|
36
|
+
export async function generateVideo(prompt, options = {}) {
|
|
37
|
+
return generateMedia("video", prompt, options);
|
|
38
|
+
}
|
|
39
|
+
export async function generateAudio(prompt, options = {}) {
|
|
40
|
+
return generateMedia("audio", prompt, options);
|
|
41
|
+
}
|
|
42
|
+
async function generateMedia(type, prompt, options) {
|
|
43
|
+
if (!prompt) {
|
|
44
|
+
throw new Error("Prompt is required");
|
|
45
|
+
}
|
|
46
|
+
const client = await resolveClient();
|
|
47
|
+
const model = resolveSdkModel(type, options);
|
|
48
|
+
const response = await client.media(type, {
|
|
49
|
+
model,
|
|
50
|
+
prompt,
|
|
51
|
+
params: options.params
|
|
52
|
+
});
|
|
53
|
+
if (!response.url) {
|
|
54
|
+
throw new Error(`No ${type} URL returned`);
|
|
55
|
+
}
|
|
56
|
+
return { url: response.url, mimeType: response.mimeType };
|
|
57
|
+
}
|
|
58
|
+
async function resolveClient() {
|
|
59
|
+
try {
|
|
60
|
+
return getGlobalClient();
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
const apiKey = await getPoeApiKey();
|
|
64
|
+
const baseUrl = normalizeBaseUrl(process.env.POE_API_BASE_URL);
|
|
65
|
+
const client = createPoeClient({
|
|
66
|
+
apiKey,
|
|
67
|
+
baseUrl
|
|
68
|
+
});
|
|
69
|
+
setGlobalClient(client);
|
|
70
|
+
return client;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function resolveSdkModel(type, options) {
|
|
74
|
+
if (options.model) {
|
|
75
|
+
return options.model;
|
|
76
|
+
}
|
|
77
|
+
const envKey = MODEL_ENV_KEYS[type];
|
|
78
|
+
const envModel = normalizeEnvModel(process.env[envKey]);
|
|
79
|
+
if (envModel) {
|
|
80
|
+
return envModel;
|
|
81
|
+
}
|
|
82
|
+
return DEFAULT_MODELS[type];
|
|
83
|
+
}
|
|
84
|
+
function normalizeEnvModel(value) {
|
|
85
|
+
if (typeof value !== "string") {
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
const trimmed = value.trim();
|
|
89
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
90
|
+
}
|
|
91
|
+
function normalizeBaseUrl(value) {
|
|
92
|
+
if (typeof value === "string" && value.trim().length > 0) {
|
|
93
|
+
return value.trim();
|
|
94
|
+
}
|
|
95
|
+
return "https://api.poe.com/v1";
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/sdk/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { CliContainer } from "../cli/container.js";
|
|
2
|
+
import type { SpawnResult } from "./types.js";
|
|
3
|
+
export interface SpawnCoreOptions {
|
|
4
|
+
/** The prompt to send to the provider */
|
|
5
|
+
prompt: string;
|
|
6
|
+
/** Working directory for the service CLI */
|
|
7
|
+
cwd?: string;
|
|
8
|
+
/** Model identifier override */
|
|
9
|
+
model?: string;
|
|
10
|
+
/** Additional arguments forwarded to the CLI */
|
|
11
|
+
args?: string[];
|
|
12
|
+
/** Whether prompt was read from stdin */
|
|
13
|
+
useStdin?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface SpawnCoreFlags {
|
|
16
|
+
dryRun: boolean;
|
|
17
|
+
verbose: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Core spawn implementation used by both SDK and CLI.
|
|
21
|
+
* Accepts an existing container to avoid creating a new one.
|
|
22
|
+
*/
|
|
23
|
+
export declare function spawnCore(container: CliContainer, service: string, options: SpawnCoreOptions, flags?: SpawnCoreFlags): Promise<SpawnResult>;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { buildProviderContext, createExecutionResources } from "../cli/commands/shared.js";
|
|
4
|
+
/**
|
|
5
|
+
* Core spawn implementation used by both SDK and CLI.
|
|
6
|
+
* Accepts an existing container to avoid creating a new one.
|
|
7
|
+
*/
|
|
8
|
+
export async function spawnCore(container, service, options, flags = { dryRun: false, verbose: false }) {
|
|
9
|
+
// Resolve working directory
|
|
10
|
+
const cwdOverride = resolveSpawnWorkingDirectory(container.env.cwd, options.cwd);
|
|
11
|
+
// Build spawn command options (internal format)
|
|
12
|
+
const spawnOptions = {
|
|
13
|
+
prompt: options.prompt,
|
|
14
|
+
args: options.args,
|
|
15
|
+
model: options.model,
|
|
16
|
+
cwd: cwdOverride,
|
|
17
|
+
useStdin: options.useStdin ?? false
|
|
18
|
+
};
|
|
19
|
+
// Resolve service adapter
|
|
20
|
+
const adapter = container.registry.get(service);
|
|
21
|
+
if (!adapter) {
|
|
22
|
+
throw new Error(`Unknown service "${service}".`);
|
|
23
|
+
}
|
|
24
|
+
if (typeof adapter.spawn !== "function") {
|
|
25
|
+
throw new Error(`${adapter.label} does not support spawn.`);
|
|
26
|
+
}
|
|
27
|
+
if (spawnOptions.useStdin && !adapter.supportsStdinPrompt) {
|
|
28
|
+
throw new Error(`${adapter.label} does not support stdin prompts. Use a different service (e.g. "codex") or pass the prompt as an argument.`);
|
|
29
|
+
}
|
|
30
|
+
// Create execution resources (logger, context)
|
|
31
|
+
const commandFlags = { dryRun: flags.dryRun, assumeYes: true, verbose: flags.verbose };
|
|
32
|
+
const resources = createExecutionResources(container, commandFlags, `spawn:${service}`);
|
|
33
|
+
// Build provider context
|
|
34
|
+
const providerContext = buildProviderContext(container, adapter, resources);
|
|
35
|
+
// Handle dry run
|
|
36
|
+
if (flags.dryRun) {
|
|
37
|
+
const summary = formatSpawnDryRunMessage(adapter.label, spawnOptions);
|
|
38
|
+
resources.logger.dryRun(summary);
|
|
39
|
+
return {
|
|
40
|
+
stdout: "",
|
|
41
|
+
stderr: "",
|
|
42
|
+
exitCode: 0
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// Invoke spawn through registry
|
|
46
|
+
const result = (await container.registry.invoke(adapter.name, "spawn", async (entry) => {
|
|
47
|
+
if (!entry.spawn) {
|
|
48
|
+
throw new Error(`${adapter.label} does not support spawn.`);
|
|
49
|
+
}
|
|
50
|
+
const output = await entry.spawn(providerContext, spawnOptions);
|
|
51
|
+
return output;
|
|
52
|
+
}));
|
|
53
|
+
// Return normalized result
|
|
54
|
+
if (!result) {
|
|
55
|
+
return {
|
|
56
|
+
stdout: "",
|
|
57
|
+
stderr: "",
|
|
58
|
+
exitCode: 0
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
stdout: result.stdout,
|
|
63
|
+
stderr: result.stderr,
|
|
64
|
+
exitCode: result.exitCode
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function formatSpawnDryRunMessage(label, options) {
|
|
68
|
+
const lines = [`Dry run: would spawn ${label}.`];
|
|
69
|
+
const details = [];
|
|
70
|
+
const promptDetail = options.useStdin
|
|
71
|
+
? `(stdin, ${options.prompt.length} chars)`
|
|
72
|
+
: formatQuoted(options.prompt);
|
|
73
|
+
details.push(`${chalk.dim("Prompt:")} ${chalk.cyan(promptDetail)}`);
|
|
74
|
+
if (options.args && options.args.length > 0) {
|
|
75
|
+
const renderedArgs = options.args.map((arg) => formatSpawnArg(arg)).join(" ");
|
|
76
|
+
details.push(`${chalk.dim("Args:")} ${chalk.cyan(renderedArgs)}`);
|
|
77
|
+
}
|
|
78
|
+
if (options.cwd) {
|
|
79
|
+
details.push(`${chalk.dim("Cwd:")} ${chalk.cyan(options.cwd)}`);
|
|
80
|
+
}
|
|
81
|
+
if (details.length > 0) {
|
|
82
|
+
lines.push(...details.map((line) => ` ${line}`));
|
|
83
|
+
}
|
|
84
|
+
return lines.join("\n");
|
|
85
|
+
}
|
|
86
|
+
function formatSpawnArg(arg) {
|
|
87
|
+
const needsQuotes = arg.includes(" ") || arg.includes("\t");
|
|
88
|
+
if (!needsQuotes) {
|
|
89
|
+
return arg;
|
|
90
|
+
}
|
|
91
|
+
return `"${arg.split("\"").join("\\\"")}"`;
|
|
92
|
+
}
|
|
93
|
+
function formatQuoted(value) {
|
|
94
|
+
return JSON.stringify(value);
|
|
95
|
+
}
|
|
96
|
+
function resolveSpawnWorkingDirectory(baseDir, candidate) {
|
|
97
|
+
if (!candidate || candidate.trim().length === 0) {
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
if (path.isAbsolute(candidate)) {
|
|
101
|
+
return candidate;
|
|
102
|
+
}
|
|
103
|
+
return path.resolve(baseDir, candidate);
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=spawn-core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawn-core.js","sourceRoot":"","sources":["../../src/sdk/spawn-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type AcpEvent } from "@poe-code/agent-spawn";
|
|
2
|
+
import type { SpawnOptions, SpawnResult } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Spawns an agent with optional streaming.
|
|
5
|
+
*
|
|
6
|
+
* Returns both:
|
|
7
|
+
* - `events`: an async stream of ACP events (empty when the provider doesn't support streaming)
|
|
8
|
+
* - `result`: a promise resolving to the final SpawnResult
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { spawn } from "poe-code"
|
|
13
|
+
*
|
|
14
|
+
* const { events, result } = spawn("codex", "Fix the bug in auth.ts")
|
|
15
|
+
*
|
|
16
|
+
* for await (const e of events) {
|
|
17
|
+
* // render or log events
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* const final = await result
|
|
21
|
+
* console.log(final.exitCode)
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function spawn(service: string, prompt: string, options?: Omit<SpawnOptions, "prompt">): {
|
|
25
|
+
events: AsyncIterable<AcpEvent>;
|
|
26
|
+
result: Promise<SpawnResult>;
|
|
27
|
+
};
|
|
28
|
+
export declare function spawn(service: string, options: SpawnOptions): {
|
|
29
|
+
events: AsyncIterable<AcpEvent>;
|
|
30
|
+
result: Promise<SpawnResult>;
|
|
31
|
+
};
|