overlord-cli 0.2609091820.0 → 0.2609181229.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/connectors/VERSION +1 -1
- package/dist/connectors/adapters/antigravity/conformance-manifest.yaml +1 -1
- package/dist/connectors/adapters/antigravity/plugin.json +1 -1
- package/dist/connectors/adapters/claude/.claude-plugin/plugin.json +1 -1
- package/dist/connectors/adapters/claude/conformance-manifest.yaml +1 -1
- package/dist/connectors/adapters/codex/.codex-plugin/plugin.json +1 -1
- package/dist/connectors/adapters/codex/conformance-manifest.yaml +1 -1
- package/dist/connectors/adapters/cursor/.cursor-plugin/plugin.json +1 -1
- package/dist/connectors/adapters/cursor/conformance-manifest.yaml +1 -1
- package/dist/connectors/adapters/opencode/conformance-manifest.yaml +1 -1
- package/dist/connectors/adapters/pi/conformance-manifest.yaml +1 -1
- package/dist/connectors/core/overlord-mission/SKILL.md +18 -17
- package/dist/connectors/core/overlord-mission/reference/cli.md +7 -6
- package/dist/connectors/core/overlord-mission/reference/mcp.md +2 -1
- package/dist/connectors/core/scripts/overlord-mcp.mjs +31 -12
- package/dist/connectors/docs/05-connectors-and-agent-plugins.md +3 -6
- package/dist/index.js +44 -12
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -257,9 +257,9 @@ colocation convention):
|
|
|
257
257
|
The packaged CLI lives in this module as a self-contained Yarn sub-project:
|
|
258
258
|
|
|
259
259
|
```bash
|
|
260
|
-
yarn build:
|
|
260
|
+
yarn cli:build:prod # tsc emit + esbuild bundle to cli/dist/index.js
|
|
261
261
|
yarn test:cli # unit + subprocess smoke tests
|
|
262
|
-
yarn pack:
|
|
262
|
+
yarn cli:pack:prod # produce an installable tarball
|
|
263
263
|
node cli/bin/ovld.mjs version
|
|
264
264
|
```
|
|
265
265
|
|
|
@@ -276,7 +276,7 @@ cli/
|
|
|
276
276
|
```
|
|
277
277
|
|
|
278
278
|
The CLI ships command parsing, config/auth onboarding, connector setup, backend
|
|
279
|
-
client calls, and local runner/agent launch logic. Run `yarn build:
|
|
279
|
+
client calls, and local runner/agent launch logic. Run `yarn cli:build:prod` before using
|
|
280
280
|
the compiled CLI (`node cli/bin/ovld.mjs …`).
|
|
281
281
|
|
|
282
282
|
### In-repo build vs installed CLI
|
package/dist/connectors/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.3.
|
|
1
|
+
0.3.47
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://antigravity.google/schemas/v1/plugin.json",
|
|
3
3
|
"name": "overlord",
|
|
4
|
-
"version": "0.3.
|
|
4
|
+
"version": "0.3.47",
|
|
5
5
|
"description": "Chat-driven access to Overlord mission protocol workflows through skills and MCP.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Cooperativ",
|
|
@@ -82,9 +82,9 @@ Do not attach to a mission just because it was mentioned or opened in conversati
|
|
|
82
82
|
|
|
83
83
|
Use this mode when the conversation starts normally and the user asks the agent to create, inspect, connect to, or otherwise use Overlord.
|
|
84
84
|
|
|
85
|
-
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":"..."}]'`.
|
|
86
86
|
- When `--session-key` and `--mission-id` are provided, it creates a follow-up draft.
|
|
87
|
-
-
|
|
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.
|
|
88
88
|
- Pass multiple items in `--objectives-json` when creating ordered steps for the same feature or goal.
|
|
89
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.
|
|
90
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.
|
|
@@ -95,7 +95,7 @@ Use this mode when the conversation starts normally and the user asks the agent
|
|
|
95
95
|
5. If the user wants to establish a persistent session with a mission by ID, run `ovld protocol attach --mission-id <mission_id>`.
|
|
96
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.
|
|
97
97
|
7. If you need to understand project routing before prompting, use `ovld protocol discover-project`.
|
|
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
|
|
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).
|
|
99
99
|
9. If you need other lifecycle commands or flags, run `ovld protocol help` and use the real subcommand list instead of guessing.
|
|
100
100
|
10. Once you attach to a mission, switch back to Mode 1 and follow the full mission lifecycle.
|
|
101
101
|
|
|
@@ -225,15 +225,15 @@ nothing qualifies. Omit the report when none of these facts apply.
|
|
|
225
225
|
Human actions are collected across every mission into the Feed page's **Human actions** rail,
|
|
226
226
|
where the operator reads them without the delivery context. Each item must stand alone:
|
|
227
227
|
|
|
228
|
-
| Field | Expected
|
|
229
|
-
| ---------- |
|
|
230
|
-
| `action` | required
|
|
231
|
-
| `reason` | expected
|
|
232
|
-
| `category` | expected
|
|
233
|
-
| `blocking` | optional
|
|
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. |
|
|
234
234
|
| `command` | when known | The exact command, setting name, or value to apply, verbatim. Placeholders in `<angle brackets>`. |
|
|
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).
|
|
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). |
|
|
237
237
|
|
|
238
238
|
Vague (the operator has to rediscover everything):
|
|
239
239
|
|
|
@@ -333,8 +333,8 @@ When creating missions from within a repository:
|
|
|
333
333
|
|
|
334
334
|
- Prefer `create` by default for draft mission creation.
|
|
335
335
|
- Use `prompt` only when the user explicitly asks to start execution immediately.
|
|
336
|
-
-
|
|
337
|
-
-
|
|
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.
|
|
338
338
|
- Create multiple missions when each prompt represents a different feature or goal.
|
|
339
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":"..."}]'`.
|
|
340
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).
|
|
@@ -345,17 +345,18 @@ When creating missions from within a repository:
|
|
|
345
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.
|
|
346
346
|
|
|
347
347
|
```bash
|
|
348
|
-
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"}]'
|
|
349
349
|
```
|
|
350
350
|
|
|
351
351
|
```bash
|
|
352
352
|
# One call: a draft mission whose first objective is already assigned to Codex.
|
|
353
353
|
ovld protocol create --agent <agent-identifier> \
|
|
354
|
+
--project-id <project-id> \
|
|
354
355
|
--objectives-json '[{"objective":"Implement the API","agent":"codex","model":"gpt-5.6-terra"},{"objective":"Add CLI docs","agent":"claude"}]'
|
|
355
356
|
```
|
|
356
357
|
|
|
357
358
|
```bash
|
|
358
|
-
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"}]'
|
|
359
360
|
```
|
|
360
361
|
|
|
361
362
|
```bash
|
|
@@ -413,8 +414,8 @@ When you need a project ID for a protocol command and the mission prompt did not
|
|
|
413
414
|
**Locally (CLI inside a shell on the user's machine):**
|
|
414
415
|
|
|
415
416
|
1. `--project-id` if explicitly provided.
|
|
416
|
-
2. Otherwise,
|
|
417
|
-
3. If
|
|
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.
|
|
418
419
|
|
|
419
420
|
**Over MCP (web agents and hosted tools, where the server cannot see the agent's cwd):**
|
|
420
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
|
-
-
|
|
179
|
-
-
|
|
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,
|
|
281
|
-
3. If
|
|
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
|
-
- `
|
|
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.
|
|
@@ -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
|
|
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(
|
|
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
|
|
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.'
|
|
@@ -496,7 +501,7 @@ const tools = [
|
|
|
496
501
|
name: 'overlord_queue_objective',
|
|
497
502
|
title: 'Queue objective',
|
|
498
503
|
description:
|
|
499
|
-
'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.',
|
|
504
|
+
'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. Adding an objective also queues every not-yet-started objective after it in the mission; a removed objective moves to the end of its mission.',
|
|
500
505
|
inputSchema: objectSchema(
|
|
501
506
|
{
|
|
502
507
|
objectiveId: stringProperty('Objective UUID or display id such as coo:756.k7xm.'),
|
|
@@ -634,14 +639,27 @@ const tools = [
|
|
|
634
639
|
items: {
|
|
635
640
|
type: 'object',
|
|
636
641
|
properties: {
|
|
637
|
-
action: {
|
|
638
|
-
|
|
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:
|
|
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
|
},
|
|
@@ -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
|
-
: {
|
|
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
|
-
|
|
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.
|
|
1231
|
+
serverInfo: { name: 'overlord-__OVERLORD_ADAPTER_KEY__', version: '0.3.47' }
|
|
1213
1232
|
}
|
|
1214
1233
|
});
|
|
1215
1234
|
continue;
|
|
@@ -127,9 +127,7 @@ Setup should work without the desktop app and should not fail hard when the Clau
|
|
|
127
127
|
|
|
128
128
|
## Cursor Connector
|
|
129
129
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
Requirements:
|
|
130
|
+
Shipped. Requirements:
|
|
133
131
|
|
|
134
132
|
- Install local Cursor plugin/rules/commands.
|
|
135
133
|
- Add `beforeSubmitPrompt` hook to record follow-ups.
|
|
@@ -156,9 +154,8 @@ Requirements:
|
|
|
156
154
|
|
|
157
155
|
## Antigravity Connector
|
|
158
156
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
Requirements:
|
|
157
|
+
Shipped, currently fixture-proven only at tier 0 — see
|
|
158
|
+
`connectors/adapters/antigravity/CAPABILITIES.md`. Requirements:
|
|
162
159
|
|
|
163
160
|
- Install Antigravity plugin.
|
|
164
161
|
- Provide protocol skill and commands.
|
package/dist/index.js
CHANGED
|
@@ -18478,7 +18478,10 @@ function launchSessionSnapshotFromMetadata(metadata) {
|
|
|
18478
18478
|
openOnLaunch: viewer?.openOnLaunch !== false,
|
|
18479
18479
|
// A snapshot frozen before `openAs` existed carries none; `window` is what
|
|
18480
18480
|
// those runs actually did, so the absent case must not become `tab`.
|
|
18481
|
-
openAs: parseViewerOpenAs(viewer?.openAs)
|
|
18481
|
+
openAs: parseViewerOpenAs(viewer?.openAs),
|
|
18482
|
+
// A snapshot frozen before `background` existed carries none; those runs
|
|
18483
|
+
// opened in the foreground, so absent must not become background.
|
|
18484
|
+
background: viewer?.background === true
|
|
18482
18485
|
},
|
|
18483
18486
|
executionProviderSource: source(cast.executionProviderSource),
|
|
18484
18487
|
viewerOpenSource: source(cast.viewerOpenSource),
|
|
@@ -19072,11 +19075,20 @@ function latchSupportsOpenAs(productVersion) {
|
|
|
19072
19075
|
return false;
|
|
19073
19076
|
return compareLatchProductVersions(version2, LATCH_OPEN_AS_MIN_PRODUCT_VERSION) >= 0;
|
|
19074
19077
|
}
|
|
19075
|
-
function
|
|
19078
|
+
function latchSupportsOpenBackground(productVersion) {
|
|
19079
|
+
const version2 = trimmed5(productVersion);
|
|
19080
|
+
if (!version2)
|
|
19081
|
+
return false;
|
|
19082
|
+
return compareLatchProductVersions(version2, LATCH_OPEN_BACKGROUND_MIN_PRODUCT_VERSION) >= 0;
|
|
19083
|
+
}
|
|
19084
|
+
function buildLatchOpenArgs({ providerSessionId, viewer, openAs, background, productVersion }) {
|
|
19076
19085
|
const args = ["open", providerSessionId, "--with", viewer];
|
|
19077
19086
|
if (openAs && latchSupportsOpenAs(productVersion)) {
|
|
19078
19087
|
args.push("--as", parseViewerOpenAs(openAs));
|
|
19079
19088
|
}
|
|
19089
|
+
if (typeof background === "boolean" && latchSupportsOpenBackground(productVersion)) {
|
|
19090
|
+
args.push(background ? "--background" : "--foreground");
|
|
19091
|
+
}
|
|
19080
19092
|
args.push("--json");
|
|
19081
19093
|
return args;
|
|
19082
19094
|
}
|
|
@@ -19086,7 +19098,7 @@ function latchAttachCommand({ executable = "latch", providerSessionId }) {
|
|
|
19086
19098
|
function shouldUseLatchProvider({ providerKind, latchSelectable }) {
|
|
19087
19099
|
return trimmed5(providerKind)?.toLowerCase() === "latch" && latchSelectable === true;
|
|
19088
19100
|
}
|
|
19089
|
-
var LATCH_MANIFEST_FORMAT_VERSION, DEFAULT_LATCH_TERMINAL_SIZE, LATCH_OPEN_AS_MIN_PRODUCT_VERSION;
|
|
19101
|
+
var LATCH_MANIFEST_FORMAT_VERSION, DEFAULT_LATCH_TERMINAL_SIZE, LATCH_OPEN_AS_MIN_PRODUCT_VERSION, LATCH_OPEN_BACKGROUND_MIN_PRODUCT_VERSION;
|
|
19090
19102
|
var init_latch_launch = __esm({
|
|
19091
19103
|
"../packages/core/dist/service/latch-launch.js"() {
|
|
19092
19104
|
"use strict";
|
|
@@ -19094,6 +19106,7 @@ var init_latch_launch = __esm({
|
|
|
19094
19106
|
LATCH_MANIFEST_FORMAT_VERSION = 1;
|
|
19095
19107
|
DEFAULT_LATCH_TERMINAL_SIZE = { cols: 120, rows: 36 };
|
|
19096
19108
|
LATCH_OPEN_AS_MIN_PRODUCT_VERSION = "0.2608140931.0";
|
|
19109
|
+
LATCH_OPEN_BACKGROUND_MIN_PRODUCT_VERSION = "0.2609181007.0";
|
|
19097
19110
|
}
|
|
19098
19111
|
});
|
|
19099
19112
|
|
|
@@ -36788,6 +36801,7 @@ function openLatchViewer({
|
|
|
36788
36801
|
providerSessionId,
|
|
36789
36802
|
viewerKind,
|
|
36790
36803
|
openAs,
|
|
36804
|
+
background,
|
|
36791
36805
|
productVersion
|
|
36792
36806
|
}) {
|
|
36793
36807
|
const viewer = latchViewerFlagForKind(viewerKind);
|
|
@@ -36802,7 +36816,7 @@ function openLatchViewer({
|
|
|
36802
36816
|
const sendsOpenAs = Boolean(openAs) && latchSupportsOpenAs(productVersion);
|
|
36803
36817
|
const result = spawnLatchJson({
|
|
36804
36818
|
executable,
|
|
36805
|
-
args: buildLatchOpenArgs({ providerSessionId, viewer, openAs, productVersion })
|
|
36819
|
+
args: buildLatchOpenArgs({ providerSessionId, viewer, openAs, background, productVersion })
|
|
36806
36820
|
});
|
|
36807
36821
|
if (result.status !== 0) {
|
|
36808
36822
|
const detail = (result.stderr || result.stdout || `exit ${result.status ?? "null"}`).trim();
|
|
@@ -36812,7 +36826,13 @@ function openLatchViewer({
|
|
|
36812
36826
|
attachCommand
|
|
36813
36827
|
};
|
|
36814
36828
|
}
|
|
36815
|
-
|
|
36829
|
+
const sendsBackground = typeof background === "boolean" && latchSupportsOpenBackground(productVersion);
|
|
36830
|
+
return {
|
|
36831
|
+
ok: true,
|
|
36832
|
+
viewer,
|
|
36833
|
+
openAs: sendsOpenAs ? parseViewerOpenAs(openAs) : null,
|
|
36834
|
+
background: sendsBackground ? background : null
|
|
36835
|
+
};
|
|
36816
36836
|
}
|
|
36817
36837
|
var init_latch_launch2 = __esm({
|
|
36818
36838
|
"src/latch-launch.ts"() {
|
|
@@ -37688,6 +37708,9 @@ async function launchAgent({
|
|
|
37688
37708
|
providerSessionId: created.providerSession.providerSessionId,
|
|
37689
37709
|
viewerKind: snapshot?.viewer.kind ?? "iterm",
|
|
37690
37710
|
openAs: snapshot?.viewer.openAs ?? null,
|
|
37711
|
+
// Falls back to the resolved profile for a request claimed before the
|
|
37712
|
+
// snapshot carried `background`.
|
|
37713
|
+
background: snapshot?.viewer.background ?? options.terminalLaunchBackground ?? false,
|
|
37691
37714
|
productVersion: latchProductVersion
|
|
37692
37715
|
});
|
|
37693
37716
|
}
|
|
@@ -38231,6 +38254,8 @@ create-run-queue:
|
|
|
38231
38254
|
Returns:
|
|
38232
38255
|
The created RunQueueDto, unpaused and positioned after the existing queues.
|
|
38233
38256
|
Rules:
|
|
38257
|
+
A new queue stays until it is used. Once it has held an entry and its last
|
|
38258
|
+
entry completes, is removed, or moves away, the queue deletes itself.
|
|
38234
38259
|
Queue definitions are project configuration and require the project:update
|
|
38235
38260
|
permission, so a mission_lifecycle-scoped agent token cannot run this. Entry
|
|
38236
38261
|
operations (queue-objective, dequeue-objective, reorder-run-queue) are
|
|
@@ -38306,6 +38331,9 @@ queue-objective:
|
|
|
38306
38331
|
Choose at most one of --after, --front, and --position. Without --queue,
|
|
38307
38332
|
--after selects its queue; otherwise the default queue is used. Re-running
|
|
38308
38333
|
without placement is idempotent.
|
|
38334
|
+
Queueing an objective also queues every not-yet-started objective after it
|
|
38335
|
+
in the mission, directly behind it. Queue order and mission objective order
|
|
38336
|
+
are one sequence: reordering either reorders the other.
|
|
38309
38337
|
|
|
38310
38338
|
dequeue-objective:
|
|
38311
38339
|
Purpose:
|
|
@@ -38316,6 +38344,9 @@ dequeue-objective:
|
|
|
38316
38344
|
--project-id <id|slug|name> Confirms the objective's project
|
|
38317
38345
|
Returns:
|
|
38318
38346
|
{ removed, objectiveId }. Already-unqueued objectives return removed: false.
|
|
38347
|
+
Rules:
|
|
38348
|
+
A removed objective that has not started moves to the end of its mission's
|
|
38349
|
+
objectives, and stays last when queued again unless it is moved.
|
|
38319
38350
|
|
|
38320
38351
|
retry-queue-entry:
|
|
38321
38352
|
Purpose:
|
|
@@ -38450,15 +38481,16 @@ delete-objectives:
|
|
|
38450
38481
|
|
|
38451
38482
|
create:
|
|
38452
38483
|
Purpose:
|
|
38453
|
-
Create a draft mission without attaching.
|
|
38454
|
-
|
|
38455
|
-
|
|
38484
|
+
Create a draft mission without attaching. A project must be named
|
|
38485
|
+
explicitly; use --unassigned-to-project only for deliberate account-owned
|
|
38486
|
+
inbox capture.
|
|
38456
38487
|
Required:
|
|
38457
38488
|
--objective "<text>" or --objectives-json / --objectives-file <path|->
|
|
38458
38489
|
Optional:
|
|
38459
38490
|
--title <text>
|
|
38460
|
-
--project-id <id>
|
|
38461
|
-
--
|
|
38491
|
+
--project-id <id> Required for a project mission; never inferred
|
|
38492
|
+
--unassigned-to-project Intentionally create an account-owned inbox item
|
|
38493
|
+
--inbox Compatibility alias for --unassigned-to-project
|
|
38462
38494
|
--assigned-to <id> Workspace member to own the mission (meaningless on the inbox fallback)
|
|
38463
38495
|
--auto-advance / --no-auto-advance
|
|
38464
38496
|
Add matching objectives to the authoritative Run Queue. Defaults to off.
|
|
@@ -38475,9 +38507,9 @@ prompt:
|
|
|
38475
38507
|
Create a mission and attach to it in one call.
|
|
38476
38508
|
Required:
|
|
38477
38509
|
--objective "<text>" or --objectives-json / --objectives-file <path|->
|
|
38510
|
+
--project-id <id>
|
|
38478
38511
|
Optional:
|
|
38479
38512
|
--title <text>
|
|
38480
|
-
--project-id <id>
|
|
38481
38513
|
--agent <identifier>
|
|
38482
38514
|
--model <identifier>
|
|
38483
38515
|
--external-session-id <id>
|
|
@@ -38501,9 +38533,9 @@ record-work:
|
|
|
38501
38533
|
Required:
|
|
38502
38534
|
--objective "<text>" (or positional, or an "objective" field in --payload-json)
|
|
38503
38535
|
--summary or --summary-file <path|->
|
|
38536
|
+
--project-id <id>
|
|
38504
38537
|
Optional:
|
|
38505
38538
|
--title <text>
|
|
38506
|
-
--project-id <id>
|
|
38507
38539
|
--assigned-to <id> Workspace member to own the mission
|
|
38508
38540
|
--artifacts-json / --artifacts-file <path|->
|
|
38509
38541
|
--change-rationales-json / --change-rationales-file <path|->
|