@kylecheng3146/agent-ops 0.1.20 → 0.1.21
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 +23 -4
- package/dist/packages/cli/src/agy-headless.js +18 -0
- package/dist/packages/cli/src/args.js +29 -3
- package/dist/packages/cli/src/bin.js +54 -3
- package/dist/packages/cli/src/cli.js +3 -0
- package/dist/packages/cli/src/commands/allow-stop.js +11 -0
- package/dist/packages/cli/src/commands/hook.js +12 -1
- package/dist/packages/cli/src/commands/init.js +4 -1
- package/dist/packages/cli/src/commands/task.js +5 -2
- package/dist/packages/cli/src/context.js +4 -1
- package/dist/packages/cli/src/hook-process.js +59 -5
- package/dist/packages/cli/src/wizard.js +24 -0
- package/dist/runtime/src/adapters/agy/config.js +17 -7
- package/dist/runtime/src/adapters/agy/events.js +8 -0
- package/dist/runtime/src/adapters/agy/input.js +21 -3
- package/dist/runtime/src/adapters/agy/output.js +8 -4
- package/dist/runtime/src/config/explain.js +5 -0
- package/dist/runtime/src/config/migrate.js +15 -1
- package/dist/runtime/src/contracts.js +1 -1
- package/dist/runtime/src/hooks/completion-gate.js +209 -0
- package/dist/runtime/src/hooks/dispatch.js +6 -0
- package/dist/runtime/src/install/doctor.js +3 -1
- package/dist/runtime/src/install/harness.js +5 -1
- package/dist/runtime/src/install/ownership.js +9 -2
- package/dist/runtime/src/install/plan.js +19 -4
- package/dist/runtime/src/install/profiles.js +3 -0
- package/dist/runtime/src/schema/validate.js +11 -1
- package/dist/runtime/src/task/service.js +17 -0
- package/docs/en/guides/configuration.md +25 -7
- package/docs/en/spec/README.md +3 -3
- package/docs/en/spec/harness-adapters.md +7 -3
- package/docs/zh-TW/guides/configuration.md +22 -6
- package/docs/zh-TW/spec/README.md +4 -4
- package/docs/zh-TW/spec/harness-adapters.md +6 -3
- package/package.json +1 -1
- package/schemas/config.schema.json +12 -2
|
@@ -6,9 +6,11 @@
|
|
|
6
6
|
`codex,opencode` 這類逗號分隔的子集。`both` 仍是 legacy Codex 加 Claude
|
|
7
7
|
selection 的 input alias。
|
|
8
8
|
|
|
9
|
-
Project agy
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
Project agy 使用 managed supplemental `GEMINI.md` routing block 與
|
|
10
|
+
`.agent-ops/GEMINI.md` baseline;這符合 agy CLI 官方文件所述,啟動時會讀取
|
|
11
|
+
workspace root 的 `GEMINI.md` 或 `AGENTS.md`。Codex 與 opencode 共用
|
|
12
|
+
`AGENTS.md` route 與 `.agent-ops/AGENTS.md` artifact。這些 block 只載入
|
|
13
|
+
managed baseline,並保留 project-specific instructions 的權威性。
|
|
12
14
|
Claude 使用對應的 `CLAUDE.md` route 與 `.agent-ops/CLAUDE.md` artifact。Opencode 另外取得
|
|
13
15
|
agent-ops 擁有的 `.opencode/plugins/agent-ops.js`;不會修改 `opencode.json`。
|
|
14
16
|
Plugin 使用安裝時的 absolute runtime path 產生,因此請透過
|
|
@@ -131,6 +133,20 @@ agy 會安裝原生 `PreInvocation` 與 `PreToolUse(run_command)` 子集,docto
|
|
|
131
133
|
位於 `.gemini/config/hooks.json`;user scope 會修改共享 Gemini rule surface
|
|
132
134
|
`.gemini/GEMINI.md`。機器可讀的 `/hooks` 診斷要求 agy 1.1.12 以上。
|
|
133
135
|
|
|
136
|
+
`agy` 搭配 `loop` 時,互動式 installer 會建議啟用
|
|
137
|
+
`features.completionGate.enabled`;非互動安裝必須明確傳入
|
|
138
|
+
`--completion-gate`。閘門使用官方定義的 `conversationId`、
|
|
139
|
+
`terminationReason` 與 `fullyIdle` Stop 欄位,只有在本次 conversation 產生
|
|
140
|
+
Git-visible net change 且缺少當前 task、驗證或 review 證據時,才回傳官方定義的
|
|
141
|
+
`decision: "continue"`。純問答、分析、唯讀診斷、錯誤、max-step 與 non-idle Stop
|
|
142
|
+
都正常結束;本版不改變 Codex、Claude Code 或 OpenCode 的 Stop 行為。Headless
|
|
143
|
+
請使用 `agent-ops agy-run -- <agy arguments>`;使用者可核准一次
|
|
144
|
+
`agent-ops allow-stop --session <conversationId>`,該命令由官方定義的
|
|
145
|
+
`force_ask` 強制詢問。
|
|
146
|
+
|
|
147
|
+
官方依據:[agy CLI workspace rule file](https://www.antigravity.google/docs/cli/best-practices/)
|
|
148
|
+
與 [Antigravity hook contract](https://www.antigravity.google/docs/hooks/)。
|
|
149
|
+
|
|
134
150
|
完整 Codex/Claude loop 會執行 `SessionStart`、`UserPromptSubmit`、`PreToolUse`、
|
|
135
151
|
`PermissionRequest`、`PostToolUse`、`PreCompact`、`PostCompact`、
|
|
136
152
|
`SubagentStart` 與 `SubagentStop`,但永遠不加入 `Stop`。它只攔截
|
|
@@ -164,8 +180,8 @@ hook 文件](https://code.claude.com/docs/en/hooks)。
|
|
|
164
180
|
OpenCode `tool.execute.before` plugin 可在其支援的 Bash surface
|
|
165
181
|
上 throw 文件化的 command-policy denial 或 unavailable-runtime error。Codex 明確
|
|
166
182
|
不執行強制措施(`unknown`)。這些是 agent-ops 的 output 與 plugin contract,不
|
|
167
|
-
證明 host 會實際遵守 denial。所有
|
|
168
|
-
都維持 fail-open。
|
|
183
|
+
證明 host 會實際遵守 denial。所有 `SessionStart` 與一般 Stop verification failure
|
|
184
|
+
path 都維持 fail-open;只有明確啟用的 agy completion gate 會在 final Stop fail-closed。
|
|
169
185
|
|
|
170
186
|
Claude 的無效 config fallback 有四項防護:(1) 缺少 project configuration 時保持
|
|
171
187
|
fail-open,因此只有無效的 `.agent-ops/config.json` 能進入 fallback;(2) manifest
|
|
@@ -176,7 +192,7 @@ hook-process environment 讀取,不能由 agent-ops configuration、manifest
|
|
|
176
192
|
managed file 設定。
|
|
177
193
|
|
|
178
194
|
`guardrails` 只安裝 command policy,不會啟用 Stop verification。Stop 是獨立的
|
|
179
|
-
config
|
|
195
|
+
config v3 feature,必須明確啟用且至少提供一個已確認的 command:
|
|
180
196
|
|
|
181
197
|
```json
|
|
182
198
|
{
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
此目錄是英文規範的繁體中文導讀;規範 rule ID 以英文版本為準。
|
|
4
4
|
|
|
5
5
|
Harness adapter 規則涵蓋 agy、Codex、Claude Code 與 opencode。opencode 整合是
|
|
6
|
-
產生的 local plugin,不管理 `opencode.json`。agy 在 project scope
|
|
7
|
-
`
|
|
6
|
+
產生的 local plugin,不管理 `opencode.json`。agy 在 project scope 使用
|
|
7
|
+
`GEMINI.md` routing 與原生 hooks,對不足以完整支援 loop 的 lifecycle
|
|
8
8
|
能力明確標示 degraded。
|
|
9
9
|
|
|
10
|
-
Configuration 與 manifest
|
|
11
|
-
|
|
10
|
+
Configuration 與 manifest 分開版本化。舊 config 會遷移為 Stop verification 與
|
|
11
|
+
agy completion gate 預設 disabled 的 config v3;變更 capability 後必須執行經確認的 project
|
|
12
12
|
`agent-ops update`,有 verifier 時會一併更新 trust。Stop verification 必須明確啟用、具備 trust、
|
|
13
13
|
為 report-only,且永遠不會完成 task。Dry-run plan 會隱藏 foreign settings
|
|
14
14
|
內容;routing migration 一旦套用即為單向。
|
|
@@ -92,6 +92,7 @@ script,也不得改變一般 permission request。
|
|
|
92
92
|
| --- | --- | --- | --- | --- |
|
|
93
93
|
| lifecycle-summary | degraded | supported | supported | degraded |
|
|
94
94
|
| command-policy | supported | unknown | supported | supported |
|
|
95
|
+
| completion-gate | supported | unsupported | unsupported | unsupported |
|
|
95
96
|
| optional-stop-verify | degraded | unsupported | supported | degraded |
|
|
96
97
|
|
|
97
98
|
Runtime-failure 處理中,只有 `command-policy` 為 fail-closed。當已安裝的 config
|
|
@@ -101,11 +102,13 @@ denial 或 unavailable-runtime error。Codex 維持 `unknown` 且絕不輸出 de
|
|
|
101
102
|
Fixture test 只斷言這些 wire 與 plugin shape;它們不證明 host 會實際遵守 denial。
|
|
102
103
|
每個 `SessionStart` 與 `Stop` failure path 都維持 fail-open。
|
|
103
104
|
|
|
104
|
-
agy adapter 在 project scope
|
|
105
|
+
agy adapter 在 project scope 使用原生 `GEMINI.md` routing 到
|
|
106
|
+
`.agent-ops/GEMINI.md`;user
|
|
105
107
|
scope 管理 `.agent-ops/GEMINI.md` 與 shared `.gemini/GEMINI.md` rule surface。
|
|
106
108
|
其 native hook 使用 camelCase input,command-policy block 回傳
|
|
107
|
-
`decision: "deny"
|
|
108
|
-
|
|
109
|
+
`decision: "deny"`。只有明確啟用 completion gate 時,未具完備證據的 final
|
|
110
|
+
changed conversation 才回傳 `decision: "continue"`;唯讀 conversation 正常
|
|
111
|
+
結束。在 Windows 透過 `cmd /c` 呼叫產生的 command。
|
|
109
112
|
|
|
110
113
|
Stop verification 必須明確啟用、具備 trust、為 report-only 且預設 disabled。
|
|
111
114
|
每個 Stop 結果都會讓 native harness 繼續,最多攜帶有界 command evidence,永遠
|
package/package.json
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
],
|
|
15
15
|
"properties": {
|
|
16
16
|
"schemaVersion": {
|
|
17
|
-
"const":
|
|
17
|
+
"const": 3
|
|
18
18
|
},
|
|
19
19
|
"profiles": {
|
|
20
20
|
"type": "array",
|
|
@@ -75,8 +75,18 @@
|
|
|
75
75
|
"features": {
|
|
76
76
|
"type": "object",
|
|
77
77
|
"additionalProperties": false,
|
|
78
|
-
"required": ["stopVerification"],
|
|
78
|
+
"required": ["completionGate", "stopVerification"],
|
|
79
79
|
"properties": {
|
|
80
|
+
"completionGate": {
|
|
81
|
+
"type": "object",
|
|
82
|
+
"additionalProperties": false,
|
|
83
|
+
"required": ["enabled"],
|
|
84
|
+
"properties": {
|
|
85
|
+
"enabled": {
|
|
86
|
+
"type": "boolean"
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
},
|
|
80
90
|
"stopVerification": {
|
|
81
91
|
"type": "object",
|
|
82
92
|
"additionalProperties": false,
|