overlord-cli 0.2605241431.0 → 0.2605241542.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.
@@ -48,10 +48,25 @@ function parseFlags(args) {
48
48
 
49
49
  function buildUsage(commandName) {
50
50
  if (commandName === 'prompt') {
51
- return 'Usage: ovld prompt --objectives-json \'[{"objective":"..."}]\' [--objectives-file <path>] [--title "..."] [--acceptance-criteria "..."] [--available-tools "..."] [--execution-target agent|human] [--priority low|medium|high|urgent] [--project-id <id>] [--agent <agent>] [--model <identifier>] [--delegate <agent>]';
51
+ return 'Usage: ovld prompt --objectives-json \'[{"objective":"..."}]\' [--objectives-file <path>] [--title "..."] [--acceptance-criteria "..."] [--available-tools "..."] [--for-human] [--priority low|medium|high|urgent] [--project-id <id>] [--agent <agent>] [--model <identifier>] [--delegate <agent>]';
52
52
  }
53
53
 
54
- return 'Usage: ovld create --objectives-json \'[{"objective":"..."}]\' [--objectives-file <path>] [--title "..."] [--acceptance-criteria "..."] [--available-tools "..."] [--execution-target agent|human] [--priority low|medium|high|urgent] [--project-id <id>] [--agent <agent>] [--model <identifier>] [--delegate <agent>]';
54
+ return 'Usage: ovld create --objectives-json \'[{"objective":"..."}]\' [--objectives-file <path>] [--title "..."] [--acceptance-criteria "..."] [--available-tools "..."] [--for-human] [--priority low|medium|high|urgent] [--project-id <id>] [--agent <agent>] [--model <identifier>] [--delegate <agent>]';
55
+ }
56
+
57
+ function resolveForHumanFlag(flags) {
58
+ if (flags['for-human'] !== undefined) {
59
+ const raw = flags['for-human'];
60
+ if (raw === true) return true;
61
+ const normalized = String(raw).trim().toLowerCase();
62
+ return normalized === '' || normalized === 'true' || normalized === '1';
63
+ }
64
+
65
+ if (flags['execution-target'] !== undefined) {
66
+ return String(flags['execution-target']).trim().toLowerCase() === 'human';
67
+ }
68
+
69
+ return false;
55
70
  }
56
71
 
57
72
  function ensureObjective(commandName, objective) {
@@ -331,7 +346,7 @@ async function runTicketCreationFlow(args, { commandName, launchAgent }) {
331
346
  title: String(flags.title ?? ''),
332
347
  acceptanceCriteria: String(flags['acceptance-criteria'] ?? ''),
333
348
  availableTools: String(flags['available-tools'] ?? ''),
334
- executionTarget: String(flags['execution-target'] ?? 'agent'),
349
+ forHuman: resolveForHumanFlag(flags),
335
350
  priority: String(flags.priority ?? 'medium'),
336
351
  projectId: selectedProject.id,
337
352
  ...(ticketDelegate ? { delegate: ticketDelegate } : {})
@@ -267,6 +267,24 @@ function resolveTimeout(flags) {
267
267
  return DEFAULT_TIMEOUT_MS;
268
268
  }
269
269
 
270
+ function resolveForHumanFlag(flags) {
271
+ if (flags['for-human'] !== undefined) {
272
+ const raw = flags['for-human'];
273
+ if (raw === true) return true;
274
+ if (raw === false) return false;
275
+ const normalized = String(raw).trim().toLowerCase();
276
+ if (normalized === '' || normalized === 'true' || normalized === '1') return true;
277
+ if (normalized === 'false' || normalized === '0') return false;
278
+ throw new Error('--for-human must be a boolean flag or one of true/false.');
279
+ }
280
+
281
+ if (flags['execution-target'] !== undefined) {
282
+ return String(flags['execution-target']).trim().toLowerCase() === 'human';
283
+ }
284
+
285
+ return undefined;
286
+ }
287
+
270
288
  function parseRepeatedCliFlags(args, name) {
271
289
  const result = [];
272
290
  const prefix = `--${name}=`;
@@ -2161,6 +2179,7 @@ async function protocolPrompt(args) {
2161
2179
  const personal = Boolean(flags.personal);
2162
2180
  const workingDirectory =
2163
2181
  flags['working-directory'] ?? (!flags['project-id'] && !personal ? process.cwd() : undefined);
2182
+ const forHuman = resolveForHumanFlag(flags);
2164
2183
 
2165
2184
  const body = {
2166
2185
  ...objectiveInput,
@@ -2176,7 +2195,7 @@ async function protocolPrompt(args) {
2176
2195
  ? { acceptanceCriteria: String(flags['acceptance-criteria']) }
2177
2196
  : {}),
2178
2197
  ...(flags['available-tools'] ? { availableTools: String(flags['available-tools']) } : {}),
2179
- ...(flags['execution-target'] ? { executionTarget: String(flags['execution-target']) } : {}),
2198
+ ...(forHuman !== undefined ? { forHuman } : {}),
2180
2199
  delegate: resolveProtocolTicketDelegate(flags, modelIdentifier, agentIdentifier),
2181
2200
  ...(flags['parent-session-key']
2182
2201
  ? { parentSessionKey: String(flags['parent-session-key']) }
@@ -2248,6 +2267,7 @@ async function protocolCreateTicket(args) {
2248
2267
  const timeoutMs = resolveTimeout(flags);
2249
2268
  const agentIdentifier = resolveProtocolAgentIdentifier(flags);
2250
2269
  const modelIdentifier = resolveProtocolModelIdentifier(flags);
2270
+ const forHuman = resolveForHumanFlag(flags);
2251
2271
 
2252
2272
  const hasSessionContext = Boolean(sessionKey && ticketId);
2253
2273
 
@@ -2263,7 +2283,7 @@ async function protocolCreateTicket(args) {
2263
2283
  ? { acceptanceCriteria: String(flags['acceptance-criteria']) }
2264
2284
  : {}),
2265
2285
  ...(flags['available-tools'] ? { availableTools: String(flags['available-tools']) } : {}),
2266
- ...(flags['execution-target'] ? { executionTarget: String(flags['execution-target']) } : {}),
2286
+ ...(forHuman !== undefined ? { forHuman } : {}),
2267
2287
  delegate: resolveProtocolTicketDelegate(flags, modelIdentifier, agentIdentifier)
2268
2288
  };
2269
2289
 
@@ -2303,7 +2323,7 @@ async function protocolCreateTicket(args) {
2303
2323
  ? { acceptanceCriteria: String(flags['acceptance-criteria']) }
2304
2324
  : {}),
2305
2325
  ...(flags['available-tools'] ? { availableTools: String(flags['available-tools']) } : {}),
2306
- ...(flags['execution-target'] ? { executionTarget: String(flags['execution-target']) } : {}),
2326
+ ...(forHuman !== undefined ? { forHuman } : {}),
2307
2327
  delegate: resolveProtocolTicketDelegate(flags, modelIdentifier, agentIdentifier)
2308
2328
  };
2309
2329
 
@@ -2825,7 +2845,8 @@ prompt:
2825
2845
  --working-directory <path> Override cwd for project resolution (default: cwd)
2826
2846
  --acceptance-criteria <text>
2827
2847
  --available-tools <text>
2828
- --execution-target <t> agent | human
2848
+ --for-human Mark the new ticket as requiring a human
2849
+ --execution-target <t> Deprecated alias: agent | human
2829
2850
  --delegate <model> Model or delegate identifier that created the ticket
2830
2851
  --parent-session-key <key>
2831
2852
  --parent-ticket-id <ticket_id>
@@ -2864,7 +2885,8 @@ create:
2864
2885
  --priority <level> low | medium | high | urgent
2865
2886
  --acceptance-criteria <text>
2866
2887
  --available-tools <text>
2867
- --execution-target <t> agent | human
2888
+ --for-human Mark the new ticket as requiring a human
2889
+ --execution-target <t> Deprecated alias: agent | human
2868
2890
  --delegate <model> Model or delegate identifier that created the ticket
2869
2891
  --agent <identifier>
2870
2892
  --model <identifier>
@@ -47,11 +47,11 @@ function geminiLegacyCommandFiles() {
47
47
  },
48
48
  {
49
49
  path: path.join(base, 'create.toml'),
50
- content: `description = "Create a draft Overlord ticket from the current conversation."\nprompt = """\nCreate a draft Overlord ticket from the user's request.\n\nUse \`{{args}}\` as the input.\nIf it already contains flags such as \`--title\`, \`--priority\`, \`--project-id\`, or \`--execution-target\`, pass those flags through after \`ovld protocol create --agent gemini\`.\nOtherwise, treat \`{{args}}\` as the objective text and run:\n\`ovld protocol create --agent gemini --objective "<objective>"\`\n\nIf no objective was provided, ask the user for one and stop.\n\nAfter the command succeeds, report the new \`TICKET_ID\`.\n"""`
50
+ content: `description = "Create a draft Overlord ticket from the current conversation."\nprompt = """\nCreate a draft Overlord ticket from the user's request.\n\nUse \`{{args}}\` as the input.\nIf it already contains flags such as \`--title\`, \`--priority\`, \`--project-id\`, or \`--for-human\`, pass those flags through after \`ovld protocol create --agent gemini\`.\nOtherwise, treat \`{{args}}\` as the objective text and run:\n\`ovld protocol create --agent gemini --objective "<objective>"\`\n\nIf no objective was provided, ask the user for one and stop.\n\nAfter the command succeeds, report the new \`TICKET_ID\`.\n"""`
51
51
  },
52
52
  {
53
53
  path: path.join(base, 'prompt.toml'),
54
- content: `description = "Create a new Overlord ticket from the current conversation."\nprompt = """\nCreate a new Overlord ticket from the user's request.\n\nUse \`{{args}}\` as the input.\nIf it already contains flags such as \`--title\`, \`--priority\`, \`--project-id\`, or \`--execution-target\`, pass those flags through after \`ovld protocol prompt --agent gemini\`.\nOtherwise, treat \`{{args}}\` as the objective text and run:\n\`ovld protocol prompt --agent gemini --objective "<objective>"\`\n\nIf no objective was provided, ask the user for one and stop.\n\nAfter the command succeeds, report the new \`TICKET_ID\` and \`SESSION_KEY\`.\n"""`
54
+ content: `description = "Create a new Overlord ticket from the current conversation."\nprompt = """\nCreate a new Overlord ticket from the user's request.\n\nUse \`{{args}}\` as the input.\nIf it already contains flags such as \`--title\`, \`--priority\`, \`--project-id\`, or \`--for-human\`, pass those flags through after \`ovld protocol prompt --agent gemini\`.\nOtherwise, treat \`{{args}}\` as the objective text and run:\n\`ovld protocol prompt --agent gemini --objective "<objective>"\`\n\nIf no objective was provided, ask the user for one and stop.\n\nAfter the command succeeds, report the new \`TICKET_ID\` and \`SESSION_KEY\`.\n"""`
55
55
  },
56
56
  {
57
57
  path: path.join(base, 'record-work.toml'),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord-cli",
3
- "version": "0.2605241431.0",
3
+ "version": "0.2605241542.0",
4
4
  "description": "Overlord CLI — launch AI agents on tickets from anywhere",
5
5
  "homepage": "https://www.ovld.ai/docs/",
6
6
  "type": "module",
@@ -6,7 +6,7 @@ argument-hint: <objective or raw flags>
6
6
  Create a draft Overlord ticket from the user's request.
7
7
 
8
8
  Use `$ARGUMENTS` as the input.
9
- If it already contains flags such as `--title`, `--priority`, `--project-id`, or `--execution-target`, pass those flags through after `ovld protocol create --agent antigravity`.
9
+ If it already contains flags such as `--title`, `--priority`, `--project-id`, or `--for-human`, pass those flags through after `ovld protocol create --agent antigravity`.
10
10
  Otherwise, treat `$ARGUMENTS` as the objective text and run:
11
11
  `ovld protocol create --agent antigravity --objective "<objective>"`
12
12
 
@@ -6,7 +6,7 @@ argument-hint: <objective or raw flags>
6
6
  Create a new Overlord ticket from the user's request and attach immediately.
7
7
 
8
8
  Use `$ARGUMENTS` as the input.
9
- If it already contains flags such as `--title`, `--priority`, `--project-id`, or `--execution-target`, pass those flags through after `ovld protocol prompt --agent antigravity`.
9
+ If it already contains flags such as `--title`, `--priority`, `--project-id`, or `--for-human`, pass those flags through after `ovld protocol prompt --agent antigravity`.
10
10
  Otherwise, treat `$ARGUMENTS` as the objective text and run:
11
11
  `ovld protocol prompt --agent antigravity --objective "<objective>"`
12
12
 
@@ -239,7 +239,7 @@ const tools = [
239
239
  },
240
240
  acceptance_criteria: { type: 'string' },
241
241
  available_tools: { type: 'string' },
242
- execution_target: { type: 'string', enum: ['agent', 'human'] },
242
+ for_human: { type: 'boolean' },
243
243
  delegate: { type: 'string' },
244
244
  parent_session_key: { type: 'string' },
245
245
  parent_ticket_id: { type: 'string' },
@@ -257,7 +257,7 @@ const tools = [
257
257
  personal: args.personal === true ? true : undefined,
258
258
  'acceptance-criteria': args.acceptance_criteria,
259
259
  'available-tools': args.available_tools,
260
- 'execution-target': args.execution_target,
260
+ 'for-human': args.for_human === true ? true : undefined,
261
261
  delegate: args.delegate,
262
262
  'parent-session-key': args.parent_session_key,
263
263
  'parent-ticket-id': args.parent_ticket_id,
@@ -280,7 +280,7 @@ const tools = [
280
280
  personal: { type: 'boolean' },
281
281
  acceptance_criteria: { type: 'string' },
282
282
  available_tools: { type: 'string' },
283
- execution_target: { type: 'string', enum: ['agent', 'human'] },
283
+ for_human: { type: 'boolean' },
284
284
  delegate: { type: 'string' },
285
285
  session_key: { type: 'string' },
286
286
  ticket_id: { type: 'string' },
@@ -297,7 +297,7 @@ const tools = [
297
297
  personal: args.personal === true ? true : undefined,
298
298
  'acceptance-criteria': args.acceptance_criteria,
299
299
  'available-tools': args.available_tools,
300
- 'execution-target': args.execution_target,
300
+ 'for-human': args.for_human === true ? true : undefined,
301
301
  delegate: args.delegate,
302
302
  'session-key': args.session_key,
303
303
  'ticket-id': args.ticket_id,
@@ -217,9 +217,9 @@ ovld protocol get-device --device-fingerprint "$OVERLORD_DEVICE_FINGERPRINT"
217
217
  ovld protocol list-project-resources --project-id <project_uuid> --device-fingerprint "$OVERLORD_DEVICE_FINGERPRINT"
218
218
  ```
219
219
 
220
- ### Choosing `--execution-target`
220
+ ### Choosing `--for-human`
221
221
 
222
- Pass `--execution-target agent` or `--execution-target human` (default: `human`) when creating tickets.
222
+ Pass `--for-human agent` or `--for-human human` (default: `human`) when creating tickets.
223
223
 
224
224
  - **`agent`** — any task an AI agent can complete in a computer environment: coding, internet research, document editing, data analysis, automated testing, etc.
225
225
  - **`human`** — any task requiring human presence or judgment: setting credentials or tokens in a third-party UI (e.g. Vercel, AWS), sending physical mail, making a product or business decision, physical-world actions.
@@ -8,7 +8,7 @@ Create a draft Overlord ticket from the user's request.
8
8
 
9
9
 
10
10
  Use `$ARGUMENTS` as the input.
11
- If it already contains flags such as `--title`, `--priority`, `--project-id`, or `--execution-target`, pass those flags through after `ovld protocol create --agent claude-code`.
11
+ If it already contains flags such as `--title`, `--priority`, `--project-id`, or `--for-human`, pass those flags through after `ovld protocol create --agent claude-code`.
12
12
  Otherwise, treat `$ARGUMENTS` as the objective text and run:
13
13
  `ovld protocol create --agent claude-code --objective "<objective>"`
14
14
 
@@ -8,7 +8,7 @@ Create a new Overlord ticket from the user's request.
8
8
 
9
9
 
10
10
  Use `$ARGUMENTS` as the input.
11
- If it already contains flags such as `--title`, `--priority`, `--project-id`, or `--execution-target`, pass those flags through after `ovld protocol prompt --agent claude-code`.
11
+ If it already contains flags such as `--title`, `--priority`, `--project-id`, or `--for-human`, pass those flags through after `ovld protocol prompt --agent claude-code`.
12
12
  Otherwise, treat `$ARGUMENTS` as the objective text and run:
13
13
  `ovld protocol prompt --agent claude-code --objective "<objective>"`
14
14
 
@@ -9,7 +9,7 @@ This command is deprecated. Use `/overlord:prompt` instead.
9
9
  Create a new Overlord ticket from the user's request.
10
10
 
11
11
  Use `$ARGUMENTS` as the input.
12
- If it already contains flags such as `--title`, `--priority`, `--project-id`, or `--execution-target`, pass those flags through after `ovld protocol prompt --agent claude-code`.
12
+ If it already contains flags such as `--title`, `--priority`, `--project-id`, or `--for-human`, pass those flags through after `ovld protocol prompt --agent claude-code`.
13
13
  Otherwise, treat `$ARGUMENTS` as the objective text and run:
14
14
  `ovld protocol prompt --agent claude-code --objective "<objective>"`
15
15
 
@@ -109,7 +109,7 @@ For the `record-change-rationales` command and full payload shape with optional
109
109
 
110
110
  - [reference/cli.md](reference/cli.md) — Full protocol command syntax, flags, phases, ticket creation, and project discovery
111
111
  - [reference/mcp.md](reference/mcp.md) — MCP tool naming, key casing, hosted vs local shim defaults
112
- - [reference/devices.md](reference/devices.md) — Device fingerprints, project resources, and `--execution-target`
112
+ - [reference/devices.md](reference/devices.md) — Device fingerprints, project resources, and `--for-human`
113
113
  - [reference/context.md](reference/context.md) — Shared state, attachments, and large artifact policy
114
114
  - [reference/shell-escaping.md](reference/shell-escaping.md) — Heredoc stdin piping for special characters in summaries and payloads
115
115
 
@@ -9,9 +9,9 @@ ovld protocol list-project-resources --project-id <project_uuid> --device-finger
9
9
 
10
10
  `ovld runner start` uses the same execution target identity and project resource directories to claim queued execution requests from manual Run and auto-advance. Primary resource directories are scoped per `(project, execution target)`. `ovld runner once` claims at most one request and exits.
11
11
 
12
- ## Choosing `--execution-target`
12
+ ## Choosing `--for-human`
13
13
 
14
- Pass `--execution-target agent` or `--execution-target human` (default: `human`) when creating tickets.
14
+ Pass `--for-human agent` or `--for-human human` (default: `human`) when creating tickets.
15
15
 
16
16
  - **`agent`** — any task an AI agent can complete in a computer environment: coding, internet research, document editing, data analysis, automated testing, etc.
17
17
  - **`human`** — any task requiring human presence or judgment: setting credentials or tokens in a third-party UI (e.g. Vercel, AWS), sending physical mail, making a product or business decision, physical-world actions.
@@ -109,7 +109,7 @@ For the `record-change-rationales` command and full payload shape with optional
109
109
 
110
110
  - [reference/cli.md](reference/cli.md) — Full protocol command syntax, flags, phases, ticket creation, and project discovery
111
111
  - [reference/mcp.md](reference/mcp.md) — MCP tool naming, key casing, hosted vs local shim defaults
112
- - [reference/devices.md](reference/devices.md) — Device fingerprints, project resources, and `--execution-target`
112
+ - [reference/devices.md](reference/devices.md) — Device fingerprints, project resources, and `--for-human`
113
113
  - [reference/context.md](reference/context.md) — Shared state, attachments, and large artifact policy
114
114
  - [reference/shell-escaping.md](reference/shell-escaping.md) — Heredoc stdin piping for special characters in summaries and payloads
115
115
 
@@ -9,9 +9,9 @@ ovld protocol list-project-resources --project-id <project_uuid> --device-finger
9
9
 
10
10
  `ovld runner start` uses the same execution target identity and project resource directories to claim queued execution requests from manual Run and auto-advance. Primary resource directories are scoped per `(project, execution target)`. `ovld runner once` claims at most one request and exits.
11
11
 
12
- ## Choosing `--execution-target`
12
+ ## Choosing `--for-human`
13
13
 
14
- Pass `--execution-target agent` or `--execution-target human` (default: `human`) when creating tickets.
14
+ Pass `--for-human agent` or `--for-human human` (default: `human`) when creating tickets.
15
15
 
16
16
  - **`agent`** — any task an AI agent can complete in a computer environment: coding, internet research, document editing, data analysis, automated testing, etc.
17
17
  - **`human`** — any task requiring human presence or judgment: setting credentials or tokens in a third-party UI (e.g. Vercel, AWS), sending physical mail, making a product or business decision, physical-world actions.
@@ -239,7 +239,7 @@ const tools = [
239
239
  },
240
240
  acceptance_criteria: { type: 'string' },
241
241
  available_tools: { type: 'string' },
242
- execution_target: { type: 'string', enum: ['agent', 'human'] },
242
+ for_human: { type: 'boolean' },
243
243
  delegate: { type: 'string' },
244
244
  parent_session_key: { type: 'string' },
245
245
  parent_ticket_id: { type: 'string' },
@@ -257,7 +257,7 @@ const tools = [
257
257
  personal: args.personal === true ? true : undefined,
258
258
  'acceptance-criteria': args.acceptance_criteria,
259
259
  'available-tools': args.available_tools,
260
- 'execution-target': args.execution_target,
260
+ 'for-human': args.for_human === true ? true : undefined,
261
261
  delegate: args.delegate,
262
262
  'parent-session-key': args.parent_session_key,
263
263
  'parent-ticket-id': args.parent_ticket_id,
@@ -280,7 +280,7 @@ const tools = [
280
280
  personal: { type: 'boolean' },
281
281
  acceptance_criteria: { type: 'string' },
282
282
  available_tools: { type: 'string' },
283
- execution_target: { type: 'string', enum: ['agent', 'human'] },
283
+ for_human: { type: 'boolean' },
284
284
  delegate: { type: 'string' },
285
285
  session_key: { type: 'string' },
286
286
  ticket_id: { type: 'string' },
@@ -297,7 +297,7 @@ const tools = [
297
297
  personal: args.personal === true ? true : undefined,
298
298
  'acceptance-criteria': args.acceptance_criteria,
299
299
  'available-tools': args.available_tools,
300
- 'execution-target': args.execution_target,
300
+ 'for-human': args.for_human === true ? true : undefined,
301
301
  delegate: args.delegate,
302
302
  'session-key': args.session_key,
303
303
  'ticket-id': args.ticket_id,
@@ -110,7 +110,7 @@ For the `record-change-rationales` command and full payload shape with optional
110
110
 
111
111
  - [reference/cli.md](reference/cli.md) — Full protocol command syntax, flags, phases, ticket creation, and project discovery
112
112
  - [reference/mcp.md](reference/mcp.md) — MCP tool naming, key casing, hosted vs local shim defaults
113
- - [reference/devices.md](reference/devices.md) — Device fingerprints, project resources, and `--execution-target`
113
+ - [reference/devices.md](reference/devices.md) — Device fingerprints, project resources, and `--for-human`
114
114
  - [reference/context.md](reference/context.md) — Shared state, attachments, and large artifact policy
115
115
  - [reference/shell-escaping.md](reference/shell-escaping.md) — Heredoc stdin piping for special characters in summaries and payloads
116
116
 
@@ -9,9 +9,9 @@ ovld protocol list-project-resources --project-id <project_uuid> --device-finger
9
9
 
10
10
  `ovld runner start` uses the same execution target identity and project resource directories to claim queued execution requests from manual Run and auto-advance. Primary resource directories are scoped per `(project, execution target)`. `ovld runner once` claims at most one request and exits.
11
11
 
12
- ## Choosing `--execution-target`
12
+ ## Choosing `--for-human`
13
13
 
14
- Pass `--execution-target agent` or `--execution-target human` (default: `human`) when creating tickets.
14
+ Pass `--for-human agent` or `--for-human human` (default: `human`) when creating tickets.
15
15
 
16
16
  - **`agent`** — any task an AI agent can complete in a computer environment: coding, internet research, document editing, data analysis, automated testing, etc.
17
17
  - **`human`** — any task requiring human presence or judgment: setting credentials or tokens in a third-party UI (e.g. Vercel, AWS), sending physical mail, making a product or business decision, physical-world actions.