@modular-prompt/extract 1.0.0 → 1.2.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 (81) hide show
  1. package/README.md +83 -24
  2. package/dist/cache-lifecycle.d.ts +5 -1
  3. package/dist/cache-lifecycle.d.ts.map +1 -1
  4. package/dist/cache-lifecycle.js +22 -0
  5. package/dist/cache-lifecycle.js.map +1 -1
  6. package/dist/cli/add-command.d.ts +2 -0
  7. package/dist/cli/add-command.d.ts.map +1 -1
  8. package/dist/cli/add-command.js +9 -3
  9. package/dist/cli/add-command.js.map +1 -1
  10. package/dist/cli/args.d.ts +3 -0
  11. package/dist/cli/args.d.ts.map +1 -1
  12. package/dist/cli/args.js +29 -0
  13. package/dist/cli/args.js.map +1 -1
  14. package/dist/cli/constants.d.ts +4 -0
  15. package/dist/cli/constants.d.ts.map +1 -1
  16. package/dist/cli/constants.js +19 -0
  17. package/dist/cli/constants.js.map +1 -1
  18. package/dist/cli/create-command.d.ts +2 -0
  19. package/dist/cli/create-command.d.ts.map +1 -1
  20. package/dist/cli/create-command.js +11 -4
  21. package/dist/cli/create-command.js.map +1 -1
  22. package/dist/cli/extract-command.d.ts +2 -0
  23. package/dist/cli/extract-command.d.ts.map +1 -1
  24. package/dist/cli/extract-command.js +22 -5
  25. package/dist/cli/extract-command.js.map +1 -1
  26. package/dist/cli/list-command.d.ts +1 -0
  27. package/dist/cli/list-command.d.ts.map +1 -1
  28. package/dist/cli/list-command.js +6 -7
  29. package/dist/cli/list-command.js.map +1 -1
  30. package/dist/cli/manifest.d.ts +11 -0
  31. package/dist/cli/manifest.d.ts.map +1 -1
  32. package/dist/cli/manifest.js +16 -0
  33. package/dist/cli/manifest.js.map +1 -1
  34. package/dist/cli/store.d.ts +21 -1
  35. package/dist/cli/store.d.ts.map +1 -1
  36. package/dist/cli/store.js +189 -4
  37. package/dist/cli/store.js.map +1 -1
  38. package/dist/cli.js +18 -10
  39. package/dist/cli.js.map +1 -1
  40. package/dist/create-extract-runtime.d.ts +22 -0
  41. package/dist/create-extract-runtime.d.ts.map +1 -0
  42. package/dist/create-extract-runtime.js +27 -0
  43. package/dist/create-extract-runtime.js.map +1 -0
  44. package/dist/create-extract-session.d.ts.map +1 -1
  45. package/dist/create-extract-session.js +8 -2
  46. package/dist/create-extract-session.js.map +1 -1
  47. package/dist/create-mlx-extract-runtime.d.ts +18 -7
  48. package/dist/create-mlx-extract-runtime.d.ts.map +1 -1
  49. package/dist/create-mlx-extract-runtime.js +11 -1
  50. package/dist/create-mlx-extract-runtime.js.map +1 -1
  51. package/dist/create-pytorch-extract-runtime.d.ts +13 -0
  52. package/dist/create-pytorch-extract-runtime.d.ts.map +1 -0
  53. package/dist/create-pytorch-extract-runtime.js +52 -0
  54. package/dist/create-pytorch-extract-runtime.js.map +1 -0
  55. package/dist/default-models.d.ts +3 -8
  56. package/dist/default-models.d.ts.map +1 -1
  57. package/dist/default-models.js +4 -16
  58. package/dist/default-models.js.map +1 -1
  59. package/dist/extract-runtime-types.d.ts +16 -0
  60. package/dist/extract-runtime-types.d.ts.map +1 -0
  61. package/dist/extract-runtime-types.js +2 -0
  62. package/dist/extract-runtime-types.js.map +1 -0
  63. package/dist/extract-store.d.ts +48 -2
  64. package/dist/extract-store.d.ts.map +1 -1
  65. package/dist/extract-store.js +108 -10
  66. package/dist/extract-store.js.map +1 -1
  67. package/dist/index.d.ts +5 -0
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +2 -0
  70. package/dist/index.js.map +1 -1
  71. package/dist/model-resolution.d.ts +15 -5
  72. package/dist/model-resolution.d.ts.map +1 -1
  73. package/dist/model-resolution.js +87 -27
  74. package/dist/model-resolution.js.map +1 -1
  75. package/dist/types.d.ts +12 -0
  76. package/dist/types.d.ts.map +1 -1
  77. package/docs/API.md +320 -0
  78. package/docs/CACHE_DESIGN.md +557 -0
  79. package/docs/LOCAL_MODEL_SETUP.md +765 -0
  80. package/docs/PROMPT_MODULE_SPEC.md +482 -0
  81. package/package.json +6 -4
package/README.md CHANGED
@@ -39,7 +39,12 @@ base (+ domain) + corpus (materials / messages) + request (inputs) ← cue
39
39
 
40
40
  `type`・`cacheHint`・`partOf` は正規化層が付与する。呼び出し側で指定する必要はない。
41
41
 
42
- ## クイックスタート(MLX)
42
+ ## クイックスタート(MLX / PyTorch)
43
+
44
+ extract CLI の store は、永続 KV cache の形式が定義されている **MLX / PyTorch のみ**を対象にします。
45
+ Vertex の明示 Context Caching は CLI store には接続せず、`docs/CACHE_DESIGN.md` の Vertex 向け手動配線例の
46
+ ように `GoogleGenAICacheController`、`VertexAIDriver`、`createExtractSession` を library API で組み合わせて
47
+ 利用してください。
43
48
 
44
49
  ### CLI
45
50
 
@@ -51,6 +56,10 @@ pnpm --filter @modular-prompt/extract build
51
56
  # 1. 入力ファイルから meeting store を作成(デフォルト: ~/.modular-prompt/extract-cache)
