@roj-ai/sdk 0.1.16 → 0.1.18

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.
Files changed (45) hide show
  1. package/dist/bootstrap.d.ts.map +1 -1
  2. package/dist/bootstrap.js +12 -2
  3. package/dist/bootstrap.js.map +1 -1
  4. package/dist/config.d.ts +12 -0
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js.map +1 -1
  7. package/dist/core/image/types.d.ts +2 -0
  8. package/dist/core/image/types.d.ts.map +1 -1
  9. package/dist/core/image/vips-resizer.d.ts.map +1 -1
  10. package/dist/core/image/vips-resizer.js +12 -11
  11. package/dist/core/image/vips-resizer.js.map +1 -1
  12. package/dist/info.d.ts +7 -0
  13. package/dist/info.d.ts.map +1 -0
  14. package/dist/info.js +8 -0
  15. package/dist/info.js.map +1 -0
  16. package/dist/plugins/uploads/preprocessors/image-classifier.d.ts +20 -0
  17. package/dist/plugins/uploads/preprocessors/image-classifier.d.ts.map +1 -1
  18. package/dist/plugins/uploads/preprocessors/image-classifier.js +78 -26
  19. package/dist/plugins/uploads/preprocessors/image-classifier.js.map +1 -1
  20. package/dist/plugins/uploads/preprocessors/index.d.ts +1 -0
  21. package/dist/plugins/uploads/preprocessors/index.d.ts.map +1 -1
  22. package/dist/plugins/uploads/preprocessors/index.js +1 -0
  23. package/dist/plugins/uploads/preprocessors/index.js.map +1 -1
  24. package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.d.ts +52 -5
  25. package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.d.ts.map +1 -1
  26. package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.js +152 -97
  27. package/dist/plugins/uploads/preprocessors/markitdown-preprocessor.js.map +1 -1
  28. package/dist/plugins/uploads/preprocessors/pdf-preprocessor.d.ts +71 -0
  29. package/dist/plugins/uploads/preprocessors/pdf-preprocessor.d.ts.map +1 -0
  30. package/dist/plugins/uploads/preprocessors/pdf-preprocessor.js +274 -0
  31. package/dist/plugins/uploads/preprocessors/pdf-preprocessor.js.map +1 -0
  32. package/dist/transport/http/app.d.ts.map +1 -1
  33. package/dist/transport/http/app.js +6 -1
  34. package/dist/transport/http/app.js.map +1 -1
  35. package/package.json +2 -2
  36. package/src/bootstrap.ts +12 -2
  37. package/src/config.ts +13 -0
  38. package/src/core/image/types.ts +2 -0
  39. package/src/core/image/vips-resizer.ts +12 -11
  40. package/src/info.ts +9 -0
  41. package/src/plugins/uploads/preprocessors/image-classifier.ts +93 -27
  42. package/src/plugins/uploads/preprocessors/index.ts +1 -0
  43. package/src/plugins/uploads/preprocessors/markitdown-preprocessor.ts +173 -108
  44. package/src/plugins/uploads/preprocessors/pdf-preprocessor.ts +342 -0
  45. package/src/transport/http/app.ts +6 -1
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAE9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAI3D,OAAO,EAAE,SAAS,EAAuC,MAAM,qBAAqB,CAAA;AAEpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAGzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AAExE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,EAAE,KAAK,gBAAgB,EAAgB,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAG5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAUpD,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAO1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD;;;GAGG;AACH,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6EAgBV,CAAA;AAEV,wDAAwD;AACxD,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,OAAO,cAAc,CAAC,CAAA;AAE1E;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB,UAAU,EAAE,UAAU,CAAA;IACtB,WAAW,EAAE,WAAW,CAAA;IACxB,sFAAsF;IACtF,YAAY,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IAC9C,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,6EAA6E;IAC7E,aAAa,EAAE,SAAS,CAAA;IACxB,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAA;IACd,kDAAkD;IAClD,QAAQ,EAAE,QAAQ,CAAA;IAClB,0DAA0D;IAC1D,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,uDAAuD;IACvD,QAAQ,EAAE,QAAQ,CAAA;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAiD7F;AA8ED;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE;IACT,YAAY,CAAC,EAAE,kBAAkB,CAAA;CACjC,GACC,MAAM,CAAC,oBAAoB,EAAE,OAAO,cAAc,CAAC,CAiBrD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE;IACT,YAAY,CAAC,EAAE,kBAAkB,CAAA;CACjC,GACC,cAAc,CAEhB;;AAED;;;;;GAKG"}
package/dist/bootstrap.js CHANGED
@@ -11,7 +11,7 @@ import { LLMLogger, LoggingLLMProvider, MockLLMProvider } from './core/llm/index
11
11
  import { OpenRouterProvider } from './core/llm/openrouter.js';
12
12
  import { RoutingLLMProvider } from './core/llm/routing-provider.js';
13
13
  import { PreprocessorRegistry } from './plugins/uploads/preprocessor.js';
