cueline 0.1.7 → 0.2.1

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 (82) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codex-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +56 -0
  4. package/README.ja.md +77 -43
  5. package/README.ko.md +77 -43
  6. package/README.md +52 -70
  7. package/README.zh-CN.md +77 -43
  8. package/README.zh-TW.md +67 -41
  9. package/dist/src/api-contracts.d.ts +9 -0
  10. package/dist/src/api-controller-handoff.d.ts +5 -1
  11. package/dist/src/api-controller-handoff.js +148 -0
  12. package/dist/src/api-controller-handoff.js.map +1 -1
  13. package/dist/src/api.d.ts +9 -1
  14. package/dist/src/api.js +15 -2
  15. package/dist/src/api.js.map +1 -1
  16. package/dist/src/browser/browser-adapter.d.ts +26 -0
  17. package/dist/src/browser/codex-iab/bootstrap.d.ts +1 -0
  18. package/dist/src/browser/codex-iab/bootstrap.js +1 -0
  19. package/dist/src/browser/codex-iab/bootstrap.js.map +1 -1
  20. package/dist/src/browser/codex-iab/chatgpt-client.js +113 -21
  21. package/dist/src/browser/codex-iab/chatgpt-client.js.map +1 -1
  22. package/dist/src/cli/health-commands.js +74 -0
  23. package/dist/src/cli/health-commands.js.map +1 -1
  24. package/dist/src/cli/main.js +31 -10
  25. package/dist/src/cli/main.js.map +1 -1
  26. package/dist/src/cli/observation-commands.js +112 -1
  27. package/dist/src/cli/observation-commands.js.map +1 -1
  28. package/dist/src/cli/run-status-view.d.ts +8 -0
  29. package/dist/src/cli/run-status-view.js +9 -0
  30. package/dist/src/cli/run-status-view.js.map +1 -1
  31. package/dist/src/core/controller-evidence.d.ts +9 -0
  32. package/dist/src/core/controller-evidence.js +21 -0
  33. package/dist/src/core/controller-evidence.js.map +1 -0
  34. package/dist/src/core/controller-loop.d.ts +2 -1
  35. package/dist/src/core/controller-loop.js +83 -10
  36. package/dist/src/core/controller-loop.js.map +1 -1
  37. package/dist/src/core/controller-turn.d.ts +9 -1
  38. package/dist/src/core/controller-turn.js +98 -4
  39. package/dist/src/core/controller-turn.js.map +1 -1
  40. package/dist/src/core/controller-types.d.ts +2 -0
  41. package/dist/src/core/run-status.d.ts +9 -1
  42. package/dist/src/core/run-status.js +26 -0
  43. package/dist/src/core/run-status.js.map +1 -1
  44. package/dist/src/core/state-machine.d.ts +19 -1
  45. package/dist/src/core/state-machine.js +132 -1
  46. package/dist/src/core/state-machine.js.map +1 -1
  47. package/dist/src/observation/run-diff.d.ts +39 -0
  48. package/dist/src/observation/run-diff.js +67 -0
  49. package/dist/src/observation/run-diff.js.map +1 -0
  50. package/dist/src/observation/run-graph.d.ts +17 -0
  51. package/dist/src/observation/run-graph.js +77 -0
  52. package/dist/src/observation/run-graph.js.map +1 -0
  53. package/dist/src/observation/run-status-at.d.ts +41 -0
  54. package/dist/src/observation/run-status-at.js +65 -0
  55. package/dist/src/observation/run-status-at.js.map +1 -0
  56. package/dist/src/observation/run-timeline.js +2 -1
  57. package/dist/src/observation/run-timeline.js.map +1 -1
  58. package/dist/src/protocol/types.d.ts +4 -0
  59. package/dist/src/router/explain.d.ts +28 -0
  60. package/dist/src/router/explain.js +86 -0
  61. package/dist/src/router/explain.js.map +1 -0
  62. package/dist/src/router/resolver.d.ts +2 -1
  63. package/dist/src/router/resolver.js +3 -3
  64. package/dist/src/router/resolver.js.map +1 -1
  65. package/dist/src/version.d.ts +1 -1
  66. package/dist/src/version.js +1 -1
  67. package/docs/assets/README.md +3 -1
  68. package/docs/assets/cueline-architecture-en.svg +63 -0
  69. package/docs/assets/cueline-architecture-ja.svg +63 -0
  70. package/docs/assets/cueline-architecture-ko.svg +63 -0
  71. package/docs/assets/cueline-architecture-zh-CN.svg +63 -0
  72. package/docs/assets/cueline-architecture-zh-TW.svg +63 -0
  73. package/docs/assets/cueline-states-en.svg +50 -0
  74. package/docs/assets/cueline-states-ja.svg +48 -0
  75. package/docs/assets/cueline-states-ko.svg +48 -0
  76. package/docs/assets/cueline-states-zh-CN.svg +48 -0
  77. package/docs/assets/cueline-states-zh-TW.svg +48 -0
  78. package/docs/controller-protocol.md +6 -0
  79. package/docs/multi-model-routing.md +256 -0
  80. package/docs/runner-contract.md +3 -0
  81. package/docs/state-and-recovery.md +30 -0
  82. package/package.json +1 -1
package/README.zh-TW.md CHANGED
@@ -5,6 +5,9 @@
5
5
 
6
6
  <p align="center">
7
7
  <a href="https://github.com/Seraphim0916/cueline/actions/workflows/ci.yml"><img alt="ci" src="https://github.com/Seraphim0916/cueline/actions/workflows/ci.yml/badge.svg"></a>
8
+ <a href="https://www.npmjs.com/package/cueline"><img alt="npm" src="https://img.shields.io/npm/v/cueline"></a>
9
+ <a href="package.json"><img alt="node" src="https://img.shields.io/node/v/cueline"></a>
10
+ <a href="LICENSE"><img alt="license" src="https://img.shields.io/npm/l/cueline"></a>
8
11
  </p>
9
12
 
10
13
  <p align="center">
@@ -15,16 +18,19 @@
15
18
 
16
19
  那個網頁碰不到你的機器,也沒有本機工具。它每一輪只吐出文字控制指令。CueLine 預設把 caller 工作保存成待辦:`advise` 是協調式交接;`work` 則必須先建立持久 claim 並正式 start,才能開始修改。只有雙重明確授權 `process` executor 時,才會啟動已註冊的本機工作行程。
17
20
 
18
- CueLine 是獨立實作,**沒有任何 runtime npm 相依套件**,也不是 Omnilane GPT Relay 的包裝層。
21
+ <img alt="CueLine 架構:ChatGPT 網頁對話每輪發出一道文字指令,CueLine 驗證並記錄,目前的 Codex 執行獲准的本機工作。" src="docs/assets/cueline-architecture-zh-TW.svg" width="100%">
19
22
 
20
- ## 最新版本:0.1.7
23
+ CueLine 是獨立實作,**沒有任何 runtime npm 相依套件**,也不是 Omnilane 的包裝層。
21
24
 
25
+ ## 最新版本:0.2.0
26
+
27
+ - 新增四個唯讀可觀測性指令,並強化「確認未送出」的提交恢復;輸出維持 fail-closed 去敏感資訊,路由解釋也只發生在程序啟動前。
22
28
  - 新增安全的 run 清單、doctor、watch、timeline、handoff、完整性驗證、協定 lint、瀏覽器診斷與 inspect 證據分頁。
23
29
  - 強化分頁/按鈕證據、指令與路由上限、原子 job 狀態、私有持久資料、workdir 身分、runtime/取消紀錄,以及 CLI 去敏感資訊。
24
30
  - 新增選用的 `complete` 後精確對話封存:點擊前有持久 fence,Pro 又開始回答或換頁就拒絕,進入含糊狀態後絕不重點。
25
- - 完成 454/454 測試與一次可丟棄的真實 ChatGPT Web Pro 驗收;主控自然完成、只封存一次,原本使用者對話完全未動。
31
+ - 完成 479/479 測試與一次可丟棄的真實 ChatGPT Web Pro 驗收;主控自然完成、只封存一次,原本使用者對話完全未動。
26
32
 
27
- 完整內容請看 [changelog](CHANGELOG.md#017---2026-07-16) 或不可變的 [v0.1.7 release](https://github.com/Seraphim0916/cueline/releases/tag/v0.1.7)。
33
+ 完整內容請看 [changelog](CHANGELOG.md#020---2026-07-16) 或版本化的 [v0.2.0 release](https://github.com/Seraphim0916/cueline/releases/tag/v0.2.0)。
28
34
 
29
35
  ## 一次執行實際上怎麼跑
30
36
 
@@ -32,6 +38,8 @@ CueLine 是獨立實作,**沒有任何 runtime npm 相依套件**,也不是
32
38
 
33
39
  每一輪:CueLine 先把自己「即將問什麼」寫進紀錄,送出一份觀測(observation)到對話裡,之後再讀回**恰好一個** `<CueLineControl>` 封包。主控端從五個動作裡挑一個——`dispatch`、`wait`、`inspect`、`complete`、`blocked`——封包以外的任何文字都不會被執行。指令若寫錯 run、寫錯輪次,或工作定義有問題,會被退回去做有次數上限的修正,而不是靠猜。迴圈會在單次可靠送出後以 `awaiting_controller` 暫停,也會停在 caller 交接、`complete`、`blocked` 或輪數用完(預設 12 輪)。
34
40
 
41
+ 主控指令另有 fail-closed 資源上限:每個封包 131,072 字元、每次 dispatch 最多 64 個工作、每次 wait 或 inspect 最多 256 個明確 job ID。這些檢查發生在註冊工作或啟動行程之前。
42
+
35
43
  非預設的 `maxRounds` 會在建立 run 時固定,並跨所有無 owner 的暫停累計主控總輪數。之後續跑通常省略它、沿用持久值;若傳入不同數字,CueLine 會拒絕,不會偷偷重設或放寬預算。
36
44
 
37
45
  `startCueLineRun` 與 `runCueLine` 都預設使用 `caller` executor。使用內建瀏覽器時,CueLine 只送一次、保存精確對話 URL,然後回傳 `awaiting_controller` 並釋放 runtime lease,不會讓單一工具呼叫卡著等 Pro 思考。之後的 `continueCueLineRun` 只做一次唯讀觀測;若仍未完成,就再次回傳 `awaiting_controller`,絕不重送。`advise` 派工回傳 `awaiting_caller`,沒有副作用 claim,需協調單一 session。`work` 派工回傳 `awaiting_caller_work`,在目前 Codex 呼叫 `claimCueLineCallerJob` 與 `startCueLineCallerJob` 前,絕對尚未開始本機修改。claim 綁定 run、job、task hash、絕對 workdir、canonical 目錄身分、caller identity 與 fencing token;本機工作只能使用它回傳的 `resolvedWorkdir`。已開始的工作不會自動重試,claim 逾期則成為 `ambiguous`。Pro 只提出與審查文字指令,沒有親自使用本機工具。
@@ -42,6 +50,12 @@ Process 模式必須同時指定 `executor: "process"` 與 `allowProcessExecutio
42
50
 
43
51
  這是允許清單(allow-list),不是沙箱。已註冊的工作行程擁有跟 CueLine 行程本身相同的權限;`advise` 對應 Codex 的唯讀沙箱、`work` 對應 `workspace-write`,但你註冊了什麼,就等於你授權了什麼。
44
52
 
53
+ ## 執行狀態
54
+
55
+ <img alt="CueLine 執行狀態:ready、awaiting_controller、awaiting_caller、awaiting_caller_work、complete、blocked、cancelled,以及每個狀態的意義。" src="docs/assets/cueline-states-zh-TW.svg" width="100%">
56
+
57
+ `cueline run status <run-id> --json` 回報持久狀態與 `safeNextAction`;`cueline run doctor <run-id> --json` 把同一份快照轉成穩定的 finding 代碼與一個安全的下一步。任何含糊情境——可能已送出的點擊、逾期的已啟動 claim、人工附件送出——CueLine 都會停下來要求明確 reconcile,而不是重送。完整恢復契約見 [state and recovery](docs/state-and-recovery.md)。
58
+
45
59
  ## 主控端必須是 Pro 模型
46
60
 
47
61
  除非輸入框的模型選單顯示 `Pro`,否則 CueLine 拒絕送出。對話若停在別的模型,CueLine 會先把輸入框切成 `Pro`——這是它唯一被允許做的模型切換。在一次已驗證的實機執行中,它把 Instant 切成 Pro,回應回來的是 `gpt-5-6-pro`。
@@ -57,15 +71,15 @@ ChatGPT Pro 訂閱方案與「選定的 Pro 模型」是兩回事。帳號或個
57
71
  從 npm registry 安裝:
58
72
 
59
73
  ```bash
60
- npm install -g cueline@0.1.7
74
+ npm install -g cueline@0.2.0
61
75
  cueline install
62
76
  cueline doctor
63
77
  ```
64
78
 
65
- 作為備援,也可以安裝 [v0.1.7 release](https://github.com/Seraphim0916/cueline/releases/tag/v0.1.7) 上的打包 tarball,該 release 同時附上它的 `.sha256` 校驗碼:
79
+ 作為備援,也可以安裝 [v0.2.0 release](https://github.com/Seraphim0916/cueline/releases/tag/v0.2.0) 上的打包 tarball,該 release 同時附上它的 `.sha256` 校驗碼:
66
80
 
67
81
  ```bash
68
- npm install -g https://github.com/Seraphim0916/cueline/releases/download/v0.1.7/cueline-0.1.7.tgz
82
+ npm install -g https://github.com/Seraphim0916/cueline/releases/download/v0.2.0/cueline-0.2.0.tgz
69
83
  cueline install
70
84
  cueline doctor
71
85
  ```
@@ -88,7 +102,7 @@ cueline doctor
88
102
  接著,在 Codex 裡:
89
103
 
90
104
  1. 用 Codex 的內建瀏覽器開啟 `https://chatgpt.com` 並登入。
91
- 2. 讓你要當主控的那個對話保持選取狀態——該頁面就是主控端。它的輸入框必須停在 `Pro` 模型;若不是,CueLine 會替你選成 `Pro`,否則就拒絕送出。
105
+ 2. 讓你要當主控的那個對話保持選取狀態——該頁面就是主控端。若沒有已選取的分頁、且同時有多個相符的 ChatGPT 分頁,CueLine 會回傳 `IAB_CHATGPT_TAB_AMBIGUOUS`,而不是擅自挑第一個。它的輸入框必須停在 `Pro` 模型;若不是,CueLine 會替你選成 `Pro`,否則就拒絕送出。
92
106
  3. 請 Codex 用 CueLine 處理這件事:*「用 CueLine,讓那個開著的 ChatGPT Pro 對話來指揮這項任務。」*
93
107
  4. 留著回傳的 `runId`。中斷的執行要續跑,就靠它。
94
108
 
@@ -165,20 +179,25 @@ if (result.status === "complete") {
165
179
 
166
180
  `verifyCueLineRun(runId)` 是唯讀完整性檢查,會核對建立 marker、event replay 與 authority fence、選用 snapshot、runtime lease 和 job status 證據;只回傳穩定 finding,不回傳持久 run 內容。
167
181
 
182
+ `confirmManualControllerSubmission(runId, …)` 與 `confirmControllerTurnNotSent(runId, …)` 是兩種 reconcile 確認的程式介面。兩者都只追加事件、可重複執行(冪等),也都不驅動瀏覽器、不重送任何東西。
183
+
168
184
  在 Codex 的 runtime 裡,import `cueline api path` 印出的那個絕對路徑模組——那就是你安裝的那份套件建置出來的 API。
169
185
 
170
186
  `startCueLineRun` 只建立持久 run 並回傳 `ready`;`runCueLine` 會建立並推進到持久 controller 觀測暫停、caller 交接或終態。續跑前先執行 `cueline run status <run-id> --json`。單一正常送出、非人工、具精確 URL、無 job/pending command/取消的 stale caller observer 可被 fencing 後唯讀恢復;其他 stale 狀態仍須正式接管。`caller_work_pending`、`caller_work_claimed`、`caller_work_running` 分別只允許 `claim_caller_work`、`start_caller_work`、`continue_caller_work`,主控的 `dispatch` 本身不代表本機工作已開始。CLI 的 `run status` 只輸出交接所需 metadata,不包含 task 內文、caller 身分、task hash、workdir 或 runtime owner ID;完成正式 claim 後,API 才會把精確 task 與 workdir 交給獲授權的 caller。
171
187
 
172
188
  ## CLI
173
189
 
174
- CLI 不驅動瀏覽器。`doctor`、`routing`、`jobs`、`runs`、`run status`、`run verify`、`api path`、`config path` 都是唯讀;`install`/`uninstall` 只改套件擁有的 skill 連結;`run reconcile`、`run takeover`、`run reconcile-runtime`、`run cancel`/`run stop`、`job cancel` 會追加稽核證據或修改持久 run/job 狀態。執行寫入狀態的命令前,先用 `cueline help` 核對完整參數。
190
+ CLI 不驅動瀏覽器。執行寫入狀態的命令前,先用 `cueline help` 核對完整參數。
175
191
 
176
- ```console
177
- $ cueline install
178
- CueLine skill installed: /Users/you/.codex/skills/cueline
192
+ | 分組 | 命令 | 效果 |
193
+ | --- | --- | --- |
194
+ | 檢視 | `doctor` · `routing` · `routing explain` · `jobs` · `runs` · `run status` · `run status-at` · `run diff` · `run doctor` · `run watch` · `run timeline` · `run graph` · `run verify` · `run handoff` · `protocol lint` · `api path` · `config path` | 唯讀 |
195
+ | 安裝 | `install` · `uninstall` | 只建立或移除套件擁有的 skill 連結 |
196
+ | 恢復 | `run reconcile` · `run takeover` · `run reconcile-runtime` · `run cancel` / `run stop` · `job cancel` | 追加稽核證據或修改持久 run/job 狀態 |
179
197
 
198
+ ```console
180
199
  $ cueline doctor
181
- CueLine 0.1.7
200
+ CueLine 0.2.0
182
201
  status ok
183
202
  node 22.14.0 ok
184
203
  config /usr/local/lib/node_modules/cueline/config/routing.default.json valid
@@ -187,52 +206,45 @@ caller_ready yes
187
206
  caller_lanes 1
188
207
  process_available_lanes 1
189
208
 
190
- $ cueline doctor --json
191
- {"version":"0.1.7","status":"ok","node":{"version":"22.14.0","ok":true,"requirement":">=22"},...}
192
-
193
- $ cueline api path
194
- /usr/local/lib/node_modules/cueline/dist/src/api.js
195
-
196
209
  $ cueline routing
197
210
  default codex-default available
198
211
 
199
- $ cueline routing --json
200
- {"version":"0.1.7","availableLanes":1,"lanes":[{"name":"default","status":"available","selectedRunnerId":"codex-default"}],...}
201
-
202
- $ cueline jobs
203
- No jobs.
204
-
205
- $ cueline runs
206
- No runs.
207
-
208
212
  $ cueline run status run_... --json
209
213
  {"status":"running","executor":"caller","phase":"caller_jobs_pending","runtime":{"ownership":"missing"},...}
210
214
 
211
- $ cueline run verify run_... --json
212
- {"runId":"run_...","outcome":"verified","marker":"valid",...}
215
+ $ cueline run doctor run_... --json
216
+ {"outcome":"action_required","phase":"caller_jobs_pending","nextAction":"execute_caller_jobs",...}
213
217
 
214
- $ cueline run takeover stale_run_... --json
215
- {"runId":"stale_run_...","outcome":"taken_over","next":"continue",...}
218
+ $ cueline run reconcile run_... --request-id msg_... --manual-send-confirmed --conversation-url https://chatgpt.com/c/...
219
+ run_...\tmsg_...\tconfirmed
216
220
 
217
221
  $ cueline run cancel run_...
218
222
  run_... requested affected_jobs=0
219
-
220
- $ cueline config path
221
- /usr/local/lib/node_modules/cueline/config/routing.default.json
222
-
223
- $ cueline uninstall
224
- CueLine skill removed: /Users/you/.codex/skills/cueline
225
223
  ```
226
224
 
227
225
  Node 版本太舊、或沒有任何已啟用的 caller 通道時,`cueline doctor` 會以非零狀態結束。`process_available_lanes` 可以是 0 而不影響 caller 模式;只有明確選用 process executor 前才需要用 `cueline routing` 檢查 process 可用性。`cueline api path` 印出的就是 skill 會 import 的模組,所以用打包安裝時完全不需要 clone 原始碼。`cueline help` 會列出每個命令的精確語法,包括 `--json` 與人工 reconcile 的必要確認參數。
228
226
 
227
+ 0.2.0 新增的四個可觀測性命令全部嚴格唯讀:`run status-at` 依單一精確事件序號重建去敏感的 run 狀態——「那個當下 CueLine 知道什麼」;`run diff` 逐欄比較兩份去敏感的 run 摘要,絕不含原始 prompt 或輸出;`run graph` 把去敏感的 timeline 條目畫成有界的 Mermaid 控制流程圖;`routing explain` 則在任何行程啟動前解釋通道選擇、可用性與淘汰原因,不洩漏 runner 參數(見 [multi-model routing](docs/multi-model-routing.md))。
228
+
229
+ 實驗性的診斷命令各有專屬文件:
230
+
231
+ | 命令 | 用途 | 文件 |
232
+ | --- | --- | --- |
233
+ | `run doctor` | 把 run 快照轉成穩定 finding 代碼、有界證據與一個安全下一步,不寫入任何狀態 | [run-doctor](docs/experiments/run-doctor.md) |
234
+ | `run watch` | 以持久事件序號為游標,做有界、不佔 lease 的觀察 | [run-watch](docs/experiments/run-watch.md) |
235
+ | `protocol lint` | 離線驗證 Pro 封包,一次回報所有已知的契約修正 | [protocol-lint](docs/experiments/protocol-lint.md) |
236
+ | `run handoff` | 產出帶精確身分與絕對路徑的安全重啟包 | [run-handoff](docs/experiments/run-handoff.md) |
237
+ | `run timeline` | 去敏感、游標分頁的稽核視圖,不含原始事件內容 | [run-timeline](docs/experiments/run-timeline.md) |
238
+
229
239
  只有 `run status` 明確顯示 stale owner 時才能用 `run takeover`。新鮮的 active heartbeat 會被拒絕;命令回傳 `next: continue` 或 `next: reconcile_runtime`,請照該值行動,不要自行猜測。
230
240
 
231
241
  ## 設定
232
242
 
233
243
  `CUELINE_CONFIG` 用來指定路由設定檔;`CUELINE_HOME` 用來搬動本機狀態(預設 `~/.cueline`)。
234
244
 
235
- Caller 模式不會啟動路由行程。只有同時選擇 `executor: "process"` 與 `allowProcessExecution: true` 時,內建的 `default` 通道才會以 `codex-default` 執行隔離的 `codex exec --ignore-user-config`;`advise` 用 `read-only`、`work` 用 `workspace-write`。
245
+ Caller 模式不會啟動路由行程。只有同時選擇 `executor: "process"` 與 `allowProcessExecution: true` 時,內建的 `default` 通道才會以 `codex-default` 執行隔離的 `codex exec --ignore-user-config`;`advise` 用 `read-only`、`work` 用 `workspace-write`。要註冊不同的 process worker,複製 [`config/routing.default.json`](config/routing.default.json)、加入你的候選項,再把 `CUELINE_CONFIG` 指過去。
246
+
247
+ 要註冊多個對應不同模型的候選項,以及 advise 專用 wrapper 的範例,見 [multi-model routing](docs/multi-model-routing.md)。
236
248
 
237
249
  狀態放在 `CUELINE_HOME` 底下:
238
250
 
@@ -250,6 +262,10 @@ jobs/<job-id>.json 每個工作的執行證據
250
262
 
251
263
  續跑只會接回完全相同的對話網址。ChatGPT 把長文字自動轉成附件時,CueLine 會辨識 `attachment_ready`,且最多只點一次;模糊點擊一律記為 `possibly_sent`,絕不補點或重送。只有實際可見、啟用且可操作的 Stop 按鈕才表示 Pro 仍在回答;隱藏殘留按鈕不會擋住完成回覆。若操作者手動送出附件,用 `cueline run reconcile RUN_ID --request-id REQUEST_ID --manual-send-confirmed` 寫入正式確認;之後仍須通過完全相同的 conversation、Pro 證據與 protocol/run/round/request identity 才能唯讀接回。
252
264
 
265
+ 相反方向的確認則處理「點擊確定沒送達」的情境:操作者親自檢視那個精確對話、確認訊息不存在後,用 `cueline run reconcile ... --not-sent-confirmed --conversation-url URL` 以只追加的方式放棄舊的 request 身分,並授權恰好一次同 prompt 重試(使用新的確定性 request ID)。兩個旗標互斥;若被放棄的訊息或其回應事後仍然出現,CueLine 會凍結該 run 交人工裁決,絕不接受或重送。
266
+
267
+ Pro 回答時絕不要打斷它,也不要用 `Answer now`、`Respond now`、`Stop` 或任何等效的加速控制。Pro 沒有本機工具,也不預設知道 repository 佈局或本機路徑。Caller 證據必須包含精確的代碼/錯誤識別字、相關程式碼摘錄與絕對本機路徑,並明確詢問 Pro 是否還需要更多本機證據。
268
+
253
269
  送給主控的工作證據優先採用成功且非空的 stdout,全體共用 12,000 字元上限;完整 stdout/stderr 仍保留在本機 job status。若 Pro 接受 `inspect(job_ids)`,下一輪會先替指定 job 保留證據預算,再處理無關工作。
254
270
 
255
271
  ## 驗證
@@ -267,13 +283,23 @@ npm pack --dry-run
267
283
 
268
284
  ## 0.1 的限制
269
285
 
270
- 只支援文字控制命令。一次執行只對應一個對話。選成 `Pro` 是 CueLine 唯一會做的模型切換。支援 ChatGPT 自動把長文字轉成附件,但不支援主動上傳檔案、圖片、Deep Research、Projects 或 Apps。Caller `work` 必須經過明確 claim/start,長工作需 heartbeat;process 執行則要雙重明確授權。任何模糊送出或已啟動工作都不會被自動重試。
286
+ 只支援文字控制命令。一次執行只對應一個對話。選成 `Pro` 是 CueLine 唯一會做的模型切換。支援 ChatGPT 自動把長文字轉成附件,但不支援主動上傳檔案、圖片、Deep Research、Projects 或 Apps。Caller `work` 必須經過明確 claim/start,長工作需 heartbeat;process 執行則要雙重明確授權。任何模糊送出或已啟動工作都不會被自動重試。macOS 是主要桌面目標、Linux 是 CI 目標;Windows 未驗證。adapter 依賴目前的 ChatGPT 網頁 UI,UI 改版會被明確浮現,絕不變成捏造的答案。
271
287
 
272
288
  完整矩陣見 [compatibility](docs/compatibility.md)。
273
289
 
274
290
  ## 文件
275
291
 
276
- [architecture](docs/architecture.md) · [controller protocol](docs/controller-protocol.md) · [runner contract](docs/runner-contract.md) · [state and recovery](docs/state-and-recovery.md) · [compatibility](docs/compatibility.md) · [provenance](docs/provenance.md)(皆為英文)
292
+ | 文件 | 內容 |
293
+ | --- | --- |
294
+ | [architecture](docs/architecture.md) | 各元件如何組合、信任邊界在哪裡 |
295
+ | [controller protocol](docs/controller-protocol.md) | `<CueLineControl>` 封包、五個動作與修正規則 |
296
+ | [runner contract](docs/runner-contract.md) | 已註冊的 process worker 必須做與不得做的事 |
297
+ | [state and recovery](docs/state-and-recovery.md) | 持久狀態佈局、ownership 與每一條恢復路徑 |
298
+ | [multi-model routing](docs/multi-model-routing.md) | 如何註冊額外的 process worker,以及主控端實際看得到什麼 |
299
+ | [compatibility](docs/compatibility.md) | 支援的平台、runtime 與 UI 假設 |
300
+ | [provenance](docs/provenance.md) | 設計從哪裡來、它不是什麼 |
301
+
302
+ (以上皆為英文)
277
303
 
278
304
  ## 開發
279
305
 
@@ -14,6 +14,8 @@ export interface CueLineRuntimeOptions {
14
14
  environment?: NodeJS.ProcessEnv;
15
15
  defaultTimeoutMs?: number;
16
16
  maxRounds?: number;
17
+ /** Maximum raw characters from one job evidence field exposed to the controller. */
18
+ maxJobEvidenceChars?: number;
17
19
  maxRepairAttempts?: number;
18
20
  now?: () => Date;
19
21
  signal?: AbortSignal;
@@ -87,6 +89,13 @@ export interface ManualControllerSubmissionConfirmation {
87
89
  conversationUrl: string;
88
90
  outcome: "confirmed" | "already_confirmed";
89
91
  }
92
+ export interface ControllerNotSentConfirmation {
93
+ runId: string;
94
+ requestId: string;
95
+ conversationUrl: string;
96
+ promptHash: string;
97
+ outcome: "confirmed" | "already_confirmed";
98
+ }
90
99
  export interface CueLineCallerJobResultInput {
91
100
  status: JobResultStatus;
92
101
  stdout?: string;
@@ -1,6 +1,10 @@
1
- import type { CueLineCallerJobSubmissionOptions, CueLineCallerJobResultInput, CueLineCallerJobSubmissionResult, CueLineRuntimeOptions, ManualControllerSubmissionConfirmation } from "./api-contracts.js";
1
+ import type { CueLineCallerJobSubmissionOptions, CueLineCallerJobResultInput, CueLineCallerJobSubmissionResult, ControllerNotSentConfirmation, CueLineRuntimeOptions, ManualControllerSubmissionConfirmation } from "./api-contracts.js";
2
2
  export declare function confirmManualControllerSubmission(runId: string, options: Pick<CueLineRuntimeOptions, "home" | "environment" | "now"> & {
3
3
  requestId: string;
4
4
  conversationUrl?: string;
5
5
  }): Promise<ManualControllerSubmissionConfirmation>;
6
+ export declare function confirmControllerTurnNotSent(runId: string, options: Pick<CueLineRuntimeOptions, "home" | "environment" | "now"> & {
7
+ requestId: string;
8
+ conversationUrl?: string;
9
+ }): Promise<ControllerNotSentConfirmation>;
6
10
  export declare function submitCueLineCallerJobResult(runId: string, jobId: string, input: CueLineCallerJobResultInput, options?: CueLineCallerJobSubmissionOptions): Promise<CueLineCallerJobSubmissionResult>;
@@ -102,6 +102,154 @@ export async function confirmManualControllerSubmission(runId, options) {
102
102
  await lease.release();
103
103
  }
104
104
  }
105
+ export async function confirmControllerTurnNotSent(runId, options) {
106
+ const environment = options.environment ?? runtimeEnvironment();
107
+ const home = options.home ?? defaultCueLineHome(environment);
108
+ await loadPersistedRunStore(home, runId);
109
+ const runtime = await readRuntimeLease(home, runId, {
110
+ ...(options.now === undefined ? {} : { now: options.now }),
111
+ });
112
+ const retiredOwner = (runtime.ownership === "active" || runtime.ownership === "stale") &&
113
+ runtime.ownerId !== undefined &&
114
+ (await retireDeadRuntimeLease(home, runId, runtime.ownerId))
115
+ ? { ownerId: runtime.ownerId, ownership: runtime.ownership }
116
+ : undefined;
117
+ const lease = await RuntimeLease.claim({
118
+ home,
119
+ runId,
120
+ ...(options.now === undefined ? {} : { now: options.now }),
121
+ });
122
+ try {
123
+ const store = await loadPersistedRunStore(home, runId);
124
+ store.bindRuntimeOwner(lease.ownerId);
125
+ if (retiredOwner !== undefined) {
126
+ await store.append("runtime_dead_owner_retired", {
127
+ owner_id: retiredOwner.ownerId,
128
+ previous_ownership: retiredOwner.ownership,
129
+ });
130
+ }
131
+ const state = store.state;
132
+ const existingRecovery = state.notSentRecovery?.abandonedRequestId === options.requestId
133
+ ? state.notSentRecovery
134
+ : null;
135
+ const turn = (state.pendingControllerTurns ?? []).find((candidate) => candidate.requestId === options.requestId);
136
+ if (turn === undefined) {
137
+ if (existingRecovery !== null) {
138
+ return {
139
+ runId,
140
+ requestId: options.requestId,
141
+ conversationUrl: existingRecovery.conversationUrl,
142
+ promptHash: existingRecovery.promptHash,
143
+ outcome: "already_confirmed",
144
+ };
145
+ }
146
+ throw new CueLineError("CONTROLLER_RECONCILIATION_REQUEST_NOT_FOUND", `Pending controller request '${options.requestId}' was not found.`);
147
+ }
148
+ if ((state.pendingControllerTurns ?? []).length !== 1) {
149
+ throw new CueLineError("OTHER_CONTROLLER_TURNS_PENDING", "Operator-confirmed not-sent recovery requires exactly one pending controller turn.");
150
+ }
151
+ if (turn.submissionState !== "possibly_sent" ||
152
+ state.lastFailure?.code !== "CONTROLLER_SUBMISSION_AMBIGUOUS" ||
153
+ state.lastFailure.requestId !== turn.requestId) {
154
+ throw new CueLineError("CONTROLLER_NOT_SENT_STATE_INVALID", "Operator-confirmed not-sent recovery is available only for the exact ambiguous submission failure.");
155
+ }
156
+ if (turn.retryOfRequestId !== undefined && turn.retryOfRequestId !== null) {
157
+ throw new CueLineError("CONTROLLER_NOT_SENT_RETRY_EXHAUSTED", "The pending turn is already the one authorized not-sent retry; refusing another retry.");
158
+ }
159
+ if (turn.manualSendConfirmed) {
160
+ throw new CueLineError("CONTROLLER_RECONCILIATION_CONFIRMATION_CONFLICT", "The turn is already operator-confirmed as sent; it cannot also be confirmed not sent.");
161
+ }
162
+ const suppliedConversationUrl = options.conversationUrl;
163
+ const knownConversationUrl = state.conversationUrl ?? turn.conversationUrl;
164
+ if (knownConversationUrl === null && suppliedConversationUrl === undefined) {
165
+ throw new CueLineError("CONTROLLER_RECONCILIATION_URL_REQUIRED", "Operator-confirmed not-sent recovery requires the exact ChatGPT conversation URL.");
166
+ }
167
+ if (suppliedConversationUrl !== undefined &&
168
+ knownConversationUrl !== null &&
169
+ !sameChatGptConversationUrl(suppliedConversationUrl, knownConversationUrl)) {
170
+ throw new CueLineError("CONTROLLER_RECONCILIATION_CONVERSATION_MISMATCH", "The operator-confirmed URL does not match the run's exact ChatGPT conversation.");
171
+ }
172
+ const conversationUrl = knownConversationUrl ?? suppliedConversationUrl;
173
+ if (!isExactChatGptConversationUrl(conversationUrl)) {
174
+ throw new CueLineError("CONTROLLER_RECONCILIATION_CONVERSATION_MISMATCH", "Operator-confirmed not-sent recovery requires an exact ChatGPT conversation URL.");
175
+ }
176
+ if (turn.selectedModelLabel === null || !/^Pro(?:\s|$)/i.test(turn.selectedModelLabel)) {
177
+ throw new CueLineError("CONTROLLER_RECONCILIATION_MODEL_UNVERIFIED", "The pending turn lacks exact Pro composer model evidence.");
178
+ }
179
+ if (!/^[0-9a-f]{64}$/.test(turn.promptHash)) {
180
+ throw new CueLineError("CONTROLLER_RECONCILIATION_PROMPT_HASH_INVALID", "The pending turn lacks a valid prompt hash.");
181
+ }
182
+ const events = await readAuthoritativeRunEvents(home, runId);
183
+ for (const event of events) {
184
+ const payload = typeof event.payload === "object" &&
185
+ event.payload !== null &&
186
+ !Array.isArray(event.payload)
187
+ ? event.payload
188
+ : {};
189
+ if (event.type === "controller_response_received" &&
190
+ payload.request_id === options.requestId) {
191
+ throw new CueLineError("CONTROLLER_RECONCILIATION_SUPERSEDED", "A controller response for this request was already received; refusing not-sent recovery.");
192
+ }
193
+ if (event.type !== "controller_command_accepted")
194
+ continue;
195
+ const command = typeof payload.command === "object" &&
196
+ payload.command !== null &&
197
+ !Array.isArray(payload.command)
198
+ ? payload.command
199
+ : {};
200
+ if (command.request_id === options.requestId ||
201
+ (typeof command.round === "number" && command.round >= turn.round)) {
202
+ throw new CueLineError("CONTROLLER_RECONCILIATION_SUPERSEDED", "A command for this request or the same/newer controller round was already accepted.");
203
+ }
204
+ }
205
+ const derivedBaselineUserMessageCount = turn.baselineUserMessageCount ??
206
+ events.filter((event) => {
207
+ if (event.type !== "controller_turn_submitted")
208
+ return false;
209
+ const payload = typeof event.payload === "object" &&
210
+ event.payload !== null &&
211
+ !Array.isArray(event.payload)
212
+ ? event.payload
213
+ : {};
214
+ return typeof payload.round === "number" && payload.round < turn.round;
215
+ }).length;
216
+ if (existingRecovery === null) {
217
+ await store.append("controller_turn_not_sent_confirmed", {
218
+ round: turn.round,
219
+ request_id: turn.requestId,
220
+ prompt_hash: turn.promptHash,
221
+ conversation_url: conversationUrl,
222
+ selected_model_label: turn.selectedModelLabel,
223
+ baseline_user_message_count: derivedBaselineUserMessageCount,
224
+ operator_confirmation: true,
225
+ });
226
+ }
227
+ if ((store.state.pendingControllerTurns ?? []).some((candidate) => candidate.requestId === turn.requestId)) {
228
+ await store.append("controller_turn_abandoned", {
229
+ round: turn.round,
230
+ request_id: turn.requestId,
231
+ reason: "operator_confirmed_not_sent",
232
+ round_not_consumed: true,
233
+ prompt_hash: turn.promptHash,
234
+ conversation_url: conversationUrl,
235
+ selected_model_label: turn.selectedModelLabel,
236
+ baseline_user_message_count: derivedBaselineUserMessageCount,
237
+ operator_confirmation: true,
238
+ });
239
+ }
240
+ await store.snapshot();
241
+ return {
242
+ runId,
243
+ requestId: turn.requestId,
244
+ conversationUrl,
245
+ promptHash: turn.promptHash,
246
+ outcome: existingRecovery === null ? "confirmed" : "already_confirmed",
247
+ };
248
+ }
249
+ finally {
250
+ await lease.release();
251
+ }
252
+ }
105
253
  function assertCallerJobResultInput(input) {
106
254
  if (typeof input !== "object" || input === null || Array.isArray(input)) {
107
255
  throw new CueLineError("CALLER_JOB_RESULT_INVALID", "Caller job result must be an object.");
@@ -1 +1 @@
1
- {"version":3,"file":"api-controller-handoff.js","sourceRoot":"","sources":["../../src/api-controller-handoff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-controller-handoff.js","sourceRoot":"","sources":["../../src/api-controller-handoff.ts"],"names":[],"mappings":"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"}
package/dist/src/api.d.ts CHANGED
@@ -13,7 +13,7 @@ export declare function routingConfigPath(environment?: NodeJS.ProcessEnv, expli
13
13
  export declare function startCueLineRun(options: StartCueLineRunOptions): Promise<CueLineResult>;
14
14
  export declare function runCueLine(options: StartCueLineRunOptions): Promise<CueLineResult>;
15
15
  export declare function continueCueLineRun(options: ContinueCueLineRunOptions): Promise<CueLineResult>;
16
- export { confirmManualControllerSubmission, submitCueLineCallerJobResult, } from "./api-controller-handoff.js";
16
+ export { confirmManualControllerSubmission, confirmControllerTurnNotSent, submitCueLineCallerJobResult, } from "./api-controller-handoff.js";
17
17
  export { claimCueLineCallerJob, heartbeatCueLineCallerJob, releaseCueLineCallerJob, startCueLineCallerJob, };
18
18
  export { cancelCueLineJob, cancelCueLineRun, listCueLineRuns, loadCueLineRunState, loadCueLineRunStatus, reconcileCueLineRuntime, takeoverCueLineRuntime, } from "./api-runtime-lifecycle.js";
19
19
  export { diagnoseCueLineRun, diagnoseCueLineRunStatus, } from "./diagnostics/run-doctor.js";
@@ -21,14 +21,22 @@ export { verifyCueLineRun };
21
21
  export { createCodexIabAdapter, probeCodexIab };
22
22
  export { waitForCueLineRunChange } from "./observation/run-watch.js";
23
23
  export { lintControllerCommandText } from "./protocol/lint-command.js";
24
+ export { explainRoutingConfig } from "./router/explain.js";
24
25
  export { buildCueLineRunHandoff, createCueLineRunHandoff, renderCueLineRunHandoffMarkdown, } from "./observation/run-handoff.js";
25
26
  export { buildCueLineRunTimeline, loadCueLineRunTimeline, } from "./observation/run-timeline.js";
27
+ export { loadCueLineRunStatusAt } from "./observation/run-status-at.js";
28
+ export { compareCueLineRuns } from "./observation/run-diff.js";
29
+ export { buildCueLineRunGraph, loadCueLineRunGraph, } from "./observation/run-graph.js";
26
30
  export { CUELINE_VERSION } from "./version.js";
27
31
  export type { ContinueCueLineRunOptions, CueLineCallerJobResultInput, CueLineCallerJobSubmissionOptions, CueLineCallerJobSubmissionResult, CueLineCallerWorkClaimOptions, CueLineCallerWorkClaimProof, CueLineCallerWorkClaimResult, CueLineCallerWorkMutationOptions, CueLineCallerWorkMutationResult, CueLineJobCancellationResult, CueLineRunListEntry, CueLineRunCancellationResult, CueLineRunVerificationFinding, CueLineRunVerificationOutcome, CueLineRunVerificationReport, CueLineRuntimeOptions, CueLineRuntimeReconciliationResult, CueLineRuntimeTakeoverResult, ManualControllerSubmissionConfirmation, StartCueLineRunOptions, } from "./api-contracts.js";
28
32
  export type { CueLineDiagnosticSeverity, CueLineRunDiagnosis, CueLineRunDiagnosticFinding, CueLineRunDiagnosticOutcome, } from "./diagnostics/run-doctor.js";
29
33
  export type { CueLineRunWatchOptions, CueLineRunWatchResult, } from "./observation/run-watch.js";
30
34
  export type { CueLineProtocolLintIssue, CueLineProtocolLintOptions, CueLineProtocolLintResult, CueLineProtocolLintRouting, CueLineProtocolLintSeverity, } from "./protocol/lint-command.js";
35
+ export type { RoutingCandidateExplanation, RoutingCandidateReasonCode, RoutingExplanation, RoutingLaneExplanation, } from "./router/explain.js";
31
36
  export type { CueLineRunHandoffBuildOptions, CueLineRunHandoffContent, CueLineRunHandoffOptions, CueLineRunHandoffPacket, } from "./observation/run-handoff.js";
32
37
  export type { CueLineRunTimeline, CueLineRunTimelineEntry, CueLineRunTimelineOptions, CueLineTimelineCategory, } from "./observation/run-timeline.js";
38
+ export type { CueLineRunStatusAt, CueLineRunStatusAtOptions, } from "./observation/run-status-at.js";
39
+ export type { CueLineRunDiff, CueLineRunDiffChange, CueLineRunDiffOptions, CueLineRunDiffProjection, } from "./observation/run-diff.js";
40
+ export type { CueLineRunGraph, CueLineRunGraphOptions, } from "./observation/run-graph.js";
33
41
  export type { CodexIabBrowserSource, CodexIabPageProbe, CodexIabProbeOptions, CodexIabProbeResult, CodexIabProbeStatus, CodexIabTabSource, } from "./browser/codex-iab/probe.js";
34
42
  export type { BrowserAdapter, CueLineResult, CueLineRunState, CueLineRunStatusSummary, RoutingConfig, };
package/dist/src/api.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
2
  import { fileURLToPath } from "node:url";
3
- import { confirmManualControllerSubmission } from "./api-controller-handoff.js";
3
+ import { confirmControllerTurnNotSent, confirmManualControllerSubmission, } from "./api-controller-handoff.js";
4
4
  import { verifyCueLineRun } from "./api-run-verification.js";
5
5
  import { claimCueLineCallerJob, heartbeatCueLineCallerJob, reconcileExpiredCallerWorkClaims, releaseCueLineCallerJob, startCueLineCallerJob, } from "./api-caller-work.js";
6
6
  import { isTerminalRun, reconcileCueLineRuntime, terminalResult, } from "./api-runtime-lifecycle.js";
@@ -137,6 +137,9 @@ export async function startCueLineRun(options) {
137
137
  ? {}
138
138
  : { allowProcessExecution: options.allowProcessExecution }),
139
139
  ...(options.maxRounds === undefined ? {} : { maxRounds: options.maxRounds }),
140
+ ...(options.maxJobEvidenceChars === undefined
141
+ ? {}
142
+ : { maxJobEvidenceChars: options.maxJobEvidenceChars }),
140
143
  ...(options.archiveControllerConversationOnComplete === undefined
141
144
  ? {}
142
145
  : {
@@ -165,6 +168,9 @@ export async function runCueLine(options) {
165
168
  }),
166
169
  returnAfterControllerSubmission: (options.executor ?? "caller") === "caller",
167
170
  ...(options.maxRounds === undefined ? {} : { maxRounds: options.maxRounds }),
171
+ ...(options.maxJobEvidenceChars === undefined
172
+ ? {}
173
+ : { maxJobEvidenceChars: options.maxJobEvidenceChars }),
168
174
  ...(options.maxRepairAttempts === undefined
169
175
  ? {}
170
176
  : { maxRepairAttempts: options.maxRepairAttempts }),
@@ -321,6 +327,9 @@ export async function continueCueLineRun(options) {
321
327
  ? {}
322
328
  : { abandonOtherPendingTurns: options.abandonOtherPendingTurns }),
323
329
  ...(options.maxRounds === undefined ? {} : { maxRounds: options.maxRounds }),
330
+ ...(options.maxJobEvidenceChars === undefined
331
+ ? {}
332
+ : { maxJobEvidenceChars: options.maxJobEvidenceChars }),
324
333
  ...(options.maxRepairAttempts === undefined
325
334
  ? {}
326
335
  : { maxRepairAttempts: options.maxRepairAttempts }),
@@ -338,7 +347,7 @@ export async function continueCueLineRun(options) {
338
347
  : { laneConcurrency: options.laneConcurrency }),
339
348
  });
340
349
  }
341
- export { confirmManualControllerSubmission, submitCueLineCallerJobResult, } from "./api-controller-handoff.js";
350
+ export { confirmManualControllerSubmission, confirmControllerTurnNotSent, submitCueLineCallerJobResult, } from "./api-controller-handoff.js";
342
351
  export { claimCueLineCallerJob, heartbeatCueLineCallerJob, releaseCueLineCallerJob, startCueLineCallerJob, };
343
352
  export { cancelCueLineJob, cancelCueLineRun, listCueLineRuns, loadCueLineRunState, loadCueLineRunStatus, reconcileCueLineRuntime, takeoverCueLineRuntime, } from "./api-runtime-lifecycle.js";
344
353
  export { diagnoseCueLineRun, diagnoseCueLineRunStatus, } from "./diagnostics/run-doctor.js";
@@ -346,7 +355,11 @@ export { verifyCueLineRun };
346
355
  export { createCodexIabAdapter, probeCodexIab };
347
356
  export { waitForCueLineRunChange } from "./observation/run-watch.js";
348
357
  export { lintControllerCommandText } from "./protocol/lint-command.js";
358
+ export { explainRoutingConfig } from "./router/explain.js";
349
359
  export { buildCueLineRunHandoff, createCueLineRunHandoff, renderCueLineRunHandoffMarkdown, } from "./observation/run-handoff.js";
350
360
  export { buildCueLineRunTimeline, loadCueLineRunTimeline, } from "./observation/run-timeline.js";
361
+ export { loadCueLineRunStatusAt } from "./observation/run-status-at.js";
362
+ export { compareCueLineRuns } from "./observation/run-diff.js";
363
+ export { buildCueLineRunGraph, loadCueLineRunGraph, } from "./observation/run-graph.js";
351
364
  export { CUELINE_VERSION } from "./version.js";
352
365
  //# sourceMappingURL=api.js.map