@modular-prompt/driver 0.14.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 (218) hide show
  1. package/README.md +90 -5
  2. package/dist/driver-registry/ai-service.d.ts +23 -1
  3. package/dist/driver-registry/ai-service.d.ts.map +1 -1
  4. package/dist/driver-registry/ai-service.js +44 -10
  5. package/dist/driver-registry/ai-service.js.map +1 -1
  6. package/dist/driver-registry/config-based-factory.d.ts.map +1 -1
  7. package/dist/driver-registry/config-based-factory.js +20 -3
  8. package/dist/driver-registry/config-based-factory.js.map +1 -1
  9. package/dist/driver-registry/factory-helper.d.ts +2 -0
  10. package/dist/driver-registry/factory-helper.d.ts.map +1 -1
  11. package/dist/driver-registry/factory-helper.js +22 -3
  12. package/dist/driver-registry/factory-helper.js.map +1 -1
  13. package/dist/driver-registry/index.d.ts +2 -2
  14. package/dist/driver-registry/index.d.ts.map +1 -1
  15. package/dist/driver-registry/index.js +1 -1
  16. package/dist/driver-registry/index.js.map +1 -1
  17. package/dist/driver-registry/registry.d.ts.map +1 -1
  18. package/dist/driver-registry/registry.js +3 -1
  19. package/dist/driver-registry/registry.js.map +1 -1
  20. package/dist/driver-registry/types.d.ts +11 -2
  21. package/dist/driver-registry/types.d.ts.map +1 -1
  22. package/dist/index.d.ts +10 -2
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +9 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/local-inference/adapters.d.ts +66 -0
  27. package/dist/local-inference/adapters.d.ts.map +1 -0
  28. package/dist/local-inference/adapters.js +2 -0
  29. package/dist/local-inference/adapters.js.map +1 -0
  30. package/dist/local-inference/driver.d.ts +51 -0
  31. package/dist/local-inference/driver.d.ts.map +1 -0
  32. package/dist/local-inference/driver.js +309 -0
  33. package/dist/local-inference/driver.js.map +1 -0
  34. package/dist/local-inference/index.d.ts +22 -0
  35. package/dist/local-inference/index.d.ts.map +1 -0
  36. package/dist/local-inference/index.js +17 -0
  37. package/dist/local-inference/index.js.map +1 -0
  38. package/dist/local-inference/process-client.d.ts +50 -0
  39. package/dist/local-inference/process-client.d.ts.map +1 -0
  40. package/dist/local-inference/process-client.js +92 -0
  41. package/dist/local-inference/process-client.js.map +1 -0
  42. package/dist/local-inference/process-communication.d.ts +41 -0
  43. package/dist/local-inference/process-communication.d.ts.map +1 -0
  44. package/dist/{mlx-ml/process → local-inference}/process-communication.js +25 -61
  45. package/dist/local-inference/process-communication.js.map +1 -0
  46. package/dist/local-inference/process-port.d.ts +12 -0
  47. package/dist/local-inference/process-port.d.ts.map +1 -0
  48. package/dist/local-inference/process-port.js +2 -0
  49. package/dist/local-inference/process-port.js.map +1 -0
  50. package/dist/local-inference/prompt-utils.d.ts +6 -0
  51. package/dist/local-inference/prompt-utils.d.ts.map +1 -0
  52. package/dist/local-inference/prompt-utils.js +17 -0
  53. package/dist/local-inference/prompt-utils.js.map +1 -0
  54. package/dist/local-inference/protocol.d.ts +192 -0
  55. package/dist/local-inference/protocol.d.ts.map +1 -0
  56. package/dist/local-inference/protocol.js +2 -0
  57. package/dist/local-inference/protocol.js.map +1 -0
  58. package/dist/local-inference/queue-types.d.ts +54 -0
  59. package/dist/local-inference/queue-types.d.ts.map +1 -0
  60. package/dist/local-inference/queue-types.js +2 -0
  61. package/dist/local-inference/queue-types.js.map +1 -0
  62. package/dist/local-inference/request-queue.d.ts +36 -0
  63. package/dist/local-inference/request-queue.d.ts.map +1 -0
  64. package/dist/{mlx-ml/process/queue.js → local-inference/request-queue.js} +83 -56
  65. package/dist/local-inference/request-queue.js.map +1 -0
  66. package/dist/local-inference/stream-utils.d.ts +19 -0
  67. package/dist/local-inference/stream-utils.d.ts.map +1 -0
  68. package/dist/local-inference/stream-utils.js +76 -0
  69. package/dist/local-inference/stream-utils.js.map +1 -0
  70. package/dist/mlx-ml/mlx-cache-controller.d.ts.map +1 -1
  71. package/dist/mlx-ml/mlx-cache-controller.js +2 -1
  72. package/dist/mlx-ml/mlx-cache-controller.js.map +1 -1
  73. package/dist/mlx-ml/mlx-cache-support.d.ts +23 -0
  74. package/dist/mlx-ml/mlx-cache-support.d.ts.map +1 -0
  75. package/dist/mlx-ml/mlx-cache-support.js +45 -0
  76. package/dist/mlx-ml/mlx-cache-support.js.map +1 -0
  77. package/dist/mlx-ml/mlx-driver.d.ts +20 -59
  78. package/dist/mlx-ml/mlx-driver.d.ts.map +1 -1
  79. package/dist/mlx-ml/mlx-driver.js +86 -460
  80. package/dist/mlx-ml/mlx-driver.js.map +1 -1
  81. package/dist/mlx-ml/mlx-local-inference-adapters.d.ts +3 -0
  82. package/dist/mlx-ml/mlx-local-inference-adapters.d.ts.map +1 -0
  83. package/dist/mlx-ml/mlx-local-inference-adapters.js +19 -0
  84. package/dist/mlx-ml/mlx-local-inference-adapters.js.map +1 -0
  85. package/dist/mlx-ml/mlx-options.d.ts +19 -0
  86. package/dist/mlx-ml/mlx-options.d.ts.map +1 -0
  87. package/dist/mlx-ml/mlx-options.js +30 -0
  88. package/dist/mlx-ml/mlx-options.js.map +1 -0
  89. package/dist/mlx-ml/process/index.d.ts +10 -8
  90. package/dist/mlx-ml/process/index.d.ts.map +1 -1
  91. package/dist/mlx-ml/process/index.js +73 -54
  92. package/dist/mlx-ml/process/index.js.map +1 -1
  93. package/dist/mlx-ml/process/model-specific.d.ts +2 -1
  94. package/dist/mlx-ml/process/model-specific.d.ts.map +1 -1
  95. package/dist/mlx-ml/process/model-specific.js.map +1 -1
  96. package/dist/mlx-ml/process/prompt-builder.d.ts +11 -0
  97. package/dist/mlx-ml/process/prompt-builder.d.ts.map +1 -0
  98. package/dist/mlx-ml/process/prompt-builder.js +51 -0
  99. package/dist/mlx-ml/process/prompt-builder.js.map +1 -0
  100. package/dist/mlx-ml/process/types.d.ts +15 -183
  101. package/dist/mlx-ml/process/types.d.ts.map +1 -1
  102. package/dist/mlx-ml/types.d.ts +2 -45
  103. package/dist/mlx-ml/types.d.ts.map +1 -1
  104. package/dist/models-config/index.d.ts +8 -0
  105. package/dist/models-config/index.d.ts.map +1 -0
  106. package/dist/models-config/index.js +7 -0
  107. package/dist/models-config/index.js.map +1 -0
  108. package/dist/models-config/loader.d.ts +20 -0
  109. package/dist/models-config/loader.d.ts.map +1 -0
  110. package/dist/models-config/loader.js +85 -0
  111. package/dist/models-config/loader.js.map +1 -0
  112. package/dist/models-config/paths.d.ts +15 -0
  113. package/dist/models-config/paths.d.ts.map +1 -0
  114. package/dist/models-config/paths.js +26 -0
  115. package/dist/models-config/paths.js.map +1 -0
  116. package/dist/models-config/resolve.d.ts +57 -0
  117. package/dist/models-config/resolve.d.ts.map +1 -0
  118. package/dist/models-config/resolve.js +208 -0
  119. package/dist/models-config/resolve.js.map +1 -0
  120. package/dist/models-config/types.d.ts +62 -0
  121. package/dist/models-config/types.d.ts.map +1 -0
  122. package/dist/models-config/types.js +5 -0
  123. package/dist/models-config/types.js.map +1 -0
  124. package/dist/pytorch/process/index.d.ts +35 -0
  125. package/dist/pytorch/process/index.d.ts.map +1 -0
  126. package/dist/pytorch/process/index.js +69 -0
  127. package/dist/pytorch/process/index.js.map +1 -0
  128. package/dist/pytorch/pytorch-driver.d.ts +35 -0
  129. package/dist/pytorch/pytorch-driver.d.ts.map +1 -0
  130. package/dist/pytorch/pytorch-driver.js +48 -0
  131. package/dist/pytorch/pytorch-driver.js.map +1 -0
  132. package/dist/pytorch/pytorch-local-inference-adapters.d.ts +3 -0
  133. package/dist/pytorch/pytorch-local-inference-adapters.d.ts.map +1 -0
  134. package/dist/pytorch/pytorch-local-inference-adapters.js +19 -0
  135. package/dist/pytorch/pytorch-local-inference-adapters.js.map +1 -0
  136. package/dist/pytorch/pytorch-options.d.ts +8 -0
  137. package/dist/pytorch/pytorch-options.d.ts.map +1 -0
  138. package/dist/pytorch/pytorch-options.js +21 -0
  139. package/dist/pytorch/pytorch-options.js.map +1 -0
  140. package/dist/query-logger.js +1 -1
  141. package/dist/query-logger.js.map +1 -1
  142. package/dist/runtime/check.d.ts +10 -0
  143. package/dist/runtime/check.d.ts.map +1 -0
  144. package/dist/runtime/check.js +25 -0
  145. package/dist/runtime/check.js.map +1 -0
  146. package/dist/runtime/index.d.ts +5 -0
  147. package/dist/runtime/index.d.ts.map +1 -0
  148. package/dist/runtime/index.js +5 -0
  149. package/dist/runtime/index.js.map +1 -0
  150. package/dist/runtime/manifest-core.d.mts +27 -0
  151. package/dist/runtime/manifest-core.d.mts.map +1 -0
  152. package/dist/runtime/manifest-core.mjs +68 -0
  153. package/dist/runtime/manifest-core.mjs.map +1 -0
  154. package/dist/runtime/manifest.d.ts +18 -0
  155. package/dist/runtime/manifest.d.ts.map +1 -0
  156. package/dist/runtime/manifest.js +9 -0
  157. package/dist/runtime/manifest.js.map +1 -0
  158. package/dist/runtime/paths-core.d.mts +17 -0
  159. package/dist/runtime/paths-core.d.mts.map +1 -0
  160. package/dist/runtime/paths-core.mjs +67 -0
  161. package/dist/runtime/paths-core.mjs.map +1 -0
  162. package/dist/runtime/paths.d.ts +12 -0
  163. package/dist/runtime/paths.d.ts.map +1 -0
  164. package/dist/runtime/paths.js +17 -0
  165. package/dist/runtime/paths.js.map +1 -0
  166. package/dist/runtime/setup-commands-core.d.mts +13 -0
  167. package/dist/runtime/setup-commands-core.d.mts.map +1 -0
  168. package/dist/runtime/setup-commands-core.mjs +14 -0
  169. package/dist/runtime/setup-commands-core.mjs.map +1 -0
  170. package/dist/runtime/setup-commands.d.ts +2 -0
  171. package/dist/runtime/setup-commands.d.ts.map +1 -0
  172. package/dist/runtime/setup-commands.js +2 -0
  173. package/dist/runtime/setup-commands.js.map +1 -0
  174. package/dist/types.d.ts +11 -1
  175. package/dist/types.d.ts.map +1 -1
  176. package/dist/types.js.map +1 -1
  177. package/package.json +13 -7
  178. package/scripts/download-model.js +26 -9
  179. package/scripts/runtime-cli.js +320 -0
  180. package/src/mlx-ml/python/__main__.py +43 -4
  181. package/src/mlx-ml/python/backends/cache_archive.py +41 -0
  182. package/src/mlx-ml/python/backends/mlx_lm.py +17 -1
  183. package/src/mlx-ml/python/handlers/__init__.py +2 -1
  184. package/src/mlx-ml/python/handlers/completion.py +3 -27
  185. package/src/mlx-ml/python/handlers/{chat.py → generate.py} +33 -106
  186. package/src/mlx-ml/python/handlers/render.py +40 -0
  187. package/src/mlx-ml/python/pyproject.toml +11 -4
  188. package/src/mlx-ml/python/server.py +28 -8
  189. package/src/mlx-ml/python/utils/template_render.py +80 -0
  190. package/src/mlx-ml/python/utils/token_utils.py +2 -2
  191. package/src/mlx-ml/python/uv.lock +544 -689
  192. package/src/pytorch/python/__main__.py +19 -0
  193. package/src/pytorch/python/backends/__init__.py +3 -0
  194. package/src/pytorch/python/backends/base.py +84 -0
  195. package/src/pytorch/python/backends/transformers_lm.py +127 -0
  196. package/src/pytorch/python/handlers/__init__.py +6 -0
  197. package/src/pytorch/python/handlers/cancel.py +53 -0
  198. package/src/pytorch/python/handlers/capabilities.py +6 -0
  199. package/src/pytorch/python/handlers/completion.py +15 -0
  200. package/src/pytorch/python/handlers/format_test.py +70 -0
  201. package/src/pytorch/python/handlers/generate.py +68 -0
  202. package/src/pytorch/python/handlers/render.py +40 -0
  203. package/src/pytorch/python/handlers/tokenize.py +63 -0
  204. package/src/pytorch/python/pyproject.toml +36 -0
  205. package/src/pytorch/python/server.py +140 -0
  206. package/src/pytorch/python/utils/__init__.py +0 -0
  207. package/src/pytorch/python/utils/chat_template_constraints.py +164 -0
  208. package/src/pytorch/python/utils/prompt_builder.py +54 -0
  209. package/src/pytorch/python/utils/template_render.py +80 -0
  210. package/src/pytorch/python/utils/token_utils.py +376 -0
  211. package/src/pytorch/python/uv.lock +694 -0
  212. package/dist/mlx-ml/process/process-communication.d.ts +0 -45
  213. package/dist/mlx-ml/process/process-communication.d.ts.map +0 -1
  214. package/dist/mlx-ml/process/process-communication.js.map +0 -1
  215. package/dist/mlx-ml/process/queue.d.ts +0 -35
  216. package/dist/mlx-ml/process/queue.d.ts.map +0 -1
  217. package/dist/mlx-ml/process/queue.js.map +0 -1
  218. package/scripts/setup-mlx.js +0 -53
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/local-inference/protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/local-inference/protocol.ts"],"names":[],"mappings":""}
@@ -0,0 +1,54 @@
1
+ import { Readable } from 'stream';
2
+ import type { InferenceCapabilities, InferenceCapabilitiesRequest, InferenceFormatTestRequest, InferenceFormatTestResult, InferenceRenderRequest, InferenceRenderResult, InferenceTokenizeRequest, InferenceTokenizeResult, InferenceChatRequest, InferenceCompletionRequest, InferenceGenerateRequest, InferenceCachePrefillRequest, InferenceCachePrefillResult, InferenceMessage, InferenceRequest, InferenceSamplingOptions } from './protocol.js';
3
+ /** 旧プロトコル互換のストリーミングリクエスト形状。
4
+ * options は LIP ワイヤ形式(snake_case)または mapper 通過後の Record を受け付ける。
5
+ * 旧 LegacyMlxRequest の MlxMlModelOptions 専用型から意図的に拡張(挙動は mapper 経由で同等)。 */
6
+ export interface LegacyStreamingRequest {
7
+ messages: InferenceMessage[];
8
+ prompt?: string;
9
+ primer?: string;
10
+ options?: InferenceSamplingOptions | Record<string, unknown>;
11
+ }
12
+ export interface BaseQueueItem {
13
+ request: InferenceRequest | LegacyStreamingRequest;
14
+ expectJsonResponse?: boolean;
15
+ reject?: (reason: Error) => void;
16
+ }
17
+ export interface CapabilitiesQueueItem extends BaseQueueItem {
18
+ request: InferenceCapabilitiesRequest;
19
+ resolve: (value: InferenceCapabilities) => void;
20
+ reject: (reason: Error) => void;
21
+ expectJsonResponse: true;
22
+ }
23
+ export interface FormatTestQueueItem extends BaseQueueItem {
24
+ request: InferenceFormatTestRequest;
25
+ resolve: (value: InferenceFormatTestResult) => void;
26
+ reject: (reason: Error) => void;
27
+ expectJsonResponse: true;
28
+ }
29
+ export interface RenderQueueItem extends BaseQueueItem {
30
+ request: InferenceRenderRequest;
31
+ resolve: (value: InferenceRenderResult) => void;
32
+ reject: (reason: Error) => void;
33
+ expectJsonResponse: true;
34
+ }
35
+ export interface TokenizeQueueItem extends BaseQueueItem {
36
+ request: InferenceTokenizeRequest;
37
+ resolve: (value: InferenceTokenizeResult) => void;
38
+ reject: (reason: Error) => void;
39
+ expectJsonResponse: true;
40
+ }
41
+ export interface CachePrefillQueueItem extends BaseQueueItem {
42
+ request: InferenceCachePrefillRequest;
43
+ resolve: (value: InferenceCachePrefillResult) => void;
44
+ reject: (reason: Error) => void;
45
+ expectJsonResponse: true;
46
+ }
47
+ export interface StreamingQueueItem extends BaseQueueItem {
48
+ request: InferenceChatRequest | InferenceCompletionRequest | InferenceGenerateRequest | LegacyStreamingRequest;
49
+ resolve: (value: Readable) => void;
50
+ reject: (reason: Error) => void;
51
+ expectJsonResponse?: false;
52
+ }
53
+ export type QueueItem = CapabilitiesQueueItem | FormatTestQueueItem | RenderQueueItem | TokenizeQueueItem | CachePrefillQueueItem | StreamingQueueItem;
54
+ //# sourceMappingURL=queue-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-types.d.ts","sourceRoot":"","sources":["../../src/local-inference/queue-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,EACV,qBAAqB,EACrB,4BAA4B,EAC5B,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,4BAA4B,EAC5B,2BAA2B,EAC3B,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,eAAe,CAAC;AAEvB;;2EAE2E;AAC3E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,gBAAgB,GAAG,sBAAsB,CAAC;IACnD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,OAAO,EAAE,4BAA4B,CAAC;IACtC,OAAO,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAChD,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,kBAAkB,EAAE,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,OAAO,EAAE,0BAA0B,CAAC;IACpC,OAAO,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,CAAC;IACpD,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,kBAAkB,EAAE,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACpD,OAAO,EAAE,sBAAsB,CAAC;IAChC,OAAO,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAChD,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,kBAAkB,EAAE,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,OAAO,EAAE,wBAAwB,CAAC;IAClC,OAAO,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAClD,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,kBAAkB,EAAE,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,OAAO,EAAE,4BAA4B,CAAC;IACtC,OAAO,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,CAAC;IACtD,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,kBAAkB,EAAE,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,OAAO,EAAE,oBAAoB,GAAG,0BAA0B,GAAG,wBAAwB,GAAG,sBAAsB,CAAC;IAC/G,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,kBAAkB,CAAC,EAAE,KAAK,CAAC;CAC5B;AAED,MAAM,MAAM,SAAS,GACjB,qBAAqB,GACrB,mBAAmB,GACnB,eAAe,GACf,iBAAiB,GACjB,qBAAqB,GACrB,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=queue-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-types.js","sourceRoot":"","sources":["../../src/local-inference/queue-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * LIP JSON-RPC リクエストキュー
3
+ */
4
+ import { Readable } from 'stream';
5
+ import type { InferenceCapabilities, InferenceFormatTestResult, InferenceRenderResult, InferenceTokenizeResult, InferenceCachePrefillResult, InferenceMessage, InferenceToolDefinition, InferenceSamplingOptions } from './protocol.js';
6
+ export interface RequestQueueCallbacks {
7
+ sendToProcess: (data: string) => void;
8
+ createNewStream: () => Readable;
9
+ cancelActiveStream: () => void;
10
+ }
11
+ export type SamplingOptionsMapper = (options?: unknown) => InferenceSamplingOptions | Record<string, unknown> | undefined;
12
+ export declare class InferenceRequestQueue {
13
+ private queue;
14
+ private isProcessing;
15
+ private callbacks;
16
+ private mapSamplingOptions;
17
+ constructor(callbacks: RequestQueueCallbacks, mapSamplingOptions?: SamplingOptionsMapper);
18
+ addCapabilitiesRequest(): Promise<InferenceCapabilities>;
19
+ addFormatTestRequest(messages: InferenceMessage[], options?: {
20
+ primer?: string;
21
+ }): Promise<InferenceFormatTestResult>;
22
+ addRenderRequest(messages: InferenceMessage[], options?: InferenceSamplingOptions & {
23
+ primer?: string;
24
+ }, tools?: InferenceToolDefinition[], reasoningEffort?: 'low' | 'medium' | 'high'): Promise<InferenceRenderResult>;
25
+ addTokenizeRequest(messages: InferenceMessage[], tools?: InferenceToolDefinition[], reasoningEffort?: 'low' | 'medium' | 'high'): Promise<InferenceTokenizeResult>;
26
+ addCachePrefillRequest(cachePath: string, messages: InferenceMessage[], baseCachePath?: string, trimToTokens?: number, prefixOffsets?: number[], prefixHashes?: string[], tools?: InferenceToolDefinition[], reasoningEffort?: 'low' | 'medium' | 'high'): Promise<InferenceCachePrefillResult>;
27
+ addCompletionRequest(prompt: string, options?: unknown, images?: string[], maxImageSize?: number): Promise<Readable>;
28
+ addGenerateRequest(prompt: string | number[], options?: unknown, images?: string[], maxImageSize?: number, cachePath?: string, cacheTrimTokens?: number, primer?: string): Promise<Readable>;
29
+ processNext(): void;
30
+ handleJsonResponse(jsonData: string): void;
31
+ onRequestCompleted(): void;
32
+ cancelActiveRequest(): void;
33
+ get length(): number;
34
+ rejectAll(error: Error): void;
35
+ }
36
+ //# sourceMappingURL=request-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-queue.d.ts","sourceRoot":"","sources":["../../src/local-inference/request-queue.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,14 @@
1
1
  /**
2
- * MLX Driver キュー管理システム
3
- *
4
- * リクエストキューの管理とプロセッシングロジックを提供
2
+ * LIP JSON-RPC リクエストキュー
5
3
  */