52
57
  node packages/extract/bin/modular-prompt-extract.js create meeting -m 'your-mlx-model' docs/*.txt
53
58
 
59
+ # PyTorch モデルを使う場合は provider を明示できる(models.yaml の provider でも自動判定)
60
+ node packages/extract/bin/modular-prompt-extract.js create meeting-pytorch \
61
+ -m 'local-pytorch' --provider pytorch docs/*.txt
62
+
54
63
  # 2. 既存 store にファイルを追加(incremental prefill)
55
64
  node packages/extract/bin/modular-prompt-extract.js add meeting docs/day2.txt
56
65
 
@@ -66,20 +75,33 @@ node packages/extract/bin/modular-prompt-extract.js clean meeting
66
75
 
67
76
  | コマンド | 説明 |
68
77
  |---------|------|
69
- | `create <storename> [-d <container>] [-m <alias-or-model-id>] [files...]` | corpus を読み込み KV cache を準備。`manifest.json` を `<container>/<storename>/` に保存 |
70
- | `add <storename> [-d <container>] [files...]` | 既存 store の corpus にファイルを追記し、KV cache を incremental prefill で拡張 |
71
- | `extract <storename> [-d <container>] [query...]` | 指定 store のキャッシュ済み corpus に対して抽出。query が cue になる |
78
+ | `create <storename> [-d <container>] [-m <alias-or-model-id>] [--provider <mlx\|pytorch>] [files...]` | corpus を読み込み KV cache を準備。provider と model を含む `manifest.json` を `<container>/<storename>/` に保存 |
79
+ | `add <storename> [-d <container>] [--auto-rebuild-cache\|--no-auto-rebuild-cache] [files...]` | 既存 store の corpus にファイルを追記し、KV cache を incremental prefill で拡張。incremental のベースが無い場合は既定で full prefill にフォールバック |
80
+ | `extract <storename> [-d <container>] [--auto-rebuild-cache\|--no-auto-rebuild-cache] [query...]` | 指定 store の corpus に対して抽出。KV cache が無い・不整合な場合は既定で manifest から再生成してから実行 |
72
81
  | `list [-d <container>]` | コンテナ内の全 store と manifest/KV のサマリを表示 |
73
82
  | `clean <storename> [-d <container>]` | 指定 store の manifest + KV キャッシュを再帰削除。存在しない store は no-op |
74
83
  | `clean --all [-d <container>]` | コンテナ全体を再帰削除。存在しないコンテナは no-op |
75
84
  | `extract <storename> --max-tokens <n>` | 最大生成トークン数(デフォルト: 8000) |
76
- | `--dry-run` | MLX を起動せず、compile 済みプロンプト全文を stdout に出力 |
85
+ | `--provider <mlx\|pytorch>` | create で provider を明示。省略時は models.yaml / model alias から解決 |
86
+ | `--auto-rebuild-cache` / `--no-auto-rebuild-cache` | add/extract の KV cache 自動再生成を明示的に有効化 / 無効化 |
87
+ | `--dry-run` | driver を起動せず、compile 済みプロンプト全文を stdout に出力 |
88
+
89
+ `list` は各 store の model、materials 数・タイトル、作成日時、KV cache の有無を表示します。`KV cache: missing` は manifest が残っていれば復旧可能な状態で、通常は次の `extract` または `add` が自動再生成します。
90
+
91
+ ### KV cache の再生成と opt-out
92
+
93
+ `create` は store と `manifest.json` を作るために必須です。KV cache は manifest から再生成できる透過的な派生データなので、cache file の削除や `cache-index.json` の不整合だけで store 全体を作り直す必要はありません。
94
+
95
+ 既定では `extract` が KV cache の欠損・破損・index が指す実体の欠損を検知すると、manifest の全 materials で full prefill を行い、次の抽出を継続します。再生成時だけ stderr に warning を出し、成功した cache は store に保存されます。`add` も incremental のベースが無い場合は同じ full prefill にフォールバックします。ベースが存在する場合の `add` は従来どおり incremental prefill です。
77
96
 
78
- `list` は各 store の model、materials 数・タイトル、作成日時、KV cache の有無を表示します。
97
+ 自動再生成を止める場合は `--no-auto-rebuild-cache`、または `MODULAR_PROMPT_EXTRACT_AUTO_REBUILD_CACHE=false`(`0` / `no` / `off` も可)を指定します。環境変数が OFF の環境で一時的に有効化する場合は `--auto-rebuild-cache` を使えます。ライブラリでは `createExtractSession({ autoRebuildCache: false, ... })` を指定できます。既定値は `true` で、CLI 引数(指定時)が環境変数より優先されます。OFF の `extract` は既存 cache の read-only hit を使い、miss は cache を作らず uncached query にフォールバックします。OFF の `add` は incremental base が無い場合に明示エラーで停止し、manifest と既存 cache を変更しません。
98
+
99
+ CLI の `create` / `add` は入力ファイルを UTF-8 の文字列として読み込みます。画像ファイルを `Attachment` に変換する機能はなく、CLI の画像 material は Phase 3 の対象外です。画像を corpus に含める場合は library API の `MaterialInput.content: Attachment[]` を使用してください。MLX VLM の画像入力・画像 cache が受け付けるのは local file path のみで、URL や data URI は未対応です。
79
100
 
80
101
  ```text
81
102
  Store: meeting
82
103
  Model: mlx-community/SomeModel-4bit
104
+ Provider: mlx
83
105
  Materials: 2 (notes.txt, meeting.md)
84
106
  Created: 2026-09-07T03:00:00.000Z
85
107
  Updated: 2026-09-07T04:00:00.000Z
@@ -95,10 +117,19 @@ modular-prompt-extract extract meeting --dry-run '登場人物を列挙'
95
117
  ```
96
118
 
97
119
  `-d` 省略時のデフォルトは `~/.modular-prompt/extract-cache` で、create/add/extract/list/clean 共通の **store コンテナ**を指定します。`MODULAR_PROMPT_HOME` を設定している場合は、その値の下の `extract-cache` が使用されます。`-m` には models.yaml の alias(例: `default`)または生の HF model ID を指定できます。create/add/extract/clean では `<storename>` が必須(`clean --all` を除く)で、コンテナ配下の `<storename>/` が利用されます。
98
- `-m` 省略時は、同梱 models 設定と `~/.modular-prompt/models.yaml`(`MODULAR_PROMPT_HOME` で変更可)をマージし、`models.default`、なければ先頭のモデルを使用します。user yaml の `default` は同梱 default を上書きします。
99
- `MLX_MODEL` 環境変数も後方互換のためサポートしており、設定時は同梱 default のモデル ID として扱います。user yaml の `models.default` は `MLX_MODEL` より優先されます。
100
120
 
101
- ローカルテスト用のモデルは `~/.modular-prompt/models.testing.yaml` に分けて置き、手元の extract 実行では `MODULAR_PROMPT_MODELS_PROFILE=testing` を指定できます。設定ファイルのサンプルと統合テストの convention alias は [ローカルモデルセットアップガイド](../../docs/LOCAL_MODEL_SETUP.md) を参照してください。
121
+ ### models.yaml 連携
122
+
123
+ マシン共通のモデル定義は **`~/.modular-prompt/models.yaml`**(単一ファイル。`models/` ディレクトリは非対応)に置きます。`MODULAR_PROMPT_HOME` でホームディレクトリを変更できます。
124
+
125
+ | 順位 | ソース | 説明 |
126
+ |------|--------|------|
127
+ | 1 | CLI `-m` | 最優先。alias または生の HF model ID |
128
+ | 2 | user yaml の `models.default` | `-m` 省略時のみ使用。同梱 fallback や先頭エントリ自動選択はなし |
129
+
130
+ `-m` を省略した場合は、`models.default` が user yaml に明示されているときだけそのモデルを使います。未設定時は driver を起動せず、`-m` 指定または `models.default` 定義を案内するエラーを返します。モデル alias に `provider: mlx` または `provider: pytorch` を設定すると provider を自動判定できます。provider を推論できない生 model ID は、`create --provider mlx` / `create --provider pytorch` のように明示してください。create は解決後の生 model ID と provider を store の `manifest.json` に保存し、以降の add/extract は manifest の provider + model を検証して同じ cache runtime を使います。provider の異なる store は cache 形式が非互換のため開けません。
131
+
132
+ ローカルテスト用のモデルは `~/.modular-prompt/models.testing.yaml` に分けて置き、手元の extract 実行では `MODULAR_PROMPT_MODELS_PROFILE=testing` を指定できます。設定ファイルのサンプルと統合テストの convention alias は [ローカルモデルセットアップガイド](./docs/LOCAL_MODEL_SETUP.md) を参照してください。
102
133
 
103
134
  たとえば `~/.modular-prompt/models.yaml` に次を置くと、`create meeting -m default` と `create meeting` の両方でこのモデルが選ばれます。
104
135
 
@@ -109,9 +140,29 @@ models:
109
140
  model: mlx-community/YourModel-4bit
110
141
  ```
111
142
 
143
+ PyTorch (Transformers) の text-only extract は、次のように `driverOptions.device` を設定できます。`venvPath` は外部 venv を使う場合だけ指定し、省略時は driver 管理の既定 runtime を使用します。CUDA の場合は driver 側の runtime 構成に従います。
144
+
145
+ ```yaml
146
+ models:
147
+ local-pytorch:
148
+ provider: pytorch
149
+ model: meta-llama/Llama-3.2-3B-Instruct
150
+ driverOptions:
151
+ device: cuda
152
+ ```
153
+
112
154
  モデルが設定されていない構成では、`-m <model-id-or-alias>` を指定するか、user yaml に `models.default` を定義してください。
113
155
 
114
- **MLX バックエンドは mlx-lm(`backend: 'lm'`)に固定**している。`auto` で VLM が選ばれるとプロンプトキャッシュが無効になるため。
156
+ **MLX バックエンドは models.yaml の指定に従う**。未指定時は `auto` で、モデル種別に応じて `mlx-lm` / `mlx-vlm` を選択する。`backend: 'vlm'` を指定した VLM 判定モデルは、画像なしの text-only exact KV cache に加えて、画像 material を含む prompt の vision cache もディスクへ保存して extract session 間で再利用できる。画像あり VLM cache は text-only VLM / LM の store とは別 namespace・非互換で、VLM の incremental prefill は対象外。PyTorch runtime は現状 text-only で、MLX の `backend` / `maxImageSize` は無視されます。
157
+
158
+ ```yaml
159
+ models:
160
+ default:
161
+ provider: mlx
162
+ model: mlx-community/Your-VLM-4bit
163
+ driverOptions:
164
+ backend: vlm # 省略時は auto
165
+ ```
115
166
 
116
167
  ### ライブラリ API
117
168
 
@@ -119,10 +170,11 @@ models:
119
170
  import {
120
171
  createExtractSession,
121
172
  createMlxExtractRuntime,
173
+ createPytorchExtractRuntime,
122
174
  } from '@modular-prompt/extract';
123
175
 
124
176
  const runtime = await createMlxExtractRuntime({
125
- model: 'prism-ml/Ternary-Bonsai-1.7B-mlx-2bit',
177
+ model: 'your-mlx-model',
126
178
  });
127
179
 
128
180
  try {
@@ -149,6 +201,11 @@ try {
149
201
  } finally {
150
202
  await runtime.close();
151
203
  }
204
+
205
+ // PyTorch の場合も同じ ExtractSession API を使う
206
+ const pytorchRuntime = await createPytorchExtractRuntime({ model: 'local-pytorch' });
207
+ // pytorchRuntime.driver / pytorchRuntime.cacheController を同じように session へ渡す
208
+ await pytorchRuntime.close();
152
209
  ```
153
210
 
154
211
  ## キャッシュの意図と制約
@@ -159,13 +216,13 @@ try {
159
216
  |-----------|-------------|
160
217
  | `session.close()`(デフォルト) | handle を `release` マーク → 次の `runtime.close()` で **KV ファイル削除** |
161
218
  | `session.close({ releaseCache: false })` | release しない → **KV ファイルは disk に残る**(CLI はこちら) |
162
- | `runtime.close()`(固定 cacheDir) | `release` 済みエントリの `.safetensors.zip` を削除 |
219
+ | `runtime.close()`(固定 cacheDir) | `release` 済みエントリの LM/VLM cache files を削除 |
163
220
  | `runtime.close()`(一時 cacheDir) | **ディレクトリごと削除** |
164
221
  | `add <storename> files...` | 既存 store を staging にコピーし、必須 cache prepare(空 handle は失敗)と manifest 更新が成功した後に入れ替え |
165
222
  | `clean <storename> [-d <container>]` | 1 store の manifest + KV キャッシュを再帰削除 |
166
223
  | `clean --all [-d <container>]` | コンテナ内の全 store を再帰削除 |
167
224
 
168
- `create` 直後に store 内へ `manifest.json` だけ残って `.safetensors.zip` が無い場合、以前のバージョンでは `session.close()` が release していたのが原因。CLI は `releaseCache: false` で修正済み。
225
+ `create` 直後に store 内へ `manifest.json` だけ残って cache file が無い場合、以前のバージョンでは `session.close()` が release していたのが原因。CLI は `releaseCache: false` で修正済み。
169
226
 
170
227
  ### 意図
171
228
 
@@ -183,9 +240,9 @@ try {
183
240
  | driver / cacheController の終了 | 呼び出し側の責務(`runtime.close()` 等) |
184
241
  | セッション終了 | `session.close()` — デフォルトで handle `release()`。固定 cacheDir を残す場合は `{ releaseCache: false }` |
185
242
 
186
- `cacheController` は **必須**。`createMlxExtractRuntime` の `model` は省略でき、CLI と同じ models.yaml 解決を行います。指定する場合は alias または生の HF model ID を使えます。キャッシュ非対応モードは提供しない。
243
+ `cacheController` は **必須**。`createMlxExtractRuntime` / `createPytorchExtractRuntime` の `model` は省略でき、CLI と同じ user models.yaml の `models.default` 解決を行います。provider を明示的に選ぶ場合は `createExtractRuntime({ model, provider })` を使えます。モデル設定がない場合や provider を推論できない生 ID はエラーになります。PyTorch runtime は text-only で、`driverOptions.device` / `venvPath` は models.yaml から渡されます。固定 `cacheDir` は PyTorch の runtime variant / device ごとに分け、CPU と CUDA などで共有しないでください(manifest は provider と model を検証します)。キャッシュ非対応モードは提供しない。
187
244
 
188
- 詳細は [プロンプトキャッシュ設計](../../docs/CACHE_DESIGN.md) および [API 仕様](./API.md) を参照。
245
+ 詳細は [プロンプトキャッシュ設計](./docs/CACHE_DESIGN.md) および [API 仕様](./docs/API.md) を参照。
189
246
 
190
247
  ## サンプル
191
248
 
@@ -296,8 +353,10 @@ console.log(result.structured); // schema に沿った JSON
296
353
  |---------|------|
297
354
  | `createExtractSession` | 抽出セッションを生成 |
298
355
  | `createMlxExtractRuntime` | MLX 用 driver + cacheController バンドル |
356
+ | `createPytorchExtractRuntime` | PyTorch 用 driver + cacheController バンドル(text-only) |
357
+ | `createExtractRuntime` | 解決済み provider に応じた runtime factory |
299
358
  | `resolveModelSpec` | alias または生 model ID から extract 用 ModelSpec を解決 |
300
- | `createDriver` | 解決済み ModelSpec から AIService 経由で MLX driver を生成 |
359
+ | `createDriver` | 解決済み ModelSpec から AIService 経由で MLX / PyTorch driver を生成 |
301
360
  | `resolveDefaultContainerDir` | `MODULAR_PROMPT_HOME` に基づくデフォルト cache container を解決 |
302
361
  | `resolveStoreDir` | cache コンテナと storename から store ディレクトリを解決 |
303
362
  | `validateStorename` | storename の形式と予約語を検証 |
@@ -308,7 +367,7 @@ console.log(result.structured); // schema に沿った JSON
308
367
 
309
368
  型: `ExtractCorpus`, `ExtractRequest`, `ExtractResult`, `ExtractSession`, `MaterialInput`, `MessageInput`, `ChunkInput` など。
310
369
 
311
- 完全な API リファレンスは [API.md](./API.md) を参照。
370
+ 完全な API リファレンスは [API.md](./docs/API.md) を参照。
312
371
 
313
372
  ## CLI(`modular-prompt-extract`)
314
373
 
@@ -317,7 +376,7 @@ console.log(result.structured); // schema に沿った JSON
317
376
  ```bash
318
377
  pnpm --filter @modular-prompt/extract build
319
378
 
320
- modular-prompt-extract create meeting [-d <cache-dir>] [-m <alias-or-model-id>] file1.txt file2.txt
379
+ modular-prompt-extract create meeting [-d <cache-dir>] [-m <alias-or-model-id>] [--provider <mlx|pytorch>] file1.txt file2.txt
321
380
  modular-prompt-extract add meeting [-d <cache-dir>] file3.txt
322
381
  modular-prompt-extract create contract [-d <cache-dir>] [-m <alias-or-model-id>] contract.pdf
323
382
  modular-prompt-extract extract meeting [-d <cache-dir>] '抽出したい内容の指示'
@@ -329,11 +388,11 @@ modular-prompt-extract clean --all [-d <cache-dir>]
329
388
 
330
389
  `<storename>` は create/add/extract/clean の positional 第1引数で必須です(`clean --all` を除く)。`[a-zA-Z0-9][a-zA-Z0-9_-]*` に一致し、`create`・`add`・`extract`・`list`・`clean` は使用できません。`-d` は store コンテナを指定し、create は `<container>/<storename>/` にキャッシュと `manifest.json` を保存します。既存 store に対する create は失敗するため、`modular-prompt-extract clean <storename>`(必要に応じて `-d <container>`)で削除してから再実行します。
331
390
 
332
- `add <storename> files...` は manifest の model を使って既存 store に資料を追加します。新しいファイルは絶対パスを `id` として追記され、同じ `id`・同じ内容の再追加はスキップされます。同じ `id` の内容が変わっている場合は、キャッシュとの不整合を避けるためエラーになります。その場合は `clean` してから `create` し直してください。`add --dry-run` は MLX を起動せず、マージ後のプロンプトを表示します。
391
+ `add <storename> files...` は manifest の provider + model を検証して既存 store に資料を追加します。新しいファイルは絶対パスを `id` として追記され、同じ `id`・同じ内容の再追加はスキップされます。同じ `id` の内容が変わっている場合は、キャッシュとの不整合を避けるためエラーになります。その場合は `clean` してから `create` し直してください。`add --dry-run` は driver を起動せず、マージ後のプロンプトを表示します。
333
392
 
334
393
  `add` は既存 store を直接上書きしません。staging store で必須 cache prepare と manifest 書き込みを完了してから store ディレクトリを入れ替えるため、空 handle を含む prefill の失敗、または manifest 更新の失敗時は既存の corpus と KV cache が保持されます。通常の `createExtractSession` / `extract` は引き続き cache prepare の失敗を best-effort で扱います。
335
394
 
336
- `-m` は models.yaml の alias(`default` など)または生の HF model ID を受け付けます。省略時は同梱 models 設定に user の `~/.modular-prompt/models.yaml` を重ねて解決します。`create` は解決後の生 model ID を store 内の `manifest.json` に保存し、`extract` はその ID で再開します。いずれも **mlx-lm バックエンド固定**(キャッシュ互換のため)。
395
+ `-m` は models.yaml の alias(`default` など)または生の HF model ID を受け付けます。省略時は user の `~/.modular-prompt/models.yaml` にある `models.default` から解決します。モデルが未設定の場合は明示的な `-m` または `models.default` が必要です。生 model ID の provider を推論できない場合は `--provider mlx` / `--provider pytorch` を指定してください。`create` は解決後の生 model ID と provider を store 内の `manifest.json` に保存し、`extract` と `add` は manifest の provider + model を検証して再開します。backend がない既存 MLX manifest は `auto` として扱うため、従来どおりモデル種別の自動判定になります。VLM は text-only cache と画像 material 用の vision cache を別 namespace で使用し、VLM incremental prefill は対象外です。PyTorch は現状 text-only です。
337
396
 
338
397
  ### 旧 CLI / キャッシュレイアウトからの移行
339
398
 
@@ -369,8 +428,8 @@ MLX 統合テストは macOS + MLX 設定がある環境でのみ実行される
369
428
 
370
429
  ## 関連ドキュメント
371
430
 
372
- - [API 仕様](./API.md)
373
- - [プロンプトモジュール仕様](../../docs/PROMPT_MODULE_SPEC.md)
374
- - [プロンプトキャッシュ設計](../../docs/CACHE_DESIGN.md)
375
- - [ローカルモデルセットアップ](../../docs/LOCAL_MODEL_SETUP.md)
431
+ - [API 仕様](./docs/API.md)
432
+ - [プロンプトモジュール仕様](./docs/PROMPT_MODULE_SPEC.md)
433
+ - [プロンプトキャッシュ設計](./docs/CACHE_DESIGN.md)
434
+ - [ローカルモデルセットアップ](./docs/LOCAL_MODEL_SETUP.md)
376
435
  - 親 Issue: [#330](https://github.com/otolab/modular-prompt/issues/330)
@@ -1,5 +1,5 @@
1
1
  import type { PromptModule } from '@modular-prompt/core';
2
- import type { AIDriver, CacheHandle, PromptCacheController } from '@modular-prompt/driver';
2
+ import { type AIDriver, type CacheHandle, type PromptCacheController } from '@modular-prompt/driver';
3
3
  import type { ExtractCorpus, ExtractRequest } from './types.js';
4
4
  export interface CacheLifecycleState {
5
5
  handle: CacheHandle | null;
@@ -8,6 +8,10 @@ export interface CacheLifecycleState {
8
8
  export interface PrepareSessionCacheOptions {
9
9
  /** Reject an empty cache handle instead of falling back to an uncached query. */
