overlord-cli 0.2609071353.0 → 0.2609081135.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.41
1
+ 0.3.43
@@ -1,4 +1,4 @@
1
- contractVersion: "134"
1
+ contractVersion: "138"
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.41",
4
+ "version": "0.3.43",
5
5
  "description": "Chat-driven access to Overlord mission protocol workflows through skills and MCP.",
6
6
  "author": {
7
7
  "name": "Cooperativ",
@@ -9,4 +9,6 @@ Use this when the prompts are sequential steps toward the same feature or goal.
9
9
  Run:
10
10
  `ovld protocol add-objectives --mission-id <mission_id> --objectives-json '[{"objective":"Step one"},{"objective":"Step two"}]'`
11
11
 
12
+ To assign an agent to the appended objectives, add `"agent":"<id>"` (and optional `"model"`) to each item, or pass `--objective-agent <id>` / `--objective-model <id>` as the default.
13
+
12
14
  Index 0 is the first newly added objective to execute; later indexes queue after it.
@@ -9,6 +9,8 @@ If it already contains flags such as `--title`, `--priority`, `--project-id`, `-
9
9
  Otherwise, treat the argument as the objective text and run:
10
10
  `ovld protocol create --agent antigravity --objectives-json '[{"objective":"<objective>"}]'`
11
11
 
12
+ When the user names an agent for the work, assign it on the objective itself — add `"agent":"<id>"` (and optional `"model"`) to the objectives item, or pass `--objective-agent <id>` / `--objective-model <id>`. Never create the mission and then append a second objective just to name an agent.
13
+
12
14
  If no objective was provided, ask the user for one and stop.
13
15
 
14
16
  After the command succeeds, report the new `MISSION_ID`.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord",
3
- "version": "0.3.41",
3
+ "version": "0.3.43",
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",
@@ -11,5 +11,7 @@ Use this when the prompts are sequential steps toward the same feature or goal.
11
11
  Run:
12
12
  `ovld protocol add-objectives --mission-id <mission_id> --objectives-json '[{"objective":"Step one"},{"objective":"Step two"}]'`
13
13
 
14
+ To assign an agent to the appended objectives, add `"agent":"<id>"` (and optional `"model"`) to each item, or pass `--objective-agent <id>` / `--objective-model <id>` as the default.
15
+
14
16
  Index 0 is the first newly added objective to execute; later indexes queue after it.
15
17
 
@@ -12,6 +12,8 @@ If it already contains flags such as `--title`, `--priority`, `--project-id`, `-
12
12
  Otherwise, treat `$ARGUMENTS` as the objective text and run:
13
13
  `ovld protocol create --agent claude-code --objectives-json '[{"objective":"<objective>"}]'`
14
14
 
15
+ When the user names an agent for the work, assign it on the objective itself — add `"agent":"<id>"` (and optional `"model"`) to the objectives item, or pass `--objective-agent <id>` / `--objective-model <id>`. Never create the mission and then append a second objective just to name an agent.
16
+
15
17
  If no objective was provided, ask the user for one and stop.
16
18
 
17
19
  After the command succeeds, report the new `MISSION_ID`.
@@ -1,4 +1,4 @@
1
- contractVersion: "134"
1
+ contractVersion: "138"
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.41",
3
+ "version": "0.3.43",
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: "134"
1
+ contractVersion: "138"
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.41",
3
+ "version": "0.3.43",
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",
@@ -5,4 +5,6 @@ Use this when the prompts are sequential steps toward the same feature or goal.
5
5
  Run:
6
6
  `ovld protocol add-objectives --mission-id <mission_id> --objectives-json '[{"objective":"Step one"},{"objective":"Step two"}]'`
7
7
 
8
+ To assign an agent to the appended objectives, add `"agent":"<id>"` (and optional `"model"`) to each item, or pass `--objective-agent <id>` / `--objective-model <id>` as the default.
9
+
8
10
  Index 0 is the first newly added objective to execute; later indexes queue after it.
@@ -8,6 +8,8 @@ If it already contains flags such as `--title`, `--priority`, `--project-id`, `-
8
8
  Otherwise, treat the input as the objective text and run:
9
9
  `ovld protocol create --agent cursor --objectives-json '[{"objective":"<objective>"}]'`
10
10
 
11
+ When the user names an agent for the work, assign it on the objective itself — add `"agent":"<id>"` (and optional `"model"`) to the objectives item, or pass `--objective-agent <id>` / `--objective-model <id>`. Never create the mission and then append a second objective just to name an agent.
12
+
11
13
  If no objective was provided, ask the user for one and stop.
12
14
 
13
15
  After the command succeeds, report the new `MISSION_ID`.
@@ -1,4 +1,4 @@
1
- contractVersion: "134"
1
+ contractVersion: "138"
2
2
  componentType: connector
3
3
  componentKey: cursor
4
4
  label: "Cursor Connector"
@@ -1,4 +1,4 @@
1
- contractVersion: "134"
1
+ contractVersion: "138"
2
2
  componentType: connector
3
3
  componentKey: opencode
4
4
  label: "OpenCode Connector"
@@ -1,4 +1,4 @@
1
- contractVersion: "134"
1
+ contractVersion: "138"
2
2
  componentType: connector
3
3
  componentKey: pi
4
4
  label: "PI Connector"
@@ -29,8 +29,11 @@ Use this mode when the prompt already contains a mission ID or explicitly says t
29
29
  When review facts genuinely apply, you may add `deliveryReport.agentReport` through `--payload-json` / `--payload-file`: use
30
30
  `humanActions`, `tradeoffsMade`, `knownRisks`, `deferredWork`, and `assumptions`, with empty arrays
31
31
  when none apply. Human actions are concrete work a user must perform outside completed agent work;
32
- never include Git operations or routine review/testing. Tradeoffs record the implementation decision,
33
- alternatives considered, and rationale. These fields improve review visibility but never block delivery.
32
+ never include Git operations or routine review/testing. Every human action needs `action`, `reason`,
33
+ and `category`; add `command`, `verify`, and `link` whenever they exist so the operator can act
34
+ without re-reading the delivery (see **Delivery Evidence** below). Tradeoffs record the
35
+ implementation decision, alternatives considered, and rationale. These fields improve review
36
+ visibility but never block delivery.
34
37
 
35
38
  For full command syntax, flags, phase values, and event types see **CLI Command Reference** below.
36
39
 
@@ -205,6 +208,46 @@ configure an external integration). Never list committing, pushing, opening a pu
205
208
  reviewing code, or ordinary tests. A tradeoff must state the decision, alternatives considered,
206
209
  and rationale. Omit the report when none of these facts apply.
207
210
 
211
+ #### Writing a human action the operator can complete
212
+
213
+ Human actions are collected across every mission into the Feed page's **Human actions** rail,
214
+ where the operator reads them without the delivery context. Each item must stand alone:
215
+
216
+ | Field | Expected | What to write |
217
+ | ---------- | -------- | ---------------------------------------------------------------------------------------------- |
218
+ | `action` | required | One imperative sentence naming the exact thing to do, where, and with what value. |
219
+ | `reason` | expected | Why the step is needed and what breaks or stays incomplete until it is done. |
220
+ | `category` | expected | `environment`, `database`, `deployment`, `codegen`, `packaging`, `external_service`, or `other`.|
221
+ | `blocking` | optional | `true` when the delivered work does not function until this is done. |
222
+ | `command` | when known | The exact command, setting name, or value to apply, verbatim. Placeholders in `<angle brackets>`. |
223
+ | `verify` | when known | How the operator confirms it worked: a command to run, a URL to open, or the state to observe. |
224
+ | `link` | when known | An HTTP(S) URL or a repository-relative file path (never another URI scheme). |
225
+
226
+ Vague (the operator has to rediscover everything):
227
+
228
+ ```json
229
+ { "action": "Set up the env var for Gemini." }
230
+ ```
231
+
232
+ Good (the operator can finish it from the rail alone):
233
+
234
+ ```json
235
+ {
236
+ "action": "Add GEMINI_API_KEY to the production backend service on Railway.",
237
+ "reason": "The delivery-compose worker falls back to the raw summary until a provider key is present.",
238
+ "category": "environment",
239
+ "blocking": false,
240
+ "command": "railway variables set GEMINI_API_KEY=<key> --service backend",
241
+ "verify": "The next delivery card shows a composed presentation instead of 'fallback' in the worker log.",
242
+ "link": ".env.example"
243
+ }
244
+ ```
245
+
246
+ Overlord also derives its own `deterministic_rule` actions from the changed paths (new
247
+ migrations, `.env.example` changes, dependency manifests, CI workflow files) and always shows
248
+ them, so leaving one out never hides it; reporting it yourself with a real `command` and
249
+ `verify` replaces the generic wording with something the operator can follow.
250
+
208
251
  ### Change ledger health (diagnostic)
209
252
 
210
253
  Use this only to inspect or troubleshoot objective-ledger synchronization and hook health:
@@ -284,6 +327,7 @@ When creating missions from within a repository:
284
327
  - 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":"..."}]'`.
285
328
  - `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).
286
329
  - `add-objectives` uses the same per-item `autoAdvance` field and `--auto-advance` / `--no-auto-advance` default.
330
+ - **Assign the agent on the objectives you are already creating.** Every objective item on `create`, `prompt`, and `add-objectives` takes optional `"agent"` (and `"model"`, which requires an agent), and `--objective-agent <id>` / `--objective-model <id>` set the default for items that name no `agent` of their own. Never create a mission and then append a second objective just to name an agent — that leaves a duplicate objective behind. Note this is **not** `--agent`, which records who created the mission (and, on `prompt`, which agent attaches).
287
331
  - To change auto-advance on an existing objective: `ovld protocol update-objective --objective-id <id> --auto-advance` or `--no-auto-advance`.
288
332
  - `record-work` is different: it creates exactly one **completed** objective. It takes a single `--objective` (or positional / an `objective` field in `--payload-json`) plus a `--summary` and the file-change data — not `--objectives-json`. See [reference/record-work.md](reference/record-work.md).
289
333
  - `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.
@@ -292,6 +336,12 @@ When creating missions from within a repository:
292
336
  ovld protocol create --agent <agent-identifier> --objectives-json '[{"objective":"Capture follow-up work from this repository"}]'
293
337
  ```
294
338
 
339
+ ```bash
340
+ # One call: a draft mission whose first objective is already assigned to Codex.
341
+ ovld protocol create --agent <agent-identifier> \
342
+ --objectives-json '[{"objective":"Implement the API","agent":"codex","model":"gpt-5.6-terra"},{"objective":"Add CLI docs","agent":"claude"}]'
343
+ ```
344
+
295
345
  ```bash
296
346
  ovld protocol prompt --agent <agent-identifier> --objectives-json '[{"objective":"Implement feature X"}]'
297
347
  ```
@@ -181,6 +181,7 @@ When creating missions from within a repository:
181
181
  - Add objectives to the same mission when each prompt is a sequential step toward the same feature or goal; use `ovld protocol add-objectives --mission-id <mission_id> --objectives-json '[{"objective":"..."}]'`.
182
182
  - `create` and `prompt` require `--objectives-json` or `--objectives-file` with an ordered array of `{ "objective": "...", "title": "...", "autoAdvance": true }` objects. A single objective is just an array with one item. `--auto-advance` / `--no-auto-advance` map each opted-in item to authoritative Run Queue membership (default off).
183
183
  - `add-objectives` uses the same per-item `autoAdvance` field and `--auto-advance` / `--no-auto-advance` mapping.
184
+ - Every objective item on `create`, `prompt`, and `add-objectives` also takes optional `"agent"` and `"model"` (a model requires an agent), and `--objective-agent <id>` / `--objective-model <id>` set the default for items that name no `agent` of their own. Assign the agent on the objectives you are already creating rather than appending a second objective just to name one. `--objective-agent` is distinct from `--agent`, which records creation provenance (and, on `prompt`, the attaching agent).
184
185
  - Use `ovld protocol run-queue [--project-id <id|slug|name>|--objective-id <id>|--mission-id <id>] [--queue <id|name>]` to inspect live queues. Entry operations use `queue-objective --objective-id <id> [--queue <id|name>] [--after <queued-entry|objective>|--front|--position <rank>]`, `dequeue-objective --objective-id <id>`, and `reorder-run-queue --queue <id|name> --ordered-entries-json <json>`; they require `execution_request:create`. Queue-definition operations use `create-run-queue`, `update-run-queue`, `delete-run-queue`, and `reorder-project-run-queues`; they require `project:update` and therefore a full-scope token.
185
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
 
@@ -188,6 +189,12 @@ When creating missions from within a repository:
188
189
  ovld protocol create --agent <agent-identifier> --objectives-json '[{"objective":"Capture follow-up work from this repository"}]'
189
190
  ```
190
191
 
192
+ ```bash
193
+ # One call: a draft mission whose first objective is already assigned to Codex.
194
+ ovld protocol create --agent <agent-identifier> \
195
+ --objectives-json '[{"objective":"Implement the API","agent":"codex","model":"gpt-5.6-terra"},{"objective":"Add CLI docs","agent":"claude"}]'
196
+ ```
197
+
191
198
  ```bash
192
199
  ovld protocol prompt --agent <agent-identifier> --objectives-json '[{"objective":"Implement feature X"}]'
193
200
  ```
@@ -264,6 +264,12 @@ const tools = [
264
264
  objective: stringProperty('Initial objective text.'),
265
265
  title: stringProperty('Optional mission title.'),
266
266
  resourceKey: stringProperty('Optional logical project resource key for the objective.'),
267
+ agent: stringProperty(
268
+ 'Optional agent identifier to assign to the initial objective, such as codex or claude. Omitted leaves the project launch-preference default; set it here instead of appending a second objective just to name an agent.'
269
+ ),
270
+ model: stringProperty(
271
+ 'Optional model identifier for the assigned agent. Requires agent; rejected without it.'
272
+ ),
267
273
  assignedTo: stringProperty(
268
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.'
269
275
  ),
@@ -622,7 +628,25 @@ const tools = [
622
628
  humanActions: {
623
629
  type: 'array',
624
630
  description:
625
- 'Concrete actions a human must perform; exclude Git operations and routine review/testing.'
631
+ 'Concrete actions a human must perform; exclude Git operations and routine review/testing. ' +
632
+ 'Each item needs action, reason, and category, plus command (exact command or setting), verify (how to confirm it worked), and link (HTTP(S) URL or repo-relative path) whenever they exist. ' +
633
+ 'Vague: { action: "Set up the env var for Gemini." }. Good: { action: "Add GEMINI_API_KEY to the production backend service on Railway.", reason: "Compose falls back to the raw summary without it.", category: "environment", command: "railway variables set GEMINI_API_KEY=<key> --service backend", verify: "The next delivery card shows a composed presentation.", link: ".env.example" }.',
634
+ items: {
635
+ type: 'object',
636
+ 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.' },
639
+ category: {
640
+ type: 'string',
641
+ description: 'Expected. environment, database, deployment, codegen, packaging, external_service, or other.'
642
+ },
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
+ verify: { type: 'string', description: 'How the operator confirms it worked.' },
646
+ link: { type: 'string', description: 'HTTP(S) URL or repository-relative file path.' }
647
+ },
648
+ required: ['action']
649
+ }
626
650
  },
627
651
  tradeoffsMade: {
628
652
  type: 'array',
@@ -830,6 +854,12 @@ async function callOverlordTool(name, args) {
830
854
  ...(optionalString(args, 'resourceKey')
831
855
  ? { resource: requiredString(args, 'resourceKey') }
832
856
  : {}),
857
+ ...(optionalString(args, 'agent')
858
+ ? { 'objective-agent': requiredString(args, 'agent') }
859
+ : {}),
860
+ ...(optionalString(args, 'model')
861
+ ? { 'objective-model': requiredString(args, 'model') }
862
+ : {}),
833
863
  ...(optionalString(args, 'assignedTo')
834
864
  ? { 'assigned-to': requiredString(args, 'assignedTo') }
835
865
  : {}),
@@ -1175,7 +1205,7 @@ process.stdin.on('data', async chunk => {
1175
1205
  result: {
1176
1206
  protocolVersion: PROTOCOL_VERSION,
1177
1207
  capabilities: { tools: { listChanged: false } },
1178
- serverInfo: { name: 'overlord-__OVERLORD_ADAPTER_KEY__', version: '0.3.41' }
1208
+ serverInfo: { name: 'overlord-__OVERLORD_ADAPTER_KEY__', version: '0.3.43' }
1179
1209
  }
1180
1210
  });
1181
1211
  continue;
package/dist/index.js CHANGED
@@ -35542,7 +35542,7 @@ var init_zod = __esm({
35542
35542
  });
35543
35543
 
35544
35544
  // ../packages/core/dist/service/delivery-report.js
35545
- var MAX_ITEMS, MAX_ALTERNATIVES, MAX_ACTION_LENGTH, MAX_DETAIL_LENGTH, humanActionCategorySchema, conciseTextSchema, humanActionSchema, tradeoffSchema, MAX_WARNINGS, normalizedHumanActionSchema, normalizedTradeoffSchema, normalizedAgentReportSchema, deliveryPresentationSchema, persistedDeliveryReportSchema;
35545
+ var MAX_ITEMS, MAX_ALTERNATIVES, MAX_ACTION_LENGTH, MAX_DETAIL_LENGTH, humanActionCategorySchema, MAX_COMMAND_LENGTH2, MAX_LINK_LENGTH, conciseTextSchema, commandTextSchema, LINK_PATTERN, linkSchema, humanActionSchema, tradeoffSchema, MAX_WARNINGS, normalizedHumanActionSchema, normalizedTradeoffSchema, normalizedAgentReportSchema, deliveryPresentationSchema, persistedDeliveryReportSchema;
35546
35546
  var init_delivery_report = __esm({
35547
35547
  "../packages/core/dist/service/delivery-report.js"() {
35548
35548
  "use strict";
@@ -35560,12 +35560,20 @@ var init_delivery_report = __esm({
35560
35560
  "external_service",
35561
35561
  "other"
35562
35562
  ]);
35563
+ MAX_COMMAND_LENGTH2 = 600;
35564
+ MAX_LINK_LENGTH = 400;
35563
35565
  conciseTextSchema = external_exports.string().trim().min(1).max(MAX_DETAIL_LENGTH);
35566
+ commandTextSchema = external_exports.string().trim().min(1).max(MAX_COMMAND_LENGTH2);
35567
+ LINK_PATTERN = /^(?:https?:\/\/\S+|(?![a-z][a-z0-9+.-]*:)[^\s<>"'`]+)$/i;
35568
+ linkSchema = external_exports.string().trim().min(1).max(MAX_LINK_LENGTH).regex(LINK_PATTERN);
35564
35569
  humanActionSchema = external_exports.strictObject({
35565
35570
  action: external_exports.string().trim().min(1).max(MAX_ACTION_LENGTH),
35566
35571
  reason: conciseTextSchema.optional(),
35567
35572
  category: humanActionCategorySchema.optional(),
35568
- blocking: external_exports.boolean().optional()
35573
+ blocking: external_exports.boolean().optional(),
35574
+ command: commandTextSchema.optional(),
35575
+ verify: conciseTextSchema.optional(),
35576
+ link: linkSchema.optional()
35569
35577
  });
35570
35578
  tradeoffSchema = external_exports.strictObject({
35571
35579
  decision: external_exports.string().trim().min(1).max(MAX_ACTION_LENGTH),
@@ -35580,6 +35588,9 @@ var init_delivery_report = __esm({
35580
35588
  reason: conciseTextSchema.optional(),
35581
35589
  category: humanActionCategorySchema,
35582
35590
  blocking: external_exports.boolean().optional(),
35591
+ command: commandTextSchema.optional(),
35592
+ verify: conciseTextSchema.optional(),
35593
+ link: linkSchema.optional(),
35583
35594
  source: external_exports.enum(["agent", "change_rationale", "deterministic_rule"]),
35584
35595
  sourceRef: external_exports.string().trim().min(1).max(200).optional()
35585
35596
  });
@@ -38379,10 +38390,13 @@ add-objectives:
38379
38390
  Optional:
38380
38391
  --auto-advance / --no-auto-advance
38381
38392
  Default auto-advance for items that omit "autoAdvance". Defaults to off.
38393
+ --objective-agent <id> / --objective-model <id>
38394
+ Default launch selection for items that name no "agent" of their own.
38395
+ --objective-model requires --objective-agent.
38382
38396
  Notes:
38383
38397
  Each item is { "objective": "...", "title": "...", "agent": "codex",
38384
38398
  "model": "gpt-5.6-terra", "autoAdvance": true|false, "resourceKey": "..." }.
38385
- model requires agent. Per-item autoAdvance wins over the flag.
38399
+ model requires agent. Per-item autoAdvance and agent win over the flags.
38386
38400
 
38387
38401
  update-objective:
38388
38402
  Purpose:
@@ -38441,6 +38455,12 @@ create:
38441
38455
  --auto-advance / --no-auto-advance
38442
38456
  Add matching objectives to the authoritative Run Queue. Defaults to off.
38443
38457
  Per-item override: "autoAdvance": true|false in --objectives-json items.
38458
+ --objective-agent <id> / --objective-model <id>
38459
+ Assign a launch agent (and its model) to the objectives created here, so
38460
+ a mission can be created already assigned instead of appending a second
38461
+ objective just to name an agent. This is not --agent, which records
38462
+ creation provenance. Seeds only items with no "agent" of their own;
38463
+ --objective-model requires --objective-agent.
38444
38464
 
38445
38465
  prompt:
38446
38466
  Purpose:
@@ -38457,6 +38477,9 @@ prompt:
38457
38477
  --auto-advance / --no-auto-advance
38458
38478
  Add matching objectives to the authoritative Run Queue. Defaults to off.
38459
38479
  Per-item override: "autoAdvance": true|false in --objectives-json items.
38480
+ --objective-agent <id> / --objective-model <id>
38481
+ Assign a launch agent (and its model) to the objectives created here.
38482
+ Distinct from --agent, which names the attaching agent for the session.
38460
38483
  Returns:
38461
38484
  New mission/session JSON plus SESSION_KEY on stderr when available.
38462
38485
 
@@ -38544,6 +38567,21 @@ deliver:
38544
38567
  The payload may also include deliveryReport: { schemaVersion: 1, agentReport: {
38545
38568
  humanActions, tradeoffsMade, knownRisks, deferredWork, assumptions } }. Use empty arrays
38546
38569
  when none apply. Human actions exclude Git operations and routine review/testing.
38570
+ Human action shape (each item in agentReport.humanActions):
38571
+ {
38572
+ "action": "Add GEMINI_API_KEY to the production backend service on Railway.", // required. one imperative sentence: what, where, which value.
38573
+ "reason": "Compose falls back to the raw summary without it.", // expected. why, and what stays broken until done.
38574
+ "category": "environment", // expected. environment | database | deployment | codegen | packaging | external_service | other
38575
+ "blocking": false, // optional. true when the delivered work does not function until this is done.
38576
+ "command": "railway variables set GEMINI_API_KEY=<key> --service backend", // when known. exact command/setting, verbatim.
38577
+ "verify": "Next delivery card shows a composed presentation.", // when known. how the operator confirms it worked.
38578
+ "link": ".env.example" // when known. HTTP(S) URL or repo-relative path only.
38579
+ }
38580
+ Vague: { "action": "Set up the env var for Gemini." } forces the operator to rediscover
38581
+ the name, the place, and the check. Actions are read from the Feed rail without the
38582
+ delivery, so each must stand alone. Overlord adds deterministic_rule actions for new
38583
+ migrations, .env.example edits, dependency manifests, and CI workflow files on its own;
38584
+ report those yourself when you can supply the real command and verify step.
38547
38585
  Optional:
38548
38586
  --artifacts-json / --artifacts-file <path|->
38549
38587
  --change-rationales-json / --change-rationales-file <path|->
@@ -40493,17 +40531,25 @@ async function runManagementCommand({
40493
40531
  name: "--auto-advance",
40494
40532
  negatedName: "--no-auto-advance"
40495
40533
  });
40534
+ const objectiveAgent = flagValue(parsed.flags, "--objective-agent")?.trim() || void 0;
40535
+ const objectiveModel = flagValue(parsed.flags, "--objective-model")?.trim() || void 0;
40536
+ if (objectiveModel && !objectiveAgent) {
40537
+ throw new CliError({ message: "--objective-model requires --objective-agent" });
40538
+ }
40539
+ const withAgentSelection = (item) => objectiveAgent && !item.agent ? { ...item, agent: objectiveAgent, model: item.model ?? objectiveModel ?? null } : item;
40496
40540
  const parsedObjectives = objectivesJson ? JSON.parse(objectivesJson) : null;
40497
- const objectives = parsedObjectives ? parsedObjectives.map((item) => ({
40498
- ...item,
40499
- ...item.autoAdvance === void 0 && autoAdvance !== void 0 ? { autoAdvance } : {}
40500
- })) : objective ? [
40501
- {
40541
+ const objectives = parsedObjectives ? parsedObjectives.map(
40542
+ (item) => withAgentSelection({
40543
+ ...item,
40544
+ ...item.autoAdvance === void 0 && autoAdvance !== void 0 ? { autoAdvance } : {}
40545
+ })
40546
+ ) : objective ? [
40547
+ withAgentSelection({
40502
40548
  objective,
40503
40549
  title: flagValue(parsed.flags, "--title") ?? null,
40504
40550
  ...autoAdvance !== void 0 ? { autoAdvance } : {},
40505
40551
  ...flagValue(parsed.flags, "--resource") ? { resourceKey: flagValue(parsed.flags, "--resource") } : {}
40506
- }
40552
+ })
40507
40553
  ] : [];
40508
40554
  const first = objectives[0];
40509
40555
  if (!first) {
@@ -41496,6 +41542,8 @@ var COMMAND_FLAGS = {
41496
41542
  "--project-id",
41497
41543
  "--title",
41498
41544
  "--resource",
41545
+ "--objective-agent",
41546
+ "--objective-model",
41499
41547
  "--auto-advance",
41500
41548
  "--no-auto-advance"
41501
41549
  ],
@@ -41507,6 +41555,8 @@ var COMMAND_FLAGS = {
41507
41555
  "--title",
41508
41556
  "--resource",
41509
41557
  "--agent",
41558
+ "--objective-agent",
41559
+ "--objective-model",
41510
41560
  "--auto-advance",
41511
41561
  "--no-auto-advance"
41512
41562
  ],