openrouter-genimage-kote-opencode 0.1.0
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/.opencode/skills/openrouter-image-generation/SKILL.md +379 -0
- package/CHANGELOG.md +10 -0
- package/LICENSE +21 -0
- package/README.md +229 -0
- package/README.ru.md +229 -0
- package/SECURITY.md +31 -0
- package/THIRD_PARTY_NOTICES.md +16 -0
- package/dist/cli.d.ts +20 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +277 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/balance-command.d.ts +5 -0
- package/dist/commands/balance-command.d.ts.map +1 -0
- package/dist/commands/balance-command.js +20 -0
- package/dist/commands/balance-command.js.map +1 -0
- package/dist/config/resolve.d.ts +5 -0
- package/dist/config/resolve.d.ts.map +1 -0
- package/dist/config/resolve.js +113 -0
- package/dist/config/resolve.js.map +1 -0
- package/dist/config/schema.d.ts +188 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +144 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/types.d.ts +75 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +30 -0
- package/dist/config/types.js.map +1 -0
- package/dist/logging.d.ts +46 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +58 -0
- package/dist/logging.js.map +1 -0
- package/dist/openrouter/capabilities.d.ts +22 -0
- package/dist/openrouter/capabilities.d.ts.map +1 -0
- package/dist/openrouter/capabilities.js +137 -0
- package/dist/openrouter/capabilities.js.map +1 -0
- package/dist/openrouter/client.d.ts +54 -0
- package/dist/openrouter/client.d.ts.map +1 -0
- package/dist/openrouter/client.js +440 -0
- package/dist/openrouter/client.js.map +1 -0
- package/dist/openrouter/errors.d.ts +22 -0
- package/dist/openrouter/errors.d.ts.map +1 -0
- package/dist/openrouter/errors.js +75 -0
- package/dist/openrouter/errors.js.map +1 -0
- package/dist/openrouter/models.d.ts +37 -0
- package/dist/openrouter/models.d.ts.map +1 -0
- package/dist/openrouter/models.js +113 -0
- package/dist/openrouter/models.js.map +1 -0
- package/dist/openrouter/requests.d.ts +6 -0
- package/dist/openrouter/requests.d.ts.map +1 -0
- package/dist/openrouter/requests.js +74 -0
- package/dist/openrouter/requests.js.map +1 -0
- package/dist/openrouter/schemas.d.ts +37 -0
- package/dist/openrouter/schemas.d.ts.map +1 -0
- package/dist/openrouter/schemas.js +2 -0
- package/dist/openrouter/schemas.js.map +1 -0
- package/dist/output/attachments.d.ts +10 -0
- package/dist/output/attachments.d.ts.map +1 -0
- package/dist/output/attachments.js +13 -0
- package/dist/output/attachments.js.map +1 -0
- package/dist/output/formats.d.ts +42 -0
- package/dist/output/formats.d.ts.map +1 -0
- package/dist/output/formats.js +126 -0
- package/dist/output/formats.js.map +1 -0
- package/dist/output/index.d.ts +5 -0
- package/dist/output/index.d.ts.map +1 -0
- package/dist/output/index.js +5 -0
- package/dist/output/index.js.map +1 -0
- package/dist/output/paths.d.ts +38 -0
- package/dist/output/paths.d.ts.map +1 -0
- package/dist/output/paths.js +296 -0
- package/dist/output/paths.js.map +1 -0
- package/dist/output/writer.d.ts +33 -0
- package/dist/output/writer.d.ts.map +1 -0
- package/dist/output/writer.js +176 -0
- package/dist/output/writer.js.map +1 -0
- package/dist/references/attachments.d.ts +82 -0
- package/dist/references/attachments.d.ts.map +1 -0
- package/dist/references/attachments.js +238 -0
- package/dist/references/attachments.js.map +1 -0
- package/dist/references/data-url.d.ts +12 -0
- package/dist/references/data-url.d.ts.map +1 -0
- package/dist/references/data-url.js +75 -0
- package/dist/references/data-url.js.map +1 -0
- package/dist/references/formats.d.ts +13 -0
- package/dist/references/formats.d.ts.map +1 -0
- package/dist/references/formats.js +50 -0
- package/dist/references/formats.js.map +1 -0
- package/dist/references/index.d.ts +7 -0
- package/dist/references/index.d.ts.map +1 -0
- package/dist/references/index.js +7 -0
- package/dist/references/index.js.map +1 -0
- package/dist/references/limits.d.ts +15 -0
- package/dist/references/limits.d.ts.map +1 -0
- package/dist/references/limits.js +62 -0
- package/dist/references/limits.js.map +1 -0
- package/dist/references/project-files.d.ts +13 -0
- package/dist/references/project-files.d.ts.map +1 -0
- package/dist/references/project-files.js +148 -0
- package/dist/references/project-files.js.map +1 -0
- package/dist/references/remote-urls.d.ts +3 -0
- package/dist/references/remote-urls.d.ts.map +1 -0
- package/dist/references/remote-urls.js +22 -0
- package/dist/references/remote-urls.js.map +1 -0
- package/dist/server.d.ts +8 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +97 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/balance.d.ts +8 -0
- package/dist/tools/balance.d.ts.map +1 -0
- package/dist/tools/balance.js +133 -0
- package/dist/tools/balance.js.map +1 -0
- package/dist/tools/common.d.ts +3 -0
- package/dist/tools/common.d.ts.map +1 -0
- package/dist/tools/common.js +18 -0
- package/dist/tools/common.js.map +1 -0
- package/dist/tools/edit-image.d.ts +90 -0
- package/dist/tools/edit-image.d.ts.map +1 -0
- package/dist/tools/edit-image.js +47 -0
- package/dist/tools/edit-image.js.map +1 -0
- package/dist/tools/generate-image.d.ts +70 -0
- package/dist/tools/generate-image.d.ts.map +1 -0
- package/dist/tools/generate-image.js +36 -0
- package/dist/tools/generate-image.js.map +1 -0
- package/dist/tools/generation.d.ts +19 -0
- package/dist/tools/generation.d.ts.map +1 -0
- package/dist/tools/generation.js +154 -0
- package/dist/tools/generation.js.map +1 -0
- package/dist/tools/schema.d.ts +127 -0
- package/dist/tools/schema.d.ts.map +1 -0
- package/dist/tools/schema.js +47 -0
- package/dist/tools/schema.js.map +1 -0
- package/dist/tools/types.d.ts +18 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/transport/direct.d.ts +10 -0
- package/dist/transport/direct.d.ts.map +1 -0
- package/dist/transport/direct.js +15 -0
- package/dist/transport/direct.js.map +1 -0
- package/dist/transport/index.d.ts +4 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +4 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/kote-gateway.d.ts +19 -0
- package/dist/transport/kote-gateway.d.ts.map +1 -0
- package/dist/transport/kote-gateway.js +224 -0
- package/dist/transport/kote-gateway.js.map +1 -0
- package/dist/transport/types.d.ts +10 -0
- package/dist/transport/types.d.ts.map +1 -0
- package/dist/transport/types.js +9 -0
- package/dist/transport/types.js.map +1 -0
- package/dist/utils/abort.d.ts +19 -0
- package/dist/utils/abort.d.ts.map +1 -0
- package/dist/utils/abort.js +121 -0
- package/dist/utils/abort.js.map +1 -0
- package/docs/architecture.md +75 -0
- package/docs/configuration.md +110 -0
- package/docs/image-to-image.md +101 -0
- package/docs/security.md +49 -0
- package/docs/testing.md +81 -0
- package/docs/troubleshooting.md +73 -0
- package/package.json +88 -0
- package/schema/plugin-options.schema.json +182 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { tool } from "@opencode-ai/plugin";
|
|
2
|
+
import { requireResolvedPluginOptions } from "../config/resolve.js";
|
|
3
|
+
import { buildImageToImageRequest } from "../openrouter/requests.js";
|
|
4
|
+
import { resolveImageReferences } from "../references/attachments.js";
|
|
5
|
+
import { runToolOperation } from "./common.js";
|
|
6
|
+
import { finishGeneration, preflightOutput } from "./generation.js";
|
|
7
|
+
import { editToolArgs } from "./schema.js";
|
|
8
|
+
export function createEditImageTool(dependencies) {
|
|
9
|
+
return tool({
|
|
10
|
+
description: `Edit, transform, or create a new raster image from one or more visual references using the OpenRouter image model configured by the user.
|
|
11
|
+
|
|
12
|
+
Use this tool when the user wants to modify an attached image, create a variation, preserve a character or object, transfer a style, or create a new asset based on visual references.
|
|
13
|
+
|
|
14
|
+
The operation may incur OpenRouter charges.`,
|
|
15
|
+
args: editToolArgs,
|
|
16
|
+
async execute(args, context) {
|
|
17
|
+
return runToolOperation(dependencies.logger, async () => {
|
|
18
|
+
const options = requireResolvedPluginOptions(dependencies.configState);
|
|
19
|
+
const runtime = dependencies.getRuntime();
|
|
20
|
+
const { references: referenceArgs, ...generationArgs } = args;
|
|
21
|
+
const references = await resolveImageReferences({
|
|
22
|
+
references: referenceArgs,
|
|
23
|
+
context,
|
|
24
|
+
client: dependencies.messageClient,
|
|
25
|
+
serverUrl: dependencies.serverUrl,
|
|
26
|
+
limits: options.input,
|
|
27
|
+
promptLength: Array.from(args.prompt).length,
|
|
28
|
+
});
|
|
29
|
+
await preflightOutput(runtime, args, context, references.canonicalSourcePaths);
|
|
30
|
+
const request = buildImageToImageRequest(options, generationArgs, references.inputReferences);
|
|
31
|
+
await runtime.capabilities.validate("edit", request, context.abort);
|
|
32
|
+
const response = await runtime.client.generateImage(request, context.abort);
|
|
33
|
+
return finishGeneration({
|
|
34
|
+
operation: "edit",
|
|
35
|
+
args,
|
|
36
|
+
request,
|
|
37
|
+
response,
|
|
38
|
+
runtime,
|
|
39
|
+
dependencies,
|
|
40
|
+
context,
|
|
41
|
+
references,
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=edit-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-image.js","sourceRoot":"","sources":["../../src/tools/edit-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE1C,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAA;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG1C,MAAM,UAAU,mBAAmB,CAAC,YAA8B;IAChE,OAAO,IAAI,CAAC;QACV,WAAW,EAAE;;;;4CAI2B;QACxC,IAAI,EAAE,YAAY;QAClB,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO;YACzB,OAAO,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;gBACtD,MAAM,OAAO,GAAG,4BAA4B,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;gBACtE,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,CAAA;gBACzC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,cAAc,EAAE,GAAG,IAAI,CAAA;gBAC7D,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAAC;oBAC9C,UAAU,EAAE,aAAa;oBACzB,OAAO;oBACP,MAAM,EAAE,YAAY,CAAC,aAAa;oBAClC,SAAS,EAAE,YAAY,CAAC,SAAS;oBACjC,MAAM,EAAE,OAAO,CAAC,KAAK;oBACrB,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM;iBAC7C,CAAC,CAAA;gBACF,MAAM,eAAe,CACnB,OAAO,EACP,IAAI,EACJ,OAAO,EACP,UAAU,CAAC,oBAAoB,CAChC,CAAA;gBACD,MAAM,OAAO,GAAG,wBAAwB,CACtC,OAAO,EACP,cAAc,EACd,UAAU,CAAC,eAAe,CAC3B,CAAA;gBACD,MAAM,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;gBACnE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;gBAC3E,OAAO,gBAAgB,CAAC;oBACtB,SAAS,EAAE,MAAM;oBACjB,IAAI;oBACJ,OAAO;oBACP,QAAQ;oBACR,OAAO;oBACP,YAAY;oBACZ,OAAO;oBACP,UAAU;iBACX,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { ToolDependencies } from "./types.js";
|
|
2
|
+
export declare function createGenerateImageTool(dependencies: ToolDependencies): {
|
|
3
|
+
description: string;
|
|
4
|
+
args: {
|
|
5
|
+
prompt: import("zod").ZodString;
|
|
6
|
+
output_path: import("zod").ZodOptional<import("zod").ZodString>;
|
|
7
|
+
aspect_ratio: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
8
|
+
auto: "auto";
|
|
9
|
+
"1:1": "1:1";
|
|
10
|
+
"1:2": "1:2";
|
|
11
|
+
"1:4": "1:4";
|
|
12
|
+
"1:8": "1:8";
|
|
13
|
+
"2:1": "2:1";
|
|
14
|
+
"2:3": "2:3";
|
|
15
|
+
"3:2": "3:2";
|
|
16
|
+
"3:4": "3:4";
|
|
17
|
+
"4:1": "4:1";
|
|
18
|
+
"4:3": "4:3";
|
|
19
|
+
"4:5": "4:5";
|
|
20
|
+
"5:4": "5:4";
|
|
21
|
+
"8:1": "8:1";
|
|
22
|
+
"9:16": "9:16";
|
|
23
|
+
"16:9": "16:9";
|
|
24
|
+
"9:19.5": "9:19.5";
|
|
25
|
+
"19.5:9": "19.5:9";
|
|
26
|
+
"9:20": "9:20";
|
|
27
|
+
"20:9": "20:9";
|
|
28
|
+
"9:21": "9:21";
|
|
29
|
+
"21:9": "21:9";
|
|
30
|
+
}>>;
|
|
31
|
+
background: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
32
|
+
transparent: "transparent";
|
|
33
|
+
auto: "auto";
|
|
34
|
+
opaque: "opaque";
|
|
35
|
+
}>>;
|
|
36
|
+
n: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
37
|
+
output_format: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
38
|
+
png: "png";
|
|
39
|
+
jpeg: "jpeg";
|
|
40
|
+
webp: "webp";
|
|
41
|
+
}>>;
|
|
42
|
+
output_compression: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
43
|
+
quality: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
44
|
+
auto: "auto";
|
|
45
|
+
high: "high";
|
|
46
|
+
low: "low";
|
|
47
|
+
medium: "medium";
|
|
48
|
+
}>>;
|
|
49
|
+
resolution: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
50
|
+
512: "512";
|
|
51
|
+
"1K": "1K";
|
|
52
|
+
"2K": "2K";
|
|
53
|
+
"4K": "4K";
|
|
54
|
+
}>>;
|
|
55
|
+
seed: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
56
|
+
};
|
|
57
|
+
execute(args: {
|
|
58
|
+
prompt: string;
|
|
59
|
+
output_path?: string | undefined;
|
|
60
|
+
aspect_ratio?: "auto" | "1:1" | "1:2" | "1:4" | "1:8" | "2:1" | "2:3" | "3:2" | "3:4" | "4:1" | "4:3" | "4:5" | "5:4" | "8:1" | "9:16" | "16:9" | "9:19.5" | "19.5:9" | "9:20" | "20:9" | "9:21" | "21:9" | undefined;
|
|
61
|
+
background?: "transparent" | "auto" | "opaque" | undefined;
|
|
62
|
+
n?: number | undefined;
|
|
63
|
+
output_format?: "png" | "jpeg" | "webp" | undefined;
|
|
64
|
+
output_compression?: number | undefined;
|
|
65
|
+
quality?: "auto" | "high" | "low" | "medium" | undefined;
|
|
66
|
+
resolution?: "512" | "1K" | "2K" | "4K" | undefined;
|
|
67
|
+
seed?: number | undefined;
|
|
68
|
+
}, context: import("@opencode-ai/plugin").ToolContext): Promise<import("@opencode-ai/plugin").ToolResult>;
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=generate-image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-image.d.ts","sourceRoot":"","sources":["../../src/tools/generate-image.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BrE"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { tool } from "@opencode-ai/plugin";
|
|
2
|
+
import { requireResolvedPluginOptions } from "../config/resolve.js";
|
|
3
|
+
import { buildTextToImageRequest } from "../openrouter/requests.js";
|
|
4
|
+
import { runToolOperation } from "./common.js";
|
|
5
|
+
import { finishGeneration, preflightOutput } from "./generation.js";
|
|
6
|
+
import { generationToolArgs } from "./schema.js";
|
|
7
|
+
export function createGenerateImageTool(dependencies) {
|
|
8
|
+
return tool({
|
|
9
|
+
description: `Generate a completely new raster image from a text prompt using the OpenRouter image model configured by the user.
|
|
10
|
+
|
|
11
|
+
Use this tool only when the user requests a new image or asset and no existing image needs to be preserved or used as a visual reference.
|
|
12
|
+
|
|
13
|
+
The operation may incur OpenRouter charges.`,
|
|
14
|
+
args: generationToolArgs,
|
|
15
|
+
async execute(args, context) {
|
|
16
|
+
return runToolOperation(dependencies.logger, async () => {
|
|
17
|
+
const options = requireResolvedPluginOptions(dependencies.configState);
|
|
18
|
+
const runtime = dependencies.getRuntime();
|
|
19
|
+
const request = buildTextToImageRequest(options, args);
|
|
20
|
+
await preflightOutput(runtime, args, context);
|
|
21
|
+
await runtime.capabilities.validate("generate", request, context.abort);
|
|
22
|
+
const response = await runtime.client.generateImage(request, context.abort);
|
|
23
|
+
return finishGeneration({
|
|
24
|
+
operation: "generate",
|
|
25
|
+
args,
|
|
26
|
+
request,
|
|
27
|
+
response,
|
|
28
|
+
runtime,
|
|
29
|
+
dependencies,
|
|
30
|
+
context,
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=generate-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-image.js","sourceRoot":"","sources":["../../src/tools/generate-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE1C,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAA;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAGhD,MAAM,UAAU,uBAAuB,CAAC,YAA8B;IACpE,OAAO,IAAI,CAAC;QACV,WAAW,EAAE;;;;4CAI2B;QACxC,IAAI,EAAE,kBAAkB;QACxB,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO;YACzB,OAAO,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;gBACtD,MAAM,OAAO,GAAG,4BAA4B,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;gBACtE,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,CAAA;gBACzC,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gBAEtD,MAAM,eAAe,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;gBAC7C,MAAM,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;gBACvE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;gBAC3E,OAAO,gBAAgB,CAAC;oBACtB,SAAS,EAAE,UAAU;oBACrB,IAAI;oBACJ,OAAO;oBACP,QAAQ;oBACR,OAAO;oBACP,YAAY;oBACZ,OAAO;iBACR,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ToolContext, ToolResult } from "@opencode-ai/plugin";
|
|
2
|
+
import type { GenerateImageArgs, OpenRouterImageRequest, OpenRouterImageResponse } from "../openrouter/schemas.js";
|
|
3
|
+
import type { ResolvedReferences } from "../references/attachments.js";
|
|
4
|
+
import type { RuntimeServices, ToolDependencies } from "./types.js";
|
|
5
|
+
export type GenerationOperation = "edit" | "generate";
|
|
6
|
+
interface FinishGenerationOptions {
|
|
7
|
+
operation: GenerationOperation;
|
|
8
|
+
args: GenerateImageArgs;
|
|
9
|
+
request: OpenRouterImageRequest;
|
|
10
|
+
response: OpenRouterImageResponse;
|
|
11
|
+
runtime: RuntimeServices;
|
|
12
|
+
dependencies: ToolDependencies;
|
|
13
|
+
context: ToolContext;
|
|
14
|
+
references?: ResolvedReferences;
|
|
15
|
+
}
|
|
16
|
+
export declare function preflightOutput(runtime: RuntimeServices, args: GenerateImageArgs, context: ToolContext, sourcePaths?: ReadonlySet<string>): Promise<void>;
|
|
17
|
+
export declare function finishGeneration(options: FinishGenerationOptions): Promise<ToolResult>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=generation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generation.d.ts","sourceRoot":"","sources":["../../src/tools/generation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAIlE,OAAO,KAAK,EACV,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,0BAA0B,CAAA;AAcjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAEnE,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,UAAU,CAAA;AAErD,UAAU,uBAAuB;IAC/B,SAAS,EAAE,mBAAmB,CAAA;IAC9B,IAAI,EAAE,iBAAiB,CAAA;IACvB,OAAO,EAAE,sBAAsB,CAAA;IAC/B,QAAQ,EAAE,uBAAuB,CAAA;IACjC,OAAO,EAAE,eAAe,CAAA;IACxB,YAAY,EAAE,gBAAgB,CAAA;IAC9B,OAAO,EAAE,WAAW,CAAA;IACpB,UAAU,CAAC,EAAE,kBAAkB,CAAA;CAChC;AA+DD,wBAAsB,eAAe,CACnC,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,WAAW,EACpB,WAAW,GAAE,WAAW,CAAC,MAAM,CAAa,GAC3C,OAAO,CAAC,IAAI,CAAC,CA6Cf;AAiDD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,UAAU,CAAC,CA0DrB"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { realpath } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { promptFingerprint } from "../logging.js";
|
|
4
|
+
import { PluginError } from "../openrouter/errors.js";
|
|
5
|
+
import { ImageSaveError, assertOutputParentContained, assertSafeOutputRelativePath, createToolAttachments, decodeOutputImages, saveImages, } from "../output/index.js";
|
|
6
|
+
import { isPathInside, sameCanonicalPath, } from "../references/project-files.js";
|
|
7
|
+
function isMissingPathError(error) {
|
|
8
|
+
return (typeof error === "object" &&
|
|
9
|
+
error !== null &&
|
|
10
|
+
"code" in error &&
|
|
11
|
+
error.code === "ENOENT");
|
|
12
|
+
}
|
|
13
|
+
async function canonicalizeExistingOutput(absolute) {
|
|
14
|
+
try {
|
|
15
|
+
return await realpath(absolute);
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
if (isMissingPathError(error))
|
|
19
|
+
return undefined;
|
|
20
|
+
throw new PluginError("GENIMAGE_OUTPUT_WRITE_FAILED", "The output path could not be inspected before generation.", { cause: error });
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function isRecord(value) {
|
|
24
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
25
|
+
}
|
|
26
|
+
function responseData(response) {
|
|
27
|
+
if (!isRecord(response) || !Array.isArray(response.data) || response.data.length === 0) {
|
|
28
|
+
throw new PluginError("GENIMAGE_RESPONSE_INVALID", "OpenRouter returned no generated images.");
|
|
29
|
+
}
|
|
30
|
+
if (response.data.length > 10) {
|
|
31
|
+
throw new PluginError("GENIMAGE_RESPONSE_INVALID", "OpenRouter returned more than the maximum of 10 images.");
|
|
32
|
+
}
|
|
33
|
+
return response.data;
|
|
34
|
+
}
|
|
35
|
+
function responseCost(response) {
|
|
36
|
+
if (!isRecord(response) || !isRecord(response.usage))
|
|
37
|
+
return undefined;
|
|
38
|
+
const cost = response.usage.cost;
|
|
39
|
+
return typeof cost === "number" && Number.isFinite(cost) && cost >= 0
|
|
40
|
+
? cost
|
|
41
|
+
: undefined;
|
|
42
|
+
}
|
|
43
|
+
function formatCost(value) {
|
|
44
|
+
if (value === undefined)
|
|
45
|
+
return "not reported";
|
|
46
|
+
if (value !== 0 && value < 0.000001)
|
|
47
|
+
return `$${value.toExponential(6)}`;
|
|
48
|
+
return `$${value.toFixed(6)}`;
|
|
49
|
+
}
|
|
50
|
+
export async function preflightOutput(runtime, args, context, sourcePaths = new Set()) {
|
|
51
|
+
const configuredDirectory = assertSafeOutputRelativePath(runtime.options.outputDirectory, "directory");
|
|
52
|
+
const relative = args.output_path === undefined
|
|
53
|
+
? configuredDirectory
|
|
54
|
+
: assertSafeOutputRelativePath(args.output_path);
|
|
55
|
+
const canonicalWorktree = await realpath(context.worktree);
|
|
56
|
+
const absolute = path.resolve(canonicalWorktree, relative.replaceAll("/", path.sep));
|
|
57
|
+
await assertOutputParentContained(canonicalWorktree, args.output_path === undefined ? absolute : path.dirname(absolute));
|
|
58
|
+
const canonicalOutput = args.output_path === undefined
|
|
59
|
+
? undefined
|
|
60
|
+
: await canonicalizeExistingOutput(absolute);
|
|
61
|
+
if (canonicalOutput !== undefined &&
|
|
62
|
+
!isPathInside(canonicalWorktree, canonicalOutput)) {
|
|
63
|
+
throw new PluginError("GENIMAGE_OUTPUT_OUTSIDE_WORKTREE", "The output path resolves outside the OpenCode worktree.");
|
|
64
|
+
}
|
|
65
|
+
if ([...sourcePaths].some((source) => sameCanonicalPath(source, absolute) ||
|
|
66
|
+
(canonicalOutput !== undefined &&
|
|
67
|
+
sameCanonicalPath(source, canonicalOutput)))) {
|
|
68
|
+
throw new PluginError("GENIMAGE_SOURCE_OVERWRITE_FORBIDDEN", "The output path may not overwrite a source image.");
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
function toolResult(operation, runtime, saved, requestedCount, referenceCount, costUsd, warnings) {
|
|
72
|
+
const verb = operation === "edit" ? "Edited" : "Generated";
|
|
73
|
+
const lines = [
|
|
74
|
+
`${verb} ${saved.length} image${saved.length === 1 ? "" : "s"}.`,
|
|
75
|
+
"",
|
|
76
|
+
...saved.map((image) => `- \`${image.relativePath}\``),
|
|
77
|
+
"",
|
|
78
|
+
`Model: ${runtime.options.model}`,
|
|
79
|
+
`Routing: ${runtime.options.routing}`,
|
|
80
|
+
`References: ${referenceCount}`,
|
|
81
|
+
`Requested: ${requestedCount}`,
|
|
82
|
+
`Returned: ${saved.length}`,
|
|
83
|
+
`OpenRouter cost: ${formatCost(costUsd)}`,
|
|
84
|
+
];
|
|
85
|
+
if (warnings.length > 0) {
|
|
86
|
+
lines.push("", "Warnings:", ...warnings.map((warning) => `- ${warning}`));
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
title: `${verb} ${saved.length} image${saved.length === 1 ? "" : "s"}`,
|
|
90
|
+
output: lines.join("\n"),
|
|
91
|
+
metadata: {
|
|
92
|
+
model: runtime.options.model,
|
|
93
|
+
routing: runtime.options.routing,
|
|
94
|
+
referenceCount,
|
|
95
|
+
requestedCount,
|
|
96
|
+
returnedCount: saved.length,
|
|
97
|
+
...(costUsd === undefined ? {} : { costUsd }),
|
|
98
|
+
images: saved.map((image) => ({
|
|
99
|
+
path: image.relativePath,
|
|
100
|
+
mime: image.mime,
|
|
101
|
+
bytes: image.bytes,
|
|
102
|
+
})),
|
|
103
|
+
warnings: [...warnings],
|
|
104
|
+
},
|
|
105
|
+
attachments: createToolAttachments(saved),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
export async function finishGeneration(options) {
|
|
109
|
+
const rawImages = responseData(options.response);
|
|
110
|
+
const requestedCount = options.request.n ?? 1;
|
|
111
|
+
const decoded = decodeOutputImages(rawImages, {
|
|
112
|
+
maxDecodedBytes: options.runtime.options.maxDecodedBytes,
|
|
113
|
+
...(options.request.output_format === undefined
|
|
114
|
+
? {}
|
|
115
|
+
: { expectedFormat: options.request.output_format }),
|
|
116
|
+
});
|
|
117
|
+
const warnings = [...decoded.warnings];
|
|
118
|
+
if (rawImages.length < requestedCount) {
|
|
119
|
+
warnings.push(`OpenRouter returned ${rawImages.length} image(s), fewer than the ${requestedCount} requested.`);
|
|
120
|
+
}
|
|
121
|
+
let saved;
|
|
122
|
+
try {
|
|
123
|
+
saved = await saveImages({
|
|
124
|
+
images: decoded.images,
|
|
125
|
+
outputDirectory: options.runtime.options.outputDirectory,
|
|
126
|
+
...(options.args.output_path === undefined
|
|
127
|
+
? {}
|
|
128
|
+
: { outputPath: options.args.output_path }),
|
|
129
|
+
worktree: options.context.worktree,
|
|
130
|
+
sourcePaths: [...(options.references?.canonicalSourcePaths ?? [])],
|
|
131
|
+
signal: options.context.abort,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
if (!(error instanceof ImageSaveError) || error.savedImages.length === 0)
|
|
136
|
+
throw error;
|
|
137
|
+
saved = [...error.savedImages];
|
|
138
|
+
warnings.push(`${saved.length} image(s) were saved before a later output write failed (${error.code}).`);
|
|
139
|
+
}
|
|
140
|
+
warnings.push(...saved.flatMap((image) => image.warnings));
|
|
141
|
+
const uniqueWarnings = [...new Set(warnings)];
|
|
142
|
+
options.dependencies.logger.log("info", "OpenRouter image generation completed.", {
|
|
143
|
+
routing: options.runtime.options.routing,
|
|
144
|
+
model: options.runtime.options.model,
|
|
145
|
+
referenceCount: options.references?.references.length ?? 0,
|
|
146
|
+
inputBytes: options.references?.localBytes ?? 0,
|
|
147
|
+
outputBytes: saved.reduce((total, image) => total + image.bytes, 0),
|
|
148
|
+
requestedCount,
|
|
149
|
+
returnedCount: saved.length,
|
|
150
|
+
...promptFingerprint(options.args.prompt),
|
|
151
|
+
});
|
|
152
|
+
return toolResult(options.operation, options.runtime, saved, requestedCount, options.references?.references.length ?? 0, responseCost(options.response), uniqueWarnings);
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=generation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generation.js","sourceRoot":"","sources":["../../src/tools/generation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
export declare const generationToolArgs: {
|
|
2
|
+
prompt: import("zod").ZodString;
|
|
3
|
+
output_path: import("zod").ZodOptional<import("zod").ZodString>;
|
|
4
|
+
aspect_ratio: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
5
|
+
auto: "auto";
|
|
6
|
+
"1:1": "1:1";
|
|
7
|
+
"1:2": "1:2";
|
|
8
|
+
"1:4": "1:4";
|
|
9
|
+
"1:8": "1:8";
|
|
10
|
+
"2:1": "2:1";
|
|
11
|
+
"2:3": "2:3";
|
|
12
|
+
"3:2": "3:2";
|
|
13
|
+
"3:4": "3:4";
|
|
14
|
+
"4:1": "4:1";
|
|
15
|
+
"4:3": "4:3";
|
|
16
|
+
"4:5": "4:5";
|
|
17
|
+
"5:4": "5:4";
|
|
18
|
+
"8:1": "8:1";
|
|
19
|
+
"9:16": "9:16";
|
|
20
|
+
"16:9": "16:9";
|
|
21
|
+
"9:19.5": "9:19.5";
|
|
22
|
+
"19.5:9": "19.5:9";
|
|
23
|
+
"9:20": "9:20";
|
|
24
|
+
"20:9": "20:9";
|
|
25
|
+
"9:21": "9:21";
|
|
26
|
+
"21:9": "21:9";
|
|
27
|
+
}>>;
|
|
28
|
+
background: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
29
|
+
transparent: "transparent";
|
|
30
|
+
auto: "auto";
|
|
31
|
+
opaque: "opaque";
|
|
32
|
+
}>>;
|
|
33
|
+
n: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
34
|
+
output_format: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
35
|
+
png: "png";
|
|
36
|
+
jpeg: "jpeg";
|
|
37
|
+
webp: "webp";
|
|
38
|
+
}>>;
|
|
39
|
+
output_compression: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
40
|
+
quality: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
41
|
+
auto: "auto";
|
|
42
|
+
high: "high";
|
|
43
|
+
low: "low";
|
|
44
|
+
medium: "medium";
|
|
45
|
+
}>>;
|
|
46
|
+
resolution: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
47
|
+
512: "512";
|
|
48
|
+
"1K": "1K";
|
|
49
|
+
"2K": "2K";
|
|
50
|
+
"4K": "4K";
|
|
51
|
+
}>>;
|
|
52
|
+
seed: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
53
|
+
};
|
|
54
|
+
export declare const imageReferenceSchema: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
55
|
+
type: import("zod").ZodLiteral<"message_attachment">;
|
|
56
|
+
index: import("zod").ZodNumber;
|
|
57
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
58
|
+
type: import("zod").ZodLiteral<"project_file">;
|
|
59
|
+
path: import("zod").ZodString;
|
|
60
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
61
|
+
type: import("zod").ZodLiteral<"https_url">;
|
|
62
|
+
url: import("zod").ZodString;
|
|
63
|
+
}, import("zod/v4/core").$strict>], "type">;
|
|
64
|
+
export declare const editToolArgs: {
|
|
65
|
+
references: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
|
|
66
|
+
type: import("zod").ZodLiteral<"message_attachment">;
|
|
67
|
+
index: import("zod").ZodNumber;
|
|
68
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
69
|
+
type: import("zod").ZodLiteral<"project_file">;
|
|
70
|
+
path: import("zod").ZodString;
|
|
71
|
+
}, import("zod/v4/core").$strict>, import("zod").ZodObject<{
|
|
72
|
+
type: import("zod").ZodLiteral<"https_url">;
|
|
73
|
+
url: import("zod").ZodString;
|
|
74
|
+
}, import("zod/v4/core").$strict>], "type">>>;
|
|
75
|
+
prompt: import("zod").ZodString;
|
|
76
|
+
output_path: import("zod").ZodOptional<import("zod").ZodString>;
|
|
77
|
+
aspect_ratio: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
78
|
+
auto: "auto";
|
|
79
|
+
"1:1": "1:1";
|
|
80
|
+
"1:2": "1:2";
|
|
81
|
+
"1:4": "1:4";
|
|
82
|
+
"1:8": "1:8";
|
|
83
|
+
"2:1": "2:1";
|
|
84
|
+
"2:3": "2:3";
|
|
85
|
+
"3:2": "3:2";
|
|
86
|
+
"3:4": "3:4";
|
|
87
|
+
"4:1": "4:1";
|
|
88
|
+
"4:3": "4:3";
|
|
89
|
+
"4:5": "4:5";
|
|
90
|
+
"5:4": "5:4";
|
|
91
|
+
"8:1": "8:1";
|
|
92
|
+
"9:16": "9:16";
|
|
93
|
+
"16:9": "16:9";
|
|
94
|
+
"9:19.5": "9:19.5";
|
|
95
|
+
"19.5:9": "19.5:9";
|
|
96
|
+
"9:20": "9:20";
|
|
97
|
+
"20:9": "20:9";
|
|
98
|
+
"9:21": "9:21";
|
|
99
|
+
"21:9": "21:9";
|
|
100
|
+
}>>;
|
|
101
|
+
background: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
102
|
+
transparent: "transparent";
|
|
103
|
+
auto: "auto";
|
|
104
|
+
opaque: "opaque";
|
|
105
|
+
}>>;
|
|
106
|
+
n: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
107
|
+
output_format: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
108
|
+
png: "png";
|
|
109
|
+
jpeg: "jpeg";
|
|
110
|
+
webp: "webp";
|
|
111
|
+
}>>;
|
|
112
|
+
output_compression: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
113
|
+
quality: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
114
|
+
auto: "auto";
|
|
115
|
+
high: "high";
|
|
116
|
+
low: "low";
|
|
117
|
+
medium: "medium";
|
|
118
|
+
}>>;
|
|
119
|
+
resolution: import("zod").ZodOptional<import("zod").ZodEnum<{
|
|
120
|
+
512: "512";
|
|
121
|
+
"1K": "1K";
|
|
122
|
+
"2K": "2K";
|
|
123
|
+
"4K": "4K";
|
|
124
|
+
}>>;
|
|
125
|
+
seed: import("zod").ZodOptional<import("zod").ZodNumber>;
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/tools/schema.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAW9B,CAAA;AAED,eAAO,MAAM,oBAAoB;;;;;;;;;2CAmB/B,CAAA;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGxB,CAAA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { tool } from "@opencode-ai/plugin";
|
|
2
|
+
import { IMAGE_ASPECT_RATIOS, IMAGE_BACKGROUNDS, IMAGE_OUTPUT_FORMATS, IMAGE_QUALITIES, IMAGE_RESOLUTIONS, } from "../config/types.js";
|
|
3
|
+
const prompt = tool.schema
|
|
4
|
+
.string()
|
|
5
|
+
.max(32_000)
|
|
6
|
+
.refine((value) => value.trim().length > 0, "Prompt must not be empty.");
|
|
7
|
+
const outputPath = tool.schema
|
|
8
|
+
.string()
|
|
9
|
+
.max(4_096)
|
|
10
|
+
.refine((value) => value.trim().length > 0, "Output path must not be empty.");
|
|
11
|
+
export const generationToolArgs = {
|
|
12
|
+
prompt,
|
|
13
|
+
output_path: outputPath.optional(),
|
|
14
|
+
aspect_ratio: tool.schema.enum(IMAGE_ASPECT_RATIOS).optional(),
|
|
15
|
+
background: tool.schema.enum(IMAGE_BACKGROUNDS).optional(),
|
|
16
|
+
n: tool.schema.number().int().min(1).max(10).optional(),
|
|
17
|
+
output_format: tool.schema.enum(IMAGE_OUTPUT_FORMATS).optional(),
|
|
18
|
+
output_compression: tool.schema.number().int().min(0).max(100).optional(),
|
|
19
|
+
quality: tool.schema.enum(IMAGE_QUALITIES).optional(),
|
|
20
|
+
resolution: tool.schema.enum(IMAGE_RESOLUTIONS).optional(),
|
|
21
|
+
seed: tool.schema.number().int().nonnegative().optional(),
|
|
22
|
+
};
|
|
23
|
+
export const imageReferenceSchema = tool.schema.discriminatedUnion("type", [
|
|
24
|
+
tool.schema
|
|
25
|
+
.object({
|
|
26
|
+
type: tool.schema.literal("message_attachment"),
|
|
27
|
+
index: tool.schema.number().int().min(1),
|
|
28
|
+
})
|
|
29
|
+
.strict(),
|
|
30
|
+
tool.schema
|
|
31
|
+
.object({
|
|
32
|
+
type: tool.schema.literal("project_file"),
|
|
33
|
+
path: tool.schema.string().min(1).max(4_096),
|
|
34
|
+
})
|
|
35
|
+
.strict(),
|
|
36
|
+
tool.schema
|
|
37
|
+
.object({
|
|
38
|
+
type: tool.schema.literal("https_url"),
|
|
39
|
+
url: tool.schema.string().min(1).max(8_192),
|
|
40
|
+
})
|
|
41
|
+
.strict(),
|
|
42
|
+
]);
|
|
43
|
+
export const editToolArgs = {
|
|
44
|
+
...generationToolArgs,
|
|
45
|
+
references: tool.schema.array(imageReferenceSchema).max(16).optional(),
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/tools/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE1C,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,GAClB,MAAM,oBAAoB,CAAA;AAE3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;KACvB,MAAM,EAAE;KACR,GAAG,CAAC,MAAM,CAAC;KACX,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,2BAA2B,CAAC,CAAA;AAE1E,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM;KAC3B,MAAM,EAAE;KACR,GAAG,CAAC,KAAK,CAAC;KACV,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,gCAAgC,CAAC,CAAA;AAE/E,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,MAAM;IACN,WAAW,EAAE,UAAU,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE;IAC9D,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;IAC1D,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvD,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE;IAChE,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IACzE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;IACrD,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE;IAC1D,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;CAC1D,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACzE,IAAI,CAAC,MAAM;SACR,MAAM,CAAC;QACN,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC/C,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KACzC,CAAC;SACD,MAAM,EAAE;IACX,IAAI,CAAC,MAAM;SACR,MAAM,CAAC;QACN,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;QACzC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;KAC7C,CAAC;SACD,MAAM,EAAE;IACX,IAAI,CAAC,MAAM;SACR,MAAM,CAAC;QACN,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACtC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;KAC5C,CAAC;SACD,MAAM,EAAE;CACZ,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,GAAG,kBAAkB;IACrB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;CACvE,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { PluginConfigState, ResolvedPluginOptions } from "../config/types.js";
|
|
2
|
+
import type { SafeLogger } from "../logging.js";
|
|
3
|
+
import type { ModelCapabilityService } from "../openrouter/capabilities.js";
|
|
4
|
+
import type { OpenRouterImageClient } from "../openrouter/client.js";
|
|
5
|
+
import type { OpenCodeMessageClient } from "../references/attachments.js";
|
|
6
|
+
export interface RuntimeServices {
|
|
7
|
+
options: ResolvedPluginOptions;
|
|
8
|
+
client: OpenRouterImageClient;
|
|
9
|
+
capabilities: ModelCapabilityService;
|
|
10
|
+
}
|
|
11
|
+
export interface ToolDependencies {
|
|
12
|
+
configState: PluginConfigState;
|
|
13
|
+
getRuntime(): RuntimeServices;
|
|
14
|
+
messageClient: OpenCodeMessageClient;
|
|
15
|
+
serverUrl: URL;
|
|
16
|
+
logger: SafeLogger;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAClF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAC3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AACpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AAEzE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,qBAAqB,CAAA;IAC9B,MAAM,EAAE,qBAAqB,CAAA;IAC7B,YAAY,EAAE,sBAAsB,CAAA;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,iBAAiB,CAAA;IAC9B,UAAU,IAAI,eAAe,CAAA;IAC7B,aAAa,EAAE,qBAAqB,CAAA;IACpC,SAAS,EAAE,GAAG,CAAA;IACd,MAAM,EAAE,UAAU,CAAA;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { HttpTransport } from "./types.js";
|
|
2
|
+
export type FetchLike = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
|
|
3
|
+
/** A fetch implementation that cannot be replaced by another plugin's global wrapper. */
|
|
4
|
+
export declare const nativeFetch: FetchLike;
|
|
5
|
+
export declare class DirectTransport implements HttpTransport {
|
|
6
|
+
#private;
|
|
7
|
+
constructor(fetchImplementation?: FetchLike);
|
|
8
|
+
request(url: URL, init: RequestInit, signal: AbortSignal): Promise<Response>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=direct.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direct.d.ts","sourceRoot":"","sources":["../../src/transport/direct.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAG/C,MAAM,MAAM,SAAS,GAAG,CACtB,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EAC7B,IAAI,CAAC,EAAE,WAAW,KACf,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEtB,yFAAyF;AACzF,eAAO,MAAM,WAAW,EAAE,SAGiB,CAAA;AAE3C,qBAAa,eAAgB,YAAW,aAAa;;gBAGvC,mBAAmB,GAAE,SAAuB;IAIxD,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;CAG7E"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { fetch as undiciFetch } from "undici";
|
|
2
|
+
/** A fetch implementation that cannot be replaced by another plugin's global wrapper. */
|
|
3
|
+
export const nativeFetch = typeof Bun !== "undefined" && typeof Bun.fetch === "function"
|
|
4
|
+
? Bun.fetch.bind(Bun)
|
|
5
|
+
: undiciFetch;
|
|
6
|
+
export class DirectTransport {
|
|
7
|
+
#fetch;
|
|
8
|
+
constructor(fetchImplementation = nativeFetch) {
|
|
9
|
+
this.#fetch = fetchImplementation;
|
|
10
|
+
}
|
|
11
|
+
request(url, init, signal) {
|
|
12
|
+
return this.#fetch(url, { ...init, signal });
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=direct.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"direct.js","sourceRoot":"","sources":["../../src/transport/direct.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAA;AAO7C,yFAAyF;AACzF,MAAM,CAAC,MAAM,WAAW,GACtB,OAAO,GAAG,KAAK,WAAW,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU;IAC3D,CAAC,CAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAA0B;IAC/C,CAAC,CAAE,WAAoC,CAAA;AAE3C,MAAM,OAAO,eAAe;IACjB,MAAM,CAAW;IAE1B,YAAY,sBAAiC,WAAW;QACtD,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAA;IACnC,CAAC;IAED,OAAO,CAAC,GAAQ,EAAE,IAAiB,EAAE,MAAmB;QACtD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IAC9C,CAAC;CACF"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { DirectTransport, type FetchLike } from "./direct.js";
|
|
2
|
+
export { KoteGatewayTransport, type KoteGatewayTransportOptions, } from "./kote-gateway.js";
|
|
3
|
+
export { GatewayTransportError, type GatewayErrorCode, type HttpTransport, } from "./types.js";
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EACL,oBAAoB,EACpB,KAAK,2BAA2B,GACjC,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,GACnB,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAkB,MAAM,aAAa,CAAA;AAC7D,OAAO,EACL,oBAAoB,GAErB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,qBAAqB,GAGtB,MAAM,YAAY,CAAA"}
|