@modular-prompt/extract 0.3.0 → 1.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.
Files changed (74) hide show
  1. package/README.md +84 -39
  2. package/dist/cache-lifecycle.d.ts +3 -1
  3. package/dist/cache-lifecycle.d.ts.map +1 -1
  4. package/dist/cache-lifecycle.js +21 -0
  5. package/dist/cache-lifecycle.js.map +1 -1
  6. package/dist/cli/add-command.d.ts.map +1 -1
  7. package/dist/cli/add-command.js +2 -1
  8. package/dist/cli/add-command.js.map +1 -1
  9. package/dist/cli/args.d.ts +3 -1
  10. package/dist/cli/args.d.ts.map +1 -1
  11. package/dist/cli/args.js +15 -1
  12. package/dist/cli/args.js.map +1 -1
  13. package/dist/cli/create-command.d.ts +2 -0
  14. package/dist/cli/create-command.d.ts.map +1 -1
  15. package/dist/cli/create-command.js +12 -5
  16. package/dist/cli/create-command.js.map +1 -1
  17. package/dist/cli/extract-command.d.ts.map +1 -1
  18. package/dist/cli/extract-command.js +9 -3
  19. package/dist/cli/extract-command.js.map +1 -1
  20. package/dist/cli/list-command.d.ts +1 -0
  21. package/dist/cli/list-command.d.ts.map +1 -1
  22. package/dist/cli/list-command.js +3 -1
  23. package/dist/cli/list-command.js.map +1 -1
  24. package/dist/cli/manifest.d.ts +11 -0
  25. package/dist/cli/manifest.d.ts.map +1 -1
  26. package/dist/cli/manifest.js +16 -0
  27. package/dist/cli/manifest.js.map +1 -1
  28. package/dist/cli/store.js +1 -1
  29. package/dist/cli/store.js.map +1 -1
  30. package/dist/cli.js +18 -14
  31. package/dist/cli.js.map +1 -1
  32. package/dist/create-extract-runtime.d.ts +22 -0
  33. package/dist/create-extract-runtime.d.ts.map +1 -0
  34. package/dist/create-extract-runtime.js +27 -0
  35. package/dist/create-extract-runtime.js.map +1 -0
  36. package/dist/create-extract-session.d.ts.map +1 -1
  37. package/dist/create-extract-session.js +4 -1
  38. package/dist/create-extract-session.js.map +1 -1
  39. package/dist/create-mlx-extract-runtime.d.ts +18 -7
  40. package/dist/create-mlx-extract-runtime.d.ts.map +1 -1
  41. package/dist/create-mlx-extract-runtime.js +11 -1
  42. package/dist/create-mlx-extract-runtime.js.map +1 -1
  43. package/dist/create-pytorch-extract-runtime.d.ts +13 -0
  44. package/dist/create-pytorch-extract-runtime.d.ts.map +1 -0
  45. package/dist/create-pytorch-extract-runtime.js +52 -0
  46. package/dist/create-pytorch-extract-runtime.js.map +1 -0
  47. package/dist/default-models.d.ts +3 -8
  48. package/dist/default-models.d.ts.map +1 -1
  49. package/dist/default-models.js +4 -16
  50. package/dist/default-models.js.map +1 -1
  51. package/dist/extract-runtime-types.d.ts +16 -0
  52. package/dist/extract-runtime-types.d.ts.map +1 -0
  53. package/dist/extract-runtime-types.js +2 -0
  54. package/dist/extract-runtime-types.js.map +1 -0
  55. package/dist/extract-store.d.ts +21 -2
  56. package/dist/extract-store.d.ts.map +1 -1
  57. package/dist/extract-store.js +49 -10
  58. package/dist/extract-store.js.map +1 -1
  59. package/dist/index.d.ts +5 -0
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +2 -0
  62. package/dist/index.js.map +1 -1
  63. package/dist/model-resolution.d.ts +15 -5
  64. package/dist/model-resolution.d.ts.map +1 -1
  65. package/dist/model-resolution.js +87 -27
  66. package/dist/model-resolution.js.map +1 -1
  67. package/dist/types.d.ts +6 -0
  68. package/dist/types.d.ts.map +1 -1
  69. package/docs/API.md +316 -0
  70. package/docs/CACHE_DESIGN.md +475 -0
  71. package/docs/LOCAL_MODEL_SETUP.md +765 -0
  72. package/docs/PROMPT_MODULE_SPEC.md +482 -0
  73. package/package.json +8 -6
  74. /package/bin/{modular-extract.js → modular-prompt-extract.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { readdir } from 'node:fs/promises';
2
2
  import { resolve } from 'node:path';
3
3
  import { isKvCacheFile } from './store.js';
4
- import { manifestExists, readManifest } from './manifest.js';
4
+ import { getManifestProvider, manifestExists, readManifest } from './manifest.js';
5
5
  async function listStoreDirectories(containerDir) {
6
6
  try {
7
7
  const entries = await readdir(containerDir, { withFileTypes: true });
@@ -34,6 +34,7 @@ export async function listStores(cacheDir) {
34
34
  summaries.push({
35
35
  storename: manifest.storename ?? storename,
36
36
  model: manifest.model,
37
+ provider: getManifestProvider(manifest),
37
38
  materialTitles: manifest.materials.map((material) => material.title),
38
39
  createdAt: manifest.createdAt,
39
40
  updatedAt: manifest.updatedAt,
@@ -49,6 +50,7 @@ function formatSummary(summary) {
49
50
  const lines = [
50
51
  `Store: ${summary.storename}`,
51
52
  ` Model: ${summary.model}`,
53
+ ` Provider: ${summary.provider}`,
52
54
  ` Materials: ${summary.materialTitles.length}${materials}`,
53
55
  ` Created: ${summary.createdAt}`,
54
56
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"list-command.js","sourceRoot":"","sources":["../../src/cli/list-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list-command.js","sourceRoot":"","sources":["../../src/cli/list-command.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,24 @@
1
+ import type { MlxBackendMode } from '@modular-prompt/driver';
1
2
  import type { MaterialInput } from '../extract-elements.js';
3
+ import type { ExtractProvider } from '../extract-runtime-types.js';
2
4
  export interface ExtractCacheManifest {
3
5
  version: 1;
4
6
  /** Store name for self-describing cache directories. */
5
7
  storename?: string;
6
8
  model: string;
9
+ /** Provider that owns the persisted cache format. Missing means legacy MLX. */
10
+ provider?: ExtractProvider;
11
+ /** MLX backend selected when the store was prepared. Missing means `auto` for legacy stores. */
12
+ backend?: MlxBackendMode;
13
+ /** VLM image resize limit used to prepare the persisted cache. */
14
+ maxImageSize?: number;
7
15
  materials: MaterialInput[];
8
16
  createdAt: string;
9
17
  updatedAt?: string;
10
18
  }
19
+ export declare function isExtractProvider(value: unknown): value is ExtractProvider;
20
+ /** Resolve the provider of a manifest, preserving compatibility with MLX stores created before v1 provider metadata. */
21
+ export declare function getManifestProvider(manifest: ExtractCacheManifest): ExtractProvider;
11
22
  export declare function manifestPath(cacheDir: string): string;
12
23
  export declare function manifestExists(cacheDir: string): Promise<boolean>;
13
24
  export declare function readManifest(cacheDir: string): Promise<ExtractCacheManifest>;
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/cli/manifest.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG5D,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,CAAC,CAAC;IACX,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOvE;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAYlF;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAMf"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/cli/manifest.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGnE,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,CAAC,CAAC;IACX,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,gGAAgG;IAChG,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,kEAAkE;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E;AAED,wHAAwH;AACxH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,eAAe,CAEnF;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOvE;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAkBlF;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAMf"}
@@ -1,6 +1,16 @@
1
1
  import { readFile, writeFile, access } from 'node:fs/promises';
2
2
  import { join } from 'node:path';
3
3
  import { MANIFEST_FILENAME } from './constants.js';
4
+ function isMlxBackend(value) {
5
+ return value === 'auto' || value === 'lm' || value === 'vlm' || value === 'optiq';
6
+ }
7
+ export function isExtractProvider(value) {
8
+ return value === 'mlx' || value === 'pytorch';
9
+ }
10
+ /** Resolve the provider of a manifest, preserving compatibility with MLX stores created before v1 provider metadata. */
11
+ export function getManifestProvider(manifest) {
12
+ return manifest.provider ?? 'mlx';
13
+ }
4
14
  export function manifestPath(cacheDir) {
5
15
  return join(cacheDir, MANIFEST_FILENAME);
6
16
  }
@@ -19,6 +29,12 @@ export async function readManifest(cacheDir) {
19
29
  if (parsed.version !== 1
20
30
  || !parsed.model
21
31
  || !Array.isArray(parsed.materials)
32
+ || (parsed.provider !== undefined && !isExtractProvider(parsed.provider))
33
+ || (parsed.backend !== undefined && !isMlxBackend(parsed.backend))
34
+ || (parsed.maxImageSize !== undefined
35
+ && (typeof parsed.maxImageSize !== 'number'
36
+ || !Number.isFinite(parsed.maxImageSize)
37
+ || parsed.maxImageSize <= 0))
22
38
  || (parsed.updatedAt !== undefined && typeof parsed.updatedAt !== 'string')) {
23
39
  throw new Error(`Invalid manifest: ${manifestPath(cacheDir)}`);
24
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/cli/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAYnD,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB;IACnD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB;IACjD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;IACvD,IACE,MAAM,CAAC,OAAO,KAAK,CAAC;WACjB,CAAC,MAAM,CAAC,KAAK;WACb,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;WAChC,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,EAC3E,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,QAA8B;IAE9B,MAAM,SAAS,CACb,YAAY,CAAC,QAAQ,CAAC,EACtB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EACxC,OAAO,CACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/cli/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAkBnD,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,OAAO,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,SAAS,CAAC;AAChD,CAAC;AAED,wHAAwH;AACxH,MAAM,UAAU,mBAAmB,CAAC,QAA8B;IAChE,OAAO,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB;IACnD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB;IACjD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;IACvD,IACE,MAAM,CAAC,OAAO,KAAK,CAAC;WACjB,CAAC,MAAM,CAAC,KAAK;WACb,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;WAChC,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;WACtE,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;WAC/D,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS;eAChC,CAAC,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ;mBACtC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC;mBACrC,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;WAC9B,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,EAC3E,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,QAA8B;IAE9B,MAAM,SAAS,CACb,YAAY,CAAC,QAAQ,CAAC,EACtB,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EACxC,OAAO,CACR,CAAC;AACJ,CAAC"}
package/dist/cli/store.js CHANGED
@@ -31,6 +31,6 @@ export async function storeExists(storeDir) {
31
31
  }
32
32
  /** Return whether the store contains at least one persisted KV cache archive. */
33
33
  export function isKvCacheFile(filename) {
34
- return filename.endsWith('.safetensors.zip');
34
+ return filename.endsWith('.safetensors.zip') || filename.endsWith('.pytorch-cache');
35
35
  }
36
36
  //# sourceMappingURL=store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/cli/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,kBAAkB,GAAG,6BAA6B,CAAC;AACzD,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEpF,kEAAkE;AAClE,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CACb,sBAAsB,MAAM,CAAC,SAAS,CAAC,yCAAyC,CACjF,CAAC;IACJ,CAAC;IAED,IAAI,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,kBAAkB,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,eAAe,CAAC,YAAoB,EAAE,SAAiB;IACrE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB;IAChD,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/cli/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,kBAAkB,GAAG,6BAA6B,CAAC;AACzD,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEpF,kEAAkE;AAClE,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,KAAK,CACb,sBAAsB,MAAM,CAAC,SAAS,CAAC,yCAAyC,CACjF,CAAC;IACJ,CAAC;IAED,IAAI,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,kBAAkB,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,eAAe,CAAC,YAAoB,EAAE,SAAiB;IACrE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB;IAChD,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzE,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;AACtF,CAAC"}
package/dist/cli.js CHANGED
@@ -12,15 +12,15 @@ import { runListCommand } from './cli/list-command.js';
12
12
  const __dirname = dirname(fileURLToPath(import.meta.url));
13
13
  const packageJson = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf-8'));
14
14
  function printHelp() {
15
- console.log(`modular-extract v${packageJson.version}
15
+ console.log(`modular-prompt-extract v${packageJson.version}
16
16
 
17
17
  Usage:
18
- modular-extract create <storename> [-d <cache-dir>] [-m <model>] [--dry-run] <files...>
19
- modular-extract add <storename> [-d <cache-dir>] [--dry-run] <files...>
20
- modular-extract extract <storename> [-d <cache-dir>] [--max-tokens <n>] [--dry-run] <query...>
21
- modular-extract list [-d <cache-dir>]
22
- modular-extract clean <storename> [-d <cache-dir>]
23
- modular-extract clean --all [-d <cache-dir>]
18
+ modular-prompt-extract create <storename> [-d <cache-dir>] [-m <model>] [--provider <mlx|pytorch>] [--dry-run] <files...>
19
+ modular-prompt-extract add <storename> [-d <cache-dir>] [--dry-run] <files...>
20
+ modular-prompt-extract extract <storename> [-d <cache-dir>] [--max-tokens <n>] [--dry-run] <query...>
21
+ modular-prompt-extract list [-d <cache-dir>]
22
+ modular-prompt-extract clean <storename> [-d <cache-dir>]
23
+ modular-prompt-extract clean --all [-d <cache-dir>]
24
24
 
25
25
  Commands:
26
26
  create Load input files and prepare KV cache in <cache-dir>/<storename>
@@ -31,9 +31,10 @@ Commands:
31
31
 
32
32
  Options:
33
33
  -d, --cache-dir <path> Store container directory (default: ${resolveDefaultContainerDir()})
34
- -m, --model <model> MLX model alias from models.yaml or raw model id
34
+ -m, --model <model> Model alias from models.yaml or raw model id
35
+ --provider <provider> Extract provider for create (mlx or pytorch)
35
36
  --max-tokens <n> Max tokens for extract (default: ${DEFAULT_MAX_TOKENS})
36
- --dry-run Compile and print full prompt text (no MLX / no cache write)
37
+ --dry-run Compile and print full prompt text (no driver / no cache write)
37
38
  --all Remove the entire cache container (clean only)
38
39
  -h, --help Show help
39
40
 
@@ -41,11 +42,13 @@ Store name:
41
42
  Must match [a-zA-Z0-9][a-zA-Z0-9_-]* and cannot be create, add, extract, list, or clean.
42
43
 
43
44
  Note:
44
- Without -m, models.default (or the first model entry) is selected from bundled config merged with
45
- ~/.modular-prompt/models.yaml (MODULAR_PROMPT_HOME can override its location).
46
- MLX_MODEL is also supported for backward compatibility as the bundled default; user yaml overrides it.
47
- If no model is configured, specify -m <model-id-or-alias> or define models.default.
48
- MLX backend is fixed to mlx-lm (backend: lm) for prompt cache support.
45
+ Without -m, models.default is selected from ~/.modular-prompt/models.yaml
46
+ (MODULAR_PROMPT_HOME can override its location). No model is bundled.
47
+ If no model is configured, specify -m <model-id-or-alias> or define models.default
48
+ in the user models.yaml.
49
+ MLX backend follows models.yaml (backend: auto by default; lm/vlm may be
50
+ selected explicitly). PyTorch extract is text-only and uses device/venvPath
51
+ from models.yaml driverOptions. Store manifests persist provider and model.
49
52
  `);
50
53
  }
51
54
  async function main() {
@@ -63,6 +66,7 @@ async function main() {
63
66
  cacheDir,
64
67
  storename: parsed.storename,
65
68
  model: parsed.model,
69
+ provider: parsed.provider,
66
70
  files: parsed.positional,
67
71
  dryRun: parsed.dryRun,
68
72
  });
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { MlxBackendMode } from '@modular-prompt/driver';
2
+ import { type ExtractProvider } from './model-resolution.js';
3
+ import type { ExtractRuntime } from './extract-runtime-types.js';
4
+ export interface ExtractRuntimeOptions {
5
+ /** Model alias or provider-specific model ID. */
6
+ model?: string;
7
+ /** Explicit provider for raw IDs or persisted store validation. */
8
+ provider?: ExtractProvider;
9
+ /** Fixed cache directory. When omitted, a managed temp directory is used. */
10
+ cacheDir?: string;
11
+ /** MLX backend; ignored for PyTorch. */
12
+ backend?: MlxBackendMode;
13
+ /** MLX VLM image resize limit; ignored for PyTorch. */
14
+ maxImageSize?: number;
15
+ }
16
+ /**
17
+ * Create the cache-capable runtime selected by the resolved model provider.
18
+ * The original model reference is passed to the provider runtime so alias
19
+ * driverOptions (device, venvPath, backend, and so on) are preserved.
20
+ */
21
+ export declare function createExtractRuntime(options: ExtractRuntimeOptions): Promise<ExtractRuntime>;
22
+ //# sourceMappingURL=create-extract-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-extract-runtime.d.ts","sourceRoot":"","sources":["../src/create-extract-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,WAAW,qBAAqB;IACpC,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,cAAc,CAAC,CA0BzB"}
@@ -0,0 +1,27 @@
1
+ import { createMlxExtractRuntime } from './create-mlx-extract-runtime.js';
2
+ import { createPytorchExtractRuntime } from './create-pytorch-extract-runtime.js';
3
+ import { resolveMergedModels, resolveModelSpec, } from './model-resolution.js';
4
+ /**
5
+ * Create the cache-capable runtime selected by the resolved model provider.
6
+ * The original model reference is passed to the provider runtime so alias
7
+ * driverOptions (device, venvPath, backend, and so on) are preserved.
8
+ */
9
+ export async function createExtractRuntime(options) {
10
+ const resolved = resolveModelSpec(options.model, resolveMergedModels(), options.provider);
11
+ if (resolved.provider === 'mlx') {
12
+ return createMlxExtractRuntime({
13
+ model: options.model,
14
+ ...(options.backend !== undefined ? { backend: options.backend } : {}),
15
+ ...(options.cacheDir !== undefined ? { cacheDir: options.cacheDir } : {}),
16
+ ...(options.maxImageSize !== undefined ? { maxImageSize: options.maxImageSize } : {}),
17
+ });
18
+ }
19
+ if (resolved.provider === 'pytorch') {
20
+ return createPytorchExtractRuntime({
21
+ model: options.model,
22
+ ...(options.cacheDir !== undefined ? { cacheDir: options.cacheDir } : {}),
23
+ });
24
+ }
25
+ throw new Error(`Extract supports MLX and PyTorch models, but '${resolved.model}' uses provider '${resolved.provider}'`);
26
+ }
27
+ //# sourceMappingURL=create-extract-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-extract-runtime.js","sourceRoot":"","sources":["../src/create-extract-runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EACL,mBAAmB,EACnB,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAgB/B;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAA8B;IAE9B,MAAM,QAAQ,GAAG,gBAAgB,CAC/B,OAAO,CAAC,KAAK,EACb,mBAAmB,EAAE,EACrB,OAAO,CAAC,QAAQ,CACjB,CAAC;IAEF,IAAI,QAAQ,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAChC,OAAO,uBAAuB,CAAC;YAC7B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,2BAA2B,CAAC;YACjC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC;IAED,MAAM,IAAI,KAAK,CACb,iDAAiD,QAAQ,CAAC,KAAK,oBAAoB,QAAQ,CAAC,QAAQ,GAAG,CACxG,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-extract-session.d.ts","sourceRoot":"","sources":["../src/create-extract-session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAiC,cAAc,EAA8B,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAyBnI,wBAAgB,oBAAoB,CAAC,QAAQ,GAAG,cAAc,EAC5D,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC,GACvC,cAAc,CA2EhB"}
1
+ {"version":3,"file":"create-extract-session.d.ts","sourceRoot":"","sources":["../src/create-extract-session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAiC,cAAc,EAA8B,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAyBnI,wBAAgB,oBAAoB,CAAC,QAAQ,GAAG,cAAc,EAC5D,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC,GACvC,cAAc,CA8EhB"}
@@ -27,7 +27,10 @@ export function createExtractSession(options) {
27
27
  throw new Error('ExtractSession is closed');
28
28
  }
29
29
  await ensureCacheControllerReady(driver, cacheState);
30
- await prepareSessionCache(cacheController, model, sessionBaseModule, corpus, request, baseModule, cacheState, { required: options.cachePreparation === 'required' });
30
+ await prepareSessionCache(cacheController, model, sessionBaseModule, corpus, request, baseModule, cacheState, {
31
+ required: options.cachePreparation === 'required',
32
+ maxImageSize: options.maxImageSize,
33
+ });
31
34
  const compiled = compileExtractPrompt(sessionBaseModule, corpus, request, baseModule);
32
35
  const queryOptions = cacheState.handle
33
36
  ? {
@@ -1 +1 @@
1
- {"version":3,"file":"create-extract-session.js","sourceRoot":"","sources":["../src/create-extract-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-extract-session.js","sourceRoot":"","sources":["../src/create-extract-session.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,30 @@
1
- import { type AIDriver, type PromptCacheController } from '@modular-prompt/driver';
1
+ import { type MlxBackendMode } from '@modular-prompt/driver';
2
+ import type { ExtractRuntime } from './extract-runtime-types.js';
2
3
  export interface MlxExtractRuntimeOptions {
3
- /** MLX model ID or alias in models.yaml. Omitted uses the resolved default. */
4
+ /** MLX model ID or alias in models.yaml. Omitted uses user-configured models.default. */
4
5
  model?: string;
6
+ /** Explicit MLX backend. Omitted preserves model config and defaults to `auto`. */
7
+ backend?: MlxBackendMode;
5
8
  /** Fixed cache directory. When omitted, a managed temp directory is used. */
6
9
  cacheDir?: string;
10
+ /** VLM image resize limit. Omitted uses the model configuration or 768. */
11
+ maxImageSize?: number;
7
12
  }
8
13
  /**
9
14
  * MLX driver + cache controller bundle for extract sessions.
10
- * Always uses mlx-lm backend (`backend: 'lm'`) — VLM auto-selection disables prompt cache.
15
+ * Preserves the configured MLX backend and defaults to `auto`, so text-only
16
+ * VLM classification models can use the same disk-backed cache path as LM
17
+ * models. Image-bearing materials use the VLM vision-cache namespace and
18
+ * sidecar when the resolved backend is VLM; VLM incremental prefill remains
19
+ * unsupported.
11
20
  * Lifecycle (close) is owned by the caller — not by ExtractSession.
12
21
  */
13
- export interface MlxExtractRuntime {
14
- driver: AIDriver;
15
- cacheController: PromptCacheController;
16
- model: string;
22
+ export interface MlxExtractRuntime extends ExtractRuntime {
23
+ provider: 'mlx';
24
+ /** Backend selected for this runtime; persisted by extract stores. */
25
+ backend: MlxBackendMode;
26
+ /** VLM image resize limit used by the driver and cache prefill. */
27
+ maxImageSize: number;
17
28
  /** Release driver and cache controller when all sessions using this runtime are done. */
18
29
  close(): Promise<void>;
19
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-mlx-extract-runtime.d.ts","sourceRoot":"","sources":["../src/create-mlx-extract-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,qBAAqB,EAC3B,MAAM,wBAAwB,CAAC;AAGhC,MAAM,WAAW,wBAAwB;IACvC,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,QAAQ,CAAC;IACjB,eAAe,EAAE,qBAAqB,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,yFAAyF;IACzF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAyBD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,iBAAiB,CAAC,CA8B5B"}
1
+ {"version":3,"file":"create-mlx-extract-runtime.d.ts","sourceRoot":"","sources":["../src/create-mlx-extract-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EAGpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,WAAW,wBAAwB;IACvC,yFAAyF;IACzF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mFAAmF;IACnF,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,QAAQ,EAAE,KAAK,CAAC;IAChB,sEAAsE;IACtE,OAAO,EAAE,cAAc,CAAC;IACxB,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;IACrB,yFAAyF;IACzF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAyBD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAwC5B"}
@@ -24,9 +24,16 @@ export async function createMlxExtractRuntime(options) {
24
24
  const cacheController = new MlxCacheController(options.cacheDir ? { cacheDir: options.cacheDir } : undefined);
25
25
  let driverForCleanup;
26
26
  try {
27
- const resolved = await createDriver(options.model, { cacheController });
27
+ const resolved = await createDriver(options.model, {
28
+ cacheController,
29
+ provider: 'mlx',
30
+ backend: options.backend,
31
+ maxImageSize: options.maxImageSize,
32
+ });
28
33
  const driver = resolved.driver;
29
34
  driverForCleanup = driver;
35
+ const driverOptions = resolved.spec.driverOptions;
36
+ const maxImageSize = options.maxImageSize ?? driverOptions?.maxImageSize ?? 768;
30
37
  if ('getCapabilities' in driver && typeof driver.getCapabilities === 'function') {
31
38
  await driver.getCapabilities();
32
39
  }
@@ -34,6 +41,9 @@ export async function createMlxExtractRuntime(options) {
34
41
  driver,
35
42
  cacheController,
36
43
  model: resolved.spec.model,
44
+ provider: 'mlx',
45
+ backend: resolved.spec.backend ?? 'auto',
46
+ maxImageSize,
37
47
  async close() {
38
48
  try {
39
49
  await driver.close();
@@ -1 +1 @@
1
- {"version":3,"file":"create-mlx-extract-runtime.js","sourceRoot":"","sources":["../src/create-mlx-extract-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,GAGnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAsBrD;;;GAGG;AACH,KAAK,UAAU,kBAAkB,CAC/B,MAA4B,EAC5B,eAAsC;IAEtC,IAAI,CAAC;QACH,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAiC;IAEjC,MAAM,eAAe,GAAG,IAAI,kBAAkB,CAC5C,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAC9D,CAAC;IACF,IAAI,gBAAsC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC/B,gBAAgB,GAAG,MAAM,CAAC;QAE1B,IAAI,iBAAiB,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;YAChF,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;QACjC,CAAC;QAED,OAAO;YACL,MAAM;YACN,eAAe;YACf,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK;YAC1B,KAAK,CAAC,KAAK;gBACT,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;gBACvB,CAAC;wBAAS,CAAC;oBACT,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;gBAChC,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,kBAAkB,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;QAC5D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"create-mlx-extract-runtime.js","sourceRoot":"","sources":["../src/create-mlx-extract-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,GAKnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAiCrD;;;GAGG;AACH,KAAK,UAAU,kBAAkB,CAC/B,MAA4B,EAC5B,eAAsC;IAEtC,IAAI,CAAC;QACH,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAiC;IAEjC,MAAM,eAAe,GAAG,IAAI,kBAAkB,CAC5C,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAC9D,CAAC;IACF,IAAI,gBAAsC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE;YACjD,eAAe;YACf,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC/B,gBAAgB,GAAG,MAAM,CAAC;QAC1B,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAkD,CAAC;QACvF,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,aAAa,EAAE,YAAY,IAAI,GAAG,CAAC;QAEhF,IAAI,iBAAiB,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;YAChF,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;QACjC,CAAC;QAED,OAAO;YACL,MAAM;YACN,eAAe;YACf,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK;YAC1B,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM;YACxC,YAAY;YACZ,KAAK,CAAC,KAAK;gBACT,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;gBACvB,CAAC;wBAAS,CAAC;oBACT,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;gBAChC,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,kBAAkB,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;QAC5D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ExtractRuntime } from './extract-runtime-types.js';
2
+ export interface PyTorchExtractRuntimeOptions {
3
+ /** PyTorch model ID or alias in models.yaml. */
4
+ model?: string;
5
+ /** Fixed cache directory. When omitted, a managed temp directory is used. */
6
+ cacheDir?: string;
7
+ }
8
+ /** PyTorch driver + persistent cache controller bundle for extract sessions. */
9
+ export interface PyTorchExtractRuntime extends ExtractRuntime {
10
+ provider: 'pytorch';
11
+ }
12
+ export declare function createPytorchExtractRuntime(options: PyTorchExtractRuntimeOptions): Promise<PyTorchExtractRuntime>;
13
+ //# sourceMappingURL=create-pytorch-extract-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-pytorch-extract-runtime.d.ts","sourceRoot":"","sources":["../src/create-pytorch-extract-runtime.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,WAAW,4BAA4B;IAC3C,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,gFAAgF;AAChF,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,QAAQ,EAAE,SAAS,CAAC;CACrB;AAqBD,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,qBAAqB,CAAC,CAmChC"}
@@ -0,0 +1,52 @@
1
+ import { PyTorchCacheController, } from '@modular-prompt/driver';
2
+ import { createDriver } from './model-resolution.js';
3
+ async function closeFailedRuntime(driver, cacheController) {
4
+ try {
5
+ if (driver) {
6
+ await driver.close();
7
+ }
8
+ }
9
+ catch {
10
+ // Preserve the original runtime construction/capabilities error.
11
+ }
12
+ try {
13
+ await cacheController.close();
14
+ }
15
+ catch {
16
+ // Preserve the original runtime construction/capabilities error.
17
+ }
18
+ }
19
+ export async function createPytorchExtractRuntime(options) {
20
+ const cacheController = new PyTorchCacheController(options.cacheDir ? { cacheDir: options.cacheDir } : undefined);
21
+ let driverForCleanup;
22
+ try {
23
+ const resolved = await createDriver(options.model, {
24
+ provider: 'pytorch',
25
+ cacheController,
26
+ });
27
+ const driver = resolved.driver;
28
+ driverForCleanup = driver;
29
+ if ('getCapabilities' in driver && typeof driver.getCapabilities === 'function') {
30
+ await driver.getCapabilities();
31
+ }
32
+ return {
33
+ driver,
34
+ cacheController,
35
+ model: resolved.spec.model,
36
+ provider: 'pytorch',
37
+ async close() {
38
+ try {
39
+ await driver.close();
40
+ }
41
+ finally {
42
+ await cacheController.close();
43
+ }
44
+ },
45
+ };
46
+ }
47
+ catch (error) {
48
+ await closeFailedRuntime(driverForCleanup, cacheController);
49
+ throw error;
50
+ }
51
+ }
52
+ //# sourceMappingURL=create-pytorch-extract-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-pytorch-extract-runtime.js","sourceRoot":"","sources":["../src/create-pytorch-extract-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,GAGvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAerD,KAAK,UAAU,kBAAkB,CAC/B,MAA4B,EAC5B,eAAsC;IAEtC,IAAI,CAAC;QACH,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,OAAqC;IAErC,MAAM,eAAe,GAAG,IAAI,sBAAsB,CAChD,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAC9D,CAAC;IACF,IAAI,gBAAsC,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE;YACjD,QAAQ,EAAE,SAAS;YACnB,eAAe;SAChB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC/B,gBAAgB,GAAG,MAAM,CAAC;QAE1B,IAAI,iBAAiB,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;YAChF,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;QACjC,CAAC;QAED,OAAO;YACL,MAAM;YACN,eAAe;YACf,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK;YAC1B,QAAQ,EAAE,SAAS;YACnB,KAAK,CAAC,KAAK;gBACT,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;gBACvB,CAAC;wBAAS,CAAC;oBACT,MAAM,eAAe,CAAC,KAAK,EAAE,CAAC;gBAChC,CAAC;YACH,CAAC;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,kBAAkB,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;QAC5D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1,14 +1,9 @@
1
1
  /**
2
- * extract 同梱の models 設定
2
+ * extract の base models 設定。
3
3
  *
4
- * user の ~/.modular-prompt/models.yaml から alias や default を上書きできる。
4
+ * モデルは同梱せず、user の ~/.modular-prompt/models.yaml から解決する。
5
5
  */
6
6
  import type { ModelsConfig } from '@modular-prompt/driver';
7
- /**
8
- * extract が -m なしで使用する同梱デフォルトモデル。
9
- * MLX_MODEL は既存利用者向けに後方互換でサポートし、user yaml が優先される。
10
- */
11
- export declare const BUNDLED_DEFAULT_MODEL: string;
12
- /** 同梱モデル設定(user models.yaml より低い優先度) */
7
+ /** 同梱モデルを持たない base config(user models.yaml より低い優先度) */
13
8
  export declare const BUNDLED_MODELS_CONFIG: ModelsConfig;
14
9
  //# sourceMappingURL=default-models.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"default-models.d.ts","sourceRoot":"","sources":["../src/default-models.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QACgC,CAAC;AAEnE,wCAAwC;AACxC,eAAO,MAAM,qBAAqB,EAAE,YAOnC,CAAC"}
1
+ {"version":3,"file":"default-models.d.ts","sourceRoot":"","sources":["../src/default-models.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,uDAAuD;AACvD,eAAO,MAAM,qBAAqB,EAAE,YAAiB,CAAC"}
@@ -1,20 +1,8 @@
1
1
  /**
2
- * extract 同梱の models 設定
2
+ * extract の base models 設定。
3
3
  *
4
- * user の ~/.modular-prompt/models.yaml から alias や default を上書きできる。
4
+ * モデルは同梱せず、user の ~/.modular-prompt/models.yaml から解決する。
5
5
  */
6
- /**
7
- * extract が -m なしで使用する同梱デフォルトモデル。
8
- * MLX_MODEL は既存利用者向けに後方互換でサポートし、user yaml が優先される。
9
- */
10
- export const BUNDLED_DEFAULT_MODEL = process.env.MLX_MODEL ?? 'prism-ml/Ternary-Bonsai-1.7B-mlx-2bit';
11
- /** 同梱モデル設定(user models.yaml より低い優先度) */
12
- export const BUNDLED_MODELS_CONFIG = {
13
- models: {
14
- default: {
15
- provider: 'mlx',
16
- model: BUNDLED_DEFAULT_MODEL,
17
- },
18
- },
19
- };
6
+ /** 同梱モデルを持たない base config(user models.yaml より低い優先度) */
7
+ export const BUNDLED_MODELS_CONFIG = {};
20
8
  //# sourceMappingURL=default-models.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"default-models.js","sourceRoot":"","sources":["../src/default-models.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAChC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,uCAAuC,CAAC;AAEnE,wCAAwC;AACxC,MAAM,CAAC,MAAM,qBAAqB,GAAiB;IACjD,MAAM,EAAE;QACN,OAAO,EAAE;YACP,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,qBAAqB;SAC7B;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"default-models.js","sourceRoot":"","sources":["../src/default-models.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,uDAAuD;AACvD,MAAM,CAAC,MAAM,qBAAqB,GAAiB,EAAE,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { AIDriver, MlxBackendMode, PromptCacheController } from '@modular-prompt/driver';
2
+ /** Providers that can persist the cache format used by extract stores. */
3
+ export type ExtractProvider = 'mlx' | 'pytorch';
4
+ /** Common driver/cache bundle consumed by an extract session or store. */
5
+ export interface ExtractRuntime {
6
+ driver: AIDriver;
7
+ cacheController: PromptCacheController;
8
+ model: string;
9
+ provider: ExtractProvider;
10
+ /** MLX backend selected for this runtime; undefined for PyTorch. */
11
+ backend?: MlxBackendMode;
12
+ /** VLM image resize limit; undefined for text-only PyTorch. */
13
+ maxImageSize?: number;
14
+ close(): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=extract-runtime-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-runtime-types.d.ts","sourceRoot":"","sources":["../src/extract-runtime-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAEhC,0EAA0E;AAC1E,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,SAAS,CAAC;AAEhD,0EAA0E;AAC1E,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,QAAQ,CAAC;IACjB,eAAe,EAAE,qBAAqB,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,eAAe,CAAC;IAC1B,oEAAoE;IACpE,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=extract-runtime-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-runtime-types.js","sourceRoot":"","sources":["../src/extract-runtime-types.ts"],"names":[],"mappings":""}
@@ -1,20 +1,36 @@
1
+ import type { MlxBackendMode } from '@modular-prompt/driver';
1
2
  import type { MaterialInput } from './extract-elements.js';
3
+ import type { ExtractProvider, ExtractRuntime } from './extract-runtime-types.js';
2
4
  import { type ExtractCacheManifest } from './cli/manifest.js';
3
5
  export interface PrepareExtractCacheOptions {
4
6
  /** Directory containing the persistent cache files. */
5
7
  cacheDir: string;
6
8
  /** MLX model alias or resolved model ID. */
7
9
  model?: string;
10
+ /** Extract provider. Missing lets model resolution select it. */
11
+ provider?: ExtractProvider;
12
+ /** Persisted/configured MLX backend. Missing preserves the `auto` fallback. */
13
+ backend?: MlxBackendMode;
14
+ /** VLM image resize limit; omitted uses the model configuration or 768. */
15
+ maxImageSize?: number;
8
16
  /** Corpus to prefill into the cache. */
9
17
  materials: readonly MaterialInput[];
10
18
  }
19
+ export interface PreparedExtractCache {
20
+ model: string;
21
+ provider: ExtractProvider;
22
+ backend?: MlxBackendMode;
23
+ /** VLM image resize limit used during preparation, when available. */
24
+ maxImageSize?: number;
25
+ }
11
26
  /**
12
27
  * Prepare the persistent corpus cache and release all runtime resources.
13
28
  *
14
29
  * The caller owns the manifest transaction. This operation only creates or
15
- * extends the cache in `cacheDir` and returns the model ID resolved by MLX.
30
+ * extends the cache in `cacheDir` and returns the resolved model/provider
31
+ * (plus MLX-only backend/image settings when applicable).
16
32
  */
17
- export declare function prepareExtractCache(options: PrepareExtractCacheOptions): Promise<string>;
33
+ export declare function prepareExtractCache(options: PrepareExtractCacheOptions): Promise<PreparedExtractCache>;
18
34
  /**
19
35
  * Merge newly loaded materials into an existing corpus.
20
36
  *
@@ -40,8 +56,11 @@ export interface AppendToExtractStoreOptions {
40
56
  export interface AppendToExtractStoreResult {
41
57
  manifest: ExtractCacheManifest;
42
58
  model: string;
59
+ provider: ExtractProvider;
60
+ backend?: MlxBackendMode;
43
61
  addedMaterials: number;
44
62
  }
63
+ export declare function assertExtractRuntimeMatchesManifest(runtime: Pick<ExtractRuntime, 'model' | 'provider'>, manifest: ExtractCacheManifest): void;
45
64
  /**
46
65
  * Append materials to a persistent extract store transactionally.
47
66
  *