throughline 0.3.24 → 0.4.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/.claude/commands/tl.md +6 -21
- package/.codex-sidecar.yml +62 -0
- package/CHANGELOG.md +632 -0
- package/README.ja.md +71 -46
- package/README.md +420 -76
- package/bin/throughline.mjs +169 -7
- package/codex/skills/throughline/SKILL.md +157 -0
- package/codex/skills/throughline/agents/openai.yaml +7 -0
- package/docs/INHERITANCE_ON_CLEAR_ONLY.md +159 -0
- package/docs/L1_L2_L3_REDESIGN.md +415 -0
- package/docs/PUBLIC_RELEASE_PLAN.md +185 -0
- package/docs/THROUGHLINE_CLEAR_AUTO_HANDOFF_PLAN.md +286 -0
- package/docs/THROUGHLINE_CODEX_DUAL_SUPPORT.md +249 -0
- package/docs/THROUGHLINE_CODEX_FIRST_ROADMAP.md +555 -0
- package/docs/THROUGHLINE_CODEX_MONITOR_IMPLEMENTATION_PLAN.md +220 -0
- package/docs/THROUGHLINE_CODEX_TRIM_IMPLEMENTATION_PLAN.md +528 -0
- package/docs/THROUGHLINE_CODEX_TRIM_ROLLBACK_FIX_PLAN.md +672 -0
- package/docs/archive/CONCEPT.md +476 -0
- package/docs/archive/EXPERIMENT.md +371 -0
- package/docs/archive/README.md +22 -0
- package/docs/archive/SESSION_LINKING_DESIGN.md +231 -0
- package/docs/archive/THROUGHLINE_NEXT_STEPS.md +134 -0
- package/docs/throughline-codex-trim-rollback-incident-report.md +306 -0
- package/docs/throughline-handoff-context.example.json +57 -0
- package/docs/throughline-rollback-context-trim-insight.md +455 -0
- package/package.json +6 -2
- package/src/baton.mjs +17 -45
- package/src/baton.test.mjs +4 -41
- package/src/cli/codex-capture.mjs +95 -0
- package/src/cli/codex-handoff-model-smoke.mjs +292 -0
- package/src/cli/codex-handoff-model-smoke.test.mjs +262 -0
- package/src/cli/codex-handoff-smoke.mjs +163 -0
- package/src/cli/codex-handoff-smoke.test.mjs +149 -0
- package/src/cli/codex-handoff-start.mjs +291 -0
- package/src/cli/codex-handoff-start.test.mjs +194 -0
- package/src/cli/codex-hook.mjs +276 -0
- package/src/cli/codex-hook.test.mjs +293 -0
- package/src/cli/codex-host-primitive-audit.mjs +110 -0
- package/src/cli/codex-host-primitive-audit.test.mjs +75 -0
- package/src/cli/codex-restore-smoke.mjs +357 -0
- package/src/cli/codex-restore-source-audit.mjs +304 -0
- package/src/cli/codex-resume.mjs +138 -0
- package/src/cli/codex-rollback-model-visible-smoke.mjs +373 -0
- package/src/cli/codex-rollback-model-visible-smoke.test.mjs +255 -0
- package/src/cli/codex-sidecar-diagnostics.mjs +48 -0
- package/src/cli/codex-sidecar-dry-run.mjs +85 -0
- package/src/cli/codex-summarize.mjs +224 -0
- package/src/cli/codex-threads.mjs +89 -0
- package/src/cli/codex-visibility-smoke.mjs +196 -0
- package/src/cli/codex-vscode-restore-smoke.mjs +226 -0
- package/src/cli/codex-vscode-rollback-smoke.mjs +114 -0
- package/src/cli/doctor.mjs +503 -1
- package/src/cli/doctor.test.mjs +542 -3
- package/src/cli/handoff-preview.mjs +78 -0
- package/src/cli/help.test.mjs +64 -0
- package/src/cli/install.mjs +226 -3
- package/src/cli/install.test.mjs +205 -4
- package/src/cli/trim.mjs +564 -0
- package/src/codex-app-server.mjs +1816 -0
- package/src/codex-app-server.test.mjs +512 -0
- package/src/codex-auto-refresh.mjs +194 -0
- package/src/codex-auto-refresh.test.mjs +182 -0
- package/src/codex-capture.mjs +235 -0
- package/src/codex-capture.test.mjs +393 -0
- package/src/codex-handoff-model-smoke.mjs +114 -0
- package/src/codex-handoff-model-smoke.test.mjs +89 -0
- package/src/codex-handoff-smoke.mjs +124 -0
- package/src/codex-handoff-smoke.test.mjs +103 -0
- package/src/codex-handoff.mjs +331 -0
- package/src/codex-handoff.test.mjs +220 -0
- package/src/codex-host-primitive-audit.mjs +374 -0
- package/src/codex-host-primitive-audit.test.mjs +208 -0
- package/src/codex-restore-smoke.test.mjs +639 -0
- package/src/codex-restore-source-audit.mjs +1348 -0
- package/src/codex-restore-source-audit.test.mjs +623 -0
- package/src/codex-resume.test.mjs +242 -0
- package/src/codex-rollout-memory.mjs +711 -0
- package/src/codex-rollout-memory.test.mjs +610 -0
- package/src/codex-sidecar-cli.test.mjs +75 -0
- package/src/codex-sidecar.mjs +246 -0
- package/src/codex-sidecar.test.mjs +172 -0
- package/src/codex-summarize.test.mjs +143 -0
- package/src/codex-thread-identity.mjs +23 -0
- package/src/codex-thread-index.mjs +173 -0
- package/src/codex-thread-index.test.mjs +164 -0
- package/src/codex-usage.mjs +110 -0
- package/src/codex-usage.test.mjs +140 -0
- package/src/codex-visibility-smoke.test.mjs +222 -0
- package/src/codex-vscode-restore-smoke.mjs +206 -0
- package/src/codex-vscode-restore-smoke.test.mjs +325 -0
- package/src/codex-vscode-rollback-smoke.mjs +90 -0
- package/src/codex-vscode-rollback-smoke.test.mjs +290 -0
- package/src/db-schema.test.mjs +96 -0
- package/src/db.mjs +14 -1
- package/src/haiku-summarizer.mjs +267 -26
- package/src/haiku-summarizer.test.mjs +282 -0
- package/src/handoff-preview.test.mjs +108 -0
- package/src/handoff-record.mjs +294 -0
- package/src/handoff-record.test.mjs +226 -0
- package/src/hook-entrypoints.test.mjs +286 -0
- package/src/package-files.test.mjs +19 -0
- package/src/prompt-submit.mjs +9 -6
- package/src/resume-context.mjs +58 -171
- package/src/resume-context.test.mjs +177 -0
- package/src/session-start.mjs +85 -26
- package/src/state-file.mjs +50 -6
- package/src/state-file.test.mjs +50 -0
- package/src/token-monitor.mjs +14 -10
- package/src/token-monitor.test.mjs +27 -0
- package/src/trim-cli.test.mjs +1584 -0
- package/src/trim-model.mjs +584 -0
- package/src/trim-model.test.mjs +568 -0
- package/src/turn-processor.mjs +17 -10
- package/src/vscode-task.mjs +33 -10
- package/src/vscode-task.test.mjs +19 -9
- package/src/cli/save-inflight.mjs +0 -81
package/README.ja.md
CHANGED
|
@@ -97,7 +97,7 @@ flowchart LR
|
|
|
97
97
|
|
|
98
98
|
| 層 | 名称 | 保存先 | 内容 | ターンあたりコスト |
|
|
99
99
|
| --- | --- | --- | --- | --- |
|
|
100
|
-
| **L1** | スケルトン | 古いターンとして注入 | Haiku
|
|
100
|
+
| **L1** | スケルトン | 古いターンとして注入 | ターンの一行要約(既定は Claude Haiku、設定時は Codex sidecar も可) | 約 10 トークン |
|
|
101
101
|
| **L2** | ボディ | 直近ターンとして注入 | ユーザー本文 + アシスタント返答そのまま | 自然なフルサイズ |
|
|
102
102
|
| **L3** | ディテール | SQLite のみ | ツール I/O、システムメッセージ、画像、**拡張思考** (オンデマンド) | 重い、退避済 |
|
|
103
103
|
|
|
@@ -114,10 +114,11 @@ flowchart LR
|
|
|
114
114
|
- **それ以前** は L1 (`skeletons`) の一行要約として注入
|
|
115
115
|
- L3 は SQLite に残り、`/sc-detail <時刻>` でオンデマンド取得
|
|
116
116
|
|
|
117
|
-
L1
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
117
|
+
L1 要約は遅延実行で、20 ターン未満で終わるセッションでは外部要約器を呼ばず、
|
|
118
|
+
短いタスクの要約コストはゼロです。既定では
|
|
119
|
+
`claude -p --model claude-haiku-4-5-*` サブプロセスで **Claude Haiku 4.5** が生成します。
|
|
120
|
+
Claude Max のログイン認証を流用するため API キー不要です。
|
|
121
|
+
`codex-sidecar` が `summarize-l1` preset で明示設定されている場合は、そちらを使えます。
|
|
121
122
|
|
|
122
123
|
3 層 (L1/L2/L3) の書き込みパスは schema v5 から動作しています。
|
|
123
124
|
`/sc-detail HH:MM:SS` はユーザー / アシスタント本文 (L2) と、そのターンで
|
|
@@ -125,59 +126,75 @@ L3 に保存された `kind` 別 (ツール入力 / ツール出力 / hook 出
|
|
|
125
126
|
|
|
126
127
|
---
|
|
127
128
|
|
|
128
|
-
##
|
|
129
|
+
## 引き継ぎ: `/clear` で自動、env で OFF、`/tl` で明示
|
|
129
130
|
|
|
130
|
-
|
|
131
|
-
渡したいときは、現セッションで `/clear` または新規チャットを開く **前に** `/tl` を打ちます。
|
|
132
|
-
`/tl` 無しの場合、新セッションはまっさらな状態で始まり、過去メモリは引き継がれません。
|
|
131
|
+
Throughline 0.4.0 から引き継ぎは 2 経路:
|
|
133
132
|
|
|
134
|
-
`/
|
|
133
|
+
### auto path (デフォルト): `/clear` で自動引き継ぎ
|
|
135
134
|
|
|
136
|
-
1.
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
要約し、`throughline save-inflight` 経由でバトンの `memo_text` カラムに添付するよう
|
|
141
|
-
指示します。これにより、トランスクリプト再生だけでは保てない「いま考え中だった内容」を保存できます。
|
|
135
|
+
Claude Code 2.1.128 以降は `/clear` 直後の SessionStart hook に
|
|
136
|
+
`source='clear'` が確実に乗ります。Throughline がこれを検出して、前セッションの
|
|
137
|
+
メモリを新セッションに自動 merge します。**ユーザー操作不要** — `/clear`
|
|
138
|
+
だけで新チャットが「途中から」再開されます。
|
|
142
139
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
140
|
+
`THROUGHLINE_DISABLE_AUTO_HANDOFF=1` を環境変数に立てると auto path を OFF にできます。
|
|
141
|
+
|
|
142
|
+
### baton path (`/tl`): 明示意思マーカー
|
|
143
|
+
|
|
144
|
+
次のいずれかのユーザー向け:
|
|
145
|
+
|
|
146
|
+
- `THROUGHLINE_DISABLE_AUTO_HANDOFF=1` を立てている、**または**
|
|
147
|
+
- `/clear` 経由しないで引き継ぎたい (新 chat / VSCode 再起動など)
|
|
148
|
+
|
|
149
|
+
新セッションを開く前に `/tl` を打つと `UserPromptSubmit` hook が baton を書き、
|
|
150
|
+
次の `SessionStart` (1 時間以内) が baton を消費して merge します。
|
|
151
|
+
`source` 値関係なく発火します。
|
|
149
152
|
|
|
150
153
|
```
|
|
151
|
-
Session A
|
|
152
|
-
|
|
153
|
-
/clear |
|
|
154
|
-
| ▼
|
|
155
|
-
Session B ---- バトン読込 → A を B にマージ → バトン削除 ---->
|
|
156
|
-
|
|
|
157
|
-
(もう一度 /tl で更に渡せる)
|
|
154
|
+
auto path: Session A → /clear → Session B (A を auto-merge)
|
|
155
|
+
baton path: Session A → /tl → (新 chat / 再起動) → Session B (baton を消費して A を merge)
|
|
158
156
|
```
|
|
159
157
|
|
|
160
|
-
|
|
158
|
+
### 注入されるもの
|
|
159
|
+
|
|
160
|
+
両経路で同じ curated memory が注入されます:
|
|
161
|
+
|
|
162
|
+
- L1 サマリー (古い turn の一行要約)
|
|
163
|
+
- L2 verbatim (直近 20 turn の本文)
|
|
164
|
+
- L3 references (`throughline detail <時刻>` で引き出すコマンド一覧、本文は SQLite に残置)
|
|
161
165
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
`/clear` 後も `"startup"` に書き換えられてしまう
|
|
166
|
-
([issue #49937](https://github.com/anthropics/claude-code/issues/49937))。
|
|
167
|
-
source 判定は信用できないため、ユーザー駆動のバトンで回避。
|
|
168
|
-
- **決定論的**。時間窓ヒューリスティック、PID 推測、祖先プロセス追跡なし。
|
|
169
|
-
ユーザーが意思を宣言し、hook が実行する。それだけ。
|
|
166
|
+
注入は **「中断されたタスクの再開」** として再フレーミングされます。L2 verbatim に
|
|
167
|
+
最終 assistant turn (= 次に何をしようとしていたか) が含まれるため、別途 memo /
|
|
168
|
+
extended thinking セクションは注入されません。
|
|
170
169
|
|
|
171
|
-
各マージ行は `origin_session_id`
|
|
170
|
+
各マージ行は `origin_session_id` を保持するので、繰り返し引き継ぐと
|
|
172
171
|
記憶がチェーン状に蓄積します:
|
|
173
172
|
|
|
174
173
|
```
|
|
175
|
-
S1 (4 ターン) --/
|
|
176
|
-
|
|
174
|
+
S1 (4 ターン) --/clear--> S2 (S1 を auto-merge + 3 ターン追加) --/clear--> S3 (S2 を auto-merge + 5 ターン追加)
|
|
175
|
+
origin=S1×4 origin=S1×4, S2×3, S3×5
|
|
177
176
|
```
|
|
178
177
|
|
|
179
178
|
---
|
|
180
179
|
|
|
180
|
+
## Codex sidecar と Codex trim
|
|
181
|
+
|
|
182
|
+
Throughline の主軸は引き続き **Claude Code** です。Codex 対応は、Claude hooks /
|
|
183
|
+
slash command / transcript / baton / resume behavior を置き換えるものではなく、
|
|
184
|
+
adapter / projection として追加されます。
|
|
185
|
+
|
|
186
|
+
現時点で core Throughline が外部モデルを呼ぶのは L2→L1 要約だけです。
|
|
187
|
+
`codex-sidecar` が `summarize-l1` preset で設定されている場合はその要約に
|
|
188
|
+
Codex sidecar を使えます。使えない場合は、従来どおり Claude Haiku 経路を使います。
|
|
189
|
+
|
|
190
|
+
Codex 側 trim (= same-thread context trim) は `throughline trim --execute --host codex`
|
|
191
|
+
で発火します。Claude 側は `/clear` での auto path 引継ぎが本線になったため、
|
|
192
|
+
`/tl-trim` slash command は v0.4.0 で廃止されました。current-work framing は
|
|
193
|
+
SessionStart 注入の Reading Contract / Continuation Instruction で同じ意図を
|
|
194
|
+
継承しています。
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
181
198
|
## マルチセッション トークン監視
|
|
182
199
|
|
|
183
200
|
実行:
|
|
@@ -210,8 +227,13 @@ throughline monitor --session <id-prefix>
|
|
|
210
227
|
| `throughline monitor` | マルチセッション監視を起動 |
|
|
211
228
|
| `throughline monitor --diag` | TTY/columns/env 診断ダンプ (描画バグ切り分け用) |
|
|
212
229
|
| `throughline detail <時刻>` | あるターンの L2 本文と L3 ツール I/O を取得 (Claude が使う) |
|
|
213
|
-
| `throughline save-inflight` | `/tl` から呼ばれ、現バトンに in-flight メモを添付 (stdin 経由) |
|
|
214
230
|
| `throughline doctor` | Node バージョン、hook 登録状況、DB、PATH をチェック |
|
|
231
|
+
| `throughline doctor --trim --host claude` | trim boundary と手動手順を診断 |
|
|
232
|
+
| `throughline handoff-preview --session <id>` | Codex 向け `throughline_handoff` JSON projection を表示 |
|
|
233
|
+
| `throughline codex-sidecar-diagnostics` | この project の `codex-sidecar` diagnostics status を確認 |
|
|
234
|
+
| `throughline codex-sidecar-dry-run` | App Server を呼ばずに read-only sidecar request を正規化表示 |
|
|
235
|
+
| `throughline trim --dry-run --host codex` | Codex same-thread trim の dry-run preview |
|
|
236
|
+
| `throughline trim --execute --host codex` | Codex 同 thread の guarded rollback + DB memory inject |
|
|
215
237
|
| `throughline doctor --session <id-prefix>` | 特定セッションの state/transcript ズレを診断 |
|
|
216
238
|
| `throughline status` | DB 統計表示 (sessions / skeletons / bodies / details) |
|
|
217
239
|
| `throughline --version` | インストール済みバージョンを表示 |
|
|
@@ -220,12 +242,12 @@ throughline monitor --session <id-prefix>
|
|
|
220
242
|
|
|
221
243
|
| コマンド | 役割 |
|
|
222
244
|
| --- | --- |
|
|
223
|
-
| `/tl` |
|
|
245
|
+
| `/tl` | 引き継ぎバトンを書き込む (auto path を OFF にしているユーザー / `/clear` 経由しない引継ぎの逃げ道) |
|
|
224
246
|
| `/sc-detail <時刻>` | 過去ターンの L2 本文と L3 ツール I/O を取得 |
|
|
225
247
|
|
|
226
|
-
>
|
|
227
|
-
>
|
|
228
|
-
>
|
|
248
|
+
> v0.4.0 から auto-handoff がデフォルト ON です。`/clear` だけで新セッションが
|
|
249
|
+
> 「途中から」再開されます。`THROUGHLINE_DISABLE_AUTO_HANDOFF=1` で OFF にできます。
|
|
250
|
+
> `/tl` は OFF 設定下、または `/clear` 経由しない引継ぎ用の明示マーカー。
|
|
229
251
|
|
|
230
252
|
---
|
|
231
253
|
|
|
@@ -244,6 +266,9 @@ throughline monitor --session <id-prefix>
|
|
|
244
266
|
|
|
245
267
|
- [`docs/L1_L2_L3_REDESIGN.md`](docs/L1_L2_L3_REDESIGN.md) — L1/L2/L3 差分階層モデルの **設計仕様書** (schema v4 ベース + v5 L3 分類拡張)。記憶階層化ルールの正典
|
|
246
268
|
- [`docs/INHERITANCE_ON_CLEAR_ONLY.md`](docs/INHERITANCE_ON_CLEAR_ONLY.md) — `/tl` バトン引き継ぎ方式の設計判断記録 (schema v6–v7)
|
|
269
|
+
- [`docs/THROUGHLINE_CODEX_DUAL_SUPPORT.md`](docs/THROUGHLINE_CODEX_DUAL_SUPPORT.md) — Claude 主軸を維持したまま Codex 対応を足すための architecture brief
|
|
270
|
+
- [`docs/throughline-rollback-context-trim-insight.md`](docs/throughline-rollback-context-trim-insight.md) — rollback / trim 設計 insight。復元 memory を current work として読ませる制約も記録
|
|
271
|
+
- [`docs/THROUGHLINE_CODEX_TRIM_IMPLEMENTATION_PLAN.md`](docs/THROUGHLINE_CODEX_TRIM_IMPLEMENTATION_PLAN.md) — Claude/Codex 両対応と rollback trim の統合 TODO 計画
|
|
247
272
|
- [`docs/PUBLIC_RELEASE_PLAN.md`](docs/PUBLIC_RELEASE_PLAN.md) — 公開配布化プラン、§ 0 フォールバック禁止ルール、バージョン別実装ステータス
|
|
248
273
|
- [`CHANGELOG.md`](CHANGELOG.md) — リリース履歴
|
|
249
274
|
- [`docs/archive/`](docs/archive/) — 破棄済み旧設計 (CONCEPT 初期案、session-linking 実験記録など)
|