overlord-cli 0.2609091647.0 → 0.2609150845.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.
@@ -1 +1 @@
1
- 0.3.44
1
+ 0.3.46
@@ -1,4 +1,4 @@
1
- contractVersion: "139"
1
+ contractVersion: "142"
2
2
  componentType: connector
3
3
  componentKey: antigravity
4
4
  label: "Antigravity Connector"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://antigravity.google/schemas/v1/plugin.json",
3
3
  "name": "overlord",
4
- "version": "0.3.44",
4
+ "version": "0.3.46",
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.44",
3
+ "version": "0.3.46",
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",
@@ -1,4 +1,4 @@
1
- contractVersion: "139"
1
+ contractVersion: "142"
2
2
  componentType: connector
3
3
  componentKey: claude
4
4
  label: "Claude Code Connector"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord",
3
- "version": "0.3.44",
3
+ "version": "0.3.46",
4
4
  "description": "Chat-driven access to Overlord mission protocol workflows with hook-driven activity capture.",
5
5
  "author": {
6
6
  "name": "Cooperativ",
@@ -1,4 +1,4 @@
1
- contractVersion: "139"
1
+ contractVersion: "142"
2
2
  componentType: connector
3
3
  componentKey: codex
4
4
  label: "Codex Connector"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord",
3
- "version": "0.3.44",
3
+ "version": "0.3.46",
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",
@@ -1,4 +1,4 @@
1
- contractVersion: "139"
1
+ contractVersion: "142"
2
2
  componentType: connector
3
3
  componentKey: cursor
4
4
  label: "Cursor Connector"
@@ -1,4 +1,4 @@
1
- contractVersion: "139"
1
+ contractVersion: "142"
2
2
  componentType: connector
3
3
  componentKey: opencode
4
4
  label: "OpenCode Connector"
@@ -1,4 +1,4 @@
1
- contractVersion: "139"
1
+ contractVersion: "142"
2
2
  componentType: connector
3
3
  componentKey: pi
4
4
  label: "PI Connector"
@@ -33,7 +33,12 @@ never include Git operations or routine review/testing. Every human action needs
33
33
  and `category`; add `command`, `verify`, and `link` whenever they exist so the operator can act
34
34
  without re-reading the delivery (see **Delivery Evidence** below). Tradeoffs record the
35
35
  implementation decision, alternatives considered, and rationale. Each `deferredWork` item
36
- should name the component or file involved and say why the work was left. These fields improve
36
+ must be a recommended new objective that is not part of this mission (for example a bug
37
+ discovered here that belongs outside it). Name the component or file involved and say why
38
+ the work was left. Never list work already covered by this mission's future objectives,
39
+ leftover slices of the current objective (add an objective to this mission instead), or
40
+ human implementation follow-up such as deploy, secrets, or migrations (those belong in
41
+ `humanActions`). Use an empty array when nothing qualifies. These fields improve
37
42
  review visibility but never block delivery.
38
43
 
39
44
  For full command syntax, flags, phase values, and event types see **CLI Command Reference** below.
@@ -77,9 +82,9 @@ Do not attach to a mission just because it was mentioned or opened in conversati
77
82
 
78
83
  Use this mode when the conversation starts normally and the user asks the agent to create, inspect, connect to, or otherwise use Overlord.
79
84
 
80
- 1. If the user wants to create missions (and does not ask to start execution), run `ovld protocol create --agent <agent-identifier> --objectives-json '[{"objective":"..."}]'`.
85
+ 1. If the user wants to create missions (and does not ask to start execution), resolve the intended project and run `ovld protocol create --project-id <project-id> --agent <agent-identifier> --objectives-json '[{"objective":"..."}]'`.
81
86
  - When `--session-key` and `--mission-id` are provided, it creates a follow-up draft.
82
- - When session flags are omitted, it resolves the project by matching current working directory (or `--working-directory`) to Overlord project resource directories, then creates a standalone draft.
87
+ - Creation never infers a project. If the user explicitly asks to capture work outside every project, use `--unassigned-to-project`; otherwise resolve a project first with `ovld protocol discover-project` and pass its id.
83
88
  - Pass multiple items in `--objectives-json` when creating ordered steps for the same feature or goal.
84
89
  - If the user wants to **add more objectives to an existing mission** (not create a new mission), use `ovld protocol add-objectives --mission-id <mission_id> --objectives-json '[{"objective":"..."}]'` instead.
85
90
  2. Default to `create` for new missions. Only use `ovld protocol prompt --agent <agent-identifier> --objectives-json '[{"objective":"..."}]'` when the user explicitly asks to create and execute immediately.
@@ -90,7 +95,7 @@ Use this mode when the conversation starts normally and the user asks the agent
90
95
  5. If the user wants to establish a persistent session with a mission by ID, run `ovld protocol attach --mission-id <mission_id>`.
91
96
  6. If the user wants to find a mission but does not know the ID, run `ovld protocol search-missions --query "..." --status execute,review` and ask the user to confirm.
92
97
  7. If you need to understand project routing before prompting, use `ovld protocol discover-project`.
93
- 8. If the user wants to **record work that is already finished** in this chat (for example, something you just built in a chat app) as a completed mission, run `ovld protocol record-work` (or the hosted `overlord_record_work` MCP tool). This creates a mission with one completed objective, records explicitly supplied changed files and optional rationales, lands it in the review column, and runs the standard Gemini delivery summary — all in one call, with no `attach`/`deliver`. Do **not** use it for in-progress work. The exact submission format is in [reference/record-work.md](reference/record-work.md).
98
+ 8. If the user wants to **record work that is already finished** in this chat (for example, something you just built in a chat app) as a completed mission, run `ovld protocol record-work --project-id <project-id>` (or the hosted `overlord_record_work` MCP tool). This creates a mission with one completed objective, records explicitly supplied changed files and optional rationales, lands it in the review column, and runs the standard Gemini delivery summary — all in one call, with no `attach`/`deliver`. Do **not** use it for in-progress work. The exact submission format is in [reference/record-work.md](reference/record-work.md).
94
99
  9. If you need other lifecycle commands or flags, run `ovld protocol help` and use the real subcommand list instead of guessing.
95
100
  10. Once you attach to a mission, switch back to Mode 1 and follow the full mission lifecycle.
96
101
 
@@ -207,23 +212,28 @@ Only list a human action when a person must perform a concrete non-Git step outs
207
212
  agent's completed work (for example, add a secret, run a production migration, deploy, or
208
213
  configure an external integration). Never list committing, pushing, opening a pull request,