6
- import { mapOptionsToPython } from './parameter-mapper.js';
7
- export class QueueManager {
4
+ export class InferenceRequestQueue {
8
5
  queue = [];
9
6
  isProcessing = false;
10
7
  callbacks;
11
- constructor(callbacks) {
8
+ mapSamplingOptions;
9
+ constructor(callbacks, mapSamplingOptions) {
12
10
  this.callbacks = callbacks;
11
+ this.mapSamplingOptions = mapSamplingOptions ?? ((options) => options);
13
12
  }
14
13
  addCapabilitiesRequest() {
15
14
  return new Promise((resolve, reject) => {
@@ -18,7 +17,7 @@ export class QueueManager {
18
17
  request,
19
18
  resolve,
20
19
  reject,
21
- expectJsonResponse: true
20
+ expectJsonResponse: true,
22
21
  });
23
22
  this.processNext();
24
23
  });
@@ -28,22 +27,29 @@ export class QueueManager {
28
27
  const request = {
29
28
  method: 'format_test',
30
29
  messages,
31
- options
30
+ options,
32
31
  };
33
32
  this.queue.push({
34
33
  request,
35
34
  resolve,
36
35
  reject,
37
- expectJsonResponse: true
36
+ expectJsonResponse: true,
38
37
  });
39
38
  this.processNext();
40
39
  });
41
40
  }
42
- addTokenizeRequest(messages, tools, reasoningEffort) {
41
+ addRenderRequest(messages, options, tools, reasoningEffort) {
43
42
  return new Promise((resolve, reject) => {
43
+ const mappedOptions = options
44
+ ? {
45
+ ...(this.mapSamplingOptions(options) ?? {}),
46
+ ...(options.primer ? { primer: options.primer } : {}),
47
+ }
48
+ : undefined;
44
49
  const request = {
45
- method: 'tokenize',
50
+ method: 'render',
46
51
  messages,
52
+ ...(mappedOptions && Object.keys(mappedOptions).length > 0 ? { options: mappedOptions } : {}),
47
53
  ...(tools && { tools }),
48
54
  ...(reasoningEffort && { reasoning_effort: reasoningEffort }),
49
55
  };
@@ -51,35 +57,26 @@ export class QueueManager {
51
57
  request,
52
58
  resolve,
53
59
  reject,
54
- expectJsonResponse: true
60
+ expectJsonResponse: true,
55
61
  });
56
62
  this.processNext();
57
63
  });
58
64
  }
59
- addChatRequest(messages, primer, options, tools, images, maxImageSize, reasoningEffort, cachePath, cacheTrimTokens) {
65
+ addTokenizeRequest(messages, tools, reasoningEffort) {
60
66
  return new Promise((resolve, reject) => {
61
- try {
62
- const request = {
63
- method: 'chat',
64
- messages,
65
- primer,
66
- tools,
67
- options: mapOptionsToPython(options, true),
68
- ...(images?.length ? { images, maxImageSize } : {}),
69
- ...(reasoningEffort ? { reasoning_effort: reasoningEffort } : {}),
70
- ...(cachePath ? { cache_path: cachePath } : {}),
71
- ...(cacheTrimTokens != null ? { cache_trim_tokens: cacheTrimTokens } : {}),
72
- };
73
- this.queue.push({
74
- request,
75
- resolve,
76
- reject,
77
- });
78
- this.processNext();
79
- }
80
- catch (error) {
81
- reject(error);
82
- }
67
+ const request = {
68
+ method: 'tokenize',
69
+ messages,
70
+ ...(tools && { tools }),
71
+ ...(reasoningEffort && { reasoning_effort: reasoningEffort }),
72
+ };
73
+ this.queue.push({
74
+ request,
75
+ resolve,
76
+ reject,
77
+ expectJsonResponse: true,
78
+ });
79
+ this.processNext();
83
80
  });
84
81
  }
85
82
  addCachePrefillRequest(cachePath, messages, baseCachePath, trimToTokens, prefixOffsets, prefixHashes, tools, reasoningEffort) {
@@ -109,7 +106,7 @@ export class QueueManager {
109
106
  const request = {
110
107
  method: 'completion',
111
108
  prompt,
112
- options: mapOptionsToPython(options, true),
109
+ options: this.mapSamplingOptions(options),
113
110
  ...(images?.length ? { images, maxImageSize } : {}),
114
111
  };
115
112
  this.queue.push({
@@ -124,20 +121,42 @@ export class QueueManager {
124
121
  }
125
122
  });
126
123
  }
124
+ addGenerateRequest(prompt, options, images, maxImageSize, cachePath, cacheTrimTokens, primer) {
125
+ return new Promise((resolve, reject) => {
126
+ try {
127
+ const request = {
128
+ method: 'generate',
129
+ prompt,
130
+ ...(primer ? { primer } : {}),
131
+ options: this.mapSamplingOptions(options),
132
+ ...(images?.length ? { images, maxImageSize } : {}),
133
+ ...(cachePath ? { cache_path: cachePath } : {}),
134
+ ...(cacheTrimTokens != null ? { cache_trim_tokens: cacheTrimTokens } : {}),
135
+ };
136
+ this.queue.push({
137
+ request,
138
+ resolve,
139
+ reject,
140
+ });
141
+ this.processNext();
142
+ }
143
+ catch (error) {
144
+ reject(error);
145
+ }
146
+ });
147
+ }
127
148
  processNext() {
128
149
  if (this.isProcessing || this.queue.length === 0) {
129
150
  return;
130
151
  }
131
152
  this.isProcessing = true;
132
- const queueItem = this.queue[0]; // まだshiftしない
153
+ const queueItem = this.queue[0];
133
154
  const { request, expectJsonResponse } = queueItem;
134
- // ストリーミングレスポンスの場合のみcurrentStreamを設定
135
155
  if (!expectJsonResponse) {
136
156
  const stream = this.callbacks.createNewStream();
137
157
  queueItem.resolve(stream);
138
- this.queue.shift(); // ここでshiftする
158
+ this.queue.shift();
139
159
  }
140
- // リクエストを送信
141
160
  const input = JSON.stringify(request);
142
161
  this.callbacks.sendToProcess(input + '\n');
143
162
  }
@@ -147,8 +166,6 @@ export class QueueManager {
147
166
  if (queueItem?.expectJsonResponse) {
148
167
  try {
149
168
  const jsonResponse = JSON.parse(jsonData);
150
- // format_test has its own error field in MlxFormatTestResult — resolve if well-formed,
151
- // but reject bare protocol errors (missing template_applied indicates server-side exception)
152
169
  if (queueItem.request.method === 'format_test') {
153
170
  if ('template_applied' in jsonResponse) {
154
171
  queueItem.resolve(jsonResponse);
@@ -158,7 +175,18 @@ export class QueueManager {
158
175
  formatted_prompt: null,
159
176
  template_applied: false,
160
177
  model_specific_processing: null,
161
- error: jsonResponse.error || 'Malformed format_test response'
178
+ error: jsonResponse.error || 'Malformed format_test response',
179
+ });
180
+ }
181
+ }
182
+ else if (queueItem.request.method === 'render') {
183
+ if ('formatted_prompt' in jsonResponse || jsonResponse.error) {
184
+ queueItem.resolve(jsonResponse);
185
+ }
186
+ else {
187
+ queueItem.resolve({
188
+ formatted_prompt: null,
189
+ error: jsonResponse.error || 'Malformed render response',
162
190
  });
163
191
  }
164
192
  }
@@ -170,7 +198,7 @@ export class QueueManager {
170
198
  queueItem.resolve({
171
199
  token_ids: null,
172
200
  token_count: 0,
173
- error: jsonResponse.error || 'Malformed tokenize response'
201
+ error: jsonResponse.error || 'Malformed tokenize response',
174
202
  });
175
203
  }
176
204
  }
@@ -189,7 +217,7 @@ export class QueueManager {
189
217
  queueItem.resolve({
190
218
  methods: [],
191
219
  special_tokens: {},
192
- features: { apply_chat_template: false }
220
+ features: { apply_chat_template: false },
193
221
  });
194
222
  }
195
223
  else if (queueItem.request.method === 'format_test') {
@@ -197,14 +225,20 @@ export class QueueManager {
197
225
  formatted_prompt: null,
198
226
  template_applied: false,
199
227
  model_specific_processing: null,
200
- error: e instanceof Error ? e.message : 'Unknown error'
228
+ error: e instanceof Error ? e.message : 'Unknown error',
229
+ });
230
+ }
231
+ else if (queueItem.request.method === 'render') {
232
+ queueItem.resolve({
233
+ formatted_prompt: null,
234
+ error: e instanceof Error ? e.message : 'Unknown error',
201
235
  });
202
236
  }
203
237
  else if (queueItem.request.method === 'tokenize') {
204
238
  queueItem.resolve({
205
239
  token_ids: null,
206
240
  token_count: 0,
207
- error: e instanceof Error ? e.message : 'Unknown error'
241
+ error: e instanceof Error ? e.message : 'Unknown error',
208
242
  });
209
243
  }
210
244
  else if (queueItem.request.method === 'cache_prefill') {
@@ -216,7 +250,7 @@ export class QueueManager {
216
250
  }
217
251
  onRequestCompleted() {
218
252
  this.isProcessing = false;
219
- this.processNext(); // 次のリクエストを処理
253
+ this.processNext();
220
254
  }
221
255
  cancelActiveRequest() {
222
256
  if (!this.isProcessing) {
@@ -227,9 +261,6 @@ export class QueueManager {
227
261
  get length() {
228
262
  return this.queue.length;
229
263
  }
230
- get isEmpty() {
231
- return this.queue.length === 0;
232
- }
233
264
  rejectAll(error) {
234
265
  const pending = this.queue.splice(0);
235
266
  for (const item of pending) {
@@ -237,9 +268,5 @@ export class QueueManager {
237
268
  }
238
269
  this.isProcessing = false;
239
270
  }
240
- clear() {
241
- this.queue = [];
242
- this.isProcessing = false;
243
- }
244
271
  }
245
- //# sourceMappingURL=queue.js.map
272
+ //# sourceMappingURL=request-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-queue.js","sourceRoot":"","sources":["../../src/local-inference/request-queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Readable } from 'stream';
2
+ export interface StreamMeta {
3
+ prompt_tokens?: number;
4
+ generation_tokens?: number;
5
+ }
6
+ export declare const META_MARKER = "\u001E__META__:";
7
+ export declare function extractStreamMeta(content: string): {
8
+ content: string;
9
+ meta: StreamMeta;
10
+ };
11
+ export declare function createStreamIterable(stream: Readable, isAborted?: () => boolean): {
12
+ iterable: AsyncIterable<string>;
13
+ completion: Promise<{
14
+ content: string;
15
+ meta: StreamMeta;
16
+ error: Error | null;
17
+ }>;
18
+ };
19
+ //# sourceMappingURL=stream-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-utils.d.ts","sourceRoot":"","sources":["../../src/local-inference/stream-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,MAAM,WAAW,UAAU;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,WAAW,oBAAkB,CAAC;AAE3C,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CASxF;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,QAAQ,EAChB,SAAS,CAAC,EAAE,MAAM,OAAO,GACxB;IACD,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CACjF,CA0DA"}
@@ -0,0 +1,76 @@
1
+ export const META_MARKER = '\x1e__META__:';
2
+ export function extractStreamMeta(content) {
3
+ const idx = content.lastIndexOf(META_MARKER);
4
+ if (idx === -1)
5
+ return { content, meta: {} };
6
+ const jsonStr = content.slice(idx + META_MARKER.length);
7
+ try {
8
+ return { content: content.slice(0, idx), meta: JSON.parse(jsonStr) };
9
+ }
10
+ catch {
11
+ return { content: content.slice(0, idx), meta: {} };
12
+ }
13
+ }
14
+ export function createStreamIterable(stream, isAborted) {
15
+ const chunks = [];
16
+ let resolveCompletion;
17
+ let settled = false;
18
+ const settle = (error) => {
19
+ if (settled)
20
+ return;
21
+ settled = true;
22
+ const raw = chunks.join('');
23
+ const { content, meta } = extractStreamMeta(raw);
24
+ const aborted = isAborted?.() ?? false;
25
+ resolveCompletion({ content, meta, error: aborted ? null : error });
26
+ };
27
+ const completion = new Promise((resolve) => {
28
+ resolveCompletion = resolve;
29
+ });
30
+ const iterable = {
31
+ async *[Symbol.asyncIterator]() {
32
+ try {
33
+ let buffer = '';
34
+ let markerFound = false;
35
+ for await (const chunk of stream) {
36
+ if (isAborted?.()) {
37
+ break;
38
+ }
39
+ const str = chunk.toString();
40
+ chunks.push(str);
41
+ if (markerFound)
42
+ continue;
43
+ buffer += str;
44
+ const markerIdx = buffer.indexOf(META_MARKER);
45
+ if (markerIdx !== -1) {
46
+ const text = buffer.slice(0, markerIdx);
47
+ if (text)
48
+ yield text;
49
+ markerFound = true;
50
+ }
51
+ else {
52
+ const safeLen = buffer.length - (META_MARKER.length - 1);
53
+ if (safeLen > 0) {
54
+ yield buffer.slice(0, safeLen);
55
+ buffer = buffer.slice(safeLen);
56
+ }
57
+ }
58
+ }
59
+ if (!markerFound && buffer)
60
+ yield buffer;
61
+ }
62
+ catch (error) {
63
+ settle(error);
64
+ const aborted = isAborted?.() ?? false;
65
+ if (!aborted) {
66
+ throw error;
67
+ }
68
+ }
69
+ finally {
70
+ settle(null);
71
+ }
72
+ },
73
+ };
74
+ return { iterable, completion };
75
+ }
76
+ //# sourceMappingURL=stream-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-utils.js","sourceRoot":"","sources":["../../src/local-inference/stream-utils.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mlx-cache-controller.d.ts","sourceRoot":"","sources":["../../src/mlx-ml/mlx-cache-controller.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAsBrD,MAAM,WAAW,yBAAyB;IACxC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAWD,qBAAa,kBAAmB,YAAW,qBAAqB;IAC9D,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,gBAAgB,CAA2C;IACnE,OAAO,CAAC,OAAO,CAAC,CAAa;IAC7B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,cAAc,CAAC,CAAa;IACpC,OAAO,CAAC,gBAAgB,CAAC,CAA2C;IACpE,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,UAAU,CAAC,CAAc;IACjC,OAAO,CAAC,iBAAiB,CAAC,CAAW;IACrC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,8BAA8B,CAAC,CAAS;IAChD,OAAO,CAAC,mBAAmB,CAAC,CAAS;IACrC,OAAO,CAAC,yBAAyB,CAAC,CAAS;IAC3C,OAAO,CAAC,UAAU,CAA2C;IAC7D,OAAO,CAAC,KAAK,CAOX;gBAEU,OAAO,CAAC,EAAE,yBAAyB;IAWzC,IAAI,CACR,OAAO,EAAE,UAAU,EACnB,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,GAC1D,OAAO,CAAC,IAAI,CAAC;YAsBF,cAAc;IAM5B,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,CAAC,kBAAkB;YAUZ,SAAS;YAkBT,SAAS;IAevB,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,sBAAsB;YAMhB,iBAAiB;YAmFjB,YAAY;IAgI1B,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,iBAAiB;IAIzB,WAAW,IAAI,IAAI;IAInB,kBAAkB,CAAC,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAK1E,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI9C,QAAQ;;;;;;;;IAWF,OAAO,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAsC/D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAElC;YAEY,WAAW;IAoJzB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAmBpB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CA6B7B"}
1
+ {"version":3,"file":"mlx-cache-controller.d.ts","sourceRoot":"","sources":["../../src/mlx-ml/mlx-cache-controller.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,oBAAoB,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAuBrD,MAAM,WAAW,yBAAyB;IACxC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAWD,qBAAa,kBAAmB,YAAW,qBAAqB;IAC9D,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,gBAAgB,CAA2C;IACnE,OAAO,CAAC,OAAO,CAAC,CAAa;IAC7B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,cAAc,CAAC,CAAa;IACpC,OAAO,CAAC,gBAAgB,CAAC,CAA2C;IACpE,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,UAAU,CAAC,CAAc;IACjC,OAAO,CAAC,iBAAiB,CAAC,CAAW;IACrC,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,8BAA8B,CAAC,CAAS;IAChD,OAAO,CAAC,mBAAmB,CAAC,CAAS;IACrC,OAAO,CAAC,yBAAyB,CAAC,CAAS;IAC3C,OAAO,CAAC,UAAU,CAA2C;IAC7D,OAAO,CAAC,KAAK,CAOX;gBAEU,OAAO,CAAC,EAAE,yBAAyB;IAWzC,IAAI,CACR,OAAO,EAAE,UAAU,EACnB,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,GAC1D,OAAO,CAAC,IAAI,CAAC;YAsBF,cAAc;IAM5B,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,CAAC,kBAAkB;YAUZ,SAAS;YAkBT,SAAS;IAevB,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,sBAAsB;YAMhB,iBAAiB;YAmFjB,YAAY;IAgI1B,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,iBAAiB;IAIzB,WAAW,IAAI,IAAI;IAInB,kBAAkB,CAAC,eAAe,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAK1E,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI9C,QAAQ;;;;;;;;IAWF,OAAO,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;IAsC/D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAElC;YAEY,WAAW;IAoJzB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAmBpB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CA6B7B"}
@@ -8,6 +8,7 @@ import { formatPromptAsMessages } from '../formatter/converter.js';
8
8
  import { convertMessages, convertToolDefinitions } from './mlx-message-utils.js';
9
9
  import { Logger } from '@modular-prompt/utils';
10
10
  const logger = new Logger({ prefix: 'MLX', context: 'cache' });
11
+ const CACHE_FILE_EXTENSION = '.safetensors.zip';
11
12
  export class MlxCacheController {
12
13
  cacheByHash = new Map();
13
14
  inflightRequests = new Map();
@@ -397,7 +398,7 @@ export class MlxCacheController {
397
398
  return createHash('sha256').update(JSON.stringify(payload)).digest('hex');
398
399
  }
399
400
  generateCachePath(cacheKey) {
400
- return join(this.cacheDir, `${cacheKey}.safetensors`);
401
+ return join(this.cacheDir, `${cacheKey}${CACHE_FILE_EXTENSION}`);
401
402
  }
402
403
  recordQuery() {
403
404
  this.stats.totalQueries++;