overlord-cli 0.2606060757.0 → 0.2606070914.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.
@@ -2242,6 +2242,24 @@ async function protocolListExecutionRequests(args) {
2242
2242
  console.log(JSON.stringify(data, null, 2));
2243
2243
  }
2244
2244
 
2245
+ async function protocolListExecutionTargets(args) {
2246
+ const flags = parseFlags(args);
2247
+ const { platformUrl, bearerToken, localSecret, organizationId } =
2248
+ await resolveProtocolAuthForFlags(flags);
2249
+ const timeoutMs = resolveTimeout(flags);
2250
+
2251
+ const data = await apiPost(
2252
+ platformUrl,
2253
+ bearerToken,
2254
+ localSecret,
2255
+ organizationId,
2256
+ '/api/protocol/list-execution-targets',
2257
+ {},
2258
+ timeoutMs
2259
+ );
2260
+ console.log(JSON.stringify(data, null, 2));
2261
+ }
2262
+
2245
2263
  async function protocolClearExecutionRequests(args) {
2246
2264
  const flags = parseFlags(args);
2247
2265
  const { platformUrl, bearerToken, localSecret, organizationId } =
@@ -2471,6 +2489,7 @@ async function protocolPrompt(args) {
2471
2489
  ...(flags['available-tools'] ? { availableTools: String(flags['available-tools']) } : {}),
2472
2490
  ...(forHuman !== undefined ? { forHuman } : {}),
2473
2491
  delegate: resolveProtocolTicketDelegate(flags, modelIdentifier, agentIdentifier),
2492
+ ...(flags['assigned-to'] ? { assignedTo: String(flags['assigned-to']) } : {}),
2474
2493
  ...(flags['parent-session-key']
2475
2494
  ? { parentSessionKey: String(flags['parent-session-key']) }
2476
2495
  : {}),
@@ -2559,7 +2578,8 @@ async function protocolCreateTicket(args) {
2559
2578
  : {}),
2560
2579
  ...(flags['available-tools'] ? { availableTools: String(flags['available-tools']) } : {}),
2561
2580
  ...(forHuman !== undefined ? { forHuman } : {}),
2562
- delegate: resolveProtocolTicketDelegate(flags, modelIdentifier, agentIdentifier)
2581
+ delegate: resolveProtocolTicketDelegate(flags, modelIdentifier, agentIdentifier),
2582
+ ...(flags['assigned-to'] ? { assignedTo: String(flags['assigned-to']) } : {})
2563
2583
  };
2564
2584
 
2565
2585
  const data = await apiPost(
@@ -2599,7 +2619,8 @@ async function protocolCreateTicket(args) {
2599
2619
  : {}),
2600
2620
  ...(flags['available-tools'] ? { availableTools: String(flags['available-tools']) } : {}),
2601
2621
  ...(forHuman !== undefined ? { forHuman } : {}),
2602
- delegate: resolveProtocolTicketDelegate(flags, modelIdentifier, agentIdentifier)
2622
+ delegate: resolveProtocolTicketDelegate(flags, modelIdentifier, agentIdentifier),
2623
+ ...(flags['assigned-to'] ? { assignedTo: String(flags['assigned-to']) } : {})
2603
2624
  };
2604
2625
 
2605
2626
  const data = await apiPost(
@@ -2694,7 +2715,8 @@ async function protocolRecordWork(args) {
2694
2715
  ? { acceptanceCriteria: String(flags['acceptance-criteria']) }
2695
2716
  : {}),
2696
2717
  ...(flags['available-tools'] ? { availableTools: String(flags['available-tools']) } : {}),
2697
- delegate: resolveProtocolTicketDelegate(flags, modelIdentifier, agentIdentifier)
2718
+ delegate: resolveProtocolTicketDelegate(flags, modelIdentifier, agentIdentifier),
2719
+ ...(flags['assigned-to'] ? { assignedTo: String(flags['assigned-to']) } : {})
2698
2720
  };
2699
2721
 
2700
2722
  const { platformUrl, bearerToken, localSecret, organizationId } =
@@ -2867,6 +2889,7 @@ Subcommands:
2867
2889
  claim-execution Claim one queued execution request for this device
2868
2890
  list-organizations List organizations the authenticated user belongs to
2869
2891
  list-execution-requests List active execution requests in the runner queue
2892
+ list-execution-targets List execution targets (runner devices) the user has access to
2870
2893
  clear-execution-requests Clear active execution requests by objective or wholesale
2871
2894
  complete-execution-launch Mark a claimed execution request launched
2872
2895
  fail-execution-launch Mark a claimed execution request failed
@@ -3145,6 +3168,7 @@ prompt:
3145
3168
  --for-human Mark the new ticket as requiring a human
3146
3169
  --execution-target <t> Deprecated alias: agent | human
3147
3170
  --delegate <model> Model or delegate identifier that created the ticket
3171
+ --assigned-to <member> Assign the ticket to a member: username, email, user-id, or orgid:username (defaults to creator)
3148
3172
  --parent-session-key <key>
3149
3173
  --parent-ticket-id <ticket_id>
3150
3174
  --agent <identifier>
@@ -3185,6 +3209,7 @@ create:
3185
3209
  --for-human Mark the new ticket as requiring a human
3186
3210
  --execution-target <t> Deprecated alias: agent | human
3187
3211
  --delegate <model> Model or delegate identifier that created the ticket
3212
+ --assigned-to <member> Assign the ticket to a member: username, email, user-id, or orgid:username (defaults to creator)
3188
3213
  --agent <identifier>
3189
3214
  --model <identifier>
3190
3215
  Returns:
@@ -3233,6 +3258,7 @@ record-work:
3233
3258
  --acceptance-criteria <text>
3234
3259
  --available-tools <text>
3235
3260
  --delegate <model>
3261
+ --assigned-to <member> Assign the ticket to a member: username, email, user-id, or orgid:username (defaults to creator)
3236
3262
  --agent <identifier>
3237
3263
  --model <identifier>
3238
3264
  Notes:
@@ -3398,6 +3424,13 @@ list-execution-requests:
3398
3424
  --device-fingerprint <fp> Filter queue visibility to one execution target
3399
3425
  --project-id <uuid> Restrict to one project
3400
3426
 
3427
+ list-execution-targets:
3428
+ Purpose:
3429
+ List all execution targets (runner devices) accessible to the authenticated user
3430
+ in the current organization, including their label and id.
3431
+ Returns:
3432
+ JSON with { targets: [ { id, label, host, platform, transport, is_placeholder, last_seen_at } ] }
3433
+
3401
3434
  clear-execution-requests:
3402
3435
  Purpose:
3403
3436
  Clear active execution requests from the runner queue by marking them failed.
@@ -3456,6 +3489,7 @@ Examples:
3456
3489
  ovld protocol claim-execution --device-fingerprint $OVERLORD_DEVICE_FINGERPRINT
3457
3490
  ovld protocol list-organizations
3458
3491
  ovld protocol list-execution-requests --device-fingerprint $OVERLORD_DEVICE_FINGERPRINT
3492
+ ovld protocol list-execution-targets
3459
3493
  ovld protocol clear-execution-requests --objective-id <objective-uuid>
3460
3494
  ovld protocol clear-execution-requests --clear-all
3461
3495
  ovld protocol deliver --session-key <key> --ticket-id <ticket_id> --summary "Done"
@@ -3587,6 +3621,10 @@ EOF
3587
3621
  await protocolListExecutionRequests(args);
3588
3622
  return;
3589
3623
  }
