@modular-prompt/driver 0.15.0 → 0.16.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 (55) hide show
  1. package/README.md +34 -2
  2. package/dist/driver-registry/config-based-factory.d.ts.map +1 -1
  3. package/dist/driver-registry/config-based-factory.js +4 -3
  4. package/dist/driver-registry/config-based-factory.js.map +1 -1
  5. package/dist/driver-registry/factory-helper.d.ts.map +1 -1
  6. package/dist/driver-registry/factory-helper.js +1 -0
  7. package/dist/driver-registry/factory-helper.js.map +1 -1
  8. package/dist/driver-registry/types.d.ts +3 -0
  9. package/dist/driver-registry/types.d.ts.map +1 -1
  10. package/dist/index.d.ts +2 -2
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +2 -2
  13. package/dist/index.js.map +1 -1
  14. package/dist/mlx-ml/mlx-cache-controller.d.ts.map +1 -1
  15. package/dist/mlx-ml/mlx-cache-controller.js +2 -1
  16. package/dist/mlx-ml/mlx-cache-controller.js.map +1 -1
  17. package/dist/models-config/index.d.ts +1 -1
  18. package/dist/models-config/index.d.ts.map +1 -1
  19. package/dist/models-config/index.js +1 -1
  20. package/dist/models-config/index.js.map +1 -1
  21. package/dist/models-config/paths.d.ts +8 -0
  22. package/dist/models-config/paths.d.ts.map +1 -1
  23. package/dist/models-config/paths.js +16 -1
  24. package/dist/models-config/paths.js.map +1 -1
  25. package/dist/models-config/resolve.d.ts +1 -1
  26. package/dist/models-config/resolve.d.ts.map +1 -1
  27. package/dist/models-config/resolve.js +25 -4
  28. package/dist/models-config/resolve.js.map +1 -1
  29. package/dist/models-config/types.d.ts +2 -0
  30. package/dist/models-config/types.d.ts.map +1 -1
  31. package/dist/pytorch/process/index.d.ts.map +1 -1
  32. package/dist/pytorch/process/index.js +2 -2
  33. package/dist/pytorch/process/index.js.map +1 -1
  34. package/dist/runtime/check.d.ts.map +1 -1
  35. package/dist/runtime/check.js +4 -3
  36. package/dist/runtime/check.js.map +1 -1
  37. package/dist/runtime/index.d.ts +1 -0
  38. package/dist/runtime/index.d.ts.map +1 -1
  39. package/dist/runtime/index.js +1 -0
  40. package/dist/runtime/index.js.map +1 -1
  41. package/dist/runtime/setup-commands-core.d.mts +13 -0
  42. package/dist/runtime/setup-commands-core.d.mts.map +1 -0
  43. package/dist/runtime/setup-commands-core.mjs +14 -0
  44. package/dist/runtime/setup-commands-core.mjs.map +1 -0
  45. package/dist/runtime/setup-commands.d.ts +2 -0
  46. package/dist/runtime/setup-commands.d.ts.map +1 -0
  47. package/dist/runtime/setup-commands.js +2 -0
  48. package/dist/runtime/setup-commands.js.map +1 -0
  49. package/package.json +5 -2
  50. package/scripts/download-model.js +3 -2
  51. package/scripts/runtime-cli.js +16 -11
  52. package/src/mlx-ml/python/backends/cache_archive.py +41 -0
  53. package/src/mlx-ml/python/backends/mlx_lm.py +17 -1
  54. package/src/mlx-ml/python/pyproject.toml +9 -3
  55. package/src/mlx-ml/python/uv.lock +188 -428
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/models-config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE/F,0BAA0B;AAC1B,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,UAAU,CAAC;AAEnD;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,CAAC;AAErD,iCAAiC;AACjC,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,4BAA4B;IAC5B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,wCAAwC;IACxC,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB;AAED,0CAA0C;AAC1C,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,cAAc,GAAG,MAAM,CAAC;IAClC,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC7C,aAAa,CAAC,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,yBAAyB;AACzB,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACvC,cAAc,CAAC,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;CACtD;AAED,iCAAiC;AACjC,MAAM,WAAW,mBAAmB;IAClC,0BAA0B;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/models-config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAE/F,0BAA0B;AAC1B,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,UAAU,CAAC;AAEnD;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,CAAC;AAErD,iCAAiC;AACjC,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,wCAAwC;IACxC,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB;AAED,0CAA0C;AAC1C,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,cAAc,GAAG,MAAM,CAAC;IAClC,YAAY,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC7C,aAAa,CAAC,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,yBAAyB;AACzB,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACvC,cAAc,CAAC,EAAE,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;CACtD;AAED,iCAAiC;AACjC,MAAM,WAAW,mBAAmB;IAClC,0BAA0B;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pytorch/process/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAQlC,OAAO,KAAK,EACV,qBAAqB,EACrB,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,mCAAmC,CAAC;AAO3C,MAAM,WAAW,qBAAqB;IACpC,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAcD,qBAAa,cAAc;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;gBAEpC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB;IA2BxD,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC,eAAe,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAIjD,UAAU,CACd,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5B,OAAO,CAAC,yBAAyB,CAAC;IAI/B,MAAM,CACV,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EACvD,KAAK,CAAC,EAAE,uBAAuB,EAAE,EACjC,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAC1C,OAAO,CAAC,qBAAqB,CAAC;IAI3B,QAAQ,CACZ,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,KAAK,CAAC,EAAE,uBAAuB,EAAE,EACjC,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAC1C,OAAO,CAAC,uBAAuB,CAAC;IAI7B,QAAQ,CACZ,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,QAAQ,CAAC;IAId,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,mBAAmB,IAAI,IAAI;IAI3B,SAAS;;;;;;CAGV"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pytorch/process/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AASlC,OAAO,KAAK,EACV,qBAAqB,EACrB,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACxB,MAAM,mCAAmC,CAAC;AAO3C,MAAM,WAAW,qBAAqB;IACpC,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAcD,qBAAa,cAAc;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;gBAEpC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB;IA2BxD,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC,eAAe,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAIjD,UAAU,CACd,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC5B,OAAO,CAAC,yBAAyB,CAAC;IAI/B,MAAM,CACV,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EACvD,KAAK,CAAC,EAAE,uBAAuB,EAAE,EACjC,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAC1C,OAAO,CAAC,qBAAqB,CAAC;IAI3B,QAAQ,CACZ,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,KAAK,CAAC,EAAE,uBAAuB,EAAE,EACjC,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAC1C,OAAO,CAAC,uBAAuB,CAAC;IAI7B,QAAQ,CACZ,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,QAAQ,CAAC;IAId,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,mBAAmB,IAAI,IAAI;IAI3B,SAAS;;;;;;CAGV"}
@@ -2,7 +2,7 @@
2
2
  * PyTorch Driver 外部インターフェース