14
- import { ImageClassifierPreprocessor, MarkitdownPreprocessor, ZipPreprocessor } from './plugins/uploads/preprocessors/index.js';
14
+ import { ImageClassifierPreprocessor, MarkitdownPreprocessor, PdfPreprocessor, ZipPreprocessor } from './plugins/uploads/preprocessors/index.js';
15
15
  import { SessionFileStore } from './core/file-store/file-store.js';
16
16
  import { createSystem } from './core/system.js';
17
17
  import { ToolExecutor as ToolExecutorImpl } from './core/tools/executor.js';
@@ -74,7 +74,17 @@ export function bootstrap(config, userConfig, platform) {
74
74
  const portPool = new PortPool();
75
75
  const preprocessorRegistry = new PreprocessorRegistry();
76
76
  const imageClassifierGate = new Semaphore(config.imageClassifierConcurrency ?? 10);
77
- preprocessorRegistry.register(new ImageClassifierPreprocessor({ llmProvider, logger, fs: platform.fs, gate: imageClassifierGate }));
77
+ // Dedicated resizer for the classification path: separate from the LLM
78
+ // provider's general-purpose ImageProcessor (which keeps a higher
79
+ // maxDimension for agent file-inspection tool calls). The classifier
80
+ // hands each image to the resizer with its own 1024px override.
81
+ const classifierImageResizer = new VipsImageResizer({ fs: platform.fs, process: platform.process, tmpDir: platform.tmpDir });
82
+ preprocessorRegistry.register(new ImageClassifierPreprocessor({ llmProvider, logger, fs: platform.fs, gate: imageClassifierGate, imageResizer: classifierImageResizer }));
83
+ // PdfPreprocessor must come before MarkitdownPreprocessor — both could
84
+ // match `application/pdf` in principle, but the registry uses first-hit
85
+ // and PdfPreprocessor's `pdftotext + pdfimages -all + streaming` pipeline
86
+ // is dramatically faster than markitdown's pdfminer.six backend.
87
+ preprocessorRegistry.register(new PdfPreprocessor({ registry: preprocessorRegistry, logger, fs: platform.fs, process: platform.process }));
78
88
  preprocessorRegistry.register(new MarkitdownPreprocessor({ registry: preprocessorRegistry, logger, fs: platform.fs, process: platform.process }));
79
89
  preprocessorRegistry.register(new ZipPreprocessor({ registry: preprocessorRegistry, logger, process: platform.process }));
80
90
  logger.info('Bootstrap complete');
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -20,6 +20,18 @@ export interface Config {
20
20
  llmLoggingEnabled?: boolean;
21
21
  /** Max concurrent vision LLM calls when classifying uploaded images. Default 10. */
22
22
  imageClassifierConcurrency?: number;
23
+ /**
24
+ * Identity of the application embedding this SDK. Reported via `/status`
25
+ * so platform health-checks can surface "what's actually running" in debug
26
+ * tooling alongside the SDK's own version.
27
+ *
28
+ * sandbox-runtime sets this from its own package.json; other embedders
29
+ * (e.g. standalone-server, custom bundles) can supply their own.
30
+ */
31
+ agentRuntime?: {
32
+ name: string;
33
+ version: string;
34
+ };
23
35
  logLevel: LogLevel;
24
36
  logFormat: 'console' | 'json';
25
37
  workerUrl?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEtD;;GAEG;AACH,MAAM,WAAW,MAAM;IAEtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IAGZ,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAA;IAI9B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,oBAAoB,CAAA;IAC9B,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAA;IAGvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAE3B,oFAAoF;IACpF,0BAA0B,CAAC,EAAE,MAAM,CAAA;IAGnC,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,SAAS,GAAG,MAAM,CAAA;IAG7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IAGnB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,QAAO,MAuB7B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,MAAM,EA2BrD,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEtD;;GAEG;AACH,MAAM,WAAW,MAAM;IAEtB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IAGZ,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAA;IAI9B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,oBAAoB,CAAA;IAC9B,mFAAmF;IACnF,cAAc,CAAC,EAAE,MAAM,CAAA;IAGvB,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAE3B,oFAAoF;IACpF,0BAA0B,CAAC,EAAE,MAAM,CAAA;IAEnC;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE;QACd,IAAI,EAAE,MAAM,CAAA;QACZ,OAAO,EAAE,MAAM,CAAA;KACf,CAAA;IAGD,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,SAAS,GAAG,MAAM,CAAA;IAG7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IAGnB,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,QAAO,MAuB7B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,MAAM,EA2BrD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA2DnC;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,GAAW,EAAE;IACtC,OAAO;QACN,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC;QAC9C,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,SAAS;QACnC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,QAAQ,CAAC;QACnE,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,MAAM,CAAsB;QACrE,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAChD,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC9C,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,4BAA4B;QACvE,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;QACnG,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,OAAO;QAC9D,0BAA0B,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B;YACnE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,EAAE,CAAC;YACxD,CAAC,CAAC,SAAS;QACZ,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM,CAAa;QACvD,SAAS,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,SAAS,CAAuB;QACtE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;QACjC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;QACnC,sBAAsB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,MAAM,EAAE,EAAE,CAAC;QACtF,qBAAqB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,OAAO,EAAE,EAAE,CAAC;QACrF,qBAAqB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,OAAO,EAAE,EAAE,CAAC;QACpF,oBAAoB,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,OAAO,EAAE,EAAE,CAAC;KAClF,CAAA;AACF,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAc,EAAY,EAAE;IAC1D,MAAM,MAAM,GAAa,EAAE,CAAA;IAE3B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;QAC5E,MAAM,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAA;IACnF,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IACzD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IACrD,CAAC;IAED,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAC3C,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC3C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,6BAA6B,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,OAAO,MAAM,CAAA;AACd,CAAC,CAAA"}
@@ -2,6 +2,8 @@ import type { FileStore } from '../../core/file-store/types.js';
2
2
  import type { ToolResultContent } from '../../core/llm/llm-log-types.js';
3
3
  export interface ImageResizeOptions {
4
4
  maxFileSizeBytes?: number;
5
+ /** Override the resizer's default max dimension (long side, px). */
6
+ maxDimension?: number;
5
7
  }
6
8
  export interface ImageResizer {
7
9
  resize(filePath: string, mimeType: string, options?: ImageResizeOptions): Promise<ImageResizeResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/image/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,MAAM,WAAW,kBAAkB;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,YAAY;IAC5B,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;CACpG;AAED,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,oBAAoB;IACpC,gBAAgB,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC9B,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;CAC7F"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/image/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,MAAM,WAAW,kBAAkB;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC5B,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;CACpG;AAED,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,oBAAoB;IACpC,gBAAgB,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,cAAc;IAC9B,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;CAC7F"}
@@ -1 +1 @@
1
- {"version":3,"file":"vips-resizer.d.ts","sourceRoot":"","sources":["../../../src/core/image/vips-resizer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAErF,MAAM,WAAW,uBAAuB;IACvC,EAAE,EAAE,UAAU,CAAA;IACd,OAAO,EAAE,aAAa,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,qBAAa,gBAAiB,YAAW,YAAY;IACpD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;gBAEzB,OAAO,EAAE,uBAAuB;IAOtC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAwB5F,kBAAkB;YAUlB,eAAe;YAuBf,aAAa;CAyC3B"}
1
+ {"version":3,"file":"vips-resizer.d.ts","sourceRoot":"","sources":["../../../src/core/image/vips-resizer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAErF,MAAM,WAAW,uBAAuB;IACvC,EAAE,EAAE,UAAU,CAAA;IACd,OAAO,EAAE,aAAa,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,qBAAa,gBAAiB,YAAW,YAAY;IACpD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;gBAEzB,OAAO,EAAE,uBAAuB;IAOtC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAyB5F,kBAAkB;YAUlB,eAAe;YAuBf,aAAa;CAyC3B"}
@@ -11,9 +11,10 @@ export class VipsImageResizer {
11
11
  this.maxDimension = options.maxDimension ?? 8000;
12
12
  }
13
13
  async resize(filePath, mimeType, options) {
14
+ const effectiveMaxDimension = options?.maxDimension ?? this.maxDimension;
14
15
  try {
15
16
  // Step 1: Dimension resize if needed
16
- const result = await this.dimensionResize(filePath, mimeType);
17
+ const result = await this.dimensionResize(filePath, mimeType, effectiveMaxDimension);
17
18
  // Step 2: If no size constraint, done
18
19
  if (!options?.maxFileSizeBytes)
19
20
  return result;
@@ -25,7 +26,7 @@ export class VipsImageResizer {
25
26
  if (result.tempFile) {
26
27
  await this.fs.unlink(result.tempFile).catch(() => { });
27
28
  }
28
- return await this.compressToFit(filePath, options.maxFileSizeBytes);
29
+ return await this.compressToFit(filePath, options.maxFileSizeBytes, effectiveMaxDimension);
29
30
  }
30
31
  catch (e) {
31
32
  console.warn('[image-resize] failed, using original image:', e instanceof Error ? e.message : e);
@@ -43,9 +44,9 @@ export class VipsImageResizer {
43
44
  return null;
44
45
  return { width, height };
45
46
  }
46
- async dimensionResize(filePath, mimeType) {
47
+ async dimensionResize(filePath, mimeType, maxDimension) {
47
48
  const dims = await this.getImageDimensions(filePath);
48
- const needsResize = dims !== null && (dims.width > this.maxDimension || dims.height > this.maxDimension);
49
+ const needsResize = dims !== null && (dims.width > maxDimension || dims.height > maxDimension);
49
50
  // JPEGs within dimension limits pass through unchanged
50
51
  if (mimeType === 'image/jpeg' && !needsResize) {
51
52
  return { path: filePath, mimeType };
@@ -56,19 +57,19 @@ export class VipsImageResizer {
56
57
  await this.process.execFile('vipsthumbnail', [
57
58
  filePath,
58
59
  '--size',
59
- `${this.maxDimension}x${this.maxDimension}`,
60
+ `${maxDimension}x${maxDimension}`,
60
61
  '-o',
61
62
  outputPath,
62
63
  ], { timeout: 30_000 });
63
64
  return { path: outputPath, mimeType: 'image/jpeg', tempFile: outputPath };
64
65
  }
65
- async compressToFit(filePath, maxFileSizeBytes) {
66
- const halfDim = Math.floor(this.maxDimension / 2);
66
+ async compressToFit(filePath, maxFileSizeBytes, maxDimension) {
67
+ const halfDim = Math.floor(maxDimension / 2);
67
68
  const attempts = [
68
- { dimension: this.maxDimension, quality: 85 },
69
- { dimension: this.maxDimension, quality: 70 },
70
- { dimension: this.maxDimension, quality: 50 },
71
- { dimension: this.maxDimension, quality: 30 },
69
+ { dimension: maxDimension, quality: 85 },
70
+ { dimension: maxDimension, quality: 70 },
71
+ { dimension: maxDimension, quality: 50 },
72
+ { dimension: maxDimension, quality: 30 },
72
73
  { dimension: halfDim, quality: 70 },
73
74
  { dimension: halfDim, quality: 50 },
74
75
  { dimension: halfDim, quality: 30 },
@@ -1 +1 @@
1
- {"version":3,"file":"vips-resizer.js","sourceRoot":"","sources":["../../../src/core/image/vips-resizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAYhC,MAAM,OAAO,gBAAgB;IACX,EAAE,CAAY;IACd,OAAO,CAAe;IACtB,MAAM,CAAQ;IACd,YAAY,CAAQ;IAErC,YAAY,OAAgC;QAC3C,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;QAC5B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAA;IACjD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,QAAgB,EAAE,OAA4B;QAC5E,IAAI,CAAC;YACJ,qCAAqC;YACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YAE7D,sCAAsC;YACtC,IAAI,CAAC,OAAO,EAAE,gBAAgB;gBAAE,OAAO,MAAM,CAAA;YAE7C,+BAA+B;YAC/B,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;YACvD,IAAI,QAAQ,IAAI,OAAO,CAAC,gBAAgB;gBAAE,OAAO,MAAM,CAAA;YAEvD,iEAAiE;YACjE,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YACtD,CAAC;YAED,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;QACpE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAChG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;QACpC,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,QAAgB;QAChD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;QAC5H,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACvC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAA;QACjC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAA;QACpE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;IACzB,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,QAAgB;QAC/D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;QACpD,MAAM,WAAW,GAAG,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA;QAExG,uDAAuD;QACvD,IAAI,QAAQ,KAAK,YAAY,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;QACpC,CAAC;QAED,2EAA2E;QAC3E,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;QACjE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,CAAA;QAE5D,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE;YAC5C,QAAQ;YACR,QAAQ;YACR,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,EAAE;YAC3C,IAAI;YACJ,UAAU;SACV,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;QACvB,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAA;IAC1E,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,gBAAwB;QACrE,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAA;QACjD,MAAM,QAAQ,GAAG;YAChB,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;YAC7C,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;YAC7C,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;YAC7C,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;YAC7C,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;YACnC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;YACnC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;SACnC,CAAA;QAED,IAAI,UAAyC,CAAA;QAE7C,KAAK,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC/C,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;YACjE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAA;YAE9D,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE;gBAC5C,QAAQ;gBACR,QAAQ;gBACR,GAAG,SAAS,IAAI,SAAS,EAAE;gBAC3B,IAAI;gBACJ,GAAG,UAAU,MAAM,OAAO,GAAG;aAC7B,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;YAEvB,4BAA4B;YAC5B,IAAI,UAAU,EAAE,QAAQ,EAAE,CAAC;gBAC1B,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YAC1D,CAAC;YAED,UAAU,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAA;YAE/E,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,gBAAgB,EAAE,CAAC;gBAC/D,OAAO,UAAU,CAAA;YAClB,CAAC;QACF,CAAC;QAED,mEAAmE;QACnE,OAAO,UAAW,CAAA;IACnB,CAAC;CACD"}
1
+ {"version":3,"file":"vips-resizer.js","sourceRoot":"","sources":["../../../src/core/image/vips-resizer.ts"],"names":[],"mappings":"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"}
package/dist/info.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Build-time SDK metadata. Read from this package's own package.json so the
3
+ * value tracks releases automatically — no risk of a forgotten string update
4
+ * after a version bump.
5
+ */
6
+ export declare const SDK_VERSION: string;
7
+ //# sourceMappingURL=info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../src/info.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,eAAO,MAAM,WAAW,EAAkB,MAAM,CAAA"}
package/dist/info.js ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Build-time SDK metadata. Read from this package's own package.json so the
3
+ * value tracks releases automatically — no risk of a forgotten string update
4
+ * after a version bump.
5
+ */
6
+ import pkg from '../package.json' with { type: 'json' };
7
+ export const SDK_VERSION = pkg.version;
8
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../src/info.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAEvD,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC,OAAiB,CAAA"}
@@ -4,6 +4,7 @@
4
4
  * Sends images to a vision-capable LLM for description.
5
5
  * Falls back to basic metadata if vision is not available.
6
6
  */
7
+ import type { ImageResizer } from '../../../core/image/types.js';
7
8
  import type { LLMProvider } from '../../../core/llm/provider.js';
8
9
  import type { Semaphore } from '../../../lib/utils/concurrency.js';
9
10
  import type { Result } from '../../../lib/utils/result.js';
@@ -19,6 +20,14 @@ export interface ImageClassifierConfig {
19
20
  logger: Logger;
20
21
  /** FileSystem adapter (for checking + reading image files) */
21
22
  fs: FileSystem;
23
+ /**
24
+ * Optional resizer. When provided, classifier downscales images to
25
+ * ~1024px before sending to the vision LLM. Skipping this is fine for
26
+ * tests; in production it dramatically cuts payload size and token cost
27
+ * (brand PDFs embed 2000–3000px JPEGs the model would otherwise see at
28
+ * full resolution).
29
+ */
30
+ imageResizer?: ImageResizer;
22
31
  /** Whether to skip vision and just return metadata */
23
32
  skipVision?: boolean;
24
33
  /**
@@ -40,6 +49,7 @@ export declare class ImageClassifierPreprocessor implements Preprocessor {
40
49
  private readonly visionModel;
41
50
  private readonly logger;
42
51
  private readonly fs;
52
+ private readonly imageResizer;
43
53
  private readonly skipVision;
44
54
  private readonly gate;
45
55
  constructor(config: ImageClassifierConfig);
@@ -49,6 +59,16 @@ export declare class ImageClassifierPreprocessor implements Preprocessor {
49
59
  * Returns null if vision is not available or fails.
50
60
  */
51
61
  private describeImage;
62
+ /**
63
+ * Pre-resize the image for vision classification.
64
+ *
65
+ * Returns either a `data:` URL with the resized JPEG (when a resizer is
66
+ * available) or a `file://` URL fallback (LLM provider will resolve it via
67
+ * the global ImageProcessor, with its bigger maxDimension default).
68
+ *
69
+ * Cleanup removes any temp file produced by the resizer.
70
+ */
71
+ private prepareImageUrl;
52
72
  private formatSize;
53
73
  }
54
74
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"image-classifier.d.ts","sourceRoot":"","sources":["../../../../src/plugins/uploads/preprocessors/image-classifier.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAM/F,MAAM,WAAW,qBAAqB;IACrC,wCAAwC;IACxC,WAAW,EAAE,WAAW,CAAA;IACxB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,EAAE,EAAE,UAAU,CAAA;IACd,sDAAsD;IACtD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,CAAA;CAChB;AAMD;;;GAGG;AACH,qBAAa,2BAA4B,YAAW,YAAY;IAC/D,QAAQ,CAAC,IAAI,sBAAqB;IAClC,QAAQ,CAAC,kBAAkB,WAAc;IAEzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuB;gBAEhC,MAAM,EAAE,qBAAqB;IASnC,OAAO,CACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,mBAAmB,GACtB,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAmE7C;;;OAGG;YACW,aAAa;IA2C3B,OAAO,CAAC,UAAU;CAKlB;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAChD,MAAM,EAAE,qBAAqB,GAC3B,2BAA2B,CAE7B"}
1
+ {"version":3,"file":"image-classifier.d.ts","sourceRoot":"","sources":["../../../../src/plugins/uploads/preprocessors/image-classifier.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAe/F,MAAM,WAAW,qBAAqB;IACrC,wCAAwC;IACxC,WAAW,EAAE,WAAW,CAAA;IACxB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,EAAE,EAAE,UAAU,CAAA;IACd;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,sDAAsD;IACtD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,CAAA;CAChB;AAMD;;;GAGG;AACH,qBAAa,2BAA4B,YAAW,YAAY;IAC/D,QAAQ,CAAC,IAAI,sBAAqB;IAClC,QAAQ,CAAC,kBAAkB,WAAc;IAEzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0B;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuB;gBAEhC,MAAM,EAAE,qBAAqB;IAUnC,OAAO,CACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,mBAAmB,GACtB,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAmE7C;;;OAGG;YACW,aAAa;IAgD3B;;;;;;;;OAQG;YACW,eAAe;IAgC7B,OAAO,CAAC,UAAU;CAKlB;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAChD,MAAM,EAAE,qBAAqB,GAC3B,2BAA2B,CAE7B"}
@@ -6,6 +6,14 @@
6
6
  */
7
7
  import { ModelId } from '../../../core/llm/schema.js';
8
8
  import { Err, Ok } from '../../../lib/utils/result.js';
9
+ /**
10
+ * Anthropic vision API internally downsamples images to ~1568px long side.
11
+ * Anything larger just wastes bandwidth and LLM tokens. For 1–2 sentence
12
+ * descriptions, 1024px is more than enough detail.
13
+ */
14
+ const CLASSIFY_MAX_DIMENSION = 1024;
15
+ /** Hard cap to keep base64 payloads small (LLM still accepts up to 5MB). */
16
+ const CLASSIFY_MAX_FILE_SIZE_BYTES = 1 * 1024 * 1024;
9
17
  // ============================================================================
10
18
  // Image Classifier
11
19
  // ============================================================================
@@ -20,6 +28,7 @@ export class ImageClassifierPreprocessor {
20
28
  visionModel;
21
29
  logger;
22
30
  fs;
31
+ imageResizer;
23
32
  skipVision;
24
33
  gate;
25
34
  constructor(config) {
@@ -27,6 +36,7 @@ export class ImageClassifierPreprocessor {
27
36
  this.visionModel = config.visionModel ? ModelId(config.visionModel) : ModelId('anthropic/claude-haiku-4.5');
28
37
  this.logger = config.logger;
29
38
  this.fs = config.fs;
39
+ this.imageResizer = config.imageResizer;
30
40
  this.skipVision = config.skipVision ?? false;
31
41
  this.gate = config.gate;
32
42
  }
@@ -91,33 +101,38 @@ export class ImageClassifierPreprocessor {
91
101
  */
92
102
  async describeImage(filePath, mimeType) {
93
103
  try {
94
- // Use file:// URL - resolved to base64 lazily in LLM provider
95
- const inferenceCall = () => this.llmProvider.inference({
96
- model: this.visionModel,
97
- systemPrompt: 'You are an image description assistant. Describe images concisely in 1-2 sentences.',
98
- messages: [
99
- {
100
- role: 'user',
101
- content: [
102
- {
103
- type: 'text',
104
- text: 'Please describe this image concisely in 1-2 sentences. Focus on the main subject and any text visible.',
105
- },
106
- {
107
- type: 'image_url',
108
- imageUrl: { url: `file://${filePath}` },
109
- },
110
- ],
111
- },
112
- ],
113
- maxTokens: 200,
114
- temperature: 0.3,
115
- });
116
- const result = await (this.gate ? this.gate.run(inferenceCall) : inferenceCall());
117
- if (result.ok && result.value.content) {
118
- return result.value.content.trim();
104
+ const { url: imageUrl, cleanup } = await this.prepareImageUrl(filePath, mimeType);
105
+ try {
106
+ const inferenceCall = () => this.llmProvider.inference({
107
+ model: this.visionModel,
108
+ systemPrompt: 'You are an image description assistant. Describe images concisely in 1-2 sentences.',
109
+ messages: [
110
+ {
111
+ role: 'user',
112
+ content: [
113
+ {
114
+ type: 'text',
115
+ text: 'Please describe this image concisely in 1-2 sentences. Focus on the main subject and any text visible.',
116
+ },
117
+ {
118
+ type: 'image_url',
119
+ imageUrl: { url: imageUrl },
120
+ },
121
+ ],
122
+ },
123
+ ],
124
+ maxTokens: 200,
125
+ temperature: 0.3,
126
+ });
127
+ const result = await (this.gate ? this.gate.run(inferenceCall) : inferenceCall());
128
+ if (result.ok && result.value.content) {
129
+ return result.value.content.trim();
130
+ }
131
+ return null;
132
+ }
133
+ finally {
134
+ await cleanup();
119
135
  }
120
- return null;
121
136
  }
122
137
  catch (error) {
123
138
  this.logger.warn('Vision inference failed', {
@@ -126,6 +141,43 @@ export class ImageClassifierPreprocessor {
126
141
  return null;
127
142
  }
128
143
  }
144
+ /**
145
+ * Pre-resize the image for vision classification.
146
+ *
147
+ * Returns either a `data:` URL with the resized JPEG (when a resizer is
148
+ * available) or a `file://` URL fallback (LLM provider will resolve it via
149
+ * the global ImageProcessor, with its bigger maxDimension default).
150
+ *
151
+ * Cleanup removes any temp file produced by the resizer.
152
+ */
153
+ async prepareImageUrl(filePath, mimeType) {
154
+ if (!this.imageResizer) {
155
+ return { url: `file://${filePath}`, cleanup: async () => { } };
156
+ }
157
+ try {
158
+ const resized = await this.imageResizer.resize(filePath, mimeType, {
159
+ maxDimension: CLASSIFY_MAX_DIMENSION,
160
+ maxFileSizeBytes: CLASSIFY_MAX_FILE_SIZE_BYTES,
161
+ });
162
+ const buffer = await this.fs.readFile(resized.path);
163
+ const base64 = buffer.toString('base64');
164
+ return {
165
+ url: `data:${resized.mimeType};base64,${base64}`,
166
+ cleanup: async () => {
167
+ if (resized.tempFile) {
168
+ await this.fs.unlink(resized.tempFile).catch(() => { });
169
+ }
170
+ },
171
+ };
172
+ }
173
+ catch (error) {
174
+ this.logger.warn('Pre-resize for classification failed, falling back to file:// URL', {
175
+ filePath,
176
+ error: error instanceof Error ? error.message : String(error),
177
+ });
178
+ return { url: `file://${filePath}`, cleanup: async () => { } };
179
+ }
180
+ }
129
181
  formatSize(bytes) {
130
182
  if (bytes < 1024)
131
183
  return `${bytes}B`;
@@ -1 +1 @@
1
- {"version":3,"file":"image-classifier.js","sourceRoot":"","sources":["../../../../src/plugins/uploads/preprocessors/image-classifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image-classifier.js","sourceRoot":"","sources":["../../../../src/plugins/uploads/preprocessors/image-classifier.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,6 @@
3
3
  */
4
4
  export { createImageClassifierPreprocessor, type ImageClassifierConfig, ImageClassifierPreprocessor } from './image-classifier.js';
5
5
  export { MarkitdownPreprocessor, type MarkitdownPreprocessorConfig } from './markitdown-preprocessor.js';
6
+ export { PdfPreprocessor, type PdfPreprocessorConfig } from './pdf-preprocessor.js';
6
7
  export { ZipPreprocessor, type ZipPreprocessorConfig } from './zip-preprocessor.js';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/uploads/preprocessors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iCAAiC,EAAE,KAAK,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAA;AAClI,OAAO,EAAE,sBAAsB,EAAE,KAAK,4BAA4B,EAAE,MAAM,8BAA8B,CAAA;AACxG,OAAO,EAAE,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/uploads/preprocessors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iCAAiC,EAAE,KAAK,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAA;AAClI,OAAO,EAAE,sBAAsB,EAAE,KAAK,4BAA4B,EAAE,MAAM,8BAA8B,CAAA;AACxG,OAAO,EAAE,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AACnF,OAAO,EAAE,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -3,5 +3,6 @@
3
3
  */
4
4
  export { createImageClassifierPreprocessor, ImageClassifierPreprocessor } from './image-classifier.js';
5
5
  export { MarkitdownPreprocessor } from './markitdown-preprocessor.js';
6
+ export { PdfPreprocessor } from './pdf-preprocessor.js';
6
7
  export { ZipPreprocessor } from './zip-preprocessor.js';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/uploads/preprocessors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iCAAiC,EAA8B,2BAA2B,EAAE,MAAM,uBAAuB,CAAA;AAClI,OAAO,EAAE,sBAAsB,EAAqC,MAAM,8BAA8B,CAAA;AACxG,OAAO,EAAE,eAAe,EAA8B,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/uploads/preprocessors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iCAAiC,EAA8B,2BAA2B,EAAE,MAAM,uBAAuB,CAAA;AAClI,OAAO,EAAE,sBAAsB,EAAqC,MAAM,8BAA8B,CAAA;AACxG,OAAO,EAAE,eAAe,EAA8B,MAAM,uBAAuB,CAAA;AACnF,OAAO,EAAE,eAAe,EAA8B,MAAM,uBAAuB,CAAA"}
@@ -2,11 +2,14 @@
2
2
  * Markitdown Preprocessor
3
3
  *
4
4
  * Converts documents to markdown using Microsoft's markitdown CLI.
5
- * Supports PDF, DOCX, XLSX, PPTX, HTML, CSV, JSON, XML, EPUB, and more.
5
+ * Supports DOCX, XLSX, PPTX, HTML, CSV, JSON, XML, EPUB, RTF, ODT.
6
+ *
7
+ * PDFs are handled by `PdfPreprocessor` instead — markitdown's PDF backend
8
+ * (pdfminer.six) is ~20× slower than pdftotext for no real gain on the
9
+ * mostly-unstructured PDFs we see in practice.
6
10
  *
7
11
  * Image extraction:
8
- * - PDF: uses pdfimages (poppler-utils)
9
- * - DOCX/ODT/EPUB: uses pandoc --extract-media
12
+ * - DOCX/ODT/EPUB: uses pandoc --extract-media (runs in parallel with markitdown)
10
13
  *
11
14
  * Extracted images are classified via the image classifier preprocessor.
12
15
  * Full content is written to disk; extractedContent contains a structured manifest.
@@ -17,6 +20,18 @@ import type { ProcessRunner } from '../../../platform/process.js';
17
20
  import type { FileStore } from '../../../core/file-store/types.js';
18
21
  import type { Logger } from '../../../lib/logger/logger.js';
19
22
  import type { Preprocessor, PreprocessorContext, PreprocessorRegistry, PreprocessorResult } from '../preprocessor.js';
23
+ /**
24
+ * Density filter for extracted images. Bytes-per-pixel ratio below this
25
+ * threshold typically means the image is an alpha mask, overlay layer, or
26
+ * essentially-empty region — not worth a vision call.
27
+ *
28
+ * Empirical reference points:
29
+ * - Dense photo JPEG: 0.3–1.0 B/px
30
+ * - Logo / icon PNG: 0.1–0.5 B/px
31
+ * - Brand PDF layer mask: <0.005 B/px
32
+ */
33
+ export declare const MIN_IMAGE_DENSITY_BYTES_PER_PX = 0.05;
34
+ export declare const MIN_IMAGE_PIXELS: number;
20
35
  export interface MarkitdownPreprocessorConfig {
21
36
  registry: PreprocessorRegistry;
22
37
  logger: Logger;
@@ -29,14 +44,46 @@ export declare class MarkitdownPreprocessor implements Preprocessor {
29
44
  private readonly registry;
30
45
  private readonly logger;
31
46
  private readonly fs;
47
+ private readonly processRunner;
32
48
  private readonly exec;
33
49
  constructor(config: MarkitdownPreprocessorConfig);
34
50
  process(filePath: string, mimeType: string, ctx: PreprocessorContext): Promise<Result<PreprocessorResult, Error>>;
51
+ private runMarkitdown;
35
52
  private extractImagesWithPandoc;
36
- private extractImagesWithPdfimages;
37
53
  }
54
+ /**
55
+ * Recognized by Anthropic vision API. Other pdfimages outputs (pbm, ppm,
56
+ * jb2e, jp2) are ignored — they'd require local conversion before being
57
+ * useful for classification.
58
+ */
59
+ export declare const IMAGE_EXT_RE: RegExp;
38
60
  export declare function guessImageMime(filename: string): string;
39
- export declare function classifyExtractedImages(imageStore: FileStore, relativePrefix: string, ctx: PreprocessorContext, registry: PreprocessorRegistry, logger: Logger): Promise<Array<{
61
+ /**
62
+ * Reject images that are unlikely to carry useful visual information.
63
+ *
64
+ * `bytesPerPixel` filters out alpha masks, sparse overlays, and essentially-
65
+ * empty pages — brand PDFs typically emit a real photo (~1 B/px) plus a
66
+ * matching transparency/overlay layer at the same dimensions but a fraction
67
+ * of a percent of the size (<0.005 B/px).
68
+ *
69
+ * The minimum pixel count protects against tiny icons whose density alone
70
+ * doesn't disqualify them.
71
+ */
72
+ export declare function shouldClassifyImage(meta: {
73
+ width: number;
74
+ height: number;
75
+ sizeBytes: number;
76
+ }): boolean;
77
+ /**
78
+ * Read image dimensions via vipsheader. Returns null when the tool isn't
79
+ * available or output is unparseable — caller should treat that as
80
+ * "include without filtering".
81
+ */
82
+ export declare function getImageDimensions(filePath: string, processRunner: ProcessRunner): Promise<{
83
+ width: number;
84
+ height: number;
85
+ } | null>;
86
+ export declare function classifyExtractedImages(imageStore: FileStore, relativePrefix: string, ctx: PreprocessorContext, registry: PreprocessorRegistry, logger: Logger, fs: FileSystem, processRunner: ProcessRunner): Promise<Array<{
40
87
  relativePath: string;
41
88
  description: string;
42
89
  }>>;
@@ -1 +1 @@
1
- {"version":3,"file":"markitdown-preprocessor.d.ts","sourceRoot":"","sources":["../../../../src/plugins/uploads/preprocessors/markitdown-preprocessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAA;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAoDrH,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,EAAE,oBAAoB,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,EAAE,UAAU,CAAA;IACd,OAAO,EAAE,aAAa,CAAA;CACtB;AAED,qBAAa,sBAAuB,YAAW,YAAY;IAC1D,QAAQ,CAAC,IAAI,gBAAe;IAC5B,QAAQ,CAAC,kBAAkB,WAAuB;IAElD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkG;gBAE3G,MAAM,EAAE,4BAA4B;IAO1C,OAAO,CACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,mBAAmB,GACtB,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;YA+E/B,uBAAuB;YA+CvB,0BAA0B;CA0CxC;AAoBD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,wBAAsB,uBAAuB,CAC5C,UAAU,EAAE,SAAS,EACrB,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,mBAAmB,EACxB,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,KAAK,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CA8B/D"}
1
+ {"version":3,"file":"markitdown-preprocessor.d.ts","sourceRoot":"","sources":["../../../../src/plugins/uploads/preprocessors/markitdown-preprocessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAA;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAKrH;;;;;;;;;GASG;AACH,eAAO,MAAM,8BAA8B,OAAO,CAAA;AAClD,eAAO,MAAM,gBAAgB,QAAU,CAAA;AA2CvC,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,EAAE,oBAAoB,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,EAAE,UAAU,CAAA;IACd,OAAO,EAAE,aAAa,CAAA;CACtB;AAED,qBAAa,sBAAuB,YAAW,YAAY;IAC1D,QAAQ,CAAC,IAAI,gBAAe;IAC5B,QAAQ,CAAC,kBAAkB,WAAuB;IAElD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAY;IAC/B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAkG;gBAE3G,MAAM,EAAE,4BAA4B;IAQ1C,OAAO,CACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,mBAAmB,GACtB,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;YAmD/B,aAAa;YAsCb,uBAAuB;CA8CrC;AAMD;;;;GAIG;AACH,eAAO,MAAM,YAAY,QAA2C,CAAA;AAcpE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAKvG;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACvC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,aAAa,GAC1B,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAgBnD;AAED,wBAAsB,uBAAuB,CAC5C,UAAU,EAAE,SAAS,EACrB,cAAc,EAAE,MAAM,EACtB,GAAG,EAAE,mBAAmB,EACxB,QAAQ,EAAE,oBAAoB,EAC9B,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,UAAU,EACd,aAAa,EAAE,aAAa,GAC1B,OAAO,CAAC,KAAK,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAiE/D"}