@modular-prompt/driver 0.13.5 → 0.15.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 (213) hide show
  1. package/README.md +117 -4
  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 +16 -0
  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 +21 -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 +8 -2
  21. package/dist/driver-registry/types.d.ts.map +1 -1
  22. package/dist/index.d.ts +11 -2
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +11 -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 +40 -47
  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} +89 -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-support.d.ts +23 -0
  71. package/dist/mlx-ml/mlx-cache-support.d.ts.map +1 -0
  72. package/dist/mlx-ml/mlx-cache-support.js +45 -0
  73. package/dist/mlx-ml/mlx-cache-support.js.map +1 -0
  74. package/dist/mlx-ml/mlx-driver.d.ts +20 -59
  75. package/dist/mlx-ml/mlx-driver.d.ts.map +1 -1
  76. package/dist/mlx-ml/mlx-driver.js +86 -415
  77. package/dist/mlx-ml/mlx-driver.js.map +1 -1
  78. package/dist/mlx-ml/mlx-local-inference-adapters.d.ts +3 -0
  79. package/dist/mlx-ml/mlx-local-inference-adapters.d.ts.map +1 -0
  80. package/dist/mlx-ml/mlx-local-inference-adapters.js +19 -0
  81. package/dist/mlx-ml/mlx-local-inference-adapters.js.map +1 -0
  82. package/dist/mlx-ml/mlx-options.d.ts +19 -0
  83. package/dist/mlx-ml/mlx-options.d.ts.map +1 -0
  84. package/dist/mlx-ml/mlx-options.js +30 -0
  85. package/dist/mlx-ml/mlx-options.js.map +1 -0
  86. package/dist/mlx-ml/process/index.d.ts +11 -8
  87. package/dist/mlx-ml/process/index.d.ts.map +1 -1
  88. package/dist/mlx-ml/process/index.js +75 -52
  89. package/dist/mlx-ml/process/index.js.map +1 -1
  90. package/dist/mlx-ml/process/model-specific.d.ts +2 -1
  91. package/dist/mlx-ml/process/model-specific.d.ts.map +1 -1
  92. package/dist/mlx-ml/process/model-specific.js.map +1 -1
  93. package/dist/mlx-ml/process/prompt-builder.d.ts +11 -0
  94. package/dist/mlx-ml/process/prompt-builder.d.ts.map +1 -0
  95. package/dist/mlx-ml/process/prompt-builder.js +51 -0
  96. package/dist/mlx-ml/process/prompt-builder.js.map +1 -0
  97. package/dist/mlx-ml/process/types.d.ts +15 -183
  98. package/dist/mlx-ml/process/types.d.ts.map +1 -1
  99. package/dist/mlx-ml/tool-call-parser/tool-formatter.js +2 -2
  100. package/dist/mlx-ml/tool-call-parser/tool-formatter.js.map +1 -1
  101. package/dist/mlx-ml/types.d.ts +2 -45
  102. package/dist/mlx-ml/types.d.ts.map +1 -1
  103. package/dist/models-config/index.d.ts +8 -0
  104. package/dist/models-config/index.d.ts.map +1 -0
  105. package/dist/models-config/index.js +7 -0
  106. package/dist/models-config/index.js.map +1 -0
  107. package/dist/models-config/loader.d.ts +20 -0
  108. package/dist/models-config/loader.d.ts.map +1 -0
  109. package/dist/models-config/loader.js +85 -0
  110. package/dist/models-config/loader.js.map +1 -0
  111. package/dist/models-config/paths.d.ts +7 -0
  112. package/dist/models-config/paths.d.ts.map +1 -0
  113. package/dist/models-config/paths.js +11 -0
  114. package/dist/models-config/paths.js.map +1 -0
  115. package/dist/models-config/resolve.d.ts +57 -0
  116. package/dist/models-config/resolve.d.ts.map +1 -0
  117. package/dist/models-config/resolve.js +187 -0
  118. package/dist/models-config/resolve.js.map +1 -0
  119. package/dist/models-config/types.d.ts +60 -0
  120. package/dist/models-config/types.d.ts.map +1 -0
  121. package/dist/models-config/types.js +5 -0
  122. package/dist/models-config/types.js.map +1 -0
  123. package/dist/pytorch/process/index.d.ts +35 -0
  124. package/dist/pytorch/process/index.d.ts.map +1 -0
  125. package/dist/pytorch/process/index.js +69 -0
  126. package/dist/pytorch/process/index.js.map +1 -0
  127. package/dist/pytorch/pytorch-driver.d.ts +35 -0
  128. package/dist/pytorch/pytorch-driver.d.ts.map +1 -0
  129. package/dist/pytorch/pytorch-driver.js +48 -0
  130. package/dist/pytorch/pytorch-driver.js.map +1 -0
  131. package/dist/pytorch/pytorch-local-inference-adapters.d.ts +3 -0
  132. package/dist/pytorch/pytorch-local-inference-adapters.d.ts.map +1 -0
  133. package/dist/pytorch/pytorch-local-inference-adapters.js +19 -0
  134. package/dist/pytorch/pytorch-local-inference-adapters.js.map +1 -0
  135. package/dist/pytorch/pytorch-options.d.ts +8 -0
  136. package/dist/pytorch/pytorch-options.d.ts.map +1 -0
  137. package/dist/pytorch/pytorch-options.js +21 -0
  138. package/dist/pytorch/pytorch-options.js.map +1 -0
  139. package/dist/query-logger.js +1 -1
  140. package/dist/query-logger.js.map +1 -1
  141. package/dist/query-utils.d.ts +29 -0
  142. package/dist/query-utils.d.ts.map +1 -0
  143. package/dist/query-utils.js +61 -0
  144. package/dist/query-utils.js.map +1 -0
  145. package/dist/runtime/check.d.ts +10 -0
  146. package/dist/runtime/check.d.ts.map +1 -0
  147. package/dist/runtime/check.js +24 -0
  148. package/dist/runtime/check.js.map +1 -0
  149. package/dist/runtime/index.d.ts +4 -0
  150. package/dist/runtime/index.d.ts.map +1 -0
  151. package/dist/runtime/index.js +4 -0
  152. package/dist/runtime/index.js.map +1 -0
  153. package/dist/runtime/manifest-core.d.mts +27 -0
  154. package/dist/runtime/manifest-core.d.mts.map +1 -0
  155. package/dist/runtime/manifest-core.mjs +68 -0
  156. package/dist/runtime/manifest-core.mjs.map +1 -0
  157. package/dist/runtime/manifest.d.ts +18 -0
  158. package/dist/runtime/manifest.d.ts.map +1 -0
  159. package/dist/runtime/manifest.js +9 -0
  160. package/dist/runtime/manifest.js.map +1 -0
  161. package/dist/runtime/paths-core.d.mts +17 -0
  162. package/dist/runtime/paths-core.d.mts.map +1 -0
  163. package/dist/runtime/paths-core.mjs +67 -0
  164. package/dist/runtime/paths-core.mjs.map +1 -0
  165. package/dist/runtime/paths.d.ts +12 -0
  166. package/dist/runtime/paths.d.ts.map +1 -0
  167. package/dist/runtime/paths.js +17 -0
  168. package/dist/runtime/paths.js.map +1 -0
  169. package/dist/types.d.ts +20 -1
  170. package/dist/types.d.ts.map +1 -1
  171. package/dist/types.js.map +1 -1
  172. package/package.json +8 -5
  173. package/scripts/download-model.js +25 -9
  174. package/scripts/runtime-cli.js +315 -0
  175. package/skills/driver-usage/SKILL.md +56 -1
  176. package/src/mlx-ml/python/__main__.py +43 -4
  177. package/src/mlx-ml/python/handlers/__init__.py +2 -1
  178. package/src/mlx-ml/python/handlers/cancel.py +53 -0
  179. package/src/mlx-ml/python/handlers/completion.py +3 -24
  180. package/src/mlx-ml/python/handlers/{chat.py → generate.py} +36 -106
  181. package/src/mlx-ml/python/handlers/render.py +40 -0
  182. package/src/mlx-ml/python/pyproject.toml +3 -2
  183. package/src/mlx-ml/python/server.py +35 -8
  184. package/src/mlx-ml/python/utils/template_render.py +80 -0
  185. package/src/mlx-ml/python/utils/token_utils.py +2 -2
  186. package/src/mlx-ml/python/uv.lock +549 -454
  187. package/src/pytorch/python/__main__.py +19 -0
  188. package/src/pytorch/python/backends/__init__.py +3 -0
  189. package/src/pytorch/python/backends/base.py +84 -0
  190. package/src/pytorch/python/backends/transformers_lm.py +127 -0
  191. package/src/pytorch/python/handlers/__init__.py +6 -0
  192. package/src/pytorch/python/handlers/cancel.py +53 -0
  193. package/src/pytorch/python/handlers/capabilities.py +6 -0
  194. package/src/pytorch/python/handlers/completion.py +15 -0
  195. package/src/pytorch/python/handlers/format_test.py +70 -0
  196. package/src/pytorch/python/handlers/generate.py +68 -0
  197. package/src/pytorch/python/handlers/render.py +40 -0
  198. package/src/pytorch/python/handlers/tokenize.py +63 -0
  199. package/src/pytorch/python/pyproject.toml +36 -0
  200. package/src/pytorch/python/server.py +140 -0
  201. package/src/pytorch/python/utils/__init__.py +0 -0
  202. package/src/pytorch/python/utils/chat_template_constraints.py +164 -0
  203. package/src/pytorch/python/utils/prompt_builder.py +54 -0
  204. package/src/pytorch/python/utils/template_render.py +80 -0
  205. package/src/pytorch/python/utils/token_utils.py +376 -0
  206. package/src/pytorch/python/uv.lock +694 -0
  207. package/dist/mlx-ml/process/process-communication.d.ts +0 -37
  208. package/dist/mlx-ml/process/process-communication.d.ts.map +0 -1
  209. package/dist/mlx-ml/process/process-communication.js.map +0 -1
  210. package/dist/mlx-ml/process/queue.d.ts +0 -33
  211. package/dist/mlx-ml/process/queue.d.ts.map +0 -1
  212. package/dist/mlx-ml/process/queue.js.map +0 -1
  213. package/scripts/setup-mlx.js +0 -53
