kiokuko-dsh 0.1.79 → 0.1.81

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 (131) hide show
  1. package/PERMISSIONS.md +6 -0
  2. package/README.ja.md +3 -1
  3. package/README.ko.md +3 -1
  4. package/README.md +3 -1
  5. package/README.zh-CN.md +3 -1
  6. package/dist/client.cjs +94 -40
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/diff-review/controller.d.ts +1 -0
  9. package/dist/diff-review/controller.d.ts.map +1 -1
  10. package/dist/diff-review/controller.js +9 -4
  11. package/dist/diff-review/controller.js.map +1 -1
  12. package/dist/dsh/answer-review/evidence.d.ts.map +1 -1
  13. package/dist/dsh/answer-review/evidence.js +8 -3
  14. package/dist/dsh/answer-review/evidence.js.map +1 -1
  15. package/dist/dsh/composition.d.ts +4 -0
  16. package/dist/dsh/composition.d.ts.map +1 -1
  17. package/dist/dsh/composition.js +19 -2
  18. package/dist/dsh/composition.js.map +1 -1
  19. package/dist/dsh/config.d.ts +22 -0
  20. package/dist/dsh/config.d.ts.map +1 -1
  21. package/dist/dsh/config.js +2 -0
  22. package/dist/dsh/config.js.map +1 -1
  23. package/dist/dsh/core/host.d.ts +22 -0
  24. package/dist/dsh/core/host.d.ts.map +1 -1
  25. package/dist/dsh/core/host.js +221 -68
  26. package/dist/dsh/core/host.js.map +1 -1
  27. package/dist/dsh/core/index.d.ts +44 -0
  28. package/dist/dsh/core/index.d.ts.map +1 -1
  29. package/dist/dsh/decisions/contracts.d.ts +1 -0
  30. package/dist/dsh/decisions/contracts.d.ts.map +1 -1
  31. package/dist/dsh/decisions/contracts.js +1 -1
  32. package/dist/dsh/decisions/contracts.js.map +1 -1
  33. package/dist/dsh/decisions/host.d.ts +1 -1
  34. package/dist/dsh/decisions/host.d.ts.map +1 -1
  35. package/dist/dsh/decisions/host.js +3 -2
  36. package/dist/dsh/decisions/host.js.map +1 -1
  37. package/dist/dsh/decisions/service.d.ts +3 -0
  38. package/dist/dsh/decisions/service.d.ts.map +1 -1
  39. package/dist/dsh/decisions/service.js +16 -5
  40. package/dist/dsh/decisions/service.js.map +1 -1
  41. package/dist/dsh/evolution-observation.d.ts.map +1 -1
  42. package/dist/dsh/evolution-observation.js +4 -0
  43. package/dist/dsh/evolution-observation.js.map +1 -1
  44. package/dist/dsh/execution-support.d.ts.map +1 -1
  45. package/dist/dsh/execution-support.js +8 -2
  46. package/dist/dsh/execution-support.js.map +1 -1
  47. package/dist/dsh/host-adapter.d.ts +2 -0
  48. package/dist/dsh/host-adapter.d.ts.map +1 -1
  49. package/dist/dsh/host-adapter.js +69 -3
  50. package/dist/dsh/host-adapter.js.map +1 -1
  51. package/dist/dsh/index.d.ts.map +1 -1
  52. package/dist/dsh/index.js +3 -1
  53. package/dist/dsh/index.js.map +1 -1
  54. package/dist/dsh/japanese-output-skill.d.ts +3 -2
  55. package/dist/dsh/japanese-output-skill.d.ts.map +1 -1
  56. package/dist/dsh/japanese-output-skill.js.map +1 -1
  57. package/dist/dsh/lisp/coding-choice.d.ts +2 -1
  58. package/dist/dsh/lisp/coding-choice.d.ts.map +1 -1
  59. package/dist/dsh/lisp/coding-choice.js +2 -1
  60. package/dist/dsh/lisp/coding-choice.js.map +1 -1
  61. package/dist/dsh/lisp-service-key.d.ts +3 -0
  62. package/dist/dsh/lisp-service-key.d.ts.map +1 -0
  63. package/dist/dsh/lisp-service-key.js +3 -0
  64. package/dist/dsh/lisp-service-key.js.map +1 -0
  65. package/dist/dsh/model-auto/candidates.d.ts +13 -0
  66. package/dist/dsh/model-auto/candidates.d.ts.map +1 -0
  67. package/dist/dsh/model-auto/candidates.js +48 -0
  68. package/dist/dsh/model-auto/candidates.js.map +1 -0
  69. package/dist/dsh/model-auto/command.d.ts +6 -0
  70. package/dist/dsh/model-auto/command.d.ts.map +1 -0
  71. package/dist/dsh/model-auto/command.js +28 -0
  72. package/dist/dsh/model-auto/command.js.map +1 -0
  73. package/dist/dsh/model-auto/contracts.d.ts +60 -0
  74. package/dist/dsh/model-auto/contracts.d.ts.map +1 -0
  75. package/dist/dsh/model-auto/contracts.js +18 -0
  76. package/dist/dsh/model-auto/contracts.js.map +1 -0
  77. package/dist/dsh/model-auto/coordinator.d.ts +45 -0
  78. package/dist/dsh/model-auto/coordinator.d.ts.map +1 -0
  79. package/dist/dsh/model-auto/coordinator.js +169 -0
  80. package/dist/dsh/model-auto/coordinator.js.map +1 -0
  81. package/dist/dsh/model-auto/policy.d.ts +8 -0
  82. package/dist/dsh/model-auto/policy.d.ts.map +1 -0
  83. package/dist/dsh/model-auto/policy.js +45 -0
  84. package/dist/dsh/model-auto/policy.js.map +1 -0
  85. package/dist/dsh/model-auto/store.d.ts +53 -0
  86. package/dist/dsh/model-auto/store.d.ts.map +1 -0
  87. package/dist/dsh/model-auto/store.js +87 -0
  88. package/dist/dsh/model-auto/store.js.map +1 -0
  89. package/dist/dsh/model-configuration.d.ts +13 -1
  90. package/dist/dsh/model-configuration.d.ts.map +1 -1
  91. package/dist/dsh/model-configuration.js.map +1 -1
  92. package/dist/dsh/model-handoff.d.ts.map +1 -1
  93. package/dist/dsh/model-handoff.js +9 -4
  94. package/dist/dsh/model-handoff.js.map +1 -1
  95. package/dist/dsh/model-routing.d.ts +9 -3
  96. package/dist/dsh/model-routing.d.ts.map +1 -1
  97. package/dist/dsh/model-routing.js +17 -6
  98. package/dist/dsh/model-routing.js.map +1 -1
  99. package/dist/dsh/native-model-catalog.d.ts +6 -1
  100. package/dist/dsh/native-model-catalog.d.ts.map +1 -1
  101. package/dist/dsh/native-model-catalog.js +12 -4
  102. package/dist/dsh/native-model-catalog.js.map +1 -1
  103. package/dist/dsh/observation-pack/policy.d.ts.map +1 -1
  104. package/dist/dsh/observation-pack/policy.js +11 -2
  105. package/dist/dsh/observation-pack/policy.js.map +1 -1
  106. package/dist/dsh/observation-pack/service.d.ts.map +1 -1
  107. package/dist/dsh/observation-pack/service.js +6 -3
  108. package/dist/dsh/observation-pack/service.js.map +1 -1
  109. package/dist/dsh/semantic-compaction/coordinator.d.ts.map +1 -1
  110. package/dist/dsh/semantic-compaction/coordinator.js +3 -2
  111. package/dist/dsh/semantic-compaction/coordinator.js.map +1 -1
  112. package/dist/dsh/semantic-compaction/policy.d.ts.map +1 -1
  113. package/dist/dsh/semantic-compaction/policy.js +36 -21
  114. package/dist/dsh/semantic-compaction/policy.js.map +1 -1
  115. package/dist/dsh/session-history-compatibility.d.ts +14 -0
  116. package/dist/dsh/session-history-compatibility.d.ts.map +1 -1
  117. package/dist/dsh/session-history-compatibility.js +49 -22
  118. package/dist/dsh/session-history-compatibility.js.map +1 -1
  119. package/dist/dsh/session-history-lookup.js +2 -2
  120. package/dist/dsh/session-history-lookup.js.map +1 -1
  121. package/dist/dsh/session-mismatch-cleanup.d.ts +27 -0
  122. package/dist/dsh/session-mismatch-cleanup.d.ts.map +1 -0
  123. package/dist/dsh/session-mismatch-cleanup.js +126 -0
  124. package/dist/dsh/session-mismatch-cleanup.js.map +1 -0
  125. package/dist/enno-oduno/schemas.d.ts +2 -2
  126. package/docs/dsh-plugin.md +2 -2
  127. package/docs/model-selection.ja.md +26 -0
  128. package/docs/model-selection.md +26 -0
  129. package/docs/session-history-repair.md +11 -1
  130. package/migrations/028_model_auto.sql +14 -0
  131. package/package.json +5 -4
