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.
Files changed (62) hide show
  1. package/dist/cli/commands/generate.d.ts +9 -0
  2. package/dist/cli/commands/generate.js +320 -0
  3. package/dist/cli/commands/generate.js.map +1 -0
  4. package/dist/cli/commands/mcp.d.ts +9 -0
  5. package/dist/cli/commands/mcp.js +132 -0
  6. package/dist/cli/commands/mcp.js.map +1 -0
  7. package/dist/cli/constants.d.ts +4 -1
  8. package/dist/cli/constants.js +4 -1
  9. package/dist/cli/constants.js.map +1 -1
  10. package/dist/cli/container.js +2 -1
  11. package/dist/cli/container.js.map +1 -1
  12. package/dist/cli/http.d.ts +1 -0
  13. package/dist/cli/mcp-server.d.ts +34 -0
  14. package/dist/cli/mcp-server.js +239 -0
  15. package/dist/cli/mcp-server.js.map +1 -0
  16. package/dist/cli/program.js +9 -4
  17. package/dist/cli/program.js.map +1 -1
  18. package/dist/cli/prompts.d.ts +0 -1
  19. package/dist/cli/prompts.js +1 -6
  20. package/dist/cli/prompts.js.map +1 -1
  21. package/dist/cli/service-registry.d.ts +10 -0
  22. package/dist/cli/service-registry.js.map +1 -1
  23. package/dist/cli/ui/clack-static.d.ts +51 -0
  24. package/dist/cli/ui/clack-static.js +59 -0
  25. package/dist/cli/ui/clack-static.js.map +1 -0
  26. package/dist/index.d.ts +2 -1
  27. package/dist/index.js +1 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/providers/claude-code.js +4 -0
  30. package/dist/providers/claude-code.js.map +1 -1
  31. package/dist/providers/codex.js +5 -0
  32. package/dist/providers/codex.js.map +1 -1
  33. package/dist/providers/create-provider.d.ts +3 -1
  34. package/dist/providers/create-provider.js +6 -0
  35. package/dist/providers/create-provider.js.map +1 -1
  36. package/dist/providers/kimi.js +4 -0
  37. package/dist/providers/kimi.js.map +1 -1
  38. package/dist/providers/mcp-config.d.ts +35 -0
  39. package/dist/providers/mcp-config.js +135 -0
  40. package/dist/providers/mcp-config.js.map +1 -0
  41. package/dist/providers/opencode.js +11 -0
  42. package/dist/providers/opencode.js.map +1 -1
  43. package/dist/sdk/generate.d.ts +5 -0
  44. package/dist/sdk/generate.js +94 -0
  45. package/dist/sdk/generate.js.map +1 -0
  46. package/dist/sdk/types.d.ts +14 -0
  47. package/dist/services/client-instance.d.ts +12 -0
  48. package/dist/services/client-instance.js +36 -0
  49. package/dist/services/client-instance.js.map +1 -0
  50. package/dist/services/llm-client.d.ts +21 -0
  51. package/dist/services/llm-client.js +131 -0
  52. package/dist/services/llm-client.js.map +1 -0
  53. package/dist/services/media-download.d.ts +17 -0
  54. package/dist/services/media-download.js +42 -0
  55. package/dist/services/media-download.js.map +1 -0
  56. package/dist/utils/execution-context.d.ts +40 -0
  57. package/dist/utils/execution-context.js +128 -0
  58. package/dist/utils/execution-context.js.map +1 -0
  59. package/package.json +13 -3
  60. package/dist/cli/commands/query.d.ts +0 -6
  61. package/dist/cli/commands/query.js +0 -76
  62. package/dist/cli/commands/query.js.map +0 -1
@@ -1,6 +1,8 @@
1
1
  import type { ProviderService, ProviderBranding, ProviderConfigurePrompts, ProviderIsolatedEnv } from "../cli/service-registry.js";
2
2
  import { type ServiceManifestDefinition } from "../services/service-manifest.js";
3
3
  import { type ServiceInstallDefinition } from "../services/service-install.js";