209
214
  reviewing code, or ordinary tests. A tradeoff must state the decision, alternatives considered,
210
- and rationale. Each `deferredWork` item should name the component or file involved and say why
211
- the work was left. Omit the report when none of these facts apply.
215
+ and rationale. Each `deferredWork` item must be a recommended new objective that is not
216
+ part of this mission (for example a bug discovered here that belongs outside it). Name
217
+ the component or file involved and say why the work was left. Never list work already
218
+ covered by this mission's future objectives, leftover slices of the current objective
219
+ (add an objective to this mission instead), or human implementation follow-up such as
220
+ deploy, secrets, or migrations (those belong in `humanActions`). Use an empty array when
221
+ nothing qualifies. Omit the report when none of these facts apply.
212
222
 
213
223
  #### Writing a human action the operator can complete
214
224
 
215
225
  Human actions are collected across every mission into the Feed page's **Human actions** rail,
216
226
  where the operator reads them without the delivery context. Each item must stand alone:
217
227
 
218
- | Field | Expected | What to write |
219
- | ---------- | -------- | ---------------------------------------------------------------------------------------------- |
220
- | `action` | required | One imperative sentence naming the exact thing to do, where, and with what value. |
221
- | `reason` | expected | Why the step is needed and what breaks or stays incomplete until it is done. |
222
- | `category` | expected | `environment`, `database`, `deployment`, `codegen`, `packaging`, `external_service`, or `other`.|
223
- | `blocking` | optional | `true` when the delivered work does not function until this is done. |
228
+ | Field | Expected | What to write |
229
+ | ---------- | ---------- | ------------------------------------------------------------------------------------------------- |
230
+ | `action` | required | One imperative sentence naming the exact thing to do, where, and with what value. |
231
+ | `reason` | expected | Why the step is needed and what breaks or stays incomplete until it is done. |
232
+ | `category` | expected | `environment`, `database`, `deployment`, `codegen`, `packaging`, `external_service`, or `other`. |
233
+ | `blocking` | optional | `true` when the delivered work does not function until this is done. |
224
234
  | `command` | when known | The exact command, setting name, or value to apply, verbatim. Placeholders in `<angle brackets>`. |
225
- | `verify` | when known | How the operator confirms it worked: a command to run, a URL to open, or the state to observe. |
226
- | `link` | when known | An HTTP(S) URL or a repository-relative file path (never another URI scheme). |
235
+ | `verify` | when known | How the operator confirms it worked: a command to run, a URL to open, or the state to observe. |
236
+ | `link` | when known | An HTTP(S) URL or a repository-relative file path (never another URI scheme). |
227
237
 
228
238
  Vague (the operator has to rediscover everything):
229
239
 
@@ -323,8 +333,8 @@ When creating missions from within a repository:
323
333
 
324
334
  - Prefer `create` by default for draft mission creation.
325
335
  - Use `prompt` only when the user explicitly asks to start execution immediately.
326
- - Both commands can resolve the project from the current working directory; use `--working-directory` to override or `--project-id` to be explicit.
327
- - Follow-up `create` calls under an active session inherit the current mission's project by default, but `--project-id` can override that when the follow-up belongs in a different project.
336
+ - `create`, `prompt`, and `record-work` require an explicit `--project-id`; use `discover-project` first when the project is known only from the checkout. They never infer a destination project.
337
+ - Use `create --unassigned-to-project` only when the user deliberately requests an account-owned inbox capture. `--inbox` is a compatibility alias.
328
338
  - Create multiple missions when each prompt represents a different feature or goal.
329
339
  - 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":"..."}]'`.
330
340
  - `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` set the default when an item omits `autoAdvance` (default off).
@@ -335,17 +345,18 @@ When creating missions from within a repository:
335
345
  - `create`, `prompt`, `create-mission`, and `record-work` accept `--assigned-to <member>` to set the mission's human owner. Accepts a username, an email, a user-id UUID, or the `orgid:username` member ID. When omitted, the assignee defaults to the mission creator.
336
346
 
337
347
  ```bash
338
- ovld protocol create --agent <agent-identifier> --objectives-json '[{"objective":"Capture follow-up work from this repository"}]'
348
+ ovld protocol create --project-id <project-id> --agent <agent-identifier> --objectives-json '[{"objective":"Capture follow-up work from this repository"}]'
339
349
  ```
340
350
 
341
351
  ```bash
342
352
  # One call: a draft mission whose first objective is already assigned to Codex.
343
353
  ovld protocol create --agent <agent-identifier> \
354
+ --project-id <project-id> \
344
355
  --objectives-json '[{"objective":"Implement the API","agent":"codex","model":"gpt-5.6-terra"},{"objective":"Add CLI docs","agent":"claude"}]'
345
356
  ```
346
357
 
347
358
  ```bash
348
- ovld protocol prompt --agent <agent-identifier> --objectives-json '[{"objective":"Implement feature X"}]'
359
+ ovld protocol prompt --project-id <project-id> --agent <agent-identifier> --objectives-json '[{"objective":"Implement feature X"}]'
349
360
  ```
350
361
 