10
10
  required?: boolean;
11
+ /** Only use existing cache entries; never create a new one. */
12
+ readOnly?: boolean;
13
+ /** Image resize limit used by a VLM cache prefill. */
14
+ maxImageSize?: number;
11
15
  }
12
16
  export declare function ensureCacheControllerReady(driver: AIDriver, state: CacheLifecycleState): Promise<void>;
13
17
  export declare function prepareSessionCache<TContext>(cacheController: PromptCacheController, model: string, sessionBaseModule: PromptModule<TContext>, corpus: ExtractCorpus, request: ExtractRequest, baseModule: PromptModule<TContext> | undefined, state: CacheLifecycleState, options?: PrepareSessionCacheOptions): Promise<CacheHandle | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"cache-lifecycle.d.ts","sourceRoot":"","sources":["../src/cache-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE3F,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGhE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,iFAAiF;IACjF,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,mBAAmB,CAAC,QAAQ,EAChD,eAAe,EAAE,qBAAqB,EACtC,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,YAAY,CAAC,QAAQ,CAAC,EACzC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,SAAS,EAC9C,KAAK,EAAE,mBAAmB,EAC1B,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAqC7B;AAED,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,qBAAqB,EACtC,KAAK,EAAE,mBAAmB,GACzB,IAAI,CAKN"}
