overlord-cli 0.2608271506.0 → 0.2608311101.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.39
1
+ 0.3.40
@@ -1,4 +1,4 @@
1
- contractVersion: "129"
1
+ contractVersion: "130"
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.39",
4
+ "version": "0.3.40",
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.39",
3
+ "version": "0.3.40",
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: "129"
1
+ contractVersion: "130"
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.39",
3
+ "version": "0.3.40",
4
4
  "description": "Chat-driven access to Overlord mission protocol workflows with hook-driven activity capture.",
5
5
  "author": {
6
6
  "name": "Cooperativ",
@@ -29,7 +29,7 @@ From an OpenOverlord checkout:
29
29
  ovld agent-setup codex
30
30
  ```
31
31
 
32
- This copies managed plugin files to `~/.codex/plugins/overlord`, merges protocol permission rules into `~/.codex/rules/default.rules`, writes the personal marketplace entry at `~/.agents/plugins/marketplace.json`, and runs `codex plugin add overlord@overlord-local` when the Codex CLI is available.
32
+ This copies managed plugin files to `~/.codex/plugins/overlord`, merges protocol permission rules into `~/.codex/rules/default.rules`, asks before merging the Overlord workspace permission profile into `~/.codex/config.toml`, writes the personal marketplace entry at `~/.agents/plugins/marketplace.json`, and runs `codex plugin add overlord@overlord-local` when the Codex CLI is available. The profile makes `overlord` the default, disables the JS REPL, enables Codex's network proxy, and permits network access only to `**.ovld.ai`.
33
33
 
34
34
  Re-run safely any time the connector contract version changes:
35
35
 
@@ -1,4 +1,4 @@
1
- contractVersion: "129"
1
+ contractVersion: "130"
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.39",
3
+ "version": "0.3.40",
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: "129"
1
+ contractVersion: "130"
2
2
  componentType: connector
3
3
  componentKey: cursor
4
4
  label: "Cursor Connector"
@@ -1,4 +1,4 @@
1
- contractVersion: "129"
1
+ contractVersion: "130"
2
2
  componentType: connector
3
3
  componentKey: opencode
4
4
  label: "OpenCode Connector"
@@ -1,4 +1,4 @@
1
- contractVersion: "129"
1
+ contractVersion: "130"
2
2
  componentType: connector
3
3
  componentKey: pi
4
4
  label: "PI Connector"
@@ -173,8 +173,9 @@ opened file, and never make a separate call just to declare paths.
173
173
  Artifacts, optional change rationales, and a delivery report remain current annotations when
174
174
  they add review value. Use `--payload-json` when the full delivery object fits comfortably inline
175
175
  (roughly under 8 KB). Larger inline `--*-json` values are rejected; stream them through the
176
- corresponding `--*-file -` flag. A real scratch path belongs under `.overlord/tmp` and should be
177
- removed after delivery.
176
+ corresponding `--*-file -` flag. A real scratch path belongs under `$OVERLORD_TMPDIR` (this launch's private
177
+ `.overlord/tmp/sessions/<id>/` directory); `deliver` removes that directory for you, and nothing
178
+ else under `.overlord/tmp` is yours to delete.
178
179
 
179
180
  If `heartbeat` succeeds but `deliver` or `update` fails, the session is likely fine — retry with the corresponding `--*-file -` flag instead of inline `--*-json`.
180
181
 
@@ -10,6 +10,7 @@
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, 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`.
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_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.
13
14
  - 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. 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
15
  - 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
16
  - "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.
@@ -110,16 +110,14 @@ function compactSearchResponse(response) {
110
110
  results: value.results.map(result => ({
111
111
  ...result,
112
112
  matches: Array.isArray(result.matches)
113
- ? result.matches
114
- .slice(0, 2)
115
- .map(match => {
116
- const compactMatch = { ...match };
117
- delete compactMatch.snippet;
118
- delete compactMatch.matchedTerms;
119
- delete compactMatch.createdAt;
120
- delete compactMatch.updatedAt;
121
- return compactMatch;
122
- })
113
+ ? result.matches.slice(0, 2).map(match => {
114
+ const compactMatch = { ...match };
115
+ delete compactMatch.snippet;
116
+ delete compactMatch.matchedTerms;
117
+ delete compactMatch.createdAt;
118
+ delete compactMatch.updatedAt;
119
+ return compactMatch;
120
+ })
123
121
  : result.matches
124
122
  }))
125
123
  };
@@ -312,7 +310,7 @@ const tools = [
312
310
  name: 'overlord_list_deliveries',
313
311
  title: 'List mission deliveries',
314
312
  description:
315
- '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.',
313
+ "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.",
316
314
  inputSchema: objectSchema({
317
315
  missionId: stringProperty(
318
316
  'Mission UUID or workspace display id. Optional when objectiveId is a display id such as coo:756.k7xm, which already names its mission.'
@@ -336,7 +334,7 @@ const tools = [
336
334
  'Optional reasoning-effort setting to snapshot onto the execution request.'
337
335
  ),
338
336
  executionTargetId: stringProperty(
339
- 'Optional eligible execution target id. Omit to use the project\'s normal target selection.'
337
+ "Optional eligible execution target id. Omit to use the project's normal target selection."
340
338
  )
341
339
  },
342
340
  ['objectiveId', 'agent']
@@ -407,6 +405,44 @@ const tools = [
407
405
  ['objectiveId']
408
406
  )
409
407
  },
408
+ {
409
+ name: 'overlord_delete_missions',
410
+ title: 'Delete missions',
411
+ description:
412
+ 'Use this only after showing the resolved mission list to the user and receiving an affirmative response. Soft-deletes one to 100 missions atomically; any missing, duplicate, deleted, or unauthorized target rejects the entire request. Deleting a mission also soft-deletes its live objectives.',
413
+ inputSchema: objectSchema(
414
+ {
415
+ missionIds: {
416
+ type: 'array',
417
+ description: 'One to 100 unique mission UUIDs or display IDs to delete.',
418
+ items: stringProperty('Mission UUID or workspace display ID.')
419
+ },
420
+ confirm: booleanProperty(
421
+ 'Must be true only after the user has reviewed the resolved mission list and affirmatively approved deletion.'
422
+ )
423
+ },
424
+ ['missionIds', 'confirm']
425
+ )
426
+ },
427
+ {
428
+ name: 'overlord_delete_objectives',
429
+ title: 'Delete objectives',
430
+ description:
431
+ 'Use this only after showing the resolved objective list to the user and receiving an affirmative response. Soft-deletes one to 100 objectives atomically; any missing, duplicate, deleted, or unauthorized target rejects the entire request. Deleting an objective also removes its live Run Queue membership.',
432
+ inputSchema: objectSchema(
433
+ {
434
+ objectiveIds: {
435
+ type: 'array',
436
+ description: 'One to 100 unique objective UUIDs or display IDs to delete.',
437
+ items: stringProperty('Objective UUID or display ID.')
438
+ },
439
+ confirm: booleanProperty(
440
+ 'Must be true only after the user has reviewed the resolved objective list and affirmatively approved deletion.'
441
+ )
442
+ },
443
+ ['objectiveIds', 'confirm']
444
+ )
445
+ },
410
446
  {
411
447
  name: 'overlord_list_run_queues',
412
448
  title: 'List Run Queues',
@@ -485,12 +521,14 @@ const tools = [
485
521
  type: 'string',
486
522
  enum: ['create', 'update', 'delete', 'reorder_queues', 'retry_entry'],
487
523
  description:
488
- 'create a queue, update (rename/pause/resume) one, delete one, reorder the queue definitions, or retry_entry to clear one held entry\'s hold and attempt budget so the dispatcher tries it again.'
524
+ "create a queue, update (rename/pause/resume) one, delete one, reorder the queue definitions, or retry_entry to clear one held entry's hold and attempt budget so the dispatcher tries it again."
489
525
  },
490
526
  projectId: stringProperty(
491
527
  'Project UUID, slug, or name. Required for create and reorder_queues.'
492
528
  ),
493
- queue: stringProperty('Run Queue UUID or unambiguous name. Required for update and delete.'),
529
+ queue: stringProperty(
530
+ 'Run Queue UUID or unambiguous name. Required for update and delete.'
531
+ ),
494
532
  name: stringProperty('New queue name for create, or the replacement name for update.'),
495
533
  paused: booleanProperty(
496
534
  'update only: true pauses dispatching from the queue, false resumes it.'
@@ -512,7 +550,7 @@ const tools = [
512
550
  }
513
551
  },
514
552
  ['action']
515
- ),
553
+ )
516
554
  },
517
555
  {
518
556
  name: 'overlord_attach_session',
@@ -862,6 +900,33 @@ async function callOverlordTool(name, args) {
862
900
  ...(hasInstructionText ? { 'instruction-text': requiredString(args, 'instructionText') } : {})
863
901
  });
864
902
  }