@@ -0,0 +1,187 @@
1
+ /**
2
+ * models.yaml のマージ・解決
3
+ */
4
+ import { loadModelsConfigFile } from './loader.js';
5
+ import { getUserModelsConfigPath } from './paths.js';
6
+ function shallowMergeRecords(base, overlay) {
7
+ if (!base && !overlay) {
8
+ return undefined;
9
+ }
10
+ return { ...(base ?? {}), ...(overlay ?? {}) };
11
+ }
12
+ function mergeModelsSection(base, overlay, mode) {
13
+ if (!base && !overlay) {
14
+ return undefined;
15
+ }
16
+ if (mode === 'override' && overlay) {
17
+ return { ...overlay };
18
+ }
19
+ return { ...(base ?? {}), ...(overlay ?? {}) };
20
+ }
21
+ /**
22
+ * 2 つの ModelsConfig を shallow merge する(overlay 優先)
23
+ */
24
+ export function mergeModelsConfig(base, overlay, mode = 'merge') {
25
+ const merged = {};
26
+ merged.drivers = shallowMergeRecords(base?.drivers, overlay?.drivers);
27
+ merged.defaultOptions = shallowMergeRecords(base?.defaultOptions, overlay?.defaultOptions);
28
+ const baseModels = base?.models;
29
+ const overlayModels = overlay?.models;
30
+ merged.models = mergeModelsSection(baseModels, overlayModels, mode);
31
+ return merged;
32
+ }
33
+ /**
34
+ * ユーザーレベルの models.yaml を読み込む(存在しない場合は空)
35
+ */
36
+ export function loadUserModelsConfig() {
37
+ return loadModelsConfigFile(getUserModelsConfigPath()) ?? {};
38
+ }
39
+ /**
40
+ * base / user / overlay を解決する
41
+ *
42
+ * マージ優先(下ほど高): base → user(source=merge のとき)→ overlay
43
+ */
44
+ export function resolveModelsConfig(options) {
45
+ if (!options) {
46
+ return loadUserModelsConfig();
47
+ }
48
+ const source = options.source ?? 'merge';
49
+ const mode = options.mode ?? 'merge';
50
+ let config = options.base ? { ...options.base } : {};
51
+ if (source === 'merge') {
52
+ config = mergeModelsConfig(config, loadUserModelsConfig(), mode);
53
+ }
54
+ if (options.overlay) {
55
+ config = mergeModelsConfig(config, options.overlay, mode);
56
+ }
57
+ return config;
58
+ }
59
+ /**
60
+ * ModelsConfig を ApplicationConfig に変換する
61
+ */
62
+ export function toApplicationConfig(config) {
63
+ const models = config.models
64
+ ? Object.values(config.models).map(entryToModelSpec)
65
+ : undefined;
66
+ return {
67
+ models,
68
+ drivers: config.drivers,
69
+ defaultOptions: config.defaultOptions,
70
+ };
71
+ }
72
+ /**
73
+ * ModelSpecEntry を ModelSpec に変換(runtime は metadata に保持)
74
+ */
75
+ export function entryToModelSpec(entry) {
76
+ const metadata = { ...(entry.metadata ?? {}) };
77
+ if (entry.runtime) {
78
+ metadata.runtime = entry.runtime;
79
+ }
80
+ return {
81
+ model: entry.model,
82
+ provider: entry.provider,
83
+ capabilities: entry.capabilities ?? [],
84
+ maxInputTokens: entry.maxInputTokens,
85
+ maxOutputTokens: entry.maxOutputTokens,
86
+ maxTotalTokens: entry.maxTotalTokens,
87
+ tokensPerMinute: entry.tokensPerMinute,
88
+ requestsPerMinute: entry.requestsPerMinute,
89
+ cost: entry.cost,
90
+ priority: entry.priority,
91
+ disabled: entry.disabled,
92
+ defaultOptions: entry.defaultOptions,
93
+ driverOptions: entry.driverOptions,
94
+ metadata: Object.keys(metadata).length > 0 ? metadata : undefined,
95
+ };
96
+ }
97
+ /**
98
+ * alias から ModelSpec を解決する
99
+ */
100
+ export function resolveModelAlias(alias, config) {
101
+ const entry = config.models?.[alias];
102
+ if (!entry) {
103
+ return null;
104
+ }
105
+ return entryToModelSpec(entry);
106
+ }
107
+ /**
108
+ * モデル名を alias または生の model 名として解決する
109
+ */
110
+ export function resolveModelName(name, config, inferProvider) {
111
+ const byAlias = resolveModelAlias(name, config);
112
+ if (byAlias) {
113
+ return byAlias;
114
+ }
115
+ return {
116
+ model: name,
117
+ provider: inferProvider(name),
118
+ capabilities: [],
119
+ };
120
+ }
121
+ /**
122
+ * merged models からデフォルト ModelSpec を導出する
123
+ *
124
+ * 1. alias `default` があればそれを使用
125
+ * 2. なければ models の先頭エントリ(best-effort)
126
+ */
127
+ export function resolveDefaultModelFromConfig(config) {
128
+ if (config.models?.default) {
129
+ return entryToModelSpec(config.models.default);
130
+ }
131
+ const entries = Object.entries(config.models ?? {});
132
+ if (entries.length === 0) {
133
+ return null;
134
+ }
135
+ const [, first] = entries[0];
136
+ return entryToModelSpec(first);
137
+ }
138
+ /**
139
+ * ModelReferenceInput を ModelSpec に解決する
140
+ */
141
+ export function resolveModelReference(ref, config) {
142
+ if (ref.ref) {
143
+ const spec = resolveModelAlias(ref.ref, config);
144
+ if (!spec) {
145
+ return null;
146
+ }
147
+ if (ref.provider) {
148
+ spec.provider = ref.provider;
149
+ }
150
+ if (ref.model) {
151
+ spec.model = ref.model;
152
+ }
153
+ return spec;
154
+ }
155
+ if (ref.provider && ref.model) {
156
+ return {
157
+ model: ref.model,
158
+ provider: ref.provider,
159
+ capabilities: [],
160
+ };
161
+ }
162
+ return null;
163
+ }
164
+ /**
165
+ * inline 設定(experiment YAML 等)を resolved config にマージして ApplicationConfig を構築
166
+ */
167
+ export function buildApplicationConfig(resolved, inline, inlineMode) {
168
+ const merged = inline
169
+ ? mergeModelsConfig(resolved, inline, inlineMode ?? 'merge')
170
+ : resolved;
171
+ return toApplicationConfig(merged);
172
+ }
173
+ /**
174
+ * ModelsConfig の全モデルを DriverRegistry に登録する
175
+ */
176
+ export function registerModelsFromConfig(registry, config) {
177
+ if (!config.models) {
178
+ return;
179
+ }
180
+ for (const entry of Object.values(config.models)) {
181
+ if (entry.disabled) {
182
+ continue;
183
+ }
184
+ registry.registerModel(entryToModelSpec(entry));
185
+ }
186
+ }
187
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/models-config/resolve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * ~/.modular-prompt/models.yaml スキーマ型
3
+ */
4
+ import type { ApplicationConfig } from '../driver-registry/config-based-factory.js';
5
+ import type { DriverCapability, DriverProvider, ModelSpec } from '../driver-registry/types.js';
6
+ /** models セクションのマージモード */
7
+ export type ModelsMergeMode = 'merge' | 'override';
8
+ /**
9
+ * user models.yaml の読み込み方
10
+ * - merge: user yaml を読み込み base / overlay とマージ(デフォルト)
11
+ * - overlay: user yaml を無視し base / overlay のみ使用
12
+ */
13
+ export type ModelsConfigSource = 'merge' | 'overlay';
14
+ /** 利用側が明示投入する overlay とマージモード */
15
+ export interface ModelsConfigOptions {
16
+ /**
17
+ * user yaml の読み込み方(デフォルト: merge)
18
+ * overlay を指定したとき、user 全域 config を無視する場合は overlay を使う
19
+ */
20
+ source?: ModelsConfigSource;
21
+ /** アプリ同梱など、user より下のレイヤー */
22
+ base?: ModelsConfig;
23
+ /** 利用側 overlay(profile.modelsConfig 等) */
24
+ overlay?: ModelsConfig;
25
+ /** models セクションのマージモード(デフォルト: merge) */
26
+ mode?: ModelsMergeMode;
27
+ }
28
+ /** YAML 上のモデルエントリ(alias は親 Record のキー) */
29
+ export interface ModelSpecEntry {
30
+ model: string;
31
+ provider: DriverProvider | string;
32
+ capabilities?: DriverCapability[];
33
+ runtime?: string;
34
+ maxInputTokens?: number;
35
+ maxOutputTokens?: number;
36
+ maxTotalTokens?: number;
37
+ tokensPerMinute?: number;
38
+ requestsPerMinute?: number;
39
+ cost?: ModelSpec['cost'];
40
+ priority?: number;
41
+ disabled?: boolean;
42
+ defaultOptions?: ModelSpec['defaultOptions'];
43
+ driverOptions?: ModelSpec['driverOptions'];
44
+ metadata?: Record<string, unknown>;
45
+ }
46
+ /** models.yaml のルート構造 */
47
+ export interface ModelsConfig {
48
+ /** alias → ModelSpec エントリ */
49
+ models?: Record<string, ModelSpecEntry>;
50
+ drivers?: ApplicationConfig['drivers'];
51
+ defaultOptions?: ApplicationConfig['defaultOptions'];
52
+ }
53
+ /** workflow / inline からのモデル参照 */
54
+ export interface ModelReferenceInput {
55
+ /** models.yaml の alias */
56
+ ref?: string;
57
+ provider?: string;
58
+ model?: string;
59
+ }
60
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * ~/.modular-prompt/models.yaml スキーマ型
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/models-config/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * PyTorch Driver 外部インターフェース
3
+ */
4
+ import { Readable } from 'stream';
5
+ import type { InferenceCapabilities, InferenceFormatTestResult, InferenceMessage, InferenceRenderResult, InferenceTokenizeResult, InferenceToolDefinition } from '../../local-inference/protocol.js';
6
+ export interface PyTorchProcessOptions {
7
+ /** デフォルトの ~/.modular-prompt/runtimes/pytorch/.venv を上書き */
8
+ venvPath?: string;
9
+ /** Python 子プロセスへ渡す PYTORCH_DEVICE(例: cpu, cuda) */
10
+ device?: string;
11
+ }
12
+ export declare class PyTorchProcess {
13
+ readonly modelName: string;
14
+ private readonly client;
15
+ constructor(modelName: string, options?: PyTorchProcessOptions);
16
+ ensureInitialized(): Promise<void>;
17
+ getCapabilities(): Promise<InferenceCapabilities>;
18
+ formatTest(messages: InferenceMessage[], options?: {
19
+ primer?: string;
20
+ }): Promise<InferenceFormatTestResult>;
21
+ render(messages: InferenceMessage[], options?: Record<string, unknown> & {
22
+ primer?: string;
23
+ }, tools?: InferenceToolDefinition[], reasoningEffort?: 'low' | 'medium' | 'high'): Promise<InferenceRenderResult>;
24
+ tokenize(messages: InferenceMessage[], tools?: InferenceToolDefinition[], reasoningEffort?: 'low' | 'medium' | 'high'): Promise<InferenceTokenizeResult>;
25
+ generate(prompt: string | number[], options?: Record<string, unknown>, images?: string[], maxImageSize?: number): Promise<Readable>;
26
+ exit(): Promise<void>;
27
+ cancelActiveRequest(): void;
28
+ getStatus(): {
29
+ modelName: string;
30
+ queueLength: number;
31
+ isStreamingActive: boolean;
32
+ isJsonBuffering: boolean;
33
+ };
34
+ }
35
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * PyTorch Driver 外部インターフェース
3
+ */
4
+ import { existsSync } from 'fs';
5
+ import { getPytorchPythonDir, getVenvPath, resolvePackageRootFromProcessModule, } from '../../runtime/index.js';
6
+ import { InferenceProcessClient } from '../../local-inference/process-client.js';
7
+ import { mapOptionsToPython } from '../../mlx-ml/process/parameter-mapper.js';
8
+ const packageRoot = resolvePackageRootFromProcessModule(import.meta.url);
9
+ const pytorchPythonDir = getPytorchPythonDir(packageRoot);
10
+ function resolveVenvPath(options) {
11
+ return (options?.venvPath ??
12
+ process.env.MODULAR_PROMPT_PYTORCH_VENV ??
13
+ getVenvPath('pytorch'));
14
+ }
15
+ function usesDefaultRuntimeVenv(venvPath) {
16
+ return venvPath === getVenvPath('pytorch');
17
+ }
18
+ export class PyTorchProcess {
19
+ modelName;
20
+ client;
21
+ constructor(modelName, options) {
22
+ this.modelName = modelName;
23
+ const venvPath = resolveVenvPath(options);
24
+ if (!existsSync(venvPath)) {
25
+ throw new Error(`PyTorch venv not found at ${venvPath}. ` +
26
+ 'Run: pnpm run setup-pytorch -w @modular-prompt/driver');
27
+ }
28
+ const device = options?.device ?? process.env.PYTORCH_DEVICE;
29
+ const extraEnv = device ? { PYTORCH_DEVICE: device } : undefined;
30
+ this.client = new InferenceProcessClient({
31
+ modelName,
32
+ pythonProjectDir: pytorchPythonDir,
33
+ venvPath,
34
+ runtimeProfile: usesDefaultRuntimeVenv(venvPath) ? 'pytorch' : undefined,
35
+ extraEnv,
36
+ loggerPrefix: 'PyTorch',
37
+ mapSamplingOptions: (opts) => mapOptionsToPython(opts, false),
38
+ processExitErrorMessage: (code, signal) => `PyTorch process exited unexpectedly (code=${code}, signal=${signal})`,
39
+ });
40
+ }
41
+ async ensureInitialized() {
42
+ return this.client.ensureInitialized();
43
+ }
44
+ async getCapabilities() {
45
+ return this.client.getCapabilities();
46
+ }
47
+ async formatTest(messages, options) {
48
+ return this.client.formatTest(messages, options);
49
+ }
50
+ async render(messages, options, tools, reasoningEffort) {
51
+ return this.client.render(messages, options, tools, reasoningEffort);
52
+ }
53
+ async tokenize(messages, tools, reasoningEffort) {
54
+ return this.client.tokenize(messages, tools, reasoningEffort);
55
+ }
56
+ async generate(prompt, options, images, maxImageSize) {
57
+ return this.client.generate(prompt, options, images, maxImageSize);
58
+ }
59
+ async exit() {
60
+ return this.client.exit();
61
+ }
62
+ cancelActiveRequest() {
63
+ this.client.cancelActiveRequest();
64
+ }
65
+ getStatus() {
66
+ return this.client.getStatus();
67
+ }
68
+ }
69
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pytorch/process/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { LocalInferenceDriver } from '../local-inference/driver.js';
2
+ import type { InferenceCapabilities } from '../local-inference/protocol.js';
3
+ import type { FormatterOptions } from '../formatter/types.js';
4
+ import type { PyTorchQueryOptions } from './pytorch-options.js';
5
+ export interface PyTorchModelCapabilities {
6
+ methods: InferenceCapabilities['methods'];
7
+ specialTokens: InferenceCapabilities['special_tokens'];
8
+ features: {
9
+ hasChatTemplate: boolean;
10
+ vocabSize?: number;
11
+ modelMaxLength?: number;
12
+ chatTemplate?: InferenceCapabilities['features']['chat_template'];
13
+ };
14
+ chatRestrictions?: InferenceCapabilities['chat_restrictions'];
15
+ }
16
+ export interface PyTorchDriverConfig {
17
+ model: string;
18
+ defaultOptions?: Partial<PyTorchQueryOptions>;
19
+ formatterOptions?: FormatterOptions;
20
+ /** 外部 venv パス(未指定時は ~/.modular-prompt/runtimes/pytorch/.venv) */
21
+ venvPath?: string;
22
+ /** PYTORCH_DEVICE(例: cpu, cuda)。未指定時は Python 側で cpu */
23
+ device?: string;
24
+ }
25
+ /**
26
+ * Transformers + PyTorch バックエンド(LIP)。
27
+ * 共通ロジックは LocalInferenceDriver に委譲する。
28
+ */
29
+ export declare class PyTorchDriver extends LocalInferenceDriver {
30
+ constructor(config: PyTorchDriverConfig);
31
+ get defaultOptions(): Partial<PyTorchQueryOptions>;
32
+ set defaultOptions(value: Partial<PyTorchQueryOptions>);
33
+ getCapabilities(): Promise<PyTorchModelCapabilities>;
34
+ }
35
+ //# sourceMappingURL=pytorch-driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pytorch-driver.d.ts","sourceRoot":"","sources":["../../src/pytorch/pytorch-driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAIhE,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC1C,aAAa,EAAE,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IACvD,QAAQ,EAAE;QACR,eAAe,EAAE,OAAO,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,YAAY,CAAC,EAAE,qBAAqB,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC;KACnE,CAAC;IACF,gBAAgB,CAAC,EAAE,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC9C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,aAAc,SAAQ,oBAAoB;gBACzC,MAAM,EAAE,mBAAmB;IAgBvC,IAAI,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAEjD;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC,EAErD;IAEK,eAAe,IAAI,OAAO,CAAC,wBAAwB,CAAC;CAoB3D"}
@@ -0,0 +1,48 @@
1
+ import { LocalInferenceDriver } from '../local-inference/driver.js';
2
+ import { PyTorchProcess } from './process/index.js';
3
+ import { pytorchLocalInferenceAdapters } from './pytorch-local-inference-adapters.js';
4
+ /**
5
+ * Transformers + PyTorch バックエンド(LIP)。
6
+ * 共通ロジックは LocalInferenceDriver に委譲する。
7
+ */
8
+ export class PyTorchDriver extends LocalInferenceDriver {
9
+ constructor(config) {
10
+ const process = new PyTorchProcess(config.model, {
11
+ venvPath: config.venvPath,
12
+ device: config.device,
13
+ });
14
+ super({
15
+ model: config.model,
16
+ process,
17
+ adapters: pytorchLocalInferenceAdapters,
18
+ formatterOptions: config.formatterOptions,
19
+ defaultOptions: config.defaultOptions,
20
+ loggerPrefix: 'PyTorch',
21
+ });
22
+ }
23
+ get defaultOptions() {
24
+ return super.defaultOptions;
25
+ }
26
+ set defaultOptions(value) {
27
+ super.defaultOptions = value ?? {};
28
+ }
29
+ async getCapabilities() {
30
+ await this.ensureInitialized();
31
+ const runtimeInfo = this.getRuntimeInfo();
32
+ if (!runtimeInfo) {
33
+ throw new Error('Failed to retrieve model capabilities');
34
+ }
35
+ return {
36
+ methods: runtimeInfo.methods,
37
+ specialTokens: runtimeInfo.special_tokens,
38
+ features: {
39
+ hasChatTemplate: runtimeInfo.features.apply_chat_template,
40
+ vocabSize: runtimeInfo.features.vocab_size,
41
+ modelMaxLength: runtimeInfo.features.model_max_length,
42
+ chatTemplate: runtimeInfo.features.chat_template,
43
+ },
44
+ chatRestrictions: runtimeInfo.chat_restrictions,
45
+ };
46
+ }
47
+ }
48
+ //# sourceMappingURL=pytorch-driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pytorch-driver.js","sourceRoot":"","sources":["../../src/pytorch/pytorch-driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAIpE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AAwBtF;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,oBAAoB;IACrD,YAAY,MAA2B;QACrC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE;YAC/C,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;QAEH,KAAK,CAAC;YACJ,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,OAAO;YACP,QAAQ,EAAE,6BAA6B;YACvC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,YAAY,EAAE,SAAS;SACxB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,KAAK,CAAC,cAA8C,CAAC;IAC9D,CAAC;IAED,IAAI,cAAc,CAAC,KAAmC;QACpD,KAAK,CAAC,cAAc,GAAG,KAAK,IAAI,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE/B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO;YACL,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,aAAa,EAAE,WAAW,CAAC,cAAc;YACzC,QAAQ,EAAE;gBACR,eAAe,EAAE,WAAW,CAAC,QAAQ,CAAC,mBAAmB;gBACzD,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,UAAU;gBAC1C,cAAc,EAAE,WAAW,CAAC,QAAQ,CAAC,gBAAgB;gBACrD,YAAY,EAAE,WAAW,CAAC,QAAQ,CAAC,aAAa;aACjD;YACD,gBAAgB,EAAE,WAAW,CAAC,iBAAiB;SAChD,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ import type { LocalInferenceAdapters } from '../local-inference/adapters.js';
2
+ export declare const pytorchLocalInferenceAdapters: LocalInferenceAdapters;
3
+ //# sourceMappingURL=pytorch-local-inference-adapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pytorch-local-inference-adapters.d.ts","sourceRoot":"","sources":["../../src/pytorch/pytorch-local-inference-adapters.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAE7E,eAAO,MAAM,6BAA6B,EAAE,sBAa3C,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { mergePyTorchQueryOptions, toPyTorchSamplingOptions } from './pytorch-options.js';
2
+ import { createModelSpecificProcessor, selectApi } from '../mlx-ml/process/model-specific.js';
3
+ import { selectResponseProcessor } from '../mlx-ml/process/model-handlers.js';
4
+ import { generateMergedPrompt } from '../mlx-ml/process/prompt-builder.js';
5
+ import { formatToolDefinitionsAsText } from '../mlx-ml/tool-call-parser/index.js';
6
+ import { convertMessages, convertToolDefinitions, extractImagePaths, } from '../mlx-ml/mlx-message-utils.js';
7
+ export const pytorchLocalInferenceAdapters = {
8
+ mergeQueryOptions: (defaults, options) => mergePyTorchQueryOptions(defaults, options),
9
+ toSamplingOptions: (merged) => toPyTorchSamplingOptions(merged),
10
+ createModelProcessor: (model) => createModelSpecificProcessor(model),
11
+ selectResponseProcessor: (model, runtimeInfo, opts) => selectResponseProcessor(model, runtimeInfo, opts),
12
+ convertToolDefinitions,
13
+ convertMessages,
14
+ extractImagePaths,
15
+ formatToolDefinitionsAsText,
16
+ generateMergedPrompt,
17
+ selectApi,
18
+ };
19
+ //# sourceMappingURL=pytorch-local-inference-adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pytorch-local-inference-adapters.js","sourceRoot":"","sources":["../../src/pytorch/pytorch-local-inference-adapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAC9F,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,gCAAgC,CAAC;AAGxC,MAAM,CAAC,MAAM,6BAA6B,GAA2B;IACnE,iBAAiB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CACvC,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAA4B;IACxE,iBAAiB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC;IAC/D,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,4BAA4B,CAAC,KAAK,CAAC;IACpE,uBAAuB,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CACpD,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC;IACnD,sBAAsB;IACtB,eAAe;IACf,iBAAiB;IACjB,2BAA2B;IAC3B,oBAAoB;IACpB,SAAS;CACV,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { QueryOptions } from '../types.js';
2
+ /** PyTorch ドライバーのクエリオプション(MLX と同型のサンプリング) */
3
+ export type PyTorchQueryOptions = QueryOptions & {
4
+ trustRemoteCode?: boolean;
5
+ };
6
+ export declare function mergePyTorchQueryOptions(defaults?: Partial<PyTorchQueryOptions>, overrides?: QueryOptions): PyTorchQueryOptions;
7
+ export declare function toPyTorchSamplingOptions(merged: Partial<PyTorchQueryOptions>): Record<string, unknown>;
8
+ //# sourceMappingURL=pytorch-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pytorch-options.d.ts","sourceRoot":"","sources":["../../src/pytorch/pytorch-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,6CAA6C;AAC7C,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG;IAC/C,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAUF,wBAAgB,wBAAwB,CACtC,QAAQ,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,EACvC,SAAS,CAAC,EAAE,YAAY,GACvB,mBAAmB,CAErB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACnC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASzB"}
@@ -0,0 +1,21 @@
1
+ const PYTORCH_SAMPLING_KEYS = [
2
+ 'maxTokens',
3
+ 'temperature',
4
+ 'topP',
5
+ 'topK',
6
+ 'trustRemoteCode',
7
+ ];
8
+ export function mergePyTorchQueryOptions(defaults, overrides) {
9
+ return { ...defaults, ...overrides };
10
+ }
11
+ export function toPyTorchSamplingOptions(merged) {
12
+ const result = {};
13
+ for (const key of PYTORCH_SAMPLING_KEYS) {
14
+ const value = merged[key];
15
+ if (value !== undefined) {
16
+ result[key] = value;
17
+ }
18
+ }
19
+ return result;
20
+ }
21
+ //# sourceMappingURL=pytorch-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pytorch-options.js","sourceRoot":"","sources":["../../src/pytorch/pytorch-options.ts"],"names":[],"mappings":"AAOA,MAAM,qBAAqB,GAAG;IAC5B,WAAW;IACX,aAAa;IACb,MAAM;IACN,MAAM;IACN,iBAAiB;CACT,CAAC;AAEX,MAAM,UAAU,wBAAwB,CACtC,QAAuC,EACvC,SAAwB;IAExB,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,SAAS,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAAoC;IAEpC,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -55,7 +55,7 @@ export class QueryLogger {
55
55
  since: this.startTime,
