overlord-cli 0.2607191132.0 → 0.2607191710.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.3
1
+ 0.3.4
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://antigravity.google/schemas/v1/plugin.json",
3
3
  "name": "overlord",
4
- "version": "0.3.3",
4
+ "version": "0.3.4",
5
5
  "description": "Chat-driven access to Overlord mission protocol workflows with hook-driven activity capture.",
6
6
  "author": {
7
7
  "name": "Cooperativ",
@@ -188,7 +188,7 @@ const tools = [
188
188
  name: 'overlord_deliver_session',
189
189
  title: 'Deliver mission session',
190
190
  description:
191
- 'Deliver an attached session with explicit summary and optional change rationales.',
191
+ 'Deliver an attached session with explicit summary, optional change rationales, and optional human-action/tradeoff evidence.',
192
192
  inputSchema: objectSchema(
193
193
  {
194
194
  missionId: stringProperty('Mission UUID or workspace display id.'),
@@ -201,7 +201,19 @@ const tools = [
201
201
  changeRationales: {
202
202
  type: 'array',
203
203
  description: 'Explicit change rationale objects, if files were changed.'
204
- }
204
+ },
205
+ humanActions: {
206
+ type: 'array',
207
+ description:
208
+ 'Concrete actions a human must perform; exclude Git operations and routine review/testing.'
209
+ },
210
+ tradeoffsMade: {
211
+ type: 'array',
212
+ description: 'Implementation decisions, alternatives considered, and rationale.'
213
+ },
214
+ knownRisks: { type: 'array', description: 'Residual risks or limitations.' },
215
+ deferredWork: { type: 'array', description: 'Intentionally deferred work.' },
216
+ assumptions: { type: 'array', description: 'Material implementation assumptions.' }
205
217
  },
206
218
  ['missionId', 'sessionKey', 'summary']
207
219
  )
@@ -294,6 +306,28 @@ function callOverlordTool(name, args) {
294
306
  ...(args.noFileChanges === true ? { 'no-file-changes': true } : {}),
295
307
  ...(Array.isArray(args.changeRationales)
296
308
  ? { 'change-rationales-json': args.changeRationales }
309
+ : {}),
310
+ ...(Array.isArray(args.humanActions) ||
311
+ Array.isArray(args.tradeoffsMade) ||
312
+ Array.isArray(args.knownRisks) ||
313
+ Array.isArray(args.deferredWork) ||
314
+ Array.isArray(args.assumptions)
315
+ ? {
316
+ payload: {
317
+ deliveryReport: {
318
+ schemaVersion: 1,
319
+ agentReport: {
320
+ ...(Array.isArray(args.humanActions) ? { humanActions: args.humanActions } : {}),
321
+ ...(Array.isArray(args.tradeoffsMade)
322
+ ? { tradeoffsMade: args.tradeoffsMade }
323
+ : {}),
324
+ ...(Array.isArray(args.knownRisks) ? { knownRisks: args.knownRisks } : {}),
325
+ ...(Array.isArray(args.deferredWork) ? { deferredWork: args.deferredWork } : {}),
326
+ ...(Array.isArray(args.assumptions) ? { assumptions: args.assumptions } : {})
327
+ }
328
+ }
329
+ }
330
+ }
297
331
  : {})
298
332
  });
299
333
  }
@@ -328,7 +362,7 @@ process.stdin.on('data', async chunk => {
328
362
  result: {
329
363
  protocolVersion: PROTOCOL_VERSION,
330
364
  capabilities: { tools: { listChanged: false } },
331
- serverInfo: { name: 'overlord-antigravity', version: '0.3.3' }
365
+ serverInfo: { name: 'overlord-antigravity', version: '0.3.4' }
332
366
  }
333
367
  });
334
368
  continue;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord",
3
- "version": "0.3.3",
3
+ "version": "0.3.4",
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.3",
3
+ "version": "0.3.4",
4
4
  "description": "Chat-driven access to Overlord mission protocol workflows with hook-driven activity capture.",
