image-tiler-mcp-server 2.0.0 → 2.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/README.md CHANGED
@@ -1,39 +1,17 @@
1
1
  # image-tiler-mcp-server
2
2
 
3
- Capture, tile, analyze, and estimate vision tokens for LLM models - so nothing gets downscaled away.
3
+ [![npm version](https://img.shields.io/npm/v/image-tiler-mcp-server)](https://www.npmjs.com/package/image-tiler-mcp-server)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/keiver/image-tiler-mcp-server/blob/main/LICENSE)
5
+ [![Node.js >= 20](https://img.shields.io/badge/node-%3E%3D20-brightgreen)](https://nodejs.org/)
4
6
 
5
- <p align="center">
6
- <img src="assets/preview.gif" alt="Preview of image tiling grid with advised vision models size and token estimates" width="100%" />
7
- </p>
8
-
9
- ## Usage
10
-
11
- ### Tile an image
12
-
13
- > lets tile ~/Desktop/source.jpg
14
-
15
- The server shows you a comparison of supported vision models with tile counts and token estimates.
16
- Pick the model that matches your use case, and the server tiles the image and returns them in batches for analysis.
17
-
18
- ### Capture a web page
19
-
20
- > capture screenshot of https://example.com and analyze the content
7
+ MCP server that tiles large images for LLM vision analysis.
21
8
 
22
- The server launches Chrome, captures a full-page screenshot (scroll-stitching pages over 16,384px), then presents the same model comparison. Choose a model and the server tiles the capture for analysis.
23
-
24
- To get only the screenshot without tiling, just ask for a screenshot and stop after the comparison step.
25
-
26
- ### Customize tiling
27
-
28
- | What | Example prompt |
29
- |------|---------------|
30
- | Target a specific model | "Tile hero.png for OpenAI" |
31
- | Keep full resolution | "Tile banner.png at full resolution, no downscaling" |
32
- | PNG output | "Tile diagram.png as lossless PNG" |
33
- | Tile from URL | "Download and tile https://example.com/chart.png" |
34
- | Tile from base64 | "Tile this base64 image: iVBORw0KGgo..." |
9
+ <figure align="center">
10
+ <img src="assets/preview.gif" alt="Preview of image tiling grid with advised vision models size and token estimates" width="100%" />
11
+ <figcaption><i>The server generates an interactive HTML preview for every image, showing per-model tile grids and token estimates</i></figcaption>
12
+ </figure>
35
13
 
36
- ## Installation
14
+ ## Quick Start
37
15
 
38
16
  ### Claude Code
39
17
 
@@ -41,11 +19,12 @@ To get only the screenshot without tiling, just ask for a screenshot and stop af
41
19
  claude mcp add image-tiler -- npx -y image-tiler-mcp-server
42
20
  ```
43
21
 
44
- > `image-tiler` is a local alias - you can name it anything you like. `image-tiler-mcp-server` is the npm package that gets downloaded and run.
22
+ > `image-tiler` is a local alias. You can name it anything you like. `image-tiler-mcp-server` is the npm package that gets downloaded and run.
45
23
 
46
24
  See [Claude Code MCP docs](https://docs.anthropic.com/en/docs/claude-code/mcp) for more info.
47
25
 
48
- ### Codex CLI
26
+ <details>
27
+ <summary>Codex CLI</summary>
49
28
 
50
29
  ```bash
51
30
  codex mcp add image-tiler -- npx -y image-tiler-mcp-server
@@ -59,7 +38,10 @@ command = "npx"
59
38
  args = ["-y", "image-tiler-mcp-server"]
60
39
  ```
61
40
 
62
- ### VS Code (Cline / Continue)
41
+ </details>
42
+
43
+ <details>
44
+ <summary>VS Code (Cline / Continue)</summary>
63
45
 
64
46
  Add to your VS Code MCP settings:
65
47
 
@@ -72,7 +54,10 @@ Add to your VS Code MCP settings:
72
54
  }
73
55
  ```
74
56
 
75
- ### Cursor
57
+ </details>
58
+
59
+ <details>
60
+ <summary>Cursor</summary>
76
61
 
77
62
  Add to `~/.cursor/mcp.json`:
78
63
 
@@ -87,7 +72,10 @@ Add to `~/.cursor/mcp.json`:
87
72
  }
88
73
  ```
89
74
 
90
- ### Claude Desktop
75
+ </details>
76
+
77
+ <details>
78
+ <summary>Claude Desktop</summary>
91
79
 
92
80
  Add to your Claude Desktop config file:
93
81
 
@@ -108,7 +96,10 @@ Add to your Claude Desktop config file:
108
96
 
109
97
  Restart Claude Desktop after editing.
110
98
 
111
- ### Global Install (faster startup)
99
+ </details>
100
+
101
+ <details>
102
+ <summary>Global Install (faster startup)</summary>
112
103
 
113
104
  ```bash
114
105
  npm install -g image-tiler-mcp-server
@@ -122,7 +113,10 @@ Then use the simpler config in any client:
122
113
  }
123
114
  ```
124
115
 
125
- ### From Source
116
+ </details>
117
+
118
+ <details>
119
+ <summary>From Source</summary>
126
120
 
127
121
  ```bash
128
122
  git clone https://github.com/keiver/image-tiler-mcp-server.git
@@ -140,23 +134,36 @@ Then point your MCP config to the built file:
140
134
  }
141
135
  ```
142
136
 
143
- ## Tiling for LLM Vision
137
+ </details>
144
138
 
145
- LLM vision systems have a **maximum input resolution**. When you send an image larger than that limit, the model downscales it before processing. A 3600×22810 full-page screenshot gets shrunk to ~247×1568 by Claude - text becomes unreadable, UI details disappear, and the model can't analyze what it can't see.
139
+ ## Usage
146
140
 
147
- **Tiling solves this.** This MCP server:
141
+ ### Tile an image
148
142
 
149
- 1. Reads the image dimensions and the target model's vision config
150
- 2. Calculates an optimal grid that keeps every tile within the model's sweet spot
151
- 3. Extracts tiles as individual images (WebP default, PNG optional) and saves them to disk
152
- 4. Returns metadata (grid layout, file paths, estimated token cost)
153
- 5. Serves tiles back as base64 in paginated batches for the LLM to analyze
143
+ > lets tile ~/Desktop/source.jpg
154
144
 
155
- Each tile stays within the model's sweet spot - the LLM processes it at full resolution instead of downscaling, preserving text, UI elements, and fine detail.
145
+ The server shows you a comparison of supported vision models with tile counts and token estimates.
146
+ Pick the model that matches your use case, and the server tiles the image and returns them in batches for analysis.
156
147
 
157
- **Auto-downscaling:** Images over 10,000px on their longest side are automatically downscaled before tiling (configurable via `maxDimension`). This keeps tile counts reasonable and improves LLM comprehension by increasing content density per tile. Set `maxDimension=0` to disable, or pass a custom value (e.g., `maxDimension=5000`) for more aggressive downscaling.
148
+ ### Capture a web page
158
149
 
159
- ### Supported Models
150
+ > capture screenshot of https://example.com and analyze the content
151
+
152
+ The server launches Chrome, captures a full-page screenshot (scroll-stitching pages over 16,384px), then presents the same model comparison. Choose a model and the server tiles the capture for analysis.
153
+
154
+ To get only the screenshot without tiling, just ask for a screenshot and stop after the comparison step.
155
+
156
+ ### Customize tiling
157
+
158
+ | What | Example prompt |
159
+ |------|---------------|
160
+ | Target a specific model | "Tile hero.png for OpenAI" |
161
+ | Keep full resolution | "Tile banner.png at full resolution, no downscaling" |
162
+ | PNG output | "Tile diagram.png as lossless PNG" |
163
+ | Tile from URL | "Download and tile https://example.com/chart.png" |
164
+ | Tile from base64 | "Tile this base64 image: iVBORw0KGgo..." |
165
+
166
+ ## Supported Models
160
167
 
161
168
  | Model | Default tile | Tokens/tile | Max tile | ID |
162
169
  |-------|-------------|-------------|----------|-----|
@@ -165,11 +172,74 @@ Each tile stays within the model's sweet spot - the LLM processes it at full res
165
172
  | Gemini | 768px | 258 | 768px | `gemini` |
166
173
  | Gemini 3 | 1536px | 1120 | 3072px | `gemini3` |
167
174
 
168
- > **OpenAI note:** The `openai` config targets the GPT-4o / o-series vision pipeline (512px tile patches). GPT-4.1 uses a fundamentally different pipeline (32x32 pixel patches) and is not currently supported - it would require a separate model config with a different calculation approach.
175
+ > **OpenAI note:** The `openai` config targets the GPT-4o / o-series vision pipeline (512px tile patches). GPT-4.1 uses a fundamentally different pipeline (32x32 pixel patches) and is not currently supported. It would require a separate model config with a different calculation approach.
176
+
177
+ > **Gemini 3 note:** Gemini 3 uses a fixed token budget per image (1,120 tokens at default resolution, regardless of dimensions). Tiling increases total token cost but preserves fine detail. For cases where detail isn't critical, consider sending a single image instead.
178
+
179
+ <details>
180
+ <summary>Why tile? What LLMs do to large images</summary>
181
+
182
+ ### The Problem
183
+
184
+ You screenshot a full page, paste it into Claude, and Claude **rejects it**. Your 20,000px full-page screenshot? Claude won't even look at it. Anything over 8,000px on either dimension gets refused outright.
185
+
186
+ GPT-4o is more forgiving but still destructive: it first scales your image to fit within 2,048px, then scales the shortest side down to 768px, *then* tiles internally. An 8,192px-wide NASA panorama becomes ~1,456 x 768 before GPT-4o's own tiling even begins.
187
+
188
+ Gemini 1.5/2.0 handles large images natively at 768px tiles without downscaling. Gemini 3, however, caps each image at a fixed token budget (1,120 tokens at default resolution) regardless of size. Tiling gives each piece its own budget.
189
+
190
+ Each tile stays within the model's sweet spot, so the LLM processes it at full resolution.
169
191
 
170
- > **Gemini 3 note:** Gemini 3 uses a fixed token budget per image (1120 tokens regardless of dimensions). Tiling increases total token cost but preserves fine detail. For cases where detail isn't critical, consider sending a single image instead.
192
+ ### What Happens Without Tiling
171
193
 
172
- ## Tools
194
+ Using `assets/portrait.png` (3,600 x 20,220, a full-page National Geographic capture) as an example:
195
+
196
+ | Model | What happens | Impact |
197
+ |-------|-------------|--------|
198
+ | Claude | **Rejected**, exceeds 8,000px dimension limit | Cannot analyze the image at all |
199
+ | GPT-4o | Downscaled to ~365 x 2,048, then internally tiled | ~1% of original pixels survive the downscale |
200
+ | Gemini 3 | Capped at 1,120 tokens per image (default) | Fixed token budget regardless of image size |
201
+
202
+ > Gemini 1.5/2.0 tiles large images natively at 768px without downscaling.
203
+ > For Gemini 3, tiling multiplies the total token budget by sending each tile as a separate image.
204
+
205
+ ### With Tiling
206
+
207
+ | Model | Tiles | Result |
208
+ |-------|-------|--------|
209
+ | Claude | 76 tiles at 1,092px | Every tile under 8,000px and 1,568px limits, full analysis |
210
+ | GPT-4o | 135 tiles at 768px | Every tile under 2,048px, no pre-downscale needed |
211
+ | Gemini 3 | 135 tiles at 768px | Each tile gets its own token budget |
212
+
213
+ Using `assets/landscape.png` (8,192 x 4,320, NASA image gallery):
214
+
215
+ | Model | Without tiling | With tiling |
216
+ |-------|----------------|-------------|
217
+ | Claude | **Rejected** (8,192 > 8,000px limit) | 32 tiles at 1,092px, full analysis |
218
+ | GPT-4o | Downscaled to ~1,456 x 768 (~3% of pixels survive) | 66 tiles at 768px, full resolution |
219
+ | Gemini 3 | Capped at 1,120 tokens | 18 tiles at 1,536px, 18x token budget |
220
+
221
+ *Based on published model vision documentation as of Feb 2026:
222
+ [Claude vision limits](https://docs.anthropic.com/en/docs/build-with-claude/vision) ·
223
+ [OpenAI vision guide](https://platform.openai.com/docs/guides/vision) ·
224
+ [Gemini image understanding](https://ai.google.dev/gemini-api/docs/image-understanding) ·
225
+ [Gemini media resolution](https://ai.google.dev/gemini-api/docs/media-resolution)*
226
+
227
+ </details>
228
+
229
+ ## How It Works
230
+
231
+ This MCP server:
232
+
233
+ 1. Reads the image dimensions and the target model's vision config
234
+ 2. Calculates an optimal grid that keeps every tile within the model's sweet spot
235
+ 3. Extracts tiles as individual images (WebP default, PNG optional) and saves them to disk
236
+ 4. Returns a metadata summary (grid layout, file paths, token cost, per-tile content hints)
237
+ 5. Serves tiles on demand — call with `tilesDir` + `start`/`end` to retrieve batches of up to 5 tiles
238
+
239
+ **Auto-downscaling:** Images over 10,000px on their longest side are automatically downscaled before tiling (configurable via `maxDimension`). This keeps tile counts reasonable and improves LLM comprehension by increasing content density per tile. Set `maxDimension=0` to disable, or pass a custom value (e.g., `maxDimension=5000`) for more aggressive downscaling.
240
+
241
+ <details>
242
+ <summary>Tool Reference</summary>
173
243
 
174
244
  ### `tiler`
175
245
 
@@ -188,11 +258,11 @@ One unified tool that handles all image tiling operations. The mode is auto-dete
188
258
  The tool uses a two-step process to let you choose the right model before tiling:
189
259
 
190
260
  1. **Compare** - Call with only the image source. Returns a comparison table showing tile counts and token estimates for each supported model, plus an interactive HTML preview.
191
- 2. **Tile** - Call again with the chosen `model` + `outputDir` from step 1, plus:
261
+ 2. **Tile** - Call again with the chosen `preset` + `outputDir` from step 1, plus:
192
262
  - **Image sources:** re-include your original source param (`filePath`, `sourceUrl`, etc.)
193
263
  - **Captures:** use `screenshotPath` from step 1 (not the original `url`)
194
264
 
195
- > **Skip the comparison step:** Provide `model` and `outputDir` on the first call to tile immediately.
265
+ > **Skip the comparison step:** Provide `preset` and `outputDir` on the first call to tile immediately.
196
266
 
197
267
  > **Interactive model picker:** Clients that support MCP elicitation get a dropdown picker instead of the comparison table.
198
268
 
@@ -213,7 +283,7 @@ The tool uses a two-step process to let you choose the right model before tiling
213
283
  |---|---|---|---|---|
214
284
  | `url` | string | no | - | URL of the web page to capture. Requires Chrome/Chromium installed (or `CHROME_PATH` env var). |
215
285
  | `screenshotPath` | string | no | - | Path to a previously captured screenshot. Skips URL capture when provided. |
216
- | `viewportWidth` | number | no | Auto-detect (fallback 1280) | Browser viewport width in pixels (320-3840) |
286
+ | `viewportWidth` | number | no | `1280` | Browser viewport width in pixels (320-3840) |
217
287
  | `waitUntil` | string | no | `"load"` | When to consider the page loaded: `"load"`, `"networkidle"`, or `"domcontentloaded"` |
218
288
  | `delay` | number | no | `0` | Additional delay in ms after page load (max 30000) |
219
289
 
@@ -226,18 +296,22 @@ Supports scroll-stitching for pages taller than 16,384px. Automatically triggers
226
296
  | `tilesDir` | string | no | - | Path to tiles directory (returned by a previous tiling call as `outputDir`) |
227
297
  | `start` | number | no | `0` | Start tile index (0-based, inclusive) |
228
298
  | `end` | number | no | start + 4 | End tile index (0-based, inclusive). Max 5 tiles per batch. |
299
+ | `skipBlankTiles` | boolean | no | `true` | Skip blank tiles and return a text annotation instead of an image. Set to `false` to include all tiles. |
229
300
 
230
301
  #### Parameters - Tiling Config (shared across modes)
231
302
 
232
303
  | Parameter | Type | Required | Default | Description |
233
304
  |---|---|---|---|---|
234
- | `model` | string | no | Auto (cheapest) | Target vision model: `"claude"`, `"openai"`, `"gemini"`, `"gemini3"`. Auto-selects the most token-efficient preset when omitted. |
305
+ | `preset` | string | no | Auto (cheapest) | Target vision preset: `"claude"`, `"openai"`, `"gemini"`, `"gemini3"`. Auto-selects the most token-efficient preset when omitted. |
235
306
  | `tileSize` | number | no | Model default | Tile size in pixels. Clamped to model's supported range with a warning if out of bounds. |
236
307
  | `maxDimension` | number | no | `10000` | Max dimension in px (0 to disable, or 256-65536). Values 1-255 are silently clamped to 256. Pre-downscales the image so its longest side fits within this value before tiling. |
237
308
  | `outputDir` | string | no | See below | Directory to save tiles. Defaults: for `filePath` sources, `tiles/{name}_vN/` next to source (auto-incrementing: `_v1`, `_v2`, ..., `_vN`); for `sourceUrl`/`dataUrl`/`imageBase64`, `{base}/tiles/tiled_{timestamp}_{hex}/`; for captures, `{base}/tiles/capture_{timestamp}_{hex}/`. `{base}` is `~/Desktop`, `~/Downloads`, or `~` (first available). |
238
309
  | `page` | number | no | `0` | Tile page to return (0 = first 5, 1 = next 5, etc.) |
239
310
  | `format` | string | no | `"webp"` | Output format: `"webp"` (smaller, default) or `"png"` (lossless) |
240
- | `includeMetadata` | boolean | no | `true` | Analyze each tile and return content hints (blank, low-detail, mixed, high-detail) and brightness stats |
311
+ | `includeMetadata` | boolean | no | `true` | Analyze each tile using Shannon entropy and return content classification (blank, low-detail, mixed, high-detail) plus `entropy` and `sharpness` values per tile |
312
+ | `model` | string | no | - | **Deprecated.** Use `preset` instead. Still accepted; emits a deprecation warning in the response. |
313
+
314
+ </details>
241
315
 
242
316
  ## Behaviors
243
317
 
@@ -263,8 +337,6 @@ PNG, JPEG, WebP, TIFF, GIF
263
337
 
264
338
  **Running as root / in Docker** - Set `CHROME_NO_SANDBOX=1` to launch Chrome without sandbox (also enabled automatically when running as root).
265
339
 
266
- **`viewportWidth` auto-detection** - Auto-detection of screen width works on macOS only. On other platforms, falls back to 1280px.
267
-
268
340
  ## Security
269
341
 
270
342
  Local stdio server - runs with the same filesystem permissions as the MCP client that spawns it. No path sandboxing, no SSRF protection on URL downloads.
@@ -276,6 +348,10 @@ Local stdio server - runs with the same filesystem permissions as the MCP client
276
348
  - Node.js 20+
277
349
  - Compatible MCP client (Claude Code, Codex CLI, VS Code, Cursor, Claude Desktop)
278
350
 
351
+ ## Acknowledgments
352
+
353
+ Built with the help of [Claude Code](https://claude.ai/claude-code) as an AI assistant for code drafting, testing, and documentation.
354
+
279
355
  ## License
280
356
 
281
357
  MIT
@@ -24,6 +24,9 @@ export declare const DOWNLOAD_TIMEOUT_MS = 30000;
24
24
  export declare const ALLOWED_URL_PROTOCOLS: readonly ["https:"];
25
25
  export declare const MAX_BASE64_LENGTH = 67108864;
26
26
  export declare const MAX_DATA_URL_LENGTH: number;
27
+ export declare const BLANK_STDDEV_THRESHOLD = 5;
28
+ export declare const LOW_DETAIL_ENTROPY_THRESHOLD = 4;
29
+ export declare const HIGH_DETAIL_ENTROPY_THRESHOLD = 6.5;
27
30
  export declare const MIN_REMAINDER_RATIO = 0.15;
28
31
  export declare const SHARP_OPERATION_TIMEOUT_MS = 30000;
29
32
  export declare const TILE_OUTPUT_FORMATS: readonly ["png", "webp"];
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,oDAAqD,CAAC;AAChF,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,iBAAiB,CA6BhE,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAAsB,CAAC;AAGnD,eAAO,MAAM,iBAAiB,QAAuC,CAAC;AACtE,eAAO,MAAM,aAAa,QAAmC,CAAC;AAC9D,eAAO,MAAM,aAAa,QAAmC,CAAC;AAC9D,eAAO,MAAM,eAAe,QAAqC,CAAC;AAElE,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AACzC,eAAO,MAAM,eAAe,QAAQ,CAAC;AACrC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,iBAAiB,wDAAyD,CAAC;AACxF,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAG3C,eAAO,MAAM,uBAAuB,QAAmB,CAAC;AACxD,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAC1C,eAAO,MAAM,qBAAqB,qBAAsB,CAAC;AACzD,eAAO,MAAM,iBAAiB,WAAa,CAAC;AAC5C,eAAO,MAAM,mBAAmB,QAA0B,CAAC;AAG3D,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAGxC,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAGjD,eAAO,MAAM,mBAAmB,0BAA2B,CAAC;AAC5D,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AACpE,eAAO,MAAM,YAAY,KAAK,CAAC;AAG/B,eAAO,MAAM,gBAAgB,QAAoB,CAAC;AAClD,eAAO,MAAM,kBAAkB,SAAU,CAAC;AAC1C,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAC/C,eAAO,MAAM,8BAA8B,OAAO,CAAC;AACnD,eAAO,MAAM,+BAA+B,MAAM,CAAC;AACnD,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,kBAAkB,sDAAuD,CAAC;AACvF,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5D,eAAO,MAAM,yBAAyB,8BAA+B,CAAC;AAGtE,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAC/C,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAGjD,eAAO,MAAM,gBAAgB,YAAc,CAAC;AAC5C,eAAO,MAAM,uBAAuB,UAAY,CAAC;AACjD,eAAO,MAAM,qBAAqB,UAAY,CAAC;AAG/C,eAAO,MAAM,kBAAkB,WAAa,CAAC;AAC7C,eAAO,MAAM,iBAAiB,MAAM,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,oDAAqD,CAAC;AAChF,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,iBAAiB,CA6BhE,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAAsB,CAAC;AAGnD,eAAO,MAAM,iBAAiB,QAAuC,CAAC;AACtE,eAAO,MAAM,aAAa,QAAmC,CAAC;AAC9D,eAAO,MAAM,aAAa,QAAmC,CAAC;AAC9D,eAAO,MAAM,eAAe,QAAqC,CAAC;AAElE,eAAO,MAAM,mBAAmB,QAAQ,CAAC;AACzC,eAAO,MAAM,eAAe,QAAQ,CAAC;AACrC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,iBAAiB,wDAAyD,CAAC;AACxF,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAG3C,eAAO,MAAM,uBAAuB,QAAmB,CAAC;AACxD,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAC1C,eAAO,MAAM,qBAAqB,qBAAsB,CAAC;AACzD,eAAO,MAAM,iBAAiB,WAAa,CAAC;AAC5C,eAAO,MAAM,mBAAmB,QAA0B,CAAC;AAG3D,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,4BAA4B,IAAM,CAAC;AAChD,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAGjD,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAGxC,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAGjD,eAAO,MAAM,mBAAmB,0BAA2B,CAAC;AAC5D,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AACpE,eAAO,MAAM,YAAY,KAAK,CAAC;AAG/B,eAAO,MAAM,gBAAgB,QAAoB,CAAC;AAClD,eAAO,MAAM,kBAAkB,SAAU,CAAC;AAC1C,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAC/C,eAAO,MAAM,8BAA8B,OAAO,CAAC;AACnD,eAAO,MAAM,+BAA+B,MAAM,CAAC;AACnD,eAAO,MAAM,0BAA0B,QAAS,CAAC;AACjD,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,kBAAkB,sDAAuD,CAAC;AACvF,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5D,eAAO,MAAM,yBAAyB,8BAA+B,CAAC;AAGtE,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAC/C,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAGjD,eAAO,MAAM,gBAAgB,YAAc,CAAC;AAC5C,eAAO,MAAM,uBAAuB,UAAY,CAAC;AACjD,eAAO,MAAM,qBAAqB,UAAY,CAAC;AAG/C,eAAO,MAAM,kBAAkB,WAAa,CAAC;AAC7C,eAAO,MAAM,iBAAiB,MAAM,CAAC"}
package/dist/constants.js CHANGED
@@ -47,6 +47,10 @@ export const DOWNLOAD_TIMEOUT_MS = 30_000; // 30 seconds
47
47
  export const ALLOWED_URL_PROTOCOLS = ["https:"];
48
48
  export const MAX_BASE64_LENGTH = 67_108_864; // ~50MB decoded (base64 is ~4/3x)
49
49
  export const MAX_DATA_URL_LENGTH = MAX_BASE64_LENGTH + 256; // base64 payload + data URL prefix overhead
50
+ // Tile content classification thresholds
51
+ export const BLANK_STDDEV_THRESHOLD = 5;
52
+ export const LOW_DETAIL_ENTROPY_THRESHOLD = 4.0;
53
+ export const HIGH_DETAIL_ENTROPY_THRESHOLD = 6.5;
50
54
  // Remainder absorption: if a remainder strip is < 15% of tileSize, absorb it into the last tile
51
55
  export const MIN_REMAINDER_RATIO = 0.15;
52
56
  // Sharp operation timeout (guards against hangs on corrupted images)
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,8 @@ export declare const TilerInputSchema: {
12
12
  tilesDir: z.ZodOptional<z.ZodString>;
13
13
  start: z.ZodDefault<z.ZodNumber>;
14
14
  end: z.ZodOptional<z.ZodNumber>;
15
+ skipBlankTiles: z.ZodDefault<z.ZodBoolean>;
16
+ preset: z.ZodOptional<z.ZodEnum<["claude", "openai", "gemini3", "gemini"]>>;
15
17
  model: z.ZodOptional<z.ZodEnum<["claude", "openai", "gemini3", "gemini"]>>;
16
18
  tileSize: z.ZodOptional<z.ZodNumber>;
17
19
  maxDimension: z.ZodEffects<z.ZodDefault<z.ZodNumber>, number, number | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqBxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;CAmI5B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqBxB,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;CA8I5B,CAAC"}
@@ -70,12 +70,21 @@ export const TilerInputSchema = {
70
70
  .min(0, "End index must be >= 0")
71
71
  .optional()
72
72
  .describe(`End tile index (0-based, inclusive). Defaults to start + ${MAX_TILES_PER_BATCH - 1}. Max ${MAX_TILES_PER_BATCH} tiles per batch to stay within MCP response limits.`),
73
+ skipBlankTiles: z
74
+ .boolean()
75
+ .default(true)
76
+ .describe("Skip blank tiles in get-tiles mode, returning text annotations instead of images. Set to false to include all tiles. Default: true."),
73
77
  // ── Tiling config fields (shared by tile-image and capture modes) ──
74
- model: z
78
+ preset: z
75
79
  .enum(VISION_MODELS)
76
80
  .optional()
77
81
  .describe(`DO NOT provide on Phase 1 (first call). Only specify on Phase 2 after the user has chosen from the comparison table. ` +
78
82
  `Available: ${modelDescriptions}. Auto-selects cheapest when omitted on Phase 2.`),
83
+ model: z
84
+ .enum(VISION_MODELS)
85
+ .optional()
86
+ .describe(`Deprecated: use "preset" instead. Accepted for backward compatibility. ` +
87
+ `Available: ${modelDescriptions}.`),
79
88
  tileSize: z
80
89
  .number()
81
90
  .int()
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"elicitation.d.ts","sourceRoot":"","sources":["../../src/services/elicitation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GAC1C;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC;AAE9B;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CA6C5B"}
1
+ {"version":3,"file":"elicitation.d.ts","sourceRoot":"","sources":["../../src/services/elicitation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,WAAW,CAAA;CAAE,GAC1C;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC;AAE9B;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,CA4C5B"}
@@ -25,7 +25,7 @@ export async function tryElicitation(server, options) {
25
25
  requestedSchema: {
26
26
  type: "object",
27
27
  properties: {
28
- model: {
28
+ preset: {
29
29
  type: "string",
30
30
  title: "Select tiling preset",
31
31
  description: `Image: ${options.width}x${options.height}`,
@@ -33,11 +33,10 @@ export async function tryElicitation(server, options) {
33
33
  default: options.model,
34
34
  },
35
35
  },
36
- required: ["model"],
37
36
  },
38
37
  });
39
38
  if (result.action === "accept") {
40
- const selectedModel = result.content?.model;
39
+ const selectedModel = result.content?.preset;
41
40
  if (selectedModel && VISION_MODELS.includes(selectedModel)) {
42
41
  return { status: "selected", model: selectedModel };
43
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"elicitation.js","sourceRoot":"","sources":["../../src/services/elicitation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAgB/D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAiB,EACjB,OAA8B;IAE9B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;IACnD,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACpC,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,QAAQ;YACxB,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,UAAU,QAAQ,CAAC,KAAK,YAAY,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS;YAChH,CAAC,CAAC,GAAG,CAAC,CAAC,eAAe,UAAU,CAAC;QACnC,OAAO;YACL,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,MAAM,SAAS,EAAE;SACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;QAC7C,OAAO,EAAE,mBAAmB,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,iCAAiC;QAC5F,eAAe,EAAE;YACf,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAiB;oBACvB,KAAK,EAAE,sBAAsB;oBAC7B,WAAW,EAAE,UAAU,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE;oBACxD,KAAK;oBACL,OAAO,EAAE,OAAO,CAAC,KAAK;iBACvB;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAI,MAAM,CAAC,OAAmC,EAAE,KAA2B,CAAC;QAC/F,IAAI,aAAa,IAAI,aAAa,CAAC,QAAQ,CAAC,aAA4B,CAAC,EAAE,CAAC;YAC1E,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,aAA4B,EAAE,CAAC;QACrE,CAAC;QACD,mFAAmF;QACnF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"elicitation.js","sourceRoot":"","sources":["../../src/services/elicitation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAgB/D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAiB,EACjB,OAA8B;IAE9B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;IACnD,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACpC,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAG,QAAQ;YACxB,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,UAAU,QAAQ,CAAC,KAAK,YAAY,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS;YAChH,CAAC,CAAC,GAAG,CAAC,CAAC,eAAe,UAAU,CAAC;QACnC,OAAO;YACL,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,GAAG,CAAC,CAAC,KAAK,MAAM,SAAS,EAAE;SACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;QAC7C,OAAO,EAAE,mBAAmB,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,iCAAiC;QAC5F,eAAe,EAAE;YACf,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAiB;oBACvB,KAAK,EAAE,sBAAsB;oBAC7B,WAAW,EAAE,UAAU,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE;oBACxD,KAAK;oBACL,OAAO,EAAE,OAAO,CAAC,KAAK;iBACvB;aACF;SACF;KACF,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,MAAM,aAAa,GAAI,MAAM,CAAC,OAAmC,EAAE,MAA4B,CAAC;QAChG,IAAI,aAAa,IAAI,aAAa,CAAC,QAAQ,CAAC,aAA4B,CAAC,EAAE,CAAC;YAC1E,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,aAA4B,EAAE,CAAC;QACrE,CAAC;QACD,mFAAmF;QACnF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACjC,CAAC"}
@@ -1,4 +1,15 @@
1
1
  import type { TileMetadata } from "../types.js";
2
- export declare function analyzeTile(tilePath: string, index: number): Promise<TileMetadata>;
3
- export declare function analyzeTiles(tilePaths: string[]): Promise<TileMetadata[]>;
2
+ interface TileGeometry {
3
+ tileSize?: number;
4
+ extractedWidth?: number;
5
+ extractedHeight?: number;
6
+ }
7
+ export declare function analyzeTile(tilePath: string, index: number, geometry?: TileGeometry): Promise<TileMetadata>;
8
+ export declare function analyzeTiles(tiles: Array<{
9
+ filePath: string;
10
+ index: number;
11
+ extractedWidth?: number;
12
+ extractedHeight?: number;
13
+ }>, tileSize?: number): Promise<TileMetadata[]>;
14
+ export {};
4
15
  //# sourceMappingURL=tile-analyzer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tile-analyzer.d.ts","sourceRoot":"","sources":["../../src/services/tile-analyzer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,YAAY,CAAC,CAqCvB;AAED,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,YAAY,EAAE,CAAC,CAIzB"}
1
+ {"version":3,"file":"tile-analyzer.d.ts","sourceRoot":"","sources":["../../src/services/tile-analyzer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAShD,UAAU,YAAY;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAID,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,YAAY,GACtB,OAAO,CAAC,YAAY,CAAC,CAmDvB;AAED,wBAAsB,YAAY,CAChC,KAAK,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACpG,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,EAAE,CAAC,CAIzB"}
@@ -1,7 +1,8 @@
1
1
  import sharp from "sharp";
2
2
  import { withTimeout } from "../utils.js";
3
- import { SHARP_OPERATION_TIMEOUT_MS } from "../constants.js";
4
- export async function analyzeTile(tilePath, index) {
3
+ import { SHARP_OPERATION_TIMEOUT_MS, BLANK_STDDEV_THRESHOLD, LOW_DETAIL_ENTROPY_THRESHOLD, HIGH_DETAIL_ENTROPY_THRESHOLD, } from "../constants.js";
4
+ const THIN_TILE_RATIO = 0.5;
5
+ export async function analyzeTile(tilePath, index, geometry) {
5
6
  const stats = await withTimeout(sharp(tilePath).stats(), SHARP_OPERATION_TIMEOUT_MS, "tile-stats");
6
7
  const channelCount = stats.channels.length;
7
8
  if (channelCount === 0) {
@@ -9,16 +10,28 @@ export async function analyzeTile(tilePath, index) {
9
10
  }
10
11
  const meanBrightness = stats.channels.reduce((sum, ch) => sum + ch.mean, 0) / channelCount;
11
12
  const stdDev = stats.channels.reduce((sum, ch) => sum + ch.stdev, 0) / channelCount;
13
+ const entropyAvailable = typeof stats.entropy === "number";
14
+ const entropy = stats.entropy ?? 0;
15
+ const sharpness = stats.sharpness ?? 0;
16
+ const isThin = geometry?.tileSize != null &&
17
+ ((geometry.extractedWidth != null && geometry.extractedWidth < THIN_TILE_RATIO * geometry.tileSize) ||
18
+ (geometry.extractedHeight != null && geometry.extractedHeight < THIN_TILE_RATIO * geometry.tileSize));
12
19
  let contentHint;
13
20
  let isBlank = false;
14
- if (stdDev < 5) {
21
+ if (stdDev < BLANK_STDDEV_THRESHOLD) {
15
22
  contentHint = "blank";
16
23
  isBlank = true;
17
24
  }
18
- else if (stdDev < 25) {
25
+ else if (isThin) {
26
+ contentHint = "mixed";
27
+ }
28
+ else if (!entropyAvailable) {
29
+ contentHint = "mixed";
30
+ }
31
+ else if (entropy < LOW_DETAIL_ENTROPY_THRESHOLD) {
19
32
  contentHint = "low-detail";
20
33
  }
21
- else if (stdDev > 60) {
34
+ else if (entropy > HIGH_DETAIL_ENTROPY_THRESHOLD) {
22
35
  contentHint = "high-detail";
23
36
  }
24
37
  else {
@@ -28,11 +41,13 @@ export async function analyzeTile(tilePath, index) {
28
41
  index,
29
42
  meanBrightness: Math.round(meanBrightness * 100) / 100,
30
43
  stdDev: Math.round(stdDev * 100) / 100,
44
+ entropy: Math.round(entropy * 100) / 100,
45
+ sharpness: Math.round(sharpness * 100) / 100,
31
46
  contentHint,
32
47
  isBlank,
33
48
  };
34
49
  }
35
- export async function analyzeTiles(tilePaths) {
36
- return Promise.all(tilePaths.map((tilePath, index) => analyzeTile(tilePath, index)));
50
+ export async function analyzeTiles(tiles, tileSize) {
51
+ return Promise.all(tiles.map((t) => analyzeTile(t.filePath, t.index, { tileSize, extractedWidth: t.extractedWidth, extractedHeight: t.extractedHeight })));
37
52
  }
38
53
  //# sourceMappingURL=tile-analyzer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tile-analyzer.js","sourceRoot":"","sources":["../../src/services/tile-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAgB,EAChB,KAAa;IAEb,MAAM,KAAK,GAAG,MAAM,WAAW,CAC7B,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EACvB,0BAA0B,EAC1B,YAAY,CACb,CAAC;IAEF,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC3C,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,+BAA+B,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,cAAc,GAClB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC;IACtE,MAAM,MAAM,GACV,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC;IAEvE,IAAI,WAAwC,CAAC;IAC7C,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,WAAW,GAAG,OAAO,CAAC;QACtB,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;SAAM,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC;QACvB,WAAW,GAAG,YAAY,CAAC;IAC7B,CAAC;SAAM,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC;QACvB,WAAW,GAAG,aAAa,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,WAAW,GAAG,OAAO,CAAC;IACxB,CAAC;IAED,OAAO;QACL,KAAK;QACL,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC,GAAG,GAAG;QACtD,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG;QACtC,WAAW;QACX,OAAO;KACR,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAmB;IAEnB,OAAO,OAAO,CAAC,GAAG,CAChB,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CACjE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tile-analyzer.js","sourceRoot":"","sources":["../../src/services/tile-analyzer.ts"],"names":[],"mappings":"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"}
@@ -61,21 +61,4 @@ export declare function buildPhase2Response(result: TileImageResult, opts: Phase
61
61
  text: string;
62
62
  }>;
63
63
  }>;
64
- type ContentBlock = {
65
- type: "text";
66
- text: string;
67
- } | {
68
- type: "image";
69
- data: string;
70
- mimeType: string;
71
- };
72
- export declare function appendTilesPage(phase2Response: {
73
- content: Array<{
74
- type: "text";
75
- text: string;
76
- }>;
77
- }, outputDir: string, page: number): Promise<{
78
- content: ContentBlock[];
79
- }>;
80
- export {};
81
64
  //# sourceMappingURL=tiling-pipeline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tiling-pipeline.d.ts","sourceRoot":"","sources":["../../src/services/tiling-pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tiling-pipeline.d.ts","sourceRoot":"","sources":["../../src/services/tiling-pipeline.ts"],"names":[],"mappings":"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"}