Repository navigation
v0.44.2
[0.44.2] - 2026-10-04
Highlight: 画面のうち「いま操作できる部分」(入力欄やダイアログ)の切り出しを全エージェント共通で 1 回だけ行うようにし、状態表示と Auto-Yes が同じものを読むようにした。会話に引用されたダイアログや footer の文字を本物の操作部分と読む不具合がツールごとに 1 件ずつ起きていた原因(判定がツール別に散っていたこと)を取り除いた。あわせて、承認ダイアログの見せ方・答え方をサーバー側の
promptViewで 1 か所で決め、PC・スマホ・チャット面・CLI が同じ結果を読むようにした。
Added
- feat(agent-health): bug Issue の「分類」節と metrics
bug-flowを追加 (#3185): bug Issue の本文末尾に「分類」節(原因の PR/発見経路/影響する経路、値は決まった語)を置く形を.github/ISSUE_TEMPLATE/bug_report.mdと起票手順(/uat・/uat-fix-loop・/bug-fix・/orchestrate)に追加し、影響する経路がなし(内部)ならinternalラベルも付けると明記。日次メトリクスに分類processのbug-flowを追加し、直近 7 日のbugIssue をgh issue listで数えて総数・internalを除いた数・回帰の率・利用者まで届いた率・分類節の記入率を出す(未記入や決まった語以外の値は率の分母から外し、分母 0 はnull)。candidatesは常に空で Issue は自動で作らない。ghの失敗は他の指標と同じく skip。
Changed
- feat(prompt): 承認ダイアログの見せ方と答え方を
promptViewとして 1 か所で決め、Auto-Yes を消す出来事を 1 つの表にまとめる (#3184): 新しい純関数derivePromptView()(src/lib/session/prompt-view.ts)が、承認待ちのデータから「画面の番号で答える/API で答える/読めない」の別・見出し・選択肢・自由入力の可否を決め、current-output(HTTP と WebSocket の両方)にpromptViewとして追加で載せる。PC パネル・スマホのシート・チャット面・ブラウザ側 Auto-Yes・commandmate wait・capture --promptsはこの結果だけを読む。これにより、API で答える承認や質問(OpenCode V2)で、チャット面が「選択肢を読み取れませんでした」のカードを出していた問題も直る(#3181 の取りこぼし)。挙動の変更: API で答える待ちは、サイドバーの点とプッシュ通知ではwaitingKind: 'prompt'になり、「ターミナルで確認」ではなく「返答待ち」の文面で通知される(別セッションへの relay の対象にはしない)。外部契約の変更:commandmate waitの exit 10 の JSON にanswerVia(screen/api/terminal)を追加し、決定 ID で答える質問ではoptionsが空ではなく{number, label}の選択肢になる(type: 'unclassified'などの既存フィールドの意味は不変)。Auto-Yes はsrc/lib/auto-yes-lifecycle.tsの表(セッション停止・インスタンス削除・worktree 削除・孤児の掃除・連続エラー・サーバー停止)で消し方を決め、各経路がそれを呼ぶ。これまで何もしていなかったインスタンスの削除(UI の削除や--killなしのinstances remove)で、そのインスタンスの Auto-Yes を消すようにした(残っていると同じ ID の次のインスタンスが許可を引き継いでいた)。
Fixed
- fix(detection): 「いま操作できる部分」(live region)を
NormalizedFrameで 1 回だけ切り出し、状態表示と Auto-Yes が同じ切り出しを読むようにした (#3183): 会話に引用されたダイアログや footer の文字を本物の操作部分と読む不具合(#2774 / #2776 / #2841 / #2845 / #2846 / #2847 / #2851 / #2991)がツールごとに 1 件ずつ起きていた原因は、「画面のどこからが操作部分か」の判定がツール別に散っていたこと。各ツールは入力欄・ダイアログ枠の目印をLiveRegionSpecとして宣言するだけになり(claude / codex / antigravity / command-code / copilot / opencode / opencode-v2)、normalizeFrame(output, tool)が 1 回だけ切り出す。「入力欄が画面の下端なら、その上の番号リスト・ダイアログ判定は引用」という拒否規則を状態検出(runToolDetectionとdetectDialog)と Auto-Yes(detectPromptOnCleanFrame/assessPromptAnswerability)が共有し、Auto-Yes の poller は 1 tick につき生のキャプチャから 1 回だけ作ったフレームを、プロンプト検出・codex の起動画面ガード・ダイアログゲートへ同じものとして渡す(従来はゲートだけ罫線を消した綴りで判定しており、claude / command-code の入力欄が見えていなかった)。codex のcodexActiveRegionLinesと agy のisAntigravityQuotedNumberedListはこの仕組みに置き換えて削除。あわせて agent-health のscreen-*が不合格のとき、判定に使った画面全体を ANSI つきのままレポートの隣(~/.commandmate/agent-health/frames/<日付>/<tool>-<checkId>.txt、判定は同名.json、check のframePaths)に保存し、実機で撮り直さずに fixture にできるようにした(CM_AGENT_HEALTH_SAVE_FRAMES=allで合格した画面も保存)。設計はdocs/design/3183-live-region-extraction.md。