1
+ {"version":3,"file":"cache-lifecycle.d.ts","sourceRoot":"","sources":["../src/cache-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC3B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGhE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,iFAAiF;IACjF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAkBD,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAsB,mBAAmB,CAAC,QAAQ,EAChD,eAAe,EAAE,qBAAqB,EACtC,KAAK,EAAE,MAAM,EACb,iBAAiB,EAAE,YAAY,CAAC,QAAQ,CAAC,EACzC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,GAAG,SAAS,EAC9C,KAAK,EAAE,mBAAmB,EAC1B,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CA2C7B;AAED,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,qBAAqB,EACtC,KAAK,EAAE,mBAAmB,GACzB,IAAI,CAKN"}
@@ -1,5 +1,21 @@
1
+ import { extractImagePaths, } from '@modular-prompt/driver';
1
2
  import { partitionPrompt } from '@modular-prompt/driver';
2
3
  import { compileExtractPrompt } from './compile-extract-prompt.js';
4
+ function extractImagesFromElements(elements) {
5
+ return elements.flatMap((element) => {
6
+ switch (element.type) {
7
+ case 'text':
8
+ return [];
9
+ case 'message':
10
+ return element.role === 'tool' ? [] : extractImagePaths(element.content);
11
+ case 'material':
12
+ case 'chunk':
13
+ return extractImagePaths(element.content);
14
+ default:
15
+ return [];
16
+ }
17
+ });
18
+ }
3
19
  export async function ensureCacheControllerReady(driver, state) {
4
20
  if (state.controllerReady) {
5
21
  return;
@@ -25,6 +41,12 @@ export async function prepareSessionCache(cacheController, model, sessionBaseMod
25
41
  data: cacheable.data,
26
42
  tools: request.options?.tools,
27
43
  reasoningEffort: request.options?.reasoningEffort,
44
+ images: extractImagesFromElements([
45
+ ...cacheable.instructions,
46
+ ...cacheable.data,
47
+ ]),
48
+ maxImageSize: options.maxImageSize,
49
+ ...(options.readOnly !== undefined ? { readOnly: options.readOnly } : {}),
28
50
  });
29
51
  if (!newHandle.ref) {
30
52
  if (options.required) {
@@ -1 +1 @@
1
- {"version":3,"file":"cache-lifecycle.js","sourceRoot":"","sources":["../src/cache-lifecycle.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAYnE,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAgB,EAChB,KAA0B;IAE1B,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,IAAI,iBAAiB,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;QAChF,MAAM,MAAM,CAAC,eAAe,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,eAAsC,EACtC,KAAa,EACb,iBAAyC,EACzC,MAAqB,EACrB,OAAuB,EACvB,UAA8C,EAC9C,KAA0B,EAC1B,UAAsC,EAAE;IAExC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,iBAAiB,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACtF,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IAChD,MAAM,mBAAmB,GACvB,SAAS,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAEjE,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC;QAC9C,KAAK;QACL,YAAY,EAAE,SAAS,CAAC,YAAY;QACpC,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,KAAK;QAC7B,eAAe,EAAE,OAAO,CAAC,OAAO,EAAE,eAAe;KAClD,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QACnB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QACpB,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,UAAU,KAAK,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACnE,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,OAAO,KAAK,CAAC,MAAM,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,eAAsC,EACtC,KAA0B;IAE1B,IAAI,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;QACtB,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1C,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;IACtB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"cache-lifecycle.js","sourceRoot":"","sources":["../src/cache-lifecycle.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@ export interface AddCommandOptions {
5
5
  storename: string;
6
6
  files: string[];
7
7
  dryRun?: boolean;
8
+ /** Automatically rebuild a missing incremental base. Defaults to true. */
9
+ autoRebuildCache?: boolean;
8
10
  }
9
11
  export declare function runAddCommand(options: AddCommandOptions): Promise<string | void>;
10
12
  export { mergeMaterials };
@@ -1 +1 @@
1
- {"version":3,"file":"add-command.d.ts","sourceRoot":"","sources":["../../src/cli/add-command.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,cAAc,EAEf,MAAM,qBAAqB,CAAC;AAM7B,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqBtF;AAID,OAAO,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"add-command.d.ts","sourceRoot":"","sources":["../../src/cli/add-command.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,cAAc,EAEf,MAAM,qBAAqB,CAAC;AAM7B,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA8BtF;AAID,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { resolve } from 'node:path';
2
2
  import { appendToExtractStore, mergeMaterials, readExtractStoreManifest, } from '../extract-store.js';
3
- import { CACHE_PREPARE_CUE } from './constants.js';
3
+ import { CACHE_PREPARE_CUE, resolveAutoRebuildCache } from './constants.js';
4
4
  import { loadMaterialsFromFiles } from './load-materials.js';
5
5
  import { renderExtractPrompt } from './render-prompt.js';
6
- import { resolveStoreDir } from './store.js';
6
+ import { formatKvCacheRebuildWarning, resolveStoreDir } from './store.js';
7
7
  export async function runAddCommand(options) {
8
8
  const containerDir = resolve(options.cacheDir);
9
9
  const storeDir = resolveStoreDir(containerDir, options.storename);
@@ -14,14 +14,20 @@ export async function runAddCommand(options) {
14
14
  if (options.dryRun) {
15
15
  return renderExtractPrompt({ materials }, request);
16
16
  }
17
+ const autoRebuildCache = resolveAutoRebuildCache(options.autoRebuildCache);
17
18
  const result = await appendToExtractStore({
18
19
  storeDir,
19
20
  storename: options.storename,
20
21
  incomingMaterials,
21
22
  existingManifest: manifest,
23
+ autoRebuildCache,
22
24
  });
25
+ if (result.cacheRebuilt) {
26
+ console.error(formatKvCacheRebuildWarning(options.storename, result.manifest.materials.length));
27
+ }
23
28
  console.error(`Cache extended: ${storeDir}`);
24
- console.error(`Materials: ${result.manifest.materials.length} file(s), model: ${result.model}`);
29
+ console.error(`Materials: ${result.manifest.materials.length} file(s), model: ${result.model}, provider: ${result.provider}`
30
+ + (result.backend !== undefined ? `, backend: ${result.backend}` : ''));
25
31
  }
26
32
  // Keep the merge operation discoverable next to the CLI entry point while the
27
33
  // implementation remains in the reusable extract-store layer.
@@ -1 +1 @@
1
- {"version":3,"file":"add-command.js","sourceRoot":"","sources":["../../src/cli/add-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAU7C,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA0B;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7E,MAAM,iBAAiB,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC;IAE3C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,mBAAmB,CAAC,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC;QACxC,QAAQ;QACR,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,iBAAiB;QACjB,gBAAgB,EAAE,QAAQ;KAC3B,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,cAAc,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,oBAAoB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAClG,CAAC;AAED,8EAA8E;AAC9E,8DAA8D;AAC9D,OAAO,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"add-command.js","sourceRoot":"","sources":["../../src/cli/add-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAY1E,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA0B;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7E,MAAM,iBAAiB,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtE,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC;IAE3C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,mBAAmB,CAAC,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE3E,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC;QACxC,QAAQ;QACR,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,iBAAiB;QACjB,gBAAgB,EAAE,QAAQ;QAC1B,gBAAgB;KACjB,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,CACX,cAAc,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,oBAAoB,MAAM,CAAC,KAAK,eAAe,MAAM,CAAC,QAAQ,EAAE;UAC1G,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACzE,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,8DAA8D;AAC9D,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -1,10 +1,13 @@
1
+ import type { ExtractProvider } from '../extract-runtime-types.js';
1
2
  export type CliCommand = 'create' | 'add' | 'extract' | 'list' | 'clean' | 'help';
2
3
  export interface ParsedArgs {
3
4
  command?: CliCommand;
4
5
  cacheDir?: string;
5
6
  model?: string;
7
+ provider?: ExtractProvider;
6
8
  maxTokens?: number;
7
9
  dryRun?: boolean;
10
+ autoRebuildCache?: boolean;
8
11
  all?: boolean;
9
12
  storename?: string;
10
13
  positional: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAElF,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAuDD,2DAA2D;AAC3D,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAoFpD"}
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAEnE,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAElF,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAwED,2DAA2D;AAC3D,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAsGpD"}
package/dist/cli/args.js CHANGED
@@ -13,6 +13,12 @@ function parseMaxTokens(value) {
13
13
  }
14
14
  return parsed;
15
15
  }
16
+ function parseProvider(value) {
17
+ if (value === 'mlx' || value === 'pytorch') {
18
+ return value;
19
+ }
20
+ throw new Error('--provider must be either mlx or pytorch');
21
+ }
16
22
  function validateCommandOptions(result) {
17
23
  if (result.all && result.command !== 'clean') {
18
24
  throw new Error('--all is only valid with clean');
@@ -23,6 +29,14 @@ function validateCommandOptions(result) {
23
29
  if ((result.command === 'extract' || result.command === 'add') && result.model !== undefined) {
24
30
  throw new Error('--model is only valid with create');
25
31
  }
32
+ if (result.command !== 'create' && result.provider !== undefined) {
33
+ throw new Error('--provider is only valid with create');
34
+ }
35
+ if (result.autoRebuildCache !== undefined
36
+ && result.command !== 'add'
37
+ && result.command !== 'extract') {
38
+ throw new Error('--auto-rebuild-cache/--no-auto-rebuild-cache is only valid with add or extract');
39
+ }
26
40
  if (result.command === 'list') {
27
41
  if (result.model !== undefined || result.maxTokens !== undefined || result.dryRun) {
28
42
  throw new Error('list does not accept create/extract options');
@@ -83,11 +97,26 @@ export function parseArgs(argv) {
83
97
  index += 2;
84
98
  continue;
85
99
  }
100
+ if (!optionsEnded && arg === '--provider') {
101
+ result.provider = parseProvider(requireOptionValue(argv, index, arg, 'mlx or pytorch'));
102
+ index += 2;
103
+ continue;
104
+ }
86
105
  if (!optionsEnded && arg === '--dry-run') {
87
106
  result.dryRun = true;
88
107
  index += 1;
89
108
  continue;
90
109
  }
110
+ if (!optionsEnded && arg === '--auto-rebuild-cache') {
111
+ result.autoRebuildCache = true;
112
+ index += 1;
113
+ continue;
114
+ }
115
+ if (!optionsEnded && arg === '--no-auto-rebuild-cache') {
116
+ result.autoRebuildCache = false;
117
+ index += 1;
118
+ continue;
119
+ }
91
120
  if (!optionsEnded && arg === '--all') {
92
121
  result.all = true;
93
122
  index += 1;
@@ -1 +1 @@
1
- {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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"}
@@ -8,4 +8,8 @@ export declare function resolveDefaultContainerDir(): string;
8
8
  export declare const CACHE_PREPARE_CUE = "\uFF08cache prepare\uFF09";
9
9
  /** `extract --max-tokens` 省略時のデフォルト。 */
10
10
  export declare const DEFAULT_MAX_TOKENS = 8000;
11
+ /** Environment variable that disables automatic KV cache regeneration. */
12
+ export declare const AUTO_REBUILD_CACHE_ENV = "MODULAR_PROMPT_EXTRACT_AUTO_REBUILD_CACHE";
13
+ /** Resolve the automatic cache rebuild setting with CLI/config precedence. */
14
+ export declare function resolveAutoRebuildCache(configValue?: boolean): boolean;
11
15
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/cli/constants.ts"],"names":[],"mappings":"AAGA,+BAA+B;AAC/B,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAEjD,8CAA8C;AAC9C,eAAO,MAAM,oBAAoB,kBAAkB,CAAC;AAEpD,4CAA4C;AAC5C,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED,gDAAgD;AAChD,eAAO,MAAM,iBAAiB,8BAAoB,CAAC;AAEnD,wCAAwC;AACxC,eAAO,MAAM,kBAAkB,OAAO,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/cli/constants.ts"],"names":[],"mappings":"AAGA,+BAA+B;AAC/B,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAEjD,8CAA8C;AAC9C,eAAO,MAAM,oBAAoB,kBAAkB,CAAC;AAEpD,4CAA4C;AAC5C,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED,gDAAgD;AAChD,eAAO,MAAM,iBAAiB,8BAAoB,CAAC;AAEnD,wCAAwC;AACxC,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,0EAA0E;AAC1E,eAAO,MAAM,sBAAsB,8CAA8C,CAAC;AAElF,8EAA8E;AAC9E,wBAAgB,uBAAuB,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAoBtE"}
@@ -12,4 +12,23 @@ export function resolveDefaultContainerDir() {
12
12
  export const CACHE_PREPARE_CUE = '(cache prepare)';
13
13
  /** `extract --max-tokens` 省略時のデフォルト。 */
14
14
  export const DEFAULT_MAX_TOKENS = 8000;
15
+ /** Environment variable that disables automatic KV cache regeneration. */
16
+ export const AUTO_REBUILD_CACHE_ENV = 'MODULAR_PROMPT_EXTRACT_AUTO_REBUILD_CACHE';
17
+ /** Resolve the automatic cache rebuild setting with CLI/config precedence. */
18
+ export function resolveAutoRebuildCache(configValue) {
19
+ if (configValue !== undefined) {
20
+ return configValue;
21
+ }
22
+ const environmentValue = process.env[AUTO_REBUILD_CACHE_ENV];
23
+ if (environmentValue === undefined) {
24
+ return true;
25
+ }
26
+ if (/^(?:0|false|no|off)$/i.test(environmentValue.trim())) {
27
+ return false;
28
+ }
29
+ if (/^(?:1|true|yes|on)$/i.test(environmentValue.trim())) {
30
+ return true;
31
+ }
32
+ throw new Error(`${AUTO_REBUILD_CACHE_ENV} must be one of true/false, 1/0, yes/no, or on/off`);
33
+ }
15
34
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/cli/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,+BAA+B;AAC/B,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEjD,8CAA8C;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC;AAEpD,4CAA4C;AAC5C,MAAM,UAAU,0BAA0B;IACxC,OAAO,IAAI,CAAC,oBAAoB,EAAE,EAAE,oBAAoB,CAAC,CAAC;AAC5D,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAEnD,wCAAwC;AACxC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/cli/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,+BAA+B;AAC/B,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEjD,8CAA8C;AAC9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC;AAEpD,4CAA4C;AAC5C,MAAM,UAAU,0BAA0B;IACxC,OAAO,IAAI,CAAC,oBAAoB,EAAE,EAAE,oBAAoB,CAAC,CAAC;AAC5D,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAEnD,wCAAwC;AACxC,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAEvC,0EAA0E;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG,2CAA2C,CAAC;AAElF,8EAA8E;AAC9E,MAAM,UAAU,uBAAuB,CAAC,WAAqB;IAC3D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAC7D,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,uBAAuB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,sBAAsB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,KAAK,CACb,GAAG,sBAAsB,oDAAoD,CAC9E,CAAC;AACJ,CAAC"}
@@ -1,8 +1,10 @@
1
+ import type { ExtractProvider } from '../extract-runtime-types.js';
1
2
  export interface CreateCommandOptions {
2
3
  /** Container directory containing one subdirectory per store. */
3
4
  cacheDir: string;
4
5
  storename: string;
5
6
  model?: string;
7
+ provider?: ExtractProvider;
6
8
  files: string[];
7
9
  dryRun?: boolean;
8
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-command.d.ts","sourceRoot":"","sources":["../../src/cli/create-command.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,oBAAoB;IACnC,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA8C5F"}
1
+ {"version":3,"file":"create-command.d.ts","sourceRoot":"","sources":["../../src/cli/create-command.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAOnE,MAAM,WAAW,oBAAoB;IACnC,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuD5F"}
@@ -20,18 +20,24 @@ export async function runCreateCommand(options) {
20
20
  }
21
21
  await mkdir(storeDir, { recursive: true });
22
22
  let storeReady = false;
23
- let preparedModel;
23
+ let prepared;
24
24
  try {
25
- preparedModel = await prepareExtractCache({
25
+ prepared = await prepareExtractCache({
26
26
  cacheDir: storeDir,
27
27
  model: options.model,
28
+ ...(options.provider !== undefined ? { provider: options.provider } : {}),
28
29
  materials,
29
30
  });
30
31
  const createdAt = new Date().toISOString();
31
32
  await writeManifest(storeDir, {
32
33
  version: 1,
33
34
  storename: options.storename,
34
- model: preparedModel,
35
+ model: prepared.model,
36
+ provider: prepared.provider,
37
+ backend: prepared.backend,
38
+ ...(prepared.maxImageSize !== undefined
39
+ ? { maxImageSize: prepared.maxImageSize }
40
+ : {}),
35
41
  materials,
36
42
  createdAt,
37
43
  updatedAt: createdAt,
@@ -44,6 +50,7 @@ export async function runCreateCommand(options) {
44
50
  }
45
51
  }
46
52
  console.error(`Cache prepared: ${storeDir}`);
47
- console.error(`Materials: ${materials.length} file(s), model: ${preparedModel}`);
53
+ console.error(`Materials: ${materials.length} file(s), model: ${prepared.model}, provider: ${prepared.provider}`
54
+ + (prepared.backend !== undefined ? `, backend: ${prepared.backend}` : ''));
48
55
  }
49
56
  //# sourceMappingURL=create-command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-command.js","sourceRoot":"","sources":["../../src/cli/create-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAW1D,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAA6B;IAClE,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC;IAE3C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,mBAAmB,CAAC,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,MAAM,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,yBAAyB,QAAQ,IAAI;cACnC,sCAAsC,OAAO,CAAC,SAAS,8BAA8B,CACxF,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3C,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,aAAiC,CAAC;IACtC,IAAI,CAAC;QACH,aAAa,GAAG,MAAM,mBAAmB,CAAC;YACxC,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS;SACV,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE3C,MAAM,aAAa,CAAC,QAAQ,EAAE;YAC5B,OAAO,EAAE,CAAC;YACV,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,aAAa;YACpB,SAAS;YACT,SAAS;YACT,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;QACH,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,cAAc,SAAS,CAAC,MAAM,oBAAoB,aAAa,EAAE,CAAC,CAAC;AACnF,CAAC"}
1
+ {"version":3,"file":"create-command.js","sourceRoot":"","sources":["../../src/cli/create-command.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@ export interface ExtractCommandOptions {
5
5
  query: string;
6
6
  maxTokens?: number;
7
7
  dryRun?: boolean;
8
+ /** Automatically rebuild a missing/inconsistent store cache. Defaults to true. */
9
+ autoRebuildCache?: boolean;
8
10
  }
9
11
  export declare function runExtractCommand(options: ExtractCommandOptions): Promise<string>;
10
12
  //# sourceMappingURL=extract-command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract-command.d.ts","sourceRoot":"","sources":["../../src/cli/extract-command.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,qBAAqB;IACpC,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyCvF"}
1
+ {"version":3,"file":"extract-command.d.ts","sourceRoot":"","sources":["../../src/cli/extract-command.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,qBAAqB;IACpC,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CA0DvF"}