4
+ import { type McpConfig } from "./mcp-config.js";
5
+ export type { McpValueContext } from "./mcp-config.js";
4
6
  interface ManifestVersionDefinition<ConfigureOptions, UnconfigureOptions> {
5
7
  configure: ServiceManifestDefinition<ConfigureOptions, UnconfigureOptions>["configure"];
6
8
  unconfigure?: ServiceManifestDefinition<ConfigureOptions, UnconfigureOptions>["unconfigure"];
@@ -18,9 +20,9 @@ interface CreateProviderOptions<ConfigureOptions, UnconfigureOptions, SpawnOptio
18
20
  postConfigureMessages?: string[];
19
21
  isolatedEnv?: ProviderIsolatedEnv;
20
22
  manifest: ManifestVersionDefinition<ConfigureOptions, UnconfigureOptions>;
23
+ mcp?: McpConfig;
21
24
  install?: ServiceInstallDefinition;
22
25
  test?: ProviderService<ConfigureOptions, UnconfigureOptions, SpawnOptions>["test"];
23
26
  spawn?: ProviderService<ConfigureOptions, UnconfigureOptions, SpawnOptions>["spawn"];
24
27
  }
25
28
  export declare function createProvider<ConfigureOptions = any, UnconfigureOptions = ConfigureOptions, SpawnOptions = any>(options: CreateProviderOptions<ConfigureOptions, UnconfigureOptions, SpawnOptions>): ProviderService<ConfigureOptions, UnconfigureOptions, SpawnOptions>;
26
- export {};
@@ -1,5 +1,6 @@
1
1
  import { createServiceManifest } from "../services/service-manifest.js";
2
2
  import { runServiceInstall } from "../services/service-install.js";