3
3
  */
4
4
  import { existsSync } from 'fs';
5
- import { getPytorchPythonDir, getVenvPath, resolvePackageRootFromProcessModule, } from '../../runtime/index.js';
5
+ import { getPytorchPythonDir, getVenvPath, resolvePackageRootFromProcessModule, SETUP_PYTORCH_MONOREPO, } from '../../runtime/index.js';
6
6
  import { InferenceProcessClient } from '../../local-inference/process-client.js';
7
7
  import { mapOptionsToPython } from '../../mlx-ml/process/parameter-mapper.js';
8
8
  const packageRoot = resolvePackageRootFromProcessModule(import.meta.url);
@@ -23,7 +23,7 @@ export class PyTorchProcess {
23
23
  const venvPath = resolveVenvPath(options);
24
24
  if (!existsSync(venvPath)) {
25
25
  throw new Error(`PyTorch venv not found at ${venvPath}. ` +
26
- 'Run: pnpm run setup-pytorch -w @modular-prompt/driver');
26
+ `Run: ${SETUP_PYTORCH_MONOREPO}`);
27
27
  }
28
28
  const device = options?.device ?? process.env.PYTORCH_DEVICE;
29
29
  const extraEnv = device ? { PYTORCH_DEVICE: device } : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pytorch/process/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pytorch/process/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/runtime/check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAe,cAAc,EAAE,MAAM,YAAY,CAAC;AAEzD,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAElB,OAAO,EAAE,cAAc;CAepC;AAED,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAIhE"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/runtime/check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAe,cAAc,EAAE,MAAM,YAAY,CAAC;AAOzD,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;gBAElB,OAAO,EAAE,cAAc;CAepC;AAED,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAIhE"}
