clanka 0.5.2 → 0.6.1
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/Acp.d.ts.map +1 -1
- package/dist/Acp.js +195 -16
- package/dist/Acp.js.map +1 -1
- package/dist/AcpImage.test.d.ts +2 -0
- package/dist/AcpImage.test.d.ts.map +1 -0
- package/dist/AcpImage.test.js +470 -0
- package/dist/AcpImage.test.js.map +1 -0
- package/dist/Agent.d.ts +9 -2
- package/dist/Agent.d.ts.map +1 -1
- package/dist/Agent.js +43 -6
- package/dist/Agent.js.map +1 -1
- package/dist/AgentExecutor.d.ts +27 -5
- package/dist/AgentExecutor.d.ts.map +1 -1
- package/dist/AgentExecutor.js +29 -4
- package/dist/AgentExecutor.js.map +1 -1
- package/dist/AgentExecutorImage.test.d.ts +2 -0
- package/dist/AgentExecutorImage.test.d.ts.map +1 -0
- package/dist/AgentExecutorImage.test.js +63 -0
- package/dist/AgentExecutorImage.test.js.map +1 -0
- package/dist/AgentImage.test.d.ts +2 -0
- package/dist/AgentImage.test.d.ts.map +1 -0
- package/dist/AgentImage.test.js +176 -0
- package/dist/AgentImage.test.js.map +1 -0
- package/dist/AgentTools.d.ts +25 -5
- package/dist/AgentTools.d.ts.map +1 -1
- package/dist/AgentTools.js +40 -4
- package/dist/AgentTools.js.map +1 -1
- package/dist/AgentToolsImage.test.d.ts +2 -0
- package/dist/AgentToolsImage.test.d.ts.map +1 -0
- package/dist/AgentToolsImage.test.js +158 -0
- package/dist/AgentToolsImage.test.js.map +1 -0
- package/dist/Codex.js +6 -1
- package/dist/Codex.js.map +1 -1
- package/dist/Compaction.d.ts.map +1 -1
- package/dist/Compaction.js +16 -1
- package/dist/Compaction.js.map +1 -1
- package/dist/CompactionImage.test.d.ts +2 -0
- package/dist/CompactionImage.test.d.ts.map +1 -0
- package/dist/CompactionImage.test.js +105 -0
- package/dist/CompactionImage.test.js.map +1 -0
- package/dist/Copilot.d.ts.map +1 -1
- package/dist/Copilot.js +5 -1
- package/dist/Copilot.js.map +1 -1
- package/dist/Image.d.ts +192 -0
- package/dist/Image.d.ts.map +1 -0
- package/dist/Image.js +586 -0
- package/dist/Image.js.map +1 -0
- package/dist/Image.test.d.ts +2 -0
- package/dist/Image.test.d.ts.map +1 -0
- package/dist/Image.test.js +142 -0
- package/dist/Image.test.js.map +1 -0
- package/dist/cli.js +2 -1
- package/dist/cli.js.map +1 -1
- package/dist/fixtures/TestImages.d.ts +73 -0
- package/dist/fixtures/TestImages.d.ts.map +1 -0
- package/dist/fixtures/TestImages.js +263 -0
- package/dist/fixtures/TestImages.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
- package/src/Acp.ts +274 -21
- package/src/AcpImage.test.ts +676 -0
- package/src/Agent.ts +69 -7
- package/src/AgentExecutor.ts +51 -3
- package/src/AgentExecutorImage.test.ts +103 -0
- package/src/AgentImage.test.ts +295 -0
- package/src/AgentTools.ts +78 -7
- package/src/AgentToolsImage.test.ts +302 -0
- package/src/Codex.ts +6 -1
- package/src/Compaction.ts +16 -1
- package/src/CompactionImage.test.ts +142 -0
- package/src/Copilot.ts +5 -1
- package/src/Image.test.ts +220 -0
- package/src/Image.ts +704 -0
- package/src/cli.ts +2 -1
- package/src/fixtures/TestImages.ts +287 -0
- package/src/index.ts +5 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import * as Photon from "@silvia-odwyer/photon-node";
|
|
2
|
+
import { assert, describe, it } from "@effect/vitest";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
import * as Encoding from "effect/Encoding";
|
|
5
|
+
import * as Option from "effect/Option";
|
|
6
|
+
import { vi } from "vitest";
|
|
7
|
+
import * as Image from "./Image.js";
|
|
8
|
+
import { dimensions, encodePng, noisePixel, oversizedFrameHeaders, oversizedHeaders, supportedImages, tinyPng, } from "./fixtures/TestImages.js";
|
|
9
|
+
/** Optionally block decoding so crafted headers can never reach Photon. */
|
|
10
|
+
const withDecoderSpy = (f, blockDecoding = false) => Effect.suspend(() => {
|
|
11
|
+
const spy = vi.spyOn(Photon.PhotonImage, "new_from_byteslice");
|
|
12
|
+
if (blockDecoding) {
|
|
13
|
+
spy.mockImplementation(() => {
|
|
14
|
+
throw new Error("Header-only fixture must not reach the decoder");
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
return f(() => spy.mock.calls.length).pipe(Effect.ensuring(Effect.sync(() => spy.mockRestore())));
|
|
18
|
+
});
|
|
19
|
+
const base64Length = (bytes) => Encoding.encodeBase64(bytes).length;
|
|
20
|
+
describe("Image.prepare", () => {
|
|
21
|
+
it.effect("passes an in-limit image through unchanged", () => Effect.gen(function* () {
|
|
22
|
+
assert.strictEqual(Image.maxDimension, 2000);
|
|
23
|
+
assert.strictEqual(Image.maxBytes, 5 * 1024 * 1024);
|
|
24
|
+
const prepared = yield* Image.prepare({
|
|
25
|
+
data: tinyPng,
|
|
26
|
+
mediaType: "image/png",
|
|
27
|
+
});
|
|
28
|
+
assert.deepStrictEqual(prepared, {
|
|
29
|
+
data: tinyPng,
|
|
30
|
+
mediaType: "image/png",
|
|
31
|
+
});
|
|
32
|
+
}));
|
|
33
|
+
it.effect("resizes to the dimension cap while preserving aspect ratio", () => Effect.gen(function* () {
|
|
34
|
+
const prepared = yield* Image.prepare({
|
|
35
|
+
data: encodePng({ width: 2500, height: 100 }),
|
|
36
|
+
mediaType: "image/png",
|
|
37
|
+
});
|
|
38
|
+
assert.deepStrictEqual(dimensions(prepared.data), {
|
|
39
|
+
width: 2000,
|
|
40
|
+
height: 80,
|
|
41
|
+
});
|
|
42
|
+
assert.isAtMost(base64Length(prepared.data), Image.maxBytes);
|
|
43
|
+
}));
|
|
44
|
+
it.effect("re-encodes an image over the base64 byte cap", () => Effect.gen(function* () {
|
|
45
|
+
// Exercise the byte budget independently of the dimension cap, without a multi-MB fixture.
|
|
46
|
+
const data = encodePng({ width: 64, height: 64, pixel: noisePixel });
|
|
47
|
+
const limits = { maxDimension: 64, maxBytes: 2000 };
|
|
48
|
+
assert.isAbove(base64Length(data), limits.maxBytes);
|
|
49
|
+
const prepared = yield* Image.prepare({
|
|
50
|
+
data,
|
|
51
|
+
mediaType: "image/png",
|
|
52
|
+
limits,
|
|
53
|
+
});
|
|
54
|
+
assert.isAtMost(base64Length(prepared.data), limits.maxBytes);
|
|
55
|
+
const size = dimensions(prepared.data);
|
|
56
|
+
assert.isAtMost(size.width, limits.maxDimension);
|
|
57
|
+
assert.isAtMost(size.height, limits.maxDimension);
|
|
58
|
+
}));
|
|
59
|
+
it.effect("rejects an image that cannot fit even after resizing", () => Effect.gen(function* () {
|
|
60
|
+
const error = yield* Effect.flip(Image.prepare({
|
|
61
|
+
data: tinyPng,
|
|
62
|
+
mediaType: "image/png",
|
|
63
|
+
limits: { maxDimension: 2, maxBytes: 40 },
|
|
64
|
+
}));
|
|
65
|
+
assert.strictEqual(error._tag, "ImageError");
|
|
66
|
+
assert.strictEqual(error.reason, "TooLarge");
|
|
67
|
+
}));
|
|
68
|
+
it.effect("rejects undecodable bytes with a typed error", () => Effect.gen(function* () {
|
|
69
|
+
const error = yield* Effect.flip(Image.prepare({
|
|
70
|
+
data: new TextEncoder().encode("not a png"),
|
|
71
|
+
mediaType: "image/png",
|
|
72
|
+
}));
|
|
73
|
+
assert.strictEqual(error._tag, "ImageError");
|
|
74
|
+
assert.strictEqual(error.reason, "Decode");
|
|
75
|
+
}));
|
|
76
|
+
});
|
|
77
|
+
// =============================================================================
|
|
78
|
+
// Input budget: what may reach the decoder at all
|
|
79
|
+
//
|
|
80
|
+
// Two bounds sit in front of Photon on every path. `maxInputBytes` caps the
|
|
81
|
+
// encoded input (20 MiB, the same number the HTTP fetch already uses), and
|
|
82
|
+
// `maxInputPixels` caps the canvas declared in the image header, because a
|
|
83
|
+
// small, highly compressible file can expand to gigabytes of RGBA inside the
|
|
84
|
+
// decoder before `prepare` ever reads a width. Both checks run before any
|
|
85
|
+
// decoding; the fixtures below have no pixels, so a decoder call would fail.
|
|
86
|
+
// =============================================================================
|
|
87
|
+
describe("Image input budget", () => {
|
|
88
|
+
it("pins the shared ceilings", () => {
|
|
89
|
+
assert.strictEqual(Image.maxInputBytes, 20 * 1024 * 1024);
|
|
90
|
+
assert.strictEqual(Image.maxInputPixels, 50_000_000);
|
|
91
|
+
});
|
|
92
|
+
it.effect("reads dimensions from the header without decoding", () => withDecoderSpy((decoderCalls) => Effect.sync(() => {
|
|
93
|
+
for (const image of supportedImages) {
|
|
94
|
+
assert.deepStrictEqual(Option.getOrThrow(Image.dimensions(image.data)), dimensions(image.data), image.mediaType);
|
|
95
|
+
}
|
|
96
|
+
// `dimensions` above is the Photon-backed fixture helper; reset.
|
|
97
|
+
const baseline = decoderCalls();
|
|
98
|
+
for (const header of oversizedHeaders) {
|
|
99
|
+
assert.deepStrictEqual(Image.dimensions(header.data), Option.some({ width: header.width, height: header.height }), header.mediaType);
|
|
100
|
+
}
|
|
101
|
+
assert.deepStrictEqual(Image.dimensions(new TextEncoder().encode("not an image")), Option.none());
|
|
102
|
+
assert.strictEqual(decoderCalls(), baseline);
|
|
103
|
+
})));
|
|
104
|
+
it.effect("rejects an oversized canvas in every format before decoding", () => withDecoderSpy((decoderCalls) => Effect.gen(function* () {
|
|
105
|
+
const headers = [...oversizedHeaders, ...oversizedFrameHeaders];
|
|
106
|
+
const results = [];
|
|
107
|
+
for (const header of headers) {
|
|
108
|
+
assert.isAbove(header.width * header.height, Image.maxInputPixels);
|
|
109
|
+
const baseline = decoderCalls();
|
|
110
|
+
const error = yield* Effect.flip(Image.prepare({ data: header.data, mediaType: header.mediaType }));
|
|
111
|
+
results.push({
|
|
112
|
+
mediaType: header.mediaType,
|
|
113
|
+
tag: error._tag,
|
|
114
|
+
reason: error.reason,
|
|
115
|
+
decoderCalls: decoderCalls() - baseline,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
assert.deepStrictEqual(results, headers.map((header) => ({
|
|
119
|
+
mediaType: header.mediaType,
|
|
120
|
+
tag: "ImageError",
|
|
121
|
+
reason: "TooLarge",
|
|
122
|
+
decoderCalls: 0,
|
|
123
|
+
})));
|
|
124
|
+
}), true));
|
|
125
|
+
it.effect("rejects input over the byte ceiling before decoding", () => withDecoderSpy((decoderCalls) => Effect.gen(function* () {
|
|
126
|
+
// A real PNG header followed by padding: over the ceiling by one byte.
|
|
127
|
+
const data = new Uint8Array(20 * 1024 * 1024 + 1);
|
|
128
|
+
data.set(tinyPng);
|
|
129
|
+
const error = yield* Effect.flip(Image.prepare({ data, mediaType: "image/png" }));
|
|
130
|
+
assert.strictEqual(error._tag, "ImageError");
|
|
131
|
+
assert.strictEqual(error.reason, "TooLarge");
|
|
132
|
+
assert.strictEqual(decoderCalls(), 0, "the decoder must not run");
|
|
133
|
+
})));
|
|
134
|
+
it.effect("does not send undecodable bytes to the decoder", () => withDecoderSpy((decoderCalls) => Effect.gen(function* () {
|
|
135
|
+
yield* Effect.flip(Image.prepare({
|
|
136
|
+
data: new TextEncoder().encode("not a png"),
|
|
137
|
+
mediaType: "image/png",
|
|
138
|
+
}));
|
|
139
|
+
assert.strictEqual(decoderCalls(), 0);
|
|
140
|
+
})));
|
|
141
|
+
});
|
|
142
|
+
//# sourceMappingURL=Image.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Image.test.js","sourceRoot":"","sources":["../src/Image.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -26,7 +26,8 @@ import * as KeyValueStore from "effect/unstable/persistence/KeyValueStore";
|
|
|
26
26
|
import * as Option from "effect/Option";
|
|
27
27
|
import { OpenAiClient, OpenAiEmbeddingModel } from "@effect/ai-openai";
|
|
28
28
|
import { DeviceCodeHandler } from "./index.js";
|
|
29
|
-
|
|
29
|
+
import packageJson from "../package.json" with { type: "json" };
|
|
30
|
+
const version = packageJson.version;
|
|
30
31
|
const providers = ["openai", "copilot"];
|
|
31
32
|
const withSubagentModel = (model) => Layer.merge(model, Agent.layerSubagentModel(model));
|
|
32
33
|
const modelLayer = (provider, model, effort) => provider === "openai"
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAA;AACpD,OAAO,KAAK,cAAc,MAAM,sCAAsC,CAAA;AACtE,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAA;AACtD,OAAO,KAAK,IAAI,MAAM,0BAA0B,CAAA;AAChD,OAAO,KAAK,YAAY,MAAM,oCAAoC,CAAA;AAClE,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAA;AAChE,OAAO,KAAK,UAAU,MAAM,kCAAkC,CAAA;AAC9D,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACtC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,aAAa,MAAM,2CAA2C,CAAA;AAC1E,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export declare const encodePng: (options: {
|
|
2
|
+
readonly width: number;
|
|
3
|
+
readonly height: number;
|
|
4
|
+
readonly pixel?: (x: number, y: number) => readonly [number, number, number];
|
|
5
|
+
}) => Uint8Array;
|
|
6
|
+
export declare const noisePixel: (x: number, y: number) => readonly [number, number, number];
|
|
7
|
+
export declare const tinyPng: Uint8Array<ArrayBufferLike>;
|
|
8
|
+
export declare const tinyJpeg: Uint8Array<ArrayBufferLike>;
|
|
9
|
+
export declare const tinyWebp: Uint8Array<ArrayBufferLike>;
|
|
10
|
+
/** Two 4x2 frames (red, then blue), each displayed for 100ms, looping forever. */
|
|
11
|
+
export declare const animatedGif: Uint8Array<ArrayBuffer>;
|
|
12
|
+
export declare const supportedImages: readonly [{
|
|
13
|
+
readonly fileName: "shot.png";
|
|
14
|
+
readonly mediaType: "image/png";
|
|
15
|
+
readonly data: Uint8Array<ArrayBufferLike>;
|
|
16
|
+
}, {
|
|
17
|
+
readonly fileName: "photo.jpeg";
|
|
18
|
+
readonly mediaType: "image/jpeg";
|
|
19
|
+
readonly data: Uint8Array<ArrayBufferLike>;
|
|
20
|
+
}, {
|
|
21
|
+
readonly fileName: "animated.gif";
|
|
22
|
+
readonly mediaType: "image/gif";
|
|
23
|
+
readonly data: Uint8Array<ArrayBuffer>;
|
|
24
|
+
}, {
|
|
25
|
+
readonly fileName: "picture.webp";
|
|
26
|
+
readonly mediaType: "image/webp";
|
|
27
|
+
readonly data: Uint8Array<ArrayBufferLike>;
|
|
28
|
+
}];
|
|
29
|
+
/**
|
|
30
|
+
* Header-only fixtures that declare canvases far over any sane pixel budget.
|
|
31
|
+
* They carry no pixel data, so nothing can decode them: a test that passes
|
|
32
|
+
* one to the decoder is a test that would decode a bomb.
|
|
33
|
+
*/
|
|
34
|
+
export declare const oversizedHeaders: readonly [{
|
|
35
|
+
readonly mediaType: "image/png";
|
|
36
|
+
readonly width: 16384;
|
|
37
|
+
readonly height: 16384;
|
|
38
|
+
readonly data: Uint8Array<ArrayBuffer>;
|
|
39
|
+
}, {
|
|
40
|
+
readonly mediaType: "image/jpeg";
|
|
41
|
+
readonly width: 65535;
|
|
42
|
+
readonly height: 65535;
|
|
43
|
+
readonly data: Uint8Array<ArrayBuffer>;
|
|
44
|
+
}, {
|
|
45
|
+
readonly mediaType: "image/gif";
|
|
46
|
+
readonly width: 65535;
|
|
47
|
+
readonly height: 65535;
|
|
48
|
+
readonly data: Uint8Array<ArrayBuffer>;
|
|
49
|
+
}, {
|
|
50
|
+
readonly mediaType: "image/webp";
|
|
51
|
+
readonly width: 16384;
|
|
52
|
+
readonly height: 16384;
|
|
53
|
+
readonly data: Uint8Array<ArrayBuffer>;
|
|
54
|
+
}];
|
|
55
|
+
/** Small container canvases hiding 8000x8000 frames, with no pixel payload. */
|
|
56
|
+
export declare const oversizedFrameHeaders: readonly [{
|
|
57
|
+
readonly mediaType: "image/webp";
|
|
58
|
+
readonly width: 8000;
|
|
59
|
+
readonly height: 8000;
|
|
60
|
+
readonly data: Uint8Array<ArrayBuffer>;
|
|
61
|
+
}, {
|
|
62
|
+
readonly mediaType: "image/gif";
|
|
63
|
+
readonly width: 8000;
|
|
64
|
+
readonly height: 8000;
|
|
65
|
+
readonly data: Uint8Array<ArrayBuffer>;
|
|
66
|
+
}];
|
|
67
|
+
export declare const dimensions: (bytes: Uint8Array) => {
|
|
68
|
+
width: number;
|
|
69
|
+
height: number;
|
|
70
|
+
};
|
|
71
|
+
export declare const bytesOf: (data: string | Uint8Array | URL) => Uint8Array;
|
|
72
|
+
export declare const equalBytes: (a: Uint8Array, b: Uint8Array) => boolean;
|
|
73
|
+
//# sourceMappingURL=TestImages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestImages.d.ts","sourceRoot":"","sources":["../../src/fixtures/TestImages.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,SAAS,YAAa;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAC7E,KAAG,UAiBH,CAAA;AAED,eAAO,MAAM,UAAU,MAClB,MAAM,KACN,MAAM,KACR,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAKlC,CAAA;AAED,eAAO,MAAM,OAAO,6BAAqC,CAAA;AAYzD,eAAO,MAAM,QAAQ,6BAAe,CAAA;AACpC,eAAO,MAAM,QAAQ,6BAAe,CAAA;AAEpC,kFAAkF;AAClF,eAAO,MAAM,WAAW,yBAWtB,CAAA;AAEF,eAAO,MAAM,eAAe;aAExB,QAAQ,EAAE,UAAU;aACpB,SAAS,EAAE,WAAW;aACtB,IAAI;;aAGJ,QAAQ,EAAE,YAAY;aACtB,SAAS,EAAE,YAAY;aACvB,IAAI;;aAGJ,QAAQ,EAAE,cAAc;aACxB,SAAS,EAAE,WAAW;aACtB,IAAI;;aAGJ,QAAQ,EAAE,cAAc;aACxB,SAAS,EAAE,YAAY;aACvB,IAAI;EAEE,CAAA;AA6GV;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;aAEzB,SAAS,EAAE,WAAW;aACtB,KAAK,EAAE,KAAK;aACZ,MAAM,EAAE,KAAK;aACb,IAAI;;aAGJ,SAAS,EAAE,YAAY;aACvB,KAAK,EAAE,KAAK;aACZ,MAAM,EAAE,KAAK;aACb,IAAI;;aAGJ,SAAS,EAAE,WAAW;aACtB,KAAK,EAAE,KAAK;aACZ,MAAM,EAAE,KAAK;aACb,IAAI;;aAGJ,SAAS,EAAE,YAAY;aACvB,KAAK,EAAE,KAAK;aACZ,MAAM,EAAE,KAAK;aACb,IAAI;EAEE,CAAA;AAEV,+EAA+E;AAC/E,eAAO,MAAM,qBAAqB;aAE9B,SAAS,EAAE,YAAY;aACvB,KAAK,EAAE,IAAI;aACX,MAAM,EAAE,IAAI;aACZ,IAAI;;aAaJ,SAAS,EAAE,WAAW;aACtB,KAAK,EAAE,IAAI;aACX,MAAM,EAAE,IAAI;aACZ,IAAI;EAaE,CAAA;AAEV,eAAO,MAAM,UAAU,UAAW,UAAU;;;CAO3C,CAAA;AAED,eAAO,MAAM,OAAO,SAAU,MAAM,GAAG,UAAU,GAAG,GAAG,KAAG,UASzD,CAAA;AAED,eAAO,MAAM,UAAU,MAAO,UAAU,KAAK,UAAU,KAAG,OACI,CAAA"}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import * as Photon from "@silvia-odwyer/photon-node";
|
|
2
|
+
import * as Zlib from "node:zlib";
|
|
3
|
+
import * as Encoding from "effect/Encoding";
|
|
4
|
+
export const encodePng = (options) => {
|
|
5
|
+
const { width, height } = options;
|
|
6
|
+
const pixels = new Uint8Array(width * height * 4);
|
|
7
|
+
for (let y = 0; y < height; y++) {
|
|
8
|
+
for (let x = 0; x < width; x++) {
|
|
9
|
+
pixels.set([...(options.pixel?.(x, y) ?? [200, 30, 30]), 255], (y * width + x) * 4);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
const image = new Photon.PhotonImage(pixels, width, height);
|
|
13
|
+
try {
|
|
14
|
+
return image.get_bytes();
|
|
15
|
+
}
|
|
16
|
+
finally {
|
|
17
|
+
image.free();
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
export const noisePixel = (x, y) => {
|
|
21
|
+
let h = (x * 374761393 + y * 668265263) | 0;
|
|
22
|
+
h = Math.imul(h ^ (h >>> 13), 1274126177);
|
|
23
|
+
h ^= h >>> 16;
|
|
24
|
+
return [h & 0xff, (h >>> 8) & 0xff, (h >>> 16) & 0xff];
|
|
25
|
+
};
|
|
26
|
+
export const tinyPng = encodePng({ width: 4, height: 3 });
|
|
27
|
+
const encodeOtherFormats = () => {
|
|
28
|
+
const image = Photon.PhotonImage.new_from_byteslice(tinyPng);
|
|
29
|
+
try {
|
|
30
|
+
return { jpeg: image.get_bytes_jpeg(85), webp: image.get_bytes_webp() };
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
image.free();
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const encoded = encodeOtherFormats();
|
|
37
|
+
export const tinyJpeg = encoded.jpeg;
|
|
38
|
+
export const tinyWebp = encoded.webp;
|
|
39
|
+
/** Two 4x2 frames (red, then blue), each displayed for 100ms, looping forever. */
|
|
40
|
+
export const animatedGif = new Uint8Array([
|
|
41
|
+
// GIF89a, logical screen, and a two-colour global palette.
|
|
42
|
+
71, 73, 70, 56, 57, 97, 4, 0, 2, 0, 128, 0, 0, 255, 0, 0, 0, 0, 255,
|
|
43
|
+
// NETSCAPE2.0 loop extension.
|
|
44
|
+
33, 255, 11, 78, 69, 84, 83, 67, 65, 80, 69, 50, 46, 48, 3, 1, 0, 0, 0,
|
|
45
|
+
// Frame 1: graphics control, image descriptor, and LZW pixels.
|
|
46
|
+
33, 249, 4, 0, 10, 0, 0, 0, 44, 0, 0, 0, 0, 4, 0, 2, 0, 0, 2, 7, 4, 65, 16, 4,
|
|
47
|
+
65, 16, 5, 0,
|
|
48
|
+
// Frame 2 uses the blue palette entry.
|
|
49
|
+
33, 249, 4, 0, 10, 0, 0, 0, 44, 0, 0, 0, 0, 4, 0, 2, 0, 0, 2, 7, 12, 195, 48,
|
|
50
|
+
12, 195, 48, 5, 0, 59,
|
|
51
|
+
]);
|
|
52
|
+
export const supportedImages = [
|
|
53
|
+
{
|
|
54
|
+
fileName: "shot.png",
|
|
55
|
+
mediaType: "image/png",
|
|
56
|
+
data: tinyPng,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
fileName: "photo.jpeg",
|
|
60
|
+
mediaType: "image/jpeg",
|
|
61
|
+
data: tinyJpeg,
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
fileName: "animated.gif",
|
|
65
|
+
mediaType: "image/gif",
|
|
66
|
+
data: animatedGif,
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
fileName: "picture.webp",
|
|
70
|
+
mediaType: "image/webp",
|
|
71
|
+
data: tinyWebp,
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
const ascii = (text) => Array.from(text, (c) => c.charCodeAt(0));
|
|
75
|
+
const u16be = (n) => [(n >>> 8) & 0xff, n & 0xff];
|
|
76
|
+
const u16le = (n) => [n & 0xff, (n >>> 8) & 0xff];
|
|
77
|
+
const u24le = (n) => [n & 0xff, (n >>> 8) & 0xff, (n >>> 16) & 0xff];
|
|
78
|
+
const u32be = (n) => [
|
|
79
|
+
(n >>> 24) & 0xff,
|
|
80
|
+
(n >>> 16) & 0xff,
|
|
81
|
+
(n >>> 8) & 0xff,
|
|
82
|
+
n & 0xff,
|
|
83
|
+
];
|
|
84
|
+
const u32le = (n) => [
|
|
85
|
+
n & 0xff,
|
|
86
|
+
(n >>> 8) & 0xff,
|
|
87
|
+
(n >>> 16) & 0xff,
|
|
88
|
+
(n >>> 24) & 0xff,
|
|
89
|
+
];
|
|
90
|
+
const pngHeader = (width, height) => {
|
|
91
|
+
const ihdr = [
|
|
92
|
+
...ascii("IHDR"),
|
|
93
|
+
...u32be(width),
|
|
94
|
+
...u32be(height),
|
|
95
|
+
8,
|
|
96
|
+
6,
|
|
97
|
+
0,
|
|
98
|
+
0,
|
|
99
|
+
0,
|
|
100
|
+
];
|
|
101
|
+
return new Uint8Array([
|
|
102
|
+
0x89,
|
|
103
|
+
0x50,
|
|
104
|
+
0x4e,
|
|
105
|
+
0x47,
|
|
106
|
+
0x0d,
|
|
107
|
+
0x0a,
|
|
108
|
+
0x1a,
|
|
109
|
+
0x0a,
|
|
110
|
+
...u32be(13),
|
|
111
|
+
...ihdr,
|
|
112
|
+
...u32be(Zlib.crc32(new Uint8Array(ihdr))),
|
|
113
|
+
]);
|
|
114
|
+
};
|
|
115
|
+
const jpegHeader = (width, height) => new Uint8Array([
|
|
116
|
+
0xff,
|
|
117
|
+
0xd8,
|
|
118
|
+
// APP0 / JFIF, as emitted by most encoders, so the parser must skip it.
|
|
119
|
+
0xff,
|
|
120
|
+
0xe0,
|
|
121
|
+
...u16be(16),
|
|
122
|
+
...ascii("JFIF"),
|
|
123
|
+
0,
|
|
124
|
+
1,
|
|
125
|
+
2,
|
|
126
|
+
0,
|
|
127
|
+
0,
|
|
128
|
+
1,
|
|
129
|
+
0,
|
|
130
|
+
1,
|
|
131
|
+
0,
|
|
132
|
+
0,
|
|
133
|
+
// SOF0: length 17, 8-bit precision, height, width, 3 components.
|
|
134
|
+
0xff,
|
|
135
|
+
0xc0,
|
|
136
|
+
...u16be(17),
|
|
137
|
+
8,
|
|
138
|
+
...u16be(height),
|
|
139
|
+
...u16be(width),
|
|
140
|
+
3,
|
|
141
|
+
1,
|
|
142
|
+
0x22,
|
|
143
|
+
0,
|
|
144
|
+
2,
|
|
145
|
+
0x11,
|
|
146
|
+
1,
|
|
147
|
+
3,
|
|
148
|
+
0x11,
|
|
149
|
+
1,
|
|
150
|
+
]);
|
|
151
|
+
const gifHeader = (width, height) => new Uint8Array([
|
|
152
|
+
...ascii("GIF89a"),
|
|
153
|
+
...u16le(width),
|
|
154
|
+
...u16le(height),
|
|
155
|
+
0,
|
|
156
|
+
0,
|
|
157
|
+
0,
|
|
158
|
+
]);
|
|
159
|
+
/** Extended (VP8X) container, the only WebP form that carries a canvas size. */
|
|
160
|
+
const webpHeader = (width, height) => new Uint8Array([
|
|
161
|
+
...ascii("RIFF"),
|
|
162
|
+
...u32le(22),
|
|
163
|
+
...ascii("WEBP"),
|
|
164
|
+
...ascii("VP8X"),
|
|
165
|
+
...u32le(10),
|
|
166
|
+
0,
|
|
167
|
+
0,
|
|
168
|
+
0,
|
|
169
|
+
0,
|
|
170
|
+
...u24le(width - 1),
|
|
171
|
+
...u24le(height - 1),
|
|
172
|
+
]);
|
|
173
|
+
/**
|
|
174
|
+
* Header-only fixtures that declare canvases far over any sane pixel budget.
|
|
175
|
+
* They carry no pixel data, so nothing can decode them: a test that passes
|
|
176
|
+
* one to the decoder is a test that would decode a bomb.
|
|
177
|
+
*/
|
|
178
|
+
export const oversizedHeaders = [
|
|
179
|
+
{
|
|
180
|
+
mediaType: "image/png",
|
|
181
|
+
width: 16384,
|
|
182
|
+
height: 16384,
|
|
183
|
+
data: pngHeader(16384, 16384),
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
mediaType: "image/jpeg",
|
|
187
|
+
width: 65535,
|
|
188
|
+
height: 65535,
|
|
189
|
+
data: jpegHeader(65535, 65535),
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
mediaType: "image/gif",
|
|
193
|
+
width: 65535,
|
|
194
|
+
height: 65535,
|
|
195
|
+
data: gifHeader(65535, 65535),
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
mediaType: "image/webp",
|
|
199
|
+
width: 16384,
|
|
200
|
+
height: 16384,
|
|
201
|
+
data: webpHeader(16384, 16384),
|
|
202
|
+
},
|
|
203
|
+
];
|
|
204
|
+
/** Small container canvases hiding 8000x8000 frames, with no pixel payload. */
|
|
205
|
+
export const oversizedFrameHeaders = [
|
|
206
|
+
{
|
|
207
|
+
mediaType: "image/webp",
|
|
208
|
+
width: 8000,
|
|
209
|
+
height: 8000,
|
|
210
|
+
data: new Uint8Array([
|
|
211
|
+
...ascii("RIFF"),
|
|
212
|
+
...u32le(36),
|
|
213
|
+
...webpHeader(1, 1).subarray(8),
|
|
214
|
+
...ascii("VP8L"),
|
|
215
|
+
...u32le(5),
|
|
216
|
+
0x2f,
|
|
217
|
+
// VP8L packs width-1 and height-1 into 14 bits each.
|
|
218
|
+
...u32le(7999 | (7999 << 14)),
|
|
219
|
+
0, // RIFF chunk padding, not pixel data.
|
|
220
|
+
]),
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
mediaType: "image/gif",
|
|
224
|
+
width: 8000,
|
|
225
|
+
height: 8000,
|
|
226
|
+
data: new Uint8Array([
|
|
227
|
+
...gifHeader(1, 1),
|
|
228
|
+
0x2c, // Image descriptor.
|
|
229
|
+
...u16le(0),
|
|
230
|
+
...u16le(0),
|
|
231
|
+
...u16le(8000),
|
|
232
|
+
...u16le(8000),
|
|
233
|
+
0, // No local colour table.
|
|
234
|
+
2,
|
|
235
|
+
0, // LZW minimum code size and empty data sub-block.
|
|
236
|
+
0x3b, // Trailer.
|
|
237
|
+
]),
|
|
238
|
+
},
|
|
239
|
+
];
|
|
240
|
+
export const dimensions = (bytes) => {
|
|
241
|
+
const image = Photon.PhotonImage.new_from_byteslice(bytes);
|
|
242
|
+
try {
|
|
243
|
+
return { width: image.get_width(), height: image.get_height() };
|
|
244
|
+
}
|
|
245
|
+
finally {
|
|
246
|
+
image.free();
|
|
247
|
+
}
|
|
248
|
+
};
|
|
249
|
+
export const bytesOf = (data) => {
|
|
250
|
+
if (data instanceof Uint8Array)
|
|
251
|
+
return data;
|
|
252
|
+
if (data instanceof URL)
|
|
253
|
+
throw new Error(`Expected inline data, got ${data}`);
|
|
254
|
+
const base64 = data.startsWith("data:")
|
|
255
|
+
? data.slice(data.indexOf(",") + 1)
|
|
256
|
+
: data;
|
|
257
|
+
const decoded = Encoding.decodeBase64(base64);
|
|
258
|
+
if (decoded._tag === "Failure")
|
|
259
|
+
throw new Error("Invalid base64 image data");
|
|
260
|
+
return decoded.success;
|
|
261
|
+
};
|
|
262
|
+
export const equalBytes = (a, b) => a.length === b.length && a.every((byte, i) => byte === b[i]);
|
|
263
|
+
//# sourceMappingURL=TestImages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TestImages.js","sourceRoot":"","sources":["../../src/fixtures/TestImages.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAE/B;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clanka",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.6.1",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
29
|
+
"@silvia-odwyer/photon-node": "^0.3.4",
|
|
29
30
|
"@vscode/ripgrep": "^1.18.0",
|
|
30
31
|
"chalk": "^6.0.0",
|
|
31
32
|
"glob": "^13.0.6",
|