okstra 0.45.0 → 0.45.1

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.45.0",
3
+ "version": "0.45.1",
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.45.0",
3
- "builtAt": "2026-06-04T06:11:59.186Z",
2
+ "package": "0.45.1",
3
+ "builtAt": "2026-06-04T08:12:55.290Z",
4
4
  "repoRoot": "/home/runner/work/okstra/okstra"
5
5
  }
@@ -229,11 +229,11 @@
229
229
  }
230
230
  },
231
231
  "defaults_or_custom": {
232
- "label": "기본 워커/모델로 진행할까요, 아니면 커스터마이즈할까요?",
232
+ "label": "역할별로 어떤 모델을 쓸지 정하는 단계입니다 (참여 워커 구성을 바꾸는 게 아닙니다).\n· 기본값으로 진행 — lead·실행자/워커·report-writer 를 모두 추천 모델로 두고 바로 진행합니다.\n· 커스터마이즈 — 역할별 모델을 직접 고르고, 추가 directive·관련 task 도 지정합니다.",
233
233
  "echo_template": "customize: {value}",
234
234
  "options": {
235
- "defaults": "Use defaults",
236
- "customize": "Customize"
235
+ "defaults": "기본값으로 진행 (역할별 추천 모델 그대로)",
236
+ "customize": "커스터마이즈 (역할별 모델 직접 선택)"
237
237
  }
238
238
  },
239
239
  "workers_override": {
@@ -1068,23 +1068,22 @@ def _list_implementation_planning_reports(
1068
1068
  """
1069
1069
  if not state.task_group or not state.task_id or not state.project_root:
1070
1070
  return []
1071
- base = (tasks_root(state.project_root)
1072
- / slugify_task_segment(state.task_group)
1073
- / slugify_task_segment(state.task_id)
1074
- / "runs" / "implementation-planning")
1075
- if not base.is_dir():
1071
+ # Run seq lives in the filename, not a per-run subdirectory: every
1072
+ # implementation-planning run writes into the same flat `reports/`
1073
+ # dir (see paths.py — `run_reports = runs/<task-type>/reports`).
1074
+ reports_dir = (tasks_root(state.project_root)
1075
+ / slugify_task_segment(state.task_group)
1076
+ / slugify_task_segment(state.task_id)
1077
+ / "runs" / "implementation-planning" / "reports")
1078
+ if not reports_dir.is_dir():
1076
1079
  return []
1077
1080
  pat = re.compile(r"^final-report-implementation-planning-(\d+)\.md$")
1078
1081
  found: list[tuple[int, Path]] = []
1079
- for run_dir in base.iterdir():
1080
- reports = run_dir / "reports"
1081
- if not reports.is_dir():
1082
+ for child in reports_dir.iterdir():
1083
+ m = pat.match(child.name)
1084
+ if not m:
1082
1085
  continue
1083
- for child in reports.iterdir():
1084
- m = pat.match(child.name)
1085
- if not m:
1086
- continue
1087
- found.append((int(m.group(1)), child))
1086
+ found.append((int(m.group(1)), child))
1088
1087
  found.sort(key=lambda x: -x[0])
1089
1088
  out: list[Path] = []
1090
1089
  for _, p in found[:limit]: