@covro/covro 0.5.1-dev.2 → 0.5.1-dev.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -1
- package/README.zh-CN.md +11 -1
- package/dist/codex/adapter.js +65 -5
- package/dist/codex/adapter.js.map +2 -2
- package/dist/codex/collaboration.js +28 -0
- package/dist/codex/collaboration.js.map +7 -0
- package/dist/codex/guardian-denials.js +67 -0
- package/dist/codex/guardian-denials.js.map +7 -0
- package/dist/codex/mapping.js +10 -1
- package/dist/codex/mapping.js.map +2 -2
- package/dist/codex/thread-goals.js +15 -0
- package/dist/codex/thread-goals.js.map +7 -0
- package/dist/codex/thread-titles.js +135 -60
- package/dist/codex/thread-titles.js.map +2 -2
- package/dist/server/capacity-retry.js +176 -0
- package/dist/server/capacity-retry.js.map +7 -0
- package/dist/server/db/operations.js +11 -0
- package/dist/server/db/operations.js.map +2 -2
- package/dist/server/http.js +51 -0
- package/dist/server/http.js.map +2 -2
- package/dist/server/project-init.js +28 -0
- package/dist/server/project-init.js.map +7 -0
- package/dist/server/projection.js +11 -3
- package/dist/server/projection.js.map +2 -2
- package/dist/server/service.js +315 -8
- package/dist/server/service.js.map +2 -2
- package/dist/server/thread-recap.js +34 -0
- package/dist/server/thread-recap.js.map +7 -0
- package/dist/server/workspace-diff.js +149 -0
- package/dist/server/workspace-diff.js.map +7 -0
- package/dist/shared/guardian-denials.js +1 -0
- package/dist/shared/guardian-denials.js.map +7 -0
- package/dist/shared/thread-goal.js +1 -0
- package/dist/shared/thread-goal.js.map +7 -0
- package/dist/shared/turn-errors.js +25 -0
- package/dist/shared/turn-errors.js.map +7 -0
- package/dist/shared/validation.js +53 -3
- package/dist/shared/validation.js.map +2 -2
- package/dist/shared/workspace-diff.js +1 -0
- package/dist/shared/workspace-diff.js.map +7 -0
- package/dist/web/assets/{abnfDiagram-WEYOIA3C-DK1b1m5g.js → abnfDiagram-WEYOIA3C-2_00Zp4O.js} +1 -1
- package/dist/web/assets/{arc-0hKPa6cH.js → arc-DAyuVDVU.js} +1 -1
- package/dist/web/assets/{architecture-WOLXFQ4H-DUa2ELbW.js → architecture-WOLXFQ4H-CgR1C4gR.js} +1 -1
- package/dist/web/assets/{architectureDiagram-ZHVYKT53-DfpAMcHI.js → architectureDiagram-ZHVYKT53-Dkb6AWjz.js} +1 -1
- package/dist/web/assets/{blockDiagram-RJAE7QA3-CD8LlPAk.js → blockDiagram-RJAE7QA3-NtOGZdkX.js} +1 -1
- package/dist/web/assets/{c4Diagram-XDPPPE54-KVKGUBPP.js → c4Diagram-XDPPPE54-C1dqWKb1.js} +1 -1
- package/dist/web/assets/channel-Co9_v2dk.js +1 -0
- package/dist/web/assets/{chunk-2E7WHVMD-CPcfaznm.js → chunk-2E7WHVMD-ClzuEiGk.js} +1 -1
- package/dist/web/assets/{chunk-4EMNKR2T-Ba4ZkZos.js → chunk-4EMNKR2T-DyTpkWag.js} +1 -1
- package/dist/web/assets/{chunk-55XCU76K-COU6aQoV.js → chunk-55XCU76K-DXBA4ib1.js} +1 -1
- package/dist/web/assets/{chunk-7S6XSTFO-mof6va94.js → chunk-7S6XSTFO-DA_aq0zc.js} +1 -1
- package/dist/web/assets/{chunk-AQDTSKZB-B9S7XD0k.js → chunk-AQDTSKZB-BWTN3SC_.js} +1 -1
- package/dist/web/assets/{chunk-DSNLSHJZ-DiTTjo21.js → chunk-DSNLSHJZ-DJnLTeE9.js} +1 -1
- package/dist/web/assets/{chunk-HAGFOTED-bBaCv2Gr.js → chunk-HAGFOTED-cDP-g1Eh.js} +1 -1
- package/dist/web/assets/{chunk-HNE4Q36P-COubV5SQ.js → chunk-HNE4Q36P-B3TTIYd_.js} +1 -1
- package/dist/web/assets/{chunk-NQOKRVIF-D7mCDLmx.js → chunk-NQOKRVIF-D8mmhZHq.js} +1 -1
- package/dist/web/assets/{chunk-UHW7PFBP-7E_Y7QMq.js → chunk-UHW7PFBP-DWIIg_jq.js} +1 -1
- package/dist/web/assets/{chunk-VQ5W62QI-DIe2sxBO.js → chunk-VQ5W62QI-Bu3R2cpS.js} +1 -1
- package/dist/web/assets/{chunk-WQQL4CDK-sGc70NW0.js → chunk-WQQL4CDK-BxsR1mXs.js} +1 -1
- package/dist/web/assets/{chunk-XXDRQBXY-CnTJfCp_.js → chunk-XXDRQBXY-Ds0JNdm-.js} +1 -1
- package/dist/web/assets/{chunk-YZO67HFG-D1uBxw_D.js → chunk-YZO67HFG-COpqyQaD.js} +1 -1
- package/dist/web/assets/{chunk-ZAUX2LTX-quytYPeh.js → chunk-ZAUX2LTX-BUrGjDuS.js} +1 -1
- package/dist/web/assets/{chunk-ZCHMQSOR-CebhdtBu.js → chunk-ZCHMQSOR-DYMM9mEK.js} +1 -1
- package/dist/web/assets/{classDiagram-v2-4MYWR3UA-_NujQwSa.js → classDiagram-v2-4MYWR3UA-DfJvks0C.js} +1 -1
- package/dist/web/assets/{cose-bilkent-JH36ORCC-DltmODTL.js → cose-bilkent-JH36ORCC-CN5mpYIb.js} +1 -1
- package/dist/web/assets/{cynefin-EF2NZ3EQ-CyNUtvfu.js → cynefin-EF2NZ3EQ-DmlCHkY-.js} +1 -1
- package/dist/web/assets/{cynefinDiagram-WF24UDRP-DH1m77PD.js → cynefinDiagram-WF24UDRP-C0aUblC2.js} +1 -1
- package/dist/web/assets/{dagre-NK4GIZVX-DiCwjat3.js → dagre-NK4GIZVX-Ba7RcAgP.js} +1 -1
- package/dist/web/assets/{diagram-CBK3MWTC-DnoBkry8.js → diagram-CBK3MWTC-BYQDjB9i.js} +1 -1
- package/dist/web/assets/{diagram-I5XIIV2D-CIeRHNwj.js → diagram-I5XIIV2D-EV79hoob.js} +1 -1
- package/dist/web/assets/{diagram-ODIL2UCW-BiyJagHP.js → diagram-ODIL2UCW-BvQdwmgA.js} +1 -1
- package/dist/web/assets/{diagram-PFBEJUXE-B6xGLENr.js → diagram-PFBEJUXE-hxwI3F00.js} +1 -1
- package/dist/web/assets/{diagram-RJA3I4VV-DCbGrXsR.js → diagram-RJA3I4VV-DwaHE2iB.js} +1 -1
- package/dist/web/assets/{diagram-TYUNFSNR-BjYXlBMa.js → diagram-TYUNFSNR-BxiOemA0.js} +1 -1
- package/dist/web/assets/{dist-C9Qd1YEe.js → dist-nfRX7L9k.js} +1 -1
- package/dist/web/assets/{ebnfDiagram-V4P3TTPT-CpRXdAa6.js → ebnfDiagram-V4P3TTPT-CzQv5iDM.js} +1 -1
- package/dist/web/assets/{elk-QONTBCTQ-BZa9Vnbc.js → elk-QONTBCTQ-DNR9HWcl.js} +1 -1
- package/dist/web/assets/{erDiagram-KYQIGQAA-7AaYG_a9.js → erDiagram-KYQIGQAA-aJlTdb9w.js} +1 -1
- package/dist/web/assets/{eventmodeling-K75KTNOO-BzIg1KNf.js → eventmodeling-K75KTNOO-D4J-ujy-.js} +1 -1
- package/dist/web/assets/flowDiagram-IUGLLWBU-Bq7dmPlS.js +1 -0
- package/dist/web/assets/{ganttDiagram-R7GPNTJY-DeNg-7K2.js → ganttDiagram-R7GPNTJY-DgytSfqO.js} +1 -1
- package/dist/web/assets/{gitGraph-VSP46ZUC-BR-A7hdM.js → gitGraph-VSP46ZUC-BtjueFHB.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-PDYL7XHY-LMyLpeqK.js → gitGraphDiagram-PDYL7XHY-WP0Hjdh9.js} +1 -1
- package/dist/web/assets/index-BesPYgjq.js +156 -0
- package/dist/web/assets/{index-CEM8pkOB.css → index-qYBdGqKM.css} +1 -1
- package/dist/web/assets/{info-OHQRW6UA-CRbCGNnm.js → info-OHQRW6UA-iuP0WTfn.js} +1 -1
- package/dist/web/assets/{infoDiagram-MVDRKAX5-DTUWae1O.js → infoDiagram-MVDRKAX5-CpAtMyKS.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-HPEHV2GE-CE4r0jTM.js → ishikawaDiagram-HPEHV2GE-JTnItv7N.js} +1 -1
- package/dist/web/assets/{journeyDiagram-BOSHW7O7-KcSuVnTV.js → journeyDiagram-BOSHW7O7-B333k1QJ.js} +1 -1
- package/dist/web/assets/{kanban-definition-FNSA4HC5-I0QF1Ftr.js → kanban-definition-FNSA4HC5-DpCk5ZH0.js} +1 -1
- package/dist/web/assets/{line-DLSy1-se.js → line-CLs-qFxt.js} +1 -1
- package/dist/web/assets/{linear-XWNSUdmR.js → linear-E9AWqBNs.js} +1 -1
- package/dist/web/assets/{mermaid-parser.core-BcMfaJSH.js → mermaid-parser.core-D1rEzlb-.js} +3 -3
- package/dist/web/assets/{mermaid.core-CPl3cZ55.js → mermaid.core-D6TNGGsX.js} +4 -4
- package/dist/web/assets/{mindmap-definition-6OY57UG3-BIB4ahHf.js → mindmap-definition-6OY57UG3-DrpuGWuc.js} +1 -1
- package/dist/web/assets/{packet-JDAUHWVQ-UZicf9-F.js → packet-JDAUHWVQ-BpBr3aKk.js} +1 -1
- package/dist/web/assets/{pegDiagram-ECIUJNBX-ckOqIfTt.js → pegDiagram-ECIUJNBX-BrZX1cdv.js} +1 -1
- package/dist/web/assets/{pie-XZMESJXO-DErhKWJX.js → pie-XZMESJXO-CcTpis-K.js} +1 -1
- package/dist/web/assets/{pieDiagram-GNMPY74T-CrnS_2qe.js → pieDiagram-GNMPY74T-CR2em875.js} +1 -1
- package/dist/web/assets/{quadrantDiagram-D57K4MC3-UK4DsDJz.js → quadrantDiagram-D57K4MC3-D-ET5xbH.js} +1 -1
- package/dist/web/assets/{radar-ABXABTNO-BYgJm4I9.js → radar-ABXABTNO-CTFFPCi_.js} +1 -1
- package/dist/web/assets/{railroad-I3PHUGI6-2n6yUb7T.js → railroad-I3PHUGI6-S6MHolw_.js} +1 -1
- package/dist/web/assets/{railroad-abnf-LNEFI6M7-CGAFqTzs.js → railroad-abnf-LNEFI6M7-NWxYLYMN.js} +1 -1
- package/dist/web/assets/{railroad-ebnf-DWYD2UWJ-gJx_FXYW.js → railroad-ebnf-DWYD2UWJ-CRnaPl26.js} +1 -1
- package/dist/web/assets/{railroad-peg-JR7BVNR7-Dm0kEaxK.js → railroad-peg-JR7BVNR7-CB85ffhO.js} +1 -1
- package/dist/web/assets/{railroadDiagram-Y72NRBL7-CqzySn4U.js → railroadDiagram-Y72NRBL7-Ba2xIF7q.js} +1 -1
- package/dist/web/assets/{requirementDiagram-EQYSW5RA-B33Hrc0L.js → requirementDiagram-EQYSW5RA-B7faqgDT.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-SY24JHO5-BA9Smc0j.js → sankeyDiagram-SY24JHO5-IjJVI58S.js} +1 -1
- package/dist/web/assets/{sequenceDiagram-BLEHNHQU-CUA-rKot.js → sequenceDiagram-BLEHNHQU-D-h5jxwQ.js} +1 -1
- package/dist/web/assets/{src-htchAh5W.js → src-hBdSvoFJ.js} +1 -1
- package/dist/web/assets/{stateDiagram-v2-A6IESKWZ-kIYMkX3_.js → stateDiagram-v2-A6IESKWZ-rlZaPFqZ.js} +1 -1
- package/dist/web/assets/{swimlanes-B3ENRKFQ-C8Lzsqig.js → swimlanes-B3ENRKFQ-CqgKwSbP.js} +1 -1
- package/dist/web/assets/swimlanesDiagram-AYQRV4AK-BGvWQ2Hp.js +8 -0
- package/dist/web/assets/{timeline-definition-JXYKGLGB-C3uOHb1e.js → timeline-definition-JXYKGLGB-DD76ZtY0.js} +1 -1
- package/dist/web/assets/{treeView-D4JQ5SDB-Dq-ug1SE.js → treeView-D4JQ5SDB-CcwWh4Bw.js} +1 -1
- package/dist/web/assets/{treemap-SAJKECNS-mX01fnXB.js → treemap-SAJKECNS-8lde6V5O.js} +1 -1
- package/dist/web/assets/{usecaseDiagram-WPOLBNNX-DMBep2-D.js → usecaseDiagram-WPOLBNNX-CWowobZv.js} +1 -1
- package/dist/web/assets/{vennDiagram-Q3Y3IDCW-CUardqBP.js → vennDiagram-Q3Y3IDCW-U11W8pHe.js} +1 -1
- package/dist/web/assets/{wardley-7MLQ67FV-CIOqSz29.js → wardley-7MLQ67FV-Dp2EaBmo.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-IVAIDKWA-DtfU2fzi.js → wardleyDiagram-IVAIDKWA-7Qnos8ak.js} +1 -1
- package/dist/web/assets/{xychartDiagram-4URNHDU4-Cb3se94q.js → xychartDiagram-4URNHDU4-BwfHNtsG.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +3 -3
- package/dist/web/assets/channel-CpEW0zog.js +0 -1
- package/dist/web/assets/flowDiagram-IUGLLWBU-FDG_7_Jf.js +0 -1
- package/dist/web/assets/index-D2dQZgkr.js +0 -147
- package/dist/web/assets/swimlanesDiagram-AYQRV4AK-CWrPdxiH.js +0 -8
package/README.md
CHANGED
|
@@ -34,7 +34,17 @@
|
|
|
34
34
|
- 📖 **Read results while you chat.** Preview documents, diagrams, and code changes beside the conversation on desktop, or full-screen on mobile.
|
|
35
35
|
- 🔔 **Know when your attention is needed.** Enable browser notifications for completed work, questions, and approvals; keep the page open in a supported desktop browser.
|
|
36
36
|
|
|
37
|
-
Use **+** in the message box to attach images from your phone or computer. Open the combined model control to choose the model, reasoning effort, and
|
|
37
|
+
Use **+** in the message box to attach images from your phone or computer. Open the combined model control to choose the model, reasoning effort, Fast mode, and Plan/Execute mode. Use `/plan [task]` to select Plan mode or submit a planning task.
|
|
38
|
+
|
|
39
|
+
When the selected model is at capacity, Covro shows native retry progress and can make up to three additional attempts after 5, 10, and 20 seconds when Codex does not retry and no output or tool work has started. You can cancel, or choose another model and retry manually. See [retry behavior](docs/capacity-retry.md) for recovery boundaries.
|
|
40
|
+
|
|
41
|
+
Use `/review` to choose uncommitted changes, a base branch, a commit, or custom review instructions. Use `/init` to request a project contributor guide; an existing `AGENTS.md` is preserved.
|
|
42
|
+
|
|
43
|
+
Use `/diff` to inspect staged, unstaged, and untracked Git changes in the current workspace without starting a model task. Use `/approve` to explicitly authorize a recorded automatic-review denial once, then ask Codex to continue.
|
|
44
|
+
|
|
45
|
+
Use `/recap` to summarize recent visible messages in a separate model request without changing conversation context.
|
|
46
|
+
|
|
47
|
+
Use `/goal` to view and manage a native session goal, its token budget and actual progress. Activating a goal can start automatic continuation; pausing and clearing remain available during a task.
|
|
38
48
|
|
|
39
49
|
See the [usage guide · 中文](docs/usage.zh-CN.md) for workflow details and controls.
|
|
40
50
|
|
package/README.zh-CN.md
CHANGED
|
@@ -34,7 +34,17 @@
|
|
|
34
34
|
- 📖 **一边看产出,一边讨论。** 电脑上将文档、图表和代码变更与会话并排阅读,手机上使用全屏阅读器。
|
|
35
35
|
- 🔔 **及时收到待办提醒。** 开启浏览器通知,在工作结束、需要回答或审批时收到提醒;需在支持通知的桌面浏览器中保持页面运行。
|
|
36
36
|
|
|
37
|
-
点击输入框中的
|
|
37
|
+
点击输入框中的 **+**,可从手机或电脑选择图片附件。模型、推理强度、Fast 和 Plan/执行模式统一收进模型设置入口。使用 `/plan [任务]` 可选择 Plan 模式或直接提交规划任务。
|
|
38
|
+
|
|
39
|
+
当前模型容量不足时,Covro 会展示原生重试进度;如果 Codex 没有自行重试,且本轮尚无输出或工具操作,会在 5、10、20 秒后最多补偿重试 3 次。可以取消,也可以选择其他模型后手动重试。恢复边界见[容量重试说明](docs/capacity-retry.md)。
|
|
40
|
+
|
|
41
|
+
使用 `/review` 可选择未提交改动、基础分支、指定 commit 或自定义要求进行代码审查。使用 `/init` 可请求生成项目说明,已有 `AGENTS.md` 会保留。
|
|
42
|
+
|
|
43
|
+
使用 `/diff` 可查看当前工作区已暂存、未暂存和未跟踪的 Git 改动,不创建模型任务。使用 `/approve` 可显式单次授权一条自动审核拒绝记录,再发送任务让 Codex 继续。
|
|
44
|
+
|
|
45
|
+
使用 `/recap` 可通过独立模型请求总结近期可见消息,不改变会话上下文。
|
|
46
|
+
|
|
47
|
+
使用 `/goal` 可查看和管理原生会话目标、Token 预算与实际进度。激活后 Codex 可自动继续工作,任务运行期间仍可暂停或清除目标。
|
|
38
48
|
|
|
39
49
|
操作方式与使用细节见[使用指南](docs/usage.zh-CN.md)。
|
|
40
50
|
|
package/dist/codex/adapter.js
CHANGED
|
@@ -3,7 +3,13 @@ import { SHELL_TIMEOUT_MS, SHELL_OUTPUT_BYTES } from "../shared/shell.js";
|
|
|
3
3
|
import { spawn, execFile } from "node:child_process";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
5
5
|
import { promisify } from "node:util";
|
|
6
|
+
import { readGoal } from "./thread-goals.js";
|
|
7
|
+
import { GuardianDenials } from "./guardian-denials.js";
|
|
6
8
|
import { ThreadTitles } from "./thread-titles.js";
|
|
9
|
+
import {
|
|
10
|
+
collaborationSelection,
|
|
11
|
+
reportedCollaborationMode
|
|
12
|
+
} from "./collaboration.js";
|
|
7
13
|
import { TurnTokenUsage } from "./turn-token-usage.js";
|
|
8
14
|
import { AppError } from "../shared/errors.js";
|
|
9
15
|
import { threadNameError } from "../shared/thread-name.js";
|
|
@@ -21,6 +27,7 @@ import {
|
|
|
21
27
|
mapItem,
|
|
22
28
|
mapThread,
|
|
23
29
|
mapTurn,
|
|
30
|
+
mapTurnError,
|
|
24
31
|
permissionSettings,
|
|
25
32
|
serviceTierSettings,
|
|
26
33
|
threadSettings,
|
|
@@ -53,6 +60,10 @@ const CAPABILITIES = [
|
|
|
53
60
|
"thread/items/list",
|
|
54
61
|
"turn/start",
|
|
55
62
|
"review/start",
|
|
63
|
+
"thread/goal/get",
|
|
64
|
+
"thread/goal/set",
|
|
65
|
+
"thread/goal/clear",
|
|
66
|
+
"thread/approveGuardianDeniedAction",
|
|
56
67
|
"turn/steer",
|
|
57
68
|
"turn/interrupt",
|
|
58
69
|
"model/list",
|
|
@@ -97,6 +108,7 @@ class CodexAdapter {
|
|
|
97
108
|
restartTimer;
|
|
98
109
|
restartAttempt = 0;
|
|
99
110
|
titles;
|
|
111
|
+
denials = new GuardianDenials();
|
|
100
112
|
tokenUsage = new TurnTokenUsage();
|
|
101
113
|
// Ordering only. Persisted archive state belongs exclusively to Codex.
|
|
102
114
|
archiveSequence = 0;
|
|
@@ -174,6 +186,7 @@ class CodexAdapter {
|
|
|
174
186
|
const version = stdout.trim().replace(/^codex-cli\s+/, "");
|
|
175
187
|
this.state.codexVersion = version;
|
|
176
188
|
this.permissionState.clear();
|
|
189
|
+
this.denials.clear();
|
|
177
190
|
this.state.compatibility = CODEX_COMPATIBILITY.verified.includes(version) ? "verified" : "unverified";
|
|
178
191
|
const child = spawn(
|
|
179
192
|
this.options.binary,
|
|
@@ -220,6 +233,7 @@ class CodexAdapter {
|
|
|
220
233
|
const wasReady = this.ready;
|
|
221
234
|
this.state.ready = false;
|
|
222
235
|
this.tokenUsage.clear();
|
|
236
|
+
this.denials.clear();
|
|
223
237
|
this.state.connection = "unavailable";
|
|
224
238
|
this.state.error = error.message;
|
|
225
239
|
this.expireActions();
|
|
@@ -764,6 +778,9 @@ class CodexAdapter {
|
|
|
764
778
|
const previous = this.permissionState.get(result.thread.id);
|
|
765
779
|
const settings = {
|
|
766
780
|
model: result.model ?? result.thread.model ?? null,
|
|
781
|
+
...reportedCollaborationMode(
|
|
782
|
+
result.collaborationMode
|
|
783
|
+
),
|
|
767
784
|
reasoningEffort: result.reasoningEffort ?? null,
|
|
768
785
|
...serviceTierSettings(result.serviceTier),
|
|
769
786
|
...permissionSettings(
|
|
@@ -847,15 +864,16 @@ class CodexAdapter {
|
|
|
847
864
|
threadId: id,
|
|
848
865
|
cwd,
|
|
849
866
|
input: taskInput(text, images),
|
|
850
|
-
...turnSettings(cwd, settings)
|
|
867
|
+
...turnSettings(cwd, settings),
|
|
868
|
+
...collaborationSelection(settings, this.permissionState.get(id))
|
|
851
869
|
})).turn
|
|
852
870
|
);
|
|
853
871
|
return turn;
|
|
854
872
|
}
|
|
855
|
-
async startReview(id) {
|
|
873
|
+
async startReview(id, target = { type: "uncommittedChanges" }) {
|
|
856
874
|
const result = await this.call("review/start", {
|
|
857
875
|
threadId: id,
|
|
858
|
-
target:
|
|
876
|
+
target: target.type === "commit" ? { ...target, title: null } : target,
|
|
859
877
|
delivery: "inline"
|
|
860
878
|
});
|
|
861
879
|
if (!isRecord(result) || result.reviewThreadId !== id)
|
|
@@ -876,6 +894,37 @@ class CodexAdapter {
|
|
|
876
894
|
async interruptTurn(id, turnId) {
|
|
877
895
|
await this.call("turn/interrupt", { threadId: id, turnId });
|
|
878
896
|
}
|
|
897
|
+
async getGoal(id) {
|
|
898
|
+
try {
|
|
899
|
+
return readGoal((await this.call("thread/goal/get", { threadId: id })).goal, id);
|
|
900
|
+
} catch (error) {
|
|
901
|
+
if (error instanceof Error && /goals feature is disabled/i.test(error.message))
|
|
902
|
+
throw new AppError("GOAL_UNAVAILABLE", "\u5F53\u524D Codex \u672A\u542F\u7528 goals \u529F\u80FD", 409);
|
|
903
|
+
throw error;
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
async mutateGoal(id, mutation) {
|
|
907
|
+
if (mutation.action === "clear") {
|
|
908
|
+
await this.call("thread/goal/clear", { threadId: id, origin: "user" });
|
|
909
|
+
return null;
|
|
910
|
+
}
|
|
911
|
+
const { action: _, ...fields } = mutation;
|
|
912
|
+
return readGoal(
|
|
913
|
+
(await this.call("thread/goal/set", { threadId: id, origin: "user", ...fields })).goal,
|
|
914
|
+
id
|
|
915
|
+
);
|
|
916
|
+
}
|
|
917
|
+
async recapThread(id, prompt) {
|
|
918
|
+
if (!this.titles) throw new CodexError("CODEX_UNAVAILABLE", "Codex unavailable");
|
|
919
|
+
return this.titles.recap(id, prompt);
|
|
920
|
+
}
|
|
921
|
+
listGuardianDenials(id) {
|
|
922
|
+
return this.denials.list(id);
|
|
923
|
+
}
|
|
924
|
+
async approveGuardianDenial(id, denialId) {
|
|
925
|
+
const event = this.denials.take(id, denialId);
|
|
926
|
+
await this.call("thread/approveGuardianDeniedAction", { threadId: id, event });
|
|
927
|
+
}
|
|
879
928
|
async compactThread(id) {
|
|
880
929
|
await this.call("thread/compact/start", { threadId: id });
|
|
881
930
|
}
|
|
@@ -919,9 +968,18 @@ class CodexAdapter {
|
|
|
919
968
|
);
|
|
920
969
|
break;
|
|
921
970
|
}
|
|
971
|
+
case "thread/goal/updated":
|
|
972
|
+
this.emit({ type: "goal", threadId: event.params.threadId, goal: event.params.goal });
|
|
973
|
+
break;
|
|
974
|
+
case "thread/goal/cleared":
|
|
975
|
+
this.emit({ type: "goal", threadId: event.params.threadId, goal: null });
|
|
976
|
+
break;
|
|
922
977
|
case "thread/settings/updated":
|
|
923
978
|
{
|
|
924
979
|
const observed = {
|
|
980
|
+
...reportedCollaborationMode(
|
|
981
|
+
event.params.threadSettings.collaborationMode
|
|
982
|
+
),
|
|
925
983
|
model: event.params.threadSettings.model ?? null,
|
|
926
984
|
reasoningEffort: event.params.threadSettings.effort ?? null,
|
|
927
985
|
...serviceTierSettings(event.params.threadSettings.serviceTier),
|
|
@@ -944,6 +1002,7 @@ class CodexAdapter {
|
|
|
944
1002
|
break;
|
|
945
1003
|
case "item/autoApprovalReview/started":
|
|
946
1004
|
case "item/autoApprovalReview/completed":
|
|
1005
|
+
if (event.method === "item/autoApprovalReview/completed") this.denials.record(event.params);
|
|
947
1006
|
this.emit({
|
|
948
1007
|
type: "autoReview",
|
|
949
1008
|
threadId: event.params.threadId,
|
|
@@ -1088,7 +1147,8 @@ class CodexAdapter {
|
|
|
1088
1147
|
threadId: event.params.threadId,
|
|
1089
1148
|
turnId: event.params.turnId,
|
|
1090
1149
|
message: event.params.error.message,
|
|
1091
|
-
willRetry: event.params.willRetry
|
|
1150
|
+
willRetry: event.params.willRetry,
|
|
1151
|
+
...mapTurnError(event.params.error)
|
|
1092
1152
|
});
|
|
1093
1153
|
break;
|
|
1094
1154
|
default:
|
|
@@ -1100,7 +1160,7 @@ class CodexAdapter {
|
|
|
1100
1160
|
await this.rpc?.reject(
|
|
1101
1161
|
message.id,
|
|
1102
1162
|
-32601,
|
|
1103
|
-
"Interactive tools are disabled for
|
|
1163
|
+
"Interactive tools are disabled for isolated helper requests"
|
|
1104
1164
|
);
|
|
1105
1165
|
return;
|
|
1106
1166
|
}
|