overlord-cli 0.2606050717.0 → 0.2606050938.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 CHANGED
@@ -134,7 +134,7 @@ Agents can find docs here: https://www.ovld.ai/docs/for-agents
134
134
  - `revert` - restore the local working tree to an objective checkpoint after fetching its checkpoint row
135
135
  - `search-tickets` - find tickets by keyword, status, project, creator, or update date
136
136
  - `add-objectives` - append ordered objectives to an existing ticket (`--objectives-json` / `--objectives-file`)
137
- - `create` - create a draft ticket without attaching (standalone or follow-up)
137
+ - `create` - create a draft ticket without attaching (standalone or follow-up; `--project-id` can override the inherited project during follow-up creation)
138
138
  - `prompt` - create a ticket and attach to it immediately (`spawn` is a backward-compatible alias)
139
139
  - `record-work` - record already-completed chat work as a ticket in review with a completed objective and trigger feed-post generation
140
140
  - `update` - post progress, discussion/decision events, optional change rationales, and explicit `--begin-follow-up-work` transitions
@@ -48,10 +48,10 @@ 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 "..."] [--for-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-or-name>] [--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 "..."] [--for-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-or-name>] [--agent <agent>] [--model <identifier>] [--delegate <agent>]';
55
55
  }
56
56
 
