okstra 0.36.1 → 0.36.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
package/runtime/BUILD.json
CHANGED
|
@@ -74,7 +74,10 @@ def _format_duration_ms(value: Any) -> str:
|
|
|
74
74
|
except (TypeError, ValueError):
|
|
75
75
|
return "--"
|
|
76
76
|
total_seconds = ms // 1000
|
|
77
|
-
|
|
77
|
+
hours, remainder = divmod(total_seconds, 3600)
|
|
78
|
+
minutes, seconds = divmod(remainder, 60)
|
|
79
|
+
if hours:
|
|
80
|
+
return f"{hours}h {minutes:02d}m {seconds:02d}s"
|
|
78
81
|
return f"{minutes}m {seconds:02d}s"
|
|
79
82
|
|
|
80
83
|
|
|
@@ -125,13 +125,17 @@ def populate_data_token_cells(data_path: Path, team_state: dict) -> int:
|
|
|
125
125
|
changes += 4
|
|
126
126
|
|
|
127
127
|
# Execution Status by Agent — per-row token / cost / duration.
|
|
128
|
-
|
|
128
|
+
# `collect.py` writes lead usage to `team_state["leadUsage"]` (flat
|
|
129
|
+
# usage_block), while worker usage lives at `worker["usage"]`. Wrap
|
|
130
|
+
# the lead block so `_populate_execution_row` can read both shapes
|
|
131
|
+
# via the same `source["usage"]` path.
|
|
132
|
+
lead_source = {"usage": team_state.get("leadUsage") or {}}
|
|
129
133
|
workers = team_state.get("workers") or []
|
|
130
134
|
rows = data.get("executionStatus") or []
|
|
131
135
|
for row in rows:
|
|
132
136
|
role = row.get("role", "")
|
|
133
137
|
if "lead" in role.lower():
|
|
134
|
-
_populate_execution_row(row,
|
|
138
|
+
_populate_execution_row(row, lead_source)
|
|
135
139
|
changes += 1
|
|
136
140
|
continue
|
|
137
141
|
for worker in workers:
|