3
+ import { createMcpMutations, createMcpConfigureRunner, createMcpUnconfigureRunner } from "./mcp-config.js";
3
4
  export function createProvider(options) {
4
5
  const manifest = createServiceManifest({
5
6
  id: options.id,
@@ -35,6 +36,11 @@ export function createProvider(options) {
35
36
  if (options.spawn) {
36
37
  provider.spawn = options.spawn;
37
38
  }
39
+ if (options.mcp) {
40
+ const mcpMutations = createMcpMutations(options.mcp);
41
+ provider.mcpConfigure = createMcpConfigureRunner(options.id, mcpMutations.configure);
42
+ provider.mcpUnconfigure = createMcpUnconfigureRunner(options.id, mcpMutations.unconfigure);
43
+ }
38
44
  return provider;
39
45
  }
40
46
  function createInstallRunner(definition) {
@@ -1 +1 @@
1
- {"version":3,"file":"create-provider.js","sourceRoot":"","sources":["../../src/providers/create-provider.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,qBAAqB,EAEtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,iBAAiB,EAElB,MAAM,gCAAgC,CAAC;AAiCxC,MAAM,UAAU,cAAc,CAK5B,OAAkF;IAElF,MAAM,QAAQ,GAAG,qBAAqB,CAAC;QACrC,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS;QACrC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW;KAC1C,CAAC,CAAC;IAEH,MAAM,QAAQ,GAIV;QACF,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;QACpD,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU;YACjC,MAAM,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU;YACnC,OAAO,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnD,CAAC;KACF,CAAC;IAEF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,QAAQ,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAoC;IAC/D,OAAO,KAAK,EAAE,OAAwB,EAAiB,EAAE;QACvD,MAAM,iBAAiB,CAAC,UAAU,EAAE;YAClC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;YACvC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU;YACtC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;SACrD,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"create-provider.js","sourceRoot":"","sources":["../../src/providers/create-provider.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,qBAAqB,EAEtB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,iBAAiB,EAElB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,0BAA0B,EAE3B,MAAM,iBAAiB,CAAC;AAqCzB,MAAM,UAAU,cAAc,CAK5B,OAAkF;IAElF,MAAM,QAAQ,GAAG,qBAAqB,CAAC;QACrC,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS;QACrC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW;KAC1C,CAAC,CAAC;IAEH,MAAM,QAAQ,GAIV;QACF,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;QACpD,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU;YACjC,MAAM,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU;YACnC,OAAO,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnD,CAAC;KACF,CAAC;IAEF,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,QAAQ,CAAC,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,QAAQ,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrD,QAAQ,CAAC,YAAY,GAAG,wBAAwB,CAAC,OAAO,CAAC,EAAE,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;QACrF,QAAQ,CAAC,cAAc,GAAG,0BAA0B,CAAC,OAAO,CAAC,EAAE,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IAC7F,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAoC;IAC/D,OAAO,KAAK,EAAE,OAAwB,EAAiB,EAAE;QACvD,MAAM,iBAAiB,CAAC,UAAU,EAAE;YAClC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM;YACvC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU;YACtC,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;SACrD,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -46,6 +46,10 @@ export const kimiService = createProvider({
46
46
  }))
47
47
  }
48
48
  },
49
+ mcp: {
50
+ configFile: "~/.kimi/mcp.json",
51
+ configKey: "mcpServers"
52
+ },
49
53
  test(context) {
50
54
  return context.runCheck(createCommandExpectationCheck({
51
55
  id: "kimi-cli-health",
@@ -1 +1 @@
1
- {"version":3,"file":"kimi.js","sourceRoot":"","sources":["../../src/providers/kimi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kimi.js","sourceRoot":"","sources":["../../src/providers/kimi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { McpContext, McpRunOptions } from "../cli/service-registry.js";
2
+ import { type ServiceMutation } from "../services/service-manifest.js";
3
+ import type { JsonObject } from "../utils/json.js";
4
+ import { type ExecutionCommand } from "../utils/execution-context.js";
5
+ /**
6
+ * Context passed to MCP value factory functions
7
+ */
8
+ export interface McpValueContext {
9
+ /** The detected execution command (e.g., npx, poe-code, npm) */
10
+ execCommand: ExecutionCommand;
11
+ /** The MCP subcommand to append */
12
+ subcommand: string;
13
+ }
14
+ export interface McpConfigJson {
15
+ configFile: string;
16
+ configKey: string;
17
+ /** Static value (legacy) or factory function for dynamic value */
18
+ value?: JsonObject | ((ctx: McpValueContext) => JsonObject);
19
+ }
20
+ export interface McpConfigToml {
21
+ configFile: string;
22
+ configKey: string;
23
+ format: "toml";
24
+ }
25
+ export type McpConfig = McpConfigJson | McpConfigToml;
26
+ interface McpMutationOptions {
27
+ dryRun?: boolean;
28
+ }
29
+ export declare function createMcpMutations(config: McpConfig): {
30
+ configure: ServiceMutation<McpMutationOptions>[];
31
+ unconfigure: ServiceMutation<McpMutationOptions>[];
32
+ };
33
+ export declare function createMcpConfigureRunner(providerId: string, mutations: ServiceMutation<McpMutationOptions>[]): (context: McpContext, options?: McpRunOptions) => Promise<void>;
34
+ export declare function createMcpUnconfigureRunner(providerId: string, mutations: ServiceMutation<McpMutationOptions>[]): (context: McpContext, options?: McpRunOptions) => Promise<void>;
35
+ export {};
@@ -0,0 +1,135 @@
1
+ import { createServiceManifest, jsonMergeMutation, jsonPruneMutation, tomlMergeMutation, tomlPruneMutation } from "../services/service-manifest.js";
2
+ import { getCurrentExecutionContext, toMcpServerCommand } from "../utils/execution-context.js";
3
+ function getMcpServerValue() {
4
+ const context = getCurrentExecutionContext(import.meta.url);
5
+ const mcpCommand = toMcpServerCommand(context.command, "mcp");
6
+ return {
7
+ "poe-code": {
8
+ command: mcpCommand.command,
9
+ args: mcpCommand.args
10
+ }
11
+ };
12
+ }
13
+ function resolveServerValue(customValue) {
14
+ if (customValue === undefined) {
15
+ return getMcpServerValue();
16
+ }
17
+ if (typeof customValue === "function") {
18
+ const context = getCurrentExecutionContext(import.meta.url);
19
+ const mcpCommand = toMcpServerCommand(context.command, "mcp");
20
+ return customValue({
21
+ execCommand: context.command,
22
+ subcommand: mcpCommand.args[mcpCommand.args.length - 1]
23
+ });
24
+ }
25
+ return customValue;
26
+ }
27
+ export function createMcpMutations(config) {
28
+ if ("format" in config && config.format === "toml") {
29
+ return {
30
+ configure: [
31
+ tomlMergeMutation({
32
+ target: config.configFile,
33
+ value: () => ({ [config.configKey]: getMcpServerValue() })
34
+ })
35
+ ],
36
+ unconfigure: [
37
+ tomlPruneMutation({
38
+ target: config.configFile,
39
+ prune: (document) => {
40
+ const servers = document[config.configKey];
41
+ if (!servers || typeof servers !== "object") {
42
+ return { changed: false, result: document };
43
+ }
44
+ const serversRecord = servers;
45
+ if (!("poe-code" in serversRecord)) {
46
+ return { changed: false, result: document };
47
+ }
48
+ delete serversRecord["poe-code"];
49
+ if (Object.keys(serversRecord).length === 0) {
50
+ delete document[config.configKey];
51
+ }
52
+ return { changed: true, result: document };
53
+ }
54
+ })
55
+ ]
56
+ };
57
+ }
58
+ const customValue = "value" in config ? config.value : undefined;
59
+ return {
60
+ configure: [
61
+ jsonMergeMutation({
62
+ target: config.configFile,
63
+ value: () => {
64
+ const serverValue = resolveServerValue(customValue);
65
+ return { [config.configKey]: serverValue };
66
+ }
67
+ })
68
+ ],
69
+ unconfigure: [
70
+ jsonPruneMutation({
71
+ target: config.configFile,
72
+ shape: () => ({ [config.configKey]: { "poe-code": true } })
73
+ })
74
+ ]
75
+ };
76
+ }
77
+ export function createMcpConfigureRunner(providerId, mutations) {
78
+ return async (context, options) => {
79
+ const mcpManifest = createServiceManifest({
80
+ id: `${providerId}-mcp`,
81
+ summary: `MCP configuration for ${providerId}`,
82
+ configure: mutations,
83
+ unconfigure: []
84
+ });
85
+ await mcpManifest.configure({
86
+ fs: context.command.fs,
87
+ env: context.env,
88
+ command: context.command,
89
+ options: { dryRun: options?.dryRun }
90
+ }, {
91
+ observers: {
92
+ onStart: (details) => {
93
+ if (options?.dryRun) {
94
+ context.logger.dryRun(`Would ${details.label.toLowerCase()}`);
95
+ }
96
+ },
97
+ onComplete: (details, outcome) => {
98
+ if (!options?.dryRun && outcome.changed) {
99
+ context.logger.verbose(details.label);
100
+ }
101
+ }
102
+ }
103
+ });
104
+ };
105
+ }
106
+ export function createMcpUnconfigureRunner(providerId, mutations) {
107
+ return async (context, options) => {
108
+ const mcpManifest = createServiceManifest({
109
+ id: `${providerId}-mcp`,
110
+ summary: `MCP configuration for ${providerId}`,
111
+ configure: mutations,
112
+ unconfigure: []
113
+ });
114
+ await mcpManifest.configure({
115
+ fs: context.command.fs,
116
+ env: context.env,
117
+ command: context.command,
118
+ options: { dryRun: options?.dryRun }
119
+ }, {
120
+ observers: {
121
+ onStart: (details) => {
122
+ if (options?.dryRun) {
123
+ context.logger.dryRun(`Would ${details.label.toLowerCase()}`);
124
+ }
125
+ },
126
+ onComplete: (details, outcome) => {
127
+ if (!options?.dryRun && outcome.changed) {
128
+ context.logger.verbose(details.label);
129
+ }
130
+ }
131
+ }
132
+ });
133
+ };
134
+ }
135
+ //# sourceMappingURL=mcp-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../src/providers/mcp-config.ts"],"names":[],"mappings":"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"}
@@ -60,6 +60,17 @@ export const openCodeService = createProvider({
60
60
  XDG_DATA_HOME: { kind: "isolatedDir", relativePath: ".local/share" }
61
61
  }
62
62
  },
63
+ mcp: {
64
+ configFile: "~/.config/opencode/config.json",
65
+ configKey: "mcp",
66
+ value: (ctx) => ({
67
+ "poe-code": {
68
+ type: "local",
69
+ command: [ctx.execCommand.command, ...ctx.execCommand.args, ctx.subcommand],
70
+ enabled: true
71
+ }
72
+ })
73
+ },
63
74
  manifest: {
64
75
  configure: [
65
76
  ensureDirectory({
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/providers/opencode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/providers/opencode.ts"],"names":[],"mappings":"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"}
@@ -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,94 @@
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
+ return envModel ?? DEFAULT_MODELS[type];
80
+ }
81
+ function normalizeEnvModel(value) {
82
+ if (typeof value !== "string") {
83
+ return undefined;
84
+ }
85
+ const trimmed = value.trim();
86
+ return trimmed.length > 0 ? trimmed : undefined;
87
+ }
88
+ function normalizeBaseUrl(value) {
89
+ if (typeof value === "string" && value.trim().length > 0) {
90
+ return value.trim();
91
+ }
92
+ return "https://api.poe.com/v1";
93
+ }
94
+ //# 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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"}
@@ -22,3 +22,17 @@ export interface SpawnResult {
22
22
  /** Exit code from the CLI process */
23
23
  exitCode: number;
24
24
  }
25
+ export interface GenerateOptions {
26
+ /** Model identifier override */
27
+ model?: string;
28
+ /** Additional parameters passed to the API */
29
+ params?: Record<string, string>;
30
+ }
31
+ export type MediaGenerateOptions = GenerateOptions;
32
+ export interface GenerateResult {
33
+ content: string;
34
+ }
35
+ export interface MediaGenerateResult {
36
+ url: string;
37
+ mimeType?: string;
38
+ }
@@ -0,0 +1,12 @@
1
+ import type { FileSystem } from "../utils/file-system.js";
2
+ import type { HttpClient } from "../cli/http.js";
3
+ import type { LlmClient } from "./llm-client.js";
4
+ export declare function setGlobalClient(client: LlmClient): void;
5
+ export declare function getGlobalClient(): LlmClient;
6
+ export declare function hasGlobalClient(): boolean;
7
+ export declare function initializeClient(options: {
8
+ fs: FileSystem;
9
+ credentialsPath: string;
10
+ baseUrl: string;
11
+ httpClient?: HttpClient;
12
+ }): Promise<void>;
@@ -0,0 +1,36 @@
1
+ import { AuthenticationError } from "../cli/errors.js";
2
+ import { loadCredentials } from "./credentials.js";
3
+ import { createPoeClient } from "./llm-client.js";
4
+ let globalClient = null;
5
+ export function setGlobalClient(client) {
6
+ globalClient = client;
7
+ }
8
+ export function getGlobalClient() {
9
+ if (!globalClient) {
10
+ throw new Error("LLM client not initialized. Call setGlobalClient() first.");
11
+ }
12
+ return globalClient;
13
+ }
14
+ export function hasGlobalClient() {
15
+ return globalClient !== null;
16
+ }
17
+ export async function initializeClient(options) {
18
+ // Don't reinitialize if a client is already set (e.g., in tests)
19
+ if (globalClient !== null) {
20
+ return;
21
+ }
22
+ const apiKey = await loadCredentials({
23
+ fs: options.fs,
24
+ filePath: options.credentialsPath
25
+ });
26
+ if (!apiKey) {
27
+ throw new AuthenticationError("Poe API key not found. Run 'poe-code login' first.");
28
+ }
29
+ const client = createPoeClient({
30
+ apiKey,
31
+ baseUrl: options.baseUrl,
32
+ httpClient: options.httpClient
33
+ });
34
+ setGlobalClient(client);
35
+ }
36
+ //# sourceMappingURL=client-instance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-instance.js","sourceRoot":"","sources":["../../src/services/client-instance.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,IAAI,YAAY,GAAqB,IAAI,CAAC;AAE1C,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,YAAY,GAAG,MAAM,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,YAAY,KAAK,IAAI,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAKtC;IACC,iEAAiE;IACjE,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,QAAQ,EAAE,OAAO,CAAC,eAAe;KAClC,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,mBAAmB,CAC3B,oDAAoD,CACrD,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC;QAC7B,MAAM;QACN,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC,CAAC;IAEH,eAAe,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { HttpClient } from "../cli/http.js";
2
+ export interface LlmRequest {
3
+ model: string;
4
+ prompt: string;
5
+ params?: Record<string, string>;
6
+ }
7
+ export interface LlmResponse {
8
+ content?: string;
9
+ url?: string;
10
+ mimeType?: string;
11
+ }
12
+ export interface LlmClient {
13
+ text(request: LlmRequest): Promise<LlmResponse>;
14
+ media(type: "image" | "video" | "audio", request: LlmRequest): Promise<LlmResponse>;
15
+ }
16
+ export interface PoeClientOptions {
17
+ apiKey: string;
18
+ baseUrl: string;
19
+ httpClient?: HttpClient;
20
+ }
21
+ export declare function createPoeClient(options: PoeClientOptions): LlmClient;
@@ -0,0 +1,131 @@
1
+ import { ApiError } from "../cli/errors.js";
2
+ export function createPoeClient(options) {
3
+ const httpClient = options.httpClient ?? createDefaultHttpClient();
4
+ return {
5
+ async text(request) {
6
+ const data = await requestCompletion(httpClient, options.baseUrl, options.apiKey, request);
7
+ return { content: extractTextContent(data) };
8
+ },
9
+ async media(_type, request) {
10
+ const data = await requestCompletion(httpClient, options.baseUrl, options.apiKey, request);
11
+ return extractMediaFromCompletion(data);
12
+ }
13
+ };
14
+ }
15
+ function createDefaultHttpClient() {
16
+ return async (url, init) => {
17
+ const response = await globalThis.fetch(url, init);
18
+ return {
19
+ ok: response.ok,
20
+ status: response.status,
21
+ json: () => response.json(),
22
+ text: () => response.text()
23
+ };
24
+ };
25
+ }
26
+ async function requestCompletion(httpClient, baseUrl, apiKey, request) {
27
+ const body = {
28
+ model: request.model,
29
+ messages: [{ role: "user", content: request.prompt }]
30
+ };
31
+ if (request.params && Object.keys(request.params).length > 0) {
32
+ body.extra_body = request.params;
33
+ }
34
+ const response = await httpClient(`${baseUrl}/chat/completions`, {
35
+ method: "POST",
36
+ headers: {
37
+ "Content-Type": "application/json",
38
+ Authorization: `Bearer ${apiKey}`
39
+ },
40
+ body: JSON.stringify(body)
41
+ });
42
+ if (!response.ok) {
43
+ const detail = await readErrorBody(response);
44
+ const message = detail ? `Poe API error (${response.status}): ${detail}` : `Poe API error (${response.status})`;
45
+ throw new ApiError(message, {
46
+ httpStatus: response.status,
47
+ endpoint: "chat/completions",
48
+ context: detail ? { responseBody: detail } : undefined
49
+ });
50
+ }
51
+ return response.json();
52
+ }
53
+ async function readErrorBody(response) {
54
+ if (!response.text) {
55
+ return undefined;
56
+ }
57
+ try {
58
+ const text = await response.text();
59
+ return text?.trim() || undefined;
60
+ }
61
+ catch {
62
+ return undefined;
63
+ }
64
+ }
65
+ function extractTextContent(data) {
66
+ if (!isRecord(data))
67
+ return undefined;
68
+ const choices = data.choices;
69
+ if (!Array.isArray(choices) || choices.length === 0)
70
+ return undefined;
71
+ const first = choices[0];
72
+ if (!isRecord(first))
73
+ return undefined;
74
+ const message = first.message;
75
+ if (!isRecord(message))
76
+ return undefined;
77
+ return typeof message.content === "string" ? message.content : undefined;
78
+ }
79
+ function extractMediaFromCompletion(data) {
80
+ const content = extractTextContent(data);
81
+ if (!content)
82
+ return {};
83
+ // Try parsing as JSON first (API returns { url, mimeType })
84
+ try {
85
+ const parsed = JSON.parse(content);
86
+ if (isRecord(parsed) && typeof parsed.url === "string") {
87
+ return {
88
+ url: parsed.url,
89
+ mimeType: typeof parsed.mimeType === "string" ? parsed.mimeType : undefined
90
+ };
91
+ }
92
+ }
93
+ catch {
94
+ // Not JSON, continue
95
+ }
96
+ // Try as raw URL
97
+ if (isValidUrl(content.trim())) {
98
+ return { url: content.trim() };
99
+ }
100
+ // Try extracting URL from markdown (e.g., "![image](url)")
101
+ const markdownUrl = extractMarkdownUrl(content);
102
+ if (markdownUrl) {
103
+ return { url: markdownUrl };
104
+ }
105
+ // No URL found, return content for error message
106
+ return { content };
107
+ }
108
+ function extractMarkdownUrl(content) {
109
+ const start = content.indexOf("](");
110
+ if (start === -1)
111
+ return undefined;
112
+ const urlStart = start + 2;
113
+ const end = content.indexOf(")", urlStart);
114
+ if (end === -1)
115
+ return undefined;
116
+ const url = content.slice(urlStart, end);
117
+ return isValidUrl(url) ? url : undefined;
118
+ }
119
+ function isValidUrl(value) {
120
+ try {
121
+ new URL(value);
122
+ return true;
123
+ }
124
+ catch {
125
+ return false;
126
+ }
127
+ }
128
+ function isRecord(value) {
129
+ return Boolean(value && typeof value === "object" && !Array.isArray(value));
130
+ }
131
+ //# sourceMappingURL=llm-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-client.js","sourceRoot":"","sources":["../../src/services/llm-client.ts"],"names":[],"mappings":"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"}