57
57
  function resolveForHumanFlag(flags) {
@@ -305,15 +305,17 @@ async function createTicket(platformUrl, bearerToken, localSecret, organizationI
305
305
  return data.ticket;
306
306
  }
307
307
 
308
- function resolveProject(projects, projectId) {
309
- if (!projectId) return null;
308
+ export function resolveProject(projects, projectIdOrName) {
309
+ if (!projectIdOrName) return null;
310
310
 
311
- const project = projects.find(candidate => candidate.id === projectId);
312
- if (!project) {
313
- throw new Error(`Unknown project ID: ${projectId}`);
314
- }
311
+ const byId = projects.find(candidate => candidate.id === projectIdOrName);
312
+ if (byId) return byId;
313
+
314
+ const lowerName = projectIdOrName.toLowerCase();
315
+ const byName = projects.find(candidate => candidate.name?.toLowerCase() === lowerName);
316
+ if (byName) return byName;
315
317
 
316
- return project;
318
+ throw new Error(`Unknown project: ${projectIdOrName}`);
317
319
  }
318
320
 
319
321
  function resolveAgent(agent) {
@@ -424,7 +426,8 @@ Creates a ticket after interactive numbered project selection.
424
426
 
425
427
  Examples:
426
428
  ovld create --objectives-json '[{"objective":"Implement login page"}]'
427
- ovld create --objectives-json '[{"objective":"Fix sync bug"}]' --project-id <project-id>
429
+ ovld create --objectives-json '[{"objective":"Fix sync bug"}]' --project-id <id-or-name>
430
+ ovld create --objectives-json '[{"objective":"Fix sync bug"}]' --project-id "My Project"
428
431
  `);
429
432
  return;
430
433
  }
@@ -2551,6 +2551,7 @@ async function protocolCreateTicket(args) {
2551
2551
  sessionKey,
2552
2552
  ticketId,
2553
2553
  ...objectiveInput,
2554
+ ...(flags['project-id'] ? { projectId: String(flags['project-id']) } : {}),
2554
2555
  ...(flags.title ? { title: String(flags.title) } : {}),
2555
2556
  ...(flags.priority ? { priority: String(flags.priority) } : {}),
2556
2557
  ...(flags['acceptance-criteria']
@@ -2836,10 +2837,12 @@ Project discovery:
2836
2837
  You can also discover the project explicitly:
2837
2838
 
2838
2839
  ovld protocol discover-project
2839
- ovld protocol discover-project --project-id <project-uuid>
2840
+ ovld protocol discover-project --project-id <id-or-name>
2841
+ ovld protocol discover-project --project-id "My Project"
2840
2842
  ovld protocol discover-project --working-directory /path/to/repo
2841
2843
 
2842
2844
  Use --project-id to override automatic resolution on discover, prompt, or ticket creation.
2845
+ Accepts a UUID or a project name (names are unique per organization).
2843
2846
  Use --personal to create a private ticket without assigning any project.
2844
2847
 
2845
2848
  Subcommands:
@@ -2912,7 +2915,7 @@ discover-project:
2912
2915
  Resolve the Overlord project that corresponds to the current (or given) working directory.
2913
2916
  Uses the caller's configured "Local working directory" for matching.
2914
2917
  Optional:
2915
- --project-id <uuid> Resolve this project directly; skips working-directory matching
2918
+ --project-id <id-or-name> Resolve this project directly; skips working-directory matching
2916
2919
  --working-directory <path> Directory to match (default: current working directory)
2917
2920
  --device-fingerprint <fp> Prefer resource directories for this registered device
2918
2921
  --device-hostname <name> Register/update device metadata when fingerprint is provided
@@ -2982,7 +2985,7 @@ search-tickets:
2982
2985
  --status <csv> Comma-separated statuses, e.g. "draft,next-up,execute"
2983
2986
  --include-completed <bool> Include completed tickets (default: false)
2984
2987
  --limit <n> Max results 1..50 (default: 8)
2985
- --project-id <uuid> Restrict to a single project
2988
+ --project-id <id-or-name> Restrict to a single project
2986
2989
  --created-by <uuid> Restrict to tickets created by this user
2987
2990
  --updated-after <iso> Updated_at >= ISO timestamp
2988
2991
  --updated-before <iso> Updated_at <= ISO timestamp
@@ -3134,7 +3137,7 @@ prompt:
3134
3137
  Optional:
3135
3138
  --title <text>
3136
3139
  --priority <level> low | medium | high | urgent
3137
- --project-id <id> Explicit project; skips working-directory resolution
3140
+ --project-id <id-or-name> Explicit project (UUID or name); skips working-directory resolution
3138
3141
  --personal Create the ticket without assigning a project
3139
3142
  --working-directory <path> Override cwd for project resolution (default: cwd)
3140
3143
  --acceptance-criteria <text>
@@ -3173,7 +3176,7 @@ create:
3173
3176
  --session-key <key>
3174
3177
  --ticket-id <ticket_id>
3175
3178
  --working-directory <path> Resolve project by your configured local working directory (default: cwd)
3176
- --project-id <id> Explicit project for standalone draft creation
3179
+ --project-id <id-or-name> Explicit project (UUID or name); overrides follow-up inheritance or standalone cwd resolution
3177
3180
  --personal Create a private standalone draft without a project
3178
3181
  --title <text>
3179
3182
  --priority <level> low | medium | high | urgent
@@ -3188,7 +3191,7 @@ create:
3188
3191
  New draft ticket JSON (follow-up draft when session flags are provided)
3189
3192
  Notes:
3190
3193
  Standalone create auto-discovers the project from the current working directory unless --personal is set.
3191
- Follow-up create requires both --session-key and --ticket-id.
3194
+ Follow-up create requires both --session-key and --ticket-id and inherits the current ticket project unless --project-id is passed.
3192
3195
  Use create for future work. If the work is already complete and only needs to be recorded,
3193
3196
  use \`record-work\` instead.
3194
3197
 
@@ -3219,7 +3222,7 @@ record-work:
3219
3222
  Optional:
3220
3223
  --title <text> Auto-derived from objective if omitted
3221
3224
  --priority <level> low | medium | high | urgent
3222
- --project-id <id> Skip cwd resolution and use this project explicitly
3225
+ --project-id <id-or-name> Skip cwd resolution and use this project explicitly (UUID or name)
3223
3226
  --working-directory <path> Override cwd for project resolution
3224
3227
  --personal Create a private ticket when no project should be associated
3225
3228
  --artifacts-json <json>
@@ -3421,8 +3424,10 @@ Examples:
3421
3424
  ovld protocol auth-status
3422
3425
  ovld protocol discover-project
3423
3426
  ovld protocol discover-project --project-id <project-uuid>
3427
+ ovld protocol discover-project --project-id "My Project" # resolve by name
3424
3428
  ovld protocol discover-project --working-directory /path/to/repo
3425
3429
  ovld protocol prompt --agent codex --objective "Implement feature X" # auto-resolves project from cwd
3430
+ ovld protocol prompt --project-id "My Project" --objective "Fix bug" # resolve project by name
3426
3431
  ovld protocol attach --ticket-id 1:899
3427
3432
  ovld protocol attach --ticket-id 1:899 --external-session-id null
3428
3433
  ovld protocol connect --ticket-id 1:899
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overlord-cli",
3
- "version": "0.2606050717.0",
3
+ "version": "0.2606050938.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",
@@ -24,6 +24,6 @@ After the command succeeds, report the new `TICKET_ID`.
24
24
  Rules:
25
25
  - Do NOT use this for in-progress work. Use `/prompt` for that.
26
26
  - The CLI validates that every changed git-tracked file is represented in `changeRationales` unless `--skip-file-change-check` is passed.
27
- - If project resolution fails, re-run with `--project-id <id>` or `--personal`.
27
+ - If project resolution fails, re-run with `--project-id <id-or-name>` or `--personal`.
28
28
 
29
29
 
@@ -114,6 +114,7 @@ When creating tickets from within a repository:
114
114
  - Prefer `create` by default for draft ticket creation.
115
115
  - Use `prompt` only when the user explicitly asks to start execution immediately.
116
116
  - Both commands can resolve the project from the current working directory; use `--working-directory` to override or `--project-id` to be explicit.
117
+ - Follow-up `create` calls under an active session inherit the current ticket's project by default, but `--project-id` can override that when the follow-up belongs in a different project.
117
118
  - Create multiple tickets when each prompt represents a different feature or goal.
118
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":"..."}]'`.
119
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.
@@ -134,11 +135,12 @@ To inspect project resolution explicitly:
134
135
 
135
136
  ```bash
136
137
  ovld protocol discover-project
137
- ovld protocol discover-project --project-id <project_uuid>
138
+ ovld protocol discover-project --project-id <id-or-name>
139
+ ovld protocol discover-project --project-id "My Project"
138
140
  ovld protocol discover-project --working-directory /path/to/repo
139
141
  ```
140
142
 
141
- Use `--project-id` when the project id is already known. Use `--working-directory` to override cwd path matching. If the runtime has an `OVERLORD_DEVICE_FINGERPRINT`, pass `--device-fingerprint "$OVERLORD_DEVICE_FINGERPRINT"` so resource-directory matching prefers the current device.
143
+ Use `--project-id` when the project ID or name is already known (names are unique per organization, matched case-insensitively). Use `--working-directory` to override cwd path matching. If the runtime has an `OVERLORD_DEVICE_FINGERPRINT`, pass `--device-fingerprint "$OVERLORD_DEVICE_FINGERPRINT"` so resource-directory matching prefers the current device.
142
144
 
143
145
  ## Creating Projects
144
146
 
@@ -114,6 +114,7 @@ When creating tickets from within a repository:
114
114
  - Prefer `create` by default for draft ticket creation.
115
115
  - Use `prompt` only when the user explicitly asks to start execution immediately.
116
116
  - Both commands can resolve the project from the current working directory; use `--working-directory` to override or `--project-id` to be explicit.
117
+ - Follow-up `create` calls under an active session inherit the current ticket's project by default, but `--project-id` can override that when the follow-up belongs in a different project.
117
118
  - Create multiple tickets when each prompt represents a different feature or goal.
118
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":"..."}]'`.
119
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.
@@ -134,11 +135,12 @@ To inspect project resolution explicitly:
134
135
 
135
136
  ```bash
136
137
  ovld protocol discover-project
137
- ovld protocol discover-project --project-id <project_uuid>
138
+ ovld protocol discover-project --project-id <id-or-name>
139
+ ovld protocol discover-project --project-id "My Project"
138
140
  ovld protocol discover-project --working-directory /path/to/repo
139
141
  ```
140
142
 
141
- Use `--project-id` when the project id is already known. Use `--working-directory` to override cwd path matching. If the runtime has an `OVERLORD_DEVICE_FINGERPRINT`, pass `--device-fingerprint "$OVERLORD_DEVICE_FINGERPRINT"` so resource-directory matching prefers the current device.
143
+ Use `--project-id` when the project ID or name is already known (names are unique per organization, matched case-insensitively). Use `--working-directory` to override cwd path matching. If the runtime has an `OVERLORD_DEVICE_FINGERPRINT`, pass `--device-fingerprint "$OVERLORD_DEVICE_FINGERPRINT"` so resource-directory matching prefers the current device.
142
144
 
143
145
  ## Creating Projects
144
146
 
@@ -64,7 +64,8 @@ const tools = [
64
64
  properties: {
65
65
  project_id: {
66
66
  type: 'string',
67
- description: 'Project UUID to resolve directly. Skips working-directory matching.'
67
+ description:
68
+ 'Project UUID or name to resolve directly. Skips working-directory matching. Names are unique per organization and matched case-insensitively.'
68
69
  },
69
70
  working_directory: {
70
71
  type: 'string',
@@ -270,7 +271,8 @@ const tools = [
270
271
  },
271
272
  {
272
273
  name: 'create_ticket',
273
- description: 'Create a draft ticket without attaching (ovld protocol create).',
274
+ description:
275
+ 'Create a draft ticket without attaching (ovld protocol create). When session_key/ticket_id are provided, this creates a follow-up draft and project_id can override the current ticket project.',
274
276
  inputSchema: {
275
277
  type: 'object',
276
278
  properties: {
@@ -1170,6 +1172,11 @@ const searchTicketsTool = {
1170
1172
  limit: {
1171
1173
  type: 'number',
1172
1174
  description: 'Maximum number of results to return (1–50, default 8).'
1175
+ },
1176
+ project_id: {
1177
+ type: 'string',
1178
+ description:
1179
+ 'Optional project UUID or name to restrict results. Names are matched case-insensitively.'
1173
1180
  }
1174
1181
  }
1175
1182
  },
@@ -1177,7 +1184,8 @@ const searchTicketsTool = {
1177
1184
  query: args.query,
1178
1185
  statuses: Array.isArray(args.statuses) ? args.statuses.join(',') : args.statuses,
1179
1186
  'include-completed': args.include_completed,
1180
- limit: args.limit
1187
+ limit: args.limit,
1188
+ 'project-id': args.project_id
1181
1189
  }),
1182
1190
  subcommand: 'search-tickets'
1183
1191
  };
@@ -114,6 +114,7 @@ When creating tickets from within a repository:
114
114
  - Prefer `create` by default for draft ticket creation.
115
115
  - Use `prompt` only when the user explicitly asks to start execution immediately.
116
116
  - Both commands can resolve the project from the current working directory; use `--working-directory` to override or `--project-id` to be explicit.
117
+ - Follow-up `create` calls under an active session inherit the current ticket's project by default, but `--project-id` can override that when the follow-up belongs in a different project.
117
118
  - Create multiple tickets when each prompt represents a different feature or goal.
118
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":"..."}]'`.
119
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.
@@ -134,11 +135,12 @@ To inspect project resolution explicitly:
134
135
 
135
136
  ```bash
136
137
  ovld protocol discover-project
137
- ovld protocol discover-project --project-id <project_uuid>
138
+ ovld protocol discover-project --project-id <id-or-name>
139
+ ovld protocol discover-project --project-id "My Project"
138
140
  ovld protocol discover-project --working-directory /path/to/repo
139
141
  ```
140
142
 
141
- Use `--project-id` when the project id is already known. Use `--working-directory` to override cwd path matching. If the runtime has an `OVERLORD_DEVICE_FINGERPRINT`, pass `--device-fingerprint "$OVERLORD_DEVICE_FINGERPRINT"` so resource-directory matching prefers the current device.
143
+ Use `--project-id` when the project ID or name is already known (names are unique per organization, matched case-insensitively). Use `--working-directory` to override cwd path matching. If the runtime has an `OVERLORD_DEVICE_FINGERPRINT`, pass `--device-fingerprint "$OVERLORD_DEVICE_FINGERPRINT"` so resource-directory matching prefers the current device.
142
144
 
143
145
  ## Creating Projects
144
146