56
56
  filterByContext: true,
57
57
  });
58
- const errors = logEntries.filter(e => e.level === 'error');
58
+ const errors = logEntries.filter((e) => e.level === 'error');
59
59
  return {
60
60
  logEntries: logEntries.length > 0 ? logEntries : undefined,
61
61
  errors: errors.length > 0 ? errors : undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"query-logger.js","sourceRoot":"","sources":["../src/query-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,WAAW;IACL,MAAM,CAAS;IACxB,SAAS,CAAO;IAExB,YAAY,MAAc,EAAE,UAAkB,QAAQ;QACpD,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACvB,MAAM;YACN,OAAO;YACP,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,yCAAyC;IACzC,IAAI,CAAC,OAAiC;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,EAAE,CAAC;YACZ,sBAAsB;YACtB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;YACnC,MAAM,OAAO,GAA4B,EAAE,GAAG,IAAI,EAAE,CAAC;YACrD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7C,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,mDAAmD;IACnD,OAAO;QACL,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC3C,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;QAE3D,OAAO;YACL,UAAU,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YAC1D,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SAC/C,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"query-logger.js","sourceRoot":"","sources":["../src/query-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAO,WAAW;IACL,MAAM,CAAS;IACxB,SAAS,CAAO;IAExB,YAAY,MAAc,EAAE,UAAkB,QAAQ;QACpD,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACvB,MAAM;YACN,OAAO;YACP,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,yCAAyC;IACzC,IAAI,CAAC,OAAiC;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,EAAE,CAAC;YACZ,sBAAsB;YACtB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;YACnC,MAAM,OAAO,GAA4B,EAAE,GAAG,IAAI,EAAE,CAAC;YACrD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7C,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,mDAAmD;IACnD,OAAO;QACL,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;YAC3C,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;QAEvE,OAAO;YACL,UAAU,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YAC1D,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;SAC/C,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,29 @@
1
+ import type { QueryResult, StreamResult } from './types.js';
2
+ /**
3
+ * Token usage fields for {@link QueryResult.usage}.
4
+ * Drivers map provider-specific stats into this shape.
5
+ */
6
+ export interface UsageCounts {
7
+ promptTokens?: number;
8
+ completionTokens?: number;
9
+ cacheReadTokens?: number;
10
+ cacheWriteTokens?: number;
11
+ }
12
+ /**
13
+ * Build {@link QueryResult.usage} from raw token counts.
14
+ * Omits the field when all counts are zero/undefined.
15
+ */
16
+ export declare function buildQueryUsage(counts: UsageCounts): QueryResult['usage'] | undefined;
17
+ /** Whether an {@link AbortSignal} is already aborted. */
18
+ export declare function isAborted(signal?: AbortSignal): boolean;
19
+ /**
20
+ * Register an abort listener. Invokes `onAbort` immediately when already aborted.
21
+ * Returns a cleanup function.
22
+ */
23
+ export declare function watchAbortSignal(signal: AbortSignal | undefined, onAbort: () => void): () => void;
24
+ /**
25
+ * StreamResult for a request that was aborted before inference started.
26
+ * `result` resolves (does not reject) with `finishReason: 'error'`.
27
+ */
28
+ export declare function createAbortedStreamResult(extras?: Partial<QueryResult>): StreamResult;
29
+ //# sourceMappingURL=query-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-utils.d.ts","sourceRoot":"","sources":["../src/query-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE5D;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,CAsBrF;AAED,yDAAyD;AACzD,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAEvD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,OAAO,EAAE,MAAM,IAAI,GAClB,MAAM,IAAI,CAWZ;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAChC,YAAY,CAYd"}