@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.
- package/README.md +83 -24
- package/dist/cache-lifecycle.d.ts +5 -1
- package/dist/cache-lifecycle.d.ts.map +1 -1
- package/dist/cache-lifecycle.js +22 -0
- package/dist/cache-lifecycle.js.map +1 -1
- package/dist/cli/add-command.d.ts +2 -0
- package/dist/cli/add-command.d.ts.map +1 -1
- package/dist/cli/add-command.js +9 -3
- package/dist/cli/add-command.js.map +1 -1
- package/dist/cli/args.d.ts +3 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +29 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/constants.d.ts +4 -0
- package/dist/cli/constants.d.ts.map +1 -1
- package/dist/cli/constants.js +19 -0
- package/dist/cli/constants.js.map +1 -1
- package/dist/cli/create-command.d.ts +2 -0
- package/dist/cli/create-command.d.ts.map +1 -1
- package/dist/cli/create-command.js +11 -4
- package/dist/cli/create-command.js.map +1 -1
- package/dist/cli/extract-command.d.ts +2 -0
- package/dist/cli/extract-command.d.ts.map +1 -1
- package/dist/cli/extract-command.js +22 -5
- package/dist/cli/extract-command.js.map +1 -1
- package/dist/cli/list-command.d.ts +1 -0
- package/dist/cli/list-command.d.ts.map +1 -1
- package/dist/cli/list-command.js +6 -7
- package/dist/cli/list-command.js.map +1 -1
- package/dist/cli/manifest.d.ts +11 -0
- package/dist/cli/manifest.d.ts.map +1 -1
- package/dist/cli/manifest.js +16 -0
- package/dist/cli/manifest.js.map +1 -1
- package/dist/cli/store.d.ts +21 -1
- package/dist/cli/store.d.ts.map +1 -1
- package/dist/cli/store.js +189 -4
- package/dist/cli/store.js.map +1 -1
- package/dist/cli.js +18 -10
- package/dist/cli.js.map +1 -1
- package/dist/create-extract-runtime.d.ts +22 -0
- package/dist/create-extract-runtime.d.ts.map +1 -0
- package/dist/create-extract-runtime.js +27 -0
- package/dist/create-extract-runtime.js.map +1 -0
- package/dist/create-extract-session.d.ts.map +1 -1
- package/dist/create-extract-session.js +8 -2
- package/dist/create-extract-session.js.map +1 -1
- package/dist/create-mlx-extract-runtime.d.ts +18 -7
- package/dist/create-mlx-extract-runtime.d.ts.map +1 -1
- package/dist/create-mlx-extract-runtime.js +11 -1
- package/dist/create-mlx-extract-runtime.js.map +1 -1
- package/dist/create-pytorch-extract-runtime.d.ts +13 -0
- package/dist/create-pytorch-extract-runtime.d.ts.map +1 -0
- package/dist/create-pytorch-extract-runtime.js +52 -0
- package/dist/create-pytorch-extract-runtime.js.map +1 -0
- package/dist/default-models.d.ts +3 -8
- package/dist/default-models.d.ts.map +1 -1
- package/dist/default-models.js +4 -16
- package/dist/default-models.js.map +1 -1
- package/dist/extract-runtime-types.d.ts +16 -0
- package/dist/extract-runtime-types.d.ts.map +1 -0
- package/dist/extract-runtime-types.js +2 -0
- package/dist/extract-runtime-types.js.map +1 -0
- package/dist/extract-store.d.ts +48 -2
- package/dist/extract-store.d.ts.map +1 -1
- package/dist/extract-store.js +108 -10
- package/dist/extract-store.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/model-resolution.d.ts +15 -5
- package/dist/model-resolution.d.ts.map +1 -1
- package/dist/model-resolution.js +87 -27
- package/dist/model-resolution.js.map +1 -1
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/API.md +320 -0
- package/docs/CACHE_DESIGN.md +557 -0
- package/docs/LOCAL_MODEL_SETUP.md +765 -0
- package/docs/PROMPT_MODULE_SPEC.md +482 -0
- 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
|
|
70
|
-
| `add <storename> [-d <container>] [files...]` | 既存 store の corpus にファイルを追記し、KV cache を incremental prefill
|
|
71
|
-
| `extract <storename> [-d <container>] [query...]` | 指定 store
|
|
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
|
-
| `--
|
|
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
|
-
`
|
|
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
|
-
|
|
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
|
|
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: '
|
|
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` 済みエントリの
|
|
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` だけ残って
|
|
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
|
|
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
|
-
詳細は [プロンプトキャッシュ設計](
|
|
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
|
|
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
|
|
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
|
-
- [プロンプトモジュール仕様](
|
|
374
|
-
- [プロンプトキャッシュ設計](
|
|
375
|
-
- [ローカルモデルセットアップ](
|
|
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
|
|
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,
|
|
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"}
|
package/dist/cache-lifecycle.js
CHANGED
|
@@ -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":"
|
|
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;
|
|
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"}
|
package/dist/cli/add-command.js
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/cli/args.d.ts
CHANGED
|
@@ -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[];
|
package/dist/cli/args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"
|
|
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;
|
package/dist/cli/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/constants.d.ts
CHANGED
|
@@ -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"}
|
package/dist/cli/constants.js
CHANGED
|
@@ -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":"
|
|
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
|
|
23
|
+
let prepared;
|
|
24
24
|
try {
|
|
25
|
-
|
|
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:
|
|
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: ${
|
|
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;
|
|
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;AAE1D,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;AAY1D,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,QAAqE,CAAC;IAC1E,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,mBAAmB,CAAC;YACnC,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,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,QAAQ,CAAC,KAAK;YACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS;gBACrC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE;gBACzC,CAAC,CAAC,EAAE,CAAC;YACP,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,CACX,cAAc,SAAS,CAAC,MAAM,oBAAoB,QAAQ,CAAC,KAAK,eAAe,QAAQ,CAAC,QAAQ,EAAE;UAC9F,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC7E,CAAC;AACJ,CAAC"}
|
|
@@ -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":"
|
|
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"}
|