5
5
  "author": {
6
6
  "name": "Cooperativ",
@@ -188,7 +188,7 @@ const tools = [
188
188
  name: 'overlord_deliver_session',
189
189
  title: 'Deliver mission session',
190
190
  description:
191
- 'Deliver an attached session with explicit summary and optional change rationales.',
191
+ 'Deliver an attached session with explicit summary, optional change rationales, and optional human-action/tradeoff evidence.',
192
192
  inputSchema: objectSchema(
193
193
  {
194
194
  missionId: stringProperty('Mission UUID or workspace display id.'),
@@ -201,7 +201,19 @@ const tools = [
201
201
  changeRationales: {
202
202
  type: 'array',
203
203
  description: 'Explicit change rationale objects, if files were changed.'
204
- }
204
+ },
205
+ humanActions: {
206
+ type: 'array',
207
+ description:
208
+ 'Concrete actions a human must perform; exclude Git operations and routine review/testing.'
209
+ },
210
+ tradeoffsMade: {
211
+ type: 'array',
212
+ description: 'Implementation decisions, alternatives considered, and rationale.'
213
+ },
214
+ knownRisks: { type: 'array', description: 'Residual risks or limitations.' },
215
+ deferredWork: { type: 'array', description: 'Intentionally deferred work.' },
216
+ assumptions: { type: 'array', description: 'Material implementation assumptions.' }
205
217
  },
206
218
  ['missionId', 'sessionKey', 'summary']
207
219
  )
@@ -294,6 +306,28 @@ function callOverlordTool(name, args) {
294
306
  ...(args.noFileChanges === true ? { 'no-file-changes': true } : {}),
295
307
  ...(Array.isArray(args.changeRationales)
296
308
  ? { 'change-rationales-json': args.changeRationales }
309
+ : {}),
310
+ ...(Array.isArray(args.humanActions) ||
311
+ Array.isArray(args.tradeoffsMade) ||
312
+ Array.isArray(args.knownRisks) ||
313
+ Array.isArray(args.deferredWork) ||
314
+ Array.isArray(args.assumptions)
315
+ ? {
316
+ payload: {
317
+ deliveryReport: {
318
+ schemaVersion: 1,
319
+ agentReport: {
320
+ ...(Array.isArray(args.humanActions) ? { humanActions: args.humanActions } : {}),
321
+ ...(Array.isArray(args.tradeoffsMade)
322
+ ? { tradeoffsMade: args.tradeoffsMade }
323
+ : {}),
324
+ ...(Array.isArray(args.knownRisks) ? { knownRisks: args.knownRisks } : {}),
325
+ ...(Array.isArray(args.deferredWork) ? { deferredWork: args.deferredWork } : {}),
326
+ ...(Array.isArray(args.assumptions) ? { assumptions: args.assumptions } : {})
327
+ }
328
+ }
329
+ }
330
+ }
297
331
  : {})
298
332
  });
299
333
  }
@@ -328,7 +362,7 @@ process.stdin.on('data', async chunk => {
328
362
  result: {
329
363
  protocolVersion: PROTOCOL_VERSION,
330
364
  capabilities: { tools: { listChanged: false } },
331
- serverInfo: { name: 'overlord-codex', version: '0.3.3' }
365
+ serverInfo: { name: 'overlord-codex', version: '0.3.4' }
332
366
  }
333
367
  });
334
368
  continue;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord",
3
- "version": "0.3.3",
3
+ "version": "0.3.4",
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",
@@ -188,7 +188,7 @@ const tools = [
188
188
  name: 'overlord_deliver_session',
189
189
  title: 'Deliver mission session',
190
190
  description:
191
- 'Deliver an attached session with explicit summary and optional change rationales.',
191
+ 'Deliver an attached session with explicit summary, optional change rationales, and optional human-action/tradeoff evidence.',
192
192
  inputSchema: objectSchema(
193
193
  {
194
194
  missionId: stringProperty('Mission UUID or workspace display id.'),
@@ -201,7 +201,19 @@ const tools = [
201
201
  changeRationales: {
202
202
  type: 'array',
203
203
  description: 'Explicit change rationale objects, if files were changed.'
204
- }
204
+ },
205
+ humanActions: {
206
+ type: 'array',
207
+ description:
208
+ 'Concrete actions a human must perform; exclude Git operations and routine review/testing.'
209
+ },
210
+ tradeoffsMade: {
211
+ type: 'array',
212
+ description: 'Implementation decisions, alternatives considered, and rationale.'
213
+ },
214
+ knownRisks: { type: 'array', description: 'Residual risks or limitations.' },
215
+ deferredWork: { type: 'array', description: 'Intentionally deferred work.' },
216
+ assumptions: { type: 'array', description: 'Material implementation assumptions.' }
205
217
  },
206
218
  ['missionId', 'sessionKey', 'summary']
207
219
  )
@@ -294,6 +306,28 @@ function callOverlordTool(name, args) {
294
306
  ...(args.noFileChanges === true ? { 'no-file-changes': true } : {}),
295
307
  ...(Array.isArray(args.changeRationales)
296
308
  ? { 'change-rationales-json': args.changeRationales }
309
+ : {}),
310
+ ...(Array.isArray(args.humanActions) ||
311
+ Array.isArray(args.tradeoffsMade) ||
312
+ Array.isArray(args.knownRisks) ||
313
+ Array.isArray(args.deferredWork) ||
314
+ Array.isArray(args.assumptions)
315
+ ? {
316
+ payload: {
317
+ deliveryReport: {
318
+ schemaVersion: 1,
319
+ agentReport: {
320
+ ...(Array.isArray(args.humanActions) ? { humanActions: args.humanActions } : {}),
321
+ ...(Array.isArray(args.tradeoffsMade)
322
+ ? { tradeoffsMade: args.tradeoffsMade }
323
+ : {}),
324
+ ...(Array.isArray(args.knownRisks) ? { knownRisks: args.knownRisks } : {}),
325
+ ...(Array.isArray(args.deferredWork) ? { deferredWork: args.deferredWork } : {}),
326
+ ...(Array.isArray(args.assumptions) ? { assumptions: args.assumptions } : {})
327
+ }
328
+ }
329
+ }
330
+ }
297
331
  : {})
298
332
  });
