overlord-cli 0.2608210739.0 → 0.2608211014.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.
Files changed (27) hide show
  1. package/dist/connectors/AGENTS.md +6 -5
  2. package/dist/connectors/VERSION +1 -1
  3. package/dist/connectors/adapters/antigravity/plugin.json +1 -1
  4. package/dist/connectors/adapters/claude/.claude-plugin/plugin.json +1 -1
  5. package/dist/connectors/adapters/claude/CAPABILITIES.md +6 -6
  6. package/dist/connectors/adapters/claude/README.md +2 -1
  7. package/dist/connectors/adapters/claude/conformance-manifest.yaml +1 -1
  8. package/dist/connectors/adapters/claude/harness-capabilities.yaml +13 -10
  9. package/dist/connectors/adapters/codex/.codex-plugin/plugin.json +1 -1
  10. package/dist/connectors/adapters/codex/CAPABILITIES.md +3 -3
  11. package/dist/connectors/adapters/codex/README.md +1 -1
  12. package/dist/connectors/adapters/codex/conformance-manifest.yaml +1 -1
  13. package/dist/connectors/adapters/codex/harness-capabilities.yaml +4 -2
  14. package/dist/connectors/adapters/cursor/.cursor-plugin/plugin.json +1 -1
  15. package/dist/connectors/adapters/cursor/CAPABILITIES.md +2 -2
  16. package/dist/connectors/adapters/cursor/README.md +2 -2
  17. package/dist/connectors/adapters/cursor/conformance-manifest.yaml +1 -1
  18. package/dist/connectors/adapters/cursor/harness-capabilities.yaml +3 -2
  19. package/dist/connectors/adapters/pi/CAPABILITIES.md +2 -2
  20. package/dist/connectors/adapters/pi/conformance-manifest.yaml +1 -1
  21. package/dist/connectors/adapters/pi/harness-capabilities.yaml +2 -1
  22. package/dist/connectors/core/overlord-mission/reference/cli.md +1 -1
  23. package/dist/connectors/core/overlord-mission/reference/mcp.md +2 -2
  24. package/dist/connectors/core/scripts/overlord-mcp.mjs +215 -2
  25. package/dist/index.js +1076 -1343
  26. package/dist/index.js.map +4 -4
  27. package/package.json +1 -1
@@ -80,11 +80,12 @@ stale. `yarn connectors:check` runs it alongside the connector version check.
80
80
 
81
81
  ### The rendered agent-session hook
82
82
 
83
- Mechanical observe / decide / inject is **not a live Overlord connector path**. Latch owns
84
- turns, tools, `awaiting_input`, and PTY answers via `latch events` and `latch send`. New
85
- adapters must not register `ovld agent-session` hooks. Channel 1 stays on `ovld protocol`
86
- (follow-up capture, touched-file attribution, Stop delivery reminder). The rest of this
87
- section documents leftover CLI runtime and historical fixtures.
83
+ Mechanical observe / decide / inject is **not a live Overlord connector path**. Latch v2
84
+ removed the CLI event and send surface that previously backed it, and Overlord does not
85
+ emulate that protocol. New adapters must not register `ovld agent-session` hooks. Channel 1
86
+ stays on `ovld protocol` (follow-up capture, touched-file attribution, Stop delivery reminder).
87
+ A future conversation surface must be a native Latch v2 Conversation Hub client. The rest of
88
+ this section documents leftover CLI runtime and historical fixtures.
88
89
 
89
90
  Do not write a per-adapter shell script for agent-session traffic. One core script,
90
91
  `connectors/core/scripts/agent-session-hook.sh`, is rendered per adapter at `ovld agent-setup`
@@ -1 +1 @@
1
- 0.3.32
1
+ 0.3.33
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://antigravity.google/schemas/v1/plugin.json",
3
3
  "name": "overlord",
4
- "version": "0.3.32",
4
+ "version": "0.3.33",
5
5
  "description": "Chat-driven access to Overlord mission protocol workflows through skills and MCP.",
