okstra 0.88.1 → 0.88.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "okstra",
3
- "version": "0.88.1",
3
+ "version": "0.88.2",
4
4
  "description": "Multi-agent cross-verification orchestrator runtime + Claude Code skills.",
5
5
  "license": "MIT",
6
6
  "author": "devonshin",
@@ -1,5 +1,5 @@
1
1
  {
2
- "package": "0.88.1",
3
- "builtAt": "2026-06-17T05:43:28.195Z",
2
+ "package": "0.88.2",
3
+ "builtAt": "2026-06-17T07:14:48.667Z",
4
4
  "repoRoot": "/home/runner/work/okstra/okstra"
5
5
  }
@@ -176,9 +176,20 @@ Order of operations:
176
176
  paths under `<task-group>/sub.../`, and those paths cannot be formed
177
177
  until `task_group` is known. Without this preflight the recursive walk
178
178
  would either stall mid-collection or invent a placeholder group.
179
+
180
+ **Sequential, never batched.** Run Step 2a as its **own**
181
+ `AskUserQuestion` call here, then ask sub-step 1's ticket question in a
182
+ **separate** call. Do NOT combine the task-group question and the
183
+ ticket-ref question into one `AskUserQuestion` — they are asked one at a
184
+ time, task group first (this preflight), ticket ref second. When you
185
+ relay this preflight, tell the user in one line *why* task group comes
186
+ before the ticket (it scopes where this ticket's brief — and any
187
+ sub-ticket briefs — are written).
179
188
  1. `AskUserQuestion` (free text):
180
189
  `"Ticket key or URL (e.g. LIN-1234, PROJ-42, https://linear.app/..., https://your.atlassian.net/browse/...)"` →
181
- `ticket_ref`.
190
+ `ticket_ref`. Issue this only **after** Step 2a's task-group answer is in
191
+ hand — never in the same `AskUserQuestion` call as the task-group
192
+ question.
182
193
  2. Auto-detect the tracker by URL host or key prefix (`linear.app` → Linear,
183
194
  `atlassian.net` or `JIRA_*` pattern → Jira, `github.com/.../issues/` →
184
195
  GitHub, `notion.so` → Notion). If detection fails, ask once more via
@@ -335,12 +346,38 @@ Once validation passes, jump to Step 2 (task key).
335
346
 
336
347
  ### 2a. Task group
337
348
 
338
- `AskUserQuestion` (free text):
349
+ Offer existing groups as recommendations before accepting a new one — never
350
+ ask a bare free-text question that forces the user to retype an existing
351
+ group from memory. First collect the project's known task groups (each
352
+ command is its own Bash call starting with the literal token `okstra`, per
353
+ Step 0):
354
+
355
+ ```bash
356
+ okstra task-list
357
+ ```
358
+
359
+ Parse the JSON `tasks[]` array; collect the **distinct** `taskGroup` values
360
+ ordered by `updatedAt` descending. Take the **2 most-recent** distinct
361
+ groups as recommendations.
362
+
363
+ `AskUserQuestion` (single-select):
364
+
365
+ - **Label**: `"Task group?"`
366
+ - **Options** (recommendations first, `직접 입력` always last):
367
+ 1. (and 2.) each recommended existing group, most-recent first —
368
+ label `<group> (기존)` (e.g. `uploadfont (기존)`).
369
+ 3. `직접 입력` — free-text for a new or other group.
370
+
371
+ When the user picks an existing group, use its value verbatim. When they
372
+ pick `직접 입력`, take a free-text value via a follow-up question.
339
373
 
340
- - `"Task group (e.g. backend-api, INV-1234, refactor)"` → `task_group`
374
+ If `okstra task-list` returns an empty `tasks[]` (no prior tasks), skip the
375
+ picker and ask one free-text question:
376
+ `"Task group (e.g. backend-api, INV-1234, refactor)"` → `task_group`.
341
377
 
342
378
  Slug rule: same as `okstra-run` Step 3 — slugify, must have at least one
343
- alphanumeric character.
379
+ alphanumeric character. Note that an existing group's value is already a
380
+ slug; a `직접 입력` value is slugified before use.
344
381
 
345
382
  If `task_group` was already collected by Step 1b sub-step 0 (tracker
346
383
  preflight), reuse that value silently — do NOT ask again.