903
+ if (name === 'overlord_delete_missions') {
904
+ if (!Array.isArray(args.missionIds) || !args.missionIds.every(id => typeof id === 'string')) {
905
+ throw new Error('missionIds must be an array of strings');
906
+ }
907
+ if (args.confirm !== true) {
908
+ throw new Error('confirm must be true after the user has affirmatively approved deletion');
909
+ }
910
+ return runProtocol('delete-missions', {
911
+ 'mission-ids-json': args.missionIds,
912
+ confirm: true
913
+ });
914
+ }
915
+ if (name === 'overlord_delete_objectives') {
916
+ if (
917
+ !Array.isArray(args.objectiveIds) ||
918
+ !args.objectiveIds.every(id => typeof id === 'string')
919
+ ) {
920
+ throw new Error('objectiveIds must be an array of strings');
921
+ }
922
+ if (args.confirm !== true) {
923
+ throw new Error('confirm must be true after the user has affirmatively approved deletion');
924
+ }
925
+ return runProtocol('delete-objectives', {
926
+ 'objective-ids-json': args.objectiveIds,
927
+ confirm: true
928
+ });
929
+ }
865
930
  if (name === 'overlord_list_run_queues') {
866
931
  const detail = optionalString(args, 'detail') || 'compact';
867
932
  if (detail !== 'compact' && detail !== 'full') {
@@ -1110,7 +1175,7 @@ process.stdin.on('data', async chunk => {
1110
1175
  result: {
1111
1176
  protocolVersion: PROTOCOL_VERSION,
1112
1177
  capabilities: { tools: { listChanged: false } },
1113
- serverInfo: { name: 'overlord-__OVERLORD_ADAPTER_KEY__', version: '0.3.39' }
1178
+ serverInfo: { name: 'overlord-__OVERLORD_ADAPTER_KEY__', version: '0.3.40' }
1114
1179
  }
1115
1180
  });
1116
1181
  continue;
@@ -97,6 +97,7 @@ Requirements:
97
97
  code changes.
98
98
  - Include permission hook to record tool permission requests.
99
99
  - Install protocol permission rules for `ovld protocol`.
100
+ - During interactive Codex setup, ask `Configure Codex permissions to allow it to communicate with the Overlord server?` (default yes). On acceptance, merge the `overlord` workspace permission profile into `~/.codex/config.toml`: make it the default permission profile, disable `js_repl`, enable the network proxy, and allow only `**.ovld.ai` network access for that profile. Non-interactive `ovld agent-setup codex` applies the same idempotent merge so scripted setup remains usable.
100
101
  - Avoid generating or relying on a repository-local `AGENTS.md` for Overlord itself.
101
102
  - Detect or receive Codex native session/thread IDs when possible.
102
103
  - Launch with model and reasoning effort mapping: