overlord-cli 0.2608191901.0 → 0.2608200954.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.29
1
+ 0.3.31
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://antigravity.google/schemas/v1/plugin.json",
3
3
  "name": "overlord",
4
- "version": "0.3.29",
4
+ "version": "0.3.31",
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.29",
3
+ "version": "0.3.31",
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,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord",
3
- "version": "0.3.29",
3
+ "version": "0.3.31",
4
4
  "description": "Chat-driven access to Overlord mission protocol workflows with hook-driven activity capture.",
5
5
  "author": {
6
6
  "name": "Cooperativ",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord",
3
- "version": "0.3.29",
3
+ "version": "0.3.31",
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",
@@ -179,9 +179,10 @@ When creating missions from within a repository:
179
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.
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
- - `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).
183
- - `add-objectives` uses the same per-item `autoAdvance` field and `--auto-advance` / `--no-auto-advance` default.
184
- - To change auto-advance on an existing objective: `ovld protocol update-objective --objective-id <id> --auto-advance` or `--no-auto-advance`.
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
+ - `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.
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.
185
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).
186
187
 
187
188
  ```bash
@@ -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_create_mission` / `overlord_add_objectives` accept optional `autoAdvance` (boolean; default false). `overlord_update_objective` (`objectiveId` plus optional `autoAdvance` and/or `instructionText`) and `ovld protocol update-objective --objective-id <id>` with `--auto-advance|--no-auto-advance` and/or `--instruction-text|--instruction-text-file` update an existing objective. Instruction text is editable only in `draft` or `future` state. The route is `POST /api/protocol/update-objective`.
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`.
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.
@@ -258,6 +258,58 @@ const tools = [
258
258
  []
259
259
  )
260
260
  },
261
+ {
262
+ name: 'overlord_list_deliveries',
263
+ title: 'List mission deliveries',
264
+ description:
265
+ 'Use this to read a mission\'s delivered work after locating it. Returns newest-first normalized delivery records including summary, verification, follow-up notes, and authoritative delivery evidence; it never exposes raw delivery payloads.',
266
+ inputSchema: objectSchema({
267
+ missionId: stringProperty(
268
+ 'Mission UUID or workspace display id. Optional when objectiveId is a display id such as coo:756.k7xm, which already names its mission.'
269
+ ),
270
+ objectiveId: stringProperty(
271
+ 'Objective UUID or display id such as coo:756.k7xm. Use a display id when that is the only identifier available.'
272
+ )
273
+ })
274
+ },
275
+ {
276
+ name: 'overlord_launch_objective',
277
+ title: 'Launch objective execution',
278
+ description:
279
+ 'Use this only when the user explicitly asks to start a particular objective. It queues the normal Overlord execution request; it does not attach this MCP agent to perform the work. An existing active request is returned instead of duplicated.',
280
+ inputSchema: objectSchema(
281
+ {
282
+ objectiveId: stringProperty('Objective UUID or display id such as coo:756.k7xm.'),
283
+ agent: stringProperty('Agent identifier to launch, such as codex or claude.'),
284
+ model: stringProperty('Optional model identifier to snapshot onto the execution request.'),
285
+ reasoningEffort: stringProperty(
286
+ 'Optional reasoning-effort setting to snapshot onto the execution request.'
287
+ ),
288
+ executionTargetId: stringProperty(
289
+ 'Optional eligible execution target id. Omit to use the project\'s normal target selection.'
290
+ )
291
+ },
292
+ ['objectiveId', 'agent']
293
+ )
294
+ },
295
+ {
296
+ name: 'overlord_reorder_future_objectives',
297
+ title: 'Reorder future objectives',
298
+ description:
299
+ 'Use this only when the user explicitly asks to change future-objective order in one mission. Supply every future objective UUID in its complete desired top-to-bottom order; draft, active, and completed objectives cannot be moved by this tool.',
300
+ inputSchema: objectSchema(
301
+ {
302
+ missionId: stringProperty('Mission UUID.'),
303
+ orderedObjectiveIds: {
304
+ type: 'array',
305
+ description:
306
+ 'Complete desired top-to-bottom UUID order of every objective currently in the future state.',
307
+ items: stringProperty('Future objective UUID.')
308
+ }
309
+ },
310
+ ['missionId', 'orderedObjectiveIds']
311
+ )
312
+ },
261
313
  {
262
314
  name: 'overlord_add_objectives',
263
315
  title: 'Add objectives',
@@ -305,6 +357,25 @@ const tools = [
305
357
  ['objectiveId']
306
358
  )
307
359
  },
360
+ {
361
+ name: 'overlord_queue_objective',
362
+ title: 'Queue objective',
363
+ description:
364
+ 'Use this only when the user explicitly asks to add, move, or remove an objective in the project Run Queue. Queue membership is target-neutral and sequences delivery-driven launches; it does not directly launch the objective.',
365
+ inputSchema: objectSchema(
366
+ {
367
+ objectiveId: stringProperty('Objective UUID or display id such as coo:756.k7xm.'),
368
+ queue: stringProperty('Optional Run Queue UUID or unambiguous queue name.'),
369
+ after: stringProperty(
370
+ 'Optional queued predecessor entry id, objective UUID, or objective display id. Its queue is used when queue is omitted.'
371
+ ),
372
+ remove: booleanProperty(
373
+ 'When true, remove this objective from the Run Queue instead of adding or moving it.'
374
+ )
375
+ },
376
+ ['objectiveId']
377
+ )
378
+ },
308
379
  {
309
380
  name: 'overlord_attach_session',
310
381
  title: 'Attach to mission',
@@ -602,6 +673,31 @@ async function callOverlordTool(name, args) {
602
673
  : {})
603
674
  });
604
675
  }
676
+ if (name === 'overlord_list_deliveries') {
677
+ return runProtocol('list-deliveries', missionScopeFlags(args));
678
+ }
679
+ if (name === 'overlord_launch_objective') {
680
+ return runProtocol('launch-objective', {
681
+ 'objective-id': requiredString(args, 'objectiveId'),
682
+ agent: requiredString(args, 'agent'),
683
+ ...(optionalString(args, 'model') ? { model: requiredString(args, 'model') } : {}),
684
+ ...(optionalString(args, 'reasoningEffort')
685
+ ? { 'reasoning-effort': requiredString(args, 'reasoningEffort') }
686
+ : {}),
687
+ ...(optionalString(args, 'executionTargetId')
688
+ ? { 'execution-target-id': requiredString(args, 'executionTargetId') }
689
+ : {})
690
+ });
691
+ }
692
+ if (name === 'overlord_reorder_future_objectives') {
693
+ if (!Array.isArray(args.orderedObjectiveIds)) {
694
+ throw new Error('orderedObjectiveIds must be an array');
695
+ }
696
+ return runProtocol('reorder-future-objectives', {
697
+ 'mission-id': requiredString(args, 'missionId'),
698
+ 'ordered-objective-ids-json': args.orderedObjectiveIds
699
+ });
700
+ }
605
701
  if (name === 'overlord_add_objectives') {
606
702
  if (!Array.isArray(args.objectives)) throw new Error('objectives must be an array');
607
703
  return runProtocol('add-objectives', {
@@ -625,6 +721,17 @@ async function callOverlordTool(name, args) {
625
721
  ...(hasInstructionText ? { 'instruction-text': requiredString(args, 'instructionText') } : {})
626
722
  });
627
723
  }
724
+ if (name === 'overlord_queue_objective') {
725
+ return runProtocol(args.remove === true ? 'dequeue-objective' : 'queue-objective', {
726
+ 'objective-id': requiredString(args, 'objectiveId'),
727
+ ...(args.remove === true
728
+ ? {}
729
+ : {
730
+ ...(optionalString(args, 'queue') ? { queue: requiredString(args, 'queue') } : {}),
731
+ ...(optionalString(args, 'after') ? { after: requiredString(args, 'after') } : {})
732
+ })
733
+ });
734
+ }
628
735
  if (name === 'overlord_attach_session') {
629
736
  return runProtocol('attach', {
630
737
  ...missionScopeFlags(args),
@@ -762,7 +869,7 @@ process.stdin.on('data', async chunk => {
762
869
  result: {
763
870
  protocolVersion: PROTOCOL_VERSION,
764
871
  capabilities: { tools: { listChanged: false } },
765
- serverInfo: { name: 'overlord-__OVERLORD_ADAPTER_KEY__', version: '0.3.29' }
872
+ serverInfo: { name: 'overlord-__OVERLORD_ADAPTER_KEY__', version: '0.3.31' }
766
873
  }
767
874
  });
768
875
  continue;
package/dist/index.js CHANGED
@@ -21027,6 +21027,80 @@ load-context:
21027
21027
  rediscovering the mission's active objective. Required
21028
21028
  on a mission running objectives in parallel.
21029
21029
 
21030
+ list-deliveries:
21031
+ Purpose:
21032
+ Read one mission's newest-first normalized delivery records without exposing
21033
+ arbitrary stored payload JSON.
21034
+ Required:
21035
+ --mission-id <id> Or --objective-id with a display id
21036
+ Optional:
21037
+ --objective-id <id> Supplies mission addressing when it is a display id
21038
+ Returns:
21039
+ DeliveryDto[] including summary, verification, follow-up notes, and normalized
21040
+ delivery report evidence.
21041
+
21042
+ launch-objective:
21043
+ Purpose:
21044
+ Queue the normal execution request for one objective. This does not attach the
21045
+ calling agent; a runner or eligible execution target performs the requested launch.
21046
+ Required:
21047
+ --objective-id <id> Objective UUID or display id
21048
+ --agent <identifier>
21049
+ Optional:
21050
+ --model <identifier>
21051
+ --reasoning-effort <value>
21052
+ --execution-target-id <id>
21053
+ Returns:
21054
+ The queued or already-active ExecutionRequestDto. Existing launchability,
21055
+ authorization, target resolution, sibling, and idempotency rules apply.
21056
+
21057
+ reorder-future-objectives:
21058
+ Purpose:
21059
+ Change the order of one mission's future objectives without moving draft,
21060
+ active, or complete objectives.
21061
+ Required:
21062
+ --mission-id <uuid>
21063
+ --ordered-objective-ids-json <json>
21064
+ Returns:
21065
+ The mission's full ObjectiveDto[] list in its new order.
21066
+ Rules:
21067
+ Supply every future objective UUID in the complete desired top-to-bottom order.
21068
+ Duplicate, missing, and non-future objective ids are rejected.
21069
+
21070
+ run-queue:
21071
+ Purpose:
21072
+ Read every live Run Queue in one project, including queued, held, and running entries.
21073
+ Required:
21074
+ --project-id <id|slug|name>
21075
+ Returns:
21076
+ ProjectRunQueuesDto JSON. This reads sequencing state; it does not launch work.
21077
+
21078
+ queue-objective:
21079
+ Purpose:
21080
+ Add or move one objective in the authoritative Run Queue without choosing a target.
21081
+ Required:
21082
+ --objective-id <id> Objective UUID or display id
21083
+ Optional:
21084
+ --project-id <id|slug|name> Confirms the objective's project
21085
+ --queue <id|name> Queue UUID or unambiguous queue name
21086
+ --after <entry|objective> Queue after this queued entry/objective
21087
+ --front Place first in the selected/default queue
21088
+ --position <n> One-based insertion rank
21089
+ Rules:
21090
+ Choose at most one of --after, --front, and --position. Without --queue,
21091
+ --after selects its queue; otherwise the default queue is used. Re-running
21092
+ without placement is idempotent.
21093
+
21094
+ dequeue-objective:
21095
+ Purpose:
21096
+ Remove one objective from the authoritative Run Queue.
21097
+ Required:
21098
+ --objective-id <id> Objective UUID or display id
21099
+ Optional:
21100
+ --project-id <id|slug|name> Confirms the objective's project
21101
+ Returns:
21102
+ { removed, objectiveId }. Already-unqueued objectives return removed: false.
21103
+
21030
21104
  search:
21031
21105
  Purpose:
21032
21106
  Find grouped mission, objective, and delivery matches by keyword, status type, or project.
@@ -21099,7 +21173,7 @@ add-objectives:
21099
21173
 
21100
21174
  update-objective:
21101
21175
  Purpose:
21102
- Turn auto-advance on or off and/or edit instruction text on an existing objective.
21176
+ Queue or dequeue compatibility auto-advance and/or edit instruction text on an existing objective.
21103
21177
  Required:
21104
21178
  --objective-id <id>
21105
21179
  At least one of:
@@ -21109,7 +21183,7 @@ update-objective:
21109
21183
  Instruction text may be edited only when the objective is in draft or future state.
21110
21184
  Blank instruction text is allowed in those states.
21111
21185
  Returns:
21112
- The updated objective JSON, including autoAdvance and instructionText.
21186
+ The updated objective JSON. autoAdvance is deprecated and derived from live queueEntry membership.
21113
21187
 
21114
21188
  create:
21115
21189
  Purpose:
@@ -21124,7 +21198,7 @@ create:
21124
21198
  --inbox Force an account-owned inbox item instead of a project mission
21125
21199
  --assigned-to <id> Workspace member to own the mission (meaningless on the inbox fallback)
21126
21200
  --auto-advance / --no-auto-advance
21127
- Queue the next objective after this one is delivered. Defaults to off.
21201
+ Add matching objectives to the authoritative Run Queue. Defaults to off.
21128
21202
  Per-item override: "autoAdvance": true|false in --objectives-json items.
21129
21203
 
21130
21204
  prompt:
@@ -21140,7 +21214,7 @@ prompt:
21140
21214
  --external-session-id <id>
21141
21215
  --assigned-to <id> Workspace member to own the mission
21142
21216
  --auto-advance / --no-auto-advance
21143
- Queue the next objective after this one is delivered. Defaults to off.
21217
+ Add matching objectives to the authoritative Run Queue. Defaults to off.
21144
21218
  Per-item override: "autoAdvance": true|false in --objectives-json items.
21145
21219
  Returns:
21146
21220
  New mission/session JSON plus SESSION_KEY on stderr when available.
@@ -21404,17 +21478,23 @@ var init_protocol_help = __esm({
21404
21478
  "changes",
21405
21479
  "connect",
21406
21480
  "create",
21481
+ "dequeue-objective",
21407
21482
  "deliver",
21408
21483
  "discover-project",
21409
21484
  "discuss-objective",
21410
21485
  "heartbeat",
21411
21486
  "hook-event",
21487
+ "launch-objective",
21488
+ "list-deliveries",
21412
21489
  "list-organizations",
21413
21490
  "load-context",
21414
21491
  "prompt",
21415
21492
  "read-context",
21416
21493
  "record-touched",
21417
21494
  "record-work",
21495
+ "reorder-future-objectives",
21496
+ "run-queue",
21497
+ "queue-objective",
21418
21498
  "resume-follow-up",
21419
21499
  "search",
21420
21500
  "search-missions",
@@ -25038,7 +25118,8 @@ Agents:
25038
25118
  ${primaryCommand} launch <agent> --mission-id <missionId>
25039
25119
  Use ${primaryCommand} protocol help for the full mission lifecycle reference.
25040
25120
  Key protocol commands: auth-status, discover-project, create, prompt, attach,
25041
- connect, load-context, update, heartbeat, ask, deliver.
25121
+ connect, load-context, list-deliveries, launch-objective, reorder-future-objectives,
25122
+ update, heartbeat, ask, deliver.
25042
25123
 
25043
25124
  Protocol (JSON output by default):
25044
25125
  ${primaryCommand} protocol attach --mission-id <id> | --objective-id <display-id>
@@ -25049,6 +25130,9 @@ Protocol (JSON output by default):
25049
25130
  ${primaryCommand} protocol search --query "<text>" --status execute,review
25050
25131
  ${primaryCommand} protocol statuses --project-id <id|slug|name>
25051
25132
  ${primaryCommand} protocol load-context --mission-id <id>
25133
+ ${primaryCommand} protocol list-deliveries --mission-id <id>
25134
+ ${primaryCommand} protocol launch-objective --objective-id <id> --agent <agent>
25135
+ ${primaryCommand} protocol reorder-future-objectives --mission-id <id> --ordered-objective-ids-json '["<id>"]'
25052
25136
  ${primaryCommand} protocol help
25053
25137
 
25054
25138
  After installation, run \`${primaryCommand} auth login\` to choose your backend.