overlord-cli 0.2608211706.0 → 0.2608231148.0
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 +2 -2
- package/dist/connectors/AGENTS.md +57 -75
- package/dist/connectors/HARNESS-MATRIX.md +12 -15
- package/dist/connectors/README.md +13 -8
- package/dist/connectors/VERSION +1 -1
- package/dist/connectors/adapters/antigravity/CAPABILITIES.md +13 -7
- package/dist/connectors/adapters/antigravity/README.md +7 -19
- package/dist/connectors/adapters/antigravity/conformance-manifest.yaml +3 -8
- package/dist/connectors/adapters/antigravity/fixtures/mutation-window-evidence.json +15 -0
- package/dist/connectors/adapters/antigravity/harness-capabilities.yaml +6 -28
- package/dist/connectors/adapters/antigravity/plugin.json +1 -1
- package/dist/connectors/adapters/antigravity/skills/record-work.md +4 -4
- package/dist/connectors/adapters/claude/.claude-plugin/plugin.json +1 -1
- package/dist/connectors/adapters/claude/CAPABILITIES.md +25 -16
- package/dist/connectors/adapters/claude/README.md +10 -4
- package/dist/connectors/adapters/claude/codec/claude.codec.yaml +4 -0
- package/dist/connectors/adapters/claude/commands/record-work.md +3 -3
- package/dist/connectors/adapters/claude/conformance-manifest.yaml +3 -20
- package/dist/connectors/adapters/claude/fixtures/agent-session-hook-unbound.json +1 -1
- package/dist/connectors/adapters/claude/fixtures/mutation-window-evidence.json +19 -0
- package/dist/connectors/adapters/claude/fixtures/normalize-post-tool-use-write.json +1 -1
- package/dist/connectors/adapters/claude/fixtures/post-tool-use-capture.json +27 -0
- package/dist/connectors/adapters/claude/fixtures/unbound-session.json +5 -4
- package/dist/connectors/adapters/claude/harness-capabilities.yaml +29 -76
- package/dist/connectors/adapters/codex/.codex-plugin/plugin.json +1 -1
- package/dist/connectors/adapters/codex/CAPABILITIES.md +17 -8
- package/dist/connectors/adapters/codex/README.md +10 -4
- package/dist/connectors/adapters/codex/codec/codex.codec.yaml +2 -0
- package/dist/connectors/adapters/codex/conformance-manifest.yaml +3 -17
- package/dist/connectors/adapters/codex/fixtures/mutation-window-evidence.json +33 -0
- package/dist/connectors/adapters/codex/fixtures/post-tool-use-hook.json +23 -9
- package/dist/connectors/adapters/codex/fixtures/post-tool-use-unbound.json +26 -0
- package/dist/connectors/adapters/codex/harness-capabilities.yaml +19 -32
- package/dist/connectors/adapters/cursor/.cursor-plugin/plugin.json +1 -1
- package/dist/connectors/adapters/cursor/CAPABILITIES.md +24 -15
- package/dist/connectors/adapters/cursor/README.md +7 -2
- package/dist/connectors/adapters/cursor/codec/cursor.codec.yaml +8 -2
- package/dist/connectors/adapters/cursor/commands/record-work.md +3 -3
- package/dist/connectors/adapters/cursor/conformance-manifest.yaml +3 -16
- package/dist/connectors/adapters/cursor/fixtures/mutation-window-evidence.json +34 -0
- package/dist/connectors/adapters/cursor/fixtures/normalize-post-tool-use-write.json +1 -1
- package/dist/connectors/adapters/cursor/fixtures/post-tool-use-hook.json +27 -0
- package/dist/connectors/adapters/cursor/fixtures/post-tool-use-unbound.json +26 -0
- package/dist/connectors/adapters/cursor/harness-capabilities.yaml +31 -57
- package/dist/connectors/adapters/cursor/rules/overlord-local.mdc +2 -3
- package/dist/connectors/adapters/cursor/skills/overlord-mission/SKILL.md +5 -1
- package/dist/connectors/adapters/opencode/CAPABILITIES.md +15 -3
- package/dist/connectors/adapters/opencode/codec/opencode.codec.yaml +0 -1
- package/dist/connectors/adapters/opencode/conformance-manifest.yaml +3 -5
- package/dist/connectors/adapters/opencode/fixtures/mutation-window-evidence.json +20 -0
- package/dist/connectors/adapters/opencode/harness-capabilities.yaml +9 -9
- package/dist/connectors/adapters/pi/CAPABILITIES.md +15 -3
- package/dist/connectors/adapters/pi/conformance-manifest.yaml +3 -12
- package/dist/connectors/adapters/pi/fixtures/mutation-window-evidence.json +17 -0
- package/dist/connectors/adapters/pi/harness-capabilities.yaml +7 -14
- package/dist/connectors/core/README.md +8 -0
- package/dist/connectors/core/overlord-mission/SKILL.md +62 -84
- package/dist/connectors/core/overlord-mission/reference/cli.md +53 -58
- package/dist/connectors/core/overlord-mission/reference/mcp.md +3 -3
- package/dist/connectors/core/overlord-mission/reference/record-work.md +18 -15
- package/dist/connectors/core/overlord-mission/reference/shell-escaping.md +3 -4
- package/dist/connectors/core/scripts/capture-change-hook.sh +20 -0
- package/dist/connectors/core/scripts/overlord-mcp.mjs +45 -36
- package/dist/connectors/docs/05-connectors-and-agent-plugins.md +15 -1
- package/dist/connectors/docs/testing.md +28 -24
- package/dist/contract/conformance-manifest.schema.yaml +3 -44
- package/dist/index.js +4394 -4117
- package/dist/index.js.map +4 -4
- package/package.json +1 -1
- package/dist/connectors/adapters/antigravity/skills/spawn.md +0 -16
- package/dist/connectors/adapters/claude/commands/spawn.md +0 -19
- package/dist/connectors/adapters/claude/scripts/post-tool-use-hook.sh +0 -40
- package/dist/connectors/adapters/codex/scripts/post-tool-use-hook.sh +0 -30
- package/dist/connectors/adapters/cursor/commands/spawn.md +0 -11
- package/dist/connectors/adapters/cursor/fixtures/no-permission-request-hook.json +0 -10
- package/dist/connectors/adapters/cursor/fixtures/post-tool-use-log-dir.json +0 -9
- package/dist/connectors/adapters/cursor/hooks/overlord-post-tool-use.sh +0 -31
package/README.md
CHANGED
|
@@ -97,7 +97,7 @@ backend is reachable.
|
|
|
97
97
|
|
|
98
98
|
Environment overrides (useful in scripts and CI):
|
|
99
99
|
|
|
100
|
-
- `OVLD_HOME` — relocate the entire global `~/.ovld` data directory (SQLite, object storage,
|
|
100
|
+
- `OVLD_HOME` — relocate the entire global `~/.ovld` data directory (SQLite, object storage, objective ledgers, and native-session caches)
|
|
101
101
|
- `OVERLORD_BACKEND_URL` — production/global backend target; an *explicit* runtime value (shell export, container/launcher injection) takes precedence over the resolved `overlord.toml` `backend_url`
|
|
102
102
|
- `OVERLORD_BACKEND_URL_DEV` — **development-only** backend target, read solely by the in-repo source build and the dev/test tooling that runs it (`yarn dev`, the test harness). An installed/published `ovld` never reads it, and nothing aliases it into the production `OVERLORD_BACKEND_URL`
|
|
103
103
|
- `OVERLORD_WEB_PORT` — port the local backend binds when launched
|
|
@@ -249,7 +249,7 @@ colocation convention):
|
|
|
249
249
|
- [03 — Agent Protocol](https://github.com/cooperativ-labs/OpenOverlord/blob/main/cli/docs/03-agent-protocol.md): `ovld protocol` lifecycle, context assembly, updates, delivery, attachments.
|
|
250
250
|
- [04 — Runner and Launch Execution](https://github.com/cooperativ-labs/OpenOverlord/blob/main/cli/docs/04-runner-and-launch-execution.md): execution requests, local runner, launch command generation, auto-advance.
|
|
251
251
|
- [06 — Core Domain and Lifecycle](https://github.com/cooperativ-labs/OpenOverlord/blob/main/cli/docs/06-core-domain-and-lifecycle.md): projects, missions, objectives, sessions, events, statuses, state transitions.
|
|
252
|
-
- [11 — Review, Artifacts, and Change Tracking](https://github.com/cooperativ-labs/OpenOverlord/blob/main/cli/docs/11-review-artifacts-and-change-tracking.md): delivery review records, artifacts,
|
|
252
|
+
- [11 — Review, Artifacts, and Change Tracking](https://github.com/cooperativ-labs/OpenOverlord/blob/main/cli/docs/11-review-artifacts-and-change-tracking.md): delivery review records, artifacts, objective-ledger evidence, and optional rationale annotations.
|
|
253
253
|
- [Test Plan](https://github.com/cooperativ-labs/OpenOverlord/blob/main/cli/docs/testing.md): test plan for the `cli`, `protocol`, and `runner` components — management commands, protocol lifecycle/attach-shape/validation conformance, runner queue atomicity, and surface smoke tests. Part of the root [TEST_PLAN.md](https://github.com/cooperativ-labs/OpenOverlord/blob/main/TEST_PLAN.md).
|
|
254
254
|
|
|
255
255
|
### Code & Tests
|
|
@@ -11,9 +11,9 @@ A connector lets an AI coding harness (Claude Code, Codex, Cursor, etc.) speak t
|
|
|
11
11
|
| Extension type | Example user request |
|
|
12
12
|
| --------------------- | ----------------------------------------------------- |
|
|
13
13
|
| New agent connector | "Add a connector for OpenCode / Windsurf / Zed" |
|
|
14
|
-
| New
|
|
14
|
+
| New harness event path | "Capture a newly exposed native mutation event" |
|
|
15
15
|
| Extend connector core | "Add a new canonical instruction to all connectors" |
|
|
16
|
-
| New capability
|
|
16
|
+
| New capability id | "Grade a new agent-session behavior" |
|
|
17
17
|
|
|
18
18
|
Each type has a different procedure below.
|
|
19
19
|
|
|
@@ -24,7 +24,7 @@ Each type has a different procedure below.
|
|
|
24
24
|
1. Read `CONTRACT.md` — Connector Layer section (stable id: `connector`).
|
|
25
25
|
2. Read [`connectors/docs/05-connectors-and-agent-plugins.md`](docs/05-connectors-and-agent-plugins.md) for the four-layer model: connector core, plugins, adapters, and prompt wrappers.
|
|
26
26
|
3. Read [`connectors/docs/agent-harness-configuration-architecture.md`](docs/agent-harness-configuration-architecture.md) for ownership boundaries.
|
|
27
|
-
4. Check `contract/extension-points.yaml`
|
|
27
|
+
4. Check the `agentSession` vocabularies in `contract/extension-points.yaml` and the descriptor schema before adding a normalized capability, integration shape, or fixture kind.
|
|
28
28
|
5. After connector edits, follow the [connector-versions skill](../.claude/skills/connector-versions/SKILL.md) and run `yarn connectors:version:bump`.
|
|
29
29
|
|
|
30
30
|
---
|
|
@@ -57,7 +57,7 @@ The descriptor is the **only hand-authored capability source**. Everything below
|
|
|
57
57
|
| `connectors/adapters/<agent>/CAPABILITIES.md` | Per-adapter page with a do-not-edit banner |
|
|
58
58
|
| `connectors/HARNESS-MATRIX.md` | Cross-adapter matrix |
|
|
59
59
|
| `cli/src/agent-session/catalog.generated.ts` | Compiled catalog the CLI runtime reads |
|
|
60
|
-
| The `connector:` block's `
|
|
60
|
+
| The `connector:` block's `integrationShape`, `capabilityTier`, and `harnessCapabilities` fields in `conformance-manifest.yaml` | The descriptor-derived integration shape, tier, and digest |
|
|
61
61
|
|
|
62
62
|
`yarn connectors:capabilities:check` is the CI drift check: it validates every descriptor,
|
|
63
63
|
executes every referenced fixture, re-derives each tier, and fails if any generated artifact is
|
|
@@ -68,58 +68,32 @@ stale. `yarn connectors:check` runs it alongside the connector version check.
|
|
|
68
68
|
1. **A capability is proven by fixture, not by inspection.** CI runs the fixture. Checking only
|
|
69
69
|
that a named file exists would let an empty fixture claim a capability into existence.
|
|
70
70
|
2. **The tier is derived, never authored.** `capabilityTier` comes from what the fixtures prove.
|
|
71
|
-
|
|
71
|
+
Asserted-but-unproven is worse than absent, because the UI renders controls that do nothing.
|
|
72
72
|
3. **Every adapter ships the unbound-session negative fixture.** An unbound session in an
|
|
73
73
|
unrelated directory must be untouched and unblocked by every registered integration. A side
|
|
74
|
-
effect
|
|
75
|
-
|
|
74
|
+
effect, CLI invocation, or output makes the fixture fail; a hazard declaration cannot waive
|
|
75
|
+
this boundary.
|
|
76
76
|
4. **A native session id binds nothing on its own.** It is a correlation alias. The verified
|
|
77
77
|
channel/session credential is the authorization and mission scope, and the working directory
|
|
78
78
|
is never a binding authority.
|
|
79
|
-
5. **Adapters make no network call.** Translate, hand off to `ovld
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
command -v ovld >/dev/null 2>&1 || exit 0
|
|
98
|
-
exec ovld agent-session event --agent claude --payload-file -
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
The first line is the scope gate, and it is in bash rather than in the CLI on purpose. An
|
|
102
|
-
unbound session — someone's own agent in an unrelated directory on a machine that happens to
|
|
103
|
-
have Overlord installed — must cost no process, no log line, and no measurable delay. A gate
|
|
104
|
-
inside the CLI cannot deliver that, because reaching it already cost a process launch. The CLI
|
|
105
|
-
applies the same gate again, since a check that can be skipped by invoking `ovld` directly is
|
|
106
|
-
not a gate.
|
|
107
|
-
|
|
108
|
-
The action being fixed at install time is the point, not a simplification. A single script that
|
|
109
|
-
dispatched on `$1` would let whatever wrote the hook registration choose which CLI operation
|
|
110
|
-
runs, and hook registrations are the least-reviewed configuration on a developer's machine. A
|
|
111
|
-
`PostToolUse` registration renders an `event` script; a permission registration renders a
|
|
112
|
-
`request` script; an inject registration renders an `inbox` script; none can become another.
|
|
113
|
-
`event`, `request`, and `inbox` are the only three actions a managed path may name.
|
|
114
|
-
|
|
115
|
-
The payload streams on stdin — not through a shell variable, which caps size and mangles NUL
|
|
116
|
-
bytes, and not through argv, which is world-readable. For `request` and `inbox`, stdout and exit
|
|
117
|
-
status pass through unchanged so the native decision or injection reaches the harness in its
|
|
118
|
-
exact expected shape.
|
|
119
|
-
|
|
120
|
-
Silence is the failure mode. A missing `ovld` exits `0` with no output, which for a decision
|
|
121
|
-
hook means _no decision_ and therefore the harness's own prompt. No failure path may ever
|
|
122
|
-
manufacture an approval.
|
|
79
|
+
5. **Adapters make no network call.** Translate, hand off to the documented local `ovld`
|
|
80
|
+
command, and return.
|
|
81
|
+
|
|
82
|
+
### Local mutation capture hooks
|
|
83
|
+
|
|
84
|
+
A connector may invoke `ovld protocol capture-change` from a native post-mutation hook when
|
|
85
|
+
`OVERLORD_OBJECTIVE_ID` is explicit in the launch environment. Mission scope is recovered from
|
|
86
|
+
that objective's exact active-session binding; cwd never selects it. The hook must remain silent
|
|
87
|
+
and perform no write when the objective id or `ovld` is unavailable. A directly named native edit
|
|
88
|
+
path records objective-bound, non-exclusive `declared_edit`/`direct` evidence only after the
|
|
89
|
+
connector-owned codec normalizes it as `file.edited`. The hook must pass its connector key through
|
|
90
|
+
`--agent`; generic payload path parsing is forbidden. Codec-normalized read, search, and fetch
|
|
91
|
+
callbacks are silent no-ops. Mutation-capable callbacks without a normalized edit path, plus shell,
|
|
92
|
+
generic, unknown, and unmapped callbacks, record unavailable evidence health. Every hook
|
|
93
|
+
registration must be backed by a `script-io` fixture, and every mutation window claim must be
|
|
94
|
+
backed by a `mutation-window` fixture. Claude, Codex, and Cursor render this callback from
|
|
95
|
+
`connectors/core/scripts/capture-change-hook.sh`; their adapter directories own only the native
|
|
96
|
+
managed path and registration, not copies of the implementation.
|
|
123
97
|
|
|
124
98
|
### The event codec
|
|
125
99
|
|
|
@@ -144,6 +118,7 @@ events:
|
|
|
144
118
|
toolPath: tool_name
|
|
145
119
|
inputPath: tool_input
|
|
146
120
|
fileEditKind: file.edited # a file-mutating tool becomes this kind instead
|
|
121
|
+
filePathPaths: [file_path] # bounded paths inside tool_input; no generic key fallback
|
|
147
122
|
```
|
|
148
123
|
|
|
149
124
|
A codec can only say **where** native values live. It cannot name a destination the core
|
|
@@ -161,6 +136,9 @@ What each field feeds:
|
|
|
161
136
|
- `inputPath` is never transmitted. It is reduced on the machine into an action, a subject, a
|
|
162
137
|
bounded detail, and machine-derived risk markers. A tool with no formatter emits its name and
|
|
163
138
|
the top-level **key names** of its input and nothing else.
|
|
139
|
+
- `filePathPaths` is a bounded, ordered list of dotted paths relative to `inputPath`. It is
|
|
140
|
+
required with the literal `fileEditKind: file.edited`; only exact strings resolved through
|
|
141
|
+
those connector-owned paths may become mutation evidence. Core never guesses common path keys.
|
|
164
142
|
- `promptPath` is the single deliberate exception: prompt text is persisted in full for bound
|
|
165
143
|
sessions, because the activity feed exists to show it. Secret redaction still runs over it.
|
|
166
144
|
|
|
@@ -208,8 +186,9 @@ grants nothing on its own.
|
|
|
208
186
|
| `native-payload` | Asserts the shape of a recorded native harness payload (pure; no process started) |
|
|
209
187
|
| `script-io` | Runs a shipped adapter script in an isolated sandbox — own `HOME`, `TMPDIR`, cwd, and a `PATH` whose only `ovld` is a recording spy — and asserts exit status, stdout, stderr, every sandbox write, and every CLI invocation attempted |
|
|
210
188
|
| `source-guard` | Asserts a repo file does or does not contain declared markers (how "this dangerous harness flag must stay unset" is enforced) |
|
|
211
|
-
| `normalized-event` | Runs the shipped codec and the real core interpreter against a recorded native payload, asserts the exact normalized envelope, and asserts that named raw content (file bodies, transcript paths, credentials) appears nowhere in it. This is how an `observe.*` capability becomes provable rather than
|
|
189
|
+
| `normalized-event` | Runs the shipped codec and the real core interpreter against a recorded native payload, asserts the exact normalized envelope, and asserts that named raw content (file bodies, transcript paths, credentials) appears nowhere in it. This is how an `observe.*` capability becomes provable rather than merely asserted |
|
|
212
190
|
| `decision-codec` | Runs the connector-owned request/decision declaration through the real pure interpreter, asserts the bounded redacted request card, and pins exact allow/deny/defer bytes. Required for supported callback/extension `decide.*` capabilities |
|
|
191
|
+
| `mutation-window` | Executes recorded pre/post evidence semantics and derives whether the connector has a strict paired window, post-only evidence, or no post evidence. Declared classifications must match the derived result. |
|
|
213
192
|
|
|
214
193
|
Fixtures never reach the network.
|
|
215
194
|
|
|
@@ -217,7 +196,7 @@ Fixtures never reach the network.
|
|
|
217
196
|
|
|
218
197
|
## Adding a New Agent Connector
|
|
219
198
|
|
|
220
|
-
A new connector is the primary sanctioned extension point for this module. It requires a conformance manifest but does not require a contract version bump unless it introduces new capability
|
|
199
|
+
A new connector is the primary sanctioned extension point for this module. It requires a conformance manifest but does not require a contract version bump unless it introduces a new closed capability id, integration shape, fixture kind, or protocol surface.
|
|
221
200
|
|
|
222
201
|
**Steps:**
|
|
223
202
|
|
|
@@ -229,8 +208,8 @@ A new connector is the primary sanctioned extension point for this module. It re
|
|
|
229
208
|
- Post meaningful progress updates
|
|
230
209
|
- Use heartbeat during long work with no meaningful update
|
|
231
210
|
- Ask exactly one blocking question and stop when blocked
|
|
232
|
-
- Deliver last with
|
|
233
|
-
-
|
|
211
|
+
- Deliver last with a concise summary
|
|
212
|
+
- Keep objective-ledger capture local and independent of delivery
|
|
234
213
|
- Use stdin/file flags for shell-special content
|
|
235
214
|
- Do not continue after delivery unless explicitly asked
|
|
236
215
|
- Run local repair before asking the user to fix setup
|
|
@@ -259,13 +238,15 @@ wrong and that is worth raising rather than working around.
|
|
|
259
238
|
6. **Create `connectors/adapters/<agent-name>/conformance-manifest.yaml`** declaring:
|
|
260
239
|
|
|
261
240
|
```yaml
|
|
262
|
-
contractVersion: '
|
|
241
|
+
contractVersion: '116'
|
|
263
242
|
componentType: connector
|
|
264
243
|
componentKey: <agent-name>
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
244
|
+
label: <human-readable label>
|
|
245
|
+
connector:
|
|
246
|
+
agentIdentifier: <agent-name>
|
|
247
|
+
# integrationShape, capabilityTier, and harnessCapabilities are generated.
|
|
248
|
+
installPath: <default install root>
|
|
249
|
+
managedFiles: []
|
|
269
250
|
```
|
|
270
251
|
|
|
271
252
|
7. **Validate**: run `ovld contract check connectors/adapters/<agent-name>/conformance-manifest.yaml`.
|
|
@@ -274,18 +255,18 @@ wrong and that is worth raising rather than working around.
|
|
|
274
255
|
|
|
275
256
|
---
|
|
276
257
|
|
|
277
|
-
## Adding a New
|
|
258
|
+
## Adding a New Harness Event Path
|
|
278
259
|
|
|
279
|
-
|
|
260
|
+
Native hook names belong to the adapter. Contract changes are required only when the path adds a
|
|
261
|
+
new normalized capability id, fixture kind, integration shape, or protocol surface.
|
|
280
262
|
|
|
281
263
|
**Steps:**
|
|
282
264
|
|
|
283
|
-
1. **
|
|
284
|
-
2. **
|
|
285
|
-
3. **
|
|
286
|
-
4. **
|
|
287
|
-
5. **
|
|
288
|
-
6. **Update affected conformance manifests** to declare the new hook type.
|
|
265
|
+
1. **Record the native event** in an adapter fixture and map it to an existing normalized capability.
|
|
266
|
+
2. **Implement the hook script** in the adapter's native hook location.
|
|
267
|
+
3. **Keep it local and protocol-only** — use the documented `ovld protocol` command and never write to the database directly.
|
|
268
|
+
4. **Prove behavior** with a `script-io` fixture and, for mutation evidence, a `mutation-window` fixture.
|
|
269
|
+
5. **Update the descriptor** and run `yarn connectors:capabilities`.
|
|
289
270
|
|
|
290
271
|
---
|
|
291
272
|
|
|
@@ -302,16 +283,17 @@ The connector core is the set of canonical Markdown workflow instructions every
|
|
|
302
283
|
|
|
303
284
|
---
|
|
304
285
|
|
|
305
|
-
## Adding a New Capability
|
|
286
|
+
## Adding a New Capability Id
|
|
306
287
|
|
|
307
|
-
|
|
288
|
+
Normalized capability ids are closed values listed under `agentSession.capabilityIds` in
|
|
289
|
+
`contract/extension-points.yaml` and in `contract/harness-capabilities.schema.yaml`.
|
|
308
290
|
|
|
309
291
|
**Steps:**
|
|
310
292
|
|
|
311
|
-
1. **Add the
|
|
312
|
-
2. **
|
|
313
|
-
3. **Increment contract version**
|
|
314
|
-
4. **Declare the
|
|
293
|
+
1. **Add the id** to the contract vocabulary and descriptor schema in the same change.
|
|
294
|
+
2. **Define its evidence semantics** and fixture requirements in the Connector Layer contract.
|
|
295
|
+
3. **Increment the contract version** for the closed-vocabulary change.
|
|
296
|
+
4. **Declare the id and evidence** in every descriptor, then regenerate manifests and catalogs.
|
|
315
297
|
|
|
316
298
|
---
|
|
317
299
|
|
|
@@ -341,7 +323,7 @@ No adapter implementations have landed yet. When they do, the Claude and Codex a
|
|
|
341
323
|
## Cross-Module Checklist
|
|
342
324
|
|
|
343
325
|
- [ ] Read `CONTRACT.md` Connector Layer section
|
|
344
|
-
- [ ] New
|
|
326
|
+
- [ ] New capability id, integration shape, or fixture kind → update the contract vocabulary and descriptor schema first
|
|
345
327
|
- [ ] Hook scripts → use `ovld protocol` commands only, no direct DB writes
|
|
346
328
|
- [ ] Conformance manifest created and validated for every new connector
|
|
347
329
|
- [ ] `ovld agent-setup <agent>` and `ovld doctor` behavior documented
|
|
@@ -2,24 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
# Harness capability matrix
|
|
4
4
|
|
|
5
|
-
Generated from each adapter's `harness-capabilities.yaml
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
it is trusted.
|
|
5
|
+
Generated from each adapter's fixture-backed `harness-capabilities.yaml` descriptor.
|
|
6
|
+
The descriptor is the single authored capability source; the tier and every table cell are
|
|
7
|
+
derived.
|
|
9
8
|
|
|
10
9
|
Legend: ✅ supported (fixture-proven) · ⛔ unsupported (harness cannot) · 🚧 not-implemented
|
|
11
10
|
(buildable, unbuilt) · ❓ unverified (find out first).
|
|
12
11
|
|
|
13
12
|
## Adapters
|
|
14
13
|
|
|
15
|
-
| Adapter | Harness | Verified version | Shape | Tier | Binding | Decision hold |
|
|
16
|
-
| --- | --- | --- | --- | --- | --- | --- |
|
|
17
|
-
| [`antigravity`](adapters/antigravity/CAPABILITIES.md) | Antigravity CLI | `docs: Antigravity CLI v1.1.11 / Antigravity 2.0 v2.6.0` | `callback` | 0 (Unsupported) | ✅ supported | ❓ unverified |
|
|
18
|
-
| [`claude`](adapters/claude/CAPABILITIES.md) | Claude Code | `2.1.227` | `callback` | 1 (Observational) | ✅ supported | ✅ supported |
|
|
19
|
-
| [`codex`](adapters/codex/CAPABILITIES.md) | Codex CLI | `0.147.0` | `callback` | 1 (Observational) | ✅ supported | ✅ supported |
|
|
20
|
-
| [`cursor`](adapters/cursor/CAPABILITIES.md) | Cursor Agent CLI | `2026.08.04-aaa8809` | `callback` | 1 (Observational) | ✅ supported | ✅ supported |
|
|
21
|
-
| [`opencode`](adapters/opencode/CAPABILITIES.md) | OpenCode | — | `controlPlane` | 3 (Conversational) | ✅ supported | ✅ supported |
|
|
22
|
-
| [`pi`](adapters/pi/CAPABILITIES.md) | Pi Coding Agent | `0.83.0` | `extension` | 1 (Observational) | ✅ supported | 🚧 not-implemented |
|
|
14
|
+
| Adapter | Harness | Verified version | Shape | Tier | Mutation evidence | Binding | Decision hold |
|
|
15
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
16
|
+
| [`antigravity`](adapters/antigravity/CAPABILITIES.md) | Antigravity CLI | `docs: Antigravity CLI v1.1.11 / Antigravity 2.0 v2.6.0` | `callback` | 0 (Unsupported) | `unsupported` | ✅ supported | ❓ unverified |
|
|
17
|
+
| [`claude`](adapters/claude/CAPABILITIES.md) | Claude Code | `2.1.227` | `callback` | 1 (Observational) | `post-only` | ✅ supported | ✅ supported |
|
|
18
|
+
| [`codex`](adapters/codex/CAPABILITIES.md) | Codex CLI | `0.147.0` | `callback` | 1 (Observational) | `post-only` | ✅ supported | ✅ supported |
|
|
19
|
+
| [`cursor`](adapters/cursor/CAPABILITIES.md) | Cursor Agent CLI | `2026.08.04-aaa8809` | `callback` | 1 (Observational) | `post-only` | ✅ supported | ✅ supported |
|
|
20
|
+
| [`opencode`](adapters/opencode/CAPABILITIES.md) | OpenCode | — | `controlPlane` | 3 (Conversational) | `post-only` | ✅ supported | ✅ supported |
|
|
21
|
+
| [`pi`](adapters/pi/CAPABILITIES.md) | Pi Coding Agent | `0.83.0` | `extension` | 1 (Observational) | `unsupported` | ✅ supported | 🚧 not-implemented |
|
|
23
22
|
|
|
24
23
|
## Capabilities
|
|
25
24
|
|
|
@@ -28,7 +27,7 @@ Legend: ✅ supported (fixture-proven) · ⛔ unsupported (harness cannot) ·
|
|
|
28
27
|
| `observe.prompt` | ⛔ unsupported | ✅ supported | ✅ supported | ✅ supported | 🚧 not-implemented | ✅ supported |
|
|
29
28
|
| `observe.toolCall` | 🚧 not-implemented | 🚧 not-implemented | 🚧 not-implemented | 🚧 not-implemented | 🚧 not-implemented | 🚧 not-implemented |
|
|
30
29
|
| `observe.toolResult` | 🚧 not-implemented | 🚧 not-implemented | 🚧 not-implemented | ✅ supported | ✅ supported | 🚧 not-implemented |
|
|
31
|
-
| `observe.fileEdit` | 🚧 not-implemented | ✅ supported | ✅ supported | ✅ supported |
|
|
30
|
+
| `observe.fileEdit` | 🚧 not-implemented | ✅ supported | ✅ supported | ✅ supported | 🚧 not-implemented | 🚧 not-implemented |
|
|
32
31
|
| `observe.sessionLifecycle` | 🚧 not-implemented | 🚧 not-implemented | 🚧 not-implemented | 🚧 not-implemented | ✅ supported | 🚧 not-implemented |
|
|
33
32
|
| `decide.shell` | 🚧 not-implemented | 🚧 not-implemented | 🚧 not-implemented | 🚧 not-implemented | ✅ supported | 🚧 not-implemented |
|
|
34
33
|
| `decide.mcp` | ❓ unverified | 🚧 not-implemented | 🚧 not-implemented | 🚧 not-implemented | ✅ supported | 🚧 not-implemented |
|
|
@@ -49,10 +48,8 @@ Legend: ✅ supported (fixture-proven) · ⛔ unsupported (harness cannot) ·
|
|
|
49
48
|
| --- | --- | --- | --- | --- | --- |
|
|
50
49
|
| `antigravity` | `outside-verification-survey` | medium | unverified | required | `agent-session-verify-antigravity` |
|
|
51
50
|
| `claude` | `shipped-stop-hook-inert` | medium | verified | required | `agent-session-phase-3` |
|
|
52
|
-
| `claude` | `unbound-session-side-effects` | medium | verified | required | `agent-session-phase-4` |
|
|
53
51
|
| `claude` | `fork-and-subagent-identity-unknown` | medium | unverified | required | `taxonomy-7.6` |
|
|
54
52
|
| `claude` | `subagent-stop-unregistered` | medium | verified | required | `coo:585` |
|
|
55
|
-
| `claude` | `subagent-commits-escape-delivery-delta` | high | verified | required | `coo:585` |
|
|
56
53
|
| `codex` | `prompt-and-agent-hook-handlers-inert` | low | verified | accepted | — |
|
|
57
54
|
| `codex` | `hooks-version-and-platform-gate` | medium | verified | required | `agent-session-phase-4` |
|
|
58
55
|
| `cursor` | `reads-claude-hook-config` | high | unverified | required | `taxonomy-7.1` |
|
|
@@ -116,17 +116,22 @@ work as its own mission rather than folding it into a docs change:
|
|
|
116
116
|
|
|
117
117
|
- `codex` ships no `commands/` while `claude` and `cursor` do, and `antigravity`
|
|
118
118
|
achieves the same surface through `skills/*.md`. No harness constraint is recorded.
|
|
119
|
-
- `
|
|
120
|
-
|
|
119
|
+
- `antigravity` registers no post-tool mutation or Stop hook; whether its harness exposes
|
|
120
|
+
equivalent events is not documented here.
|
|
121
121
|
|
|
122
122
|
### Generated files
|
|
123
123
|
|
|
124
|
-
The local MCP shim
|
|
125
|
-
adapter.
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
124
|
+
The local MCP shim and post-tool capture callback are **generated**, not committed per
|
|
125
|
+
adapter. `ovld agent-setup` renders their core sources with the adapter key substituted:
|
|
126
|
+
|
|
127
|
+
- [`core/scripts/overlord-mcp.mjs`](core/scripts/overlord-mcp.mjs) becomes the local MCP
|
|
128
|
+
shim for Codex, Cursor, and Antigravity.
|
|
129
|
+
- [`core/scripts/capture-change-hook.sh`](core/scripts/capture-change-hook.sh) becomes
|
|
130
|
+
Claude's and Codex's `scripts/post-tool-use-hook.sh` and Cursor's
|
|
131
|
+
`hooks/overlord-post-tool-use.sh`.
|
|
132
|
+
|
|
133
|
+
Edit the core source; there are no adapter copies. Installed paths and native hook
|
|
134
|
+
registrations remain harness-specific.
|
|
130
135
|
|
|
131
136
|
### Documentation
|
|
132
137
|
|
package/dist/connectors/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.3.
|
|
1
|
+
0.3.36
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
**Harness version verified** `docs: Antigravity CLI v1.1.11 / Antigravity 2.0 v2.6.0` · **scheme** `opaque`
|
|
8
8
|
|
|
9
|
-
**Descriptor digest** `
|
|
9
|
+
**Descriptor digest** `c5686f1ab4c02e6bb90adeef83c6acd61703f3238be12618fed1e2b833636b2a`
|
|
10
10
|
|
|
11
11
|
> The tier is derived from passing fixtures, never authored. `unsupported` means the harness
|
|
12
12
|
> cannot do it — do not attempt it. `not-implemented` means it is buildable and unbuilt: that is
|
|
@@ -38,6 +38,18 @@ native id is a binding authority.
|
|
|
38
38
|
|
|
39
39
|
The first-party docs define command-hook timeouts (30 seconds by default) and a synchronous PreToolUse `decision` response, but do not define timeout, crash, non-zero-exit, or malformed JSON fallback behavior. Keep the remote decision hold unverified until an installed binary exercises those failure paths.
|
|
40
40
|
|
|
41
|
+
## Mutation-window evidence
|
|
42
|
+
|
|
43
|
+
| Field | Value |
|
|
44
|
+
| --- | --- |
|
|
45
|
+
| Classification | `unsupported` |
|
|
46
|
+
| Executable fixture | `fixtures/mutation-window-evidence.json` |
|
|
47
|
+
|
|
48
|
+
No recorded PostToolUse payload or empirical agy hook execution proves a pair.
|
|
49
|
+
|
|
50
|
+
File attribution may not be synthesized for this adapter. Missing mutation evidence is
|
|
51
|
+
reported as unavailable health, never recovered from a worktree-wide delta.
|
|
52
|
+
|
|
41
53
|
## Capabilities
|
|
42
54
|
|
|
43
55
|
| Capability | Status | Native | Evidence |
|
|
@@ -65,15 +77,9 @@ The first-party docs define command-hook timeouts (30 seconds by default) and a
|
|
|
65
77
|
| Hazard | Severity | Verification | Mitigation | Tracked as |
|
|
66
78
|
| --- | --- | --- | --- | --- |
|
|
67
79
|
| `outside-verification-survey` | medium | unverified | required | `agent-session-verify-antigravity` |
|
|
68
|
-
| `pre-tool-use-always-allows` | medium | verified | implemented | fixture `fixtures/unbound-session.json` |
|
|
69
|
-
| `pre-invocation-has-no-prompt` | high | verified | implemented | fixture `fixtures/unbound-session.json` |
|
|
70
80
|
|
|
71
81
|
**`outside-verification-survey`** — Antigravity was not part of the original harness verification survey. The current first-party docs now establish hook names, payload fields, and response shapes, but the `agy` binary was unavailable for empirical timeout, failure, resume, and headless tests. The connector must stay at its fixture-proven tier until those paths are exercised.
|
|
72
82
|
|
|
73
|
-
**`pre-tool-use-always-allows`** — The former PreToolUse hook answered `{"allow_tool":true}` even though the first-party response contract requires `decision`, and called a nonexistent detached protocol command. It neither gated nor recorded reliably; changing it to native `decision: allow` would have silently bypassed the harness permission system, so the registration was removed.
|
|
74
|
-
|
|
75
|
-
**`pre-invocation-has-no-prompt`** — The former follow-up hook guessed prompt/message/text/input fields on PreInvocation, but the first-party schema contains none of them. It could never capture a normal follow-up; reconstructing one from transcriptPath would violate the raw-transcript privacy boundary. The false followUpHook projection and the registration were removed.
|
|
76
|
-
|
|
77
83
|
## Native decision shape
|
|
78
84
|
|
|
79
85
|
- **Codec** `antigravity`
|
|
@@ -51,7 +51,7 @@ ovld protocol help
|
|
|
51
51
|
|
|
52
52
|
Inside Antigravity the plugin surfaces as:
|
|
53
53
|
|
|
54
|
-
- skills → `overlord-mission`, `attach`, `connect`, `load`, `create`, `prompt`, `discuss-objective`, `add-objectives`, `record-work
|
|
54
|
+
- skills → `overlord-mission`, `attach`, `connect`, `load`, `create`, `prompt`, `discuss-objective`, `add-objectives`, `record-work` (each markdown skill also auto-registers as a `/<name>` slash command)
|
|
55
55
|
- MCP server → `overlord`
|
|
56
56
|
|
|
57
57
|
Prompts generated by the runner should reference these names in bundle instruction mode.
|
|
@@ -71,10 +71,8 @@ This connector is intentionally reviewable against the four connector layers in
|
|
|
71
71
|
|
|
72
72
|
- `plugin.json` — Antigravity plugin manifest (name, description, metadata).
|
|
73
73
|
- `skills/overlord-mission/SKILL.md` — Antigravity adapter template with a `<!-- @connector-core -->` marker; setup interpolates shared core content at install time.
|
|
74
|
-
- `skills/attach.md`, `skills/connect.md`, `skills/load.md`, `skills/create.md`, `skills/prompt.md`, `skills/discuss-objective.md`, `skills/add-objectives.md`, `skills/record-work.md
|
|
74
|
+
- `skills/attach.md`, `skills/connect.md`, `skills/load.md`, `skills/create.md`, `skills/prompt.md`, `skills/discuss-objective.md`, `skills/add-objectives.md`, `skills/record-work.md` — one skill per protocol operation; Antigravity auto-registers each as a `/<name>` slash command.
|
|
75
75
|
- `hooks.json` — intentionally empty until a fixture-proven agent-session callback is installed.
|
|
76
|
-
The former compatibility hooks were removed because the documented native payloads cannot
|
|
77
|
-
support their claimed behavior safely.
|
|
78
76
|
- `mcp_config.json` + `scripts/overlord-mcp.mjs` — MCP bridge to common `ovld protocol` operations. The shim is **generated**: it is rendered from `connectors/core/scripts/overlord-mcp.mjs` at setup time with the adapter key substituted, and there is no copy in this directory to edit.
|
|
79
77
|
- `conformance-manifest.yaml` — connector conformance declaration for the Overlord contract.
|
|
80
78
|
- `prompt-wrapper.md` — Antigravity launch guidance.
|
|
@@ -89,21 +87,11 @@ The shared Connector Core source lives at `connectors/core/overlord-mission`. `o
|
|
|
89
87
|
|
|
90
88
|
See the [adapter capability matrix](../../README.md#adapter-capability-matrix) for how this compares across adapters.
|
|
91
89
|
|
|
92
|
-
###
|
|
90
|
+
### Native evidence status
|
|
93
91
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
without reading the raw transcript, which the connector privacy contract forbids.
|
|
99
|
-
- `PreToolUse` receives `toolCall`, `stepIdx`, and `conversationId`, and requires a `decision`
|
|
100
|
-
response (`allow`, `deny`, `ask`, `force_ask`, or `deny_unless_prior_grant`). The former
|
|
101
|
-
compatibility hook emitted the unrelated `allow_tool` field and called a nonexistent protocol
|
|
102
|
-
command. It has been removed rather than replaced with an unconditional native `allow`, which
|
|
103
|
-
would bypass Antigravity's own permission prompt.
|
|
104
|
-
|
|
105
|
-
The descriptor records the first-party schema and keeps the decision capabilities unimplemented
|
|
106
|
-
until a real installed `agy` binary can exercise the exact failure and timeout behavior through
|
|
107
|
-
the channel-scoped agent-session runtime.
|
|
92
|
+
The descriptor records Antigravity's first-party event schema and keeps decision capabilities
|
|
93
|
+
unimplemented until a real installed `agy` binary can exercise exact decision and timeout
|
|
94
|
+
behavior through the channel-scoped agent-session runtime. No mutation attribution is recorded:
|
|
95
|
+
the adapter has no fixture-proven completion hook.
|
|
108
96
|
|
|
109
97
|
No `Stop` hook or permission-rule file ships yet — Antigravity's pending-delivery check and any declarative auto-approval mechanism should be added once their concrete formats are confirmed, matching the "can be implemented after local MVP" note in `connectors/docs/05-connectors-and-agent-plugins.md`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
contractVersion: "
|
|
1
|
+
contractVersion: "117"
|
|
2
2
|
componentType: connector
|
|
3
3
|
componentKey: antigravity
|
|
4
4
|
label: "Antigravity Connector"
|
|
@@ -8,17 +8,13 @@ connector:
|
|
|
8
8
|
agentIdentifier: antigravity
|
|
9
9
|
# ── GENERATED: do not edit by hand ───────────────────────────────────────────
|
|
10
10
|
# Projected from connectors/adapters/antigravity/harness-capabilities.yaml by `yarn connectors:capabilities`.
|
|
11
|
-
#
|
|
12
|
-
# one release. `harnessCapabilities` is the authoritative source.
|
|
11
|
+
# The harness descriptor and its executable fixtures are the only capability source.
|
|
13
12
|
integrationShape: callback
|
|
14
13
|
capabilityTier: 0
|
|
15
14
|
harnessCapabilities:
|
|
16
15
|
path: connectors/adapters/antigravity/harness-capabilities.yaml
|
|
17
16
|
schemaVersion: 1
|
|
18
|
-
digest: "
|
|
19
|
-
capabilities:
|
|
20
|
-
- contextFilePrompt
|
|
21
|
-
- slashCommands
|
|
17
|
+
digest: "c5686f1ab4c02e6bb90adeef83c6acd61703f3238be12618fed1e2b833636b2a"
|
|
22
18
|
# ── END GENERATED ────────────────────────────────────────────────────────────
|
|
23
19
|
installPath: "~/.gemini/antigravity-cli/plugins/overlord"
|
|
24
20
|
managedFiles:
|
|
@@ -38,7 +34,6 @@ connector:
|
|
|
38
34
|
- "skills/add-objectives.md"
|
|
39
35
|
- "skills/load.md"
|
|
40
36
|
- "skills/record-work.md"
|
|
41
|
-
- "skills/spawn.md"
|
|
42
37
|
- "skills/overlord-mission/SKILL.md"
|
|
43
38
|
- "skills/overlord-mission/reference/cli.md"
|
|
44
39
|
- "skills/overlord-mission/reference/record-work.md"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fixtureVersion": 1,
|
|
3
|
+
"kind": "mutation-window",
|
|
4
|
+
"description": "Antigravity has a first-party PreToolUse example but no recorded completion payload or runtime evidence.",
|
|
5
|
+
"classification": "unsupported",
|
|
6
|
+
"reason": "No recorded PostToolUse payload or empirical agy hook execution proves completion-side or paired evidence.",
|
|
7
|
+
"preFixture": "fixtures/official-pre-tool-use.json",
|
|
8
|
+
"proof": {
|
|
9
|
+
"pre": {
|
|
10
|
+
"session": "conversationId",
|
|
11
|
+
"workspace": "workspacePaths.0",
|
|
12
|
+
"tool": "toolCall.name"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# capabilities begin conservatively as `unverified` rather than inherited from a harness that
|
|
8
8
|
# looks similar. Omitting a shipped connector from the generated matrix would make it less
|
|
9
9
|
# truthful than the hand-written table it replaces; guessing its capabilities would be worse.
|
|
10
|
-
# No UI control may be
|
|
10
|
+
# No UI control may be derived from the agent name — only from a proven capability.
|
|
11
11
|
schemaVersion: 1
|
|
12
12
|
adapter: antigravity
|
|
13
13
|
codec: antigravity
|
|
@@ -40,6 +40,11 @@ decisionHold:
|
|
|
40
40
|
JSON fallback behavior. Keep the remote decision hold unverified until an installed binary
|
|
41
41
|
exercises those failure paths.
|
|
42
42
|
|
|
43
|
+
mutationHooks:
|
|
44
|
+
classification: unsupported
|
|
45
|
+
fixture: fixtures/mutation-window-evidence.json
|
|
46
|
+
reason: No recorded PostToolUse payload or empirical agy hook execution proves a pair.
|
|
47
|
+
|
|
43
48
|
capabilities:
|
|
44
49
|
observe.prompt:
|
|
45
50
|
status: unsupported
|
|
@@ -121,27 +126,6 @@ hazards:
|
|
|
121
126
|
verification: unverified
|
|
122
127
|
mitigation: required
|
|
123
128
|
trackedAs: agent-session-verify-antigravity
|
|
124
|
-
- id: pre-tool-use-always-allows
|
|
125
|
-
severity: medium
|
|
126
|
-
summary: >-
|
|
127
|
-
The former PreToolUse hook answered `{"allow_tool":true}` even though the first-party
|
|
128
|
-
response contract requires `decision`, and called a nonexistent detached protocol command.
|
|
129
|
-
It neither gated nor recorded reliably; changing it to native `decision: allow` would have
|
|
130
|
-
silently bypassed the harness permission system, so the registration was removed.
|
|
131
|
-
verification: verified
|
|
132
|
-
mitigation: implemented
|
|
133
|
-
fixture: fixtures/unbound-session.json
|
|
134
|
-
- id: pre-invocation-has-no-prompt
|
|
135
|
-
severity: high
|
|
136
|
-
summary: >-
|
|
137
|
-
The former follow-up hook guessed prompt/message/text/input fields on PreInvocation, but
|
|
138
|
-
the first-party schema contains none of them. It could never capture a normal follow-up;
|
|
139
|
-
reconstructing one from transcriptPath would violate the raw-transcript privacy boundary.
|
|
140
|
-
The false followUpHook projection and the registration were removed.
|
|
141
|
-
verification: verified
|
|
142
|
-
mitigation: implemented
|
|
143
|
-
fixture: fixtures/unbound-session.json
|
|
144
|
-
|
|
145
129
|
decisionShape:
|
|
146
130
|
codec: antigravity
|
|
147
131
|
neverSend: [allow_tool, hookSpecificOutput, permissionDecision, permission]
|
|
@@ -152,9 +136,3 @@ decisionShape:
|
|
|
152
136
|
no failure path may manufacture `decision: allow`.
|
|
153
137
|
|
|
154
138
|
unboundSessionFixture: fixtures/unbound-session.json
|
|
155
|
-
|
|
156
|
-
legacy:
|
|
157
|
-
capabilities:
|
|
158
|
-
- contextFilePrompt
|
|
159
|
-
- slashCommands
|
|
160
|
-
hookTypes: []
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://antigravity.google/schemas/v1/plugin.json",
|
|
3
3
|
"name": "overlord",
|
|
4
|
-
"version": "0.3.
|
|
4
|
+
"version": "0.3.36",
|
|
5
5
|
"description": "Chat-driven access to Overlord mission protocol workflows through skills and MCP.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Cooperativ",
|
|
@@ -4,13 +4,13 @@ description: Record completed-from-chat work as a mission in review, with a feed
|
|
|
4
4
|
|
|
5
5
|
Immediately record the work you just completed in this chat as a new Overlord mission via `ovld protocol record-work`. No agent session is opened — the work is already done.
|
|
6
6
|
|
|
7
|
-
This creates a mission with one completed objective,
|
|
7
|
+
This creates a mission with one completed objective, lands it in the review column, and runs the standard Gemini delivery summary.
|
|
8
8
|
|
|
9
9
|
Synthesize from the current conversation:
|
|
10
10
|
- `objective`: what was asked / what was done (1-3 sentences).
|
|
11
11
|
- `summary`: reviewer-friendly narrative of what changed and why.
|
|
12
|
-
- `changeRationales
|
|
13
|
-
- `changedFiles` (optional):
|
|
12
|
+
- `changeRationales` (optional): reviewer annotations for changes whose reason is not obvious (`filePath`, `label`, `summary`, `why`, `impact`, optional `hunks`).
|
|
13
|
+
- `changedFiles` (optional, `record-work` only): files known from this completed chat work that have no rationale. Each entry is an object with canonical repository-relative `filePath` and optional `vcsStatus`; never infer ownership from a shared-worktree-wide status or diff.
|
|
14
14
|
- `title` (optional): mission title; defaults to a title derived from the objective.
|
|
15
15
|
- `artifacts` (optional): `next_steps`, `test_results`, `decision`, `note`, `url`.
|
|
16
16
|
|
|
@@ -19,7 +19,7 @@ If a command argument is present, treat it as additional context to weave into t
|
|
|
19
19
|
Run:
|
|
20
20
|
`ovld protocol record-work --agent antigravity --payload-file -`
|
|
21
21
|
|
|
22
|
-
and stream a JSON object `{ "objective": "...", "summary": "...", "artifacts": [...], "changeRationales": [...] }` on stdin via a single-quoted heredoc (`<<'EOF'`).
|
|
22
|
+
and stream a JSON object `{ "objective": "...", "summary": "...", "artifacts": [...], "changeRationales": [...], "changedFiles": [...] }` on stdin via a single-quoted heredoc (`<<'EOF'`).
|
|
23
23
|
|
|
24
24
|
After the command succeeds, report the new `MISSION_ID`.
|
|
25
25
|
|