package/PERMISSIONS.md CHANGED
@@ -53,6 +53,10 @@ Skill collisions before mounting its runtime; it does not rewrite `AGENTS.md`.
53
53
  isolation, and publishes a new v3 generation under the same native lease.
54
54
  Retains the original v0 file and an identical `.bak`; never overwrites an
55
55
  existing successor or reconstructs missing turn-ending events.
56
+ - After startup validation, automatically deletes a native history file only
57
+ when the compatibility check confirmed `Legacy session identity mismatch`.
58
+ It rechecks the ID and exact path under DSH's write lease. Other failures,
59
+ healthy histories, and session working-directory files are left untouched.
56
60
  - Does not rewrite host configuration or repository instruction files.
57
61
  Repository identity, run identity, lease, revision, and integrity mismatches
58
62
  fail closed.
@@ -211,6 +215,8 @@ See [Common Lisp setup and recovery](docs/lisp.md) for commands and limits.
211
215
 
212
216
  # Configured typed decisions
213
217
 
218
+ `modelAutoMode.mode` defaults to `off`. When enabled for an admitted normal task, it sends only that task's text, task type, attachment kinds and configured route descriptions to the selected ready Jev or Laya backend. It requires the registered `openai-codex` provider, live model capability checks and the native token meter. It stores route identities, digests, binding, status and timing in Kiokuko SQLite; it does not duplicate task text or credentials there. `observe` performs the classifier call without changing the DSH request model. A manual picker selection takes priority. No provider substitution, automatic implementation retry or global Web model change occurs. `/kioku-model-auto off` disables the current session; setting `modelAutoMode.mode: off` and restarting disables saved session overrides.
219
+
214
220
  With `typedDecisions.mode: auto` (default), the host may send the current request,
215
221
  installed Skill descriptions, sanitized candidate plan or explicitly selected Lisp
216
222
  evidence to the configured adapter. TypeSafe uses its fixed HTTPS endpoint and
package/README.ja.md CHANGED
@@ -19,7 +19,7 @@
19
19
 
20
20
  ## 導入と使い方
21
21
 
22
- 対応 DSH: **0.1.6-alpha.1**([検証範囲](docs/dsh-plugin.md#compatibility))。
22
+ 実行環境の対応対象は **DSH 0.1.7-rc.2** です。ネイティブ要求経路、旧セッション履歴の移行、パッケージ化した Web の起動試験はローカルで通過しました([検証範囲](docs/dsh-plugin.md#compatibility))。
23
23
 
24
24
  Node.js **24.16.0 以上**と pnpm が必要です。
25
25
  DSH のソースディレクトリで、公開済み npm パッケージを導入して起動します。
@@ -105,6 +105,8 @@ Lisp を選ぶと、Lisp 用ツールで通常実行します。役小角を使
105
105
 
106
106
  ## 型付き判定(Jev / Laya / Nimble)
107
107
 
108
+ 任意の[モデル自動選択](docs/model-selection.ja.md#通常実行のモデル自動選択)は、新しい通常タスクで検証済みの `openai-codex` モデルと推論強度を選びます。既定値は `modelAutoMode.mode: off` です。`/kioku-model-auto on | observe | off | status` は現在のセッションだけを変更します。`observe` は候補を計測し、実モデルは変えません。利用にはJevかLayaの準備完了、dsh-codex、DSHのモデル情報とtoken meterが必要です。判定不能なら現在のモデルを維持し、手動選択を優先します。
109
+
108
110
  [回答の再検討](docs/answer-review.md)は、表示済みの通常回答を評価し、指摘があれば同じ主モデルに一度だけ見直させる機能です。通常版・modular coreで既定で有効です。既定値は次のとおりです。
109
111
 
110
112
  ```yaml
package/README.ko.md CHANGED
@@ -8,11 +8,13 @@ OrcaReplay로 모델과 도구의 동작을 기록하고, 기록을 확인하거
8
8
 
9
9
  새 변경 작업에서는 일반 실행 또는 役小角(enno-oduno)를 선택할 수 있습니다. 역할별 모델은 추천 템플릿이나 DSH에 설정된 모델에서 선택합니다. [모델 선택과 연결 제한](docs/model-selection.md).
10
10
 
11
+ 선택 기능인 [자동 모델 선택](docs/model-selection.md#automatic-model-selection)은 기본적으로 꺼져 있습니다(`modelAutoMode.mode: off`). `/kioku-model-auto on | observe | off | status`는 현재 세션만 바꿉니다. `observe`는 제안만 기록하고 실제 모델은 유지합니다. 일반 작업에서 준비된 Jev 또는 Laya, dsh-codex, DSH 모델 메타데이터와 token meter가 필요합니다. 판정에 실패하면 현재 모델을 유지하고 수동 선택을 우선합니다.
12
+
11
13
  자동 메모리 검토는 기본으로 활성화되며, 사람의 입력을 처리한 여덟 턴마다 대화 모델로 유용한 프로젝트 기억 후보를 저장하거나 갱신합니다. 대화를 닫을 필요가 없습니다. `/kioku-memory-review status`로 상태를 확인하거나 `/kioku-memory-review exclude session`으로 대화 전체를 제외할 수 있습니다. [설정, 비용과 복구](docs/auto-memory-review.md).
12
14
 
13
15
  ## 설치 및 사용
14
16
 
15
- **DSH 0.1.6-alpha.1**을 지원합니다 ([검증 범위](docs/dsh-plugin.md#compatibility)).
17
+ 런타임 호환 대상은 **DSH 0.1.7-rc.2**입니다. 네이티브 요청 경로, 이전 세션 기록 마이그레이션, 패키징된 Web 시작 검사가 로컬에서 통과했습니다 ([검증 범위](docs/dsh-plugin.md#compatibility)).
16
18
 
17
19
  Node.js **24.16.0 이상**과 pnpm이 필요합니다.
18
20
  DSH 소스 디렉터리에서 다음 명령으로 공개된 npm 패키지를 설치하고 시작합니다.
package/README.md CHANGED
@@ -19,7 +19,7 @@ Automatic memory review saves or updates useful project candidates after eight c
19
19
 
20
20
  ## Install and use
21
21
 
22
- Supports **DSH 0.1.6-alpha.1** ([verification scope](docs/dsh-plugin.md#compatibility)).
22
+ Runtime compatibility target: **DSH 0.1.7-rc.2**. Native request paths, legacy session migration, and a packed Web lifecycle pass locally ([verification scope](docs/dsh-plugin.md#compatibility)).
23
23
 
24
24
  Requires Node.js **24.16.0+** and pnpm.
25
25
  Run these commands from the DSH source directory to install the published npm package and start:
@@ -106,6 +106,8 @@ See [setup, APIs, limits and recovery](docs/lisp.md).
106
106
 
107
107
  ## Typed decisions (Jev / Laya / Nimble)
108
108
 
109
+ Optional [automatic model selection](docs/model-selection.md#automatic-model-selection) chooses a validated `openai-codex` model and reasoning effort for a new normal task. It defaults to `modelAutoMode.mode: off`; `/kioku-model-auto on | observe | off | status` changes only the current session. `observe` measures a proposal without changing the model. It requires a ready Jev or Laya backend, dsh-codex, native model metadata and a token meter. Failed or unavailable classification keeps the current model; manual model selection takes priority.
110
+
109
111
  [Answer review](docs/answer-review.md) is enabled by default on the full plugin and modular core. It evaluates an already displayed normal answer using the configured Jev, Laya or Nimble provider and may ask the same main model to reconsider once. The defaults are:
110
112
 
111
113
  ```yaml
package/README.zh-CN.md CHANGED
@@ -8,11 +8,13 @@ OrcaReplay 可记录模型和工具活动,查看记录并导出 HTML。
8
8
 
9
9
  新的修改任务可以选择普通执行或役小角(enno-oduno)。役小角支持推荐模板,也可从DSH已配置的模型中为各角色选择模型。[模型选择与连接限制](docs/model-selection.md)。
10
10
 
11
+ 可选的[自动模型选择](docs/model-selection.md#automatic-model-selection)默认关闭(`modelAutoMode.mode: off`)。`/kioku-model-auto on | observe | off | status` 仅更改当前会话;`observe` 只记录建议,不更换模型。普通任务需要已就绪的 Jev 或 Laya、dsh-codex,以及 DSH 的模型元数据和 token meter。判定失败时保留当前模型,手动选择优先。
12
+
11
13
  自动记忆审查默认启用:每完成八个人类输入回合,使用会话模型保存或更新有用的项目记忆候选,无需关闭会话。使用 `/kioku-memory-review status` 查看状态,或用 `/kioku-memory-review exclude session` 排除整个会话。[设置、费用和恢复](docs/auto-memory-review.md)。
12
14
 
13
15
  ## 安装与使用
14
16
 
15
- 支持 **DSH 0.1.6-alpha.1**([验证范围](docs/dsh-plugin.md#compatibility))。
17
+ 运行时兼容目标为 **DSH 0.1.7-rc.2**。原生请求路径、旧会话历史迁移和打包后的 Web 启动检查均已在本地通过([验证范围](docs/dsh-plugin.md#compatibility))。
16
18
 
17
19
  需要 Node.js **24.16.0 以上**和 pnpm。
18
20
  在 DSH 源码目录中运行以下命令,安装已发布的 npm 包并启动:
package/dist/client.cjs CHANGED
@@ -758,9 +758,12 @@ window.__ModuleLoader__.load({
758
758
  const REVIEW_MEMORY_STATES = { available: '取得済み', empty: '該当なし', unavailable: '取得不可', withheld: '保留', mismatch: '不一致' };
759
759
  const REVIEW_FRESHNESS = { current: '現在と一致', stale: '取得後に変更あり', unknown: '現在との一致は未確認' };
760
760
  function initialReviewSession() {
761
- return { loading: false, busy: false, error: '', availability: 'unknown', models: [], untracked: [], turns: [], mode: 'current',
761
+ return { loading: false, busy: false, cancelling: false, error: '', availability: 'unknown', modelAvailability: 'unknown', models: [], untracked: [], turns: [], mode: 'current',
762
762
  selected: [], selectedUntracked: [], modelKey: '', purpose: '', runId: '', activeFileId: '', fileListOpen: true };
763
763
  }
764
+ function matchesReviewMode(review, mode, turnSeq) {
765
+ return review?.snapshot.mode === mode && (mode !== 'turn' || review.snapshot.turnSeq === turnSeq);
766
+ }
764
767
  class DiffReviewClientController {
765
768
  store = createSnapshotStore({ bySession: {} });
766
769
  timers = new Map();
@@ -786,8 +789,20 @@ window.__ModuleLoader__.load({
786
789
  return url;
787
790
  }
788
791
  async json(url, body) {
789
- const response = await fetch(url, body ? { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify(body) } : {});
790
- const value = await response.json();
792
+ let response;
793
+ try {
794
+ response = await fetch(url, body ? { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify(body) } : {});
795
+ }
796
+ catch {
797
+ throw new Error('DSH に接続できません。接続を確認して再試行してください。');
798
+ }
799
+ let value;
800
+ try {
801
+ value = await response.json();
802
+ }
803
+ catch {
804
+ throw new Error('DSH の応答を読み取れません。再試行してください。');
805
+ }
791
806
  if (!response.ok)
792
807
  throw new Error(typeof value.code === 'string' ? reviewErrorMessage(value.code) : `HTTP ${response.status}`);
793
808
  return value;
@@ -801,24 +816,27 @@ window.__ModuleLoader__.load({
801
816
  return;
802
817
  const review = response.review;
803
818
  const models = response.models ?? [];
819
+ const modelKeys = models.map(item => JSON.stringify([item.provider, item.model]));
804
820
  const current = this.current(sessionId);
805
- this.change(sessionId, { loading: false, availability: String(response.availability), models, review,
806
- untracked: response.untracked ?? [], turns: response.turns ?? [],
807
- ...(review ? { selected: current.review?.reviewId === review.reviewId && current.selected.length ? current.selected : review.snapshot.files.filter(file => file.kind === 'text').map(file => file.fileId),
808
- activeFileId: current.review?.reviewId === review.reviewId && current.activeFileId ? current.activeFileId : review.snapshot.files[0]?.fileId || '' } : {}),
809
- modelKey: current.modelKey || (models[0] ? JSON.stringify([models[0].provider, models[0].model]) : ''),
821
+ const untracked = response.untracked ?? [];
822
+ this.change(sessionId, { loading: false, busy: review?.state === 'analyzing', cancelling: false,
823
+ availability: String(response.availability), modelAvailability: String(response.modelAvailability ?? 'unknown'), models, review,
824
+ untracked, selectedUntracked: current.selectedUntracked.filter(path => untracked.includes(path)), turns: response.turns ?? [],
825
+ ...(review ? { selected: current.review?.reviewId === review.reviewId ? current.selected.filter(id => review.snapshot.files.some(file => file.fileId === id && file.kind === 'text')) : review.snapshot.files.filter(file => file.kind === 'text').map(file => file.fileId),
826
+ activeFileId: current.review?.reviewId === review.reviewId && review.snapshot.files.some(file => file.fileId === current.activeFileId) ? current.activeFileId : review.snapshot.files[0]?.fileId || '' } : {}),
827
+ modelKey: modelKeys.includes(current.modelKey) ? current.modelKey : '',
810
828
  error: !review && current.review ? '保存期間が過ぎました。差分を取得し直してください。' : '' });
811
829
  if (review?.state === 'analyzing')
812
830
  this.poll(sessionId, review.reviewId);
813
831
  }
814
832
  catch (error) {
815
833
  if (this.generations.get(sessionId) === generation)
816
- this.change(sessionId, { loading: false, error: messageOf(error) });
834
+ this.change(sessionId, { loading: false, busy: false, error: messageOf(error) });
817
835
  }
818
836
  }
819
837
  async capture(sessionId) {
820
838
  const current = this.current(sessionId);
821
- if (current.busy)
839
+ if (current.busy || current.loading || current.cancelling || current.review?.state === 'analyzing')
822
840
  return;
823
841
  const generation = this.nextGeneration(sessionId);
824
842
  this.change(sessionId, { busy: true, error: '' });
@@ -829,6 +847,7 @@ window.__ModuleLoader__.load({
829
847
  return;
830
848
  this.change(sessionId, { loading: false, busy: false, review, selected: review.snapshot.files.filter(file => file.kind === 'text').map(file => file.fileId),
831
849
  activeFileId: review.snapshot.files[0]?.fileId ?? '', fileListOpen: false });
850
+ await this.load(sessionId);
832
851
  }
833
852
  catch (error) {
834
853
  if (this.generations.get(sessionId) === generation)
@@ -837,7 +856,7 @@ window.__ModuleLoader__.load({
837
856
  }
838
857
  async analyze(sessionId) {
839
858
  const current = this.current(sessionId);
840
- if (current.busy || !current.review || !current.modelKey)
859
+ if (current.busy || current.loading || current.cancelling || !current.review || !matchesReviewMode(current.review, current.mode, current.turnSeq) || current.review.state === 'analyzing' || !current.selected.length || !current.modelKey)
841
860
  return;
842
861
  let provider, model;
843
862
  try {
@@ -866,40 +885,55 @@ window.__ModuleLoader__.load({
866
885
  }
867
886
  poll(sessionId, reviewId) {
868
887
  clearTimeout(this.timers.get(sessionId));
888
+ const generation = this.generations.get(sessionId);
869
889
  const tick = async () => {
870
890
  try {
871
891
  const review = await this.json(this.url(sessionId, reviewId));
872
- if (this.current(sessionId).review?.reviewId !== reviewId)
892
+ if (this.generations.get(sessionId) !== generation || this.current(sessionId).review?.reviewId !== reviewId || this.current(sessionId).cancelling)
873
893
  return;
874
894
  this.change(sessionId, { review, busy: review.state === 'analyzing', error: '' });
875
895
  if (review.state === 'analyzing')
876
896
  this.timers.set(sessionId, setTimeout(() => void tick(), document.hidden ? 5000 : 1000));
877
897
  }
878
898
  catch (error) {
879
- this.change(sessionId, { busy: false, error: messageOf(error) });
899
+ if (this.generations.get(sessionId) === generation && this.current(sessionId).review?.reviewId === reviewId && !this.current(sessionId).cancelling) {
900
+ this.change(sessionId, { busy: false, error: messageOf(error) });
901
+ }
880
902
  }
881
903
  };
882
904
  this.timers.set(sessionId, setTimeout(() => void tick(), 500));
883
905
  }
884
906
  async refreshReview(sessionId, reviewId) {
885
- const generation = this.generations.get(sessionId);
907
+ const generation = this.nextGeneration(sessionId);
908
+ clearTimeout(this.timers.get(sessionId));
909
+ this.change(sessionId, { loading: true, error: '' });
886
910
  try {
887
911
  const review = await this.json(this.url(sessionId, reviewId));
888
- if (this.generations.get(sessionId) === generation && this.current(sessionId).review?.reviewId === reviewId)
889
- this.change(sessionId, { review });
912
+ if (this.generations.get(sessionId) === generation && this.current(sessionId).review?.reviewId === reviewId) {
913
+ this.change(sessionId, { loading: false, busy: review.state === 'analyzing', review, error: '' });
914
+ if (review.state === 'analyzing')
915
+ this.poll(sessionId, reviewId);
916
+ }
890
917
  }
891
918
  catch (error) {
892
919
  if (this.generations.get(sessionId) === generation && this.current(sessionId).review?.reviewId === reviewId)
893
- this.change(sessionId, { error: messageOf(error) });
920
+ this.change(sessionId, { loading: false, busy: false, error: messageOf(error) });
894
921
  }
895
922
  }
896
923
  async cancel(sessionId, reviewId) {
924
+ if (this.current(sessionId).cancelling || this.current(sessionId).review?.reviewId !== reviewId)
925
+ return;
926
+ const generation = this.nextGeneration(sessionId);
927
+ clearTimeout(this.timers.get(sessionId));
928
+ this.change(sessionId, { loading: false, cancelling: true, error: '' });
897
929
  try {
898
930
  const review = await this.json(this.url(sessionId), { action: 'cancel', sessionId, reviewId });
899
- this.change(sessionId, { review, busy: false });
931
+ if (this.generations.get(sessionId) === generation && this.current(sessionId).review?.reviewId === reviewId)
932
+ this.change(sessionId, { review, busy: false, cancelling: false, error: '' });
900
933
  }
901
934
  catch (error) {
902
- this.change(sessionId, { error: messageOf(error) });
935
+ if (this.generations.get(sessionId) === generation && this.current(sessionId).review?.reviewId === reviewId)
936
+ this.change(sessionId, { busy: false, cancelling: false, error: messageOf(error) });
903
937
  }
904
938
  }
905
939
  exportUrl(sessionId, reviewId, format) {
@@ -931,13 +965,13 @@ window.__ModuleLoader__.load({
931
965
  function SnapshotDiff(props) {
932
966
  return jsxs('div', { className: 'kiokuko-review-diff', children: props.file.hunks.map(hunk => {
933
967
  let oldLine = hunk.oldStart, newLine = hunk.newStart;
934
- return jsxs('section', { id: `kiokuko-review-${props.file.fileId}-${hunk.id}`, children: [
968
+ return jsxs('section', { id: `kiokuko-review-${props.file.fileId}-${hunk.id}`, tabIndex: -1, children: [
935
969
  jsx('h4', { children: `@@ -${hunk.oldStart} +${hunk.newStart} @@` }),
936
970
  jsx('pre', { children: hunk.lines.map((line, index) => {
937
971
  const prefix = line[0];
938
972
  const old = prefix === '+' || prefix === '\\' ? '' : String(oldLine++);
939
973
  const next = prefix === '-' || prefix === '\\' ? '' : String(newLine++);
940
- return jsx('div', { className: prefix === '+' ? 'added' : prefix === '-' ? 'removed' : '',
974
+ return jsx('div', { className: prefix === '+' ? 'added' : prefix === '-' ? 'removed' : '', tabIndex: -1,
941
975
  'data-snapshot-id': props.snapshotId, 'data-file-id': props.file.fileId, 'data-hunk-id': hunk.id,
942
976
  ...(old ? { 'data-old-line': old } : {}), ...(next ? { 'data-new-line': next } : {}),
943
977
  children: `${old.padStart(5)} ${next.padStart(5)} ${line}` }, index);
@@ -953,16 +987,21 @@ window.__ModuleLoader__.load({
953
987
  const useTabInfo = props.useTabInfo;
954
988
  const { tab } = useTabInfo();
955
989
  const state = useReview(value => value.bySession[sessionId]) ?? initialReviewSession();
990
+ const wasVisible = useRef(tab.visible);
956
991
  useEffect(() => { void controller.load(sessionId); }, [sessionId]);
957
- useEffect(() => { if (tab.visible && state.review)
958
- void controller.refreshReview(sessionId, state.review.reviewId); }, [sessionId, tab.visible, state.review?.reviewId]);
959
992
  useEffect(() => {
960
- const onClose = () => { const reviewId = controller.store.getSnapshot().bySession[sessionId]?.review?.reviewId; if (reviewId)
961
- void controller.cancel(sessionId, reviewId); };
993
+ if (tab.visible && !wasVisible.current && state.review)
994
+ void controller.refreshReview(sessionId, state.review.reviewId);
995
+ wasVisible.current = tab.visible;
996
+ }, [sessionId, tab.visible, state.review?.reviewId]);
997
+ useEffect(() => {
998
+ const onClose = () => { const review = controller.store.getSnapshot().bySession[sessionId]?.review; if (review?.state === 'analyzing')
999
+ void controller.cancel(sessionId, review.reviewId); };
962
1000
  tab.signal.addEventListener('abort', onClose, { once: true });
963
1001
  return () => tab.signal.removeEventListener('abort', onClose);
964
1002
  }, [sessionId, tab.signal]);
965
1003
  const review = state.review;
1004
+ const reviewMatchesSelection = matchesReviewMode(review, state.mode, state.turnSeq);
966
1005
  const active = review?.snapshot.files.find(file => file.fileId === state.activeFileId) ?? review?.snapshot.files[0];
967
1006
  const selectFile = (fileId) => controller.change(sessionId, { selected: state.selected.includes(fileId)
968
1007
  ? state.selected.filter(id => id !== fileId) : [...state.selected, fileId] });
@@ -971,13 +1010,18 @@ window.__ModuleLoader__.load({
971
1010
  if (!fileId || !review?.snapshot.files.some(file => file.fileId === fileId))
972
1011
  return;
973
1012
  controller.change(sessionId, { activeFileId: fileId, fileListOpen: false });
974
- if (hunkId)
975
- requestAnimationFrame(() => {
976
- const section = document.getElementById(`kiokuko-review-${fileId}-${hunkId}`);
977
- const line = anchor?.fileId === fileId && anchor.hunkId === hunkId
978
- ? [...(section?.querySelectorAll('[data-old-line],[data-new-line]') ?? [])].find(element => element.dataset[anchor.side === 'old' ? 'oldLine' : 'newLine'] === String(anchor.startLine)) : undefined;
979
- (line ?? section)?.scrollIntoView({ block: 'center' });
980
- });
1013
+ requestAnimationFrame(() => {
1014
+ if (!hunkId) {
1015
+ document.getElementById(`kiokuko-review-${review.reviewId}-detail`)?.focus();
1016
+ return;
1017
+ }
1018
+ const section = document.getElementById(`kiokuko-review-${fileId}-${hunkId}`);
1019
+ const line = anchor?.fileId === fileId && anchor.hunkId === hunkId
1020
+ ? [...(section?.querySelectorAll('[data-old-line],[data-new-line]') ?? [])].find(element => element.dataset[anchor.side === 'old' ? 'oldLine' : 'newLine'] === String(anchor.startLine)) : undefined;
1021
+ const target = line ?? section;
1022
+ target?.focus({ preventScroll: true });
1023
+ target?.scrollIntoView({ block: 'center' });
1024
+ });
981
1025
  };
982
1026
  const analysisGroups = review?.analysis ? [
983
1027
  { label: '影響', items: review.analysis.impact },
@@ -995,11 +1039,11 @@ window.__ModuleLoader__.load({
995
1039
  ] })] }),
996
1040
  ...(state.mode === 'turn' ? [jsxs('label', { children: ['ターン差分', jsx('select', { value: String(state.turnSeq ?? ''), onChange: (event) => controller.change(sessionId, { turnSeq: event.target.value === '' ? undefined : Number(event.target.value) }),
997
1041
  children: [jsx('option', { value: '', children: '選択' }), ...state.turns.map(seq => jsx('option', { value: String(seq), children: `seq ${seq}` }, seq))] })] }, 'turn')] : []),
998
- jsx('button', { type: 'button', disabled: state.busy || state.loading || state.mode === 'turn' && state.turnSeq === undefined, onClick: () => void controller.capture(sessionId), children: review ? '取得し直す' : '差分を取得' }),
999
- review ? jsx('button', { type: 'button', disabled: state.busy, onClick: () => void controller.refreshReview(sessionId, review.reviewId), children: '鮮度を確認' }) : null,
1042
+ jsx('button', { type: 'button', disabled: state.busy || state.loading || state.cancelling || review?.state === 'analyzing' || state.mode === 'turn' && state.turnSeq === undefined, onClick: () => void controller.capture(sessionId), children: review ? '取得し直す' : '差分を取得' }),
1043
+ review ? jsx('button', { type: 'button', disabled: state.loading || state.cancelling || state.busy && review.state !== 'analyzing', onClick: () => void controller.refreshReview(sessionId, review.reviewId), children: '状態を確認' }) : null,
1000
1044
  ] }),
1001
1045
  state.untracked.length ? jsxs('fieldset', { children: [jsx('legend', { children: '未追跡ファイル(明示選択)' }), ...state.untracked.map(path => jsxs('label', { children: [jsx('input', { type: 'checkbox', checked: state.selectedUntracked.includes(path), onChange: () => controller.change(sessionId, { selectedUntracked: state.selectedUntracked.includes(path) ? state.selectedUntracked.filter(item => item !== path) : [...state.selectedUntracked, path] }) }), path] }, path))] }) : null,
1002
- jsx('p', { role: 'status', 'aria-live': 'polite', children: state.loading ? '確認中' : state.busy ? '処理中' : state.error || (state.availability === 'repo_unavailable' ? 'Git リポジトリを確認できません' : '') }),
1046
+ jsx('p', { role: 'status', 'aria-live': 'polite', children: state.cancelling ? '分析を停止中' : state.loading ? '確認中' : state.busy ? '処理中' : state.error || (state.availability === 'repo_unavailable' ? 'Git リポジトリを確認できません' : '') }),
1003
1047
  review ? jsxs(Fragment, { children: [
1004
1048
  jsx('p', { children: `${review.snapshot.capturedAt} / ${review.snapshot.mode} / ${REVIEW_STATES[review.state] ?? review.state} / 鮮度: ${REVIEW_FRESHNESS[review.freshness] ?? review.freshness}` }),
1005
1049
  jsx('p', { children: `文脈: ${REVIEW_CONTEXT_SOURCES[review.context.source] ?? review.context.source} / メモリ: ${REVIEW_MEMORY_STATES[review.context.memory] ?? review.context.memory}${review.context.reason ? ` (${review.context.reason})` : ''}` }),
@@ -1009,13 +1053,23 @@ window.__ModuleLoader__.load({
1009
1053
  jsx('p', { children: `変更ファイル: ${review.snapshot.files.length} / ${review.snapshot.totalFiles}` }),
1010
1054
  review.snapshot.totalFiles > review.snapshot.files.length ? jsx('p', { role: 'status', children: `${review.snapshot.totalFiles - review.snapshot.files.length} 件は取得上限で未収集です。全体リスクは未確定です。` }) : null,
1011
1055
  jsx('p', { children: `送信対象: ${state.selected.length} ファイル / ${review.snapshot.files.filter(file => file.kind !== 'text').length} ファイルはテキスト分析対象外` }),
1056
+ !reviewMatchesSelection ? jsx('p', { role: 'status', children: '比較対象を変更しました。「取得し直す」で新しい差分を確認してください。' }) : null,
1057
+ !state.selected.length ? jsx('p', { role: 'status', children: review.snapshot.files.some(file => file.kind === 'text')
1058
+ ? '分析するテキストファイルを変更ファイル一覧で選択してください。' : '分析できるテキストファイルがありません。差分は引き続き確認できます。' }) : null,
1012
1059
  jsxs('div', { className: 'kiokuko-review-analysis-controls', children: [
1013
- jsxs('label', { children: ['モデル', jsx('select', { value: state.modelKey, onChange: (event) => controller.change(sessionId, { modelKey: event.target.value }),
1060
+ jsxs('label', { children: ['モデル', jsx('select', { value: state.modelKey, disabled: state.busy || state.loading || state.cancelling, onChange: (event) => controller.change(sessionId, { modelKey: event.target.value }),
1014
1061
  children: [jsx('option', { value: '', children: '選択' }), ...state.models.map(item => jsx('option', { value: JSON.stringify([item.provider, item.model]), children: `${item.provider}/${item.model}` }, `${item.provider}:${item.model}`))] })] }),
1015
- jsxs('label', { children: ['レビューの目的(任意)', jsx('textarea', { value: state.purpose, maxLength: 4000, onChange: (event) => controller.change(sessionId, { purpose: event.target.value }) })] }),
1016
- jsx('button', { type: 'button', disabled: state.busy || !state.selected.length || !state.modelKey, onClick: () => void controller.analyze(sessionId), children: '分析する' }),
1017
- review.state === 'analyzing' ? jsx('button', { type: 'button', onClick: () => void controller.cancel(sessionId, review.reviewId), children: '停止' }) : null,
1062
+ jsxs('label', { children: ['レビューの目的(任意)', jsx('textarea', { value: state.purpose, disabled: state.busy || state.loading || state.cancelling, maxLength: 4000, onChange: (event) => controller.change(sessionId, { purpose: event.target.value }) })] }),
1063
+ jsx('button', { type: 'button', disabled: state.busy || state.loading || state.cancelling || review.state === 'analyzing' || !reviewMatchesSelection || !state.selected.length || !state.modelKey, onClick: () => void controller.analyze(sessionId), children: '分析する' }),
1064
+ review.state === 'analyzing' ? jsx('button', { type: 'button', disabled: state.cancelling, onClick: () => void controller.cancel(sessionId, review.reviewId), children: state.cancelling ? '停止中' : '停止' }) : null,
1018
1065
  ] }),
1066
+ !state.models.length && !state.loading ? jsxs('p', { role: 'status', children: [
1067
+ state.modelAvailability === 'no_models' ? '登録済みモデルがありません。DSH のモデル設定を確認してください。'
1068
+ : state.modelAvailability === 'catalog_error' ? 'モデル一覧を取得できませんでした。'
1069
+ : state.modelAvailability === 'service_unavailable' ? 'モデルサービスを利用できません。DSH の接続を確認してください。'
1070
+ : 'モデル一覧を確認できません。DSH の接続とモデル設定を確認してください。',
1071
+ ' ', jsx('button', { type: 'button', disabled: state.busy || state.cancelling, onClick: () => void controller.load(sessionId), children: 'モデルを再取得' }),
1072
+ ] }) : null,
1019
1073
  jsx('button', { type: 'button', className: 'kiokuko-review-list-toggle', onClick: () => {
1020
1074
  controller.change(sessionId, { fileListOpen: !state.fileListOpen });
1021
1075
  requestAnimationFrame(() => document.getElementById(`kiokuko-review-${review.reviewId}-${state.fileListOpen ? 'detail' : 'files'}`)?.focus());
@@ -1082,7 +1136,7 @@ window.__ModuleLoader__.load({
1082
1136
  const style = document.createElement('style');
1083
1137
  style.dataset.pluginCss = 'kiokuko-diff-review';
1084
1138
  style.textContent = `.kiokuko-review-fallback{width:min(1000px,95vw);height:min(85vh,900px);padding:8px;box-sizing:border-box}.kiokuko-review{box-sizing:border-box;height:100%;overflow:auto;padding:12px;color:var(--dsw-alias-label-primary,CanvasText);background:var(--dsw-alias-background-primary,Canvas);font:13px/1.5 var(--dsw-font-family,system-ui)}.kiokuko-review h2{margin:0 0 12px;font-size:17px}.kiokuko-review h3{font-size:14px}.kiokuko-review button,.kiokuko-review select,.kiokuko-review textarea{font:inherit;color:inherit;background:transparent;border:1px solid var(--dsw-alias-border-l4,#888);border-radius:6px;padding:6px;min-height:36px}.kiokuko-review button{cursor:pointer}.kiokuko-review button:disabled{opacity:.55;cursor:default}.kiokuko-review :focus-visible{outline:2px solid Highlight;outline-offset:2px}.kiokuko-review-controls,.kiokuko-review-analysis-controls,.kiokuko-review-exports{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin:8px 0}.kiokuko-review label{display:flex;flex-direction:column;gap:3px}.kiokuko-review fieldset label{display:inline-flex;flex-direction:row;align-items:center;margin:4px 8px}.kiokuko-review-main{display:grid;grid-template-columns:minmax(130px,32%) minmax(0,1fr);gap:10px;min-width:0}.kiokuko-review-main nav{overflow:auto;min-width:0;max-height:55vh}.kiokuko-review-main article{overflow:auto;min-width:0}.kiokuko-review-file-row{display:flex;align-items:center;overflow-wrap:anywhere}.kiokuko-review-file-row button{text-align:left;border:0;overflow-wrap:anywhere}.kiokuko-review-file-row button[aria-current=true]{font-weight:700;text-decoration:underline}.kiokuko-review-diff pre{font:12px/1.4 ui-monospace,monospace;overflow:auto;white-space:pre}.kiokuko-review-diff .added{background:color-mix(in srgb,green 15%,transparent)}.kiokuko-review-diff .removed{background:color-mix(in srgb,red 15%,transparent)}.kiokuko-review-exports a{color:inherit;text-decoration:underline}@media(max-width:600px){.kiokuko-review-main{grid-template-columns:1fr}.kiokuko-review-main nav{max-height:180px}}`;
1085
- style.textContent += '.kiokuko-review{container-type:inline-size}.kiokuko-review-list-toggle{display:none}@container (max-width:600px){.kiokuko-review-main{grid-template-columns:1fr}.kiokuko-review-list-toggle{display:block}.kiokuko-review-main[data-list-open=false] nav{display:none}.kiokuko-review-main[data-list-open=true] article{display:none}}';
1139
+ style.textContent += '.kiokuko-review{container-type:inline-size}.kiokuko-review-list-toggle{display:none}.kiokuko-review-analysis-controls label:first-child{flex:1 1 160px;min-width:0;max-width:100%}.kiokuko-review-analysis-controls label:nth-child(2){flex:2 1 220px;min-width:0;max-width:100%}.kiokuko-review-analysis-controls select,.kiokuko-review-analysis-controls textarea{box-sizing:border-box;width:100%;min-width:0;max-width:100%}.kiokuko-review-diff [tabindex="-1"]:focus{outline:2px solid Highlight;outline-offset:2px}@container (max-width:800px){.kiokuko-review-main{grid-template-columns:minmax(0,1fr)}.kiokuko-review-list-toggle{display:block}.kiokuko-review-main[data-list-open=false] nav{display:none}.kiokuko-review-main[data-list-open=true] article{display:none}}';
1086
1140
  document.head.appendChild(style);
1087
1141
  return () => style.remove();
1088
1142
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,UAAU,wBAAwB;IAChC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;QAAE,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAA;KAAE,CAAC,CAAA;IAC7G,QAAQ,EAAE;QAAE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CACxC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,wBAAwB,CAAA;CAC3C;AAYD,UAAU,gBAAgB;IACxB,QAAQ,CAAC,cAAc,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE;YAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAA;SAAE,CAAA;KAAE,CAAA;IACxF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAA;QAC1F,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;KAClD,CAAA;IACD,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,OAAO,CAAA;KAAE,CAAA;IAC5E,QAAQ,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IAC7F,MAAM,CAAC,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAA;IAC1F,QAAQ,CAAC,KAAK,EAAE;QACd,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,GAAG,OAAO,CAAA;QACtD,QAAQ,CACN,UAAU,EAAE;YACV,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;YACrB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;YACpB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;YACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;YAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAA;YAC7D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;YACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;SAChD,EACD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,GACrD,OAAO,CAAA;KACX,CAAA;IACD,MAAM,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;IAChF,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,OAAO,CAAA;CACtI;AA6FD,+EAA+E;AAC/E,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,UAAU,GAAG,WAAW,CAAC,CAqBjH;AAuHD,eAAO,MAAM,MAAM,gDAAiD,CAAA;AAwwBpE,mEAAmE;AACnE,wBAAgB,KAAK,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CA6DjD"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,7 @@ export declare class DiffReviewController {
31
31
  binding(sessionId: string): Promise<ReviewSessionBinding>;
32
32
  availability(sessionId: string): Promise<{
33
33
  availability: 'available' | 'repo_unavailable';
34
+ modelAvailability: 'available' | 'no_models' | 'service_unavailable' | 'catalog_error';
34
35
  models: {
35
36
  provider: string;
36
37
  model: string;
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/diff-review/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/diff-review/controller.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,7 @@ export class DiffReviewController {
31
31
  }
32
32
  catch (error) {
33
33
  if (error instanceof DiffReviewError && error.code === 'repo_unavailable')
34
- return { availability: 'repo_unavailable', models: [], untracked: [], turns: [] };
34
+ return { availability: 'repo_unavailable', modelAvailability: 'service_unavailable', models: [], untracked: [], turns: [] };
35
35
  throw error;
36
36
  }
37
37
  const git = this.host.subprocess ? new GitReader(this.host.subprocess, binding.repositoryRoot, this.limits) : undefined;
@@ -40,15 +40,20 @@ export class DiffReviewController {
40
40
  const live = this.host.sessions?.get(sessionId);
41
41
  const turns = live?.snapshotEvents?.().filter(event => event.type === 'workspace/changes').map(event => event.seq).slice(-20).reverse() ?? [];
42
42
  let models = [];
43
+ let modelAvailability = 'service_unavailable';
43
44
  if (this.host.catalog && this.host.llm) {
44
45
  try {
45
- models = (await readModelCatalog(this.host.catalog)).models.map(item => ({ provider: item.provider, model: item.id }));
46
+ const catalog = await readModelCatalog(this.host.catalog);
47
+ models = catalog.models.map(item => ({ provider: item.provider, model: item.id }));
48
+ modelAvailability = models.length ? 'available' : catalog.failures.length ? 'catalog_error' : 'no_models';
49
+ }
50
+ catch {
51
+ modelAvailability = 'catalog_error';
46
52
  }
47
- catch { /* facts remain available without the model catalog */ }
48
53
  }
49
54
  this.prune();
50
55
  const latest = [...this.reviews.values()].reverse().find(item => item.binding.sessionId === sessionId && item.binding.workspace === binding.workspace && item.binding.repositoryRoot === binding.repositoryRoot);
51
- return { availability: available ? 'available' : 'repo_unavailable', models, untracked, turns, ...(latest ? { review: structuredClone(latest.review) } : {}) };
56
+ return { availability: available ? 'available' : 'repo_unavailable', modelAvailability, models, untracked, turns, ...(latest ? { review: structuredClone(latest.review) } : {}) };
52
57
  }
53
58
  prune() {
54
59
  for (const [id, item] of this.reviews)
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/diff-review/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/diff-review/controller.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../../src/dsh/answer-review/evidence.ts"],"names":[],"mappings":"AAEA,OAAO,EAA+C,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE9F,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoB7G"}
1
+ {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../../src/dsh/answer-review/evidence.ts"],"names":[],"mappings":"AAEA,OAAO,EAA+C,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE9F,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyB7G"}
@@ -16,10 +16,15 @@ export function answerReviewInput(task, events, turn, startSeq) {
16
16
  return { skipped: 'no_text_answer' };
17
17
  const calls = new Set(owned.filter(event => event.type === 'tool/call' && event.seq < candidate.seq).map(event => event.data?.callId));
18
18
  const evidence = owned.filter(event => event.type === 'tool/result' && event.seq < candidate.seq).map(event => {
19
- const blocks = event.data?.message?.content;
20
- if (!Array.isArray(blocks) || blocks.some(block => block.type !== 'tool-result' || !calls.has(block.toolCallId)))
19
+ const message = event.data?.message, blocks = message?.content;
20
+ const legacy = Array.isArray(blocks) && blocks.length > 0 && blocks.every(block => block.type === 'tool-result'
21
+ && calls.has(block.toolCallId) && (message.source?.callId === undefined || message.source?.callId === block.toolCallId));
22
+ const current = message?.role === 'tool' && message?.source?.kind === 'tool'
23
+ && message.toolCallId === message.source.callId && calls.has(message.toolCallId)
24
+ && Array.isArray(blocks) && blocks.length > 0 && blocks.every(block => block.type === 'text' && typeof block.text === 'string');
25
+ if (!legacy && !current)
21
26
  throw new Error('Unbound tool evidence');
22
- return { seq: event.seq, result: event.data.message };
27
+ return { seq: event.seq, result: message };
23
28
  });
24
29
  const unassessed = evidence.length === 0 ? ['grounding', 'verification'] : [];
25
30
  const questions = answerReviewQuestions;
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../../src/dsh/answer-review/evidence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../../src/dsh/answer-review/evidence.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,10 @@ export interface DshNativeTurnStoppingPayload {
48
48
  export interface DshCompositionHost {
49
49
  readonly diffReview?: DiffReviewController;
50
50
  readonly decisions?: DecisionService;
51
+ readonly modelAuto?: {
52
+ readonly coordinator: import('./model-auto/coordinator.js').ModelAutoCoordinator;
53
+ readonly validSession: (agentId: string, sessionId: string) => boolean;
54
+ };
51
55
  readonly semanticCompaction?: SemanticCompactionCoordinator;
52
56
  readonly skillPrompts?: DshSkillPrompts;
53
57
  readonly configureSkillPrompts?: (prompts: DshSkillPrompts) => void;