6
6
  "author": {
7
7
  "name": "Cooperativ",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord",
3
- "version": "0.3.32",
3
+ "version": "0.3.33",
4
4
  "description": "Overlord mission protocol workflow for Claude Code — attach/update/ask/deliver, slash commands, and hook-driven activity capture.",
5
5
  "author": {
6
6
  "name": "Cooperativ",
@@ -6,7 +6,7 @@
6
6
 
7
7
  **Harness version verified** `2.1.227` · **range** `>=2.1.0` · **scheme** `semver`
8
8
 
9
- **Descriptor digest** `833a35cecb73aa9b34b40036eb6d3088dd729ca6be465d1ee228dae2c5a8269d`
9
+ **Descriptor digest** `15ea657c37363b74db085466a97f38db044892abf2e28465b1c7bcd6cc4ce927`
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
@@ -63,15 +63,15 @@ Per-command `timeout` in seconds with no documented ceiling. Omitting `decision`
63
63
 
64
64
  ### Capability notes
65
65
 
66
- - **`observe.prompt`** — Two registrations used to ride UserPromptSubmit. Mechanical agent-session observation moved to Latch `events`. This capability grades the protocol follow-up hook that posts `user_follow_up` mission events; that Channel 1 path stays installed.
66
+ - **`observe.prompt`** — Two registrations used to ride UserPromptSubmit. Latch v2 removed the CLI event stream that previously owned mechanical agent-session observation. This capability grades the protocol follow-up hook that posts `user_follow_up` mission events; that Channel 1 path stays installed.
67
67
  - **`observe.toolCall`** — Deliberately unregistered in Phase 1. PreToolUse is decision-capable: registering it for observation alone would put a script in front of every tool call for no benefit a PostToolUse registration does not already provide, while inheriting the blast radius of the decision path. It lands with the codecs that can actually use it.
68
- - **`observe.toolResult`** — Mechanical tool-result observation moved to Latch `events`. The protocol PostToolUse hook still records touched files for delivery attribution.
68
+ - **`observe.toolResult`** — Latch v2 removed the CLI event stream that previously owned mechanical tool-result observation. The protocol PostToolUse hook still records touched files for delivery attribution.
69
69
  - **`observe.fileEdit`** — The shipped PostToolUse hook that records touched files into the per-session log used by `deliver` for change attribution remains registered. Mechanical agent-session observation is no longer a live Overlord path.
70
- - **`observe.sessionLifecycle`** — SessionStart observation moved to Latch `events`. There is no matching Overlord registration.
71
- - **`decide.universal`** — Remote permission decisions moved to Latch `awaiting_input` / `latch send --resolve`. The native Claude prompt owns approvals when Latch is absent.
70
+ - **`observe.sessionLifecycle`** — Latch v2 removed the CLI event stream that previously owned session observation. There is no matching Overlord registration.
71
+ - **`decide.universal`** — Latch v2 removed the CLI pending-input and send surface. The native Claude prompt owns approvals; Overlord exposes no remote decision control.
72
72
  - **`answer.structuredQuestion`** — Elicitation/ElicitationResult hook events exist in the binary but their request and response shapes were not read. Write the fixture before relying on them.
73
73
  - **`answer.persistentAllow`** — Structurally available, deliberately unbuilt. A standing permission grant needs its own design, confirmation, audit language, and RBAC review before any remote surface offers it.
74
- - **`inject.midTurn`** — Session-input injection moved off Overlord connectors. Latch PTY write is Phase 3.
74
+ - **`inject.midTurn`** — Session-input injection is not a live Overlord connector path. A future conversation surface must use the native Latch v2 Conversation Hub protocol.
75
75
  - **`inject.turnBoundary`** — Turn-boundary injection moved off Overlord connectors. The protocol Stop hook still reminds the agent to deliver when needed.
76
76
  - **`inject.nextTurn`** — No distinct next-turn-only path yet; turn-boundary Stop covers the portable fallback.
77
77
  - **`terminal.statusSurface`** — `statusMessage` is static install-time configuration with no per-request interpolation and no session-binding predicate, so it renders in unbound sessions too. It must be worded as an option, never as an instruction.
@@ -87,7 +87,8 @@ This connector is intentionally reviewable against the four connector layers in
87
87
  - `commands/*.md` — slash commands for session routing, objective discussion, mission creation, and work recording.
88
88
  - `hooks/hooks.json` + `scripts/*.sh` — Channel 1 mission follow-up (`UserPromptSubmit`),
89
89
  touched-file capture (`PostToolUse`), and Stop delivery reminder. Mechanical harness
90
- observation, permission, and injection are Latch's (`latch events` / PTY).
90
+ observation, permission, and injection are not live Overlord connector paths under Latch v2;
91
+ native Claude prompts retain control.
91
92
  - `userConfig` for `overlord_url` and `user_token`; the hook scripts use the `ovld protocol` CLI and pass the plugin's USER_TOKEN to that CLI as `Overlord_USER_TOKEN`.
92
93
  - `conformance-manifest.yaml` — connector conformance declaration for the Overlord contract.
93
94
  - `prompt-wrapper.md` — Claude launch context-file guidance.
@@ -15,7 +15,7 @@ connector:
15
15
  harnessCapabilities:
16
16
  path: connectors/adapters/claude/harness-capabilities.yaml
17
17
  schemaVersion: 1
18
- digest: "833a35cecb73aa9b34b40036eb6d3088dd729ca6be465d1ee228dae2c5a8269d"
18
+ digest: "15ea657c37363b74db085466a97f38db044892abf2e28465b1c7bcd6cc4ce927"
19
19
  capabilities:
20
20
  - followUpHook
21
21
  - permissionHook
@@ -50,9 +50,10 @@ capabilities:
50
50
  native: UserPromptSubmit
51
51
  fixtures: [fixtures/normalize-user-prompt-submit.json]
52
52
  notes: >-
53
- Two registrations used to ride UserPromptSubmit. Mechanical agent-session observation
54
- moved to Latch `events`. This capability grades the protocol follow-up hook that posts
55
- `user_follow_up` mission events; that Channel 1 path stays installed.
53
+ Two registrations used to ride UserPromptSubmit. Latch v2 removed the CLI event stream
54
+ that previously owned mechanical agent-session observation. This capability grades the
55
+ protocol follow-up hook that posts `user_follow_up` mission events; that Channel 1 path
56
+ stays installed.
56
57
  observe.toolCall:
57
58
  status: not-implemented
58
59
  native: PreToolUse
@@ -67,8 +68,9 @@ capabilities:
67
68
  native: PostToolUse
68
69
  trackedAs: latch-engine
69
70
  notes: >-
70
- Mechanical tool-result observation moved to Latch `events`. The protocol PostToolUse
71
- hook still records touched files for delivery attribution.
71
+ Latch v2 removed the CLI event stream that previously owned mechanical tool-result
72
+ observation. The protocol PostToolUse hook still records touched files for delivery
73
+ attribution.
72
74
  observe.fileEdit:
73
75
  status: supported
74
76
  native: PostToolUse
@@ -84,8 +86,8 @@ capabilities:
84
86
  native: SessionStart
85
87
  trackedAs: latch-engine
86
88
  notes: >-
87
- SessionStart observation moved to Latch `events`. There is no matching Overlord
88
- registration.
89
+ Latch v2 removed the CLI event stream that previously owned session observation. There
90
+ is no matching Overlord registration.
89
91
  decide.shell:
90
92
  status: not-implemented
91
93
  native: PermissionRequest
@@ -107,8 +109,8 @@ capabilities:
107
109
  native: PermissionRequest
108
110
  trackedAs: latch-engine
109
111
  notes: >-
110
- Remote permission decisions moved to Latch `awaiting_input` / `latch send --resolve`.
111
- The native Claude prompt owns approvals when Latch is absent.
112
+ Latch v2 removed the CLI pending-input and send surface. The native Claude prompt owns
113
+ approvals; Overlord exposes no remote decision control.
112
114
  answer.structuredQuestion:
113
115
  status: unverified
114
116
  native: Elicitation
@@ -128,7 +130,8 @@ capabilities:
128
130
  native: asyncRewake
129
131
  trackedAs: latch-engine
130
132
  notes: >-
131
- Session-input injection moved off Overlord connectors. Latch PTY write is Phase 3.
133
+ Session-input injection is not a live Overlord connector path. A future conversation
134
+ surface must use the native Latch v2 Conversation Hub protocol.
132
135
  inject.turnBoundary:
133
136
  status: not-implemented
134
137
  native: Stop
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord",
3
- "version": "0.3.32",
3
+ "version": "0.3.33",
4
4
  "description": "Chat-driven access to Overlord mission protocol workflows with hook-driven activity capture.",
5
5
  "author": {
6
6
  "name": "Cooperativ",
@@ -6,7 +6,7 @@
6
6
 
7
7
  **Harness version verified** `0.147.0` · **range** `>=0.124.0` · **scheme** `semver`
8
8
 
9
- **Descriptor digest** `ede31118a90f1afc3d8e934b7fd921759faac4afca1a08e4214a1104ee487b1d`
9
+ **Descriptor digest** `9743c504d8d11ffec193751273102d9a1277293e55f43aef8914da4b05ddfa23`
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
@@ -64,9 +64,9 @@ Per-hook timeouts in seconds; the documentation gives a 600-second default. The
64
64
 
65
65
  ### Capability notes
66
66
 
67
- - **`observe.toolCall`** — Mechanical PreToolUse observation moved to Latch `events`.
67
+ - **`observe.toolCall`** — Latch v2 removed the CLI event stream that previously owned mechanical observation. Overlord exposes no replacement until it has a native Conversation Hub client.
68
68
  - **`observe.fileEdit`** — The lifecycle PostToolUse registration pipes Codex's native payload to `ovld protocol record-touched`, which appends normalized changed paths to the per-session attribution log read by `deliver`. It is intentionally separate from mechanical agent-session observation, which remains owned by Latch.
69
- - **`decide.universal`** — Remote permission decisions moved to Latch `awaiting_input` / `latch send --resolve`.
69
+ - **`decide.universal`** — Latch v2 removed the CLI pending-input and send surface. The native Codex prompt owns approvals; Overlord exposes no remote decision control.
70
70
  - **`answer.structuredQuestion`** — `codex app-server` exposes ToolRequestUserInput with per-option label/description and an autoResolutionMs — an ACP-shaped structured question in everything but name. It is unreachable until the single-subscriber question is settled.
71
71
  - **`inject.midTurn`** — ThreadInjectItems/TurnSteer exist on the experimental app-server surface only. The binary carries "expected exactly one client subscribed to the thread, found {}", so if the TUI is that one client Overlord cannot also subscribe and this path is closed.
72
72
 
@@ -72,7 +72,7 @@ This connector is intentionally reviewable against the four connector layers in
72
72
  - `.codex-plugin/hooks.json` — Channel 1 `UserPromptSubmit` follow-up capture through
73
73
  `ovld protocol hook-event` and `PostToolUse` delivery attribution through
74
74
  `ovld protocol record-touched`. Mechanical harness observation, permission, and injection
75
- are Latch's (`latch events` / PTY), not Overlord connector registrations.
75
+ are not live Overlord connector paths under Latch v2; native Codex prompts retain control.
76
76
  - `.mcp.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.
77
77
  - `assets/` — branded plugin assets for Codex install surfaces.
78
78
  - `conformance-manifest.yaml` — connector conformance declaration for the Overlord contract.
@@ -15,7 +15,7 @@ connector:
15
15
  harnessCapabilities:
16
16
  path: connectors/adapters/codex/harness-capabilities.yaml
17
17
  schemaVersion: 1
18
- digest: "ede31118a90f1afc3d8e934b7fd921759faac4afca1a08e4214a1104ee487b1d"
18
+ digest: "9743c504d8d11ffec193751273102d9a1277293e55f43aef8914da4b05ddfa23"
19
19
  capabilities:
20
20
  - followUpHook
21
21
  - permissionHook
@@ -56,7 +56,8 @@ capabilities:
56
56
  native: PreToolUse
57
57
  trackedAs: latch-engine
58
58
  notes: >-
59
- Mechanical PreToolUse observation moved to Latch `events`.
59
+ Latch v2 removed the CLI event stream that previously owned mechanical observation.
60
+ Overlord exposes no replacement until it has a native Conversation Hub client.
60
61
  observe.toolResult:
61
62
  status: not-implemented
62
63
  native: PostToolUse
@@ -98,7 +99,8 @@ capabilities:
98
99
  native: PermissionRequest
99
100
  trackedAs: latch-engine
100
101
  notes: >-
101
- Remote permission decisions moved to Latch `awaiting_input` / `latch send --resolve`.
102
+ Latch v2 removed the CLI pending-input and send surface. The native Codex prompt owns
103
+ approvals; Overlord exposes no remote decision control.
102
104
  answer.structuredQuestion:
103
105
  status: unverified
104
106
  native: ToolRequestUserInput
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord",
3
- "version": "0.3.32",
3
+ "version": "0.3.33",
4
4
  "description": "Overlord mission protocol workflow for Cursor — attach/update/ask/deliver, slash commands, MCP bridge, and follow-up capture.",
5
5
  "author": {
6
6
  "name": "Cooperativ",
@@ -6,7 +6,7 @@
6
6
 
7
7
  **Harness version verified** `2026.08.04-aaa8809` · **range** `>=2026.07.01` · **scheme** `calendar`
8
8
 
9
- **Descriptor digest** `7085c25291f5c96cf3c7fb9c280281fa698b5c026e9859377ad8c53d1cd82537`
9
+ **Descriptor digest** `48b805b1d1cd28ccde10a839b0eb2a85eb237d82b46e3d54b21f671997b0c870`
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
@@ -65,7 +65,7 @@ The 60-second per-script default is an order of magnitude below any window sized
65
65
 
66
66
  ### Capability notes
67
67
 
68
- - **`observe.toolCall`** — Mechanical preToolUse observation moved to Latch `events`. Native Cursor permission prompts own approvals when Latch is absent.
68
+ - **`observe.toolCall`** — Latch v2 removed the CLI event stream that previously owned mechanical observation. Native Cursor permission prompts own approvals; Overlord exposes no replacement until it has a native Conversation Hub client.
69
69
  - **`observe.fileEdit`** — Carried on postToolUse rather than on Cursor's dedicated `afterFileEdit`, for the same reason Claude carries it on PostToolUse: one registration then covers every mutation, including the ones a shell command makes, and the split into `file.edited` happens where the normalized tool name is already known. `afterFileEdit` remains available if a future need appears for edit-level granularity the tool-level event cannot express.
70
70
  - **`observe.sessionLifecycle`** — Cursor fires the event, but no shipped code in this repo has ever read one of its payloads, so the field carrying the equivalent of Claude's `source` is unknown. A codec rule on a guessed path would not fail loudly — an unresolved path yields a card with no detail — so this stays unbuilt until a real payload is recorded, rather than being claimed on an assumed field name.
71
71
  - **`inject.turnBoundary`** — `stop` returns `followup_message` for the protocol delivery reminder. Session-input injection is no longer a live Overlord path.
@@ -77,7 +77,7 @@ This connector is intentionally reviewable against the four connector layers in
77
77
  - `commands/*.md` — slash commands for session routing, objective discussion, mission creation, and work recording.
78
78
  - `hooks/overlord-user-prompt-submit.sh` — `beforeSubmitPrompt` follow-up capture through `ovld protocol hook-event`.
79
79
  - `hooks/overlord-post-tool-use.sh` — records `postToolUse` file edits and shell-mediated changes for exact per-session delivery attribution.
80
- - `hooks/overlord-stop.sh` — checks pending delivery through `ovld protocol hook-event`; when needed, it asks Cursor to continue once so the agent can finish delivery. Mechanical harness observation, permission, and injection are Latch's (`latch events` / PTY), not Overlord connector registrations.
80
+ - `hooks/overlord-stop.sh` — checks pending delivery through `ovld protocol hook-event`; when needed, it asks Cursor to continue once so the agent can finish delivery. Mechanical harness observation, permission, and injection are not live Overlord connector paths under Latch v2; native Cursor prompts retain control.
81
81
  - `rules/overlord-local.mdc` — always-on workflow rules for Cursor sessions.
82
82
  - `mcp.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.
83
83
  - `conformance-manifest.yaml` — connector conformance declaration for the Overlord contract.
@@ -92,4 +92,4 @@ The shared Connector Core source lives at `connectors/core/overlord-mission`. `o
92
92
 
93
93
  See the [adapter capability matrix](../../README.md#adapter-capability-matrix) for how this compares across adapters.
94
94
 
95
- Cursor hook execution is fail-open by default, so Overlord protocol-hook failures do not strand the agent. Permission and question prompts are Latch `awaiting_input` when Latch hosts the session.
95
+ Cursor hook execution is fail-open by default, so Overlord protocol-hook failures do not strand the agent. Permission and question prompts remain with Cursor; Overlord has no Latch v2 conversation client yet.
@@ -15,7 +15,7 @@ connector:
15
15
  harnessCapabilities:
16
16
  path: connectors/adapters/cursor/harness-capabilities.yaml
17
17
  schemaVersion: 1
18
- digest: "7085c25291f5c96cf3c7fb9c280281fa698b5c026e9859377ad8c53d1cd82537"
18
+ digest: "48b805b1d1cd28ccde10a839b0eb2a85eb237d82b46e3d54b21f671997b0c870"
19
19
  capabilities:
20
20
  - followUpHook
21
21
  - stopHook
@@ -58,8 +58,9 @@ capabilities:
58
58
  native: preToolUse
59
59
  trackedAs: latch-engine
60
60
  notes: >-
61
- Mechanical preToolUse observation moved to Latch `events`. Native Cursor permission
62
- prompts own approvals when Latch is absent.
61
+ Latch v2 removed the CLI event stream that previously owned mechanical observation.
62
+ Native Cursor permission prompts own approvals; Overlord exposes no replacement until it
63
+ has a native Conversation Hub client.
63
64
  observe.toolResult:
64
65
  status: supported
65
66
  native: postToolUse
@@ -6,7 +6,7 @@
6
6
 
7
7
  **Harness version verified** `0.83.0` · **range** `>=0.83.0 <0.84.0` · **scheme** `semver`
8
8
 
9
- **Descriptor digest** `d083b9610578e1af2e73b273d0661430213fbbe5ff24550e8f0815c284733ae1`
9
+ **Descriptor digest** `0166eb18d8913ea41704d3aa9afbf9164d994ae16089927e38f681be5dd005ff`
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
@@ -64,7 +64,7 @@ Remote decision hold moved to Latch. Pi has no native prompt; Overlord no longer
64
64
 
65
65
  - **`observe.prompt`** — The shipped extension captures `input` and posts follow-up activity through `ovld protocol hook-event`. Mechanical agent-session observation is not a live path.
66
66
  - **`decide.universal`** — Remote tool-call decisions moved to Latch. Pi no longer intercepts tools on the Overlord connector path.
67
- - **`inject.midTurn`** — Session-input injection moved off the Overlord connector. Latch PTY write is Phase 3.
67
+ - **`inject.midTurn`** — Session-input injection is not a live Overlord connector path. A future conversation surface must use the native Latch v2 Conversation Hub protocol.
68
68
 
69
69
  ## Hazards
70
70
 
@@ -15,7 +15,7 @@ connector:
15
15
  harnessCapabilities:
16
16
  path: connectors/adapters/pi/harness-capabilities.yaml
17
17
  schemaVersion: 1
18
- digest: "d083b9610578e1af2e73b273d0661430213fbbe5ff24550e8f0815c284733ae1"
18
+ digest: "0166eb18d8913ea41704d3aa9afbf9164d994ae16089927e38f681be5dd005ff"
19
19
  capabilities:
20
20
  - followUpHook
21
21
  - nativeResume
@@ -103,7 +103,8 @@ capabilities:
103
103
  native: sendUserMessage(deliverAs=steer)
104
104
  trackedAs: latch-engine
105
105
  notes: >-
106
- Session-input injection moved off the Overlord connector. Latch PTY write is Phase 3.
106
+ Session-input injection is not a live Overlord connector path. A future conversation
107
+ surface must use the native Latch v2 Conversation Hub protocol.
107
108
  inject.turnBoundary:
108
109
  status: not-implemented
109
110
  native: sendUserMessage(deliverAs=followUp)
@@ -181,7 +181,7 @@ When creating missions from within a repository:
181
181
  - Add objectives to the same mission when each prompt is a sequential step toward the same feature or goal; use `ovld protocol add-objectives --mission-id <mission_id> --objectives-json '[{"objective":"..."}]'`.
182
182
  - `create` and `prompt` require `--objectives-json` or `--objectives-file` with an ordered array of `{ "objective": "...", "title": "...", "autoAdvance": true }` objects. A single objective is just an array with one item. `--auto-advance` / `--no-auto-advance` map each opted-in item to authoritative Run Queue membership (default off).
183
183
  - `add-objectives` uses the same per-item `autoAdvance` field and `--auto-advance` / `--no-auto-advance` mapping.
184
- - Use `ovld protocol queue-objective --objective-id <id> [--queue <id|name>] [--after <queued-entry|objective>|--front|--position <rank>]` to explicitly enqueue or move work, `dequeue-objective --objective-id <id>` to remove it, and `run-queue --project-id <id|slug|name>` to inspect every queue.
184
+ - Use `ovld protocol run-queue [--project-id <id|slug|name>|--objective-id <id>|--mission-id <id>] [--queue <id|name>]` to inspect live queues. Entry operations use `queue-objective --objective-id <id> [--queue <id|name>] [--after <queued-entry|objective>|--front|--position <rank>]`, `dequeue-objective --objective-id <id>`, and `reorder-run-queue --queue <id|name> --ordered-entries-json <json>`; they require `execution_request:create`. Queue-definition operations use `create-run-queue`, `update-run-queue`, `delete-run-queue`, and `reorder-project-run-queues`; they require `project:update` and therefore a full-scope token.
185
185
  - `ovld protocol update-objective --objective-id <id> --auto-advance` / `--no-auto-advance` is retained as an enqueue/dequeue compatibility mapping. `autoAdvance` is deprecated and derived from `queueEntry`; legacy writes retire next release and column removal requires a later contract bump.
186
186
  - `record-work` creates exactly one **completed** objective from a single `--objective` (or positional / an `objective` field in `--payload-json`) plus a `--summary` and file-change data — it does not take `--objectives-json`. See [record-work.md](record-work.md).
187
187
 
@@ -1,6 +1,6 @@
1
1
  # MCP And API Defaults
2
2
 
3
- - Every mission-scoped tool accepts `objectiveId` (hosted MCP) / `objective_id` (local shim) alongside `missionId`, taking an objective UUID or a display id such as `coo:756.k7xm`. A display id already names its mission, so `missionId` is **optional** whenever one is supplied — `overlord_load_mission_context`, `overlord_attach_session`, `overlord_update_session`, `overlord_deliver_session`, `overlord_add_artifact`, `overlord_add_objectives`, and `overlord_update_artifact` all resolve the mission from it. An objective **UUID** names no mission and still needs `missionId`. On `overlord_load_mission_context` and `overlord_attach_session` the objective is also a *pin*: it selects which objective to read or execute, which is the only way to address a mission that is running objectives in parallel.
3
+ - Every mission-scoped tool accepts `objectiveId` (hosted MCP) / `objective_id` (local shim) alongside `missionId`, taking an objective UUID or a display id such as `coo:756.k7xm`. A display id already names its mission, so `missionId` is **optional** whenever one is supplied — `overlord_load_mission_context`, `overlord_attach_session`, `overlord_update_session`, `overlord_deliver_session`, `overlord_add_artifact`, `overlord_add_objectives`, and `overlord_update_artifact` all resolve the mission from it. An objective **UUID** names no mission and still needs `missionId`. On `overlord_load_mission_context` and `overlord_attach_session` the objective is also a _pin_: it selects which objective to read or execute, which is the only way to address a mission that is running objectives in parallel.
4
4
  - API requires `agentIdentifier` and `connectionMethod` on attach/connect/prompt. Connector adapters set the appropriate agent identifier; the CLI uses `cli` as the connection method, and the MCP tool defaults to `mcp`. Override with `--agent` / `--method` when calling from a different runtime.
5
5
  - Hosted Overlord MCP (`/mcp`) uses camelCase JSON keys (`missionId`, `sessionKey`, `deviceFingerprint`) matching `POST /api/protocol/*` bodies. The local shim uses snake_case keys mapped to CLI flags (`mission_id`, `session_key`, `device_fingerprint`). Some local-only operations (`connect`, `revert`, `prompt`, runner queue tools) intentionally remain out of hosted MCP for now.
6
6
  - `discover_project` accepts an explicit project id (`projectId` hosted, `project_id` local shim) or a working directory (`workingDirectory` hosted, `working_directory` local shim). When resolving by directory and a device fingerprint is available, include `deviceFingerprint` / `device_fingerprint` so resource-directory matching prefers the current device.
@@ -10,6 +10,6 @@
10
10
  - `overlord_record_work` (hosted MCP) and `ovld protocol record-work` (CLI) record already-completed chat work as a single review-column mission with a completed objective, file-change rationales, and the standard Gemini delivery summary — no `attach`/`deliver`. Hosted MCP requires `projectId` (it never chooses a project implicitly); the CLI resolves the project from the working directory or `--project-id`. The submission format is in [record-work.md](record-work.md). The route is `POST /api/protocol/record-work`.
11
11
  - `overlord_add_artifact` (hosted MCP) and `ovld protocol add-artifact` (CLI) create a mission artifact during a turn without delivering. Required: `type` / `--type`, `label` / `--label`, mission scope (`missionId` / `--mission-id`, or an objective display id as `objectiveId` / `--objective-id`), plus at least one of `contentText` / `--content-text`/`--content-text-file` or `externalUrl` / `--external-url`. Optional `sessionKey` / `--session-key` stamps session/objective provenance; `objectiveId` / `--objective-id` does the same when there is no live session, and the session key wins if both are given. Same service as REST `POST /api/missions/:id/artifacts`. The route is `POST /api/protocol/add-artifact`.
12
12
  - `overlord_update_artifact` (hosted MCP) and `ovld protocol update-artifact` (CLI) revise an existing mission artifact's label, Markdown content, and/or HTTP(S) URL in place. Required: `artifactId` / `--artifact-id`, `expectedRevision` / `--expected-revision`, and mission scope (`missionId` / `--mission-id`, or an objective display id as `objectiveId` / `--objective-id`). Provide at least one editable field. No session key is required. Same service as REST `PATCH /api/missions/:id/artifacts/:artifactId`. The route is `POST /api/protocol/update-artifact`.
13
- - `overlord_queue_objective` accepts `objectiveId`, optional `queue` / `after`, and `remove`; it forwards through Protocol to authoritative Run Queue membership and never directly launches work. `overlord_create_mission` / `overlord_add_objectives` optional `autoAdvance`, `overlord_update_objective.autoAdvance`, and `ovld protocol update-objective --auto-advance|--no-auto-advance` map to that same membership. `autoAdvance` is deprecated and derived from `queueEntry`; legacy storage writes retire next release and column removal requires a later contract bump. Instruction text remains editable only in `draft` or `future` state. The routes are `POST /api/protocol/queue-objective`, `dequeue-objective`, and `update-objective`.
13
+ - Run Queue MCP stays a thin Protocol surface: `overlord_list_run_queues` reads compact/full state; `overlord_reorder_run_queue` atomically replaces one queue's complete entry order; and `overlord_queue_objective` accepts `objectiveId`, optional `queue` / `after` / `front` / `position`, and `remove`. `overlord_manage_run_queue` creates, updates, deletes, and reorders queue definitions. Entry operations use `execution_request:create`; definition operations use `project:update`, so they require a full-scope token. `overlord_create_mission` / `overlord_add_objectives` optional `autoAdvance`, `overlord_update_objective.autoAdvance`, and `ovld protocol update-objective --auto-advance|--no-auto-advance` map to that same membership. `autoAdvance` is deprecated and derived from `queueEntry`; legacy storage writes retire next release and column removal requires a later contract bump. Instruction text remains editable only in `draft` or `future` state. The routes are `POST /api/protocol/run-queue`, `reorder-run-queue`, `queue-objective`, `dequeue-objective`, `create-run-queue`, `update-run-queue`, `delete-run-queue`, `reorder-project-run-queues`, and `update-objective`.
14
14
  - Objective attachment tools follow the `<verb>_<noun>` MCP naming: `list_attachments`, `prepare_attachment_upload`, `finalize_attachment_upload`, `get_attachment_download_url`, `upload_attachment_file`. CLI commands use `attachment-*`. `mission_id` / `missionId` is optional for attachment calls when the objective or attachment id lets the server derive mission scope.
15
15
  - "Artifacts" may be published mid-turn with `add-artifact` / `overlord_add_artifact`, revised with `update-artifact` / `overlord_update_artifact`, or attached at `deliver` time (next_steps, test_results, migration, decision, note, url) — not user-uploaded files. Files attached by users live on objectives via the attachment tools above.