299
333
  }
@@ -328,7 +362,7 @@ process.stdin.on('data', async chunk => {
328
362
  result: {
329
363
  protocolVersion: PROTOCOL_VERSION,
330
364
  capabilities: { tools: { listChanged: false } },
331
- serverInfo: { name: 'overlord-cursor', version: '0.3.3' }
365
+ serverInfo: { name: 'overlord-cursor', version: '0.3.4' }
332
366
  }
333
367
  });
334
368
  continue;
@@ -22,6 +22,12 @@ Use this mode when the prompt already contains a mission ID or explicitly says t
22
22
  6. If blocked, call `ovld protocol ask --session-key <sessionKey> --mission-id <mission_id> --question "..."` and stop.
23
23
  7. Deliver last with `ovld protocol deliver --session-key <sessionKey> --mission-id <mission_id> --summary "..."`, including `changeRationales` only for meaningful behavioral file changes made as part of this mission.
24
24
 
25
+ At delivery, provide `deliveryReport.agentReport` through `--payload-json` / `--payload-file`: use
26
+ `humanActions`, `tradeoffsMade`, `knownRisks`, `deferredWork`, and `assumptions`, with empty arrays
27
+ when none apply. Human actions are concrete work a user must perform outside completed agent work;
28
+ never include Git operations or routine review/testing. Tradeoffs record the implementation decision,
29
+ alternatives considered, and rationale. These fields improve review visibility but never block delivery.
30
+
25
31
  For full command syntax, flags, phase values, and event types see **CLI Command Reference** below.
26
32
 
27
33
  ## Missions vs Objectives
@@ -164,6 +170,33 @@ EOF
164
170
 
165
171
  If `heartbeat` succeeds but `deliver` or `update` fails, the session is likely fine — retry with large JSON on stdin instead of inline `--*-json`.
166
172
 
173
+ ### Delivery Evidence
174
+
175
+ Send agent-authored facts in the delivery payload; Overlord stores an immediate deterministic
176
+ presentation, so do not wait for or invoke an AI provider.
177
+
178
+ ```json
179
+ {
180
+ "deliveryReport": {
181
+ "schemaVersion": 1,
182
+ "agentReport": {
183
+ "humanActions": [],
184
+ "tradeoffsMade": [],
185
+ "knownRisks": [],
186
+ "deferredWork": [],
187
+ "assumptions": []
188
+ }
189
+ }
190
+ }
191
+ ```
192
+
193
+ Only list a human action when a person must perform a concrete non-Git step outside the
194
+ agent's completed work (for example, add a secret, run a production migration, deploy, or
195
+ configure an external integration). Never list committing, pushing, opening a pull request,
196
+ reviewing code, or ordinary tests. A tradeoff must state the decision, alternatives considered,
197
+ and rationale. Missing evidence is normalized to empty arrays for compatibility, but agents
198
+ should report it when applicable.
199
+
167
200
  ### Preflight: check your changes before delivering
168
201
 
169
202
  Never hand-triage `git status` to figure out which dirty files are yours. Run the preflight first:
package/dist/index.js CHANGED
@@ -14673,6 +14673,9 @@ deliver:
14673
14673
  --mission-id <id>
14674
14674
  --summary or --summary-file <path|->
14675
14675
  or: --payload-json / --payload-file <path|-> with { summary, artifacts, changeRationales }
14676
+ The payload may also include deliveryReport: { schemaVersion: 1, agentReport: {
14677
+ humanActions, tradeoffsMade, knownRisks, deferredWork, assumptions } }. Use empty arrays
14678
+ when none apply. Human actions exclude Git operations and routine review/testing.
14676
14679
  Optional:
14677
14680
  --artifacts-json / --artifacts-file <path|->
14678
14681
  --change-rationales-json / --change-rationales-file <path|->
@@ -17171,7 +17174,7 @@ async function runManagementCommand({
17171
17174
  events: `/api/missions/${encodeURIComponent(missionId)}/events`,
17172
17175
  artifacts: `/api/missions/${encodeURIComponent(missionId)}/artifacts`,
17173
17176
  rationales: `/api/missions/${encodeURIComponent(missionId)}/file-changes`,
17174
- deliveries: `/api/missions/${encodeURIComponent(missionId)}/events`
17177
+ deliveries: `/api/missions/${encodeURIComponent(missionId)}/deliveries`
17175
17178
  };
17176
17179
  const path27 = sub ? pathBySub[sub] : void 0;
17177
17180
  if (!path27) {