@markusylisiurunen/tau 0.2.34 → 0.2.35

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.
@@ -1,5 +1,6 @@
1
1
  import { Type } from "@sinclair/typebox";
2
2
  import { fileTypeFromBuffer } from "file-type";
3
+ import sharp from "sharp";
3
4
  import { z } from "zod";
4
5
  import { createToolError } from "../utils/messages.js";
5
6
  import { formatBytes } from "../utils/truncate.js";
@@ -9,7 +10,13 @@ const VIEW_IMAGE_DESCRIPTION = [
9
10
  "Only use this tool when the user explicitly requests viewing or analyzing an image.",
10
11
  ].join(" ");
11
12
  const VIEW_IMAGE_PATH_DESCRIPTION = "Path to the image file to view.";
12
- const VIEW_IMAGE_MAX_BYTES = 5 * 1024 * 1024;
13
+ const VIEW_IMAGE_READ_MAX_BYTES = 50 * 1024 * 1024;
14
+ const VIEW_IMAGE_MODEL_MAX_BYTES = 2.5 * 1024 * 1024;
15
+ const VIEW_IMAGE_MAX_DIMENSION_PX = 2048;
16
+ const VIEW_IMAGE_DIMENSION_STEPS = [
17
+ 2048, 1920, 1792, 1664, 1536, 1408, 1280, 1152, 1024, 896, 768, 640, 512,
18
+ ];
19
+ const VIEW_IMAGE_LOSSY_QUALITY_STEPS = [95, 90, 85, 80, 75];
13
20
  const SUPPORTED_IMAGE_TYPES = ["image/jpeg", "image/png", "image/webp"];
14
21
  export const VIEW_IMAGE_TOOL = {
15
22
  name: TOOL_NAME_VIEW_IMAGE,
@@ -25,17 +32,118 @@ function parseViewImageArgs(raw) {
25
32
  const parsed = viewImageArgsSchema.safeParse(raw);
26
33
  return parsed.success ? parsed.data : { path: "" };
27
34
  }
35
+ function isSupportedImageType(mimeType) {
36
+ return mimeType ? SUPPORTED_IMAGE_TYPES.includes(mimeType) : false;
37
+ }
38
+ function buildDimensionCaps(maxDimension) {
39
+ const caps = new Set([maxDimension]);
40
+ for (const step of VIEW_IMAGE_DIMENSION_STEPS) {
41
+ if (step < maxDimension) {
42
+ caps.add(step);
43
+ }
44
+ }
45
+ return [...caps];
46
+ }
47
+ function buildLossyEncodePlans(mimeType) {
48
+ return VIEW_IMAGE_LOSSY_QUALITY_STEPS.map((quality) => ({ mimeType, quality }));
49
+ }
50
+ function buildEncodePlans(args) {
51
+ const { sourceMimeType, hasAlpha } = args;
52
+ const plans = [];
53
+ if (sourceMimeType === "image/png") {
54
+ plans.push({ mimeType: "image/png" });
55
+ }
56
+ else {
57
+ plans.push(...buildLossyEncodePlans(sourceMimeType));
58
+ }
59
+ if (sourceMimeType !== "image/webp") {
60
+ plans.push({ mimeType: "image/webp", quality: 100, lossless: true });
61
+ plans.push(...buildLossyEncodePlans("image/webp"));
62
+ }
63
+ if (!hasAlpha && sourceMimeType !== "image/jpeg") {
64
+ plans.push(...buildLossyEncodePlans("image/jpeg"));
65
+ }
66
+ return plans;
67
+ }
68
+ async function encodeImageCandidate(args) {
69
+ const { content, maxDimension, plan } = args;
70
+ const pipeline = sharp(content).resize({
71
+ width: maxDimension,
72
+ height: maxDimension,
73
+ fit: "inside",
74
+ withoutEnlargement: true,
75
+ });
76
+ if (plan.mimeType === "image/jpeg") {
77
+ return {
78
+ mimeType: "image/jpeg",
79
+ content: await pipeline.jpeg({ quality: plan.quality }).toBuffer(),
80
+ };
81
+ }
82
+ if (plan.mimeType === "image/png") {
83
+ return {
84
+ mimeType: "image/png",
85
+ content: await pipeline.png({ compressionLevel: 9 }).toBuffer(),
86
+ };
87
+ }
88
+ return {
89
+ mimeType: "image/webp",
90
+ content: await pipeline
91
+ .webp({
92
+ quality: plan.quality,
93
+ lossless: plan.lossless,
94
+ })
95
+ .toBuffer(),
96
+ };
97
+ }
98
+ async function prepareImageForModel(content, sourceMimeType) {
99
+ const metadata = await sharp(content).metadata();
100
+ const width = metadata.width;
101
+ const height = metadata.height;
102
+ if (!width || !height) {
103
+ throw new Error("failed to read image dimensions.");
104
+ }
105
+ if (width <= VIEW_IMAGE_MAX_DIMENSION_PX &&
106
+ height <= VIEW_IMAGE_MAX_DIMENSION_PX &&
107
+ content.byteLength <= VIEW_IMAGE_MODEL_MAX_BYTES) {
108
+ return { content, mimeType: sourceMimeType };
109
+ }
110
+ const maxDimension = Math.min(VIEW_IMAGE_MAX_DIMENSION_PX, Math.max(width, height));
111
+ const dimensionCaps = buildDimensionCaps(maxDimension);
112
+ const encodePlans = buildEncodePlans({
113
+ sourceMimeType,
114
+ hasAlpha: metadata.hasAlpha ?? false,
115
+ });
116
+ let smallest;
117
+ for (const dimensionCap of dimensionCaps) {
118
+ for (const plan of encodePlans) {
119
+ const candidate = await encodeImageCandidate({
120
+ content,
121
+ maxDimension: dimensionCap,
122
+ plan,
123
+ });
124
+ if (!smallest || candidate.content.byteLength < smallest.content.byteLength) {
125
+ smallest = candidate;
126
+ }
127
+ if (candidate.content.byteLength <= VIEW_IMAGE_MODEL_MAX_BYTES) {
128
+ return candidate;
129
+ }
130
+ }
131
+ }
132
+ const targetSizeLabel = formatBytes(VIEW_IMAGE_MODEL_MAX_BYTES);
133
+ if (smallest) {
134
+ throw new Error(`image could not be reduced below ${targetSizeLabel} (best effort produced ${formatBytes(smallest.content.byteLength)}).`);
135
+ }
136
+ throw new Error(`image could not be reduced below ${targetSizeLabel}.`);
137
+ }
28
138
  function buildViewImageUiText(args) {
29
- const { mimeType, bytes, fullText } = args;
30
- const sizeLabel = formatBytes(bytes);
31
- const summary = sizeLabel;
139
+ const { mimeType, fullText } = args;
32
140
  const trimmedFullText = fullText.trimEnd();
33
141
  const fullLines = trimmedFullText
34
142
  ? trimmedFullText.split("\n").map((text) => ({ text }))
35
- : [{ text: summary }];
143
+ : [{ text: mimeType }];
36
144
  return {
37
145
  previewLines: [],
38
- statusLine: `${mimeType} · ${sizeLabel}`,
146
+ statusLine: mimeType,
39
147
  fullLines,
40
148
  };
41
149
  }
@@ -60,38 +168,39 @@ export function createViewImageToolDefinition(backend) {
60
168
  return blocked("missing 'path' parameter.");
61
169
  }
62
170
  try {
63
- const { path: resolvedPath, content, bytes, } = await backend.readFileBinary(path, {
64
- maxBytes: VIEW_IMAGE_MAX_BYTES,
171
+ const { path: resolvedPath, content } = await backend.readFileBinary(path, {
172
+ maxBytes: VIEW_IMAGE_READ_MAX_BYTES,
65
173
  });
66
174
  const detected = await fileTypeFromBuffer(content);
67
175
  const mimeType = detected?.mime;
68
- const isSupported = mimeType
69
- ? SUPPORTED_IMAGE_TYPES.includes(mimeType)
70
- : false;
71
- if (!isSupported || !mimeType) {
176
+ if (!isSupportedImageType(mimeType)) {
72
177
  return blocked(`unsupported image format. supported: ${SUPPORTED_IMAGE_TYPES.join(", ")}.`);
73
178
  }
74
- const data = content.toString("base64");
75
- const resultText = `viewed ${resolvedPath} (${mimeType}, ${formatBytes(bytes)})`;
179
+ const encodedImage = await prepareImageForModel(content, mimeType);
180
+ const data = encodedImage.content.toString("base64");
181
+ const resultText = `viewed ${resolvedPath} (${encodedImage.mimeType})`;
76
182
  const toolResult = {
77
183
  role: "toolResult",
78
184
  toolCallId: toolCall.id,
79
185
  toolName: toolCall.name,
80
186
  content: [
81
187
  { type: "text", text: resultText },
82
- { type: "image", data, mimeType },
188
+ { type: "image", data, mimeType: encodedImage.mimeType },
83
189
  ],
84
190
  isError: false,
85
191
  timestamp: Date.now(),
86
192
  };
87
- const uiText = buildViewImageUiText({ mimeType, bytes, fullText: resultText });
193
+ const uiText = buildViewImageUiText({
194
+ mimeType: encodedImage.mimeType,
195
+ fullText: resultText,
196
+ });
88
197
  const uiEvent = {
89
198
  type: "view_image_success",
90
199
  toolCallId: toolCall.id,
91
200
  path: resolvedPath,
92
201
  headerTarget: resolvedPath,
93
- mimeType,
94
- bytes,
202
+ mimeType: encodedImage.mimeType,
203
+ bytes: encodedImage.content.byteLength,
95
204
  uiText,
96
205
  };
97
206
  return { kind: "single", toolResult, uiEvent };
@@ -1 +1 @@
1
- {"version":3,"file":"view_image.js","sourceRoot":"","sources":["../../../src/core/tools/view_image.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"view_image.js","sourceRoot":"","sources":["../../../src/core/tools/view_image.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,MAAM,sBAAsB,GAAG;IAC7B,gDAAgD;IAChD,qFAAqF;CACtF,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEZ,MAAM,2BAA2B,GAAG,iCAAiC,CAAC;AAEtE,MAAM,yBAAyB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AACnD,MAAM,0BAA0B,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AACrD,MAAM,2BAA2B,GAAG,IAAI,CAAC;AACzC,MAAM,0BAA0B,GAAG;IACjC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CAChE,CAAC;AACX,MAAM,8BAA8B,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAU,CAAC;AACrE,MAAM,qBAAqB,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,CAAU,CAAC;AAEjF,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,sBAAsB;IACnC,UAAU,EAAE,IAAI,CAAC,MAAM,CACrB;QACE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC;KAChE,EACD,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAChC;CACF,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;CAClC,CAAC,CAAC;AAEH,SAAS,kBAAkB,CAAC,GAAY;IACtC,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACrD,CAAC;AAuBD,SAAS,oBAAoB,CAAC,QAA4B;IACxD,OAAO,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,QAAQ,CAAC,QAA8B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3F,CAAC;AAED,SAAS,kBAAkB,CAAC,YAAoB;IAC9C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAS,CAAC,YAAY,CAAC,CAAC,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,0BAA0B,EAAE,CAAC;QAC9C,IAAI,IAAI,GAAG,YAAY,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAqC;IAClE,OAAO,8BAA8B,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,gBAAgB,CAAC,IAGzB;IACC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC1C,MAAM,KAAK,GAAsB,EAAE,CAAC;IAEpC,IAAI,cAAc,KAAK,WAAW,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,cAAc,KAAK,YAAY,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,cAAc,KAAK,YAAY,EAAE,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,IAInC;IACC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QACrC,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,YAAY;QACpB,GAAG,EAAE,QAAQ;QACb,kBAAkB,EAAE,IAAI;KACzB,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;QACnC,OAAO;YACL,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;SACnE,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO;YACL,QAAQ,EAAE,WAAW;YACrB,OAAO,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;SAChE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,MAAM,QAAQ;aACpB,IAAI,CAAC;YACJ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;aACD,QAAQ,EAAE;KACd,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,OAAe,EACf,cAAkC;IAElC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAE/B,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IAED,IACE,KAAK,IAAI,2BAA2B;QACpC,MAAM,IAAI,2BAA2B;QACrC,OAAO,CAAC,UAAU,IAAI,0BAA0B,EAChD,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IACpF,MAAM,aAAa,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,gBAAgB,CAAC;QACnC,cAAc;QACd,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,KAAK;KACrC,CAAC,CAAC;IAEH,IAAI,QAAkC,CAAC;IAEvC,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC;gBAC3C,OAAO;gBACP,YAAY,EAAE,YAAY;gBAC1B,IAAI;aACL,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;gBAC5E,QAAQ,GAAG,SAAS,CAAC;YACvB,CAAC;YAED,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,IAAI,0BAA0B,EAAE,CAAC;gBAC/D,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAG,WAAW,CAAC,0BAA0B,CAAC,CAAC;IAChE,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,oCAAoC,eAAe,0BAA0B,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAC1H,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,oCAAoC,eAAe,GAAG,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,oBAAoB,CAAC,IAA4C;IACxE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IACpC,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,eAAe;QAC/B,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAEzB,OAAO;QACL,YAAY,EAAE,EAAE;QAChB,UAAU,EAAE,QAAQ;QACpB,SAAS;KACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,OAA6B;IACzE,OAAO;QACL,MAAM,EAAE,eAAe;QACvB,KAAK,CAAC,QAAQ,CAAC,QAAkB,EAAE,UAAqB;YACtD,MAAM,EAAE,IAAI,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACxD,MAAM,YAAY,GAAG,IAAI,IAAI,gBAAgB,CAAC;YAE9C,MAAM,OAAO,GAAG,CAAC,MAAc,EAAsB,EAAE;gBACrD,MAAM,UAAU,GAAG,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACrD,MAAM,OAAO,GAAgB;oBAC3B,IAAI,EAAE,oBAAoB;oBAC1B,UAAU,EAAE,QAAQ,CAAC,EAAE;oBACvB,IAAI,EAAE,IAAI,IAAI,gBAAgB;oBAC9B,YAAY;oBACZ,MAAM;iBACP,CAAC;gBACF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;YACjD,CAAC,CAAC;YAEF,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,OAAO,CAAC,2BAA2B,CAAC,CAAC;YAC9C,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE;oBACzE,QAAQ,EAAE,yBAAyB;iBACpC,CAAC,CAAC;gBAEH,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBACnD,MAAM,QAAQ,GAAG,QAAQ,EAAE,IAAI,CAAC;gBAChC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACpC,OAAO,OAAO,CACZ,wCAAwC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC5E,CAAC;gBACJ,CAAC;gBAED,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACnE,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACrD,MAAM,UAAU,GAAG,UAAU,YAAY,KAAK,YAAY,CAAC,QAAQ,GAAG,CAAC;gBACvE,MAAM,UAAU,GAAsB;oBACpC,IAAI,EAAE,YAAY;oBAClB,UAAU,EAAE,QAAQ,CAAC,EAAE;oBACvB,QAAQ,EAAE,QAAQ,CAAC,IAAI;oBACvB,OAAO,EAAE;wBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE;wBAClC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE;qBACzD;oBACD,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACtB,CAAC;gBAEF,MAAM,MAAM,GAAG,oBAAoB,CAAC;oBAClC,QAAQ,EAAE,YAAY,CAAC,QAAQ;oBAC/B,QAAQ,EAAE,UAAU;iBACrB,CAAC,CAAC;gBACH,MAAM,OAAO,GAAgB;oBAC3B,IAAI,EAAE,oBAAoB;oBAC1B,UAAU,EAAE,QAAQ,CAAC,EAAE;oBACvB,IAAI,EAAE,YAAY;oBAClB,YAAY,EAAE,YAAY;oBAC1B,QAAQ,EAAE,YAAY,CAAC,QAAQ;oBAC/B,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,UAAU;oBACtC,MAAM;iBACP,CAAC;gBAEF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;YACjD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,YAAY,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAChE,OAAO,OAAO,CAAC,sBAAsB,YAAY,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,2 +1,2 @@
1
- export const APP_VERSION = "0.2.34";
1
+ export const APP_VERSION = "0.2.35";
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@markusylisiurunen/tau",
3
- "version": "0.2.34",
3
+ "version": "0.2.35",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "tau": "./dist/main.js"
@@ -26,13 +26,14 @@
26
26
  "@sinclair/typebox": "^0.34.48",
27
27
  "chalk": "^5.6.2",
28
28
  "file-type": "^21.3.0",
29
+ "sharp": "^0.34.5",
29
30
  "strip-ansi": "^7.1.2",
30
31
  "yaml": "^2.8.2",
31
32
  "zod": "^4.3.6"
32
33
  },
33
34
  "devDependencies": {
34
- "@biomejs/biome": "2.3.14",
35
- "@types/node": "^24.10.12",
35
+ "@biomejs/biome": "2.3.15",
36
+ "@types/node": "^24.10.13",
36
37
  "colorjs.io": "^0.6.1",
37
38
  "prettier": "^3.8.1",
38
39
  "typescript": "^5.9.3",