3624
+ if (subcommand === 'list-execution-targets') {
3625
+ await protocolListExecutionTargets(args);
3626
+ return;
3627
+ }
3590
3628
  if (subcommand === 'clear-execution-requests') {
3591
3629
  await protocolClearExecutionRequests(args);
3592
3630
  return;
@@ -22,6 +22,7 @@ function printRunnerHelp(primaryCommand = 'ovld') {
22
22
  ${primaryCommand} runner once [options]
23
23
  ${primaryCommand} runner start [options]
24
24
  ${primaryCommand} runner status [options]
25
+ ${primaryCommand} runner targets [options]
25
26
  ${primaryCommand} runner clear <objective_id> [options]
26
27
  ${primaryCommand} runner clear-all [options]
27
28
 
@@ -147,6 +148,12 @@ function clearExecutionRequests(flags, deviceFingerprint, organizationId, option
147
148
  });
148
149
  }
149
150
 
151
+ function listExecutionTargets(deviceFingerprint) {
152
+ return protocolJson('list-execution-targets', [], {
153
+ OVERLORD_DEVICE_FINGERPRINT: deviceFingerprint
154
+ });
155
+ }
156
+
150
157
  function listOrganizationIds(deviceFingerprint) {
151
158
  const data = protocolJson('list-organizations', [], {
152
159
  OVERLORD_DEVICE_FINGERPRINT: deviceFingerprint
@@ -583,6 +590,12 @@ export async function runRunnerCommand(subcommand, args, primaryCommand = 'ovld'
583
590
  const flags = parseFlags(args);
584
591
  const deviceFingerprint = readOrCreateDeviceFingerprint(flags);
585
592
 
593
+ if (subcommand === 'targets') {
594
+ const data = listExecutionTargets(deviceFingerprint);
595
+ console.log(JSON.stringify({ ok: true, targets: data.targets ?? [] }, null, 2));
596
+ return;
597
+ }
598
+
586
599
  if (subcommand === 'status') {
587
600
  const organizationScope = createOrganizationScope(flags, deviceFingerprint);
588
601
  const data = protocolJson(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord-cli",
3
- "version": "0.2606060757.0",
3
+ "version": "0.2606070914.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",
@@ -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 `--for-human`, pass those flags through after `ovld protocol create --agent claude-code`.
11
+ If it already contains flags such as `--title`, `--priority`, `--project-id`, `--assigned-to`, 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 `--for-human`, pass those flags through after `ovld protocol prompt --agent claude-code`.
11
+ If it already contains flags such as `--title`, `--priority`, `--project-id`, `--assigned-to`, 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 `--for-human`, pass those flags through after `ovld protocol prompt --agent claude-code`.
12
+ If it already contains flags such as `--title`, `--priority`, `--project-id`, `--assigned-to`, 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
 
@@ -118,6 +118,7 @@ When creating tickets from within a repository:
118
118
  - Create multiple tickets when each prompt represents a different feature or goal.
119
119
  - Add objectives to the same ticket when each prompt is a sequential step toward the same feature or goal; use `ovld protocol add-objectives --ticket-id <ticket_id> --objectives-json '[{"objective":"..."}]'`.
120
120
  - `create`, `prompt`, and `record-work` 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.
121
+ - `create`, `prompt`, `create-ticket`, and `record-work` accept `--assigned-to <member>` to set the ticket'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 ticket creator.
121
122
 
122
123
  ```bash
123
124
  ovld protocol create --agent claude-code --objectives-json '[{"objective":"Capture follow-up work from this repository"}]'
@@ -118,6 +118,7 @@ When creating tickets from within a repository:
118
118
  - Create multiple tickets when each prompt represents a different feature or goal.
119
119
  - Add objectives to the same ticket when each prompt is a sequential step toward the same feature or goal; use `ovld protocol add-objectives --ticket-id <ticket_id> --objectives-json '[{"objective":"..."}]'`.
120
120
  - `create`, `prompt`, and `record-work` 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.
121
+ - `create`, `prompt`, `create-ticket`, and `record-work` accept `--assigned-to <member>` to set the ticket'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 ticket creator.
121
122
 
122
123
  ```bash
123
124
  ovld protocol create --agent cursor --objectives-json '[{"objective":"Capture follow-up work from this repository"}]'
@@ -244,6 +244,11 @@ const tools = [
244
244
  available_tools: { type: 'string' },
245
245
  for_human: { type: 'boolean' },
246
246
  delegate: { type: 'string' },
247
+ assigned_to: {
248
+ type: 'string',
249
+ description:
250
+ 'Assign the ticket to a member: username, email, user-id, or orgid:username (defaults to creator).'
251
+ },
247
252
  parent_session_key: { type: 'string' },
248
253
  parent_ticket_id: { type: 'string' },
249
254
  agent: { type: 'string' },
@@ -262,6 +267,7 @@ const tools = [
262
267
  'available-tools': args.available_tools,
263
268
  'for-human': args.for_human === true ? true : undefined,
264
269
  delegate: args.delegate,
270
+ 'assigned-to': args.assigned_to,
265
271
  'parent-session-key': args.parent_session_key,
266
272
  'parent-ticket-id': args.parent_ticket_id,
267
273
  agent: args.agent,
@@ -286,6 +292,11 @@ const tools = [
286
292
  available_tools: { type: 'string' },
287
293
  for_human: { type: 'boolean' },
288
294
  delegate: { type: 'string' },
295
+ assigned_to: {
296
+ type: 'string',
297
+ description:
298
+ 'Assign the ticket to a member: username, email, user-id, or orgid:username (defaults to creator).'
299
+ },
289
300
  session_key: { type: 'string' },
290
301
  ticket_id: { type: 'string' },
291
302
  agent: { type: 'string' }
@@ -303,6 +314,7 @@ const tools = [
303
314
  'available-tools': args.available_tools,
304
315
  'for-human': args.for_human === true ? true : undefined,
305
316
  delegate: args.delegate,
317
+ 'assigned-to': args.assigned_to,
306
318
  'session-key': args.session_key,
307
319
  'ticket-id': args.ticket_id,
308
320
  agent: args.agent
@@ -628,6 +640,11 @@ const tools = [
628
640
  acceptance_criteria: { type: 'string' },
629
641
  available_tools: { type: 'string' },
630
642
  delegate: { type: 'string' },
643
+ assigned_to: {
644
+ type: 'string',
645
+ description:
646
+ 'Assign the ticket to a member: username, email, user-id, or orgid:username (defaults to creator).'
647
+ },
631
648
  agent: { type: 'string' },
632
649
  skip_file_change_check: { type: 'boolean' }
633
650
  },
@@ -643,6 +660,7 @@ const tools = [
643
660
  'acceptance-criteria': args.acceptance_criteria,
644
661
  'available-tools': args.available_tools,
645
662
  delegate: args.delegate,
663
+ 'assigned-to': args.assigned_to,
646
664
  agent: args.agent,
647
665
  'skip-file-change-check': args.skip_file_change_check
648
666
  }),
@@ -1090,6 +1108,16 @@ const tools = [
1090
1108
  }),
1091
1109
  subcommand: 'list-execution-requests'
1092
1110
  },
1111
+ {
1112
+ name: 'list_execution_targets',
1113
+ description: 'List execution targets (runner devices) the authenticated user has access to, including their label and id.',
1114
+ inputSchema: {
1115
+ type: 'object',
1116
+ properties: {}
1117
+ },
1118
+ toCliFlags: () => ({}),
1119
+ subcommand: 'list-execution-targets'
1120
+ },
1093
1121
  {
1094
1122
  name: 'clear_execution_requests',
1095
1123
  description: 'Clear active execution requests from the local runner queue.',
@@ -118,6 +118,7 @@ When creating tickets from within a repository:
118
118
  - Create multiple tickets when each prompt represents a different feature or goal.
119
119
  - Add objectives to the same ticket when each prompt is a sequential step toward the same feature or goal; use `ovld protocol add-objectives --ticket-id <ticket_id> --objectives-json '[{"objective":"..."}]'`.
120
120
  - `create`, `prompt`, and `record-work` 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.
121
+ - `create`, `prompt`, `create-ticket`, and `record-work` accept `--assigned-to <member>` to set the ticket'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 ticket creator.
121
122
 
122
123
  ```bash
123
124
  ovld protocol create --agent codex --objectives-json '[{"objective":"Capture follow-up work from this repository"}]'