tianshu-harness 3.37.0 → 3.37.2

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 (57) hide show
  1. package/README.en.md +24 -8
  2. package/README.ja.md +11 -7
  3. package/README.ko.md +10 -7
  4. package/README.md +25 -9
  5. package/dist/{account-Q54MGORC.js → account-SIZF2YV5.js} +2 -2
  6. package/dist/{account-login-7X53AED6.js → account-login-JZHSEBGU.js} +3 -3
  7. package/dist/{account-status-I4TDW3ZM.js → account-status-I42D2QJQ.js} +3 -3
  8. package/dist/agent/worker-process/child.js +23 -23
  9. package/dist/benchmark/recovery-cli.js +2 -2
  10. package/dist/{bootstrap-LREPLPLO.js → bootstrap-OCB7B75Y.js} +21 -21
  11. package/dist/{chunk-OUTLAAYF.js → chunk-2MXA3BYF.js} +2 -2
  12. package/dist/{chunk-EXAFVT2W.js → chunk-2SJCIAG2.js} +16 -16
  13. package/dist/{chunk-6G4FHROQ.js → chunk-32GXAYAY.js} +1 -1
  14. package/dist/{chunk-YQ4HK5BP.js → chunk-37PVNRBF.js} +1 -1
  15. package/dist/{chunk-Q24C4C2R.js → chunk-3SRZJNTS.js} +1 -1
  16. package/dist/{chunk-G2YHK7QR.js → chunk-4HL4ZWFJ.js} +5 -5
  17. package/dist/{chunk-7NHSPDU3.js → chunk-54MNIMRJ.js} +2 -2
  18. package/dist/{chunk-OPVUYCEC.js → chunk-6VPF7NND.js} +1 -1
  19. package/dist/{chunk-QVGXSRL7.js → chunk-7KC4BJBU.js} +60 -30
  20. package/dist/{chunk-TPC63AAU.js → chunk-7KH7CLZB.js} +1 -1
  21. package/dist/{chunk-IJBBCKR3.js → chunk-AIGIYNMN.js} +2 -2
  22. package/dist/{chunk-B3RCV4YJ.js → chunk-EG5SELFI.js} +1 -1
  23. package/dist/{chunk-A7IV2AX3.js → chunk-FEPGST4S.js} +3 -3
  24. package/dist/{chunk-YPZQTLII.js → chunk-G3CVFDS6.js} +17 -17
  25. package/dist/{chunk-34U7X6AW.js → chunk-G6L3PYUI.js} +2 -2
  26. package/dist/{chunk-RB4SJIHS.js → chunk-GUJ7QD6C.js} +72 -20
  27. package/dist/{chunk-ODKXIMCN.js → chunk-MECGM47W.js} +2 -2
  28. package/dist/{chunk-OZFPXNC4.js → chunk-QDXMZ5AC.js} +3 -3
  29. package/dist/{chunk-YFHN7546.js → chunk-RIMYZ3FX.js} +1 -1
  30. package/dist/{chunk-SUDK4Q5C.js → chunk-SPQ77WUN.js} +1 -1
  31. package/dist/{chunk-7I7QVVKE.js → chunk-TWHEV3RK.js} +19 -19
  32. package/dist/{chunk-YQGZAYSV.js → chunk-WLJ3FN4I.js} +3 -3
  33. package/dist/{chunk-ADETW3LK.js → chunk-X7KI3IJ6.js} +1 -1
  34. package/dist/{chunk-C7TCIN7O.js → chunk-XQHEYVZG.js} +1 -1
  35. package/dist/{chunk-D2ZGK7SK.js → chunk-Y3XPPKJB.js} +4 -4
  36. package/dist/{chunk-R3CQ7UTA.js → chunk-Z2HBF7W7.js} +3 -3
  37. package/dist/cli/entry.js +1 -1
  38. package/dist/{create-agent-config-F44IKYBF.js → create-agent-config-YK6A3CAD.js} +5 -5
  39. package/dist/{cvm-ledger-DDC5JQZ2.js → cvm-ledger-O37NHGVE.js} +2 -2
  40. package/dist/{default-registry-GYHLKCGK.js → default-registry-VIIMJYIG.js} +8 -8
  41. package/dist/{goal-criteria-VL7QKBMY.js → goal-criteria-SSW4R6YV.js} +3 -3
  42. package/dist/{headless-coordinator-EJIXOU25.js → headless-coordinator-WYMOIMDK.js} +15 -15
  43. package/dist/{headless-tool-registry-K7O3GSGA.js → headless-tool-registry-C3KXAEYG.js} +21 -21
  44. package/dist/hook-runtime/manifest.json +3 -3
  45. package/dist/{loop-UQ6PK42N.js → loop-BHOH2Q7O.js} +10 -10
  46. package/dist/main.js +55 -55
  47. package/dist/package.json +1 -1
  48. package/dist/{plugin-session-cache-QVAXYF5F.js → plugin-session-cache-WTHR67QI.js} +1 -1
  49. package/dist/{provider-cli-NOIL54AY.js → provider-cli-WO5PMHDF.js} +4 -4
  50. package/dist/{recovery-cli-ZKTGF6AF.js → recovery-cli-7YNSFL45.js} +1 -1
  51. package/dist/{serve-C3RJZG5O.js → serve-THFHPIIB.js} +17 -17
  52. package/dist/{serve-agent-VDY5M2MN.js → serve-agent-FG7QN73X.js} +32 -32
  53. package/dist/{skills-cli-636CD2B3.js → skills-cli-KXX5NPQ3.js} +3 -3
  54. package/dist/{tool-pipeline-6UJXBZRA.js → tool-pipeline-AVV6MFFT.js} +5 -5
  55. package/package.json +1 -1
  56. package/dist/{chunk-LQXUGBRV.js → chunk-Q2P2X2T4.js} +3 -3
  57. package/dist/{chunk-ESJSMCQS.js → chunk-QMNTSDWW.js} +3 -3
package/README.en.md CHANGED
@@ -11,10 +11,24 @@
11
11
 
12
12
  <p align="center">
13
13
  <a href="https://github.com/huiliyi37/Tianshu-harness/releases/latest"><img src="https://img.shields.io/github/v/release/huiliyi37/Tianshu-harness?color=8B5CF6&label=Release&logo=github" alt="Release"></a>
14
+ <a href="https://github.com/huiliyi37/Tianshu-harness/releases"><img src="https://img.shields.io/github/downloads/huiliyi37/Tianshu-harness/total?color=181717&label=GitHub%20Downloads&logo=github" alt="GitHub Downloads"></a>
14
15
  <a href="https://www.npmjs.com/package/tianshu-harness"><img src="https://img.shields.io/npm/v/tianshu-harness?color=CB3837&label=npm&logo=npm" alt="npm"></a>
16
+ <a href="https://www.npmjs.com/package/tianshu-harness"><img src="https://img.shields.io/npm/d18m/tianshu-harness?color=CB3837&label=npm%20Downloads&logo=npm" alt="npm Downloads"></a>
17
+ <a href="https://atomgit.com/huiliyi37/Tianshu-harness"><img src="https://atomgit.com/huiliyi37/Tianshu-harness/star/badge.svg" alt="AtomGit Star"></a>
18
+ <a href="https://atomgit.com/huiliyi37/Tianshu-harness/releases"><img src="https://atomgit.com/huiliyi37/Tianshu-harness/download/badge.svg" alt="AtomGit Downloads"></a>
19
+ </p>
20
+
21
+ <p align="center">
22
+ <a href="https://trendshift.io/repositories/100440" target="_blank"><img src="https://trendshift.io/api/badge/trendshift/repositories/100440/daily?language=TypeScript" alt="Trendshift: TypeScript repository of the day" width="250" height="55"></a>
23
+ &nbsp;
24
+ <a href="https://atomgit.com/huiliyi37/Tianshu-harness"><img src="https://atomgit.com/huiliyi37/Tianshu-harness/star/new_badge.svg" alt="G-Star Selected by AtomGit" width="250" height="55"></a>
25
+ </p>
26
+
27
+ <p align="center">
15
28
  <a href="https://tianshuharness.com"><img src="https://img.shields.io/badge/Website-tianshuharness.com-4285F4?logo=googlechrome&logoColor=white" alt="Website"></a>