@@ -1,13 +1,14 @@
1
1
  import { getVenvPath, isRuntimeReady } from './paths.js';
2
+ import { SETUP_MLX_MONOREPO, SETUP_PYTORCH_MONOREPO, SETUP_MLX_CLI, } from './setup-commands.js';
2
3
  export class RuntimeNotReadyError extends Error {
3
4
  profile;
4
5
  setupCommand;
5
6
  constructor(profile) {
6
7
  const setupCommand = profile === 'mlx'
7
- ? 'pnpm run setup-mlx -w @modular-prompt/driver'
8
+ ? SETUP_MLX_MONOREPO
8
9
  : profile === 'pytorch'
9
- ? 'pnpm run setup-pytorch -w @modular-prompt/driver'
10
- : `node node_modules/@modular-prompt/driver/scripts/runtime-cli.js setup ${profile}`;
10
+ ? SETUP_PYTORCH_MONOREPO
11
+ : SETUP_MLX_CLI.replace(' setup mlx', ` setup ${profile}`);
11
12
  super(`${profile} runtime is not set up at ${getVenvPath(profile)}. ` +
12
13
  `Run: ${setupCommand}`);
13
14
  this.name = 'RuntimeNotReadyError';
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/runtime/check.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACpC,OAAO,CAAiB;IACxB,YAAY,CAAS;IAE9B,YAAY,OAAuB;QACjC,MAAM,YAAY,GAChB,OAAO,KAAK,KAAK;YACf,CAAC,CAAC,8CAA8C;YAChD,CAAC,CAAC,OAAO,KAAK,SAAS;gBACrB,CAAC,CAAC,kDAAkD;gBACpD,CAAC,CAAC,yEAAyE,OAAO,EAAE,CAAC;QAC3F,KAAK,CACH,GAAG,OAAO,6BAA6B,WAAW,CAAC,OAAO,CAAC,IAAI;YAC/D,QAAQ,YAAY,EAAE,CACvB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AAED,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,MAAM,UAAU,kBAAkB,CAAC,OAAuB;IACxD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/runtime/check.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACpC,OAAO,CAAiB;IACxB,YAAY,CAAS;IAE9B,YAAY,OAAuB;QACjC,MAAM,YAAY,GAChB,OAAO,KAAK,KAAK;YACf,CAAC,CAAC,kBAAkB;YACpB,CAAC,CAAC,OAAO,KAAK,SAAS;gBACrB,CAAC,CAAC,sBAAsB;gBACxB,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,OAAO,EAAE,CAAC,CAAC;QACjE,KAAK,CACH,GAAG,OAAO,6BAA6B,WAAW,CAAC,OAAO,CAAC,IAAI;YAC/D,QAAQ,YAAY,EAAE,CACvB,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AAED,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B,MAAM,UAAU,kBAAkB,CAAC,OAAuB;IACxD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { MODULAR_PROMPT_DIR, RUNTIME_PROFILES, getModularPromptHome, getRuntimesRoot, getRuntimeDir, getVenvPath, getManifestPath, getMlxPythonDir, getPytorchPythonDir, resolvePackageRoot, resolvePackageRootFromProcessModule, type RuntimeProfile, } from './paths.js';
2
2
  export { readManifest, writeManifest, collectInstalledPackages, type RuntimeManifest, } from './manifest.js';
3
3
  export { RuntimeNotReadyError, isRuntimeReady, assertRuntimeReady, } from './check.js';
4
+ export { SETUP_MLX_MONOREPO, SETUP_PYTORCH_MONOREPO, SETUP_MLX_CLI, SETUP_PYTORCH_CLI, } from './setup-commands.js';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,EACX,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,mCAAmC,EACnC,KAAK,cAAc,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,wBAAwB,EACxB,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,EACX,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,mCAAmC,EACnC,KAAK,cAAc,GACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,wBAAwB,EACxB,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,iBAAiB,GAClB,MAAM,qBAAqB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { MODULAR_PROMPT_DIR, RUNTIME_PROFILES, getModularPromptHome, getRuntimesRoot, getRuntimeDir, getVenvPath, getManifestPath, getMlxPythonDir, getPytorchPythonDir, resolvePackageRoot, resolvePackageRootFromProcessModule, } from './paths.js';
2
2
  export { readManifest, writeManifest, collectInstalledPackages, } from './manifest.js';
3
3
  export { RuntimeNotReadyError, isRuntimeReady, assertRuntimeReady, } from './check.js';
4
+ export { SETUP_MLX_MONOREPO, SETUP_PYTORCH_MONOREPO, SETUP_MLX_CLI, SETUP_PYTORCH_CLI, } from './setup-commands.js';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,EACX,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,mCAAmC,GAEpC,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,wBAAwB,GAEzB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,kBAAkB,GACnB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,EACX,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,mCAAmC,GAEpC,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,wBAAwB,GAEzB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,iBAAiB,GAClB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Python runtime セットアップコマンド(CLI・エラーメッセージ・ドキュメントで共通)
3
+ *
4
+ * monorepo: ルート package.json が driver へ委譲する `pnpm run setup-*`
5
+ * published: `modular-prompt-runtime` bin(@modular-prompt/driver インストール後)
6
+ */
7
+ /** monorepo ルート(pnpm)— ルート package.json 経由で driver の setup を実行 */
8
+ export const SETUP_MLX_MONOREPO: "pnpm run setup-mlx";
9
+ export const SETUP_PYTORCH_MONOREPO: "pnpm run setup-pytorch";
10
+ /** @modular-prompt/driver を npm インストールした環境向け */
11
+ export const SETUP_MLX_CLI: "modular-prompt-runtime setup mlx";
12
+ export const SETUP_PYTORCH_CLI: "modular-prompt-runtime setup pytorch";
13
+ //# sourceMappingURL=setup-commands-core.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-commands-core.d.mts","sourceRoot":"","sources":["../../src/runtime/setup-commands-core.mjs"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kEAAkE;AAClE,iCAAkC,oBAAoB,CAAC;AACvD,qCAAsC,wBAAwB,CAAC;AAE/D,gDAAgD;AAChD,4BAA6B,kCAAkC,CAAC;AAChE,gCAAiC,sCAAsC,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Python runtime セットアップコマンド(CLI・エラーメッセージ・ドキュメントで共通)
3
+ *
4
+ * monorepo: ルート package.json が driver へ委譲する `pnpm run setup-*`
5
+ * published: `modular-prompt-runtime` bin(@modular-prompt/driver インストール後)
6
+ */
7
+
8
+ /** monorepo ルート(pnpm)— ルート package.json 経由で driver の setup を実行 */
9
+ export const SETUP_MLX_MONOREPO = 'pnpm run setup-mlx';
10
+ export const SETUP_PYTORCH_MONOREPO = 'pnpm run setup-pytorch';
11
+
12
+ /** @modular-prompt/driver を npm インストールした環境向け */
13
+ export const SETUP_MLX_CLI = 'modular-prompt-runtime setup mlx';
14
+ export const SETUP_PYTORCH_CLI = 'modular-prompt-runtime setup pytorch';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-commands-core.mjs","sourceRoot":"","sources":["../../src/runtime/setup-commands-core.mjs"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kEAAkE;AAClE,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AACvD,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAE/D,gDAAgD;AAChD,MAAM,CAAC,MAAM,aAAa,GAAG,kCAAkC,CAAC;AAChE,MAAM,CAAC,MAAM,iBAAiB,GAAG,sCAAsC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { SETUP_MLX_MONOREPO, SETUP_PYTORCH_MONOREPO, SETUP_MLX_CLI, SETUP_PYTORCH_CLI, } from './setup-commands-core.mjs';
2
+ //# sourceMappingURL=setup-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-commands.d.ts","sourceRoot":"","sources":["../../src/runtime/setup-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,iBAAiB,GAClB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { SETUP_MLX_MONOREPO, SETUP_PYTORCH_MONOREPO, SETUP_MLX_CLI, SETUP_PYTORCH_CLI, } from './setup-commands-core.mjs';
2
+ //# sourceMappingURL=setup-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-commands.js","sourceRoot":"","sources":["../../src/runtime/setup-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,aAAa,EACb,iBAAiB,GAClB,MAAM,2BAA2B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@modular-prompt/driver",
3
- "version": "0.15.0",
3
+ "version": "0.16.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -17,6 +17,9 @@
17
17
  "src/mlx-ml/python",
18
18
  "src/pytorch/python"
19
19
  ],
20
+ "bin": {
21
+ "modular-runtime": "./scripts/runtime-cli.js"
22
+ },
20
23
  "dependencies": {
21
24
  "@anthropic-ai/sdk": "0.61.0",
22
25
  "@anthropic-ai/vertex-sdk": "0.14.4",
@@ -54,7 +57,7 @@
54
57
  "directory": "packages/driver"
55
58
  },
56
59
  "scripts": {
57
- "build": "tsc -b --force && cp src/runtime/paths-core.mjs src/runtime/manifest-core.mjs dist/runtime/",
60
+ "build": "tsc -b --force && cp src/runtime/paths-core.mjs src/runtime/manifest-core.mjs src/runtime/setup-commands-core.mjs dist/runtime/",
58
61
  "test": "vitest",
59
62
  "test:run": "vitest run",
60
63
  "test:system": "vitest run --config vitest.config.system.ts",
@@ -15,19 +15,20 @@ function runtimeModuleUrl(name) {
15
15
  }
16
16
 
17
17
  const { getMlxPythonDir, getVenvPath } = await import(runtimeModuleUrl('paths-core.mjs'));
18
+ const { SETUP_MLX_MONOREPO } = await import(runtimeModuleUrl('setup-commands-core.mjs'));
18
19
 
19
20
  const targetDir = getMlxPythonDir(packageRoot);
20
21
  const venvPath = getVenvPath('mlx');
21
22
 
22
23
  if (!existsSync(targetDir)) {
23
24
  console.error('❌ MLX Python directory not found.');
24
- console.error(' Please run "pnpm run setup-mlx -w @modular-prompt/driver" first.');
25
+ console.error(` Please run "${SETUP_MLX_MONOREPO}" first.`);
25
26
  process.exit(1);
26
27
  }
27
28
 
28
29
  if (!existsSync(join(venvPath, 'bin', 'python'))) {
29
30
  console.error('❌ MLX runtime is not set up.');
30
- console.error(' Please run "pnpm run setup-mlx -w @modular-prompt/driver" first.');
31
+ console.error(` Please run "${SETUP_MLX_MONOREPO}" first.`);
31
32
  process.exit(1);
32
33
  }
33
34
 
@@ -36,6 +36,11 @@ const {
36
36
  isRuntimeReady,
37
37
  } = await import(runtimeModuleUrl('paths-core.mjs'));
38
38
 
39
+ const {
40
+ SETUP_MLX_MONOREPO,
41
+ SETUP_PYTORCH_MONOREPO,
42
+ } = await import(runtimeModuleUrl('setup-commands-core.mjs'));
43
+
39
44
  const {
40
45
  collectInstalledPackages,
41
46
  readManifest,
@@ -90,7 +95,7 @@ function setupMlx() {
90
95
  };
91
96
 
92
97
  try {
93
- execSync('uv venv --python 3.13', { cwd: pythonDir, stdio: 'inherit', env });
98
+ execSync('uv venv --clear --python 3.13', { cwd: pythonDir, stdio: 'inherit', env });
94
99
  execSync('uv pip install -e .', { cwd: pythonDir, stdio: 'inherit', env });
95
100
 
96
101
  writeManifest('mlx', {
@@ -139,7 +144,7 @@ function setupPytorch() {
139
144
  };
140
145
 
141
146
  try {
142
- execSync(`uv venv --python ${PYTORCH_PYTHON_VERSION}`, { cwd: pythonDir, stdio: 'inherit', env });
147
+ execSync(`uv venv --clear --python ${PYTORCH_PYTHON_VERSION}`, { cwd: pythonDir, stdio: 'inherit', env });
143
148
  const venvPython =
144
149
  process.platform === 'win32'
145
150
  ? join(venvPath, 'Scripts', 'python.exe')
@@ -200,10 +205,10 @@ function printStatus() {
200
205
  }
201
206
  const setupHints = [];
202
207
  if (!isRuntimeReady('mlx') && process.platform === 'darwin') {
203
- setupHints.push('pnpm run setup-mlx -w @modular-prompt/driver');
208
+ setupHints.push(SETUP_MLX_MONOREPO);
204
209
  }
205
210
  if (!isRuntimeReady('pytorch')) {
206
- setupHints.push('pnpm run setup-pytorch -w @modular-prompt/driver');
211
+ setupHints.push(SETUP_PYTORCH_MONOREPO);
207
212
  }
208
213
  if (setupHints.length > 0) {
209
214
  console.log(`\nRun: ${setupHints.join(' or ')}`);
@@ -253,13 +258,13 @@ async function cleanupAll() {
253
258
 
254
259
  function printUsage() {
255
260
  console.log(`Usage:
256
- node scripts/runtime-cli.js setup mlx Set up MLX Python runtime (macOS only)
257
- node scripts/runtime-cli.js setup pytorch Set up PyTorch runtime (cpu-minimal)
258
- node scripts/runtime-cli.js setup --status Show runtime status
259
- node scripts/runtime-cli.js cleanup mlx Remove MLX runtime
260
- node scripts/runtime-cli.js cleanup pytorch Remove PyTorch runtime
261
- node scripts/runtime-cli.js cleanup --all Remove entire ~/.modular-prompt
262
- node scripts/runtime-cli.js cleanup ... --yes Skip confirmation
261
+ modular-prompt-runtime setup mlx Set up MLX Python runtime (macOS only)
262
+ modular-prompt-runtime setup pytorch Set up PyTorch runtime (cpu-minimal)
263
+ modular-prompt-runtime setup --status Show runtime status
264
+ modular-prompt-runtime cleanup mlx Remove MLX runtime
265
+ modular-prompt-runtime cleanup pytorch Remove PyTorch runtime
266
+ modular-prompt-runtime cleanup --all Remove entire ~/.modular-prompt
267
+ modular-prompt-runtime cleanup ... --yes Skip confirmation
263
268
 
264
269
  npm scripts: setup-mlx, setup-pytorch, runtime:status, runtime:cleanup`);
265
270
  }
@@ -0,0 +1,41 @@
1
+ """Streaming zip storage for MLX prompt caches."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import zipfile
6
+ from collections.abc import Callable
7
+ from typing import Any
8
+
9
+
10
+ CACHE_ENTRY_NAME = "prompt_cache.safetensors"
11
+
12
+
13
+ def save_prompt_cache_zip(
14
+ file_name: str,
15
+ cache: Any,
16
+ save_impl: Callable[[Any, Any], None],
17
+ ) -> None:
18
+ """Save a prompt cache into a compressed zip member as it is produced.
19
+
20
+ ``save_impl`` receives the zip member's writable stream. It must write
21
+ the safetensors payload to that stream instead of creating an intermediate
22
+ uncompressed file.
23
+ """
24
+ with zipfile.ZipFile(
25
+ file_name,
26
+ mode="w",
27
+ compression=zipfile.ZIP_DEFLATED,
28
+ allowZip64=True,
29
+ ) as archive:
30
+ with archive.open(CACHE_ENTRY_NAME, mode="w", force_zip64=True) as cache_file:
31
+ save_impl(cache_file, cache)
32
+
33
+
34
+ def load_prompt_cache_zip(
35
+ file_name: str,
36
+ load_impl: Callable[[Any], Any],
37
+ ) -> Any:
38
+ """Load a prompt cache from the safetensors member of a zip archive."""
39
+ with zipfile.ZipFile(file_name, mode="r") as archive:
40
+ with archive.open(CACHE_ENTRY_NAME, mode="r") as cache_file:
41
+ return load_impl(cache_file)
@@ -7,13 +7,29 @@ from typing import Any, Iterator
7
7
 
8
8
  from mlx_lm import load as mlx_lm_load
9
9
  from mlx_lm import stream_generate as mlx_lm_stream_generate
10
- from mlx_lm.models.cache import make_prompt_cache, save_prompt_cache, load_prompt_cache, trim_prompt_cache
10
+ from mlx_lm.models.cache import (
11
+ make_prompt_cache,
12
+ save_prompt_cache as mlx_save_prompt_cache,
13
+ load_prompt_cache as mlx_load_prompt_cache,
14
+ trim_prompt_cache,
15
+ )
11
16
  from mlx_lm.sample_utils import make_sampler
12
17
 
13
18
  from backends.base import ModelBackend
19
+ from backends.cache_archive import load_prompt_cache_zip, save_prompt_cache_zip
14
20
  from utils.token_utils import is_eod_token
15
21
 
16
22
 
23
+ def save_prompt_cache(file_name: str, cache: Any) -> None:
24
+ """Save a prompt cache as a compressed archive without an uncompressed copy."""
25
+ save_prompt_cache_zip(file_name, cache, mlx_save_prompt_cache)
26
+
27
+
28
+ def load_prompt_cache(file_name: str) -> list:
29
+ """Load a prompt cache from its compressed safetensors archive."""
30
+ return load_prompt_cache_zip(file_name, mlx_load_prompt_cache)
31
+
32
+
17
33
  class MlxLmBackend(ModelBackend):
18
34
  """`mlx_lm` backend for text-only models."""
19
35
 
@@ -7,14 +7,20 @@ dependencies = [
7
7
  "flex==6.14.1",
8
8
  "hf-xet==1.2.0",
9
9
  "jinja2==3.1.6",
10
- "mlx>=0.31.2; sys_platform == 'darwin'",
10
+ "mlx>=0.32.2; sys_platform == 'darwin'",
11
11
  "mlx-lm==0.31.3; sys_platform == 'darwin'",
12
12
  "mlx-optiq>=0.4.4; sys_platform == 'darwin'",
13
- "mlx-vlm==0.6.4; sys_platform == 'darwin'",
13
+ "mlx-vlm==0.6.17; sys_platform == 'darwin'",
14
14
  "tokenizers==0.22.2",
15
15
  "torch==2.9.1",
16
16
  "torchvision==0.24.1",
17
- "transformers>=5.5.0",
17
+ "transformers>=5.14.0",
18
+ ]
19
+
20
+ [tool.uv]
21
+ # mlx-optiq は transformers<5.13 を要求するが、mlx-vlm>=0.6.5 は 5.14+ が必要
22
+ override-dependencies = [
23
+ "transformers>=5.14.0",
18
24
  ]
19
25
 
20
26
  [dependency-groups]