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
|
@@ -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;
|
|
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"}
|
package/dist/providers/kimi.js
CHANGED
|
@@ -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":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAa5D,MAAM,cAAc,GAAiC;IACnD,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,iBAAiB;CACzB,CAAC;AAEF,MAAM,cAAc,GAAiC;IACnD,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,iBAAiB;IACxB,KAAK,EAAE,iBAAiB;CACzB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAc,EACd,UAA2B,EAAE;IAE7B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QACjC,KAAK;QACL,MAAM;QACN,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAc,EACd,UAAgC,EAAE;IAElC,OAAO,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAc,EACd,UAAgC,EAAE;IAElC,OAAO,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAc,EACd,UAAgC,EAAE;IAElC,OAAO,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,IAAe,EACf,MAAc,EACd,OAA6B;IAE7B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;QACxC,KAAK;QACL,MAAM;QACN,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,eAAe,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,IAAI,CAAC;QACH,OAAO,eAAe,EAAE,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,eAAe,CAAC;YAC7B,MAAM;YACN,OAAO;SACR,CAAC,CAAC;QACH,eAAe,CAAC,MAAM,CAAC,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,IAAkB,EAClB,OAAwB;IAExB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC,KAAK,CAAC;IACvB,CAAC;IACD,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,OAAO,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAyB;IAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAyB;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IACD,OAAO,wBAAwB,CAAC;AAClC,CAAC"}
|
package/dist/sdk/types.d.ts
CHANGED
|
@@ -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., "")
|
|
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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"}
|