29
+ <a href="https://tianshu.club/"><img src="https://img.shields.io/badge/Forum-tianshu.club-F59E0B" alt="Starport Forum"></a>
16
30
  <a href="docs/user-guide.md"><img src="https://img.shields.io/badge/Docs-User%20Guide-FBBC04" alt="Docs"></a>
17
- <a href="https://discord.gg/XjWTATCHB"><img src="https://img.shields.io/badge/Discord-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
31
+ <a href="https://discord.gg/aNEPzPuYV"><img src="https://img.shields.io/badge/Discord-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
18
32
  <a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache%202.0-34A853" alt="License"></a>
19
33
  <a href="https://github.com/RyanAlberts/best-of-Agent-Harnesses"><img src="https://img.shields.io/badge/%F0%9F%8F%86_Best_of-Agent_Harnesses-5ac4bf" alt="Best of Agent Harnesses"></a>
20
34
  </p>
@@ -39,7 +53,7 @@ A model's **capability ceiling** is not its **runtime behaviour**. Put the same
39
53
  **Tianshu** is a coding-agent runtime written in TypeScript. The terminal TUI, the desktop app, and the VS Code extension share one agent kernel. Between the model and the real world it places a **Cognitive Virtual Machine (CVM)** that lifts goals, state, evidence, permissions, and termination conditions out of the conversation history and hands them to the runtime:
40
54
 
41
55
  * **Task contracts** — Every task gets a `TaskContract` recording goal, scope, constraints, and success criteria. Long sessions are held by the runtime, not by the model's memory.
42
- * **Evidence-gated delivery** — "Done" has to pass the `deliver_task` gate. Without tests, diffs, or verification commands as evidence, delivery is blocked.
56
+ * **Separated commit, verification and review** — `deliver_task` performs only an ownership-scoped safe commit: it blocks on ownership, cross-session conflicts and version consistency; verification gaps are disclosed honestly, never blocked on and never turned into quality endorsement. Targeted verification uses `run_tests` (explicit scope), independent review uses `review_changes` or `/review`.
43
57
  * **A deterministic outer loop** — 75 runtime hook modules across five phases of a turn, together with Sensorium state awareness and stall detection, observe and correct between model output and real action.
44
58
 
45
59
  <table>
@@ -47,13 +61,13 @@ A model's **capability ceiling** is not its **runtime behaviour**. Put the same
47
61
  <td align="center" width="25%"><b>99.3–99.6%</b><br><sub>prefix-cache hit rate<br>across 5 real long sessions</sub></td>
48
62
  <td align="center" width="25%"><b>¥880 → ¥20</b><br><sub>estimated input cost on the same<br>sessions at list price</sub></td>
49
63
  <td align="center" width="25%"><b>25</b><br><sub>built-in provider presets, plus any<br>OpenAI-compatible endpoint</sub></td>
50
- <td align="center" width="25%"><b>22,000</b><br><sub>test cases, roughly<br>1:1 with source lines</sub></td>
64
+ <td align="center" width="25%"><b>23,000</b><br><sub>test cases, roughly<br>1:1 with source lines</sub></td>
51
65
  </tr>
52
66
  </table>
53
67
 
54
68
  <p align="center">
55
69
  <img src="docs/brand/assets/tianshu-harness-screenshot.png" alt="Tianshu terminal TUI: welcome screen and GlanceBar status line" width="49%">
56
- <img src="docs/brand/assets/tianshu-gui-screenshot.jpg" alt="Tianshu desktop app: session sidebar and star-domain picker" width="49%">
70
+ <img src="docs/brand/assets/tianshu-gui-screenshot.jpg" alt="Tianshu desktop app: home and new-task panel" width="49%">
57
71
  </p>
58
72
  <p align="center"><sub>Left: terminal TUI · Right: desktop app · one agent kernel</sub></p>
59
73
 
@@ -251,7 +265,7 @@ This is a small pilot: 5 tasks, a single model, LLM review. It also measured the
251
265
 
252
266
  ### Engineering
253
267
 
254
- As of 2026-10: `src/` holds roughly 1,600 source files and 330K lines; tests are about 1,900 files and 22,000 cases. TypeScript strict with `noUncheckedIndexedAccess`, and every incident fix ships with a regression test. Definitions and milestones: [Engineering Metrics](docs/engineering-metrics.md).
268
+ As of 2026-10 (v3.37): `src/` holds roughly 1,700 source files and 350K lines; tests are about 2,100 files and 23,000 cases. TypeScript strict with `noUncheckedIndexedAccess`, and every incident fix ships with a regression test. Definitions and milestones: [Engineering Metrics](docs/engineering-metrics.md).
255
269
 
256
270
  <a id="star-domains"></a>
257
271
  ## Star Domains
@@ -288,15 +302,16 @@ New sessions default to **Qiming**. Switch with `/domain <name>`, auto-match fro
288
302
  | | |
289
303
  |---|---|
290
304
  | **Multi-agent orchestration** | `/scout` read-only parallel reconnaissance, `/team` wave-based parallel execution, `/council` multi-domain review that only produces a plan, `/galaxy` dimension-split attack with a global review. [Details](docs/user-guide.md#子代理编排) |
305
+ | **Separated review & verification** | Commits never auto-verify or auto-review: targeted verification via `run_tests` (empty input previews the scope), independent review via `review_changes` (pinned snapshot, read-only reviewer, persisted findings); delivery receipts carry no quality endorsement |
291
306
  | **Prefix cache engine** | Frozen prefix, delta appendix, read deduplication, resume cache inheritance; `/debug cache` diagnoses hit rate and fragmentation. [Details](docs/user-guide.md#前缀缓存引擎) |
292
307
  | **Plan Mode & Goal** | Plan, approve, then execute; `/goal` holds a goal across many turns until it is met or the budget runs out. [Details](docs/user-guide.md#plan-mode计划模式) |
293
308
  | **Handoff & rewind** | `/handoff` writes a structured handoff document; double-tap `Esc` rewinds to any earlier point. [Details](docs/user-guide.md#会话交接与恢复handoff--resume) |
294
- | **Project memory** | Knowledge is written to `.rivet/knowledge/memory.jsonl`; auto-injection carries constraint memories only, older findings need explicit recall and never hijack a new task. [Details](docs/user-guide.md#跨会话记忆) |
309
+ | **Project memory** | Knowledge is written to `.rivet/knowledge/memory.jsonl`; auto-injection carries constraint memories only, older findings need explicit recall and never hijack a new task; automatic memory formation is opt-in (off by default). [Details](docs/user-guide.md#跨会话记忆) |
295
310
  | **LSP integration** | 20+ language servers; go-to-definition and find-references become agent tools, and post-edit diagnostics flow back into the turn. Enabled only when installed locally |
296
311
  | **MCP & Skills** | External tool servers; reusable workflow playbooks with progressive disclosure, managed by `tianshu skills`. [Details](docs/user-guide.md#mcpmodel-context-protocol) |
297
312
  | **Cost control** | Automatic reasoning-effort downgrade, flash-model compaction, peak/off-peak pricing badge, `/usage` for the local token ledger. [Details](docs/user-guide.md#api-成本控制) |
298
313
  | **Pure-ANSI TUI** | Zero dependencies: GlanceBar status line, `/steer` mid-stream interrupt, command palette, inline images, plain-text mode for restricted terminals. [Details](docs/user-guide.md#终端-uitui) |
299
- | **Desktop app** | Integrated terminal, theme studio, offline local voice input, phone remote approval, concurrent sessions, WSL runtime on Windows. [Desktop Guide](docs/desktop-guide.md) |
314
+ | **Desktop app** | Integrated terminal, theme studio, offline local voice input, phone remote approval, concurrent sessions, WSL runtime on Windows; auto-update with resumable downloads, verified sources and self-recovery. [Desktop Guide](docs/desktop-guide.md) |
300
315
 
301
316
  <a id="supported-models"></a>
302
317
  ## Supported Models
@@ -432,7 +447,8 @@ This repository is the sync projection of the development repo; the desktop app
432
447
 
433
448
  - **Discussion** — [GitHub Discussions](https://github.com/huiliyi37/Tianshu-harness/discussions)
434
449
  - **Bugs and feature requests** — [GitHub Issues](https://github.com/huiliyi37/Tianshu-harness/issues); attaching `tianshu logs --json` speeds up triage
435
- - **Discord** — [Tianshu Harness community](https://discord.gg/XjWTATCHB)
450
+ - **Starport forum** — [tianshu.club](https://tianshu.club/): our self-hosted community for release discussion, tips and long-lived topics
451
+ - **Discord** — [Tianshu Harness community](https://discord.gg/aNEPzPuYV) [![Discord](https://img.shields.io/badge/Discord-Join%20us-5865F2?logo=discord&logoColor=white)](https://discord.gg/aNEPzPuYV)
436
452
  - **QQ group** — "TUI", group ID `1017892942`
437
453
  - **WeChat group** — scan the QR code; valid for 7 days, ask in Discussions if expired
438
454
 
package/README.ja.md CHANGED
@@ -31,7 +31,7 @@
31
31
  <img src="https://img.shields.io/badge/License-Apache%202.0-3B5BDB?style=for-the-badge&logo=apache" alt="License">
32
32
  <img src="https://img.shields.io/badge/TypeScript-Strict-blue?style=for-the-badge&logo=typescript" alt="TypeScript">
33
33
  <img src="https://img.shields.io/badge/Tests-19%2C000%2B%20Passed-green?style=for-the-badge&logo=testinglibrary" alt="Tests">
34
- <a href="https://discord.gg/XjWTATCHB"><img src="https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Discord"></a>
34
+ <a href="https://discord.gg/aNEPzPuYV"><img src="https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Discord"></a>
35
35
  <a href="https://atomgit.com/huiliyi37/Tianshu-harness"><img src="https://atomgit.com/huiliyi37/Tianshu-harness/star/badge.svg" alt="AtomGit Star"></a>
36
36
  <a href="https://github.com/huiliyi37/Tianshu-harness/releases"><img src="https://img.shields.io/github/downloads/huiliyi37/Tianshu-harness/total?logo=github&label=downloads" alt="GitHub downloads"></a>
37
37
  <a href="https://www.npmjs.com/package/tianshu-tui"><img src="https://img.shields.io/npm/dm/tianshu-tui?label=npm%20tianshu-tui" alt="npm tianshu-tui downloads"></a>
@@ -836,7 +836,7 @@ tianshu config set-approval auto-safe # デフォルト段階を永続化
836
836
  | `/doctor` | 環境ヘルスチェック+bash ツールがどの shell を使うか |
837
837
  | `/logs [open [desktop]]` | このセッションのログ保存先(セッション / キャッシュ / 六次元 / デスクトップ sidecar)。書き込みゲートとリサイクル説明付き。`open` はファイルマネージャで開く |
838
838
  | `/connect` | モデルサービス接続ウィザード(内蔵またはカスタムを選択、API キーを入力) |
839
- | `/config` `/settings` `/setup` | 設定パネル:サブエージェントルーティング / レビュースイッチ(`レビュー → コミット後の自動レビューをオフ`)/ 画像認識モデル / ツールセット・承認・デフォルト星域・デフォルトモデル / ミラー・プロキシ・検索バックエンド。`Tab` で欄切替、`Enter` で編集、`S` で保存。各項目に即時または次セッションで有効の表示 |
839
+ | `/config` `/settings` `/setup` | 設定パネル:サブエージェントルーティング / レビューサブエージェントのモデル / 画像認識モデル / ツールセット・承認・デフォルト星域・デフォルトモデル / ミラー・プロキシ・検索バックエンド。`Tab` で欄切替、`Enter` で編集、`S` で保存。各項目に即時または次セッションで有効の表示 |
840
840
  | `/cd <path>` | セッション途中で作業ディレクトリを切替(プレフィックスキャッシュ維持、セッション帰属は新プロジェクトへ移動) |
841
841
  | `/trust` | プロジェクト信頼管理——未信頼プロジェクトは hooks / プロジェクト MCP を読み込まず、プロジェクト設定の安全キーを剥離 |
842
842
  | `/exit` `/quit` | セッションを保存して終了 |
@@ -871,10 +871,13 @@ tianshu config set-approval auto-safe # デフォルト段階を永続化
871
871
 
872
872
  **レビューモード**
873
873
 
874
- `deliver_task` でコードをコミットするたびに、天枢は自動でコミット後レビューを実行します。レビューは 2 段階:ドキュメント/設定などの機械的変更は自動スキップ(L1 nudge)、コアコード変更は L2 配線チェック(wiring inspector)をトリガー。レビュー結果は納品レポートに現れ、コミットはブロックしません(advisory)。
875
- - **CLI(TUI)**:デフォルト有効。設定パネル → `レビュー` → `コミット後の自動レビューをオフ` で手動オフ可(チェックでレビューをスキップ)。または `RIVET_REVIEW_DISCIPLINE=0` 環境変数でグローバルにオフ。
876
- - **デスクトップ版(desktop)**:標準 DeepSeek セッションはデフォルト有効、Spark セッションはデフォルト有効かつレビューサブエージェントが spark-flash。`設定 → Routing → レビューサブエージェント` に 2 つの独立スイッチ:`SkipAuto`(標準セッション)、`SkipAutoSpark`(Spark セッション)。
877
- - 手動レビュー:任意のタイミングで `/review`(L2 対抗レビュー)または `/review max`(L3 五席レビュースコード)で現在の変更に深度レビューを実行。これは明示的リクエストであり、スイッチの影響を受けません。
874
+ コミット・検証・レビューは互いに独立しています。`deliver_task` でコミットしても自動レビューは走らず、レシートに「今回はテストもレビューも実行していない」と明記されます。テストは `run_tests`、レビューはあなたが起動します。
875
+
876
+ - `/review [重点]`:読み取り専用レビュアー 1 名(L2)が、このセッションの未コミット変更をレビュー。未コミット変更がなければこのセッションの直近のコミットをレビュー。
877
+ - `/review max [重点]`:読み取り専用の 5 人編隊(L3:セキュリティ / ライフサイクル / データフロー / サイレント / 配線)。
878
+ - **デスクトップ版(desktop)**:Plus メニュー → ⚖ Review → L1 / L2 / Max。上と同じ入口です。
879
+ - レビューは読み取り専用:テストを実行せず、コードを変更せず、コミットもしません。指摘はセッションに保存され、いつ対応するかはあなたが決めます。
880
+ - コミットでレビューは起動しないため、オフにするスイッチはありません。設定パネルの旧「コミット後の自動レビューをオフ」と `/review off|on` は互換のためだけに残っており、動作を変えません。詳細は [レビュー規律](docs/review-discipline.md) を参照。
878
881
 
879
882
  **サブエージェントとバックグラウンドタスク**
880
883
 
@@ -1166,7 +1169,8 @@ tianshu logs open desktop # sidecar ログディレクトリを開く
1166
1169
  ## 🤝 コミュニティとサポート
1167
1170
 
1168
1171
  - **使い方の質問 / ディスカッション** → [GitHub Discussions](https://github.com/huiliyi37/Tianshu-harness/discussions)
1169
- - **Discord コミュニティ** → [「天枢 tianshu-harness 官方交流群」に参加](https://discord.gg/XjWTATCHB)
1172
+ - **Starport フォーラム** → [tianshu.club](https://tianshu.club/)(自建コミュニティ「天枢星港」)
1173
+ - **Discord コミュニティ** → [「天枢 tianshu-harness 官方交流群」に参加](https://discord.gg/aNEPzPuYV)
1170
1174
  - **バグ報告 / 機能リクエスト** → [GitHub Issues](https://github.com/huiliyi37/Tianshu-harness/issues)
1171
1175
  - **セキュリティ脆弱性** → [プライベート報告](https://github.com/huiliyi37/Tianshu-harness/security/advisories/new)(公開 issue を開かないでください)
1172
1176
  - **コードへのコントリビュート** → [CONTRIBUTING.md](CONTRIBUTING.md) を参照
package/README.ko.md CHANGED
@@ -31,7 +31,7 @@
31
31
  <img src="https://img.shields.io/badge/License-Apache%202.0-3B5BDB?style=for-the-badge&logo=apache" alt="License">
32
32
  <img src="https://img.shields.io/badge/TypeScript-Strict-blue?style=for-the-badge&logo=typescript" alt="TypeScript">
33
33
  <img src="https://img.shields.io/badge/Tests-19%2C000%2B%20Passed-green?style=for-the-badge&logo=testinglibrary" alt="Tests">
34
- <a href="https://discord.gg/XjWTATCHB"><img src="https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Discord"></a>
34
+ <a href="https://discord.gg/aNEPzPuYV"><img src="https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Discord"></a>
35
35
  <a href="https://atomgit.com/huiliyi37/Tianshu-harness"><img src="https://atomgit.com/huiliyi37/Tianshu-harness/star/badge.svg" alt="AtomGit Star"></a>
36
36
  <a href="https://github.com/huiliyi37/Tianshu-harness/releases"><img src="https://img.shields.io/github/downloads/huiliyi37/Tianshu-harness/total?logo=github&label=downloads" alt="GitHub downloads"></a>
37
37
  <a href="https://www.npmjs.com/package/tianshu-tui"><img src="https://img.shields.io/npm/dm/tianshu-tui?label=npm%20tianshu-tui" alt="npm tianshu-tui downloads"></a>
@@ -840,7 +840,7 @@ tianshu config set-approval auto-safe # 기본 단계 영구 저장
840
840
  | `/doctor` | 환경 건강 점검 + bash 도구가 쓰는 셸 확인 |
841
841
  | `/logs [open [desktop]]` | 이번 세션 로그 위치(세션 / 캐시 / 6차원 / 데스크톱 sidecar), 쓰기 게이트와 회수 설명 포함; `open`은 파일 관리자에서 열기 |
842
842
  | `/connect` | 모델 제공자 연결 마법사(내장 또는 커스텀 선택, API 키 입력) |
843
- | `/config` `/settings` `/setup` | 설정 패널: 서브에이전트 라우팅 / 검토 스위치(`검토 → 제출 후 자동 검토 끄기`) / 이미지 인식 모델 / 도구 단계·승인·기본 星域·기본 모델 / 미러·프록시·검색 백엔드. `Tab` 탭 전환, `Enter` 편집, `S` 저장, 항목마다 즉시 또는 다음 세션 적용 표시 |
843
+ | `/config` `/settings` `/setup` | 설정 패널: 서브에이전트 라우팅 / 검토 서브에이전트 모델 / 이미지 인식 모델 / 도구 단계·승인·기본 星域·기본 모델 / 미러·프록시·검색 백엔드. `Tab` 탭 전환, `Enter` 편집, `S` 저장, 항목마다 즉시 또는 다음 세션 적용 표시 |
844
844
  | `/cd <path>` | 세션 중간에 작업 디렉터리 전환(프리픽스 캐시 유지, 세션 소속은 새 프로젝트로 이동) |
845
845
  | `/trust` | 프로젝트 신뢰 관리——신뢰하지 않은 프로젝트는 hooks / 프로젝트 MCP를 로드하지 않고, 프로젝트 설정 안전 키를 제거 |
846
846
  | `/exit` `/quit` | 세션 저장 후 종료 |
@@ -875,11 +875,13 @@ tianshu config set-approval auto-safe # 기본 단계 영구 저장
875
875
 
876
876
  **검토 모드**
877
877
 
878
- `deliver_task`로 코드를 제출할 때마다 天枢는 자동으로 제출 후 검토를 실행합니다. 검토는 두 단계로 나뉩니다: 문서/설정 등 기계적 변경은 자동으로 건너뛰고(L1 nudge), 핵심 코드 변경은 L2 배선 검사(wiring inspector)를 유발합니다. 검토 결과는 인도 리포트에 나타나며 제출을 막지는 않습니다(advisory).
878
+ 제출·검증·검토는 서로 독립적입니다. `deliver_task`로 제출해도 자동 검토는 실행되지 않으며, 영수증에 「이번에는 테스트도 검토도 실행하지 않음」이라고 명시됩니다. 테스트는 `run_tests`, 검토는 사용자가 시작합니다.
879
879
 
880
- - **CLI(TUI)**: 기본 켜짐. 설정 패널 → `검토` → `제출 후 자동 검토 끄기`로 수동 종료 가능(체크하면 검토 건너뜀). `RIVET_REVIEW_DISCIPLINE=0` 환경 변수로 전역 종료할 수도 있습니다.
881
- - **데스크톱 앱(desktop)**: 표준 DeepSeek 세션은 기본 켜짐, Spark 세션은 기본 켜짐 + 검토 서브에이전트가 spark-flash 사용. `설정 → Routing → 검토 서브에이전트`에서 두 개의 독립 스위치를 찾을 수 있습니다: `SkipAuto`(표준 세션), `SkipAutoSpark`(Spark 세션).
882
- - 수동 검토: 언제든 `/review`(L2 대항 검토)나 `/review max`(L3 다섯 자리 검토 squad)로 현재 변경에 대한 심층 검토를 실행할 수 있습니다. 이것은 명시적 요청이라 스위치의 영향을 받지 않습니다.
880
+ - `/review [중점]`: 읽기 전용 검토자 1명(L2)이 이 세션의 미제출 변경을 검토합니다. 미제출 변경이 없으면 이 세션의 최근 제출을 검토합니다.
881
+ - `/review max [중점]`: 읽기 전용 5인 편대(L3: 보안 / 생명주기 / 데이터 흐름 / 침묵 / 배선).
882
+ - **데스크톱 앱(desktop)**: Plus 메뉴 → ⚖ Review → L1 / L2 / Max. 위와 같은 입구입니다.
883
+ - 검토는 읽기 전용입니다: 테스트를 실행하지 않고, 코드를 수정하지 않으며, 제출하지 않습니다. 발견 사항은 세션에 저장되고, 언제 처리할지는 사용자가 정합니다.
884
+ - 제출이 검토를 시작하지 않으므로 끌 스위치가 없습니다. 설정 패널의 옛 「제출 후 자동 검토 끄기」와 `/review off|on`은 호환용으로만 남아 있으며 동작을 바꾸지 않습니다. 자세한 내용은 [검토 규율](docs/review-discipline.md) 참고.
883
885
 
884
886
  **서브에이전트와 백그라운드 작업**
885
887
 
@@ -1171,7 +1173,8 @@ tianshu logs open desktop # sidecar 로그 디렉터리 열기(GUI
1171
1173
  ## 🤝 커뮤니티와 지원
1172
1174
 
1173
1175
  - **사용 문제 / 토론** → [GitHub Discussions](https://github.com/huiliyi37/Tianshu-harness/discussions)
1174
- - **Discord 커뮤니티** → [Tianshu Harness Discord 참여](https://discord.gg/XjWTATCHB)
1176
+ - **Starport 포럼** → [tianshu.club](https://tianshu.club/)(자체 커뮤니티 「天枢星港」)
1177
+ - **Discord 커뮤니티** → [Tianshu Harness Discord 참여](https://discord.gg/aNEPzPuYV)
1175
1178
  - **버그 리포트 / 기능 요청** → [GitHub Issues](https://github.com/huiliyi37/Tianshu-harness/issues)
1176
1179
  - **보안 취약점** → [비공개 보고](https://github.com/huiliyi37/Tianshu-harness/security/advisories/new)(공개 issue를 열지 말 것)
1177
1180
  - **코드 기여** → [CONTRIBUTING.md](CONTRIBUTING.md) 참조
package/README.md CHANGED
@@ -5,16 +5,30 @@
5
5
  <h1 align="center">天枢 Tianshu Harness</h1>
6
6
 
7
7
  <p align="center">
8
- <b>面向编程智能体的认知运行时</b><br>
8
+ <b>面向编程智能体的终端运行时,把东方的星辰带给世界的每一个开发者。</b><br>
9
9
  <sub>目标不漂移 · 完成有证据 · 验证有闭环</sub>
10
10
  </p>
11
11
 
12
12
  <p align="center">
13
13
  <a href="https://github.com/huiliyi37/Tianshu-harness/releases/latest"><img src="https://img.shields.io/github/v/release/huiliyi37/Tianshu-harness?color=8B5CF6&label=Release&logo=github" alt="Release"></a>
14
+ <a href="https://github.com/huiliyi37/Tianshu-harness/releases"><img src="https://img.shields.io/github/downloads/huiliyi37/Tianshu-harness/total?color=181717&label=GitHub%20%E4%B8%8B%E8%BD%BD&logo=github" alt="GitHub Downloads"></a>
14
15
  <a href="https://www.npmjs.com/package/tianshu-harness"><img src="https://img.shields.io/npm/v/tianshu-harness?color=CB3837&label=npm&logo=npm" alt="npm"></a>
16
+ <a href="https://www.npmjs.com/package/tianshu-harness"><img src="https://img.shields.io/npm/d18m/tianshu-harness?color=CB3837&label=npm%20%E4%B8%8B%E8%BD%BD&logo=npm" alt="npm Downloads"></a>
17
+ <a href="https://atomgit.com/huiliyi37/Tianshu-harness"><img src="https://atomgit.com/huiliyi37/Tianshu-harness/star/badge.svg" alt="AtomGit Star"></a>
18
+ <a href="https://atomgit.com/huiliyi37/Tianshu-harness/releases"><img src="https://atomgit.com/huiliyi37/Tianshu-harness/download/badge.svg" alt="AtomGit Downloads"></a>
19
+ </p>
20
+
21
+ <p align="center">
22
+ <a href="https://trendshift.io/repositories/100440" target="_blank"><img src="https://trendshift.io/api/badge/trendshift/repositories/100440/daily?language=TypeScript" alt="Trendshift: TypeScript repository of the day" width="250" height="55"></a>
23
+ &nbsp;
24
+ <a href="https://atomgit.com/huiliyi37/Tianshu-harness"><img src="https://atomgit.com/huiliyi37/Tianshu-harness/star/new_badge.svg" alt="G-Star Selected by AtomGit" width="250" height="55"></a>
25
+ </p>
26
+
27
+ <p align="center">
15
28
  <a href="https://tianshuharness.com"><img src="https://img.shields.io/badge/Website-tianshuharness.com-4285F4?logo=googlechrome&logoColor=white" alt="Website"></a>
29
+ <a href="https://tianshu.club/"><img src="https://img.shields.io/badge/%E6%98%9F%E6%B8%AF%E8%AE%BA%E5%9D%9B-tianshu.club-F59E0B" alt="星港论坛"></a>
16
30
  <a href="docs/user-guide.md"><img src="https://img.shields.io/badge/Docs-%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C-FBBC04" alt="Docs"></a>
17
- <a href="https://discord.gg/XjWTATCHB"><img src="https://img.shields.io/badge/Discord-%E4%BA%A4%E6%B5%81%E7%BE%A4-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
31
+ <a href="https://discord.gg/aNEPzPuYV"><img src="https://img.shields.io/badge/Discord-%E4%BA%A4%E6%B5%81%E7%BE%A4-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
18
32
  <a href="LICENSE"><img src="https://img.shields.io/badge/License-Apache%202.0-34A853" alt="License"></a>
19
33
  <a href="https://github.com/RyanAlberts/best-of-Agent-Harnesses"><img src="https://img.shields.io/badge/%F0%9F%8F%86_Best_of-Agent_Harnesses-5ac4bf" alt="Best of Agent Harnesses"></a>
20
34
  </p>
@@ -38,7 +52,7 @@
38
52
  **天枢**是一个 TypeScript 编写的编程 agent 运行时,终端 TUI、桌面端和 VS Code 插件共用同一个内核。它在模型和真实世界之间加了一层**认知执行环境 CVM**(Cognitive Virtual Machine),把目标、状态、证据、权限和终止条件从对话历史里拿出来,交给运行时持续管理:
39
53
 
40
54
  * **任务契约**:每个任务有独立的 `TaskContract`,记录目标、范围、约束和成功标准。长会话里的目标由运行时持有,不依赖模型「记得」。
41
- * **证据门控的交付**:「完成」要过 `deliver_task` 交付门。没有测试、diff 或验证命令作为证据,交付会被拦下。
55
+ * **提交、验证、审查分离的交付**:`deliver_task` 只做归属限定的安全提交——所有权、跨会话冲突、版本一致性不合格就拦下;验证缺口如实披露但不阻断、也不冒充质量背书。定向验证用 `run_tests`(显式范围),独立审查用 `review_changes` 或 `/review`。
42
56
  * **确定性监督外环**:75 个运行时 hook 模块分布在一个回合的五个阶段,配合 Sensorium 状态感知与收敛、空转检测,在模型输出与真实动作之间做观测和纠偏。
43
57
 
44
58
  <table>
@@ -46,13 +60,13 @@
46
60
  <td align="center" width="25%"><b>99.3–99.6%</b><br><sub>5 个真实长会话的<br>前缀缓存命中率</sub></td>
47
61
  <td align="center" width="25%"><b>¥880 → ¥20</b><br><sub>同一批会话按刊例价<br>估算的 input 成本</sub></td>
48
62
  <td align="center" width="25%"><b>25 项</b><br><sub>模型服务商预设<br>另支持 OpenAI 兼容端点</sub></td>
49
- <td align="center" width="25%"><b>2.2 万条</b><br><sub>测试用例<br>与源码规模约 1:1</sub></td>
63
+ <td align="center" width="25%"><b>2.3 万条</b><br><sub>测试用例<br>与源码规模约 1:1</sub></td>
50
64
  </tr>
51
65
  </table>
52
66
 
53
67
  <p align="center">
54
68
  <img src="docs/brand/assets/tianshu-harness-screenshot.png" alt="天枢终端 TUI:欢迎页与 GlanceBar 状态栏" width="49%">
55
- <img src="docs/brand/assets/tianshu-gui-screenshot.jpg" alt="天枢桌面端:会话侧栏与星域速选" width="49%">
69
+ <img src="docs/brand/assets/tianshu-gui-screenshot.jpg" alt="天枢桌面端:首页与新任务面板" width="49%">
56
70
  </p>
57
71
  <p align="center"><sub>左:终端 TUI · 右:桌面端 · 同一个 agent 内核</sub></p>
58
72
 
@@ -239,7 +253,7 @@ CVM 不改权重,也不把模型变成确定性程序,而是在概率认知
239
253
 
240
254
  ### 工程
241
255
 
242
- 截至 2026-10:`src/` 约 1,600 个源码文件、33 万行,测试约 1,900 个文件、2.2 万条用例。TypeScript strict,开启 `noUncheckedIndexedAccess`,事故修复必须附回归测试。口径与里程碑见 [工程质量指标](docs/engineering-metrics.md)。
256
+ 截至 2026-10(v3.37):`src/` 约 1,700 个源码文件、35 万行,测试约 2,100 个文件、2.3 万条用例。TypeScript strict,开启 `noUncheckedIndexedAccess`,事故修复必须附回归测试。口径与里程碑见 [工程质量指标](docs/engineering-metrics.md)。
243
257
 
244
258
  ## 星域
245
259
 
@@ -256,15 +270,16 @@ CVM 不改权重,也不把模型变成确定性程序,而是在概率认知
256
270
  | | |
257
271
  |---|---|
258
272
  | **多代理编排** | `/scout` 只读并行侦察,`/team` 按文件分波并行施工,`/council` 多星域会诊只出计划,`/galaxy` 按维度拆分并做全局审查。[详情](docs/user-guide.md#子代理编排) |
273
+ | **审查与验证分离** | 提交不自动验证也不自动派审查:定向验证 `run_tests`(空参数只给范围预览),独立审查 `review_changes`(固定快照、只读 reviewer、发现持久化),交付回执不作质量背书 |
259
274
  | **前缀缓存引擎** | 冻结前缀、增量附录、Read 去重、resume 缓存继承,`/debug cache` 诊断命中率与碎裂原因。[详情](docs/user-guide.md#前缀缓存引擎) |
260
275
  | **Plan Mode 与 Goal** | 先计划、审批、再执行;`/goal` 设定跨多轮目标,持续迭代到达成或预算耗尽。[详情](docs/user-guide.md#plan-mode计划模式) |
261
276
  | **交接与倒带** | `/handoff` 生成结构化交接文档;双击 `Esc` 倒带到任一历史点。[详情](docs/user-guide.md#会话交接与恢复handoff--resume) |
262
- | **项目记忆** | 知识写入 `.rivet/knowledge/memory.jsonl`;自动注入只带约束类记忆,旧问题显式 recall,不劫持新任务。[详情](docs/user-guide.md#跨会话记忆) |
277
+ | **项目记忆** | 知识写入 `.rivet/knowledge/memory.jsonl`;自动注入只带约束类记忆,旧问题显式 recall,不劫持新任务;自动记忆形成为 opt-in(默认关闭)。[详情](docs/user-guide.md#跨会话记忆) |
263
278
  | **LSP 集成** | 20+ 种语言服务器,跳转定义与查找引用作为 agent 工具,编辑后的诊断自动回注。本机装了才启用 |
264
279
  | **MCP 与 Skills** | 接入外部工具服务器;可复用的工作流剧本,渐进披露,`tianshu skills` 统一管理。[详情](docs/user-guide.md#mcpmodel-context-protocol) |
265
280
  | **成本控制** | 推理强度自动降档、压缩走轻量模型、峰谷计价提醒,`/usage` 查看本地 Token 账本。[详情](docs/user-guide.md#api-成本控制) |
266
281
  | **自研 TUI** | 纯 ANSI 零依赖:GlanceBar 状态栏、流式中 `/steer` 打断、命令面板、内联图片、受限终端纯文本模式。[详情](docs/user-guide.md#终端-uitui) |
267
- | **桌面端** | 集成终端、主题工作室、本地离线语音输入、手机遥控审批、多会话并发、Windows 下连接 WSL 运行时。[桌面端指南](docs/desktop-guide.md) |
282
+ | **桌面端** | 集成终端、主题工作室、本地离线语音输入、手机遥控审批、多会话并发、Windows 下连接 WSL 运行时;自动更新断点续传、来源校验、损坏自恢复。[桌面端指南](docs/desktop-guide.md) |
268
283
 
269
284
  ## 支持的模型
270
285
 
@@ -375,7 +390,8 @@ node dist/cli/entry.js
375
390
 
376
391
  - **讨论与提问**:[GitHub Discussions](https://github.com/huiliyi37/Tianshu-harness/discussions)
377
392
  - **Bug 与功能请求**:[GitHub Issues](https://github.com/huiliyi37/Tianshu-harness/issues),附上 `tianshu logs --json` 的输出能更快定位
378
- - **Discord**:[天枢 tianshu-harness 官方交流群](https://discord.gg/XjWTATCHB)
393
+ - **星港论坛**:[tianshu.club](https://tianshu.club/) — 自建社区「天枢星港」,版本讨论、经验分享与长期话题的存档地(Token 台账可选同步展示)
394
+ - **Discord**:[天枢 tianshu-harness 官方交流群](https://discord.gg/aNEPzPuYV) [![Discord](https://img.shields.io/badge/Discord-%E5%8A%A0%E5%85%A5%E4%BA%A4%E6%B5%81%E7%BE%A4-5865F2?logo=discord&logoColor=white)](https://discord.gg/aNEPzPuYV)
379
395
  - **QQ 群**:「TUI」,群号 `1017892942`
380
396
  - **微信群**:扫码加入,二维码 7 天有效,过期请在 Discussions 留言补码
381
397
 
@@ -33,9 +33,9 @@ import {
33
33
  saveAccountIdentity,
34
34
  saveAccountProfile,
35
35
  saveAccountToken
36
- } from "./chunk-ESJSMCQS.js";
37
- import "./chunk-XUMXRP3L.js";
36
+ } from "./chunk-QMNTSDWW.js";
38
37
  import "./chunk-GH4JI6BC.js";
38
+ import "./chunk-XUMXRP3L.js";
39
39
  import "./chunk-R5Q7AA2C.js";
40
40
  import "./chunk-4I2HDYJG.js";
41
41
  export {
@@ -17,7 +17,7 @@ async function handleAccountLogin(app) {
17
17
  accountStore,
18
18
  saveAccountToken,
19
19
  isTerminalPollStatus
20
- } = await import("./account-Q54MGORC.js");
20
+ } = await import("./account-SIZF2YV5.js");
21
21
  const { openInBrowser } = await import("./login-flow-WBIW4TPG.js");
22
22
  const { rivetHome } = await import("./paths-PE56RINB.js");
23
23
  app.commitStatic("\u6B63\u5728\u5411\u5929\u67A2\u7533\u8BF7\u8BBE\u5907\u6388\u6743\u2026");
@@ -42,7 +42,7 @@ ${created.verifyUrl}
42
42
  });
43
43
  if (result.status === "approved" && result.accessToken) {
44
44
  const token = saveAccountToken(accountStore(rivetHome()), result);
45
- const { primeStellarIdentity } = await import("./account-status-I4TDW3ZM.js");
45
+ const { primeStellarIdentity } = await import("./account-status-I42D2QJQ.js");
46
46
  const identityLine = await primeStellarIdentity(token.accessToken);
47
47
  app.commitStatic("\u2705 \u5DF2\u767B\u5F55\u5929\u67A2\u8D26\u53F7\u2014\u2014\u684C\u9762\u7AEF\u4E0E\u7F51\u9875\u7AEF\u73B0\u5728\u770B\u5230\u540C\u4E00\u4EFD\u8BBE\u5907\u4E0E\u8BA2\u9605\u3002");
48
48
  if (identityLine) app.commitStatic(`\u661F\u7C4D\uFF1A${identityLine}`);
@@ -54,7 +54,7 @@ ${created.verifyUrl}
54
54
  return true;
55
55
  }
56
56
  async function handleAccountLogout(app) {
57
- const { accountStore, revokeAccountSession } = await import("./account-Q54MGORC.js");
57
+ const { accountStore, revokeAccountSession } = await import("./account-SIZF2YV5.js");
58
58
  const { rivetHome } = await import("./paths-PE56RINB.js");
59
59
  const store = accountStore(rivetHome());
60
60
  const credential = store.load()?.accessToken;
@@ -5,12 +5,12 @@ import {
5
5
  commitWelcomeStellarIdentityLine,
6
6
  formatStellarIdentityLine,
7
7
  primeStellarIdentity
8
- } from "./chunk-6G4FHROQ.js";
9
- import "./chunk-ESJSMCQS.js";
8
+ } from "./chunk-32GXAYAY.js";
9
+ import "./chunk-QMNTSDWW.js";
10
+ import "./chunk-GH4JI6BC.js";
10
11
  import "./chunk-6I2YCDUJ.js";
11
12
  import "./chunk-XUMXRP3L.js";
12
13
  import "./chunk-MUIODEN6.js";
13
- import "./chunk-GH4JI6BC.js";
14
14
  import "./chunk-3DZ5UT3I.js";
15
15
  import "./chunk-GP37UWT4.js";
16
16
  import "./chunk-R5Q7AA2C.js";
@@ -2,28 +2,28 @@
2
2
  import { createRequire as __rivetCreateRequire } from 'node:module'; const require = __rivetCreateRequire(import.meta.url);
3
3
  import {
4
4
  buildModelCards
5
- } from "../../chunk-YQGZAYSV.js";
5
+ } from "../../chunk-WLJ3FN4I.js";
6
6
  import {
7
7
  CHILD_TICK_INTERVAL_MS,
8
8
  DomainKnowledgeStore,
9
9
  createFrameDecoder,
10
10
  createInteractiveToolRegistry,
11
11
  encodeFrame
12
- } from "../../chunk-EXAFVT2W.js";
12
+ } from "../../chunk-2SJCIAG2.js";
13
13
  import {
14
14
  DelegationCoordinator,
15
15
  createWorkerRuntimeFactory,
16
16
  runWorkerSession,
17
17
  workerFailureResult
18
- } from "../../chunk-G2YHK7QR.js";
18
+ } from "../../chunk-4HL4ZWFJ.js";
19
19
  import "../../chunk-QH44FLDF.js";
20
- import "../../chunk-D2ZGK7SK.js";
20
+ import "../../chunk-Y3XPPKJB.js";
21
21
  import "../../chunk-NBCW3AJZ.js";
22
- import "../../chunk-YPZQTLII.js";
22
+ import "../../chunk-G3CVFDS6.js";
23
23
  import {
24
24
  filterToolRegistry
25
25
  } from "../../chunk-ZGYMTR24.js";
26
- import "../../chunk-TPC63AAU.js";
26
+ import "../../chunk-7KH7CLZB.js";
27
27
  import "../../chunk-6FEJAGKX.js";
28
28
  import "../../chunk-VPJJ55WU.js";
29
29
  import "../../chunk-XMSZJCNB.js";
@@ -33,27 +33,27 @@ import "../../chunk-UYR23YAR.js";
33
33
  import "../../chunk-5VZWXY7D.js";
34
34
  import "../../chunk-MHWHJU5B.js";
35
35
  import "../../chunk-6ZVYO2RV.js";
36
- import "../../chunk-RB4SJIHS.js";
36
+ import "../../chunk-GUJ7QD6C.js";
37
37
  import "../../chunk-YDL6H5EF.js";
38
38
  import "../../chunk-BUPAWHNU.js";
39
- import "../../chunk-YQ4HK5BP.js";
39
+ import "../../chunk-37PVNRBF.js";
40
40
  import "../../chunk-HVO25CQO.js";
41
41
  import "../../chunk-TKSE3QAY.js";
42
- import "../../chunk-7I7QVVKE.js";
42
+ import "../../chunk-TWHEV3RK.js";
43
43
  import "../../chunk-SMMWTH2X.js";
44
44
  import {
45
45
  deriveWorkerSessionId
46
46
  } from "../../chunk-Q56A5NIH.js";
47
47
  import "../../chunk-6I2YCDUJ.js";
48
48
  import "../../chunk-4RCVGE32.js";
49
- import "../../chunk-R3CQ7UTA.js";
49
+ import "../../chunk-Z2HBF7W7.js";
50
50
  import {
51
51
  PromptEngine
52
- } from "../../chunk-ADETW3LK.js";
52
+ } from "../../chunk-X7KI3IJ6.js";
53
53
  import {
54
54
  ModelBindingUnavailable,
55
55
  resolveModelBinding
56
- } from "../../chunk-C7TCIN7O.js";
56
+ } from "../../chunk-XQHEYVZG.js";
57
57
  import {
58
58
  applyDescriptionMode
59
59
  } from "../../chunk-ULTZP5EM.js";
@@ -73,9 +73,9 @@ import "../../chunk-GLNSIQCG.js";
73
73
  import "../../chunk-S3JLCMYK.js";
74
74
  import "../../chunk-IHS675GQ.js";
75
75
  import "../../chunk-J4BX3L5F.js";
76
- import "../../chunk-7NHSPDU3.js";
76
+ import "../../chunk-54MNIMRJ.js";
77
77
  import "../../chunk-F4YO6TH6.js";
78
- import "../../chunk-LQXUGBRV.js";
78
+ import "../../chunk-Q2P2X2T4.js";
79
79
  import "../../chunk-CABETIHP.js";
80
80
  import "../../chunk-YFQDPZ5E.js";
81
81
  import "../../chunk-LCRH7DHL.js";
@@ -132,10 +132,6 @@ import "../../chunk-G7VEM5DN.js";
132
132
  import "../../chunk-MUIODEN6.js";
133
133
  import "../../chunk-FB6BPHRP.js";
134
134
  import "../../chunk-KL4F2FYA.js";
135
- import "../../chunk-RWCX2NBM.js";
136
- import "../../chunk-A2WIYFPK.js";
137
- import "../../chunk-OCGQY3HN.js";
138
- import "../../chunk-JIVTST33.js";
139
135
  import {
140
136
  HookRpcClient,
141
137
  acknowledgeManagedProDenial,
@@ -143,18 +139,19 @@ import {
143
139
  } from "../../chunk-WZWOG6SI.js";
144
140
  import "../../chunk-6PBIFODH.js";
145
141
  import "../../chunk-C2G4F4QA.js";
146
- import "../../chunk-ODFVU622.js";
147
- import "../../chunk-DLVSLSMB.js";
148
- import "../../chunk-T2B6Z67Y.js";
142
+ import "../../chunk-RWCX2NBM.js";
143
+ import "../../chunk-A2WIYFPK.js";
144
+ import "../../chunk-OCGQY3HN.js";
145
+ import "../../chunk-JIVTST33.js";
149
146
  import {
150
147
  createProviderClient
151
- } from "../../chunk-IJBBCKR3.js";
148
+ } from "../../chunk-AIGIYNMN.js";
152
149
  import {
153
150
  resolveCapabilities
154
151
  } from "../../chunk-USRIG5QU.js";
155
152
  import "../../chunk-LPYOO7VH.js";
156
153
  import "../../chunk-EAU4YQUW.js";
157
- import "../../chunk-Q24C4C2R.js";
154
+ import "../../chunk-3SRZJNTS.js";
158
155
  import "../../chunk-KJ7QRUYA.js";
159
156
  import "../../chunk-ZBCFV6QX.js";
160
157
  import "../../chunk-DW2ZQATG.js";
@@ -173,6 +170,9 @@ import "../../chunk-LJJVWXWY.js";
173
170
  import "../../chunk-UCMP5W4Q.js";
174
171
  import "../../chunk-V3ZSAVGZ.js";
175
172
  import "../../chunk-R4DACBK6.js";
173
+ import "../../chunk-ODFVU622.js";
174
+ import "../../chunk-DLVSLSMB.js";
175
+ import "../../chunk-T2B6Z67Y.js";
176
176
  import "../../chunk-4TBV3NBW.js";
177
177
  import "../../chunk-2LDUB2HU.js";
178
178
  import "../../chunk-7LVPOOJY.js";
@@ -4,7 +4,7 @@ import {
4
4
  createProviderClient,
5
5
  readCallAudit,
6
6
  resolveApiKey
7
- } from "../chunk-IJBBCKR3.js";
7
+ } from "../chunk-AIGIYNMN.js";
8
8
  import {
9
9
  resolveCapabilities
10
10
  } from "../chunk-USRIG5QU.js";
@@ -14,7 +14,7 @@ import {
14
14
  RUNTIME_PROVENANCE,
15
15
  runtimeObservation,
16
16
  withRuntimeRun
17
- } from "../chunk-Q24C4C2R.js";
17
+ } from "../chunk-3SRZJNTS.js";
18
18
  import "../chunk-KJ7QRUYA.js";
19
19
  import "../chunk-ZBCFV6QX.js";
20
20
  import "../chunk-DW2ZQATG.js";
@@ -26,16 +26,16 @@ import {
26
26
  switchAgentSession,
27
27
  wasSessionResumed,
28
28
  wireFrozenSnapshotPersist
29
- } from "./chunk-EXAFVT2W.js";
30
- import "./chunk-G2YHK7QR.js";
29
+ } from "./chunk-2SJCIAG2.js";
30
+ import "./chunk-4HL4ZWFJ.js";
31
31
  import {
32
32
  restorePlanModeFromMeta
33
33
  } from "./chunk-QH44FLDF.js";
34
- import "./chunk-D2ZGK7SK.js";
34
+ import "./chunk-Y3XPPKJB.js";
35
35
  import "./chunk-NBCW3AJZ.js";
36
- import "./chunk-YPZQTLII.js";
36
+ import "./chunk-G3CVFDS6.js";
37
37
  import "./chunk-ZGYMTR24.js";
38
- import "./chunk-TPC63AAU.js";
38
+ import "./chunk-7KH7CLZB.js";
39
39
  import "./chunk-6FEJAGKX.js";
40
40
  import "./chunk-VPJJ55WU.js";
41
41
  import "./chunk-XMSZJCNB.js";
@@ -45,20 +45,20 @@ import "./chunk-UYR23YAR.js";
45
45
  import "./chunk-5VZWXY7D.js";
46
46
  import "./chunk-MHWHJU5B.js";
47
47
  import "./chunk-6ZVYO2RV.js";
48
- import "./chunk-RB4SJIHS.js";
48
+ import "./chunk-GUJ7QD6C.js";
49
49
  import "./chunk-YDL6H5EF.js";
50
50
  import "./chunk-BUPAWHNU.js";
51
- import "./chunk-YQ4HK5BP.js";
51
+ import "./chunk-37PVNRBF.js";
52
52
  import "./chunk-HVO25CQO.js";
53
53
  import "./chunk-TKSE3QAY.js";
54
- import "./chunk-7I7QVVKE.js";
54
+ import "./chunk-TWHEV3RK.js";
55
55
  import "./chunk-SMMWTH2X.js";
56
56
  import "./chunk-Q56A5NIH.js";
57
57
  import "./chunk-6I2YCDUJ.js";
58
58
  import "./chunk-4RCVGE32.js";
59
- import "./chunk-R3CQ7UTA.js";
60
- import "./chunk-ADETW3LK.js";
61
- import "./chunk-C7TCIN7O.js";
59
+ import "./chunk-Z2HBF7W7.js";
60
+ import "./chunk-X7KI3IJ6.js";
61
+ import "./chunk-XQHEYVZG.js";
62
62
  import "./chunk-ULTZP5EM.js";
63
63
  import "./chunk-Z5KHHDKO.js";
64
64
  import "./chunk-2QHQMGCI.js";
@@ -76,9 +76,9 @@ import "./chunk-GLNSIQCG.js";
76
76
  import "./chunk-S3JLCMYK.js";
77
77
  import "./chunk-IHS675GQ.js";
78
78
  import "./chunk-J4BX3L5F.js";
79
- import "./chunk-7NHSPDU3.js";
79
+ import "./chunk-54MNIMRJ.js";
80
80
  import "./chunk-F4YO6TH6.js";
81
- import "./chunk-LQXUGBRV.js";
81
+ import "./chunk-Q2P2X2T4.js";
82
82
  import "./chunk-CABETIHP.js";
83
83
  import "./chunk-YFQDPZ5E.js";
84
84
  import "./chunk-LCRH7DHL.js";
@@ -129,21 +129,18 @@ import "./chunk-G7VEM5DN.js";
129
129
  import "./chunk-MUIODEN6.js";
130
130
  import "./chunk-FB6BPHRP.js";
131
131
  import "./chunk-KL4F2FYA.js";
132
+ import "./chunk-WZWOG6SI.js";
133
+ import "./chunk-6PBIFODH.js";
134
+ import "./chunk-C2G4F4QA.js";
132
135
  import "./chunk-RWCX2NBM.js";
133
136
  import "./chunk-A2WIYFPK.js";
134
137
  import "./chunk-OCGQY3HN.js";
135
138
  import "./chunk-JIVTST33.js";
136
- import "./chunk-WZWOG6SI.js";
137
- import "./chunk-6PBIFODH.js";
138
- import "./chunk-C2G4F4QA.js";
139
- import "./chunk-ODFVU622.js";
140
- import "./chunk-DLVSLSMB.js";
141
- import "./chunk-T2B6Z67Y.js";
142
- import "./chunk-IJBBCKR3.js";
139
+ import "./chunk-AIGIYNMN.js";
143
140
  import "./chunk-USRIG5QU.js";
144
141
  import "./chunk-LPYOO7VH.js";
145
142
  import "./chunk-EAU4YQUW.js";
146
- import "./chunk-Q24C4C2R.js";
143
+ import "./chunk-3SRZJNTS.js";
147
144
  import "./chunk-KJ7QRUYA.js";
148
145
  import "./chunk-ZBCFV6QX.js";
149
146
  import "./chunk-DW2ZQATG.js";
@@ -162,6 +159,9 @@ import "./chunk-LJJVWXWY.js";
162
159
  import "./chunk-UCMP5W4Q.js";
163
160
  import "./chunk-V3ZSAVGZ.js";
164
161
  import "./chunk-R4DACBK6.js";
162
+ import "./chunk-ODFVU622.js";
163
+ import "./chunk-DLVSLSMB.js";
164
+ import "./chunk-T2B6Z67Y.js";
165
165
  import "./chunk-4TBV3NBW.js";
166
166
  import "./chunk-2LDUB2HU.js";
167
167
  import "./chunk-7LVPOOJY.js";
@@ -6,10 +6,10 @@ import {
6
6
  matchModelIds,
7
7
  probeProvider,
8
8
  savedEndpointPolicy
9
- } from "./chunk-B3RCV4YJ.js";
9
+ } from "./chunk-EG5SELFI.js";
10
10
  import {
11
11
  tryResolveCredentialKey
12
- } from "./chunk-IJBBCKR3.js";
12
+ } from "./chunk-AIGIYNMN.js";
13
13
  import {
14
14
  resolveCapabilities
15
15
  } from "./chunk-USRIG5QU.js";