@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.
- package/README.md +34 -2
- package/dist/driver-registry/config-based-factory.d.ts.map +1 -1
- package/dist/driver-registry/config-based-factory.js +4 -3
- package/dist/driver-registry/config-based-factory.js.map +1 -1
- package/dist/driver-registry/factory-helper.d.ts.map +1 -1
- package/dist/driver-registry/factory-helper.js +1 -0
- package/dist/driver-registry/factory-helper.js.map +1 -1
- package/dist/driver-registry/types.d.ts +3 -0
- package/dist/driver-registry/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/mlx-ml/mlx-cache-controller.d.ts.map +1 -1
- package/dist/mlx-ml/mlx-cache-controller.js +2 -1
- package/dist/mlx-ml/mlx-cache-controller.js.map +1 -1
- package/dist/models-config/index.d.ts +1 -1
- package/dist/models-config/index.d.ts.map +1 -1
- package/dist/models-config/index.js +1 -1
- package/dist/models-config/index.js.map +1 -1
- package/dist/models-config/paths.d.ts +8 -0
- package/dist/models-config/paths.d.ts.map +1 -1
- package/dist/models-config/paths.js +16 -1
- package/dist/models-config/paths.js.map +1 -1
- package/dist/models-config/resolve.d.ts +1 -1
- package/dist/models-config/resolve.d.ts.map +1 -1
- package/dist/models-config/resolve.js +25 -4
- package/dist/models-config/resolve.js.map +1 -1
- package/dist/models-config/types.d.ts +2 -0
- package/dist/models-config/types.d.ts.map +1 -1
- package/dist/pytorch/process/index.d.ts.map +1 -1
- package/dist/pytorch/process/index.js +2 -2
- package/dist/pytorch/process/index.js.map +1 -1
- package/dist/runtime/check.d.ts.map +1 -1
- package/dist/runtime/check.js +4 -3
- package/dist/runtime/check.js.map +1 -1
- package/dist/runtime/index.d.ts +1 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +1 -0
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/setup-commands-core.d.mts +13 -0
- package/dist/runtime/setup-commands-core.d.mts.map +1 -0
- package/dist/runtime/setup-commands-core.mjs +14 -0
- package/dist/runtime/setup-commands-core.mjs.map +1 -0
- package/dist/runtime/setup-commands.d.ts +2 -0
- package/dist/runtime/setup-commands.d.ts.map +1 -0
- package/dist/runtime/setup-commands.js +2 -0
- package/dist/runtime/setup-commands.js.map +1 -0
- package/package.json +5 -2
- package/scripts/download-model.js +3 -2
- package/scripts/runtime-cli.js +16 -11
- package/src/mlx-ml/python/backends/cache_archive.py +41 -0
- package/src/mlx-ml/python/backends/mlx_lm.py +17 -1
- package/src/mlx-ml/python/pyproject.toml +9 -3
- 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;
|
|
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
|
-
|
|
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":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,mCAAmC,
|
|
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;
|
|
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"}
|
package/dist/runtime/check.js
CHANGED
|
@@ -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
|
-
?
|
|
8
|
+
? SETUP_MLX_MONOREPO
|
|
8
9
|
: profile === 'pytorch'
|
|
9
|
-
?
|
|
10
|
-
:
|
|
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;
|
|
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"}
|
package/dist/runtime/index.d.ts
CHANGED
|
@@ -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"}
|
package/dist/runtime/index.js
CHANGED
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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.
|
|
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(
|
|
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(
|
|
31
|
+
console.error(` Please run "${SETUP_MLX_MONOREPO}" first.`);
|
|
31
32
|
process.exit(1);
|
|
32
33
|
}
|
|
33
34
|
|
package/scripts/runtime-cli.js
CHANGED
|
@@ -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(
|
|
208
|
+
setupHints.push(SETUP_MLX_MONOREPO);
|
|
204
209
|
}
|
|
205
210
|
if (!isRuntimeReady('pytorch')) {
|
|
206
|
-
setupHints.push(
|
|
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
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
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]
|