351
362
  ```bash
@@ -403,8 +414,8 @@ When you need a project ID for a protocol command and the mission prompt did not
403
414
  **Locally (CLI inside a shell on the user's machine):**
404
415
 
405
416
  1. `--project-id` if explicitly provided.
406
- 2. Otherwise, let the CLI match the current working directory (the default behavior of `create`, `prompt`, `discover-project`).
407
- 3. If working-directory resolution returns nothing, read `.overlord/project.json` from the cwd (or any ancestor you have access to). Select the `projects[]` entry with `isPrimary: true` and pass its id via `--project-id`. If the array or primary entry is missing, treat the metadata as invalid and run `ovld doctor`; do not fall back to a top-level projection. To associate missions with a different linked project, pass that project's id explicitly.
417
+ 2. Otherwise, run `ovld protocol discover-project` for the current working directory, then pass its returned id via `--project-id`.
418
+ 3. If discovery returns nothing, read `.overlord/project.json` from the cwd (or any ancestor you have access to). Select the `projects[]` entry with `isPrimary: true` and pass its id via `--project-id`. If the array or primary entry is missing, treat the metadata as invalid and run `ovld doctor`; do not fall back to a top-level projection. To associate missions with a different linked project, pass that project's id explicitly.
408
419
 
409
420
  **Over MCP (web agents and hosted tools, where the server cannot see the agent's cwd):**
410
421
 
@@ -175,8 +175,8 @@ When creating missions from within a repository:
175
175
 
176
176
  - Prefer `create` by default for draft mission creation.
177
177
  - Use `prompt` only when the user explicitly asks to start execution immediately.
178
- - Both commands can resolve the project from the current working directory; use `--working-directory` to override or `--project-id` to be explicit.
179
- - Follow-up `create` calls under an active session inherit the current mission's project by default, but `--project-id` can override that when the follow-up belongs in a different project.
178
+ - `create`, `prompt`, and `record-work` require an explicit `--project-id`; use `discover-project` first when the project is known only from the checkout. They never infer a destination project.
179
+ - Use `create --unassigned-to-project` only when the user deliberately requests an account-owned inbox capture. `--inbox` is a compatibility alias.
180
180
  - Create multiple missions when each prompt represents a different feature or goal.
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).
@@ -186,17 +186,18 @@ When creating missions from within a repository:
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
 
188
188
  ```bash
189
- ovld protocol create --agent <agent-identifier> --objectives-json '[{"objective":"Capture follow-up work from this repository"}]'
189
+ ovld protocol create --project-id <project-id> --agent <agent-identifier> --objectives-json '[{"objective":"Capture follow-up work from this repository"}]'
190
190
  ```
191
191
 
192
192
  ```bash
193
193
  # One call: a draft mission whose first objective is already assigned to Codex.
194
194
  ovld protocol create --agent <agent-identifier> \
195
+ --project-id <project-id> \
195
196
  --objectives-json '[{"objective":"Implement the API","agent":"codex","model":"gpt-5.6-terra"},{"objective":"Add CLI docs","agent":"claude"}]'
196
197
  ```
197
198
 
198
199
  ```bash
199
- ovld protocol prompt --agent <agent-identifier> --objectives-json '[{"objective":"Implement feature X"}]'
200
+ ovld protocol prompt --project-id <project-id> --agent <agent-identifier> --objectives-json '[{"objective":"Implement feature X"}]'
200
201
  ```
201
202
 
202
203
  ```bash
@@ -277,8 +278,8 @@ When you need a project ID for a protocol command and the mission prompt did not
277
278
  **Locally (CLI inside a shell on the user's machine):**
278
279
 
279
280
  1. `--project-id` if explicitly provided.
280
- 2. Otherwise, let the CLI match the current working directory (the default behavior of `create`, `prompt`, `discover-project`).
281
- 3. If working-directory resolution returns nothing, read `.overlord/project.json` from the cwd (or any ancestor you have access to). Select the `projects[]` entry with `isPrimary: true` and pass its id via `--project-id`. If the array or primary entry is missing, treat the metadata as invalid and run `ovld doctor`; do not fall back to a top-level projection. To associate missions with a different linked project, pass that project's id explicitly.
281
+ 2. Otherwise, run `ovld protocol discover-project` for the current working directory, then pass its returned id via `--project-id`.
282
+ 3. If discovery returns nothing, read `.overlord/project.json` from the cwd (or any ancestor you have access to). Select the `projects[]` entry with `isPrimary: true` and pass its id via `--project-id`. If the array or primary entry is missing, treat the metadata as invalid and run `ovld doctor`; do not fall back to a top-level projection. To associate missions with a different linked project, pass that project's id explicitly.
282
283
 
283
284
  **Over MCP (web agents and hosted tools, where the server cannot see the agent's cwd):**
284
285
 
@@ -7,7 +7,8 @@
7
7
  - `permission-request` is invoked by connector permission hooks installed by adapter bundles. Agents do not normally call it directly.
8
8
  - Execution request tools (`request_execution`, `claim_execution`, `list_execution_requests`, `clear_execution_requests`, `complete_execution_launch`, `fail_execution_launch`) back the local runner queue. Agents normally work missions with `attach`/`update`/`deliver`; runner processes use these queue tools.
9
9
  - Change rationales are optional annotations attached to `update` or `deliver` (`--change-rationales-json` / `--change-rationales-file`, or `changeRationales` over MCP) and stored as `change_rationales` rows. Normal delivery requires only a summary; objective-ledger evidence is captured locally and synchronized independently.
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, explicitly supplied changed files, optional 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`.
10
+ - `overlord_create_mission` requires `projectId` for a mission, unless `unassignedToProject: true` deliberately requests an account-owned inbox item; omission of both is rejected. `overlord_create_inbox_item` is also explicit by name.
11
+ - `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, explicitly supplied changed files, optional rationales, and the standard Gemini delivery summary — no `attach`/`deliver`. Both require an explicit project reference. The submission format is in [record-work.md](record-work.md). The route is `POST /api/protocol/record-work`.
11
12
  - `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
13
  - `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
14
  - `overlord_delete_missions` / `overlord_delete_objectives` (hosted MCP) and `ovld protocol delete-missions` / `delete-objectives` (CLI) bulk soft-delete one to 100 mission or objective UUID/display-id references atomically. They require `confirm: true` / `--confirm`; before setting it, agents must show the resolved list to the user and receive affirmative approval. A missing, duplicate, deleted, or unauthorized target rejects the entire request. Mission deletion includes live child objectives; objective deletion removes live Run Queue membership.
@@ -60,8 +60,12 @@ identical across the CLI (`--payload-file -`) and the hosted MCP tool
60
60
  or `decision`.
61
61
  - **`deliveryReport`** (optional) — you may include a `deliveryReport.agentReport`
62
62
  (`humanActions`, `tradeoffsMade`, `knownRisks`, `deferredWork`, `assumptions`) just as
63
- in `deliver`. Each `deferredWork` item should name the component or file involved and say
64
- why the work was left. It improves review visibility but never blocks the record.
63
+ in `deliver`. Each `deferredWork` item must be a recommended new objective that is not
64
+ part of this mission (for example a bug discovered here that belongs outside it). Name
65
+ the component or file involved and say why the work was left. Never list work already
66
+ covered by this mission's future objectives, leftover slices of the current objective,
67
+ or human implementation follow-up (those belong in `humanActions`). Use an empty array
68
+ when nothing qualifies. It improves review visibility but never blocks the record.
65
69
 
66
70
  ## CLI
67
71
 
@@ -257,10 +257,15 @@ const tools = [
257
257
  name: 'overlord_create_mission',
258
258
  title: 'Create Overlord mission',
259
259
  description:
260
- 'Create a draft mission in projectId, or an account-owned inbox item when projectId is omitted. This connector never chooses a project implicitly.',
260
+ 'Create a draft mission with projectId. To intentionally create an account-owned inbox item, set unassignedToProject to true; omission of both is rejected.',
261
261
  inputSchema: objectSchema(
262
262
  {
263
- projectId: stringProperty('Optional Overlord project id, slug, or name.'),
263
+ projectId: stringProperty(
264
+ 'Overlord project id, slug, or name. Required unless unassignedToProject is true.'
265
+ ),
266
+ unassignedToProject: booleanProperty(
267
+ 'Set true only to intentionally create an account-owned inbox item instead of a project mission. Cannot be combined with projectId.'
268
+ ),
264
269
  objective: stringProperty('Initial objective text.'),
265
270
  title: stringProperty('Optional mission title.'),
266
271
  resourceKey: stringProperty('Optional logical project resource key for the objective.'),
@@ -271,7 +276,7 @@ const tools = [
271
276
  'Optional model identifier for the assigned agent. Requires agent; rejected without it.'
272
277
  ),
273
278
  assignedTo: stringProperty(
274
- 'Optional workspace member to own the mission (workspace_users.id, profile UUID, orgid:username, bare username, or email). Rejected when the member is not in the workspace; meaningless on the inbox fallback.'
279
+ 'Optional workspace member to own the mission (workspace_users.id, profile UUID, orgid:username, bare username, or email). Rejected when the member is not in the workspace; meaningless for an unassigned inbox item.'
275
280
  ),
276
281
  autoAdvance: booleanProperty(
277
282
  'When true, Overlord queues the next objective for execution after this one is delivered. Defaults to false.'
@@ -634,14 +639,27 @@ const tools = [
634
639
  items: {
635
640
  type: 'object',
636
641
  properties: {
637
- action: { type: 'string', description: 'Required. One imperative sentence: what, where, which value.' },
638
- reason: { type: 'string', description: 'Expected. Why it is needed and what stays broken until done.' },
642
+ action: {
643
+ type: 'string',
644
+ description: 'Required. One imperative sentence: what, where, which value.'
645
+ },
646
+ reason: {
647
+ type: 'string',
648
+ description: 'Expected. Why it is needed and what stays broken until done.'
649
+ },
639
650
  category: {
640
651
  type: 'string',
641
- description: 'Expected. environment, database, deployment, codegen, packaging, external_service, or other.'
652
+ description:
653
+ 'Expected. environment, database, deployment, codegen, packaging, external_service, or other.'
654
+ },
655
+ blocking: {
656
+ type: 'boolean',
657
+ description: 'True when the delivered work does not function until this is done.'
658
+ },
659
+ command: {
660
+ type: 'string',
661
+ description: 'Exact command, setting, or value to apply, verbatim.'
642
662
  },
643
- blocking: { type: 'boolean', description: 'True when the delivered work does not function until this is done.' },
644
- command: { type: 'string', description: 'Exact command, setting, or value to apply, verbatim.' },
645
663
  verify: { type: 'string', description: 'How the operator confirms it worked.' },
646
664
  link: { type: 'string', description: 'HTTP(S) URL or repository-relative file path.' }
647
665
  },
@@ -656,7 +674,7 @@ const tools = [
656
674
  deferredWork: {
657
675
  type: 'array',
658
676
  description:
659
- 'Intentionally deferred work. Name the component or file involved and say why the work was left.'
677
+ 'Recommended new objective outside this mission (for example an out-of-scope bug). Name the component or file and why it was left. Omit queued future objectives, leftover current-objective work, and human follow-up (those belong in humanActions).'
660
678
  },
661
679
  assumptions: { type: 'array', description: 'Material implementation assumptions.' }
662
680
  },
@@ -852,7 +870,8 @@ async function callOverlordTool(name, args) {
852
870
  return runProtocol('create', {
853
871
  ...(optionalString(args, 'projectId')
854
872
  ? { 'project-id': requiredString(args, 'projectId') }
855
- : { inbox: true }),
873
+ : {}),
874
+ ...(args.unassignedToProject === true ? { 'unassigned-to-project': true } : {}),
856
875
  objective: requiredString(args, 'objective'),
857
876
  ...(optionalString(args, 'title') ? { title: requiredString(args, 'title') } : {}),
858
877
  ...(optionalString(args, 'resourceKey')
@@ -873,7 +892,7 @@ async function callOverlordTool(name, args) {
873
892
  }
874
893
  if (name === 'overlord_create_inbox_item') {
875
894
  return runProtocol('create', {
876
- inbox: true,
895
+ 'unassigned-to-project': true,
877
896
  title: requiredString(args, 'title'),
878
897
  objective: requiredString(args, 'objective')
879
898
  });
@@ -1209,7 +1228,7 @@ process.stdin.on('data', async chunk => {
1209
1228
  result: {
1210
1229
  protocolVersion: PROTOCOL_VERSION,
1211
1230
  capabilities: { tools: { listChanged: false } },
1212
- serverInfo: { name: 'overlord-__OVERLORD_ADAPTER_KEY__', version: '0.3.44' }
1231
+ serverInfo: { name: 'overlord-__OVERLORD_ADAPTER_KEY__', version: '0.3.46' }
1213
1232
  }
1214
1233
  });
1215
1234
  continue;
package/dist/index.js CHANGED
@@ -38450,15 +38450,16 @@ delete-objectives:
38450
38450
 
38451
38451
  create:
38452
38452
  Purpose:
38453
- Create a draft mission without attaching. Without --project-id and
38454
- without a resolvable working-directory project, falls back to an
38455
- account-owned inbox item instead of failing.
38453
+ Create a draft mission without attaching. A project must be named
38454
+ explicitly; use --unassigned-to-project only for deliberate account-owned
38455
+ inbox capture.
38456
38456
  Required:
38457
38457
  --objective "<text>" or --objectives-json / --objectives-file <path|->
38458
38458
  Optional:
38459
38459
  --title <text>
38460
- --project-id <id> Skips working-directory project resolution
38461
- --inbox Force an account-owned inbox item instead of a project mission
38460
+ --project-id <id> Required for a project mission; never inferred
38461
+ --unassigned-to-project Intentionally create an account-owned inbox item
38462
+ --inbox Compatibility alias for --unassigned-to-project
38462
38463
  --assigned-to <id> Workspace member to own the mission (meaningless on the inbox fallback)
38463
38464
  --auto-advance / --no-auto-advance
38464
38465
  Add matching objectives to the authoritative Run Queue. Defaults to off.
@@ -38475,9 +38476,9 @@ prompt:
38475
38476
  Create a mission and attach to it in one call.
38476
38477
  Required:
38477
38478
  --objective "<text>" or --objectives-json / --objectives-file <path|->
38479
+ --project-id <id>
38478
38480
  Optional:
38479
38481
  --title <text>
38480
- --project-id <id>
38481
38482
  --agent <identifier>
38482
38483
  --model <identifier>
38483
38484
  --external-session-id <id>
@@ -38501,9 +38502,9 @@ record-work:
38501
38502
  Required:
38502
38503
  --objective "<text>" (or positional, or an "objective" field in --payload-json)
38503
38504
  --summary or --summary-file <path|->
38505
+ --project-id <id>
38504
38506
  Optional:
38505
38507
  --title <text>
38506
- --project-id <id>
38507
38508
  --assigned-to <id> Workspace member to own the mission
38508
38509
  --artifacts-json / --artifacts-file <path|->
38509
38510
  --change-rationales-json / --change-rationales-file <path|->
@@ -38575,8 +38576,11 @@ deliver:
38575
38576
  The payload may also include deliveryReport: { schemaVersion: 1, agentReport: {
38576
38577
  humanActions, tradeoffsMade, knownRisks, deferredWork, assumptions } }. Use empty arrays
38577
38578
  when none apply. Human actions exclude Git operations and routine review/testing.
38578
- Each deferredWork item should name the component or file involved and say why the work
38579
- was left.
38579
+ Deferred work is only a recommended new objective that is not part of this mission
38580
+ (for example an out-of-scope bug). Name the component or file involved and say why
38581
+ the work was left. Never list work already covered by this mission's future
38582
+ objectives, leftover slices of the current objective, or human implementation
38583
+ follow-up (those belong in humanActions). Use an empty array when nothing qualifies.
38580
38584
  Human action shape (each item in agentReport.humanActions):
38581
38585
  {
38582
38586
  "action": "Add GEMINI_API_KEY to the production backend service on Railway.", // required. one imperative sentence: what, where, which value.