@contraagent/ui 0.1.0 → 0.2.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.
Files changed (389) hide show
  1. package/README.md +9 -2
  2. package/custom-elements.json +3300 -3098
  3. package/dist/adapters/check-rows.d.ts +2 -0
  4. package/dist/adapters/check-rows.d.ts.map +1 -1
  5. package/dist/adapters/check-rows.js +2 -0
  6. package/dist/adapters/check-rows.js.map +1 -1
  7. package/dist/adapters/panel-body.d.ts +15 -1
  8. package/dist/adapters/panel-body.d.ts.map +1 -1
  9. package/dist/adapters/panel-body.js +27 -0
  10. package/dist/adapters/panel-body.js.map +1 -1
  11. package/dist/contraagent-ui.js +684 -641
  12. package/dist/elements/lists/ca-panel-body.d.ts +16 -3
  13. package/dist/elements/lists/ca-panel-body.d.ts.map +1 -1
  14. package/dist/elements/lists/ca-panel-body.js +74 -8
  15. package/dist/elements/lists/ca-panel-body.js.map +1 -1
  16. package/dist/elements/overview/ca-overview.d.ts +2 -1
  17. package/dist/elements/overview/ca-overview.d.ts.map +1 -1
  18. package/dist/elements/overview/ca-overview.js +8 -1
  19. package/dist/elements/overview/ca-overview.js.map +1 -1
  20. package/dist/elements/overview/ca-services.d.ts +25 -0
  21. package/dist/elements/overview/ca-services.d.ts.map +1 -0
  22. package/dist/elements/overview/ca-services.js +77 -0
  23. package/dist/elements/overview/ca-services.js.map +1 -0
  24. package/dist/elements/overview/index.d.ts +1 -0
  25. package/dist/elements/overview/index.d.ts.map +1 -1
  26. package/dist/elements/overview/index.js +1 -0
  27. package/dist/elements/overview/index.js.map +1 -1
  28. package/dist/elements/shared/contract-parts.d.ts.map +1 -1
  29. package/dist/elements/shared/contract-parts.js +18 -2
  30. package/dist/elements/shared/contract-parts.js.map +1 -1
  31. package/dist/elements/shell/ca-monitor.d.ts +4 -2
  32. package/dist/elements/shell/ca-monitor.d.ts.map +1 -1
  33. package/dist/elements/shell/ca-monitor.js +4 -2
  34. package/dist/elements/shell/ca-monitor.js.map +1 -1
  35. package/dist/elements/task/header.d.ts.map +1 -1
  36. package/dist/elements/task/header.js +7 -3
  37. package/dist/elements/task/header.js.map +1 -1
  38. package/dist/locales/ja.d.ts +24 -0
  39. package/dist/locales/ja.d.ts.map +1 -1
  40. package/dist/locales/ja.js +24 -0
  41. package/dist/locales/ja.js.map +1 -1
  42. package/dist/words/changes.d.ts +2 -2
  43. package/dist/words/changes.d.ts.map +1 -1
  44. package/dist/words/changes.js +2 -0
  45. package/dist/words/changes.js.map +1 -1
  46. package/dist/words/index.d.ts +1 -0
  47. package/dist/words/index.d.ts.map +1 -1
  48. package/dist/words/index.js +1 -0
  49. package/dist/words/index.js.map +1 -1
  50. package/dist/words/panels.d.ts +6 -0
  51. package/dist/words/panels.d.ts.map +1 -1
  52. package/dist/words/panels.js +13 -0
  53. package/dist/words/panels.js.map +1 -1
  54. package/dist/words/services.d.ts +16 -0
  55. package/dist/words/services.d.ts.map +1 -0
  56. package/dist/words/services.js +45 -0
  57. package/dist/words/services.js.map +1 -0
  58. package/docs/embed.md +4 -1
  59. package/package.json +3 -3
  60. package/src/adapters/check-rows.ts +3 -0
  61. package/src/adapters/panel-body.ts +40 -2
  62. package/src/elements/lists/ca-panel-body.ts +70 -9
  63. package/src/elements/overview/ca-overview.ts +8 -1
  64. package/src/elements/overview/ca-services.ts +66 -0
  65. package/src/elements/overview/index.ts +1 -0
  66. package/src/elements/shared/contract-parts.ts +18 -2
  67. package/src/elements/shell/ca-monitor.ts +4 -2
  68. package/src/elements/task/header.ts +7 -3
  69. package/src/locales/ja.ts +24 -0
  70. package/src/words/changes.ts +4 -2
  71. package/src/words/index.ts +1 -0
  72. package/src/words/panels.ts +18 -0
  73. package/src/words/services.ts +57 -0
  74. package/dist/core/clock.d.ts +0 -20
  75. package/dist/core/clock.d.ts.map +0 -1
  76. package/dist/core/clock.js +0 -45
  77. package/dist/core/clock.js.map +0 -1
  78. package/dist/core/route.d.ts +0 -62
  79. package/dist/core/route.d.ts.map +0 -1
  80. package/dist/core/route.js +0 -143
  81. package/dist/core/route.js.map +0 -1
  82. package/dist/core/router.d.ts +0 -27
  83. package/dist/core/router.d.ts.map +0 -1
  84. package/dist/core/router.js +0 -57
  85. package/dist/core/router.js.map +0 -1
  86. package/dist/elements/lists/filters.d.ts +0 -28
  87. package/dist/elements/lists/filters.d.ts.map +0 -1
  88. package/dist/elements/lists/filters.js +0 -71
  89. package/dist/elements/lists/filters.js.map +0 -1
  90. package/dist/elements/overview/ca-pipeline-progress.d.ts +0 -17
  91. package/dist/elements/overview/ca-pipeline-progress.d.ts.map +0 -1
  92. package/dist/elements/overview/ca-pipeline-progress.js +0 -119
  93. package/dist/elements/overview/ca-pipeline-progress.js.map +0 -1
  94. package/dist/elements/overview/ca-plan-matrix.d.ts +0 -27
  95. package/dist/elements/overview/ca-plan-matrix.d.ts.map +0 -1
  96. package/dist/elements/overview/ca-plan-matrix.js +0 -113
  97. package/dist/elements/overview/ca-plan-matrix.js.map +0 -1
  98. package/dist/elements/overview/flow-types.d.ts +0 -2
  99. package/dist/elements/overview/flow-types.d.ts.map +0 -1
  100. package/dist/elements/overview/flow-types.js +0 -2
  101. package/dist/elements/overview/flow-types.js.map +0 -1
  102. package/dist/elements/overview/graph/arrange.d.ts +0 -16
  103. package/dist/elements/overview/graph/arrange.d.ts.map +0 -1
  104. package/dist/elements/overview/graph/arrange.js +0 -152
  105. package/dist/elements/overview/graph/arrange.js.map +0 -1
  106. package/dist/elements/overview/graph/card.d.ts +0 -64
  107. package/dist/elements/overview/graph/card.d.ts.map +0 -1
  108. package/dist/elements/overview/graph/card.js +0 -160
  109. package/dist/elements/overview/graph/card.js.map +0 -1
  110. package/dist/elements/overview/graph/flow-index.d.ts +0 -52
  111. package/dist/elements/overview/graph/flow-index.d.ts.map +0 -1
  112. package/dist/elements/overview/graph/flow-index.js +0 -121
  113. package/dist/elements/overview/graph/flow-index.js.map +0 -1
  114. package/dist/elements/overview/graph/highlight.d.ts +0 -14
  115. package/dist/elements/overview/graph/highlight.d.ts.map +0 -1
  116. package/dist/elements/overview/graph/highlight.js +0 -33
  117. package/dist/elements/overview/graph/highlight.js.map +0 -1
  118. package/dist/elements/overview/graph/layer.d.ts +0 -32
  119. package/dist/elements/overview/graph/layer.d.ts.map +0 -1
  120. package/dist/elements/overview/graph/layer.js +0 -92
  121. package/dist/elements/overview/graph/layer.js.map +0 -1
  122. package/dist/elements/overview/graph/layout.d.ts +0 -80
  123. package/dist/elements/overview/graph/layout.d.ts.map +0 -1
  124. package/dist/elements/overview/graph/layout.js +0 -261
  125. package/dist/elements/overview/graph/layout.js.map +0 -1
  126. package/dist/elements/overview/graph/marks.d.ts +0 -18
  127. package/dist/elements/overview/graph/marks.d.ts.map +0 -1
  128. package/dist/elements/overview/graph/marks.js +0 -17
  129. package/dist/elements/overview/graph/marks.js.map +0 -1
  130. package/dist/elements/overview/graph/matrix.d.ts +0 -58
  131. package/dist/elements/overview/graph/matrix.d.ts.map +0 -1
  132. package/dist/elements/overview/graph/matrix.js +0 -93
  133. package/dist/elements/overview/graph/matrix.js.map +0 -1
  134. package/dist/elements/overview/graph/nav.d.ts +0 -15
  135. package/dist/elements/overview/graph/nav.d.ts.map +0 -1
  136. package/dist/elements/overview/graph/nav.js +0 -80
  137. package/dist/elements/overview/graph/nav.js.map +0 -1
  138. package/dist/elements/overview/graph/pan-zoom.d.ts +0 -83
  139. package/dist/elements/overview/graph/pan-zoom.d.ts.map +0 -1
  140. package/dist/elements/overview/graph/pan-zoom.js +0 -189
  141. package/dist/elements/overview/graph/pan-zoom.js.map +0 -1
  142. package/dist/elements/overview/graph/paths.d.ts +0 -9
  143. package/dist/elements/overview/graph/paths.d.ts.map +0 -1
  144. package/dist/elements/overview/graph/paths.js +0 -44
  145. package/dist/elements/overview/graph/paths.js.map +0 -1
  146. package/dist/elements/overview/graph/place-card.d.ts +0 -36
  147. package/dist/elements/overview/graph/place-card.d.ts.map +0 -1
  148. package/dist/elements/overview/graph/place-card.js +0 -68
  149. package/dist/elements/overview/graph/place-card.js.map +0 -1
  150. package/dist/elements/overview/graph/project.d.ts +0 -31
  151. package/dist/elements/overview/graph/project.d.ts.map +0 -1
  152. package/dist/elements/overview/graph/project.js +0 -455
  153. package/dist/elements/overview/graph/project.js.map +0 -1
  154. package/dist/elements/overview/graph/selection.d.ts +0 -31
  155. package/dist/elements/overview/graph/selection.d.ts.map +0 -1
  156. package/dist/elements/overview/graph/selection.js +0 -44
  157. package/dist/elements/overview/graph/selection.js.map +0 -1
  158. package/dist/elements/overview/graph/states.d.ts +0 -6
  159. package/dist/elements/overview/graph/states.d.ts.map +0 -1
  160. package/dist/elements/overview/graph/states.js +0 -5
  161. package/dist/elements/overview/graph/states.js.map +0 -1
  162. package/dist/elements/overview/graph/types.d.ts +0 -124
  163. package/dist/elements/overview/graph/types.d.ts.map +0 -1
  164. package/dist/elements/overview/graph/types.js +0 -3
  165. package/dist/elements/overview/graph/types.js.map +0 -1
  166. package/dist/elements/overview/graph/view.d.ts +0 -16
  167. package/dist/elements/overview/graph/view.d.ts.map +0 -1
  168. package/dist/elements/overview/graph/view.js +0 -20
  169. package/dist/elements/overview/graph/view.js.map +0 -1
  170. package/dist/elements/overview/kpis-model.d.ts +0 -31
  171. package/dist/elements/overview/kpis-model.d.ts.map +0 -1
  172. package/dist/elements/overview/kpis-model.js +0 -30
  173. package/dist/elements/overview/kpis-model.js.map +0 -1
  174. package/dist/elements/overview/logic.d.ts +0 -442
  175. package/dist/elements/overview/logic.d.ts.map +0 -1
  176. package/dist/elements/overview/logic.js +0 -1431
  177. package/dist/elements/overview/logic.js.map +0 -1
  178. package/dist/elements/overview/pipeline-graph/dag.d.ts +0 -4
  179. package/dist/elements/overview/pipeline-graph/dag.d.ts.map +0 -1
  180. package/dist/elements/overview/pipeline-graph/dag.js +0 -259
  181. package/dist/elements/overview/pipeline-graph/dag.js.map +0 -1
  182. package/dist/elements/overview/pipeline-graph/icons.d.ts +0 -5
  183. package/dist/elements/overview/pipeline-graph/icons.d.ts.map +0 -1
  184. package/dist/elements/overview/pipeline-graph/icons.js +0 -13
  185. package/dist/elements/overview/pipeline-graph/icons.js.map +0 -1
  186. package/dist/elements/overview/pipeline-graph/legend.d.ts +0 -9
  187. package/dist/elements/overview/pipeline-graph/legend.d.ts.map +0 -1
  188. package/dist/elements/overview/pipeline-graph/legend.js +0 -59
  189. package/dist/elements/overview/pipeline-graph/legend.js.map +0 -1
  190. package/dist/elements/overview/pipeline-graph/matrix.d.ts +0 -4
  191. package/dist/elements/overview/pipeline-graph/matrix.d.ts.map +0 -1
  192. package/dist/elements/overview/pipeline-graph/matrix.js +0 -193
  193. package/dist/elements/overview/pipeline-graph/matrix.js.map +0 -1
  194. package/dist/elements/overview/pipeline-graph/table.d.ts +0 -11
  195. package/dist/elements/overview/pipeline-graph/table.d.ts.map +0 -1
  196. package/dist/elements/overview/pipeline-graph/table.js +0 -74
  197. package/dist/elements/overview/pipeline-graph/table.js.map +0 -1
  198. package/dist/elements/overview/pipeline-graph/tools.d.ts +0 -5
  199. package/dist/elements/overview/pipeline-graph/tools.d.ts.map +0 -1
  200. package/dist/elements/overview/pipeline-graph/tools.js +0 -48
  201. package/dist/elements/overview/pipeline-graph/tools.js.map +0 -1
  202. package/dist/elements/overview/pipeline-graph/words.d.ts +0 -45
  203. package/dist/elements/overview/pipeline-graph/words.d.ts.map +0 -1
  204. package/dist/elements/overview/pipeline-graph/words.js +0 -108
  205. package/dist/elements/overview/pipeline-graph/words.js.map +0 -1
  206. package/dist/elements/overview/place-card.d.ts +0 -36
  207. package/dist/elements/overview/place-card.d.ts.map +0 -1
  208. package/dist/elements/overview/place-card.js +0 -68
  209. package/dist/elements/overview/place-card.js.map +0 -1
  210. package/dist/elements/overview/timeline-model.d.ts +0 -44
  211. package/dist/elements/overview/timeline-model.d.ts.map +0 -1
  212. package/dist/elements/overview/timeline-model.js +0 -53
  213. package/dist/elements/overview/timeline-model.js.map +0 -1
  214. package/dist/elements/shared/ca-count.d.ts +0 -17
  215. package/dist/elements/shared/ca-count.d.ts.map +0 -1
  216. package/dist/elements/shared/ca-count.js +0 -59
  217. package/dist/elements/shared/ca-count.js.map +0 -1
  218. package/dist/elements/shared/ca-elapsed.d.ts +0 -14
  219. package/dist/elements/shared/ca-elapsed.d.ts.map +0 -1
  220. package/dist/elements/shared/ca-elapsed.js +0 -33
  221. package/dist/elements/shared/ca-elapsed.js.map +0 -1
  222. package/dist/elements/shared/ca-json-tree.d.ts +0 -16
  223. package/dist/elements/shared/ca-json-tree.d.ts.map +0 -1
  224. package/dist/elements/shared/ca-json-tree.js +0 -52
  225. package/dist/elements/shared/ca-json-tree.js.map +0 -1
  226. package/dist/elements/shared/ca-markdown.d.ts +0 -19
  227. package/dist/elements/shared/ca-markdown.d.ts.map +0 -1
  228. package/dist/elements/shared/ca-markdown.js +0 -59
  229. package/dist/elements/shared/ca-markdown.js.map +0 -1
  230. package/dist/elements/shared/fact-line.d.ts +0 -4
  231. package/dist/elements/shared/fact-line.d.ts.map +0 -1
  232. package/dist/elements/shared/fact-line.js +0 -8
  233. package/dist/elements/shared/fact-line.js.map +0 -1
  234. package/dist/elements/task/rounds.d.ts +0 -14
  235. package/dist/elements/task/rounds.d.ts.map +0 -1
  236. package/dist/elements/task/rounds.js +0 -59
  237. package/dist/elements/task/rounds.js.map +0 -1
  238. package/dist/elements/task/transcript-model.d.ts +0 -106
  239. package/dist/elements/task/transcript-model.d.ts.map +0 -1
  240. package/dist/elements/task/transcript-model.js +0 -280
  241. package/dist/elements/task/transcript-model.js.map +0 -1
  242. package/dist/elements/task/who.d.ts +0 -5
  243. package/dist/elements/task/who.d.ts.map +0 -1
  244. package/dist/elements/task/who.js +0 -30
  245. package/dist/elements/task/who.js.map +0 -1
  246. package/dist/events.d.ts +0 -107
  247. package/dist/events.d.ts.map +0 -1
  248. package/dist/events.js +0 -5
  249. package/dist/events.js.map +0 -1
  250. package/dist/i18n.d.ts +0 -16
  251. package/dist/i18n.d.ts.map +0 -1
  252. package/dist/i18n.js +0 -48
  253. package/dist/i18n.js.map +0 -1
  254. package/dist/lib/clock.d.ts +0 -20
  255. package/dist/lib/clock.d.ts.map +0 -1
  256. package/dist/lib/clock.js +0 -45
  257. package/dist/lib/clock.js.map +0 -1
  258. package/dist/lib/format.d.ts +0 -35
  259. package/dist/lib/format.d.ts.map +0 -1
  260. package/dist/lib/format.js +0 -117
  261. package/dist/lib/format.js.map +0 -1
  262. package/dist/lib/highlight.d.ts +0 -5
  263. package/dist/lib/highlight.d.ts.map +0 -1
  264. package/dist/lib/highlight.js +0 -86
  265. package/dist/lib/highlight.js.map +0 -1
  266. package/dist/lib/labels.d.ts +0 -103
  267. package/dist/lib/labels.d.ts.map +0 -1
  268. package/dist/lib/labels.js +0 -249
  269. package/dist/lib/labels.js.map +0 -1
  270. package/dist/lib/markdown.d.ts +0 -13
  271. package/dist/lib/markdown.d.ts.map +0 -1
  272. package/dist/lib/markdown.js +0 -118
  273. package/dist/lib/markdown.js.map +0 -1
  274. package/dist/lib/memory.d.ts +0 -27
  275. package/dist/lib/memory.d.ts.map +0 -1
  276. package/dist/lib/memory.js +0 -117
  277. package/dist/lib/memory.js.map +0 -1
  278. package/dist/lib/quota-format.d.ts +0 -28
  279. package/dist/lib/quota-format.d.ts.map +0 -1
  280. package/dist/lib/quota-format.js +0 -67
  281. package/dist/lib/quota-format.js.map +0 -1
  282. package/dist/lib/scroll.d.ts +0 -16
  283. package/dist/lib/scroll.d.ts.map +0 -1
  284. package/dist/lib/scroll.js +0 -70
  285. package/dist/lib/scroll.js.map +0 -1
  286. package/dist/lib/status.d.ts +0 -25
  287. package/dist/lib/status.d.ts.map +0 -1
  288. package/dist/lib/status.js +0 -40
  289. package/dist/lib/status.js.map +0 -1
  290. package/dist/route.d.ts +0 -46
  291. package/dist/route.d.ts.map +0 -1
  292. package/dist/route.js +0 -102
  293. package/dist/route.js.map +0 -1
  294. package/dist/router.d.ts +0 -23
  295. package/dist/router.d.ts.map +0 -1
  296. package/dist/router.js +0 -55
  297. package/dist/router.js.map +0 -1
  298. package/dist/styles/base.d.ts +0 -11
  299. package/dist/styles/base.d.ts.map +0 -1
  300. package/dist/styles/base.js +0 -241
  301. package/dist/styles/base.js.map +0 -1
  302. package/dist/styles/chips.d.ts +0 -2
  303. package/dist/styles/chips.d.ts.map +0 -1
  304. package/dist/styles/chips.js +0 -18
  305. package/dist/styles/chips.js.map +0 -1
  306. package/dist/styles/executor-icon.d.ts +0 -3
  307. package/dist/styles/executor-icon.d.ts.map +0 -1
  308. package/dist/styles/executor-icon.js +0 -9
  309. package/dist/styles/executor-icon.js.map +0 -1
  310. package/dist/styles/facts.d.ts +0 -2
  311. package/dist/styles/facts.d.ts.map +0 -1
  312. package/dist/styles/facts.js +0 -7
  313. package/dist/styles/facts.js.map +0 -1
  314. package/dist/styles/index.d.ts +0 -17
  315. package/dist/styles/index.d.ts.map +0 -1
  316. package/dist/styles/index.js +0 -16
  317. package/dist/styles/index.js.map +0 -1
  318. package/dist/styles/layout.d.ts +0 -2
  319. package/dist/styles/layout.d.ts.map +0 -1
  320. package/dist/styles/layout.js +0 -30
  321. package/dist/styles/layout.js.map +0 -1
  322. package/dist/styles/legend.d.ts +0 -2
  323. package/dist/styles/legend.d.ts.map +0 -1
  324. package/dist/styles/legend.js +0 -8
  325. package/dist/styles/legend.js.map +0 -1
  326. package/dist/styles/meter.d.ts +0 -3
  327. package/dist/styles/meter.d.ts.map +0 -1
  328. package/dist/styles/meter.js +0 -9
  329. package/dist/styles/meter.js.map +0 -1
  330. package/dist/styles/motion.d.ts +0 -2
  331. package/dist/styles/motion.d.ts.map +0 -1
  332. package/dist/styles/motion.js +0 -27
  333. package/dist/styles/motion.js.map +0 -1
  334. package/dist/styles/prose.d.ts +0 -3
  335. package/dist/styles/prose.d.ts.map +0 -1
  336. package/dist/styles/prose.js +0 -59
  337. package/dist/styles/prose.js.map +0 -1
  338. package/dist/styles/reset.d.ts +0 -2
  339. package/dist/styles/reset.d.ts.map +0 -1
  340. package/dist/styles/reset.js +0 -13
  341. package/dist/styles/reset.js.map +0 -1
  342. package/dist/styles/status.d.ts +0 -2
  343. package/dist/styles/status.d.ts.map +0 -1
  344. package/dist/styles/status.js +0 -52
  345. package/dist/styles/status.js.map +0 -1
  346. package/dist/styles/text.d.ts +0 -2
  347. package/dist/styles/text.d.ts.map +0 -1
  348. package/dist/styles/text.js +0 -21
  349. package/dist/styles/text.js.map +0 -1
  350. package/dist/styles/theme-sheet.d.ts +0 -12
  351. package/dist/styles/theme-sheet.d.ts.map +0 -1
  352. package/dist/styles/theme-sheet.js +0 -24
  353. package/dist/styles/theme-sheet.js.map +0 -1
  354. package/dist/styles/themes.d.ts +0 -75
  355. package/dist/styles/themes.d.ts.map +0 -1
  356. package/dist/styles/themes.js +0 -452
  357. package/dist/styles/themes.js.map +0 -1
  358. package/dist/styles/tokens.d.ts +0 -8
  359. package/dist/styles/tokens.d.ts.map +0 -1
  360. package/dist/styles/tokens.js +0 -32
  361. package/dist/styles/tokens.js.map +0 -1
  362. package/dist/themes/boot.d.ts +0 -7
  363. package/dist/themes/boot.d.ts.map +0 -1
  364. package/dist/themes/boot.js +0 -14
  365. package/dist/themes/boot.js.map +0 -1
  366. package/dist/themes/choice.d.ts +0 -16
  367. package/dist/themes/choice.d.ts.map +0 -1
  368. package/dist/themes/choice.js +0 -45
  369. package/dist/themes/choice.js.map +0 -1
  370. package/dist/themes/data.d.ts +0 -42
  371. package/dist/themes/data.d.ts.map +0 -1
  372. package/dist/themes/data.js +0 -356
  373. package/dist/themes/data.js.map +0 -1
  374. package/dist/themes/index.d.ts +0 -5
  375. package/dist/themes/index.d.ts.map +0 -1
  376. package/dist/themes/index.js +0 -8
  377. package/dist/themes/index.js.map +0 -1
  378. package/dist/themes/sheet.d.ts +0 -12
  379. package/dist/themes/sheet.d.ts.map +0 -1
  380. package/dist/themes/sheet.js +0 -24
  381. package/dist/themes/sheet.js.map +0 -1
  382. package/dist/themes/tokens-list.d.ts +0 -15
  383. package/dist/themes/tokens-list.d.ts.map +0 -1
  384. package/dist/themes/tokens-list.js +0 -62
  385. package/dist/themes/tokens-list.js.map +0 -1
  386. package/dist/words/units.d.ts +0 -9
  387. package/dist/words/units.d.ts.map +0 -1
  388. package/dist/words/units.js +0 -12
  389. package/dist/words/units.js.map +0 -1
@@ -1,219 +1,243 @@
1
- var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r},n=new Set([`launch`,`message_update`,`tool_execution_start`,`tool_execution_update`,`tool_execution_end`,`acall`,`aresult`,`message_start`,`message_end`,`turn_end`,`notice`,`auto_retry_start`]);function r(e){return n.has(e.type)?e:null}var i=class extends Error{constructor(e,t,n=0,r=``){super(`No JSON answer from ${e}: ${t} ${n} ${r}`.trim()),this.url=e,this.failure=t,this.status=n,this.type=r,this.name=`ApiError`}};function a(e={}){let t=(e.baseUrl??``).replace(/\/$/,``),n=(t||globalThis.location?.origin||``).replace(/\/$/,``),r=e.fetch??globalThis.fetch;async function a(e,t){let{path:a={},query:o={}}=t??{},s=n+e.replace(/\{(\w+)\}/g,(e,t)=>t in a?encodeURIComponent(a[t]):e),c=Object.entries(o).filter(([,e])=>e!=null).map(([e,t])=>`${e}=${encodeURIComponent(t)}`).join(`&`),l=c?`${s}?${c}`:s,u;try{u=await r(new Request(l))}catch{throw new i(l,`network`)}let{status:d,ok:f}=u,p=(u.headers.get(`Content-Type`)??``).split(`;`)[0].trim().toLowerCase();try{if(f)return await u.json()}catch{}throw new i(l,f?`not-json`:`status`,d,p)}return{baseUrl:t,info:()=>a(`/api/info`),runs:()=>a(`/api/runs`),hosts:()=>a(`/api/hosts`),journal:(e,t=0)=>a(`/api/runs/{run}/journal`,{path:{run:e},query:{since:t}}),definitions:e=>a(`/api/runs/{run}/definitions`,{path:{run:e}}),task:(e,t)=>a(`/api/runs/{run}/task/{key}`,{path:{run:e,key:t}}),stream:(e,t,n=0)=>a(`/api/runs/{run}/stream/{key}`,{path:{run:e,key:t},query:{since:n}}),panel:(e,t)=>a(`/api/runs/{run}/panels/{name}`,{path:{run:e,name:t}}),trends:(e={})=>a(`/api/trends`,{query:{...e}}),trendsPanel:(e,t={})=>a(`/api/trends/panels/{name}`,{path:{name:e},query:{...t}})}}var o=[`journal`,`procs`,`plan`,`outputs`,`cursor`,`ready`];function s(e,t,n,r){let i=new(r.EventSource??globalThis.EventSource)(e);i.onopen=()=>n.open?.(),i.onerror=()=>n.error?.();for(let e of t)i.addEventListener(e,t=>{n.message({event:e,data:JSON.parse(t.data)})});return()=>i.close()}var c=encodeURIComponent,l=e=>(e.baseUrl??``).replace(/\/$/,``);function u(e,t){let n=t?.flow_call;return n?e?.flow_calls?.find(e=>e.id===n)?.function??``:``}var d=e=>e.ok,f=e=>e.stop!==`invalid_input`&&e.stop!==`skipped`;function p(e,t){if(e?.state===`running`)return`running`;let n=t[t.length-1];return n?n.stop===`skipped`?`skipped`:n.stop===`invalid_input`?`not_started`:n.stop===`partial`?`partial`:d(n)?t.some(e=>f(e)&&!d(e))?`recovered`:`done`:`failed`:e?.state===`blocked`?`not_started`:`waiting`}function m(e){let t=new Set,n=[];for(let r of e)f(r)&&(t.has(r.key)&&n.push(r),d(r)||t.add(r.key));return n}function h(e){switch(e){case`blocked`:return`not_started`;case`pending`:return`waiting`;default:return e}}var g=e=>e===`done`||e===`recovered`||e===`partial`||e===`skipped`;function _(e){let t=new Map;for(let n of e.values())n.outcome===`failed`&&t.set(n.key,{task:n,stopped:[]});let n=[];for(let r of e.values()){if(r.outcome!==`not_started`)continue;let e=r.cause?t.get(r.cause):void 0;e?e.stopped.push(r):n.push(r)}let r=e=>e.attempts[e.attempts.length-1]?.ts??``;return{failed:[...t.values()].sort((e,t)=>r(t.task).localeCompare(r(e.task))),notStarted:n,partial:[...e.values()].filter(e=>e.outcome===`partial`),recovered:[...e.values()].filter(e=>e.outcome===`recovered`)}}function v(e){let t=Array.isArray(e?.flow)?e.flow:[];for(let e=t.length-1;e>=0;e--){let n=t[e]?.loops??[],r=n[n.length-1];if(r)return typeof r.pass==`number`&&r.pass>=1?r.pass:1}return null}function y(e,t){let n=new Map(t.nodes.map(e=>[e.key,e]));return[...e.values()].map(t=>{let r=t.attempts[t.attempts.length-1],i=n.get(t.key);return{...t,pass:v(i),wall_s:t.tries.reduce((e,t)=>e+(t.wall_s||0),0),last_ts:r?.ts??``,last_stop:r?.stop??``,waits_for:t.outcome===`waiting`?(i?.after??[]).filter(t=>!g(e.get(t)?.outcome??`waiting`)):[],claims:i?.claims??[],priority:i?.priority??0}})}var b={nodes:[],groups:[]},x=new WeakMap;function S(e,t=b){let n=t??b,r=x.get(e);r||x.set(e,r=new WeakMap);let i=r.get(n);return i||r.set(n,i=function(e,t){let n=function(e,t){let n=new Map;for(let t of e){let e=n.get(t.key);e||n.set(t.key,e=[]),e.push(t)}let r=new Map(t.nodes.map(e=>[e.key,e])),i=[...new Set([...t.nodes.map(e=>e.key),...n.keys()])],a=new Map;for(let e of i){let i=r.get(e),o=n.get(e)??[],s=o[0];a.set(e,{key:e,kind:i?.kind??s?.kind??``,unit:i?.unit??s?.unit??``,executor:i?.executor??s?.executor??`agent`,outcome:p(i,o),attempts:o,tries:o.filter(f),cause:null,deferred:i?.deferred??``,deferredCause:i?.deferred_cause??null,deferredIn:u(t,i?.deferred_cause)})}let o=(e,t)=>{for(let n of r.get(e)?.after??[]){if(t.has(n))continue;t.add(n);let e=a.get(n);if(e?.outcome===`failed`)return n;if(e?.outcome===`not_started`){let e=o(n,t);if(e)return e}}return null};for(let e of a.values())e.outcome===`not_started`&&(e.cause=o(e.key,new Set));return a}(e,t),r=function(e){let t={done:0,recovered:0,partial:0,failed:0,not_started:0,running:0,waiting:0,skipped:0,total:0};for(let n of e.values())t[n.outcome]++,t.total++;return t}(n);return{outcomes:n,rows:y(n,t),counts:{...r,doneTotal:r.done+r.recovered,finished:r.done+r.recovered+r.partial+r.skipped},problems:_(n),kinds:[...new Set([...n.values()].map(e=>e.kind))].sort(),tries:ee(e)}}(e,n)),i}function ee(e){let t=e.filter(f).length;return{tries:t,notStarted:e.length-t}}function te(e){let t=(...t)=>e.nodes.filter(e=>t.includes(e.state)).length;return{done:t(`done`),partial:t(`partial`),skipped:t(`skipped`),failed:t(`failed`),notStarted:t(`blocked`),left:t(`pending`,`running`)}}function ne(e){let t=Date.parse(e?.started_at??``),n=Date.parse(e?.last_ts??``);return Number.isNaN(t)||Number.isNaN(n)?null:Math.max(0,(n-t)/1e3)}function re(e,t=!1){return t||e?.running?`running`:e?.unresponsive?`unresponsive`:`stopped`}var ie=(e,t)=>t?.host_id?e?.find(e=>e.host_id===t.host_id):void 0;function ae(e){let t=e.run.length-(e.host_id?.length??0)-1;return e.host_id&&t>0&&e.run.endsWith(`@${e.host_id}`)?e.run.slice(0,t):e.run}var oe=[`running`,`unresponsive`,`stopped`];function se(e,t=[]){let n=[...new Set(e.map(e=>e.host_id??``))],r=t.map(e=>e.host_id),i=e=>oe.indexOf(re(e));return[...r.filter(e=>n.includes(e)),...n.filter(e=>!r.includes(e)).sort()].map(n=>({hostId:n,host:t.find(e=>e.host_id===n),runs:e.filter(e=>(e.host_id??``)===n).sort((e,t)=>i(e)-i(t))}))}var ce=e=>!!e.stop&&e.stop!==`completed`&&e.stop!==`partial`&&e.stop!==`skipped`,C=e=>e.executor===`python`;function le(e){let t=0;return e.map((n,r)=>{let i=e[r-1];return i&&(n.attempt??0)<=(i.attempt??0)&&t++,t})}var ue=e=>`${e.ts}|${e.key}`,de=(e,t)=>e.find(e=>e.run===t),fe=(e,t)=>re(t,!!e.procs?.alive)===`running`;function pe(e){return e?[...e.launches.map(e=>({cls:`llm`,id:`c:${e.key}`,kind:e.kind||`task`,unit:e.unit||``,detail:[e.unit,e.model||e.role].filter(Boolean).join(` | `),ageS:e.age_s,key:e.key})),...e.python_tasks.map(e=>({cls:`py`,id:`p:${e.key}`,kind:e.kind||`task`,unit:e.unit||``,detail:e.unit||`Python`,ageS:e.age_s,key:``}))]:[]}var me=[`tiles`,`table`,`columns`,`lines`,`heatmap`,`hbars`,`status_grid`,`note`,`blocks`];function he(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e.type;return typeof t==`string`&&me.includes(t)?e:null}var ge=e=>(e.scope??`run`)===`run`,_e={title:`contraagent`,panels:[],api_version:``},ve=(e,t)=>e instanceof i?e:new i(t,`network`),ye=class{constructor(e={}){this.snap={info:_e,runs:[],hosts:null,run:``,state:{journal:[],procs:null,plan:{nodes:[],groups:[],flow_calls:[]},outputs:{contracts:[],tally:{valid:0,invalid:0,refused:0,pending:0,failed:0,running:0}},cursor:null,panels:{},ready:!1},connected:!1,fresh:new Set,runsLoaded:!1,error:null,trends:null},this.trendsQuery=null,this.trendsAsked=0,this.trendsOver=null,this.refreshing=!1,this.trendsBusy=!1,this.infoError=null,this.runsError=null,this.hostsError=null,this.infoLoaded=!1,this.stopped=!1,this.listeners=new Set,this.rowListeners=new Set,this.closeFeed=null,this.queue=[],this.flushTimer=null,this.pollTimer=null,this.opts={runsEveryMs:5e3,batchMs:50,freshMs:4e3,...e},this.client=e.client??a(e.baseUrl===void 0?{}:{baseUrl:e.baseUrl})}get snapshot(){return this.snap}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}onNewRow(e){return this.rowListeners.add(e),()=>this.rowListeners.delete(e)}async start(){this.stopped=!1,await this.refresh(),this.schedule()}schedule(){this.stopped||this.opts.runsEveryMs<=0||this.pollTimer||(this.pollTimer=setTimeout(()=>{this.pollTimer=null,this.refresh().finally(()=>this.schedule())},this.opts.runsEveryMs))}async refresh(){if(this.refreshing)return;this.refreshing=!0;try{this.infoLoaded||await this.loadInfo(),await this.refreshRuns()}finally{this.refreshing=!1}let e=this.trendsQuery;!e||this.trendsBusy||this.stopped||this.trendsKey()===this.trendsOver||(this.trendsBusy=!0,this.fetchTrends(e).finally(()=>this.trendsBusy=!1))}trendsKey(){return`${this.snap.runs.map(e=>`${e.run}\t${e.last_ts}\t${e.attempts}`).join(`
1
+ var e=Object.defineProperty,t=(t,n)=>{let r={};for(var i in t)e(r,i,{get:t[i],enumerable:!0});return n||e(r,Symbol.toStringTag,{value:`Module`}),r},n=new Set([`launch`,`message_update`,`tool_execution_start`,`tool_execution_update`,`tool_execution_end`,`acall`,`aresult`,`message_start`,`message_end`,`turn_end`,`notice`,`auto_retry_start`]);function r(e){return n.has(e.type)?e:null}var i=class extends Error{constructor(e,t,n=0,r=``){super(`No JSON answer from ${e}: ${t} ${n} ${r}`.trim()),this.url=e,this.failure=t,this.status=n,this.type=r,this.name=`ApiError`}};function a(e={}){let t=(e.baseUrl??``).replace(/\/$/,``),n=(t||globalThis.location?.origin||``).replace(/\/$/,``),r=e.fetch??globalThis.fetch;async function a(e,t){let{path:a={},query:o={}}=t??{},s=n+e.replace(/\{(\w+)\}/g,(e,t)=>t in a?encodeURIComponent(a[t]):e),c=Object.entries(o).filter(([,e])=>e!=null).map(([e,t])=>`${e}=${encodeURIComponent(t)}`).join(`&`),l=c?`${s}?${c}`:s,u;try{u=await r(new Request(l))}catch{throw new i(l,`network`)}let{status:d,ok:f}=u,p=(u.headers.get(`Content-Type`)??``).split(`;`)[0].trim().toLowerCase();try{if(f)return await u.json()}catch{}throw new i(l,f?`not-json`:`status`,d,p)}return{baseUrl:t,info:()=>a(`/api/info`),runs:()=>a(`/api/runs`),hosts:()=>a(`/api/hosts`),journal:(e,t=0)=>a(`/api/runs/{run}/journal`,{path:{run:e},query:{since:t}}),definitions:e=>a(`/api/runs/{run}/definitions`,{path:{run:e}}),task:(e,t)=>a(`/api/runs/{run}/task/{key}`,{path:{run:e,key:t}}),stream:(e,t,n=0)=>a(`/api/runs/{run}/stream/{key}`,{path:{run:e,key:t},query:{since:n}}),panel:(e,t)=>a(`/api/runs/{run}/panels/{name}`,{path:{run:e,name:t}}),trends:(e={})=>a(`/api/trends`,{query:{...e}}),trendsPanel:(e,t={})=>a(`/api/trends/panels/{name}`,{path:{name:e},query:{...t}})}}var o=[`journal`,`procs`,`plan`,`outputs`,`cursor`,`ready`];function s(e,t,n,r){let i=new(r.EventSource??globalThis.EventSource)(e);i.onopen=()=>n.open?.(),i.onerror=()=>n.error?.();for(let e of t)i.addEventListener(e,t=>{n.message({event:e,data:JSON.parse(t.data)})});return()=>i.close()}var c=encodeURIComponent,l=e=>(e.baseUrl??``).replace(/\/$/,``);function u(e,t){let n=t?.flow_call;return n?e?.flow_calls?.find(e=>e.id===n)?.function??``:``}var d=e=>e.ok,f=e=>e.stop!==`invalid_input`&&e.stop!==`skipped`;function p(e,t){if(e?.state===`running`)return`running`;let n=t[t.length-1];return n?n.stop===`skipped`?`skipped`:n.stop===`invalid_input`?`not_started`:n.stop===`partial`?`partial`:d(n)?t.some(e=>f(e)&&!d(e))?`recovered`:`done`:`failed`:e?.state===`blocked`?`not_started`:`waiting`}function m(e){let t=new Set,n=[];for(let r of e)f(r)&&(t.has(r.key)&&n.push(r),d(r)||t.add(r.key));return n}function h(e){switch(e){case`blocked`:return`not_started`;case`pending`:return`waiting`;default:return e}}var g=e=>e===`done`||e===`recovered`||e===`partial`||e===`skipped`;function _(e){let t=new Map;for(let n of e.values())n.outcome===`failed`&&t.set(n.key,{task:n,stopped:[]});let n=[];for(let r of e.values()){if(r.outcome!==`not_started`)continue;let e=r.cause?t.get(r.cause):void 0;e?e.stopped.push(r):n.push(r)}let r=e=>e.attempts[e.attempts.length-1]?.ts??``;return{failed:[...t.values()].sort((e,t)=>r(t.task).localeCompare(r(e.task))),notStarted:n,partial:[...e.values()].filter(e=>e.outcome===`partial`),recovered:[...e.values()].filter(e=>e.outcome===`recovered`)}}function ee(e){let t=Array.isArray(e?.flow)?e.flow:[];for(let e=t.length-1;e>=0;e--){let n=t[e]?.loops??[],r=n[n.length-1];if(r)return typeof r.pass==`number`&&r.pass>=1?r.pass:1}return null}function v(e,t){let n=new Map(t.nodes.map(e=>[e.key,e]));return[...e.values()].map(t=>{let r=t.attempts[t.attempts.length-1],i=n.get(t.key);return{...t,pass:ee(i),wall_s:t.tries.reduce((e,t)=>e+(t.wall_s||0),0),last_ts:r?.ts??``,last_stop:r?.stop??``,waits_for:t.outcome===`waiting`?(i?.after??[]).filter(t=>!g(e.get(t)?.outcome??`waiting`)):[],claims:i?.claims??[],priority:i?.priority??0}})}var y={nodes:[],groups:[]},b=new WeakMap;function x(e,t=y){let n=t??y,r=b.get(e);r||b.set(e,r=new WeakMap);let i=r.get(n);return i||r.set(n,i=function(e,t){let n=function(e,t){let n=new Map;for(let t of e){let e=n.get(t.key);e||n.set(t.key,e=[]),e.push(t)}let r=new Map(t.nodes.map(e=>[e.key,e])),i=[...new Set([...t.nodes.map(e=>e.key),...n.keys()])],a=new Map;for(let e of i){let i=r.get(e),o=n.get(e)??[],s=o[0];a.set(e,{key:e,kind:i?.kind??s?.kind??``,unit:i?.unit??s?.unit??``,executor:i?.executor??s?.executor??`agent`,outcome:p(i,o),attempts:o,tries:o.filter(f),cause:null,deferred:i?.deferred??``,deferredCause:i?.deferred_cause??null,deferredIn:u(t,i?.deferred_cause)})}let o=(e,t)=>{for(let n of r.get(e)?.after??[]){if(t.has(n))continue;t.add(n);let e=a.get(n);if(e?.outcome===`failed`)return n;if(e?.outcome===`not_started`){let e=o(n,t);if(e)return e}}return null};for(let e of a.values())e.outcome===`not_started`&&(e.cause=o(e.key,new Set));return a}(e,t),r=function(e){let t={done:0,recovered:0,partial:0,failed:0,not_started:0,running:0,waiting:0,skipped:0,total:0};for(let n of e.values())t[n.outcome]++,t.total++;return t}(n);return{outcomes:n,rows:v(n,t),counts:{...r,doneTotal:r.done+r.recovered,finished:r.done+r.recovered+r.partial+r.skipped},problems:_(n),kinds:[...new Set([...n.values()].map(e=>e.kind))].sort(),tries:te(e)}}(e,n)),i}function te(e){let t=e.filter(f).length;return{tries:t,notStarted:e.length-t}}function ne(e){let t=(...t)=>e.nodes.filter(e=>t.includes(e.state)).length;return{done:t(`done`),partial:t(`partial`),skipped:t(`skipped`),failed:t(`failed`),notStarted:t(`blocked`),left:t(`pending`,`running`)}}function re(e){let t=Date.parse(e?.started_at??``),n=Date.parse(e?.last_ts??``);return Number.isNaN(t)||Number.isNaN(n)?null:Math.max(0,(n-t)/1e3)}function ie(e,t=!1){return t||e?.running?`running`:e?.unresponsive?`unresponsive`:`stopped`}var ae=(e,t)=>t?.host_id?e?.find(e=>e.host_id===t.host_id):void 0;function oe(e){let t=e.run.length-(e.host_id?.length??0)-1;return e.host_id&&t>0&&e.run.endsWith(`@${e.host_id}`)?e.run.slice(0,t):e.run}var se=[`running`,`unresponsive`,`stopped`];function ce(e,t=[]){let n=[...new Set(e.map(e=>e.host_id??``))],r=t.map(e=>e.host_id),i=e=>se.indexOf(ie(e));return[...r.filter(e=>n.includes(e)),...n.filter(e=>!r.includes(e)).sort()].map(n=>({hostId:n,host:t.find(e=>e.host_id===n),runs:e.filter(e=>(e.host_id??``)===n).sort((e,t)=>i(e)-i(t))}))}var le=e=>!!e.stop&&e.stop!==`completed`&&e.stop!==`partial`&&e.stop!==`skipped`,S=e=>e.executor===`python`;function ue(e){let t=0;return e.map((n,r)=>{let i=e[r-1];return i&&(n.attempt??0)<=(i.attempt??0)&&t++,t})}var de=e=>`${e.ts}|${e.key}`,fe=(e,t)=>e.find(e=>e.run===t),pe=(e,t)=>ie(t,!!e.procs?.alive)===`running`;function me(e){return e?[...e.launches.map(e=>({cls:`llm`,id:`c:${e.key}`,kind:e.kind||`task`,unit:e.unit||``,detail:[e.unit,e.model||e.role].filter(Boolean).join(` | `),ageS:e.age_s,key:e.key})),...e.python_tasks.map(e=>({cls:`py`,id:`p:${e.key}`,kind:e.kind||`task`,unit:e.unit||``,detail:e.unit||`Python`,ageS:e.age_s,key:``}))]:[]}var he=[`tiles`,`table`,`columns`,`lines`,`heatmap`,`hbars`,`status_grid`,`note`,`code`,`tree`,`blocks`];function ge(e){if(!e||typeof e!=`object`||Array.isArray(e))return null;let t=e.type;return typeof t==`string`&&he.includes(t)?e:null}var _e=e=>(e.scope??`run`)===`run`,ve={title:`contraagent`,panels:[],api_version:``},ye=(e,t)=>e instanceof i?e:new i(t,`network`),be=class{constructor(e={}){this.snap={info:ve,runs:[],hosts:null,run:``,state:{journal:[],procs:null,plan:{nodes:[],groups:[],flow_calls:[]},outputs:{contracts:[],tally:{valid:0,invalid:0,refused:0,pending:0,failed:0,running:0}},cursor:null,panels:{},ready:!1},connected:!1,fresh:new Set,runsLoaded:!1,error:null,trends:null},this.trendsQuery=null,this.trendsAsked=0,this.trendsOver=null,this.refreshing=!1,this.trendsBusy=!1,this.infoError=null,this.runsError=null,this.hostsError=null,this.infoLoaded=!1,this.stopped=!1,this.listeners=new Set,this.rowListeners=new Set,this.closeFeed=null,this.queue=[],this.flushTimer=null,this.pollTimer=null,this.opts={runsEveryMs:5e3,batchMs:50,freshMs:4e3,...e},this.client=e.client??a(e.baseUrl===void 0?{}:{baseUrl:e.baseUrl})}get snapshot(){return this.snap}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}onNewRow(e){return this.rowListeners.add(e),()=>this.rowListeners.delete(e)}async start(){this.stopped=!1,await this.refresh(),this.schedule()}schedule(){this.stopped||this.opts.runsEveryMs<=0||this.pollTimer||(this.pollTimer=setTimeout(()=>{this.pollTimer=null,this.refresh().finally(()=>this.schedule())},this.opts.runsEveryMs))}async refresh(){if(this.refreshing)return;this.refreshing=!0;try{this.infoLoaded||await this.loadInfo(),await this.refreshRuns()}finally{this.refreshing=!1}let e=this.trendsQuery;!e||this.trendsBusy||this.stopped||this.trendsKey()===this.trendsOver||(this.trendsBusy=!0,this.fetchTrends(e).finally(()=>this.trendsBusy=!1))}trendsKey(){return`${this.snap.runs.map(e=>`${e.run}\t${e.last_ts}\t${e.attempts}`).join(`
2
2
  `)}\n\n${this.trendPanelNames().join(`
3
- `)}`}trendPanelNames(){return this.snap.info.panels.filter(e=>e.scope===`trends`).map(e=>e.name)}async loadTrends(e){let t=this.snap.trends&&JSON.stringify(this.snap.trends.query)===JSON.stringify(e);this.trendsQuery=e,this.set({trends:{query:e,data:t?this.snap.trends.data:this.snap.trends?.data??null,panels:t?this.snap.trends.panels:{},loading:!0,error:null}}),await this.fetchTrends(e)}closeTrends(){this.trendsQuery=null}async fetchTrends(e){let t=++this.trendsAsked;this.trendsOver=this.trendsKey();let n=()=>t!==this.trendsAsked||this.stopped?null:this.snap.trends,r=this.trendPanelNames(),i=this.client.trends(e).then(t=>{let r=n();r&&this.set({trends:{...r,query:e,data:t,loading:!1,error:null}})},t=>{let r=n();r&&this.set({trends:{...r,query:e,loading:!1,error:ve(t,`${this.client.baseUrl}/api/trends`)}})}),a=(e,t)=>{let r=n();r&&this.set({trends:{...r,panels:{...r.panels,[e]:t}}})},o=r.map(t=>this.client.trendsPanel(t,e).then(e=>a(t,e),e=>a(t,{error:String(e)})));await Promise.allSettled([i,...o])}async loadInfo(){try{let e=this.panelNames(),t=await this.client.info();if(this.stopped)return;this.infoLoaded=!0,this.infoError=null,this.set({info:t}),this.snap.run&&this.panelNames()!==e&&this.reopen()}catch(e){this.infoError=ve(e,`${this.client.baseUrl}/api/info`)}}async refreshRuns(){let[e,t]=await Promise.allSettled([this.client.runs(),this.snap.info.hosts?this.client.hosts():Promise.resolve(null)]);if(this.stopped)return;let n={};e.status===`fulfilled`?(n.runs=e.value,n.runsLoaded=!0,this.runsError=null):this.runsError=ve(e.reason,`${this.client.baseUrl}/api/runs`),t.status===`fulfilled`?(n.hosts=t.value,this.hostsError=null):this.hostsError=ve(t.reason,`${this.client.baseUrl}/api/hosts`);let r=this.infoError??this.runsError??this.hostsError;r?.message!==this.snap.error?.message&&(n.error=r),Object.keys(n).length&&this.set(n)}panelNames(){return this.snap.info.panels.filter(ge).map(e=>e.name).join(`
4
- `)}reopen(){let e=this.snap.run;this.closeFeed?.(),this.closeFeed=null,this.selectRun(e)}selectRun(e){if(e===this.snap.run&&(this.closeFeed||!e)||(this.closeFeed?.(),this.closeFeed=null,this.queue=[],this.set({run:e,state:{journal:[],procs:null,plan:{nodes:[],groups:[],flow_calls:[]},outputs:{contracts:[],tally:{valid:0,invalid:0,refused:0,pending:0,failed:0,running:0}},cursor:null,panels:{},ready:!1},connected:!1,fresh:new Set}),!e))return;let t=this.snap.info.panels.filter(ge).map(e=>e.name),n={open:()=>{this.push({event:`connected`}),this.set({connected:!0})},error:()=>this.set({connected:!1}),message:e=>this.push(e)};this.closeFeed=this.opts.openRunFeed?this.opts.openRunFeed(e,t,n):function(e,t,n,r={}){let i=[...o,...t.map(e=>`panel:${e}`)];return s(`${l(r)}/events?run=${c(e)}`,i,n,r)}(e,t,n,{...this.opts.baseUrl===void 0?{}:{baseUrl:this.opts.baseUrl},...this.opts.feed})}stop(){this.stopped=!0,this.closeFeed?.(),this.closeFeed=null,this.pollTimer&&clearTimeout(this.pollTimer),this.pollTimer=null,this.flushTimer&&clearTimeout(this.flushTimer),this.flushTimer=null}push(e){this.queue.push(e),this.flushTimer??=setTimeout(()=>this.flush(),this.opts.batchMs)}flush(){this.flushTimer=null;let e=this.queue;this.queue=[];let t=this.snap.state.ready,n=[];for(let r of e)r.event===`connected`?t=!1:r.event===`ready`?t=!0:r.event===`journal`&&t&&n.push(r.data);let r=function(e,t){let n=e,r=null,i=()=>{if(!r)return;let e=n.journal.concat(r);n={...n,journal:e.length>4e3?e.slice(e.length-4e3):e},r=null};for(let e of t)if(e.event!==`journal`)switch(i(),e.event){case`connected`:n={...n,journal:[],ready:!1};break;case`ready`:n={...n,ready:!0};break;case`procs`:n={...n,procs:e.data};break;case`plan`:n={...n,plan:e.data};break;case`outputs`:n={...n,outputs:e.data};break;case`cursor`:n={...n,cursor:e.data};break;default:n={...n,panels:{...n.panels,[e.event.slice(6)]:e.data}}}else(r??=[]).push(e.data);return i(),n}(this.snap.state,e);if(!n.length)return void this.set({state:r});let i=new Set(this.snap.fresh);for(let e of n)i.add(ue(e));this.set({state:r,fresh:i});for(let e of n)for(let t of this.rowListeners)t(e);setTimeout(()=>{let e=new Set(this.snap.fresh);for(let t of n)e.delete(ue(t));this.set({fresh:e})},this.opts.freshMs)}set(e){this.snap={...this.snap,...e};for(let e of this.listeners)e(this.snap)}},be=encodeURIComponent;function xe(e){let t=Array.from(e,e=>/^[\p{L}\p{N}._-]$/u.test(e)?e:`_`).join(``).replace(/\.\.+/g,e=>`_`.repeat(e.length));return t.startsWith(`.`)?`_${t.slice(1)}`:t||`_`}var Se=e=>Object.keys(e).length>0;function Ce(e){return(t,n,r)=>{let i=!1;return(async()=>{try{let[a,o,s,c,l]=await Promise.all([e.journal(t),e.file(`runs/${be(t)}/plan.json`),e.file(`runs/${be(t)}/outputs.json`),e.file(`runs/${be(t)}/cursor.json`),Promise.all(n.map(n=>e.panel(t,n).catch(e=>({error:String(e)}))))]);if(i)return;r.open?.();let u=e=>!i&&r.message(e);for(let e of a.entries)u({event:`journal`,data:e});u({event:`plan`,data:o}),u({event:`outputs`,data:s}),u({event:`cursor`,data:Se(c)?c:null}),n.forEach((e,t)=>u({event:`panel:${e}`,data:l[t]??{}})),u({event:`ready`,data:{journal:a.total}})}catch{i||r.error?.()}})(),()=>{i=!0}}}var we=()=>({input:0,output:0,cache_read:0,cache_creation:0,calls:0,cost:null,reported:0}),Te=e=>e.input+e.output+e.cache_read+e.cache_creation;function Ee(e,t){let n=t.usage;return n||t.cost_usd!==null&&t.cost_usd!==void 0?(n&&(e.input+=n.input??0,e.output+=n.output??0,e.cache_read+=n.cache_read??0,e.cache_creation+=n.cache_creation??0,e.calls+=n.calls??0),t.cost_usd!==null&&t.cost_usd!==void 0&&(e.cost=(e.cost??0)+t.cost_usd),e.reported++,e):e}function De(e){let t={input:0,output:0,cache_read:0,cache_creation:0,calls:0,cost:null,reported:0};for(let n of e)Ee(t,n);return t.reported?t:null}function Oe(e,t){let n=new Map,r={input:0,output:0,cache_read:0,cache_creation:0,calls:0,cost:null,reported:0};for(let i of e){Ee(r,i);let e=t(i),a=n.get(e);a||n.set(e,a={id:e,kind:i.kind,unit:i.unit??``,spend:we(),share:null}),Ee(a.spend,i)}let i=[...n.values()].filter(e=>e.spend.reported);for(let e of i)e.share=r.cost?(e.spend.cost??0)/r.cost:null;return i.sort((e,t)=>(t.spend.cost??0)-(e.spend.cost??0)||Te(t.spend)-Te(e.spend))}var ke=e=>Oe(e,e=>e.kind).map(e=>({...e,unit:``})),Ae=e=>(e.input??0)+(e.output??0)+(e.cache_read??0)+(e.cache_creation??0);function je(e,t){switch(t){case`cost`:return e.cost_usd??null;case`tokens`:return Ae(e);case`time`:return e.wall_s??0;case`sessions`:return e.sessions}}var Me=e=>[`cost`,`tokens`,`time`,`sessions`].filter(t=>e.some(e=>(je(e,t)??0)>0)),Ne=e=>Date.parse(e.observed_at??``),Pe=e=>!Number.isNaN(Ne(e))&&(e.five_hour_pct!=null||e.seven_day_pct!=null);function Fe(e){let t=[];for(let n of e)for(let e of n.quota??[])Pe(e)&&t.push({reading:e,key:n.key,attempt:n.attempt??0});return t.sort((e,t)=>Ne(e.reading)-Ne(t.reading))}var Ie=e=>`${e.credential??``}\0${e.account??``}`;function Le(e){let t=new Map;for(let{reading:n}of Fe(e)){let e=Ie(n),r=t.get(e);r||t.set(e,r=[]),r.push(n)}let n=[];for(let e of t.values()){let t=e[0],r=e[e.length-1];t&&r&&n.push({credential:r.credential??``,account:r.account??``,first:t,last:r})}return n.sort((e,t)=>(t.last.seven_day_pct??0)-(e.last.seven_day_pct??0))}function Re(e,t){let n=(e.quota??[]).filter(Pe).sort((e,t)=>Ne(e)-Ne(t)),r=Date.parse(e.ts),i=n[0]??null,a=i===null?``:Ie(i);return{start:i,next:(i===null||Number.isNaN(r)?void 0:t.find(e=>Ne(e.reading)>r&&Ie(e.reading)===a))?.reading??null}}function ze(e){let t=/^invalid input:\s*(.*)$/s.exec(e||``);if(!t)return[];let n=[];for(let e of(t[1]??``).split(`; `)){let t=/^input from (\S+) is missing: (\S+)/.exec(e);t?n.push({path:t[2]??``,producer:t[1]??``,problem:`missing`}):(t=/^input from (\S+) ended \S+: (\S+)/.exec(e),t?n.push({path:t[2]??``,producer:t[1]??``,problem:`failed`}):(t=/^(\S+?): required input is missing/.exec(e),t?n.push({path:t[1]??``,producer:``,problem:`missing`}):(t=/^(\S+?): /.exec(e),t&&!n.some(e=>e.path===t?.[1])&&n.push({path:t[1]??``,producer:``,problem:`checks`}))))}return n}function w(e,t){if(!e||!t)return e??``;let n=t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);return e.replace(RegExp(`(?:/[^\\s:'"]*)?/${n}/`,`g`),``)}var Be=`lit-localize-status`,T=(e,...t)=>({strTag:!0,strings:e,values:t}),Ve=(e,t,n)=>{let r=e[0];for(let i=1;i<e.length;i++)r+=t[n?n[i-1]:i-1],r+=e[i];return r},He=e=>{return typeof(t=e)!=`string`&&`strTag`in t?Ve(e.strings,e.values):e;var t},E=He,Ue=!1,We=class{constructor(e){this.__litLocalizeEventHandler=e=>{e.detail.status===`ready`&&this.host.requestUpdate()},this.host=e}hostConnected(){window.addEventListener(Be,this.__litLocalizeEventHandler)}hostDisconnected(){window.removeEventListener(Be,this.__litLocalizeEventHandler)}},Ge=e=>e.addController(new We(e)),D=()=>(e,t)=>(e.addInitializer(Ge),e),Ke=class{constructor(){this.settled=!1,this.promise=new Promise((e,t)=>{this._resolve=e,this._reject=t})}resolve(e){this.settled=!0,this._resolve(e)}reject(e){this.settled=!0,this._reject(e)}},qe=[];for(let e=0;e<256;e++)qe[e]=(e>>4&15).toString(16)+(15&e).toString(16);var Je=new WeakMap,Ye=new Map;function Xe(e){window.dispatchEvent(new CustomEvent(Be,{detail:e}))}var Ze,Qe,$e,et,tt,nt=``,rt=new Ke;rt.resolve();var it=0,at=e=>(function(){if(Ue)throw Error(`lit-localize can only be configured once`);E=(e,t)=>function(e,t,n){if(e){let r=e[n?.id??function(e){let t=typeof e==`string`?e:e.strings,n=Ye.get(t);return n===void 0&&(n=function(e,t){return(t?`h`:`s`)+function(e){let t=0,n=8997,r=0,i=33826,a=0,o=40164,s=0,c=52210;for(let l=0;l<e.length;l++)n^=e.charCodeAt(l),t=435*n,r=435*i,a=435*o,s=435*c,a+=n<<8,s+=i<<8,r+=t>>>16,n=65535&t,a+=r>>>16,i=65535&r,c=s+(a>>>16)&65535,o=65535&a;return qe[c>>8]+qe[255&c]+qe[o>>8]+qe[255&o]+qe[i>>8]+qe[255&i]+qe[n>>8]+qe[255&n]}(typeof e==`string`?e:e.join(``))}(t,typeof e!=`string`&&!(`strTag`in e)),Ye.set(t,n)),n}(t)];if(r){if(typeof r==`string`)return r;if(`strTag`in r)return Ve(r.strings,t.values,r.values);{let e=Je.get(r);return e===void 0&&(e=r.values,Je.set(r,e)),{...r,values:e.map(e=>t.values[e])}}}}return He(t)}(tt,e,t),Ue=!0}(),nt=Qe=e.sourceLocale,($e=new Set(e.targetLocales)).add(e.sourceLocale),et=e.loadLocale,{getLocale:ot,setLocale:st}),ot=()=>nt,st=e=>{if(e===(Ze??nt))return rt.promise;if(!$e||!et)throw Error(`Internal error`);if(!$e.has(e))throw Error(`Invalid locale code`);let t=++it;return Ze=e,rt.settled&&(rt=new Ke),Xe({status:`loading`,loadingLocale:e}),(e===Qe?Promise.resolve({templates:void 0}):et(e)).then(n=>{it===t&&(nt=e,Ze=void 0,tt=n.templates,Xe({status:`ready`,readyLocale:e}),rt.resolve())},n=>{it===t&&(Xe({status:`error`,errorLocale:e,errorMessage:n.toString()}),rt.reject(n))}),rt.promise},ct=globalThis,lt=ct.ShadowRoot&&(ct.ShadyCSS===void 0||ct.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,ut=Symbol(),dt=new WeakMap,ft=class{constructor(e,t,n){if(this._$cssResult$=!0,n!==ut)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(lt&&e===void 0){let n=t!==void 0&&t.length===1;n&&(e=dt.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),n&&dt.set(t,e))}return e}toString(){return this.cssText}},pt=e=>new ft(typeof e==`string`?e:e+``,void 0,ut),O=(e,...t)=>new ft(e.length===1?e[0]:t.reduce((t,n,r)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if(typeof e==`number`)return e;throw Error(`Value passed to 'css' function must be a 'css' function result: `+e+`. Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.`)})(n)+e[r+1],e[0]),e,ut),mt=(e,t)=>{if(lt)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let n of t){let t=document.createElement(`style`),r=ct.litNonce;r!==void 0&&t.setAttribute(`nonce`,r),t.textContent=n.cssText,e.appendChild(t)}},ht=lt?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return pt(t)})(e):e,{is:gt,defineProperty:_t,getOwnPropertyDescriptor:vt,getOwnPropertyNames:yt,getOwnPropertySymbols:bt,getPrototypeOf:xt}=Object,St=globalThis,Ct=St.trustedTypes,wt=Ct?Ct.emptyScript:``,Tt=St.reactiveElementPolyfillSupport,Et=(e,t)=>e,Dt={toAttribute(e,t){switch(t){case Boolean:e=e?wt:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},Ot=(e,t)=>!gt(e,t),kt={attribute:!0,type:String,converter:Dt,reflect:!1,useDefault:!1,hasChanged:Ot};Symbol.metadata??=Symbol(`metadata`),St.litPropertyMetadata??=new WeakMap;var At=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=kt){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&_t(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=vt(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??kt}static _$Ei(){if(this.hasOwnProperty(Et(`elementProperties`)))return;let e=xt(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(Et(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Et(`properties`))){let e=this.properties,t=[...yt(e),...bt(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(ht(e))}else e!==void 0&&t.push(ht(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return mt(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?Dt:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?Dt:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??Ot)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};At.elementStyles=[],At.shadowRootOptions={mode:`open`},At[Et(`elementProperties`)]=new Map,At[Et(`finalized`)]=new Map,Tt?.({ReactiveElement:At}),(St.reactiveElementVersions??=[]).push(`2.1.2`);var jt=globalThis,Mt=e=>e,Nt=jt.trustedTypes,Pt=Nt?Nt.createPolicy(`lit-html`,{createHTML:e=>e}):void 0,Ft=`$lit$`,It=`lit$${Math.random().toFixed(9).slice(2)}$`,Lt=`?`+It,Rt=`<${Lt}>`,zt=document,Bt=()=>zt.createComment(``),Vt=e=>e===null||typeof e!=`object`&&typeof e!=`function`,Ht=Array.isArray,Ut=e=>Ht(e)||typeof e?.[Symbol.iterator]==`function`,Wt=`[
5
- \f\r]`,Gt=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Kt=/-->/g,qt=/>/g,Jt=RegExp(`>|${Wt}(?:([^\\s"'>=/]+)(${Wt}*=${Wt}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),Yt=/'/g,Xt=/"/g,Zt=/^(?:script|style|textarea|title)$/i,Qt=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),k=Qt(1),A=Qt(2),$t=Symbol.for(`lit-noChange`),j=Symbol.for(`lit-nothing`),en=new WeakMap,tn=zt.createTreeWalker(zt,129);function nn(e,t){if(!Ht(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return Pt===void 0?t:Pt.createHTML(t)}var rn=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=Gt;for(let t=0;t<n;t++){let n=e[t],s,c,l=-1,u=0;for(;u<n.length&&(o.lastIndex=u,c=o.exec(n),c!==null);)u=o.lastIndex,o===Gt?c[1]===`!--`?o=Kt:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=Jt):(Zt.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=Jt):o=qt:o===Jt?c[0]===`>`?(o=i??Gt,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?Jt:c[3]===`"`?Xt:Yt):o===Xt||o===Yt?o=Jt:o===Kt||o===qt?o=Gt:(o=Jt,i=void 0);let d=o===Jt&&e[t+1].startsWith(`/>`)?` `:``;a+=o===Gt?n+Rt:l>=0?(r.push(s),n.slice(0,l)+Ft+n.slice(l)+It+d):n+It+(l===-2?t:d)}return[nn(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},an=class e{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0,s=t.length-1,c=this.parts,[l,u]=rn(t,n);if(this.el=e.createElement(l,r),tn.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=tn.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(Ft)){let t=u[o++],n=i.getAttribute(e).split(It),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?un:r[1]===`?`?dn:r[1]===`@`?fn:ln}),i.removeAttribute(e)}else e.startsWith(It)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(Zt.test(i.tagName)){let e=i.textContent.split(It),t=e.length-1;if(t>0){i.textContent=Nt?Nt.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],Bt()),tn.nextNode(),c.push({type:2,index:++a});i.append(e[t],Bt())}}}else if(i.nodeType===8){if(i.data===Lt)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(It,e+1))!==-1;)c.push({type:7,index:a}),e+=It.length-1}}a++}}static createElement(e,t){let n=zt.createElement(`template`);return n.innerHTML=e,n}};function on(e,t,n=e,r){if(t===$t)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=Vt(t)?void 0:t._$litDirective$;return i?.constructor!==a&&(i?._$AO?.(!1),a===void 0?i=void 0:(i=new a(e),i._$AT(e,n,r)),r===void 0?n._$Cl=i:(n._$Co??=[])[r]=i),i!==void 0&&(t=on(e,i._$AS(e,t.values),i,r)),t}var sn=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??zt).importNode(t,!0);tn.currentNode=r;let i=tn.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new cn(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new pn(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=tn.nextNode(),a++)}return tn.currentNode=zt,r}p(e){let t=0;for(let n of this._$AV)n!==void 0&&(n.strings===void 0?n._$AI(e[t]):(n._$AI(e,n,t),t+=n.strings.length-2)),t++}},cn=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=j,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=on(this,e,t),Vt(e)?e===j||e==null||e===``?(this._$AH!==j&&this._$AR(),this._$AH=j):e!==this._$AH&&e!==$t&&this._(e):e._$litType$===void 0?e.nodeType===void 0?Ut(e)?this.k(e):this._(e):this.T(e):this.$(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==j&&Vt(this._$AH)?this._$AA.nextSibling.data=e:this.T(zt.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:n}=e,r=typeof n==`number`?this._$AC(e):(n.el===void 0&&(n.el=an.createElement(nn(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new sn(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=en.get(e.strings);return t===void 0&&en.set(e.strings,t=new an(e)),t}k(t){Ht(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,r,i=0;for(let a of t)i===n.length?n.push(r=new e(this.O(Bt()),this.O(Bt()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=Mt(e).nextSibling;Mt(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},ln=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=j,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=i,n.length>2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=j}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=on(this,e,t,0),a=!Vt(e)||e!==this._$AH&&e!==$t,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=on(this,r[n+o],t,o),s===$t&&(s=this._$AH[o]),a||=!Vt(s)||s!==this._$AH[o],s===j?e=j:e!==j&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===j?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},un=class extends ln{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===j?void 0:e}},dn=class extends ln{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==j)}},fn=class extends ln{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}_$AI(e,t=this){if((e=on(this,e,t,0)??j)===$t)return;let n=this._$AH,r=e===j&&n!==j||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==j&&(n===j||r);r&&this.element.removeEventListener(this.name,this,n),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH==`function`?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},pn=class{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){on(this,e)}},mn={M:Ft,P:It,A:Lt,C:1,L:rn,R:sn,D:Ut,V:on,I:cn,H:ln,N:dn,U:fn,B:un,F:pn},hn=jt.litHtmlPolyfillSupport;hn?.(an,cn),(jt.litHtmlVersions??=[]).push(`3.3.3`);var gn=globalThis,M=class extends At{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=((e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new cn(t.insertBefore(Bt(),e),e,void 0,n??{})}return i._$AI(e),i})(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return $t}};M._$litElement$=!0,M.finalized=!0,gn.litElementHydrateSupport?.({LitElement:M});var _n=gn.litElementPolyfillSupport;_n?.({LitElement:M}),(gn.litElementVersions??=[]).push(`4.2.2`);var N=e=>(t,n)=>{n===void 0?customElements.define(e,t):n.addInitializer(()=>{customElements.define(e,t)})},vn={attribute:!0,type:String,converter:Dt,reflect:!1,hasChanged:Ot},yn=(e=vn,t,n)=>{let{kind:r,metadata:i}=n,a=globalThis.litPropertyMetadata.get(i);if(a===void 0&&globalThis.litPropertyMetadata.set(i,a=new Map),r===`setter`&&((e=Object.create(e)).wrapped=!0),a.set(n.name,e),r===`accessor`){let{name:r}=n;return{set(n){let i=t.get.call(this);t.set.call(this,n),this.requestUpdate(r,i,e,!0,n)},init(t){return t!==void 0&&this.C(r,void 0,e,t),t}}}if(r===`setter`){let{name:r}=n;return function(n){let i=this[r];t.call(this,n),this.requestUpdate(r,i,e,!0,n)}}throw Error(`Unsupported decorator location: `+r)};function P(e){return(t,n)=>typeof n==`object`?yn(e,t,n):((e,t,n)=>{let r=t.hasOwnProperty(n);return t.constructor.createProperty(n,e),r?Object.getOwnPropertyDescriptor(t,n):void 0})(e,t,n)}function F(e){return P({...e,state:!0,attribute:!1})}var bn=(e,t,n)=>(n.configurable=!0,n.enumerable=!0,Reflect.decorate&&typeof t!=`object`&&Object.defineProperty(e,t,n),n);function xn(e,t){return(n,r,i)=>{let a=t=>t.renderRoot?.querySelector(e)??null;if(t){let{get:e,set:t}=typeof r==`object`?n:i??(()=>{let e=Symbol();return{get(){return this[e]},set(t){this[e]=t}}})();return bn(n,r,{get(){let n=e.call(this);return n===void 0&&(n=a(this),(n!==null||this.hasUpdated)&&t.call(this,n)),n}})}return bn(n,r,{get(){return a(this)}})}}var Sn,Cn=t({templates:()=>wn}),wn=function(e){let t=new Map;return new Proxy(e,{get(e,n){if(typeof n==`string`){if(!t.has(n)){let r;for(let t=1;t<=n.length&&r===void 0;t++){let i=n.slice(0,t);Object.hasOwn(e,i)&&(r=e[i])}t.set(n,r)}return t.get(n)}}})}({c:`実行`,d:`出力`,h5:k`${0} の出力`,h6:k`JSON オブジェクト(スキーマ ${0})`,h87:k`依存先タスク ${0}`,h8e:k`この実行には階層 <code>${0}</code> がありません`,ha:k`ファイルなし | Python コードで定義(<code>TaskAdapter</code>)`,hc:k`実行中 ${0}${1}`,hf:k`${0} の出力から`,"no-":`実行はまだありません`,non:`なし`,"outcome-d":`完了`,"outcome-p":`一部のみ完了`,s000:`実行履歴の未実行のタスク`,s00c:T`HTTP ステータス ${0}`,s02f7:`実行されず`,s02f9:T`アカウント: ${0}`,s030:T`カスタムビュー ${0} はありません`,s037:`完了`,s0382:T`${0}: ${1}`,s038b:`ページ`,s03b:`タブ`,s03e:`タスク`,s03f:T`古い試行 ${0} 件は非表示`,s042:`タスクが宣言したパターンの下で、試行が作成・変更・削除したファイル(changes)`,s044:T`一部のみ完了 ${0} 件`,s051:`実行中のエージェントのセッション`,s055:`選択中の項目`,s061:`OutputContract`,s062:`トランスクリプト`,s0668:`ユニットごとのステージとステップ(CursorStore)`,s066d:`出力`,s06a5:`Esc: 1 つ上の階層`,s06ac:`依存先`,s06b0:`実行中ではありません`,s06bf:`中を表示`,s077:`テキストフィルター(/)`,s079:T`キャッシュ ${0}`,s07d:`関数`,s07e:T`+${0}`,s087:T`${0}%`,s08b1:T`${0}(認証情報が休止中)`,s08b3:`いいえ`,s08c:`稼働中`,s08f:T`依存先: ${0}`,s0932:`出力の検証: OK`,s0935:`終了日`,s094:`最初のエージェントのセッションの前に終了`,s09b:`プロンプトなし`,s0b0:T`作成元: ${0}`,s0b2:`エージェントのセッション開始時のサブスクリプション利用率(アカウント全体)`,s0b3:`OK`,s0b7:`実行前からあるファイル`,s0bf:T`${0} 周目`,s0c:T`モデル切り替えのあったタスク ${0} 件`,s0d7:T`キャッシュ書き込み ${0}`,s0df:`依存先タスクが登録されなかった`,s0e6:`問題`,s0ea:`プラグインディレクトリ`,s0ef:`すべてのホスト`,s0f0:`一部省略`,s0f1:`リセット済み`,s0f2:T`最初の API 呼び出しの入力: ${0}`,s0f8:T`出力ファイル ${0} 件`,s103:`再開カーソル`,s104:`昇順に並べ替え`,s107:`種別の最初のタスクの開始時に記録(definitions/&lt;kind&gt;.json)`,s108:T`${0} の実装`,s114:T`${0} 型の JSON 値`,s115:`過去 24 時間`,s123:`待機中`,s125:T`要素 ${0} 個`,s12c:`型の不一致`,s13:T`最終報告 ${0}`,s14:`コーディングエージェントが報告した値`,s150:`出力`,s156:`なし(任意)`,s158:T`週の利用率 ${0}`,s159:`このタスクが代わりに出力ファイルを書く種別(output_of)`,s163:`検証対象のファイルなし`,s165:T`${0} 回目で完了 | 失敗 1 回`,s168:`検証のタイミング`,s170:T`実行されず ${0} 件`,s179:`アカウントごと、最初の値 → 最後の値`,s17d:`利用率のルール`,s17e:`書き込み待ち(タスクが待機中)`,s18:T`ループ内の ${0}`,s197:`利用できるモデルなし`,s19e:`上限: max_concurrent`,s1a2:T`スキップ ${0} 件`,s1a3:`種別 · ユニット`,s1a4:`モデルごとの、エージェントのセッションの使用量。モデル切り替えの前後は別々に集計(Plan.models)`,s1ac8:`エディタのテーマ`,s1acc:`書き込まれていない出力 1 件(タスクが未実行)`,s1b2:T`種別 ${0}`,s1bb:`すべてのタスクが開始済み`,s1bf:`実行中のプロセスなし`,s1c0:`パラメータ`,s1c2:`タスクが選択されていません`,s1c4:T`セッション開始時の利用率(アカウント全体): ${0}`,s1c7:`実行に登録されたすべてのタスク(種別ごと、plan.jsonl)`,s1cc:`実行中の Python タスク`,s1db:`API エラー`,s1dc:T`試行 ${0} 回`,s1dd:`実行中のタスクなし`,s1e9:T`プロンプト(${0} 文字、ほか ${1} 文字は未保存)`,s1eb:`入力`,s1f2:`削除`,s1f5:T`所要時間 ${0}`,s20e:T`リセットまで ${0}`,s20f9:`依存先タスクが実行されなかった`,s20fd:`ホストなし`,s217:`あり`,s21a:`発生したらリトライする例外(retry_on)`,s221:`JSON ではありません`,s224:`ツール実行中に中止`,s230:`スキーマにないフィールド`,s234:`終了した試行はまだありません`,s236:`拡大`,s23b:T`${0} 回の試行がすべて失敗: ${1}`,s23f:`定義はまだありません`,s24:T`完了 ${0}`,s25:`OutputContract・InputContract を宣言したタスクはありません`,s260:`API 呼び出し 1 回`,s26ba:`ユニットなし`,s26bb:`実行した試行の回数(リトライを含む、journal.jsonl)`,s26e:T`API 呼び出し ${0} 回`,s27a:`最後のメッセージから`,s27b:T`ユニット: ${0}`,s27d:`フローの構成`,s28a2:`リプレイ`,s28ad:`曜日と時刻ごと(期間のタイムゾーン)`,s28f:`InputContract`,s29:T`最大コンテキスト: ${0}`,s2a:`現在`,s2c8:`リトライ`,s2cd:`モデルの利用可否`,s2dd:`試行の結果(stop)`,s2df:`割合`,s2e3:T`ほかの出力 ${0} 件`,s2e4:`周`,s2f34:T`${0} 周`,s2f3c:`問題なし`,s2f4:`すべての出力`,s2f5:`定義なし`,s2fa:T`5 時間枠の利用率 ${0}(リセット ${1})`,s2fe3:`ツール`,s2fea:T`修正依頼 ${0}`,s31:`終了(未実行のタスク 1 件)`,s321:`余分なフィールド`,s326:T`キャッシュ読み込み ${0}`,s32d:`最大コンテキスト`,s33:`パイプラインの階層`,s343:`新しいイベント 1 件を表示`,s34b:`終了`,s34e:`降順に並べ替え`,s351:`終了した試行なし`,s352:`ファイル全体`,s355:`入力ファイルに検証エラー`,s366:`週`,s367:`料金`,s36d:T`この書き出しに含まれないもの: ${0}`,s36e:T`所要時間 ${0}`,s3700:`Web 検索 1 回`,s370b:T`報告時刻 ${0}`,s378:`検証エラーの後に、同じエージェントのセッションで続けるラウンド(rounds)`,s37d:`スキーマ以外の検証(validators)`,s384:T`${0} を展開`,s387:T`検索結果 ${0} 件`,s38e65:`修正依頼のプロンプトに含めて送信`,s38e6a:`日ごとの料金`,s390:`JSON オブジェクトではありません`,s39e:`パイプライン`,s3a7:T`上限: ${0}`,s3aa:`出力ファイルなし`,s3b3:`プロセスツリー`,s3b9:T`${0} にモニター API がありません: ${1}`,s3bd:T`task_detail コールバックが失敗: ${0}`,s3c6:`実行した試行の回数`,s3cd:`実行中のエージェントのセッション 1 件`,s3d0:`エージェントのセッション`,s3d1:`概要`,s3d31:`利用できるモデルがなく、設定どおりのモデルで実行する種別(kept)`,s3d38:T`認証情報 ${0}`,s3d99:`検証エラー後の、同じエージェントのセッション`,s3d9b:`テキストファイル`,s3dd:`ネットワークエラーで応答なし`,s3f1:`各タスクが書き込むファイル`,s3f7:`修正依頼`,s3fd:`開始`,s407:T`${0}: 入力`,s408:`週の利用率`,s41:`Tab: 次のノード`,s42a:`フィールド`,s42c:`検証`,s438:`ハイライトを解除`,s43a:`入力ファイル`,s43e:`利用不可`,s451:`料金の高いタスク`,s454:T`${0} のループの各周`,s45d:T`${0}(カスタムビュー)`,s466:`モデル切り替えのあったタスク 1 件`,s467:T`1 周: ${0}`,s473:`キャッシュ読み込み`,s478:`検証対象のファイル(OutputContract、InputContract)`,s479:`締め切り`,s47a:T`このタスクの入力 ${0} 件`,s47b:`Python タスク`,s47c:`未対応のイベント`,s482:T`終了 ${0}`,s48e:`所要時間`,s490:`モニターのサーバーに接続済み`,s491:T`${0} のループ`,s4a:T`${0} 日前`,s4d6:`検索結果 1 件`,s4d8:`モデル切り替え`,s4e7:T`修正依頼 ${0} 回で完了 | 最初の検証エラー: ${1}`,s4ef:`ループ`,s4f0:`スキーマにない`,s4f9:T`ホスト ${0}`,s4fe:`エージェントタスク`,s501:T`${0}: ${1} → ${2}`,s504:`日付指定`,s5131:`そのモデルで始めたエージェントのセッションの数`,s5138:`入力・出力・キャッシュ読み込み・キャッシュ書き込みの合計`,s521:`1 ユニット`,s525b:`失敗の後の、次のモデルでの新しいエージェントのセッション(Router のホップ)`,s525c:`記録から再生した試行(replayed)`,s529:T`上限 ${0}`,s52b:`このバージョンの contraagent が対応していないイベント種別(unread_events)`,s52c7:`次の周`,s52cc:T`${0} の締め切りと仕上げの猶予を過ぎた`,s52cf:`カスタムビュー`,s535:`種別`,s53c5:T`${0}: 未実行`,s53c8:`不可`,s54:`プロンプト`,s552:T`フロー呼び出し ${0}`,s555:`プラグインディレクトリ`,s558:`認証情報の不一致`,s5590:`項目`,s559f:`その他のモデル`,s55f:T`${0}(${1})`,s566:T`(ほか ${0} 文字は未保存)`,s567:`未実行(依存先タスクが失敗)`,s568:T`後続タスク: ${0}`,s571:T`入力 ${0} がありません(${1} が未実行)`,s574:T`キャッシュ書き込み ${0}`,s585:T`入力 ${0} がありません(${1} が失敗)`,s587:T`${0} 以降報告なし`,s58b:`モデルの置き換え`,s58c:`実行履歴`,s591:`5 時間枠`,s594:T`修正依頼 ${0} 回`,s59e:`上限に接近`,s5a3:`休止中`,s5a7:`ツール`,s5ab:`並び順`,s5b9:`種別ごとのトークンと料金`,s5bd:`フロー呼び出しごとの締め切り(time_box)`,s5cd:T`エージェントのセッション ${0} 回`,s5cf:`値なし`,s5d0:`実行中にこのタスクが占有する名前(claims)`,s5d4:T`${0} 回目で完了 | 失敗 ${1} 回`,s5da:`モデル`,s5de:`依存先タスク`,s5e3:`書き込みなし(タスクが未実行)`,s5e6:`テキスト(JSON 文字列)`,s5f2:`ロールなし`,s5f31:`エージェント・モデル・認証情報`,s5f34:`エラー`,s5f40:`行なし`,s5f43:`ソース`,s5f7:`なし(必須)`,s5f8:T`認証情報 ${0} は休止中`,s5ff:`エージェントタスク`,s601:`実行中`,s605:T`未実行の後続タスク ${0} 件`,s620:`キャッシュ書き込み`,s629:`任意`,s647:`応答が JSON ではなく HTML`,s649:`後続タスク`,s64f:`変更禁止の箇所`,s652:T`ロック ${0} 件`,s653:`締め切りを過ぎた`,s65c:`中断`,s6645:`拡大(Ctrl + スクロール)`,s6647:`ファイルなし`,s664b:`ツール呼び出しが戻る前に実行が終了`,s67:T`${0} ユニット`,s680:`タイムライン`,s685:`修正依頼`,s688:`その他の検証`,s68d:T`仕上げの猶予 ${0}`,s695:`修正依頼 1 回`,s699:T`スキーマ ${0}`,s6a0:`1 ステップ完了`,s6a8:T`入力 ${0} がありません(${1} が未完了)`,s6aa:`未実行(入力ファイルなし)`,s6b0:`ホスト`,s6b8:T`同時実行 ${0}/${1}`,s6b9:`タスクなし`,s6c3:`依存先タスクなし`,s6c7:`実行の開始時刻`,s6c8:T`依存先タスク ${0} が失敗`,s6d7:T`${1} タスク中 ${0} 件完了`,s6db:T`${0} 文字`,s6e:`読み込み中…`,s6f1:`API 呼び出し`,s6f2:`出力ファイル 1 件`,s6fa:`フロー呼び出しがエラーで終了`,s700:`書き出しに含まれない`,s703:T`${0} まで休止`,s706:`実行グループ`,s70a7:T`タスク終了後の利用率: ${0}`,s70af:`種別`,s71:T`モデル切り替え: ${0}`,s721:`ホストからの報告なし`,s7233:`古い試行 1 件は非表示`,s7239:T`修正依頼のあったタスク ${0} 件`,s72dc:`ユニットごとの周回数`,s72dd:`キャッシュ読み込み`,s734:`スタブエージェント`,s737:`ループの周回数`,s73d:`未実行の後続タスク 1 件`,s755:T`プラグイン ${0}`,s758:`エージェントのセッションなし`,s75e:`実行を検索`,s767:T`${0} モニター`,s76d:`カスタム列(row_extras)`,s76f:`原因`,s771:T`入力 ${0} は失敗したタスク ${1} の出力`,s77e:T`未実行 ${0} 件`,s786:`トランスクリプト`,s78f:`トークン`,s797:`すべての中を隠す`,s79a:T`未対応のイベント: ${0}`,s79f:T`5 時間枠の利用率 ${0}`,s7a1:`エラーで終了したフロー呼び出し 1 件`,s7a3:`出力ファイル`,s7a4:`権限エラー`,s7b16:`入力ファイルなし`,s7b1c:`修正依頼のあった試行`,s7b3:`検索に一致する実行なし`,s7bf:T`最初のエージェントのセッションの前に各モデルへ送る 1 回のリクエスト(preflight, policy ${0})`,s7c0:T`ホストからの報告なし ${0} 件`,s7c9:`フィルター`,s7cd8:`このタスクの入力 1 件`,s7cd9:`利用できるモデルがなく、最初に応答したモデルで実行する種別(substitute)`,s7cf:`応答が JSON ではない`,s7da:`最終報告`,s7df:T`終了(未実行のタスク ${0} 件)`,s7e:T`ロール ${0}`,s7f:`表示形式`,s803:`ファイル`,s807:`実行 1 件`,s816:`モデル切り替えなし`,s817:`変更したファイル 1 件`,s822:T`以前の試行のモデル: ${0}`,s826:`エージェントのセッションが使ったモデル`,s827:`認証情報が休止中`,s83:T`書き込み ${0}`,s841:`たった今`,s843:T`修正依頼 ${0} 回後`,s84f:`リトライ`,s8512:T`テーマ: ${0}`,s851d:`ファイルの値`,s859:`実行中`,s85e:T`${0}: モデル切り替え`,s863:T`入力 ${0} がありません`,s864:`全体を表示`,s868:T`${2} 年 ${0}〜${1} | ${3}`,s86c:T`ホスト ${0} 台`,s874:T`${0} ステップ完了`,s877:T`${0} 回目の失敗後の、新しいエージェントのセッション`,s87a:`実行されず`,s87b:T`モデル切り替え後に完了: ${0}`,s87c:`修正依頼 1 回後`,s880:`全試行の合計`,s888:`入力`,s88b:`表で表示`,s88e:T`修正依頼 ${0}`,s892:T`入力 ${0}(${1} の出力)がありません`,s89e:`パラメータなし`,s8a56:`なし`,s8a59:T`PID ${0}`,s8ab:`コーディングエージェント`,s8ad:`周回数`,s8ae:T`${0} の記録から再生したエージェントのセッションと、そこに記録した新しいセッション(replay, record_missing)`,s8b1:`リトライしたタスク`,s8bb:`終了したすべての試行から集計(journal.jsonl)`,s8c:T`${0} 分前`,s8d3:`コーディングエージェントが使ったアカウントまたは API キー(credential)`,s8d4:`PID`,s8dd:T`キャッシュ読み込み ${0}`,s8de:`再開後の実行での、新しいエージェントのセッション`,s8df:`オブジェクト`,s8e3:`アシスタント`,s8e6:`Python コードで定義`,s8e9:T`ほか ${0} アカウント`,s8ea:`Tab: 次の行`,s8f1:`選択を解除`,s8f2:`ユニット`,s8f4:`入力と出力(全試行の合計)`,s8f5:`未実行`,s8fa:`未実行(入力ファイルなし、入力ファイルに検証エラー)`,s8fc:T`修正依頼 1 回で完了 | 最初の検証エラー: ${0}`,s900:`ビュー`,s901:`完了したタスク`,s906:`Python タスク`,s90c:T`コンテキストの上限 ${1} の ${0}%`,s90e:`ほかの種別が実装する種別(base_kind)`,s90f:`認証エラー`,s914:T`最大 ${0} 周`,s915:T`モデル ${0} 種類`,s919:T`${0}d ${1}h`,s924:T`モデル ${0}`,s92a:T`依存先タスク ${0} 件の出力待ち`,s92b:T`5 時間枠 ${0}`,s934:`試行 1 回`,s936:`キュー内で同順位のタスクの順序を決める値(priority)`,s93e:`リプレイ`,s941:T`1 日あたり ${0}`,s949:`書き出しの期間`,s94d:`認証情報`,s94e:T`最終更新 ${0}`,s94f0:`実行中のタスク`,s94fd:T`${0} を折りたたむ`,s967:T`失敗 ${0} 件`,s96a:`コンテキストの上限`,s96c:T`出力 ${0}`,s97:T`修正依頼 ${0} 回で完了`,s980:`テキストフィルター`,s9893d9:T`利用率のルール: ${0}`,s9893de:`ホスト 1 台`,s98b:`グループ`,s98f:`入力ファイルなし`,s99:T`${0} 日間`,s9a2:`すべてのプロセス`,s9a4:T`失敗: ${0}`,s9a6:T`Web 検索 ${0} 回`,s9aa:`API 呼び出し 1 回あたりの入力の最大値。キャッシュ読み込みとキャッシュ書き込みを含む(peak_context)`,s9b1a6:`実行中ではありません`,s9b1a9:T`仕上げの種別: ${0}`,s9b3:`報告間隔`,s9b7:`書き込みなし(タスクが失敗)`,s9bd:T`${0} 回目で完了 | 失敗 ${1} 回 | 最初の失敗: ${2}`,s9c3:T`上限を超えた利用: ${0}`,s9c5:T`${0} の出力`,s9c7:`すべての中を表示`,s9cb:`実装する種別`,s9d3:T`${0} 時点の書き出し`,s9d6:`最終応答なしで終了`,s9de:`モデル`,s9e0:T`状態: ${0}`,s9e8:`未実行(入力ファイルに検証エラー)`,s9f0:T`入力 ${0}`,s9f2:`一部のみ完了`,s9f7:`エラー`,s9f92:T`${0} の内部`,s9f97:`料金の上限`,s9fb:`実行`,s9fd:`タスクの開始前からあるファイルも有効`,s9ff:`モデル切り替え`,sa0:`出力を待つ`,sa1:`リプレイした試行`,sa23:`ターン数の上限`,sa24:T`${0} の締め切りまでに終わらない`,sa33:`後続タスクなし`,sa358:`ロール`,sa35c:`試行`,sa36:`モデル別の内訳`,sa39:T`実行中のエージェントのセッションの新しいイベント ${0} 件を表示`,sa3c:`形式`,sa3d:T`週の利用率 ${0}(リセット ${1})`,sa3e:`アカウント全体の値 | エージェントのセッション開始時に取得`,sa3f:`各タスクが読み込むファイル`,sa43:`作成元`,sa48:`コマンドライン`,sa4f:T`最大 ${0} 回`,sa50:`折りたたむ`,sa57:`権限エラーになったツール呼び出し`,sa58:`周回数`,sa62:T`${0}: トランスクリプト`,sa66:T`前の ${0} 行を表示`,sa6a:`開始日`,sa71:`期待する型`,sa74:`縮小(Ctrl + スクロール)`,sa81:`システム設定に合わせる`,sa84:T`新しいイベント ${0} 件を表示`,sa86:T`${0} 時間前`,sa87:`ソースを表示`,sa88:T`${0} の入れ子のループ`,sa8b:`Shift + 矢印キー: 依存先タスク・後続タスク`,sa9b:`タスク詳細`,sa9d:`報告なし`,saa0:`書き込み待ち(タスクが実行中)`,saa2:`理由`,saaa:`5 時間枠の利用率`,saab:`テーマ`,sab5:T`${0} 行目`,sabd:`思考`,sac1:`モニターのサーバーに未接続`,sac7:T`${0} に利用できるモデルなし`,saca:`期間内の実行の合計`,sacc:`可`,sad1:T`ほかに休止中の認証情報 ${0} 件`,sad3:`状態`,sad9:`API リクエストを再送`,sae5:`必須`,sae6:`実行履歴のリトライしたタスク`,saee:`プロセス`,saf2:`すべてのモデルが利用可能`,saf8:`変更したファイルなし`,safd:T`${0} 回目が失敗: ${1}`,sb05:`エラー`,sb06:`実行履歴の修正依頼のあった試行`,sb0c:`サブスクリプションの利用率`,sb0f:`Python タスク 1 回`,sb105:T`未実行: ${0}`,sb106:`検索語`,sb108:`作成、試行の失敗後に削除`,sb14:T`報告なし ${0} 台`,sb1f:`前の 1 行を表示`,sb26a:`登録順`,sb26f:`表示中の階層の外`,sb27:`Enter: 開く`,sb28:`キャッシュ書き込み`,sb31:T`プロンプト(${0} 文字)`,sb34:T`変更したファイル ${0} 件`,sb38:`ツール呼び出し`,sb45:`リトライしたタスク 1 件`,sb4d:`トランスクリプトなし`,sb51:`パイプラインのプロセス内`,sb53:`はい`,sb55:`コーディングエージェントが報告した値`,sb59:T`コンテキストの上限に接近(${0}%)`,sb5a:`未実行`,sb6:`タスク実行中の書き込みが必須`,sb8:`エージェントのセッション 1 回`,sb94:T`5 時間枠(${0})`,sb97:`コンテキストの上限に接近`,sb98:T`${0}: 完了`,sb99:`トークンと料金`,sb9c:T`Python タスク: ${0}`,sba3:`1 周`,sba7:`ほかの出力 1 件`,sba8:`検証を通るファイルを書き込む前に、タスクが失敗`,sbaf:`要素 1 個`,sbb0:T`このバージョンの contraagent が対応していないイベント種別(unread_events): ${0}`,sbb2:`開始時の利用率`,sbb7:T`${1} タスク中 ${0} 件が未完了`,sbb9:`終了`,sbc6:T`${0} 周: ${1}`,sbc9:T`以前の試行のモデル: ${0}`,sbca:`タスクの開始時`,sbcc:`依存先タスクが失敗`,sbd4:`実行を切り替え(r)`,sbd9:`再開後`,sbe2:`実行履歴の失敗した試行`,sbe4:T`${0} の記録から再生したエージェントのセッション(replay)`,sbe9:T`週(${0})`,sbea:`保存対象外(keep_transcripts = false)`,sbf18:`種別のロール`,sbf1d:T`ロック ${0}`,sbf2:`アクティビティなし`,sbf9:`スタブエージェントが台本どおりの応答で処理したタスク(stub)`,sc03:`それ以前`,sc07:`リトライ対象の例外`,sc15:`スキップ`,sc1a:T`待機中 ${0} 件`,sc1b:T`リトライしたタスク ${0} 件`,sc2:`ツール`,sc3:`この期間の実行はありません`,sc4:`タイムアウト`,sc53:`休止した認証情報`,sc54:T`${0} の締め切りを過ぎた`,sc57:T`入力 ${0} に検証エラー`,sc5b:`次のモデルでの新しいエージェントのセッション`,sc61:T`週 ${0}`,sc65:`縮小`,sc68:`日時`,sc6c:T`書き込まれていない出力 ${0} 件(タスクが未実行)`,sc6e:`締め切りまでに終わらない`,sc6f:T`エラーで終了したフロー呼び出し ${0} 件`,sc73:`開始`,sc79:`タスク`,sc7d:`同時実行(上限)`,sc87a:T`警告のしきい値: ${0}`,sc87d:T`終了 ${0}`,sc92:`空き`,sc94:`全体`,sc97:`タイムゾーン`,sc9e:`その他`,sca4:`プロセスなし`,sca6:`プレビューを表示`,sca7:`ロール`,scb8:`終了(未完了のタスク 1 件)`,scb9:`最終試行の終了時刻`,scbd:`全文`,scca:T`最も高い種別: ${0}`,sccc:`モデルが応答を拒否`,scd2:T`${0}: ${1} → 次のモデル`,scd94:`エージェントの所要時間`,scd9c:T`優先度 ${0}`,scdb:`Esc: 選択を解除`,scde:`ループ`,scf41:T`完了 ${0} 件`,scf43:T`入力 ${0} は失敗したタスクの出力`,scf70:`レート制限`,scf71:`失敗した試行の後の試行(retries)`,sd05:T`締め切り ${0}`,sd0e:`出来事`,sd17:`入力 / 出力 | キャッシュ読み込み / キャッシュ書き込み`,sd1f:`ファイルの検証に使うスキーマ`,sd2:T`${0} 件を同時実行`,sd38:`変更`,sd3c:`登録済みのタスクなし`,sd3e:T`終了(未完了のタスク ${0} 件)`,sd4:`ローカルの認証情報(ambient)`,sd58:`終了(失敗したタスク 1 件)`,sd5d:T`トークン: 入力 ${0}、出力 ${1}、キャッシュ読み込み ${2}、キャッシュ書き込み ${3}`,sd5e:`所要時間の合計`,sd73:`失敗`,sd744:`検証対象のファイル`,sd747:`なし(任意)`,sd75:`検証エラー`,sd776:T`全体の ${0}%`,sd77d:`実行中のエージェントのセッションの新しいイベント 1 件を表示`,sd79:`結果を受けて作成`,sd7d:T`入力 ${0}(${1} の出力)に検証エラー`,sd82:`タスクの開始前からあるファイルは無効`,sd8a:T`${0} まで`,sd93:T`依存先タスク ${0} の出力待ち`,sd95:T`一部のみ完了: ${0}`,sd96:`中を隠す`,sda2:T`セッション開始時の利用率: ${0}`,sda80:T`すべて表示(${0} 文字)`,sda8d:`最大コンテキストが警告のしきい値を超えた(context_warned)`,sdb1:`入力`,sdb4:`イベントが途絶えた`,sdb8:`出力に検証エラー`,sdc:T`実行グループ ${0}`,sdd1:`モニターから応答がありません`,sdd4:`モデル 1 種類`,sdd8:`修正依頼なし`,sddf:`ビューを表示`,sde:T`アカウント ${0}`,sdf1:T`${0} 回目で完了 | 失敗 1 回 | 最初の失敗: ${1}`,sdf4:`リトライなし`,sdf9:`リトライ後に完了`,se0e6:T`${0} から休止中`,se0ed:T`実行されず: ${0}`,se17:T`必要な時間 ${0}`,se1a:`作成`,se21:`指標`,se27:`タスクを実行した CLI(claude、omp)`,se2b:T`キー ${0} 個: ${1}`,se2c:T`期待する型: ${0}`,se3:`キーボードショートカット`,se4:`修正依頼のあったタスク 1 件`,se55:`エージェントのセッションの所要時間の合計`,se5a:`モデル切り替え`,se5b:`推移`,se5d:`monitor.Panel`,se60:`ハイコントラスト`,se61:`パイプラインのプロセス内の関数`,se66:`1 タスク`,se6d:`下の階層あり`,se71:T`${0} 回目`,se75:`リプレイと新しいセッション`,se90:`認証情報`,se99d:`ロック`,se99f:T`終了(失敗したタスク ${0} 件)`,sea2:`期間`,sea4:`定義`,sea6:`矢印キー: マーク`,sea74:T`${0} タスク`,sea7b:`実行の一覧`,seac:`待機中`,seb0:`グラフで表示`,seb2:`締め切りと仕上げの猶予を過ぎた`,seba:`既定`,sec2:`すべての種別`,sec7:`コーディングエージェントが使ったエージェント定義(agents/&lt;role&gt;.md)`,secc:`上限に到達`,secf:T`${0}の利用率 ${1}`,sed05:`コーディングエージェントが報告した料金(試行が終わった日に計上)`,sed0a:`タスクごとに 1 つ(Backend.run)`,sed7:`種別または関数`,sed8:`合計`,sede:`ステージなし`,seea0:`結果`,seea1:`ホスト ID なし`,seee1:`スキップ`,seee3:`完了しなかった試行`,sef0:T`実行中 ${0} 件`,sefc:`言語`,sf03:`所要時間の中央値`,sf06:T`タスクは ${0} 回目で完了`,sf08:`すべてのエージェントのセッションの合計(同時に実行した分も含む)`,sf11:`終了時刻`,sf14:`最初のエージェントのセッション`,sf26:T`実行 ${0} 件`,sf2b:`トークンの報告なし`,sf2c:`すべての試行が完了`,sf2d:T`関数 ${0}`,sf2e:`定義`,sf39:`周回数`,sf3c:`ほか 1 アカウント`,sf3e:`カスタムビュー`,sf46:T`${0} 周目`,sf48:`終了後の利用率`,sf56:`試行の終了後に、同じアカウントで最初に報告された値`,sf5d:`ユニットごとではなく、実行ごとに 1 回実行されるタスク`,sf6:`フロー呼び出し`,sf7b:T`不明(${0})`,sf7d:T`残り ${0}`,sf7e:`すべての実行グループ`,sf8:T`休止 ${0} → ${1}`,sf93:`合計`,sf9b:`エージェントのセッションが始まらなかった`,sfa0:`テキスト`,sfa2:T`${0} 〜 ${1}`,sfa6:`フィルターに一致するタスクなし`,sfad:`修正依頼 1 回で完了`,sfae:`ホスト一覧`,sfb3:`実行を切り替え`,sfb6:T`実行中のエージェントのセッション ${0} 件`,sfbb:`失敗した試行`,sfc:`再開カーソルなし`,sfd3:T`リトライ後に完了 ${0} 件`,sfd5:T`要素 ${0} 個: ${1}`,sfd7:`出力`,sfd85:`タスクの前から変わらない出力ファイルの箇所(preserve)`,sfd8b:`各日の最大値`,sfdd:`プロセス`,sfde:`ファイルにない必須フィールド`,sfe7:T`${0}: 入力と出力`,sfe9:T`プロセス ${0}`,sff6:`登録済みのタスクはまだありません`,sff8:T`${0} のタスク`,sffa:`定義なし`,sfff:T`Python タスク ${0} 回`,stag:`完了`,stat:`状態`,"stop-c":`完了`,"stop-i":`未実行`,"stop-p":`一部のみ完了`,tab:`タスク`,tas:`タスク`,tok:`出力`,too:`完了`,"trends-p":`一部のみ完了`,"trends-r":`実行`,"view-g":`グラフ`,"view-o":`出力`,"view-t":`表`}),Tn=`en`,En=[`ja`],Dn=[`en`,`ja`],On={en:`English`,ja:`日本語`},kn={ja:()=>Promise.resolve(Cn)};function An(){if(Sn===void 0)try{Sn=at({sourceLocale:Tn,targetLocales:En,loadLocale:e=>kn[e]()})}catch{Sn=null}return Sn!==null}var jn=()=>Sn?.getLocale()??Tn;async function Mn(e){An()&&await Sn.setLocale(e)}var Nn=`contraagent:locale`,Pn=e=>Dn.includes(e);function Fn(){try{let e=globalThis.localStorage?.getItem(Nn);if(Pn(e))return e}catch{}for(let e of globalThis.navigator?.languages??[]){let t=e.toLowerCase().split(`-`)[0];if(Pn(t))return t}return Tn}async function In(e){try{globalThis.localStorage?.setItem(Nn,e)}catch{}await Mn(e)}var Ln=`contraagent`,Rn=null,zn=``,Bn=null,Vn=!1;function Hn(){let e=globalThis.history?.state;return e&&typeof e==`object`?e:{}}function Un(){let e=Hn()[Ln];return e&&typeof e==`object`?e:{}}function Wn(){Bn&&clearTimeout(Bn),Bn=null;let e=Rn;Rn=null,e&&globalThis.history&&Un().entry===zn&&history.replaceState({...Hn(),[Ln]:{...Un(),...e}},``)}function Gn(){Wn()}var Kn={recall:function(e){if(globalThis.history)return Rn&&zn===Un().entry&&e in Rn?Rn[e]:Un()[e]},remember:function(e,t){if(!globalThis.history)return;let n=function(){let e=Un().entry;if(e)return e;let t=Math.random().toString(36).slice(2);return history.replaceState({...Hn(),[Ln]:{...Un(),entry:t}},``),t}();Rn&&zn!==n&&(Rn=null),zn=n,(Rn??={})[e]=t,Bn??=setTimeout(Wn,200),Vn||(Vn=!0,globalThis.addEventListener?.(`pagehide`,Gn))}},qn=class{constructor(){this.values=new Map}recall(e){return this.values.get(e)}remember(e,t){this.values.set(e,t)}},Jn=new WeakMap;function Yn(e,t){t?Jn.set(e,t):Jn.delete(e)}function Xn(e){for(let t=e;t;t=t.parentNode??t.host){let e=Jn.get(t);if(e)return e}return Kn}var Zn=class{constructor(e,t){this.id=e,this.from=t,this.items=null}get memory(){return Xn(this.from)}get loaded(){return this.items??=new Set(this.memory.recall(this.id)??[])}has(e){return this.loaded.has(e)}set(e,t){let n=this.loaded;t!==n.has(e)&&(t?n.add(e):n.delete(e),this.memory.remember(this.id,[...n]))}values(){return[...this.loaded]}clear(){this.loaded.size&&(this.loaded.clear(),this.memory.remember(this.id,[]))}},Qn=class{constructor(e){this.id=e;let t=null;try{t=JSON.parse(globalThis.sessionStorage?.getItem(`${Ln}:${e}`)??`null`)}catch{}this.items=new Set(Array.isArray(t)?t.filter(e=>typeof e==`string`):[])}has(e){return this.items.has(e)}set(e,t){if(t!==this.items.has(e)){t?this.items.add(e):this.items.delete(e);try{globalThis.sessionStorage?.setItem(`${Ln}:${this.id}`,JSON.stringify([...this.items]))}catch{}}}},$n=[`wheel`,`touchstart`,`pointerdown`,`keydown`],er=class{constructor(e,t=()=>Kn){this.id=e,this.memory=t,this.el=null,this.frame=0,this.restoring=!1,this.cancel=()=>{if(cancelAnimationFrame(this.frame),this.frame=0,this.restoring){this.restoring=!1;for(let e of $n)this.el?.removeEventListener(e,this.cancel)}},this.onScroll=()=>{!this.restoring&&this.el&&this.memory().remember(this.id,Math.round(this.el.scrollTop))}}attach(e){this.el!==e&&(this.detach(),this.el=e,e.addEventListener(`scroll`,this.onScroll,{passive:!0}))}detach(){this.cancel(),this.el?.removeEventListener(`scroll`,this.onScroll),this.el=null}restore(){let e=this.el;if(!e)return;this.cancel();let t=this.memory().recall(this.id)??0;if(t<=0)return void(e.scrollTop=0);let n=performance.now()+6e3;this.restoring=!0;for(let t of $n)e.addEventListener(t,this.cancel,{passive:!0,once:!0});let r=()=>{let i=e.scrollHeight-e.clientHeight;if(e.scrollTop=Math.min(t,i),i>=t||performance.now()>n)return this.cancel();this.frame=requestAnimationFrame(r)};r()}reset(){this.cancel(),this.el&&(this.el.scrollTop=0)}},tr=[`overview`,`tasks`,`journal`,`outputs`,`definitions`,`procs`,`stream`],nr=[`transcript`,`input`,`output`,`definition`],rr=[7,14,30],ir={page:``,run:``,tab:`overview`,key:null,view:`transcript`,round:null,def:null,kind:``,stop:``,q:``,layer:``,unit:``,sel:``,days:14,from:``,to:``,tz:``,group:``,trendsTab:``},ar=e=>tr.includes(e)||/^panel:.+/.test(e),or=e=>nr.includes(e);function sr(e){let t=new URLSearchParams(e),n=t.get(`tab`)??``,r=t.get(`view`)??``,i=Number(t.get(`round`)),a=t.get(`page`)===`hosts`?`hosts`:t.get(`page`)===`trends`?`trends`:``,o=t.get(`from`)??``,s=t.get(`to`)??``,c=/^\d{4}-\d{2}-\d{2}$/.test(o)&&/^\d{4}-\d{2}-\d{2}$/.test(s),l=Number(t.get(`days`));return{page:a,run:a?``:t.get(`run`)??``,tab:a!==`trends`&&ar(n)?n:`overview`,key:t.get(`key`)||null,view:or(r)?r:`transcript`,round:Number.isInteger(i)&&i>0?i:null,def:t.get(`def`)||null,kind:t.get(`kind`)??``,stop:t.get(`stop`)??``,q:t.get(`q`)??``,layer:t.get(`layer`)??``,unit:t.get(`unit`)??``,sel:t.get(`sel`)??``,days:c?0:rr.includes(l)?l:ir.days,from:c?o:``,to:c?s:``,tz:t.get(`tz`)??``,group:t.get(`group`)??``,trendsTab:a===`trends`?t.get(`tab`)??``:``}}function cr(e){if(e.page===`hosts`)return`?page=hosts`;if(e.page===`trends`){let t=new URLSearchParams({page:`trends`});return e.days===0&&e.from&&e.to?(t.set(`from`,e.from),t.set(`to`,e.to)):e.days!==ir.days&&t.set(`days`,String(e.days)),e.tz&&t.set(`tz`,e.tz),e.group&&t.set(`group`,e.group),e.trendsTab&&t.set(`tab`,e.trendsTab),`?${t.toString()}`}let t=new URLSearchParams;e.run&&t.set(`run`,e.run),e.tab!==`overview`&&t.set(`tab`,e.tab),e.tab===`stream`&&(e.key&&t.set(`key`,e.key),e.view!==`transcript`&&t.set(`view`,e.view),e.round!=null&&t.set(`round`,String(e.round))),e.tab===`definitions`&&e.def&&t.set(`def`,e.def),e.tab===`overview`&&e.layer&&t.set(`layer`,e.layer),e.tab===`overview`&&e.unit&&t.set(`unit`,e.unit),e.tab===`overview`&&e.sel&&t.set(`sel`,e.sel);let n=e.tab===`tasks`||e.tab===`journal`;n&&e.kind&&t.set(`kind`,e.kind),e.tab===`journal`&&e.stop&&t.set(`stop`,e.stop),n&&e.q&&t.set(`q`,e.q);let r=t.toString();return r?`?${r}`:``}function lr(e,t){let n={...e,...t};return t.run!==void 0&&t.run!==e.run&&Object.assign(n,{key:null,def:null,round:null,layer:``,unit:``,sel:``,...t}),t.layer!==void 0&&t.layer!==e.layer&&t.sel===void 0&&(n.sel=``),t.key!==void 0&&t.key!==e.key&&(t.view===void 0&&(n.view=`transcript`),t.round===void 0&&(n.round=null)),n}function ur(e,t){let n=e=>cr({...e,kind:``,stop:``,q:``,unit:``,sel:``});return n(e)!==n(t)}var dr=class{constructor(e,t,n,r=()=>{}){this.mode=e,this.onChange=t,this.onLeave=r,this.onPop=()=>{this.current=sr(location.search),this.onChange(this.current,`pop`)};let i=sr(e===`url`?location.search:``);this.current=lr(i,n??{})}get viewRoute(){return this.current}start(){this.mode===`url`&&(history.scrollRestoration=`manual`,addEventListener(`popstate`,this.onPop)),this.onChange(this.current,`init`)}stop(){this.mode===`url`&&removeEventListener(`popstate`,this.onPop)}navigate(e,t={}){let n=lr(this.current,e);if(cr(n)===cr(this.current))return;let r=!t.replace&&ur(this.current,n);if(this.current=n,this.mode===`url`){let e=`${location.pathname}${cr(n)}${location.hash}`;r?(this.onLeave(),history.pushState({},``,e)):history.replaceState(history.state,``,e)}this.onChange(n,r?`push`:`replace`)}},fr=class{constructor(e,t){this.host=e,this.opts=t,this.ready=Promise.resolve(),e.addController(this)}hostConnected(){let e=this.opts.locale();this.ready=Mn(Pn(e)?e:Fn()).catch(()=>{})}hostUpdated(){let e=this.opts.locale();e!==this.seen&&(this.seen=e,Pn(e)&&e!==jn()&&Mn(e)),this.opts.pageWide()&&(document.documentElement.lang=jn()),this.host.lang=jn()}},pr=class{constructor(e,t,n){this.host=e,this.onKey=t,this.scope=n,this.bound=null,this.boundScope=`off`,this.listener=e=>{let t=e;t.defaultPrevented||function(e){let t=e.composedPath()[0];return t instanceof HTMLElement&&(t.isContentEditable||t.matches(`input, select, textarea, [contenteditable]:not([contenteditable="false"])`))}(t)||t.metaKey||t.ctrlKey||t.altKey||this.onKey(t)},e.addController(this)}hostConnected(){this.bind()}hostUpdated(){this.scope()!==this.boundScope&&this.bind()}hostDisconnected(){this.unbind()}bind(){this.unbind();let e=this.scope();this.boundScope=e,this.bound=e===`page`?document:e===`element`?this.host:null,this.bound?.addEventListener(`keydown`,this.listener)}unbind(){this.bound?.removeEventListener(`keydown`,this.listener),this.bound=null,this.boundScope=`off`}},mr=[{name:`backdrop`,prop:`--ca-backdrop`},{name:`bg`,prop:`--ca-bg`},{name:`card`,prop:`--ca-card`},{name:`panel`,prop:`--ca-panel`},{name:`panel2`,prop:`--ca-panel2`},{name:`raise`,prop:`--ca-raise`},{name:`well`,prop:`--ca-well`},{name:`track`,prop:`--ca-track`},{name:`line`,prop:`--ca-line`},{name:`line2`,prop:`--ca-line2`},{name:`shadow`,prop:`--ca-shadow`},{name:`text`,prop:`--ca-text`},{name:`text-2`,prop:`--ca-text-secondary`},{name:`text-muted`,prop:`--ca-text-muted`},{name:`accent`,prop:`--ca-accent`},{name:`accent-bg`,prop:`--ca-accent-bg`,derive:`color-mix(in srgb, var(--accent) calc(var(--tint) + 1%), transparent)`},{name:`focus`,prop:`--ca-focus`},{name:`focus-width`,prop:`--ca-focus-width`},{name:`selection`,prop:`--ca-selection`},{name:`status-failed`,prop:`--ca-status-failed`},{name:`status-failed-bg`,prop:`--ca-status-failed-bg`,derive:`color-mix(in srgb, var(--status-failed) var(--tint), transparent)`},{name:`status-attention`,prop:`--ca-status-attention`},{name:`status-attention-bg`,prop:`--ca-status-attention-bg`,derive:`color-mix(in srgb, var(--status-attention) var(--tint), transparent)`},{name:`status-done`,prop:`--ca-status-done`},{name:`status-done-bg`,prop:`--ca-status-done-bg`,derive:`color-mix(in srgb, var(--status-done) var(--tint), transparent)`},{name:`status-running`,prop:`--ca-status-running`},{name:`status-running-bg`,prop:`--ca-status-running-bg`,derive:`color-mix(in srgb, var(--status-running) var(--tint), transparent)`},{name:`status-muted`,prop:`--ca-status-muted`},{name:`status-muted-bg`,prop:`--ca-status-muted-bg`,derive:`color-mix(in srgb, var(--status-muted) calc(var(--tint) - 1%), transparent)`},{name:`tint`,prop:`--ca-tint`},{name:`agent`,prop:`--ca-agent`},{name:`agent-bg`,prop:`--ca-agent-bg`,derive:`color-mix(in srgb, var(--agent) calc(var(--tint) + 2%), transparent)`},{name:`meter`,prop:`--ca-meter`},{name:`tok-input`,prop:`--ca-tok-input`},{name:`tok-cache-read`,prop:`--ca-tok-cache-read`},{name:`tok-cache-write`,prop:`--ca-tok-cache-write`},{name:`tok-output`,prop:`--ca-tok-output`},{name:`series-1`,prop:`--ca-series-1`},{name:`series-2`,prop:`--ca-series-2`},{name:`series-3`,prop:`--ca-series-3`},{name:`series-4`,prop:`--ca-series-4`},{name:`series-5`,prop:`--ca-series-5`},{name:`series-6`,prop:`--ca-series-6`},{name:`code-keyword`,prop:`--ca-code-keyword`},{name:`code-string`,prop:`--ca-code-string`},{name:`code-number`,prop:`--ca-code-number`},{name:`code-constant`,prop:`--ca-code-constant`},{name:`code-comment`,prop:`--ca-code-comment`},{name:`code-function`,prop:`--ca-code-function`},{name:`code-type`,prop:`--ca-code-type`},{name:`code-name`,prop:`--ca-code-name`},{name:`font-size-xs`,prop:`--ca-font-size-xs`,derive:`10px`},{name:`font-size-sm`,prop:`--ca-font-size-sm`,derive:`11px`},{name:`font-size-md`,prop:`--ca-font-size-md`,derive:`12px`},{name:`font-size-lg`,prop:`--ca-font-size-lg`,derive:`13px`},{name:`font-size-xl`,prop:`--ca-font-size-xl`,derive:`15px`},{name:`font-size-2xl`,prop:`--ca-font-size-2xl`,derive:`28px`},{name:`radius-sm`,prop:`--ca-radius-sm`,derive:`4px`},{name:`radius-md`,prop:`--ca-radius-md`,derive:`8px`},{name:`radius-lg`,prop:`--ca-radius-lg`,derive:`12px`},{name:`radius-pill`,prop:`--ca-radius-pill`,derive:`999px`}],hr=[`contraagent-dark`,`contraagent-light`,`github-dark`,`github-light`,`one-dark`,`nord`,`high-contrast`],gr=[`contraagent-dark`,`contraagent-light`,`system`,`github-dark`,`github-light`,`one-dark`,`nord`,`high-contrast`],_r=[`github-dark`,`github-light`,`one-dark`,`nord`,`high-contrast`],vr=`contraagent-dark`,yr={"contraagent-dark":{label:`contraagent Dark`,scheme:`dark`,tokens:{backdrop:`radial-gradient(1100px 520px at 8% -12%, #10203a 0%, transparent 62%), radial-gradient(900px 480px at 108% 4%, #1b1238 0%, transparent 58%), #060a11`,bg:`#060a11`,card:`#0f1724`,panel:`#0f1724`,panel2:`#142034`,raise:`#1a2740`,well:`#0a111c`,track:`#1b273b`,line:`#1d2940`,line2:`#2b3c58`,shadow:`#060a11`,text:`#e7edf5`,"text-2":`#bcc7d6`,"text-muted":`#909db2`,accent:`#7aa2ff`,focus:`#7aa2ff`,"focus-width":`2px`,selection:`#7aa2ff4d`,"status-failed":`#f87171`,"status-attention":`#fbbf24`,"status-done":`#34d399`,"status-running":`#22d3ee`,"status-muted":`#94a3b8`,tint:`13%`,agent:`#b597fb`,meter:`#7d8ba3`,"tok-input":`#7c86f5`,"tok-cache-read":`#3f4d63`,"tok-cache-write":`#8796ad`,"tok-output":`#d6b8ff`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#c4a5ff`,"code-string":`#7ee2a8`,"code-number":`#f5c26b`,"code-constant":`#ff9e64`,"code-comment":`#74839a`,"code-function":`#7dd3fc`,"code-type":`#ffd479`,"code-name":`#79b8ff`}},"contraagent-light":{label:`contraagent Light`,scheme:`light`,tokens:{backdrop:`radial-gradient(1100px 520px at 8% -12%, #dde7fb 0%, transparent 62%), radial-gradient(900px 480px at 108% 4%, #ebe3fa 0%, transparent 58%), #eef2f8`,bg:`#eef2f8`,card:`#ffffff`,panel:`#ffffff`,panel2:`#f7f9fc`,raise:`#e6ecf5`,well:`#f3f6fa`,track:`#e1e7f0`,line:`#d6dde8`,line2:`#b6c2d3`,shadow:`#0f172438`,text:`#0f1724`,"text-2":`#34415a`,"text-muted":`#556279`,accent:`#2f58d4`,focus:`#2f58d4`,"focus-width":`2px`,selection:`#2f58d42e`,"status-failed":`#b8132d`,"status-attention":`#6c4801`,"status-done":`#026b49`,"status-running":`#01525f`,"status-muted":`#56637a`,tint:`11%`,agent:`#6f45c0`,meter:`#8a97ab`,"tok-input":`#4d4cc8`,"tok-cache-read":`#cdd6e3`,"tok-cache-write":`#7d8aa0`,"tok-output":`#a07ad9`,"series-1":`#2a78d6`,"series-2":`#eb6834`,"series-3":`#1baf7a`,"series-4":`#eda100`,"series-5":`#e87ba4`,"series-6":`#008300`,"code-keyword":`#6f49a8`,"code-string":`#076b40`,"code-number":`#7b5605`,"code-constant":`#964605`,"code-comment":`#5d6b80`,"code-function":`#086586`,"code-type":`#785902`,"code-name":`#095ea8`}},"github-dark":{label:`GitHub Dark`,scheme:`dark`,tokens:{backdrop:`#010409`,bg:`#010409`,card:`#0d1117`,panel:`#0d1117`,panel2:`#151b23`,raise:`#212830`,well:`#010409`,track:`#262c36`,line:`#262c36`,line2:`#3d444d`,shadow:`#010409`,text:`#f0f6fc`,"text-2":`#d1d7e0`,"text-muted":`#9299a2`,accent:`#4796fb`,focus:`#1f6feb`,"focus-width":`2px`,selection:`#388bfd4d`,"status-failed":`#fc554d`,"status-attention":`#d29922`,"status-done":`#3fb950`,"status-running":`#39c5cf`,"status-muted":`#9198a1`,tint:`15%`,agent:`#ab7df8`,meter:`#656c76`,"tok-input":`#58a6ff`,"tok-cache-read":`#2f3742`,"tok-cache-write":`#656c76`,"tok-output":`#d2a8ff`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#ff7b72`,"code-string":`#a5d6ff`,"code-number":`#79c0ff`,"code-constant":`#79c0ff`,"code-comment":`#9198a1`,"code-function":`#d2a8ff`,"code-type":`#ffa657`,"code-name":`#7ee787`}},"github-light":{label:`GitHub Light`,scheme:`light`,tokens:{backdrop:`#f6f8fa`,bg:`#f6f8fa`,card:`#ffffff`,panel:`#ffffff`,panel2:`#ffffff`,raise:`#eff2f5`,well:`#f6f8fa`,track:`#e6eaef`,line:`#d1d9e0`,line2:`#b7c0ca`,shadow:`#1f232833`,text:`#1f2328`,"text-2":`#393f46`,"text-muted":`#59636e`,accent:`#0165d6`,focus:`#0165d6`,"focus-width":`2px`,selection:`#0969da33`,"status-failed":`#cd1e2b`,"status-attention":`#916103`,"status-done":`#147b33`,"status-running":`#10767d`,"status-muted":`#59636e`,tint:`8%`,agent:`#804ddc`,meter:`#818b98`,"tok-input":`#54aeff`,"tok-cache-read":`#d1d9e0`,"tok-cache-write":`#818b98`,"tok-output":`#a475f9`,"series-1":`#2a78d6`,"series-2":`#eb6834`,"series-3":`#1baf7a`,"series-4":`#eda100`,"series-5":`#e87ba4`,"series-6":`#008300`,"code-keyword":`#cf222e`,"code-string":`#0a3069`,"code-number":`#0550ae`,"code-constant":`#0550ae`,"code-comment":`#59636e`,"code-function":`#6639ba`,"code-type":`#953800`,"code-name":`#116329`}},"one-dark":{label:`One Dark`,scheme:`dark`,tokens:{backdrop:`#21252b`,bg:`#21252b`,card:`#282c34`,panel:`#282c34`,panel2:`#2c313a`,raise:`#2c313a`,well:`#21252b`,track:`#3a3f4b`,line:`#181a1f`,line2:`#4b5263`,shadow:`#0e1013`,text:`#d7dae0`,"text-2":`#abb2bf`,"text-muted":`#a7afbe`,accent:`#64b2f2`,focus:`#528bff`,"focus-width":`2px`,selection:`#3e4451`,"status-failed":`#fc858d`,"status-attention":`#e5c07b`,"status-done":`#98c379`,"status-running":`#57b7c3`,"status-muted":`#a7afbe`,tint:`12%`,agent:`#d788ee`,meter:`#5c6370`,"tok-input":`#61afef`,"tok-cache-read":`#3e4451`,"tok-cache-write":`#5c6370`,"tok-output":`#c678dd`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#c678dd`,"code-string":`#98c379`,"code-number":`#d19a66`,"code-constant":`#d19a66`,"code-comment":`#8f949e`,"code-function":`#61afef`,"code-type":`#e5c07b`,"code-name":`#e36e77`}},nord:{label:`Nord`,scheme:`dark`,tokens:{backdrop:`#2e3440`,bg:`#242933`,card:`#2e3440`,panel:`#2e3440`,panel2:`#323946`,raise:`#3b4252`,well:`#272c36`,track:`#3b4252`,line:`#3b4252`,line2:`#4c566a`,shadow:`#1d2129`,text:`#eceff4`,"text-2":`#d8dee9`,"text-muted":`#adbcd9`,accent:`#9dbedf`,focus:`#88c0d0`,"focus-width":`2px`,selection:`#4c566a`,"status-failed":`#fe9aa1`,"status-attention":`#ebcb8b`,"status-done":`#a5c18e`,"status-running":`#89c1d1`,"status-muted":`#adbcd9`,tint:`13%`,agent:`#d0a9c9`,meter:`#7b88a1`,"tok-input":`#5e81ac`,"tok-cache-read":`#4c566a`,"tok-cache-write":`#7b88a1`,"tok-output":`#b48ead`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#81a1c1`,"code-string":`#a3be8c`,"code-number":`#b790b0`,"code-constant":`#d38972`,"code-comment":`#8f9db8`,"code-function":`#88c0d0`,"code-type":`#8fbcbb`,"code-name":`#8fbcbb`}},"high-contrast":{label:`High contrast`,scheme:`dark`,tokens:{backdrop:`#010409`,bg:`#010409`,card:`#0a0c10`,panel:`#0a0c10`,panel2:`#0a0c10`,raise:`#1c2128`,well:`#010409`,track:`#272b33`,line:`#7a828e`,line2:`#9ea7b3`,shadow:`#000000`,text:`#ffffff`,"text-2":`#f0f3f6`,"text-muted":`#bdc4cc`,accent:`#7abbfe`,focus:`#7abbfe`,"focus-width":`3px`,selection:`#409eff66`,"status-failed":`#ffacb8`,"status-attention":`#fad209`,"status-done":`#0ef38e`,"status-running":`#62ceff`,"status-muted":`#bdc4cc`,tint:`12%`,agent:`#c299fe`,meter:`#9ea7b3`,"tok-input":`#409eff`,"tok-cache-read":`#525964`,"tok-cache-write":`#9ea7b3`,"tok-output":`#dbb7ff`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#ff9492`,"code-string":`#addcff`,"code-number":`#91cbff`,"code-constant":`#91cbff`,"code-comment":`#bdc4cc`,"code-function":`#dbb7ff`,"code-type":`#ffb757`,"code-name":`#72f088`}}},br=Object.fromEntries(mr.map(e=>[e.name,e.prop])),xr=e=>`:where([data-ca-theme="${e}"])`;function Sr(e=xr){return hr.map(t=>{let n=yr[t],r=Object.entries(n.tokens).map(([e,t])=>`${br[e]}: ${t};`);return`${e(t)} { color-scheme: ${n.scheme}; --ca-color-scheme: ${n.scheme}; ${r.join(` `)} }`}).join(`
6
- `)}var Cr=e=>gr.includes(e);function wr(e,t){return e===`system`?t?`contraagent-light`:`contraagent-dark`:(e=>hr.includes(e))(e)?e:vr}var Tr=`contraagent:theme`,Er=()=>{try{return globalThis.localStorage}catch{return}},Dr=pt(Sr()),Or=pt(Sr(e=>`:host([data-ca-theme="${e}"])`)),kr=new WeakSet,Ar=class{constructor(e,t){this.host=e,this.opts=t,this.light=globalThis.matchMedia?.(`(prefers-color-scheme: light)`).matches??!1,this.stop=null,e.addController(this)}get choice(){let e=this.opts.theme();return Cr(e)?e:function(e=Er()){try{let t=e?.getItem(Tr);if(Cr(t))return t}catch{}return vr}()}get shown(){return wr(this.choice,this.light)}get system(){return wr(`system`,this.light)}hostConnected(){this.apply();let e=globalThis.matchMedia?.(`(prefers-color-scheme: light)`);if(!e)return;let t=e=>{this.light=e.matches,this.host.requestUpdate()};e.addEventListener(`change`,t),this.stop=()=>e.removeEventListener(`change`,t)}hostDisconnected(){this.stop?.(),this.stop=null}hostUpdated(){this.apply()}apply(){let e=this.shown;this.host.getAttribute(`data-ca-theme`)!==e&&this.host.setAttribute(`data-ca-theme`,e),this.opts.pageWide()&&document.documentElement.getAttribute(`data-ca-theme`)!==e&&document.documentElement.setAttribute(`data-ca-theme`,e)}},I=e=>e&&e!==`neutral`?e:j;function L(e,t,n){return e.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0,composed:!0}))}function jr(e,t){let n={...e};if(t)for(let[e,r]of Object.entries(t))r!==void 0&&(n[e]=r);return n}function R(e,t){customElements.get(e)||customElements.define(e,t)}function z(e){if(e==null||Number.isNaN(e))return`—`;let t=Math.max(0,e);if(t<.05)return`<0.1s`;if(t<9.95)return`${t.toFixed(1)}s`;let n=Math.round(t);return n<60?`${n}s`:n<3600?`${Math.floor(n/60)}m ${String(n%60).padStart(2,`0`)}s`:`${Math.floor(n/3600)}h ${String(Math.floor(n%3600/60)).padStart(2,`0`)}m`}var B=e=>String(e??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`),Mr=new Set,Nr=null;function Pr(){for(let e of Mr)e.requestUpdate()}var Fr=class{constructor(e){this.host=e,e.addController(this)}hostConnected(){Mr.add(this.host),Nr??=setInterval(Pr,1e3)}hostDisconnected(){Mr.delete(this.host),!Mr.size&&Nr&&(clearInterval(Nr),Nr=null)}},Ir=new class{constructor(){this.seen=new Map}at(e,t,n=Date.now()){let r=Math.round(n-1e3*t),i=this.seen.get(e);return i!==void 0&&Math.abs(i-r)<5e3?i:(this.seen.set(e,r),r)}},Lr=O` .tag{font-size:var(--font-size-xs);padding:0 7px;border-radius:var(--radius-pill);border:1px solid var(--line2);color:var(--text-muted);white-space:nowrap;}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}.chip{font-size:var(--font-size-sm);padding:1px 8px;border-radius:var(--radius-pill);border:1px solid var(--line);color:var(--text-muted);white-space:nowrap;}.chip[data-tone='done']{color:var(--text-2);}.chip[data-tone='done']>[aria-hidden]{color:var(--tone);font-weight:700;}.chip[data-tone='running']{background:var(--tone);color:var(--bg);border-color:var(--tone);font-weight:600;animation:ping 1.6s var(--ease) infinite;}.chip.todo{opacity:0.65;}.taskchip{display:inline-block;font:inherit;font-family:var(--mono);font-size:var(--font-size-sm);line-height:1.5;padding:0 8px;border-radius:var(--radius-pill);border:1px solid var(--line);background:var(--raise);color:var(--text-2);white-space:nowrap;}button.taskchip{cursor:pointer;}button.taskchip:hover{border-color:var(--accent);color:var(--text);}.kbd{font-family:var(--mono);font-size:var(--font-size-xs);border:1px solid var(--line2);border-bottom-width:2px;border-radius:var(--radius-sm);padding:0 4px;color:var(--text-muted);}`,Rr=O` .g12{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px;container-type:inline-size;}.c12{grid-column:span 12;}.c7{grid-column:span 7;}.c5{grid-column:span 5;}@container (max-width:1100px){.c7,.c5{grid-column:span 12;}}.panel{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:var(--radius-lg);padding:14px 16px;min-width:0;box-shadow:0 10px 28px color-mix(in srgb,var(--shadow) 40%,transparent);}.panel>h3{margin:0 0 12px;display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;color:var(--text-2);}.panel>h3 .r{margin-left:auto;font-weight:400;font-size:11.5px;color:var(--text-muted);}.sect-h{margin:14px 0 8px;font-size:var(--font-size-md);color:var(--text-2);font-weight:600;}.sect-h .meta{margin-left:8px;font-weight:400;}.blank{display:flex;flex-direction:column;align-items:center;gap:8px;padding:60px 16px;color:var(--text-muted);text-align:center;}.blank .ic{font-size:30px;opacity:0.55;}.blank b{color:var(--text-2);font-weight:600;}.blank a.lnk{text-decoration:underline;}.blank.small{padding:24px;}.fl{padding:7px 10px;border-radius:var(--radius-md);cursor:pointer;display:grid;grid-template-columns:auto 1fr auto;gap:2px 10px;align-items:baseline;}button.fl{width:100%;background:none;border:0;color:inherit;text-align:start;}.fl-name{background:none;border:0;padding:0;color:inherit;font-weight:700;text-align:start;cursor:pointer;min-width:0;}.fl>.meta:last-child{grid-column:1 / 4;overflow:hidden;text-overflow:ellipsis;}.fl:hover{background:var(--raise);}`,zr=O` .enter{animation:enter 0.5s var(--ease) both;}@keyframes turn{to{transform:rotate(360deg);}}@keyframes breathe{0%,100%{opacity:0.45;box-shadow:0 0 0 0 transparent;transform:scale(0.85);}50%{opacity:1;box-shadow:0 0 0 4px var(--status-running-bg);transform:scale(1);}}@keyframes ping{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--status-running) 55%,transparent);}80%,100%{box-shadow:0 0 0 9px transparent;}}@keyframes enter{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}@keyframes bump{0%{transform:scale(1);}35%{transform:scale(1.04);box-shadow:0 0 0 1px var(--line2);}100%{transform:scale(1);}}@keyframes scan{from{transform:translateX(-100%);}to{transform:translateX(100%);}}@keyframes growx{from{transform:scaleX(0);}to{transform:scaleX(1);}}@keyframes stripes{to{background-position:17px 0;}}@keyframes toast-in{from{opacity:0;transform:translateY(12px) scale(0.97);}to{opacity:1;transform:none;}}@keyframes toast-out{to{opacity:0;transform:translateX(24px);}}@keyframes rowin{from{background:color-mix(in srgb,var(--text) 10%,transparent);}to{background:transparent;}}@keyframes bounce{0%,80%,100%{transform:translateY(0);opacity:0.45;}40%{transform:translateY(-5px);opacity:1;}}@keyframes core-beat{0%,100%{transform:scale(1);}50%{transform:scale(0.72);}}@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none !important;transition:none !important;}}`,Br=O` *,*::before,*::after{box-sizing:border-box;}*{scrollbar-width:thin;scrollbar-color:var(--line2) transparent;}*:hover{scrollbar-color:var(--text-muted) transparent;}::selection{background:var(--selection);}:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:2px;}button{font:inherit;color:inherit;}[hidden]{display:none !important;}`,Vr=O` [data-tone='failed']{--tone:var(--status-failed);--tone-bg:var(--status-failed-bg);}[data-tone='attention']{--tone:var(--status-attention);--tone-bg:var(--status-attention-bg);}[data-tone='done']{--tone:var(--status-done);--tone-bg:var(--status-done-bg);}[data-tone='running']{--tone:var(--status-running);--tone-bg:var(--status-running-bg);}[data-tone='muted']{--tone:var(--status-muted);--tone-bg:var(--status-muted-bg);}[data-mark]::before{margin-right:0.35em;font-weight:700;}[data-mark='done']::before{content:'✓';content:'✓' / '';color:var(--status-done);}[data-mark='failed']::before{content:'✕';content:'✕' / '';}[data-mark='pending']::before{content:'◌';content:'◌' / '';}.tone-text[data-tone]{color:var(--tone);}.pill{border-radius:var(--radius-pill);padding:1px 10px;font-size:var(--font-size-sm);font-weight:500;background:var(--raise);color:var(--text-2);white-space:nowrap;}.pill[data-tone]{background:var(--tone-bg);color:var(--tone);}.pill[data-tone='done']{background:none;padding-left:2px;color:var(--text-2);}.jstop{font-weight:600;}.jstop[data-tone='failed'],.jstop[data-tone='attention']{color:var(--tone);}.jstop[data-tone='done']{color:var(--text-2);font-weight:500;}.dot{width:8px;height:8px;border-radius:50%;background:var(--line2);flex:none;display:inline-block;}.dot[data-tone]{background:var(--tone);}.dot[data-tone='running']{animation:breathe 1.8s ease-in-out infinite;}.dot[data-tone='attention']{border-radius:1px;transform:rotate(45deg) scale(0.86);}.dot[data-tone='failed']{border-radius:1.5px;}.spin{width:14px;height:14px;border-radius:50%;border:2px solid var(--status-running-bg);border-top-color:var(--status-running);animation:turn 0.9s linear infinite;flex:none;display:inline-block;}`,Hr=O` .jmono,code,.mono{font-family:var(--mono);}.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}.jmono{font-size:11.5px;}.meta{color:var(--text-muted);font-size:var(--font-size-sm);}.words{word-break:keep-all;overflow-wrap:break-word;line-break:strict;}.words .f{display:inline-block;max-width:100%;}@supports (word-break:auto-phrase){.words:lang(ja){word-break:auto-phrase;}}.mut,.jdim{color:var(--text-muted);}a.lnk{color:var(--accent);cursor:pointer;text-decoration:none;}a.lnk:hover{text-decoration:underline;}`,Ur=yr[vr].tokens,Wr=O` :host{${pt(mr.map(e=>e.derive?`--${e.name}: var(${e.prop}, ${e.derive});`:`--${e.name}: var(${e.prop}, ${Ur[e.name]});`).join(`
7
- `))} --sans:var(--ca-sans,system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif);--mono:var(--ca-mono,ui-monospace,SFMono-Regular,Menlo,Consolas,'Liberation Mono',monospace);--ease:cubic-bezier(0.2,0.8,0.2,1);color-scheme:var(--ca-color-scheme,${pt(yr[vr].scheme)});color:var(--text);}:host([hidden]){display:none !important;}`,Gr=O` .jtree{font-family:var(--mono);font-size:var(--font-size-md);overflow:auto;}.jt{margin-left:16px;}details.jt>summary{cursor:pointer;list-style:revert;}.jk{color:var(--code-name);}.js{color:var(--code-string);}.jn{color:var(--code-number);}.md-p{margin:0.15em 0;}.md-gap{height:0.5em;}.md-h{font-weight:600;margin:0.7em 0 0.25em;}.md-h1{font-size:1.25em;}.md-h2{font-size:1.12em;}.md-h3{font-size:1.03em;color:var(--text-2);}.md-h4{color:var(--text-2);}.md-li{padding-left:16px;text-indent:-12px;margin:0.1em 0;}.md-li::before{content:'• ';color:var(--text-muted);}.md-ol::before{content:'';}.md-n{color:var(--text-muted);margin-right:6px;}.md-q{border-left:3px solid var(--line2);padding-left:10px;color:var(--text-2);margin:0.2em 0;}.md-hr{border:0;border-top:1px solid var(--line);margin:0.7em 0;}.md-t{border-collapse:collapse;margin:0.4em 0;}.md-t th,.md-t td{border:1px solid var(--line);padding:3px 9px;text-align:left;font-size:12.5px;}.md-t th{background:var(--raise);}.md-doc{padding:10px 14px;background:var(--well);border:1px solid var(--line);border-radius:var(--radius-md);max-height:460px;overflow:auto;line-height:1.55;}.md-doc code,.tx code{background:var(--raise);border-radius:var(--radius-sm);padding:0 4px;font-size:0.92em;}.md-doc pre{background:var(--well);border:1px solid var(--line);border-radius:6px;padding:8px 10px;white-space:pre-wrap;}.md-doc pre code,.tx pre code{background:none;padding:0;border-radius:0;font-size:inherit;}.md-front{margin-bottom:10px;border-collapse:collapse;}.md-front td{padding:2px 14px 2px 0;font-size:12.5px;border:0;vertical-align:top;}.md-front td:first-child{color:var(--text-muted);}.md-tele{color:var(--text-muted);font-size:11.5px;margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.df-text{background:var(--well);border:1px solid var(--line);border-radius:var(--radius-md);padding:10px 12px;font-size:var(--font-size-md);white-space:pre-wrap;max-height:420px;overflow:auto;margin:0;}.df-tog{margin-left:auto;font-size:var(--font-size-sm);color:var(--accent);border:1px solid var(--line2);border-radius:var(--radius-pill);padding:0 9px;cursor:pointer;background:none;}.df-tog:hover{background:var(--accent-bg);}.pv{color:var(--code-constant);background:color-mix(in srgb,var(--code-constant) 12%,transparent);border-radius:var(--radius-sm);padding:0 3px;}.pv.pc{color:var(--code-keyword);background:color-mix(in srgb,var(--code-keyword) 12%,transparent);}.hl{font-family:var(--mono);}.hl-k{color:var(--code-keyword);}.hl-const{color:var(--code-constant);font-style:italic;}.hl-s{color:var(--code-string);}.hl-doc{color:var(--code-string);font-style:italic;opacity:0.85;}.hl-c{color:var(--code-comment);font-style:italic;}.hl-n{color:var(--code-number);}.hl-d{color:var(--code-function);}.hl-f{color:var(--code-function);font-weight:600;}.hl-cls{color:var(--code-type);font-weight:700;}.hl-t{color:var(--code-type);}.hl-b{color:var(--code-name);}.hl-key{color:var(--code-name);}`,Kr=O` .jdur{position:relative;display:block;height:6px;border-radius:3px;background:var(--track);overflow:hidden;margin-top:2px;}.jdur i{position:absolute;left:0;top:0;bottom:0;border-radius:3px;background:var(--meter);}.jdur i.bad{background:var(--status-failed);}`,qr=O` .drv-facts{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px;font-size:var(--font-size-md);}.drv-facts i{font-style:normal;color:var(--text-muted);margin-right:5px;font-size:var(--font-size-sm);}`,Jr=O` .mark{width:var(--m);height:var(--m);padding:0;margin:0;border:0;border-radius:50%;background:var(--tone,var(--status-done));opacity:0.9;cursor:pointer;position:relative;transition:opacity 0.2s,transform 0.15s,background 0.3s;}.mark:not([data-tone]){--tone:initial;}.mark[data-tone='muted']{opacity:0.55;}.mark[data-tone='running']{opacity:1;animation:breathe 1.4s ease-in-out infinite;}.mark[data-shape='ring']{background:transparent;box-shadow:inset 0 0 0 1.5px var(--tone,var(--line2));}.mark[data-shape='hatched']{border-radius:2px;background:repeating-linear-gradient(135deg,transparent 0 2px,color-mix(in srgb,var(--tone) 55%,transparent) 2px 3px);box-shadow:inset 0 0 0 1.5px var(--tone);opacity:1;}.mark[data-shape='half']{background:linear-gradient(0deg,var(--tone) 50%,transparent 50%);box-shadow:inset 0 0 0 1.5px var(--tone);opacity:1;}.mark[data-shape='square']{border-radius:2px;opacity:1;}.big .mark[data-tone='failed']::after{content:'✕';position:absolute;inset:0;display:grid;place-items:center;color:var(--bg);font-size:calc(var(--m) - 3px);line-height:1;font-weight:700;}.mark[data-n]::after{content:'';position:absolute;inset:32%;border-radius:50%;background:var(--card);}.big .mark[data-n]::after{content:attr(data-n);inset:0;display:grid;place-items:center;border-radius:0;background:none;font:700 max(7px,calc(var(--m) - 4px)) / 1 var(--sans);color:var(--bg);letter-spacing:-0.5px;}.big .mark:is(:not([data-tone]),[data-tone='attention'],[data-tone='muted'])[data-n]::after{color:var(--text);}.mark:hover,.mark:focus-visible{transform:scale(1.4);outline:var(--focus-width) solid var(--text);outline-offset:1px;z-index:2;}.mark.sel{outline:var(--focus-width) solid var(--accent);outline-offset:2px;z-index:2;}@media (prefers-reduced-motion:reduce){.mark{transition:none;}.mark[data-tone='running']{animation:none;background:linear-gradient(90deg,var(--status-running) 50%,transparent 50%);box-shadow:inset 0 0 0 1.5px var(--status-running);}}`,V=[Wr,Br,Hr,Vr,Lr,Rr,zr];function Yr(e){switch(e){case`done`:return`done`;case`failed`:return`failed`;case`attention`:return`pending`;default:return null}}var Xr=e=>(e.mark===void 0||!0===e.mark?Yr(e.tone??`neutral`):e.mark||null)??j;function Zr(e){let t=e.tone??`neutral`;return k`<span class="pill ${e.cls??``}" part="pill tone-${t}" data-tone=${I(t)} data-mark=${Xr(e)} title=${e.title||j}>${e.text}</span>`}function Qr(e){let t=e.tone??`neutral`;return k`<span class="jstop ${e.cls??``}" part="status tone-${t}" data-tone=${I(t)} data-mark=${Xr(e)} title=${e.title||j}>${e.text}</span>`}function $r(e,t){let n=t.tone??`neutral`;return k`<span class="${e} ${t.cls??``}" data-tone=${I(n)} data-mark=${Xr(t)} title=${t.title||j}>${t.text}</span>`}var ei=e=>(...t)=>({_$litDirective$:e,values:t}),ti=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,n){this._$Ct=e,this._$AM=t,this._$Ci=n}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}},ni=`important`,ri=` !`+ni,ii=ei(class extends ti{constructor(e){if(super(e),e.type!==1||e.name!==`style`||e.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(e){return Object.keys(e).reduce((t,n)=>{let r=e[n];return r==null?t:t+`${n=n.includes(`-`)?n:n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,`-$&`).toLowerCase()}:${r};`},``)}update(e,[t]){let{style:n}=e.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(t)),this.render(t);for(let e of this.ft)t[e]??(this.ft.delete(e),e.includes(`-`)?n.removeProperty(e):n[e]=null);for(let e in t){let r=t[e];if(r!=null){this.ft.add(e);let t=typeof r==`string`&&r.endsWith(ri);e.includes(`-`)||t?n.setProperty(e,t?r.slice(0,-11):r,t?ni:``):n[e]=r}}return $t}});function ai(e,t={}){return k`<div class="legend ${t.cls??``}" part="legend" role="list" aria-label=${t.label||j}>
8
- ${e.map(e=>k`<span role="listitem" aria-hidden=${e.decorative?`true`:j}>${(e=>e.icon??(e.swatch||e.tone||e.shape||e.cls?k`<i class=${e.cls||j} data-tone=${I(e.tone)} data-shape=${e.shape??j} style=${e.swatch?ii({background:e.swatch}):j}></i>`:j))(e)}${e.label}</span>`)}
9
- </div>`}var oi=O` .legend{display:flex;gap:14px;flex-wrap:wrap;font-size:var(--font-size-sm);color:var(--text-muted);}.legend>span{white-space:nowrap;}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px;}.legend i[data-tone]{background:var(--tone);}.legend i[data-shape='round']{border-radius:50%;}.legend i[data-shape='square']{border-radius:2px;}.legend i[data-shape='ring']{background:none;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--tone,var(--line2));}.legend i[data-shape='half']{border-radius:50%;background:linear-gradient(0deg,var(--tone,var(--line2)) 50%,transparent 50%);box-shadow:inset 0 0 0 1.5px var(--tone,var(--line2));}.legend i[data-shape='hatched']{border-radius:2px;background:repeating-linear-gradient(135deg,transparent 0 2px,var(--tone,var(--line2)) 2px 3px);}`;function si(e){let t=e.reduce((e,t)=>e+Math.max(t,0),0);if(!t)return e.map(()=>0);let n=e.map(e=>100*Math.max(e,0)/t),r=n.map(Math.floor),i=n.map((e,t)=>[e-Math.floor(e),t]).sort((e,t)=>t[0]-e[0]||e[1]-t[1]);for(let e=0,t=100-r.reduce((e,t)=>e+t,0);e<t;e++)r[i[e][1]]+=1;return r}var ci=(e,t)=>e===0&&t>0?`<1%`:`${e}%`,li=O` .share{display:grid;gap:6px;}.share-bar,.share-names{display:flex;gap:2px;min-width:0;}.share-bar{height:14px;}.share-seg{position:relative;flex:0 1 0;min-width:3px;height:100%;border-radius:1px;cursor:default;outline-offset:2px;}.share-seg[data-edge='start']{border-radius:4px 1px 1px 4px;}.share-seg[data-edge='end']{border-radius:1px 4px 4px 1px;}.share-seg:only-child{border-radius:4px;}.share-seg::before{content:'';position:absolute;inset:-6px 0;}.share-seg:hover,.share-seg:focus-visible{box-shadow:0 0 0 2px var(--card);}.share-tip{display:none;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);z-index:2;padding:4px 8px;border-radius:var(--radius-sm);background:var(--raise);border:1px solid var(--line2);box-shadow:0 4px 14px var(--shadow);color:var(--text);font-size:var(--font-size-sm);white-space:nowrap;pointer-events:none;}.share-seg[data-edge='start'] .share-tip,.share-seg:only-child .share-tip{left:0;transform:none;}.share-seg[data-edge='end'] .share-tip{left:auto;right:0;transform:none;}.share-seg:hover .share-tip,.share-seg:focus-visible .share-tip{display:block;}.share-names span{flex:0 1 0;min-width:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-sm);color:var(--text-muted);font-variant-numeric:tabular-nums;}.share-names b{font-weight:600;color:var(--text-2);}`,ui=(e,t,n)=>e[t]?.count?.(n)??`${n} ${e[t]?.label??t}`;function di(e,t=` | `){let n=e.filter(e=>typeof e==`string`?e:e.text);return n.length?k`${n.map((e,n)=>typeof e==`string`?k`${n?t:``}<span class="f">${e}</span>`:k`${n?t:``}<span class="f tone-text" data-tone=${I(e.tone)}>${e.text}</span>`)}`:j}var fi=new Map;function pi(e,t,n={}){let r=fi.get(e)??e;return t?k`<span class=${n.cls||j} part="icon" title=${t}><span aria-hidden="true">${r}</span><span class="sr">${t}</span></span>`:k`<span class=${n.cls||j} part="icon" aria-hidden="true">${r}</span>`}var mi=class{constructor(e,t){this.host=e,this.o=t,this.current=0,this.onFocus=e=>{let t=this.indexOf(e);t>=0&&t!==this.current&&this.set(t)},this.onKey=e=>{let t=this.o.items(),n=this.indexOf(e);if(n<0)return;let r=function(e,t,n,r){if(e<=0)return null;let i=n=>n===t||n<0||n>=e?null:n;if(r.layout===`grid`){let a=Math.max(1,r.cols??1),o=Math.floor(t/a)*a;switch(n){case`ArrowRight`:return(t+1)%a&&t+1<e?i(t+1):null;case`ArrowLeft`:return t%a?i(t-1):null;case`ArrowDown`:return i(t+a);case`ArrowUp`:return i(t-a);case`Home`:return i(r.ctrl?0:o);case`End`:return i(r.ctrl?e-1:Math.min(o+a,e)-1);default:return null}}let[a,o]=r.layout===`horizontal`?[`ArrowLeft`,`ArrowRight`]:[`ArrowUp`,`ArrowDown`],s=n=>i(r.wrap?(t+n+e)%e:t+n);switch(n){case o:return s(1);case a:return s(-1);case`Home`:return i(0);case`End`:return i(e-1);default:return null}}(t.length,n,e.key,{layout:this.o.layout,cols:this.o.columns?.(),wrap:this.o.wrap,ctrl:e.ctrlKey||e.metaKey}),i=r===null?void 0:t[r];r!==null&&i&&(e.preventDefault(),this.set(r),i.focus(),this.o.onMove?.(i,r))},e.addController(this)}hostConnected(){this.host.addEventListener(`keydown`,this.onKey),this.host.addEventListener(`focusin`,this.onFocus)}hostDisconnected(){this.host.removeEventListener(`keydown`,this.onKey),this.host.removeEventListener(`focusin`,this.onFocus)}hostUpdated(){this.sync()}set(e){this.current=e,this.sync()}sync(){let e=this.o.items();e.length&&(this.current=Math.min(Math.max(0,this.current),e.length-1),e.forEach((e,t)=>e.tabIndex=t===this.current?0:-1))}indexOf(e){return this.o.items().findIndex(t=>e.composedPath().includes(t))}};function hi(e,t,n,r=8){let i=Math.max(0,e.length-1),a=e[i]??0;if(!i||a<=0)return{from:0,to:i,padTop:0,padBottom:0};let o=Math.max(0,t),s=gi(e,o),c=gi(e,o+Math.max(0,n)),l=Math.max(0,s-r),u=Math.min(i,Math.max(l,c+1+r));return{from:l,to:u,padTop:e[l],padBottom:a-e[u]}}function gi(e,t){let n=0,r=e.length-1-1;for(;n<r;){let i=n+r+1>>1;e[i]<=t?n=i:r=i-1}return n}var{I:_i}=mn,vi=e=>e,yi=()=>document.createComment(``),bi=(e,t,n)=>{let r=e._$AA.parentNode,i=t===void 0?e._$AB:t._$AA;if(n===void 0)n=new _i(r.insertBefore(yi(),i),r.insertBefore(yi(),i),e,e.options);else{let t=n._$AB.nextSibling,a=n._$AM,o=a!==e;if(o){let t;n._$AQ?.(e),n._$AM=e,n._$AP!==void 0&&(t=e._$AU)!==a._$AU&&n._$AP(t)}if(t!==i||o){let e=n._$AA;for(;e!==t;){let t=vi(e).nextSibling;vi(r).insertBefore(e,i),e=t}}}return n},xi=(e,t,n=e)=>(e._$AI(t,n),e),Si={},Ci=(e,t=Si)=>e._$AH=t,wi=e=>{e._$AR(),e._$AA.remove()},Ti=(e,t,n)=>{let r=new Map;for(let i=t;i<=n;i++)r.set(e[i],i);return r},H=ei(class extends ti{constructor(e){if(super(e),e.type!==2)throw Error(`repeat() can only be used in text expressions`)}dt(e,t,n){let r;n===void 0?n=t:t!==void 0&&(r=t);let i=[],a=[],o=0;for(let t of e)i[o]=r?r(t,o):o,a[o]=n(t,o),o++;return{values:a,keys:i}}render(e,t,n){return this.dt(e,t,n).values}update(e,[t,n,r]){let i=(e=>e._$AH)(e),{values:a,keys:o}=this.dt(t,n,r);if(!Array.isArray(i))return this.ut=o,a;let s=this.ut??=[],c=[],l,u,d=0,f=i.length-1,p=0,m=a.length-1;for(;d<=f&&p<=m;)if(i[d]===null)d++;else if(i[f]===null)f--;else if(s[d]===o[p])c[p]=xi(i[d],a[p]),d++,p++;else if(s[f]===o[m])c[m]=xi(i[f],a[m]),f--,m--;else if(s[d]===o[m])c[m]=xi(i[d],a[m]),bi(e,c[m+1],i[d]),d++,m--;else if(s[f]===o[p])c[p]=xi(i[f],a[p]),bi(e,i[d],i[f]),f--,p++;else if(l===void 0&&(l=Ti(o,p,m),u=Ti(s,d,f)),l.has(s[d])){if(l.has(s[f])){let t=u.get(o[p]),n=t===void 0?null:i[t];if(n===null){let t=bi(e,i[d]);xi(t,a[p]),c[p]=t}else c[p]=xi(n,a[p]),bi(e,i[d],n),i[t]=null;p++}else wi(i[f]),f--}else wi(i[d]),d++;for(;p<=m;){let t=bi(e,c[m+1]);xi(t,a[p]),c[p++]=t}for(;d<=f;){let e=i[d++];e!==null&&wi(e)}return this.ut=o,Ci(e,c),$t}});function U(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o}var Ei=class extends M{constructor(...e){super(...e),this.options=[],this.value=``,this.label=``,this.roving=new mi(this,{items:()=>[...this.renderRoot.querySelectorAll(`button:not(:disabled)`)??[]],layout:`horizontal`,wrap:!0,onMove:e=>this.choose(e.dataset.value??``)})}static{this.styles=[V,O` :host{display:inline-flex;vertical-align:middle;}.group{display:inline-flex;border:1px solid var(--line);border-radius:var(--cae-segmented-radius,6px);overflow:hidden;}button{min-width:22px;height:var(--cae-segmented-height,20px);line-height:var(--cae-segmented-height,20px);padding:var(--cae-segmented-padding,0 10px);margin:0;border:0;border-radius:0;background:none;font-size:var(--cae-segmented-font-size,11.5px);text-align:center;color:var(--text-muted);cursor:pointer;}button + button{border-left:var(--cae-segmented-divider,1px solid var(--line));}button:hover{color:var(--cae-segmented-hover,var(--text));}button[aria-checked='true']{background:var(--raise);color:var(--text);cursor:default;}button:disabled{opacity:0.5;cursor:default;}button:focus-visible{outline-offset:-2px;}`]}willUpdate(){let e=this.options.filter(e=>!e.disabled).findIndex(e=>e.value===this.value);e>=0&&(this.roving.current=e)}choose(e){e!==this.value&&(this.value=e,L(this,`cae-change`,{value:e}))}render(){return k`<div class="group" part="group" role="radiogroup" aria-label=${this.label||j}>
10
- ${H(this.options,e=>e.value,e=>{let t=e.value===this.value;return k`<button type="button" role="radio" part=${t?`option option-selected`:`option`} aria-checked=${t?`true`:`false`} data-value=${e.value} lang=${e.lang||j} title=${e.title||j} ?disabled=${!!e.disabled} @click=${()=>this.choose(e.value)}>${e.label}</button>`})}
11
- </div>`}};U([P({attribute:!1})],Ei.prototype,`options`,void 0),U([P()],Ei.prototype,`value`,void 0),U([P()],Ei.prototype,`label`,void 0);var Di=class extends M{constructor(...e){super(...e),this.open=1}static{this.styles=[V,Gr]}render(){return k`<div class="jtree" part="tree" data-scroll="x">${this.node(this.value,0)}</div>`}node(e,t){if(typeof e!=`object`||!e)return k`<span class=${typeof e==`string`?`js`:`jn`}>${JSON.stringify(e)??`undefined`}</span>`;let n=Array.isArray(e)?e.map((e,t)=>[t,e]):Object.entries(e);return n.length?k`${n.map(([e,n])=>(e=>typeof e!=`object`||!e||(Array.isArray(e)?!e.length:!Object.keys(e).length))(n)?k`<div class="jt"><span class="jk">${e}</span>: ${this.node(n,t+1)}</div>`:k`<details class="jt" ?open=${t<this.open}>
3
+ `)}`}trendPanelNames(){return this.snap.info.panels.filter(e=>e.scope===`trends`).map(e=>e.name)}async loadTrends(e){let t=this.snap.trends&&JSON.stringify(this.snap.trends.query)===JSON.stringify(e);this.trendsQuery=e,this.set({trends:{query:e,data:t?this.snap.trends.data:this.snap.trends?.data??null,panels:t?this.snap.trends.panels:{},loading:!0,error:null}}),await this.fetchTrends(e)}closeTrends(){this.trendsQuery=null}async fetchTrends(e){let t=++this.trendsAsked;this.trendsOver=this.trendsKey();let n=()=>t!==this.trendsAsked||this.stopped?null:this.snap.trends,r=this.trendPanelNames(),i=this.client.trends(e).then(t=>{let r=n();r&&this.set({trends:{...r,query:e,data:t,loading:!1,error:null}})},t=>{let r=n();r&&this.set({trends:{...r,query:e,loading:!1,error:ye(t,`${this.client.baseUrl}/api/trends`)}})}),a=(e,t)=>{let r=n();r&&this.set({trends:{...r,panels:{...r.panels,[e]:t}}})},o=r.map(t=>this.client.trendsPanel(t,e).then(e=>a(t,e),e=>a(t,{error:String(e)})));await Promise.allSettled([i,...o])}async loadInfo(){try{let e=this.panelNames(),t=await this.client.info();if(this.stopped)return;this.infoLoaded=!0,this.infoError=null,this.set({info:t}),this.snap.run&&this.panelNames()!==e&&this.reopen()}catch(e){this.infoError=ye(e,`${this.client.baseUrl}/api/info`)}}async refreshRuns(){let[e,t]=await Promise.allSettled([this.client.runs(),this.snap.info.hosts?this.client.hosts():Promise.resolve(null)]);if(this.stopped)return;let n={};e.status===`fulfilled`?(n.runs=e.value,n.runsLoaded=!0,this.runsError=null):this.runsError=ye(e.reason,`${this.client.baseUrl}/api/runs`),t.status===`fulfilled`?(n.hosts=t.value,this.hostsError=null):this.hostsError=ye(t.reason,`${this.client.baseUrl}/api/hosts`);let r=this.infoError??this.runsError??this.hostsError;r?.message!==this.snap.error?.message&&(n.error=r),Object.keys(n).length&&this.set(n)}panelNames(){return this.snap.info.panels.filter(_e).map(e=>e.name).join(`
4
+ `)}reopen(){let e=this.snap.run;this.closeFeed?.(),this.closeFeed=null,this.selectRun(e)}selectRun(e){if(e===this.snap.run&&(this.closeFeed||!e)||(this.closeFeed?.(),this.closeFeed=null,this.queue=[],this.set({run:e,state:{journal:[],procs:null,plan:{nodes:[],groups:[],flow_calls:[]},outputs:{contracts:[],tally:{valid:0,invalid:0,refused:0,pending:0,failed:0,running:0}},cursor:null,panels:{},ready:!1},connected:!1,fresh:new Set}),!e))return;let t=this.snap.info.panels.filter(_e).map(e=>e.name),n={open:()=>{this.push({event:`connected`}),this.set({connected:!0})},error:()=>this.set({connected:!1}),message:e=>this.push(e)};this.closeFeed=this.opts.openRunFeed?this.opts.openRunFeed(e,t,n):function(e,t,n,r={}){let i=[...o,...t.map(e=>`panel:${e}`)];return s(`${l(r)}/events?run=${c(e)}`,i,n,r)}(e,t,n,{...this.opts.baseUrl===void 0?{}:{baseUrl:this.opts.baseUrl},...this.opts.feed})}stop(){this.stopped=!0,this.closeFeed?.(),this.closeFeed=null,this.pollTimer&&clearTimeout(this.pollTimer),this.pollTimer=null,this.flushTimer&&clearTimeout(this.flushTimer),this.flushTimer=null}push(e){this.queue.push(e),this.flushTimer??=setTimeout(()=>this.flush(),this.opts.batchMs)}flush(){this.flushTimer=null;let e=this.queue;this.queue=[];let t=this.snap.state.ready,n=[];for(let r of e)r.event===`connected`?t=!1:r.event===`ready`?t=!0:r.event===`journal`&&t&&n.push(r.data);let r=function(e,t){let n=e,r=null,i=()=>{if(!r)return;let e=n.journal.concat(r);n={...n,journal:e.length>4e3?e.slice(e.length-4e3):e},r=null};for(let e of t)if(e.event!==`journal`)switch(i(),e.event){case`connected`:n={...n,journal:[],ready:!1};break;case`ready`:n={...n,ready:!0};break;case`procs`:n={...n,procs:e.data};break;case`plan`:n={...n,plan:e.data};break;case`outputs`:n={...n,outputs:e.data};break;case`cursor`:n={...n,cursor:e.data};break;default:n={...n,panels:{...n.panels,[e.event.slice(6)]:e.data}}}else(r??=[]).push(e.data);return i(),n}(this.snap.state,e);if(!n.length)return void this.set({state:r});let i=new Set(this.snap.fresh);for(let e of n)i.add(de(e));this.set({state:r,fresh:i});for(let e of n)for(let t of this.rowListeners)t(e);setTimeout(()=>{let e=new Set(this.snap.fresh);for(let t of n)e.delete(de(t));this.set({fresh:e})},this.opts.freshMs)}set(e){this.snap={...this.snap,...e};for(let e of this.listeners)e(this.snap)}},xe=encodeURIComponent;function Se(e){let t=Array.from(e,e=>/^[\p{L}\p{N}._-]$/u.test(e)?e:`_`).join(``).replace(/\.\.+/g,e=>`_`.repeat(e.length));return t.startsWith(`.`)?`_${t.slice(1)}`:t||`_`}var Ce=e=>Object.keys(e).length>0;function we(e){return(t,n,r)=>{let i=!1;return(async()=>{try{let[a,o,s,c,l]=await Promise.all([e.journal(t),e.file(`runs/${xe(t)}/plan.json`),e.file(`runs/${xe(t)}/outputs.json`),e.file(`runs/${xe(t)}/cursor.json`),Promise.all(n.map(n=>e.panel(t,n).catch(e=>({error:String(e)}))))]);if(i)return;r.open?.();let u=e=>!i&&r.message(e);for(let e of a.entries)u({event:`journal`,data:e});u({event:`plan`,data:o}),u({event:`outputs`,data:s}),u({event:`cursor`,data:Ce(c)?c:null}),n.forEach((e,t)=>u({event:`panel:${e}`,data:l[t]??{}})),u({event:`ready`,data:{journal:a.total}})}catch{i||r.error?.()}})(),()=>{i=!0}}}var Te=()=>({input:0,output:0,cache_read:0,cache_creation:0,calls:0,cost:null,reported:0}),Ee=e=>e.input+e.output+e.cache_read+e.cache_creation;function De(e,t){let n=t.usage;return n||t.cost_usd!==null&&t.cost_usd!==void 0?(n&&(e.input+=n.input??0,e.output+=n.output??0,e.cache_read+=n.cache_read??0,e.cache_creation+=n.cache_creation??0,e.calls+=n.calls??0),t.cost_usd!==null&&t.cost_usd!==void 0&&(e.cost=(e.cost??0)+t.cost_usd),e.reported++,e):e}function Oe(e){let t={input:0,output:0,cache_read:0,cache_creation:0,calls:0,cost:null,reported:0};for(let n of e)De(t,n);return t.reported?t:null}function ke(e,t){let n=new Map,r={input:0,output:0,cache_read:0,cache_creation:0,calls:0,cost:null,reported:0};for(let i of e){De(r,i);let e=t(i),a=n.get(e);a||n.set(e,a={id:e,kind:i.kind,unit:i.unit??``,spend:Te(),share:null}),De(a.spend,i)}let i=[...n.values()].filter(e=>e.spend.reported);for(let e of i)e.share=r.cost?(e.spend.cost??0)/r.cost:null;return i.sort((e,t)=>(t.spend.cost??0)-(e.spend.cost??0)||Ee(t.spend)-Ee(e.spend))}var Ae=e=>ke(e,e=>e.kind).map(e=>({...e,unit:``})),je=e=>(e.input??0)+(e.output??0)+(e.cache_read??0)+(e.cache_creation??0);function Me(e,t){switch(t){case`cost`:return e.cost_usd??null;case`tokens`:return je(e);case`time`:return e.wall_s??0;case`sessions`:return e.sessions}}var Ne=e=>[`cost`,`tokens`,`time`,`sessions`].filter(t=>e.some(e=>(Me(e,t)??0)>0)),Pe=e=>Date.parse(e.observed_at??``),Fe=e=>!Number.isNaN(Pe(e))&&(e.five_hour_pct!=null||e.seven_day_pct!=null);function Ie(e){let t=[];for(let n of e)for(let e of n.quota??[])Fe(e)&&t.push({reading:e,key:n.key,attempt:n.attempt??0});return t.sort((e,t)=>Pe(e.reading)-Pe(t.reading))}var Le=e=>`${e.credential??``}\0${e.account??``}`;function Re(e){let t=new Map;for(let{reading:n}of Ie(e)){let e=Le(n),r=t.get(e);r||t.set(e,r=[]),r.push(n)}let n=[];for(let e of t.values()){let t=e[0],r=e[e.length-1];t&&r&&n.push({credential:r.credential??``,account:r.account??``,first:t,last:r})}return n.sort((e,t)=>(t.last.seven_day_pct??0)-(e.last.seven_day_pct??0))}function ze(e,t){let n=(e.quota??[]).filter(Fe).sort((e,t)=>Pe(e)-Pe(t)),r=Date.parse(e.ts),i=n[0]??null,a=i===null?``:Le(i);return{start:i,next:(i===null||Number.isNaN(r)?void 0:t.find(e=>Pe(e.reading)>r&&Le(e.reading)===a))?.reading??null}}function Be(e){let t=/^invalid input:\s*(.*)$/s.exec(e||``);if(!t)return[];let n=[];for(let e of(t[1]??``).split(`; `)){let t=/^input from (\S+) is missing: (\S+)/.exec(e);t?n.push({path:t[2]??``,producer:t[1]??``,problem:`missing`}):(t=/^input from (\S+) ended \S+: (\S+)/.exec(e),t?n.push({path:t[2]??``,producer:t[1]??``,problem:`failed`}):(t=/^(\S+?): required input is missing/.exec(e),t?n.push({path:t[1]??``,producer:``,problem:`missing`}):(t=/^(\S+?): /.exec(e),t&&!n.some(e=>e.path===t?.[1])&&n.push({path:t[1]??``,producer:``,problem:`checks`}))))}return n}function C(e,t){if(!e||!t)return e??``;let n=t.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`);return e.replace(RegExp(`(?:/[^\\s:'"]*)?/${n}/`,`g`),``)}var Ve=`lit-localize-status`,w=(e,...t)=>({strTag:!0,strings:e,values:t}),He=(e,t,n)=>{let r=e[0];for(let i=1;i<e.length;i++)r+=t[n?n[i-1]:i-1],r+=e[i];return r},Ue=e=>{return typeof(t=e)!=`string`&&`strTag`in t?He(e.strings,e.values):e;var t},T=Ue,We=!1,Ge=class{constructor(e){this.__litLocalizeEventHandler=e=>{e.detail.status===`ready`&&this.host.requestUpdate()},this.host=e}hostConnected(){window.addEventListener(Ve,this.__litLocalizeEventHandler)}hostDisconnected(){window.removeEventListener(Ve,this.__litLocalizeEventHandler)}},Ke=e=>e.addController(new Ge(e)),E=()=>(e,t)=>(e.addInitializer(Ke),e),qe=class{constructor(){this.settled=!1,this.promise=new Promise((e,t)=>{this._resolve=e,this._reject=t})}resolve(e){this.settled=!0,this._resolve(e)}reject(e){this.settled=!0,this._reject(e)}},Je=[];for(let e=0;e<256;e++)Je[e]=(e>>4&15).toString(16)+(15&e).toString(16);var Ye=new WeakMap,Xe=new Map;function Ze(e){window.dispatchEvent(new CustomEvent(Ve,{detail:e}))}var Qe,$e,et,tt,nt,rt=``,it=new qe;it.resolve();var at=0,ot=e=>(function(){if(We)throw Error(`lit-localize can only be configured once`);T=(e,t)=>function(e,t,n){if(e){let r=e[n?.id??function(e){let t=typeof e==`string`?e:e.strings,n=Xe.get(t);return n===void 0&&(n=function(e,t){return(t?`h`:`s`)+function(e){let t=0,n=8997,r=0,i=33826,a=0,o=40164,s=0,c=52210;for(let l=0;l<e.length;l++)n^=e.charCodeAt(l),t=435*n,r=435*i,a=435*o,s=435*c,a+=n<<8,s+=i<<8,r+=t>>>16,n=65535&t,a+=r>>>16,i=65535&r,c=s+(a>>>16)&65535,o=65535&a;return Je[c>>8]+Je[255&c]+Je[o>>8]+Je[255&o]+Je[i>>8]+Je[255&i]+Je[n>>8]+Je[255&n]}(typeof e==`string`?e:e.join(``))}(t,typeof e!=`string`&&!(`strTag`in e)),Xe.set(t,n)),n}(t)];if(r){if(typeof r==`string`)return r;if(`strTag`in r)return He(r.strings,t.values,r.values);{let e=Ye.get(r);return e===void 0&&(e=r.values,Ye.set(r,e)),{...r,values:e.map(e=>t.values[e])}}}}return Ue(t)}(nt,e,t),We=!0}(),rt=$e=e.sourceLocale,(et=new Set(e.targetLocales)).add(e.sourceLocale),tt=e.loadLocale,{getLocale:st,setLocale:ct}),st=()=>rt,ct=e=>{if(e===(Qe??rt))return it.promise;if(!et||!tt)throw Error(`Internal error`);if(!et.has(e))throw Error(`Invalid locale code`);let t=++at;return Qe=e,it.settled&&(it=new qe),Ze({status:`loading`,loadingLocale:e}),(e===$e?Promise.resolve({templates:void 0}):tt(e)).then(n=>{at===t&&(rt=e,Qe=void 0,nt=n.templates,Ze({status:`ready`,readyLocale:e}),it.resolve())},n=>{at===t&&(Ze({status:`error`,errorLocale:e,errorMessage:n.toString()}),it.reject(n))}),it.promise},lt=globalThis,ut=lt.ShadowRoot&&(lt.ShadyCSS===void 0||lt.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,dt=Symbol(),ft=new WeakMap,pt=class{constructor(e,t,n){if(this._$cssResult$=!0,n!==dt)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(ut&&e===void 0){let n=t!==void 0&&t.length===1;n&&(e=ft.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),n&&ft.set(t,e))}return e}toString(){return this.cssText}},mt=e=>new pt(typeof e==`string`?e:e+``,void 0,dt),D=(e,...t)=>new pt(e.length===1?e[0]:t.reduce((t,n,r)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if(typeof e==`number`)return e;throw Error(`Value passed to 'css' function must be a 'css' function result: `+e+`. Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.`)})(n)+e[r+1],e[0]),e,dt),ht=(e,t)=>{if(ut)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let n of t){let t=document.createElement(`style`),r=lt.litNonce;r!==void 0&&t.setAttribute(`nonce`,r),t.textContent=n.cssText,e.appendChild(t)}},gt=ut?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return mt(t)})(e):e,{is:_t,defineProperty:vt,getOwnPropertyDescriptor:yt,getOwnPropertyNames:bt,getOwnPropertySymbols:xt,getPrototypeOf:St}=Object,Ct=globalThis,wt=Ct.trustedTypes,Tt=wt?wt.emptyScript:``,Et=Ct.reactiveElementPolyfillSupport,Dt=(e,t)=>e,Ot={toAttribute(e,t){switch(t){case Boolean:e=e?Tt:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},kt=(e,t)=>!_t(e,t),At={attribute:!0,type:String,converter:Ot,reflect:!1,useDefault:!1,hasChanged:kt};Symbol.metadata??=Symbol(`metadata`),Ct.litPropertyMetadata??=new WeakMap;var jt=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=At){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&vt(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=yt(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??At}static _$Ei(){if(this.hasOwnProperty(Dt(`elementProperties`)))return;let e=St(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(Dt(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Dt(`properties`))){let e=this.properties,t=[...bt(e),...xt(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(gt(e))}else e!==void 0&&t.push(gt(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return ht(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?Ot:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?Ot:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??kt)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}};jt.elementStyles=[],jt.shadowRootOptions={mode:`open`},jt[Dt(`elementProperties`)]=new Map,jt[Dt(`finalized`)]=new Map,Et?.({ReactiveElement:jt}),(Ct.reactiveElementVersions??=[]).push(`2.1.2`);var Mt=globalThis,Nt=e=>e,Pt=Mt.trustedTypes,Ft=Pt?Pt.createPolicy(`lit-html`,{createHTML:e=>e}):void 0,It=`$lit$`,Lt=`lit$${Math.random().toFixed(9).slice(2)}$`,Rt=`?`+Lt,zt=`<${Rt}>`,Bt=document,Vt=()=>Bt.createComment(``),Ht=e=>e===null||typeof e!=`object`&&typeof e!=`function`,Ut=Array.isArray,Wt=e=>Ut(e)||typeof e?.[Symbol.iterator]==`function`,Gt=`[
5
+ \f\r]`,Kt=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,qt=/-->/g,Jt=/>/g,Yt=RegExp(`>|${Gt}(?:([^\\s"'>=/]+)(${Gt}*=${Gt}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),Xt=/'/g,Zt=/"/g,Qt=/^(?:script|style|textarea|title)$/i,$t=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),O=$t(1),k=$t(2),en=Symbol.for(`lit-noChange`),A=Symbol.for(`lit-nothing`),tn=new WeakMap,nn=Bt.createTreeWalker(Bt,129);function rn(e,t){if(!Ut(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return Ft===void 0?t:Ft.createHTML(t)}var an=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=Kt;for(let t=0;t<n;t++){let n=e[t],s,c,l=-1,u=0;for(;u<n.length&&(o.lastIndex=u,c=o.exec(n),c!==null);)u=o.lastIndex,o===Kt?c[1]===`!--`?o=qt:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=Yt):(Qt.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=Yt):o=Jt:o===Yt?c[0]===`>`?(o=i??Kt,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?Yt:c[3]===`"`?Zt:Xt):o===Zt||o===Xt?o=Yt:o===qt||o===Jt?o=Kt:(o=Yt,i=void 0);let d=o===Yt&&e[t+1].startsWith(`/>`)?` `:``;a+=o===Kt?n+zt:l>=0?(r.push(s),n.slice(0,l)+It+n.slice(l)+Lt+d):n+Lt+(l===-2?t:d)}return[rn(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},on=class e{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0,s=t.length-1,c=this.parts,[l,u]=an(t,n);if(this.el=e.createElement(l,r),nn.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=nn.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(It)){let t=u[o++],n=i.getAttribute(e).split(Lt),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?dn:r[1]===`?`?fn:r[1]===`@`?pn:un}),i.removeAttribute(e)}else e.startsWith(Lt)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(Qt.test(i.tagName)){let e=i.textContent.split(Lt),t=e.length-1;if(t>0){i.textContent=Pt?Pt.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],Vt()),nn.nextNode(),c.push({type:2,index:++a});i.append(e[t],Vt())}}}else if(i.nodeType===8){if(i.data===Rt)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(Lt,e+1))!==-1;)c.push({type:7,index:a}),e+=Lt.length-1}}a++}}static createElement(e,t){let n=Bt.createElement(`template`);return n.innerHTML=e,n}};function sn(e,t,n=e,r){if(t===en)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=Ht(t)?void 0:t._$litDirective$;return i?.constructor!==a&&(i?._$AO?.(!1),a===void 0?i=void 0:(i=new a(e),i._$AT(e,n,r)),r===void 0?n._$Cl=i:(n._$Co??=[])[r]=i),i!==void 0&&(t=sn(e,i._$AS(e,t.values),i,r)),t}var cn=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??Bt).importNode(t,!0);nn.currentNode=r;let i=nn.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new ln(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new mn(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=nn.nextNode(),a++)}return nn.currentNode=Bt,r}p(e){let t=0;for(let n of this._$AV)n!==void 0&&(n.strings===void 0?n._$AI(e[t]):(n._$AI(e,n,t),t+=n.strings.length-2)),t++}},ln=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=A,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=sn(this,e,t),Ht(e)?e===A||e==null||e===``?(this._$AH!==A&&this._$AR(),this._$AH=A):e!==this._$AH&&e!==en&&this._(e):e._$litType$===void 0?e.nodeType===void 0?Wt(e)?this.k(e):this._(e):this.T(e):this.$(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==A&&Ht(this._$AH)?this._$AA.nextSibling.data=e:this.T(Bt.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:n}=e,r=typeof n==`number`?this._$AC(e):(n.el===void 0&&(n.el=on.createElement(rn(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new cn(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=tn.get(e.strings);return t===void 0&&tn.set(e.strings,t=new on(e)),t}k(t){Ut(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,r,i=0;for(let a of t)i===n.length?n.push(r=new e(this.O(Vt()),this.O(Vt()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=Nt(e).nextSibling;Nt(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},un=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=A,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=i,n.length>2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=A}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=sn(this,e,t,0),a=!Ht(e)||e!==this._$AH&&e!==en,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=sn(this,r[n+o],t,o),s===en&&(s=this._$AH[o]),a||=!Ht(s)||s!==this._$AH[o],s===A?e=A:e!==A&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===A?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},dn=class extends un{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===A?void 0:e}},fn=class extends un{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==A)}},pn=class extends un{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}_$AI(e,t=this){if((e=sn(this,e,t,0)??A)===en)return;let n=this._$AH,r=e===A&&n!==A||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==A&&(n===A||r);r&&this.element.removeEventListener(this.name,this,n),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH==`function`?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},mn=class{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){sn(this,e)}},hn={M:It,P:Lt,A:Rt,C:1,L:an,R:cn,D:Wt,V:sn,I:ln,H:un,N:fn,U:pn,B:dn,F:mn},gn=Mt.litHtmlPolyfillSupport;gn?.(on,ln),(Mt.litHtmlVersions??=[]).push(`3.3.3`);var _n=globalThis,j=class extends jt{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=((e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new ln(t.insertBefore(Vt(),e),e,void 0,n??{})}return i._$AI(e),i})(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return en}};j._$litElement$=!0,j.finalized=!0,_n.litElementHydrateSupport?.({LitElement:j});var vn=_n.litElementPolyfillSupport;vn?.({LitElement:j}),(_n.litElementVersions??=[]).push(`4.2.2`);var M=e=>(t,n)=>{n===void 0?customElements.define(e,t):n.addInitializer(()=>{customElements.define(e,t)})},yn={attribute:!0,type:String,converter:Ot,reflect:!1,hasChanged:kt},bn=(e=yn,t,n)=>{let{kind:r,metadata:i}=n,a=globalThis.litPropertyMetadata.get(i);if(a===void 0&&globalThis.litPropertyMetadata.set(i,a=new Map),r===`setter`&&((e=Object.create(e)).wrapped=!0),a.set(n.name,e),r===`accessor`){let{name:r}=n;return{set(n){let i=t.get.call(this);t.set.call(this,n),this.requestUpdate(r,i,e,!0,n)},init(t){return t!==void 0&&this.C(r,void 0,e,t),t}}}if(r===`setter`){let{name:r}=n;return function(n){let i=this[r];t.call(this,n),this.requestUpdate(r,i,e,!0,n)}}throw Error(`Unsupported decorator location: `+r)};function N(e){return(t,n)=>typeof n==`object`?bn(e,t,n):((e,t,n)=>{let r=t.hasOwnProperty(n);return t.constructor.createProperty(n,e),r?Object.getOwnPropertyDescriptor(t,n):void 0})(e,t,n)}function P(e){return N({...e,state:!0,attribute:!1})}var xn=(e,t,n)=>(n.configurable=!0,n.enumerable=!0,Reflect.decorate&&typeof t!=`object`&&Object.defineProperty(e,t,n),n);function Sn(e,t){return(n,r,i)=>{let a=t=>t.renderRoot?.querySelector(e)??null;if(t){let{get:e,set:t}=typeof r==`object`?n:i??(()=>{let e=Symbol();return{get(){return this[e]},set(t){this[e]=t}}})();return xn(n,r,{get(){let n=e.call(this);return n===void 0&&(n=a(this),(n!==null||this.hasUpdated)&&t.call(this,n)),n}})}return xn(n,r,{get(){return a(this)}})}}var Cn,wn=t({templates:()=>Tn}),Tn=function(e){let t=new Map;return new Proxy(e,{get(e,n){if(typeof n==`string`){if(!t.has(n)){let r;for(let t=1;t<=n.length&&r===void 0;t++){let i=n.slice(0,t);Object.hasOwn(e,i)&&(r=e[i])}t.set(n,r)}return t.get(n)}}})}({c:`実行`,d:`出力`,h0:O`JSON Lines(1 行ごとに JSON オブジェクト、スキーマ ${0})`,h5:O`${0} の出力`,h6:O`JSON オブジェクト(スキーマ ${0})`,h87:O`依存先タスク ${0}`,h8e:O`この実行には階層 <code>${0}</code> がありません`,ha:O`ファイルなし | Python コードで定義(<code>TaskAdapter</code>)`,hc:O`実行中 ${0}${1}`,hf:O`${0} の出力から`,"no-":`実行はまだありません`,non:`なし`,"outcome-d":`完了`,"outcome-p":`一部のみ完了`,s000:`実行履歴の未実行のタスク`,s00c:w`HTTP ステータス ${0}`,s02f7:`実行されず`,s02f9:w`アカウント: ${0}`,s030:w`カスタムビュー ${0} はありません`,s037:`完了`,s0382:w`${0}: ${1}`,s038b:`ページ`,s03b:`タブ`,s03e:`タスク`,s03f:w`古い試行 ${0} 件は非表示`,s042:`タスクが宣言したパターンの下で、試行が作成・変更・削除したファイル(changes)`,s044:w`一部のみ完了 ${0} 件`,s051:`実行中のエージェントのセッション`,s055:`選択中の項目`,s061:`OutputContract`,s062:`トランスクリプト`,s0668:`ユニットごとのステージとステップ(CursorStore)`,s066d:`出力`,s06a5:`Esc: 1 つ上の階層`,s06ac:`依存先`,s06b0:`実行中ではありません`,s06bf:`中を表示`,s077:`テキストフィルター(/)`,s079:w`キャッシュ ${0}`,s07d:`関数`,s07e:w`+${0}`,s087:w`${0}%`,s08b1:w`${0}(認証情報が休止中)`,s08b3:`いいえ`,s08c:`稼働中`,s08f:w`依存先: ${0}`,s0932:`出力の検証: OK`,s0935:`終了日`,s094:`最初のエージェントのセッションの前に終了`,s09b:`プロンプトなし`,s0b0:w`作成元: ${0}`,s0b2:`エージェントのセッション開始時のサブスクリプション利用率(アカウント全体)`,s0b3:`OK`,s0b7:`実行前からあるファイル`,s0bf:w`${0} 周目`,s0c:w`モデル切り替えのあったタスク ${0} 件`,s0d7:w`キャッシュ書き込み ${0}`,s0df:`依存先タスクが登録されなかった`,s0e6:`問題`,s0ea:`プラグインディレクトリ`,s0ef:`すべてのホスト`,s0f0:`一部省略`,s0f1:`リセット済み`,s0f2:w`最初の API 呼び出しの入力: ${0}`,s0f8:w`出力ファイル ${0} 件`,s103:`再開カーソル`,s104:`昇順に並べ替え`,s107:`種別の最初のタスクの開始時に記録(definitions/&lt;kind&gt;.json)`,s108:w`${0} の実装`,s114:w`${0} 型の JSON 値`,s115:`過去 24 時間`,s123:`待機中`,s125:w`要素 ${0} 個`,s12c:`型の不一致`,s13:w`最終報告 ${0}`,s14:`コーディングエージェントが報告した値`,s150:`出力`,s156:`なし(任意)`,s158:w`週の利用率 ${0}`,s159:`このタスクが代わりに出力ファイルを書く種別(output_of)`,s163:`検証対象のファイルなし`,s165:w`${0} 回目で完了 | 失敗 1 回`,s168:`検証のタイミング`,s170:w`実行されず ${0} 件`,s179:`アカウントごと、最初の値 → 最後の値`,s17d:`利用率のルール`,s17e:`書き込み待ち(タスクが待機中)`,s18:w`ループ内の ${0}`,s197:`利用できるモデルなし`,s19e:`上限: max_concurrent`,s1a2:w`スキップ ${0} 件`,s1a3:`種別 · ユニット`,s1a4:`モデルごとの、エージェントのセッションの使用量。モデル切り替えの前後は別々に集計(Plan.models)`,s1ac8:`エディタのテーマ`,s1acc:`書き込まれていない出力 1 件(タスクが未実行)`,s1b2:w`種別 ${0}`,s1bb:`すべてのタスクが開始済み`,s1bf:`実行中のプロセスなし`,s1c0:`パラメータ`,s1c2:`タスクが選択されていません`,s1c4:w`セッション開始時の利用率(アカウント全体): ${0}`,s1c7:`実行に登録されたすべてのタスク(種別ごと、plan.jsonl)`,s1cc:`実行中の Python タスク`,s1db:`API エラー`,s1dc:w`試行 ${0} 回`,s1dd:`実行中のタスクなし`,s1e9:w`プロンプト(${0} 文字、ほか ${1} 文字は未保存)`,s1eb:`入力`,s1f2:`削除`,s1f5:w`所要時間 ${0}`,s20e:w`リセットまで ${0}`,s20f9:`依存先タスクが実行されなかった`,s20fd:`ホストなし`,s217:`あり`,s21a:`発生したらリトライする例外(retry_on)`,s221:`JSON ではありません`,s224:`ツール実行中に中止`,s230:`スキーマにないフィールド`,s234:`終了した試行はまだありません`,s236:`拡大`,s23b:w`${0} 回の試行がすべて失敗: ${1}`,s23f:`定義はまだありません`,s24:w`完了 ${0}`,s25:`OutputContract・InputContract を宣言したタスクはありません`,s260:`API 呼び出し 1 回`,s26ba:`ユニットなし`,s26bb:`実行した試行の回数(リトライを含む、journal.jsonl)`,s26e:w`API 呼び出し ${0} 回`,s27a:`最後のメッセージから`,s27b:w`ユニット: ${0}`,s27d:`フローの構成`,s28a2:`リプレイ`,s28ad:`曜日と時刻ごと(期間のタイムゾーン)`,s28f:`InputContract`,s29:w`最大コンテキスト: ${0}`,s2a:`現在`,s2c8:`リトライ`,s2cd:`モデルの利用可否`,s2dd:`試行の結果(stop)`,s2df:`割合`,s2e3:w`ほかの出力 ${0} 件`,s2e4:`周`,s2f34:w`${0} 周`,s2f3c:`問題なし`,s2f4:`すべての出力`,s2f5:`定義なし`,s2fa:w`5 時間枠の利用率 ${0}(リセット ${1})`,s2fe3:`ツール`,s2fea:w`修正依頼 ${0}`,s31:`終了(未実行のタスク 1 件)`,s321:`余分なフィールド`,s326:w`キャッシュ読み込み ${0}`,s32d:`最大コンテキスト`,s33:`パイプラインの階層`,s343:`新しいイベント 1 件を表示`,s34b:`終了`,s34e:`降順に並べ替え`,s351:`終了した試行なし`,s352:`ファイル全体`,s355:`入力ファイルに検証エラー`,s366:`週`,s367:`料金`,s368:`コピー`,s36d:w`この書き出しに含まれないもの: ${0}`,s36e:w`所要時間 ${0}`,s3700:`Web 検索 1 回`,s370b:w`報告時刻 ${0}`,s378:`検証エラーの後に、同じエージェントのセッションで続けるラウンド(rounds)`,s37d:`スキーマ以外の検証(validators)`,s384:w`${0} を展開`,s387:w`検索結果 ${0} 件`,s38e65:`修正依頼のプロンプトに含めて送信`,s38e6a:`日ごとの料金`,s390:`JSON オブジェクトではありません`,s39e:`パイプライン`,s3a7:w`上限: ${0}`,s3aa:`出力ファイルなし`,s3b3:`プロセスツリー`,s3b9:w`${0} にモニター API がありません: ${1}`,s3bd:w`task_detail コールバックが失敗: ${0}`,s3c6:`実行した試行の回数`,s3cd:`実行中のエージェントのセッション 1 件`,s3d0:`エージェントのセッション`,s3d1:`概要`,s3d31:`利用できるモデルがなく、設定どおりのモデルで実行する種別(kept)`,s3d38:w`認証情報 ${0}`,s3d99:`検証エラー後の、同じエージェントのセッション`,s3d9b:`テキストファイル`,s3dd:`ネットワークエラーで応答なし`,s3f1:`各タスクが書き込むファイル`,s3f7:`修正依頼`,s3fd:`開始`,s407:w`${0}: 入力`,s408:`週の利用率`,s41:`Tab: 次のノード`,s42a:`フィールド`,s42c:`検証`,s438:`ハイライトを解除`,s43a:`入力ファイル`,s43e:`利用不可`,s451:`料金の高いタスク`,s454:w`${0} のループの各周`,s45d:w`${0}(カスタムビュー)`,s466:`モデル切り替えのあったタスク 1 件`,s467:w`1 周: ${0}`,s473:`キャッシュ読み込み`,s478:`検証対象のファイル(OutputContract、InputContract)`,s479:`締め切り`,s47a:w`このタスクの入力 ${0} 件`,s47b:`Python タスク`,s47c:`未対応のイベント`,s482:w`終了 ${0}`,s484:`テキストなし`,s48e:`所要時間`,s490:`モニターのサーバーに接続済み`,s491:w`${0} のループ`,s4a:w`${0} 日前`,s4d6:`検索結果 1 件`,s4d8:`モデル切り替え`,s4e7:w`修正依頼 ${0} 回で完了 | 最初の検証エラー: ${1}`,s4ef:`ループ`,s4f0a:`スキーマにない`,s4f0b:w`再開後に再実行: ${0}`,s4f9:w`ホスト ${0}`,s4fe:`エージェントタスク`,s501:w`${0}: ${1} → ${2}`,s504:`日付指定`,s5131:`そのモデルで始めたエージェントのセッションの数`,s5138:`入力・出力・キャッシュ読み込み・キャッシュ書き込みの合計`,s514:`実行が終了した`,s521:`1 ユニット`,s525b:`失敗の後の、次のモデルでの新しいエージェントのセッション(Router のホップ)`,s525c:`記録から再生した試行(replayed)`,s529:w`上限 ${0}`,s52b:`このバージョンの contraagent が対応していないイベント種別(unread_events)`,s52c7:`次の周`,s52cc:w`${0} の締め切りと仕上げの猶予を過ぎた`,s52cf:`カスタムビュー`,s535:`種別`,s53c5:w`${0}: 未実行`,s53c8:`不可`,s541:`開始できず`,s543:`プロンプト`,s552:w`フロー呼び出し ${0}`,s555:`プラグインディレクトリ`,s558:`認証情報の不一致`,s5590:`項目`,s559f:`その他のモデル`,s55f:w`${0}(${1})`,s566:w`(ほか ${0} 文字は未保存)`,s567:`未実行(依存先タスクが失敗)`,s568:w`後続タスク: ${0}`,s571:w`入力 ${0} がありません(${1} が未実行)`,s574:w`キャッシュ書き込み ${0}`,s585:w`入力 ${0} がありません(${1} が失敗)`,s587:w`${0} 以降報告なし`,s58b:`モデルの置き換え`,s58c:`実行履歴`,s591:`5 時間枠`,s594:w`修正依頼 ${0} 回`,s59e:`上限に接近`,s5a3:`休止中`,s5a7:`ツール`,s5ab:`並び順`,s5b9:`種別ごとのトークンと料金`,s5bd:`フロー呼び出しごとの締め切り(time_box)`,s5c7:`サービスなし`,s5cd:w`エージェントのセッション ${0} 回`,s5cf:`値なし`,s5d0:`実行中にこのタスクが占有する名前(claims)`,s5d4:w`${0} 回目で完了 | 失敗 ${1} 回`,s5da:`モデル`,s5de:`依存先タスク`,s5e3:`書き込みなし(タスクが未実行)`,s5e6:`テキスト(JSON 文字列)`,s5f2:`ロールなし`,s5f31:`エージェント・モデル・認証情報`,s5f34:`エラー`,s5f40:`行なし`,s5f43:`ソース`,s5f7:`なし(必須)`,s5f8:w`認証情報 ${0} は休止中`,s5ff:`エージェントタスク`,s601:`実行中`,s605:w`未実行の後続タスク ${0} 件`,s620:`キャッシュ書き込み`,s629:`任意`,s647:`応答が JSON ではなく HTML`,s649:`後続タスク`,s64f:`変更禁止の箇所`,s652:w`ロック ${0} 件`,s653:`締め切りを過ぎた`,s65c:`中断`,s6645:`拡大(Ctrl + スクロール)`,s6647:`ファイルなし`,s664b:`ツール呼び出しが戻る前に実行が終了`,s670:w`${0} ユニット`,s673:`停止でエラー`,s680:`タイムライン`,s685:`修正依頼`,s688:`その他の検証`,s68d:w`仕上げの猶予 ${0}`,s695:`修正依頼 1 回`,s699:w`スキーマ ${0}`,s6a0:`1 ステップ完了`,s6a8:w`入力 ${0} がありません(${1} が未完了)`,s6aa:`未実行(入力ファイルなし)`,s6b0:`ホスト`,s6b8:w`同時実行 ${0}/${1}`,s6b9:`タスクなし`,s6c3:`依存先タスクなし`,s6c7:`実行の開始時刻`,s6c8:w`依存先タスク ${0} が失敗`,s6d7:w`${1} タスク中 ${0} 件完了`,s6db:w`${0} 文字`,s6e4:`未選択`,s6eb:`読み込み中…`,s6f1:`API 呼び出し`,s6f2:`出力ファイル 1 件`,s6fa:`フロー呼び出しがエラーで終了`,s700:`書き出しに含まれない`,s703:w`${0} まで休止`,s706:`実行グループ`,s70a7:w`タスク終了後の利用率: ${0}`,s70af:`種別`,s71:w`モデル切り替え: ${0}`,s721:`ホストからの報告なし`,s7233:`古い試行 1 件は非表示`,s7239:w`修正依頼のあったタスク ${0} 件`,s72dc:`ユニットごとの周回数`,s72dd:`キャッシュ読み込み`,s734:`スタブエージェント`,s737:`ループの周回数`,s73d:`未実行の後続タスク 1 件`,s755:w`プラグイン ${0}`,s758:`エージェントのセッションなし`,s75e:`実行を検索`,s767:w`${0} モニター`,s76d:`カスタム列(row_extras)`,s76f:`原因`,s771:w`入力 ${0} は失敗したタスク ${1} の出力`,s77e:w`未実行 ${0} 件`,s786:`トランスクリプト`,s78f:`トークン`,s797:`すべての中を隠す`,s79a:w`未対応のイベント: ${0}`,s79f:w`5 時間枠の利用率 ${0}`,s7a1:`エラーで終了したフロー呼び出し 1 件`,s7a3:`出力ファイル`,s7a4:`権限エラー`,s7b16:`入力ファイルなし`,s7b1c:`修正依頼のあった試行`,s7b3:`検索に一致する実行なし`,s7bf:w`最初のエージェントのセッションの前に各モデルへ送る 1 回のリクエスト(preflight, policy ${0})`,s7c0:w`ホストからの報告なし ${0} 件`,s7c9:`フィルター`,s7cd8:`このタスクの入力 1 件`,s7cd9:`利用できるモデルがなく、最初に応答したモデルで実行する種別(substitute)`,s7cf:`応答が JSON ではない`,s7da:`最終報告`,s7df:w`終了(未実行のタスク ${0} 件)`,s7e:w`ロール ${0}`,s7f:`表示形式`,s803:`ファイル`,s807:`実行 1 件`,s80c:`1 行`,s816:`モデル切り替えなし`,s817:`変更したファイル 1 件`,s822:w`以前の試行のモデル: ${0}`,s826:`エージェントのセッションが使ったモデル`,s827:`認証情報が休止中`,s83:w`書き込み ${0}`,s841:`たった今`,s843:w`修正依頼 ${0} 回後`,s84f:`リトライ`,s8512:w`テーマ: ${0}`,s851d:`ファイルの値`,s859:`実行中`,s85e:w`${0}: モデル切り替え`,s863:w`入力 ${0} がありません`,s864:`全体を表示`,s868:w`${2} 年 ${0}〜${1} | ${3}`,s86c:w`ホスト ${0} 台`,s874:w`${0} ステップ完了`,s877:w`${0} 回目の失敗後の、新しいエージェントのセッション`,s87a:`実行されず`,s87b:w`モデル切り替え後に完了: ${0}`,s87c:`修正依頼 1 回後`,s880:`全試行の合計`,s888:`入力`,s88b:`表で表示`,s88e:w`修正依頼 ${0}`,s892:w`入力 ${0}(${1} の出力)がありません`,s89e:`パラメータなし`,s8a56:`なし`,s8a59:w`PID ${0}`,s8ab:`コーディングエージェント`,s8ad:`周回数`,s8ae:w`${0} の記録から再生したエージェントのセッションと、そこに記録した新しいセッション(replay, record_missing)`,s8b1:`リトライしたタスク`,s8b4:`同じロックを持つタスクが共有する常駐の補助プロセス(services.jsonl)`,s8bb:`終了したすべての試行から集計(journal.jsonl)`,s8c:w`${0} 分前`,s8d3:`コーディングエージェントが使ったアカウントまたは API キー(credential)`,s8d4:`PID`,s8dd:w`キャッシュ読み込み ${0}`,s8de:`再開後の実行での、新しいエージェントのセッション`,s8df:`オブジェクト`,s8e3:`アシスタント`,s8e6:`Python コードで定義`,s8e9:w`ほか ${0} アカウント`,s8ea:`Tab: 次の行`,s8f1:`選択を解除`,s8f2:`ユニット`,s8f4:`入力と出力(全試行の合計)`,s8f5:`未実行`,s8fa:`未実行(入力ファイルなし、入力ファイルに検証エラー)`,s8fc:w`修正依頼 1 回で完了 | 最初の検証エラー: ${0}`,s900:`ビュー`,s901:`完了したタスク`,s906:`Python タスク`,s90c:w`コンテキストの上限 ${1} の ${0}%`,s90e:`ほかの種別が実装する種別(base_kind)`,s90f:`認証エラー`,s914:w`最大 ${0} 周`,s915:w`モデル ${0} 種類`,s919:w`${0}d ${1}h`,s924:w`モデル ${0}`,s92a:w`依存先タスク ${0} 件の出力待ち`,s92b:w`5 時間枠 ${0}`,s934:`試行 1 回`,s936:`キュー内で同順位のタスクの順序を決める値(priority)`,s93e:`リプレイ`,s941:w`1 日あたり ${0}`,s949:`書き出しの期間`,s94d:`認証情報`,s94e:w`最終更新 ${0}`,s94f0:`実行中のタスク`,s94fd:w`${0} を折りたたむ`,s967:w`失敗 ${0} 件`,s96a:`コンテキストの上限`,s96c:w`出力 ${0}`,s97:w`修正依頼 ${0} 回で完了`,s980:`テキストフィルター`,s9893d9:w`利用率のルール: ${0}`,s9893de:`ホスト 1 台`,s98b:`グループ`,s98f:`入力ファイルなし`,s99:w`${0} 日間`,s9a2:`すべてのプロセス`,s9a4:w`失敗: ${0}`,s9a6:w`Web 検索 ${0} 回`,s9aa:`API 呼び出し 1 回あたりの入力の最大値。キャッシュ読み込みとキャッシュ書き込みを含む(peak_context)`,s9b1a6:`実行中ではありません`,s9b1a9:w`仕上げの種別: ${0}`,s9b3:`報告間隔`,s9b7:`書き込みなし(タスクが失敗)`,s9bd:w`${0} 回目で完了 | 失敗 ${1} 回 | 最初の失敗: ${2}`,s9c3:w`上限を超えた利用: ${0}`,s9c5:w`${0} の出力`,s9c7:`すべての中を表示`,s9cb:`実装する種別`,s9d3:w`${0} 時点の書き出し`,s9d6:`最終応答なしで終了`,s9de:`モデル`,s9e0:w`状態: ${0}`,s9e8:`未実行(入力ファイルに検証エラー)`,s9f0:w`入力 ${0}`,s9f2:`一部のみ完了`,s9f7:`エラー`,s9f92:w`${0} の内部`,s9f97:`料金の上限`,s9fb:`実行`,s9fd:`タスクの開始前からあるファイルも有効`,s9ff:`モデル切り替え`,sa0:`出力を待つ`,sa1:`リプレイした試行`,sa23:`ターン数の上限`,sa24:w`${0} の締め切りまでに終わらない`,sa31:`行を折り返す`,sa33:`後続タスクなし`,sa358:`ロール`,sa35c:`試行`,sa36:`モデル別の内訳`,sa39:w`実行中のエージェントのセッションの新しいイベント ${0} 件を表示`,sa3c:`形式`,sa3d3:w`週の利用率 ${0}(リセット ${1})`,sa3de:`停止`,sa3e:`アカウント全体の値 | エージェントのセッション開始時に取得`,sa3f:`各タスクが読み込むファイル`,sa43:`作成元`,sa48:`コマンドライン`,sa4f:w`最大 ${0} 回`,sa50:`折りたたむ`,sa57:`権限エラーになったツール呼び出し`,sa58:`周回数`,sa62:w`${0}: トランスクリプト`,sa66:w`前の ${0} 行を表示`,sa6a:`開始日`,sa70:`項目なし`,sa71:`期待する型`,sa74:`縮小(Ctrl + スクロール)`,sa81:`システム設定に合わせる`,sa84:w`新しいイベント ${0} 件を表示`,sa86:w`${0} 時間前`,sa87:`ソースを表示`,sa88:w`${0} の入れ子のループ`,sa8b:`Shift + 矢印キー: 依存先タスク・後続タスク`,sa9b:`タスク詳細`,sa9d:`報告なし`,saa0:`書き込み待ち(タスクが実行中)`,saa2:`理由`,saaa:`5 時間枠の利用率`,saab:`テーマ`,sab5:w`${0} 行目`,sabd:`思考`,sac1:`モニターのサーバーに未接続`,sac7:w`${0} に利用できるモデルなし`,saca:`期間内の実行の合計`,sacc:`可`,sad1:w`ほかに休止中の認証情報 ${0} 件`,sad3:`状態`,sad9:`API リクエストを再送`,sae5:`必須`,sae6:`実行履歴のリトライしたタスク`,saee:`プロセス`,saf2:`すべてのモデルが利用可能`,saf8:`変更したファイルなし`,safd:w`${0} 回目が失敗: ${1}`,sb05:`エラー`,sb06:`実行履歴の修正依頼のあった試行`,sb0c:`サブスクリプションの利用率`,sb0f:`Python タスク 1 回`,sb105:w`未実行: ${0}`,sb106:`検索語`,sb108:`作成、試行の失敗後に削除`,sb14:w`報告なし ${0} 台`,sb16:w`${0} 行`,sb1f:`前の 1 行を表示`,sb26a:`登録順`,sb26f:`表示中の階層の外`,sb27:`Enter: 開く`,sb28:`キャッシュ書き込み`,sb31:w`プロンプト(${0} 文字)`,sb34:w`変更したファイル ${0} 件`,sb38:`ツール呼び出し`,sb45:`リトライしたタスク 1 件`,sb4d:`トランスクリプトなし`,sb51:`パイプラインのプロセス内`,sb53:`はい`,sb55:`コーディングエージェントが報告した値`,sb59:w`コンテキストの上限に接近(${0}%)`,sb5a:`未実行`,sb6:`タスク実行中の書き込みが必須`,sb7:w`${0} に停止`,sb8:`エージェントのセッション 1 回`,sb94:w`5 時間枠(${0})`,sb97:`コンテキストの上限に接近`,sb98:w`${0}: 完了`,sb99:`トークンと料金`,sb9c:w`Python タスク: ${0}`,sba3:`1 周`,sba7:`ほかの出力 1 件`,sba8:`検証を通るファイルを書き込む前に、タスクが失敗`,sbaf:`要素 1 個`,sbb0:w`このバージョンの contraagent が対応していないイベント種別(unread_events): ${0}`,sbb2:`開始時の利用率`,sbb7:w`${1} タスク中 ${0} 件が未完了`,sbb9:`終了`,sbc6:w`${0} 周: ${1}`,sbc9:w`以前の試行のモデル: ${0}`,sbca:`タスクの開始時`,sbcc:`依存先タスクが失敗`,sbd4:`実行を切り替え(r)`,sbd5:`停止の記録なし`,sbd9:`再開後`,sbe2:`実行履歴の失敗した試行`,sbe4:w`${0} の記録から再生したエージェントのセッション(replay)`,sbe9:w`週(${0})`,sbea:`保存対象外(keep_transcripts = false)`,sbf18:`種別のロール`,sbf1d:w`ロック ${0}`,sbf2:`アクティビティなし`,sbf9:`スタブエージェントが台本どおりの応答で処理したタスク(stub)`,sc03:`それ以前`,sc07:`リトライ対象の例外`,sc15:`スキップ`,sc1a:w`待機中 ${0} 件`,sc1b:w`リトライしたタスク ${0} 件`,sc2:`ツール`,sc3:`この期間の実行はありません`,sc4:`タイムアウト`,sc53:`休止した認証情報`,sc54:w`${0} の締め切りを過ぎた`,sc57:w`入力 ${0} に検証エラー`,sc5b:`次のモデルでの新しいエージェントのセッション`,sc61:w`週 ${0}`,sc65:`縮小`,sc68:`日時`,sc6c:w`書き込まれていない出力 ${0} 件(タスクが未実行)`,sc6e:`締め切りまでに終わらない`,sc6f:w`エラーで終了したフロー呼び出し ${0} 件`,sc73:`開始`,sc75:w`全 ${1} 行のうち先頭 ${0} 行`,sc79:`タスク`,sc7d:`同時実行(上限)`,sc87a:w`警告のしきい値: ${0}`,sc87d:w`終了 ${0}`,sc92:`空き`,sc94:`全体`,sc97:`タイムゾーン`,sc9e:`その他`,sca4:`プロセスなし`,sca6:`プレビューを表示`,sca7:`ロール`,scb8:`終了(未完了のタスク 1 件)`,scb9:`最終試行の終了時刻`,scbd:`全文`,scca:w`最も高い種別: ${0}`,sccc:`モデルが応答を拒否`,scd2:w`${0}: ${1} → 次のモデル`,scd94:`エージェントの所要時間`,scd9c:w`優先度 ${0}`,scdb:`Esc: 選択を解除`,scde:`ループ`,scf41:w`完了 ${0} 件`,scf43:w`入力 ${0} は失敗したタスクの出力`,scf70:`レート制限`,scf71:`失敗した試行の後の試行(retries)`,sd05:w`締め切り ${0}`,sd0e:`出来事`,sd17:`入力 / 出力 | キャッシュ読み込み / キャッシュ書き込み`,sd1f:`ファイルの検証に使うスキーマ`,sd2:w`${0} 件を同時実行`,sd34:w`${0} に開始(${1})`,sd38:`変更`,sd3c:`登録済みのタスクなし`,sd3e:w`終了(未完了のタスク ${0} 件)`,sd4:`ローカルの認証情報(ambient)`,sd58:`終了(失敗したタスク 1 件)`,sd5a:`実行がシグナルで停止された`,sd5d:w`トークン: 入力 ${0}、出力 ${1}、キャッシュ読み込み ${2}、キャッシュ書き込み ${3}`,sd5e:`所要時間の合計`,sd73:`失敗`,sd744:`検証対象のファイル`,sd747:`なし(任意)`,sd75:`検証エラー`,sd776:w`全体の ${0}%`,sd77d:`実行中のエージェントのセッションの新しいイベント 1 件を表示`,sd79:`結果を受けて作成`,sd7d:w`入力 ${0}(${1} の出力)に検証エラー`,sd82:`タスクの開始前からあるファイルは無効`,sd8a:w`${0} まで`,sd93:w`依存先タスク ${0} の出力待ち`,sd95:w`一部のみ完了: ${0}`,sd96:`中を隠す`,sda2:w`セッション開始時の利用率: ${0}`,sda80:w`すべて表示(${0} 文字)`,sda8d:`最大コンテキストが警告のしきい値を超えた(context_warned)`,sdb1:`入力`,sdb4:`イベントが途絶えた`,sdb8:`出力に検証エラー`,sdc:w`実行グループ ${0}`,sdd1:`モニターから応答がありません`,sdd4:`モデル 1 種類`,sdd8:`修正依頼なし`,sddf:`ビューを表示`,sde:w`アカウント ${0}`,sdf1:w`${0} 回目で完了 | 失敗 1 回 | 最初の失敗: ${1}`,sdf4:`リトライなし`,sdf9:`リトライ後に完了`,se0e6:w`${0} から休止中`,se0ed:w`実行されず: ${0}`,se17:w`必要な時間 ${0}`,se1a:`作成`,se21:`指標`,se27:`タスクを実行した CLI(claude、omp)`,se2b:w`キー ${0} 個: ${1}`,se2c:w`期待する型: ${0}`,se3:`キーボードショートカット`,se41:`作成、試行の失敗後も保持`,se4b:`修正依頼のあったタスク 1 件`,se55:`エージェントのセッションの所要時間の合計`,se5a:`モデル切り替え`,se5b:`推移`,se5d:`monitor.Panel`,se60:`ハイコントラスト`,se61:`パイプラインのプロセス内の関数`,se66:`1 タスク`,se6d:`下の階層あり`,se71:w`${0} 回目`,se75:`リプレイと新しいセッション`,se90:`認証情報`,se99d:`ロック`,se99f:w`終了(失敗したタスク ${0} 件)`,sea2:`期間`,sea4:`定義`,sea6:`矢印キー: マーク`,sea74:w`${0} タスク`,sea7b:`実行の一覧`,seac:`待機中`,seb0:`グラフで表示`,seb2:`締め切りと仕上げの猶予を過ぎた`,seba:`既定`,sec2:`すべての種別`,sec7:`コーディングエージェントが使ったエージェント定義(agents/&lt;role&gt;.md)`,secc:`上限に到達`,secf:w`${0}の利用率 ${1}`,sed05:`コーディングエージェントが報告した料金(試行が終わった日に計上)`,sed0a:`タスクごとに 1 つ(Backend.run)`,sed7:`種別または関数`,sed8:`合計`,sede:`ステージなし`,seea0:`結果`,seea1:`ホスト ID なし`,seee1:`スキップ`,seee3:`完了しなかった試行`,sef0:w`実行中 ${0} 件`,sefc:`言語`,ser:`稼働中`,sf03:`所要時間の中央値`,sf06:w`タスクは ${0} 回目で完了`,sf08:`すべてのエージェントのセッションの合計(同時に実行した分も含む)`,sf11:`終了時刻`,sf14:`最初のエージェントのセッション`,sf26:w`実行 ${0} 件`,sf2b:`トークンの報告なし`,sf2c:`すべての試行が完了`,sf2d:w`関数 ${0}`,sf2e:`定義`,sf39:`周回数`,sf3c:`ほか 1 アカウント`,sf3e:`カスタムビュー`,sf46:w`${0} 周目`,sf48:`終了後の利用率`,sf4d:`コピー済み`,sf55:`サービス`,sf56:`試行の終了後に、同じアカウントで最初に報告された値`,sf5d:`ユニットごとではなく、実行ごとに 1 回実行されるタスク`,sf6:`フロー呼び出し`,sf7b:w`不明(${0})`,sf7d:w`残り ${0}`,sf7e:`すべての実行グループ`,sf8:w`休止 ${0} → ${1}`,sf93:`合計`,sf9b:`エージェントのセッションが始まらなかった`,sfa0:`テキスト`,sfa2:w`${0} 〜 ${1}`,sfa6:`フィルターに一致するタスクなし`,sfad:`修正依頼 1 回で完了`,sfae:`ホスト一覧`,sfb3:`実行を切り替え`,sfb6:w`実行中のエージェントのセッション ${0} 件`,sfbb:`失敗した試行`,sfc:`再開カーソルなし`,sfd3:w`リトライ後に完了 ${0} 件`,sfd5:w`要素 ${0} 個: ${1}`,sfd7:`出力`,sfd85:`タスクの前から変わらない出力ファイルの箇所(preserve)`,sfd8b:`各日の最大値`,sfdd:`プロセス`,sfde:`ファイルにない必須フィールド`,sfe7:w`${0}: 入力と出力`,sfe9:w`プロセス ${0}`,sff6:`登録済みのタスクはまだありません`,sff8:w`${0} のタスク`,sffa:`定義なし`,sfff:w`Python タスク ${0} 回`,stag:`完了`,stat:`状態`,"stop-c":`完了`,"stop-i":`未実行`,"stop-p":`一部のみ完了`,tab:`タスク`,tas:`タスク`,tok:`出力`,too:`完了`,"trends-p":`一部のみ完了`,"trends-r":`実行`,"view-g":`グラフ`,"view-o":`出力`,"view-t":`表`}),En=`en`,Dn=[`ja`],On=[`en`,`ja`],kn={en:`English`,ja:`日本語`},An={ja:()=>Promise.resolve(wn)};function jn(){if(Cn===void 0)try{Cn=ot({sourceLocale:En,targetLocales:Dn,loadLocale:e=>An[e]()})}catch{Cn=null}return Cn!==null}var F=()=>Cn?.getLocale()??En;async function Mn(e){jn()&&await Cn.setLocale(e)}var Nn=`contraagent:locale`,Pn=e=>On.includes(e);function Fn(){try{let e=globalThis.localStorage?.getItem(Nn);if(Pn(e))return e}catch{}for(let e of globalThis.navigator?.languages??[]){let t=e.toLowerCase().split(`-`)[0];if(Pn(t))return t}return En}async function In(e){try{globalThis.localStorage?.setItem(Nn,e)}catch{}await Mn(e)}var Ln=`contraagent`,Rn=null,zn=``,Bn=null,Vn=!1;function Hn(){let e=globalThis.history?.state;return e&&typeof e==`object`?e:{}}function Un(){let e=Hn()[Ln];return e&&typeof e==`object`?e:{}}function Wn(){Bn&&clearTimeout(Bn),Bn=null;let e=Rn;Rn=null,e&&globalThis.history&&Un().entry===zn&&history.replaceState({...Hn(),[Ln]:{...Un(),...e}},``)}function Gn(){Wn()}var Kn={recall:function(e){if(globalThis.history)return Rn&&zn===Un().entry&&e in Rn?Rn[e]:Un()[e]},remember:function(e,t){if(!globalThis.history)return;let n=function(){let e=Un().entry;if(e)return e;let t=Math.random().toString(36).slice(2);return history.replaceState({...Hn(),[Ln]:{...Un(),entry:t}},``),t}();Rn&&zn!==n&&(Rn=null),zn=n,(Rn??={})[e]=t,Bn??=setTimeout(Wn,200),Vn||(Vn=!0,globalThis.addEventListener?.(`pagehide`,Gn))}},qn=class{constructor(){this.values=new Map}recall(e){return this.values.get(e)}remember(e,t){this.values.set(e,t)}},Jn=new WeakMap;function Yn(e,t){t?Jn.set(e,t):Jn.delete(e)}function Xn(e){for(let t=e;t;t=t.parentNode??t.host){let e=Jn.get(t);if(e)return e}return Kn}var Zn=class{constructor(e,t){this.id=e,this.from=t,this.items=null}get memory(){return Xn(this.from)}get loaded(){return this.items??=new Set(this.memory.recall(this.id)??[])}has(e){return this.loaded.has(e)}set(e,t){let n=this.loaded;t!==n.has(e)&&(t?n.add(e):n.delete(e),this.memory.remember(this.id,[...n]))}values(){return[...this.loaded]}clear(){this.loaded.size&&(this.loaded.clear(),this.memory.remember(this.id,[]))}},Qn=class{constructor(e){this.id=e;let t=null;try{t=JSON.parse(globalThis.sessionStorage?.getItem(`${Ln}:${e}`)??`null`)}catch{}this.items=new Set(Array.isArray(t)?t.filter(e=>typeof e==`string`):[])}has(e){return this.items.has(e)}set(e,t){if(t!==this.items.has(e)){t?this.items.add(e):this.items.delete(e);try{globalThis.sessionStorage?.setItem(`${Ln}:${this.id}`,JSON.stringify([...this.items]))}catch{}}}},$n=[`wheel`,`touchstart`,`pointerdown`,`keydown`],er=class{constructor(e,t=()=>Kn){this.id=e,this.memory=t,this.el=null,this.frame=0,this.restoring=!1,this.cancel=()=>{if(cancelAnimationFrame(this.frame),this.frame=0,this.restoring){this.restoring=!1;for(let e of $n)this.el?.removeEventListener(e,this.cancel)}},this.onScroll=()=>{!this.restoring&&this.el&&this.memory().remember(this.id,Math.round(this.el.scrollTop))}}attach(e){this.el!==e&&(this.detach(),this.el=e,e.addEventListener(`scroll`,this.onScroll,{passive:!0}))}detach(){this.cancel(),this.el?.removeEventListener(`scroll`,this.onScroll),this.el=null}restore(){let e=this.el;if(!e)return;this.cancel();let t=this.memory().recall(this.id)??0;if(t<=0)return void(e.scrollTop=0);let n=performance.now()+6e3;this.restoring=!0;for(let t of $n)e.addEventListener(t,this.cancel,{passive:!0,once:!0});let r=()=>{let i=e.scrollHeight-e.clientHeight;if(e.scrollTop=Math.min(t,i),i>=t||performance.now()>n)return this.cancel();this.frame=requestAnimationFrame(r)};r()}reset(){this.cancel(),this.el&&(this.el.scrollTop=0)}},tr=[`overview`,`tasks`,`journal`,`outputs`,`definitions`,`procs`,`stream`],nr=[`transcript`,`input`,`output`,`definition`],rr=[7,14,30],ir={page:``,run:``,tab:`overview`,key:null,view:`transcript`,round:null,def:null,kind:``,stop:``,q:``,layer:``,unit:``,sel:``,days:14,from:``,to:``,tz:``,group:``,trendsTab:``},ar=e=>tr.includes(e)||/^panel:.+/.test(e),or=e=>nr.includes(e);function sr(e){let t=new URLSearchParams(e),n=t.get(`tab`)??``,r=t.get(`view`)??``,i=Number(t.get(`round`)),a=t.get(`page`)===`hosts`?`hosts`:t.get(`page`)===`trends`?`trends`:``,o=t.get(`from`)??``,s=t.get(`to`)??``,c=/^\d{4}-\d{2}-\d{2}$/.test(o)&&/^\d{4}-\d{2}-\d{2}$/.test(s),l=Number(t.get(`days`));return{page:a,run:a?``:t.get(`run`)??``,tab:a!==`trends`&&ar(n)?n:`overview`,key:t.get(`key`)||null,view:or(r)?r:`transcript`,round:Number.isInteger(i)&&i>0?i:null,def:t.get(`def`)||null,kind:t.get(`kind`)??``,stop:t.get(`stop`)??``,q:t.get(`q`)??``,layer:t.get(`layer`)??``,unit:t.get(`unit`)??``,sel:t.get(`sel`)??``,days:c?0:rr.includes(l)?l:ir.days,from:c?o:``,to:c?s:``,tz:t.get(`tz`)??``,group:t.get(`group`)??``,trendsTab:a===`trends`?t.get(`tab`)??``:``}}function cr(e){if(e.page===`hosts`)return`?page=hosts`;if(e.page===`trends`){let t=new URLSearchParams({page:`trends`});return e.days===0&&e.from&&e.to?(t.set(`from`,e.from),t.set(`to`,e.to)):e.days!==ir.days&&t.set(`days`,String(e.days)),e.tz&&t.set(`tz`,e.tz),e.group&&t.set(`group`,e.group),e.trendsTab&&t.set(`tab`,e.trendsTab),`?${t.toString()}`}let t=new URLSearchParams;e.run&&t.set(`run`,e.run),e.tab!==`overview`&&t.set(`tab`,e.tab),e.tab===`stream`&&(e.key&&t.set(`key`,e.key),e.view!==`transcript`&&t.set(`view`,e.view),e.round!=null&&t.set(`round`,String(e.round))),e.tab===`definitions`&&e.def&&t.set(`def`,e.def),e.tab===`overview`&&e.layer&&t.set(`layer`,e.layer),e.tab===`overview`&&e.unit&&t.set(`unit`,e.unit),e.tab===`overview`&&e.sel&&t.set(`sel`,e.sel);let n=e.tab===`tasks`||e.tab===`journal`;n&&e.kind&&t.set(`kind`,e.kind),e.tab===`journal`&&e.stop&&t.set(`stop`,e.stop),n&&e.q&&t.set(`q`,e.q);let r=t.toString();return r?`?${r}`:``}function lr(e,t){let n={...e,...t};return t.run!==void 0&&t.run!==e.run&&Object.assign(n,{key:null,def:null,round:null,layer:``,unit:``,sel:``,...t}),t.layer!==void 0&&t.layer!==e.layer&&t.sel===void 0&&(n.sel=``),t.key!==void 0&&t.key!==e.key&&(t.view===void 0&&(n.view=`transcript`),t.round===void 0&&(n.round=null)),n}function ur(e,t){let n=e=>cr({...e,kind:``,stop:``,q:``,unit:``,sel:``});return n(e)!==n(t)}var dr=class{constructor(e,t,n,r=()=>{}){this.mode=e,this.onChange=t,this.onLeave=r,this.onPop=()=>{this.current=sr(location.search),this.onChange(this.current,`pop`)};let i=sr(e===`url`?location.search:``);this.current=lr(i,n??{})}get viewRoute(){return this.current}start(){this.mode===`url`&&(history.scrollRestoration=`manual`,addEventListener(`popstate`,this.onPop)),this.onChange(this.current,`init`)}stop(){this.mode===`url`&&removeEventListener(`popstate`,this.onPop)}navigate(e,t={}){let n=lr(this.current,e);if(cr(n)===cr(this.current))return;let r=!t.replace&&ur(this.current,n);if(this.current=n,this.mode===`url`){let e=`${location.pathname}${cr(n)}${location.hash}`;r?(this.onLeave(),history.pushState({},``,e)):history.replaceState(history.state,``,e)}this.onChange(n,r?`push`:`replace`)}},fr=class{constructor(e,t){this.host=e,this.opts=t,this.ready=Promise.resolve(),e.addController(this)}hostConnected(){let e=this.opts.locale();this.ready=Mn(Pn(e)?e:Fn()).catch(()=>{})}hostUpdated(){let e=this.opts.locale();e!==this.seen&&(this.seen=e,Pn(e)&&e!==F()&&Mn(e)),this.opts.pageWide()&&(document.documentElement.lang=F()),this.host.lang=F()}},pr=class{constructor(e,t,n){this.host=e,this.onKey=t,this.scope=n,this.bound=null,this.boundScope=`off`,this.listener=e=>{let t=e;t.defaultPrevented||function(e){let t=e.composedPath()[0];return t instanceof HTMLElement&&(t.isContentEditable||t.matches(`input, select, textarea, [contenteditable]:not([contenteditable="false"])`))}(t)||t.metaKey||t.ctrlKey||t.altKey||this.onKey(t)},e.addController(this)}hostConnected(){this.bind()}hostUpdated(){this.scope()!==this.boundScope&&this.bind()}hostDisconnected(){this.unbind()}bind(){this.unbind();let e=this.scope();this.boundScope=e,this.bound=e===`page`?document:e===`element`?this.host:null,this.bound?.addEventListener(`keydown`,this.listener)}unbind(){this.bound?.removeEventListener(`keydown`,this.listener),this.bound=null,this.boundScope=`off`}},mr=[{name:`backdrop`,prop:`--ca-backdrop`},{name:`bg`,prop:`--ca-bg`},{name:`card`,prop:`--ca-card`},{name:`panel`,prop:`--ca-panel`},{name:`panel2`,prop:`--ca-panel2`},{name:`raise`,prop:`--ca-raise`},{name:`well`,prop:`--ca-well`},{name:`track`,prop:`--ca-track`},{name:`line`,prop:`--ca-line`},{name:`line2`,prop:`--ca-line2`},{name:`shadow`,prop:`--ca-shadow`},{name:`text`,prop:`--ca-text`},{name:`text-2`,prop:`--ca-text-secondary`},{name:`text-muted`,prop:`--ca-text-muted`},{name:`accent`,prop:`--ca-accent`},{name:`accent-bg`,prop:`--ca-accent-bg`,derive:`color-mix(in srgb, var(--accent) calc(var(--tint) + 1%), transparent)`},{name:`focus`,prop:`--ca-focus`},{name:`focus-width`,prop:`--ca-focus-width`},{name:`selection`,prop:`--ca-selection`},{name:`status-failed`,prop:`--ca-status-failed`},{name:`status-failed-bg`,prop:`--ca-status-failed-bg`,derive:`color-mix(in srgb, var(--status-failed) var(--tint), transparent)`},{name:`status-attention`,prop:`--ca-status-attention`},{name:`status-attention-bg`,prop:`--ca-status-attention-bg`,derive:`color-mix(in srgb, var(--status-attention) var(--tint), transparent)`},{name:`status-done`,prop:`--ca-status-done`},{name:`status-done-bg`,prop:`--ca-status-done-bg`,derive:`color-mix(in srgb, var(--status-done) var(--tint), transparent)`},{name:`status-running`,prop:`--ca-status-running`},{name:`status-running-bg`,prop:`--ca-status-running-bg`,derive:`color-mix(in srgb, var(--status-running) var(--tint), transparent)`},{name:`status-muted`,prop:`--ca-status-muted`},{name:`status-muted-bg`,prop:`--ca-status-muted-bg`,derive:`color-mix(in srgb, var(--status-muted) calc(var(--tint) - 1%), transparent)`},{name:`tint`,prop:`--ca-tint`},{name:`agent`,prop:`--ca-agent`},{name:`agent-bg`,prop:`--ca-agent-bg`,derive:`color-mix(in srgb, var(--agent) calc(var(--tint) + 2%), transparent)`},{name:`meter`,prop:`--ca-meter`},{name:`tok-input`,prop:`--ca-tok-input`},{name:`tok-cache-read`,prop:`--ca-tok-cache-read`},{name:`tok-cache-write`,prop:`--ca-tok-cache-write`},{name:`tok-output`,prop:`--ca-tok-output`},{name:`series-1`,prop:`--ca-series-1`},{name:`series-2`,prop:`--ca-series-2`},{name:`series-3`,prop:`--ca-series-3`},{name:`series-4`,prop:`--ca-series-4`},{name:`series-5`,prop:`--ca-series-5`},{name:`series-6`,prop:`--ca-series-6`},{name:`code-keyword`,prop:`--ca-code-keyword`},{name:`code-string`,prop:`--ca-code-string`},{name:`code-number`,prop:`--ca-code-number`},{name:`code-constant`,prop:`--ca-code-constant`},{name:`code-comment`,prop:`--ca-code-comment`},{name:`code-function`,prop:`--ca-code-function`},{name:`code-type`,prop:`--ca-code-type`},{name:`code-name`,prop:`--ca-code-name`},{name:`font-size-xs`,prop:`--ca-font-size-xs`,derive:`10px`},{name:`font-size-sm`,prop:`--ca-font-size-sm`,derive:`11px`},{name:`font-size-md`,prop:`--ca-font-size-md`,derive:`12px`},{name:`font-size-lg`,prop:`--ca-font-size-lg`,derive:`13px`},{name:`font-size-xl`,prop:`--ca-font-size-xl`,derive:`15px`},{name:`font-size-2xl`,prop:`--ca-font-size-2xl`,derive:`28px`},{name:`radius-sm`,prop:`--ca-radius-sm`,derive:`4px`},{name:`radius-md`,prop:`--ca-radius-md`,derive:`8px`},{name:`radius-lg`,prop:`--ca-radius-lg`,derive:`12px`},{name:`radius-pill`,prop:`--ca-radius-pill`,derive:`999px`}],hr=[`contraagent-dark`,`contraagent-light`,`github-dark`,`github-light`,`one-dark`,`nord`,`high-contrast`],gr=[`contraagent-dark`,`contraagent-light`,`system`,`github-dark`,`github-light`,`one-dark`,`nord`,`high-contrast`],_r=[`github-dark`,`github-light`,`one-dark`,`nord`,`high-contrast`],vr=`contraagent-dark`,yr={"contraagent-dark":{label:`contraagent Dark`,scheme:`dark`,tokens:{backdrop:`radial-gradient(1100px 520px at 8% -12%, #10203a 0%, transparent 62%), radial-gradient(900px 480px at 108% 4%, #1b1238 0%, transparent 58%), #060a11`,bg:`#060a11`,card:`#0f1724`,panel:`#0f1724`,panel2:`#142034`,raise:`#1a2740`,well:`#0a111c`,track:`#1b273b`,line:`#1d2940`,line2:`#2b3c58`,shadow:`#060a11`,text:`#e7edf5`,"text-2":`#bcc7d6`,"text-muted":`#909db2`,accent:`#7aa2ff`,focus:`#7aa2ff`,"focus-width":`2px`,selection:`#7aa2ff4d`,"status-failed":`#f87171`,"status-attention":`#fbbf24`,"status-done":`#34d399`,"status-running":`#22d3ee`,"status-muted":`#94a3b8`,tint:`13%`,agent:`#b597fb`,meter:`#7d8ba3`,"tok-input":`#7c86f5`,"tok-cache-read":`#3f4d63`,"tok-cache-write":`#8796ad`,"tok-output":`#d6b8ff`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#c4a5ff`,"code-string":`#7ee2a8`,"code-number":`#f5c26b`,"code-constant":`#ff9e64`,"code-comment":`#74839a`,"code-function":`#7dd3fc`,"code-type":`#ffd479`,"code-name":`#79b8ff`}},"contraagent-light":{label:`contraagent Light`,scheme:`light`,tokens:{backdrop:`radial-gradient(1100px 520px at 8% -12%, #dde7fb 0%, transparent 62%), radial-gradient(900px 480px at 108% 4%, #ebe3fa 0%, transparent 58%), #eef2f8`,bg:`#eef2f8`,card:`#ffffff`,panel:`#ffffff`,panel2:`#f7f9fc`,raise:`#e6ecf5`,well:`#f3f6fa`,track:`#e1e7f0`,line:`#d6dde8`,line2:`#b6c2d3`,shadow:`#0f172438`,text:`#0f1724`,"text-2":`#34415a`,"text-muted":`#556279`,accent:`#2f58d4`,focus:`#2f58d4`,"focus-width":`2px`,selection:`#2f58d42e`,"status-failed":`#b8132d`,"status-attention":`#6c4801`,"status-done":`#026b49`,"status-running":`#01525f`,"status-muted":`#56637a`,tint:`11%`,agent:`#6f45c0`,meter:`#8a97ab`,"tok-input":`#4d4cc8`,"tok-cache-read":`#cdd6e3`,"tok-cache-write":`#7d8aa0`,"tok-output":`#a07ad9`,"series-1":`#2a78d6`,"series-2":`#eb6834`,"series-3":`#1baf7a`,"series-4":`#eda100`,"series-5":`#e87ba4`,"series-6":`#008300`,"code-keyword":`#6f49a8`,"code-string":`#076b40`,"code-number":`#7b5605`,"code-constant":`#964605`,"code-comment":`#5d6b80`,"code-function":`#086586`,"code-type":`#785902`,"code-name":`#095ea8`}},"github-dark":{label:`GitHub Dark`,scheme:`dark`,tokens:{backdrop:`#010409`,bg:`#010409`,card:`#0d1117`,panel:`#0d1117`,panel2:`#151b23`,raise:`#212830`,well:`#010409`,track:`#262c36`,line:`#262c36`,line2:`#3d444d`,shadow:`#010409`,text:`#f0f6fc`,"text-2":`#d1d7e0`,"text-muted":`#9299a2`,accent:`#4796fb`,focus:`#1f6feb`,"focus-width":`2px`,selection:`#388bfd4d`,"status-failed":`#fc554d`,"status-attention":`#d29922`,"status-done":`#3fb950`,"status-running":`#39c5cf`,"status-muted":`#9198a1`,tint:`15%`,agent:`#ab7df8`,meter:`#656c76`,"tok-input":`#58a6ff`,"tok-cache-read":`#2f3742`,"tok-cache-write":`#656c76`,"tok-output":`#d2a8ff`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#ff7b72`,"code-string":`#a5d6ff`,"code-number":`#79c0ff`,"code-constant":`#79c0ff`,"code-comment":`#9198a1`,"code-function":`#d2a8ff`,"code-type":`#ffa657`,"code-name":`#7ee787`}},"github-light":{label:`GitHub Light`,scheme:`light`,tokens:{backdrop:`#f6f8fa`,bg:`#f6f8fa`,card:`#ffffff`,panel:`#ffffff`,panel2:`#ffffff`,raise:`#eff2f5`,well:`#f6f8fa`,track:`#e6eaef`,line:`#d1d9e0`,line2:`#b7c0ca`,shadow:`#1f232833`,text:`#1f2328`,"text-2":`#393f46`,"text-muted":`#59636e`,accent:`#0165d6`,focus:`#0165d6`,"focus-width":`2px`,selection:`#0969da33`,"status-failed":`#cd1e2b`,"status-attention":`#916103`,"status-done":`#147b33`,"status-running":`#10767d`,"status-muted":`#59636e`,tint:`8%`,agent:`#804ddc`,meter:`#818b98`,"tok-input":`#54aeff`,"tok-cache-read":`#d1d9e0`,"tok-cache-write":`#818b98`,"tok-output":`#a475f9`,"series-1":`#2a78d6`,"series-2":`#eb6834`,"series-3":`#1baf7a`,"series-4":`#eda100`,"series-5":`#e87ba4`,"series-6":`#008300`,"code-keyword":`#cf222e`,"code-string":`#0a3069`,"code-number":`#0550ae`,"code-constant":`#0550ae`,"code-comment":`#59636e`,"code-function":`#6639ba`,"code-type":`#953800`,"code-name":`#116329`}},"one-dark":{label:`One Dark`,scheme:`dark`,tokens:{backdrop:`#21252b`,bg:`#21252b`,card:`#282c34`,panel:`#282c34`,panel2:`#2c313a`,raise:`#2c313a`,well:`#21252b`,track:`#3a3f4b`,line:`#181a1f`,line2:`#4b5263`,shadow:`#0e1013`,text:`#d7dae0`,"text-2":`#abb2bf`,"text-muted":`#a7afbe`,accent:`#64b2f2`,focus:`#528bff`,"focus-width":`2px`,selection:`#3e4451`,"status-failed":`#fc858d`,"status-attention":`#e5c07b`,"status-done":`#98c379`,"status-running":`#57b7c3`,"status-muted":`#a7afbe`,tint:`12%`,agent:`#d788ee`,meter:`#5c6370`,"tok-input":`#61afef`,"tok-cache-read":`#3e4451`,"tok-cache-write":`#5c6370`,"tok-output":`#c678dd`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#c678dd`,"code-string":`#98c379`,"code-number":`#d19a66`,"code-constant":`#d19a66`,"code-comment":`#8f949e`,"code-function":`#61afef`,"code-type":`#e5c07b`,"code-name":`#e36e77`}},nord:{label:`Nord`,scheme:`dark`,tokens:{backdrop:`#2e3440`,bg:`#242933`,card:`#2e3440`,panel:`#2e3440`,panel2:`#323946`,raise:`#3b4252`,well:`#272c36`,track:`#3b4252`,line:`#3b4252`,line2:`#4c566a`,shadow:`#1d2129`,text:`#eceff4`,"text-2":`#d8dee9`,"text-muted":`#adbcd9`,accent:`#9dbedf`,focus:`#88c0d0`,"focus-width":`2px`,selection:`#4c566a`,"status-failed":`#fe9aa1`,"status-attention":`#ebcb8b`,"status-done":`#a5c18e`,"status-running":`#89c1d1`,"status-muted":`#adbcd9`,tint:`13%`,agent:`#d0a9c9`,meter:`#7b88a1`,"tok-input":`#5e81ac`,"tok-cache-read":`#4c566a`,"tok-cache-write":`#7b88a1`,"tok-output":`#b48ead`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#81a1c1`,"code-string":`#a3be8c`,"code-number":`#b790b0`,"code-constant":`#d38972`,"code-comment":`#8f9db8`,"code-function":`#88c0d0`,"code-type":`#8fbcbb`,"code-name":`#8fbcbb`}},"high-contrast":{label:`High contrast`,scheme:`dark`,tokens:{backdrop:`#010409`,bg:`#010409`,card:`#0a0c10`,panel:`#0a0c10`,panel2:`#0a0c10`,raise:`#1c2128`,well:`#010409`,track:`#272b33`,line:`#7a828e`,line2:`#9ea7b3`,shadow:`#000000`,text:`#ffffff`,"text-2":`#f0f3f6`,"text-muted":`#bdc4cc`,accent:`#7abbfe`,focus:`#7abbfe`,"focus-width":`3px`,selection:`#409eff66`,"status-failed":`#ffacb8`,"status-attention":`#fad209`,"status-done":`#0ef38e`,"status-running":`#62ceff`,"status-muted":`#bdc4cc`,tint:`12%`,agent:`#c299fe`,meter:`#9ea7b3`,"tok-input":`#409eff`,"tok-cache-read":`#525964`,"tok-cache-write":`#9ea7b3`,"tok-output":`#dbb7ff`,"series-1":`#3987e5`,"series-2":`#d95926`,"series-3":`#199e70`,"series-4":`#c98500`,"series-5":`#d55181`,"series-6":`#008300`,"code-keyword":`#ff9492`,"code-string":`#addcff`,"code-number":`#91cbff`,"code-constant":`#91cbff`,"code-comment":`#bdc4cc`,"code-function":`#dbb7ff`,"code-type":`#ffb757`,"code-name":`#72f088`}}},br=Object.fromEntries(mr.map(e=>[e.name,e.prop])),xr=e=>`:where([data-ca-theme="${e}"])`;function Sr(e=xr){return hr.map(t=>{let n=yr[t],r=Object.entries(n.tokens).map(([e,t])=>`${br[e]}: ${t};`);return`${e(t)} { color-scheme: ${n.scheme}; --ca-color-scheme: ${n.scheme}; ${r.join(` `)} }`}).join(`
6
+ `)}var Cr=e=>gr.includes(e);function wr(e,t){return e===`system`?t?`contraagent-light`:`contraagent-dark`:(e=>hr.includes(e))(e)?e:vr}var Tr=`contraagent:theme`,Er=()=>{try{return globalThis.localStorage}catch{return}},Dr=mt(Sr()),Or=mt(Sr(e=>`:host([data-ca-theme="${e}"])`)),kr=new WeakSet,Ar=class{constructor(e,t){this.host=e,this.opts=t,this.light=globalThis.matchMedia?.(`(prefers-color-scheme: light)`).matches??!1,this.stop=null,e.addController(this)}get choice(){let e=this.opts.theme();return Cr(e)?e:function(e=Er()){try{let t=e?.getItem(Tr);if(Cr(t))return t}catch{}return vr}()}get shown(){return wr(this.choice,this.light)}get system(){return wr(`system`,this.light)}hostConnected(){this.apply();let e=globalThis.matchMedia?.(`(prefers-color-scheme: light)`);if(!e)return;let t=e=>{this.light=e.matches,this.host.requestUpdate()};e.addEventListener(`change`,t),this.stop=()=>e.removeEventListener(`change`,t)}hostDisconnected(){this.stop?.(),this.stop=null}hostUpdated(){this.apply()}apply(){let e=this.shown;this.host.getAttribute(`data-ca-theme`)!==e&&this.host.setAttribute(`data-ca-theme`,e),this.opts.pageWide()&&document.documentElement.getAttribute(`data-ca-theme`)!==e&&document.documentElement.setAttribute(`data-ca-theme`,e)}},I=e=>e&&e!==`neutral`?e:A;function L(e,t,n){return e.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0,composed:!0}))}function jr(e,t){let n={...e};if(t)for(let[e,r]of Object.entries(t))r!==void 0&&(n[e]=r);return n}function R(e,t){customElements.get(e)||customElements.define(e,t)}function z(e){if(e==null||Number.isNaN(e))return`—`;let t=Math.max(0,e);if(t<.05)return`<0.1s`;if(t<9.95)return`${t.toFixed(1)}s`;let n=Math.round(t);return n<60?`${n}s`:n<3600?`${Math.floor(n/60)}m ${String(n%60).padStart(2,`0`)}s`:`${Math.floor(n/3600)}h ${String(Math.floor(n%3600/60)).padStart(2,`0`)}m`}var Mr=e=>String(e??``).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`),Nr=new Set,Pr=null;function Fr(){for(let e of Nr)e.requestUpdate()}var Ir=class{constructor(e){this.host=e,e.addController(this)}hostConnected(){Nr.add(this.host),Pr??=setInterval(Fr,1e3)}hostDisconnected(){Nr.delete(this.host),!Nr.size&&Pr&&(clearInterval(Pr),Pr=null)}},Lr=new class{constructor(){this.seen=new Map}at(e,t,n=Date.now()){let r=Math.round(n-1e3*t),i=this.seen.get(e);return i!==void 0&&Math.abs(i-r)<5e3?i:(this.seen.set(e,r),r)}},Rr=D` .tag{font-size:var(--font-size-xs);padding:0 7px;border-radius:var(--radius-pill);border:1px solid var(--line2);color:var(--text-muted);white-space:nowrap;}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}.chip{font-size:var(--font-size-sm);padding:1px 8px;border-radius:var(--radius-pill);border:1px solid var(--line);color:var(--text-muted);white-space:nowrap;}.chip[data-tone='done']{color:var(--text-2);}.chip[data-tone='done']>[aria-hidden]{color:var(--tone);font-weight:700;}.chip[data-tone='running']{background:var(--tone);color:var(--bg);border-color:var(--tone);font-weight:600;animation:ping 1.6s var(--ease) infinite;}.chip.todo{opacity:0.65;}.taskchip{display:inline-block;font:inherit;font-family:var(--mono);font-size:var(--font-size-sm);line-height:1.5;padding:0 8px;border-radius:var(--radius-pill);border:1px solid var(--line);background:var(--raise);color:var(--text-2);white-space:nowrap;}button.taskchip{cursor:pointer;}button.taskchip:hover{border-color:var(--accent);color:var(--text);}.kbd{font-family:var(--mono);font-size:var(--font-size-xs);border:1px solid var(--line2);border-bottom-width:2px;border-radius:var(--radius-sm);padding:0 4px;color:var(--text-muted);}`,zr=D` .g12{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px;container-type:inline-size;}.c12{grid-column:span 12;}.c7{grid-column:span 7;}.c5{grid-column:span 5;}@container (max-width:1100px){.c7,.c5{grid-column:span 12;}}.panel{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:var(--radius-lg);padding:14px 16px;min-width:0;box-shadow:0 10px 28px color-mix(in srgb,var(--shadow) 40%,transparent);}.panel>h3{margin:0 0 12px;display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;color:var(--text-2);}.panel>h3 .r{margin-left:auto;font-weight:400;font-size:11.5px;color:var(--text-muted);}.sect-h{margin:14px 0 8px;font-size:var(--font-size-md);color:var(--text-2);font-weight:600;}.sect-h .meta{margin-left:8px;font-weight:400;}.blank{display:flex;flex-direction:column;align-items:center;gap:8px;padding:60px 16px;color:var(--text-muted);text-align:center;}.blank .ic{font-size:30px;opacity:0.55;}.blank b{color:var(--text-2);font-weight:600;}.blank a.lnk{text-decoration:underline;}.blank.small{padding:24px;}.fl{padding:7px 10px;border-radius:var(--radius-md);cursor:pointer;display:grid;grid-template-columns:auto 1fr auto;gap:2px 10px;align-items:baseline;}button.fl{width:100%;background:none;border:0;color:inherit;text-align:start;}.fl-name{background:none;border:0;padding:0;color:inherit;font-weight:700;text-align:start;cursor:pointer;min-width:0;}.fl>.meta:last-child{grid-column:1 / 4;overflow:hidden;text-overflow:ellipsis;}.fl:hover{background:var(--raise);}`,Br=D` .enter{animation:enter 0.5s var(--ease) both;}@keyframes turn{to{transform:rotate(360deg);}}@keyframes breathe{0%,100%{opacity:0.45;box-shadow:0 0 0 0 transparent;transform:scale(0.85);}50%{opacity:1;box-shadow:0 0 0 4px var(--status-running-bg);transform:scale(1);}}@keyframes ping{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--status-running) 55%,transparent);}80%,100%{box-shadow:0 0 0 9px transparent;}}@keyframes enter{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}@keyframes bump{0%{transform:scale(1);}35%{transform:scale(1.04);box-shadow:0 0 0 1px var(--line2);}100%{transform:scale(1);}}@keyframes scan{from{transform:translateX(-100%);}to{transform:translateX(100%);}}@keyframes growx{from{transform:scaleX(0);}to{transform:scaleX(1);}}@keyframes stripes{to{background-position:17px 0;}}@keyframes toast-in{from{opacity:0;transform:translateY(12px) scale(0.97);}to{opacity:1;transform:none;}}@keyframes toast-out{to{opacity:0;transform:translateX(24px);}}@keyframes rowin{from{background:color-mix(in srgb,var(--text) 10%,transparent);}to{background:transparent;}}@keyframes bounce{0%,80%,100%{transform:translateY(0);opacity:0.45;}40%{transform:translateY(-5px);opacity:1;}}@keyframes core-beat{0%,100%{transform:scale(1);}50%{transform:scale(0.72);}}@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none !important;transition:none !important;}}`,Vr=D` *,*::before,*::after{box-sizing:border-box;}*{scrollbar-width:thin;scrollbar-color:var(--line2) transparent;}*:hover{scrollbar-color:var(--text-muted) transparent;}::selection{background:var(--selection);}:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:2px;}button{font:inherit;color:inherit;}[hidden]{display:none !important;}`,Hr=D` [data-tone='failed']{--tone:var(--status-failed);--tone-bg:var(--status-failed-bg);}[data-tone='attention']{--tone:var(--status-attention);--tone-bg:var(--status-attention-bg);}[data-tone='done']{--tone:var(--status-done);--tone-bg:var(--status-done-bg);}[data-tone='running']{--tone:var(--status-running);--tone-bg:var(--status-running-bg);}[data-tone='muted']{--tone:var(--status-muted);--tone-bg:var(--status-muted-bg);}[data-mark]::before{margin-right:0.35em;font-weight:700;}[data-mark='done']::before{content:'✓';content:'✓' / '';color:var(--status-done);}[data-mark='failed']::before{content:'✕';content:'✕' / '';}[data-mark='pending']::before{content:'◌';content:'◌' / '';}.tone-text[data-tone]{color:var(--tone);}.pill{border-radius:var(--radius-pill);padding:1px 10px;font-size:var(--font-size-sm);font-weight:500;background:var(--raise);color:var(--text-2);white-space:nowrap;}.pill[data-tone]{background:var(--tone-bg);color:var(--tone);}.pill[data-tone='done']{background:none;padding-left:2px;color:var(--text-2);}.jstop{font-weight:600;}.jstop[data-tone='failed'],.jstop[data-tone='attention']{color:var(--tone);}.jstop[data-tone='done']{color:var(--text-2);font-weight:500;}.dot{width:8px;height:8px;border-radius:50%;background:var(--line2);flex:none;display:inline-block;}.dot[data-tone]{background:var(--tone);}.dot[data-tone='running']{animation:breathe 1.8s ease-in-out infinite;}.dot[data-tone='attention']{border-radius:1px;transform:rotate(45deg) scale(0.86);}.dot[data-tone='failed']{border-radius:1.5px;}.spin{width:14px;height:14px;border-radius:50%;border:2px solid var(--status-running-bg);border-top-color:var(--status-running);animation:turn 0.9s linear infinite;flex:none;display:inline-block;}`,Ur=D` .jmono,code,.mono{font-family:var(--mono);}.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}.jmono{font-size:11.5px;}.meta{color:var(--text-muted);font-size:var(--font-size-sm);}.words{word-break:keep-all;overflow-wrap:break-word;line-break:strict;}.words .f{display:inline-block;max-width:100%;}@supports (word-break:auto-phrase){.words:lang(ja){word-break:auto-phrase;}}.mut,.jdim{color:var(--text-muted);}a.lnk{color:var(--accent);cursor:pointer;text-decoration:none;}a.lnk:hover{text-decoration:underline;}`,Wr=yr[vr].tokens,Gr=D` :host{${mt(mr.map(e=>e.derive?`--${e.name}: var(${e.prop}, ${e.derive});`:`--${e.name}: var(${e.prop}, ${Wr[e.name]});`).join(`
7
+ `))} --sans:var(--ca-sans,system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif);--mono:var(--ca-mono,ui-monospace,SFMono-Regular,Menlo,Consolas,'Liberation Mono',monospace);--ease:cubic-bezier(0.2,0.8,0.2,1);color-scheme:var(--ca-color-scheme,${mt(yr[vr].scheme)});color:var(--text);}:host([hidden]){display:none !important;}`,Kr=D` .jtree{font-family:var(--mono);font-size:var(--font-size-md);overflow:auto;}.jt{margin-left:16px;}details.jt>summary{cursor:pointer;list-style:revert;}.jk{color:var(--code-name);}.js{color:var(--code-string);}.jn{color:var(--code-number);}.md-p{margin:0.15em 0;}.md-gap{height:0.5em;}.md-h{font-weight:600;margin:0.7em 0 0.25em;}.md-h1{font-size:1.25em;}.md-h2{font-size:1.12em;}.md-h3{font-size:1.03em;color:var(--text-2);}.md-h4{color:var(--text-2);}.md-li{padding-left:16px;text-indent:-12px;margin:0.1em 0;}.md-li::before{content:'• ';color:var(--text-muted);}.md-ol::before{content:'';}.md-n{color:var(--text-muted);margin-right:6px;}.md-q{border-left:3px solid var(--line2);padding-left:10px;color:var(--text-2);margin:0.2em 0;}.md-hr{border:0;border-top:1px solid var(--line);margin:0.7em 0;}.md-t{border-collapse:collapse;margin:0.4em 0;}.md-t th,.md-t td{border:1px solid var(--line);padding:3px 9px;text-align:left;font-size:12.5px;}.md-t th{background:var(--raise);}.md-doc{padding:10px 14px;background:var(--well);border:1px solid var(--line);border-radius:var(--radius-md);max-height:460px;overflow:auto;line-height:1.55;}.md-doc code,.tx code{background:var(--raise);border-radius:var(--radius-sm);padding:0 4px;font-size:0.92em;}.md-doc pre{background:var(--well);border:1px solid var(--line);border-radius:6px;padding:8px 10px;white-space:pre-wrap;}.md-doc pre code,.tx pre code{background:none;padding:0;border-radius:0;font-size:inherit;}.md-front{margin-bottom:10px;border-collapse:collapse;}.md-front td{padding:2px 14px 2px 0;font-size:12.5px;border:0;vertical-align:top;}.md-front td:first-child{color:var(--text-muted);}.md-tele{color:var(--text-muted);font-size:11.5px;margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.df-text{background:var(--well);border:1px solid var(--line);border-radius:var(--radius-md);padding:10px 12px;font-size:var(--font-size-md);white-space:pre-wrap;max-height:420px;overflow:auto;margin:0;}.df-tog{margin-left:auto;font-size:var(--font-size-sm);color:var(--accent);border:1px solid var(--line2);border-radius:var(--radius-pill);padding:0 9px;cursor:pointer;background:none;}.df-tog:hover{background:var(--accent-bg);}.pv{color:var(--code-constant);background:color-mix(in srgb,var(--code-constant) 12%,transparent);border-radius:var(--radius-sm);padding:0 3px;}.pv.pc{color:var(--code-keyword);background:color-mix(in srgb,var(--code-keyword) 12%,transparent);}.hl{font-family:var(--mono);}.hl-k{color:var(--code-keyword);}.hl-const{color:var(--code-constant);font-style:italic;}.hl-s{color:var(--code-string);}.hl-doc{color:var(--code-string);font-style:italic;opacity:0.85;}.hl-c{color:var(--code-comment);font-style:italic;}.hl-n{color:var(--code-number);}.hl-d{color:var(--code-function);}.hl-f{color:var(--code-function);font-weight:600;}.hl-cls{color:var(--code-type);font-weight:700;}.hl-t{color:var(--code-type);}.hl-b{color:var(--code-name);}.hl-key{color:var(--code-name);}.hl-tag{color:var(--code-keyword);}.hl-attr{color:var(--code-name);}.hl-meta{color:var(--code-comment);font-weight:600;}.hl-ins{color:var(--status-done);}.hl-del{color:var(--status-failed);}`,qr=D` .jdur{position:relative;display:block;height:6px;border-radius:3px;background:var(--track);overflow:hidden;margin-top:2px;}.jdur i{position:absolute;left:0;top:0;bottom:0;border-radius:3px;background:var(--meter);}.jdur i.bad{background:var(--status-failed);}`,Jr=D` .drv-facts{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px;font-size:var(--font-size-md);}.drv-facts i{font-style:normal;color:var(--text-muted);margin-right:5px;font-size:var(--font-size-sm);}`,Yr=D` .mark{width:var(--m);height:var(--m);padding:0;margin:0;border:0;border-radius:50%;background:var(--tone,var(--status-done));opacity:0.9;cursor:pointer;position:relative;transition:opacity 0.2s,transform 0.15s,background 0.3s;}.mark:not([data-tone]){--tone:initial;}.mark[data-tone='muted']{opacity:0.55;}.mark[data-tone='running']{opacity:1;animation:breathe 1.4s ease-in-out infinite;}.mark[data-shape='ring']{background:transparent;box-shadow:inset 0 0 0 1.5px var(--tone,var(--line2));}.mark[data-shape='hatched']{border-radius:2px;background:repeating-linear-gradient(135deg,transparent 0 2px,color-mix(in srgb,var(--tone) 55%,transparent) 2px 3px);box-shadow:inset 0 0 0 1.5px var(--tone);opacity:1;}.mark[data-shape='half']{background:linear-gradient(0deg,var(--tone) 50%,transparent 50%);box-shadow:inset 0 0 0 1.5px var(--tone);opacity:1;}.mark[data-shape='square']{border-radius:2px;opacity:1;}.big .mark[data-tone='failed']::after{content:'✕';position:absolute;inset:0;display:grid;place-items:center;color:var(--bg);font-size:calc(var(--m) - 3px);line-height:1;font-weight:700;}.mark[data-n]::after{content:'';position:absolute;inset:32%;border-radius:50%;background:var(--card);}.big .mark[data-n]::after{content:attr(data-n);inset:0;display:grid;place-items:center;border-radius:0;background:none;font:700 max(7px,calc(var(--m) - 4px)) / 1 var(--sans);color:var(--bg);letter-spacing:-0.5px;}.big .mark:is(:not([data-tone]),[data-tone='attention'],[data-tone='muted'])[data-n]::after{color:var(--text);}.mark:hover,.mark:focus-visible{transform:scale(1.4);outline:var(--focus-width) solid var(--text);outline-offset:1px;z-index:2;}.mark.sel{outline:var(--focus-width) solid var(--accent);outline-offset:2px;z-index:2;}@media (prefers-reduced-motion:reduce){.mark{transition:none;}.mark[data-tone='running']{animation:none;background:linear-gradient(90deg,var(--status-running) 50%,transparent 50%);box-shadow:inset 0 0 0 1.5px var(--status-running);}}`,B=[Gr,Vr,Ur,Hr,Rr,zr,Br];function Xr(e){switch(e){case`done`:return`done`;case`failed`:return`failed`;case`attention`:return`pending`;default:return null}}var Zr=e=>(e.mark===void 0||!0===e.mark?Xr(e.tone??`neutral`):e.mark||null)??A;function Qr(e){let t=e.tone??`neutral`;return O`<span class="pill ${e.cls??``}" part="pill tone-${t}" data-tone=${I(t)} data-mark=${Zr(e)} title=${e.title||A}>${e.text}</span>`}function $r(e){let t=e.tone??`neutral`;return O`<span class="jstop ${e.cls??``}" part="status tone-${t}" data-tone=${I(t)} data-mark=${Zr(e)} title=${e.title||A}>${e.text}</span>`}function ei(e,t){let n=t.tone??`neutral`;return O`<span class="${e} ${t.cls??``}" data-tone=${I(n)} data-mark=${Zr(t)} title=${t.title||A}>${t.text}</span>`}var ti=e=>(...t)=>({_$litDirective$:e,values:t}),ni=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,n){this._$Ct=e,this._$AM=t,this._$Ci=n}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}},ri=`important`,ii=` !`+ri,ai=ti(class extends ni{constructor(e){if(super(e),e.type!==1||e.name!==`style`||e.strings?.length>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(e){return Object.keys(e).reduce((t,n)=>{let r=e[n];return r==null?t:t+`${n=n.includes(`-`)?n:n.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,`-$&`).toLowerCase()}:${r};`},``)}update(e,[t]){let{style:n}=e.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(t)),this.render(t);for(let e of this.ft)t[e]??(this.ft.delete(e),e.includes(`-`)?n.removeProperty(e):n[e]=null);for(let e in t){let r=t[e];if(r!=null){this.ft.add(e);let t=typeof r==`string`&&r.endsWith(ii);e.includes(`-`)||t?n.setProperty(e,t?r.slice(0,-11):r,t?ri:``):n[e]=r}}return en}});function oi(e,t={}){return O`<div class="legend ${t.cls??``}" part="legend" role="list" aria-label=${t.label||A}>
8
+ ${e.map(e=>O`<span role="listitem" aria-hidden=${e.decorative?`true`:A}>${(e=>e.icon??(e.swatch||e.tone||e.shape||e.cls?O`<i class=${e.cls||A} data-tone=${I(e.tone)} data-shape=${e.shape??A} style=${e.swatch?ai({background:e.swatch}):A}></i>`:A))(e)}${e.label}</span>`)}
9
+ </div>`}var si=D` .legend{display:flex;gap:14px;flex-wrap:wrap;font-size:var(--font-size-sm);color:var(--text-muted);}.legend>span{white-space:nowrap;}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px;}.legend i[data-tone]{background:var(--tone);}.legend i[data-shape='round']{border-radius:50%;}.legend i[data-shape='square']{border-radius:2px;}.legend i[data-shape='ring']{background:none;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--tone,var(--line2));}.legend i[data-shape='half']{border-radius:50%;background:linear-gradient(0deg,var(--tone,var(--line2)) 50%,transparent 50%);box-shadow:inset 0 0 0 1.5px var(--tone,var(--line2));}.legend i[data-shape='hatched']{border-radius:2px;background:repeating-linear-gradient(135deg,transparent 0 2px,var(--tone,var(--line2)) 2px 3px);}`;function ci(e){let t=e.reduce((e,t)=>e+Math.max(t,0),0);if(!t)return e.map(()=>0);let n=e.map(e=>100*Math.max(e,0)/t),r=n.map(Math.floor),i=n.map((e,t)=>[e-Math.floor(e),t]).sort((e,t)=>t[0]-e[0]||e[1]-t[1]);for(let e=0,t=100-r.reduce((e,t)=>e+t,0);e<t;e++)r[i[e][1]]+=1;return r}var li=(e,t)=>e===0&&t>0?`<1%`:`${e}%`,ui=D` .share{display:grid;gap:6px;}.share-bar,.share-names{display:flex;gap:2px;min-width:0;}.share-bar{height:14px;}.share-seg{position:relative;flex:0 1 0;min-width:3px;height:100%;border-radius:1px;cursor:default;outline-offset:2px;}.share-seg[data-edge='start']{border-radius:4px 1px 1px 4px;}.share-seg[data-edge='end']{border-radius:1px 4px 4px 1px;}.share-seg:only-child{border-radius:4px;}.share-seg::before{content:'';position:absolute;inset:-6px 0;}.share-seg:hover,.share-seg:focus-visible{box-shadow:0 0 0 2px var(--card);}.share-tip{display:none;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);z-index:2;padding:4px 8px;border-radius:var(--radius-sm);background:var(--raise);border:1px solid var(--line2);box-shadow:0 4px 14px var(--shadow);color:var(--text);font-size:var(--font-size-sm);white-space:nowrap;pointer-events:none;}.share-seg[data-edge='start'] .share-tip,.share-seg:only-child .share-tip{left:0;transform:none;}.share-seg[data-edge='end'] .share-tip{left:auto;right:0;transform:none;}.share-seg:hover .share-tip,.share-seg:focus-visible .share-tip{display:block;}.share-names span{flex:0 1 0;min-width:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--font-size-sm);color:var(--text-muted);font-variant-numeric:tabular-nums;}.share-names b{font-weight:600;color:var(--text-2);}`,di=(e,t,n)=>e[t]?.count?.(n)??`${n} ${e[t]?.label??t}`;function fi(e,t=` | `){let n=e.filter(e=>typeof e==`string`?e:e.text);return n.length?O`${n.map((e,n)=>typeof e==`string`?O`${n?t:``}<span class="f">${e}</span>`:O`${n?t:``}<span class="f tone-text" data-tone=${I(e.tone)}>${e.text}</span>`)}`:A}var pi=new Map;function mi(e,t,n={}){let r=pi.get(e)??e;return t?O`<span class=${n.cls||A} part="icon" title=${t}><span aria-hidden="true">${r}</span><span class="sr">${t}</span></span>`:O`<span class=${n.cls||A} part="icon" aria-hidden="true">${r}</span>`}var hi=class{constructor(e,t){this.host=e,this.o=t,this.current=0,this.onFocus=e=>{let t=this.indexOf(e);t>=0&&t!==this.current&&this.set(t)},this.onKey=e=>{let t=this.o.items(),n=this.indexOf(e);if(n<0)return;let r=function(e,t,n,r){if(e<=0)return null;let i=n=>n===t||n<0||n>=e?null:n;if(r.layout===`grid`){let a=Math.max(1,r.cols??1),o=Math.floor(t/a)*a;switch(n){case`ArrowRight`:return(t+1)%a&&t+1<e?i(t+1):null;case`ArrowLeft`:return t%a?i(t-1):null;case`ArrowDown`:return i(t+a);case`ArrowUp`:return i(t-a);case`Home`:return i(r.ctrl?0:o);case`End`:return i(r.ctrl?e-1:Math.min(o+a,e)-1);default:return null}}let[a,o]=r.layout===`horizontal`?[`ArrowLeft`,`ArrowRight`]:[`ArrowUp`,`ArrowDown`],s=n=>i(r.wrap?(t+n+e)%e:t+n);switch(n){case o:return s(1);case a:return s(-1);case`Home`:return i(0);case`End`:return i(e-1);default:return null}}(t.length,n,e.key,{layout:this.o.layout,cols:this.o.columns?.(),wrap:this.o.wrap,ctrl:e.ctrlKey||e.metaKey}),i=r===null?void 0:t[r];r!==null&&i&&(e.preventDefault(),this.set(r),i.focus(),this.o.onMove?.(i,r))},e.addController(this)}hostConnected(){this.host.addEventListener(`keydown`,this.onKey),this.host.addEventListener(`focusin`,this.onFocus)}hostDisconnected(){this.host.removeEventListener(`keydown`,this.onKey),this.host.removeEventListener(`focusin`,this.onFocus)}hostUpdated(){this.sync()}set(e){this.current=e,this.sync()}sync(){let e=this.o.items();e.length&&(this.current=Math.min(Math.max(0,this.current),e.length-1),e.forEach((e,t)=>e.tabIndex=t===this.current?0:-1))}indexOf(e){return this.o.items().findIndex(t=>e.composedPath().includes(t))}};function gi(e,t,n,r=8){let i=Math.max(0,e.length-1),a=e[i]??0;if(!i||a<=0)return{from:0,to:i,padTop:0,padBottom:0};let o=Math.max(0,t),s=_i(e,o),c=_i(e,o+Math.max(0,n)),l=Math.max(0,s-r),u=Math.min(i,Math.max(l,c+1+r));return{from:l,to:u,padTop:e[l],padBottom:a-e[u]}}function _i(e,t){let n=0,r=e.length-1-1;for(;n<r;){let i=n+r+1>>1;e[i]<=t?n=i:r=i-1}return n}var{I:vi}=hn,yi=e=>e,bi=()=>document.createComment(``),xi=(e,t,n)=>{let r=e._$AA.parentNode,i=t===void 0?e._$AB:t._$AA;if(n===void 0)n=new vi(r.insertBefore(bi(),i),r.insertBefore(bi(),i),e,e.options);else{let t=n._$AB.nextSibling,a=n._$AM,o=a!==e;if(o){let t;n._$AQ?.(e),n._$AM=e,n._$AP!==void 0&&(t=e._$AU)!==a._$AU&&n._$AP(t)}if(t!==i||o){let e=n._$AA;for(;e!==t;){let t=yi(e).nextSibling;yi(r).insertBefore(e,i),e=t}}}return n},Si=(e,t,n=e)=>(e._$AI(t,n),e),Ci={},wi=(e,t=Ci)=>e._$AH=t,Ti=e=>{e._$AR(),e._$AA.remove()},Ei=(e,t,n)=>{let r=new Map;for(let i=t;i<=n;i++)r.set(e[i],i);return r},V=ti(class extends ni{constructor(e){if(super(e),e.type!==2)throw Error(`repeat() can only be used in text expressions`)}dt(e,t,n){let r;n===void 0?n=t:t!==void 0&&(r=t);let i=[],a=[],o=0;for(let t of e)i[o]=r?r(t,o):o,a[o]=n(t,o),o++;return{values:a,keys:i}}render(e,t,n){return this.dt(e,t,n).values}update(e,[t,n,r]){let i=(e=>e._$AH)(e),{values:a,keys:o}=this.dt(t,n,r);if(!Array.isArray(i))return this.ut=o,a;let s=this.ut??=[],c=[],l,u,d=0,f=i.length-1,p=0,m=a.length-1;for(;d<=f&&p<=m;)if(i[d]===null)d++;else if(i[f]===null)f--;else if(s[d]===o[p])c[p]=Si(i[d],a[p]),d++,p++;else if(s[f]===o[m])c[m]=Si(i[f],a[m]),f--,m--;else if(s[d]===o[m])c[m]=Si(i[d],a[m]),xi(e,c[m+1],i[d]),d++,m--;else if(s[f]===o[p])c[p]=Si(i[f],a[p]),xi(e,i[d],i[f]),f--,p++;else if(l===void 0&&(l=Ei(o,p,m),u=Ei(s,d,f)),l.has(s[d])){if(l.has(s[f])){let t=u.get(o[p]),n=t===void 0?null:i[t];if(n===null){let t=xi(e,i[d]);Si(t,a[p]),c[p]=t}else c[p]=Si(n,a[p]),xi(e,i[d],n),i[t]=null;p++}else Ti(i[f]),f--}else Ti(i[d]),d++;for(;p<=m;){let t=xi(e,c[m+1]);Si(t,a[p]),c[p++]=t}for(;d<=f;){let e=i[d++];e!==null&&Ti(e)}return this.ut=o,wi(e,c),en}});function H(e,t,n,r){var i,a=arguments.length,o=a<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,n,o):i(t,n))||o);return a>3&&o&&Object.defineProperty(t,n,o),o}var Di=class extends j{constructor(...e){super(...e),this.options=[],this.value=``,this.label=``,this.roving=new hi(this,{items:()=>[...this.renderRoot.querySelectorAll(`button:not(:disabled)`)??[]],layout:`horizontal`,wrap:!0,onMove:e=>this.choose(e.dataset.value??``)})}static{this.styles=[B,D` :host{display:inline-flex;vertical-align:middle;}.group{display:inline-flex;border:1px solid var(--line);border-radius:var(--cae-segmented-radius,6px);overflow:hidden;}button{min-width:22px;height:var(--cae-segmented-height,20px);line-height:var(--cae-segmented-height,20px);padding:var(--cae-segmented-padding,0 10px);margin:0;border:0;border-radius:0;background:none;font-size:var(--cae-segmented-font-size,11.5px);text-align:center;color:var(--text-muted);cursor:pointer;}button + button{border-left:var(--cae-segmented-divider,1px solid var(--line));}button:hover{color:var(--cae-segmented-hover,var(--text));}button[aria-checked='true']{background:var(--raise);color:var(--text);cursor:default;}button:disabled{opacity:0.5;cursor:default;}button:focus-visible{outline-offset:-2px;}`]}willUpdate(){let e=this.options.filter(e=>!e.disabled).findIndex(e=>e.value===this.value);e>=0&&(this.roving.current=e)}choose(e){e!==this.value&&(this.value=e,L(this,`cae-change`,{value:e}))}render(){return O`<div class="group" part="group" role="radiogroup" aria-label=${this.label||A}>
10
+ ${V(this.options,e=>e.value,e=>{let t=e.value===this.value;return O`<button type="button" role="radio" part=${t?`option option-selected`:`option`} aria-checked=${t?`true`:`false`} data-value=${e.value} lang=${e.lang||A} title=${e.title||A} ?disabled=${!!e.disabled} @click=${()=>this.choose(e.value)}>${e.label}</button>`})}
11
+ </div>`}};H([N({attribute:!1})],Di.prototype,`options`,void 0),H([N()],Di.prototype,`value`,void 0),H([N()],Di.prototype,`label`,void 0);var Oi=class extends j{constructor(...e){super(...e),this.open=1}static{this.styles=[B,Kr]}render(){return O`<div class="jtree" part="tree" data-scroll="x">${this.node(this.value,0)}</div>`}node(e,t){if(typeof e!=`object`||!e)return O`<span class=${typeof e==`string`?`js`:`jn`}>${JSON.stringify(e)??`undefined`}</span>`;let n=Array.isArray(e)?e.map((e,t)=>[t,e]):Object.entries(e);return n.length?O`${n.map(([e,n])=>(e=>typeof e!=`object`||!e||(Array.isArray(e)?!e.length:!Object.keys(e).length))(n)?O`<div class="jt"><span class="jk">${e}</span>: ${this.node(n,t+1)}</div>`:O`<details class="jt" ?open=${t<this.open}>
12
12
  <summary>
13
13
  <span class="jk">${e}</span>
14
14
  <span class="meta">${Array.isArray(n)?`[${n.length}]`:`{${Object.keys(n).length}}`}</span>
15
15
  </summary>
16
16
  ${this.node(n,t+1)}
17
- </details>`)}`:Array.isArray(e)?`[]`:`{}`}};U([P({attribute:!1})],Di.prototype,`value`,void 0),U([P({type:Number})],Di.prototype,`open`,void 0);var Oi=new Set(`and as assert async await break class continue def del elif else except finally for from global if import in is lambda nonlocal not or pass raise return try while with yield`.split(` `)),ki=new Set([`None`,`True`,`False`,`self`,`cls`]),Ai=new Set(`str int float bool list dict set tuple bytes object type len range print isinstance super Optional Literal Any Union Path`.split(` `)),ji=new RegExp([`(#[^\\n]*)`,`((?:[rRbBfFuU]{0,2})(?:"""[\\s\\S]*?"""|'''[\\s\\S]*?'''))`,`((?:[rRbBfFuU]{0,2})(?:"(?:[^"\\\\\\n]|\\\\.)*"|'(?:[^'\\\\\\n]|\\\\.)*'))`,`(@[A-Za-z_][\\w.]*)`,`(\\b\\d[\\d_]*(?:\\.\\d+)?(?:[eE][+-]?\\d+)?\\b)`,`([A-Za-z_]\\w*)`].join(`|`),`g`),Mi={py:`python`,python:`python`,json:`json`,jsonc:`json`};function Ni(e,t){let n=function(e){let t=String(e||``).toLowerCase();return Mi[t.replace(/^.*\./,``)]||Mi[t]||``}(t);return n===`python`?function(e){let t=``,n=0,r=``;ji.lastIndex=0;for(let i=ji.exec(e);i;i=ji.exec(e)){t+=B(e.slice(n,i.index)),n=ji.lastIndex;let[a,o,s,c,l,u,d]=i;if(o)t+=`<span class="hl-c">${B(a)}</span>`;else if(s)t+=`<span class="hl-s hl-doc">${B(a)}</span>`;else if(c)t+=`<span class="hl-s">${B(a)}</span>`;else if(l)t+=`<span class="hl-d">${B(a)}</span>`;else if(u)t+=`<span class="hl-n">${B(a)}</span>`;else if(d){let e=Oi.has(d)?`hl-k`:ki.has(d)?`hl-k hl-const`:r===`class`?`hl-cls`:r===`def`?`hl-f`:Ai.has(d)?`hl-b`:/^[A-Z]\w*$/.test(d)&&d.length>1&&/[a-z]/.test(d)?`hl-t`:``;t+=e?`<span class="${e}">${B(d)}</span>`:B(d),r=d;continue}/^\s*$/.test(a)||(r=``)}return t+B(e.slice(n))}(e):n===`json`?function(e){let t=/("(?:[^"\\\n]|\\.)*")(\s*:)?|\b(true|false|null)\b|(-?\b\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b)/g,n=``,r=0;for(let i=t.exec(e);i;i=t.exec(e)){n+=B(e.slice(r,i.index)),r=t.lastIndex;let[,a,o,s,c]=i;n+=a?o?`<span class="hl-key">${B(a)}</span>${B(o)}`:`<span class="hl-s">${B(a)}</span>`:s?`<span class="hl-k hl-const">${s}</span>`:`<span class="hl-n">${c??``}</span>`}return n+B(e.slice(r))}(e):B(e)}function Pi(e){return e.replace(/`([^`\n]+)`/g,`<code>$1</code>`).replace(/\*\*([^*\n]+)\*\*/g,`<b>$1</b>`).replace(/(^|[^*\w])\*([^*\n]+)\*(?!\w)/g,`$1<i>$2</i>`).replace(/\[([^\]\n]+)\]\((https?:\/\/[^)\s]+)\)/g,`<a class="lnk" href="$2" target="_blank" rel="noopener">$1</a>`)}var Fi=/^\s*\|.*\|\s*$/;function Ii(e){return function(e){let t=[],n=0;for(;;){let r=e.indexOf("```",n);if(r<0)return t.push({t:`text`,s:e.slice(n)}),t;t.push({t:`text`,s:e.slice(n,r)});let i=e.indexOf(`
18
- `,r+3),a=e.slice(r+3,i<0?e.length:i).trim(),o=i<0?e.length:i+1,s=e.indexOf("```",o);if(s<0)return t.push({t:`code`,s:e.slice(o),lang:a}),t;t.push({t:`code`,s:e.slice(o,s),lang:a}),n=s+3}}(String(e||``)).map(e=>{if(e.t===`code`)return`<pre><code class="hl">${Ni(e.s,e.lang)}</code></pre>`;let t=B(e.s).split(`
19
- `),n=[];for(let e=0;e<t.length;e++){let r=t[e]??``,i;if(i=r.match(/^(#{1,6})\s+(.*)$/))n.push(`<div class="md-h md-h${Math.min(i[1].length,4)}">${Pi(i[2])}</div>`);else if(/^\s*(-{3,}|\*{3,})\s*$/.test(r))n.push(`<hr class="md-hr">`);else if(i=r.match(/^\s*&gt;\s?(.*)$/))n.push(`<div class="md-q">${Pi(i[1])}</div>`);else if(i=r.match(/^\s*[-*]\s+(.*)$/))n.push(`<div class="md-li">${Pi(i[1])}</div>`);else if(i=r.match(/^\s*(\d+)[.)]\s+(.*)$/))n.push(`<div class="md-li md-ol"><span class="md-n">${i[1]}.</span>${Pi(i[2])}</div>`);else if(Fi.test(r)&&/^\s*\|[\s:|-]+\|\s*$/.test(t[e+1]??``)){let i=e=>e.trim().replace(/^\||\|$/g,``).split(`|`).map(e=>Pi(e.trim())),a=i(r);e+=2;let o=[];for(;e<t.length&&Fi.test(t[e]??``);)o.push(i(t[e++]??``));e--,n.push(`<table class="md-t"><tr>${a.map(e=>`<th>${e}</th>`).join(``)}</tr>`+o.map(e=>`<tr>${e.map(e=>`<td>${e}</td>`).join(``)}</tr>`).join(``)+`</table>`)}else n.push(r.trim()===``?`<div class="md-gap"></div>`:`<div class="md-p">${Pi(r)}</div>`)}return n.join(``)}).join(``)}function Li(e,t){let n=String(e||``),r=n.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/),i=``,a=n;if(r){a=r[2]??``;let e=(r[1]??``).split(`
20
- `).map(e=>e.match(/^([\w-]+):\s*(.*)$/)).filter(e=>!!e).map(([,e,t])=>`<tr><td class="jmono">${B(e)}</td><td>${B(t)}</td></tr>`).join(``);i=e?`<table class="md-front">${e}</table>`:``}let o=Ii(a);return`<div class="md-doc">${i}${t?t(o):o}</div>`}var Ri=class extends ti{constructor(e){if(super(e),this.it=j,e.type!==2)throw Error(this.constructor.directiveName+`() can only be used in child bindings`)}render(e){if(e===j||e==null)return this._t=void 0,this.it=e;if(e===$t)return e;if(typeof e!=`string`)throw Error(this.constructor.directiveName+`() called with a non-string value`);if(e===this.it)return this._t;this.it=e;let t=[e];return t.raw=t,this._t={_$litType$:this.constructor.resultType,strings:t,values:[]}}};Ri.directiveName=`unsafeHTML`,Ri.resultType=1;var zi=ei(Ri),Bi={showRendered:`Show rendered`,showSource:`Show source`},Vi=class extends M{constructor(...e){super(...e),this.text=``,this.strings={},this.source=!1}static{this.styles=[V,Gr,O` :host{display:block;}.md-p,.md-h,.md-li,.md-q{overflow-wrap:anywhere;}.bar{display:flex;justify-content:flex-end;margin-bottom:4px;}`]}render(){let e=jr(Bi,this.strings),{head:t,body:n}=this.split?.(this.text)??{head:``,body:this.text},r=Li(n,this.transform);return k`<div class="bar">
17
+ </details>`)}`:Array.isArray(e)?`[]`:`{}`}};H([N({attribute:!1})],Oi.prototype,`value`,void 0),H([N({type:Number})],Oi.prototype,`open`,void 0);var ki=[`python`,`json`,`javascript`,`typescript`,`c`,`cpp`,`java`,`go`,`rust`,`shell`,`toml`,`yaml`,`sql`,`xml`,`diff`],U=e=>new Set(e.split(` `)),Ai=[`comment`,`//[^\\n]*|/\\*[\\s\\S]*?\\*/`],ji=`"(?:[^"\\\\\\n]|\\\\.)*"`,Mi=`'(?:[^'\\\\\\n]|\\\\.)*'`,Ni=`'(?:[^'\\\\\\n]|\\\\.)'`,Pi=[`number`,`\\b(?:0[xX][\\da-fA-F_']+|0[bB][01_]+|\\d[\\d_']*(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)[uUlLfFn]*\\b`],Fi=`break case catch class const continue debugger default delete do else export extends finally for from function if import in instanceof let new of return static super switch throw try typeof var void while with yield async await as`,Ii=`auto break case char const continue default do double else enum extern float for goto if inline int long register restrict return short signed sizeof static struct switch typedef union unsigned void volatile while bool`,Li={struct:`class`,class:`class`,enum:`class`,union:`class`},Ri={python:{rules:[[`comment`,`#[^\\n]*`],[`doc`,`(?:[rRbBfFuU]{0,2})(?:"""[\\s\\S]*?"""|'''[\\s\\S]*?''')`],[`string`,`(?:[rRbBfFuU]{0,2})(?:${ji}|${Mi})`],[`decorator`,`@[A-Za-z_][\\w.]*`],[`number`,`\\b\\d[\\d_]*(?:\\.\\d+)?(?:[eE][+-]?\\d+)?\\b`]],keywords:U(`and as assert async await break class continue def del elif else except finally for from global if import in is lambda nonlocal not or pass raise return try while with yield match case`),constants:U(`None True False self cls`),builtins:U(`str int float bool list dict set tuple bytes object type len range print isinstance super Optional Literal Any Union Path`),defines:{def:`function`,class:`class`},types:!0,name:`[A-Za-z_]\\w*`},json:{rules:[[`key`,`${ji}(?=\\s*:)`],[`string`,ji],[`comment`,`//[^\\n]*|/\\*[\\s\\S]*?\\*/`],[`number`,`-?\\b\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?\\b`]],constants:U(`true false null`),name:`[A-Za-z_]\\w*`},javascript:{rules:[Ai,[`string`,`${ji}|${Mi}|\`(?:[^\`\\\\]|\\\\.)*\``],[`decorator`,`@[A-Za-z_$][\\w$.]*`],Pi],keywords:U(Fi),constants:U(`true false null undefined this NaN Infinity`),builtins:U(`console Math JSON Promise Array Object String Number Boolean Map Set WeakMap Symbol Error Date RegExp BigInt globalThis window document`),defines:{function:`function`,class:`class`},types:!0},typescript:{rules:[Ai,[`string`,`${ji}|${Mi}|\`(?:[^\`\\\\]|\\\\.)*\``],[`decorator`,`@[A-Za-z_$][\\w$.]*`],Pi],keywords:U(`${Fi} interface type enum implements namespace declare abstract private protected public readonly keyof infer is satisfies module override`),constants:U(`true false null undefined this NaN Infinity`),builtins:U(`console Math JSON Promise Array Object String Number Boolean Map Set WeakMap Symbol Error Date RegExp BigInt globalThis string number boolean unknown never any void Record Partial Readonly`),defines:{function:`function`,class:`class`,interface:`class`,type:`class`,enum:`class`},types:!0},c:{rules:[[`meta`,`^[ \\t]*#[ \\t]*\\w+`],Ai,[`string`,`${ji}|${Ni}`],Pi],keywords:U(Ii),constants:U(`NULL true false`),builtins:U(`printf fprintf malloc calloc realloc free size_t memcpy memset strlen strcmp FILE`),defines:Li,types:!0},cpp:{rules:[[`meta`,`^[ \\t]*#[ \\t]*\\w+`],Ai,[`string`,`${ji}|${Ni}`],Pi],keywords:U(`${Ii} alignas alignof catch class constexpr consteval const_cast decltype delete dynamic_cast explicit export friend mutable namespace new noexcept operator private protected public reinterpret_cast static_assert static_cast template this thread_local throw try typeid typename using virtual co_await co_return co_yield concept requires override final`),constants:U(`nullptr NULL true false`),builtins:U(`std string vector map set unordered_map array optional cout cerr endl unique_ptr shared_ptr make_unique make_shared size_t`),defines:Li,types:!0},java:{rules:[Ai,[`string`,`"""[\\s\\S]*?"""|${ji}|${Ni}`],[`decorator`,`@[A-Za-z_][\\w.]*`],Pi],keywords:U(`abstract assert boolean break byte case catch char class continue default do double else enum extends final finally float for if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while var record yield sealed permits`),constants:U(`true false null`),builtins:U(`String System Object Integer Long Double Boolean List Map Set Optional Exception RuntimeException`),defines:{class:`class`,interface:`class`,enum:`class`,record:`class`},types:!0},go:{rules:[Ai,[`string`,`${ji}|\`[^\`]*\`|${Ni}`],Pi],keywords:U(`break case chan const continue default defer else fallthrough for func go goto if import interface map package range return select struct switch type var`),constants:U(`true false nil iota`),builtins:U(`append cap close complex copy delete imag len make new panic print println real recover string int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 byte rune error bool float32 float64 any`),defines:{func:`function`,type:`class`},types:!0},rust:{rules:[Ai,[`string`,`b?r#*"[\\s\\S]*?"#*|b?"(?:[^"\\\\]|\\\\.)*"`],[`string`,`b?${Ni}`],[`type`,`'[A-Za-z_]\\w*\\b(?!')`],[`decorator`,`#!?\\[[^\\]\\n]*\\]`],[`builtin`,`\\b[A-Za-z_]\\w*!(?=\\s*[\\[({])`],Pi],keywords:U(`as async await break const continue crate dyn else enum extern fn for if impl in let loop match mod move mut pub ref return self Self static struct super trait type unsafe use where while`),constants:U(`true false None Some Ok Err`),builtins:U(`Vec String Option Result Box Rc Arc HashMap str usize isize u8 u16 u32 u64 i8 i16 i32 i64 f32 f64 bool char`),defines:{fn:`function`,struct:`class`,enum:`class`,trait:`class`,type:`class`},types:!0},shell:{rules:[[`comment`,`(?:^|(?<=\\s))#[^\\n]*`],[`string`,`"(?:[^"\\\\]|\\\\.)*"|'[^']*'`],[`builtin`,`\\$(?:\\{[^}\\n]*\\}|\\w+|[@*#?$!0-9-])`],[`number`,`\\b\\d+\\b`]],keywords:U(`if then else elif fi for while until do done case esac in function select return local export readonly declare set unset shift break continue exit source alias`),builtins:U(`echo cd printf read test eval exec trap pwd`),name:`[A-Za-z_][\\w-]*`},toml:{rules:[[`comment`,`#[^\\n]*`],[`class`,`^[ \\t]*\\[\\[?[^\\]\\n]*\\]\\]?`],[`key`,`^[ \\t]*[A-Za-z0-9_.\\-"']+(?=[ \\t]*=)`],[`string`,`"""[\\s\\S]*?"""|'''[\\s\\S]*?'''|${ji}|'[^'\\n]*'`],[`number`,`\\d{4}-\\d{2}-\\d{2}(?:[T ]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?(?:Z|[+-]\\d{2}:\\d{2})?)?`],[`number`,`[+-]?\\b\\d[\\d_]*(?:\\.\\d+)?(?:[eE][+-]?\\d+)?\\b`]],constants:U(`true false inf nan`),name:`[A-Za-z_]\\w*`},yaml:{rules:[[`comment`,`(?:^|(?<=\\s))#[^\\n]*`],[`meta`,`^(?:---|\\.\\.\\.)(?=\\s|$)`],[`key`,`[A-Za-z0-9_.\\-/]+(?=:(?:[ \\t]|$))`],[`string`,`${ji}|'(?:[^'\\n]|'')*'`],[`decorator`,`[&*][\\w-]+`],[`number`,`[+-]?\\b\\d[\\d_]*(?:\\.\\d+)?(?:[eE][+-]?\\d+)?\\b`]],constants:U(`true false null yes no on off True False Null`),name:`[A-Za-z_]\\w*`},sql:{rules:[[`comment`,`--[^\\n]*|/\\*[\\s\\S]*?\\*/`],[`string`,`'(?:[^']|'')*'`],[`key`,`"(?:[^"]|"")*"`],[`number`,`\\b\\d+(?:\\.\\d+)?\\b`]],keywords:U(`select from where and or not insert into values update set delete create table drop alter add column index primary key foreign references join left right inner outer full cross on as group by order having limit offset union all distinct case when then else end is in exists between like returning with view default unique constraint if begin commit rollback transaction asc desc`),constants:U(`true false null`),builtins:U(`count sum avg min max coalesce cast lower upper now integer int text varchar char boolean date timestamp real numeric bigint serial float double`),caseless:!0,name:`[A-Za-z_]\\w*`},xml:{rules:[[`comment`,`<!--[\\s\\S]*?-->`],[`meta`,`<\\?[\\s\\S]*?\\?>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>|<![A-Za-z][^>]*>`],[`tag`,`</?[A-Za-z_][\\w:.-]*|/?>`],[`attribute`,`[A-Za-z_:][\\w:.-]*(?=\\s*=\\s*["'])`],[`string`,`(?<==\\s*)(?:"[^"]*"|'[^']*')`],[`constant`,`&#?\\w+;`]],name:null},diff:{rules:[[`meta`,`^(?:diff |index |--- |\\+\\+\\+ |@@)[^\\n]*`],[`inserted`,`^\\+[^\\n]*`],[`deleted`,`^-[^\\n]*`]],name:null}},zi={py:`python`,python3:`python`,pyi:`python`,pyw:`python`,jsonc:`json`,jsonl:`json`,json5:`json`,geojson:`json`,js:`javascript`,mjs:`javascript`,cjs:`javascript`,jsx:`javascript`,node:`javascript`,ts:`typescript`,tsx:`typescript`,mts:`typescript`,cts:`typescript`,h:`c`,"c++":`cpp`,cc:`cpp`,cxx:`cpp`,hpp:`cpp`,hh:`cpp`,hxx:`cpp`,golang:`go`,rs:`rust`,sh:`shell`,bash:`shell`,zsh:`shell`,ksh:`shell`,shellscript:`shell`,ini:`toml`,cfg:`toml`,yml:`yaml`,html:`xml`,htm:`xml`,xhtml:`xml`,svg:`xml`,plist:`xml`,xsd:`xml`,xsl:`xml`,patch:`diff`};function Bi(e){let t=String(e||``).trim().toLowerCase().replace(/^.*\//,``),n=e=>ki.includes(e)?e:zi[e]??``;return n(t)||(t.includes(`.`)?n(t.replace(/^.*\./,``)):``)}var Vi=new Map;function Hi(e,t,n){let r=e.caseless?t.toLowerCase():t;return e.keywords?.has(r)?`keyword`:e.constants?.has(r)?`constant`:e.defines?.[n]||(e.builtins?.has(r)?`builtin`:e.types&&/^[A-Z]\w*$/.test(t)&&t.length>1&&/[a-z]/.test(t)?`type`:``)}function Ui(e,t){let n=Bi(t);if(!n||!e)return e?[{text:e,type:``}]:[];let r=Ri[n],i=function(e){let t=Vi.get(e);if(!t){let n=Ri[e],r=n.rules.map(([,e])=>`(${e})`),i=n.name===void 0?`[A-Za-z_$][\\w$]*`:n.name;i&&r.push(`(${i})`),t=new RegExp(r.join(`|`),`gm`),Vi.set(e,t)}return t}(n),a=[],o=(e,t)=>{if(!e)return;let n=a[a.length-1];n&&n.type===t?n.text+=e:a.push({text:e,type:t})},s=0,c=``;i.lastIndex=0;for(let t=i.exec(e);t;t=i.exec(e)){if(!t[0]){i.lastIndex++;continue}let n=e.slice(s,t.index);/\S/.test(n)&&(c=``),o(n,``),s=i.lastIndex;let a=t.findIndex((e,t)=>t>0&&e!==void 0)-1;a<r.rules.length?(o(t[0],r.rules[a][0]),c=``):(o(t[0],Hi(r,t[0],c)),c=t[0])}return o(e.slice(s),``),a}var Wi={comment:`hl-c`,doc:`hl-s hl-doc`,string:`hl-s`,number:`hl-n`,keyword:`hl-k`,constant:`hl-k hl-const`,builtin:`hl-b`,type:`hl-t`,function:`hl-f`,class:`hl-cls`,decorator:`hl-d`,key:`hl-key`,tag:`hl-tag`,attribute:`hl-attr`,inserted:`hl-ins`,deleted:`hl-del`,meta:`hl-meta`};function Gi(e){return e.map(e=>e.type?`<span class="${Wi[e.type]}">${Mr(e.text)}</span>`:Mr(e.text)).join(``)}function Ki(e,t){return Gi(Ui(e,t))}var qi=class extends ni{constructor(e){if(super(e),this.it=A,e.type!==2)throw Error(this.constructor.directiveName+`() can only be used in child bindings`)}render(e){if(e===A||e==null)return this._t=void 0,this.it=e;if(e===en)return e;if(typeof e!=`string`)throw Error(this.constructor.directiveName+`() called with a non-string value`);if(e===this.it)return this._t;this.it=e;let t=[e];return t.raw=t,this._t={_$litType$:this.constructor.resultType,strings:t,values:[]}}};qi.directiveName=`unsafeHTML`,qi.resultType=1;var Ji=ti(qi),Yi={copy:`Copy`,copied:`Copied`,wrap:`Wrap lines`,empty:`No text`,cut:(e,t)=>`First ${e.toLocaleString(`en`)} of ${t.toLocaleString(`en`)} lines`},Xi=class extends j{constructor(...e){super(...e),this.code=``,this.language=``,this.start=1,this.highlight=[],this.path=``,this.label=``,this.wrap=!1,this.maxLines=5e3,this.maxCharacters=5e5,this.strings={},this.wrapped=!1,this.copied=!1}static{this.styles=[B,Kr,D` :host{display:block;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--well);overflow:hidden;}.head{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;padding:4px 6px 4px 10px;border-bottom:1px solid var(--line);font-size:var(--font-size-sm);color:var(--text-2);}.path{font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;}.lang{color:var(--text-muted);}.tools{margin-left:auto;display:flex;gap:4px;flex:none;}.tools button{font-size:var(--font-size-sm);color:var(--text-2);border:1px solid var(--line2);border-radius:var(--radius-pill);padding:0 9px;cursor:pointer;background:none;}.tools button[aria-pressed='true']{background:var(--raise);color:var(--text);}.scroll{overflow:auto;max-height:var(--cae-code-max-height,70vh);font-family:var(--mono);font-size:var(--font-size-md);line-height:1.5;}.lines{display:block;min-width:max-content;padding:4px 0;}.wrap .lines{min-width:0;}.ln{display:flex;}.ln::before{content:attr(data-n);position:sticky;left:0;flex:none;box-sizing:border-box;width:calc(var(--digits) * 1ch + 22px);padding:0 10px 0 8px;text-align:right;color:var(--text-muted);background:var(--well);border-left:3px solid transparent;}.t{flex:1;white-space:pre;padding-right:12px;}.t:empty::after{content:' ';}.wrap .t{white-space:pre-wrap;overflow-wrap:anywhere;}.ln[data-mark]{background:color-mix(in srgb,var(--accent) 6%,transparent);}.hl-doc{opacity:1;}.ln[data-mark]::before{border-left-color:var(--accent);color:var(--text);background:color-mix(in srgb,var(--accent) 14%,var(--well));}.cut,.empty{padding:4px 10px;font-size:var(--font-size-sm);color:var(--text-muted);border-top:1px solid var(--line);}.empty{border-top:0;}`]}willUpdate(e){e.has(`wrap`)&&(this.wrapped=this.wrap),e.has(`code`)&&(this.copied=!1)}disconnectedCallback(){super.disconnectedCallback(),clearTimeout(this.copiedTimer)}async copy(){try{await navigator.clipboard.writeText(this.code)}catch{return}this.copied=!0,clearTimeout(this.copiedTimer),this.copiedTimer=setTimeout(()=>this.copied=!1,1500)}render(){let e=jr(Yi,this.strings),t=Bi(this.language),{shown:n,lines:r,total:i,cut:a}=function(e,t,n){let r=e.endsWith(`
18
+ `)?e.slice(0,-1):e,i=r||e?1:0;for(let e=r.indexOf(`
19
+ `);e>=0;e=r.indexOf(`
20
+ `,e+1))i++;let a=0,o=0;for(;o<Math.max(1,t);){let e=r.indexOf(`
21
+ `,a),t=e<0?r.length:e;if(o>0&&t>n)break;if(o++,e<0){a=r.length;break}a=e+1}let s=o>=i?r:r.slice(0,a-1);return s.length>n&&(s=s.slice(0,n)),{shown:s,lines:i?o:0,total:i,cut:s.length<r.length}}(this.code,this.maxLines,this.maxCharacters),o=this.start+Math.max(r,1)-1,s=function(e){let t=[[]];for(let n of e)n.text.split(`
22
+ `).forEach((e,r)=>{r>0&&t.push([]),e&&t[t.length-1].push({text:e,type:n.type})});return t}(Ui(n,t)).map((e,t)=>{let n=this.start+t;return`<div class="ln" data-n="${n}"${function(e,t){return e.some(e=>typeof e==`number`?e===t:t>=e[0]&&t<=e[1])}(this.highlight,n)?` data-mark=""`:``}><span class="t">${Gi(e)}</span></div>`}).join(``);return O`<div class="head" part="header">
23
+ ${this.path?O`<span class="path" title=${this.path}>${this.path}</span>`:A}
24
+ ${t?O`<span class="lang">${t}</span>`:A}
25
+ <span class="tools">
26
+ <button type="button" aria-pressed=${this.wrapped?`true`:`false`} @click=${()=>this.wrapped=!this.wrapped}>${e.wrap}</button>
27
+ <button type="button" ?disabled=${!this.code} @click=${()=>{this.copy()}}>${this.copied?e.copied:e.copy}</button>
28
+ </span>
29
+ <span class="sr" role="status">${this.copied?e.copied:``}</span>
30
+ </div>
31
+ ${this.code?O`<div class="scroll ${this.wrapped?`wrap`:``}" part="code" data-scroll=${this.wrapped?`y`:`x`} tabindex="0" role=${this.label||this.path?`region`:A} aria-label=${this.label||this.path||A} style="--digits: ${String(o).length}">
32
+ <code class="lines hl">${Ji(s)}</code>
33
+ </div>
34
+ ${a?O`<div class="cut" part="cut">${e.cut(r,i)}</div>`:A}`:O`<div class="empty">${e.empty}</div>`}`}};function Zi(e){return e.replace(/`([^`\n]+)`/g,`<code>$1</code>`).replace(/\*\*([^*\n]+)\*\*/g,`<b>$1</b>`).replace(/(^|[^*\w])\*([^*\n]+)\*(?!\w)/g,`$1<i>$2</i>`).replace(/\[([^\]\n]+)\]\((https?:\/\/[^)\s]+)\)/g,`<a class="lnk" href="$2" target="_blank" rel="noopener">$1</a>`)}H([N()],Xi.prototype,`code`,void 0),H([N()],Xi.prototype,`language`,void 0),H([N({type:Number})],Xi.prototype,`start`,void 0),H([N({attribute:!1})],Xi.prototype,`highlight`,void 0),H([N()],Xi.prototype,`path`,void 0),H([N()],Xi.prototype,`label`,void 0),H([N({type:Boolean})],Xi.prototype,`wrap`,void 0),H([N({type:Number})],Xi.prototype,`maxLines`,void 0),H([N({type:Number})],Xi.prototype,`maxCharacters`,void 0),H([N({attribute:!1})],Xi.prototype,`strings`,void 0),H([P()],Xi.prototype,`wrapped`,void 0),H([P()],Xi.prototype,`copied`,void 0);var Qi=/^\s*\|.*\|\s*$/;function $i(e){return function(e){let t=[],n=0;for(;;){let r=e.indexOf("```",n);if(r<0)return t.push({t:`text`,s:e.slice(n)}),t;t.push({t:`text`,s:e.slice(n,r)});let i=e.indexOf(`
35
+ `,r+3),a=e.slice(r+3,i<0?e.length:i).trim(),o=i<0?e.length:i+1,s=e.indexOf("```",o);if(s<0)return t.push({t:`code`,s:e.slice(o),lang:a}),t;t.push({t:`code`,s:e.slice(o,s),lang:a}),n=s+3}}(String(e||``)).map(e=>{if(e.t===`code`)return`<pre><code class="hl">${Ki(e.s,e.lang)}</code></pre>`;let t=Mr(e.s).split(`
36
+ `),n=[];for(let e=0;e<t.length;e++){let r=t[e]??``,i;if(i=r.match(/^(#{1,6})\s+(.*)$/))n.push(`<div class="md-h md-h${Math.min(i[1].length,4)}">${Zi(i[2])}</div>`);else if(/^\s*(-{3,}|\*{3,})\s*$/.test(r))n.push(`<hr class="md-hr">`);else if(i=r.match(/^\s*&gt;\s?(.*)$/))n.push(`<div class="md-q">${Zi(i[1])}</div>`);else if(i=r.match(/^\s*[-*]\s+(.*)$/))n.push(`<div class="md-li">${Zi(i[1])}</div>`);else if(i=r.match(/^\s*(\d+)[.)]\s+(.*)$/))n.push(`<div class="md-li md-ol"><span class="md-n">${i[1]}.</span>${Zi(i[2])}</div>`);else if(Qi.test(r)&&/^\s*\|[\s:|-]+\|\s*$/.test(t[e+1]??``)){let i=e=>e.trim().replace(/^\||\|$/g,``).split(`|`).map(e=>Zi(e.trim())),a=i(r);e+=2;let o=[];for(;e<t.length&&Qi.test(t[e]??``);)o.push(i(t[e++]??``));e--,n.push(`<table class="md-t"><tr>${a.map(e=>`<th>${e}</th>`).join(``)}</tr>`+o.map(e=>`<tr>${e.map(e=>`<td>${e}</td>`).join(``)}</tr>`).join(``)+`</table>`)}else n.push(r.trim()===``?`<div class="md-gap"></div>`:`<div class="md-p">${Zi(r)}</div>`)}return n.join(``)}).join(``)}function ea(e,t){let n=String(e||``),r=n.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/),i=``,a=n;if(r){a=r[2]??``;let e=(r[1]??``).split(`
37
+ `).map(e=>e.match(/^([\w-]+):\s*(.*)$/)).filter(e=>!!e).map(([,e,t])=>`<tr><td class="jmono">${Mr(e)}</td><td>${Mr(t)}</td></tr>`).join(``);i=e?`<table class="md-front">${e}</table>`:``}let o=$i(a);return`<div class="md-doc">${i}${t?t(o):o}</div>`}var ta={showRendered:`Show rendered`,showSource:`Show source`},na=class extends j{constructor(...e){super(...e),this.text=``,this.strings={},this.source=!1}static{this.styles=[B,Kr,D` :host{display:block;}.md-p,.md-h,.md-li,.md-q{overflow-wrap:anywhere;}.bar{display:flex;justify-content:flex-end;margin-bottom:4px;}`]}render(){let e=jr(ta,this.strings),{head:t,body:n}=this.split?.(this.text)??{head:``,body:this.text},r=ea(n,this.transform);return O`<div class="bar">
21
38
  <button type="button" class="df-tog" part="toggle" @click=${()=>this.source=!this.source}>
22
39
  ${this.source?e.showRendered:e.showSource}</button>
23
40
  </div>
24
- ${this.source?k`<pre class="df-text">${this.text}</pre>`:k`${t?k`<div class="md-tele jmono">${t}</div>`:j}${zi(r)}`}`}};U([P()],Vi.prototype,`text`,void 0),U([P({attribute:!1})],Vi.prototype,`split`,void 0),U([P({attribute:!1})],Vi.prototype,`transform`,void 0),U([P({attribute:!1})],Vi.prototype,`strings`,void 0),U([F()],Vi.prototype,`source`,void 0);var Hi=class extends M{constructor(...e){super(...e),this.value=0,this.shown=0,this.frame=0}createRenderRoot(){return this}willUpdate(e){if(!e.has(`value`))return;let t=this.shown,n=this.value;if(cancelAnimationFrame(this.frame),globalThis.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches||t===n||!Number.isFinite(n)||!this.isConnected)return void(this.shown=n);let r=performance.now(),i=e=>{let a=Math.min(1,(e-r)/700);this.shown=Math.round(t+(n-t)*(1-(1-a)**3)),a<1&&(this.frame=requestAnimationFrame(i))};this.frame=requestAnimationFrame(i)}disconnectedCallback(){super.disconnectedCallback(),cancelAnimationFrame(this.frame),this.shown=this.value}render(){return String(this.shown)}};U([P({type:Number})],Hi.prototype,`value`,void 0),U([F()],Hi.prototype,`shown`,void 0);var Ui=class extends M{constructor(){super(),this.since=0,new Fr(this)}createRenderRoot(){return this}render(){return this.since?z((Date.now()-this.since)/1e3):``}};U([P({type:Number})],Ui.prototype,`since`,void 0);var Wi={empty:`No rows`,sortAscending:`Sort ascending`,sortDescending:`Sort descending`},Gi=O` :host{display:block;container-type:inline-size;}table{display:block;width:100%;border-collapse:collapse;overflow-x:auto;}caption{display:block;text-align:start;}thead,tbody{display:block;}tr{display:grid;grid-template-columns:var(--cae-data-table-columns);column-gap:var(--cae-data-table-gap,12px);align-items:center;padding:var(--cae-data-table-row-padding,6px 12px);}th,td{display:block;min-width:0;padding:0;text-align:start;font-weight:inherit;}[data-align='end']{text-align:end;font-variant-numeric:tabular-nums;}thead tr{color:var(--text-muted);font-size:var(--font-size-sm);border-bottom:1px solid var(--line);}tbody tr{border-bottom:1px solid var(--line);}tbody tr[data-key]{cursor:pointer;}table.passive tbody tr[data-key]{cursor:default;}tbody tr[data-key]:hover{background:var(--raise);}tbody tr[data-key]:focus-visible{outline-offset:-2px;}tbody tr[aria-current='true']{background:var(--accent-bg);}tbody tr[data-tone='running']{background:var(--status-running-bg);}tbody tr[data-tone='failed']{background:color-mix(in srgb,var(--status-failed) 6%,transparent);box-shadow:inset 3px 0 0 var(--status-failed);}tr.spacer{display:block;padding:0;border:0;}tr.empty{display:block;border:0;padding:0;}tr.empty td{color:var(--text-muted);padding:8px;}.sort{display:inline-flex;align-items:center;gap:4px;padding:0;border:0;background:none;color:inherit;font:inherit;cursor:pointer;}.sort:hover{color:var(--text);}.arrow{font-size:0.85em;}`,Ki=ei(class extends ti{constructor(e){if(super(e),this.names=[],e.type!==6)throw Error(`attrs() goes on an element`)}render(e){return j}update(e,[t]){let n=e.element,r=Object.keys(t??{});for(let e of this.names)r.includes(e)||n.removeAttribute(e);for(let e of r)n.getAttribute(e)!==t[e]&&n.setAttribute(e,t[e]);return this.names=r,j}}),qi=new Set([`A`,`BUTTON`,`INPUT`,`SELECT`,`TEXTAREA`,`SUMMARY`,`LABEL`]),Ji=class extends M{constructor(...e){super(...e),this.columns=[],this.rows=[],this.rowKey=e=>{let t=e.id;return typeof t==`string`||typeof t==`number`?String(t):``},this.activatable=!0,this.selected=null,this.sort=null,this.windowAt=200,this.rowHeight=32,this.caption=``,this.strings={},this.cellStyles=[],this.range={from:0,to:60},this.heights=new Map,this.offsets=null,this.focusKey=null,this.scroller=null,this.resized=null,this.frame=0,this.held=!1,this.roving=new mi(this,{items:()=>[...this.renderRoot.querySelectorAll(`tbody tr[data-key]`)],layout:`vertical`,onMove:e=>this.focusKey=e.dataset.key??null}),this.onScroll=()=>{this.frame||=requestAnimationFrame(()=>{this.frame=0,this.reframe()})},this.onClick=e=>{let t=this.rowOf(e);t&&this.act(t.id)},this.onFocusIn=e=>{let t=this.rowOf(e);t&&(this.focusKey=t.id)},this.onKey=e=>{let t=e.composedPath()[0];if(t instanceof HTMLElement&&t.tagName===`TR`&&t.dataset.key!==void 0){if(e.key===`Enter`)return e.preventDefault(),void this.act(t.dataset.key);if(this.windowed&&(e.key===`Home`||e.key===`End`)){e.preventDefault(),e.stopPropagation();let t=e.key===`End`,n=this.rows[t?this.rows.length-1:0];if(n===void 0)return;this.focusKey=this.rowKey(n);let r=this.rows.length,i=Math.max(1,this.range.to-this.range.from);this.scrollToEnd(t),this.range=t?{from:Math.max(0,r-i),to:r}:{from:0,to:i},this.held=!0,this.updateComplete.then(()=>this.renderRoot.querySelector(`tbody tr[data-key="${CSS.escape(this.focusKey??``)}"]`)?.focus())}}}}static{this.styles=[V,Gi]}get windowed(){return this.rows.length>this.windowAt}disconnectedCallback(){super.disconnectedCallback(),this.unwatch()}rowStarts(){if(this.offsets)return this.offsets;let e=0;for(let t of this.heights.values())e+=t;let t=this.heights.size?e/this.heights.size:this.rowHeight;return this.offsets=function(e,t){let n=Array(Math.max(0,e)+1);n[0]=0;for(let r=0;r<e;r++)n[r+1]=n[r]+Math.max(0,t(r));return n}(this.rows.length,e=>this.heights.get(this.rowKey(this.rows[e]))??t)}visible(){let e=this.rowStarts(),t=this.renderRoot.querySelector(`tbody`);if(!t||!this.scroller)return hi(e,0,e.at(-1)/Math.max(1,this.rows.length)*60,0);let n=this.scroller instanceof HTMLElement?{top:this.scroller.getBoundingClientRect().top,height:this.scroller.clientHeight}:{top:0,height:this.scroller.innerHeight};return hi(e,n.top-t.getBoundingClientRect().top,n.height)}scrollToEnd(e){let t=this.renderRoot.querySelector(`tbody`),n=this.scroller;if(!t||!n)return;let r=t.getBoundingClientRect(),i=n instanceof HTMLElement?n.getBoundingClientRect():{top:0,bottom:n.innerHeight},a=e?r.bottom-i.bottom:r.top-i.top;n instanceof HTMLElement?n.scrollTop+=a:n.scrollBy(0,a)}reframe(){let e=this.visible();e.from===this.range.from&&e.to===this.range.to||(this.range={from:e.from,to:e.to})}findScroller(){let e=this.parentNode;for(;e;){if(e instanceof HTMLElement){let t=getComputedStyle(e).overflowY;if((t===`auto`||t===`scroll`||t===`overlay`)&&e.scrollHeight>e.clientHeight+1)return e}e=e instanceof ShadowRoot?e.host:e.parentNode}return window}watch(){this.scroller||(this.scroller=this.findScroller(),this.scroller.addEventListener(`scroll`,this.onScroll,{passive:!0}),this.scroller instanceof HTMLElement?typeof ResizeObserver<`u`&&(this.resized??=new ResizeObserver(this.onScroll)).observe(this.scroller):window.addEventListener(`resize`,this.onScroll,{passive:!0}))}unwatch(){cancelAnimationFrame(this.frame),this.frame=0,this.scroller?.removeEventListener(`scroll`,this.onScroll),window.removeEventListener(`resize`,this.onScroll),this.resized?.disconnect(),this.scroller=null}willUpdate(e){if((e.has(`rows`)||e.has(`rowHeight`))&&(this.offsets=null),e.has(`rows`)||e.has(`windowAt`)){if(this.windowed&&this.hasUpdated){let e=this.visible();this.range={from:e.from,to:e.to}}else this.windowed||this.unwatch()}let t=this.shown().map(this.rowKey),n=this.focusKey===null?-1:t.indexOf(this.focusKey);this.roving.current=Math.max(0,n)}updated(e){if(e.has(`cellStyles`)&&this.renderRoot instanceof ShadowRoot&&mt(this.renderRoot,[...this.constructor.elementStyles,...this.cellStyles]),!this.windowed)return;this.watch();let t=!1;for(let e of this.renderRoot.querySelectorAll(`tbody tr[data-key]`)){let n=e.getBoundingClientRect().height,r=e.dataset.key;n>0&&Math.abs(n-(this.heights.get(r)??-1))>.5&&(this.heights.set(r,n),t=!0)}t&&(this.offsets=null),this.held?this.held=!1:this.onScroll()}shown(){return this.windowed?this.rows.slice(this.range.from,Math.min(this.rows.length,this.range.to)):this.rows}rowOf(e){for(let t of e.composedPath())if(t instanceof HTMLElement){if(qi.has(t.tagName))return null;if(t.tagName===`TR`&&t.dataset.key!==void 0)return{tr:t,id:t.dataset.key};if(t===this)break}return null}act(e){this.activatable?L(this,`cae-activate`,{id:e}):(this.selected=e,L(this,`cae-select`,{id:e}))}header(e,t){let n=this.sort?.id===e.id?this.sort.direction:null,r=n===`asc`?`ascending`:n===`desc`?`descending`:j,i=(e=>e.sortable??!!e.compare)(e)?k`<button type="button" class="sort" title=${n===`asc`?t.sortDescending:t.sortAscending} @click=${()=>L(this,`cae-sort`,{id:e.id,direction:n===`asc`?`desc`:`asc`})}>${e.header}${n?k`<span class="arrow" aria-hidden="true">${n===`asc`?`▲`:`▼`}</span>`:j}</button>`:e.header;return k`<th scope="col" role="columnheader" part="header-cell" data-col=${e.id} data-align=${e.align??j} aria-sort=${r} title=${e.tip||j}>${i}</th>`}row(e,t,n){let r=this.rowKey(e),i=this.selected!==null&&this.selected===r;return k`<tr role="row" part=${i?`row row-selected`:`row`} data-key=${r} data-tone=${I(this.rowTone?.(e))} aria-current=${i?`true`:j} aria-rowindex=${this.windowed?t+2:j} ${Ki(this.rowAttrs?.(e))}>
25
- ${this.columns.map(r=>r.id===n?k`<th scope="row" role="rowheader" part="cell" data-col=${r.id} data-align=${r.align??j}>${r.cell(e,t)}</th>`:k`<td role="cell" part="cell" data-col=${r.id} data-align=${r.align??j}>${r.cell(e,t)}</td>`)}
26
- </tr>`}render(){let e=jr(Wi,this.strings),t=this.rows.length,n=this.columns.map(e=>e.width??`minmax(0, 1fr)`).join(` `),r=this.columns.find(e=>e.rowHeader)?.id,i=this.windowed?this.range.from:0,a=this.shown(),o=this.windowed?this.rowStarts():null,s=o?o[i]:0,c=o?o[t]-o[i+a.length]:0;return k`<table part="table" data-scroll="x" role="table" class=${this.activatable?``:`passive`} style="--cae-data-table-columns: ${n}" aria-rowcount=${this.windowed?t+1:j}>
41
+ ${this.source?O`<pre class="df-text">${this.text}</pre>`:O`${t?O`<div class="md-tele jmono">${t}</div>`:A}${Ji(r)}`}`}};H([N()],na.prototype,`text`,void 0),H([N({attribute:!1})],na.prototype,`split`,void 0),H([N({attribute:!1})],na.prototype,`transform`,void 0),H([N({attribute:!1})],na.prototype,`strings`,void 0),H([P()],na.prototype,`source`,void 0);var ra={empty:`No items`},ia=e=>!!e.children?.length,aa=e=>e.selectable??!ia(e);function oa(e,t){for(let n of e){if(n.id===t)return[];let e=n.children?oa(n.children,t):null;if(e)return[n.id,...e]}return null}var sa=k`<path d="M1.5 3.5h4l1.5 1.5h7.5v8h-13z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"></path>`,ca=k`<path d="M3.5 1.5h6l3 3v10h-9z M9.5 1.5v3h3" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"></path>`,la=class extends j{constructor(...e){super(...e),this.items=[],this.selected=null,this.label=``,this.strings={},this.opened=new Map,this.focusId=null,this.isOpen=e=>this.opened.get(e.id)??e.open??!0}static{this.styles=[B,D` :host{display:block;font-size:var(--font-size-md);}.tree{margin:0;padding:2px 0;}.row{display:flex;align-items:center;gap:4px;min-height:24px;padding:0 8px 0 calc((var(--level) - 1) * 14px + 4px);border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;color:var(--text-2);}.row:hover{background:var(--raise);}.row[aria-selected='true']{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--text);box-shadow:inset 2px 0 0 var(--accent);}.row:focus-visible{outline-offset:-2px;}.twist{flex:none;display:inline-grid;place-items:center;width:16px;height:16px;color:var(--text-muted);border-radius:var(--radius-sm);}.twist svg{transition:transform 0.12s ease;}[aria-expanded='true']>.twist svg{transform:rotate(90deg);}.twist:hover{color:var(--text);}.icon{flex:none;width:16px;height:16px;color:var(--text-muted);}.name{overflow:hidden;text-overflow:ellipsis;min-width:0;}.badge{flex:none;margin-left:6px;font-size:11px;padding:0 6px;border-radius:var(--radius-pill);background:var(--raise);color:var(--text-2);}.badge[data-tone]{background:var(--tone-bg);color:var(--tone);}.badge[data-tone='done']{background:none;color:var(--text-2);}.empty{color:var(--text-muted);font-size:var(--font-size-sm);padding:4px 8px;}@media (prefers-reduced-motion:reduce){.twist svg{transition:none;}}`]}willUpdate(e){if(e.has(`selected`)&&this.selected){let e=oa(this.items,this.selected);if(e?.some(e=>!0!==this.opened.get(e))){let t=new Map(this.opened);for(let n of e)t.set(n,!0);this.opened=t}}}updated(e){e.has(`selected`)&&this.selected&&!this.matches(`:focus-within`)&&this.rowOf(this.selected)?.scrollIntoView?.({block:`nearest`})}rowOf(e){return this.renderRoot.querySelector(`[data-id="${CSS.escape(e)}"]`)}setOpen(e,t){ia(e)&&this.isOpen(e)!==t&&(this.opened=new Map(this.opened).set(e.id,t),L(this,`cae-toggle`,{id:e.id,open:t}))}choose(e){this.focusId=e.id,aa(e)?L(this,`cae-select`,{id:e.id}):this.setOpen(e,!this.isOpen(e))}async moveTo(e){this.focusId=e,await this.updateComplete,this.rowOf(e)?.focus()}onKey(e,t,n){let r=t[n],i=r.item,a;switch(e.key){case`ArrowDown`:a=t[n+1];break;case`ArrowUp`:a=t[n-1];break;case`Home`:a=t[0];break;case`End`:a=t[t.length-1];break;case`ArrowRight`:ia(i)&&!this.isOpen(i)?this.setOpen(i,!0):ia(i)&&(a=t[n+1]);break;case`ArrowLeft`:ia(i)&&this.isOpen(i)?this.setOpen(i,!1):r.parent&&(a=t.find(e=>e.item.id===r.parent));break;case`Enter`:case` `:this.choose(i);break;default:{if(e.key.length!==1||e.ctrlKey||e.metaKey||e.altKey||!/\S/.test(e.key))return;let r=e.key.toLowerCase();if(a=[...t.slice(n+1),...t.slice(0,n)].find(e=>e.item.name.toLowerCase().startsWith(r)),!a)return}}e.preventDefault(),a&&this.moveTo(a.item.id)}render(){if(!this.items.length)return O`<div class="empty" part="empty">${jr(ra,this.strings).empty}</div>`;let e=function(e,t){let n=[],r=(e,i,a)=>e.forEach((o,s)=>{n.push({item:o,level:i,parent:a,index:s,siblings:e.length}),ia(o)&&t(o)&&r(o.children,i+1,o.id)});return r(e,1,null),n}(this.items,this.isOpen),t=e.find(e=>e.item.id===this.focusId)??e.find(e=>e.item.id===this.selected)??e[0];return O`<div class="tree" role="tree" part="tree" aria-label=${this.label||A}>
42
+ ${e.map((n,r)=>this.row(n,r,e,n===t))}
43
+ </div>`}row(e,t,n,r){let i=e.item,a=ia(i),o=a&&this.isOpen(i),s=(i.icon??(a?`directory`:`file`))===`directory`;return O`<div class="row" part="item" role="treeitem" data-id=${i.id} tabindex=${r?0:-1} style="--level: ${e.level}" aria-level=${e.level} aria-setsize=${e.siblings} aria-posinset=${e.index+1} aria-expanded=${a?String(o):A} aria-selected=${aa(i)?String(i.id===this.selected):A} @click=${()=>this.choose(i)} @focus=${()=>this.focusId=i.id} @keydown=${e=>this.onKey(e,n,t)} >
44
+ <span class="twist" aria-hidden="true" @click=${e=>{a&&(e.stopPropagation(),this.focusId=i.id,this.setOpen(i,!o))}}>${a?O`<svg width="10" height="10" viewBox="0 0 10 10"><path d="M3 1.5 7 5 3 8.5" fill="none" stroke="currentColor" stroke-width="1.5"></path></svg>`:A}</span>
45
+ <svg class="icon" viewBox="0 0 16 16" aria-hidden="true">${s?sa:ca}</svg>
46
+ <span class="name">${i.name}</span>
47
+ ${i.badge?ei(`badge`,{text:i.badge,tone:i.tone??`neutral`}):A}
48
+ </div>`}};H([N({attribute:!1})],la.prototype,`items`,void 0),H([N({attribute:!1})],la.prototype,`selected`,void 0),H([N()],la.prototype,`label`,void 0),H([N({attribute:!1})],la.prototype,`strings`,void 0),H([P()],la.prototype,`opened`,void 0),H([P()],la.prototype,`focusId`,void 0);var ua=class extends j{constructor(...e){super(...e),this.value=0,this.shown=0,this.frame=0}createRenderRoot(){return this}willUpdate(e){if(!e.has(`value`))return;let t=this.shown,n=this.value;if(cancelAnimationFrame(this.frame),globalThis.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches||t===n||!Number.isFinite(n)||!this.isConnected)return void(this.shown=n);let r=performance.now(),i=e=>{let a=Math.min(1,(e-r)/700);this.shown=Math.round(t+(n-t)*(1-(1-a)**3)),a<1&&(this.frame=requestAnimationFrame(i))};this.frame=requestAnimationFrame(i)}disconnectedCallback(){super.disconnectedCallback(),cancelAnimationFrame(this.frame),this.shown=this.value}render(){return String(this.shown)}};H([N({type:Number})],ua.prototype,`value`,void 0),H([P()],ua.prototype,`shown`,void 0);var da=class extends j{constructor(){super(),this.since=0,new Ir(this)}createRenderRoot(){return this}render(){return this.since?z((Date.now()-this.since)/1e3):``}};H([N({type:Number})],da.prototype,`since`,void 0);var fa={empty:`No rows`,sortAscending:`Sort ascending`,sortDescending:`Sort descending`},pa=D` :host{display:block;container-type:inline-size;}table{display:block;width:100%;border-collapse:collapse;overflow-x:auto;}caption{display:block;text-align:start;}thead,tbody{display:block;}tr{display:grid;grid-template-columns:var(--cae-data-table-columns);column-gap:var(--cae-data-table-gap,12px);align-items:center;padding:var(--cae-data-table-row-padding,6px 12px);}th,td{display:block;min-width:0;padding:0;text-align:start;font-weight:inherit;}[data-align='end']{text-align:end;font-variant-numeric:tabular-nums;}thead tr{color:var(--text-muted);font-size:var(--font-size-sm);border-bottom:1px solid var(--line);}tbody tr{border-bottom:1px solid var(--line);}tbody tr[data-key]{cursor:pointer;}table.passive tbody tr[data-key]{cursor:default;}tbody tr[data-key]:hover{background:var(--raise);}tbody tr[data-key]:focus-visible{outline-offset:-2px;}tbody tr[aria-current='true']{background:var(--accent-bg);}tbody tr[data-tone='running']{background:var(--status-running-bg);}tbody tr[data-tone='failed']{background:color-mix(in srgb,var(--status-failed) 6%,transparent);box-shadow:inset 3px 0 0 var(--status-failed);}tr.spacer{display:block;padding:0;border:0;}tr.empty{display:block;border:0;padding:0;}tr.empty td{color:var(--text-muted);padding:8px;}.sort{display:inline-flex;align-items:center;gap:4px;padding:0;border:0;background:none;color:inherit;font:inherit;cursor:pointer;}.sort:hover{color:var(--text);}.arrow{font-size:0.85em;}`,ma=ti(class extends ni{constructor(e){if(super(e),this.names=[],e.type!==6)throw Error(`attrs() goes on an element`)}render(e){return A}update(e,[t]){let n=e.element,r=Object.keys(t??{});for(let e of this.names)r.includes(e)||n.removeAttribute(e);for(let e of r)n.getAttribute(e)!==t[e]&&n.setAttribute(e,t[e]);return this.names=r,A}}),ha=new Set([`A`,`BUTTON`,`INPUT`,`SELECT`,`TEXTAREA`,`SUMMARY`,`LABEL`]),ga=class extends j{constructor(...e){super(...e),this.columns=[],this.rows=[],this.rowKey=e=>{let t=e.id;return typeof t==`string`||typeof t==`number`?String(t):``},this.activatable=!0,this.selected=null,this.sort=null,this.windowAt=200,this.rowHeight=32,this.caption=``,this.strings={},this.cellStyles=[],this.range={from:0,to:60},this.heights=new Map,this.offsets=null,this.focusKey=null,this.scroller=null,this.resized=null,this.frame=0,this.held=!1,this.roving=new hi(this,{items:()=>[...this.renderRoot.querySelectorAll(`tbody tr[data-key]`)],layout:`vertical`,onMove:e=>this.focusKey=e.dataset.key??null}),this.onScroll=()=>{this.frame||=requestAnimationFrame(()=>{this.frame=0,this.reframe()})},this.onClick=e=>{let t=this.rowOf(e);t&&this.act(t.id)},this.onFocusIn=e=>{let t=this.rowOf(e);t&&(this.focusKey=t.id)},this.onKey=e=>{let t=e.composedPath()[0];if(t instanceof HTMLElement&&t.tagName===`TR`&&t.dataset.key!==void 0){if(e.key===`Enter`)return e.preventDefault(),void this.act(t.dataset.key);if(this.windowed&&(e.key===`Home`||e.key===`End`)){e.preventDefault(),e.stopPropagation();let t=e.key===`End`,n=this.rows[t?this.rows.length-1:0];if(n===void 0)return;this.focusKey=this.rowKey(n);let r=this.rows.length,i=Math.max(1,this.range.to-this.range.from);this.scrollToEnd(t),this.range=t?{from:Math.max(0,r-i),to:r}:{from:0,to:i},this.held=!0,this.updateComplete.then(()=>this.renderRoot.querySelector(`tbody tr[data-key="${CSS.escape(this.focusKey??``)}"]`)?.focus())}}}}static{this.styles=[B,pa]}get windowed(){return this.rows.length>this.windowAt}disconnectedCallback(){super.disconnectedCallback(),this.unwatch()}rowStarts(){if(this.offsets)return this.offsets;let e=0;for(let t of this.heights.values())e+=t;let t=this.heights.size?e/this.heights.size:this.rowHeight;return this.offsets=function(e,t){let n=Array(Math.max(0,e)+1);n[0]=0;for(let r=0;r<e;r++)n[r+1]=n[r]+Math.max(0,t(r));return n}(this.rows.length,e=>this.heights.get(this.rowKey(this.rows[e]))??t)}visible(){let e=this.rowStarts(),t=this.renderRoot.querySelector(`tbody`);if(!t||!this.scroller)return gi(e,0,e.at(-1)/Math.max(1,this.rows.length)*60,0);let n=this.scroller instanceof HTMLElement?{top:this.scroller.getBoundingClientRect().top,height:this.scroller.clientHeight}:{top:0,height:this.scroller.innerHeight};return gi(e,n.top-t.getBoundingClientRect().top,n.height)}scrollToEnd(e){let t=this.renderRoot.querySelector(`tbody`),n=this.scroller;if(!t||!n)return;let r=t.getBoundingClientRect(),i=n instanceof HTMLElement?n.getBoundingClientRect():{top:0,bottom:n.innerHeight},a=e?r.bottom-i.bottom:r.top-i.top;n instanceof HTMLElement?n.scrollTop+=a:n.scrollBy(0,a)}reframe(){let e=this.visible();e.from===this.range.from&&e.to===this.range.to||(this.range={from:e.from,to:e.to})}findScroller(){let e=this.parentNode;for(;e;){if(e instanceof HTMLElement){let t=getComputedStyle(e).overflowY;if((t===`auto`||t===`scroll`||t===`overlay`)&&e.scrollHeight>e.clientHeight+1)return e}e=e instanceof ShadowRoot?e.host:e.parentNode}return window}watch(){this.scroller||(this.scroller=this.findScroller(),this.scroller.addEventListener(`scroll`,this.onScroll,{passive:!0}),this.scroller instanceof HTMLElement?typeof ResizeObserver<`u`&&(this.resized??=new ResizeObserver(this.onScroll)).observe(this.scroller):window.addEventListener(`resize`,this.onScroll,{passive:!0}))}unwatch(){cancelAnimationFrame(this.frame),this.frame=0,this.scroller?.removeEventListener(`scroll`,this.onScroll),window.removeEventListener(`resize`,this.onScroll),this.resized?.disconnect(),this.scroller=null}willUpdate(e){if((e.has(`rows`)||e.has(`rowHeight`))&&(this.offsets=null),e.has(`rows`)||e.has(`windowAt`)){if(this.windowed&&this.hasUpdated){let e=this.visible();this.range={from:e.from,to:e.to}}else this.windowed||this.unwatch()}let t=this.shown().map(this.rowKey),n=this.focusKey===null?-1:t.indexOf(this.focusKey);this.roving.current=Math.max(0,n)}updated(e){if(e.has(`cellStyles`)&&this.renderRoot instanceof ShadowRoot&&ht(this.renderRoot,[...this.constructor.elementStyles,...this.cellStyles]),!this.windowed)return;this.watch();let t=!1;for(let e of this.renderRoot.querySelectorAll(`tbody tr[data-key]`)){let n=e.getBoundingClientRect().height,r=e.dataset.key;n>0&&Math.abs(n-(this.heights.get(r)??-1))>.5&&(this.heights.set(r,n),t=!0)}t&&(this.offsets=null),this.held?this.held=!1:this.onScroll()}shown(){return this.windowed?this.rows.slice(this.range.from,Math.min(this.rows.length,this.range.to)):this.rows}rowOf(e){for(let t of e.composedPath())if(t instanceof HTMLElement){if(ha.has(t.tagName))return null;if(t.tagName===`TR`&&t.dataset.key!==void 0)return{tr:t,id:t.dataset.key};if(t===this)break}return null}act(e){this.activatable?L(this,`cae-activate`,{id:e}):(this.selected=e,L(this,`cae-select`,{id:e}))}header(e,t){let n=this.sort?.id===e.id?this.sort.direction:null,r=n===`asc`?`ascending`:n===`desc`?`descending`:A,i=(e=>e.sortable??!!e.compare)(e)?O`<button type="button" class="sort" title=${n===`asc`?t.sortDescending:t.sortAscending} @click=${()=>L(this,`cae-sort`,{id:e.id,direction:n===`asc`?`desc`:`asc`})}>${e.header}${n?O`<span class="arrow" aria-hidden="true">${n===`asc`?`▲`:`▼`}</span>`:A}</button>`:e.header;return O`<th scope="col" role="columnheader" part="header-cell" data-col=${e.id} data-align=${e.align??A} aria-sort=${r} title=${e.tip||A}>${i}</th>`}row(e,t,n){let r=this.rowKey(e),i=this.selected!==null&&this.selected===r;return O`<tr role="row" part=${i?`row row-selected`:`row`} data-key=${r} data-tone=${I(this.rowTone?.(e))} aria-current=${i?`true`:A} aria-rowindex=${this.windowed?t+2:A} ${ma(this.rowAttrs?.(e))}>
49
+ ${this.columns.map(r=>r.id===n?O`<th scope="row" role="rowheader" part="cell" data-col=${r.id} data-align=${r.align??A}>${r.cell(e,t)}</th>`:O`<td role="cell" part="cell" data-col=${r.id} data-align=${r.align??A}>${r.cell(e,t)}</td>`)}
50
+ </tr>`}render(){let e=jr(fa,this.strings),t=this.rows.length,n=this.columns.map(e=>e.width??`minmax(0, 1fr)`).join(` `),r=this.columns.find(e=>e.rowHeader)?.id,i=this.windowed?this.range.from:0,a=this.shown(),o=this.windowed?this.rowStarts():null,s=o?o[i]:0,c=o?o[t]-o[i+a.length]:0;return O`<table part="table" data-scroll="x" role="table" class=${this.activatable?``:`passive`} style="--cae-data-table-columns: ${n}" aria-rowcount=${this.windowed?t+1:A}>
27
51
  <caption part="caption"><slot name="caption">${this.caption}</slot></caption>
28
52
  <thead part="head" role="rowgroup"><tr role="row">${this.columns.map(t=>this.header(t,e))}</tr></thead>
29
53
  <tbody role="rowgroup" @click=${this.onClick} @keydown=${this.onKey} @focusin=${this.onFocusIn}>
30
- ${s>0?k`<tr class="spacer" aria-hidden="true" style="height: ${s}px"></tr>`:j}
31
- ${H(a,this.rowKey,(e,t)=>this.row(e,i+t,r))}
32
- ${c>0?k`<tr class="spacer" aria-hidden="true" style="height: ${c}px"></tr>`:j}
33
- ${t?j:k`<tr class="empty" role="row"><td part="empty" role="cell" colspan=${this.columns.length||1}><slot name="empty">${e.empty}</slot></td></tr>`}
54
+ ${s>0?O`<tr class="spacer" aria-hidden="true" style="height: ${s}px"></tr>`:A}
55
+ ${V(a,this.rowKey,(e,t)=>this.row(e,i+t,r))}
56
+ ${c>0?O`<tr class="spacer" aria-hidden="true" style="height: ${c}px"></tr>`:A}
57
+ ${t?A:O`<tr class="empty" role="row"><td part="empty" role="cell" colspan=${this.columns.length||1}><slot name="empty">${e.empty}</slot></td></tr>`}
34
58
  </tbody>
35
- </table>`}};U([P({attribute:!1})],Ji.prototype,`columns`,void 0),U([P({attribute:!1})],Ji.prototype,`rows`,void 0),U([P({attribute:!1})],Ji.prototype,`rowKey`,void 0),U([P({attribute:!1})],Ji.prototype,`rowTone`,void 0),U([P({attribute:!1})],Ji.prototype,`rowAttrs`,void 0),U([P({type:Boolean})],Ji.prototype,`activatable`,void 0),U([P()],Ji.prototype,`selected`,void 0),U([P({attribute:!1})],Ji.prototype,`sort`,void 0),U([P({type:Number})],Ji.prototype,`windowAt`,void 0),U([P({type:Number})],Ji.prototype,`rowHeight`,void 0),U([P()],Ji.prototype,`caption`,void 0),U([P({attribute:!1})],Ji.prototype,`strings`,void 0),U([P({attribute:!1})],Ji.prototype,`cellStyles`,void 0),U([F()],Ji.prototype,`range`,void 0);var Yi=O` :host{display:block;container-type:inline-size;}.tiles{display:grid;grid-template-columns:repeat(var(--cae-stat-tiles-columns,5),minmax(0,1fr));gap:var(--cae-stat-tiles-gap,12px);}@container (max-width:1100px){.tiles{grid-template-columns:repeat(4,minmax(0,1fr));}}@container (max-width:660px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr));}}@container (max-width:420px){.tile{padding:10px 12px;}.value{font-size:22px;}}@container (max-width:240px){.tiles{grid-template-columns:minmax(0,1fr);}}.tile{position:relative;background:color-mix(in srgb,var(--text) 2.5%,transparent);border:1px solid var(--line);border-radius:11px;padding:12px 14px;overflow:hidden;}.tile::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--edge,transparent);}.label{font-size:12px;font-weight:600;color:var(--text-muted);}.value{overflow-wrap:anywhere;font-size:28px;font-weight:700;line-height:1.15;margin-top:6px;font-variant-numeric:tabular-nums;letter-spacing:-0.01em;color:var(--text);}.sub{font-size:11.5px;color:var(--text-muted);margin-top:2px;}.action{font-size:11.5px;margin-top:4px;}.tile[data-tone]{--edge:var(--tone);}.tile[data-tone] .value,.tile[data-tone] .label::before{color:var(--tone);}.label[data-mark]::before{display:inline-block;}`,Xi=class extends M{constructor(...e){super(...e),this.tiles=[],this.columns=5,this.bump=!0,this.prev=new Map,this.changed=[]}static{this.styles=[V,Yi]}willUpdate(e){if(e.has(`tiles`))for(let e of this.tiles)typeof e.value==`number`&&((this.prev.get(e.id)??0)!==e.value&&this.changed.push(e.id),this.prev.set(e.id,e.value))}render(){return k`<div class="tiles" part="tiles" style=${this.columns===5?j:`--cae-stat-tiles-columns:${this.columns}`}>
36
- ${H(this.tiles,e=>e.id,e=>this.tile(e))}
37
- </div>`}tile(e){let t=e.tone??`neutral`;return k`<div class="tile" part="tile" data-tone=${I(t)} data-id=${e.id} title=${e.tip??j}>
38
- <div class="label words" part="label" data-mark=${Yr(t)??j}>${e.label}</div>
39
- <div class="value" part="value">${typeof e.value==`number`?k`<cae-count .value=${e.value}></cae-count>`:e.value}</div>
40
- ${(e.sub??[]).map(e=>k`<div class="sub words" part="sub">${di(e)}</div>`)}
41
- ${e.action?k`<div class="action words"><a class="lnk" part="action" href="#" @click=${t=>{t.preventDefault(),e.action&&L(this,`cae-action`,{id:e.id,action:e.action.id})}}>${e.action.label}</a></div>`:j}
42
- </div>`}updated(){let e=this.changed;if(this.changed=[],this.bump&&!globalThis.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches)for(let t of this.renderRoot.querySelectorAll(`.tile`))e.includes(t.dataset.id??``)&&t.animate?.([{transform:`scale(1)`},{transform:`scale(1.04)`,boxShadow:`0 0 0 1px var(--line2)`,offset:.35},{transform:`scale(1)`}],{duration:700,easing:`cubic-bezier(.2,.8,.2,1)`})}};U([P({attribute:!1})],Xi.prototype,`tiles`,void 0),U([P({type:Number})],Xi.prototype,`columns`,void 0),U([P({type:Boolean})],Xi.prototype,`bump`,void 0);var Zi={omitted:e=>e===1?`1 bar not shown`:`${e} bars not shown`,empty:`No bars`},Qi=O` :host{display:block;container-type:inline-size;--label:var(--cae-lanes-label-width,112px);}@container (max-width:760px){.lanes{--label:var(--cae-lanes-label-width,78px);}}@container (max-width:480px){.axis span:nth-child(even){display:none;}}.lanes{position:relative;}.axis{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;color:var(--text-muted);margin:0 0 6px calc(var(--label) + 8px);}.lane{display:grid;grid-template-columns:var(--label) minmax(0,1fr);gap:8px;align-items:center;min-height:24px;padding:4px 0;}.name{font-size:11.5px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.track{position:relative;height:calc(var(--rows,1) * 14px + 2px);border-radius:4px;background:repeating-linear-gradient(90deg,color-mix(in srgb,var(--text) 5%,transparent) 0 1px,transparent 1px 10%);}.bar{position:absolute;top:calc(var(--row,0) * 14px + 2px);height:12px;border-radius:4px;min-width:3px;cursor:default;transform-origin:left center;transition:width 1s linear;}.anim .bar:not(.running){animation:growx 0.6s var(--ease) both;}:is(.bar,.legend i)[data-pattern]{background:var(--bar);}:is(.bar,.legend i)[data-pattern='hatched']{background:repeating-linear-gradient(135deg,var(--bar) 0 3px,color-mix(in srgb,var(--bar) 55%,var(--bg)) 3px 5px);}:is(.bar,.legend i)[data-pattern='outline']{background:none;box-shadow:inset 0 0 0 1.5px var(--bar);}:is(.bar,.legend i)[data-pattern='striped']{background:repeating-linear-gradient(45deg,var(--bar) 0 6px,color-mix(in srgb,var(--bar) 60%,var(--bg)) 6px 12px);background-size:17px 17px;}.bar[data-pattern='striped']{animation:stripes 0.8s linear infinite;box-shadow:0 0 12px color-mix(in srgb,var(--bar) 45%,transparent);}.bar:hover{filter:brightness(1.2);}.now{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--status-running);border-radius:2px;box-shadow:0 0 10px var(--status-running);}.legend{margin-top:10px;}.legend + .legend{margin-top:4px;}`,$i=class extends M{constructor(...e){super(...e),this.lanes=[],this.barStyles={},this.range=null,this.live=!1,this.omitted=0,this.locale=``,this.strings={},this.timer=null,this.drawn=!1}static{this.styles=[V,oi,Qi]}connectedCallback(){super.connectedCallback(),this.tick(this.live)}disconnectedCallback(){super.disconnectedCallback(),this.tick(!1)}updated(e){e.has(`live`)&&this.tick(this.live)}tick(e){e&&!this.timer&&(this.timer=setInterval(()=>this.requestUpdate(),1e3)),!e&&this.timer&&(clearInterval(this.timer),this.timer=null)}time(e,t){let n=this.locale||document.documentElement.lang||void 0;return new Date(e).toLocaleTimeString(n,{hour:`2-digit`,minute:`2-digit`,...t?{second:`2-digit`}:{},hourCycle:`h23`})}render(){let e=jr(Zi,this.strings),t=Date.now(),n=this.range??function(e,t){let n=e.flatMap(e=>e.bars);if(!n.length)return null;let r=Math.min(...n.map(e=>e.start));return{start:r,end:n.some(e=>e.end===null)?r+6e4*Math.ceil((t-r+2e4)/6e4):Math.max(...n.map(e=>e.end??t))}}(this.lanes,t);if(!n)return k`<div part="empty"><slot name="empty">${e.empty}</slot></div>`;let r=!this.drawn;this.drawn=!0;let i=Math.max(1,n.end-n.start),a=this.lanes.some(e=>e.bars.some(e=>e.end===null)),o=i<6e5,s=Math.min(1,(t-n.start)/i);return k`<div class="lanes ${r?`anim`:``}">
43
- <div class="axis" part="axis">${[0,.25,.5,.75,1].map(e=>k`<span>${this.time(n.start+i*e,o)}</span>`)}</div>
44
- ${H(this.lanes,e=>e.id,e=>this.lane(e,n,t))}
45
- ${a?k`<span class="now" part="now" style="left:calc(var(--label) + 8px + (100% - var(--label) - 8px) * ${s.toFixed(4)})"></span>`:j}
46
- </div>
47
- ${this.legends(e)}`}lane(e,t,n){let r=function(e){let t=[];return[...e].sort((e,t)=>e.start-t.start).map(e=>{let n=e.end??1/0,r=t.findIndex(t=>t<=e.start);return r<0?r=t.push(n)-1:t[r]=n,{bar:e,row:r}})}(e.bars),i=Math.max(1,...r.map(e=>e.row+1));return k`<div class="lane" part="lane">
59
+ </table>`}};H([N({attribute:!1})],ga.prototype,`columns`,void 0),H([N({attribute:!1})],ga.prototype,`rows`,void 0),H([N({attribute:!1})],ga.prototype,`rowKey`,void 0),H([N({attribute:!1})],ga.prototype,`rowTone`,void 0),H([N({attribute:!1})],ga.prototype,`rowAttrs`,void 0),H([N({type:Boolean})],ga.prototype,`activatable`,void 0),H([N()],ga.prototype,`selected`,void 0),H([N({attribute:!1})],ga.prototype,`sort`,void 0),H([N({type:Number})],ga.prototype,`windowAt`,void 0),H([N({type:Number})],ga.prototype,`rowHeight`,void 0),H([N()],ga.prototype,`caption`,void 0),H([N({attribute:!1})],ga.prototype,`strings`,void 0),H([N({attribute:!1})],ga.prototype,`cellStyles`,void 0),H([P()],ga.prototype,`range`,void 0);var _a=D` :host{display:block;container-type:inline-size;}.tiles{display:grid;grid-template-columns:repeat(var(--cae-stat-tiles-columns,5),minmax(0,1fr));gap:var(--cae-stat-tiles-gap,12px);}@container (max-width:1100px){.tiles{grid-template-columns:repeat(4,minmax(0,1fr));}}@container (max-width:660px){.tiles{grid-template-columns:repeat(2,minmax(0,1fr));}}@container (max-width:420px){.tile{padding:10px 12px;}.value{font-size:22px;}}@container (max-width:240px){.tiles{grid-template-columns:minmax(0,1fr);}}.tile{position:relative;background:color-mix(in srgb,var(--text) 2.5%,transparent);border:1px solid var(--line);border-radius:11px;padding:12px 14px;overflow:hidden;}.tile::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--edge,transparent);}.label{font-size:12px;font-weight:600;color:var(--text-muted);}.value{overflow-wrap:anywhere;font-size:28px;font-weight:700;line-height:1.15;margin-top:6px;font-variant-numeric:tabular-nums;letter-spacing:-0.01em;color:var(--text);}.sub{font-size:11.5px;color:var(--text-muted);margin-top:2px;}.action{font-size:11.5px;margin-top:4px;}.tile[data-tone]{--edge:var(--tone);}.tile[data-tone] .value,.tile[data-tone] .label::before{color:var(--tone);}.label[data-mark]::before{display:inline-block;}`,va=class extends j{constructor(...e){super(...e),this.tiles=[],this.columns=5,this.bump=!0,this.prev=new Map,this.changed=[]}static{this.styles=[B,_a]}willUpdate(e){if(e.has(`tiles`))for(let e of this.tiles)typeof e.value==`number`&&((this.prev.get(e.id)??0)!==e.value&&this.changed.push(e.id),this.prev.set(e.id,e.value))}render(){return O`<div class="tiles" part="tiles" style=${this.columns===5?A:`--cae-stat-tiles-columns:${this.columns}`}>
60
+ ${V(this.tiles,e=>e.id,e=>this.tile(e))}
61
+ </div>`}tile(e){let t=e.tone??`neutral`;return O`<div class="tile" part="tile" data-tone=${I(t)} data-id=${e.id} title=${e.tip??A}>
62
+ <div class="label words" part="label" data-mark=${Xr(t)??A}>${e.label}</div>
63
+ <div class="value" part="value">${typeof e.value==`number`?O`<cae-count .value=${e.value}></cae-count>`:e.value}</div>
64
+ ${(e.sub??[]).map(e=>O`<div class="sub words" part="sub">${fi(e)}</div>`)}
65
+ ${e.action?O`<div class="action words"><a class="lnk" part="action" href="#" @click=${t=>{t.preventDefault(),e.action&&L(this,`cae-action`,{id:e.id,action:e.action.id})}}>${e.action.label}</a></div>`:A}
66
+ </div>`}updated(){let e=this.changed;if(this.changed=[],this.bump&&!globalThis.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches)for(let t of this.renderRoot.querySelectorAll(`.tile`))e.includes(t.dataset.id??``)&&t.animate?.([{transform:`scale(1)`},{transform:`scale(1.04)`,boxShadow:`0 0 0 1px var(--line2)`,offset:.35},{transform:`scale(1)`}],{duration:700,easing:`cubic-bezier(.2,.8,.2,1)`})}};H([N({attribute:!1})],va.prototype,`tiles`,void 0),H([N({type:Number})],va.prototype,`columns`,void 0),H([N({type:Boolean})],va.prototype,`bump`,void 0);var ya={omitted:e=>e===1?`1 bar not shown`:`${e} bars not shown`,empty:`No bars`},ba=D` :host{display:block;container-type:inline-size;--label:var(--cae-lanes-label-width,112px);}@container (max-width:760px){.lanes{--label:var(--cae-lanes-label-width,78px);}}@container (max-width:480px){.axis span:nth-child(even){display:none;}}.lanes{position:relative;}.axis{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;color:var(--text-muted);margin:0 0 6px calc(var(--label) + 8px);}.lane{display:grid;grid-template-columns:var(--label) minmax(0,1fr);gap:8px;align-items:center;min-height:24px;padding:4px 0;}.name{font-size:11.5px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.track{position:relative;height:calc(var(--rows,1) * 14px + 2px);border-radius:4px;background:repeating-linear-gradient(90deg,color-mix(in srgb,var(--text) 5%,transparent) 0 1px,transparent 1px 10%);}.bar{position:absolute;top:calc(var(--row,0) * 14px + 2px);height:12px;border-radius:4px;min-width:3px;cursor:default;transform-origin:left center;transition:width 1s linear;}.anim .bar:not(.running){animation:growx 0.6s var(--ease) both;}:is(.bar,.legend i)[data-pattern]{background:var(--bar);}:is(.bar,.legend i)[data-pattern='hatched']{background:repeating-linear-gradient(135deg,var(--bar) 0 3px,color-mix(in srgb,var(--bar) 55%,var(--bg)) 3px 5px);}:is(.bar,.legend i)[data-pattern='outline']{background:none;box-shadow:inset 0 0 0 1.5px var(--bar);}:is(.bar,.legend i)[data-pattern='striped']{background:repeating-linear-gradient(45deg,var(--bar) 0 6px,color-mix(in srgb,var(--bar) 60%,var(--bg)) 6px 12px);background-size:17px 17px;}.bar[data-pattern='striped']{animation:stripes 0.8s linear infinite;box-shadow:0 0 12px color-mix(in srgb,var(--bar) 45%,transparent);}.bar:hover{filter:brightness(1.2);}.now{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--status-running);border-radius:2px;box-shadow:0 0 10px var(--status-running);}.legend{margin-top:10px;}.legend + .legend{margin-top:4px;}`,xa=class extends j{constructor(...e){super(...e),this.lanes=[],this.barStyles={},this.range=null,this.live=!1,this.omitted=0,this.locale=``,this.strings={},this.timer=null,this.drawn=!1}static{this.styles=[B,si,ba]}connectedCallback(){super.connectedCallback(),this.tick(this.live)}disconnectedCallback(){super.disconnectedCallback(),this.tick(!1)}updated(e){e.has(`live`)&&this.tick(this.live)}tick(e){e&&!this.timer&&(this.timer=setInterval(()=>this.requestUpdate(),1e3)),!e&&this.timer&&(clearInterval(this.timer),this.timer=null)}time(e,t){let n=this.locale||document.documentElement.lang||void 0;return new Date(e).toLocaleTimeString(n,{hour:`2-digit`,minute:`2-digit`,...t?{second:`2-digit`}:{},hourCycle:`h23`})}render(){let e=jr(ya,this.strings),t=Date.now(),n=this.range??function(e,t){let n=e.flatMap(e=>e.bars);if(!n.length)return null;let r=Math.min(...n.map(e=>e.start));return{start:r,end:n.some(e=>e.end===null)?r+6e4*Math.ceil((t-r+2e4)/6e4):Math.max(...n.map(e=>e.end??t))}}(this.lanes,t);if(!n)return O`<div part="empty"><slot name="empty">${e.empty}</slot></div>`;let r=!this.drawn;this.drawn=!0;let i=Math.max(1,n.end-n.start),a=this.lanes.some(e=>e.bars.some(e=>e.end===null)),o=i<6e5,s=Math.min(1,(t-n.start)/i);return O`<div class="lanes ${r?`anim`:``}">
67
+ <div class="axis" part="axis">${[0,.25,.5,.75,1].map(e=>O`<span>${this.time(n.start+i*e,o)}</span>`)}</div>
68
+ ${V(this.lanes,e=>e.id,e=>this.lane(e,n,t))}
69
+ ${a?O`<span class="now" part="now" style="left:calc(var(--label) + 8px + (100% - var(--label) - 8px) * ${s.toFixed(4)})"></span>`:A}
70
+ </div>
71
+ ${this.legends(e)}`}lane(e,t,n){let r=function(e){let t=[];return[...e].sort((e,t)=>e.start-t.start).map(e=>{let n=e.end??1/0,r=t.findIndex(t=>t<=e.start);return r<0?r=t.push(n)-1:t[r]=n,{bar:e,row:r}})}(e.bars),i=Math.max(1,...r.map(e=>e.row+1));return O`<div class="lane" part="lane">
48
72
  <span class="name" part="lane-label" title=${e.label}>${e.label}</span>
49
73
  <div class="track" part="track" style="--rows:${i}">
50
- ${r.map(({bar:e,row:r})=>{let i=function(e,t,n){let r=Math.max(1,t.end-t.start),i=(e.start-t.start)/r*100,a=((e.end??n)-e.start)/r*100;return{left:i,width:Math.max(.4,e.end===null?Math.min(100-i,a):a)}}(e,t,n),a=this.barStyles[e.style];return k`<span class="bar ${e.end===null?`running`:``}" part="bar" data-style=${e.style} data-pattern=${a?.pattern??`solid`} title=${e.label} style="--bar:${a?.color??`var(--line2)`};--row:${r};left:min(${i.left.toFixed(3)}%, 100% - max(3px, ${i.width.toFixed(3)}%));width:${i.width.toFixed(3)}%"></span>`})}
74
+ ${r.map(({bar:e,row:r})=>{let i=function(e,t,n){let r=Math.max(1,t.end-t.start),i=(e.start-t.start)/r*100,a=((e.end??n)-e.start)/r*100;return{left:i,width:Math.max(.4,e.end===null?Math.min(100-i,a):a)}}(e,t,n),a=this.barStyles[e.style];return O`<span class="bar ${e.end===null?`running`:``}" part="bar" data-style=${e.style} data-pattern=${a?.pattern??`solid`} title=${e.label} style="--bar:${a?.color??`var(--line2)`};--row:${r};left:min(${i.left.toFixed(3)}%, 100% - max(3px, ${i.width.toFixed(3)}%));width:${i.width.toFixed(3)}%"></span>`})}
51
75
  </div>
52
- </div>`}legends(e){let t=[];for(let e of Object.values(this.barStyles)){let n=e.group??0;(t[n]??=[]).push({label:e.label,icon:k`<i data-pattern=${e.pattern??`solid`} style="--bar:${e.color}"></i>`})}let n=t.filter(Boolean);return this.omitted&&(n.length||n.push([]),n[n.length-1].push({label:e.omitted(this.omitted)})),n.map(e=>ai(e))}};U([P({attribute:!1})],$i.prototype,`lanes`,void 0),U([P({attribute:!1})],$i.prototype,`barStyles`,void 0),U([P({attribute:!1})],$i.prototype,`range`,void 0),U([P({type:Boolean})],$i.prototype,`live`,void 0),U([P({type:Number})],$i.prototype,`omitted`,void 0),U([P()],$i.prototype,`locale`,void 0),U([P({attribute:!1})],$i.prototype,`strings`,void 0);var ea={empty:`No values`,showTable:`Show table`,showChart:`Show chart`,label:`Label`,other:`Other`,total:`Total`,none:`—`,scale:(e,t)=>`${e} to ${t}`},ta=`var(--meter)`,na=e=>e<6?`var(--series-${e+1})`:ta;function ra(e,t,n=4){let r=Math.min(0,e),i=Math.max(0,t);if(!(i>r))return{min:0,max:1,ticks:[0,1]};let a=(i-r)/n,o=10**Math.floor(Math.log10(a)),s=[1,2,2.5,5,10].map(e=>e*o).find(e=>e>=a)??10*o,c=Math.floor(r/s)*s,l=Math.ceil(i/s)*s,u=[];for(let e=c;e<=l+s/2;e+=s)u.push(Math.round(e/s)*s);return{min:c,max:l,ticks:u}}function ia(e,t,n){return e<=0||t<=0?1:Math.max(1,Math.ceil(e*n/t))}var aa,oa=e=>String(Math.round(100*e)/100),sa=new Map,ca=class extends M{constructor(...e){super(...e),this.label=``,this.format=oa,this.strings={},this.height=200,this.width=0,this.asTable=!1,this.active=null,this.resized=null,this.fontsLoaded=()=>{sa.clear(),this.requestUpdate()},this.onKey=e=>{let t=this.itemCount();if(!t)return;let n=this.active,r=n,i=this.rowLength(),a=e.key===`ArrowRight`?1:e.key===`ArrowLeft`?-1:e.key===`ArrowDown`?i:e.key===`ArrowUp`?-i:0;if(a)r=n===null?a>0?0:t-1:Math.min(t-1,Math.max(0,n+a));else if(e.key===`Home`)r=0;else if(e.key===`End`)r=t-1;else{if(e.key!==`Escape`)return;r=null}e.preventDefault(),this.active=r}}static{this.styles=[V,oi,O` :host{display:block;min-width:0;}.head{display:flex;align-items:flex-start;gap:12px;margin-bottom:8px;min-height:22px;}.head .legend{flex:1;min-width:0;}.head .legend span{color:var(--text-2);}.switch{margin-left:auto;flex:none;background:none;border:1px solid var(--line);border-radius:999px;padding:2px 10px;font:inherit;font-size:var(--font-size-sm);color:var(--text-muted);cursor:pointer;}.switch:hover,.switch:focus-visible{color:var(--text);border-color:var(--line2);}.plot{position:relative;outline-offset:2px;}.plot:focus-visible{outline:2px solid var(--accent);border-radius:var(--radius-sm);}svg{display:block;overflow:visible;}.axis{font-size:${10.5}px;fill:var(--text-muted);font-variant-numeric:tabular-nums;}.grid{stroke:var(--line);stroke-width:1;shape-rendering:crispEdges;}.base{stroke:var(--line2);stroke-width:1;shape-rendering:crispEdges;}.hit{fill:transparent;}.band{fill:var(--text);opacity:0.05;}.tip{position:absolute;z-index:2;pointer-events:none;padding:6px 9px;border-radius:var(--radius-sm);background:var(--raise);border:1px solid var(--line2);box-shadow:0 4px 14px var(--shadow);color:var(--text);font-size:var(--font-size-sm);white-space:nowrap;line-height:1.45;}.tip b{font-weight:600;}.tip .row{display:flex;align-items:center;gap:6px;}.tip .row i{width:9px;height:9px;border-radius:2px;flex:none;}.tip .row .v{margin-left:auto;padding-left:12px;font-variant-numeric:tabular-nums;}.scale{display:inline-flex;gap:1px;margin-right:6px;vertical-align:-1px;}.legend .scale i{width:12px;height:10px;margin:0;border-radius:2px;}.empty{padding:18px 0;color:var(--text-muted);font-size:var(--font-size-sm);}table{border-collapse:collapse;font-size:var(--font-size-sm);font-variant-numeric:tabular-nums;}.tbl{overflow-x:auto;max-width:100%;}th,td{padding:4px 12px 4px 0;text-align:right;white-space:nowrap;border-bottom:1px solid var(--line);}th{color:var(--text-muted);font-weight:500;}th:first-child,td:first-child{text-align:left;}td{color:var(--text-2);}`]}get words(){return jr(ea,this.strings)}connectedCallback(){super.connectedCallback(),typeof ResizeObserver<`u`&&(this.resized??=new ResizeObserver(e=>{let t=Math.floor(e[0]?.contentRect.width??0);t&&Math.abs(t-this.width)>=1&&(this.width=t)}),this.resized.observe(this),document.fonts?.addEventListener(`loadingdone`,this.fontsLoaded))}disconnectedCallback(){super.disconnectedCallback(),this.resized?.disconnect(),document.fonts?.removeEventListener(`loadingdone`,this.fontsLoaded)}labelWidth(e){let t=getComputedStyle(this);return Math.ceil(function(e,t){if(aa??=typeof document>`u`?null:document.createElement(`canvas`).getContext(`2d`),!aa)return 10.5*e.length*.62;let n=`${t}\n${e}`,r=sa.get(n);return r===void 0&&(aa.font=t,r=aa.measureText(e).width,sa.set(n,r)),r}(e,`${t.fontStyle} ${t.fontWeight} 10.5px ${t.fontFamily}`))+6}firstUpdated(){this.width||=Math.floor(this.getBoundingClientRect().width)||600}get plotWidth(){return Math.max(240,this.width||600)}rowLength(){return 1}render(){let e=this.words;if(!this.hasValues())return k`<div class="empty" part="empty">${e.empty}</div>`;let t=this.legendItems();return k`<div class="head">
53
- ${t.length?ai(t,{label:this.label}):k`<span class="legend"></span>`}
76
+ </div>`}legends(e){let t=[];for(let e of Object.values(this.barStyles)){let n=e.group??0;(t[n]??=[]).push({label:e.label,icon:O`<i data-pattern=${e.pattern??`solid`} style="--bar:${e.color}"></i>`})}let n=t.filter(Boolean);return this.omitted&&(n.length||n.push([]),n[n.length-1].push({label:e.omitted(this.omitted)})),n.map(e=>oi(e))}};H([N({attribute:!1})],xa.prototype,`lanes`,void 0),H([N({attribute:!1})],xa.prototype,`barStyles`,void 0),H([N({attribute:!1})],xa.prototype,`range`,void 0),H([N({type:Boolean})],xa.prototype,`live`,void 0),H([N({type:Number})],xa.prototype,`omitted`,void 0),H([N()],xa.prototype,`locale`,void 0),H([N({attribute:!1})],xa.prototype,`strings`,void 0);var Sa={empty:`No values`,showTable:`Show table`,showChart:`Show chart`,label:`Label`,other:`Other`,total:`Total`,none:`—`,scale:(e,t)=>`${e} to ${t}`},Ca=`var(--meter)`,wa=e=>e<6?`var(--series-${e+1})`:Ca;function Ta(e,t,n=4){let r=Math.min(0,e),i=Math.max(0,t);if(!(i>r))return{min:0,max:1,ticks:[0,1]};let a=(i-r)/n,o=10**Math.floor(Math.log10(a)),s=[1,2,2.5,5,10].map(e=>e*o).find(e=>e>=a)??10*o,c=Math.floor(r/s)*s,l=Math.ceil(i/s)*s,u=[];for(let e=c;e<=l+s/2;e+=s)u.push(Math.round(e/s)*s);return{min:c,max:l,ticks:u}}function Ea(e,t,n){return e<=0||t<=0?1:Math.max(1,Math.ceil(e*n/t))}var Da,Oa=e=>String(Math.round(100*e)/100),ka=new Map,Aa=class extends j{constructor(...e){super(...e),this.label=``,this.format=Oa,this.strings={},this.height=200,this.width=0,this.asTable=!1,this.active=null,this.resized=null,this.fontsLoaded=()=>{ka.clear(),this.requestUpdate()},this.onKey=e=>{let t=this.itemCount();if(!t)return;let n=this.active,r=n,i=this.rowLength(),a=e.key===`ArrowRight`?1:e.key===`ArrowLeft`?-1:e.key===`ArrowDown`?i:e.key===`ArrowUp`?-i:0;if(a)r=n===null?a>0?0:t-1:Math.min(t-1,Math.max(0,n+a));else if(e.key===`Home`)r=0;else if(e.key===`End`)r=t-1;else{if(e.key!==`Escape`)return;r=null}e.preventDefault(),this.active=r}}static{this.styles=[B,si,D` :host{display:block;min-width:0;}.head{display:flex;align-items:flex-start;gap:12px;margin-bottom:8px;min-height:22px;}.head .legend{flex:1;min-width:0;}.head .legend span{color:var(--text-2);}.switch{margin-left:auto;flex:none;background:none;border:1px solid var(--line);border-radius:999px;padding:2px 10px;font:inherit;font-size:var(--font-size-sm);color:var(--text-muted);cursor:pointer;}.switch:hover,.switch:focus-visible{color:var(--text);border-color:var(--line2);}.plot{position:relative;outline-offset:2px;}.plot:focus-visible{outline:2px solid var(--accent);border-radius:var(--radius-sm);}svg{display:block;overflow:visible;}.axis{font-size:${10.5}px;fill:var(--text-muted);font-variant-numeric:tabular-nums;}.grid{stroke:var(--line);stroke-width:1;shape-rendering:crispEdges;}.base{stroke:var(--line2);stroke-width:1;shape-rendering:crispEdges;}.hit{fill:transparent;}.band{fill:var(--text);opacity:0.05;}.tip{position:absolute;z-index:2;pointer-events:none;padding:6px 9px;border-radius:var(--radius-sm);background:var(--raise);border:1px solid var(--line2);box-shadow:0 4px 14px var(--shadow);color:var(--text);font-size:var(--font-size-sm);white-space:nowrap;line-height:1.45;}.tip b{font-weight:600;}.tip .row{display:flex;align-items:center;gap:6px;}.tip .row i{width:9px;height:9px;border-radius:2px;flex:none;}.tip .row .v{margin-left:auto;padding-left:12px;font-variant-numeric:tabular-nums;}.scale{display:inline-flex;gap:1px;margin-right:6px;vertical-align:-1px;}.legend .scale i{width:12px;height:10px;margin:0;border-radius:2px;}.empty{padding:18px 0;color:var(--text-muted);font-size:var(--font-size-sm);}table{border-collapse:collapse;font-size:var(--font-size-sm);font-variant-numeric:tabular-nums;}.tbl{overflow-x:auto;max-width:100%;}th,td{padding:4px 12px 4px 0;text-align:right;white-space:nowrap;border-bottom:1px solid var(--line);}th{color:var(--text-muted);font-weight:500;}th:first-child,td:first-child{text-align:left;}td{color:var(--text-2);}`]}get words(){return jr(Sa,this.strings)}connectedCallback(){super.connectedCallback(),typeof ResizeObserver<`u`&&(this.resized??=new ResizeObserver(e=>{let t=Math.floor(e[0]?.contentRect.width??0);t&&Math.abs(t-this.width)>=1&&(this.width=t)}),this.resized.observe(this),document.fonts?.addEventListener(`loadingdone`,this.fontsLoaded))}disconnectedCallback(){super.disconnectedCallback(),this.resized?.disconnect(),document.fonts?.removeEventListener(`loadingdone`,this.fontsLoaded)}labelWidth(e){let t=getComputedStyle(this);return Math.ceil(function(e,t){if(Da??=typeof document>`u`?null:document.createElement(`canvas`).getContext(`2d`),!Da)return 10.5*e.length*.62;let n=`${t}\n${e}`,r=ka.get(n);return r===void 0&&(Da.font=t,r=Da.measureText(e).width,ka.set(n,r)),r}(e,`${t.fontStyle} ${t.fontWeight} 10.5px ${t.fontFamily}`))+6}firstUpdated(){this.width||=Math.floor(this.getBoundingClientRect().width)||600}get plotWidth(){return Math.max(240,this.width||600)}rowLength(){return 1}render(){let e=this.words;if(!this.hasValues())return O`<div class="empty" part="empty">${e.empty}</div>`;let t=this.legendItems();return O`<div class="head">
77
+ ${t.length?oi(t,{label:this.label}):O`<span class="legend"></span>`}
54
78
  <button type="button" class="switch" part="switch" aria-pressed=${this.asTable} @click=${()=>(this.asTable=!this.asTable,this.active=null)}>${this.asTable?e.showChart:e.showTable}</button>
55
79
  </div>
56
- ${this.asTable?k`<div class="tbl" part="table">${this.table()}</div>`:k`<div class="plot" part="plot" tabindex=${this.itemCount()?0:j} role="group" aria-label=${this.label||j} @keydown=${this.onKey} @blur=${()=>this.active=null} @mouseleave=${()=>this.active=null}>${this.plot()}</div>`}`}tip(e,t,n){let r=this.plotWidth,i=e>.6*r?`right`:`left`;return k`<div class="tip" role="status" style="${i}: ${i===`left`?Math.max(0,e+12):Math.max(0,r-e+12)}px; top: ${Math.max(0,t)}px">${n}</div>`}tipRow(e,t,n){return k`<div class="row">${e?k`<i style="background: ${e}"></i>`:j}<span>${t}</span><span class="v">${n}</span></div>`}};function la(e,t,n,r,i){if(r<=0||n<=0)return``;let a=i?Math.min(4,n/2,r):0;return`M${e},${t+r}V${t+a}${a?`Q${e},${t} ${e+a},${t}`:``}H${e+n-a}${a?`Q${e+n},${t} ${e+n},${t+a}`:``}V${t+r}Z`}U([P()],ca.prototype,`label`,void 0),U([P({attribute:!1})],ca.prototype,`format`,void 0),U([P({attribute:!1})],ca.prototype,`strings`,void 0),U([P({type:Number})],ca.prototype,`height`,void 0),U([F()],ca.prototype,`width`,void 0),U([F()],ca.prototype,`asTable`,void 0),U([F()],ca.prototype,`active`,void 0);var ua=class extends ca{constructor(...e){super(...e),this.x=[],this.series=[],this.stacked=!1}get drawn(){return function(e,t){if(e.length<=6)return e.map((e,t)=>({...e,colour:na(t)}));let n=e.slice(0,5).map((e,t)=>({...e,colour:na(t)})),r=e.slice(5),i=Math.max(...r.map(e=>e.values.length)),a=Array.from({length:i},(e,t)=>{let n=r.map(e=>e.values[t]).filter(e=>e!=null);return n.length?n.reduce((e,t)=>e+t,0):null});return[...n,{name:t,values:a,colour:ta,folded:r.map(e=>e.name)}]}(this.series,this.words.other)}hasValues(){return this.x.length>0&&this.series.some(e=>e.values.some(e=>e!=null))}legendItems(){let e=this.drawn;return e.length>1?e.map(e=>({label:e.name,swatch:e.colour})):[]}itemCount(){return this.x.length}total(e){return this.drawn.reduce((t,n)=>t+Math.max(0,n.values[e]??0),0)}plot(){let e=this.drawn,t=this.x.length,n=e.flatMap(e=>e.values.filter(e=>e!=null)),r=this.stacked?Math.max(0,...this.x.map((e,t)=>this.total(t))):Math.max(0,...n),i=ra(Math.min(0,...n),r),a=Math.max(...i.ticks.map(e=>this.labelWidth(this.format(e))))+4,o=this.plotWidth,s=this.height,c=o-a-4,l=s-8-22,u=e=>8+l-(e-i.min)/(i.max-i.min)*l,d=c/t,f=Math.max(2,Math.min(40,d*(this.stacked||e.length===1?.62:.8))),p=ia(t,c,Math.max(...this.x.map(e=>this.labelWidth(e)))+12),m=[];for(let n=0;n<t;n++){let t=a+n*d+(d-f)/2;if(this.stacked){let r=0,i=e.map(e=>({s:e,v:Math.max(0,e.values[n]??0)})).filter(e=>e.v>0);i.forEach((e,n)=>{let a=u(r+e.v),o=u(r)-a-(n>0?2:0);m.push(A`<path d=${la(t,a,f,Math.max(0,o),n===i.length-1)} fill=${e.s.colour}></path>`),r+=e.v})}else{let r=(f-2*(e.length-1))/e.length;e.forEach((e,i)=>{let a=e.values[n];if(a==null||a===0)return;let o=u(Math.max(0,a)),s=u(Math.min(0,a));m.push(A`<path d=${la(t+i*(r+2),o,Math.max(1,r),s-o,a>0)} fill=${e.colour}></path>`)})}}let h=this.active;return k`<svg width=${o} height=${s} role="img" aria-label=${this.label||j}>
57
- ${i.ticks.map(e=>A`<line class=${e===0?`base`:`grid`} x1=${a} x2=${o-4} y1=${u(e)} y2=${u(e)}></line>
80
+ ${this.asTable?O`<div class="tbl" part="table">${this.table()}</div>`:O`<div class="plot" part="plot" tabindex=${this.itemCount()?0:A} role="group" aria-label=${this.label||A} @keydown=${this.onKey} @blur=${()=>this.active=null} @mouseleave=${()=>this.active=null}>${this.plot()}</div>`}`}tip(e,t,n){let r=this.plotWidth,i=e>.6*r?`right`:`left`;return O`<div class="tip" role="status" style="${i}: ${i===`left`?Math.max(0,e+12):Math.max(0,r-e+12)}px; top: ${Math.max(0,t)}px">${n}</div>`}tipRow(e,t,n){return O`<div class="row">${e?O`<i style="background: ${e}"></i>`:A}<span>${t}</span><span class="v">${n}</span></div>`}};function ja(e,t,n,r,i){if(r<=0||n<=0)return``;let a=i?Math.min(4,n/2,r):0;return`M${e},${t+r}V${t+a}${a?`Q${e},${t} ${e+a},${t}`:``}H${e+n-a}${a?`Q${e+n},${t} ${e+n},${t+a}`:``}V${t+r}Z`}H([N()],Aa.prototype,`label`,void 0),H([N({attribute:!1})],Aa.prototype,`format`,void 0),H([N({attribute:!1})],Aa.prototype,`strings`,void 0),H([N({type:Number})],Aa.prototype,`height`,void 0),H([P()],Aa.prototype,`width`,void 0),H([P()],Aa.prototype,`asTable`,void 0),H([P()],Aa.prototype,`active`,void 0);var Ma=class extends Aa{constructor(...e){super(...e),this.x=[],this.series=[],this.stacked=!1}get drawn(){return function(e,t){if(e.length<=6)return e.map((e,t)=>({...e,colour:wa(t)}));let n=e.slice(0,5).map((e,t)=>({...e,colour:wa(t)})),r=e.slice(5),i=Math.max(...r.map(e=>e.values.length)),a=Array.from({length:i},(e,t)=>{let n=r.map(e=>e.values[t]).filter(e=>e!=null);return n.length?n.reduce((e,t)=>e+t,0):null});return[...n,{name:t,values:a,colour:Ca,folded:r.map(e=>e.name)}]}(this.series,this.words.other)}hasValues(){return this.x.length>0&&this.series.some(e=>e.values.some(e=>e!=null))}legendItems(){let e=this.drawn;return e.length>1?e.map(e=>({label:e.name,swatch:e.colour})):[]}itemCount(){return this.x.length}total(e){return this.drawn.reduce((t,n)=>t+Math.max(0,n.values[e]??0),0)}plot(){let e=this.drawn,t=this.x.length,n=e.flatMap(e=>e.values.filter(e=>e!=null)),r=this.stacked?Math.max(0,...this.x.map((e,t)=>this.total(t))):Math.max(0,...n),i=Ta(Math.min(0,...n),r),a=Math.max(...i.ticks.map(e=>this.labelWidth(this.format(e))))+4,o=this.plotWidth,s=this.height,c=o-a-4,l=s-8-22,u=e=>8+l-(e-i.min)/(i.max-i.min)*l,d=c/t,f=Math.max(2,Math.min(40,d*(this.stacked||e.length===1?.62:.8))),p=Ea(t,c,Math.max(...this.x.map(e=>this.labelWidth(e)))+12),m=[];for(let n=0;n<t;n++){let t=a+n*d+(d-f)/2;if(this.stacked){let r=0,i=e.map(e=>({s:e,v:Math.max(0,e.values[n]??0)})).filter(e=>e.v>0);i.forEach((e,n)=>{let a=u(r+e.v),o=u(r)-a-(n>0?2:0);m.push(k`<path d=${ja(t,a,f,Math.max(0,o),n===i.length-1)} fill=${e.s.colour}></path>`),r+=e.v})}else{let r=(f-2*(e.length-1))/e.length;e.forEach((e,i)=>{let a=e.values[n];if(a==null||a===0)return;let o=u(Math.max(0,a)),s=u(Math.min(0,a));m.push(k`<path d=${ja(t+i*(r+2),o,Math.max(1,r),s-o,a>0)} fill=${e.colour}></path>`)})}}let h=this.active;return O`<svg width=${o} height=${s} role="img" aria-label=${this.label||A}>
81
+ ${i.ticks.map(e=>k`<line class=${e===0?`base`:`grid`} x1=${a} x2=${o-4} y1=${u(e)} y2=${u(e)}></line>
58
82
  <text class="axis" x=${a-6} y=${u(e)} dy="0.32em" text-anchor="end">${this.format(e)}</text>`)}
59
- ${h===null?j:A`<rect class="band" x=${a+h*d} y=${8} width=${d} height=${l}></rect>`}
83
+ ${h===null?A:k`<rect class="band" x=${a+h*d} y=${8} width=${d} height=${l}></rect>`}
60
84
  ${m}
61
- ${this.x.map((e,t)=>t%p===0?A`<text class="axis" x=${a+t*d+d/2} y=${s-6} text-anchor="middle">${e}</text>`:j)}
62
- ${this.x.map((e,t)=>A`<rect class="hit" x=${a+t*d} y=${8} width=${d} height=${l+22} @mouseenter=${()=>this.active=t}></rect>`)}
85
+ ${this.x.map((e,t)=>t%p===0?k`<text class="axis" x=${a+t*d+d/2} y=${s-6} text-anchor="middle">${e}</text>`:A)}
86
+ ${this.x.map((e,t)=>k`<rect class="hit" x=${a+t*d} y=${8} width=${d} height=${l+22} @mouseenter=${()=>this.active=t}></rect>`)}
63
87
  </svg>
64
- ${h!==null&&h<t?this.tip(a+h*d+d/2,8,this.tipBody(h)):j}`}tipBody(e){let t=this.drawn,n=this.words.none;return k`<b>${this.x[e]}</b>
88
+ ${h!==null&&h<t?this.tip(a+h*d+d/2,8,this.tipBody(h)):A}`}tipBody(e){let t=this.drawn,n=this.words.none;return O`<b>${this.x[e]}</b>
65
89
  ${[...t].reverse().map(t=>this.tipRow(t.colour,t.name,t.values[e]===null||t.values[e]===void 0?n:this.format(t.values[e])))}
66
- ${this.stacked&&t.length>1?this.tipRow(null,this.words.total,this.format(this.total(e))):j}`}table(){let e=this.drawn,t=this.words.none,n=this.stacked&&e.length>1;return k`<table aria-label=${this.label||j}>
67
- <thead><tr><th scope="col">${this.words.label}</th>${e.map(e=>k`<th scope="col">${e.name}</th>`)}${n?k`<th scope="col">${this.words.total}</th>`:j}</tr></thead>
68
- <tbody>${this.x.map((r,i)=>k`<tr><th scope="row">${r}</th>${e.map(e=>k`<td>${e.values[i]===null||e.values[i]===void 0?t:this.format(e.values[i])}</td>`)}${n?k`<td>${this.format(this.total(i))}</td>`:j}</tr>`)}</tbody>
69
- </table>`}};U([P({attribute:!1})],ua.prototype,`x`,void 0),U([P({attribute:!1})],ua.prototype,`series`,void 0),U([P({type:Boolean})],ua.prototype,`stacked`,void 0);var da=class extends ca{constructor(...e){super(...e),this.x=[],this.series=[]}hasValues(){return this.x.length>0&&this.series.some(e=>e.values.some(e=>e!=null))}legendItems(){return this.series.length>1?this.series.map((e,t)=>({label:e.name,swatch:na(t)})):[]}itemCount(){return this.x.length}plot(){let e=this.x.length,t=this.series.flatMap(e=>e.values.filter(e=>e!=null)),n=ra(Math.min(0,...t),Math.max(0,...t)),r=Math.max(...n.ticks.map(e=>this.labelWidth(this.format(e))))+4,i=this.plotWidth,a=this.height,o=i-r-10,s=a-8-22,c=e>1?o/(e-1):0,l=t=>e>1?r+t*c:r+o/2,u=e=>8+s-(e-n.min)/(n.max-n.min)*s,d=ia(e,o,Math.max(...this.x.map(e=>this.labelWidth(e)))+12),f=this.active,p=e>1?c:o;return k`<svg width=${i} height=${a} role="img" aria-label=${this.label||j}>
70
- ${n.ticks.map(e=>A`<line class=${e===0?`base`:`grid`} x1=${r} x2=${i-10} y1=${u(e)} y2=${u(e)}></line>
90
+ ${this.stacked&&t.length>1?this.tipRow(null,this.words.total,this.format(this.total(e))):A}`}table(){let e=this.drawn,t=this.words.none,n=this.stacked&&e.length>1;return O`<table aria-label=${this.label||A}>
91
+ <thead><tr><th scope="col">${this.words.label}</th>${e.map(e=>O`<th scope="col">${e.name}</th>`)}${n?O`<th scope="col">${this.words.total}</th>`:A}</tr></thead>
92
+ <tbody>${this.x.map((r,i)=>O`<tr><th scope="row">${r}</th>${e.map(e=>O`<td>${e.values[i]===null||e.values[i]===void 0?t:this.format(e.values[i])}</td>`)}${n?O`<td>${this.format(this.total(i))}</td>`:A}</tr>`)}</tbody>
93
+ </table>`}};H([N({attribute:!1})],Ma.prototype,`x`,void 0),H([N({attribute:!1})],Ma.prototype,`series`,void 0),H([N({type:Boolean})],Ma.prototype,`stacked`,void 0);var Na=class extends Aa{constructor(...e){super(...e),this.x=[],this.series=[]}hasValues(){return this.x.length>0&&this.series.some(e=>e.values.some(e=>e!=null))}legendItems(){return this.series.length>1?this.series.map((e,t)=>({label:e.name,swatch:wa(t)})):[]}itemCount(){return this.x.length}plot(){let e=this.x.length,t=this.series.flatMap(e=>e.values.filter(e=>e!=null)),n=Ta(Math.min(0,...t),Math.max(0,...t)),r=Math.max(...n.ticks.map(e=>this.labelWidth(this.format(e))))+4,i=this.plotWidth,a=this.height,o=i-r-10,s=a-8-22,c=e>1?o/(e-1):0,l=t=>e>1?r+t*c:r+o/2,u=e=>8+s-(e-n.min)/(n.max-n.min)*s,d=Ea(e,o,Math.max(...this.x.map(e=>this.labelWidth(e)))+12),f=this.active,p=e>1?c:o;return O`<svg width=${i} height=${a} role="img" aria-label=${this.label||A}>
94
+ ${n.ticks.map(e=>k`<line class=${e===0?`base`:`grid`} x1=${r} x2=${i-10} y1=${u(e)} y2=${u(e)}></line>
71
95
  <text class="axis" x=${r-6} y=${u(e)} dy="0.32em" text-anchor="end">${this.format(e)}</text>`)}
72
- ${f===null?j:A`<line class="base" x1=${l(f)} x2=${l(f)} y1=${8} y2=${8+s}></line>`}
73
- ${this.series.map((e,t)=>{let n=this.x.map((t,n)=>{let r=e.values[n];return r==null?null:[l(n),u(r)]}),r=n.filter((e,t)=>e&&!n[t-1]&&!n[t+1]);return A`<path d=${function(e){let t=``,n=!1;for(let r of e)r?(t+=`${n?`L`:`M`}${r[0].toFixed(1)},${r[1].toFixed(1)}`,n=!0):n=!1;return t}(n)} fill="none" stroke=${na(t)} stroke-width="2" stroke-linejoin="round" stroke-linecap="round"></path>
74
- ${r.map(e=>A`<circle cx=${e[0]} cy=${e[1]} r="2.5" fill=${na(t)}></circle>`)}`})}
75
- ${f===null?j:this.series.map((e,t)=>{let n=e.values[f];return n==null?j:A`<circle cx=${l(f)} cy=${u(n)} r="4.5" fill=${na(t)} stroke="var(--card)" stroke-width="2"></circle>`})}
76
- ${this.x.map((t,n)=>n%d===0?A`<text class="axis" x=${l(n)} y=${a-6} text-anchor=${e>1&&n===0?`start`:e>1&&n===e-1?`end`:`middle`}>${t}</text>`:j)}
77
- ${this.x.map((e,t)=>A`<rect class="hit" x=${l(t)-p/2} y=${8} width=${p} height=${s+22} @mouseenter=${()=>this.active=t}></rect>`)}
96
+ ${f===null?A:k`<line class="base" x1=${l(f)} x2=${l(f)} y1=${8} y2=${8+s}></line>`}
97
+ ${this.series.map((e,t)=>{let n=this.x.map((t,n)=>{let r=e.values[n];return r==null?null:[l(n),u(r)]}),r=n.filter((e,t)=>e&&!n[t-1]&&!n[t+1]);return k`<path d=${function(e){let t=``,n=!1;for(let r of e)r?(t+=`${n?`L`:`M`}${r[0].toFixed(1)},${r[1].toFixed(1)}`,n=!0):n=!1;return t}(n)} fill="none" stroke=${wa(t)} stroke-width="2" stroke-linejoin="round" stroke-linecap="round"></path>
98
+ ${r.map(e=>k`<circle cx=${e[0]} cy=${e[1]} r="2.5" fill=${wa(t)}></circle>`)}`})}
99
+ ${f===null?A:this.series.map((e,t)=>{let n=e.values[f];return n==null?A:k`<circle cx=${l(f)} cy=${u(n)} r="4.5" fill=${wa(t)} stroke="var(--card)" stroke-width="2"></circle>`})}
100
+ ${this.x.map((t,n)=>n%d===0?k`<text class="axis" x=${l(n)} y=${a-6} text-anchor=${e>1&&n===0?`start`:e>1&&n===e-1?`end`:`middle`}>${t}</text>`:A)}
101
+ ${this.x.map((e,t)=>k`<rect class="hit" x=${l(t)-p/2} y=${8} width=${p} height=${s+22} @mouseenter=${()=>this.active=t}></rect>`)}
78
102
  </svg>
79
- ${f!==null&&f<e?this.tip(l(f),8,this.tipBody(f)):j}`}tipBody(e){let t=this.words.none;return k`<b>${this.x[e]}</b>
80
- ${this.series.map((n,r)=>this.tipRow(na(r),n.name,n.values[e]===null||n.values[e]===void 0?t:this.format(n.values[e])))}`}table(){let e=this.words.none;return k`<table aria-label=${this.label||j}>
81
- <thead><tr><th scope="col">${this.words.label}</th>${this.series.map(e=>k`<th scope="col">${e.name}</th>`)}</tr></thead>
82
- <tbody>${this.x.map((t,n)=>k`<tr><th scope="row">${t}</th>${this.series.map(t=>k`<td>${t.values[n]===null||t.values[n]===void 0?e:this.format(t.values[n])}</td>`)}</tr>`)}</tbody>
83
- </table>`}};U([P({attribute:!1})],da.prototype,`x`,void 0),U([P({attribute:!1})],da.prototype,`series`,void 0);var fa=[16,34,52,72,92],pa=e=>`color-mix(in srgb, var(--series-1) ${e}%, var(--card))`;function ma(e,t,n){if(!(n>t))return fa.length-1;let r=(e-t)/(n-t);return Math.min(fa.length-1,Math.max(0,Math.floor(r*fa.length)))}var ha=class extends ca{constructor(...e){super(...e),this.x=[],this.y=[],this.values=[]}get range(){let e=this.values.flat().filter(e=>e!=null);return e.length?[Math.min(0,...e),Math.max(...e)]:[0,0]}hasValues(){return this.x.length>0&&this.y.length>0&&this.values.some(e=>e.some(e=>e!=null))}legendItems(){let[e,t]=this.range,n=k`<span class="scale" aria-hidden="true">${fa.map(e=>k`<i style="background: ${pa(e)}"></i>`)}</span>`;return[{label:this.words.scale(this.format(e),this.format(t)),icon:n}]}itemCount(){return this.x.length*this.y.length}rowLength(){return this.x.length}plot(){let e=this.x.length,t=this.y.length,[n,r]=this.range,i=Math.max(...this.y.map(e=>this.labelWidth(e)))+2,a=this.plotWidth,o=a-i-2,s=o/e,c=2+22*t+22,l=ia(e,o,Math.max(...this.x.map(e=>this.labelWidth(e)))+12),u=this.active,d=[];for(let a=0;a<t;a++)for(let t=0;t<e;t++){let o=this.values[a]?.[t],c=i+t*s,l=2+22*a,f=a*e+t;d.push(o==null?A`<rect x=${c+1} y=${l+1} width=${Math.max(1,s-2)} height=${20} rx="2" fill="none" stroke="var(--line)" @mouseenter=${()=>this.active=f}></rect>`:A`<rect x=${c+1} y=${l+1} width=${Math.max(1,s-2)} height=${20} rx="2" fill=${pa(fa[ma(o,n,r)]??92)} stroke=${u===f?`var(--text)`:`none`} stroke-width="1.5" @mouseenter=${()=>this.active=f}></rect>`)}let f=u!==null&&u<e*t?{r:Math.floor(u/e),c:u%e}:null;return k`<svg width=${a} height=${c} role="img" aria-label=${this.label||j}>
84
- ${this.y.map((e,t)=>A`<text class="axis" x=${i-6} y=${2+22*t+11} dy="0.32em" text-anchor="end">${e}</text>`)}
103
+ ${f!==null&&f<e?this.tip(l(f),8,this.tipBody(f)):A}`}tipBody(e){let t=this.words.none;return O`<b>${this.x[e]}</b>
104
+ ${this.series.map((n,r)=>this.tipRow(wa(r),n.name,n.values[e]===null||n.values[e]===void 0?t:this.format(n.values[e])))}`}table(){let e=this.words.none;return O`<table aria-label=${this.label||A}>
105
+ <thead><tr><th scope="col">${this.words.label}</th>${this.series.map(e=>O`<th scope="col">${e.name}</th>`)}</tr></thead>
106
+ <tbody>${this.x.map((t,n)=>O`<tr><th scope="row">${t}</th>${this.series.map(t=>O`<td>${t.values[n]===null||t.values[n]===void 0?e:this.format(t.values[n])}</td>`)}</tr>`)}</tbody>
107
+ </table>`}};H([N({attribute:!1})],Na.prototype,`x`,void 0),H([N({attribute:!1})],Na.prototype,`series`,void 0);var Pa=[16,34,52,72,92],Fa=e=>`color-mix(in srgb, var(--series-1) ${e}%, var(--card))`;function Ia(e,t,n){if(!(n>t))return Pa.length-1;let r=(e-t)/(n-t);return Math.min(Pa.length-1,Math.max(0,Math.floor(r*Pa.length)))}var La=class extends Aa{constructor(...e){super(...e),this.x=[],this.y=[],this.values=[]}get range(){let e=this.values.flat().filter(e=>e!=null);return e.length?[Math.min(0,...e),Math.max(...e)]:[0,0]}hasValues(){return this.x.length>0&&this.y.length>0&&this.values.some(e=>e.some(e=>e!=null))}legendItems(){let[e,t]=this.range,n=O`<span class="scale" aria-hidden="true">${Pa.map(e=>O`<i style="background: ${Fa(e)}"></i>`)}</span>`;return[{label:this.words.scale(this.format(e),this.format(t)),icon:n}]}itemCount(){return this.x.length*this.y.length}rowLength(){return this.x.length}plot(){let e=this.x.length,t=this.y.length,[n,r]=this.range,i=Math.max(...this.y.map(e=>this.labelWidth(e)))+2,a=this.plotWidth,o=a-i-2,s=o/e,c=2+22*t+22,l=Ea(e,o,Math.max(...this.x.map(e=>this.labelWidth(e)))+12),u=this.active,d=[];for(let a=0;a<t;a++)for(let t=0;t<e;t++){let o=this.values[a]?.[t],c=i+t*s,l=2+22*a,f=a*e+t;d.push(o==null?k`<rect x=${c+1} y=${l+1} width=${Math.max(1,s-2)} height=${20} rx="2" fill="none" stroke="var(--line)" @mouseenter=${()=>this.active=f}></rect>`:k`<rect x=${c+1} y=${l+1} width=${Math.max(1,s-2)} height=${20} rx="2" fill=${Fa(Pa[Ia(o,n,r)]??92)} stroke=${u===f?`var(--text)`:`none`} stroke-width="1.5" @mouseenter=${()=>this.active=f}></rect>`)}let f=u!==null&&u<e*t?{r:Math.floor(u/e),c:u%e}:null;return O`<svg width=${a} height=${c} role="img" aria-label=${this.label||A}>
108
+ ${this.y.map((e,t)=>k`<text class="axis" x=${i-6} y=${2+22*t+11} dy="0.32em" text-anchor="end">${e}</text>`)}
85
109
  ${d}
86
- ${this.x.map((e,t)=>t%l===0?A`<text class="axis" x=${i+t*s+s/2} y=${c-6} text-anchor="middle">${e}</text>`:j)}
110
+ ${this.x.map((e,t)=>t%l===0?k`<text class="axis" x=${i+t*s+s/2} y=${c-6} text-anchor="middle">${e}</text>`:A)}
87
111
  </svg>
88
- ${f?this.tip(i+f.c*s+s/2,2+22*(f.r+1),this.tipBody(f.r,f.c)):j}`}tipBody(e,t){let n=this.values[e]?.[t];return k`<b>${this.y[e]} | ${this.x[t]}</b>
89
- <div class="row"><span>${n==null?this.words.none:this.format(n)}</span></div>`}table(){let e=this.words.none;return k`<table aria-label=${this.label||j}>
90
- <thead><tr><th scope="col">${this.words.label}</th>${this.x.map(e=>k`<th scope="col">${e}</th>`)}</tr></thead>
91
- <tbody>${this.y.map((t,n)=>k`<tr><th scope="row">${t}</th>${this.x.map((t,r)=>{let i=this.values[n]?.[r];return k`<td>${i==null?e:this.format(i)}</td>`})}</tr>`)}</tbody>
92
- </table>`}};function ga(e){switch(e){case`failed`:return`color-mix(in srgb, var(--status-failed) 72%, var(--card))`;case`attention`:return`color-mix(in srgb, var(--status-attention) 68%, var(--card))`;case`running`:return`color-mix(in srgb, var(--status-running) 60%, var(--card))`;case`done`:return`color-mix(in srgb, var(--status-done) 30%, var(--card))`;case`muted`:return`color-mix(in srgb, var(--text-muted) 26%, var(--card))`;default:return`color-mix(in srgb, var(--text) 12%, var(--card))`}}function _a(e){return e===`done`?`✓`:e===`failed`?`✕`:e===`attention`?`◌`:``}U([P({attribute:!1})],ha.prototype,`x`,void 0),U([P({attribute:!1})],ha.prototype,`y`,void 0),U([P({attribute:!1})],ha.prototype,`values`,void 0);var va=[`failed`,`attention`,`running`,`done`,`muted`,`neutral`],ya=[``,`stripes`,`dots`,`cross`,`lines`];function ba(e){let t=new Map,n=new Map;for(let r of e){let e=t.get(r.tone)??0;t.set(r.tone,e+1),n.set(xa(r),ya[e%ya.length])}return n}var xa=e=>`${e.tone}\0${e.label}`;function Sa(e){let t=new Map;for(let n of e)for(let e of n)e&&!t.has(xa(e))&&t.set(xa(e),e);return[...t.values()].sort((e,t)=>va.indexOf(e.tone)-va.indexOf(t.tone))}var Ca=class extends ca{constructor(...e){super(...e),this.x=[],this.y=[],this.cells=[],this.uid=`sg${Math.random().toString(36).slice(2,8)}`}static{this.styles=[...ca.styles,O` .mark{font-size:11px;font-weight:700;fill:var(--text);pointer-events:none;}.mark.quiet{font-weight:400;fill:var(--text-muted);}.legend .key{display:inline-grid;place-items:center;width:14px;height:14px;margin-right:6px;border-radius:3px;font-size:9.5px;font-weight:700;color:var(--text);vertical-align:-2px;}`]}hasValues(){return this.x.length>0&&this.y.length>0&&this.cells.some(e=>e.some(e=>!!e))}legendItems(){let e=Sa(this.cells),t=ba(e);return e.map(e=>{let n=function(e){let t=`color-mix(in srgb, var(--text) 45%, transparent)`;switch(e){case`stripes`:return`repeating-linear-gradient(45deg, ${t} 0 1.5px, transparent 1.5px 4px)`;case`dots`:return`radial-gradient(${t} 1px, transparent 1.3px) 0 0 / 4px 4px`;case`cross`:return`repeating-linear-gradient(45deg, ${t} 0 1px, transparent 1px 4px), repeating-linear-gradient(-45deg, ${t} 0 1px, transparent 1px 4px)`;case`lines`:return`repeating-linear-gradient(0deg, ${t} 0 1.5px, transparent 1.5px 4px)`;default:return``}}(t.get(xa(e))??``);return{label:e.label,icon:k`<span class="key" aria-hidden="true" data-texture=${t.get(xa(e))||j} style="background: ${n?`${n}, `:``}${ga(e.tone)}">${_a(e.tone)}</span>`}})}itemCount(){return this.x.length*this.y.length}rowLength(){return this.x.length}plot(){let e=this.x.length,t=this.y.length,n=Math.max(...this.y.map(e=>this.labelWidth(e)))+2,r=this.plotWidth,i=r-n-2,a=i/e,o=2+22*t+22,s=ia(e,i,Math.max(...this.x.map(e=>this.labelWidth(e)))+12),c=this.active,l=a-2>=14,u=ba(Sa(this.cells)),d=[];for(let r=0;r<t;r++)for(let t=0;t<e;t++){let i=this.cells[r]?.[t],o=r*e+t,s={x:n+t*a+1,y:2+22*r+1,w:Math.max(1,a-2),h:20};if(!i){d.push(A`<rect x=${s.x} y=${s.y} width=${s.w} height=${s.h} rx="2" fill="none" stroke="var(--line)" @mouseenter=${()=>this.active=o}></rect>`);continue}let f=l?_a(i.tone):``,p=u.get(xa(i))??``;d.push(A`<g @mouseenter=${()=>this.active=o}>
93
- <rect x=${s.x} y=${s.y} width=${s.w} height=${s.h} rx="2" fill=${ga(i.tone)} stroke=${c===o?`var(--text)`:`none`} stroke-width="1.5"></rect>
94
- ${p?A`<rect class="texture" data-texture=${p} x=${s.x} y=${s.y} width=${s.w} height=${s.h} rx="2" fill=${`url(#${this.patternId(p)})`} pointer-events="none"></rect>`:j}
95
- ${f?A`<text class=${i.tone===`done`?`mark quiet`:`mark`} x=${s.x+s.w/2} y=${s.y+s.h/2} dy="0.35em" text-anchor="middle" aria-hidden="true">${f}</text>`:j}
96
- </g>`)}let f=c!==null&&c<e*t?{r:Math.floor(c/e),c:c%e}:null;return k`<svg width=${r} height=${o} role="img" aria-label=${this.label||j}>
112
+ ${f?this.tip(i+f.c*s+s/2,2+22*(f.r+1),this.tipBody(f.r,f.c)):A}`}tipBody(e,t){let n=this.values[e]?.[t];return O`<b>${this.y[e]} | ${this.x[t]}</b>
113
+ <div class="row"><span>${n==null?this.words.none:this.format(n)}</span></div>`}table(){let e=this.words.none;return O`<table aria-label=${this.label||A}>
114
+ <thead><tr><th scope="col">${this.words.label}</th>${this.x.map(e=>O`<th scope="col">${e}</th>`)}</tr></thead>
115
+ <tbody>${this.y.map((t,n)=>O`<tr><th scope="row">${t}</th>${this.x.map((t,r)=>{let i=this.values[n]?.[r];return O`<td>${i==null?e:this.format(i)}</td>`})}</tr>`)}</tbody>
116
+ </table>`}};function Ra(e){switch(e){case`failed`:return`color-mix(in srgb, var(--status-failed) 72%, var(--card))`;case`attention`:return`color-mix(in srgb, var(--status-attention) 68%, var(--card))`;case`running`:return`color-mix(in srgb, var(--status-running) 60%, var(--card))`;case`done`:return`color-mix(in srgb, var(--status-done) 30%, var(--card))`;case`muted`:return`color-mix(in srgb, var(--text-muted) 26%, var(--card))`;default:return`color-mix(in srgb, var(--text) 12%, var(--card))`}}function za(e){return e===`done`?`✓`:e===`failed`?`✕`:e===`attention`?`◌`:``}H([N({attribute:!1})],La.prototype,`x`,void 0),H([N({attribute:!1})],La.prototype,`y`,void 0),H([N({attribute:!1})],La.prototype,`values`,void 0);var Ba=[`failed`,`attention`,`running`,`done`,`muted`,`neutral`],Va=[``,`stripes`,`dots`,`cross`,`lines`];function Ha(e){let t=new Map,n=new Map;for(let r of e){let e=t.get(r.tone)??0;t.set(r.tone,e+1),n.set(Ua(r),Va[e%Va.length])}return n}var Ua=e=>`${e.tone}\0${e.label}`;function Wa(e){let t=new Map;for(let n of e)for(let e of n)e&&!t.has(Ua(e))&&t.set(Ua(e),e);return[...t.values()].sort((e,t)=>Ba.indexOf(e.tone)-Ba.indexOf(t.tone))}var Ga=class extends Aa{constructor(...e){super(...e),this.x=[],this.y=[],this.cells=[],this.uid=`sg${Math.random().toString(36).slice(2,8)}`}static{this.styles=[...Aa.styles,D` .mark{font-size:11px;font-weight:700;fill:var(--text);pointer-events:none;}.mark.quiet{font-weight:400;fill:var(--text-muted);}.legend .key{display:inline-grid;place-items:center;width:14px;height:14px;margin-right:6px;border-radius:3px;font-size:9.5px;font-weight:700;color:var(--text);vertical-align:-2px;}`]}hasValues(){return this.x.length>0&&this.y.length>0&&this.cells.some(e=>e.some(e=>!!e))}legendItems(){let e=Wa(this.cells),t=Ha(e);return e.map(e=>{let n=function(e){let t=`color-mix(in srgb, var(--text) 45%, transparent)`;switch(e){case`stripes`:return`repeating-linear-gradient(45deg, ${t} 0 1.5px, transparent 1.5px 4px)`;case`dots`:return`radial-gradient(${t} 1px, transparent 1.3px) 0 0 / 4px 4px`;case`cross`:return`repeating-linear-gradient(45deg, ${t} 0 1px, transparent 1px 4px), repeating-linear-gradient(-45deg, ${t} 0 1px, transparent 1px 4px)`;case`lines`:return`repeating-linear-gradient(0deg, ${t} 0 1.5px, transparent 1.5px 4px)`;default:return``}}(t.get(Ua(e))??``);return{label:e.label,icon:O`<span class="key" aria-hidden="true" data-texture=${t.get(Ua(e))||A} style="background: ${n?`${n}, `:``}${Ra(e.tone)}">${za(e.tone)}</span>`}})}itemCount(){return this.x.length*this.y.length}rowLength(){return this.x.length}plot(){let e=this.x.length,t=this.y.length,n=Math.max(...this.y.map(e=>this.labelWidth(e)))+2,r=this.plotWidth,i=r-n-2,a=i/e,o=2+22*t+22,s=Ea(e,i,Math.max(...this.x.map(e=>this.labelWidth(e)))+12),c=this.active,l=a-2>=14,u=Ha(Wa(this.cells)),d=[];for(let r=0;r<t;r++)for(let t=0;t<e;t++){let i=this.cells[r]?.[t],o=r*e+t,s={x:n+t*a+1,y:2+22*r+1,w:Math.max(1,a-2),h:20};if(!i){d.push(k`<rect x=${s.x} y=${s.y} width=${s.w} height=${s.h} rx="2" fill="none" stroke="var(--line)" @mouseenter=${()=>this.active=o}></rect>`);continue}let f=l?za(i.tone):``,p=u.get(Ua(i))??``;d.push(k`<g @mouseenter=${()=>this.active=o}>
117
+ <rect x=${s.x} y=${s.y} width=${s.w} height=${s.h} rx="2" fill=${Ra(i.tone)} stroke=${c===o?`var(--text)`:`none`} stroke-width="1.5"></rect>
118
+ ${p?k`<rect class="texture" data-texture=${p} x=${s.x} y=${s.y} width=${s.w} height=${s.h} rx="2" fill=${`url(#${this.patternId(p)})`} pointer-events="none"></rect>`:A}
119
+ ${f?k`<text class=${i.tone===`done`?`mark quiet`:`mark`} x=${s.x+s.w/2} y=${s.y+s.h/2} dy="0.35em" text-anchor="middle" aria-hidden="true">${f}</text>`:A}
120
+ </g>`)}let f=c!==null&&c<e*t?{r:Math.floor(c/e),c:c%e}:null;return O`<svg width=${r} height=${o} role="img" aria-label=${this.label||A}>
97
121
  ${this.patterns(new Set(u.values()))}
98
- ${this.y.map((e,t)=>A`<text class="axis" x=${n-6} y=${2+22*t+11} dy="0.32em" text-anchor="end">${e}</text>`)}
122
+ ${this.y.map((e,t)=>k`<text class="axis" x=${n-6} y=${2+22*t+11} dy="0.32em" text-anchor="end">${e}</text>`)}
99
123
  ${d}
100
- ${this.x.map((e,t)=>t%s===0?A`<text class="axis" x=${n+t*a+a/2} y=${o-6} text-anchor="middle">${e}</text>`:j)}
124
+ ${this.x.map((e,t)=>t%s===0?k`<text class="axis" x=${n+t*a+a/2} y=${o-6} text-anchor="middle">${e}</text>`:A)}
101
125
  </svg>
102
- ${f?this.tip(n+f.c*a+a/2,2+22*(f.r+1),this.tipBody(f.r,f.c)):j}`}patternId(e){return`${this.uid}-${e}`}patterns(e){let t=e=>A`<path d=${e} stroke="var(--text)" stroke-opacity="0.45" stroke-width="1.2"></path>`;return A`<defs>${[...e].filter(e=>e).map(e=>A`<pattern id=${this.patternId(e)} width="5" height="5" patternUnits="userSpaceOnUse">${(e=>e===`stripes`?t(`M-1 1 L1 -1 M0 5 L5 0 M4 6 L6 4`):e===`dots`?A`<circle cx="2.5" cy="2.5" r="0.9" fill="var(--text)" fill-opacity="0.5"></circle>`:t(e===`cross`?`M0 0 L5 5 M5 0 L0 5`:`M0 2.5 L5 2.5`))(e)}</pattern>`)}</defs>`}tipBody(e,t){let n=this.cells[e]?.[t];return k`<b>${this.y[e]} | ${this.x[t]}</b>
103
- <div class="row">${n?k`<i style="background: ${ga(n.tone)}"></i><span>${n.label}</span>`:k`<span>${this.words.none}</span>`}</div>
104
- ${n?.tip?k`<div class="row"><span>${n.tip}</span></div>`:j}`}table(){let e=this.words.none;return k`<table aria-label=${this.label||j}>
105
- <thead><tr><th scope="col">${this.words.label}</th>${this.x.map(e=>k`<th scope="col">${e}</th>`)}</tr></thead>
106
- <tbody>${this.y.map((t,n)=>k`<tr><th scope="row">${t}</th>${this.x.map((t,r)=>{let i=this.cells[n]?.[r];return k`<td title=${i?.tip||j}>${i?i.label:e}</td>`})}</tr>`)}</tbody>
107
- </table>`}};U([P({attribute:!1})],Ca.prototype,`x`,void 0),U([P({attribute:!1})],Ca.prototype,`y`,void 0),U([P({attribute:!1})],Ca.prototype,`cells`,void 0);var wa=class extends ca{constructor(...e){super(...e),this.bars=[]}static{this.styles=[...ca.styles,O` .bars{display:grid;grid-template-columns:minmax(80px,max-content) minmax(0,1fr) max-content;gap:6px 12px;align-items:center;font-size:var(--font-size-sm);}.bars .r{display:contents;}.bars .l{color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:34ch;}.bars .track{display:block;height:12px;}.bars .bar{display:block;height:100%;min-width:2px;border-radius:1px 4px 4px 1px;background:var(--series-1);}.bars .bar[data-tone]{background:var(--tone);}.bars .v{color:var(--text-2);font-variant-numeric:tabular-nums;text-align:right;}`]}hasValues(){return this.bars.length>0}legendItems(){return[]}itemCount(){return 0}plot(){let e=Math.max(0,...this.bars.map(e=>e.value));return k`<div class="bars" role="list" aria-label=${this.label||j}>
108
- ${this.bars.map(t=>k`<div class="r" role="listitem" aria-label="${t.label} | ${this.format(t.value)}">
126
+ ${f?this.tip(n+f.c*a+a/2,2+22*(f.r+1),this.tipBody(f.r,f.c)):A}`}patternId(e){return`${this.uid}-${e}`}patterns(e){let t=e=>k`<path d=${e} stroke="var(--text)" stroke-opacity="0.45" stroke-width="1.2"></path>`;return k`<defs>${[...e].filter(e=>e).map(e=>k`<pattern id=${this.patternId(e)} width="5" height="5" patternUnits="userSpaceOnUse">${(e=>e===`stripes`?t(`M-1 1 L1 -1 M0 5 L5 0 M4 6 L6 4`):e===`dots`?k`<circle cx="2.5" cy="2.5" r="0.9" fill="var(--text)" fill-opacity="0.5"></circle>`:t(e===`cross`?`M0 0 L5 5 M5 0 L0 5`:`M0 2.5 L5 2.5`))(e)}</pattern>`)}</defs>`}tipBody(e,t){let n=this.cells[e]?.[t];return O`<b>${this.y[e]} | ${this.x[t]}</b>
127
+ <div class="row">${n?O`<i style="background: ${Ra(n.tone)}"></i><span>${n.label}</span>`:O`<span>${this.words.none}</span>`}</div>
128
+ ${n?.tip?O`<div class="row"><span>${n.tip}</span></div>`:A}`}table(){let e=this.words.none;return O`<table aria-label=${this.label||A}>
129
+ <thead><tr><th scope="col">${this.words.label}</th>${this.x.map(e=>O`<th scope="col">${e}</th>`)}</tr></thead>
130
+ <tbody>${this.y.map((t,n)=>O`<tr><th scope="row">${t}</th>${this.x.map((t,r)=>{let i=this.cells[n]?.[r];return O`<td title=${i?.tip||A}>${i?i.label:e}</td>`})}</tr>`)}</tbody>
131
+ </table>`}};H([N({attribute:!1})],Ga.prototype,`x`,void 0),H([N({attribute:!1})],Ga.prototype,`y`,void 0),H([N({attribute:!1})],Ga.prototype,`cells`,void 0);var Ka=class extends Aa{constructor(...e){super(...e),this.bars=[]}static{this.styles=[...Aa.styles,D` .bars{display:grid;grid-template-columns:minmax(80px,max-content) minmax(0,1fr) max-content;gap:6px 12px;align-items:center;font-size:var(--font-size-sm);}.bars .r{display:contents;}.bars .l{color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:34ch;}.bars .track{display:block;height:12px;}.bars .bar{display:block;height:100%;min-width:2px;border-radius:1px 4px 4px 1px;background:var(--series-1);}.bars .bar[data-tone]{background:var(--tone);}.bars .v{color:var(--text-2);font-variant-numeric:tabular-nums;text-align:right;}`]}hasValues(){return this.bars.length>0}legendItems(){return[]}itemCount(){return 0}plot(){let e=Math.max(0,...this.bars.map(e=>e.value));return O`<div class="bars" role="list" aria-label=${this.label||A}>
132
+ ${this.bars.map(t=>O`<div class="r" role="listitem" aria-label="${t.label} | ${this.format(t.value)}">
109
133
  <span class="l" aria-hidden="true" title=${t.label}>${t.label}</span>
110
134
  <span class="track" aria-hidden="true"><span class="bar" data-tone=${I(t.tone)} style="width: ${e>0?100*Math.max(0,t.value)/e:0}%"></span></span>
111
135
  <span class="v" aria-hidden="true">${this.format(t.value)}</span></div>`)}
112
- </div>`}table(){return k`<table aria-label=${this.label||j}>
113
- <tbody>${this.bars.map(e=>k`<tr><th scope="row">${e.label}</th><td>${this.format(e.value)}</td></tr>`)}</tbody>
114
- </table>`}};U([P({attribute:!1})],wa.prototype,`bars`,void 0);var Ta={name:`Name`,expected:`Expected`,actual:`Value`,verdict:`Check`,optional:`optional`,items:e=>e===1?`1 item`:`${e} items`,object:`object`},Ea=O` .verdict{font-size:12px;}.verdict[data-verdict='pass']{color:var(--text-2);}.verdict[data-verdict='pass']>[aria-hidden]{color:var(--status-done);font-weight:700;}.verdict[data-verdict='fail']{color:var(--status-failed);font-weight:600;}.verdict[data-verdict='warn']{color:var(--status-attention);}.verdict[data-verdict='none']{color:var(--text-muted);}`,Da=O` :host{display:block;max-width:100%;}table{width:auto;max-width:100%;border-collapse:collapse;}th{text-align:left;font-size:11.5px;color:var(--text-muted);font-weight:600;padding:4px 20px 4px 0;border-bottom:1px solid var(--line);}td{padding:5px 20px 5px 0;border:0;border-bottom:1px solid var(--line);vertical-align:baseline;font-size:12.5px;}th:last-child,td:last-child{padding-right:0;}td.value{overflow-wrap:anywhere;}tbody tr:last-child td{border-bottom:0;}td:first-child{font-weight:600;overflow-wrap:anywhere;}td:last-child{white-space:nowrap;}i{font-style:normal;color:var(--text-muted);font-size:11px;margin-left:4px;}.js{color:var(--code-string);}.jn{color:var(--code-number);}`;function Oa(e,t,n=``){if(e===`none`&&!t)return j;let r=e===`pass`?`✓`:e===`fail`?`✕`:``;return k`<span class="verdict" part="verdict" data-verdict=${e} title=${n||j}>${r?k`<span aria-hidden="true">${r}</span> `:j}${t}</span>`}var ka=(e,t)=>e.length>t?`${e.slice(0,t)}…`:e,Aa=class extends M{constructor(...e){super(...e),this.rows=[],this.showValues=!0,this.strings={}}static{this.styles=[V,Ea,Da]}render(){let e=jr(Ta,this.strings),t=this.showValues;return k`<table part="table">
136
+ </div>`}table(){return O`<table aria-label=${this.label||A}>
137
+ <tbody>${this.bars.map(e=>O`<tr><th scope="row">${e.label}</th><td>${this.format(e.value)}</td></tr>`)}</tbody>
138
+ </table>`}};H([N({attribute:!1})],Ka.prototype,`bars`,void 0);var qa={name:`Name`,expected:`Expected`,actual:`Value`,verdict:`Check`,optional:`optional`,items:e=>e===1?`1 item`:`${e} items`,object:`object`},Ja=D` .verdict{font-size:12px;}.verdict[data-verdict='pass']{color:var(--text-2);}.verdict[data-verdict='pass']>[aria-hidden]{color:var(--status-done);font-weight:700;}.verdict[data-verdict='fail']{color:var(--status-failed);font-weight:600;}.verdict[data-verdict='warn']{color:var(--status-attention);}.verdict[data-verdict='none']{color:var(--text-muted);}`,Ya=D` :host{display:block;max-width:100%;}table{width:auto;max-width:100%;border-collapse:collapse;}th{text-align:left;font-size:11.5px;color:var(--text-muted);font-weight:600;padding:4px 20px 4px 0;border-bottom:1px solid var(--line);}td{padding:5px 20px 5px 0;border:0;border-bottom:1px solid var(--line);vertical-align:baseline;font-size:12.5px;}th:last-child,td:last-child{padding-right:0;}td.value{overflow-wrap:anywhere;}tbody tr:last-child td{border-bottom:0;}td:first-child{font-weight:600;overflow-wrap:anywhere;}td:last-child{white-space:nowrap;}i{font-style:normal;color:var(--text-muted);font-size:11px;margin-left:4px;}.js{color:var(--code-string);}.jn{color:var(--code-number);}`;function Xa(e,t,n=``){if(e===`none`&&!t)return A;let r=e===`pass`?`✓`:e===`fail`?`✕`:``;return O`<span class="verdict" part="verdict" data-verdict=${e} title=${n||A}>${r?O`<span aria-hidden="true">${r}</span> `:A}${t}</span>`}var Za=(e,t)=>e.length>t?`${e.slice(0,t)}…`:e,Qa=class extends j{constructor(...e){super(...e),this.rows=[],this.showValues=!0,this.strings={}}static{this.styles=[B,Ja,Ya]}render(){let e=jr(qa,this.strings),t=this.showValues;return O`<table part="table">
115
139
  <thead><tr>
116
140
  <th scope="col">${e.name}</th><th scope="col">${e.expected}</th>
117
- ${t?k`<th scope="col">${e.actual}</th><th scope="col">${e.verdict}</th>`:j}
141
+ ${t?O`<th scope="col">${e.actual}</th><th scope="col">${e.verdict}</th>`:A}
118
142
  </tr></thead>
119
143
  <tbody>
120
- ${this.rows.map(n=>k`<tr part="row">
144
+ ${this.rows.map(n=>O`<tr part="row">
121
145
  <td class="jmono">${n.name}</td>
122
- <td class=${n.extra?`jdim`:`jmono jdim`}>${n.expected}${n.optional?k` <i>${e.optional}</i>`:j}</td>
123
- ${t?k`<td class="value">${function(e,t){if(e===void 0)return k`<span class="jdim">—</span>`;if(typeof e==`string`)return k`<span class="js" title=${e}>"${ka(e,90)}"</span>`;if(Array.isArray(e)){let n=e.slice(0,3).map(e=>typeof e==`string`?`"${ka(e,28)}"`:JSON.stringify(e)).join(`, `);return k`<span class="jn">${t.items(e.length)}</span>
124
- <span class="jdim">${n}${e.length>3?`, …`:``}</span>`}return typeof e==`object`&&e?k`<span class="jn">${t.object}</span> <span class="jdim">${Object.keys(e).slice(0,4).join(`, `)}</span>`:k`<span class="jn">${JSON.stringify(e)}</span>`}(n.hasValue?n.value:void 0,e)}</td>
125
- <td>${Oa(n.verdict,n.verdictLabel,n.tip)}</td>`:j}
146
+ <td class=${n.extra?`jdim`:`jmono jdim`}>${n.expected}${n.optional?O` <i>${e.optional}</i>`:A}</td>
147
+ ${t?O`<td class="value">${function(e,t){if(e===void 0)return O`<span class="jdim">—</span>`;if(typeof e==`string`)return O`<span class="js" title=${e}>"${Za(e,90)}"</span>`;if(Array.isArray(e)){let n=e.slice(0,3).map(e=>typeof e==`string`?`"${Za(e,28)}"`:JSON.stringify(e)).join(`, `);return O`<span class="jn">${t.items(e.length)}</span>
148
+ <span class="jdim">${n}${e.length>3?`, …`:``}</span>`}return typeof e==`object`&&e?O`<span class="jn">${t.object}</span> <span class="jdim">${Object.keys(e).slice(0,4).join(`, `)}</span>`:O`<span class="jn">${JSON.stringify(e)}</span>`}(n.hasValue?n.value:void 0,e)}</td>
149
+ <td>${Xa(n.verdict,n.verdictLabel,n.tip)}</td>`:A}
126
150
  </tr>`)}
127
151
  </tbody>
128
- </table>`}};U([P({attribute:!1})],Aa.prototype,`rows`,void 0),U([P({type:Boolean})],Aa.prototype,`showValues`,void 0),U([P({attribute:!1})],Aa.prototype,`strings`,void 0);var ja={sortBy:`Sort`,rowsHeader:`Row`},Ma=O` :host{display:contents;}.mxblock{display:flex;flex-direction:column;width:fit-content;max-width:100%;min-width:min(100%,27rem);animation:view-in 0.1s var(--ease) both;}@keyframes view-in{from{opacity:0;}}@media (prefers-reduced-motion:reduce){.mxblock{animation:none;}}.mxbar{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;margin-bottom:8px;font-size:12px;color:var(--text-2);width:0;min-width:100%;box-sizing:border-box;}.mxbar .cap{color:var(--text);font-weight:600;}.mxbar .sum{flex:1 0 100%;min-width:0;}.mxbar .f{white-space:nowrap;}.sep{color:var(--text-muted);}.mxbar label{display:inline-flex;align-items:center;gap:6px;margin-left:auto;color:var(--text-muted);font-size:11.5px;white-space:nowrap;}.mxbar select{font:inherit;font-size:11.5px;color:var(--text);background:var(--card);border:1px solid var(--line);border-radius:6px;padding:2px 6px;}.mxbar select:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:1px;}.mx{overflow:auto;max-width:100%;max-height:max(${360}px,${pt(70)}vh);border-radius:6px;border:1px solid var(--line);}table.matrix{border-collapse:separate;border-spacing:0;font-size:11px;width:100%;min-width:max-content;}.matrix th,.matrix td{padding:0 6px;height:${24}px;border-bottom:1px solid var(--line);white-space:nowrap;}.matrix thead th{position:sticky;z-index:2;background:var(--panel2);color:var(--text-muted);font-weight:500;text-align:center;height:22px;}.matrix thead th.nh{font-family:var(--mono);color:var(--text-2);font-weight:600;max-width:110px;overflow:hidden;text-overflow:ellipsis;}.matrix thead th.group{color:var(--text-2);}.matrix thead th.group.code{font-family:var(--mono);color:var(--text-muted);}.matrix .uh,.matrix tbody th{position:sticky;left:0;z-index:1;background:var(--panel);text-align:left;}.matrix thead .uh{z-index:3;}.matrix thead .uh,.matrix thead .pn{background:var(--panel2);}.matrix tbody th{font-family:var(--mono);font-weight:600;color:var(--text);max-width:220px;overflow:hidden;text-overflow:ellipsis;}.matrix tbody th.none{font-family:var(--sans);font-weight:500;color:var(--text-muted);}.matrix .pn{text-align:right;color:var(--text-muted);font-variant-numeric:tabular-nums;}.matrix .pn.many{color:var(--text);font-weight:600;}.matrix td.c{text-align:center;--m:12px;}.matrix td.c .mark{vertical-align:middle;}.matrix .g0{border-left:1px solid var(--line2);}.matrix .g1{border-left:1px dashed var(--line);}.matrix tbody tr:hover td,.matrix tbody tr:hover th{background-color:color-mix(in srgb,var(--text-muted) 8%,transparent);}.matrix tbody tr.on td,.matrix tbody tr.on th{background-color:var(--accent-bg);}.matrix .gap td{padding:0;border:0;}.mx.hl .mark:not(.on){opacity:0.4;}.mx.hl .mark.on{transform:scale(1.2);}`,Na={caption:``,label:``,head:[],columns:[],rows:[]},Pa=class extends M{constructor(...e){super(...e),this.matrix=Na,this.states={},this.selected=null,this.highlight=null,this.key=``,this.windowAt=150,this.strings={},this.renderIcon=e=>pi(e),this.iconStyles=[],this.hover=null,this.scrollRow=0,this.cell=null,this.onScroll=e=>{let t=Math.floor(e.currentTarget.scrollTop/24);Math.abs(t-this.scrollRow)>=15&&(this.scrollRow=t)}}static{this.styles=[V,Jr,Ma]}static{this.properties={matrix:{attribute:!1},states:{attribute:!1},selected:{attribute:!1},highlight:{attribute:!1},key:{},windowAt:{type:Number},strings:{attribute:!1},renderIcon:{attribute:!1},iconStyles:{attribute:!1},hover:{state:!0},scrollRow:{state:!0}}}willUpdate(e){e.has(`key`)&&e.get(`key`)!==void 0&&(this.scrollRow=0,this.cell=null)}updated(e){e.has(`iconStyles`)&&this.renderRoot instanceof ShadowRoot&&mt(this.renderRoot,[...this.constructor.elementStyles,...this.iconStyles])}lit(){if(this.hover!==null)return this.hover;let e=this.selected?this.matrix.rows.find(e=>e.cells.some(e=>e?.id===this.selected)):void 0;return e?e.id||this.selected:this.highlight}select(e){e!==this.selected&&L(this,`cae-select`,{id:e})}act(e){e.drill?L(this,`cae-drill`,{id:e.id}):L(this,`cae-activate`,{id:e.id})}render(){let e=this.matrix,t=jr(ja,this.strings),n=e.rows,r=e.columns,i=this.lit(),a=r.map((e,t)=>{let n=r[t-1]?.groups;if(!n)return-1;let i=e.groups.findIndex((e,t)=>e!==n[t]);return i<0?e.groups.length===n.length?-1:Math.min(e.groups.length,n.length):i}),o=e.head.length,s=!!e.value,c=s?2:1,l=n.length>this.windowAt,u=l?Math.max(0,this.scrollRow-30):0,d=l?Math.min(n.length,this.scrollRow+60+20):n.length,f=this.cell&&this.cell[0]<n.length?this.cell:function(e){for(let t=0;t<e.length;t++){let n=e[t]?.cells.findIndex(e=>e!==null)??-1;if(n>=0)return[t,n]}return null}(n),p=e=>e===0||a[e]===0?`g0`:(a[e]??-1)>0?`g1`:``,m=(e,t,n)=>{let r=`top:${22*n}px`;return e.type===`group`?k`<th scope="colgroup" part="head-cell" colspan=${e.span} class="group ${e.code?`code`:``} ${p(t)}" style=${r} title=${e.tip??j} aria-label=${e.summary??j}>${e.label}</th>`:k`<th scope="col" part="head-cell" rowspan=${e.rows} class="nh ${p(t)}" style=${r} title=${e.tip??j} aria-label=${e.summary??j}>${(e.icons??[]).map(e=>this.renderIcon(e))}${e.label}</th>`},h=(e.facts??[]).filter(e=>typeof e==`string`?e:e.text);return k`<div class="mxblock view">
152
+ </table>`}};H([N({attribute:!1})],Qa.prototype,`rows`,void 0),H([N({type:Boolean})],Qa.prototype,`showValues`,void 0),H([N({attribute:!1})],Qa.prototype,`strings`,void 0);var $a={sortBy:`Sort`,rowsHeader:`Row`},eo=D` :host{display:contents;}.mxblock{display:flex;flex-direction:column;width:fit-content;max-width:100%;min-width:min(100%,27rem);animation:view-in 0.1s var(--ease) both;}@keyframes view-in{from{opacity:0;}}@media (prefers-reduced-motion:reduce){.mxblock{animation:none;}}.mxbar{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;margin-bottom:8px;font-size:12px;color:var(--text-2);width:0;min-width:100%;box-sizing:border-box;}.mxbar .cap{color:var(--text);font-weight:600;}.mxbar .sum{flex:1 0 100%;min-width:0;}.mxbar .f{white-space:nowrap;}.sep{color:var(--text-muted);}.mxbar label{display:inline-flex;align-items:center;gap:6px;margin-left:auto;color:var(--text-muted);font-size:11.5px;white-space:nowrap;}.mxbar select{font:inherit;font-size:11.5px;color:var(--text);background:var(--card);border:1px solid var(--line);border-radius:6px;padding:2px 6px;}.mxbar select:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:1px;}.mx{overflow:auto;max-width:100%;max-height:max(${360}px,${mt(70)}vh);border-radius:6px;border:1px solid var(--line);}table.matrix{border-collapse:separate;border-spacing:0;font-size:11px;width:100%;min-width:max-content;}.matrix th,.matrix td{padding:0 6px;height:${24}px;border-bottom:1px solid var(--line);white-space:nowrap;}.matrix thead th{position:sticky;z-index:2;background:var(--panel2);color:var(--text-muted);font-weight:500;text-align:center;height:22px;}.matrix thead th.nh{font-family:var(--mono);color:var(--text-2);font-weight:600;max-width:110px;overflow:hidden;text-overflow:ellipsis;}.matrix thead th.group{color:var(--text-2);}.matrix thead th.group.code{font-family:var(--mono);color:var(--text-muted);}.matrix .uh,.matrix tbody th{position:sticky;left:0;z-index:1;background:var(--panel);text-align:left;}.matrix thead .uh{z-index:3;}.matrix thead .uh,.matrix thead .pn{background:var(--panel2);}.matrix tbody th{font-family:var(--mono);font-weight:600;color:var(--text);max-width:220px;overflow:hidden;text-overflow:ellipsis;}.matrix tbody th.none{font-family:var(--sans);font-weight:500;color:var(--text-muted);}.matrix .pn{text-align:right;color:var(--text-muted);font-variant-numeric:tabular-nums;}.matrix .pn.many{color:var(--text);font-weight:600;}.matrix td.c{text-align:center;--m:12px;}.matrix td.c .mark{vertical-align:middle;}.matrix .g0{border-left:1px solid var(--line2);}.matrix .g1{border-left:1px dashed var(--line);}.matrix tbody tr:hover td,.matrix tbody tr:hover th{background-color:color-mix(in srgb,var(--text-muted) 8%,transparent);}.matrix tbody tr.on td,.matrix tbody tr.on th{background-color:var(--accent-bg);}.matrix .gap td{padding:0;border:0;}.mx.hl .mark:not(.on){opacity:0.4;}.mx.hl .mark.on{transform:scale(1.2);}`,to={caption:``,label:``,head:[],columns:[],rows:[]},no=class extends j{constructor(...e){super(...e),this.matrix=to,this.states={},this.selected=null,this.highlight=null,this.key=``,this.windowAt=150,this.strings={},this.renderIcon=e=>mi(e),this.iconStyles=[],this.hover=null,this.scrollRow=0,this.cell=null,this.onScroll=e=>{let t=Math.floor(e.currentTarget.scrollTop/24);Math.abs(t-this.scrollRow)>=15&&(this.scrollRow=t)}}static{this.styles=[B,Yr,eo]}static{this.properties={matrix:{attribute:!1},states:{attribute:!1},selected:{attribute:!1},highlight:{attribute:!1},key:{},windowAt:{type:Number},strings:{attribute:!1},renderIcon:{attribute:!1},iconStyles:{attribute:!1},hover:{state:!0},scrollRow:{state:!0}}}willUpdate(e){e.has(`key`)&&e.get(`key`)!==void 0&&(this.scrollRow=0,this.cell=null)}updated(e){e.has(`iconStyles`)&&this.renderRoot instanceof ShadowRoot&&ht(this.renderRoot,[...this.constructor.elementStyles,...this.iconStyles])}lit(){if(this.hover!==null)return this.hover;let e=this.selected?this.matrix.rows.find(e=>e.cells.some(e=>e?.id===this.selected)):void 0;return e?e.id||this.selected:this.highlight}select(e){e!==this.selected&&L(this,`cae-select`,{id:e})}act(e){e.drill?L(this,`cae-drill`,{id:e.id}):L(this,`cae-activate`,{id:e.id})}render(){let e=this.matrix,t=jr($a,this.strings),n=e.rows,r=e.columns,i=this.lit(),a=r.map((e,t)=>{let n=r[t-1]?.groups;if(!n)return-1;let i=e.groups.findIndex((e,t)=>e!==n[t]);return i<0?e.groups.length===n.length?-1:Math.min(e.groups.length,n.length):i}),o=e.head.length,s=!!e.value,c=s?2:1,l=n.length>this.windowAt,u=l?Math.max(0,this.scrollRow-30):0,d=l?Math.min(n.length,this.scrollRow+60+20):n.length,f=this.cell&&this.cell[0]<n.length?this.cell:function(e){for(let t=0;t<e.length;t++){let n=e[t]?.cells.findIndex(e=>e!==null)??-1;if(n>=0)return[t,n]}return null}(n),p=e=>e===0||a[e]===0?`g0`:(a[e]??-1)>0?`g1`:``,m=(e,t,n)=>{let r=`top:${22*n}px`;return e.type===`group`?O`<th scope="colgroup" part="head-cell" colspan=${e.span} class="group ${e.code?`code`:``} ${p(t)}" style=${r} title=${e.tip??A} aria-label=${e.summary??A}>${e.label}</th>`:O`<th scope="col" part="head-cell" rowspan=${e.rows} class="nh ${p(t)}" style=${r} title=${e.tip??A} aria-label=${e.summary??A}>${(e.icons??[]).map(e=>this.renderIcon(e))}${e.label}</th>`},h=(e.facts??[]).filter(e=>typeof e==`string`?e:e.text);return O`<div class="mxblock view">
129
153
  <div class="mxbar">
130
- <span class="cap" title=${e.captionTip??j}>${e.caption}</span>
131
- ${e.sorts?.length?k`<label>${t.sortBy}
154
+ <span class="cap" title=${e.captionTip??A}>${e.caption}</span>
155
+ ${e.sorts?.length?O`<label>${t.sortBy}
132
156
  <select part="sort" @change=${e=>L(this,`cae-sort`,{id:e.target.value,direction:`asc`})}>
133
- ${e.sorts.map(t=>k`<option value=${t.id} ?selected=${e.sort===t.id}>${t.label}</option>`)}
157
+ ${e.sorts.map(t=>O`<option value=${t.id} ?selected=${e.sort===t.id}>${t.label}</option>`)}
134
158
  </select>
135
- </label>`:j}
136
- <span class="sum">${h.map((e,t)=>k`${t?k`<span class="sep"> | </span>`:j}${typeof e==`string`?k`<span class="f">${e}</span>`:k`<span class="f tone-text" data-tone=${I(e.tone)}>${e.text}</span>`}`)}</span>
159
+ </label>`:A}
160
+ <span class="sum">${h.map((e,t)=>O`${t?O`<span class="sep"> | </span>`:A}${typeof e==`string`?O`<span class="f">${e}</span>`:O`<span class="f tone-text" data-tone=${I(e.tone)}>${e.text}</span>`}`)}</span>
137
161
  </div>
138
162
  <div class="mx ${i?`hl`:``}" @scroll=${this.onScroll} @mouseleave=${()=>this.hover=null}>
139
163
  <table class="matrix big" part="matrix" role="grid" aria-rowcount=${n.length+o} aria-colcount=${r.length+c} aria-label=${e.label}>
140
164
  <thead>
141
- ${e.head.map((n,r)=>{let i=(t=>{let n=[],r=0;for(let i of e.head[t]??[]){for(;Fa(e.head,t,r);)r++;n.push(r),r+=i.span}return n})(r);return k`<tr>
142
- ${r===0?k`<th scope="col" rowspan=${o} class="uh" style="top:0">${t.rowsHeader}</th>
143
- ${s?k`<th scope="col" rowspan=${o} class="pn" style="top:0" title=${e.value?.tip??j}>${e.value?.label}</th>`:j}`:j}
165
+ ${e.head.map((n,r)=>{let i=(t=>{let n=[],r=0;for(let i of e.head[t]??[]){for(;ro(e.head,t,r);)r++;n.push(r),r+=i.span}return n})(r);return O`<tr>
166
+ ${r===0?O`<th scope="col" rowspan=${o} class="uh" style="top:0">${t.rowsHeader}</th>
167
+ ${s?O`<th scope="col" rowspan=${o} class="pn" style="top:0" title=${e.value?.tip??A}>${e.value?.label}</th>`:A}`:A}
144
168
  ${n.map((e,t)=>m(e,i[t]??0,r))}
145
169
  </tr>`})}
146
170
  </thead>
147
171
  <tbody @keydown=${e=>this.onKey(e,n)}>
148
- ${u>0?k`<tr class="gap" aria-hidden="true"><td colspan=${r.length+c} style="height:${24*u}px"></td></tr>`:j}
149
- ${H(n.slice(u,d),e=>e.id,(e,t)=>{let n=u+t;return k`<tr class=${e.id&&e.id===i?`on`:``} aria-rowindex=${n+o+1}>
150
- <th scope="row" part="row-header" class=${e.muted?`none`:j} title=${e.tip??e.label}>${e.label}</th>
151
- ${s?k`<td class="pn ${e.strong?`many`:``}">${e.value}</td>`:j}
152
- ${e.cells.map((t,r)=>{let o=!!t&&f!==null&&f[0]===n&&f[1]===r;return k`<td class="c ${(e=>a[e]===0?`g0`:(a[e]??-1)>0?`g1`:``)(r)}" role="gridcell">${t?this.mark(e,t,n,r,o,i):j}</td>`})}
172
+ ${u>0?O`<tr class="gap" aria-hidden="true"><td colspan=${r.length+c} style="height:${24*u}px"></td></tr>`:A}
173
+ ${V(n.slice(u,d),e=>e.id,(e,t)=>{let n=u+t;return O`<tr class=${e.id&&e.id===i?`on`:``} aria-rowindex=${n+o+1}>
174
+ <th scope="row" part="row-header" class=${e.muted?`none`:A} title=${e.tip??e.label}>${e.label}</th>
175
+ ${s?O`<td class="pn ${e.strong?`many`:``}">${e.value}</td>`:A}
176
+ ${e.cells.map((t,r)=>{let o=!!t&&f!==null&&f[0]===n&&f[1]===r;return O`<td class="c ${(e=>a[e]===0?`g0`:(a[e]??-1)>0?`g1`:``)(r)}" role="gridcell">${t?this.mark(e,t,n,r,o,i):A}</td>`})}
153
177
  </tr>`})}
154
- ${d<n.length?k`<tr class="gap" aria-hidden="true"><td colspan=${r.length+c} style="height:${24*(n.length-d)}px"></td></tr>`:j}
178
+ ${d<n.length?O`<tr class="gap" aria-hidden="true"><td colspan=${r.length+c} style="height:${24*(n.length-d)}px"></td></tr>`:A}
155
179
  </tbody>
156
180
  </table>
157
181
  </div>
158
- </div>`}mark(e,t,n,r,i,a){let o=this.states[t.state],s=e.id||t.id,c=this.selected===t.id;return k`<button type="button" part="mark" class="mark ${e.id&&e.id===a?`on`:``} ${c?`sel`:``}" data-tone=${I(o?.tone)} data-shape=${o?.shape??j} data-r=${n} data-c=${r} tabindex=${i?0:-1} title=${t.tip??j} aria-label=${t.label} aria-pressed=${c} @mouseenter=${()=>this.hover=s} @focus=${()=>{this.hover=s,this.cell=[n,r],this.select(t.id)}} @blur=${()=>this.hover=null} @click=${()=>this.select(t.id)} @dblclick=${()=>this.act(t)}></button>`}onKey(e,t){let n=e.target;if(!n.classList.contains(`mark`))return;let r=Number(n.dataset.r),i=Number(n.dataset.c);if(e.key===`Enter`){let n=t[r]?.cells[i];e.preventDefault(),n&&this.act(n);return}let a=function(e,t,n,r,i=!1,a=10){let o=(t,n)=>!0===e[t]?.[n],s=t=>(e[t]??[]).findIndex(Boolean),c=t=>(e[t]??[]).lastIndexOf(!0),l=t=>{let r=e[t]??[],i=-1;return r.forEach((e,t)=>e&&(i<0||Math.abs(t-n)<Math.abs(i-n))&&(i=t)),i<0?null:[t,i]};switch(r){case`ArrowRight`:case`ArrowLeft`:{let i=r===`ArrowRight`?1:-1;for(let r=n+i;r>=0&&r<(e[t]?.length??0);r+=i)if(o(t,r))return[t,r];return null}case`ArrowDown`:case`ArrowUp`:{let i=r===`ArrowDown`?1:-1,a=((t,n,r)=>{for(let i=t;i>=0&&i<e.length;i+=n)if(o(i,r))return i;return-1})(t+i,i,n);if(a>=0)return[a,n];for(let n=t+i;n>=0&&n<e.length;n+=i)if(s(n)>=0)return l(n);return null}case`Home`:{let n=i?e.findIndex(e=>e.some(Boolean)):t;return n<0||s(n)<0?null:[n,s(n)]}case`End`:{let n=t;if(i)for(n=e.length-1;n>=0&&c(n)<0;n--);return n<0||c(n)<0?null:[n,c(n)]}case`PageDown`:case`PageUp`:{let n=r===`PageDown`?1:-1;for(let r=Math.max(0,Math.min(e.length-1,t+n*a));r!==t;r-=n)if(s(r)>=0)return l(r);return null}default:return null}}(t.map(e=>e.cells.map(e=>e!==null)),r,i,e.key,e.ctrlKey||e.metaKey);if(!a)return;e.preventDefault(),this.cell=a;let o=this.renderRoot.querySelector(`.mx`);if(o&&t.length>this.windowAt){let e=24*a[0];(e<o.scrollTop+48||e>o.scrollTop+o.clientHeight-72)&&(o.scrollTop=Math.max(0,e-o.clientHeight/2)),this.scrollRow=Math.floor(o.scrollTop/24)}this.requestUpdate(),this.updateComplete.then(()=>this.renderRoot.querySelector(`.matrix .mark[data-r="${a[0]}"][data-c="${a[1]}"]`)?.focus())}};function Fa(e,t,n){for(let r=0;r<t;r++){let i=0;for(let a of e[r]??[]){if(n>=i&&n<i+a.span&&r+a.rows>t)return!0;i+=a.span}}return!1}var Ia=(e,t,n)=>{let r=e.get(t);r?r.push(n):e.set(t,[n])},La=(e,t)=>`${e}\0${t}`;function Ra(e,t,n){let r=new Set(e),i=new Map(e.map(e=>[e,[]]));for(let[e,n]of t)e!==n&&r.has(e)&&r.has(n)&&!i.get(e)?.includes(n)&&i.get(e)?.push(n);let a=new Set,o=new Map;for(let t of e){if(o.has(t))continue;o.set(t,1);let e=[[t,0]];for(;e.length;){let t=e[e.length-1],n=i.get(t[0])??[];if(t[1]<n.length){let r=n[t[1]++],i=o.get(r);i===1?a.add(La(t[0],r)):i||(o.set(r,1),e.push([r,0]))}else o.set(t[0],2),e.pop()}}let s=new Map(e.map(e=>[e,[]])),c=new Map(e.map(e=>[e,[]]));for(let[e,t]of i)for(let n of t)a.has(La(e,n))||(s.get(e)?.push(n),c.get(n)?.push(e));let l=new Map(e.map(e=>[e,c.get(e)?.length??0])),u=e.filter(e=>!l.get(e)),d=new Map;for(let e=u.shift();e!==void 0;e=u.shift()){d.set(e,n.get(e)??Math.max(0,...(c.get(e)??[]).map(e=>(d.get(e)??0)+1)));for(let t of s.get(e)??[])l.set(t,(l.get(t)??0)-1),l.get(t)||u.push(t)}return d}var W=e=>e.startsWith(`~`);function za(e,t,n){let r=new Map;e.forEach((e,t)=>e.forEach(e=>r.set(e,t)));let i=new Map,a=new Map;for(let[e,n]of t)Ia(a,e,n),Ia(i,n,e);let o=new Map,s=e=>e.forEach((e,t)=>o.set(e,t)),c=e.map(e=>[...e]);c.forEach(s);let l=()=>function(e,t,n,r){let i=0,a=new Map;for(let[e,i]of t){let t=r.get(e);t!==void 0&&Ia(a,t,[n.get(e)??0,n.get(i)??0])}for(let e of a.values())for(let t=0;t<e.length;t++)for(let n=t+1;n<e.length;n++){let[r,a]=e[t],[o,s]=e[n];(r-o)*(a-s)<0&&i++}return e.length?i:0}(c,t,o,r),u=c.map(e=>[...e]),d=l(),f=(e,t)=>{let r=new Map;for(let n of e){let e=(t.get(n)??[]).map(e=>o.get(e)).filter(e=>e!==void 0);r.set(n,e.length?e.reduce((e,t)=>e+t,0)/e.length:o.get(n)??0)}let i=e=>r.get(e)??0;if(!n)return[...e].sort((e,t)=>i(e)-i(t)||(o.get(e)??0)-(o.get(t)??0));let a=e.filter(e=>!W(e)),s=e.filter(W).sort((e,t)=>i(e)-i(t)||(o.get(e)??0)-(o.get(t)??0)),c=[],l=0;for(let e of a){for(;l<s.length&&i(s[l])<i(e);)c.push(s[l++]);c.push(e)}return[...c,...s.slice(l)]};for(let e=0;e<4;e++){let t=e%2==0,n=t?c.map((e,t)=>t).slice(1):c.map((e,t)=>t).reverse().slice(1);for(let e of n){let n=f(c[e],t?i:a);c[e]=n,s(n)}let r=l();r<d&&(d=r,u=c.map(e=>[...e]))}return l()<=d?c:u}var Ba=new WeakMap;function Va(e,t,n=!1){let r=Ba.get(e)??[],i=r.find(e=>e.prev===t&&e.down===n);if(i)return i.out;let a=function(e,t,n){let r=new Set(e.clusters.map(e=>e.id)),i=new Map(e.clusters.map(e=>[e.id,e.parent])),a=new Map;for(let t of e.nodes)t.cluster&&a.set(t.id,t.cluster);let o=[...new Set(e.stubs.map(e=>e.id))],s=new Set(o),c=e=>{let t=[],n=r.has(e)?e:a.get(e)??null;for(;n;)t.push(n),n=i.get(n)??null;return t},l=(e,t)=>{let n=c(e);if(t===``)return n[n.length-1]??e;let r=n.indexOf(t);return r<0?void 0:r===0?e:n[r-1]},u=(e,t)=>c(e).find(e=>c(t).includes(e))??``,d=[``,...e.clusters.map(e=>e.id)],f=new Map(d.map(e=>[e,[]]));for(let{id:t}of e.nodes)for(let e of d){let n=l(t,e);n===void 0||f.get(e)?.includes(n)||f.get(e)?.push(n)}let p=new Map;for(let n of d){let r=f.get(n)??[],i=n===``?t?.layers:t?.clusters[n],a=new Map;i?.forEach((e,t)=>e.forEach(e=>r.includes(e)&&a.set(e,t)));let o=e.edges.filter(e=>e.ranks&&u(e.from,e.to)===n).map(e=>[l(e.from,n),l(e.to,n)]);p.set(n,Ra(r,o,a))}let m=p.get(``),h=new Map;t?.layers.forEach((e,t)=>e.forEach(e=>h.set(e,t)));let g=new Map(o.map(t=>[t,h.get(t)??Math.min(...e.stubs.filter(e=>e.id===t).map(e=>m.get(l(e.to,``))??0))-1]));if([...g.values()].some(e=>e<0)){for(let[e,t]of m)m.set(e,t+1);for(let[e,t]of g)g.set(e,t+1)}for(let[e,t]of g)m.set(e,t);let _=(e,t)=>p.get(e)?.get(t)??0,v=e=>Math.max(0,...p.get(e)?.values()??[]),y=e.edges.map(e=>((e,t)=>{let n=u(e,t);return _(n,l(e,n))>=_(n,l(t,n))})(e.from,e.to)),b=new Map;for(let e of d){let n=((e===``?t?.layers:t?.clusters[e])??[]).flat(),r=[...e===``?[...o]:[],...f.get(e)??[]];r.sort((e,t)=>{let r=n.indexOf(e),i=n.indexOf(t);return(r<0?1/0:r)-(i<0?1/0:i)});let i=Array.from({length:v(e)+1},()=>[]);for(let t of r)i[_(e,t)]?.push(t);b.set(e,i)}let x=[],S=new Set,ee=(e,t,n,r)=>{let i=`~${e}|${t}|${n}|${r}`;return S.has(i)||(S.add(i),b.get(e)?.[r]?.push(i)),{id:i,in:e}},te=(e,t,n,r)=>{let i=_(e,t),a=`~${e}|by:${t}|${n}|${r}|${i}`;return S.has(a)||(S.add(a),b.get(e)?.[i]?.push(a)),{id:a,in:e}},ne=(e,t,r)=>{let o=s.has(e)?``:u(e,t),d=(p=e,s.has(p)?``:a.get(p)??``),f=e;var p;let m=[{id:e,in:d}];for(;d!==o;){let e=i.get(d)??``;m.push({id:d,in:e}),_(d,f)<v(d)&&m.push(te(e,d,f,r)),f=d,d=e}let h=l(t,o);for(let e=_(o,f)+1;e<_(o,h);e++)m.push(ee(o,f,r,e));let g=c(t),y=g.slice(0,o===``?g.length:g.indexOf(o)).reverse(),b=`>${o}:${f}`,x=o;for(let e of y){let i=l(t,e);(_(e,i)>0||n)&&m.push(te(x,e,b,r)),m.push({id:e,in:x}),x=e}return m.push({id:t,in:x}),m};e.edges.forEach((e,t)=>{y[t]||x.push({from:e.from,to:e.to,style:e.style,steps:ne(e.from,e.to,e.style)})});for(let t of e.stubs)x.push({from:t.id,to:t.to,style:t.style,steps:ne(t.id,t.to,t.style)});let re={};for(let e of d){let n=[],r=new Map((b.get(e)??[]).flatMap((e,t)=>e.map(e=>[e,t])));for(let t of x)for(let i=1;i<t.steps.length;i++){let a=t.steps[i-1],o=t.steps[i];a.in===e&&o.in===e&&r.get(a.id)!==r.get(o.id)&&n.push([a.id,o.id])}let i=e===``?!!t:!!t?.clusters[e];re[e]=za(b.get(e)??[],n,i).map(e=>{let t=e.filter(e=>e.includes(`|by:`));return e.filter(e=>!e.includes(`|by:`)).flatMap(e=>[e,...t.filter(t=>t.includes(`|by:${e}|`))])})}let ie=e=>e.map(e=>e.filter(e=>!W(e))),ae=e.clusters.map(e=>({id:e.id,parent:e.parent,cycle:!!e.cycle,layers:ie(re[e.id]??[]).filter(e=>e.length)})),oe=ie(re[``]??[]).map(e=>e.filter(e=>!s.has(e))),se=new Map(ae.map(e=>[e.id,e])),ce=e=>e.flatMap(e=>r.has(e)?ce((se.get(e)?.layers??[]).flat()):[e]);return{drawn:ce(oe.flat()),layers:oe.filter(e=>e.length),clusters:ae,back:y,slots:re,edgePaths:x,order:{layers:ie(re[``]??[]),clusters:Object.fromEntries(ae.map(e=>[e.id,ie(re[e.id]??[])]))}}}(e,t,n);return Ba.set(e,[...r.slice(-3),{prev:t,down:n,out:a}]),a}function Ha(e){let t=new Map(e.clusters.map(e=>[e.id,e])),n=new Map,r=e=>{let i=0,a=0;for(let o of e){let e=0,s=0;for(let i of o){let a=t.get(i),o=a?n.get(i)??n.set(i,r(a.layers)).get(i)??{span:1,stack:1}:{span:1,stack:1};e=Math.max(e,o.span),s+=o.stack}i+=e,a=Math.max(a,s)}return{span:i,stack:a}};return r(e.layers)}var Ua={across:{gap:56,boxGap:40,sep:16,pointSep:12,pad:12,padEnd:24,margin:16},down:{gap:40,boxGap:32,sep:16,pointSep:12,pad:10,padEnd:24,margin:16}};function Wa(e,t,n){let r=[0];for(let n=1;n<e.length;n++)r.push(r[n-1]+t[n-1]);let i=[];e.forEach((e,t)=>{let a=n[t]??1;for(i.push({sum:a*(e-r[t]),w:a,n:1});i.length>1;){let e=i[i.length-1],t=i[i.length-2];if(t.sum/t.w<=e.sum/e.w)break;i.splice(-2,2,{sum:t.sum+e.sum,w:t.w+e.w,n:t.n+e.n})}});let a=[];for(let e of i)for(let t=0;t<e.n;t++)a.push(e.sum/e.w+r[a.length]);return a}function Ga(e,t,n,r,i=0){if(e<=0||t<=0||n<=0)return{k:1,x:0,y:0,h:Math.max(0,t)};let a=Math.min(1,n/e),o=Math.max(i,Math.min(t*a,r)),s=Math.min(a,o/t);return{k:s,x:(n-e*s)/2,y:(o-t*s)/2,h:o}}var Ka=(e,t=200)=>e.marks.filter(e=>e!==null).length+e.loose.length>t,qa=(e,t,n)=>n<t?t:Math.min(n,Math.max(t,e));function Ja(e,t,n,r=e){let i=function(e,t){let n=Math.max(e.left,t.left),r=Math.max(e.top,t.top),i=Math.min(e.left+e.width,t.left+t.width),a=Math.min(e.top+e.height,t.top+t.height);return i>n&&a>r?{left:n,top:r,width:i-n,height:a-r}:null}(r,t);if(!i)return{shown:!1,x:0,y:0,side:`right`,arrow:0,fits:!1};let{width:a,height:o}=n,s=t.left+8,c=t.top+8,l=t.left+t.width-8,u=t.top+t.height-8,d=e.left+e.width,f=e.top+e.height,p=i.top+i.height/2,m=i.left+i.width/2,h=qa(p-o/2,c,u-o),g=qa(m-a/2,s,l-a),_={right:l-(d+12)-a,left:e.left-12-a-s,below:u-(f+12)-o,above:e.top-12-o-c},v=[`right`,`left`,`below`,`above`],y=v.find(e=>_[e]>=0)??v.reduce((e,t)=>_[t]>_[e]?t:e),b,x;switch(y){case`right`:[b,x]=[qa(d+12,s,l-a),h];break;case`left`:[b,x]=[qa(e.left-12-a,s,l-a),h];break;case`below`:[b,x]=[g,qa(f+12,c,u-o)];break;case`above`:[b,x]=[g,qa(e.top-12-o,c,u-o)]}return{shown:!0,x:b,y:x,side:y,arrow:y===`right`||y===`left`?qa(p-x,14,o-14):qa(m-b,14,a-14),fits:_[y]>=0}}var Ya=class{constructor(e,t){this.host=e,this.o=t,this.view={k:1,x:0,y:0},this.frameH=0,this.fitK=1,this.moved=!1,this.pressed=!1,this.pan=null,this.swallowClick=!1,this.onPointerDown=e=>{this.pressed=!0,globalThis.addEventListener(`pointerup`,()=>this.pressed=!1,{once:!0}),e.button!==0||e.target.closest(`.tools`)||this.o.down()&&e.pointerType!==`mouse`||(this.pan={id:e.pointerId,px:e.clientX,py:e.clientY,x:this.view.x,y:this.view.y,far:!1})},this.onPointerMove=e=>{let t=this.pan;if(!t||t.id!==e.pointerId)return;let n=e.clientX-t.px,r=e.clientY-t.py;!t.far&&Math.hypot(n,r)<4||(t.far||(t.far=!0,e.currentTarget.setPointerCapture(e.pointerId),e.currentTarget.classList.add(`drag`)),this.setMoved(),this.setView({...this.view,x:t.x+n,y:t.y+r}))},this.onPointerUp=e=>{let t=this.pan;t&&t.id===e.pointerId&&(this.pan=null,e.currentTarget.classList.remove(`drag`),t.far&&(this.swallowClick=!0))},this.onWheel=e=>{if(!this.o.wheel()||!e.ctrlKey&&!e.metaKey)return;let t=this.o.frame();if(!t)return;e.preventDefault();let n=t.getBoundingClientRect();this.zoomBy(Math.exp(.0015*-e.deltaY),e.clientX-n.left,e.clientY-n.top)},this.onClickCapture=e=>{this.swallowClick&&(this.swallowClick=!1,e.stopPropagation(),e.preventDefault())},e.addController(this)}hostConnected(){this.host.addEventListener(`wheel`,this.onWheel,{passive:!1}),this.host.addEventListener(`click`,this.onClickCapture,{capture:!0})}hostDisconnected(){this.host.removeEventListener(`wheel`,this.onWheel),this.host.removeEventListener(`click`,this.onClickCapture,{capture:!0}),this.resize?.disconnect(),this.resize=void 0}hostUpdated(){this.resize||(this.resize=new ResizeObserver(()=>this.o.onResize()),this.resize.observe(this.host))}get transform(){return(e=>`translate(${e.x}px,${e.y}px) scale(${e.k})`)(this.view)}reset(){this.moved=!1}fit(){let e=this.o.drawing();if(!e)return;let t=this.o.frame(),n=t?.clientWidth||this.host.clientWidth,r=Ga(e.w,e.h,n,e.down?1/0:Math.max(360,.7*globalThis.innerHeight)),i=t?.clientHeight??0,a=`${i}px`===(t?.style.height??`0px`)?r:Ga(e.w,e.h,n,i,i);a.k!==this.fitK&&(this.fitK=a.k,this.host.requestUpdate());let o=e.down?r.h:Math.max(r.h,e.room);this.moved?o>this.frameH&&this.setHeight(o):(this.setHeight(o),a.k===this.view.k&&a.x===this.view.x&&a.y===this.view.y||this.setView({k:a.k,x:a.x,y:a.y}))}showAll(){this.moved=!1,this.fit(),this.host.requestUpdate()}zoomBy(e,t=(this.o.frame()?.clientWidth??this.host.clientWidth)/2,n=(this.o.frame()?.clientHeight??this.frameH)/2){this.setMoved(),this.setView(function(e,t,n,r,i){let a=Math.min(2.5,Math.max(i,e.k*t)),o=a/e.k;return{k:a,x:n-(n-e.x)*o,y:r-(r-e.y)*o}}(this.view,e,t,n,Math.min(1,this.fitK)/2))}reveal(e){let t=this.o.frame();if(!t)return;let n=t.getBoundingClientRect(),r=e.getBoundingClientRect(),i=0,a=0;r.left<n.left+24?i=n.left+24-r.left:r.right>n.right-24&&(i=n.right-24-r.right),r.top<n.top+24?a=n.top+24-r.top:r.bottom>n.bottom-24&&(a=n.bottom-24-r.bottom),(i||a)&&(this.setMoved(),this.setView({...this.view,x:this.view.x+i,y:this.view.y+a}))}setMoved(){this.moved||(this.moved=!0,this.host.requestUpdate())}setHeight(e){e!==this.frameH&&(this.frameH=e,this.host.requestUpdate())}setView(e){this.view=e;let t=this.o.stage();t&&(t.style.transform=this.transform),this.o.onMove()}},Xa=class{constructor(e,t){this.host=e,this.o=t,this.room=0,this.quiet=!1,this.onCardKey=e=>{if(e.key===`Tab`&&e.shiftKey&&e.target===this.actions()[0]){let t=this.itemFocus();if(!t)return;e.preventDefault(),this.focusQuietly(t)}else e.key===`Escape`&&this.focusQuietly(this.itemFocus())},this.onTabToCard=e=>{if(e.key!==`Tab`||e.shiftKey||e.defaultPrevented)return;let t=this.itemFocus();if(!t||this.focused!==t)return;let n=this.actions()[0];n&&(e.preventDefault(),n.focus())},e.addController(this)}hostConnected(){this.host.addEventListener(`keydown`,this.onTabToCard)}hostDisconnected(){this.host.removeEventListener(`keydown`,this.onTabToCard)}get root(){return this.host.shadowRoot??this.host}get focused(){return function(e){let t=e?.activeElement??null;for(;t?.shadowRoot?.activeElement;)t=t.shadowRoot.activeElement;return t}(this.host.shadowRoot)}card(){return this.root.querySelector(`.insp`)}content(){return this.card()?.querySelector(`slot`)?.assignedElements({flatten:!0})??[]}actions(){return this.content().flatMap(e=>[...e.matches(`button, a[href]`)?[e]:[],...e.querySelectorAll(`button, a[href]`)])}anchor(){let e=this.root.querySelector(`.main > .frame`),t=e?.querySelector(`tr.sel > th`);if(e&&t)return{item:t,clear:t,frame:e};let n=e?.querySelector(`.mark.sel, .taskchip.sel, .node.sel, .cluster.sel`)??this.o.inner()?.querySelector(`.mark.sel`);if(!e||!n)return null;let r=n.classList.contains(`cluster`)?n.querySelector(`:scope > .hd`)??n:n;return{item:r,clear:r.closest(`.node`)??n,frame:e}}place(){let e=this.card(),t=this.o.docked(),n=e&&!t?e.querySelector(`.scroll`).scrollHeight+24+16:0;if(n!==this.room&&(n>this.o.frameH()||this.room>0)&&(this.room=n,this.o.grow()),!e||t)return;let r=this.anchor(),i=this.root.querySelector(`.main`);if(!r||!i)return void e.classList.remove(`placed`);let a=i.getBoundingClientRect(),o=e=>({left:e.left-a.left,top:e.top-a.top,width:e.width,height:e.height}),s=o(r.item.getBoundingClientRect()),c=o(r.clear.getBoundingClientRect()),l=o(r.frame.getBoundingClientRect()),u=r.frame.querySelector(`.mx`)??this.o.inner()?.querySelector(`.mx`),d=Ja(s,u?o(u.getBoundingClientRect()):l,{width:0,height:0}).shown,f=e.querySelector(`.scroll`);f&&(f.style.maxHeight=`${Math.max(120,l.height-16-24)}px`);let p={width:e.offsetWidth,height:e.offsetHeight},m=Ja(c,l,p,s);m.fits||r.clear===r.item||r.clear.classList.contains(`node`)||(m=Ja(s,l,p)),e.classList.toggle(`placed`,m.shown&&d),e.dataset.side=m.side,e.style.left=`${m.x}px`,e.style.top=`${m.y}px`,e.style.setProperty(`--arrow`,`${m.arrow}px`)}itemFocus(){let e=this.anchor();return e?e.item.matches(`button`)?e.item:e.item.querySelector(`.name`):null}describe(){let e=[this.root,this.o.inner()].filter(e=>!!e);for(let t of e)for(let e of t.querySelectorAll(`[aria-describedby="insp"]`))e.removeAttribute(`aria-describedby`);let t=this.itemFocus(),n=this.card();t&&n&&(t.getRootNode()===n.getRootNode()?t.setAttribute(`aria-describedby`,`insp`):`ariaDescribedByElements`in t&&(t.ariaDescribedByElements=[n]));let r=this.content(),i=e=>r.map(t=>t.matches(e)?t:t.querySelector(e)).find(Boolean)??null;return[i(`h1, h2, h3, h4, h5, h6`)?.textContent?.trim()??``,i(`[data-status]`)?.textContent?.trim()??``]}focusQuietly(e){this.quiet=!0,e?.focus(),this.quiet=!1}whenReleased(e){if(!this.o.pressed())return e();globalThis.addEventListener(`pointerup`,()=>setTimeout(e),{once:!0})}revealOverSheet(){let e=this.anchor()?.item;if(!e)return;let t=e.getBoundingClientRect(),n=this.card()?.getBoundingClientRect(),r=Math.min(globalThis.innerHeight,n?.top??1/0);(t.top<0||t.bottom>r)&&e.scrollIntoView({block:`center`})}},Za=(e=14)=>k`<svg class="ic loop-ic" width=${e} height=${e} viewBox="0 0 16 16" aria-hidden="true" focusable="false">
182
+ </div>`}mark(e,t,n,r,i,a){let o=this.states[t.state],s=e.id||t.id,c=this.selected===t.id;return O`<button type="button" part="mark" class="mark ${e.id&&e.id===a?`on`:``} ${c?`sel`:``}" data-tone=${I(o?.tone)} data-shape=${o?.shape??A} data-r=${n} data-c=${r} tabindex=${i?0:-1} title=${t.tip??A} aria-label=${t.label} aria-pressed=${c} @mouseenter=${()=>this.hover=s} @focus=${()=>{this.hover=s,this.cell=[n,r],this.select(t.id)}} @blur=${()=>this.hover=null} @click=${()=>this.select(t.id)} @dblclick=${()=>this.act(t)}></button>`}onKey(e,t){let n=e.target;if(!n.classList.contains(`mark`))return;let r=Number(n.dataset.r),i=Number(n.dataset.c);if(e.key===`Enter`){let n=t[r]?.cells[i];e.preventDefault(),n&&this.act(n);return}let a=function(e,t,n,r,i=!1,a=10){let o=(t,n)=>!0===e[t]?.[n],s=t=>(e[t]??[]).findIndex(Boolean),c=t=>(e[t]??[]).lastIndexOf(!0),l=t=>{let r=e[t]??[],i=-1;return r.forEach((e,t)=>e&&(i<0||Math.abs(t-n)<Math.abs(i-n))&&(i=t)),i<0?null:[t,i]};switch(r){case`ArrowRight`:case`ArrowLeft`:{let i=r===`ArrowRight`?1:-1;for(let r=n+i;r>=0&&r<(e[t]?.length??0);r+=i)if(o(t,r))return[t,r];return null}case`ArrowDown`:case`ArrowUp`:{let i=r===`ArrowDown`?1:-1,a=((t,n,r)=>{for(let i=t;i>=0&&i<e.length;i+=n)if(o(i,r))return i;return-1})(t+i,i,n);if(a>=0)return[a,n];for(let n=t+i;n>=0&&n<e.length;n+=i)if(s(n)>=0)return l(n);return null}case`Home`:{let n=i?e.findIndex(e=>e.some(Boolean)):t;return n<0||s(n)<0?null:[n,s(n)]}case`End`:{let n=t;if(i)for(n=e.length-1;n>=0&&c(n)<0;n--);return n<0||c(n)<0?null:[n,c(n)]}case`PageDown`:case`PageUp`:{let n=r===`PageDown`?1:-1;for(let r=Math.max(0,Math.min(e.length-1,t+n*a));r!==t;r-=n)if(s(r)>=0)return l(r);return null}default:return null}}(t.map(e=>e.cells.map(e=>e!==null)),r,i,e.key,e.ctrlKey||e.metaKey);if(!a)return;e.preventDefault(),this.cell=a;let o=this.renderRoot.querySelector(`.mx`);if(o&&t.length>this.windowAt){let e=24*a[0];(e<o.scrollTop+48||e>o.scrollTop+o.clientHeight-72)&&(o.scrollTop=Math.max(0,e-o.clientHeight/2)),this.scrollRow=Math.floor(o.scrollTop/24)}this.requestUpdate(),this.updateComplete.then(()=>this.renderRoot.querySelector(`.matrix .mark[data-r="${a[0]}"][data-c="${a[1]}"]`)?.focus())}};function ro(e,t,n){for(let r=0;r<t;r++){let i=0;for(let a of e[r]??[]){if(n>=i&&n<i+a.span&&r+a.rows>t)return!0;i+=a.span}}return!1}var io=(e,t,n)=>{let r=e.get(t);r?r.push(n):e.set(t,[n])},ao=(e,t)=>`${e}\0${t}`;function oo(e,t,n){let r=new Set(e),i=new Map(e.map(e=>[e,[]]));for(let[e,n]of t)e!==n&&r.has(e)&&r.has(n)&&!i.get(e)?.includes(n)&&i.get(e)?.push(n);let a=new Set,o=new Map;for(let t of e){if(o.has(t))continue;o.set(t,1);let e=[[t,0]];for(;e.length;){let t=e[e.length-1],n=i.get(t[0])??[];if(t[1]<n.length){let r=n[t[1]++],i=o.get(r);i===1?a.add(ao(t[0],r)):i||(o.set(r,1),e.push([r,0]))}else o.set(t[0],2),e.pop()}}let s=new Map(e.map(e=>[e,[]])),c=new Map(e.map(e=>[e,[]]));for(let[e,t]of i)for(let n of t)a.has(ao(e,n))||(s.get(e)?.push(n),c.get(n)?.push(e));let l=new Map(e.map(e=>[e,c.get(e)?.length??0])),u=e.filter(e=>!l.get(e)),d=new Map;for(let e=u.shift();e!==void 0;e=u.shift()){d.set(e,n.get(e)??Math.max(0,...(c.get(e)??[]).map(e=>(d.get(e)??0)+1)));for(let t of s.get(e)??[])l.set(t,(l.get(t)??0)-1),l.get(t)||u.push(t)}return d}var W=e=>e.startsWith(`~`);function so(e,t,n){let r=new Map;e.forEach((e,t)=>e.forEach(e=>r.set(e,t)));let i=new Map,a=new Map;for(let[e,n]of t)io(a,e,n),io(i,n,e);let o=new Map,s=e=>e.forEach((e,t)=>o.set(e,t)),c=e.map(e=>[...e]);c.forEach(s);let l=()=>function(e,t,n,r){let i=0,a=new Map;for(let[e,i]of t){let t=r.get(e);t!==void 0&&io(a,t,[n.get(e)??0,n.get(i)??0])}for(let e of a.values())for(let t=0;t<e.length;t++)for(let n=t+1;n<e.length;n++){let[r,a]=e[t],[o,s]=e[n];(r-o)*(a-s)<0&&i++}return e.length?i:0}(c,t,o,r),u=c.map(e=>[...e]),d=l(),f=(e,t)=>{let r=new Map;for(let n of e){let e=(t.get(n)??[]).map(e=>o.get(e)).filter(e=>e!==void 0);r.set(n,e.length?e.reduce((e,t)=>e+t,0)/e.length:o.get(n)??0)}let i=e=>r.get(e)??0;if(!n)return[...e].sort((e,t)=>i(e)-i(t)||(o.get(e)??0)-(o.get(t)??0));let a=e.filter(e=>!W(e)),s=e.filter(W).sort((e,t)=>i(e)-i(t)||(o.get(e)??0)-(o.get(t)??0)),c=[],l=0;for(let e of a){for(;l<s.length&&i(s[l])<i(e);)c.push(s[l++]);c.push(e)}return[...c,...s.slice(l)]};for(let e=0;e<4;e++){let t=e%2==0,n=t?c.map((e,t)=>t).slice(1):c.map((e,t)=>t).reverse().slice(1);for(let e of n){let n=f(c[e],t?i:a);c[e]=n,s(n)}let r=l();r<d&&(d=r,u=c.map(e=>[...e]))}return l()<=d?c:u}var co=new WeakMap;function lo(e,t,n=!1){let r=co.get(e)??[],i=r.find(e=>e.prev===t&&e.down===n);if(i)return i.out;let a=function(e,t,n){let r=new Set(e.clusters.map(e=>e.id)),i=new Map(e.clusters.map(e=>[e.id,e.parent])),a=new Map;for(let t of e.nodes)t.cluster&&a.set(t.id,t.cluster);let o=[...new Set(e.stubs.map(e=>e.id))],s=new Set(o),c=e=>{let t=[],n=r.has(e)?e:a.get(e)??null;for(;n;)t.push(n),n=i.get(n)??null;return t},l=(e,t)=>{let n=c(e);if(t===``)return n[n.length-1]??e;let r=n.indexOf(t);return r<0?void 0:r===0?e:n[r-1]},u=(e,t)=>c(e).find(e=>c(t).includes(e))??``,d=[``,...e.clusters.map(e=>e.id)],f=new Map(d.map(e=>[e,[]]));for(let{id:t}of e.nodes)for(let e of d){let n=l(t,e);n===void 0||f.get(e)?.includes(n)||f.get(e)?.push(n)}let p=new Map;for(let n of d){let r=f.get(n)??[],i=n===``?t?.layers:t?.clusters[n],a=new Map;i?.forEach((e,t)=>e.forEach(e=>r.includes(e)&&a.set(e,t)));let o=e.edges.filter(e=>e.ranks&&u(e.from,e.to)===n).map(e=>[l(e.from,n),l(e.to,n)]);p.set(n,oo(r,o,a))}let m=p.get(``),h=new Map;t?.layers.forEach((e,t)=>e.forEach(e=>h.set(e,t)));let g=new Map(o.map(t=>[t,h.get(t)??Math.min(...e.stubs.filter(e=>e.id===t).map(e=>m.get(l(e.to,``))??0))-1]));if([...g.values()].some(e=>e<0)){for(let[e,t]of m)m.set(e,t+1);for(let[e,t]of g)g.set(e,t+1)}for(let[e,t]of g)m.set(e,t);let _=(e,t)=>p.get(e)?.get(t)??0,ee=e=>Math.max(0,...p.get(e)?.values()??[]),v=e.edges.map(e=>((e,t)=>{let n=u(e,t);return _(n,l(e,n))>=_(n,l(t,n))})(e.from,e.to)),y=new Map;for(let e of d){let n=((e===``?t?.layers:t?.clusters[e])??[]).flat(),r=[...e===``?[...o]:[],...f.get(e)??[]];r.sort((e,t)=>{let r=n.indexOf(e),i=n.indexOf(t);return(r<0?1/0:r)-(i<0?1/0:i)});let i=Array.from({length:ee(e)+1},()=>[]);for(let t of r)i[_(e,t)]?.push(t);y.set(e,i)}let b=[],x=new Set,te=(e,t,n,r)=>{let i=`~${e}|${t}|${n}|${r}`;return x.has(i)||(x.add(i),y.get(e)?.[r]?.push(i)),{id:i,in:e}},ne=(e,t,n,r)=>{let i=_(e,t),a=`~${e}|by:${t}|${n}|${r}|${i}`;return x.has(a)||(x.add(a),y.get(e)?.[i]?.push(a)),{id:a,in:e}},re=(e,t,r)=>{let o=s.has(e)?``:u(e,t),d=(p=e,s.has(p)?``:a.get(p)??``),f=e;var p;let m=[{id:e,in:d}];for(;d!==o;){let e=i.get(d)??``;m.push({id:d,in:e}),_(d,f)<ee(d)&&m.push(ne(e,d,f,r)),f=d,d=e}let h=l(t,o);for(let e=_(o,f)+1;e<_(o,h);e++)m.push(te(o,f,r,e));let g=c(t),v=g.slice(0,o===``?g.length:g.indexOf(o)).reverse(),y=`>${o}:${f}`,b=o;for(let e of v){let i=l(t,e);(_(e,i)>0||n)&&m.push(ne(b,e,y,r)),m.push({id:e,in:b}),b=e}return m.push({id:t,in:b}),m};e.edges.forEach((e,t)=>{v[t]||b.push({from:e.from,to:e.to,style:e.style,steps:re(e.from,e.to,e.style)})});for(let t of e.stubs)b.push({from:t.id,to:t.to,style:t.style,steps:re(t.id,t.to,t.style)});let ie={};for(let e of d){let n=[],r=new Map((y.get(e)??[]).flatMap((e,t)=>e.map(e=>[e,t])));for(let t of b)for(let i=1;i<t.steps.length;i++){let a=t.steps[i-1],o=t.steps[i];a.in===e&&o.in===e&&r.get(a.id)!==r.get(o.id)&&n.push([a.id,o.id])}let i=e===``?!!t:!!t?.clusters[e];ie[e]=so(y.get(e)??[],n,i).map(e=>{let t=e.filter(e=>e.includes(`|by:`));return e.filter(e=>!e.includes(`|by:`)).flatMap(e=>[e,...t.filter(t=>t.includes(`|by:${e}|`))])})}let ae=e=>e.map(e=>e.filter(e=>!W(e))),oe=e.clusters.map(e=>({id:e.id,parent:e.parent,cycle:!!e.cycle,layers:ae(ie[e.id]??[]).filter(e=>e.length)})),se=ae(ie[``]??[]).map(e=>e.filter(e=>!s.has(e))),ce=new Map(oe.map(e=>[e.id,e])),le=e=>e.flatMap(e=>r.has(e)?le((ce.get(e)?.layers??[]).flat()):[e]);return{drawn:le(se.flat()),layers:se.filter(e=>e.length),clusters:oe,back:v,slots:ie,edgePaths:b,order:{layers:ae(ie[``]??[]),clusters:Object.fromEntries(oe.map(e=>[e.id,ae(ie[e.id]??[])]))}}}(e,t,n);return co.set(e,[...r.slice(-3),{prev:t,down:n,out:a}]),a}function uo(e){let t=new Map(e.clusters.map(e=>[e.id,e])),n=new Map,r=e=>{let i=0,a=0;for(let o of e){let e=0,s=0;for(let i of o){let a=t.get(i),o=a?n.get(i)??n.set(i,r(a.layers)).get(i)??{span:1,stack:1}:{span:1,stack:1};e=Math.max(e,o.span),s+=o.stack}i+=e,a=Math.max(a,s)}return{span:i,stack:a}};return r(e.layers)}var fo={across:{gap:56,boxGap:40,sep:16,pointSep:12,pad:12,padEnd:24,margin:16},down:{gap:40,boxGap:32,sep:16,pointSep:12,pad:10,padEnd:24,margin:16}};function po(e,t,n){let r=[0];for(let n=1;n<e.length;n++)r.push(r[n-1]+t[n-1]);let i=[];e.forEach((e,t)=>{let a=n[t]??1;for(i.push({sum:a*(e-r[t]),w:a,n:1});i.length>1;){let e=i[i.length-1],t=i[i.length-2];if(t.sum/t.w<=e.sum/e.w)break;i.splice(-2,2,{sum:t.sum+e.sum,w:t.w+e.w,n:t.n+e.n})}});let a=[];for(let e of i)for(let t=0;t<e.n;t++)a.push(e.sum/e.w+r[a.length]);return a}function mo(e,t,n,r,i=0){if(e<=0||t<=0||n<=0)return{k:1,x:0,y:0,h:Math.max(0,t)};let a=Math.min(1,n/e),o=Math.max(i,Math.min(t*a,r)),s=Math.min(a,o/t);return{k:s,x:(n-e*s)/2,y:(o-t*s)/2,h:o}}var ho=(e,t=200)=>e.marks.filter(e=>e!==null).length+e.loose.length>t,go=(e,t,n)=>n<t?t:Math.min(n,Math.max(t,e));function _o(e,t,n,r=e){let i=function(e,t){let n=Math.max(e.left,t.left),r=Math.max(e.top,t.top),i=Math.min(e.left+e.width,t.left+t.width),a=Math.min(e.top+e.height,t.top+t.height);return i>n&&a>r?{left:n,top:r,width:i-n,height:a-r}:null}(r,t);if(!i)return{shown:!1,x:0,y:0,side:`right`,arrow:0,fits:!1};let{width:a,height:o}=n,s=t.left+8,c=t.top+8,l=t.left+t.width-8,u=t.top+t.height-8,d=e.left+e.width,f=e.top+e.height,p=i.top+i.height/2,m=i.left+i.width/2,h=go(p-o/2,c,u-o),g=go(m-a/2,s,l-a),_={right:l-(d+12)-a,left:e.left-12-a-s,below:u-(f+12)-o,above:e.top-12-o-c},ee=[`right`,`left`,`below`,`above`],v=ee.find(e=>_[e]>=0)??ee.reduce((e,t)=>_[t]>_[e]?t:e),y,b;switch(v){case`right`:[y,b]=[go(d+12,s,l-a),h];break;case`left`:[y,b]=[go(e.left-12-a,s,l-a),h];break;case`below`:[y,b]=[g,go(f+12,c,u-o)];break;case`above`:[y,b]=[g,go(e.top-12-o,c,u-o)]}return{shown:!0,x:y,y:b,side:v,arrow:v===`right`||v===`left`?go(p-b,14,o-14):go(m-y,14,a-14),fits:_[v]>=0}}var vo=class{constructor(e,t){this.host=e,this.o=t,this.view={k:1,x:0,y:0},this.frameH=0,this.fitK=1,this.moved=!1,this.pressed=!1,this.pan=null,this.swallowClick=!1,this.onPointerDown=e=>{this.pressed=!0,globalThis.addEventListener(`pointerup`,()=>this.pressed=!1,{once:!0}),e.button!==0||e.target.closest(`.tools`)||this.o.down()&&e.pointerType!==`mouse`||(this.pan={id:e.pointerId,px:e.clientX,py:e.clientY,x:this.view.x,y:this.view.y,far:!1})},this.onPointerMove=e=>{let t=this.pan;if(!t||t.id!==e.pointerId)return;let n=e.clientX-t.px,r=e.clientY-t.py;!t.far&&Math.hypot(n,r)<4||(t.far||(t.far=!0,e.currentTarget.setPointerCapture(e.pointerId),e.currentTarget.classList.add(`drag`)),this.setMoved(),this.setView({...this.view,x:t.x+n,y:t.y+r}))},this.onPointerUp=e=>{let t=this.pan;t&&t.id===e.pointerId&&(this.pan=null,e.currentTarget.classList.remove(`drag`),t.far&&(this.swallowClick=!0))},this.onWheel=e=>{if(!this.o.wheel()||!e.ctrlKey&&!e.metaKey)return;let t=this.o.frame();if(!t)return;e.preventDefault();let n=t.getBoundingClientRect();this.zoomBy(Math.exp(.0015*-e.deltaY),e.clientX-n.left,e.clientY-n.top)},this.onClickCapture=e=>{this.swallowClick&&(this.swallowClick=!1,e.stopPropagation(),e.preventDefault())},e.addController(this)}hostConnected(){this.host.addEventListener(`wheel`,this.onWheel,{passive:!1}),this.host.addEventListener(`click`,this.onClickCapture,{capture:!0})}hostDisconnected(){this.host.removeEventListener(`wheel`,this.onWheel),this.host.removeEventListener(`click`,this.onClickCapture,{capture:!0}),this.resize?.disconnect(),this.resize=void 0}hostUpdated(){this.resize||(this.resize=new ResizeObserver(()=>this.o.onResize()),this.resize.observe(this.host))}get transform(){return(e=>`translate(${e.x}px,${e.y}px) scale(${e.k})`)(this.view)}reset(){this.moved=!1}fit(){let e=this.o.drawing();if(!e)return;let t=this.o.frame(),n=t?.clientWidth||this.host.clientWidth,r=mo(e.w,e.h,n,e.down?1/0:Math.max(360,.7*globalThis.innerHeight)),i=t?.clientHeight??0,a=`${i}px`===(t?.style.height??`0px`)?r:mo(e.w,e.h,n,i,i);a.k!==this.fitK&&(this.fitK=a.k,this.host.requestUpdate());let o=e.down?r.h:Math.max(r.h,e.room);this.moved?o>this.frameH&&this.setHeight(o):(this.setHeight(o),a.k===this.view.k&&a.x===this.view.x&&a.y===this.view.y||this.setView({k:a.k,x:a.x,y:a.y}))}showAll(){this.moved=!1,this.fit(),this.host.requestUpdate()}zoomBy(e,t=(this.o.frame()?.clientWidth??this.host.clientWidth)/2,n=(this.o.frame()?.clientHeight??this.frameH)/2){this.setMoved(),this.setView(function(e,t,n,r,i){let a=Math.min(2.5,Math.max(i,e.k*t)),o=a/e.k;return{k:a,x:n-(n-e.x)*o,y:r-(r-e.y)*o}}(this.view,e,t,n,Math.min(1,this.fitK)/2))}reveal(e){let t=this.o.frame();if(!t)return;let n=t.getBoundingClientRect(),r=e.getBoundingClientRect(),i=0,a=0;r.left<n.left+24?i=n.left+24-r.left:r.right>n.right-24&&(i=n.right-24-r.right),r.top<n.top+24?a=n.top+24-r.top:r.bottom>n.bottom-24&&(a=n.bottom-24-r.bottom),(i||a)&&(this.setMoved(),this.setView({...this.view,x:this.view.x+i,y:this.view.y+a}))}setMoved(){this.moved||(this.moved=!0,this.host.requestUpdate())}setHeight(e){e!==this.frameH&&(this.frameH=e,this.host.requestUpdate())}setView(e){this.view=e;let t=this.o.stage();t&&(t.style.transform=this.transform),this.o.onMove()}},yo=class{constructor(e,t){this.host=e,this.o=t,this.room=0,this.quiet=!1,this.onCardKey=e=>{if(e.key===`Tab`&&e.shiftKey&&e.target===this.actions()[0]){let t=this.itemFocus();if(!t)return;e.preventDefault(),this.focusQuietly(t)}else e.key===`Escape`&&this.focusQuietly(this.itemFocus())},this.onTabToCard=e=>{if(e.key!==`Tab`||e.shiftKey||e.defaultPrevented)return;let t=this.itemFocus();if(!t||this.focused!==t)return;let n=this.actions()[0];n&&(e.preventDefault(),n.focus())},e.addController(this)}hostConnected(){this.host.addEventListener(`keydown`,this.onTabToCard)}hostDisconnected(){this.host.removeEventListener(`keydown`,this.onTabToCard)}get root(){return this.host.shadowRoot??this.host}get focused(){return function(e){let t=e?.activeElement??null;for(;t?.shadowRoot?.activeElement;)t=t.shadowRoot.activeElement;return t}(this.host.shadowRoot)}card(){return this.root.querySelector(`.insp`)}content(){return this.card()?.querySelector(`slot`)?.assignedElements({flatten:!0})??[]}actions(){return this.content().flatMap(e=>[...e.matches(`button, a[href]`)?[e]:[],...e.querySelectorAll(`button, a[href]`)])}anchor(){let e=this.root.querySelector(`.main > .frame`),t=e?.querySelector(`tr.sel > th`);if(e&&t)return{item:t,clear:t,frame:e};let n=e?.querySelector(`.mark.sel, .taskchip.sel, .node.sel, .cluster.sel`)??this.o.inner()?.querySelector(`.mark.sel`);if(!e||!n)return null;let r=n.classList.contains(`cluster`)?n.querySelector(`:scope > .hd`)??n:n;return{item:r,clear:r.closest(`.node`)??n,frame:e}}place(){let e=this.card(),t=this.o.docked(),n=e&&!t?e.querySelector(`.scroll`).scrollHeight+24+16:0;if(n!==this.room&&(n>this.o.frameH()||this.room>0)&&(this.room=n,this.o.grow()),!e||t)return;let r=this.anchor(),i=this.root.querySelector(`.main`);if(!r||!i)return void e.classList.remove(`placed`);let a=i.getBoundingClientRect(),o=e=>({left:e.left-a.left,top:e.top-a.top,width:e.width,height:e.height}),s=o(r.item.getBoundingClientRect()),c=o(r.clear.getBoundingClientRect()),l=o(r.frame.getBoundingClientRect()),u=r.frame.querySelector(`.mx`)??this.o.inner()?.querySelector(`.mx`),d=_o(s,u?o(u.getBoundingClientRect()):l,{width:0,height:0}).shown,f=e.querySelector(`.scroll`);f&&(f.style.maxHeight=`${Math.max(120,l.height-16-24)}px`);let p={width:e.offsetWidth,height:e.offsetHeight},m=_o(c,l,p,s);m.fits||r.clear===r.item||r.clear.classList.contains(`node`)||(m=_o(s,l,p)),e.classList.toggle(`placed`,m.shown&&d),e.dataset.side=m.side,e.style.left=`${m.x}px`,e.style.top=`${m.y}px`,e.style.setProperty(`--arrow`,`${m.arrow}px`)}itemFocus(){let e=this.anchor();return e?e.item.matches(`button`)?e.item:e.item.querySelector(`.name`):null}describe(){let e=[this.root,this.o.inner()].filter(e=>!!e);for(let t of e)for(let e of t.querySelectorAll(`[aria-describedby="insp"]`))e.removeAttribute(`aria-describedby`);let t=this.itemFocus(),n=this.card();t&&n&&(t.getRootNode()===n.getRootNode()?t.setAttribute(`aria-describedby`,`insp`):`ariaDescribedByElements`in t&&(t.ariaDescribedByElements=[n]));let r=this.content(),i=e=>r.map(t=>t.matches(e)?t:t.querySelector(e)).find(Boolean)??null;return[i(`h1, h2, h3, h4, h5, h6`)?.textContent?.trim()??``,i(`[data-status]`)?.textContent?.trim()??``]}focusQuietly(e){this.quiet=!0,e?.focus(),this.quiet=!1}whenReleased(e){if(!this.o.pressed())return e();globalThis.addEventListener(`pointerup`,()=>setTimeout(e),{once:!0})}revealOverSheet(){let e=this.anchor()?.item;if(!e)return;let t=e.getBoundingClientRect(),n=this.card()?.getBoundingClientRect(),r=Math.min(globalThis.innerHeight,n?.top??1/0);(t.top<0||t.bottom>r)&&e.scrollIntoView({block:`center`})}},bo=(e=14)=>O`<svg class="ic loop-ic" width=${e} height=${e} viewBox="0 0 16 16" aria-hidden="true" focusable="false">
159
183
  <path d="M12.7,9.71 A5,5 0 1 1 11.21,4.17" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"></path>
160
184
  <path d="M12.44,5.2 L9.15,5.06 L11.73,2 z" fill="currentColor"></path>
161
- </svg>`,Qa=()=>k`<svg class="ic in-ic" width="12" height="12" viewBox="0 0 12 12" aria-hidden="true" focusable="false">
185
+ </svg>`,xo=()=>O`<svg class="ic in-ic" width="12" height="12" viewBox="0 0 12 12" aria-hidden="true" focusable="false">
162
186
  <rect x="3.4" y="0.7" width="7.9" height="7.9" rx="1.6" fill="none" stroke="currentColor" stroke-width="1.2"></rect>
163
187
  <path d="M0.7,3.6 V9.7 Q0.7,11.3 2.3,11.3 H8.4" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"></path>
164
- </svg>`,$a={graph:`Graph`,table:`Table`,view:`View`,zoomIn:`Zoom in`,zoomInTip:`Zoom in (Ctrl + scroll)`,zoomOut:`Zoom out`,zoomOutTip:`Zoom out (Ctrl + scroll)`,showAll:`Show all`,graphKeys:[`Tab: next node`,`Arrow keys: marks`,`Shift + arrow keys: earlier and later nodes`,`Enter: open`],tableKeys:[`Tab: next row`,`Enter: open`],matrixKeys:[`Arrow keys: marks`,`Enter: open`],clearKey:`Esc: clear selection`,upKey:``,inspector:`Selected item`,stubTip:`Outside this graph`,more:e=>`+${e}`,progress:(e,t)=>`${e} of ${t} done`,badge:`count`,solidEdge:`link`,dashedEdge:`other link`,cycle:`next round`,drill:`has an inner view`,open:`Show inside`,close:`Hide inside`,iconNames:{},nameHeader:`Name`,statusHeader:`Status`,solidHeader:`Earlier`,dashedHeader:`Dashed link from`,laterHeader:`Later`,none:`none`,inCluster:e=>`${e} in the cluster`,list:e=>new Intl.ListFormat(`en`,{type:`conjunction`}).format(e)},eo=O` :host{display:block;container-type:inline-size;}.col,.main{display:flex;flex-direction:column;}.col{height:100%;}.main{flex:auto;min-height:0;}.frame{flex:auto;position:relative;overflow:hidden;border-radius:8px;background:var(--well);box-sizing:border-box;}.gframe{cursor:grab;touch-action:none;}.gframe.drag{cursor:grabbing;}.stage{position:absolute;left:0;top:0;transform-origin:0 0;}.gframe.down{touch-action:pan-y pinch-zoom;}.view{animation:view-in 0.1s var(--ease) both;}@keyframes view-in{from{opacity:0;}}@media (prefers-reduced-motion:reduce){.view{animation:none;}}.tools{display:flex;align-items:center;gap:4px;justify-self:end;}.tools button{all:unset;cursor:pointer;min-width:22px;height:22px;padding:0 7px;box-sizing:border-box;text-align:center;font-size:11.5px;line-height:22px;color:var(--text-2);border-radius:6px;border:1px solid var(--line);}.tools button:hover:not(:disabled){color:var(--text);border-color:var(--line2);}.tools button:focus-visible,.loopchip:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:1px;}.tools button:disabled{cursor:default;opacity:0.4;}.views{margin-left:6px;}.dag{position:relative;}.dag.unplaced{visibility:hidden;}.dag>*,.cluster>.in>*{position:absolute;}.edges{left:0;top:0;pointer-events:none;overflow:visible;z-index:0;}.edges path{fill:none;stroke:var(--line2);stroke-width:1.5;}.edges path.dashed{stroke-dasharray:5 4;}.edges path.ret,.legend svg path.ret{stroke:var(--text-2);stroke-width:2;stroke-dasharray:0.1 4;stroke-linecap:round;opacity:0.8;}.edges path.ret-tip,.legend svg path.ret-head{fill:var(--text-2);stroke:none;opacity:0.8;}.ic{display:block;flex:none;}.loop-ic{color:var(--text-2);}.in-ic{color:var(--text-muted);}.stub{z-index:1;font-family:var(--mono);font-size:11.5px;color:var(--text-muted);padding:3px 9px;border-radius:999px;border:1px solid var(--line);background:var(--card);white-space:nowrap;}.cluster{z-index:1;box-sizing:border-box;border-radius:14px;border:1px solid var(--line2);background:color-mix(in srgb,var(--text-muted) 5%,transparent);}.cluster .cluster{background:color-mix(in srgb,var(--text-muted) 6%,transparent);}.cluster>.in{position:absolute;inset:0;pointer-events:none;}.cluster>.in>*{pointer-events:auto;}.cluster>.hd{position:absolute;left:11px;top:6px;display:flex;flex-direction:column;align-items:flex-start;gap:1px;white-space:nowrap;padding-right:22px;cursor:pointer;}.cluster>.hd .line{display:flex;align-items:center;gap:8px;}.cluster>.hd .name{display:inline-flex;align-items:center;gap:5px;}.cluster.sel{outline:var(--focus-width) solid var(--accent);outline-offset:2px;}.cluster>.hd .spread{font-size:11px;color:var(--text-2);font-variant-numeric:tabular-nums;}.node{z-index:1;width:max-content;min-width:120px;box-sizing:border-box;display:flex;flex-direction:column;gap:7px;padding:8px 10px 9px;border-radius:10px;border:1px solid var(--line);background:var(--card);transition:border-color 0.3s,box-shadow 0.3s;cursor:pointer;box-shadow:var(--ex,0 0 0 0 transparent);}.node.accent{--ex:inset 3px 0 0 -1px color-mix(in srgb,var(--agent) 60%,transparent);}.node .nm{display:flex;align-items:center;min-width:0;gap:0;}.node .right{display:flex;align-items:center;gap:8px;}.node .right>.tog{margin-inline-end:0;}.cue{display:block;line-height:0;}.cluster>.cue{position:absolute;top:9px;right:10px;padding:2px;margin:-2px;}.tog{all:unset;cursor:pointer;display:inline-flex;line-height:0;padding:2px;margin:-2px;border-radius:4px;color:var(--text-2);}.tog:hover{color:var(--text);background:var(--raise);}.tog:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:1px;}.cluster>.hd .psep{color:var(--text-muted);font-size:11px;}.cluster>.hd .part{all:unset;cursor:pointer;font-family:var(--mono);font-weight:600;font-size:12.5px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px;}.cluster>.hd .part:hover{color:var(--text);text-decoration:underline;}.cluster>.hd .part:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:2px;border-radius:3px;}.node.sel{outline:var(--focus-width) solid var(--accent);outline-offset:2px;}.node.drill{box-shadow:4px 4px 0 -1px var(--card),4px 4px 0 0 var(--line2);}.node[data-look='running']{border-color:var(--status-running);}.node.drill[data-look='running']{box-shadow:4px 4px 0 -1px var(--card),4px 4px 0 0 var(--status-running),0 0 14px var(--status-running-bg);}.node:not(.drill)[data-look='running']{box-shadow:var(--ex,0 0 0 0 transparent),0 0 14px var(--status-running-bg);}.node[data-look='failed']{border-color:color-mix(in srgb,var(--status-failed) 55%,transparent);}.node:focus-within{border-color:var(--text-2);}.hd{display:flex;align-items:center;justify-content:space-between;gap:12px;}.name{all:unset;cursor:pointer;font-family:var(--mono);font-weight:600;font-size:12.5px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px;}.name:hover{text-decoration:underline;}.name:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:2px;border-radius:3px;}.count{font-size:11px;color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap;}.ex{display:flex;flex-wrap:wrap;gap:0 10px;font-size:11px;line-height:1.5;contain:inline-size;}:is(.ex,.st) .err{color:var(--status-failed);}:is(.ex,.st) .warn{color:var(--status-attention);}:is(.ex,.st) .live{color:var(--status-running);}:is(.ex,.st) .mut{color:var(--text-muted);}.marks{display:grid;grid-template-columns:repeat(var(--cols),var(--m));gap:var(--g);}.slot{width:var(--m);height:var(--m);}.taskchip.sel{outline:var(--focus-width) solid var(--accent);outline-offset:1px;}.hl .mark:not(.on){opacity:0.16;}.hl .mark.on{transform:scale(1.2);}@media (prefers-reduced-motion:reduce){.node{transition:none;}}.sbar{display:flex;width:220px;height:10px;border-radius:3px;overflow:hidden;background:var(--track);gap:1px;}.sbar i{display:block;min-width:2px;height:100%;background:var(--tone,var(--line2));}.sbar i:not([data-tone]){--tone:initial;}.sbar i[data-tone='done']{opacity:0.85;}.sbar i[data-tone='muted']{opacity:0.5;}.sbar i[data-shape='hatched']{background:repeating-linear-gradient(135deg,var(--tone-bg) 0 2px,color-mix(in srgb,var(--tone) 60%,transparent) 2px 3px);}.sbar i[data-shape='half']{background:linear-gradient(0deg,var(--tone) 50%,var(--tone-bg) 50%);}.fails{display:flex;flex-wrap:wrap;align-items:center;gap:4px;max-width:220px;font-size:11px;color:var(--text-muted);}.fails .taskchip{color:var(--status-failed);border-color:color-mix(in srgb,var(--status-failed) 45%,transparent);}.fails .taskchip:focus-visible{outline:var(--focus-width) solid var(--text);outline-offset:1px;}.hl .fails .taskchip:not(.on){opacity:0.4;}.mxframe{display:grid;grid-template-columns:minmax(0,1fr);place-items:center;padding:14px 16px;}.foot{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:6px 14px;margin-top:6px;}.legend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:11px;color:var(--text-muted);}.legend span{display:inline-flex;align-items:center;gap:6px;}.legend .mark{--m:12px;cursor:default;animation:none;}.legend .mark:hover{transform:none;outline:none;}.legend i.mark{border-radius:3px;}.legend i.mark:is([data-shape='square'],[data-shape='hatched']){border-radius:2px;}.legend i.mark[data-shape='hatched']{background:repeating-linear-gradient(135deg,transparent 0 2px,color-mix(in srgb,var(--tone) 55%,transparent) 2px 3px);}.legend i.mark[data-shape='half']{border-radius:50%;}.legend svg path{stroke:var(--line2);stroke-width:1.5;fill:none;}.main{position:relative;min-width:0;}.sep{color:var(--text-muted);}.insp{position:absolute;left:0;top:0;z-index:6;width:272px;max-width:calc(100% - 16px);box-sizing:border-box;display:flex;flex-direction:column;gap:9px;padding:10px 12px 12px;border-radius:10px;border:1px solid var(--accent);background:var(--card);font-size:12px;overflow:visible;box-shadow:0 12px 32px color-mix(in srgb,var(--shadow) 55%,transparent);visibility:hidden;animation:insp-in 0.12s var(--ease) both;}.insp.placed{visibility:visible;}.insp .scroll{display:flex;flex-direction:column;gap:9px;min-height:0;overflow:auto;}.insp .ptr{position:absolute;width:10px;height:10px;background:var(--card);border:1px solid var(--accent);transform:rotate(45deg);}.insp[data-side='right'] .ptr{left:-6px;top:calc(var(--arrow) - 5px);border-top:0;border-right:0;}.insp[data-side='left'] .ptr{right:-6px;top:calc(var(--arrow) - 5px);border-bottom:0;border-left:0;}.insp[data-side='below'] .ptr{top:-6px;left:calc(var(--arrow) - 5px);border-bottom:0;border-right:0;}.insp[data-side='above'] .ptr{bottom:-6px;left:calc(var(--arrow) - 5px);border-top:0;border-left:0;}.insp.sheet{position:sticky;bottom:8px;width:auto;max-width:none;margin-top:8px;visibility:visible;}.insp.sheet .ptr{display:none;}@keyframes insp-in{from{opacity:0;transform:scale(0.96);}to{opacity:1;transform:none;}}.keys{grid-column:1 / -1;font-size:11px;color:var(--text-muted);visibility:hidden;}.keys span{white-space:nowrap;}:host(:focus-within) .keys{visibility:visible;}@container (max-width:560px){.foot{grid-template-columns:minmax(0,1fr);}.tools{grid-row:1;justify-self:start;flex-wrap:wrap;}.keys span{white-space:normal;}}@media not (any-pointer:fine){.keys{display:none;}}.tframe{overflow:auto;padding:0 12px 10px;background:linear-gradient(transparent,var(--well) 70%) center bottom / 100% 28px no-repeat local,radial-gradient(farthest-side at 50% 100%,color-mix(in srgb,var(--text-muted) 30%,transparent),transparent) center bottom / 100% 12px no-repeat scroll,var(--well);}table.list{width:100%;border-collapse:separate;border-spacing:0;font-size:12px;font-variant-numeric:tabular-nums;}.list th,.list td{text-align:left;vertical-align:middle;padding:6px 10px;border-bottom:1px solid var(--line);}.list .fit{width:1%;white-space:nowrap;}.list thead th{position:sticky;top:0;z-index:2;background:var(--well);color:var(--text-muted);font-weight:500;font-size:11px;white-space:nowrap;padding-top:10px;}.list tbody th{font-weight:600;}.list td{color:var(--text-2);}.list .rel>span{display:block;min-width:14ch;}.list tbody tr{cursor:pointer;}.list tbody tr:hover>*{background-color:color-mix(in srgb,var(--text-muted) 8%,transparent);}.list tbody tr.sel>*{background-color:var(--accent-bg);}.list tbody tr.sel>th{box-shadow:inset 2px 0 0 var(--accent);}.list .nm{display:inline-flex;align-items:center;gap:8px;vertical-align:middle;}.list .nm .in-ic{margin-right:-2px;}.list .name{max-width:32ch;}.loopchip{display:inline-flex;align-items:center;gap:4px;font-family:var(--sans);font-weight:400;}.loopchip .ic{color:var(--text-muted);}.list .st .n{color:var(--text);}`,to=ei(class extends ti{constructor(){super(...arguments),this.key=j}render(e,t){return this.key=e,t}update(e,[t,n]){return t!==this.key&&(Ci(e),this.key=t),n}}),no=(e,t)=>[...e.marks.map((e,n)=>e?{m:e,series:t[n]??``}:null),...e.loose.map(e=>({m:e,series:``}))];function ro(e,t){let n=e.marks.length+e.loose.length,r=function(e){return e<=12?{cols:Math.max(1,e),size:12}:e<=100?{cols:10,size:10}:{cols:20,size:6}}(e.marks.length?t:n);return{cols:Math.min(r.cols,Math.max(1,n)),size:r.size,gap:r.size>=10?4:2}}function io(e){return Math.max(0,e.findIndex(e=>e!==null))}var ao={failed:`err`,attention:`warn`,running:`live`,muted:`mut`};function oo(e,t,n){let r=e.lay?.at[t];if(!r)return`left:0;top:0`;let i=n?n.x+1:0,a=n?n.y+1:0;return`left:${r.x-i}px;top:${r.y-a}px`}function so(e,t,n){t.target.closest(`.mark, .taskchip, .node, .cluster`)===t.currentTarget&&(t.stopPropagation(),t.detail>=2||e.select(n))}function co(e,t,n){t.target.closest(`.mark, .taskchip, .node, .cluster`)===t.currentTarget&&(t.stopPropagation(),e.act(n))}function lo(e,t,n){t.key===`Enter`&&(t.preventDefault(),e.act(n))}function uo(e,t,n,r){let i=r?e.words.close:e.words.open;return k`<button type="button" class="tog" part="toggle" aria-expanded=${r} aria-label=${`${i}: ${n}`} title=${i} @click=${n=>{n.stopPropagation(),e.toggle(t,!r)}} @dblclick=${e=>e.stopPropagation()}>${(e=>k`<svg class="ic tog-ic" width="12" height="12" viewBox="0 0 12 12" aria-hidden="true" focusable="false">
188
+ </svg>`,So={graph:`Graph`,table:`Table`,view:`View`,zoomIn:`Zoom in`,zoomInTip:`Zoom in (Ctrl + scroll)`,zoomOut:`Zoom out`,zoomOutTip:`Zoom out (Ctrl + scroll)`,showAll:`Show all`,graphKeys:[`Tab: next node`,`Arrow keys: marks`,`Shift + arrow keys: earlier and later nodes`,`Enter: open`],tableKeys:[`Tab: next row`,`Enter: open`],matrixKeys:[`Arrow keys: marks`,`Enter: open`],clearKey:`Esc: clear selection`,upKey:``,inspector:`Selected item`,stubTip:`Outside this graph`,more:e=>`+${e}`,progress:(e,t)=>`${e} of ${t} done`,badge:`count`,solidEdge:`link`,dashedEdge:`other link`,cycle:`next round`,drill:`has an inner view`,open:`Show inside`,close:`Hide inside`,iconNames:{},nameHeader:`Name`,statusHeader:`Status`,solidHeader:`Earlier`,dashedHeader:`Dashed link from`,laterHeader:`Later`,none:`none`,inCluster:e=>`${e} in the cluster`,list:e=>new Intl.ListFormat(`en`,{type:`conjunction`}).format(e)},Co=D` :host{display:block;container-type:inline-size;}.col,.main{display:flex;flex-direction:column;}.col{height:100%;}.main{flex:auto;min-height:0;}.frame{flex:auto;position:relative;overflow:hidden;border-radius:8px;background:var(--well);box-sizing:border-box;}.gframe{cursor:grab;touch-action:none;}.gframe.drag{cursor:grabbing;}.stage{position:absolute;left:0;top:0;transform-origin:0 0;}.gframe.down{touch-action:pan-y pinch-zoom;}.view{animation:view-in 0.1s var(--ease) both;}@keyframes view-in{from{opacity:0;}}@media (prefers-reduced-motion:reduce){.view{animation:none;}}.tools{display:flex;align-items:center;gap:4px;justify-self:end;}.tools button{all:unset;cursor:pointer;min-width:22px;height:22px;padding:0 7px;box-sizing:border-box;text-align:center;font-size:11.5px;line-height:22px;color:var(--text-2);border-radius:6px;border:1px solid var(--line);}.tools button:hover:not(:disabled){color:var(--text);border-color:var(--line2);}.tools button:focus-visible,.loopchip:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:1px;}.tools button:disabled{cursor:default;opacity:0.4;}.views{margin-left:6px;}.dag{position:relative;}.dag.unplaced{visibility:hidden;}.dag>*,.cluster>.in>*{position:absolute;}.edges{left:0;top:0;pointer-events:none;overflow:visible;z-index:0;}.edges path{fill:none;stroke:var(--line2);stroke-width:1.5;}.edges path.dashed{stroke-dasharray:5 4;}.edges path.ret,.legend svg path.ret{stroke:var(--text-2);stroke-width:2;stroke-dasharray:0.1 4;stroke-linecap:round;opacity:0.8;}.edges path.ret-tip,.legend svg path.ret-head{fill:var(--text-2);stroke:none;opacity:0.8;}.ic{display:block;flex:none;}.loop-ic{color:var(--text-2);}.in-ic{color:var(--text-muted);}.stub{z-index:1;font-family:var(--mono);font-size:11.5px;color:var(--text-muted);padding:3px 9px;border-radius:999px;border:1px solid var(--line);background:var(--card);white-space:nowrap;}.cluster{z-index:1;box-sizing:border-box;border-radius:14px;border:1px solid var(--line2);background:color-mix(in srgb,var(--text-muted) 5%,transparent);}.cluster .cluster{background:color-mix(in srgb,var(--text-muted) 6%,transparent);}.cluster>.in{position:absolute;inset:0;pointer-events:none;}.cluster>.in>*{pointer-events:auto;}.cluster>.hd{position:absolute;left:11px;top:6px;display:flex;flex-direction:column;align-items:flex-start;gap:1px;white-space:nowrap;padding-right:22px;cursor:pointer;}.cluster>.hd .line{display:flex;align-items:center;gap:8px;}.cluster>.hd .name{display:inline-flex;align-items:center;gap:5px;}.cluster.sel{outline:var(--focus-width) solid var(--accent);outline-offset:2px;}.cluster>.hd .spread{font-size:11px;color:var(--text-2);font-variant-numeric:tabular-nums;}.node{z-index:1;width:max-content;min-width:120px;box-sizing:border-box;display:flex;flex-direction:column;gap:7px;padding:8px 10px 9px;border-radius:10px;border:1px solid var(--line);background:var(--card);transition:border-color 0.3s,box-shadow 0.3s;cursor:pointer;box-shadow:var(--ex,0 0 0 0 transparent);}.node.accent{--ex:inset 3px 0 0 -1px color-mix(in srgb,var(--agent) 60%,transparent);}.node .nm{display:flex;align-items:center;min-width:0;gap:0;}.node .right{display:flex;align-items:center;gap:8px;}.node .right>.tog{margin-inline-end:0;}.cue{display:block;line-height:0;}.cluster>.cue{position:absolute;top:9px;right:10px;padding:2px;margin:-2px;}.tog{all:unset;cursor:pointer;display:inline-flex;line-height:0;padding:2px;margin:-2px;border-radius:4px;color:var(--text-2);}.tog:hover{color:var(--text);background:var(--raise);}.tog:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:1px;}.cluster>.hd .psep{color:var(--text-muted);font-size:11px;}.cluster>.hd .part{all:unset;cursor:pointer;font-family:var(--mono);font-weight:600;font-size:12.5px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px;}.cluster>.hd .part:hover{color:var(--text);text-decoration:underline;}.cluster>.hd .part:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:2px;border-radius:3px;}.node.sel{outline:var(--focus-width) solid var(--accent);outline-offset:2px;}.node.drill{box-shadow:4px 4px 0 -1px var(--card),4px 4px 0 0 var(--line2);}.node[data-look='running']{border-color:var(--status-running);}.node.drill[data-look='running']{box-shadow:4px 4px 0 -1px var(--card),4px 4px 0 0 var(--status-running),0 0 14px var(--status-running-bg);}.node:not(.drill)[data-look='running']{box-shadow:var(--ex,0 0 0 0 transparent),0 0 14px var(--status-running-bg);}.node[data-look='failed']{border-color:color-mix(in srgb,var(--status-failed) 55%,transparent);}.node:focus-within{border-color:var(--text-2);}.hd{display:flex;align-items:center;justify-content:space-between;gap:12px;}.name{all:unset;cursor:pointer;font-family:var(--mono);font-weight:600;font-size:12.5px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px;}.name:hover{text-decoration:underline;}.name:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:2px;border-radius:3px;}.count{font-size:11px;color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap;}.ex{display:flex;flex-wrap:wrap;gap:0 10px;font-size:11px;line-height:1.5;contain:inline-size;}:is(.ex,.st) .err{color:var(--status-failed);}:is(.ex,.st) .warn{color:var(--status-attention);}:is(.ex,.st) .live{color:var(--status-running);}:is(.ex,.st) .mut{color:var(--text-muted);}.marks{display:grid;grid-template-columns:repeat(var(--cols),var(--m));gap:var(--g);}.slot{width:var(--m);height:var(--m);}.taskchip.sel{outline:var(--focus-width) solid var(--accent);outline-offset:1px;}.hl .mark:not(.on){opacity:0.16;}.hl .mark.on{transform:scale(1.2);}@media (prefers-reduced-motion:reduce){.node{transition:none;}}.sbar{display:flex;width:220px;height:10px;border-radius:3px;overflow:hidden;background:var(--track);gap:1px;}.sbar i{display:block;min-width:2px;height:100%;background:var(--tone,var(--line2));}.sbar i:not([data-tone]){--tone:initial;}.sbar i[data-tone='done']{opacity:0.85;}.sbar i[data-tone='muted']{opacity:0.5;}.sbar i[data-shape='hatched']{background:repeating-linear-gradient(135deg,var(--tone-bg) 0 2px,color-mix(in srgb,var(--tone) 60%,transparent) 2px 3px);}.sbar i[data-shape='half']{background:linear-gradient(0deg,var(--tone) 50%,var(--tone-bg) 50%);}.fails{display:flex;flex-wrap:wrap;align-items:center;gap:4px;max-width:220px;font-size:11px;color:var(--text-muted);}.fails .taskchip{color:var(--status-failed);border-color:color-mix(in srgb,var(--status-failed) 45%,transparent);}.fails .taskchip:focus-visible{outline:var(--focus-width) solid var(--text);outline-offset:1px;}.hl .fails .taskchip:not(.on){opacity:0.4;}.mxframe{display:grid;grid-template-columns:minmax(0,1fr);place-items:center;padding:14px 16px;}.foot{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:6px 14px;margin-top:6px;}.legend{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:11px;color:var(--text-muted);}.legend span{display:inline-flex;align-items:center;gap:6px;}.legend .mark{--m:12px;cursor:default;animation:none;}.legend .mark:hover{transform:none;outline:none;}.legend i.mark{border-radius:3px;}.legend i.mark:is([data-shape='square'],[data-shape='hatched']){border-radius:2px;}.legend i.mark[data-shape='hatched']{background:repeating-linear-gradient(135deg,transparent 0 2px,color-mix(in srgb,var(--tone) 55%,transparent) 2px 3px);}.legend i.mark[data-shape='half']{border-radius:50%;}.legend svg path{stroke:var(--line2);stroke-width:1.5;fill:none;}.main{position:relative;min-width:0;}.sep{color:var(--text-muted);}.insp{position:absolute;left:0;top:0;z-index:6;width:272px;max-width:calc(100% - 16px);box-sizing:border-box;display:flex;flex-direction:column;gap:9px;padding:10px 12px 12px;border-radius:10px;border:1px solid var(--accent);background:var(--card);font-size:12px;overflow:visible;box-shadow:0 12px 32px color-mix(in srgb,var(--shadow) 55%,transparent);visibility:hidden;animation:insp-in 0.12s var(--ease) both;}.insp.placed{visibility:visible;}.insp .scroll{display:flex;flex-direction:column;gap:9px;min-height:0;overflow:auto;}.insp .ptr{position:absolute;width:10px;height:10px;background:var(--card);border:1px solid var(--accent);transform:rotate(45deg);}.insp[data-side='right'] .ptr{left:-6px;top:calc(var(--arrow) - 5px);border-top:0;border-right:0;}.insp[data-side='left'] .ptr{right:-6px;top:calc(var(--arrow) - 5px);border-bottom:0;border-left:0;}.insp[data-side='below'] .ptr{top:-6px;left:calc(var(--arrow) - 5px);border-bottom:0;border-right:0;}.insp[data-side='above'] .ptr{bottom:-6px;left:calc(var(--arrow) - 5px);border-top:0;border-left:0;}.insp.sheet{position:sticky;bottom:8px;width:auto;max-width:none;margin-top:8px;visibility:visible;}.insp.sheet .ptr{display:none;}@keyframes insp-in{from{opacity:0;transform:scale(0.96);}to{opacity:1;transform:none;}}.keys{grid-column:1 / -1;font-size:11px;color:var(--text-muted);visibility:hidden;}.keys span{white-space:nowrap;}:host(:focus-within) .keys{visibility:visible;}@container (max-width:560px){.foot{grid-template-columns:minmax(0,1fr);}.tools{grid-row:1;justify-self:start;flex-wrap:wrap;}.keys span{white-space:normal;}}@media not (any-pointer:fine){.keys{display:none;}}.tframe{overflow:auto;padding:0 12px 10px;background:linear-gradient(transparent,var(--well) 70%) center bottom / 100% 28px no-repeat local,radial-gradient(farthest-side at 50% 100%,color-mix(in srgb,var(--text-muted) 30%,transparent),transparent) center bottom / 100% 12px no-repeat scroll,var(--well);}table.list{width:100%;border-collapse:separate;border-spacing:0;font-size:12px;font-variant-numeric:tabular-nums;}.list th,.list td{text-align:left;vertical-align:middle;padding:6px 10px;border-bottom:1px solid var(--line);}.list .fit{width:1%;white-space:nowrap;}.list thead th{position:sticky;top:0;z-index:2;background:var(--well);color:var(--text-muted);font-weight:500;font-size:11px;white-space:nowrap;padding-top:10px;}.list tbody th{font-weight:600;}.list td{color:var(--text-2);}.list .rel>span{display:block;min-width:14ch;}.list tbody tr{cursor:pointer;}.list tbody tr:hover>*{background-color:color-mix(in srgb,var(--text-muted) 8%,transparent);}.list tbody tr.sel>*{background-color:var(--accent-bg);}.list tbody tr.sel>th{box-shadow:inset 2px 0 0 var(--accent);}.list .nm{display:inline-flex;align-items:center;gap:8px;vertical-align:middle;}.list .nm .in-ic{margin-right:-2px;}.list .name{max-width:32ch;}.loopchip{display:inline-flex;align-items:center;gap:4px;font-family:var(--sans);font-weight:400;}.loopchip .ic{color:var(--text-muted);}.list .st .n{color:var(--text);}`,wo=ti(class extends ni{constructor(){super(...arguments),this.key=A}render(e,t){return this.key=e,t}update(e,[t,n]){return t!==this.key&&(wi(e),this.key=t),n}}),To=(e,t)=>[...e.marks.map((e,n)=>e?{m:e,series:t[n]??``}:null),...e.loose.map(e=>({m:e,series:``}))];function Eo(e,t){let n=e.marks.length+e.loose.length,r=function(e){return e<=12?{cols:Math.max(1,e),size:12}:e<=100?{cols:10,size:10}:{cols:20,size:6}}(e.marks.length?t:n);return{cols:Math.min(r.cols,Math.max(1,n)),size:r.size,gap:r.size>=10?4:2}}function Do(e){return Math.max(0,e.findIndex(e=>e!==null))}var Oo={failed:`err`,attention:`warn`,running:`live`,muted:`mut`};function ko(e,t,n){let r=e.lay?.at[t];if(!r)return`left:0;top:0`;let i=n?n.x+1:0,a=n?n.y+1:0;return`left:${r.x-i}px;top:${r.y-a}px`}function Ao(e,t,n){t.target.closest(`.mark, .taskchip, .node, .cluster`)===t.currentTarget&&(t.stopPropagation(),t.detail>=2||e.select(n))}function jo(e,t,n){t.target.closest(`.mark, .taskchip, .node, .cluster`)===t.currentTarget&&(t.stopPropagation(),e.act(n))}function Mo(e,t,n){t.key===`Enter`&&(t.preventDefault(),e.act(n))}function No(e,t,n,r){let i=r?e.words.close:e.words.open;return O`<button type="button" class="tog" part="toggle" aria-expanded=${r} aria-label=${`${i}: ${n}`} title=${i} @click=${n=>{n.stopPropagation(),e.toggle(t,!r)}} @dblclick=${e=>e.stopPropagation()}>${(e=>O`<svg class="ic tog-ic" width="12" height="12" viewBox="0 0 12 12" aria-hidden="true" focusable="false">
165
189
  <rect x="0.7" y="0.7" width="10.6" height="10.6" rx="2.2" fill="none" stroke="currentColor" stroke-width="1.2"></rect>
166
190
  <path d=${e?`M3.5,6 H8.5`:`M3.5,6 H8.5 M6,3.5 V8.5`} fill="none" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"></path>
167
- </svg>`)(r)}</button>`}var fo=(e,t=`span`)=>(e.notes??[]).map(e=>t===`span`?k`<span class=${ao[e.tone??`neutral`]??``}>${e.text}</span>`:k`<div class=${ao[e.tone??`neutral`]??``}>${e.text}</div>`);function po(e,t,n,r,i,a=!1){let{m:o}=n,{key:s,on:c}=e.lit(),l=(e=>e.series||e.m.id)(n),u=c!==null&&(n.series!==``&&n.series===s||c.has(o.id)),d=e.selected===o.id?`sel`:``,f=n=>{e.hover=l,e.active.set(t.id,r),e.pz.reveal(n.currentTarget),e.focusSelect(o.id)};if(a)return k`<button type="button" class="taskchip ${u?`on`:``} ${d}" part="mark" data-i=${r} tabindex=${i?0:-1} title=${o.tip??j} aria-label=${o.label} aria-pressed=${!!d} @mouseenter=${()=>e.hover=l} @focus=${f} @blur=${()=>e.hover=null} @click=${()=>e.select(o.id)} @dblclick=${()=>e.act(o.id)}>${o.name??(n.series||o.id)}</button>`;let p=e.states[o.state];return k`<button type="button" class="mark ${u?`on`:``} ${d}" part="mark" data-tone=${I(p?.tone)} data-shape=${p?.shape??j} data-i=${r} data-n=${o.badge??j} tabindex=${i?0:-1} title=${o.tip??j} aria-label=${o.label} aria-pressed=${!!d} @mouseenter=${()=>e.hover=l} @focus=${f} @blur=${()=>e.hover=null} @click=${()=>e.select(o.id)} @dblclick=${()=>e.act(o.id)}></button>`}function mo(e,t,n){let r=t.target;if(!r.classList.contains(`mark`)&&!r.classList.contains(`taskchip`))return;if(t.shiftKey&&t.key.startsWith(`Arrow`))return function(e,t,n){let r=t.key===`ArrowRight`||t.key===`ArrowDown`?`later`:`earlier`,i=e.lay,a=function(e,t,n,r){let i=new Map(e.drawn.map((e,t)=>[e,t])),a=[...new Set(e.edges.filter((r,i)=>!e.back[i]&&(n===`later`?r.from===t:r.to===t)).map(e=>n===`later`?e.to:e.from))],o=r(t);return a.sort((e,t)=>Math.abs(r(e)-o)-Math.abs(r(t)-o)||(i.get(e)??0)-(i.get(t)??0)),a[0]??null}({drawn:e.arr.drawn,edges:e.drawn.edges,back:e.arr.back},n.id,r,e=>{let t=i?.at[e];return t?i?.down?t.x+t.w/2:t.y+t.h/2:0});if(t.preventDefault(),!a)return;let o=e.nodes.get(a);if(!o)return;let s=n.slots[e.active.get(n.id)??io(n.slots)]?.series??``,c=no(o,e.drawn.series),l=Ka(o,e.barAt)?c.filter(t=>!!t&&e.states[t.m.state]?.tone===`failed`):c,u=s?l.findIndex(e=>e?.series===s):-1,d=u>=0?u:e.active.get(o.id)??io(l);e.active.set(o.id,d),e.requestUpdate(),e.updateComplete.then(()=>{let t=e.renderRoot.querySelector(`.node[data-id="${CSS.escape(a)}"]`);(t?.querySelector(`[data-i="${d}"]`)??t?.querySelector(`.name`))?.focus()})}(e,t,n);let{slots:i}=n;if(t.key===`Enter`){let n=i[Number(r.dataset.i)];t.preventDefault(),n&&e.act(n.m.id);return}let a=e.active.get(n.id)??io(i),o={ArrowRight:1,ArrowLeft:-1,ArrowDown:n.grid.cols,ArrowUp:-n.grid.cols},s;if(t.key===`Home`)s=io(i);else if(t.key===`End`)s=i.length-1-[...i].reverse().findIndex(e=>e!==null);else{if(o[t.key]===void 0)return;{let e=o[t.key];for(s=a+e;s>=0&&s<i.length&&!i[s];)s+=Math.sign(e);if(s<0||s>=i.length)return}}t.preventDefault(),e.active.set(n.id,s),e.requestUpdate();let c=t.currentTarget;e.updateComplete.then(()=>c.querySelector(`[data-i="${s}"]`)?.focus())}var ho=(e,t,n)=>{let r=e.states[t];return k`<i class="mark" data-tone=${I(r?.tone)} data-shape=${r?.shape??j} data-n=${n??j}></i>`},go={series:[],nodes:[],clusters:[],edges:[],stubs:[]},_o=class extends M{constructor(...e){super(...e),this.graph=go,this.states={},this.selected=null,this.highlight=null,this.order=void 0,this.key=``,this.direction=`auto`,this.view=`graph`,this.matrix=null,this.barAt=200,this.related=void 0,this.strings={},this.matrixStrings={},this.renderIcon=e=>pi(e),this.iconStyles=[],this.hover=null,this.down=!1,this.lay=null,this.announced=``,this.arr=Va(go),this.words=$a,this.drawn={...go,nodes:[]},this.nodes=new Map,this.clusters=new Map,this.markSeries=new Map,this.active=new Map,this.measured=null,this.layKey=``,this.layFor=null,this.litCache=null,this.scrolled=null,this.pz=new Ya(this,{frame:()=>this.renderRoot.querySelector(`.frame`),stage:()=>this.renderRoot.querySelector(`.stage`),drawing:()=>this.lay&&!this.matrix?{w:this.lay.w,h:this.lay.h,down:this.down,room:this.card.room}:null,wheel:()=>this.view!==`table`&&!this.matrix,down:()=>this.down,onMove:()=>this.card.place(),onResize:()=>{this.fit(),this.card.place()}}),this.card=new Xa(this,{docked:()=>this.down,frameH:()=>this.pz.frameH,grow:()=>this.matrix?this.requestUpdate():this.fit(),pressed:()=>this.pz.pressed,inner:()=>this.matrixEl()?.renderRoot??null}),this.h=this,this.onEscape=e=>{e.key===`Escape`&&!e.defaultPrevented&&this.selected&&(e.preventDefault(),this.select(null))}}static{this.styles=[V,Jr,oi,eo]}static{this.properties={graph:{attribute:!1},states:{attribute:!1},selected:{attribute:!1},highlight:{attribute:!1},order:{attribute:!1},key:{},direction:{},view:{},matrix:{attribute:!1},barAt:{type:Number},related:{attribute:!1},strings:{attribute:!1},matrixStrings:{attribute:!1},renderIcon:{attribute:!1},iconStyles:{attribute:!1},hover:{state:!0},down:{state:!0},lay:{state:!0},announced:{state:!0}}}matrixEl(){return this.renderRoot.querySelector(`cae-mark-matrix`)}willUpdate(e){if(e.has(`key`)&&e.get(`key`)!==void 0&&(this.pz.reset(),this.active.clear()),e.has(`strings`)&&(this.words=jr($a,this.strings)),e.has(`direction`)&&this.direction!==`auto`&&(this.down=this.direction===`down`),(e.has(`graph`)||e.has(`order`)||e.has(`down`)||e.has(`direction`))&&(this.arr=Va(this.graph,this.order,this.down),this.clusters=new Map(this.graph.clusters.map(e=>[e.id,e]))),e.has(`graph`)||e.has(`states`)||e.has(`strings`)){let e=this.graph;this.drawn={...e,nodes:e.nodes.map(e=>function(e,t,n){let{marks:r=[],loose:i=[]}=e,a={},o=0,s=0;for(let e of[...r,...i])e&&(a[e.state]=(a[e.state]??0)+1,s++,t[e.state]?.tone===`done`&&o++);return{...e,marks:r,loose:i,counts:e.counts??a,progress:e.progress??{done:o,total:s,label:n(o,s)}}}(e,this.states,this.words.progress))},this.nodes=new Map(this.drawn.nodes.map(e=>[e.id,e])),this.markSeries=new Map(this.drawn.nodes.flatMap(t=>no(t,e.series).flatMap(e=>e?[[e.m.id,e.series]]:[])))}}connectedCallback(){super.connectedCallback(),this.addEventListener(`keydown`,this.onEscape)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(`keydown`,this.onEscape)}updated(e){e.has(`iconStyles`)&&this.renderRoot instanceof ShadowRoot&&mt(this.renderRoot,[...this.constructor.elementStyles,...this.iconStyles]);let t=this.matrixEl();t&&t!==this.scrolled&&(this.scrolled=t,t.renderRoot.addEventListener(`scroll`,()=>this.card.place(),{capture:!0})),this.place(),this.card.place(),e.has(`selected`)&&this.selectionChanged()}focusToggle(e,t=4){let n=this.renderRoot;if(n.querySelector(`.dag.unplaced`)&&t>0)return void this.updateComplete.then(()=>requestAnimationFrame(()=>this.focusToggle(e,t-1)));let r=this.clusters.has(e)?`.cluster[data-cluster="${CSS.escape(e)}"] > .cue .tog`:`.node[data-id="${CSS.escape(e)}"] .tog`,i=n.querySelector(r);i?this.card.focusQuietly(i):this.focusItem(e)}focusItem(e){let t=this.renderRoot,n=null;e&&this.clusters.has(e)?n=t.querySelector(`.cluster[data-cluster="${CSS.escape(e)}"] > .hd .name`):e&&(n=t.querySelector(`.node[data-id="${CSS.escape(e)}"] [tabindex="0"]`));let r=t.querySelector(`slot[name="crumbs"]`)?.assignedElements({flatten:!0})??[];this.card.focusQuietly(n??r.map(e=>e.matches(`button`)?e:e.querySelector(`button`)).find(Boolean)??t.querySelector(`.mark[tabindex="0"], .node .name`)??this.matrixEl()?.renderRoot.querySelector(`.mark[tabindex="0"]`)??null)}selectionChanged(){let[e,t]=this.card.describe(),n=e?[e,t].filter(Boolean).join(` | `):``;n!==this.announced&&(this.announced=n),this.down&&this.card.whenReleased(()=>this.card.revealOverSheet())}place(){let e=this.renderRoot.querySelector(`.dag`);if(!e)return;let t=this.graph,n=`${this.down}|${this.clientWidth}`;if(this.measured?.graph===t&&this.measured.key===n)return this.fit();this.measured={graph:t,key:n};let r=new Map;for(let t of e.querySelectorAll(`[data-id]`))r.set(t.dataset.id??``,{w:t.offsetWidth,h:t.offsetHeight});let i=this.arr,a=JSON.stringify([this.key,i.slots,i.edgePaths.map(e=>e.steps.map(e=>e.id)),this.down,[...r]]);if(a===this.layKey)return this.fit();this.layKey=a,this.layFor=this.key,this.lay=function(e,t,n=!1){let r=Ua[n?`down`:`across`],i=e=>n?e.h:e.w,a=e=>n?e.w:e.h,o=new Set(e.clusters.map(e=>e.id)),s=new Map(e.clusters.map(e=>[e.id,e.parent])),c=e=>t.get(`lbl:${e}`)??{w:0,h:0},l=e=>n?{u0:c(e).h+r.pad+r.gap/2,u1:r.pad,v0:r.pad,v1:r.padEnd,minU:0,minV:c(e).w+2*r.pad}:{u0:r.pad,u1:r.pad,v0:c(e).h+r.pad,v1:r.padEnd,minU:c(e).w+2*r.pad,minV:0},u=new Map,d=e=>{if(o.has(e))return u.get(e)??{u:0,v:0};if(W(e))return{u:0,v:0};let n=t.get(e)??{w:0,h:0};return{u:i(n),v:a(n)}},f=new Map,p=new Map,m=e=>e===``?0:1+m(s.get(e)??``),h=[``,...e.clusters.map(e=>e.id)].sort((e,t)=>m(t)-m(e)),g=(t,n)=>{let r=e.edgePaths[t]?.steps??[],i=r[n];if(W(i.id))return 0;if(!o.has(i.id))return d(i.id).v/2;let a=r[n-1]?.in===i.id?n-1:n+1,s=r[a];return l(i.id).v0+(f.get(i.id)?.top.get(s.id)??0)+g(t,a)};for(let t of h){let n=(e.slots[t]??[]).map(e=>[...e]);p.set(t,new Map(n.flatMap((e,t)=>e.map(e=>[e,t]))));let i=n.map(e=>Math.max(0,...e.map(e=>d(e).u))),a=t===``?r.gap:r.boxGap,s=[];i.forEach((e,t)=>s.push(t?s[t-1]+i[t-1]+a:0));let c=[];e.edgePaths.forEach((e,n)=>e.steps.forEach((r,i)=>{let a=e.steps[i-1];i&&a&&a.in===t&&r.in===t&&p.get(t)?.get(a.id)!==p.get(t)?.get(r.id)&&c.push({a:a.id,b:r.id,oa:g(n,i-1),ob:g(n,i)})}));let m=(e,t)=>t===void 0?0:o.has(e)||o.has(t)||!W(e)&&!W(t)?r.sep:r.pointSep,h=new Map;for(let e of n){let t=0;e.forEach((n,r)=>{h.set(n,t),t+=d(n).v+m(n,e[r+1])})}let _=(e,t)=>{let n=e.map(e=>{let n=t(e);return n.length?n.reduce((e,t)=>e+t,0)/n.length:h.get(e)??0}),r=e.map((t,n)=>d(t).v+m(t,e[n+1])),i=e.map((e,t)=>W(e)?-1:t).filter(e=>e>=0),a=Wa(i.map(e=>n[e]),i.map((e,t)=>t+1<i.length?((e,t)=>r.slice(e,t).reduce((e,t)=>e+t,0))(e,i[t+1]):0),i.map(()=>1));i.forEach((e,t)=>n[e]=a[t]),Wa(n,r,e.map(e=>W(e)?1:1e6)).forEach((t,n)=>h.set(e[n],Math.round(100*t)/100))},v=(e,t)=>{let n=W(e)?t:t.filter(e=>!W(e.other));return(n.length?n:t).map(e=>e.at)},y=e=>v(e,c.filter(t=>t.b===e).map(e=>({other:e.a,at:(h.get(e.a)??0)+e.oa-e.ob}))),b=e=>v(e,c.filter(t=>t.a===e).map(e=>({other:e.b,at:(h.get(e.b)??0)+e.ob-e.oa})));for(let e=0;e<8;e++){let t=n.map((e,t)=>t);e%2&&t.reverse();for(let r of t)_(n[r],e%2?b:y)}for(let e of n)_(e,e=>[...y(e),...b(e)]);let x=h.size?Math.min(...h.values()):0;for(let[e,t]of h)h.set(e,t-x);let S=(s[s.length-1]??0)+(i[i.length-1]??0),ee=Math.max(0,...n.flat().map(e=>(h.get(e)??0)+d(e).v));if(f.set(t,{rows:n,start:s,width:i,top:h,u:S,v:ee}),t!==``){let e=l(t);u.set(t,{u:Math.max(e.u0+S+e.u1,e.minU),v:Math.max(e.v0+ee+e.v1,e.minV)})}}let _={},v=new Map,y=(e,t,r)=>{v.set(e,{u:t,v:r});let i=f.get(e);i.rows.forEach((e,a)=>e.forEach(e=>{if(W(e))return;let s=t+i.start[a],c=r+(i.top.get(e)??0);if(_[e]=((e,t,r)=>n?{x:t,y:e,w:r.v,h:r.u}:{x:e,y:t,w:r.u,h:r.v})(s,c,d(e)),o.has(e)){let t=l(e);y(e,s+t.u0,c+t.v0)}}))};y(``,r.margin,r.margin);let b=f.get(``),x=b.u+2*r.margin,S=b.v+2*r.margin,ee=(e,t)=>{let n=f.get(e),r=(v.get(e)??{u:0,v:0}).u+(n.start[t]??0);return[r,r+(n.width[t]??0)]},te=(e,t)=>p.get(e)?.get(t)??0,ne=e=>e&&W(e.id)?/\|by:([^|]*)\|/.exec(e.id)?.[1]??``:``,re=e.edgePaths.map((e,t)=>{let i=n=>{let r=e.steps[n];return(v.get(r.in)??{u:0,v:0}).v+(f.get(r.in)?.top.get(r.id)??0)+g(t,n)},a=e.steps.map((t,a)=>{let o=e.steps[a-1],s=e.steps[a+1],[u,p]=ee(t.in,te(t.in,t.id)),m=i(a);if(a===0)return{a:u+d(t.id).u,b:p,at:m};if(a===e.steps.length-1)return{a:u,b:u,at:m};if(W(t.id)){let i=ne(t);if(i&&o?.id===i)return{a:ee(i,te(i,e.steps[a-2]?.id??``)+1)[0],b:p,at:m};if(i&&s?.id===i){let t=te(i,e.steps[a+2]?.id??``);return{a:u,b:t>0?ee(i,t-1)[1]:(_[i]?n?_[i].y:_[i].x:u)+c(i).h+r.pad,at:m}}return{a:u,b:p,at:m}}let h=l(t.id),g=f.get(t.id);if(o?.in===t.id){if(ne(s)===t.id){let e=ee(t.id,te(t.id,o.id)+1)[0];return{a:e,b:e,at:i(a+1)}}return{a:u+h.u0+g.u,b:p,at:m}}if(ne(o)===t.id){let e=ee(t.id,te(t.id,s?.id??``))[0];return{a:e,b:e,at:i(a+1)}}return{a:u,b:u+h.u0,at:m}});return{from:e.from,to:e.to,style:e.style,runs:a}}),ie=e.clusters.flatMap(e=>{if(!e.cycle)return[];let t=f.get(e.id),n=v.get(e.id);if(!t||!n)return[];let r=e=>{let n=(e??[]).filter(e=>!W(e)),r=null;for(let e of n){let n=d(e),i=(t.top.get(e)??0)+n.v;(!r||i>r.v)&&(r={u:n.u,v:i})}return r},i=t.rows.map((e,t)=>e.some(e=>!W(e))?t:-1).filter(e=>e>=0),a=i[0]??0,o=i[i.length-1]??0,s=r(t.rows[o]),c=r(t.rows[a]);if(!s||!c)return[];let l=n.u+(t.start[o]??0)+(t.width[o]??0)/2,u=n.u+(t.start[a]??0)+(t.width[a]??0)/2;if(l-u<24){let e=Math.max(12,Math.min(28,Math.min(s.u,c.u)/4));l=(l+u)/2+e,u=l-2*e}return[{box:e.id,from:l,v0:n.v+s.v,to:u,v1:n.v+c.v,band:n.v+t.v+12}]});return{w:n?S:x,h:n?x:S,at:_,edges:re,returns:ie,down:n}}(i,r,this.down),this.updateComplete.then(()=>this.fit())}fit(){if(this.direction===`auto`){let e=this.clientWidth,t=e>0&&e<640;t!==this.down&&(this.down=t)}this.pz.fit()}select(e){e!==this.selected&&L(this,`cae-select`,{id:e})}act(e){let t=this.nodes.get(e)??this.clusters.get(e)??this.findMark(e);t?.drill?this.drill(e):t&&L(this,`cae-activate`,{id:e})}findMark(e){for(let t of this.drawn.nodes)for(let n of[...t.marks,...t.loose])if(n?.id===e)return n;for(let t of this.matrix?.rows??[])for(let n of t.cells)if(n?.id===e)return n;return null}lit(){let e=this.selected,t=this.hover===null&&e!==null&&this.markSeries.has(e)?this.markSeries.get(e)||e:null,n=this.hover??t??this.highlight??null,r=this.litCache;if(r&&r.key===n&&r.graph===this.graph&&r.related===this.related)return r;let i=n===null?null:(this.related??(e=>new Set([e])))(n);return this.litCache={key:n,graph:this.graph,related:this.related,on:i},this.litCache}known(e){return this.nodes.has(e)||this.clusters.has(e)||!!this.findMark(e)}render(){let e=this.h,t=this.matrix,n=t?this.matrixView(t):this.view===`table`?function(e){let t=e.drawn,n=e.words,r=[...t.edges,...t.stubs].some(e=>e.style===`dashed`),i=e=>n.list(e)||n.none,a=!e.down&&e.laidOut&&e.pz.frameH>0?`height:${Math.round(e.pz.frameH)}px`:`max-height:max(360px, 70vh)`,o=e.arr.drawn.map(t=>e.nodes.get(t)).filter(e=>!!e);return k`<div class="frame tframe" part="frame" data-scroll="x" style=${a} @scroll=${()=>e.card.place()} @click=${t=>!t.target.closest(`tbody tr`)&&e.select(null)}>
191
+ </svg>`)(r)}</button>`}var Po=(e,t=`span`)=>(e.notes??[]).map(e=>t===`span`?O`<span class=${Oo[e.tone??`neutral`]??``}>${e.text}</span>`:O`<div class=${Oo[e.tone??`neutral`]??``}>${e.text}</div>`);function Fo(e,t,n,r,i,a=!1){let{m:o}=n,{key:s,on:c}=e.lit(),l=(e=>e.series||e.m.id)(n),u=c!==null&&(n.series!==``&&n.series===s||c.has(o.id)),d=e.selected===o.id?`sel`:``,f=n=>{e.hover=l,e.active.set(t.id,r),e.pz.reveal(n.currentTarget),e.focusSelect(o.id)};if(a)return O`<button type="button" class="taskchip ${u?`on`:``} ${d}" part="mark" data-i=${r} tabindex=${i?0:-1} title=${o.tip??A} aria-label=${o.label} aria-pressed=${!!d} @mouseenter=${()=>e.hover=l} @focus=${f} @blur=${()=>e.hover=null} @click=${()=>e.select(o.id)} @dblclick=${()=>e.act(o.id)}>${o.name??(n.series||o.id)}</button>`;let p=e.states[o.state];return O`<button type="button" class="mark ${u?`on`:``} ${d}" part="mark" data-tone=${I(p?.tone)} data-shape=${p?.shape??A} data-i=${r} data-n=${o.badge??A} tabindex=${i?0:-1} title=${o.tip??A} aria-label=${o.label} aria-pressed=${!!d} @mouseenter=${()=>e.hover=l} @focus=${f} @blur=${()=>e.hover=null} @click=${()=>e.select(o.id)} @dblclick=${()=>e.act(o.id)}></button>`}function Io(e,t,n){let r=t.target;if(!r.classList.contains(`mark`)&&!r.classList.contains(`taskchip`))return;if(t.shiftKey&&t.key.startsWith(`Arrow`))return function(e,t,n){let r=t.key===`ArrowRight`||t.key===`ArrowDown`?`later`:`earlier`,i=e.lay,a=function(e,t,n,r){let i=new Map(e.drawn.map((e,t)=>[e,t])),a=[...new Set(e.edges.filter((r,i)=>!e.back[i]&&(n===`later`?r.from===t:r.to===t)).map(e=>n===`later`?e.to:e.from))],o=r(t);return a.sort((e,t)=>Math.abs(r(e)-o)-Math.abs(r(t)-o)||(i.get(e)??0)-(i.get(t)??0)),a[0]??null}({drawn:e.arr.drawn,edges:e.drawn.edges,back:e.arr.back},n.id,r,e=>{let t=i?.at[e];return t?i?.down?t.x+t.w/2:t.y+t.h/2:0});if(t.preventDefault(),!a)return;let o=e.nodes.get(a);if(!o)return;let s=n.slots[e.active.get(n.id)??Do(n.slots)]?.series??``,c=To(o,e.drawn.series),l=ho(o,e.barAt)?c.filter(t=>!!t&&e.states[t.m.state]?.tone===`failed`):c,u=s?l.findIndex(e=>e?.series===s):-1,d=u>=0?u:e.active.get(o.id)??Do(l);e.active.set(o.id,d),e.requestUpdate(),e.updateComplete.then(()=>{let t=e.renderRoot.querySelector(`.node[data-id="${CSS.escape(a)}"]`);(t?.querySelector(`[data-i="${d}"]`)??t?.querySelector(`.name`))?.focus()})}(e,t,n);let{slots:i}=n;if(t.key===`Enter`){let n=i[Number(r.dataset.i)];t.preventDefault(),n&&e.act(n.m.id);return}let a=e.active.get(n.id)??Do(i),o={ArrowRight:1,ArrowLeft:-1,ArrowDown:n.grid.cols,ArrowUp:-n.grid.cols},s;if(t.key===`Home`)s=Do(i);else if(t.key===`End`)s=i.length-1-[...i].reverse().findIndex(e=>e!==null);else{if(o[t.key]===void 0)return;{let e=o[t.key];for(s=a+e;s>=0&&s<i.length&&!i[s];)s+=Math.sign(e);if(s<0||s>=i.length)return}}t.preventDefault(),e.active.set(n.id,s),e.requestUpdate();let c=t.currentTarget;e.updateComplete.then(()=>c.querySelector(`[data-i="${s}"]`)?.focus())}var Lo=(e,t,n)=>{let r=e.states[t];return O`<i class="mark" data-tone=${I(r?.tone)} data-shape=${r?.shape??A} data-n=${n??A}></i>`},Ro={series:[],nodes:[],clusters:[],edges:[],stubs:[]},zo=class extends j{constructor(...e){super(...e),this.graph=Ro,this.states={},this.selected=null,this.highlight=null,this.order=void 0,this.key=``,this.direction=`auto`,this.view=`graph`,this.matrix=null,this.barAt=200,this.related=void 0,this.strings={},this.matrixStrings={},this.renderIcon=e=>mi(e),this.iconStyles=[],this.hover=null,this.down=!1,this.lay=null,this.announced=``,this.arr=lo(Ro),this.words=So,this.drawn={...Ro,nodes:[]},this.nodes=new Map,this.clusters=new Map,this.markSeries=new Map,this.active=new Map,this.measured=null,this.layKey=``,this.layFor=null,this.litCache=null,this.scrolled=null,this.pz=new vo(this,{frame:()=>this.renderRoot.querySelector(`.frame`),stage:()=>this.renderRoot.querySelector(`.stage`),drawing:()=>this.lay&&!this.matrix?{w:this.lay.w,h:this.lay.h,down:this.down,room:this.card.room}:null,wheel:()=>this.view!==`table`&&!this.matrix,down:()=>this.down,onMove:()=>this.card.place(),onResize:()=>{this.fit(),this.card.place()}}),this.card=new yo(this,{docked:()=>this.down,frameH:()=>this.pz.frameH,grow:()=>this.matrix?this.requestUpdate():this.fit(),pressed:()=>this.pz.pressed,inner:()=>this.matrixEl()?.renderRoot??null}),this.h=this,this.onEscape=e=>{e.key===`Escape`&&!e.defaultPrevented&&this.selected&&(e.preventDefault(),this.select(null))}}static{this.styles=[B,Yr,si,Co]}static{this.properties={graph:{attribute:!1},states:{attribute:!1},selected:{attribute:!1},highlight:{attribute:!1},order:{attribute:!1},key:{},direction:{},view:{},matrix:{attribute:!1},barAt:{type:Number},related:{attribute:!1},strings:{attribute:!1},matrixStrings:{attribute:!1},renderIcon:{attribute:!1},iconStyles:{attribute:!1},hover:{state:!0},down:{state:!0},lay:{state:!0},announced:{state:!0}}}matrixEl(){return this.renderRoot.querySelector(`cae-mark-matrix`)}willUpdate(e){if(e.has(`key`)&&e.get(`key`)!==void 0&&(this.pz.reset(),this.active.clear()),e.has(`strings`)&&(this.words=jr(So,this.strings)),e.has(`direction`)&&this.direction!==`auto`&&(this.down=this.direction===`down`),(e.has(`graph`)||e.has(`order`)||e.has(`down`)||e.has(`direction`))&&(this.arr=lo(this.graph,this.order,this.down),this.clusters=new Map(this.graph.clusters.map(e=>[e.id,e]))),e.has(`graph`)||e.has(`states`)||e.has(`strings`)){let e=this.graph;this.drawn={...e,nodes:e.nodes.map(e=>function(e,t,n){let{marks:r=[],loose:i=[]}=e,a={},o=0,s=0;for(let e of[...r,...i])e&&(a[e.state]=(a[e.state]??0)+1,s++,t[e.state]?.tone===`done`&&o++);return{...e,marks:r,loose:i,counts:e.counts??a,progress:e.progress??{done:o,total:s,label:n(o,s)}}}(e,this.states,this.words.progress))},this.nodes=new Map(this.drawn.nodes.map(e=>[e.id,e])),this.markSeries=new Map(this.drawn.nodes.flatMap(t=>To(t,e.series).flatMap(e=>e?[[e.m.id,e.series]]:[])))}}connectedCallback(){super.connectedCallback(),this.addEventListener(`keydown`,this.onEscape)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(`keydown`,this.onEscape)}updated(e){e.has(`iconStyles`)&&this.renderRoot instanceof ShadowRoot&&ht(this.renderRoot,[...this.constructor.elementStyles,...this.iconStyles]);let t=this.matrixEl();t&&t!==this.scrolled&&(this.scrolled=t,t.renderRoot.addEventListener(`scroll`,()=>this.card.place(),{capture:!0})),this.place(),this.card.place(),e.has(`selected`)&&this.selectionChanged()}focusToggle(e,t=4){let n=this.renderRoot;if(n.querySelector(`.dag.unplaced`)&&t>0)return void this.updateComplete.then(()=>requestAnimationFrame(()=>this.focusToggle(e,t-1)));let r=this.clusters.has(e)?`.cluster[data-cluster="${CSS.escape(e)}"] > .cue .tog`:`.node[data-id="${CSS.escape(e)}"] .tog`,i=n.querySelector(r);i?this.card.focusQuietly(i):this.focusItem(e)}focusItem(e){let t=this.renderRoot,n=null;e&&this.clusters.has(e)?n=t.querySelector(`.cluster[data-cluster="${CSS.escape(e)}"] > .hd .name`):e&&(n=t.querySelector(`.node[data-id="${CSS.escape(e)}"] [tabindex="0"]`));let r=t.querySelector(`slot[name="crumbs"]`)?.assignedElements({flatten:!0})??[];this.card.focusQuietly(n??r.map(e=>e.matches(`button`)?e:e.querySelector(`button`)).find(Boolean)??t.querySelector(`.mark[tabindex="0"], .node .name`)??this.matrixEl()?.renderRoot.querySelector(`.mark[tabindex="0"]`)??null)}selectionChanged(){let[e,t]=this.card.describe(),n=e?[e,t].filter(Boolean).join(` | `):``;n!==this.announced&&(this.announced=n),this.down&&this.card.whenReleased(()=>this.card.revealOverSheet())}place(){let e=this.renderRoot.querySelector(`.dag`);if(!e)return;let t=this.graph,n=`${this.down}|${this.clientWidth}`;if(this.measured?.graph===t&&this.measured.key===n)return this.fit();this.measured={graph:t,key:n};let r=new Map;for(let t of e.querySelectorAll(`[data-id]`))r.set(t.dataset.id??``,{w:t.offsetWidth,h:t.offsetHeight});let i=this.arr,a=JSON.stringify([this.key,i.slots,i.edgePaths.map(e=>e.steps.map(e=>e.id)),this.down,[...r]]);if(a===this.layKey)return this.fit();this.layKey=a,this.layFor=this.key,this.lay=function(e,t,n=!1){let r=fo[n?`down`:`across`],i=e=>n?e.h:e.w,a=e=>n?e.w:e.h,o=new Set(e.clusters.map(e=>e.id)),s=new Map(e.clusters.map(e=>[e.id,e.parent])),c=e=>t.get(`lbl:${e}`)??{w:0,h:0},l=e=>n?{u0:c(e).h+r.pad+r.gap/2,u1:r.pad,v0:r.pad,v1:r.padEnd,minU:0,minV:c(e).w+2*r.pad}:{u0:r.pad,u1:r.pad,v0:c(e).h+r.pad,v1:r.padEnd,minU:c(e).w+2*r.pad,minV:0},u=new Map,d=e=>{if(o.has(e))return u.get(e)??{u:0,v:0};if(W(e))return{u:0,v:0};let n=t.get(e)??{w:0,h:0};return{u:i(n),v:a(n)}},f=new Map,p=new Map,m=e=>e===``?0:1+m(s.get(e)??``),h=[``,...e.clusters.map(e=>e.id)].sort((e,t)=>m(t)-m(e)),g=(t,n)=>{let r=e.edgePaths[t]?.steps??[],i=r[n];if(W(i.id))return 0;if(!o.has(i.id))return d(i.id).v/2;let a=r[n-1]?.in===i.id?n-1:n+1,s=r[a];return l(i.id).v0+(f.get(i.id)?.top.get(s.id)??0)+g(t,a)};for(let t of h){let n=(e.slots[t]??[]).map(e=>[...e]);p.set(t,new Map(n.flatMap((e,t)=>e.map(e=>[e,t]))));let i=n.map(e=>Math.max(0,...e.map(e=>d(e).u))),a=t===``?r.gap:r.boxGap,s=[];i.forEach((e,t)=>s.push(t?s[t-1]+i[t-1]+a:0));let c=[];e.edgePaths.forEach((e,n)=>e.steps.forEach((r,i)=>{let a=e.steps[i-1];i&&a&&a.in===t&&r.in===t&&p.get(t)?.get(a.id)!==p.get(t)?.get(r.id)&&c.push({a:a.id,b:r.id,oa:g(n,i-1),ob:g(n,i)})}));let m=(e,t)=>t===void 0?0:o.has(e)||o.has(t)||!W(e)&&!W(t)?r.sep:r.pointSep,h=new Map;for(let e of n){let t=0;e.forEach((n,r)=>{h.set(n,t),t+=d(n).v+m(n,e[r+1])})}let _=(e,t)=>{let n=e.map(e=>{let n=t(e);return n.length?n.reduce((e,t)=>e+t,0)/n.length:h.get(e)??0}),r=e.map((t,n)=>d(t).v+m(t,e[n+1])),i=e.map((e,t)=>W(e)?-1:t).filter(e=>e>=0),a=po(i.map(e=>n[e]),i.map((e,t)=>t+1<i.length?((e,t)=>r.slice(e,t).reduce((e,t)=>e+t,0))(e,i[t+1]):0),i.map(()=>1));i.forEach((e,t)=>n[e]=a[t]),po(n,r,e.map(e=>W(e)?1:1e6)).forEach((t,n)=>h.set(e[n],Math.round(100*t)/100))},ee=(e,t)=>{let n=W(e)?t:t.filter(e=>!W(e.other));return(n.length?n:t).map(e=>e.at)},v=e=>ee(e,c.filter(t=>t.b===e).map(e=>({other:e.a,at:(h.get(e.a)??0)+e.oa-e.ob}))),y=e=>ee(e,c.filter(t=>t.a===e).map(e=>({other:e.b,at:(h.get(e.b)??0)+e.ob-e.oa})));for(let e=0;e<8;e++){let t=n.map((e,t)=>t);e%2&&t.reverse();for(let r of t)_(n[r],e%2?y:v)}for(let e of n)_(e,e=>[...v(e),...y(e)]);let b=h.size?Math.min(...h.values()):0;for(let[e,t]of h)h.set(e,t-b);let x=(s[s.length-1]??0)+(i[i.length-1]??0),te=Math.max(0,...n.flat().map(e=>(h.get(e)??0)+d(e).v));if(f.set(t,{rows:n,start:s,width:i,top:h,u:x,v:te}),t!==``){let e=l(t);u.set(t,{u:Math.max(e.u0+x+e.u1,e.minU),v:Math.max(e.v0+te+e.v1,e.minV)})}}let _={},ee=new Map,v=(e,t,r)=>{ee.set(e,{u:t,v:r});let i=f.get(e);i.rows.forEach((e,a)=>e.forEach(e=>{if(W(e))return;let s=t+i.start[a],c=r+(i.top.get(e)??0);if(_[e]=((e,t,r)=>n?{x:t,y:e,w:r.v,h:r.u}:{x:e,y:t,w:r.u,h:r.v})(s,c,d(e)),o.has(e)){let t=l(e);v(e,s+t.u0,c+t.v0)}}))};v(``,r.margin,r.margin);let y=f.get(``),b=y.u+2*r.margin,x=y.v+2*r.margin,te=(e,t)=>{let n=f.get(e),r=(ee.get(e)??{u:0,v:0}).u+(n.start[t]??0);return[r,r+(n.width[t]??0)]},ne=(e,t)=>p.get(e)?.get(t)??0,re=e=>e&&W(e.id)?/\|by:([^|]*)\|/.exec(e.id)?.[1]??``:``,ie=e.edgePaths.map((e,t)=>{let i=n=>{let r=e.steps[n];return(ee.get(r.in)??{u:0,v:0}).v+(f.get(r.in)?.top.get(r.id)??0)+g(t,n)},a=e.steps.map((t,a)=>{let o=e.steps[a-1],s=e.steps[a+1],[u,p]=te(t.in,ne(t.in,t.id)),m=i(a);if(a===0)return{a:u+d(t.id).u,b:p,at:m};if(a===e.steps.length-1)return{a:u,b:u,at:m};if(W(t.id)){let i=re(t);if(i&&o?.id===i)return{a:te(i,ne(i,e.steps[a-2]?.id??``)+1)[0],b:p,at:m};if(i&&s?.id===i){let t=ne(i,e.steps[a+2]?.id??``);return{a:u,b:t>0?te(i,t-1)[1]:(_[i]?n?_[i].y:_[i].x:u)+c(i).h+r.pad,at:m}}return{a:u,b:p,at:m}}let h=l(t.id),g=f.get(t.id);if(o?.in===t.id){if(re(s)===t.id){let e=te(t.id,ne(t.id,o.id)+1)[0];return{a:e,b:e,at:i(a+1)}}return{a:u+h.u0+g.u,b:p,at:m}}if(re(o)===t.id){let e=te(t.id,ne(t.id,s?.id??``))[0];return{a:e,b:e,at:i(a+1)}}return{a:u,b:u+h.u0,at:m}});return{from:e.from,to:e.to,style:e.style,runs:a}}),ae=e.clusters.flatMap(e=>{if(!e.cycle)return[];let t=f.get(e.id),n=ee.get(e.id);if(!t||!n)return[];let r=e=>{let n=(e??[]).filter(e=>!W(e)),r=null;for(let e of n){let n=d(e),i=(t.top.get(e)??0)+n.v;(!r||i>r.v)&&(r={u:n.u,v:i})}return r},i=t.rows.map((e,t)=>e.some(e=>!W(e))?t:-1).filter(e=>e>=0),a=i[0]??0,o=i[i.length-1]??0,s=r(t.rows[o]),c=r(t.rows[a]);if(!s||!c)return[];let l=n.u+(t.start[o]??0)+(t.width[o]??0)/2,u=n.u+(t.start[a]??0)+(t.width[a]??0)/2;if(l-u<24){let e=Math.max(12,Math.min(28,Math.min(s.u,c.u)/4));l=(l+u)/2+e,u=l-2*e}return[{box:e.id,from:l,v0:n.v+s.v,to:u,v1:n.v+c.v,band:n.v+t.v+12}]});return{w:n?x:b,h:n?b:x,at:_,edges:ie,returns:ae,down:n}}(i,r,this.down),this.updateComplete.then(()=>this.fit())}fit(){if(this.direction===`auto`){let e=this.clientWidth,t=e>0&&e<640;t!==this.down&&(this.down=t)}this.pz.fit()}select(e){e!==this.selected&&L(this,`cae-select`,{id:e})}act(e){let t=this.nodes.get(e)??this.clusters.get(e)??this.findMark(e);t?.drill?this.drill(e):t&&L(this,`cae-activate`,{id:e})}findMark(e){for(let t of this.drawn.nodes)for(let n of[...t.marks,...t.loose])if(n?.id===e)return n;for(let t of this.matrix?.rows??[])for(let n of t.cells)if(n?.id===e)return n;return null}lit(){let e=this.selected,t=this.hover===null&&e!==null&&this.markSeries.has(e)?this.markSeries.get(e)||e:null,n=this.hover??t??this.highlight??null,r=this.litCache;if(r&&r.key===n&&r.graph===this.graph&&r.related===this.related)return r;let i=n===null?null:(this.related??(e=>new Set([e])))(n);return this.litCache={key:n,graph:this.graph,related:this.related,on:i},this.litCache}known(e){return this.nodes.has(e)||this.clusters.has(e)||!!this.findMark(e)}render(){let e=this.h,t=this.matrix,n=t?this.matrixView(t):this.view===`table`?function(e){let t=e.drawn,n=e.words,r=[...t.edges,...t.stubs].some(e=>e.style===`dashed`),i=e=>n.list(e)||n.none,a=!e.down&&e.laidOut&&e.pz.frameH>0?`height:${Math.round(e.pz.frameH)}px`:`max-height:max(360px, 70vh)`,o=e.arr.drawn.map(t=>e.nodes.get(t)).filter(e=>!!e);return O`<div class="frame tframe" part="frame" data-scroll="x" style=${a} @scroll=${()=>e.card.place()} @click=${t=>!t.target.closest(`tbody tr`)&&e.select(null)}>
168
192
  <table class="list view" part="table">
169
193
  <thead>
170
194
  <tr>
171
195
  <th scope="col" class="fit">${n.nameHeader}</th>
172
196
  <th scope="col" class="fit">${n.statusHeader}</th>
173
197
  <th scope="col">${n.solidHeader}</th>
174
- ${r?k`<th scope="col">${n.dashedHeader}</th>`:j}
198
+ ${r?O`<th scope="col">${n.dashedHeader}</th>`:A}
175
199
  <th scope="col">${n.laterHeader}</th>
176
200
  </tr>
177
201
  </thead>
178
202
  <tbody>
179
- ${H(o,e=>e.id,a=>{let o=function(e,t,n,r){let i=e=>{let t=n.get(e);return t?t.cluster?r(t.label):t.label:e},a=n=>[...t.stubs.filter(t=>t.to===e.id&&t.style===n).map(e=>e.label),...t.edges.filter(t=>t.to===e.id&&t.style===n).map(e=>i(e.from))];return{solid:a(`solid`),dashed:a(`dashed`),later:[...new Set(t.edges.filter(t=>t.from===e.id).map(e=>i(e.to)))]}}(a,t,e.nodes,n.inCluster),s=a.cluster?e.clusters.get(a.cluster):void 0,c=e.selected===a.id,l=k`${(a.icons??[]).map(t=>e.renderIcon(t))}${a.drill?Qa():j}`;return k`<tr class=${c?`sel`:``} part="row" data-id=${a.id} @click=${t=>!t.target.closest(`.loopchip`)&&t.detail<2&&e.select(a.id)} @dblclick=${t=>!t.target.closest(`.loopchip`)&&e.act(a.id)}>
203
+ ${V(o,e=>e.id,a=>{let o=function(e,t,n,r){let i=e=>{let t=n.get(e);return t?t.cluster?r(t.label):t.label:e},a=n=>[...t.stubs.filter(t=>t.to===e.id&&t.style===n).map(e=>e.label),...t.edges.filter(t=>t.to===e.id&&t.style===n).map(e=>i(e.from))];return{solid:a(`solid`),dashed:a(`dashed`),later:[...new Set(t.edges.filter(t=>t.from===e.id).map(e=>i(e.to)))]}}(a,t,e.nodes,n.inCluster),s=a.cluster?e.clusters.get(a.cluster):void 0,c=e.selected===a.id,l=O`${(a.icons??[]).map(t=>e.renderIcon(t))}${a.drill?xo():A}`;return O`<tr class=${c?`sel`:``} part="row" data-id=${a.id} @click=${t=>!t.target.closest(`.loopchip`)&&t.detail<2&&e.select(a.id)} @dblclick=${t=>!t.target.closest(`.loopchip`)&&e.act(a.id)}>
180
204
  <th scope="row" class="fit">
181
- <span class="nm">${l}<button type="button" class="name" title=${a.tip??j} aria-pressed=${c} @focus=${()=>e.focusSelect(a.id)} @keydown=${t=>{t.key===`Enter`&&(t.preventDefault(),e.act(a.id))}}>${a.label}</button>${s?.drill?k`<button type="button" class="taskchip loopchip" title=${s.chipTip??j} aria-label=${s.chipLabel??j} @click=${()=>e.drill(s.id)}>${s.cycle?Za(12):j}${s.note??s.label}</button>`:j}</span>
205
+ <span class="nm">${l}<button type="button" class="name" title=${a.tip??A} aria-pressed=${c} @focus=${()=>e.focusSelect(a.id)} @keydown=${t=>{t.key===`Enter`&&(t.preventDefault(),e.act(a.id))}}>${a.label}</button>${s?.drill?O`<button type="button" class="taskchip loopchip" title=${s.chipTip??A} aria-label=${s.chipLabel??A} @click=${()=>e.drill(s.id)}>${s.cycle?bo(12):A}${s.note??s.label}</button>`:A}</span>
182
206
  </th>
183
- <td class="fit st">${function(e){let t=k`<span class="sep" aria-hidden="true"> | </span>`;return k`<span class="n" aria-hidden="true" title=${e.progress.label}>${e.progress.done}/${e.progress.total}</span><span class="sr">${e.progress.label}</span>${fo(e).map(e=>k`${t}${e}`)}`}(a)}</td>
207
+ <td class="fit st">${function(e){let t=O`<span class="sep" aria-hidden="true"> | </span>`;return O`<span class="n" aria-hidden="true" title=${e.progress.label}>${e.progress.done}/${e.progress.total}</span><span class="sr">${e.progress.label}</span>${Po(e).map(e=>O`${t}${e}`)}`}(a)}</td>
184
208
  <td class="rel"><span>${i(o.solid)}</span></td>
185
- ${r?k`<td class="rel"><span>${i(o.dashed)}</span></td>`:j}
209
+ ${r?O`<td class="rel"><span>${i(o.dashed)}</span></td>`:A}
186
210
  <td class="rel"><span>${i(o.later)}</span></td>
187
211
  </tr>`})}
188
212
  </tbody>
189
213
  </table>
190
- </div>`}(e):function(e){let t=e.pz;return k`<div class="frame gframe ${e.down?`down`:``}" part="frame" style="height:${Math.round(t.frameH)}px" @pointerdown=${t.onPointerDown} @pointermove=${t.onPointerMove} @pointerup=${t.onPointerUp} @pointercancel=${t.onPointerUp} @click=${t=>!t.target.closest(`.node, .cluster, .stub, .tools`)&&e.select(null)}>
191
- <div class="stage view" part="stage" style="transform:${t.transform}">${function(e){let{on:t}=e.lit(),n=e.drawn,r=e.lay,i=new Map(n.stubs.map(e=>[e.id,e])),a=(t,n)=>{let r=e.clusters.get(t);if(r)return function(e,t,n,r){let i=e.lay?.at[t.id]??null,a=(e.arr.slots[t.id]??[]).flat().filter(e=>!W(e)),o=i?`;width:${i.w}px;height:${i.h}px`:``,s=e.selected===t.id;return k`<section class="cluster ${s?`sel`:``}" part="cluster" role="group" data-cluster=${t.id} style=${oo(e,t.id,n)+o} aria-label=${t.summary??t.label} @click=${n=>so(e,n,t.id)} @dblclick=${n=>co(e,n,t.id)}>
214
+ </div>`}(e):function(e){let t=e.pz;return O`<div class="frame gframe ${e.down?`down`:``}" part="frame" style="height:${Math.round(t.frameH)}px" @pointerdown=${t.onPointerDown} @pointermove=${t.onPointerMove} @pointerup=${t.onPointerUp} @pointercancel=${t.onPointerUp} @click=${t=>!t.target.closest(`.node, .cluster, .stub, .tools`)&&e.select(null)}>
215
+ <div class="stage view" part="stage" style="transform:${t.transform}">${function(e){let{on:t}=e.lit(),n=e.drawn,r=e.lay,i=new Map(n.stubs.map(e=>[e.id,e])),a=(t,n)=>{let r=e.clusters.get(t);if(r)return function(e,t,n,r){let i=e.lay?.at[t.id]??null,a=(e.arr.slots[t.id]??[]).flat().filter(e=>!W(e)),o=i?`;width:${i.w}px;height:${i.h}px`:``,s=e.selected===t.id;return O`<section class="cluster ${s?`sel`:``}" part="cluster" role="group" data-cluster=${t.id} style=${ko(e,t.id,n)+o} aria-label=${t.summary??t.label} @click=${n=>Ao(e,n,t.id)} @dblclick=${n=>jo(e,n,t.id)}>
192
216
  <div class="hd" part="cluster-label" data-id=${`lbl:${t.id}`}>
193
217
  <span class="line">
194
- ${function(e,t,n){let r=t.path?.[0],i=k`<button type="button" class="name" title=${(r?.tip??t.tip)||j} aria-pressed=${n} @focus=${()=>e.focusSelect(t.id)} @keydown=${n=>lo(e,n,t.id)}>${t.cycle?Za():j}${r?.label??t.label}</button>`;return!t.path||t.path.length<2?i:k`${i}${t.path.slice(1).map(t=>k`<span class="psep" aria-hidden="true">›</span><button type="button" class="part" title=${t.tip||j} @click=${n=>{n.stopPropagation(),e.drill(t.id)}} @dblclick=${e=>e.stopPropagation()}>${t.label}</button>`)}`}(e,t,s)}
195
- ${t.note?k`<span class="count">${t.note}</span>`:j}
218
+ ${function(e,t,n){let r=t.path?.[0],i=O`<button type="button" class="name" title=${(r?.tip??t.tip)||A} aria-pressed=${n} @focus=${()=>e.focusSelect(t.id)} @keydown=${n=>Mo(e,n,t.id)}>${t.cycle?bo():A}${r?.label??t.label}</button>`;return!t.path||t.path.length<2?i:O`${i}${t.path.slice(1).map(t=>O`<span class="psep" aria-hidden="true">›</span><button type="button" class="part" title=${t.tip||A} @click=${n=>{n.stopPropagation(),e.drill(t.id)}} @dblclick=${e=>e.stopPropagation()}>${t.label}</button>`)}`}(e,t,s)}
219
+ ${t.note?O`<span class="count">${t.note}</span>`:A}
196
220
  </span>
197
- ${t.detail?k`<span class="spread" title=${t.detailTip??j}>${t.detail}</span>`:j}
221
+ ${t.detail?O`<span class="spread" title=${t.detailTip??A}>${t.detail}</span>`:A}
198
222
  </div>
199
- ${t.toggle?k`<span class="cue">${uo(e,t.id,t.path?.map(e=>e.label).join(` › `)??t.label,!0)}</span>`:t.drill?k`<span class="cue" aria-hidden="true">${Qa()}</span>`:j}
200
- <div class="in">${H(a,e=>e,e=>r(e,i))}</div>
201
- </section>`}(e,r,n,(e,t)=>a(e,t));let o=i.get(t);if(o)return k`<span class="stub" part="stub" data-id=${o.id} style=${oo(e,o.id,n)} title=${e.words.stubTip}>${o.label}</span>`;let s=e.nodes.get(t);return s?function(e,t,n){let r=e.drawn.series,i=Ka(t,e.barAt),a=no(t,r),o=i?{id:t.id,slots:a.filter(t=>!!t&&e.states[t.m.state]?.tone===`failed`),grid:{cols:8,size:12,gap:4}}:{id:t.id,slots:a,grid:ro(t,r.length)},s=e.selected===t.id,c=(t.icons??[]).map(t=>e.renderIcon(t));return k`<section class="node ${t.drill?`drill`:``} ${t.accent?`accent`:``} ${s?`sel`:``}" part="node" role="group" data-id=${t.id} data-look=${t.look&&t.look!==`neutral`?t.look:j} aria-label=${t.summary??t.label} style="${oo(e,t.id,n)};--cols:${o.grid.cols};--m:${o.grid.size}px;--g:${o.grid.gap}px" @click=${n=>so(e,n,t.id)} @dblclick=${n=>co(e,n,t.id)}>
223
+ ${t.toggle?O`<span class="cue">${No(e,t.id,t.path?.map(e=>e.label).join(` › `)??t.label,!0)}</span>`:t.drill?O`<span class="cue" aria-hidden="true">${xo()}</span>`:A}
224
+ <div class="in">${V(a,e=>e,e=>r(e,i))}</div>
225
+ </section>`}(e,r,n,(e,t)=>a(e,t));let o=i.get(t);if(o)return O`<span class="stub" part="stub" data-id=${o.id} style=${ko(e,o.id,n)} title=${e.words.stubTip}>${o.label}</span>`;let s=e.nodes.get(t);return s?function(e,t,n){let r=e.drawn.series,i=ho(t,e.barAt),a=To(t,r),o=i?{id:t.id,slots:a.filter(t=>!!t&&e.states[t.m.state]?.tone===`failed`),grid:{cols:8,size:12,gap:4}}:{id:t.id,slots:a,grid:Eo(t,r.length)},s=e.selected===t.id,c=(t.icons??[]).map(t=>e.renderIcon(t));return O`<section class="node ${t.drill?`drill`:``} ${t.accent?`accent`:``} ${s?`sel`:``}" part="node" role="group" data-id=${t.id} data-look=${t.look&&t.look!==`neutral`?t.look:A} aria-label=${t.summary??t.label} style="${ko(e,t.id,n)};--cols:${o.grid.cols};--m:${o.grid.size}px;--g:${o.grid.gap}px" @click=${n=>Ao(e,n,t.id)} @dblclick=${n=>jo(e,n,t.id)}>
202
226
  <div class="hd" part="node-header">
203
- <span class="nm">${c}<button type="button" class="name" part="node-name" title=${t.tip??j} aria-pressed=${s} @focus=${()=>e.focusSelect(t.id)} @keydown=${n=>lo(e,n,t.id)}>${t.label}</button></span>
204
- <span class="right"><span class="count" aria-hidden="true" title=${t.progress.label}>${t.progress.done}/${t.progress.total}</span>${t.toggle?uo(e,t.id,t.label,!1):t.drill?k`<span class="cue" aria-hidden="true">${Qa()}</span>`:j}</span>
227
+ <span class="nm">${c}<button type="button" class="name" part="node-name" title=${t.tip??A} aria-pressed=${s} @focus=${()=>e.focusSelect(t.id)} @keydown=${n=>Mo(e,n,t.id)}>${t.label}</button></span>
228
+ <span class="right"><span class="count" aria-hidden="true" title=${t.progress.label}>${t.progress.done}/${t.progress.total}</span>${t.toggle?No(e,t.id,t.label,!1):t.drill?O`<span class="cue" aria-hidden="true">${xo()}</span>`:A}</span>
205
229
  </div>
206
- ${i?function(e,t,n){let r=Object.keys(e.states),i=function(e,t){let n=t.reduce((t,n)=>t+(e[n]??0),0);return t.filter(t=>(e[t]??0)>0).map(t=>({state:t,n:e[t]??0,pct:100*(e[t]??0)/Math.max(1,n)}))}(t.counts,r),a=n.slots.slice(0,8),o=n.slots.length-a.length,s=Math.min(e.active.get(n.id)??0,Math.max(0,a.length-1));return k`<div class="sbar" role="img" aria-label=${r.filter(e=>t.counts[e]).map(n=>ui(e.states,n,t.counts[n]??0)).join(` | `)}>
207
- ${i.map(t=>{let n=e.states[t.state];return k`<i data-tone=${I(n?.tone)} data-shape=${n?.shape??j} style="width:${t.pct}%" title=${ui(e.states,t.state,t.n)}></i>`})}
230
+ ${i?function(e,t,n){let r=Object.keys(e.states),i=function(e,t){let n=t.reduce((t,n)=>t+(e[n]??0),0);return t.filter(t=>(e[t]??0)>0).map(t=>({state:t,n:e[t]??0,pct:100*(e[t]??0)/Math.max(1,n)}))}(t.counts,r),a=n.slots.slice(0,8),o=n.slots.length-a.length,s=Math.min(e.active.get(n.id)??0,Math.max(0,a.length-1));return O`<div class="sbar" role="img" aria-label=${r.filter(e=>t.counts[e]).map(n=>di(e.states,n,t.counts[n]??0)).join(` | `)}>
231
+ ${i.map(t=>{let n=e.states[t.state];return O`<i data-tone=${I(n?.tone)} data-shape=${n?.shape??A} style="width:${t.pct}%" title=${di(e.states,t.state,t.n)}></i>`})}
208
232
  </div>
209
- ${a.length?k`<div class="fails" @keydown=${t=>mo(e,t,{...n,slots:a,grid:{...n.grid,cols:a.length}})}>
210
- ${a.map((t,r)=>t?po(e,n,t,r,r===s,!0):j)}
211
- ${o>0?k`<span>${e.words.more(o)}</span>`:j}
212
- </div>`:j}`}(e,t,o):function(e,t){let n=Math.min(e.active.get(t.id)??io(t.slots),t.slots.length-1);return k`<div class="marks ${t.grid.size>=10?`big`:``}" @keydown=${n=>mo(e,n,t)}>
213
- ${t.slots.map((r,i)=>r?po(e,t,r,i,i===n):k`<span class="slot"></span>`)}
233
+ ${a.length?O`<div class="fails" @keydown=${t=>Io(e,t,{...n,slots:a,grid:{...n.grid,cols:a.length}})}>
234
+ ${a.map((t,r)=>t?Fo(e,n,t,r,r===s,!0):A)}
235
+ ${o>0?O`<span>${e.words.more(o)}</span>`:A}
236
+ </div>`:A}`}(e,t,o):function(e,t){let n=Math.min(e.active.get(t.id)??Do(t.slots),t.slots.length-1);return O`<div class="marks ${t.grid.size>=10?`big`:``}" @keydown=${n=>Io(e,n,t)}>
237
+ ${t.slots.map((r,i)=>r?Fo(e,t,r,i,i===n):O`<span class="slot"></span>`)}
214
238
  </div>`}(e,o)}
215
- ${t.notes?.length?k`<div class="ex" aria-hidden="true">${fo(t)}</div>`:j}
216
- </section>`}(e,s,n):j},o=!!r&&n.nodes.every(e=>r.at[e.id]),s=r?.w??0,c=r?.h??0;return k`<div class="dag ${e.down?`down`:``} ${t?`hl`:``} ${o?``:`unplaced`}" style="width:${s}px;height:${c}px" @mouseleave=${()=>e.hover=null}>
239
+ ${t.notes?.length?O`<div class="ex" aria-hidden="true">${Po(t)}</div>`:A}
240
+ </section>`}(e,s,n):A},o=!!r&&n.nodes.every(e=>r.at[e.id]),s=r?.w??0,c=r?.h??0;return O`<div class="dag ${e.down?`down`:``} ${t?`hl`:``} ${o?``:`unplaced`}" style="width:${s}px;height:${c}px" @mouseleave=${()=>e.hover=null}>
217
241
  <svg class="edges" aria-hidden="true" width=${s} height=${c}>
218
242
  <defs>
219
243
  <marker id="arr" viewBox="0 0 8 8" refX="8" refY="4" markerWidth="8" markerHeight="8" markerUnits="userSpaceOnUse" orient="auto">
@@ -223,709 +247,728 @@ ${t.notes?.length?k`<div class="ex" aria-hidden="true">${fo(t)}</div>`:j}
223
247
  <path class="ret-tip" d="M0,0.5 L8,4 L0,7.5 z"></path>
224
248
  </marker>
225
249
  </defs>
226
- ${(r?.edges??[]).map(e=>A`<path class=${e.style} part="edge" d=${function(e,t=!1){let n=e=>Math.round(2*e)/2,r=(e,r)=>t?`${n(r)},${n(e)}`:`${n(e)},${n(r)}`,i=e[0];if(!i)return``;let a=`M${r(i.a,i.at)}`;return e.forEach((t,n)=>{t.b!==t.a&&(a+=` L${r(t.b,t.at)}`);let i=e[n+1];if(!i)return;if(Math.abs(i.at-t.at)<.5)return void(i.a!==t.b&&(a+=` L${r(i.a,i.at)}`));let o=(t.b+i.a)/2;a+=` C${r(o,t.at)} ${r(o,i.at)} ${r(i.a,i.at)}`}),a}(e.runs,r?.down)} marker-end="url(#arr)"></path>`)}
227
- ${(r?.returns??[]).map(e=>A`<path class="ret" data-cluster=${e.box} d=${function(e,t=!1,n=3){let r=e=>Math.round(2*e)/2,i=(e,n)=>t?`${r(n)},${r(e)}`:`${r(e)},${r(n)}`,a=Math.max(0,Math.min(6,(e.from-e.to)/2,e.band-e.v0-n,e.band-e.v1-n));return[`M${i(e.from,e.v0+n)}`,`L${i(e.from,e.band-a)}`,`Q${i(e.from,e.band)} ${i(e.from-a,e.band)}`,`L${i(e.to+a,e.band)}`,`Q${i(e.to,e.band)} ${i(e.to,e.band-a)}`,`L${i(e.to,e.v1+n)}`].join(` `)}(e,r?.down)} marker-end="url(#arr-ret)"></path>`)}
250
+ ${(r?.edges??[]).map(e=>k`<path class=${e.style} part="edge" d=${function(e,t=!1){let n=e=>Math.round(2*e)/2,r=(e,r)=>t?`${n(r)},${n(e)}`:`${n(e)},${n(r)}`,i=e[0];if(!i)return``;let a=`M${r(i.a,i.at)}`;return e.forEach((t,n)=>{t.b!==t.a&&(a+=` L${r(t.b,t.at)}`);let i=e[n+1];if(!i)return;if(Math.abs(i.at-t.at)<.5)return void(i.a!==t.b&&(a+=` L${r(i.a,i.at)}`));let o=(t.b+i.a)/2;a+=` C${r(o,t.at)} ${r(o,i.at)} ${r(i.a,i.at)}`}),a}(e.runs,r?.down)} marker-end="url(#arr)"></path>`)}
251
+ ${(r?.returns??[]).map(e=>k`<path class="ret" data-cluster=${e.box} d=${function(e,t=!1,n=3){let r=e=>Math.round(2*e)/2,i=(e,n)=>t?`${r(n)},${r(e)}`:`${r(e)},${r(n)}`,a=Math.max(0,Math.min(6,(e.from-e.to)/2,e.band-e.v0-n,e.band-e.v1-n));return[`M${i(e.from,e.v0+n)}`,`L${i(e.from,e.band-a)}`,`Q${i(e.from,e.band)} ${i(e.from-a,e.band)}`,`L${i(e.to+a,e.band)}`,`Q${i(e.to,e.band)} ${i(e.to,e.band-a)}`,`L${i(e.to,e.v1+n)}`].join(` `)}(e,r?.down)} marker-end="url(#arr-ret)"></path>`)}
228
252
  </svg>
229
- ${H((e.arr.slots[``]??[]).flat().filter(e=>!W(e)),e=>e,e=>a(e,null))}
253
+ ${V((e.arr.slots[``]??[]).flat().filter(e=>!W(e)),e=>e,e=>a(e,null))}
230
254
  </div>`}(e)}</div>
231
- </div>`}(e),r=this.selected;return k`<div class="col">
255
+ </div>`}(e),r=this.selected;return O`<div class="col">
232
256
  <slot name="crumbs"></slot>
233
- <div class="main">${n}${r&&this.querySelector(`[slot=inspector]`)&&this.known(r)?to(r,k`<section id="insp" class="insp ${this.down?`sheet`:``}" part="inspector" aria-label=${this.words.inspector} @keydown=${this.card.onCardKey}>
257
+ <div class="main">${n}${r&&this.querySelector(`[slot=inspector]`)&&this.known(r)?wo(r,O`<section id="insp" class="insp ${this.down?`sheet`:``}" part="inspector" aria-label=${this.words.inspector} @keydown=${this.card.onCardKey}>
234
258
  <span class="ptr" aria-hidden="true"></span>
235
259
  <div class="scroll"><slot name="inspector"></slot></div>
236
- </section>`):j}<div class="sr" role="status">${this.announced}</div></div>
237
- ${function(e,t){let n=!!t||e.asTable;return k`<div class="foot">
238
- ${function(e,t){let n=e.drawn,r=e.asTable&&!t,i=(r?[]:t?t.rows.flatMap(e=>e.cells).map(e=>e&&{state:e.state,badge:void 0}):n.nodes.flatMap(t=>no(t,n.series).map(n=>n&&{state:n.m.state,badge:Ka(t,e.barAt)?void 0:n.m.badge}))).filter(e=>e!==null),a=new Set(i.map(e=>e.state)),o=i.some(e=>e.badge),s=!t&&!r&&[...n.edges,...n.stubs].some(e=>e.style===`dashed`),c=new Set(t?t.head.flat().flatMap(e=>e.icons??[]):n.nodes.flatMap(e=>e.icons??[])),l=!t&&!r&&n.clusters.some(e=>e.cycle),u=!t&&(!r&&n.clusters.some(e=>e.drill)||n.nodes.some(e=>e.drill)),d=Object.keys(e.states)[0]??``,f=e=>A`<svg width="22" height="8" aria-hidden="true"><path d="M1,4 H21" stroke-dasharray=${e?`5 4`:`none`}></path></svg>`;return ai([...Object.entries(e.states).filter(([e])=>a.has(e)).map(([t,n])=>({label:n.label,icon:ho(e,t),decorative:!0})),...o?[{label:e.words.badge,icon:ho(e,d,`2`),decorative:!0}]:[],...Object.entries(e.words.iconNames).filter(([e])=>c.has(e)).map(([t,n])=>({label:n,icon:e.renderIcon(t)})),...s?[{label:e.words.solidEdge,icon:f(!1)},{label:e.words.dashedEdge,icon:f(!0)}]:[],...l?[{label:e.words.cycle,icon:k`<svg width="24" height="12" aria-hidden="true"><path class="ret" d="M20,1.5 V5.5 Q20,9.5 16,9.5 H8 Q4,9.5 4,5.5 V5"></path>
239
- <path class="ret-head" d="M4,0.8 L1.4,5 L6.6,5 z"></path></svg>`}]:[],...u?[{label:e.words.drill,icon:Qa()}]:[]],{cls:`big`})}(e,t)}
240
- <div class="tools">${n?j:function(e){let t=e.pz,n=e.words,r=!t.moved&&t.fitK>=1;return k`<button type="button" aria-label=${n.zoomOut} title=${n.zoomOutTip} @click=${()=>t.zoomBy(.8)}>−</button>
260
+ </section>`):A}<div class="sr" role="status">${this.announced}</div></div>
261
+ ${function(e,t){let n=!!t||e.asTable;return O`<div class="foot">
262
+ ${function(e,t){let n=e.drawn,r=e.asTable&&!t,i=(r?[]:t?t.rows.flatMap(e=>e.cells).map(e=>e&&{state:e.state,badge:void 0}):n.nodes.flatMap(t=>To(t,n.series).map(n=>n&&{state:n.m.state,badge:ho(t,e.barAt)?void 0:n.m.badge}))).filter(e=>e!==null),a=new Set(i.map(e=>e.state)),o=i.some(e=>e.badge),s=!t&&!r&&[...n.edges,...n.stubs].some(e=>e.style===`dashed`),c=new Set(t?t.head.flat().flatMap(e=>e.icons??[]):n.nodes.flatMap(e=>e.icons??[])),l=!t&&!r&&n.clusters.some(e=>e.cycle),u=!t&&(!r&&n.clusters.some(e=>e.drill)||n.nodes.some(e=>e.drill)),d=Object.keys(e.states)[0]??``,f=e=>k`<svg width="22" height="8" aria-hidden="true"><path d="M1,4 H21" stroke-dasharray=${e?`5 4`:`none`}></path></svg>`;return oi([...Object.entries(e.states).filter(([e])=>a.has(e)).map(([t,n])=>({label:n.label,icon:Lo(e,t),decorative:!0})),...o?[{label:e.words.badge,icon:Lo(e,d,`2`),decorative:!0}]:[],...Object.entries(e.words.iconNames).filter(([e])=>c.has(e)).map(([t,n])=>({label:n,icon:e.renderIcon(t)})),...s?[{label:e.words.solidEdge,icon:f(!1)},{label:e.words.dashedEdge,icon:f(!0)}]:[],...l?[{label:e.words.cycle,icon:O`<svg width="24" height="12" aria-hidden="true"><path class="ret" d="M20,1.5 V5.5 Q20,9.5 16,9.5 H8 Q4,9.5 4,5.5 V5"></path>
263
+ <path class="ret-head" d="M4,0.8 L1.4,5 L6.6,5 z"></path></svg>`}]:[],...u?[{label:e.words.drill,icon:xo()}]:[]],{cls:`big`})}(e,t)}
264
+ <div class="tools">${n?A:function(e){let t=e.pz,n=e.words,r=!t.moved&&t.fitK>=1;return O`<button type="button" aria-label=${n.zoomOut} title=${n.zoomOutTip} @click=${()=>t.zoomBy(.8)}>−</button>
241
265
  <button type="button" aria-label=${n.zoomIn} title=${n.zoomInTip} @click=${()=>t.zoomBy(1.25)}>+</button>
242
- <button type="button" ?disabled=${r} @click=${()=>t.showAll()}>${n.showAll}</button>`}(e)}${function(e,t){return k`<cae-segmented class="views" .options=${[{value:`graph`,label:e.words.graph},{value:`table`,label:e.words.table}]} .value=${t?`table`:`graph`} label=${e.words.view} @cae-change=${t=>{t.stopPropagation(),e.showView(t.detail.value===`table`?`table`:`graph`)}}></cae-segmented>`}(e,n)}</div>
243
- <div class="keys" part="keys">${function(e,t){let n=e.words,r=e.selected?n.clearKey:n.upKey;return[...t?n.matrixKeys:e.asTable?n.tableKeys:n.graphKeys,r].filter(Boolean)}(e,t).map((e,t)=>k`${t?` | `:``}<span>${e}</span>`)}</div>
266
+ <button type="button" ?disabled=${r} @click=${()=>t.showAll()}>${n.showAll}</button>`}(e)}${function(e,t){return O`<cae-segmented class="views" .options=${[{value:`graph`,label:e.words.graph},{value:`table`,label:e.words.table}]} .value=${t?`table`:`graph`} label=${e.words.view} @cae-change=${t=>{t.stopPropagation(),e.showView(t.detail.value===`table`?`table`:`graph`)}}></cae-segmented>`}(e,n)}</div>
267
+ <div class="keys" part="keys">${function(e,t){let n=e.words,r=e.selected?n.clearKey:n.upKey;return[...t?n.matrixKeys:e.asTable?n.tableKeys:n.graphKeys,r].filter(Boolean)}(e,t).map((e,t)=>O`${t?` | `:``}<span>${e}</span>`)}</div>
244
268
  </div>`}(e,t)}
245
- </div>`}matrixView(e){let t=this.down?0:Math.round(Math.max(this.pz.frameH,this.card.room));return k`<div class="frame mxframe" part="frame" style=${t?`min-height:${t}px`:``}>
269
+ </div>`}matrixView(e){let t=this.down?0:Math.round(Math.max(this.pz.frameH,this.card.room));return O`<div class="frame mxframe" part="frame" style=${t?`min-height:${t}px`:``}>
246
270
  <cae-mark-matrix .matrix=${e} .states=${this.states} .selected=${this.selected} .highlight=${this.highlight} .key=${this.key} .strings=${this.matrixStrings} .renderIcon=${this.renderIcon} .iconStyles=${this.iconStyles}></cae-mark-matrix>
247
- </div>`}get laidOut(){return this.layFor===this.key}get asTable(){return this.view===`table`}focusSelect(e){this.card.quiet||this.select(e)}drill(e){L(this,`cae-drill`,{id:e})}toggle(e,t){L(this,`cae-toggle`,{id:e,open:t})}showView(e){this.matrix&&e===`table`||(this.matrix||(this.view=e),L(this,`cae-view-change`,{view:e}))}},vo=(e,t,n)=>e===1?`1 ${t}`:`${e} ${n}`,yo={sections:`Sessions`,sectionsTip:``,loadEarlier:e=>`Show ${vo(e,`earlier line`,`earlier lines`)}`,newBelow:e=>`Show ${vo(e,`new event`,`new events`)}`,newInLatest:e=>`Show ${vo(e,`new event`,`new events`)} in the latest session`,prompt:`Prompt`,assistant:`Assistant`,reasoning:`Reasoning`,characters:e=>`${e} characters`,tool:`tool`,results:e=>vo(e,`result`,`results`),done:`done`,failed:`failed`,running:`running`,interrupted:`interrupted`,interruptedTip:`Ended with no result`,query:`query`,page:`page`,fullText:`Full text`,showAll:e=>`Show all (${e} characters)`,showLess:`Show less`},bo=O` :host{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;position:relative;}:host([mode='none']){display:none;}:host([mode='tabs']){flex:none;}:host([mode='tabs']) .scroller,:host([mode='tabs']) .newpill{display:none;}.rounds{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 10px;padding-left:2px;}.rounds-lbl{color:var(--text-muted);font-size:11.5px;font-weight:600;margin-right:4px;cursor:help;}.stab{padding:3px 11px;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--text-muted);cursor:pointer;font-size:12px;display:inline-flex;align-items:center;}.stab:hover{border-color:var(--accent);}.stab.sel{background:var(--accent-bg);border-color:var(--accent);color:var(--text);}.stab-m{font-family:var(--mono);font-size:10.5px;color:var(--text-muted);margin-left:4px;}.stab.sel .stab-m{color:var(--text-2);}.stab .dot{width:6px;height:6px;margin-left:4px;}.stab .mk{margin-right:4px;}.stab .mk.ok{color:var(--status-done);}.stab .mk.bad{color:var(--status-failed);}.verdict{margin:6px 10px 4px 41px;padding:7px 11px;border-radius:10px;border:1px solid;font-size:12px;}.verdict[data-tone]{background:var(--tone-bg);color:var(--text);}.verdict[data-tone='attention']{border-color:color-mix(in srgb,var(--tone) 40%,transparent);}.verdict[data-tone='failed']{border-color:color-mix(in srgb,var(--tone) 45%,transparent);}.verdict b{display:block;margin-bottom:2px;}.verdict ul{margin:2px 0 0;padding-left:18px;font-family:var(--mono);font-size:11.5px;}.scroller{flex:1 1 auto;min-height:0;overflow:auto;border:1px solid var(--line);border-radius:14px;background:linear-gradient(180deg,var(--panel),var(--well));padding:4px 2px 8px;font-size:12.5px;}.back{margin:6px 10px;background:var(--raise);border:1px solid var(--line2);border-radius:8px;padding:3px 10px;cursor:pointer;color:var(--text-2);}.back:hover{border-color:var(--accent);}.inv-body{display:flex;flex-direction:column;gap:10px;}.inv-head{border:1px solid var(--line2);border-radius:12px;background:var(--raise);padding:8px 10px;margin:4px 8px 6px;}.inv-who{display:flex;flex-wrap:wrap;gap:6px;}.inv-cmdbox{margin-top:6px;}.inv-cmdbox summary,.inv-prompt summary{cursor:pointer;font-size:11px;color:var(--text-muted);}.inv-prompt summary{font-size:11.5px;}.inv-prompt summary:hover{color:var(--accent);}.inv-cmd{font-family:var(--mono);font-size:11.5px;white-space:pre-wrap;word-break:break-all;margin:4px 0 6px;max-height:160px;overflow:auto;color:var(--text);}.inv-ptext{margin-top:6px;max-height:360px;overflow:auto;}.msg{display:flex;gap:9px;padding:3px 10px;}.av{width:22px;height:22px;flex:0 0 22px;border-radius:7px;line-height:22px;font-size:11px;text-align:center;font-weight:700;}.av-a{background:var(--agent-bg);color:var(--agent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--agent) 35%,transparent);}.av-l{background:var(--raise);color:var(--text-2);}.av-t{background:var(--raise);color:var(--text-muted);}.bd{flex:1;min-width:0;background:color-mix(in srgb,var(--text) 2.5%,transparent);border:1px solid var(--line);border-radius:3px 10px 10px 10px;padding:5px 10px;}.hd{font-size:11px;font-weight:600;color:var(--text-muted);margin-bottom:1px;}.tx{color:var(--text);line-height:1.5;word-break:break-word;}.tx pre,.tx code{white-space:pre-wrap;}.tx pre{margin:0 0 4px;}.toolcard,.typing{margin-left:41px;margin-right:10px;}.toolcard{border:1px solid var(--line);border-left:3px solid var(--line2);border-radius:10px;margin-top:3px;margin-bottom:3px;overflow:hidden;background:var(--well);transition:border-color 0.3s;}.toolcard.run{border-left-color:var(--status-running);}.toolcard.err{border-left-color:var(--status-failed);}.th{display:flex;gap:9px;align-items:baseline;padding:4px 9px;cursor:pointer;}.th:hover{background:color-mix(in srgb,var(--text) 4%,transparent);}.tn{font-family:var(--mono);font-weight:600;flex:none;display:inline-flex;align-items:center;}.tn::before{content:'⚒';display:inline-grid;place-items:center;width:20px;height:20px;margin-right:7px;border-radius:6px;background:var(--raise);color:var(--text-2);font-size:11px;}.toolcard[data-tool='bash'] .tn::before{content:'❯';}.toolcard[data-tool='read'] .tn::before{content:'▤';}.toolcard[data-tool='grep'] .tn::before,.toolcard[data-tool='glob'] .tn::before{content:'⌕';}.toolcard[data-tool='edit'] .tn::before,.toolcard[data-tool='write'] .tn::before{content:'✎';}.toolcard[data-tool='task'] .tn::before,.toolcard[data-tool='agent'] .tn::before{content:'✦';color:var(--agent);}.toolcard[data-tool='web-search'] .tn::before{content:'◍';}.toolcard[data-tool='web-fetch'] .tn::before{content:'⇣';}.toolcard.revealed{box-shadow:0 0 0 1px var(--accent);}.tp{font-family:var(--mono);font-size:11.5px;color:var(--text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.ti{color:var(--text-muted);font-size:11px;flex:none;max-width:35%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.st-run,.st-ok,.st-err,.st-int{flex:none;white-space:nowrap;}.st-run{color:var(--status-running);display:inline-flex;align-items:center;gap:6px;}.st-ok{color:var(--text-muted);}.st-ok>[aria-hidden]{color:var(--status-done);font-weight:700;}.st-err{color:var(--status-failed);}.st-int{color:var(--status-attention);}.pdot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--status-running);animation:breathe 1.8s ease-in-out infinite;}.tb{padding:6px 9px;border-top:1px solid var(--line);background:var(--bg);}.tb pre{white-space:pre-wrap;word-break:break-word;margin:4px 0;font-family:var(--mono);font-size:12px;}.fold{max-height:220px;overflow:hidden;position:relative;}.fold.open{max-height:none;}.foldbtn{cursor:pointer;color:var(--accent);font-size:11px;background:none;border:0;padding:0;font-family:inherit;}.wq{font-size:12px;margin:2px 0 6px;}.wq b{font-family:var(--mono);font-weight:600;}.wl{color:var(--text-muted);font-size:11px;margin-right:6px;}.links{margin:0 0 6px;padding-left:30px;font-size:12px;}.links li{margin:2px 0;overflow-wrap:anywhere;}.links a{color:var(--accent);text-decoration:none;}.links a:hover{text-decoration:underline;}.rawfold>summary{cursor:pointer;color:var(--text-muted);font-size:11px;}.plink{color:var(--accent);text-decoration:none;font-family:var(--mono);overflow-wrap:anywhere;}.plink:hover{text-decoration:underline;}.host{color:var(--text-muted);font-family:var(--mono);font-size:11px;margin-left:6px;}.sysline{display:flex;gap:8px;align-items:baseline;padding:2px 10px 2px 41px;font-size:11px;color:var(--text-muted);font-family:var(--mono);}.sysline .tx{color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.typing{display:flex;align-items:center;gap:10px;padding:10px 0;}.typing .av{width:26px;height:26px;flex:0 0 26px;border-radius:9px;display:grid;place-items:center;font-size:12px;}.dots{display:inline-flex;gap:4px;padding:8px 12px;border-radius:12px;background:var(--agent-bg);}.dots i{width:6px;height:6px;border-radius:50%;background:var(--agent);animation:bounce 1.2s infinite ease-in-out;}.dots i:nth-child(2){animation-delay:0.15s;}.dots i:nth-child(3){animation-delay:0.3s;}.scroller:not(.bulk) .msg,.scroller:not(.bulk) .toolcard{animation:enter 0.35s var(--ease) both;}.newpill{position:absolute;left:50%;bottom:26px;transform:translateX(-50%);z-index:5;cursor:pointer;padding:6px 14px;border-radius:999px;border:1px solid var(--accent);background:color-mix(in srgb,var(--panel) 92%,transparent);color:var(--accent);font-size:12px;font-weight:600;box-shadow:0 10px 28px color-mix(in srgb,var(--shadow) 50%,transparent);backdrop-filter:blur(6px);animation:toast-in 0.3s var(--ease) both;}.newpill:hover{background:var(--accent-bg);}`,xo=e=>k`${e.map(e=>k`<span class="tag ${e.look??``}" part="tag" title=${e.tip??j}><span class="tag-l">${e.label}</span>${e.value}</span>`)}`,So=O` .tag{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:2px 9px;border-radius:7px;border:1px solid var(--line2);white-space:nowrap;color:var(--text);background:var(--raise);}.tag-l{font-size:10px;font-weight:400;color:var(--text-muted);font-family:var(--sans);}.tag.mono,.tag.quiet{font-family:var(--mono);}.tag.quiet{color:var(--text-2);font-weight:500;background:none;}`,Co=class{constructor(e){this.scroller=e,this.stick=!0,this.restored=!1,this.lastTop=0,this.gliding=!1}toBottom(e=!1){let t=this.scroller();t&&(this.gliding=e,e?t.scrollTo({top:t.scrollHeight,behavior:`smooth`}):t.scrollTop=t.scrollHeight)}read(){let e=this.scroller();if(!e||!e.clientHeight)return null;let t=e.scrollHeight-e.scrollTop-e.clientHeight<60;return this.gliding&&(e.scrollTop<this.lastTop-1||t)&&(this.gliding=!1),this.stick=t||this.gliding,this.lastTop=e.scrollTop,{stick:this.stick,top:Math.round(e.scrollTop)}}async restore(e,t){let n=this.scroller();if(e&&!e.stick&&n){this.stick=!1;let r=performance.now()+4e3;await new Promise(i=>{let a=()=>{let o=n.scrollHeight-n.clientHeight;n.scrollTop=Math.min(e.top,o),o>=e.top||performance.now()>r||t()?i():requestAnimationFrame(a)};a()}),this.lastTop=n.scrollTop}else this.stick=!0,this.toBottom();this.restored=!0}reshow(){let e=this.scroller();e&&(this.stick?this.toBottom():e.scrollTop=this.lastTop)}};function wo(e,t,n){let r=k`<pre><code>${t.slice(0,4e3)}</code></pre>`;if(t.length<=1200)return r;let i=e.folds.has(n);return k`<div>
271
+ </div>`}get laidOut(){return this.layFor===this.key}get asTable(){return this.view===`table`}focusSelect(e){this.card.quiet||this.select(e)}drill(e){L(this,`cae-drill`,{id:e})}toggle(e,t){L(this,`cae-toggle`,{id:e,open:t})}showView(e){this.matrix&&e===`table`||(this.matrix||(this.view=e),L(this,`cae-view-change`,{view:e}))}},Bo=(e,t,n)=>e===1?`1 ${t}`:`${e} ${n}`,Vo={sections:`Sessions`,sectionsTip:``,loadEarlier:e=>`Show ${Bo(e,`earlier line`,`earlier lines`)}`,newBelow:e=>`Show ${Bo(e,`new event`,`new events`)}`,newInLatest:e=>`Show ${Bo(e,`new event`,`new events`)} in the latest session`,prompt:`Prompt`,assistant:`Assistant`,reasoning:`Reasoning`,characters:e=>`${e} characters`,tool:`tool`,results:e=>Bo(e,`result`,`results`),done:`done`,failed:`failed`,running:`running`,interrupted:`interrupted`,interruptedTip:`Ended with no result`,query:`query`,page:`page`,fullText:`Full text`,showAll:e=>`Show all (${e} characters)`,showLess:`Show less`},Ho=D` :host{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;position:relative;}:host([mode='none']){display:none;}:host([mode='tabs']){flex:none;}:host([mode='tabs']) .scroller,:host([mode='tabs']) .newpill{display:none;}.rounds{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 10px;padding-left:2px;}.rounds-lbl{color:var(--text-muted);font-size:11.5px;font-weight:600;margin-right:4px;cursor:help;}.stab{padding:3px 11px;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--text-muted);cursor:pointer;font-size:12px;display:inline-flex;align-items:center;}.stab:hover{border-color:var(--accent);}.stab.sel{background:var(--accent-bg);border-color:var(--accent);color:var(--text);}.stab-m{font-family:var(--mono);font-size:10.5px;color:var(--text-muted);margin-left:4px;}.stab.sel .stab-m{color:var(--text-2);}.stab .dot{width:6px;height:6px;margin-left:4px;}.stab .mk{margin-right:4px;}.stab .mk.ok{color:var(--status-done);}.stab .mk.bad{color:var(--status-failed);}.verdict{margin:6px 10px 4px 41px;padding:7px 11px;border-radius:10px;border:1px solid;font-size:12px;}.verdict[data-tone]{background:var(--tone-bg);color:var(--text);}.verdict[data-tone='attention']{border-color:color-mix(in srgb,var(--tone) 40%,transparent);}.verdict[data-tone='failed']{border-color:color-mix(in srgb,var(--tone) 45%,transparent);}.verdict b{display:block;margin-bottom:2px;}.verdict ul{margin:2px 0 0;padding-left:18px;font-family:var(--mono);font-size:11.5px;}.scroller{flex:1 1 auto;min-height:0;overflow:auto;border:1px solid var(--line);border-radius:14px;background:linear-gradient(180deg,var(--panel),var(--well));padding:4px 2px 8px;font-size:12.5px;}.back{margin:6px 10px;background:var(--raise);border:1px solid var(--line2);border-radius:8px;padding:3px 10px;cursor:pointer;color:var(--text-2);}.back:hover{border-color:var(--accent);}.inv-body{display:flex;flex-direction:column;gap:10px;}.inv-head{border:1px solid var(--line2);border-radius:12px;background:var(--raise);padding:8px 10px;margin:4px 8px 6px;}.inv-who{display:flex;flex-wrap:wrap;gap:6px;}.inv-cmdbox{margin-top:6px;}.inv-cmdbox summary,.inv-prompt summary{cursor:pointer;font-size:11px;color:var(--text-muted);}.inv-prompt summary{font-size:11.5px;}.inv-prompt summary:hover{color:var(--accent);}.inv-cmd{font-family:var(--mono);font-size:11.5px;white-space:pre-wrap;word-break:break-all;margin:4px 0 6px;max-height:160px;overflow:auto;color:var(--text);}.inv-ptext{margin-top:6px;max-height:360px;overflow:auto;}.msg{display:flex;gap:9px;padding:3px 10px;}.av{width:22px;height:22px;flex:0 0 22px;border-radius:7px;line-height:22px;font-size:11px;text-align:center;font-weight:700;}.av-a{background:var(--agent-bg);color:var(--agent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--agent) 35%,transparent);}.av-l{background:var(--raise);color:var(--text-2);}.av-t{background:var(--raise);color:var(--text-muted);}.bd{flex:1;min-width:0;background:color-mix(in srgb,var(--text) 2.5%,transparent);border:1px solid var(--line);border-radius:3px 10px 10px 10px;padding:5px 10px;}.hd{font-size:11px;font-weight:600;color:var(--text-muted);margin-bottom:1px;}.tx{color:var(--text);line-height:1.5;word-break:break-word;}.tx pre,.tx code{white-space:pre-wrap;}.tx pre{margin:0 0 4px;}.toolcard,.typing{margin-left:41px;margin-right:10px;}.toolcard{border:1px solid var(--line);border-left:3px solid var(--line2);border-radius:10px;margin-top:3px;margin-bottom:3px;overflow:hidden;background:var(--well);transition:border-color 0.3s;}.toolcard.run{border-left-color:var(--status-running);}.toolcard.err{border-left-color:var(--status-failed);}.th{display:flex;gap:9px;align-items:baseline;padding:4px 9px;cursor:pointer;}.th:hover{background:color-mix(in srgb,var(--text) 4%,transparent);}.tn{font-family:var(--mono);font-weight:600;flex:none;display:inline-flex;align-items:center;}.tn::before{content:'⚒';display:inline-grid;place-items:center;width:20px;height:20px;margin-right:7px;border-radius:6px;background:var(--raise);color:var(--text-2);font-size:11px;}.toolcard[data-tool='bash'] .tn::before{content:'❯';}.toolcard[data-tool='read'] .tn::before{content:'▤';}.toolcard[data-tool='grep'] .tn::before,.toolcard[data-tool='glob'] .tn::before{content:'⌕';}.toolcard[data-tool='edit'] .tn::before,.toolcard[data-tool='write'] .tn::before{content:'✎';}.toolcard[data-tool='task'] .tn::before,.toolcard[data-tool='agent'] .tn::before{content:'✦';color:var(--agent);}.toolcard[data-tool='web-search'] .tn::before{content:'◍';}.toolcard[data-tool='web-fetch'] .tn::before{content:'⇣';}.toolcard.revealed{box-shadow:0 0 0 1px var(--accent);}.tp{font-family:var(--mono);font-size:11.5px;color:var(--text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.ti{color:var(--text-muted);font-size:11px;flex:none;max-width:35%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.st-run,.st-ok,.st-err,.st-int{flex:none;white-space:nowrap;}.st-run{color:var(--status-running);display:inline-flex;align-items:center;gap:6px;}.st-ok{color:var(--text-muted);}.st-ok>[aria-hidden]{color:var(--status-done);font-weight:700;}.st-err{color:var(--status-failed);}.st-int{color:var(--status-attention);}.pdot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--status-running);animation:breathe 1.8s ease-in-out infinite;}.tb{padding:6px 9px;border-top:1px solid var(--line);background:var(--bg);}.tb pre{white-space:pre-wrap;word-break:break-word;margin:4px 0;font-family:var(--mono);font-size:12px;}.fold{max-height:220px;overflow:hidden;position:relative;}.fold.open{max-height:none;}.foldbtn{cursor:pointer;color:var(--accent);font-size:11px;background:none;border:0;padding:0;font-family:inherit;}.wq{font-size:12px;margin:2px 0 6px;}.wq b{font-family:var(--mono);font-weight:600;}.wl{color:var(--text-muted);font-size:11px;margin-right:6px;}.links{margin:0 0 6px;padding-left:30px;font-size:12px;}.links li{margin:2px 0;overflow-wrap:anywhere;}.links a{color:var(--accent);text-decoration:none;}.links a:hover{text-decoration:underline;}.rawfold>summary{cursor:pointer;color:var(--text-muted);font-size:11px;}.plink{color:var(--accent);text-decoration:none;font-family:var(--mono);overflow-wrap:anywhere;}.plink:hover{text-decoration:underline;}.host{color:var(--text-muted);font-family:var(--mono);font-size:11px;margin-left:6px;}.sysline{display:flex;gap:8px;align-items:baseline;padding:2px 10px 2px 41px;font-size:11px;color:var(--text-muted);font-family:var(--mono);}.sysline .tx{color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.typing{display:flex;align-items:center;gap:10px;padding:10px 0;}.typing .av{width:26px;height:26px;flex:0 0 26px;border-radius:9px;display:grid;place-items:center;font-size:12px;}.dots{display:inline-flex;gap:4px;padding:8px 12px;border-radius:12px;background:var(--agent-bg);}.dots i{width:6px;height:6px;border-radius:50%;background:var(--agent);animation:bounce 1.2s infinite ease-in-out;}.dots i:nth-child(2){animation-delay:0.15s;}.dots i:nth-child(3){animation-delay:0.3s;}.scroller:not(.bulk) .msg,.scroller:not(.bulk) .toolcard{animation:enter 0.35s var(--ease) both;}.newpill{position:absolute;left:50%;bottom:26px;transform:translateX(-50%);z-index:5;cursor:pointer;padding:6px 14px;border-radius:999px;border:1px solid var(--accent);background:color-mix(in srgb,var(--panel) 92%,transparent);color:var(--accent);font-size:12px;font-weight:600;box-shadow:0 10px 28px color-mix(in srgb,var(--shadow) 50%,transparent);backdrop-filter:blur(6px);animation:toast-in 0.3s var(--ease) both;}.newpill:hover{background:var(--accent-bg);}`,Uo=e=>O`${e.map(e=>O`<span class="tag ${e.look??``}" part="tag" title=${e.tip??A}><span class="tag-l">${e.label}</span>${e.value}</span>`)}`,Wo=D` .tag{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:2px 9px;border-radius:7px;border:1px solid var(--line2);white-space:nowrap;color:var(--text);background:var(--raise);}.tag-l{font-size:10px;font-weight:400;color:var(--text-muted);font-family:var(--sans);}.tag.mono,.tag.quiet{font-family:var(--mono);}.tag.quiet{color:var(--text-2);font-weight:500;background:none;}`,Go=class{constructor(e){this.scroller=e,this.stick=!0,this.restored=!1,this.lastTop=0,this.gliding=!1}toBottom(e=!1){let t=this.scroller();t&&(this.gliding=e,e?t.scrollTo({top:t.scrollHeight,behavior:`smooth`}):t.scrollTop=t.scrollHeight)}read(){let e=this.scroller();if(!e||!e.clientHeight)return null;let t=e.scrollHeight-e.scrollTop-e.clientHeight<60;return this.gliding&&(e.scrollTop<this.lastTop-1||t)&&(this.gliding=!1),this.stick=t||this.gliding,this.lastTop=e.scrollTop,{stick:this.stick,top:Math.round(e.scrollTop)}}async restore(e,t){let n=this.scroller();if(e&&!e.stick&&n){this.stick=!1;let r=performance.now()+4e3;await new Promise(i=>{let a=()=>{let o=n.scrollHeight-n.clientHeight;n.scrollTop=Math.min(e.top,o),o>=e.top||performance.now()>r||t()?i():requestAnimationFrame(a)};a()}),this.lastTop=n.scrollTop}else this.stick=!0,this.toBottom();this.restored=!0}reshow(){let e=this.scroller();e&&(this.stick?this.toBottom():e.scrollTop=this.lastTop)}};function Ko(e,t,n){let r=O`<pre><code>${t.slice(0,4e3)}</code></pre>`;if(t.length<=1200)return r;let i=e.folds.has(n);return O`<div>
248
272
  <div class="fold ${i?`open`:``}">${r}</div>
249
273
  <button type="button" class="foldbtn" @click=${()=>{i?e.folds.delete(n):e.folds.add(n),e.requestUpdate()}}>${i?e.s.showLess:e.s.showAll(t.length)}</button>
250
- </div>`}var To=()=>globalThis.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches??!1,Eo=class extends M{constructor(...e){super(...e),this.sections=[],this.shown=null,this.live=!1,this.earlier=0,this.loading=!1,this.count=null,this.mode=`full`,this.memory=null,this.markdown=null,this.renderDetail=null,this.strings={},this.bulk=!0,this.unseen=0,this.pinned=null,this.revealed=``,this.revealPending=!1,this.follow=new Co(()=>this.scroller),this.started=!1,this.total=0,this.reloading=!1,this.lastShown=-1,this.opened=new Set,this.folds=new Set,this.openDetails=new Set,this.mdCache=new Map}static{this.styles=[V,Gr,So,bo]}get shownIndex(){let e=this.sections.length;if(!e)return-1;let t=this.shown??this.pinned??e-1;return Math.max(0,Math.min(e-1,t))}reveal(e){let t=this.sections.findIndex(t=>t.items.some(t=>t.id===e));return t<0?-1:(this.setOpen(e,!0),this.pinned=null,this.revealed=e,this.revealPending=!0,this.requestUpdate(),t)}onLatest(){let e=this.sections.length;return e<2||this.shownIndex===e-1}isOpen(e){return this.memory?this.memory.isOpen(e):this.opened.has(e)}setOpen(e,t){this.memory?this.memory.setOpen(e,t):t?this.opened.add(e):this.opened.delete(e)}willUpdate(e){let t=this.count??this.sections.reduce((e,t)=>e+1+t.items.length,0);if(e.has(`sections`)){let n=e.get(`sections`)?.length??0;n&&this.sections.length>n&&this.shown===null&&this.pinned===null&&!this.follow.stick&&!this.bulk&&(this.pinned=n-1),this.reloading&&(this.reloading=!1,this.lastShown=-1,this.total=t)}if(!this.loading){if(this.started){if(t!==this.total){let e=t-this.total;this.total=t,e>0&&this.updateComplete.then(()=>{this.follow.stick&&this.onLatest()?this.follow.toBottom(!To()):this.unseen+=e})}}else this.started=!0,this.total=t,this.afterFirst()}}async afterFirst(){await this.updateComplete,await this.follow.restore(this.memory?.scroll(),()=>!this.isConnected),requestAnimationFrame(()=>this.bulk=!1)}onScroll(){let e=this.follow.read();e&&(this.follow.stick&&this.onLatest()&&(this.unseen=0),this.follow.restored&&this.memory?.setScroll(e))}updated(e){let t=this.shownIndex;if(t!==this.lastShown){let e=this.lastShown;this.lastShown=t,e!==-1&&this.follow.restored&&(this.follow.toBottom(),To()||this.scroller?.animate?.([{opacity:.25},{opacity:1}],{duration:240,easing:`ease-out`})),L(this,`cae-section-shown`,{index:t})}let n=e.get(`mode`);if(n&&n!==`full`&&this.mode===`full`&&this.follow.reshow(),this.revealPending){let e=this.renderRoot.querySelector(`[data-card="${CSS.escape(this.revealed)}"]`);e&&this.mode===`full`&&(this.revealPending=!1,this.follow.stick=!1,e.scrollIntoView({block:`center`}))}}pick(e){this.pinned=null,L(this,`cae-section-change`,{index:e===this.sections.length-1?null:e})}toLatest(){let e=this.sections.length;e>1&&this.shownIndex!==e-1&&(this.pinned=null,this.shown!==null&&L(this,`cae-section-change`,{index:null})),this.follow.stick=!0,this.unseen=0,this.updateComplete.then(()=>this.follow.toBottom(!0))}loadEarlier(){this.reloading=!0,L(this,`cae-load-earlier`,{})}render(){let e=jr(yo,this.strings),t=this.sections,n=this.shownIndex,r=t[n],i={s:e,live:this.live,revealed:this.revealed,folds:this.folds,isOpen:e=>this.isOpen(e),toggle:e=>{this.setOpen(e,!this.isOpen(e)),this.requestUpdate()},requestUpdate:()=>this.requestUpdate()};return k`${this.renderPicker(t,n,e)}
274
+ </div>`}var qo=()=>globalThis.matchMedia?.(`(prefers-reduced-motion: reduce)`).matches??!1,Jo=class extends j{constructor(...e){super(...e),this.sections=[],this.shown=null,this.live=!1,this.earlier=0,this.loading=!1,this.count=null,this.mode=`full`,this.memory=null,this.markdown=null,this.renderDetail=null,this.strings={},this.bulk=!0,this.unseen=0,this.pinned=null,this.revealed=``,this.revealPending=!1,this.follow=new Go(()=>this.scroller),this.started=!1,this.total=0,this.reloading=!1,this.lastShown=-1,this.opened=new Set,this.folds=new Set,this.openDetails=new Set,this.mdCache=new Map}static{this.styles=[B,Kr,Wo,Ho]}get shownIndex(){let e=this.sections.length;if(!e)return-1;let t=this.shown??this.pinned??e-1;return Math.max(0,Math.min(e-1,t))}reveal(e){let t=this.sections.findIndex(t=>t.items.some(t=>t.id===e));return t<0?-1:(this.setOpen(e,!0),this.pinned=null,this.revealed=e,this.revealPending=!0,this.requestUpdate(),t)}onLatest(){let e=this.sections.length;return e<2||this.shownIndex===e-1}isOpen(e){return this.memory?this.memory.isOpen(e):this.opened.has(e)}setOpen(e,t){this.memory?this.memory.setOpen(e,t):t?this.opened.add(e):this.opened.delete(e)}willUpdate(e){let t=this.count??this.sections.reduce((e,t)=>e+1+t.items.length,0);if(e.has(`sections`)){let n=e.get(`sections`)?.length??0;n&&this.sections.length>n&&this.shown===null&&this.pinned===null&&!this.follow.stick&&!this.bulk&&(this.pinned=n-1),this.reloading&&(this.reloading=!1,this.lastShown=-1,this.total=t)}if(!this.loading){if(this.started){if(t!==this.total){let e=t-this.total;this.total=t,e>0&&this.updateComplete.then(()=>{this.follow.stick&&this.onLatest()?this.follow.toBottom(!qo()):this.unseen+=e})}}else this.started=!0,this.total=t,this.afterFirst()}}async afterFirst(){await this.updateComplete,await this.follow.restore(this.memory?.scroll(),()=>!this.isConnected),requestAnimationFrame(()=>this.bulk=!1)}onScroll(){let e=this.follow.read();e&&(this.follow.stick&&this.onLatest()&&(this.unseen=0),this.follow.restored&&this.memory?.setScroll(e))}updated(e){let t=this.shownIndex;if(t!==this.lastShown){let e=this.lastShown;this.lastShown=t,e!==-1&&this.follow.restored&&(this.follow.toBottom(),qo()||this.scroller?.animate?.([{opacity:.25},{opacity:1}],{duration:240,easing:`ease-out`})),L(this,`cae-section-shown`,{index:t})}let n=e.get(`mode`);if(n&&n!==`full`&&this.mode===`full`&&this.follow.reshow(),this.revealPending){let e=this.renderRoot.querySelector(`[data-card="${CSS.escape(this.revealed)}"]`);e&&this.mode===`full`&&(this.revealPending=!1,this.follow.stick=!1,e.scrollIntoView({block:`center`}))}}pick(e){this.pinned=null,L(this,`cae-section-change`,{index:e===this.sections.length-1?null:e})}toLatest(){let e=this.sections.length;e>1&&this.shownIndex!==e-1&&(this.pinned=null,this.shown!==null&&L(this,`cae-section-change`,{index:null})),this.follow.stick=!0,this.unseen=0,this.updateComplete.then(()=>this.follow.toBottom(!0))}loadEarlier(){this.reloading=!0,L(this,`cae-load-earlier`,{})}render(){let e=jr(Vo,this.strings),t=this.sections,n=this.shownIndex,r=t[n],i={s:e,live:this.live,revealed:this.revealed,folds:this.folds,isOpen:e=>this.isOpen(e),toggle:e=>{this.setOpen(e,!this.isOpen(e)),this.requestUpdate()},requestUpdate:()=>this.requestUpdate()};return O`${this.renderPicker(t,n,e)}
251
275
  <div class="scroller ${this.bulk?`bulk`:``}" @scroll=${()=>this.onScroll()}>
252
- ${this.earlier?k`<div class="meta"><button type="button" class="back" @click=${()=>this.loadEarlier()}>
253
- ${e.loadEarlier(this.earlier)}</button></div>`:j}
254
- ${r?to(r.id,this.renderSection(r,n===t.length-1,e,i)):j}
255
- ${!r&&this.live?this.typing(e):j}
256
- </div>
257
- ${this.unseen?k`<button type="button" class="newpill" @click=${()=>this.toLatest()}>
258
- ${this.onLatest()?e.newBelow(this.unseen):e.newInLatest(this.unseen)}</button>`:j}`}renderPicker(e,t,n){return e.length<2?j:k`<div class="rounds" role="group" aria-label=${n.sections} part="picker">
259
- <span class="rounds-lbl" title=${n.sectionsTip||j}>${n.sections}</span>
260
- ${e.map((e,n)=>{let r=e.verdict;return k`<button type="button" class="stab ${n===t?`sel`:``}" title=${r?.tip||j} aria-pressed=${n===t} @click=${()=>this.pick(n)}>
261
- ${r?k`<span class="mk ${r.tone===`done`?`ok`:`bad`}" aria-hidden="true">${r.tone===`done`?`✓`:`✕`}</span><span class="sr">${r.text}</span>`:j}${e.title}
262
- ${e.facts?.length?k` <span class="stab-m">${e.facts.join(` | `)}</span>`:j}
263
- ${e.active?k`<span class="dot" data-tone="running"></span>`:j}
276
+ ${this.earlier?O`<div class="meta"><button type="button" class="back" @click=${()=>this.loadEarlier()}>
277
+ ${e.loadEarlier(this.earlier)}</button></div>`:A}
278
+ ${r?wo(r.id,this.renderSection(r,n===t.length-1,e,i)):A}
279
+ ${!r&&this.live?this.typing(e):A}
280
+ </div>
281
+ ${this.unseen?O`<button type="button" class="newpill" @click=${()=>this.toLatest()}>
282
+ ${this.onLatest()?e.newBelow(this.unseen):e.newInLatest(this.unseen)}</button>`:A}`}renderPicker(e,t,n){return e.length<2?A:O`<div class="rounds" role="group" aria-label=${n.sections} part="picker">
283
+ <span class="rounds-lbl" title=${n.sectionsTip||A}>${n.sections}</span>
284
+ ${e.map((e,n)=>{let r=e.verdict;return O`<button type="button" class="stab ${n===t?`sel`:``}" title=${r?.tip||A} aria-pressed=${n===t} @click=${()=>this.pick(n)}>
285
+ ${r?O`<span class="mk ${r.tone===`done`?`ok`:`bad`}" aria-hidden="true">${r.tone===`done`?`✓`:`✕`}</span><span class="sr">${r.text}</span>`:A}${e.title}
286
+ ${e.facts?.length?O` <span class="stab-m">${e.facts.join(` | `)}</span>`:A}
287
+ ${e.active?O`<span class="dot" data-tone="running"></span>`:A}
264
288
  </button>`})}
265
- </div>`}renderSection(e,t,n,r){let i=e.footer;return k`<div class="inv-body" part="section">
266
- ${e.tags?.length||e.details?.length?this.renderHead(e):j}
267
- ${H(e.items,e=>e.id,e=>this.renderItem(e,n,r))}
268
- ${t&&this.live?this.typing(n):j}
269
- ${i?k`<div class="verdict" part="verdict" data-tone=${I(i.tone)}>
289
+ </div>`}renderSection(e,t,n,r){let i=e.footer;return O`<div class="inv-body" part="section">
290
+ ${e.tags?.length||e.details?.length?this.renderHead(e):A}
291
+ ${V(e.items,e=>e.id,e=>this.renderItem(e,n,r))}
292
+ ${t&&this.live?this.typing(n):A}
293
+ ${i?O`<div class="verdict" part="verdict" data-tone=${I(i.tone)}>
270
294
  <b>${i.title}</b>
271
- ${i.list?.length?k`<ul>${i.list.map(e=>k`<li>${e}</li>`)}</ul>`:i.note?k`<span class="meta">${i.note}</span>`:j}
272
- </div>`:j}
273
- </div>`}renderHead(e){return k`<div class="inv-head">
274
- <div class="inv-who">${xo(e.tags??[])}</div>
275
- ${(e.details??[]).map(t=>t.code?k`<details class="inv-cmdbox"><summary>${t.summary}</summary><pre class="inv-cmd"><code>${t.text}</code></pre></details>`:this.renderProse(e,t))}
276
- </div>`}renderProse(e,t){let n=`${e.id}:${t.id}`,r=this.openDetails.has(n);return k`<details class="inv-prompt" ?open=${r} @toggle=${e=>{let t=e.target.open;t!==this.openDetails.has(n)&&(t?this.openDetails.add(n):this.openDetails.delete(n),this.requestUpdate())}}>
295
+ ${i.list?.length?O`<ul>${i.list.map(e=>O`<li>${e}</li>`)}</ul>`:i.note?O`<span class="meta">${i.note}</span>`:A}
296
+ </div>`:A}
297
+ </div>`}renderHead(e){return O`<div class="inv-head">
298
+ <div class="inv-who">${Uo(e.tags??[])}</div>
299
+ ${(e.details??[]).map(t=>t.code?O`<details class="inv-cmdbox"><summary>${t.summary}</summary><pre class="inv-cmd"><code>${t.text}</code></pre></details>`:this.renderProse(e,t))}
300
+ </div>`}renderProse(e,t){let n=`${e.id}:${t.id}`,r=this.openDetails.has(n);return O`<details class="inv-prompt" ?open=${r} @toggle=${e=>{let t=e.target.open;t!==this.openDetails.has(n)&&(t?this.openDetails.add(n):this.openDetails.delete(n),this.requestUpdate())}}>
277
301
  <summary>${t.summary}</summary>
278
- ${r?k`<div class="inv-ptext">${this.renderDetail?this.renderDetail(t):k`<div class="tx">${this.md(n,t.text)}</div>`}</div>`:j}
279
- </details>`}md(e,t){if(!this.markdown)return t;let n=this.mdCache.get(e);if(n?.raw===t)return zi(n.html);let r=this.markdown(t);return this.mdCache.set(e,{raw:t,html:r}),zi(r)}bubble(e,t,n,r,i){return k`<div class="msg" part="bubble" title=${i??j}>
302
+ ${r?O`<div class="inv-ptext">${this.renderDetail?this.renderDetail(t):O`<div class="tx">${this.md(n,t.text)}</div>`}</div>`:A}
303
+ </details>`}md(e,t){if(!this.markdown)return t;let n=this.mdCache.get(e);if(n?.raw===t)return Ji(n.html);let r=this.markdown(t);return this.mdCache.set(e,{raw:t,html:r}),Ji(r)}bubble(e,t,n,r,i){return O`<div class="msg" part="bubble" title=${i??A}>
280
304
  <div class="av ${t}">${e}</div>
281
305
  <div class="bd"><div class="hd">${n}</div>${r}</div>
282
- </div>`}renderItem(e,t,n){switch(e.type){case`prompt`:return this.bubble(`▸`,`av-l`,t.prompt,k`<div class="tx meta">${t.characters(e.text.length)}</div>`,e.text.slice(0,600));case`message`:return this.bubble(`A`,`av-a`,t.assistant,k`<div class="tx">${this.md(e.id,e.text)}</div>`);case`reasoning`:return this.bubble(`✦`,`av-t`,t.reasoning,k`<div class="tx">${this.md(e.id,e.text)}</div>`);case`event`:return k`<div class="msg" part="bubble"><div class="av av-t" aria-hidden="true">${e.icon}</div><div class="bd"><div class="hd">${e.title}</div>${e.text?k`<div class="tx meta">${e.text}</div>`:j}</div></div>`;case`notice`:return k`<div class="sysline" part="notice"><span aria-hidden="true">⚙</span><span class="tx">${e.text}</span></div>`;case`tool`:return function(e,t){let{s:n}=e,r=e.isOpen(t.id),i=t.links?.length??0,a=t.status===`ok`?k`<span class="st-ok"><span aria-hidden="true">✓</span> ${n.done}</span>`:t.status===`error`?k`<span class="st-err"><span aria-hidden="true">✕</span> ${n.failed}</span>`:e.live?k`<span class="st-run"><i class="pdot"></i>${n.running}</span>`:k`<span class="st-int" title=${n.interruptedTip}><span aria-hidden="true">◌</span> ${n.interrupted}</span>`;return k`<div class="toolcard ${t.status===`running`?`run`:t.status===`error`?`err`:`ok`} ${e.revealed===t.id?`revealed`:``}" part="tool" data-tool=${t.query?`web-search`:t.page?`web-fetch`:t.icon} data-card=${t.id}>
306
+ </div>`}renderItem(e,t,n){switch(e.type){case`prompt`:return this.bubble(`▸`,`av-l`,t.prompt,O`<div class="tx meta">${t.characters(e.text.length)}</div>`,e.text.slice(0,600));case`message`:return this.bubble(`A`,`av-a`,t.assistant,O`<div class="tx">${this.md(e.id,e.text)}</div>`);case`reasoning`:return this.bubble(`✦`,`av-t`,t.reasoning,O`<div class="tx">${this.md(e.id,e.text)}</div>`);case`event`:return O`<div class="msg" part="bubble"><div class="av av-t" aria-hidden="true">${e.icon}</div><div class="bd"><div class="hd">${e.title}</div>${e.text?O`<div class="tx meta">${e.text}</div>`:A}</div></div>`;case`notice`:return O`<div class="sysline" part="notice"><span aria-hidden="true">⚙</span><span class="tx">${e.text}</span></div>`;case`tool`:return function(e,t){let{s:n}=e,r=e.isOpen(t.id),i=t.links?.length??0,a=t.status===`ok`?O`<span class="st-ok"><span aria-hidden="true">✓</span> ${n.done}</span>`:t.status===`error`?O`<span class="st-err"><span aria-hidden="true">✕</span> ${n.failed}</span>`:e.live?O`<span class="st-run"><i class="pdot"></i>${n.running}</span>`:O`<span class="st-int" title=${n.interruptedTip}><span aria-hidden="true">◌</span> ${n.interrupted}</span>`;return O`<div class="toolcard ${t.status===`running`?`run`:t.status===`error`?`err`:`ok`} ${e.revealed===t.id?`revealed`:``}" part="tool" data-tool=${t.query?`web-search`:t.page?`web-fetch`:t.icon} data-card=${t.id}>
283
307
  <div class="th" role="button" tabindex="0" aria-expanded=${r?`true`:`false`} @click=${()=>e.toggle(t.id)} @keydown=${e=>{e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),e.currentTarget.click())}}>
284
308
  <span class="tn">${t.name||n.tool}</span><span class="tp">${t.summary}</span><span class="ti" >${i?n.results(i):t.intent}</span >${a}
285
309
  </div>
286
- ${r?k`<div class="tb" part="tool-body">${function(e,t){let n=t.output,r=t.links??[],i=t.query||t.page;if(!i)return n===null?wo(e,t.body??``,`${t.id}:cmd`):k`${t.body?wo(e,t.body,`${t.id}:cmd`):j}${wo(e,n,`${t.id}:out`)}`;let a=!t.query&&/^https?:\/\//.test(i);return k`<div class="wq">
287
- <span class="wl">${t.query?e.s.query:e.s.page}</span>${a?k`<a class="plink" href=${i} target="_blank" rel="noopener noreferrer">${i}</a>`:k`<b>${i}</b>`}
310
+ ${r?O`<div class="tb" part="tool-body">${function(e,t){let n=t.output,r=t.links??[],i=t.query||t.page;if(!i)return n===null?Ko(e,t.body??``,`${t.id}:cmd`):O`${t.body?Ko(e,t.body,`${t.id}:cmd`):A}${Ko(e,n,`${t.id}:out`)}`;let a=!t.query&&/^https?:\/\//.test(i);return O`<div class="wq">
311
+ <span class="wl">${t.query?e.s.query:e.s.page}</span>${a?O`<a class="plink" href=${i} target="_blank" rel="noopener noreferrer">${i}</a>`:O`<b>${i}</b>`}
288
312
  </div>
289
- ${r.length?k`<ol class="links">
290
- ${r.map(e=>k`<li><a href=${e.url} target="_blank" rel="noopener noreferrer">${e.title}</a><span class="host">${function(e){try{return new URL(e).host}catch{return``}}(e.url)}</span></li>`)}
291
- </ol>`:j}
292
- ${n===null?j:r.length?k`<details class="rawfold"><summary>${e.s.fullText}</summary>${wo(e,n,`${t.id}:out`)}</details>`:wo(e,n,`${t.id}:out`)}`}(e,t)}</div>`:j}
293
- </div>`}(n,e)}}typing(e){return k`<div class="typing"><span class="av av-a">A</span><span class="dots"><i></i><i></i><i></i></span><span class="meta">${e.running}</span></div>`}};U([P({attribute:!1})],Eo.prototype,`sections`,void 0),U([P({attribute:!1})],Eo.prototype,`shown`,void 0),U([P({type:Boolean})],Eo.prototype,`live`,void 0),U([P({type:Number})],Eo.prototype,`earlier`,void 0),U([P({type:Boolean})],Eo.prototype,`loading`,void 0),U([P({attribute:!1})],Eo.prototype,`count`,void 0),U([P({reflect:!0})],Eo.prototype,`mode`,void 0),U([P({attribute:!1})],Eo.prototype,`memory`,void 0),U([P({attribute:!1})],Eo.prototype,`markdown`,void 0),U([P({attribute:!1})],Eo.prototype,`renderDetail`,void 0),U([P({attribute:!1})],Eo.prototype,`strings`,void 0),U([F()],Eo.prototype,`bulk`,void 0),U([F()],Eo.prototype,`unseen`,void 0),U([F()],Eo.prototype,`pinned`,void 0),U([F()],Eo.prototype,`revealed`,void 0),U([xn(`.scroller`)],Eo.prototype,`scroller`,void 0);var Do=new Map;function G(e,t=!1,n=jn()){if(!e)return``;let r=new Date(e);return Number.isNaN(r.getTime())?e:function(e,t){let n=`${e}|${t}`,r=Do.get(n);return r||(r=new Intl.DateTimeFormat(e,{...t?{month:`short`,day:`numeric`}:{},hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`}),Do.set(n,r)),r}(n,t).format(r)}function Oo(e,t=Date.now()){let n=Date.parse(e||``);if(Number.isNaN(n))return``;let r=Math.max(0,(t-n)/1e3);return E(r<60?`just now`:r<3600?T`${Math.floor(r/60)}m ago`:r<86400?T`${Math.floor(r/3600)}h ago`:T`${Math.floor(r/86400)}d ago`)}var ko=e=>e.charAt(0).toLocaleUpperCase(jn())+e.slice(1),Ao=(...e)=>e.filter(e=>!!e),K=(...e)=>Ao(...e).join(` | `),jo=new Map;function Mo(e,t=jn()){let n=jo.get(t);return n||(n=new Intl.ListFormat(t,{type:`conjunction`}),jo.set(t,n)),n.format(e)}var q=(e,t=` · `)=>`${e.kind??``}${e.unit?t+e.unit:``}`;function No(e){let t=(e||``).trim();if(!t)return``;let n=(t.split(`
294
- `)[0]||``).trim();return n.length>100?`${n.slice(0,100)}…`:n}function J(e){let t=e??0;return t<1e3?String(Math.round(t)):t<1e4?`${(t/1e3).toFixed(1).replace(/\.0$/,``)}k`:t<1e6?`${Math.round(t/1e3)}k`:`${(t/1e6).toFixed(1).replace(/\.0$/,``)}M`}function Y(e){return e==null?`—`:e===0?`$0`:e<.001?`<$0.001`:e<1?`$${e.toFixed(3)}`:`$${e.toFixed(2)}`}function Po(e){let t=new Map;for(let n of e)for(let[e,r]of Object.entries(n.unread_events??{}))t.set(e,(t.get(e)??0)+r);return[...t].map(([e,t])=>`${e} ×${t}`).join(`, `)}function Fo(e){switch(e){case`done`:return E(`done`,{id:`outcome-done`});case`recovered`:return E(`done after retrying`);case`partial`:return E(`partly done`,{id:`outcome-partial`});case`failed`:return E(`failed`);case`not_started`:return E(`not started`);case`running`:return E(`running`);case`waiting`:return E(`waiting`);case`skipped`:return E(`skipped`)}}var Io=(e,t)=>e!==`waiting`||t?Fo(e):E(`not run`);function X(e,t){switch(e){case`done`:return E(T`${t} done`);case`recovered`:return E(T`${t} done after retrying`);case`partial`:return E(T`${t} partly done`);case`failed`:return E(T`${t} failed`);case`not_started`:return E(T`${t} not started`);case`running`:return E(T`${t} running`);case`waiting`:return E(T`${t} waiting`);case`skipped`:return E(T`${t} skipped`);case`not_run`:return E(T`${t} not run`)}}function Lo(e,t){return e>0?t:`neutral`}function Ro(e,t){return e===`running`?`running`:e===`unresponsive`?`attention`:t?.total?t.failed?`failed`:t.not_started||t.partial?`attention`:`done`:`neutral`}var zo={completed:`done`,partial:`attention`,invalid_input:`attention`,skipped:`muted`,timeout:`failed`,max_turns:`failed`,budget:`failed`,context_budget:`failed`,stalled:`failed`,auth_failed:`failed`,api_error:`failed`,rate_limited:`failed`,refused:`failed`,aborted:`failed`,denied:`failed`,error:`failed`,no_output:`failed`,launch_failed:`failed`,invalid_output:`failed`,credential_mismatch:`failed`},Bo=(Object.keys(zo),e=>e!=null&&Object.hasOwn(zo,e));function Vo(e){return Bo(e)?zo[e]:`failed`}function Ho(e){switch(e){case`done`:case`recovered`:return`done`;case`failed`:return`failed`;case`partial`:case`not_started`:return`attention`;case`running`:return`running`;case`waiting`:case`skipped`:return`muted`}}function Uo(e){switch(e){case`valid`:return`done`;case`invalid`:case`failed`:return`failed`;case`refused`:return`attention`;case`running`:return`running`;case`pending`:return`muted`;case null:case void 0:return`neutral`}}var Wo=e=>e===`waiting`?`pending`:Yr(Ho(e));function Z(e,t){return e?Bo(e)?function(e,t){switch(e){case`completed`:return E(`done`,{id:`stop-completed`});case`skipped`:return E(`skipped`);case`partial`:return E(`partly done`,{id:`stop-partial`});case`invalid_input`:{let e=new Set(ze(t).map(e=>e.problem));return e.size===1&&e.has(`missing`)?E(`not started (input missing)`):e.size===1&&e.has(`checks`)?E(`not started (input failed checks)`):e.size===1&&e.has(`failed`)?E(`not started (earlier task failed)`):e.size===2&&e.has(`missing`)&&e.has(`checks`)?E(`not started (input missing and input failed checks)`):E(`not started`,{id:`stop-invalid-input`})}case`invalid_output`:return E(`failed checks`);case`timeout`:return E(`timed out`);case`max_turns`:return E(`turn limit reached`);case`budget`:return E(`cost limit reached`);case`context_budget`:return E(`context limit reached`);case`stalled`:return E(`stalled (no events)`);case`auth_failed`:return E(`authentication failed`);case`api_error`:return E(`API error`);case`rate_limited`:return E(`rate limited`);case`refused`:return E(`refused by the model`);case`aborted`:return E(`aborted`);case`denied`:return E(`permission denied`);case`error`:return E(`error`);case`no_output`:return E(`ended without a result`);case`launch_failed`:return E(`agent session did not start`);case`credential_mismatch`:return E(`wrong identity used`)}}(e,t):E(T`unknown (${e})`):`—`}function Go(e,t,n){return t===`failed`?E(n?T`input ${e} is the output of failed task ${n.name}`:T`input ${e} is the output of a failed task`):t===`checks`?E(n?T`input ${e} from ${n.name} failed checks`:T`input ${e} failed checks`):n?n.outcome===`failed`?E(T`input ${e} is missing because ${n.name} failed`):n.outcome===`not_started`?E(T`input ${e} is missing because ${n.name} did not start`):n.outcome&&g(n.outcome)?E(T`input ${e} from ${n.name} is missing`):E(T`input ${e} is missing because ${n.name} did not finish`):E(T`input ${e} is missing`)}function Ko(e,t,n,r){let i=e.attempts[e.attempts.length-1];if(i?.stop===`invalid_input`){let e=ze(i.reason)[0];if(!e)return w(i.reason,n);let a=e.producer||r?.(e.path)||``,o=a?t.get(a):void 0;return Go(w(e.path,n),e.problem,o?{name:q(o),outcome:o.outcome}:void 0)}let a=e.cause?t.get(e.cause):void 0;return a?E(T`earlier task ${q(a)} failed`):``}var qo=()=>E(`An attempt after a failed attempt (retries)`),Jo=e=>E(T`Attempt ${(e??0)+1}`);function Yo(e){let t=le(e),n=e.map((e,n)=>t[n]?K(Jo(e.attempt),E(`resumed run`)):Jo(e.attempt));return n.map((t,r)=>n.indexOf(t)===n.lastIndexOf(t)?t:K(t,G(e[r]?.ts)))}function Xo(e){return e<=0?``:E(e===1?`1 correction`:T`${e} corrections`)}var Zo=e=>E(T`Pass ${e}`),Qo=e=>E(e<=1?`1 pass`:T`up to ${e} passes`),$o=e=>E(e<=1?`1 pass`:T`${e} passes`),es=e=>e.map(([e,t])=>E(e<=1?T`1 pass: ${t}`:T`${e} passes: ${t}`)).join(` | `),ts=()=>E(`loop`),ns=e=>e?e===`ambient`?E(`default`):e:``,rs=e=>e===`ambient`?E(`local credentials (ambient)`):``,is=e=>e==null?`—`:`${Math.round(e)}%`;function as(e,t){if(!e||e===`allowed`)return``;let n=e.split(`,`),r=n.some(e=>[`rejected`,`exhausted`,`quota`,`blocked`].includes(e))?E(`limit reached`):n.every(e=>[`allowed_warning`,`warning`].includes(e))?E(`near the limit`):E(T`unknown (${e})`);return t?K(r,os(t)):r}function os(e){if(e===`five_hour`)return E(`5-hour`);if(e===`seven_day`)return E(`weekly`);let t=/^(five_hour|seven_day)_(.+)$/.exec(e);return t?t[1]===`five_hour`?E(T`5-hour (${t[2]})`):E(T`weekly (${t[2]})`):e}var ss=e=>E(T`account ${e.slice(0,6)}`),cs=e=>K(E(T`weekly ${is(e.seven_day_pct)}`),E(T`5-hour ${is(e.five_hour_pct)}`));function ls(e){let t=[e.seven_day_resets_at?E(T`Weekly usage ${is(e.seven_day_pct)} (resets ${G(e.seven_day_resets_at,!0)})`):E(T`Weekly usage ${is(e.seven_day_pct)}`),e.five_hour_resets_at?E(T`5-hour usage ${is(e.five_hour_pct)} (resets ${G(e.five_hour_resets_at,!0)})`):E(T`5-hour usage ${is(e.five_hour_pct)}`),...Object.entries(e.windows??{}).filter(([e])=>e!==`five_hour`&&e!==`seven_day`).map(([e,t])=>E(T`${ko(os(e))} usage ${is(t.pct)}`)),E(T`Reported ${G(e.observed_at,!0)}`)],n=as(e.status,e.status_window);return n&&t.push(E(T`Status: ${n}`)),e.threshold_pct!=null&&t.push(E(T`Warning threshold: ${is(e.threshold_pct)}`)),e.overage_status&&t.push(E(T`Extra usage: ${function(e){return e===`allowed`||e===`allowed_warning`?E(`allowed`):e===`rejected`?E(`not allowed`):e}(e.overage_status)}`)),e.account&&t.push(E(T`Account: ${e.account}`)),t.join(`
295
- `)}var us=e=>K(cs(e),ns(e.credential));function ds(e){let t=e[0];if(!t)return``;let n=e.length-1;return n?K(us(t.last),E(n===1?`1 more account`:T`${n} more accounts`)):cs(t.last)}var fs=e=>e.map(e=>e.credential?`${ns(e.credential)}\n${ls(e.last)}`:ls(e.last)).join(`
313
+ ${r.length?O`<ol class="links">
314
+ ${r.map(e=>O`<li><a href=${e.url} target="_blank" rel="noopener noreferrer">${e.title}</a><span class="host">${function(e){try{return new URL(e).host}catch{return``}}(e.url)}</span></li>`)}
315
+ </ol>`:A}
316
+ ${n===null?A:r.length?O`<details class="rawfold"><summary>${e.s.fullText}</summary>${Ko(e,n,`${t.id}:out`)}</details>`:Ko(e,n,`${t.id}:out`)}`}(e,t)}</div>`:A}
317
+ </div>`}(n,e)}}typing(e){return O`<div class="typing"><span class="av av-a">A</span><span class="dots"><i></i><i></i><i></i></span><span class="meta">${e.running}</span></div>`}};H([N({attribute:!1})],Jo.prototype,`sections`,void 0),H([N({attribute:!1})],Jo.prototype,`shown`,void 0),H([N({type:Boolean})],Jo.prototype,`live`,void 0),H([N({type:Number})],Jo.prototype,`earlier`,void 0),H([N({type:Boolean})],Jo.prototype,`loading`,void 0),H([N({attribute:!1})],Jo.prototype,`count`,void 0),H([N({reflect:!0})],Jo.prototype,`mode`,void 0),H([N({attribute:!1})],Jo.prototype,`memory`,void 0),H([N({attribute:!1})],Jo.prototype,`markdown`,void 0),H([N({attribute:!1})],Jo.prototype,`renderDetail`,void 0),H([N({attribute:!1})],Jo.prototype,`strings`,void 0),H([P()],Jo.prototype,`bulk`,void 0),H([P()],Jo.prototype,`unseen`,void 0),H([P()],Jo.prototype,`pinned`,void 0),H([P()],Jo.prototype,`revealed`,void 0),H([Sn(`.scroller`)],Jo.prototype,`scroller`,void 0);var Yo=new Map;function G(e,t=!1,n=F()){if(!e)return``;let r=new Date(e);return Number.isNaN(r.getTime())?e:function(e,t){let n=`${e}|${t}`,r=Yo.get(n);return r||(r=new Intl.DateTimeFormat(e,{...t?{month:`short`,day:`numeric`}:{},hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`}),Yo.set(n,r)),r}(n,t).format(r)}function Xo(e,t=Date.now()){let n=Date.parse(e||``);if(Number.isNaN(n))return``;let r=Math.max(0,(t-n)/1e3);return T(r<60?`just now`:r<3600?w`${Math.floor(r/60)}m ago`:r<86400?w`${Math.floor(r/3600)}h ago`:w`${Math.floor(r/86400)}d ago`)}var Zo=e=>e.charAt(0).toLocaleUpperCase(F())+e.slice(1),Qo=(...e)=>e.filter(e=>!!e),K=(...e)=>Qo(...e).join(` | `),$o=new Map;function es(e,t=F()){let n=$o.get(t);return n||(n=new Intl.ListFormat(t,{type:`conjunction`}),$o.set(t,n)),n.format(e)}var q=(e,t=` · `)=>`${e.kind??``}${e.unit?t+e.unit:``}`;function ts(e){let t=(e||``).trim();if(!t)return``;let n=(t.split(`
318
+ `)[0]||``).trim();return n.length>100?`${n.slice(0,100)}…`:n}function J(e){let t=e??0;return t<1e3?String(Math.round(t)):t<1e4?`${(t/1e3).toFixed(1).replace(/\.0$/,``)}k`:t<1e6?`${Math.round(t/1e3)}k`:`${(t/1e6).toFixed(1).replace(/\.0$/,``)}M`}function Y(e){return e==null?`—`:e===0?`$0`:e<.001?`<$0.001`:e<1?`$${e.toFixed(3)}`:`$${e.toFixed(2)}`}function ns(e){let t=new Map;for(let n of e)for(let[e,r]of Object.entries(n.unread_events??{}))t.set(e,(t.get(e)??0)+r);return[...t].map(([e,t])=>`${e} ×${t}`).join(`, `)}function rs(e){switch(e){case`done`:return T(`done`,{id:`outcome-done`});case`recovered`:return T(`done after retrying`);case`partial`:return T(`partly done`,{id:`outcome-partial`});case`failed`:return T(`failed`);case`not_started`:return T(`not started`);case`running`:return T(`running`);case`waiting`:return T(`waiting`);case`skipped`:return T(`skipped`)}}var is=(e,t)=>e!==`waiting`||t?rs(e):T(`not run`);function X(e,t){switch(e){case`done`:return T(w`${t} done`);case`recovered`:return T(w`${t} done after retrying`);case`partial`:return T(w`${t} partly done`);case`failed`:return T(w`${t} failed`);case`not_started`:return T(w`${t} not started`);case`running`:return T(w`${t} running`);case`waiting`:return T(w`${t} waiting`);case`skipped`:return T(w`${t} skipped`);case`not_run`:return T(w`${t} not run`)}}function as(e,t){return e>0?t:`neutral`}function os(e,t){return e===`running`?`running`:e===`unresponsive`?`attention`:t?.total?t.failed?`failed`:t.not_started||t.partial?`attention`:`done`:`neutral`}var ss={completed:`done`,partial:`attention`,invalid_input:`attention`,skipped:`muted`,timeout:`failed`,max_turns:`failed`,budget:`failed`,context_budget:`failed`,stalled:`failed`,auth_failed:`failed`,api_error:`failed`,rate_limited:`failed`,refused:`failed`,aborted:`failed`,denied:`failed`,error:`failed`,no_output:`failed`,launch_failed:`failed`,invalid_output:`failed`,credential_mismatch:`failed`},cs=(Object.keys(ss),e=>e!=null&&Object.hasOwn(ss,e));function ls(e){return cs(e)?ss[e]:`failed`}function us(e){switch(e){case`done`:case`recovered`:return`done`;case`failed`:return`failed`;case`partial`:case`not_started`:return`attention`;case`running`:return`running`;case`waiting`:case`skipped`:return`muted`}}function ds(e){switch(e){case`valid`:return`done`;case`invalid`:case`failed`:return`failed`;case`refused`:return`attention`;case`running`:return`running`;case`pending`:return`muted`;case null:case void 0:return`neutral`}}var fs=e=>e===`waiting`?`pending`:Xr(us(e));function Z(e,t){return e?cs(e)?function(e,t){switch(e){case`completed`:return T(`done`,{id:`stop-completed`});case`skipped`:return T(`skipped`);case`partial`:return T(`partly done`,{id:`stop-partial`});case`invalid_input`:{let e=new Set(Be(t).map(e=>e.problem));return e.size===1&&e.has(`missing`)?T(`not started (input missing)`):e.size===1&&e.has(`checks`)?T(`not started (input failed checks)`):e.size===1&&e.has(`failed`)?T(`not started (earlier task failed)`):e.size===2&&e.has(`missing`)&&e.has(`checks`)?T(`not started (input missing and input failed checks)`):T(`not started`,{id:`stop-invalid-input`})}case`invalid_output`:return T(`failed checks`);case`timeout`:return T(`timed out`);case`max_turns`:return T(`turn limit reached`);case`budget`:return T(`cost limit reached`);case`context_budget`:return T(`context limit reached`);case`stalled`:return T(`stalled (no events)`);case`auth_failed`:return T(`authentication failed`);case`api_error`:return T(`API error`);case`rate_limited`:return T(`rate limited`);case`refused`:return T(`refused by the model`);case`aborted`:return T(`aborted`);case`denied`:return T(`permission denied`);case`error`:return T(`error`);case`no_output`:return T(`ended without a result`);case`launch_failed`:return T(`agent session did not start`);case`credential_mismatch`:return T(`wrong identity used`)}}(e,t):T(w`unknown (${e})`):`—`}function ps(e,t,n){return t===`failed`?T(n?w`input ${e} is the output of failed task ${n.name}`:w`input ${e} is the output of a failed task`):t===`checks`?T(n?w`input ${e} from ${n.name} failed checks`:w`input ${e} failed checks`):n?n.outcome===`failed`?T(w`input ${e} is missing because ${n.name} failed`):n.outcome===`not_started`?T(w`input ${e} is missing because ${n.name} did not start`):n.outcome&&g(n.outcome)?T(w`input ${e} from ${n.name} is missing`):T(w`input ${e} is missing because ${n.name} did not finish`):T(w`input ${e} is missing`)}function ms(e,t,n,r){let i=e.attempts[e.attempts.length-1];if(i?.stop===`invalid_input`){let e=Be(i.reason)[0];if(!e)return C(i.reason,n);let a=e.producer||r?.(e.path)||``,o=a?t.get(a):void 0;return ps(C(e.path,n),e.problem,o?{name:q(o),outcome:o.outcome}:void 0)}let a=e.cause?t.get(e.cause):void 0;return a?T(w`earlier task ${q(a)} failed`):``}var hs=()=>T(`An attempt after a failed attempt (retries)`),gs=e=>T(w`Attempt ${(e??0)+1}`);function _s(e){let t=ue(e),n=e.map((e,n)=>t[n]?K(gs(e.attempt),T(`resumed run`)):gs(e.attempt));return n.map((t,r)=>n.indexOf(t)===n.lastIndexOf(t)?t:K(t,G(e[r]?.ts)))}function vs(e){return e<=0?``:T(e===1?`1 correction`:w`${e} corrections`)}var ys=e=>T(w`Pass ${e}`),bs=e=>T(e<=1?`1 pass`:w`up to ${e} passes`),xs=e=>T(e<=1?`1 pass`:w`${e} passes`),Ss=e=>e.map(([e,t])=>T(e<=1?w`1 pass: ${t}`:w`${e} passes: ${t}`)).join(` | `),Cs=()=>T(`loop`),ws=e=>e?e===`ambient`?T(`default`):e:``,Ts=e=>e===`ambient`?T(`local credentials (ambient)`):``,Es=e=>e==null?`—`:`${Math.round(e)}%`;function Ds(e,t){if(!e||e===`allowed`)return``;let n=e.split(`,`),r=n.some(e=>[`rejected`,`exhausted`,`quota`,`blocked`].includes(e))?T(`limit reached`):n.every(e=>[`allowed_warning`,`warning`].includes(e))?T(`near the limit`):T(w`unknown (${e})`);return t?K(r,Os(t)):r}function Os(e){if(e===`five_hour`)return T(`5-hour`);if(e===`seven_day`)return T(`weekly`);let t=/^(five_hour|seven_day)_(.+)$/.exec(e);return t?t[1]===`five_hour`?T(w`5-hour (${t[2]})`):T(w`weekly (${t[2]})`):e}var ks=e=>T(w`account ${e.slice(0,6)}`),As=e=>K(T(w`weekly ${Es(e.seven_day_pct)}`),T(w`5-hour ${Es(e.five_hour_pct)}`));function js(e){let t=[e.seven_day_resets_at?T(w`Weekly usage ${Es(e.seven_day_pct)} (resets ${G(e.seven_day_resets_at,!0)})`):T(w`Weekly usage ${Es(e.seven_day_pct)}`),e.five_hour_resets_at?T(w`5-hour usage ${Es(e.five_hour_pct)} (resets ${G(e.five_hour_resets_at,!0)})`):T(w`5-hour usage ${Es(e.five_hour_pct)}`),...Object.entries(e.windows??{}).filter(([e])=>e!==`five_hour`&&e!==`seven_day`).map(([e,t])=>T(w`${Zo(Os(e))} usage ${Es(t.pct)}`)),T(w`Reported ${G(e.observed_at,!0)}`)],n=Ds(e.status,e.status_window);return n&&t.push(T(w`Status: ${n}`)),e.threshold_pct!=null&&t.push(T(w`Warning threshold: ${Es(e.threshold_pct)}`)),e.overage_status&&t.push(T(w`Extra usage: ${function(e){return e===`allowed`||e===`allowed_warning`?T(`allowed`):e===`rejected`?T(`not allowed`):e}(e.overage_status)}`)),e.account&&t.push(T(w`Account: ${e.account}`)),t.join(`
319
+ `)}var Ms=e=>K(As(e),ws(e.credential));function Ns(e){let t=e[0];if(!t)return``;let n=e.length-1;return n?K(Ms(t.last),T(n===1?`1 more account`:w`${n} more accounts`)):As(t.last)}var Ps=e=>e.map(e=>e.credential?`${ws(e.credential)}\n${js(e.last)}`:js(e.last)).join(`
296
320
 
297
- `);function ps(e,t){return E(e===`seven_day`?T`Weekly usage ${is(t)}`:T`5-hour usage ${is(t)}`)}var ms=e=>e==null?`—`:`${Number(e.toFixed(2))}%`,hs=e=>E(T`limit ${ms(e)}`);function gs(e){return e.rule?E(T`Usage rule: ${e.rule}`):K(ps(e.window??``,e.pct),hs(e.cap),e.until?E(T`until ${G(e.until,!0)}`):``)}var _s=e=>K(E(T`Identity ${ns(e.credential)} paused`),gs(e));function vs(e){let t=new Set;return e.filter(e=>!t.has(e.credential)&&t.add(e.credential))}function ys(e,t=``,n=``){let r=n?n.slice(n.lastIndexOf(`.`)+1):``;switch(e?.cause){case`deadline`:return E(r?T`Past the deadline of ${r}`:`Past the deadline`);case`grace_window`:return E(r?T`Past the deadline of ${r} and its finishing time`:`Past the deadline and its finishing time`);case`cannot_finish`:return K(E(r?T`Cannot finish before the deadline of ${r}`:`Cannot finish before the deadline`),e.need_s==null?``:E(T`needs ${z(e.need_s)}`),e.left_s==null?``:E(T`${z(e.left_s)} left`));case`dependency_not_queued`:return E(`An earlier task was never scheduled`);case`dependency_deferred`:return E(`An earlier task was not run`);case`rest`:{let n=vs(e.rests??[]);return n.length?n.length===1?_s(n[0]):K(_s(n[0]),E(T`+${n.length-1} paused identities`)):t}default:return t}}var bs=e=>E(T`${e.model||e.route||`—`} (identity paused)`);function xs(e){if(!e||e.five_hour_pct==null&&e.seven_day_pct==null)return``;let t=K(e.seven_day_pct==null?``:E(T`weekly ${ms(e.seven_day_pct)}`),e.five_hour_pct==null?``:E(T`5-hour ${ms(e.five_hour_pct)}`));return E(T`Limits: ${t}`)}var Ss=()=>E(`A new agent session on the next model after a failed one (Router hops)`),Cs=e=>e.model||e.route||`—`;function ws(e,t,n){let r=[...new Map((n??[]).map(e=>[e.route||e.model,e])).values()];if(!e||e.length+r.length<2||!e.length)return``;let i=[...r.map(bs),...e.map((t,n)=>n<e.length-1?E(T`${Cs(t)} (${Z(t.stop)})`):Cs(t))].join(` → `);return t==null?i:`${i} | ${z(t)}`}function Ts(e){switch(e){case`valid`:return E(`passed`);case`invalid`:return E(`failed checks`);case`refused`:return E(`not written (task not started)`);case`failed`:return E(`not written (task failed)`);case`running`:return E(`not written yet (task running)`);case`pending`:return E(`not written yet (task waiting)`)}}function Es(e){return e===`failed`?E(`The task failed before it wrote a file that passes its checks`):``}var Ds=()=>E(`Another round in the same agent session after failed checks (rounds)`);function Os(e,t){let n=(e??1)-1;return n<1?``:E(t?n===1?`after 1 correction`:T`after ${n} corrections`:n===1?`1 correction`:T`${n} corrections`)}function ks(e,t,n){let r=e.errors??[],i=ze(`invalid input: ${r.map(e=>e.replace(/^invalid input:\s*/,``)).join(`; `)}`)[0];if(!i)return r[0]?ko(w(r[0],t)):``;let a=n?.(i.path);return ko(Go(w(i.path,t),i.problem,a))}var As=(e,t)=>e.ready?Le(e.journal):t.quota??[],js=e=>E(T`Agent sessions played from the recordings in ${e} (replay)`),Ms=e=>!!e?.replay&&!e.stub,Ns=()=>E(`replayed`),Ps=()=>E(`Played from a recording (replayed)`);function Fs(e){return e?.replay&&Ms(e)?{text:E(`replay and new sessions`),title:(t=e.replay,E(T`Agent sessions played from the recordings in ${t}, and new agent sessions recorded there (replay, record_missing)`))}:e?.replay?{text:E(`replay`),title:js(e.replay)}:e?.stub?{text:E(`stub agent`),title:E(`Tasks played by the stub agent with scripted replies (stub)`)}:null;var t}var Is=()=>E(`no report from host`),Ls=e=>e.up?E(`up`):E(`no report`),Rs=e=>e?.last_seen?E(T`Last report ${G(e.last_seen,!0)}`):``,zs=e=>E(e?T`Host ${e}`:`No host id`),Bs=e=>E(e===1?`1 run`:T`${e} runs`);function Vs(e){let t=e.filter(e=>!e.up).length;return K(e.length===1?E(`1 host`):E(T`${e.length} hosts`),t?E(T`${t} with no report`):``)}var Hs=e=>({empty:e,sortAscending:E(`Sort ascending`),sortDescending:E(`Sort descending`)}),Us=()=>E(`Names this task holds while it runs (claims)`),Ws=()=>E(`A deadline of its own (time_box)`),Gs=()=>E(`Custom column (row_extras)`);function Ks(e){if(e==null||e===``)return`—`;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return String(e);try{return JSON.stringify(e)??`—`}catch{return`—`}}function qs(e,t){let n=e;return t.filter(e=>n[e]!==null&&n[e]!==void 0&&n[e]!==``).map(e=>[e,Ks(n[e])])}function Js(e){switch(e){case`cost`:return E(`Cost`);case`tokens`:return E(`Tokens`);case`time`:return E(`Time`);case`sessions`:return E(`Agent sessions`)}}function Ys(e){switch(e){case`cost`:return E(`Reported by the coding agent`);case`tokens`:return E(`Input, output, cache read and cache write`);case`time`:return E(`Time of the agent sessions, summed`);case`sessions`:return E(`Agent sessions started on the model`)}}function Xs(e,t){switch(t){case`cost`:return e.cost_usd===null||e.cost_usd===void 0?`—`:Y(e.cost_usd);case`tokens`:return J(Ae(e));case`time`:return z(e.wall_s??0);case`sessions`:return String(e.sessions)}}function Zs(e){let t=100*e;return t>0&&t<.05?`<0.1%`:Math.abs(t)<10?Math.round(10*t)/10+`%`:`${Math.round(t)}%`}var Qs=e=>String(Math.round(100*e)/100);function $s(e){switch(e){case`usd`:return Y;case`pct`:return Zs;case`duration`:return z;case`tokens`:return J;default:return Qs}}function ec(e,t){return e==null||e===``?`—`:t===`datetime`&&typeof e==`string`?G(e,!0)||e:typeof e==`number`?$s(t)(e):typeof e==`boolean`?String(e):typeof e==`string`?e:JSON.stringify(e)}var tc=e=>E(T`Exported ${G(e.exported_at,!0)}`);function nc(e){return e===`transcripts`?E(`transcripts`):e===`processes`?E(`processes`):e}var rc=e=>E(T`Not in this export: ${Mo(e.left_out.map(nc))}`),ic=()=>E(`not in this export`),ac=()=>E(`Trends`),oc=()=>E(`Totals of the runs in a period`);function sc(e,t=jn()){let n=new Date(`${e}T12:00:00Z`);return Number.isNaN(n.getTime())?e:new Intl.DateTimeFormat(t,{month:`short`,day:`numeric`,timeZone:`UTC`}).format(n)}var cc=e=>E(T`${e} days`);function lc(e=jn()){let t=new Intl.DateTimeFormat(e,{weekday:`short`,timeZone:`UTC`});return Array.from({length:7},(e,n)=>t.format(new Date(Date.UTC(2026,9,12+n,12))))}var uc=()=>({runs:E(`Runs`,{id:`trends-runs`}),attempts:E(`Attempts`),done:E(`Done`),cost:E(`Cost`),tokens:E(`Tokens`),time:E(`Time`),costByDay:E(`Cost by day`),costByDayTip:E(`Reported by the coding agent, on the day each attempt ended`),kinds:E(`Kinds`),kind:E(`Kind`),group:E(`Group`),tasks:E(`Tasks`),tasksDone:E(`Tasks done`),partial:E(`Partly done`,{id:`trends-partial`}),medianTime:E(`Median time`),totalTime:E(`Total time`),models:E(`Models`),model:E(`Model`),sessions:E(`Agent sessions`),calls:E(`API calls`),input:E(`Input`),output:E(`Output`),cacheRead:E(`Cache read`),cacheWrite:E(`Cache write`),outcomes:E(`Attempts not done`),outcome:E(`Outcome`),denials:E(`Denied tool calls`),toolCalls:E(`Tool calls`),pythonKinds:E(`Python tasks`),tool:E(`Tool`),usage:E(`Subscription usage`),usageTip:E(`The highest reading of each day`),deferred:E(`Not run`),cause:E(`Cause`),task:E(`Task`),when:E(`When`),rests:E(`Paused identities`),identity:E(`Identity`),event:E(`Event`),starts:E(`Run starts`),startsTip:E(`By weekday and hour, in the period's time zone`),run:E(`Run`),started:E(`Started`),trendPanels:E(`Custom views`)}),dc=(e,t)=>`${e} | ${t}`,fc=e=>{let t=/^(\S+) rests\b/.exec(e)?.[1];return E(t?T`Identity ${t} paused`:`Identity paused`)},pc=(e,t)=>`${e} | ${t}`,mc=e=>e?E(T`Priority ${e}`):``,hc=()=>E(`Tie-breaker in the queue's order (priority)`),gc=()=>E(`Peak context`),_c=()=>E(`Largest input of one API call, cache read and cache write included (peak_context)`);function vc(e){let t=e.usage?.peak_context;return t==null?``:E(T`Peak context: ${function(e,t){let n=t?Math.round(100*e/t):null;return K(J(e),n===null?``:E(T`${n}% of the context limit ${J(t)}`))}(t,e.context_budget)}`)}function yc(e){let t=e.usage?.peak_context,n=e.context_budget;return E(t!=null&&n?T`near the context limit (${Math.round(100*t/n)}%)`:`near the context limit`)}var bc=()=>E(`Peak context above the warning threshold (context_warned)`),xc=(e,t)=>t?`${e} / ${t}`:e,Sc=e=>K(xc(e.agent,e.model),e.credential?E(T`identity ${ns(e.credential)}`):``,e.reason,e.kinds.length?E(T`kinds ${Mo(e.kinds)}`):``),Cc=e=>K(e.kind,`${xc(e.from_agent,e.from_model)} → ${xc(e.to_agent,e.to_model)}`),wc=()=>E(`No available model`),Tc=()=>E(`Must stay unchanged`),Ec=()=>E(`Parts of the output file kept as before the task (preserve)`);function Dc({url:e,failure:t,status:n,type:r}){let i=t===`network`?E(`network error, no response`):t===`status`?E(T`the response status is ${n}`):r.includes(`html`)?E(`the response is HTML, not JSON`):E(`the response is not JSON`);return E(T`No monitor API at ${e}: ${i}`)}function Oc(e,t){let n=q(e),r=w(e.reason,t).slice(0,110);if(e.stop===`invalid_input`)return[`attention`,E(T`${n}: not started`),r];if(ce(e))return[`failed`,E(T`${n}: ${Z(e.stop)}`),r];if(e.stop===`partial`)return[`attention`,E(T`${n}: ${Z(e.stop)}`),r];let i=ws(e.hops,e.wall_s,e.skipped_hops);return i?[`agent`,E(T`${n}: model switch`),i.slice(0,110)]:[`done`,E(T`${n}: done`),K(z(e.wall_s),e.model)]}R(`cae-segmented`,Ei);var kc={done:`✓`,failed:`✕`,attention:`◌`,running:`●`,agent:`✦`},Ac=class extends M{constructor(...e){super(...e),this.toasts=[],this.next=0}static{this.styles=[V,O` :host{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:8px;z-index:60;pointer-events:none;}.toast{pointer-events:auto;min-width:240px;max-width:380px;padding:10px 14px;border-radius:11px;background:var(--panel2);border:1px solid var(--line2);box-shadow:0 18px 40px color-mix(in srgb,var(--shadow) 60%,transparent);display:flex;gap:10px;align-items:flex-start;animation:toast-in 0.35s var(--ease) both;}.toast.out{animation:toast-out 0.35s var(--ease) both;}.ti{font-size:16px;line-height:1.2;}b{display:block;font-size:12.5px;}span.sub{font-size:11.5px;color:var(--text-muted);}.ti{color:var(--text-muted);}.toast[data-tone] .ti{color:var(--tone);}.toast[data-tone='failed'],.toast[data-tone='attention']{border-color:color-mix(in srgb,var(--tone) 50%,var(--line2));}.agent .ti{color:var(--agent);}`]}show(e,t,n=``){let r={id:this.next++,kind:e,title:t,sub:n,out:!1};this.toasts=[...this.toasts,r].slice(-4),setTimeout(()=>{this.toasts=this.toasts.map(e=>e.id===r.id?{...e,out:!0}:e),setTimeout(()=>this.toasts=this.toasts.filter(e=>e.id!==r.id),400)},5200)}render(){let e=e=>H(this.toasts.filter(t=>!t.out&&t.kind===`failed`===e),e=>e.id,e=>k`<p>${K(e.title,e.sub)}</p>`);return k`<div class="sr" role="status" aria-live="polite">${e(!1)}</div>
321
+ `);function Fs(e,t){return T(e===`seven_day`?w`Weekly usage ${Es(t)}`:w`5-hour usage ${Es(t)}`)}var Is=e=>e==null?`—`:`${Number(e.toFixed(2))}%`,Ls=e=>T(w`limit ${Is(e)}`);function Rs(e){return e.rule?T(w`Usage rule: ${e.rule}`):K(Fs(e.window??``,e.pct),Ls(e.cap),e.until?T(w`until ${G(e.until,!0)}`):``)}var zs=e=>K(T(w`Identity ${ws(e.credential)} paused`),Rs(e));function Bs(e){let t=new Set;return e.filter(e=>!t.has(e.credential)&&t.add(e.credential))}function Vs(e,t=``,n=``){let r=n?n.slice(n.lastIndexOf(`.`)+1):``;switch(e?.cause){case`deadline`:return T(r?w`Past the deadline of ${r}`:`Past the deadline`);case`grace_window`:return T(r?w`Past the deadline of ${r} and its finishing time`:`Past the deadline and its finishing time`);case`cannot_finish`:return K(T(r?w`Cannot finish before the deadline of ${r}`:`Cannot finish before the deadline`),e.need_s==null?``:T(w`needs ${z(e.need_s)}`),e.left_s==null?``:T(w`${z(e.left_s)} left`));case`dependency_not_queued`:return T(`An earlier task was never scheduled`);case`dependency_deferred`:return T(`An earlier task was not run`);case`rest`:{let n=Bs(e.rests??[]);return n.length?n.length===1?zs(n[0]):K(zs(n[0]),T(w`+${n.length-1} paused identities`)):t}default:return t}}var Hs=e=>T(w`${e.model||e.route||`—`} (identity paused)`);function Us(e){if(!e||e.five_hour_pct==null&&e.seven_day_pct==null)return``;let t=K(e.seven_day_pct==null?``:T(w`weekly ${Is(e.seven_day_pct)}`),e.five_hour_pct==null?``:T(w`5-hour ${Is(e.five_hour_pct)}`));return T(w`Limits: ${t}`)}var Ws=()=>T(`A new agent session on the next model after a failed one (Router hops)`),Gs=e=>e.model||e.route||`—`;function Ks(e,t,n){let r=[...new Map((n??[]).map(e=>[e.route||e.model,e])).values()];if(!e||e.length+r.length<2||!e.length)return``;let i=[...r.map(Hs),...e.map((t,n)=>n<e.length-1?T(w`${Gs(t)} (${Z(t.stop)})`):Gs(t))].join(` → `);return t==null?i:`${i} | ${z(t)}`}function qs(e){switch(e){case`valid`:return T(`passed`);case`invalid`:return T(`failed checks`);case`refused`:return T(`not written (task not started)`);case`failed`:return T(`not written (task failed)`);case`running`:return T(`not written yet (task running)`);case`pending`:return T(`not written yet (task waiting)`)}}function Js(e){return e===`failed`?T(`The task failed before it wrote a file that passes its checks`):``}var Ys=()=>T(`Another round in the same agent session after failed checks (rounds)`);function Xs(e,t){let n=(e??1)-1;return n<1?``:T(t?n===1?`after 1 correction`:w`after ${n} corrections`:n===1?`1 correction`:w`${n} corrections`)}function Zs(e,t,n){let r=e.errors??[],i=Be(`invalid input: ${r.map(e=>e.replace(/^invalid input:\s*/,``)).join(`; `)}`)[0];if(!i)return r[0]?Zo(C(r[0],t)):``;let a=n?.(i.path);return Zo(ps(C(i.path,t),i.problem,a))}var Qs=(e,t)=>e.ready?Re(e.journal):t.quota??[],$s=e=>T(w`Agent sessions played from the recordings in ${e} (replay)`),ec=e=>!!e?.replay&&!e.stub,tc=()=>T(`replayed`),nc=()=>T(`Played from a recording (replayed)`);function rc(e){return e?.replay&&ec(e)?{text:T(`replay and new sessions`),title:(t=e.replay,T(w`Agent sessions played from the recordings in ${t}, and new agent sessions recorded there (replay, record_missing)`))}:e?.replay?{text:T(`replay`),title:$s(e.replay)}:e?.stub?{text:T(`stub agent`),title:T(`Tasks played by the stub agent with scripted replies (stub)`)}:null;var t}var ic=()=>T(`no report from host`),ac=e=>e.up?T(`up`):T(`no report`),oc=e=>e?.last_seen?T(w`Last report ${G(e.last_seen,!0)}`):``,sc=e=>T(e?w`Host ${e}`:`No host id`),cc=e=>T(e===1?`1 run`:w`${e} runs`);function lc(e){let t=e.filter(e=>!e.up).length;return K(e.length===1?T(`1 host`):T(w`${e.length} hosts`),t?T(w`${t} with no report`):``)}var uc=e=>({empty:e,sortAscending:T(`Sort ascending`),sortDescending:T(`Sort descending`)}),dc=()=>T(`Names this task holds while it runs (claims)`);function fc(e){switch(e){case`running`:return T(`running`,{id:`service-running`});case`stopped`:return T(`stopped`);case`failed`:return T(`did not start`);default:return T(`stop not recorded`)}}var pc=()=>T(`A deadline of its own (time_box)`),mc=()=>T(`Custom column (row_extras)`);function hc(e){if(e==null||e===``)return`—`;if(typeof e==`string`)return e;if(typeof e==`number`||typeof e==`boolean`)return String(e);try{return JSON.stringify(e)??`—`}catch{return`—`}}function gc(e,t){let n=e;return t.filter(e=>n[e]!==null&&n[e]!==void 0&&n[e]!==``).map(e=>[e,hc(n[e])])}function _c(e){switch(e){case`cost`:return T(`Cost`);case`tokens`:return T(`Tokens`);case`time`:return T(`Time`);case`sessions`:return T(`Agent sessions`)}}function vc(e){switch(e){case`cost`:return T(`Reported by the coding agent`);case`tokens`:return T(`Input, output, cache read and cache write`);case`time`:return T(`Time of the agent sessions, summed`);case`sessions`:return T(`Agent sessions started on the model`)}}function yc(e,t){switch(t){case`cost`:return e.cost_usd===null||e.cost_usd===void 0?`—`:Y(e.cost_usd);case`tokens`:return J(je(e));case`time`:return z(e.wall_s??0);case`sessions`:return String(e.sessions)}}function bc(e){let t=100*e;return t>0&&t<.05?`<0.1%`:Math.abs(t)<10?Math.round(10*t)/10+`%`:`${Math.round(t)}%`}var xc=e=>String(Math.round(100*e)/100);function Sc(e){switch(e){case`usd`:return Y;case`pct`:return bc;case`duration`:return z;case`tokens`:return J;default:return xc}}function Cc(e,t){return e==null||e===``?`—`:t===`datetime`&&typeof e==`string`?G(e,!0)||e:typeof e==`number`?Sc(t)(e):typeof e==`boolean`?String(e):typeof e==`string`?e:JSON.stringify(e)}var wc=e=>T(w`Exported ${G(e.exported_at,!0)}`);function Tc(e){return e===`transcripts`?T(`transcripts`):e===`processes`?T(`processes`):e}var Ec=e=>T(w`Not in this export: ${es(e.left_out.map(Tc))}`),Dc=()=>T(`not in this export`),Oc=()=>T(`Trends`),kc=()=>T(`Totals of the runs in a period`);function Ac(e,t=F()){let n=new Date(`${e}T12:00:00Z`);return Number.isNaN(n.getTime())?e:new Intl.DateTimeFormat(t,{month:`short`,day:`numeric`,timeZone:`UTC`}).format(n)}var jc=e=>T(w`${e} days`);function Mc(e=F()){let t=new Intl.DateTimeFormat(e,{weekday:`short`,timeZone:`UTC`});return Array.from({length:7},(e,n)=>t.format(new Date(Date.UTC(2026,9,12+n,12))))}var Nc=()=>({runs:T(`Runs`,{id:`trends-runs`}),attempts:T(`Attempts`),done:T(`Done`),cost:T(`Cost`),tokens:T(`Tokens`),time:T(`Time`),costByDay:T(`Cost by day`),costByDayTip:T(`Reported by the coding agent, on the day each attempt ended`),kinds:T(`Kinds`),kind:T(`Kind`),group:T(`Group`),tasks:T(`Tasks`),tasksDone:T(`Tasks done`),partial:T(`Partly done`,{id:`trends-partial`}),medianTime:T(`Median time`),totalTime:T(`Total time`),models:T(`Models`),model:T(`Model`),sessions:T(`Agent sessions`),calls:T(`API calls`),input:T(`Input`),output:T(`Output`),cacheRead:T(`Cache read`),cacheWrite:T(`Cache write`),outcomes:T(`Attempts not done`),outcome:T(`Outcome`),denials:T(`Denied tool calls`),toolCalls:T(`Tool calls`),pythonKinds:T(`Python tasks`),tool:T(`Tool`),usage:T(`Subscription usage`),usageTip:T(`The highest reading of each day`),deferred:T(`Not run`),cause:T(`Cause`),task:T(`Task`),when:T(`When`),rests:T(`Paused identities`),identity:T(`Identity`),event:T(`Event`),starts:T(`Run starts`),startsTip:T(`By weekday and hour, in the period's time zone`),run:T(`Run`),started:T(`Started`),trendPanels:T(`Custom views`)}),Pc=(e,t)=>`${e} | ${t}`,Fc=e=>{let t=/^(\S+) rests\b/.exec(e)?.[1];return T(t?w`Identity ${t} paused`:`Identity paused`)},Ic=(e,t)=>`${e} | ${t}`,Lc=e=>e?T(w`Priority ${e}`):``,Rc=()=>T(`Tie-breaker in the queue's order (priority)`),zc=()=>T(`Peak context`),Bc=()=>T(`Largest input of one API call, cache read and cache write included (peak_context)`);function Vc(e){let t=e.usage?.peak_context;return t==null?``:T(w`Peak context: ${function(e,t){let n=t?Math.round(100*e/t):null;return K(J(e),n===null?``:T(w`${n}% of the context limit ${J(t)}`))}(t,e.context_budget)}`)}function Hc(e){let t=e.usage?.peak_context,n=e.context_budget;return T(t!=null&&n?w`near the context limit (${Math.round(100*t/n)}%)`:`near the context limit`)}var Uc=()=>T(`Peak context above the warning threshold (context_warned)`),Wc=(e,t)=>t?`${e} / ${t}`:e,Gc=e=>K(Wc(e.agent,e.model),e.credential?T(w`identity ${ws(e.credential)}`):``,e.reason,e.kinds.length?T(w`kinds ${es(e.kinds)}`):``),Kc=e=>K(e.kind,`${Wc(e.from_agent,e.from_model)} → ${Wc(e.to_agent,e.to_model)}`),qc=()=>T(`No available model`),Jc=()=>T(`Must stay unchanged`),Yc=()=>T(`Parts of the output file kept as before the task (preserve)`);function Xc({url:e,failure:t,status:n,type:r}){let i=t===`network`?T(`network error, no response`):t===`status`?T(w`the response status is ${n}`):r.includes(`html`)?T(`the response is HTML, not JSON`):T(`the response is not JSON`);return T(w`No monitor API at ${e}: ${i}`)}function Zc(e,t){let n=q(e),r=C(e.reason,t).slice(0,110);if(e.stop===`invalid_input`)return[`attention`,T(w`${n}: not started`),r];if(le(e))return[`failed`,T(w`${n}: ${Z(e.stop)}`),r];if(e.stop===`partial`)return[`attention`,T(w`${n}: ${Z(e.stop)}`),r];let i=Ks(e.hops,e.wall_s,e.skipped_hops);return i?[`agent`,T(w`${n}: model switch`),i.slice(0,110)]:[`done`,T(w`${n}: done`),K(z(e.wall_s),e.model)]}R(`cae-segmented`,Di);var Qc={done:`✓`,failed:`✕`,attention:`◌`,running:`●`,agent:`✦`},$c=class extends j{constructor(...e){super(...e),this.toasts=[],this.next=0}static{this.styles=[B,D` :host{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:8px;z-index:60;pointer-events:none;}.toast{pointer-events:auto;min-width:240px;max-width:380px;padding:10px 14px;border-radius:11px;background:var(--panel2);border:1px solid var(--line2);box-shadow:0 18px 40px color-mix(in srgb,var(--shadow) 60%,transparent);display:flex;gap:10px;align-items:flex-start;animation:toast-in 0.35s var(--ease) both;}.toast.out{animation:toast-out 0.35s var(--ease) both;}.ti{font-size:16px;line-height:1.2;}b{display:block;font-size:12.5px;}span.sub{font-size:11.5px;color:var(--text-muted);}.ti{color:var(--text-muted);}.toast[data-tone] .ti{color:var(--tone);}.toast[data-tone='failed'],.toast[data-tone='attention']{border-color:color-mix(in srgb,var(--tone) 50%,var(--line2));}.agent .ti{color:var(--agent);}`]}show(e,t,n=``){let r={id:this.next++,kind:e,title:t,sub:n,out:!1};this.toasts=[...this.toasts,r].slice(-4),setTimeout(()=>{this.toasts=this.toasts.map(e=>e.id===r.id?{...e,out:!0}:e),setTimeout(()=>this.toasts=this.toasts.filter(e=>e.id!==r.id),400)},5200)}render(){let e=e=>V(this.toasts.filter(t=>!t.out&&t.kind===`failed`===e),e=>e.id,e=>O`<p>${K(e.title,e.sub)}</p>`);return O`<div class="sr" role="status" aria-live="polite">${e(!1)}</div>
298
322
  <div class="sr" role="alert" aria-live="assertive">${e(!0)}</div>
299
323
  <div aria-hidden="true" style="display:contents">
300
- ${H(this.toasts,e=>e.id,e=>k`<div class="toast ${e.kind===`agent`?`agent`:``} ${e.out?`out`:``}" data-tone=${e.kind===`agent`?j:e.kind}>
301
- <span class="ti">${kc[e.kind]}</span>
302
- <div><b>${e.title}</b>${e.sub?k`<span class="sub">${e.sub}</span>`:j}</div>
324
+ ${V(this.toasts,e=>e.id,e=>O`<div class="toast ${e.kind===`agent`?`agent`:``} ${e.out?`out`:``}" data-tone=${e.kind===`agent`?A:e.kind}>
325
+ <span class="ti">${Qc[e.kind]}</span>
326
+ <div><b>${e.title}</b>${e.sub?O`<span class="sub">${e.sub}</span>`:A}</div>
303
327
  </div>`)}
304
- </div>`}};U([F()],Ac.prototype,`toasts`,void 0),Ac=U([N(`ca-toasts`)],Ac);var jc=O` :host{display:flex;flex-direction:column;height:100%;min-height:0;font:13px/1.5 var(--sans);color:var(--text);background:var(--backdrop);container:ca-monitor / inline-size;}header{flex:none;display:flex;gap:14px;align-items:center;padding:10px 18px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 75%,transparent);backdrop-filter:blur(10px);position:relative;z-index:20;}.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:15px;letter-spacing:0.02em;}.brand{flex:none;max-width:30cqi;white-space:nowrap;}.brand span{overflow:hidden;text-overflow:ellipsis;}.brand svg{width:22px;height:22px;flex:none;}.logo-braces{stroke:var(--text);}.spark-a{stop-color:var(--accent);}.spark-b{stop-color:var(--agent);}.logo-spark{transform-origin:60px 60px;}:host([live]) .logo-spark{animation:core-beat 1.8s var(--ease) infinite;}.runbtn{display:flex;align-items:center;gap:10px;min-width:min(150px,100%);max-width:52cqi;cursor:pointer;padding:6px 13px;border-radius:999px;background:var(--panel);border:1px solid var(--line);color:var(--text);transition:border-color 0.2s,background 0.2s;}.runbtn:hover{border-color:var(--line2);background:var(--panel2);}.rn{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:40%;}.rs{color:var(--text-muted);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.chev{color:var(--text-muted);}.hostchip{flex:none;font-family:var(--mono);font-size:11px;color:var(--text-2);padding:0 7px;border:1px solid var(--line2);border-radius:999px;white-space:nowrap;max-width:24ch;overflow:hidden;text-overflow:ellipsis;}.runbtn .pill{flex:none;font-size:11px;}ca-run-picker{inset-inline-start:110px;}.hdr-right{margin-left:auto;display:flex;align-items:center;gap:12px;flex:none;white-space:nowrap;}.nowline{font-size:12px;color:var(--text-2);white-space:nowrap;overflow:hidden;max-width:40cqi;display:inline-flex;align-items:center;gap:4px;}.clock{font-family:var(--mono);font-size:11.5px;color:var(--text-muted);}.langs{--cae-segmented-radius:999px;--cae-segmented-height:auto;--cae-segmented-padding:2px 9px;--cae-segmented-font-size:11px;--cae-segmented-divider:0;--cae-segmented-hover:var(--text-2);}.live-dot{width:9px;height:9px;border-radius:50%;background:var(--status-running);display:inline-block;animation:breathe 1.8s ease-in-out infinite;}.live-dot.off{background:var(--line2);animation:none;box-shadow:none;}.bar{flex:none;display:flex;gap:8px;padding:8px 18px;border-top:1px solid var(--line);align-items:center;flex-wrap:wrap;}.bar select,.bar input{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:5px 9px;outline:none;font:inherit;font-size:12px;}.bar input:focus,.bar select:focus{border-color:var(--focus);box-shadow:0 0 0 calc(var(--focus-width) - 2px) var(--focus);}.api-error{flex:none;margin:0;padding:8px 18px;color:var(--status-failed);font:12px var(--mono);overflow-wrap:anywhere;}.api-error:empty{padding:0;}main{border-top:1px solid var(--line);flex:1 1 auto;min-height:0;overflow:auto;padding:16px 18px 48px;}main.stream{display:flex;flex-direction:column;overflow:hidden;padding-bottom:16px;}@container ca-monitor (max-width:1000px){header{flex-wrap:wrap;row-gap:8px;}}@container ca-monitor (max-width:760px){header{gap:8px;padding:8px 12px;}.runbtn{flex:1 1 0;min-width:0;max-width:none;}ca-run-picker{inset-inline:16px;width:auto;}.hdr-right{width:100%;margin-left:0;flex-wrap:wrap;row-gap:6px;}.nowline{max-width:none;flex:1 1 100%;}main{padding:12px 12px 40px;}.bar{padding:8px 12px;}.bar input{flex:1 1 10em;min-width:0;}}@container ca-monitor (max-width:420px){.brand{max-width:40cqi;}.runbtn{padding:6px 10px;gap:8px;}}`;function Mc(e){return[...[{id:`overview`,label:E(`Overview`),icon:`◎`},{id:`tasks`,label:E(`Tasks`,{id:`tab-tasks`}),icon:`≡`},{id:`journal`,label:E(`History`),icon:`▤`,tip:`journal.jsonl`},{id:`outputs`,label:E(`Outputs`),icon:`▣`},{id:`definitions`,label:E(`Definitions`),icon:`⌘`},{id:`procs`,label:E(`Processes`),icon:`⚙`},{id:`stream`,label:E(`Task detail`),icon:`✦`}].map(e=>({...e,panel:!1})),...e.filter(ge).map(e=>({id:`panel:${e.name}`,label:e.title||e.name,icon:e.icon||`▤`,tip:e.description?E(T`${e.description} (custom view)`):E(`Custom view`),panel:!0}))]}var Nc=e=>`tab-${e}`;function Pc(e){let t=e.querySelector(`.tab.sel`),n=e.querySelector(`.tab-ind`);if(!t||!n)return;n.style.left=`${t.offsetLeft+10}px`,n.style.width=`${Math.max(12,t.offsetWidth-20)}px`,n.classList.contains(`init`)&&requestAnimationFrame(()=>n.classList.remove(`init`));let r=n.parentElement;r&&n.dataset.tab!==t.id&&(n.dataset.tab=t.id,t.offsetLeft-24<r.scrollLeft?r.scrollLeft=Math.max(0,t.offsetLeft-24):t.offsetLeft+t.offsetWidth+24>r.scrollLeft+r.clientWidth&&(r.scrollLeft=t.offsetLeft+t.offsetWidth+24-r.clientWidth))}var Fc=O` nav{flex:none;display:flex;gap:2px;padding:6px 18px 0;position:relative;overflow-x:auto;scrollbar-width:none;align-items:center;--shade:color-mix(in srgb,var(--text) 22%,transparent);background:linear-gradient(to right,var(--backdrop) 40%,transparent) left / 32px 100% no-repeat local,linear-gradient(to left,var(--backdrop) 40%,transparent) right / 32px 100% no-repeat local,radial-gradient(farthest-side at 0 50%,var(--shade),transparent) left / 12px 100% no-repeat scroll,radial-gradient(farthest-side at 100% 50%,var(--shade),transparent) right / 12px 100% no-repeat scroll;}nav::-webkit-scrollbar{display:none;}.tabs{flex:none;display:flex;gap:2px;align-items:center;}.tab{position:relative;background:none;border:none;padding:8px 14px 11px;color:var(--text-muted);cursor:pointer;font-weight:500;white-space:nowrap;transition:color 0.2s;}.tab:hover{color:var(--text-2);}.tab.sel{color:var(--text);font-weight:600;}.tab-label{display:inline-flex;flex-direction:column;}.tab-label::after{content:attr(data-label);font-weight:600;height:0;overflow:hidden;visibility:hidden;}.tab-ic{opacity:0.55;margin-right:6px;font-size:12px;}.tab.sel .tab-ic{opacity:1;color:var(--accent);}.badge{margin-left:6px;font-size:10px;font-weight:500;padding:0 6px;border-radius:999px;background:var(--raise);color:var(--text-2);font-variant-numeric:tabular-nums;}.badge[data-tone]{background:var(--tone-bg);color:var(--tone);}.tab-sep{width:1px;height:18px;background:var(--line2);margin:0 8px 3px;flex:none;align-self:center;}.tab-ind{position:absolute;bottom:0;left:0;width:0;height:2px;border-radius:2px;background:var(--accent);transition:left 0.3s var(--ease),width 0.3s var(--ease);}.tab-ind.init{transition:none;}.tabhint{margin-left:auto;padding-left:12px;white-space:nowrap;}@container ca-monitor (max-width:900px){.tabhint{display:none;}}@container ca-monitor (max-width:760px){nav{padding:4px 8px 0;}.tab{padding:8px 10px 11px;}}`;function Q(e,t,n,{bubbles:r=!0}={}){e.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:r,composed:!0}))}function Ic(e,t,n){return n.key?k`<button type="button" class="taskchip" title=${n.key} @click=${t=>{t.stopPropagation(),Q(e,`ca-open-task`,{key:n.key,...C(n)?{view:`output`}:{}})}}>${t}</button>`:k`<span class="taskchip">${t}</span>`}function Lc(e,t){return e.startsWith(`list[`)||e===`array`?Array.isArray(t):e===`string`?typeof t==`string`:e===`integer`?Number.isInteger(t):e===`number`?typeof t==`number`:e===`boolean`?typeof t==`boolean`:e!==`object`||typeof t==`object`&&!!t&&!Array.isArray(t)}R(`cae-check-table`,Aa);var Rc=e=>/^RootModel\[(.+)\]$/.exec(e)?.[1]??null;function zc(e){let t=e.file.content;return e.file.exists&&typeof t==`object`&&t&&!Array.isArray(t)?t:null}function Bc(e){if(!e.fields.length&&(e.schema_name===`text`||Rc(e.schema_name)!==null))return null;let t=zc(e),n=e.fields.map(e=>{let n={name:e.name,expected:e.type,optional:!e.required};if(!t)return{...n,hasValue:!1,verdict:`none`,verdictLabel:``};if(!(e.name in t))return e.required?{...n,hasValue:!1,verdict:`fail`,verdictLabel:E(`missing`),tip:E(`A required field that is not in the file`)}:{...n,hasValue:!1,verdict:`none`,verdictLabel:E(`absent (optional)`)};let r=t[e.name];return Lc(e.type,r)?{...n,hasValue:!0,value:r,verdict:`pass`,verdictLabel:E(`passed`)}:{...n,hasValue:!0,value:r,verdict:`fail`,verdictLabel:E(`wrong type`),tip:E(T`Expected ${e.type}`)}}),r=t?Object.keys(t).filter(t=>!e.fields.some(e=>e.name===t)):[];return[...n,...r.map(e=>({name:e,expected:E(`not in the schema`),extra:!0,hasValue:!0,value:t?.[e],verdict:`warn`,verdictLabel:E(`extra field`),tip:E(`Not in the schema`)}))]}function Vc(){return{name:E(`Field`),expected:E(`Expected`),actual:E(`In the file`),verdict:E(`Check`),optional:E(`optional`),items:e=>E(e===1?`1 item`:T`${e} items`),object:E(`object`)}}function Hc(e){let t=!!e.file.exists;return $r(`ct-chip`,{text:t?E(`found`):e.required?E(`missing (required)`):E(`missing (optional)`),tone:t?`done`:e.required?`failed`:`muted`})}function Uc(e,t){return $r(`ct-chip`,e?{text:t===void 0?Ts(e):k`${Ts(e)} <b>${t}</b>`,tone:Uo(e),title:Es(e)}:{text:`—`})}function Wc(e){let t=e.file,n=Bc(e),r=k`<details class="ct-raw">
305
- <summary>${Gc(t)}</summary>
306
- ${function(e){let t=e.content;return typeof t==`object`&&t?k`<cae-json-tree .value=${t}></cae-json-tree>`:k`<pre class="jtree">${typeof t==`string`?t:E(`Not JSON`)}</pre>`}(t)}
307
- </details>`;return n?t.exists?k`<cae-check-table .rows=${n} .strings=${Vc()}></cae-check-table>
308
- ${zc(e)?j:k`<div class="meta note">${E(`Not a JSON object`)}</div>`}
309
- ${r}`:n.length?k`<cae-check-table .rows=${n} .showValues=${!1} .strings=${Vc()}></cae-check-table>`:k``:t.exists?r:k``}R(`cae-json-tree`,Di);var Gc=e=>K(E(`Whole file`),`${e.size??0} B`,e.mtime?E(T`written ${G(e.mtime,!0)}`):``,e.truncated?E(`truncated`):``);function Kc(e){let t=e.schema_ref||e.schema_name;if(e.schema_name===`text`)return E(`text file`);let n=Rc(e.schema_name);return n===`str`?k`<span title=${t}>${E(`text (JSON string)`)}</span>`:n?k`<span title=${t}>${E(T`JSON value of type ${n}`)}</span>`:E(k`JSON object, schema ${function(e){let t=Rc(e.schema_name),n=e.schema_name===`text`||t===`str`?E(`text`):t??e.schema_name;return k`<b class="jmono" title=${e.schema_ref||e.schema_name}>${n}</b>`}(e)}`)}function qc(e,t){let n=Kc(e),r=function(e){let t=e.validators??[];if(!t.length)return null;let n=(e.errors??[]).join(`
310
- `);return k`${t.map((t,r)=>k`${r?`, `:``}<span class="jmono">${t}</span> ${(t=>e.status===`valid`?Oa(`pass`,E(`passed`)):n.includes(t)?Oa(`fail`,E(`failed checks`)):j)(t)}`)}`}(e);return k`<dl class="conds">
311
- ${(t===`output`?[[E(`Format`),n],...r?[[E(`Other checks`),r,E(`Checks beyond the schema (validators)`)]]:[],[E(`Must be written during the task`),e.fresh?E(`yes`):E(`no`),e.fresh?E(`A file from before the task does not count`):E(`A file from before the task counts`)],...e.preserve?.length?[[Tc(),k`<span class="jmono">${e.preserve.join(`, `)}</span>`,Ec()]]:[]]:[[E(`Format`),n],...r?[[E(`Other checks`),r,E(`Checks beyond the schema (validators)`)]]:[],[E(`Check time`),E(`when the task starts`)],[E(`Required`),e.required?E(`yes`):E(`no`)]]).map(([e,t,n])=>k`<dt>${e}</dt><dd title=${n??``}>${t}</dd>`)}
312
- </dl>`}var Jc=O` .ct-chip{display:inline-block;padding:1px 10px;border-radius:var(--radius-pill);font-size:11.5px;background:var(--raise);color:var(--text-2);white-space:nowrap;}.ct-chip b{margin-left:4px;}.ct-chip[data-tone]{background:var(--tone-bg);color:var(--tone);}.ct-chip[data-tone='done']{background:none;box-shadow:inset 0 0 0 1px var(--line2);color:var(--text-2);}`,Yc=O` ${Jc} ${Ea} .ct-path{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.ct-lead{margin:2px 0 8px;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 6px;}.conds{display:grid;grid-template-columns:fit-content(50%) minmax(0,1fr);gap:2px 14px;margin:2px 0 10px;font-size:12px;}.conds dt{color:var(--text-muted);overflow-wrap:anywhere;}.conds dd{margin:0;color:var(--text-2);min-width:0;overflow-wrap:anywhere;}.note{margin-top:6px;}.ct-raw{margin-top:8px;}.ct-raw>summary{cursor:pointer;color:var(--text-muted);font-size:12px;}.ct-err{color:var(--status-failed);white-space:pre-wrap;}.ct-fields{border-collapse:collapse;width:100%;}.ct-fields td{padding:2px 10px 2px 0;border:0;font-size:12px;}.ct-in{display:flex;align-items:center;gap:10px;padding:5px 4px;border-top:1px solid var(--line);}h4{margin:8px 0 6px;font-size:12px;color:var(--text-2);font-weight:600;}.io-card{border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin-bottom:10px;background:var(--raise);}.io-hd{display:flex;align-items:center;gap:10px;margin-bottom:6px;}.io-from{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin:-2px 0 8px;}.io-hd .ct-path{flex:1;}.io-card.one .io-hd{margin-bottom:2px;}`;R(`cae-count`,Hi),R(`cae-elapsed`,Ui);var Xc=class extends M{constructor(...e){super(...e),this.procs=null}static{this.styles=[V,O` :host{display:block;}.ptree2{font-family:var(--mono);font-size:11.5px;max-height:220px;overflow:auto;}.pt-n{display:flex;gap:10px;align-items:center;padding:3px 6px 3px calc(6px + var(--d) * 18px);border-radius:6px;position:relative;}.pt-n:hover{background:color-mix(in srgb,var(--text) 4%,transparent);}.pt-n::before{content:'';position:absolute;left:calc(var(--d) * 18px - 8px);top:0;bottom:50%;width:8px;border-left:1px solid var(--line2);border-bottom:1px solid var(--line2);}.pt-n.root::before{display:none;}.pt-pid{color:var(--text-muted);min-width:58px;}.pt-cmd{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;color:var(--text-2);}.pt-n.llm .pt-cmd{color:var(--text);}.pt-n.llm .pt-pid{box-shadow:inset 2px 0 0 color-mix(in srgb,var(--agent) 70%,transparent);padding-left:6px;}.pt-age{color:var(--text-muted);}`]}render(){let e=this.procs?.tree[0];return e?k`<div class="ptree2">${this.node(e,0)}</div>`:k`<div class="meta">${E(`No running processes`)}</div>`}node(e,t){let n=e.full_cmd||e.cmd||``,r=(e.cmd||n).split(` `).slice(0,3).join(` `);return k`<div class="pt-n ${/\b(claude|omp)\b/.test(n)?`llm`:``} ${t?``:`root`}" style="--d:${t}" title=${n}>
328
+ </div>`}};H([P()],$c.prototype,`toasts`,void 0),$c=H([M(`ca-toasts`)],$c);var el=D` :host{display:flex;flex-direction:column;height:100%;min-height:0;font:13px/1.5 var(--sans);color:var(--text);background:var(--backdrop);container:ca-monitor / inline-size;}header{flex:none;display:flex;gap:14px;align-items:center;padding:10px 18px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 75%,transparent);backdrop-filter:blur(10px);position:relative;z-index:20;}.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:15px;letter-spacing:0.02em;}.brand{flex:none;max-width:30cqi;white-space:nowrap;}.brand span{overflow:hidden;text-overflow:ellipsis;}.brand svg{width:22px;height:22px;flex:none;}.logo-braces{stroke:var(--text);}.spark-a{stop-color:var(--accent);}.spark-b{stop-color:var(--agent);}.logo-spark{transform-origin:60px 60px;}:host([live]) .logo-spark{animation:core-beat 1.8s var(--ease) infinite;}.runbtn{display:flex;align-items:center;gap:10px;min-width:min(150px,100%);max-width:52cqi;cursor:pointer;padding:6px 13px;border-radius:999px;background:var(--panel);border:1px solid var(--line);color:var(--text);transition:border-color 0.2s,background 0.2s;}.runbtn:hover{border-color:var(--line2);background:var(--panel2);}.rn{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:40%;}.rs{color:var(--text-muted);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.chev{color:var(--text-muted);}.hostchip{flex:none;font-family:var(--mono);font-size:11px;color:var(--text-2);padding:0 7px;border:1px solid var(--line2);border-radius:999px;white-space:nowrap;max-width:24ch;overflow:hidden;text-overflow:ellipsis;}.runbtn .pill{flex:none;font-size:11px;}ca-run-picker{inset-inline-start:110px;}.hdr-right{margin-left:auto;display:flex;align-items:center;gap:12px;flex:none;white-space:nowrap;}.nowline{font-size:12px;color:var(--text-2);white-space:nowrap;overflow:hidden;max-width:40cqi;display:inline-flex;align-items:center;gap:4px;}.clock{font-family:var(--mono);font-size:11.5px;color:var(--text-muted);}.langs{--cae-segmented-radius:999px;--cae-segmented-height:auto;--cae-segmented-padding:2px 9px;--cae-segmented-font-size:11px;--cae-segmented-divider:0;--cae-segmented-hover:var(--text-2);}.live-dot{width:9px;height:9px;border-radius:50%;background:var(--status-running);display:inline-block;animation:breathe 1.8s ease-in-out infinite;}.live-dot.off{background:var(--line2);animation:none;box-shadow:none;}.bar{flex:none;display:flex;gap:8px;padding:8px 18px;border-top:1px solid var(--line);align-items:center;flex-wrap:wrap;}.bar select,.bar input{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:5px 9px;outline:none;font:inherit;font-size:12px;}.bar input:focus,.bar select:focus{border-color:var(--focus);box-shadow:0 0 0 calc(var(--focus-width) - 2px) var(--focus);}.api-error{flex:none;margin:0;padding:8px 18px;color:var(--status-failed);font:12px var(--mono);overflow-wrap:anywhere;}.api-error:empty{padding:0;}main{border-top:1px solid var(--line);flex:1 1 auto;min-height:0;overflow:auto;padding:16px 18px 48px;}main.stream{display:flex;flex-direction:column;overflow:hidden;padding-bottom:16px;}@container ca-monitor (max-width:1000px){header{flex-wrap:wrap;row-gap:8px;}}@container ca-monitor (max-width:760px){header{gap:8px;padding:8px 12px;}.runbtn{flex:1 1 0;min-width:0;max-width:none;}ca-run-picker{inset-inline:16px;width:auto;}.hdr-right{width:100%;margin-left:0;flex-wrap:wrap;row-gap:6px;}.nowline{max-width:none;flex:1 1 100%;}main{padding:12px 12px 40px;}.bar{padding:8px 12px;}.bar input{flex:1 1 10em;min-width:0;}}@container ca-monitor (max-width:420px){.brand{max-width:40cqi;}.runbtn{padding:6px 10px;gap:8px;}}`;function tl(e){return[...[{id:`overview`,label:T(`Overview`),icon:`◎`},{id:`tasks`,label:T(`Tasks`,{id:`tab-tasks`}),icon:`≡`},{id:`journal`,label:T(`History`),icon:`▤`,tip:`journal.jsonl`},{id:`outputs`,label:T(`Outputs`),icon:`▣`},{id:`definitions`,label:T(`Definitions`),icon:`⌘`},{id:`procs`,label:T(`Processes`),icon:`⚙`},{id:`stream`,label:T(`Task detail`),icon:`✦`}].map(e=>({...e,panel:!1})),...e.filter(_e).map(e=>({id:`panel:${e.name}`,label:e.title||e.name,icon:e.icon||`▤`,tip:e.description?T(w`${e.description} (custom view)`):T(`Custom view`),panel:!0}))]}var nl=e=>`tab-${e}`;function rl(e){let t=e.querySelector(`.tab.sel`),n=e.querySelector(`.tab-ind`);if(!t||!n)return;n.style.left=`${t.offsetLeft+10}px`,n.style.width=`${Math.max(12,t.offsetWidth-20)}px`,n.classList.contains(`init`)&&requestAnimationFrame(()=>n.classList.remove(`init`));let r=n.parentElement;r&&n.dataset.tab!==t.id&&(n.dataset.tab=t.id,t.offsetLeft-24<r.scrollLeft?r.scrollLeft=Math.max(0,t.offsetLeft-24):t.offsetLeft+t.offsetWidth+24>r.scrollLeft+r.clientWidth&&(r.scrollLeft=t.offsetLeft+t.offsetWidth+24-r.clientWidth))}var il=D` nav{flex:none;display:flex;gap:2px;padding:6px 18px 0;position:relative;overflow-x:auto;scrollbar-width:none;align-items:center;--shade:color-mix(in srgb,var(--text) 22%,transparent);background:linear-gradient(to right,var(--backdrop) 40%,transparent) left / 32px 100% no-repeat local,linear-gradient(to left,var(--backdrop) 40%,transparent) right / 32px 100% no-repeat local,radial-gradient(farthest-side at 0 50%,var(--shade),transparent) left / 12px 100% no-repeat scroll,radial-gradient(farthest-side at 100% 50%,var(--shade),transparent) right / 12px 100% no-repeat scroll;}nav::-webkit-scrollbar{display:none;}.tabs{flex:none;display:flex;gap:2px;align-items:center;}.tab{position:relative;background:none;border:none;padding:8px 14px 11px;color:var(--text-muted);cursor:pointer;font-weight:500;white-space:nowrap;transition:color 0.2s;}.tab:hover{color:var(--text-2);}.tab.sel{color:var(--text);font-weight:600;}.tab-label{display:inline-flex;flex-direction:column;}.tab-label::after{content:attr(data-label);font-weight:600;height:0;overflow:hidden;visibility:hidden;}.tab-ic{opacity:0.55;margin-right:6px;font-size:12px;}.tab.sel .tab-ic{opacity:1;color:var(--accent);}.badge{margin-left:6px;font-size:10px;font-weight:500;padding:0 6px;border-radius:999px;background:var(--raise);color:var(--text-2);font-variant-numeric:tabular-nums;}.badge[data-tone]{background:var(--tone-bg);color:var(--tone);}.tab-sep{width:1px;height:18px;background:var(--line2);margin:0 8px 3px;flex:none;align-self:center;}.tab-ind{position:absolute;bottom:0;left:0;width:0;height:2px;border-radius:2px;background:var(--accent);transition:left 0.3s var(--ease),width 0.3s var(--ease);}.tab-ind.init{transition:none;}.tabhint{margin-left:auto;padding-left:12px;white-space:nowrap;}@container ca-monitor (max-width:900px){.tabhint{display:none;}}@container ca-monitor (max-width:760px){nav{padding:4px 8px 0;}.tab{padding:8px 10px 11px;}}`;function Q(e,t,n,{bubbles:r=!0}={}){e.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:r,composed:!0}))}function al(e,t,n){return n.key?O`<button type="button" class="taskchip" title=${n.key} @click=${t=>{t.stopPropagation(),Q(e,`ca-open-task`,{key:n.key,...S(n)?{view:`output`}:{}})}}>${t}</button>`:O`<span class="taskchip">${t}</span>`}function ol(e,t){return e.startsWith(`list[`)||e===`array`?Array.isArray(t):e===`string`?typeof t==`string`:e===`integer`?Number.isInteger(t):e===`number`?typeof t==`number`:e===`boolean`?typeof t==`boolean`:e!==`object`||typeof t==`object`&&!!t&&!Array.isArray(t)}R(`cae-check-table`,Qa);var sl=e=>/^RootModel\[(.+)\]$/.exec(e)?.[1]??null,cl=e=>/^Rows\[(.+)\]$/.exec(e)?.[1]??null;function ll(e){let t=e.file.content;return e.file.exists&&typeof t==`object`&&t&&!Array.isArray(t)?t:null}function ul(e){if(!e.fields.length&&(e.schema_name===`text`||sl(e.schema_name)!==null))return null;let t=ll(e),n=e.fields.map(e=>{let n={name:e.name,expected:e.type,optional:!e.required};if(!t)return{...n,hasValue:!1,verdict:`none`,verdictLabel:``};if(!(e.name in t))return e.required?{...n,hasValue:!1,verdict:`fail`,verdictLabel:T(`missing`),tip:T(`A required field that is not in the file`)}:{...n,hasValue:!1,verdict:`none`,verdictLabel:T(`absent (optional)`)};let r=t[e.name];return ol(e.type,r)?{...n,hasValue:!0,value:r,verdict:`pass`,verdictLabel:T(`passed`)}:{...n,hasValue:!0,value:r,verdict:`fail`,verdictLabel:T(`wrong type`),tip:T(w`Expected ${e.type}`)}}),r=t?Object.keys(t).filter(t=>!e.fields.some(e=>e.name===t)):[];return[...n,...r.map(e=>({name:e,expected:T(`not in the schema`),extra:!0,hasValue:!0,value:t?.[e],verdict:`warn`,verdictLabel:T(`extra field`),tip:T(`Not in the schema`)}))]}function dl(){return{name:T(`Field`),expected:T(`Expected`),actual:T(`In the file`),verdict:T(`Check`),optional:T(`optional`),items:e=>T(e===1?`1 item`:w`${e} items`),object:T(`object`)}}function fl(e){let t=!!e.file.exists;return ei(`ct-chip`,{text:t?T(`found`):e.required?T(`missing (required)`):T(`missing (optional)`),tone:t?`done`:e.required?`failed`:`muted`})}function pl(e,t){return ei(`ct-chip`,e?{text:t===void 0?qs(e):O`${qs(e)} <b>${t}</b>`,tone:ds(e),title:Js(e)}:{text:`—`})}function ml(e){let t=e.content;return typeof t==`object`&&t?O`<cae-json-tree .value=${t}></cae-json-tree>`:O`<pre class="jtree">${typeof t==`string`?t:T(`Not JSON`)}</pre>`}function hl(e){let t=e.file,n=ul(e),r=O`<details class="ct-raw">
329
+ <summary>${gl(t)}</summary>
330
+ ${ml(t)}
331
+ </details>`;if(!n)return t.exists?r:O``;if(e.format===`jsonl`){let e=O`<details class="ct-raw">
332
+ <summary>${K(function(e){let t=Array.isArray(e.content)?e.content.length:0;return T(t===1?`1 row`:w`${t} rows`)}(t),`${t.size??0} B`,t.mtime?T(w`written ${G(t.mtime,!0)}`):``,t.truncated?T(`truncated`):``)}</summary>
333
+ ${ml(t)}
334
+ </details>`;return O`<cae-check-table .rows=${n} .showValues=${!1} .strings=${dl()}></cae-check-table>
335
+ ${t.exists?e:A}`}return t.exists?O`<cae-check-table .rows=${n} .strings=${dl()}></cae-check-table>
336
+ ${ll(e)?A:O`<div class="meta note">${T(`Not a JSON object`)}</div>`}
337
+ ${r}`:n.length?O`<cae-check-table .rows=${n} .showValues=${!1} .strings=${dl()}></cae-check-table>`:O``}R(`cae-json-tree`,Oi);var gl=e=>K(T(`Whole file`),`${e.size??0} B`,e.mtime?T(w`written ${G(e.mtime,!0)}`):``,e.truncated?T(`truncated`):``);function _l(e){let t=sl(e.schema_name),n=e.schema_name===`text`||t===`str`?T(`text`):t??cl(e.schema_name)??e.schema_name;return O`<b class="jmono" title=${e.schema_ref||e.schema_name}>${n}</b>`}function vl(e){let t=e.schema_ref||e.schema_name;if(e.schema_name===`text`)return T(`text file`);if(e.format===`jsonl`)return T(O`JSON Lines, one object of schema ${_l(e)} per line`);let n=sl(e.schema_name);return n===`str`?O`<span title=${t}>${T(`text (JSON string)`)}</span>`:n?O`<span title=${t}>${T(w`JSON value of type ${n}`)}</span>`:T(O`JSON object, schema ${_l(e)}`)}function yl(e,t){let n=vl(e),r=function(e){let t=e.validators??[];if(!t.length)return null;let n=(e.errors??[]).join(`
338
+ `);return O`${t.map((t,r)=>O`${r?`, `:``}<span class="jmono">${t}</span> ${(t=>e.status===`valid`?Xa(`pass`,T(`passed`)):n.includes(t)?Xa(`fail`,T(`failed checks`)):A)(t)}`)}`}(e);return O`<dl class="conds">
339
+ ${(t===`output`?[[T(`Format`),n],...r?[[T(`Other checks`),r,T(`Checks beyond the schema (validators)`)]]:[],[T(`Must be written during the task`),e.fresh?T(`yes`):T(`no`),e.fresh?T(`A file from before the task does not count`):T(`A file from before the task counts`)],...e.preserve?.length?[[Jc(),O`<span class="jmono">${e.preserve.join(`, `)}</span>`,Yc()]]:[]]:[[T(`Format`),n],...r?[[T(`Other checks`),r,T(`Checks beyond the schema (validators)`)]]:[],[T(`Check time`),T(`when the task starts`)],[T(`Required`),e.required?T(`yes`):T(`no`)]]).map(([e,t,n])=>O`<dt>${e}</dt><dd title=${n??``}>${t}</dd>`)}
340
+ </dl>`}var bl=D` .ct-chip{display:inline-block;padding:1px 10px;border-radius:var(--radius-pill);font-size:11.5px;background:var(--raise);color:var(--text-2);white-space:nowrap;}.ct-chip b{margin-left:4px;}.ct-chip[data-tone]{background:var(--tone-bg);color:var(--tone);}.ct-chip[data-tone='done']{background:none;box-shadow:inset 0 0 0 1px var(--line2);color:var(--text-2);}`,xl=D` ${bl} ${Ja} .ct-path{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.ct-lead{margin:2px 0 8px;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 6px;}.conds{display:grid;grid-template-columns:fit-content(50%) minmax(0,1fr);gap:2px 14px;margin:2px 0 10px;font-size:12px;}.conds dt{color:var(--text-muted);overflow-wrap:anywhere;}.conds dd{margin:0;color:var(--text-2);min-width:0;overflow-wrap:anywhere;}.note{margin-top:6px;}.ct-raw{margin-top:8px;}.ct-raw>summary{cursor:pointer;color:var(--text-muted);font-size:12px;}.ct-err{color:var(--status-failed);white-space:pre-wrap;}.ct-fields{border-collapse:collapse;width:100%;}.ct-fields td{padding:2px 10px 2px 0;border:0;font-size:12px;}.ct-in{display:flex;align-items:center;gap:10px;padding:5px 4px;border-top:1px solid var(--line);}h4{margin:8px 0 6px;font-size:12px;color:var(--text-2);font-weight:600;}.io-card{border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin-bottom:10px;background:var(--raise);}.io-hd{display:flex;align-items:center;gap:10px;margin-bottom:6px;}.io-from{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin:-2px 0 8px;}.io-hd .ct-path{flex:1;}.io-card.one .io-hd{margin-bottom:2px;}`;R(`cae-count`,ua),R(`cae-elapsed`,da);var Sl=class extends j{constructor(...e){super(...e),this.procs=null}static{this.styles=[B,D` :host{display:block;}.ptree2{font-family:var(--mono);font-size:11.5px;max-height:220px;overflow:auto;}.pt-n{display:flex;gap:10px;align-items:center;padding:3px 6px 3px calc(6px + var(--d) * 18px);border-radius:6px;position:relative;}.pt-n:hover{background:color-mix(in srgb,var(--text) 4%,transparent);}.pt-n::before{content:'';position:absolute;left:calc(var(--d) * 18px - 8px);top:0;bottom:50%;width:8px;border-left:1px solid var(--line2);border-bottom:1px solid var(--line2);}.pt-n.root::before{display:none;}.pt-pid{color:var(--text-muted);min-width:58px;}.pt-cmd{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;color:var(--text-2);}.pt-n.llm .pt-cmd{color:var(--text);}.pt-n.llm .pt-pid{box-shadow:inset 2px 0 0 color-mix(in srgb,var(--agent) 70%,transparent);padding-left:6px;}.pt-age{color:var(--text-muted);}`]}render(){let e=this.procs?.tree[0];return e?O`<div class="ptree2">${this.node(e,0)}</div>`:O`<div class="meta">${T(`No running processes`)}</div>`}node(e,t){let n=e.full_cmd||e.cmd||``,r=(e.cmd||n).split(` `).slice(0,3).join(` `);return O`<div class="pt-n ${/\b(claude|omp)\b/.test(n)?`llm`:``} ${t?``:`root`}" style="--d:${t}" title=${n}>
313
341
  <span class="pt-pid">${e.pid}</span>
314
- <span class="pt-cmd">${e.key?k`<b>${q(e)}</b> `:j}${r.length>70?`${r.slice(0,70)}…`:r}</span>
315
- <cae-elapsed class="pt-age" .since=${Ir.at(`p:${e.pid}`,e.age_s)}></cae-elapsed>
316
- </div>
317
- ${(e.children??[]).map(e=>this.node(e,t+1))}`}};function Zc(e){let t=e.filter(f),n=t.filter(C),r=t.filter(e=>!C(e)),i=e=>e.reduce((e,t)=>e+(t.wall_s||0),0),a=e=>[...new Set(e.map(e=>e.key))],o=e=>a(e).length,s=m(e),c=t.filter(e=>(e.rounds||1)>1),l=t.filter(e=>(e.hops||[]).length>1);return{attempts:t.length,python:n.length,launches:r.length,bad:t.filter(e=>!e.ok).length,launchWall:i(r),pythonWall:i(n),retries:s.length,retriedTasks:o(s),retriedKeys:a(s),fixupKeys:a(c),fixups:c.reduce((e,t)=>e+(t.rounds||1)-1,0),fixupTasks:o(c),switches:l.reduce((e,t)=>e+(t.hops||[]).length-1,0),switchTasks:o(l)}}function Qc(e){return e.startsWith(`task:`)?{key:e.slice(5)}:{stop:e.replace(/^history:/,``)}}function $c(e){let t=!1,n=!1,r=!1;for(let i of e){if(i.outcome!==`not_started`)continue;let e=i.attempts[i.attempts.length-1],a=e?.stop===`invalid_input`?ze(e.reason):[];a.some(e=>e.problem===`missing`)&&(t=!0),a.some(e=>e.problem===`checks`)&&(n=!0),(a.some(e=>e.problem===`failed`)||!a.length&&i.cause)&&(r=!0)}return Ao(r?E(`Earlier task failed`):``,t?E(`Input missing`):``,n?E(`Input failed checks`):``)}U([P({attribute:!1})],Xc.prototype,`procs`,void 0),Xc=U([N(`ca-proc-tree`),D()],Xc),R(`cae-stat-tiles`,Xi),R(`cae-count`,Hi);var el=(e,t)=>({id:`history:${e}`,label:t});function tl(e,t,n,r){let i=t.length===1?t[0]:void 0;if(!i)return el(n,r);let a=e.find(e=>e.key===i);return{id:`task:${i}`,label:a?q(a):i}}function nl(e,t){let n=Zc(e),{outcomes:r,counts:i}=t,a=[{text:X(`done`,i.doneTotal),tone:`neutral`},{text:i.skipped?X(`skipped`,i.skipped):``,tone:`neutral`},{text:i.failed?X(`failed`,i.failed):``,tone:Lo(i.failed,`failed`)},{text:i.not_started?X(`not_started`,i.not_started):``,tone:Lo(i.not_started,`attention`)},{text:i.partial?X(`partial`,i.partial):``,tone:Lo(i.partial,`attention`)}];return[{id:`tasks`,label:E(`Tasks`,{id:`tasks`}),value:i.total,sub:[a]},{id:`attempts`,label:E(`Attempts`),value:n.attempts,sub:[Ao(n.launches===1?E(`1 agent session`):E(T`${n.launches} agent sessions`),n.python===1?E(`1 Python task attempt`):E(T`${n.python} Python task attempts`))],tip:E(`Attempts that ran, retries included (journal.jsonl)`)},...rl(e),{id:`bad`,tone:Lo(n.bad,`failed`),label:E(`Failed attempts`),value:n.bad,sub:[n.bad?[]:[E(`All attempts done`)]],...n.bad?{action:el(`bad`,E(`Failed attempts in history`))}:{}},{id:`notstarted`,tone:Lo(i.not_started,`attention`),label:E(`Not started`),value:i.not_started,sub:[i.not_started?$c(r.values()):[E(`All tasks started`)]],...i.not_started?{action:el(`invalid_input`,E(`Tasks not started in history`))}:{}},{id:`wall`,label:E(`Agent session time`),value:z(n.launchWall),sub:[[E(T`Python tasks: ${z(n.pythonWall)}`)]],tip:E(`Summed over agent sessions, including sessions that ran at once`)},{id:`retry`,label:E(`Retries`),value:n.retries,sub:[[n.retries?n.retriedTasks===1?E(`1 task retried`):E(T`${n.retriedTasks} tasks retried`):E(`No retries`)]],tip:qo(),...n.retries?{action:tl(e,n.retriedKeys,`retried`,E(`Retried tasks in history`))}:{}},{id:`ct`,label:E(`Corrections`),value:n.fixups,sub:[[n.fixups?n.fixupTasks===1?E(`1 task with a correction`):E(T`${n.fixupTasks} tasks with corrections`):E(`No corrections`)]],tip:Ds(),...n.fixups?{action:tl(e,n.fixupKeys,`fixup`,E(`Attempts with corrections in history`))}:{}},{id:`fo`,label:E(`Model switches`),value:n.switches,sub:[[n.switches?n.switchTasks===1?E(`1 task with a model switch`):E(T`${n.switchTasks} tasks with model switches`):E(`No model switches`)]],tip:Ss()}]}function rl(e){let t=De(e);if(!t)return[];let n=ke(e)[0];return[{id:`cost`,label:E(`Cost`),value:Y(t.cost),sub:n&&n.share!==null?[[E(T`Highest cost: ${n.kind}`)],Ao(Y(n.spend.cost),E(T`${Math.round(100*n.share)}% of the total`))]:[[]],tip:E(`Reported by the coding agent`)},{id:`tokens`,label:E(`Tokens`),value:J(Te(t)),sub:[Ao(E(T`${J(t.input)} input`),E(T`${J(t.output)} output`),E(T`${J(t.cache_read+t.cache_creation)} cache`))],tip:K(E(T`${J(t.cache_read)} cache read`),E(T`${J(t.cache_creation)} cache write`),t.calls===1?E(`1 API call`):E(T`${t.calls} API calls`))}]}var il=class extends M{constructor(...e){super(...e),this.journal=[],this.plan={nodes:[],groups:[]},this.onAction=e=>{e.stopPropagation();let t=Qc(e.detail.action);`key`in t?Q(this,`ca-open-task`,{key:t.key}):Q(this,`ca-navigate`,{tab:`journal`,stop:t.stop})}}static{this.styles=O` :host{display:block;}`}render(){return k`<cae-stat-tiles exportparts="tiles, tile, label, value, sub, action" .tiles=${nl(this.journal,S(this.journal,this.plan))} @cae-action=${this.onAction}></cae-stat-tiles>`}};U([P({attribute:!1})],il.prototype,`journal`,void 0),U([P({attribute:!1})],il.prototype,`plan`,void 0),il=U([N(`ca-kpis`),D()],il);var al=[`input`,`cache_read`,`cache_creation`,`output`],ol=class extends M{constructor(...e){super(...e),this.journal=[],this.top=5}static{this.styles=[V,oi,O` :host{display:block;}.kinds{display:grid;grid-template-columns:minmax(70px,max-content) minmax(0,420px) max-content max-content;justify-content:start;gap:8px 14px;align-items:center;}.kind{font-family:var(--mono);font-size:12px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.bar{display:flex;height:12px;border-radius:4px;overflow:hidden;background:var(--track);}.bar i{display:block;height:100%;}.num{font-variant-numeric:tabular-nums;text-align:right;font-size:12px;white-space:nowrap;}.share{color:var(--text-muted);min-width:3.5em;}.seg-input{background:var(--tok-input);}.seg-cache_read{background:var(--tok-cache-read);}.seg-cache_creation{background:var(--tok-cache-write);}.seg-output{background:var(--tok-output);}.legend{margin-top:10px;}h4{margin:16px 0 6px;font-size:12px;color:var(--text-2);font-weight:600;}.top{display:grid;grid-template-columns:minmax(0,max-content) 64px 64px max-content;column-gap:20px;row-gap:4px;align-items:baseline;}.top a{font-family:var(--mono);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}`]}partLabel(e){switch(e){case`input`:return E(`input`);case`cache_read`:return E(`cache read`);case`cache_creation`:return E(`cache write`);case`output`:return E(`output`)}}bar(e,t){let n=Te(e),r=t?100*n/t:0;return k`<div class="bar" title=${K(...al.map(t=>`${this.partLabel(t)} ${J(e[t])}`))} style="width:${Math.max(r,.5).toFixed(2)}%">
318
- ${al.map(t=>e[t]&&n?k`<i class="seg-${t}" style="width:${(100*e[t]/n).toFixed(2)}%"></i>`:j)}
319
- </div>`}render(){if(!De(this.journal))return k`<div class="meta">${E(`No tokens reported`)}</div>`;let e=ke(this.journal),t=Math.max(1,...e.map(e=>Te(e.spend))),n=(r=this.journal,Oe(r,e=>e.key)).slice(0,this.top);var r;return k`<div class="kinds">
320
- ${H(e,e=>e.id,e=>k`<span class="kind" title=${e.id}>${e.id}</span>${this.bar(e.spend,t)}
321
- <span class="num">${K(J(Te(e.spend)),Y(e.spend.cost))}</span>
342
+ <span class="pt-cmd">${e.key?O`<b>${q(e)}</b> `:A}${r.length>70?`${r.slice(0,70)}…`:r}</span>
343
+ <cae-elapsed class="pt-age" .since=${Lr.at(`p:${e.pid}`,e.age_s)}></cae-elapsed>
344
+ </div>
345
+ ${(e.children??[]).map(e=>this.node(e,t+1))}`}};function Cl(e){let t=e.filter(f),n=t.filter(S),r=t.filter(e=>!S(e)),i=e=>e.reduce((e,t)=>e+(t.wall_s||0),0),a=e=>[...new Set(e.map(e=>e.key))],o=e=>a(e).length,s=m(e),c=t.filter(e=>(e.rounds||1)>1),l=t.filter(e=>(e.hops||[]).length>1);return{attempts:t.length,python:n.length,launches:r.length,bad:t.filter(e=>!e.ok).length,launchWall:i(r),pythonWall:i(n),retries:s.length,retriedTasks:o(s),retriedKeys:a(s),fixupKeys:a(c),fixups:c.reduce((e,t)=>e+(t.rounds||1)-1,0),fixupTasks:o(c),switches:l.reduce((e,t)=>e+(t.hops||[]).length-1,0),switchTasks:o(l)}}function wl(e){return e.startsWith(`task:`)?{key:e.slice(5)}:{stop:e.replace(/^history:/,``)}}function Tl(e){let t=!1,n=!1,r=!1;for(let i of e){if(i.outcome!==`not_started`)continue;let e=i.attempts[i.attempts.length-1],a=e?.stop===`invalid_input`?Be(e.reason):[];a.some(e=>e.problem===`missing`)&&(t=!0),a.some(e=>e.problem===`checks`)&&(n=!0),(a.some(e=>e.problem===`failed`)||!a.length&&i.cause)&&(r=!0)}return Qo(r?T(`Earlier task failed`):``,t?T(`Input missing`):``,n?T(`Input failed checks`):``)}H([N({attribute:!1})],Sl.prototype,`procs`,void 0),Sl=H([M(`ca-proc-tree`),E()],Sl),R(`cae-stat-tiles`,va),R(`cae-count`,ua);var El=(e,t)=>({id:`history:${e}`,label:t});function Dl(e,t,n,r){let i=t.length===1?t[0]:void 0;if(!i)return El(n,r);let a=e.find(e=>e.key===i);return{id:`task:${i}`,label:a?q(a):i}}function Ol(e,t){let n=Cl(e),{outcomes:r,counts:i}=t,a=[{text:X(`done`,i.doneTotal),tone:`neutral`},{text:i.skipped?X(`skipped`,i.skipped):``,tone:`neutral`},{text:i.failed?X(`failed`,i.failed):``,tone:as(i.failed,`failed`)},{text:i.not_started?X(`not_started`,i.not_started):``,tone:as(i.not_started,`attention`)},{text:i.partial?X(`partial`,i.partial):``,tone:as(i.partial,`attention`)}];return[{id:`tasks`,label:T(`Tasks`,{id:`tasks`}),value:i.total,sub:[a]},{id:`attempts`,label:T(`Attempts`),value:n.attempts,sub:[Qo(n.launches===1?T(`1 agent session`):T(w`${n.launches} agent sessions`),n.python===1?T(`1 Python task attempt`):T(w`${n.python} Python task attempts`))],tip:T(`Attempts that ran, retries included (journal.jsonl)`)},...kl(e),{id:`bad`,tone:as(n.bad,`failed`),label:T(`Failed attempts`),value:n.bad,sub:[n.bad?[]:[T(`All attempts done`)]],...n.bad?{action:El(`bad`,T(`Failed attempts in history`))}:{}},{id:`notstarted`,tone:as(i.not_started,`attention`),label:T(`Not started`),value:i.not_started,sub:[i.not_started?Tl(r.values()):[T(`All tasks started`)]],...i.not_started?{action:El(`invalid_input`,T(`Tasks not started in history`))}:{}},{id:`wall`,label:T(`Agent session time`),value:z(n.launchWall),sub:[[T(w`Python tasks: ${z(n.pythonWall)}`)]],tip:T(`Summed over agent sessions, including sessions that ran at once`)},{id:`retry`,label:T(`Retries`),value:n.retries,sub:[[n.retries?n.retriedTasks===1?T(`1 task retried`):T(w`${n.retriedTasks} tasks retried`):T(`No retries`)]],tip:hs(),...n.retries?{action:Dl(e,n.retriedKeys,`retried`,T(`Retried tasks in history`))}:{}},{id:`ct`,label:T(`Corrections`),value:n.fixups,sub:[[n.fixups?n.fixupTasks===1?T(`1 task with a correction`):T(w`${n.fixupTasks} tasks with corrections`):T(`No corrections`)]],tip:Ys(),...n.fixups?{action:Dl(e,n.fixupKeys,`fixup`,T(`Attempts with corrections in history`))}:{}},{id:`fo`,label:T(`Model switches`),value:n.switches,sub:[[n.switches?n.switchTasks===1?T(`1 task with a model switch`):T(w`${n.switchTasks} tasks with model switches`):T(`No model switches`)]],tip:Ws()}]}function kl(e){let t=Oe(e);if(!t)return[];let n=Ae(e)[0];return[{id:`cost`,label:T(`Cost`),value:Y(t.cost),sub:n&&n.share!==null?[[T(w`Highest cost: ${n.kind}`)],Qo(Y(n.spend.cost),T(w`${Math.round(100*n.share)}% of the total`))]:[[]],tip:T(`Reported by the coding agent`)},{id:`tokens`,label:T(`Tokens`),value:J(Ee(t)),sub:[Qo(T(w`${J(t.input)} input`),T(w`${J(t.output)} output`),T(w`${J(t.cache_read+t.cache_creation)} cache`))],tip:K(T(w`${J(t.cache_read)} cache read`),T(w`${J(t.cache_creation)} cache write`),t.calls===1?T(`1 API call`):T(w`${t.calls} API calls`))}]}var Al=class extends j{constructor(...e){super(...e),this.journal=[],this.plan={nodes:[],groups:[]},this.onAction=e=>{e.stopPropagation();let t=wl(e.detail.action);`key`in t?Q(this,`ca-open-task`,{key:t.key}):Q(this,`ca-navigate`,{tab:`journal`,stop:t.stop})}}static{this.styles=D` :host{display:block;}`}render(){return O`<cae-stat-tiles exportparts="tiles, tile, label, value, sub, action" .tiles=${Ol(this.journal,x(this.journal,this.plan))} @cae-action=${this.onAction}></cae-stat-tiles>`}};H([N({attribute:!1})],Al.prototype,`journal`,void 0),H([N({attribute:!1})],Al.prototype,`plan`,void 0),Al=H([M(`ca-kpis`),E()],Al);var jl=[`input`,`cache_read`,`cache_creation`,`output`],Ml=class extends j{constructor(...e){super(...e),this.journal=[],this.top=5}static{this.styles=[B,si,D` :host{display:block;}.kinds{display:grid;grid-template-columns:minmax(70px,max-content) minmax(0,420px) max-content max-content;justify-content:start;gap:8px 14px;align-items:center;}.kind{font-family:var(--mono);font-size:12px;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.bar{display:flex;height:12px;border-radius:4px;overflow:hidden;background:var(--track);}.bar i{display:block;height:100%;}.num{font-variant-numeric:tabular-nums;text-align:right;font-size:12px;white-space:nowrap;}.share{color:var(--text-muted);min-width:3.5em;}.seg-input{background:var(--tok-input);}.seg-cache_read{background:var(--tok-cache-read);}.seg-cache_creation{background:var(--tok-cache-write);}.seg-output{background:var(--tok-output);}.legend{margin-top:10px;}h4{margin:16px 0 6px;font-size:12px;color:var(--text-2);font-weight:600;}.top{display:grid;grid-template-columns:minmax(0,max-content) 64px 64px max-content;column-gap:20px;row-gap:4px;align-items:baseline;}.top a{font-family:var(--mono);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}`]}partLabel(e){switch(e){case`input`:return T(`input`);case`cache_read`:return T(`cache read`);case`cache_creation`:return T(`cache write`);case`output`:return T(`output`)}}bar(e,t){let n=Ee(e),r=t?100*n/t:0;return O`<div class="bar" title=${K(...jl.map(t=>`${this.partLabel(t)} ${J(e[t])}`))} style="width:${Math.max(r,.5).toFixed(2)}%">
346
+ ${jl.map(t=>e[t]&&n?O`<i class="seg-${t}" style="width:${(100*e[t]/n).toFixed(2)}%"></i>`:A)}
347
+ </div>`}render(){if(!Oe(this.journal))return O`<div class="meta">${T(`No tokens reported`)}</div>`;let e=Ae(this.journal),t=Math.max(1,...e.map(e=>Ee(e.spend))),n=(r=this.journal,ke(r,e=>e.key)).slice(0,this.top);var r;return O`<div class="kinds">
348
+ ${V(e,e=>e.id,e=>O`<span class="kind" title=${e.id}>${e.id}</span>${this.bar(e.spend,t)}
349
+ <span class="num">${K(J(Ee(e.spend)),Y(e.spend.cost))}</span>
322
350
  <span class="num share">${e.share===null?``:`${Math.round(100*e.share)}%`}</span>`)}
323
351
  </div>
324
- ${ai(al.map(e=>({label:this.partLabel(e),cls:`seg-${e}`})))}
325
- <h4>${E(`Most expensive tasks`)}</h4>
352
+ ${oi(jl.map(e=>({label:this.partLabel(e),cls:`seg-${e}`})))}
353
+ <h4>${T(`Most expensive tasks`)}</h4>
326
354
  <div class="top">
327
- ${n.map(e=>k`<a class="lnk" href="#" title=${e.id} @click=${t=>{t.preventDefault(),Q(this,`ca-open-task`,{key:e.id})}}>${q(e)}</a>
328
- <span class="num">${J(Te(e.spend))}</span>
355
+ ${n.map(e=>O`<a class="lnk" href="#" title=${e.id} @click=${t=>{t.preventDefault(),Q(this,`ca-open-task`,{key:e.id})}}>${q(e)}</a>
356
+ <span class="num">${J(Ee(e.spend))}</span>
329
357
  <span class="num">${Y(e.spend.cost)}</span>
330
- <span class="num share">${e.share===null?``:E(T`${Math.round(100*e.share)}%`)}</span>`)}
331
- </div>`}};U([P({attribute:!1})],ol.prototype,`journal`,void 0),U([P({type:Number})],ol.prototype,`top`,void 0),ol=U([N(`ca-spend-breakdown`),D()],ol);var sl=6,cl=`var(--meter)`,ll=e=>`${e.agent}/${e.model}`;function ul(e){let t=e.length>6?5:6;return new Map(e.map((e,n)=>[ll(e),n<t?`var(--series-${n+1})`:cl]))}function dl(e,t){let n=ul(e),r=[],i=0;for(let a of e){let e=je(a,t)??0,o=n.get(ll(a));o===`var(--meter)`?i+=e:r.push({id:ll(a),label:a.model,value:e,color:o,text:Xs(a,t)})}return e.length>6&&r.push({id:`other`,label:E(`Other models`),value:i,color:cl}),r}function fl(e,t){let n=ul(e),r=e.map(e=>je(e,t)??0),i=si(r),a=r.some(e=>e>0);return e.map((e,t)=>({id:ll(e),usage:e,colour:n.get(ll(e)),share:a?ci(i[t],r[t]):`—`}))}var pl=[`cost`,`tokens`,`time`,`sessions`],ml=class extends M{constructor(...e){super(...e),this.models=[],this.measure=``}static{this.styles=[V,li,O` :host{display:block;}.head{display:flex;justify-content:flex-end;margin-bottom:10px;overflow-x:auto;}.head cae-segmented{flex:none;}.wrap{overflow-x:auto;margin-top:14px;border-radius:6px;}.wrap:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}table{border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums;}th{font-weight:500;color:var(--text-muted);text-align:right;padding:0 0 6px 28px;white-space:nowrap;border-bottom:1px solid var(--line);}th:first-child{text-align:left;padding-left:0;}th.on{color:var(--text);font-weight:600;}td{padding:7px 0 7px 28px;text-align:right;white-space:nowrap;color:var(--text-2);vertical-align:top;}tr + tr td{border-top:1px solid var(--line);}td:first-child{text-align:left;padding-left:0;}td.on{color:var(--text);}td.share{color:var(--text);font-weight:600;}.model{display:grid;grid-template-columns:10px max-content;column-gap:8px;align-items:baseline;}.model i{width:10px;height:10px;border-radius:3px;align-self:center;}.model b{font-family:var(--mono);font-weight:500;color:var(--text);}.model small{grid-column:2;font-size:11px;color:var(--text-muted);}`]}chosen(){let e=Me(this.models);return this.measure&&e.includes(this.measure)?this.measure:e[0]??`sessions`}render(){if(!this.models.length)return k`<div class="meta">${E(`No agent sessions`)}</div>`;let e=this.chosen(),t=Me(this.models),n=fl(this.models,e),r=this.models.some(e=>e.peak_context!=null);return k`${t.length>1?k`<div class="head">
332
- <cae-segmented label=${E(`Measure`)} .value=${e} .options=${t.map(e=>({value:e,label:Js(e),title:Ys(e)}))} @cae-change=${e=>this.measure=e.detail.value}></cae-segmented>
333
- </div>`:j}
334
- ${function(e,t={}){let n=e.filter(e=>e.value>0),r=si(n.map(e=>e.value)),i=n.reduce((e,t)=>e+t.value,0),a=t.labelAt??.15,o=(e,t)=>[e.label,ci(r[t],e.value),e.text].filter(Boolean).join(` | `);return k`<div class="share" part="share">
335
- <div class="share-bar" role="list" aria-label=${t.label||j}>
336
- ${n.map((e,t)=>k`<span class="share-seg" role="listitem" tabindex="0" aria-label=${o(e,t)} data-id=${e.id} data-edge=${t===0?`start`:t===n.length-1?`end`:j} style=${ii({flexGrow:String(e.value/i),background:e.color})} ><span class="share-tip" aria-hidden="true">${o(e,t)}</span></span>`)}
358
+ <span class="num share">${e.share===null?``:T(w`${Math.round(100*e.share)}%`)}</span>`)}
359
+ </div>`}};H([N({attribute:!1})],Ml.prototype,`journal`,void 0),H([N({type:Number})],Ml.prototype,`top`,void 0),Ml=H([M(`ca-spend-breakdown`),E()],Ml);var Nl=6,Pl=`var(--meter)`,Fl=e=>`${e.agent}/${e.model}`;function Il(e){let t=e.length>6?5:6;return new Map(e.map((e,n)=>[Fl(e),n<t?`var(--series-${n+1})`:Pl]))}function Ll(e,t){let n=Il(e),r=[],i=0;for(let a of e){let e=Me(a,t)??0,o=n.get(Fl(a));o===`var(--meter)`?i+=e:r.push({id:Fl(a),label:a.model,value:e,color:o,text:yc(a,t)})}return e.length>6&&r.push({id:`other`,label:T(`Other models`),value:i,color:Pl}),r}function Rl(e,t){let n=Il(e),r=e.map(e=>Me(e,t)??0),i=ci(r),a=r.some(e=>e>0);return e.map((e,t)=>({id:Fl(e),usage:e,colour:n.get(Fl(e)),share:a?li(i[t],r[t]):`—`}))}var zl=[`cost`,`tokens`,`time`,`sessions`],Bl=class extends j{constructor(...e){super(...e),this.models=[],this.measure=``}static{this.styles=[B,ui,D` :host{display:block;}.head{display:flex;justify-content:flex-end;margin-bottom:10px;overflow-x:auto;}.head cae-segmented{flex:none;}.wrap{overflow-x:auto;margin-top:14px;border-radius:6px;}.wrap:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}table{border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums;}th{font-weight:500;color:var(--text-muted);text-align:right;padding:0 0 6px 28px;white-space:nowrap;border-bottom:1px solid var(--line);}th:first-child{text-align:left;padding-left:0;}th.on{color:var(--text);font-weight:600;}td{padding:7px 0 7px 28px;text-align:right;white-space:nowrap;color:var(--text-2);vertical-align:top;}tr + tr td{border-top:1px solid var(--line);}td:first-child{text-align:left;padding-left:0;}td.on{color:var(--text);}td.share{color:var(--text);font-weight:600;}.model{display:grid;grid-template-columns:10px max-content;column-gap:8px;align-items:baseline;}.model i{width:10px;height:10px;border-radius:3px;align-self:center;}.model b{font-family:var(--mono);font-weight:500;color:var(--text);}.model small{grid-column:2;font-size:11px;color:var(--text-muted);}`]}chosen(){let e=Ne(this.models);return this.measure&&e.includes(this.measure)?this.measure:e[0]??`sessions`}render(){if(!this.models.length)return O`<div class="meta">${T(`No agent sessions`)}</div>`;let e=this.chosen(),t=Ne(this.models),n=Rl(this.models,e),r=this.models.some(e=>e.peak_context!=null);return O`${t.length>1?O`<div class="head">
360
+ <cae-segmented label=${T(`Measure`)} .value=${e} .options=${t.map(e=>({value:e,label:_c(e),title:vc(e)}))} @cae-change=${e=>this.measure=e.detail.value}></cae-segmented>
361
+ </div>`:A}
362
+ ${function(e,t={}){let n=e.filter(e=>e.value>0),r=ci(n.map(e=>e.value)),i=n.reduce((e,t)=>e+t.value,0),a=t.labelAt??.15,o=(e,t)=>[e.label,li(r[t],e.value),e.text].filter(Boolean).join(` | `);return O`<div class="share" part="share">
363
+ <div class="share-bar" role="list" aria-label=${t.label||A}>
364
+ ${n.map((e,t)=>O`<span class="share-seg" role="listitem" tabindex="0" aria-label=${o(e,t)} data-id=${e.id} data-edge=${t===0?`start`:t===n.length-1?`end`:A} style=${ai({flexGrow:String(e.value/i),background:e.color})} ><span class="share-tip" aria-hidden="true">${o(e,t)}</span></span>`)}
337
365
  </div>
338
366
  <div class="share-names" aria-hidden="true">
339
- ${n.map((e,t)=>k`<span style=${ii({flexGrow:String(e.value/i)})} >${e.value/i>=a?k`<b>${e.label}</b> ${ci(r[t],e.value)}`:j}</span>`)}
367
+ ${n.map((e,t)=>O`<span style=${ai({flexGrow:String(e.value/i)})} >${e.value/i>=a?O`<b>${e.label}</b> ${li(r[t],e.value)}`:A}</span>`)}
340
368
  </div>
341
- </div>`}(dl(this.models,e),{label:Js(e)})}
342
- <div class="wrap" data-scroll="x" tabindex="0" role="region" aria-label=${E(`Models`)}>
369
+ </div>`}(Ll(this.models,e),{label:_c(e)})}
370
+ <div class="wrap" data-scroll="x" tabindex="0" role="region" aria-label=${T(`Models`)}>
343
371
  <table>
344
372
  <thead>
345
373
  <tr>
346
- <th scope="col">${E(`Model`)}</th>
347
- <th scope="col" class="on" title=${Js(e)}>${E(`Share`)}</th>
348
- ${pl.map(t=>k`<th scope="col" class=${t===e?`on`:j} title=${Ys(t)}>${Js(t)}</th>`)}
349
- <th scope="col">${E(`API calls`)}</th>
350
- ${r?k`<th scope="col" title=${_c()}>${gc()}</th>`:j}
374
+ <th scope="col">${T(`Model`)}</th>
375
+ <th scope="col" class="on" title=${_c(e)}>${T(`Share`)}</th>
376
+ ${zl.map(t=>O`<th scope="col" class=${t===e?`on`:A} title=${vc(t)}>${_c(t)}</th>`)}
377
+ <th scope="col">${T(`API calls`)}</th>
378
+ ${r?O`<th scope="col" title=${Bc()}>${zc()}</th>`:A}
351
379
  </tr>
352
380
  </thead>
353
381
  <tbody>
354
- ${H(n,e=>e.id,t=>k`<tr>
382
+ ${V(n,e=>e.id,t=>O`<tr>
355
383
  <td>
356
- <span class="model"><i style=${ii({background:t.colour})}></i><b>${t.usage.model}</b><small>${t.usage.agent}</small></span>
384
+ <span class="model"><i style=${ai({background:t.colour})}></i><b>${t.usage.model}</b><small>${t.usage.agent}</small></span>
357
385
  </td>
358
386
  <td class="share">${t.share}</td>
359
- ${pl.map(n=>k`<td class=${n===e?`on`:j}>${Xs(t.usage,n)}</td>`)}
387
+ ${zl.map(n=>O`<td class=${n===e?`on`:A}>${yc(t.usage,n)}</td>`)}
360
388
  <td>${t.usage.calls??0}</td>
361
- ${r?k`<td>${t.usage.peak_context==null?`—`:J(t.usage.peak_context)}</td>`:j}
389
+ ${r?O`<td>${t.usage.peak_context==null?`—`:J(t.usage.peak_context)}</td>`:A}
362
390
  </tr>`)}
363
391
  </tbody>
364
392
  </table>
365
- </div>`}};U([P({attribute:!1})],ml.prototype,`models`,void 0),U([F()],ml.prototype,`measure`,void 0),ml=U([N(`ca-model-usage`),D()],ml);var hl=class extends M{static{this.styles=[V,O` :host{display:block;container-type:inline-size;}.rows{display:grid;grid-template-columns:max-content minmax(70px,420px) max-content max-content;justify-content:start;gap:10px 14px;align-items:center;}.name{font-size:12px;color:var(--text-2);white-space:nowrap;}.bar{position:relative;height:12px;border-radius:4px;background:var(--track);overflow:hidden;}.bar i{position:absolute;top:0;bottom:0;}.bar .before{left:0;background:var(--meter);opacity:0.45;}.bar .during{background:var(--meter);}.bar.hot .during,.bar.full .during,.bar.hot .before,.bar.full .before{background:var(--status-attention);}.bar .cap{width:2px;margin-left:-1px;background:var(--text);opacity:0.7;}.val.hot b,.val.full b{color:var(--status-attention);}.val{font-family:var(--mono);font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap;}.val b{color:var(--text);}.val .lim{color:var(--text-muted);}.reset{font-size:11.5px;color:var(--text-muted);white-space:nowrap;}@container (max-width:460px){.rows{grid-template-columns:max-content minmax(70px,1fr) max-content;row-gap:2px;}.reset{grid-column:2 / -1;margin-bottom:6px;}}.status{margin-top:8px;}.acct{padding:10px 0;border-top:1px solid var(--line);}.acct:first-child{border-top:0;padding-top:0;}.acct-h{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px;margin-bottom:8px;font-size:12px;}.acct-h i{font-style:normal;color:var(--text-muted);font-size:11px;}.acct-h b{font-family:var(--mono);color:var(--text);font-weight:600;}.rests{margin:8px 0 0;padding:0;list-style:none;font-size:11.5px;color:var(--text-2);}.rests li{padding:2px 0;}.rule{margin-bottom:10px;font-size:12px;color:var(--text-2);}.rule code{font-family:var(--mono);color:var(--text);}`]}constructor(){super(),this.journal=[],this.accounts=null,this.caps=[],this.rests=[],this.rule=``,this.live=!1,new Fr(this)}row(e,t,n,r,i){let a=n[`${e}_pct`],o=r[`${e}_pct`];if(a==null&&o==null)return j;let s=Math.max(0,Math.min(100,a??o??0)),c=Math.max(s,Math.min(100,o??s)),l=r[`${e}_resets_at`],u=c>=100||i!=null&&c>=i?`full`:c>=80?`hot`:``,d=i==null?``:hs(i);return k`<span class="name">${t}</span>
366
- <span class="bar ${u}" title=${d?`${is(a)} → ${is(o)} | ${d}`:`${is(a)} → ${is(o)}`}>
393
+ </div>`}};H([N({attribute:!1})],Bl.prototype,`models`,void 0),H([P()],Bl.prototype,`measure`,void 0),Bl=H([M(`ca-model-usage`),E()],Bl);var Vl=class extends j{static{this.styles=[B,D` :host{display:block;container-type:inline-size;}.rows{display:grid;grid-template-columns:max-content minmax(70px,420px) max-content max-content;justify-content:start;gap:10px 14px;align-items:center;}.name{font-size:12px;color:var(--text-2);white-space:nowrap;}.bar{position:relative;height:12px;border-radius:4px;background:var(--track);overflow:hidden;}.bar i{position:absolute;top:0;bottom:0;}.bar .before{left:0;background:var(--meter);opacity:0.45;}.bar .during{background:var(--meter);}.bar.hot .during,.bar.full .during,.bar.hot .before,.bar.full .before{background:var(--status-attention);}.bar .cap{width:2px;margin-left:-1px;background:var(--text);opacity:0.7;}.val.hot b,.val.full b{color:var(--status-attention);}.val{font-family:var(--mono);font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap;}.val b{color:var(--text);}.val .lim{color:var(--text-muted);}.reset{font-size:11.5px;color:var(--text-muted);white-space:nowrap;}@container (max-width:460px){.rows{grid-template-columns:max-content minmax(70px,1fr) max-content;row-gap:2px;}.reset{grid-column:2 / -1;margin-bottom:6px;}}.status{margin-top:8px;}.acct{padding:10px 0;border-top:1px solid var(--line);}.acct:first-child{border-top:0;padding-top:0;}.acct-h{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px;margin-bottom:8px;font-size:12px;}.acct-h i{font-style:normal;color:var(--text-muted);font-size:11px;}.acct-h b{font-family:var(--mono);color:var(--text);font-weight:600;}.rests{margin:8px 0 0;padding:0;list-style:none;font-size:11.5px;color:var(--text-2);}.rests li{padding:2px 0;}.rule{margin-bottom:10px;font-size:12px;color:var(--text-2);}.rule code{font-family:var(--mono);color:var(--text);}`]}constructor(){super(),this.journal=[],this.accounts=null,this.caps=[],this.rests=[],this.rule=``,this.live=!1,new Ir(this)}row(e,t,n,r,i){let a=n[`${e}_pct`],o=r[`${e}_pct`];if(a==null&&o==null)return A;let s=Math.max(0,Math.min(100,a??o??0)),c=Math.max(s,Math.min(100,o??s)),l=r[`${e}_resets_at`],u=c>=100||i!=null&&c>=i?`full`:c>=80?`hot`:``,d=i==null?``:Ls(i);return O`<span class="name">${t}</span>
394
+ <span class="bar ${u}" title=${d?`${Es(a)} → ${Es(o)} | ${d}`:`${Es(a)} → ${Es(o)}`}>
367
395
  <i class="before" style="width:${s}%"></i>
368
396
  <i class="during" style="left:${s}%;width:${c-s}%"></i>
369
- ${i==null?j:k`<i class="cap" style="left:${Math.min(100,i)}%" aria-hidden="true"></i>`}
397
+ ${i==null?A:O`<i class="cap" style="left:${Math.min(100,i)}%" aria-hidden="true"></i>`}
370
398
  </span>
371
- <span class="val ${u}">${is(a)} → <b>${is(o)}</b>${d?k` <span class="lim">| ${d}</span>`:j}</span>
372
- <span class="reset" title=${l?G(l,!0):``}>${function(e,t=Date.now()){let n=Date.parse(e??``);if(Number.isNaN(n))return``;if(n<=t)return E(`reset`);let r=(n-t)/36e5,i=r>=48?E(T`${Math.floor(r/24)}d ${Math.floor(r%24)}h`):z((n-t)/1e3);return E(T`resets in ${i}`)}(l)}</span>`}paused(e){let t=Date.now(),n=e.find(e=>!e.ended&&(e.until?Date.parse(e.until)>t:this.live));return n?Zr({text:n.until?E(T`paused until ${G(n.until,!0)}`):E(`paused`),tone:`attention`,title:gs(n)}):j}render(){let e=this.accounts??Le(this.journal);if(!e.length&&!this.rests.length)return j;let t=new Map(this.caps.map(e=>[e.credential,e]));return k`${this.rule?k`<div class="rule" title="quota_rule">${E(`Usage rule`)} <code>${this.rule}</code></div>`:j}${e.map(n=>{let r=as(n.last.status,n.last.status_window),i=t.get(n.credential),a=this.rests.filter(e=>!(e.credential!==n.credential||e.account&&n.account&&e.account!==n.account)),o=!!n.account&&e.some(e=>e!==n&&e.credential===n.credential);return k`<div class="acct">
373
- <div class="acct-h"><i>${E(`Identity`)}</i><b>${ns(n.credential)||`—`}</b>${o?k`<i title=${E(T`Account: ${n.account??``}`)}>${ss(n.account??``)}</i>`:j}${r?Zr({text:r,tone:`attention`,title:n.last.status,mark:null}):j}${this.paused(a)}${i?k`<i title="max_five_hour_pct, max_seven_day_pct">${xs(i)}</i>`:j}</div>
399
+ <span class="val ${u}">${Es(a)} → <b>${Es(o)}</b>${d?O` <span class="lim">| ${d}</span>`:A}</span>
400
+ <span class="reset" title=${l?G(l,!0):``}>${function(e,t=Date.now()){let n=Date.parse(e??``);if(Number.isNaN(n))return``;if(n<=t)return T(`reset`);let r=(n-t)/36e5,i=r>=48?T(w`${Math.floor(r/24)}d ${Math.floor(r%24)}h`):z((n-t)/1e3);return T(w`resets in ${i}`)}(l)}</span>`}paused(e){let t=Date.now(),n=e.find(e=>!e.ended&&(e.until?Date.parse(e.until)>t:this.live));return n?Qr({text:n.until?T(w`paused until ${G(n.until,!0)}`):T(`paused`),tone:`attention`,title:Rs(n)}):A}render(){let e=this.accounts??Re(this.journal);if(!e.length&&!this.rests.length)return A;let t=new Map(this.caps.map(e=>[e.credential,e]));return O`${this.rule?O`<div class="rule" title="quota_rule">${T(`Usage rule`)} <code>${this.rule}</code></div>`:A}${e.map(n=>{let r=Ds(n.last.status,n.last.status_window),i=t.get(n.credential),a=this.rests.filter(e=>!(e.credential!==n.credential||e.account&&n.account&&e.account!==n.account)),o=!!n.account&&e.some(e=>e!==n&&e.credential===n.credential);return O`<div class="acct">
401
+ <div class="acct-h"><i>${T(`Identity`)}</i><b>${ws(n.credential)||`—`}</b>${o?O`<i title=${T(w`Account: ${n.account??``}`)}>${ks(n.account??``)}</i>`:A}${r?Qr({text:r,tone:`attention`,title:n.last.status,mark:null}):A}${this.paused(a)}${i?O`<i title="max_five_hour_pct, max_seven_day_pct">${Us(i)}</i>`:A}</div>
374
402
  <div class="rows">
375
- ${this.row(`seven_day`,E(`Weekly usage`),n.first,n.last,i?.seven_day_pct)}
376
- ${this.row(`five_hour`,E(`5-hour usage`),n.first,n.last,i?.five_hour_pct)}
403
+ ${this.row(`seven_day`,T(`Weekly usage`),n.first,n.last,i?.seven_day_pct)}
404
+ ${this.row(`five_hour`,T(`5-hour usage`),n.first,n.last,i?.five_hour_pct)}
377
405
  </div>
378
406
  ${this.restList(a)}
379
- </div>`})}${this.unread(e,t)}`}restList(e){return e.length?k`<ul class="rests" title="rests.jsonl">${e.map(e=>k`<li>${function(e){return K(e.ended?E(T`Paused ${G(e.since)} → ${G(e.ended)}`):E(T`Paused since ${G(e.since)}`),e.rule?E(T`Usage rule: ${e.rule}`):K(ps(e.window??``,e.pct),hs(e.cap)))}(e)}</li>`)}</ul>`:j}unread(e,t){let n=new Set(e.map(e=>e.credential));return[...new Set(this.rests.map(e=>e.credential))].filter(e=>!n.has(e)).map(e=>{let n=this.rests.filter(t=>t.credential===e),r=t.get(e);return k`<div class="acct">
380
- <div class="acct-h"><i>${E(`Identity`)}</i><b>${ns(e)}</b>${this.paused(n)}${r?k`<i title="max_five_hour_pct, max_seven_day_pct">${xs(r)}</i>`:j}</div>
407
+ </div>`})}${this.unread(e,t)}`}restList(e){return e.length?O`<ul class="rests" title="rests.jsonl">${e.map(e=>O`<li>${function(e){return K(e.ended?T(w`Paused ${G(e.since)} → ${G(e.ended)}`):T(w`Paused since ${G(e.since)}`),e.rule?T(w`Usage rule: ${e.rule}`):K(Fs(e.window??``,e.pct),Ls(e.cap)))}(e)}</li>`)}</ul>`:A}unread(e,t){let n=new Set(e.map(e=>e.credential));return[...new Set(this.rests.map(e=>e.credential))].filter(e=>!n.has(e)).map(e=>{let n=this.rests.filter(t=>t.credential===e),r=t.get(e);return O`<div class="acct">
408
+ <div class="acct-h"><i>${T(`Identity`)}</i><b>${ws(e)}</b>${this.paused(n)}${r?O`<i title="max_five_hour_pct, max_seven_day_pct">${Us(r)}</i>`:A}</div>
381
409
  ${this.restList(n)}
382
- </div>`})}};U([P({attribute:!1})],hl.prototype,`journal`,void 0),U([P({attribute:!1})],hl.prototype,`accounts`,void 0),U([P({attribute:!1})],hl.prototype,`caps`,void 0),U([P({attribute:!1})],hl.prototype,`rests`,void 0),U([P()],hl.prototype,`rule`,void 0),U([P({type:Boolean})],hl.prototype,`live`,void 0),hl=U([N(`ca-quota`),D()],hl),R(`cae-mark-matrix`,Pa),R(`cae-layered-graph`,_o);var gl=`loop:`,_l=(e,t,n)=>{let r=e.get(t);r?r.push(n):e.set(t,[n])},vl=e=>typeof e==`string`;function yl(e){let t=e.flow_calls;return Array.isArray(t)&&t.length!==0?new Map(t.filter(e=>e&&vl(e.id)&&vl(e.function)).map(e=>[e.id,e])):null}var bl=new WeakMap;function xl(e){let t=bl.get(e);if(t)return t;let n=e.nodes.map(e=>{let t=function(e){let t=e.flow;if(!Array.isArray(t))return[];let n=[];for(let e of t){let t=e;if(!t||typeof t!=`object`||!vl(t.function))break;let r=(Array.isArray(t.loops)?t.loops:[]).filter(e=>!!e&&typeof e.line==`number`);n.push({function:t.function,file:vl(t.file)?t.file:``,line:typeof t.line==`number`?t.line:0,loops:r.map(e=>e.line),passes:r.map(e=>typeof e.pass==`number`&&e.pass>=1?e.pass:1)})}return n}(e),n=e.created_from;return{n:e,frames:t,path:t.map(e=>e.function),from:Array.isArray(n)?n.filter(vl):[],call:vl(e.flow_call)?e.flow_call:``}}),r=new Map;for(let t of e.nodes)t.unit&&!r.has(t.unit)&&r.set(t.unit,r.size);let i={tasks:n,byKey:new Map(n.map(e=>[e.n.key,e])),calls:yl(e),unitRank:r,labels:new Map(e.groups.map(e=>[e.id,e.label]))};return bl.set(e,i),i}var Sl=(e,t)=>t.every((t,n)=>e[n]===t),Cl=e=>e.slice(e.lastIndexOf(`.`)+1)||e,wl=(e,t)=>t>0?e.frames[t-1]?.loops??[]:[],Tl=(e,t)=>t>0?e.frames[t-1]?.passes??[]:[];function El(e,t){for(let n=0;n<Math.max(e.length,t.length);n++){let r=(e[n]??0)-(t[n]??0);if(r)return r}return 0}var Dl=e=>e.map((t,n)=>`${gl}${e.slice(0,n+1).join(`.`)}`);function Ol(e,t){let n=wl(e,t),r=n.length?`@${n.join(`.`)}`:``;if(e.path.length<=t)return{id:`kind:${e.n.group}${r}`,type:`kind`,name:e.n.group,loops:n};let i=e.path[t];return{id:`flow:${i}${r}`,type:`flow`,name:i,loops:n}}function kl(e,t,n){if(!e.call)return{id:`>${t}`,own:!1};let r=e.call.split(`.`),i=r.map((e,t)=>r.slice(0,t+1).join(`.`)),a=0,o=0;if(n)for(let r=1;r<i.length;r++){let s=n.get(i[r])?.function,c=s===void 0?-1:e.frames.findIndex((e,t)=>t>o&&e.function===s);if(c<0||c>t)break;a=r,o=c}else a=Math.min(t,i.length-1),o=a;let s=i[a];return o===t?{id:s,own:!0}:{id:`${s}>${t}`,own:!1}}var Al={failed:6,running:5,blocked:4,partial:3,pending:2,skipped:1,done:0},jl=e=>e.reduce((e,t)=>Al[t.state]>Al[e]?t.state:e,`done`),Ml=e=>e.reduce((e,t)=>Al[t]>Al[e]?t:e,`done`);function Nl(e){let t=e.filter(C).length;return t===0?`agent`:t===e.length?`python`:`mixed`}var Pl={running:`running`,returned:`done`,raised:`failed`,closed:`failed`},Fl=e=>e?.state===`raised`||e?.state===`closed`;function Il(e,t){let n=e.map(e=>e.n);return{key:(n.find(e=>e.state===`running`)??n[n.length-1]??{key:``}).key,unit:t,state:jl(n),count:n.length,keys:n.map(e=>e.key)}}function Ll(e){let t=new Map,n=[];for(let r of e)r.n.unit?_l(t,r.n.unit,r):n.push(Il([r],``));return{byUnit:new Map([...t].map(([e,t])=>[e,Il(t,e)])),single:n}}function Rl(e,t,n,r){let i=(e,t)=>{let i=e.map(e=>e.own?r?.get(e.id):void 0),a=e.map((e,t)=>{let n=i[t],r=jl(e.tasks.map(e=>e.n));return n&&Pl[n.state]?Ml([Pl[n.state],r]):r}),o=e.flatMap(e=>e.tasks),s=o.map(e=>e.n.key),c=e.find((e,t)=>a[t]===`running`)??e[e.length-1],l=i.find(Fl),u={key:c?.id??``,unit:t,state:Ml(a),count:s.length,keys:s,flow:n,counts:zl(o)},d=c?.own?r?.get(c.id)?.time_box:null,f=d?function(e){let t=Date.parse(e.started_at);return Number.isNaN(t)?``:new Date(t+1e3*e.deadline_s).toISOString()}(d):``,p=f?{...u,deadlineAt:f}:u;return l?{...p,error:l.error??``}:p},a=new Map,o=[],s=function(e,t,n){let r=new Map;for(let i of e){let{id:e,own:a}=kl(i,t,n);(r.get(e)??r.set(e,{id:e,own:a,tasks:[],unit:``}).get(e))?.tasks.push(i)}for(let e of r.values()){let t=new Set(e.tasks.map(e=>e.n.unit||``));e.unit=t.size===1?[...t][0]:``}return[...r.values()]}(e,t,r);for(let e of s)e.unit?_l(a,e.unit,e):o.push(i([e],``));let c=r?s.filter(e=>e.own&&Fl(r.get(e.id))).length:0,l=s.map(e=>e.own?r?.get(e.id)?.time_box:null).find(e=>e)??null;return{byUnit:new Map([...a].map(([e,t])=>[e,i(t,e)])),single:o,calls:s.length,errors:c,timeBox:l}}function zl(e){let t={total:e.length,done:0,partial:0,failed:0,running:0,pending:0,skipped:0,blocked:0};for(let n of e)t[n.n.state]+=1;return t}function Bl(e,t){let n=new Map;for(let r of e){let e=r.n.unit||``,i=n.get(e);(!i||El(Tl(r,t),i)>0)&&n.set(e,Tl(r,t))}return e.filter(e=>El(Tl(e,t),n.get(e.n.unit||``)??[])===0)}function Vl(e,t){let n=new Map;for(let r of e){let e=r.n.unit||``;(n.get(e)??n.set(e,new Set).get(e))?.add(Tl(r,t).join(`.`))}return new Map([...n].map(([e,t])=>[e,t.size]))}var Hl=(e,t)=>t&&t>1?{...e,passes:t}:e;function Ul(e,t){let n=xl(e);return Wl(n,t,n.tasks.filter(e=>Sl(e.path,t)))}function Wl(e,t,n){let r=t.length,i=new Map,a=new Map;for(let e of n){let t=Ol(e,r);(i.get(t.id)??i.set(t.id,{...t,tasks:[]}).get(t.id))?.tasks.push(e),a.set(e.n.key,t.id)}let o=new Map,s=new Map,c=new Map,l=new Map;for(let t of i.values()){let n=Dl(t.loops),i=n[n.length-1]??null;n.forEach((e,t)=>l.set(e,n[t-1]??null)),i&&c.set(t.id,i);let a=i?Bl(t.tasks,r):t.tasks;s.set(t.id,a);let u=t.type===`kind`?Ll(a):Rl(a,r,t.name,e.calls);if(i){let e=Vl(t.tasks,r);u.byUnit=new Map([...u.byUnit].map(([t,n])=>[t,Hl(n,e.get(t))]))}o.set(t.id,u)}let u=[...new Set([...o.values()].flatMap(e=>[...e.byUnit.keys()]))].sort((t,n)=>(e.unitRank.get(t)??0)-(e.unitRank.get(n)??0)),d=new Map,f=new Map;for(let e of i.values()){let t=Dl(e.loops);for(let n of e.tasks){let e=Tl(n,r);t.forEach((t,r)=>{d.set(t,Math.max(d.get(t)??1,e[r]??1));let i=f.get(t)??f.set(t,new Map).get(t),a=n.n.unit||``;(i?.get(a)??i?.set(a,new Set).get(a))?.add(e.slice(0,r+1).join(`.`))})}}let p=new Set,m=new Map,h=new Map,g=n=>{let i=0;for(;i<r&&n.path[i]===t[i];)i++;let a=Ol(n,i);return{id:`stub:${i}:${a.id}`,label:a.type===`kind`?e.labels.get(a.name)??a.name:Cl(a.name)}};for(let t of n){let n=a.get(t.n.key),i=(i,o)=>{let s=a.get(i);if(s===n)return void(o===`after`&&p.add(n));if(s!==void 0){let a=e.byKey.get(i),c=wl(a,r),l=wl(t,r),u=0;for(;u<c.length&&c[u]===l[u];)u++;let d=El(Tl(a,r).slice(0,u),Tl(t,r).slice(0,u))===0,f=`${s}\0${n}\0${o}`,p=m.get(f)??m.set(f,{from:s,to:n,type:o,tasks:new Set,samePass:!1}).get(f);p?.tasks.add(t.n.key),p&&d&&(p.samePass=!0);return}let c=e.byKey.get(i);if(!c)return;let l=g(c),u=`${l.id}\0${n}\0${o}`;(h.get(u)??h.set(u,{...l,to:n,type:o,tasks:new Set}).get(u))?.tasks.add(t.n.key)};for(let e of t.n.after??[])i(e,`after`);for(let e of t.from)i(e,`created`)}let _=[...m.values()].filter(e=>e.type===`after`||!m.has(`${e.from}\0${e.to}\0after`)),v=[...h.values()].filter(e=>e.type===`after`||!h.has(`${e.id}\0${e.to}\0after`)),y=[...l.keys()].map(e=>{let i=new Map;for(let[t,n]of f.get(e)??[])t&&i.set(n.size,(i.get(n.size)??0)+1);return{id:e,local:e,layer:[...t],loop:Number(e.slice(5).split(`.`).pop()),file:n[0]?.frames[r-1]?.file??``,parent:l.get(e)??null,passes:d.get(e)??1,spread:[...i].sort((e,t)=>e[0]-t[0]),layers:[]}});return{model:{path:[...t],nodes:[...i.values()].map(n=>{let r=o.get(n.id),i=r.byUnit.size>0;return{id:n.id,type:n.type,name:n.name,label:n.type===`kind`?e.labels.get(n.name)??n.name:Cl(n.name),layer:[...t],kinds:[...new Set(n.tasks.map(e=>e.n.kind))],executor:n.type===`flow`?null:Nl(n.tasks.map(e=>e.n)),box:c.get(n.id)??null,units:i?u.map(e=>r.byUnit.get(e)??null):[],single:r.single,inOrder:p.has(n.id),counts:zl(s.get(n.id)??[]),calls:r.calls??0,errors:r.errors??0,timeBox:r.timeBox??null}}),boxes:y,fns:[],edges:_.map(e=>({from:e.from,to:e.to,tasks:e.tasks.size,type:e.type,samePass:e.samePass,back:!1})),stubs:v.map(e=>({id:e.id,label:e.label,to:e.to,tasks:e.tasks.size,type:e.type})),units:u},drafts:i,ix:e}}var Gl=e=>e===`after`?`solid`:`dashed`;function Kl(e){return{nodes:e.nodes.map(e=>({id:e.id,cluster:e.box})),clusters:[...e.boxes.map(e=>({id:e.id,parent:e.parent,cycle:!0})),...e.fns.map(e=>({id:e.id,parent:e.parent,cycle:!1}))],edges:e.edges.map(e=>({from:e.from,to:e.to,style:Gl(e.type),ranks:e.samePass})),stubs:e.stubs.map(e=>({id:e.id,to:e.to,style:Gl(e.type)}))}}function ql(e,t){let n=new Map(e.nodes.map(e=>[e.id,e])),r=new Map(t.clusters.map(e=>[e.id,e.layers]));return{...t,path:e.path,nodes:t.drawn.map(e=>n.get(e)),boxes:e.boxes.map(e=>({...e,layers:r.get(e.id)??[]})),fns:e.fns,edges:e.edges.map((e,n)=>({...e,back:t.back[n]??!1})),stubs:e.stubs,units:e.units}}var Jl=`fx::`,Yl=(e,t)=>`${e.join(`/`)}/${t}`,Xl=e=>e?.state===`raised`||e?.state===`closed`;function Zl(e,t,n=!1){let r=t.length,i=new Map,a=new Set;if(e.calls)for(let t of e.calls.values())Xl(t)&&a.add(t.id);for(let o of e.tasks){if(!Sl(o.path,t))continue;let e=o.n.state,s=!!o.call&&[...a].some(e=>o.call===e||o.call.startsWith(`${e}.`)),c=null;for(let t=r;t<o.path.length;t++){let a=Ol(o,t),l=o.path.slice(0,t),u=Yl(l,a.id),d=i.get(u);if(!d){let e={total:0,done:0,partial:0,failed:0,running:0,pending:0,skipped:0,blocked:0},n=t>0?o.frames[t-1]?.file??``:``;d={key:u,layer:l,id:a.id,name:a.name,depth:t-r,loops:a.loops,file:n,counts:e,tasks:0,agent:0,failed:0,running:0,stuck:0,errors:!1,kids:new Set,fns:new Set,parent:c},i.set(u,d)}d.tasks+=1,d.counts.total+=1,d.counts[e]+=1,C(o.n)||(d.agent+=1),e===`failed`?d.failed+=1:e===`running`?d.running+=1:(e===`blocked`||e===`pending`&&!n)&&(d.stuck+=1),s&&(d.errors=!0);let f=Ol(o,t+1);d.kids.add(f.id),f.type===`flow`&&d.fns.add(Yl(o.path.slice(0,t+1),f.id)),c=u}}return i}function Ql(e,t=new Set){return Math.log2(1+e.tasks)+(e.failed||e.errors?4:0)+(e.running?3:0)+(e.stuck?1.5:0)+(t.has(e.key)?6:0)}var $l=(e,t=new Set)=>e.agent>0||e.failed>0||e.errors||e.running>0||e.stuck>0||t.has(e.key),eu=(e,t)=>Ql(e,t)-1.5*e.depth;function tu(e,t,n){let r=new Set,i=[],a=n.closed??new Set,o=n.open??new Set,s=t,c=new Set([...e.values()].filter(e=>e.parent===null).map(e=>e.key));for(;c.size;){let t=null,l=-1/0;for(let r of c){let i=e.get(r),a=o.has(r)?1/0:eu(i,n.toward);a>l&&(t=i,l=a)}if(!t)break;if(c.delete(t.key),a.has(t.key))continue;let u=t.kids.size-1;if(o.has(t.key)||n.all||!(s+u>n.budget)&&$l(t,n.toward)){r.add(t.key),o.has(t.key)||i.push(t.key),s+=u;for(let e of t.fns)c.add(e)}}return{open:r,auto:i}}function nu(e,t){let n=new Set,r=null;e.startsWith(`fx::`)?r=e.slice(4).split(`#`)[0]??null:e.includes(`::`)&&(r=e.slice(0,e.lastIndexOf(`::`)));for(let e=r;e!==null&&t.has(e);e=t.get(e)?.parent??null)n.add(e);return n}function ru(e,t,n){let r=xl(e),i=t.length,a=r.tasks.filter(e=>Sl(e.path,t)),o=Zl(r,t,n.live),s=new Set(a.map(e=>Ol(e,i).id)).size,c=n.sel?nu(n.sel,o):n.toward,{open:l,auto:u}=tu(o,s,{...n,toward:c}),d=iu(r,t,a,o,l),f=e=>Ha(Va(Kl(e))).span;if(n.maxSpan&&!n.all)for(;u.length&&f(d)>n.maxSpan;)l.delete(u.pop()),d=iu(r,t,a,o,l);return{model:d,open:l,stats:o}}function iu(e,t,n,r,i){let a=t.length,o=new Map,s=new Map([[``,[]]]);for(let e of n){let t=a,n=``;for(s.get(``)?.push(e);t<e.path.length;){let r=Yl(e.path.slice(0,t),Ol(e,t).id);if(!i.has(r))break;n=r,_l(s,r,e),t++}o.set(e.n.key,{key:n,depth:t})}let c=new Map,l=new Map;for(let[n,i]of s){let a=r.get(n),o=a?[...a.layer,a.name]:[...t];l.set(n,o),c.set(n,Wl(e,o,i))}let u=(e,t)=>e===``?t:`${e}::${t}`,d=e=>{let t=r.get(e);return(t?c.get(t.parent??``):void 0)?.model.nodes.find(e=>e.id===t?.id)},f=e=>(e=>{let t=r.get(e);if(!t||t.parent===null)return!1;let n=c.get(t.parent);if(!n)return!1;let i=n.model.nodes.filter(e=>e.type===`flow`);return i.length===1&&i[0]?.id===t.id&&!i[0]?.box})(e)?f(r.get(e).parent):`${Jl}${e}`,p=[],m=[],h=new Map,g=new Set;for(let e of[...c.keys()].sort((e,t)=>e===``?-1:t===``?1:(r.get(e)?.depth??0)-(r.get(t)?.depth??0))){let t=c.get(e),n=l.get(e),a=e===``?null:f(e);if(e!==``){let t=d(e),n=r.get(e),i=t?{...t,id:u(n.parent??``,t.id)}:void 0,o={id:`${Jl}${e}`,key:e,node:i};if(a===`fx::${e}`){let e=t?.box?u(n.parent??``,t.box):n.parent===null?null:f(n.parent);h.set(a,{id:a,parent:e,parts:[o]})}else h.get(a)?.parts.push(o)}for(let r of t.model.boxes)m.push({...r,id:u(e,r.id),parent:r.parent?u(e,r.parent):a,layer:n});for(let r of t.model.nodes)r.type===`flow`&&i.has(Yl(n,r.id))||p.push({...r,id:u(e,r.id),box:r.box?u(e,r.box):a,layer:n});for(let e of t.model.units)g.add(e)}let _=[...g].sort((t,n)=>(e.unitRank.get(t)??0)-(e.unitRank.get(n)??0)),v=new Map([...c].map(([e,t])=>[e,t.model.units]));for(let e of p){let t=e.id.includes(`::`)?e.id.slice(0,e.id.lastIndexOf(`::`)):``,n=v.get(t)??[];if(!e.units.length)continue;let r=new Map(n.map((t,n)=>[t,e.units[n]??null]));e.units=_.map(e=>r.get(e)??null)}let y=e=>{let t=o.get(e.n.key);return u(t.key,Ol(e,t.depth).id)},b=e=>e.path.slice(0,o.get(e.n.key).depth),x=new Set,S=new Map,ee=new Map;for(let r of n){let n=y(r),i=(i,o)=>{let s=e.byKey.get(i);if(!s)return;if(Sl(s.path,t)){let e=y(s);if(e===n)return void(o===`after`&&x.add(n));let t=b(s),i=b(r),a=0;for(;a<t.length&&a<i.length&&t[a]===i[a];)a++;let c=wl(s,a),l=wl(r,a),u=0;for(;u<c.length&&c[u]===l[u];)u++;let d=El(Tl(s,a).slice(0,u),Tl(r,a).slice(0,u))===0,f=`${e}\0${n}\0${o}`,p=S.get(f)??S.set(f,{from:e,to:n,type:o,tasks:new Set,samePass:!1}).get(f);p?.tasks.add(r.n.key),p&&d&&(p.samePass=!0);return}let c=0;for(;c<a&&s.path[c]===t[c];)c++;let l=Ol(s,c),u={id:`stub:${c}:${l.id}`,label:l.type===`kind`?e.labels.get(l.name)??l.name:Cl(l.name)},d=`${u.id}\0${n}\0${o}`;(ee.get(d)??ee.set(d,{...u,to:n,type:o,tasks:new Set}).get(d))?.tasks.add(r.n.key)};for(let e of r.n.after??[])i(e,`after`);for(let e of r.from)i(e,`created`)}for(let e of p)e.inOrder=x.has(e.id);let te=[...S.values()].filter(e=>e.type===`after`||!S.has(`${e.from}\0${e.to}\0after`)).map(e=>({from:e.from,to:e.to,tasks:e.tasks.size,type:e.type,samePass:e.samePass,back:!1})),ne=[...ee.values()].filter(e=>e.type===`after`||!ee.has(`${e.id}\0${e.to}\0after`)).map(e=>({id:e.id,label:e.label,to:e.to,tasks:e.tasks.size,type:e.type}));return{path:[...t],nodes:p,boxes:m,fns:[...h.values()],edges:te,stubs:ne,units:_}}function au(e){let t=new Map;for(let n of e)for(let e of n.after??[])(t.get(e)??t.set(e,[]).get(e))?.push(n.key);return{byKey:new Map(e.map(e=>[e.key,e])),waiters:t}}function ou(e,t,n,r,i=Ul(e,t)){let{drafts:a,ix:o}=i,s=ql(i.model,Va(Kl(i.model),r,!1)),c=s.boxes.find(e=>e.id===n);if(!c)return null;let l=t.length,u=c.id.slice(5).split(`.`).length-1,d=new Map(s.boxes.map(e=>[e.id,e])),f=new Map(s.nodes.map(e=>[e.id,e])),p=e=>Tl(e,l).slice(u),m=e=>e.layers.flat().flatMap(e=>d.has(e)?m(d.get(e)):[e]),h=e=>m(e).flatMap(e=>a.get(e)?.tasks??[]),g=(e,t)=>e.length===t.length&&El(e,t)===0,_=(e,t)=>{let n=t.length;return[...new Set(h(e).map(p).filter(e=>e.length>n&&El(e.slice(0,n),t)===0).map(e=>e[n]))].sort((e,t)=>e-t).flatMap(n=>{let r=[...t,n],i=e.layers.flat().flatMap(e=>{let t=d.get(e);if(t){let e=_(t,r);return e.length?[{type:`loop`,box:t,kids:e}]:[]}let n=f.get(e);return n&&a.get(e)?.tasks.some(e=>g(p(e),r))?[{type:`node`,node:n,passes:r}]:[]});return i.length?[{type:`pass`,box:e,pass:n,kids:i}]:[]})},v=_(c,[]),y=[],b=e=>e.type===`node`?1:e.kids.reduce((e,t)=>e+b(t),0),x=e=>e.type===`node`?1:1+Math.max(0,...e.kids.map(x)),S=Math.max(1,...v.map(x)),ee=Array.from({length:S},()=>[]),te=(e,t)=>{let n=ee[t];if(e.type===`node`)return n.push({type:`node`,node:e.node,passes:e.passes,span:1,rows:S-t}),void y.push({node:e.node,passes:e.passes});n.push(e.type===`pass`?{type:`pass`,box:e.box,pass:e.pass,span:b(e),rows:1}:{type:`loop`,box:e.box,span:b(e),rows:1});for(let n of e.kids)te(n,t+1)};for(let e of v)te(e,0);let ne=h(c),re=new Set(ne.map(e=>e.n.unit||``)),ie=[...s.units.filter(e=>re.has(e)),...re.has(``)?[``]:[]],ae=new Map;return y.forEach((e,t)=>{for(let n of a.get(e.node.id)?.tasks??[])g(p(n),e.passes)&&_l(ae,`${t}\0${n.n.unit||``}`,n)}),{box:c,columns:y,head:ee,rows:ie.map(e=>{let t=y.map((t,n)=>{let r=ae.get(`${n}\0${e}`);return r?.length?((e,t,n)=>{let r=a.get(e.node.id);if(r.type===`kind`)return Il(t,n);let i=Rl(t,l,r.name,o.calls);return n?i.byUnit.get(n)??i.single[0]??null:i.single[0]??null})(t,r,e):null});return{unit:e,passes:new Set(ne.filter(t=>(t.n.unit||``)===e).map(e=>Tl(e,l).slice(0,u+1).join(`.`))).size,state:Ml(t.filter(e=>e!==null).map(e=>e.state)),cells:t}})}}function su(e,t){let n=new Map(e.map((e,t)=>[e,t])),r=e=>t===`passes`?-e.passes:t===`state`?-Al[e.state]:0;return[...e].sort((e,t)=>r(e)-r(t)||(n.get(e)??0)-(n.get(t)??0))}var cu=(e,t,n=[])=>`${e}${n.length?`|${n.join(`.`)}`:``}#${t.unit||t.key}`;function lu(e,t,n){if(!n)return null;let r=n.indexOf(`#`);if(r<0){let t=e.nodes.find(e=>e.id===n);if(t)return{type:`node`,id:n,node:t};let r=e.boxes.find(e=>e.id===n);if(r)return{type:`box`,id:n,box:r};let i=e.fns.flatMap(e=>e.parts).find(e=>e.id===n);return i?{type:`node`,id:n,node:i.node}:null}let[i=``,a]=n.slice(0,r).split(`|`),o=n.slice(r+1),s=e=>!!e&&(e.unit?e.unit===o:e.key===o);if(a!==void 0){if(!t)return null;let e=t.columns.findIndex(e=>e.node.id===i&&e.passes.join(`.`)===a),r=t.columns[e],o=t.rows.map(t=>t.cells[e]).find(s);return r&&o?{type:`mark`,id:n,node:r.node,mark:o,passes:r.passes}:null}let c=e.nodes.find(e=>e.id===i),l=c?[...c.units,...c.single].find(s):void 0;return c&&l?{type:`mark`,id:n,node:c,mark:l,passes:[]}:null}var uu=[`done`,`partial`,`running`,`pending`,`failed`,`blocked`,`skipped`],du={done:{tone:`done`,shape:`round`},partial:{tone:`attention`,shape:`half`},running:{tone:`running`,shape:`round`},pending:{tone:`neutral`,shape:`ring`},failed:{tone:`failed`,shape:`square`},blocked:{tone:`attention`,shape:`hatched`},skipped:{tone:`muted`,shape:`round`}};function fu(e){return Object.fromEntries(uu.map(t=>[t,{...du[t],label:pu(t,e),rank:Al[t],count:n=>mu(t,n,e)}]))}function pu(e,t){return Io(h(e),t)}function mu(e,t,n){let r=h(e);return X(r!==`waiting`||n?r:`not_run`,t)}function hu(e){return E(T`${e.done} of ${e.total} tasks done`)}function gu(e,t){return[`failed`,`blocked`,`partial`,`running`,`pending`,`skipped`].filter(t=>e[t]).map(n=>mu(n,e[n],t))}function _u(e,t){let n=e.counts,r=[];return n.failed&&r.push([`err`,mu(`failed`,n.failed,t)]),e.errors&&r.push([`err`,e.errors===1?E(`1 flow call stopped with an error`):E(T`${e.errors} flow calls stopped with an error`)]),n.blocked&&r.push([`warn`,mu(`blocked`,n.blocked,t)]),n.partial&&r.push([`warn`,mu(`partial`,n.partial,t)]),n.running&&r.push([`live`,mu(`running`,n.running,t)]),n.pending&&r.push([`mut`,mu(`pending`,n.pending,t)]),n.skipped&&r.push([`mut`,mu(`skipped`,n.skipped,t)]),r}function vu(e,t){let n=t?t.slice(t.lastIndexOf(`/`)+1):``;return n?`${n}:${e}`:E(T`line ${e}`)}function yu(e){return e.executor===`agent`?E(`Agent task`):e.executor===`python`?E(`Python task`):e.executor===`mixed`?K(E(`Agent task`),E(`Python task`)):``}function bu(e){return e.type===`flow`?K(E(T`Function ${e.name}`),e.timeBox?E(T`Deadline ${z(e.timeBox.deadline_s)}`):``,hu(e.counts)):K(e.label,yu(e),hu(e.counts))}function xu(e,t){let n=e=>{let n=t.nodes.find(t=>t.id===e);return n?n.box?E(T`${n.label} in the loop`):n.label:e},r=r=>[...t.stubs.filter(t=>t.to===e.id&&t.type===r).map(e=>e.label),...t.edges.filter(t=>t.to===e.id&&t.type===r).map(e=>n(e.from))];return{waits:r(`after`),after:r(`created`),feeds:[...new Set(t.edges.filter(t=>t.from===e.id).map(e=>n(e.to)))]}}function Su(e,t,n){let r=e.counts,{waits:i,after:a,feeds:o}=xu(e,t);return[e.type===`flow`?K(E(T`Function ${e.label}`),hu(r)):K(e.label,yu(e),hu(r)),..._u(e,n).map(([,e])=>e),i.length?E(T`Waits for: ${Mo(i)}`):``,a.length?E(T`Created after: ${Mo(a)}`):``,o.length?E(T`Later tasks: ${Mo(o)}`):``].filter(Boolean).join(`. `)}function Cu(e,t,n,r=``){let i=t.flow?void 0:n.task,a=q({kind:t.count===1&&i?i.kind:e,unit:t.unit}),o=t.flow||t.state!==`blocked`?``:n.causeOf(t.key),s=o?E(T`Not started: ${o}`):pu(t.state,n.live),c=i?.attempts??1,l=c>1?E(T`${c} attempts`):``;return{name:a,parts:[s,r,t.passes?$o(t.passes):``,l,t.flow||t.count>1?E(T`${t.count} tasks`):``,...t.counts?gu(t.counts,n.live):[],...t.error===void 0?[]:[E(`Flow call stopped with an error`),t.error],t.flow||t.state!==`done`&&t.state!==`partial`&&t.state!==`failed`||!i?.wall_s?``:z(i.wall_s)].filter(Boolean),id:t.flow?E(T`Flow call ${t.key}`):t.key}}var wu={err:`failed`,warn:`attention`,live:`running`,mut:`muted`};function Tu(e){return t=>{let{outcomes:n}=S(e.journal,e.plan),r=n.get(t);return r?Ko(r,n,e.run):``}}var Eu=e=>{let t=Tu(e);return n=>({task:e.links.byKey.get(n.key),causeOf:t,live:e.live})},Du=e=>E(T`Loop at ${vu(e.loop,e.file)}`),Ou=e=>e.executor===`mixed`?[`agent`,`python`]:e.executor?[e.executor]:[];function ku(e,t,n=!1){let r=Eu(t),i=(e,t)=>{let{name:n,parts:i}=Cu(e.label,t,r(t));return{id:cu(e.id,t),state:t.state,label:K(n,...i),tip:[n,i[0]??``].filter(Boolean).join(`
383
- `),...t.passes?{badge:String(t.passes)}:{},name:t.unit||t.key,drill:!!t.flow}},a=e.nodes.map(r=>{let a=r.counts;return{id:r.id,label:r.label,tip:bu(r),summary:Su(r,e,t.live),cluster:r.box,icons:Ou(r),accent:r.executor===`agent`,drill:r.type===`flow`,marks:r.units.map(e=>e&&i(r,e)),loose:r.single.map(e=>i(r,e)),counts:a,progress:{done:a.done,total:a.total,label:hu(a)},notes:_u(r,t.live).map(([e,t])=>({text:t,tone:wu[e]})),look:a.failed||r.errors?`failed`:a.running?`running`:a.done+a.skipped===a.total?`done`:void 0,...r.type===`flow`&&n?{toggle:`closed`}:{}}}),o=e.fns.map(n=>{let r=n.parts[0].node,i=n.parts.map(e=>e.node.label).join(` › `),a=r.counts,o=_u(r,t.live).map(([,e])=>e);return{id:n.id,parent:n.parent,label:i,tip:r.name,note:`${a.done}/${a.total}`,...o.length?{detail:K(...o)}:{},summary:K(i,Su(r,e,t.live)),chipLabel:E(T`Inside ${i}`),chipTip:K(E(`Function`),i),drill:!0,cycle:!1,toggle:`open`,path:n.parts.map(e=>({id:e.id,label:e.node.label,tip:e.node.name}))}}),s=e.boxes.map(e=>{let t=Du(e),n=e.spread.length>1?es(e.spread):``,r=Qo(e.passes);return{id:e.id,parent:e.parent,label:ts(),tip:K(ts(),t),note:r,...n?{detail:n,detailTip:E(`Units by number of passes`)}:{},summary:K(t,r,n),chipLabel:K(E(T`Passes of the loop at ${vu(e.loop,e.file)}`),r),chipTip:K(t,r),drill:!0,cycle:!0}});return{series:e.units,nodes:a,clusters:[...s,...o],edges:e.edges.map(e=>({from:e.from,to:e.to,style:Gl(e.type),weight:e.tasks,ranks:e.samePass})),stubs:e.stubs.map(e=>({id:e.id,label:e.label,to:e.to,style:Gl(e.type),weight:e.tasks}))}}function Au(e,t,n){let r=Ul(e,t);return{input:ku(r.model,{...n,plan:e}),proj:r}}function ju(e,t,n){let r=Eu(n),i=e.box,a=Du(i),o=e.rows.filter(e=>e.unit).length,s=e.head.map(e=>e.map(e=>{if(e.type===`pass`)return{id:`${e.box.id}|${e.pass}`,label:Zo(e.pass),tip:e.box.id===i.id?Du(e.box):E(T`Nested loop at ${vu(e.box.loop,e.box.file)}`),span:e.span,rows:e.rows,type:`group`};if(e.type===`loop`)return{id:e.box.id,label:ts(),tip:E(T`Nested loop at ${vu(e.box.loop,e.box.file)}`),code:!0,span:e.span,rows:e.rows,type:`group`};let t=e.node,n=t.type===`flow`;return{id:`${t.id}|${e.passes.join(`.`)}`,label:t.label,tip:n?E(T`Function ${t.name}`):K(t.label,yu(t)),summary:n?t.label:K(t.label,yu(t)),icons:t.executor&&t.executor!==`mixed`?[t.executor]:[],span:e.span,rows:e.rows,type:`column`}}));return{caption:a,...i.file?{captionTip:`${i.file}:${i.loop}`}:{},label:K(a,Qo(i.passes)),facts:[Qo(i.passes),i.spread.length>1?es(i.spread):``,E(o===1?`1 unit`:T`${o} units`)].filter(Boolean),head:s,columns:e.columns.map(e=>({id:`${e.node.id}|${e.passes.join(`.`)}`,groups:e.passes.map((t,n)=>e.passes.slice(0,n+1).join(`.`))})),rows:su(e.rows,t).map(t=>({id:t.unit,label:t.unit||E(`No unit`),tip:t.unit||E(`Tasks that run once per run, not once per unit`),muted:!t.unit,value:t.passes,strong:t.passes>1,cells:t.cells.map((t,n)=>t&&((t,n)=>{let i=e.columns[t],a=i?.node.label??``,o=i?.passes??[],{name:s,parts:c}=Cu(a,n,r(n),Mo(o.map(Zo)));return{id:cu(i?.node.id??``,n,o),state:n.state,label:K(s,...c),tip:[s,c[0]??``].filter(Boolean).join(`
384
- `),drill:!!n.flow}})(n,t))})),value:{label:E(`Passes`),tip:E(`Passes of this loop`)},sorts:[{id:`order`,label:E(`Scheduled order`)},{id:`passes`,label:E(`Number of passes`)},{id:`state`,label:E(`Status`,{id:`status`})}],sort:t}}function Mu(e,t,n,r,i,a,o){let s=ou(e,t,n,r,o);return s&&{input:ju(s,i,{...a,plan:e}),matrix:s}}function Nu(e,t=[],n,r=!1){let{model:i}=Ul(e,t);return ql(i,Va(Kl(i),n,r))}function Pu(e){let t=xl(e),n=[],r=new Set;if(t.calls)for(let e of t.calls.values())e.state!==`raised`&&e.state!==`closed`||r.add(e.id);for(;;){let e=null,i=!0,a=[];for(let r of t.tasks){if(!Sl(r.path,n))continue;let t=Ol(r,n.length);if(t.type===`kind`||e&&e.id!==t.id){i=!1;break}e=t,a.push(r)}let o=a.some(e=>{return i=kl(e,n.length,t.calls).id,r.has(i)&&![...r].some(e=>e!==i&&e.startsWith(`${i}.`));var i});if(!i||!e||o)return n;n.push(e.name)}}function Fu(e){let t=e[e.length-1];return t?.startsWith(`loop:`)?{path:e.slice(0,-1),loop:t}:{path:[...e],loop:null}}function Iu(e,t){let{path:n,loop:r}=Fu(t),i=xl(e),a=t=>!r||Ul(e,t).model.boxes.some(e=>e.id===r);if(i.tasks.some(e=>Sl(e.path,n)))return a(n)?[...t]:null;let o=n[n.length-1];if(o===void 0)return null;let s=e=>{let t=new Map;for(let n of i.tasks)n.path.forEach((r,i)=>e(r)&&t.set(n.path.slice(0,i+1).join(`/`),n.path.slice(0,i+1)));return[...t.values()]},c=s(e=>e===o),l=c.length?c:s(e=>Cl(e)===o),u=l.length===1?l[0]:null;return u&&a(u)?r?[...u,r]:u:null}function Lu(e,t){if(e.length<=t.length)return null;let n=e.slice(0,-1);return n.length<=t.length?[]:n}function Ru(e,t,n){return pi((e=>e?`⚙`:`✦`)(e),t,{cls:n??`k-ic `+(e?``:`llm`)})}var zu=O` .k-ic{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:6px;margin-right:7px;font-size:var(--font-size-sm);background:var(--raise);color:var(--text-muted);flex:none;}.k-ic.llm{background:var(--agent-bg);color:var(--agent);}`;function Bu(e,t){t!==e.sel&&Q(e.el,`ca-navigate`,{sel:t})}function Vu(e,t,n=e.unit){let r=t.join(`/`);Q(e.el,`ca-navigate`,{layer:r===e.auto.join(`/`)?``:r,unit:n})}function Hu(e,t){Q(e.el,`ca-navigate`,{tab:`tasks`,kind:t.kinds.length===1?t.kinds[0]:``})}function Uu(e,t,n){if(t.flow)return Vu(e,[...n?.layer??e.graph.path,t.flow],t.unit||e.unit);let r=e.links.byKey.get(t.key);Q(e.el,`ca-open-task`,t.state===`blocked`?{key:t.key,view:`input`}:r?.executor===`python`?{key:t.key,view:`output`}:{key:t.key})}function Wu(e,t){return t.type===`mark`?Uu(e,t.mark,t.node):t.type===`box`?Vu(e,[...t.box.layer,t.box.local]):t.node.type===`flow`?Vu(e,[...t.node.layer,t.node.name]):void Hu(e,t.node)}function Gu(e,t){let n=function(e,t){let n=e=>{let r=e;for(;r.type===`fn`&&!t(r.id)&&r.kids.length===1&&r.kids[0]?.type===`fn`&&!t(r.kids[0].id);){let e=r.kids[0];r={...r,label:`${r.label} › ${e.label}`,tip:`${r.tip}\n${e.tip}`,kids:e.kids,parts:[...r.parts,...e.parts]}}return{...r,kids:r.kids.map(n)}};return e.map(n)}(t,t=>e.current(t)),r=(t,n=``)=>{let i=t.kids.length>0&&e.expanded(t.id),a=t.counts,o=a.total?Math.round((a.done+a.partial+a.skipped)/a.total*100):0,s=(t=>_u({counts:t.counts,errors:+!!t.errors},e.live))(t),c=s.map(([,e])=>e).join(`|`),l=c===n?[]:s,u=t.parts.some(t=>e.current(t.id)),d=t.parts.some(t=>e.here(t.id));return k`<li>
410
+ </div>`})}};H([N({attribute:!1})],Vl.prototype,`journal`,void 0),H([N({attribute:!1})],Vl.prototype,`accounts`,void 0),H([N({attribute:!1})],Vl.prototype,`caps`,void 0),H([N({attribute:!1})],Vl.prototype,`rests`,void 0),H([N()],Vl.prototype,`rule`,void 0),H([N({type:Boolean})],Vl.prototype,`live`,void 0),Vl=H([M(`ca-quota`),E()],Vl);var Hl={running:`running`,stopped:`done`,failed:`failed`,unknown:`muted`},Ul=class extends j{constructor(...e){super(...e),this.services=[],this.nodes=[],this.live=!1}static{this.styles=[B,D` :host{display:block;}ul{margin:0;padding:0;list-style:none;display:grid;gap:8px;}li{display:grid;grid-template-columns:max-content 1fr;column-gap:10px;row-gap:2px;align-items:baseline;font-size:12px;}.name{font-family:var(--mono);color:var(--text);overflow-wrap:anywhere;}.addr{font-family:var(--mono);color:var(--text-2);overflow-wrap:anywhere;}.facts{grid-column:2;color:var(--text-2);overflow-wrap:anywhere;}.by{grid-column:2;}`]}render(){if(!this.services.length)return O`<div class="meta">${T(`No services`)}</div>`;let e=new Map(this.nodes.map(e=>[e.key,e]));return O`<ul>
411
+ ${this.services.map(t=>{let n=function(e,t){return e.start_error?`failed`:e.stopped_at?`stopped`:t?`running`:`unknown`}(t,this.live),r=t.key?e.get(t.key):void 0;return O`<li>
412
+ ${$r({text:fc(n),tone:Hl[n]})}
413
+ <div><span class="name" title="services.jsonl">${t.name}</span>${t.address?O` <span class="addr">${t.address}</span>`:A}</div>
414
+ <div class="facts">${function(e){return e.start_error?K(G(e.started_at),e.start_error):K(T(w`Started ${G(e.started_at)} in ${z(e.start_s??0)}`),e.stopped_at?T(w`Stopped ${G(e.stopped_at)}`):``,function(e){switch(e){case`run_end`:return T(`The run ended`);case`interrupted`:return T(`The run was stopped by a signal`);default:return``}}(e.stop_cause),e.stop_error?T(`Stop failed`):``,e.stop_error)}(t)}</div>
415
+ ${t.key?O`<div class="by">${al(this,r?q(r):t.key,r??{key:t.key})}</div>`:A}
416
+ </li>`})}
417
+ </ul>`}};H([N({attribute:!1})],Ul.prototype,`services`,void 0),H([N({attribute:!1})],Ul.prototype,`nodes`,void 0),H([N({type:Boolean})],Ul.prototype,`live`,void 0),Ul=H([M(`ca-services`),E()],Ul),R(`cae-mark-matrix`,no),R(`cae-layered-graph`,zo);var Wl=`loop:`,Gl=(e,t,n)=>{let r=e.get(t);r?r.push(n):e.set(t,[n])},Kl=e=>typeof e==`string`;function ql(e){let t=e.flow_calls;return Array.isArray(t)&&t.length!==0?new Map(t.filter(e=>e&&Kl(e.id)&&Kl(e.function)).map(e=>[e.id,e])):null}var Jl=new WeakMap;function Yl(e){let t=Jl.get(e);if(t)return t;let n=e.nodes.map(e=>{let t=function(e){let t=e.flow;if(!Array.isArray(t))return[];let n=[];for(let e of t){let t=e;if(!t||typeof t!=`object`||!Kl(t.function))break;let r=(Array.isArray(t.loops)?t.loops:[]).filter(e=>!!e&&typeof e.line==`number`);n.push({function:t.function,file:Kl(t.file)?t.file:``,line:typeof t.line==`number`?t.line:0,loops:r.map(e=>e.line),passes:r.map(e=>typeof e.pass==`number`&&e.pass>=1?e.pass:1)})}return n}(e),n=e.created_from;return{n:e,frames:t,path:t.map(e=>e.function),from:Array.isArray(n)?n.filter(Kl):[],call:Kl(e.flow_call)?e.flow_call:``}}),r=new Map;for(let t of e.nodes)t.unit&&!r.has(t.unit)&&r.set(t.unit,r.size);let i={tasks:n,byKey:new Map(n.map(e=>[e.n.key,e])),calls:ql(e),unitRank:r,labels:new Map(e.groups.map(e=>[e.id,e.label]))};return Jl.set(e,i),i}var Xl=(e,t)=>t.every((t,n)=>e[n]===t),Zl=e=>e.slice(e.lastIndexOf(`.`)+1)||e,Ql=(e,t)=>t>0?e.frames[t-1]?.loops??[]:[],$l=(e,t)=>t>0?e.frames[t-1]?.passes??[]:[];function eu(e,t){for(let n=0;n<Math.max(e.length,t.length);n++){let r=(e[n]??0)-(t[n]??0);if(r)return r}return 0}var tu=e=>e.map((t,n)=>`${Wl}${e.slice(0,n+1).join(`.`)}`);function nu(e,t){let n=Ql(e,t),r=n.length?`@${n.join(`.`)}`:``;if(e.path.length<=t)return{id:`kind:${e.n.group}${r}`,type:`kind`,name:e.n.group,loops:n};let i=e.path[t];return{id:`flow:${i}${r}`,type:`flow`,name:i,loops:n}}function ru(e,t,n){if(!e.call)return{id:`>${t}`,own:!1};let r=e.call.split(`.`),i=r.map((e,t)=>r.slice(0,t+1).join(`.`)),a=0,o=0;if(n)for(let r=1;r<i.length;r++){let s=n.get(i[r])?.function,c=s===void 0?-1:e.frames.findIndex((e,t)=>t>o&&e.function===s);if(c<0||c>t)break;a=r,o=c}else a=Math.min(t,i.length-1),o=a;let s=i[a];return o===t?{id:s,own:!0}:{id:`${s}>${t}`,own:!1}}var iu={failed:6,running:5,blocked:4,partial:3,pending:2,skipped:1,done:0},au=e=>e.reduce((e,t)=>iu[t.state]>iu[e]?t.state:e,`done`),ou=e=>e.reduce((e,t)=>iu[t]>iu[e]?t:e,`done`);function su(e){let t=e.filter(S).length;return t===0?`agent`:t===e.length?`python`:`mixed`}var cu={running:`running`,returned:`done`,raised:`failed`,closed:`failed`},lu=e=>e?.state===`raised`||e?.state===`closed`;function uu(e,t){let n=e.map(e=>e.n);return{key:(n.find(e=>e.state===`running`)??n[n.length-1]??{key:``}).key,unit:t,state:au(n),count:n.length,keys:n.map(e=>e.key)}}function du(e){let t=new Map,n=[];for(let r of e)r.n.unit?Gl(t,r.n.unit,r):n.push(uu([r],``));return{byUnit:new Map([...t].map(([e,t])=>[e,uu(t,e)])),single:n}}function fu(e,t,n,r){let i=(e,t)=>{let i=e.map(e=>e.own?r?.get(e.id):void 0),a=e.map((e,t)=>{let n=i[t],r=au(e.tasks.map(e=>e.n));return n&&cu[n.state]?ou([cu[n.state],r]):r}),o=e.flatMap(e=>e.tasks),s=o.map(e=>e.n.key),c=e.find((e,t)=>a[t]===`running`)??e[e.length-1],l=i.find(lu),u={key:c?.id??``,unit:t,state:ou(a),count:s.length,keys:s,flow:n,counts:pu(o)},d=c?.own?r?.get(c.id)?.time_box:null,f=d?function(e){let t=Date.parse(e.started_at);return Number.isNaN(t)?``:new Date(t+1e3*e.deadline_s).toISOString()}(d):``,p=f?{...u,deadlineAt:f}:u;return l?{...p,error:l.error??``}:p},a=new Map,o=[],s=function(e,t,n){let r=new Map;for(let i of e){let{id:e,own:a}=ru(i,t,n);(r.get(e)??r.set(e,{id:e,own:a,tasks:[],unit:``}).get(e))?.tasks.push(i)}for(let e of r.values()){let t=new Set(e.tasks.map(e=>e.n.unit||``));e.unit=t.size===1?[...t][0]:``}return[...r.values()]}(e,t,r);for(let e of s)e.unit?Gl(a,e.unit,e):o.push(i([e],``));let c=r?s.filter(e=>e.own&&lu(r.get(e.id))).length:0,l=s.map(e=>e.own?r?.get(e.id)?.time_box:null).find(e=>e)??null;return{byUnit:new Map([...a].map(([e,t])=>[e,i(t,e)])),single:o,calls:s.length,errors:c,timeBox:l}}function pu(e){let t={total:e.length,done:0,partial:0,failed:0,running:0,pending:0,skipped:0,blocked:0};for(let n of e)t[n.n.state]+=1;return t}function mu(e,t){let n=new Map;for(let r of e){let e=r.n.unit||``,i=n.get(e);(!i||eu($l(r,t),i)>0)&&n.set(e,$l(r,t))}return e.filter(e=>eu($l(e,t),n.get(e.n.unit||``)??[])===0)}function hu(e,t){let n=new Map;for(let r of e){let e=r.n.unit||``;(n.get(e)??n.set(e,new Set).get(e))?.add($l(r,t).join(`.`))}return new Map([...n].map(([e,t])=>[e,t.size]))}var gu=(e,t)=>t&&t>1?{...e,passes:t}:e;function _u(e,t){let n=Yl(e);return vu(n,t,n.tasks.filter(e=>Xl(e.path,t)))}function vu(e,t,n){let r=t.length,i=new Map,a=new Map;for(let e of n){let t=nu(e,r);(i.get(t.id)??i.set(t.id,{...t,tasks:[]}).get(t.id))?.tasks.push(e),a.set(e.n.key,t.id)}let o=new Map,s=new Map,c=new Map,l=new Map;for(let t of i.values()){let n=tu(t.loops),i=n[n.length-1]??null;n.forEach((e,t)=>l.set(e,n[t-1]??null)),i&&c.set(t.id,i);let a=i?mu(t.tasks,r):t.tasks;s.set(t.id,a);let u=t.type===`kind`?du(a):fu(a,r,t.name,e.calls);if(i){let e=hu(t.tasks,r);u.byUnit=new Map([...u.byUnit].map(([t,n])=>[t,gu(n,e.get(t))]))}o.set(t.id,u)}let u=[...new Set([...o.values()].flatMap(e=>[...e.byUnit.keys()]))].sort((t,n)=>(e.unitRank.get(t)??0)-(e.unitRank.get(n)??0)),d=new Map,f=new Map;for(let e of i.values()){let t=tu(e.loops);for(let n of e.tasks){let e=$l(n,r);t.forEach((t,r)=>{d.set(t,Math.max(d.get(t)??1,e[r]??1));let i=f.get(t)??f.set(t,new Map).get(t),a=n.n.unit||``;(i?.get(a)??i?.set(a,new Set).get(a))?.add(e.slice(0,r+1).join(`.`))})}}let p=new Set,m=new Map,h=new Map,g=n=>{let i=0;for(;i<r&&n.path[i]===t[i];)i++;let a=nu(n,i);return{id:`stub:${i}:${a.id}`,label:a.type===`kind`?e.labels.get(a.name)??a.name:Zl(a.name)}};for(let t of n){let n=a.get(t.n.key),i=(i,o)=>{let s=a.get(i);if(s===n)return void(o===`after`&&p.add(n));if(s!==void 0){let a=e.byKey.get(i),c=Ql(a,r),l=Ql(t,r),u=0;for(;u<c.length&&c[u]===l[u];)u++;let d=eu($l(a,r).slice(0,u),$l(t,r).slice(0,u))===0,f=`${s}\0${n}\0${o}`,p=m.get(f)??m.set(f,{from:s,to:n,type:o,tasks:new Set,samePass:!1}).get(f);p?.tasks.add(t.n.key),p&&d&&(p.samePass=!0);return}let c=e.byKey.get(i);if(!c)return;let l=g(c),u=`${l.id}\0${n}\0${o}`;(h.get(u)??h.set(u,{...l,to:n,type:o,tasks:new Set}).get(u))?.tasks.add(t.n.key)};for(let e of t.n.after??[])i(e,`after`);for(let e of t.from)i(e,`created`)}let _=[...m.values()].filter(e=>e.type===`after`||!m.has(`${e.from}\0${e.to}\0after`)),ee=[...h.values()].filter(e=>e.type===`after`||!h.has(`${e.id}\0${e.to}\0after`)),v=[...l.keys()].map(e=>{let i=new Map;for(let[t,n]of f.get(e)??[])t&&i.set(n.size,(i.get(n.size)??0)+1);return{id:e,local:e,layer:[...t],loop:Number(e.slice(5).split(`.`).pop()),file:n[0]?.frames[r-1]?.file??``,parent:l.get(e)??null,passes:d.get(e)??1,spread:[...i].sort((e,t)=>e[0]-t[0]),layers:[]}});return{model:{path:[...t],nodes:[...i.values()].map(n=>{let r=o.get(n.id),i=r.byUnit.size>0;return{id:n.id,type:n.type,name:n.name,label:n.type===`kind`?e.labels.get(n.name)??n.name:Zl(n.name),layer:[...t],kinds:[...new Set(n.tasks.map(e=>e.n.kind))],executor:n.type===`flow`?null:su(n.tasks.map(e=>e.n)),box:c.get(n.id)??null,units:i?u.map(e=>r.byUnit.get(e)??null):[],single:r.single,inOrder:p.has(n.id),counts:pu(s.get(n.id)??[]),calls:r.calls??0,errors:r.errors??0,timeBox:r.timeBox??null}}),boxes:v,fns:[],edges:_.map(e=>({from:e.from,to:e.to,tasks:e.tasks.size,type:e.type,samePass:e.samePass,back:!1})),stubs:ee.map(e=>({id:e.id,label:e.label,to:e.to,tasks:e.tasks.size,type:e.type})),units:u},drafts:i,ix:e}}var yu=e=>e===`after`?`solid`:`dashed`;function bu(e){return{nodes:e.nodes.map(e=>({id:e.id,cluster:e.box})),clusters:[...e.boxes.map(e=>({id:e.id,parent:e.parent,cycle:!0})),...e.fns.map(e=>({id:e.id,parent:e.parent,cycle:!1}))],edges:e.edges.map(e=>({from:e.from,to:e.to,style:yu(e.type),ranks:e.samePass})),stubs:e.stubs.map(e=>({id:e.id,to:e.to,style:yu(e.type)}))}}function xu(e,t){let n=new Map(e.nodes.map(e=>[e.id,e])),r=new Map(t.clusters.map(e=>[e.id,e.layers]));return{...t,path:e.path,nodes:t.drawn.map(e=>n.get(e)),boxes:e.boxes.map(e=>({...e,layers:r.get(e.id)??[]})),fns:e.fns,edges:e.edges.map((e,n)=>({...e,back:t.back[n]??!1})),stubs:e.stubs,units:e.units}}var Su=`fx::`,Cu=(e,t)=>`${e.join(`/`)}/${t}`,wu=e=>e?.state===`raised`||e?.state===`closed`;function Tu(e,t,n=!1){let r=t.length,i=new Map,a=new Set;if(e.calls)for(let t of e.calls.values())wu(t)&&a.add(t.id);for(let o of e.tasks){if(!Xl(o.path,t))continue;let e=o.n.state,s=!!o.call&&[...a].some(e=>o.call===e||o.call.startsWith(`${e}.`)),c=null;for(let t=r;t<o.path.length;t++){let a=nu(o,t),l=o.path.slice(0,t),u=Cu(l,a.id),d=i.get(u);if(!d){let e={total:0,done:0,partial:0,failed:0,running:0,pending:0,skipped:0,blocked:0},n=t>0?o.frames[t-1]?.file??``:``;d={key:u,layer:l,id:a.id,name:a.name,depth:t-r,loops:a.loops,file:n,counts:e,tasks:0,agent:0,failed:0,running:0,stuck:0,errors:!1,kids:new Set,fns:new Set,parent:c},i.set(u,d)}d.tasks+=1,d.counts.total+=1,d.counts[e]+=1,S(o.n)||(d.agent+=1),e===`failed`?d.failed+=1:e===`running`?d.running+=1:(e===`blocked`||e===`pending`&&!n)&&(d.stuck+=1),s&&(d.errors=!0);let f=nu(o,t+1);d.kids.add(f.id),f.type===`flow`&&d.fns.add(Cu(o.path.slice(0,t+1),f.id)),c=u}}return i}function Eu(e,t=new Set){return Math.log2(1+e.tasks)+(e.failed||e.errors?4:0)+(e.running?3:0)+(e.stuck?1.5:0)+(t.has(e.key)?6:0)}var Du=(e,t=new Set)=>e.agent>0||e.failed>0||e.errors||e.running>0||e.stuck>0||t.has(e.key),Ou=(e,t)=>Eu(e,t)-1.5*e.depth;function ku(e,t,n){let r=new Set,i=[],a=n.closed??new Set,o=n.open??new Set,s=t,c=new Set([...e.values()].filter(e=>e.parent===null).map(e=>e.key));for(;c.size;){let t=null,l=-1/0;for(let r of c){let i=e.get(r),a=o.has(r)?1/0:Ou(i,n.toward);a>l&&(t=i,l=a)}if(!t)break;if(c.delete(t.key),a.has(t.key))continue;let u=t.kids.size-1;if(o.has(t.key)||n.all||!(s+u>n.budget)&&Du(t,n.toward)){r.add(t.key),o.has(t.key)||i.push(t.key),s+=u;for(let e of t.fns)c.add(e)}}return{open:r,auto:i}}function Au(e,t){let n=new Set,r=null;e.startsWith(`fx::`)?r=e.slice(4).split(`#`)[0]??null:e.includes(`::`)&&(r=e.slice(0,e.lastIndexOf(`::`)));for(let e=r;e!==null&&t.has(e);e=t.get(e)?.parent??null)n.add(e);return n}function ju(e,t,n){let r=Yl(e),i=t.length,a=r.tasks.filter(e=>Xl(e.path,t)),o=Tu(r,t,n.live),s=new Set(a.map(e=>nu(e,i).id)).size,c=n.sel?Au(n.sel,o):n.toward,{open:l,auto:u}=ku(o,s,{...n,toward:c}),d=Mu(r,t,a,o,l),f=e=>uo(lo(bu(e))).span;if(n.maxSpan&&!n.all)for(;u.length&&f(d)>n.maxSpan;)l.delete(u.pop()),d=Mu(r,t,a,o,l);return{model:d,open:l,stats:o}}function Mu(e,t,n,r,i){let a=t.length,o=new Map,s=new Map([[``,[]]]);for(let e of n){let t=a,n=``;for(s.get(``)?.push(e);t<e.path.length;){let r=Cu(e.path.slice(0,t),nu(e,t).id);if(!i.has(r))break;n=r,Gl(s,r,e),t++}o.set(e.n.key,{key:n,depth:t})}let c=new Map,l=new Map;for(let[n,i]of s){let a=r.get(n),o=a?[...a.layer,a.name]:[...t];l.set(n,o),c.set(n,vu(e,o,i))}let u=(e,t)=>e===``?t:`${e}::${t}`,d=e=>{let t=r.get(e);return(t?c.get(t.parent??``):void 0)?.model.nodes.find(e=>e.id===t?.id)},f=e=>(e=>{let t=r.get(e);if(!t||t.parent===null)return!1;let n=c.get(t.parent);if(!n)return!1;let i=n.model.nodes.filter(e=>e.type===`flow`);return i.length===1&&i[0]?.id===t.id&&!i[0]?.box})(e)?f(r.get(e).parent):`${Su}${e}`,p=[],m=[],h=new Map,g=new Set;for(let e of[...c.keys()].sort((e,t)=>e===``?-1:t===``?1:(r.get(e)?.depth??0)-(r.get(t)?.depth??0))){let t=c.get(e),n=l.get(e),a=e===``?null:f(e);if(e!==``){let t=d(e),n=r.get(e),i=t?{...t,id:u(n.parent??``,t.id)}:void 0,o={id:`${Su}${e}`,key:e,node:i};if(a===`fx::${e}`){let e=t?.box?u(n.parent??``,t.box):n.parent===null?null:f(n.parent);h.set(a,{id:a,parent:e,parts:[o]})}else h.get(a)?.parts.push(o)}for(let r of t.model.boxes)m.push({...r,id:u(e,r.id),parent:r.parent?u(e,r.parent):a,layer:n});for(let r of t.model.nodes)r.type===`flow`&&i.has(Cu(n,r.id))||p.push({...r,id:u(e,r.id),box:r.box?u(e,r.box):a,layer:n});for(let e of t.model.units)g.add(e)}let _=[...g].sort((t,n)=>(e.unitRank.get(t)??0)-(e.unitRank.get(n)??0)),ee=new Map([...c].map(([e,t])=>[e,t.model.units]));for(let e of p){let t=e.id.includes(`::`)?e.id.slice(0,e.id.lastIndexOf(`::`)):``,n=ee.get(t)??[];if(!e.units.length)continue;let r=new Map(n.map((t,n)=>[t,e.units[n]??null]));e.units=_.map(e=>r.get(e)??null)}let v=e=>{let t=o.get(e.n.key);return u(t.key,nu(e,t.depth).id)},y=e=>e.path.slice(0,o.get(e.n.key).depth),b=new Set,x=new Map,te=new Map;for(let r of n){let n=v(r),i=(i,o)=>{let s=e.byKey.get(i);if(!s)return;if(Xl(s.path,t)){let e=v(s);if(e===n)return void(o===`after`&&b.add(n));let t=y(s),i=y(r),a=0;for(;a<t.length&&a<i.length&&t[a]===i[a];)a++;let c=Ql(s,a),l=Ql(r,a),u=0;for(;u<c.length&&c[u]===l[u];)u++;let d=eu($l(s,a).slice(0,u),$l(r,a).slice(0,u))===0,f=`${e}\0${n}\0${o}`,p=x.get(f)??x.set(f,{from:e,to:n,type:o,tasks:new Set,samePass:!1}).get(f);p?.tasks.add(r.n.key),p&&d&&(p.samePass=!0);return}let c=0;for(;c<a&&s.path[c]===t[c];)c++;let l=nu(s,c),u={id:`stub:${c}:${l.id}`,label:l.type===`kind`?e.labels.get(l.name)??l.name:Zl(l.name)},d=`${u.id}\0${n}\0${o}`;(te.get(d)??te.set(d,{...u,to:n,type:o,tasks:new Set}).get(d))?.tasks.add(r.n.key)};for(let e of r.n.after??[])i(e,`after`);for(let e of r.from)i(e,`created`)}for(let e of p)e.inOrder=b.has(e.id);let ne=[...x.values()].filter(e=>e.type===`after`||!x.has(`${e.from}\0${e.to}\0after`)).map(e=>({from:e.from,to:e.to,tasks:e.tasks.size,type:e.type,samePass:e.samePass,back:!1})),re=[...te.values()].filter(e=>e.type===`after`||!te.has(`${e.id}\0${e.to}\0after`)).map(e=>({id:e.id,label:e.label,to:e.to,tasks:e.tasks.size,type:e.type}));return{path:[...t],nodes:p,boxes:m,fns:[...h.values()],edges:ne,stubs:re,units:_}}function Nu(e){let t=new Map;for(let n of e)for(let e of n.after??[])(t.get(e)??t.set(e,[]).get(e))?.push(n.key);return{byKey:new Map(e.map(e=>[e.key,e])),waiters:t}}function Pu(e,t,n,r,i=_u(e,t)){let{drafts:a,ix:o}=i,s=xu(i.model,lo(bu(i.model),r,!1)),c=s.boxes.find(e=>e.id===n);if(!c)return null;let l=t.length,u=c.id.slice(5).split(`.`).length-1,d=new Map(s.boxes.map(e=>[e.id,e])),f=new Map(s.nodes.map(e=>[e.id,e])),p=e=>$l(e,l).slice(u),m=e=>e.layers.flat().flatMap(e=>d.has(e)?m(d.get(e)):[e]),h=e=>m(e).flatMap(e=>a.get(e)?.tasks??[]),g=(e,t)=>e.length===t.length&&eu(e,t)===0,_=(e,t)=>{let n=t.length;return[...new Set(h(e).map(p).filter(e=>e.length>n&&eu(e.slice(0,n),t)===0).map(e=>e[n]))].sort((e,t)=>e-t).flatMap(n=>{let r=[...t,n],i=e.layers.flat().flatMap(e=>{let t=d.get(e);if(t){let e=_(t,r);return e.length?[{type:`loop`,box:t,kids:e}]:[]}let n=f.get(e);return n&&a.get(e)?.tasks.some(e=>g(p(e),r))?[{type:`node`,node:n,passes:r}]:[]});return i.length?[{type:`pass`,box:e,pass:n,kids:i}]:[]})},ee=_(c,[]),v=[],y=e=>e.type===`node`?1:e.kids.reduce((e,t)=>e+y(t),0),b=e=>e.type===`node`?1:1+Math.max(0,...e.kids.map(b)),x=Math.max(1,...ee.map(b)),te=Array.from({length:x},()=>[]),ne=(e,t)=>{let n=te[t];if(e.type===`node`)return n.push({type:`node`,node:e.node,passes:e.passes,span:1,rows:x-t}),void v.push({node:e.node,passes:e.passes});n.push(e.type===`pass`?{type:`pass`,box:e.box,pass:e.pass,span:y(e),rows:1}:{type:`loop`,box:e.box,span:y(e),rows:1});for(let n of e.kids)ne(n,t+1)};for(let e of ee)ne(e,0);let re=h(c),ie=new Set(re.map(e=>e.n.unit||``)),ae=[...s.units.filter(e=>ie.has(e)),...ie.has(``)?[``]:[]],oe=new Map;return v.forEach((e,t)=>{for(let n of a.get(e.node.id)?.tasks??[])g(p(n),e.passes)&&Gl(oe,`${t}\0${n.n.unit||``}`,n)}),{box:c,columns:v,head:te,rows:ae.map(e=>{let t=v.map((t,n)=>{let r=oe.get(`${n}\0${e}`);return r?.length?((e,t,n)=>{let r=a.get(e.node.id);if(r.type===`kind`)return uu(t,n);let i=fu(t,l,r.name,o.calls);return n?i.byUnit.get(n)??i.single[0]??null:i.single[0]??null})(t,r,e):null});return{unit:e,passes:new Set(re.filter(t=>(t.n.unit||``)===e).map(e=>$l(e,l).slice(0,u+1).join(`.`))).size,state:ou(t.filter(e=>e!==null).map(e=>e.state)),cells:t}})}}function Fu(e,t){let n=new Map(e.map((e,t)=>[e,t])),r=e=>t===`passes`?-e.passes:t===`state`?-iu[e.state]:0;return[...e].sort((e,t)=>r(e)-r(t)||(n.get(e)??0)-(n.get(t)??0))}var Iu=(e,t,n=[])=>`${e}${n.length?`|${n.join(`.`)}`:``}#${t.unit||t.key}`;function Lu(e,t,n){if(!n)return null;let r=n.indexOf(`#`);if(r<0){let t=e.nodes.find(e=>e.id===n);if(t)return{type:`node`,id:n,node:t};let r=e.boxes.find(e=>e.id===n);if(r)return{type:`box`,id:n,box:r};let i=e.fns.flatMap(e=>e.parts).find(e=>e.id===n);return i?{type:`node`,id:n,node:i.node}:null}let[i=``,a]=n.slice(0,r).split(`|`),o=n.slice(r+1),s=e=>!!e&&(e.unit?e.unit===o:e.key===o);if(a!==void 0){if(!t)return null;let e=t.columns.findIndex(e=>e.node.id===i&&e.passes.join(`.`)===a),r=t.columns[e],o=t.rows.map(t=>t.cells[e]).find(s);return r&&o?{type:`mark`,id:n,node:r.node,mark:o,passes:r.passes}:null}let c=e.nodes.find(e=>e.id===i),l=c?[...c.units,...c.single].find(s):void 0;return c&&l?{type:`mark`,id:n,node:c,mark:l,passes:[]}:null}var Ru=[`done`,`partial`,`running`,`pending`,`failed`,`blocked`,`skipped`],zu={done:{tone:`done`,shape:`round`},partial:{tone:`attention`,shape:`half`},running:{tone:`running`,shape:`round`},pending:{tone:`neutral`,shape:`ring`},failed:{tone:`failed`,shape:`square`},blocked:{tone:`attention`,shape:`hatched`},skipped:{tone:`muted`,shape:`round`}};function Bu(e){return Object.fromEntries(Ru.map(t=>[t,{...zu[t],label:Vu(t,e),rank:iu[t],count:n=>Hu(t,n,e)}]))}function Vu(e,t){return is(h(e),t)}function Hu(e,t,n){let r=h(e);return X(r!==`waiting`||n?r:`not_run`,t)}function Uu(e){return T(w`${e.done} of ${e.total} tasks done`)}function Wu(e,t){return[`failed`,`blocked`,`partial`,`running`,`pending`,`skipped`].filter(t=>e[t]).map(n=>Hu(n,e[n],t))}function Gu(e,t){let n=e.counts,r=[];return n.failed&&r.push([`err`,Hu(`failed`,n.failed,t)]),e.errors&&r.push([`err`,e.errors===1?T(`1 flow call stopped with an error`):T(w`${e.errors} flow calls stopped with an error`)]),n.blocked&&r.push([`warn`,Hu(`blocked`,n.blocked,t)]),n.partial&&r.push([`warn`,Hu(`partial`,n.partial,t)]),n.running&&r.push([`live`,Hu(`running`,n.running,t)]),n.pending&&r.push([`mut`,Hu(`pending`,n.pending,t)]),n.skipped&&r.push([`mut`,Hu(`skipped`,n.skipped,t)]),r}function Ku(e,t){let n=t?t.slice(t.lastIndexOf(`/`)+1):``;return n?`${n}:${e}`:T(w`line ${e}`)}function qu(e){return e.executor===`agent`?T(`Agent task`):e.executor===`python`?T(`Python task`):e.executor===`mixed`?K(T(`Agent task`),T(`Python task`)):``}function Ju(e){return e.type===`flow`?K(T(w`Function ${e.name}`),e.timeBox?T(w`Deadline ${z(e.timeBox.deadline_s)}`):``,Uu(e.counts)):K(e.label,qu(e),Uu(e.counts))}function Yu(e,t){let n=e=>{let n=t.nodes.find(t=>t.id===e);return n?n.box?T(w`${n.label} in the loop`):n.label:e},r=r=>[...t.stubs.filter(t=>t.to===e.id&&t.type===r).map(e=>e.label),...t.edges.filter(t=>t.to===e.id&&t.type===r).map(e=>n(e.from))];return{waits:r(`after`),after:r(`created`),feeds:[...new Set(t.edges.filter(t=>t.from===e.id).map(e=>n(e.to)))]}}function Xu(e,t,n){let r=e.counts,{waits:i,after:a,feeds:o}=Yu(e,t);return[e.type===`flow`?K(T(w`Function ${e.label}`),Uu(r)):K(e.label,qu(e),Uu(r)),...Gu(e,n).map(([,e])=>e),i.length?T(w`Waits for: ${es(i)}`):``,a.length?T(w`Created after: ${es(a)}`):``,o.length?T(w`Later tasks: ${es(o)}`):``].filter(Boolean).join(`. `)}function Zu(e,t,n,r=``){let i=t.flow?void 0:n.task,a=q({kind:t.count===1&&i?i.kind:e,unit:t.unit}),o=t.flow||t.state!==`blocked`?``:n.causeOf(t.key),s=o?T(w`Not started: ${o}`):Vu(t.state,n.live),c=i?.attempts??1,l=c>1?T(w`${c} attempts`):``;return{name:a,parts:[s,r,t.passes?xs(t.passes):``,l,t.flow||t.count>1?T(w`${t.count} tasks`):``,...t.counts?Wu(t.counts,n.live):[],...t.error===void 0?[]:[T(`Flow call stopped with an error`),t.error],t.flow||t.state!==`done`&&t.state!==`partial`&&t.state!==`failed`||!i?.wall_s?``:z(i.wall_s)].filter(Boolean),id:t.flow?T(w`Flow call ${t.key}`):t.key}}var Qu={err:`failed`,warn:`attention`,live:`running`,mut:`muted`};function $u(e){return t=>{let{outcomes:n}=x(e.journal,e.plan),r=n.get(t);return r?ms(r,n,e.run):``}}var ed=e=>{let t=$u(e);return n=>({task:e.links.byKey.get(n.key),causeOf:t,live:e.live})},td=e=>T(w`Loop at ${Ku(e.loop,e.file)}`),nd=e=>e.executor===`mixed`?[`agent`,`python`]:e.executor?[e.executor]:[];function rd(e,t,n=!1){let r=ed(t),i=(e,t)=>{let{name:n,parts:i}=Zu(e.label,t,r(t));return{id:Iu(e.id,t),state:t.state,label:K(n,...i),tip:[n,i[0]??``].filter(Boolean).join(`
418
+ `),...t.passes?{badge:String(t.passes)}:{},name:t.unit||t.key,drill:!!t.flow}},a=e.nodes.map(r=>{let a=r.counts;return{id:r.id,label:r.label,tip:Ju(r),summary:Xu(r,e,t.live),cluster:r.box,icons:nd(r),accent:r.executor===`agent`,drill:r.type===`flow`,marks:r.units.map(e=>e&&i(r,e)),loose:r.single.map(e=>i(r,e)),counts:a,progress:{done:a.done,total:a.total,label:Uu(a)},notes:Gu(r,t.live).map(([e,t])=>({text:t,tone:Qu[e]})),look:a.failed||r.errors?`failed`:a.running?`running`:a.done+a.skipped===a.total?`done`:void 0,...r.type===`flow`&&n?{toggle:`closed`}:{}}}),o=e.fns.map(n=>{let r=n.parts[0].node,i=n.parts.map(e=>e.node.label).join(` › `),a=r.counts,o=Gu(r,t.live).map(([,e])=>e);return{id:n.id,parent:n.parent,label:i,tip:r.name,note:`${a.done}/${a.total}`,...o.length?{detail:K(...o)}:{},summary:K(i,Xu(r,e,t.live)),chipLabel:T(w`Inside ${i}`),chipTip:K(T(`Function`),i),drill:!0,cycle:!1,toggle:`open`,path:n.parts.map(e=>({id:e.id,label:e.node.label,tip:e.node.name}))}}),s=e.boxes.map(e=>{let t=td(e),n=e.spread.length>1?Ss(e.spread):``,r=bs(e.passes);return{id:e.id,parent:e.parent,label:Cs(),tip:K(Cs(),t),note:r,...n?{detail:n,detailTip:T(`Units by number of passes`)}:{},summary:K(t,r,n),chipLabel:K(T(w`Passes of the loop at ${Ku(e.loop,e.file)}`),r),chipTip:K(t,r),drill:!0,cycle:!0}});return{series:e.units,nodes:a,clusters:[...s,...o],edges:e.edges.map(e=>({from:e.from,to:e.to,style:yu(e.type),weight:e.tasks,ranks:e.samePass})),stubs:e.stubs.map(e=>({id:e.id,label:e.label,to:e.to,style:yu(e.type),weight:e.tasks}))}}function id(e,t,n){let r=_u(e,t);return{input:rd(r.model,{...n,plan:e}),proj:r}}function ad(e,t,n){let r=ed(n),i=e.box,a=td(i),o=e.rows.filter(e=>e.unit).length,s=e.head.map(e=>e.map(e=>{if(e.type===`pass`)return{id:`${e.box.id}|${e.pass}`,label:ys(e.pass),tip:e.box.id===i.id?td(e.box):T(w`Nested loop at ${Ku(e.box.loop,e.box.file)}`),span:e.span,rows:e.rows,type:`group`};if(e.type===`loop`)return{id:e.box.id,label:Cs(),tip:T(w`Nested loop at ${Ku(e.box.loop,e.box.file)}`),code:!0,span:e.span,rows:e.rows,type:`group`};let t=e.node,n=t.type===`flow`;return{id:`${t.id}|${e.passes.join(`.`)}`,label:t.label,tip:n?T(w`Function ${t.name}`):K(t.label,qu(t)),summary:n?t.label:K(t.label,qu(t)),icons:t.executor&&t.executor!==`mixed`?[t.executor]:[],span:e.span,rows:e.rows,type:`column`}}));return{caption:a,...i.file?{captionTip:`${i.file}:${i.loop}`}:{},label:K(a,bs(i.passes)),facts:[bs(i.passes),i.spread.length>1?Ss(i.spread):``,T(o===1?`1 unit`:w`${o} units`)].filter(Boolean),head:s,columns:e.columns.map(e=>({id:`${e.node.id}|${e.passes.join(`.`)}`,groups:e.passes.map((t,n)=>e.passes.slice(0,n+1).join(`.`))})),rows:Fu(e.rows,t).map(t=>({id:t.unit,label:t.unit||T(`No unit`),tip:t.unit||T(`Tasks that run once per run, not once per unit`),muted:!t.unit,value:t.passes,strong:t.passes>1,cells:t.cells.map((t,n)=>t&&((t,n)=>{let i=e.columns[t],a=i?.node.label??``,o=i?.passes??[],{name:s,parts:c}=Zu(a,n,r(n),es(o.map(ys)));return{id:Iu(i?.node.id??``,n,o),state:n.state,label:K(s,...c),tip:[s,c[0]??``].filter(Boolean).join(`
419
+ `),drill:!!n.flow}})(n,t))})),value:{label:T(`Passes`),tip:T(`Passes of this loop`)},sorts:[{id:`order`,label:T(`Scheduled order`)},{id:`passes`,label:T(`Number of passes`)},{id:`state`,label:T(`Status`,{id:`status`})}],sort:t}}function od(e,t,n,r,i,a,o){let s=Pu(e,t,n,r,o);return s&&{input:ad(s,i,{...a,plan:e}),matrix:s}}function sd(e,t=[],n,r=!1){let{model:i}=_u(e,t);return xu(i,lo(bu(i),n,r))}function cd(e){let t=Yl(e),n=[],r=new Set;if(t.calls)for(let e of t.calls.values())e.state!==`raised`&&e.state!==`closed`||r.add(e.id);for(;;){let e=null,i=!0,a=[];for(let r of t.tasks){if(!Xl(r.path,n))continue;let t=nu(r,n.length);if(t.type===`kind`||e&&e.id!==t.id){i=!1;break}e=t,a.push(r)}let o=a.some(e=>{return i=ru(e,n.length,t.calls).id,r.has(i)&&![...r].some(e=>e!==i&&e.startsWith(`${i}.`));var i});if(!i||!e||o)return n;n.push(e.name)}}function ld(e){let t=e[e.length-1];return t?.startsWith(`loop:`)?{path:e.slice(0,-1),loop:t}:{path:[...e],loop:null}}function ud(e,t){let{path:n,loop:r}=ld(t),i=Yl(e),a=t=>!r||_u(e,t).model.boxes.some(e=>e.id===r);if(i.tasks.some(e=>Xl(e.path,n)))return a(n)?[...t]:null;let o=n[n.length-1];if(o===void 0)return null;let s=e=>{let t=new Map;for(let n of i.tasks)n.path.forEach((r,i)=>e(r)&&t.set(n.path.slice(0,i+1).join(`/`),n.path.slice(0,i+1)));return[...t.values()]},c=s(e=>e===o),l=c.length?c:s(e=>Zl(e)===o),u=l.length===1?l[0]:null;return u&&a(u)?r?[...u,r]:u:null}function dd(e,t){if(e.length<=t.length)return null;let n=e.slice(0,-1);return n.length<=t.length?[]:n}function fd(e,t,n){return mi((e=>e?`⚙`:`✦`)(e),t,{cls:n??`k-ic `+(e?``:`llm`)})}var pd=D` .k-ic{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:6px;margin-right:7px;font-size:var(--font-size-sm);background:var(--raise);color:var(--text-muted);flex:none;}.k-ic.llm{background:var(--agent-bg);color:var(--agent);}`;function md(e,t){t!==e.sel&&Q(e.el,`ca-navigate`,{sel:t})}function hd(e,t,n=e.unit){let r=t.join(`/`);Q(e.el,`ca-navigate`,{layer:r===e.auto.join(`/`)?``:r,unit:n})}function gd(e,t){Q(e.el,`ca-navigate`,{tab:`tasks`,kind:t.kinds.length===1?t.kinds[0]:``})}function _d(e,t,n){if(t.flow)return hd(e,[...n?.layer??e.graph.path,t.flow],t.unit||e.unit);let r=e.links.byKey.get(t.key);Q(e.el,`ca-open-task`,t.state===`blocked`?{key:t.key,view:`input`}:r?.executor===`python`?{key:t.key,view:`output`}:{key:t.key})}function vd(e,t){return t.type===`mark`?_d(e,t.mark,t.node):t.type===`box`?hd(e,[...t.box.layer,t.box.local]):t.node.type===`flow`?hd(e,[...t.node.layer,t.node.name]):void gd(e,t.node)}function yd(e,t){let n=function(e,t){let n=e=>{let r=e;for(;r.type===`fn`&&!t(r.id)&&r.kids.length===1&&r.kids[0]?.type===`fn`&&!t(r.kids[0].id);){let e=r.kids[0];r={...r,label:`${r.label} › ${e.label}`,tip:`${r.tip}\n${e.tip}`,kids:e.kids,parts:[...r.parts,...e.parts]}}return{...r,kids:r.kids.map(n)}};return e.map(n)}(t,t=>e.current(t)),r=(t,n=``)=>{let i=t.kids.length>0&&e.expanded(t.id),a=t.counts,o=a.total?Math.round((a.done+a.partial+a.skipped)/a.total*100):0,s=(t=>Gu({counts:t.counts,errors:+!!t.errors},e.live))(t),c=s.map(([,e])=>e).join(`|`),l=c===n?[]:s,u=t.parts.some(t=>e.current(t.id)),d=t.parts.some(t=>e.here(t.id));return O`<li>
385
420
  <div class="orow ${u?`cur`:``} ${t.parts.some(t=>e.selected(t.id))?`sel`:``}">
386
- ${t.kids.length?k`<button type="button" class="odisc" aria-expanded=${i} aria-label=${E(i?T`Fold ${t.label}`:T`Unfold ${t.label}`)} @click=${()=>e.expand(t.id,!i)}><span aria-hidden="true">${i?`▾`:`▸`}</span></button>`:k`<span class="odisc" aria-hidden="true"></span>`}
387
- <button type="button" class="oname" title=${t.tip||j} aria-current=${d?`location`:j} @click=${n=>n.detail<2&&e.pick(t)} @dblclick=${()=>e.enter(t)} @keydown=${n=>{n.key===`Enter`&&(n.preventDefault(),e.enter(t))}}>
388
- ${t.type===`loop`?Za(12):j}<span class="ol">${t.label}</span>
421
+ ${t.kids.length?O`<button type="button" class="odisc" aria-expanded=${i} aria-label=${T(i?w`Fold ${t.label}`:w`Unfold ${t.label}`)} @click=${()=>e.expand(t.id,!i)}><span aria-hidden="true">${i?`▾`:`▸`}</span></button>`:O`<span class="odisc" aria-hidden="true"></span>`}
422
+ <button type="button" class="oname" title=${t.tip||A} aria-current=${d?`location`:A} @click=${n=>n.detail<2&&e.pick(t)} @dblclick=${()=>e.enter(t)} @keydown=${n=>{n.key===`Enter`&&(n.preventDefault(),e.enter(t))}}>
423
+ ${t.type===`loop`?bo(12):A}<span class="ol">${t.label}</span>
389
424
  <span class="obar" aria-hidden="true"><i style="width:${o}%"></i></span>
390
- <span class="ocount" title=${hu(a)}>${a.done}/${a.total}</span>
425
+ <span class="ocount" title=${Uu(a)}>${a.done}/${a.total}</span>
391
426
  </button>
392
- ${l.length?k`<div class="onote">${l.map(([e,t])=>k`<span class=${e}>${t}</span>`)}</div>`:j}
427
+ ${l.length?O`<div class="onote">${l.map(([e,t])=>O`<span class=${e}>${t}</span>`)}</div>`:A}
393
428
  </div>
394
- ${i?k`<ul>${t.kids.map(e=>r(e,c))}</ul>`:j}
395
- </li>`};return k`<nav class="outline" aria-label=${E(`Outline of the flow`)}><ul class="otree">${n.map(e=>r(e))}</ul></nav>`}var Ku=[V,zu,Jr,O` :host{display:flex;flex-direction:column;}cae-layered-graph{flex:auto;min-height:0;}.bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin-bottom:8px;font-size:12px;}.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:4px;list-style:none;margin:0;padding:0;}.crumbs li{display:inline-flex;align-items:center;gap:4px;}.crumbs .sep{color:var(--text-muted);}.crumbs button{all:unset;cursor:pointer;color:var(--accent);font-family:var(--mono);}.crumbs button:hover{text-decoration:underline;}.crumbs button:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:2px;border-radius:3px;}.crumbs [aria-current]{font-family:var(--mono);color:var(--text);font-weight:600;}.pin{display:inline-flex;align-items:center;gap:8px;color:var(--text-2);}.pin b{font-family:var(--mono);}.missing{margin-bottom:8px;font-size:12px;color:var(--status-attention);}.missing code{font-family:var(--mono);}.card{display:contents;}.ic{display:block;flex:none;}.loop-ic{color:var(--text-2);}.in-ic{color:var(--text-muted);}.card h4{margin:0;display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:13px;font-weight:600;color:var(--text);overflow-wrap:anywhere;}.card h4 .mark{--m:11px;flex:none;cursor:default;animation:none;}.card h4 .mark:hover{transform:none;outline:none;}.card h4 .k-ic{width:18px;height:18px;margin:0;border-radius:5px;font-size:10px;}.card .sub{color:var(--text-2);}.card dl{display:grid;grid-template-columns:fit-content(42%) minmax(0,1fr);gap:4px 12px;margin:0;}.card dt{color:var(--text-muted);word-break:keep-all;overflow-wrap:break-word;}.card dd{margin:0;color:var(--text);overflow-wrap:anywhere;font-variant-numeric:tabular-nums;}.card dd .err{color:var(--status-failed);}.card dd .warn{color:var(--status-attention);}.card .acts{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding-top:2px;}.card .go{all:unset;cursor:pointer;color:var(--accent);overflow-wrap:anywhere;}.card .go.primary{font-weight:600;}.card .go:hover{text-decoration:underline;}.card .go:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:2px;border-radius:3px;}.card .acts .switch{margin-left:auto;}.switch{all:unset;cursor:pointer;font-size:11.5px;color:var(--text-2);padding:2px 8px;border-radius:6px;border:1px solid var(--line);}.switch:hover{color:var(--text);border-color:var(--line2);}.switch:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:1px;}.switch[aria-pressed='true']{color:var(--text);background:var(--accent-bg);border-color:var(--accent);}.opens{display:inline-flex;gap:6px;margin-left:auto;}.whole{display:grid;grid-template-columns:minmax(200px,282px) minmax(0,1fr);gap:14px;align-items:start;}.whole>.g{min-width:0;}.outline{font-size:12px;max-height:70vh;overflow:auto;padding:2px 6px 2px 0;border-right:1px solid var(--line);}.otree,.otree ul{list-style:none;margin:0;padding:0;}.otree ul{padding-left:10px;}.orow{display:grid;grid-template-columns:16px minmax(0,1fr);align-items:start;border-radius:6px;}.orow.sel{background:var(--accent-bg);}.orow.cur .ol{font-weight:600;color:var(--text);}.odisc{all:unset;cursor:pointer;width:16px;text-align:center;color:var(--text-muted);font-size:10px;line-height:22px;}.odisc:focus-visible,.oname:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:1px;border-radius:4px;}.oname{all:unset;cursor:pointer;display:flex;align-items:flex-start;gap:6px;min-width:0;padding:3px 6px 3px 2px;border-radius:6px;color:var(--text-2);}.oname:hover{background:var(--raise);color:var(--text);}.oname .loop-ic{flex:none;color:var(--text-muted);}.ol{flex:1;min-width:0;overflow-wrap:break-word;font-family:var(--mono);line-height:1.35;}.obar{flex:none;width:32px;height:4px;margin-top:6px;border-radius:2px;background:var(--track);overflow:hidden;}.obar i{display:block;height:100%;background:var(--meter);}.ocount{flex:none;font-size:11px;color:var(--text-muted);font-variant-numeric:tabular-nums;}.onote{grid-column:2;display:flex;flex-wrap:wrap;gap:0 8px;padding:0 6px 2px 2px;font-size:11px;}.onote .err{color:var(--status-failed);}.onote .warn{color:var(--status-attention);}.onote .live{color:var(--status-running);}.onote .mut{color:var(--text-muted);}.odet{margin-bottom:8px;}.odet>summary{cursor:pointer;font-size:12px;color:var(--text-2);padding:2px 0;}.odet .outline{border-right:none;max-height:50vh;}`],qu=[zu,O` .node .k-ic{width:16px;height:16px;margin-right:6px;border-radius:4px;font-size:9.5px;}.legend .k-ic{width:14px;height:14px;margin:0;border-radius:4px;font-size:8.5px;}.list .k-ic{width:16px;height:16px;border-radius:4px;font-size:9.5px;}.list .nm .k-ic{margin:0 -2px 0 0;}.matrix thead th.nh .k-ic{width:14px;height:14px;margin-right:5px;border-radius:4px;font-size:8.5px;vertical-align:-2px;}`],Ju=e=>Math.max(14,Math.min(60,Math.round(e/34))),Yu=e=>Math.max(8,Math.min(16,Math.round(e/105))),Xu=(e,t)=>t>0&&t/(180*e)<.6,Zu=`*all`,Qu=`*none`,$u={...Va({nodes:[],clusters:[],edges:[],stubs:[]}),path:[],nodes:[],boxes:[],fns:[],edges:[],stubs:[],units:[]},ed=class extends M{constructor(...e){super(...e),this.plan={nodes:[],groups:[]},this.journal=[],this.run=``,this.live=!1,this.layer=``,this.unit=``,this.sel=``,this.down=!1,this.tall=!1,this.sort=`order`,this.missing=``,this.fixLayer=null,this.replacing=!1,this.auto=[],this.segments=[],this.proj=null,this.model=null,this.graph=$u,this.input={series:[],nodes:[],clusters:[],edges:[],stubs:[]},this.prevOrder=void 0,this.matrix=null,this.matrixIn=null,this.orders=new Map,this.links=au([]),this.states=fu(!1),this.locale=``,this.opened=null,this.closed=null,this.memRun=null,this.rev=0,this.budget=40,this.shownOpen=new Set,this.stats=new Map,this.focusToggle=``,this.flowStats=new Map,this.tree=[],this.folds=new Map,this.wide=!0,this.oh=this.outlineHost(),this.lights=()=>new Set,this.refocus=!1,this.cameFrom=``,this.h=this.partsHost(),this.onToggle=e=>this.toggle(e.detail.id,e.detail.open),this.onEscape=e=>{if(e.key!==`Escape`||e.defaultPrevented)return;let t=Lu(this.segments,this.auto);t&&(e.preventDefault(),this.refocus=!0,this.cameFrom=this.segments[this.segments.length-1]??``,Vu(this.h,t))},this.onSelect=e=>Bu(this.h,e.detail.id??``),this.onActivate=e=>{let t=lu(this.graph,this.matrix,e.detail.id);t?.type===`mark`?Uu(this.h,t.mark,t.node):t?.type===`node`&&Hu(this.h,t.node)},this.onDrill=e=>{let t=lu(this.graph,this.matrix,e.detail.id);t&&Wu(this.h,t)},this.onView=e=>{e.detail.view===`graph`&&this.matrix&&function(e){let t=e.segments[e.segments.length-1]??``,n=Lu(e.segments,e.auto)??[],r=e.auto.join(`/`);Q(e.el,`ca-navigate`,{layer:n.join(`/`)===r?``:n.join(`/`),unit:e.unit,sel:t})}(this.h)}}static{this.styles=Ku}static{this.properties={plan:{attribute:!1},journal:{attribute:!1},run:{},live:{type:Boolean},layer:{},unit:{},sel:{},down:{state:!0},sort:{state:!0},missing:{state:!0},rev:{state:!0},budget:{state:!0},wide:{state:!0}}}willUpdate(e){if(e.has(`run`)&&this.orders.clear(),e.has(`layer`)&&e.get(`layer`)!==void 0){let e=this.renderRoot instanceof ShadowRoot?this.renderRoot.activeElement:null,t=e?.shadowRoot?.activeElement;this.refocus=e!==null&&!t?.closest(`.views`),this.replacing?this.replacing=!1:this.missing=``}e.has(`run`)&&e.get(`run`)!==void 0&&(this.missing=``),e.has(`plan`)&&(this.links=au(this.plan.nodes)),(e.has(`plan`)||e.has(`live`))&&(this.flowStats=Zl(xl(this.plan),[],this.live),this.tree=function(e){let t=new Map;for(let n of e.values())(t.get(n.parent)??t.set(n.parent,[]).get(n.parent))?.push(n);let n=e=>{let r=[],i=new Map;for(let a of t.get(e)??[]){let e={id:a.key,type:`fn`,label:Cl(a.name),tip:a.name,layer:a.layer,name:a.name,counts:a.counts,errors:a.errors,kids:n(a.key),parts:[{id:a.key,layer:a.layer,name:a.name}]},t=r;a.loops.forEach((e,n)=>{let r=`${gl}${a.loops.slice(0,n+1).join(`.`)}`,o=`${a.layer.join(`/`)}|${r}`,s=i.get(o);if(!s){let e=a.loops[n];s={id:o,type:`loop`,label:E(T`Loop at ${vu(e,a.file)}`),tip:a.file?`${a.file}:${e}`:``,layer:a.layer,name:r,counts:{total:0,done:0,partial:0,failed:0,running:0,pending:0,skipped:0,blocked:0},errors:!1,kids:[],parts:[{id:o,layer:a.layer,name:r}]},i.set(o,s),t.push(s)}for(let e of Object.keys(s.counts))s.counts[e]+=a.counts[e];s.errors||=a.errors,t=s.kids}),t.push(e)}return r};return n(null)}(this.flowStats)),e.has(`run`)&&this.folds.clear();let t=e.has(`sel`)&&!!this.sel&&!Fu(this.segments).loop&&!lu(this.graph,this.matrix,this.sel),n=e.has(`plan`)||e.has(`layer`)||e.has(`run`)||e.has(`down`)||e.has(`rev`)||e.has(`budget`)||t;if(n){if(this.auto=Pu(this.plan),this.segments=this.layer?this.layer.split(`/`):this.auto,this.layer&&this.plan.nodes.length){let e=Iu(this.plan,this.segments);e?e.join(`/`)!==this.layer&&(this.segments=e,this.fixLayer=e.join(`/`)===this.auto.join(`/`)?``:e.join(`/`)):(this.missing=this.layer,this.segments=this.auto,this.fixLayer=``)}let{path:e,loop:t}=Fu(this.segments);if(t)this.proj=Ul(this.plan,e),this.model=this.proj.model;else{let t=this.memory(),n=this.openMode(),r=ru(this.plan,e,{open:new Set(t.opened.values().filter(e=>!e.startsWith(`*`))),closed:new Set(t.closed.values()),all:n===`all`,budget:n===`none`?0:this.budget,maxSpan:Yu(this.graphWidth()),sel:this.sel,live:this.live});this.proj=null,this.model=r.model,this.shownOpen=r.open,this.stats=r.stats}this.prevOrder=this.orders.get(e.join(`/`))}let r=jn(),i=n||e.has(`journal`)||e.has(`live`)||r!==this.locale;(i||e.has(`sort`))&&this.build(i,r)}build(e,t){let n=this.model;if(!n)return;let r=this.proj,{path:i,loop:a}=Fu(this.segments),o={plan:this.plan,journal:this.journal,run:this.run,live:this.live,links:this.links};if(e){this.locale=t,this.states=fu(this.live),this.input=ku(n,o,!a);let e=Va(this.input,this.prevOrder,this.down);this.tall=!this.down&&!a&&Xu(Ha(e).span,this.graphWidth()),this.tall&&(e=Va(this.input,this.prevOrder,!0)),this.graph=ql(n,e),this.orders.set(i.join(`/`),e.order),this.lights=function(e,t,n){let r=n.nodes.flatMap(e=>[...e.units,...e.single].filter(e=>e!==null).map(t=>[cu(e.id,t),t])),i=new Map(r.map(([e,t])=>[e,t.key])),a=new Map;return n=>{let o=a.get(n);if(o)return o;let s=function(e,t,n){let r=e.filter(e=>e.unit?e.unit===n:e.key===n).map(e=>e.key),i=new Set(r),a=e=>{let t=new Set(r),n=[...r];for(let r=n.pop();r!==void 0;r=n.pop())for(let a of e(r))t.has(a)||(t.add(a),i.add(a),n.push(a))};return a(e=>t.waiters.get(e)??[]),a(e=>t.byKey.get(e)?.after??[]),i}(e.nodes,t,i.get(n)??n),c=new Set(r.filter(([,e])=>e.keys.some(e=>s.has(e))).map(([e])=>e));return a.set(n,c),c}}(this.plan,this.links,this.graph)}let s=a&&r?Mu(this.plan,i,a,this.graph.order,this.sort,o,r):null;this.matrix=s?.matrix??null,this.matrixIn=s?.input??null}connectedCallback(){super.connectedCallback(),this.addEventListener(`keydown`,this.onEscape),this.resize=new ResizeObserver(()=>{let e=this.clientWidth,t=e>0&&e<640;t!==this.down&&(this.down=t);let n=e>0?Ju(this.graphWidth()):this.budget;n!==this.budget&&(this.budget=n);let r=e===0||e>=1500;r!==this.wide&&(this.wide=r)}),this.resize.observe(this)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(`keydown`,this.onEscape),this.resize?.disconnect()}memory(){return this.opened&&this.closed&&this.memRun===this.run||(this.memRun=this.run,this.opened=new Zn(`graph-open:${this.run}`,this),this.closed=new Zn(`graph-closed:${this.run}`,this)),{opened:this.opened,closed:this.closed}}openMode(){let{opened:e}=this.memory();return e.has(Zu)?`all`:e.has(Qu)?`none`:`auto`}setMode(e){let{opened:t,closed:n}=this.memory();t.clear(),n.clear(),e===`all`&&t.set(Zu,!0),e===`none`&&t.set(Qu,!0),Gn(),this.rev++}placeOfNode(e){let t=this.graph.nodes.find(t=>t.id===e);if(!t||t.type!==`flow`)return null;let n=e.includes(`::`)?e.slice(e.lastIndexOf(`::`)+2):e;return Yl(t.layer,n)}toggle(e,t){let n=e.startsWith(`fx::`)?e.slice(4):this.placeOfNode(e);if(!n)return;let{opened:r,closed:i}=this.memory();r.set(n,t),i.set(n,!t),Gn(),this.focusToggle=t?`${Jl}${n}`:this.nodeIdOf(n),this.rev++}nodeIdOf(e){let t=this.stats.get(e);if(!t)return``;let n=t.parent;return n!==null&&this.shownOpen.has(n)?`${n}::${t.id}`:t.id}updated(){if(this.focusToggle){let e=this.focusToggle;this.focusToggle=``;let t=this.renderRoot.querySelector(`cae-layered-graph`);t&&t.updateComplete.then(()=>t.focusToggle(e))}if(this.fixLayer!==null){let e=this.fixLayer;this.fixLayer=null,this.replacing=!0,Q(this,`ca-navigate`,{layer:e,unit:this.unit,sel:this.sel,replace:!0})}if(this.refocus||this.cameFrom){let e=this.cameFrom;this.refocus=!1,this.cameFrom=``;let t=e.startsWith(`loop:`)?e:this.graph.nodes.find(t=>t.type===`flow`&&t.name===e)?.id??null,n=this.renderRoot.querySelector(`cae-layered-graph`);n&&n.updateComplete.then(()=>n.focusItem(e?t:null))}}render(){if(!this.plan.nodes.length)return k`<div class="blank" style="padding:24px">${this.live?E(`No tasks scheduled yet`):E(`No tasks scheduled`)}</div>`;let e=this.renderGraph();return this.tree.length?this.wide?k`<div class="whole">${Gu(this.oh,this.tree)}<div class="g">${e}</div></div>`:k`<details class="odet"><summary>${E(`Outline of the flow`)}</summary>${Gu(this.oh,this.tree)}</details>${e}`:e}renderGraph(){let e=lu(this.graph,this.matrix,this.sel),t=this.graph.nodes.some(e=>e.type===`flow`);return k`<cae-layered-graph .graph=${this.input} .states=${this.states} .selected=${this.sel||null} .highlight=${this.unit||null} .order=${this.prevOrder} key=${this.segments.join(`/`)} direction=${this.down||this.tall?`down`:`across`} .matrix=${this.matrixIn} .related=${this.lights} .strings=${function(e,t){let n=E(`Enter: open`);return{graph:E(`Graph`,{id:`view-graph`}),table:E(`Table`,{id:`view-table`}),view:E(`View`),zoomIn:E(`Zoom in`),zoomInTip:E(`Zoom in (Ctrl + scroll)`),zoomOut:E(`Zoom out`),zoomOutTip:E(`Zoom out (Ctrl + scroll)`),showAll:E(`Show all`),graphKeys:[E(`Tab: next node`),E(`Arrow keys: marks`),E(`Shift + arrow keys: earlier and later tasks`),n],tableKeys:[E(`Tab: next row`),n],matrixKeys:[E(`Arrow keys: marks`),n],clearKey:E(`Esc: clear selection`),upKey:e?E(`Esc: up a level`):``,inspector:E(`Selected item`),stubTip:E(`Outside this layer`),more:e=>E(T`+${e}`),badge:E(`number of passes`),solidEdge:E(`waits for output`),dashedEdge:E(`created after result`),cycle:E(`next pass`),drill:E(`has a level below`),open:E(`Show inside`),close:E(`Hide inside`),iconNames:{agent:E(`agent task`),python:E(`Python task`)},nameHeader:E(t?`Kind or function`:`Kind`),statusHeader:E(`Status`,{id:`status`}),solidHeader:E(`Waits for`),dashedHeader:E(`Created after`),laterHeader:E(`Later tasks`),none:E(`none`,{id:`none`}),inCluster:e=>E(T`${e} in the loop`),list:e=>Mo(e)}}(!!Lu(this.segments,this.auto),t)} .matrixStrings=${{sortBy:E(`Sort units`),rowsHeader:E(`Unit`)}} .renderIcon=${td} .iconStyles=${qu} @cae-select=${this.onSelect} @cae-activate=${this.onActivate} @cae-drill=${this.onDrill} @cae-view-change=${this.onView} @cae-toggle=${this.onToggle} @cae-sort=${e=>this.sort=e.detail.id}>
396
- <div slot="crumbs">${function(e,t=null){let n=e.segments,r=e.unit;if(!n.length&&!r&&!t)return j;let{path:i,loop:a}=Fu(n),o=[...i.map((e,t)=>({name:Cl(e),tip:e,to:i.slice(0,t+1)})),...(a?a.slice(5).split(`.`):[]).map((t,n,r)=>{let a=gl+r.slice(0,n+1).join(`.`),o=e.graph.boxes.find(e=>e.id===a)?.file||e.matrix?.box.file||``,s=/^\d+$/.test(t);return{name:E(s?T`Loop at ${vu(t,o)}`:`Loop`),tip:s&&o?`${o}:${t}`:``,to:[...i,a]}})];return k`<div class="bar">
397
- ${n.length?k`<nav aria-label=${E(`Pipeline layer`)}>
429
+ ${i?O`<ul>${t.kids.map(e=>r(e,c))}</ul>`:A}
430
+ </li>`};return O`<nav class="outline" aria-label=${T(`Outline of the flow`)}><ul class="otree">${n.map(e=>r(e))}</ul></nav>`}var bd=[B,pd,Yr,D` :host{display:flex;flex-direction:column;}cae-layered-graph{flex:auto;min-height:0;}.bar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;margin-bottom:8px;font-size:12px;}.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:4px;list-style:none;margin:0;padding:0;}.crumbs li{display:inline-flex;align-items:center;gap:4px;}.crumbs .sep{color:var(--text-muted);}.crumbs button{all:unset;cursor:pointer;color:var(--accent);font-family:var(--mono);}.crumbs button:hover{text-decoration:underline;}.crumbs button:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:2px;border-radius:3px;}.crumbs [aria-current]{font-family:var(--mono);color:var(--text);font-weight:600;}.pin{display:inline-flex;align-items:center;gap:8px;color:var(--text-2);}.pin b{font-family:var(--mono);}.missing{margin-bottom:8px;font-size:12px;color:var(--status-attention);}.missing code{font-family:var(--mono);}.card{display:contents;}.ic{display:block;flex:none;}.loop-ic{color:var(--text-2);}.in-ic{color:var(--text-muted);}.card h4{margin:0;display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:13px;font-weight:600;color:var(--text);overflow-wrap:anywhere;}.card h4 .mark{--m:11px;flex:none;cursor:default;animation:none;}.card h4 .mark:hover{transform:none;outline:none;}.card h4 .k-ic{width:18px;height:18px;margin:0;border-radius:5px;font-size:10px;}.card .sub{color:var(--text-2);}.card dl{display:grid;grid-template-columns:fit-content(42%) minmax(0,1fr);gap:4px 12px;margin:0;}.card dt{color:var(--text-muted);word-break:keep-all;overflow-wrap:break-word;}.card dd{margin:0;color:var(--text);overflow-wrap:anywhere;font-variant-numeric:tabular-nums;}.card dd .err{color:var(--status-failed);}.card dd .warn{color:var(--status-attention);}.card .acts{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;padding-top:2px;}.card .go{all:unset;cursor:pointer;color:var(--accent);overflow-wrap:anywhere;}.card .go.primary{font-weight:600;}.card .go:hover{text-decoration:underline;}.card .go:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:2px;border-radius:3px;}.card .acts .switch{margin-left:auto;}.switch{all:unset;cursor:pointer;font-size:11.5px;color:var(--text-2);padding:2px 8px;border-radius:6px;border:1px solid var(--line);}.switch:hover{color:var(--text);border-color:var(--line2);}.switch:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:1px;}.switch[aria-pressed='true']{color:var(--text);background:var(--accent-bg);border-color:var(--accent);}.opens{display:inline-flex;gap:6px;margin-left:auto;}.whole{display:grid;grid-template-columns:minmax(200px,282px) minmax(0,1fr);gap:14px;align-items:start;}.whole>.g{min-width:0;}.outline{font-size:12px;max-height:70vh;overflow:auto;padding:2px 6px 2px 0;border-right:1px solid var(--line);}.otree,.otree ul{list-style:none;margin:0;padding:0;}.otree ul{padding-left:10px;}.orow{display:grid;grid-template-columns:16px minmax(0,1fr);align-items:start;border-radius:6px;}.orow.sel{background:var(--accent-bg);}.orow.cur .ol{font-weight:600;color:var(--text);}.odisc{all:unset;cursor:pointer;width:16px;text-align:center;color:var(--text-muted);font-size:10px;line-height:22px;}.odisc:focus-visible,.oname:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:1px;border-radius:4px;}.oname{all:unset;cursor:pointer;display:flex;align-items:flex-start;gap:6px;min-width:0;padding:3px 6px 3px 2px;border-radius:6px;color:var(--text-2);}.oname:hover{background:var(--raise);color:var(--text);}.oname .loop-ic{flex:none;color:var(--text-muted);}.ol{flex:1;min-width:0;overflow-wrap:break-word;font-family:var(--mono);line-height:1.35;}.obar{flex:none;width:32px;height:4px;margin-top:6px;border-radius:2px;background:var(--track);overflow:hidden;}.obar i{display:block;height:100%;background:var(--meter);}.ocount{flex:none;font-size:11px;color:var(--text-muted);font-variant-numeric:tabular-nums;}.onote{grid-column:2;display:flex;flex-wrap:wrap;gap:0 8px;padding:0 6px 2px 2px;font-size:11px;}.onote .err{color:var(--status-failed);}.onote .warn{color:var(--status-attention);}.onote .live{color:var(--status-running);}.onote .mut{color:var(--text-muted);}.odet{margin-bottom:8px;}.odet>summary{cursor:pointer;font-size:12px;color:var(--text-2);padding:2px 0;}.odet .outline{border-right:none;max-height:50vh;}`],xd=[pd,D` .node .k-ic{width:16px;height:16px;margin-right:6px;border-radius:4px;font-size:9.5px;}.legend .k-ic{width:14px;height:14px;margin:0;border-radius:4px;font-size:8.5px;}.list .k-ic{width:16px;height:16px;border-radius:4px;font-size:9.5px;}.list .nm .k-ic{margin:0 -2px 0 0;}.matrix thead th.nh .k-ic{width:14px;height:14px;margin-right:5px;border-radius:4px;font-size:8.5px;vertical-align:-2px;}`],Sd=e=>Math.max(14,Math.min(60,Math.round(e/34))),Cd=e=>Math.max(8,Math.min(16,Math.round(e/105))),wd=(e,t)=>t>0&&t/(180*e)<.6,Td=`*all`,Ed=`*none`,Dd={...lo({nodes:[],clusters:[],edges:[],stubs:[]}),path:[],nodes:[],boxes:[],fns:[],edges:[],stubs:[],units:[]},Od=class extends j{constructor(...e){super(...e),this.plan={nodes:[],groups:[]},this.journal=[],this.run=``,this.live=!1,this.layer=``,this.unit=``,this.sel=``,this.down=!1,this.tall=!1,this.sort=`order`,this.missing=``,this.fixLayer=null,this.replacing=!1,this.auto=[],this.segments=[],this.proj=null,this.model=null,this.graph=Dd,this.input={series:[],nodes:[],clusters:[],edges:[],stubs:[]},this.prevOrder=void 0,this.matrix=null,this.matrixIn=null,this.orders=new Map,this.links=Nu([]),this.states=Bu(!1),this.locale=``,this.opened=null,this.closed=null,this.memRun=null,this.rev=0,this.budget=40,this.shownOpen=new Set,this.stats=new Map,this.focusToggle=``,this.flowStats=new Map,this.tree=[],this.folds=new Map,this.wide=!0,this.oh=this.outlineHost(),this.lights=()=>new Set,this.refocus=!1,this.cameFrom=``,this.h=this.partsHost(),this.onToggle=e=>this.toggle(e.detail.id,e.detail.open),this.onEscape=e=>{if(e.key!==`Escape`||e.defaultPrevented)return;let t=dd(this.segments,this.auto);t&&(e.preventDefault(),this.refocus=!0,this.cameFrom=this.segments[this.segments.length-1]??``,hd(this.h,t))},this.onSelect=e=>md(this.h,e.detail.id??``),this.onActivate=e=>{let t=Lu(this.graph,this.matrix,e.detail.id);t?.type===`mark`?_d(this.h,t.mark,t.node):t?.type===`node`&&gd(this.h,t.node)},this.onDrill=e=>{let t=Lu(this.graph,this.matrix,e.detail.id);t&&vd(this.h,t)},this.onView=e=>{e.detail.view===`graph`&&this.matrix&&function(e){let t=e.segments[e.segments.length-1]??``,n=dd(e.segments,e.auto)??[],r=e.auto.join(`/`);Q(e.el,`ca-navigate`,{layer:n.join(`/`)===r?``:n.join(`/`),unit:e.unit,sel:t})}(this.h)}}static{this.styles=bd}static{this.properties={plan:{attribute:!1},journal:{attribute:!1},run:{},live:{type:Boolean},layer:{},unit:{},sel:{},down:{state:!0},sort:{state:!0},missing:{state:!0},rev:{state:!0},budget:{state:!0},wide:{state:!0}}}willUpdate(e){if(e.has(`run`)&&this.orders.clear(),e.has(`layer`)&&e.get(`layer`)!==void 0){let e=this.renderRoot instanceof ShadowRoot?this.renderRoot.activeElement:null,t=e?.shadowRoot?.activeElement;this.refocus=e!==null&&!t?.closest(`.views`),this.replacing?this.replacing=!1:this.missing=``}e.has(`run`)&&e.get(`run`)!==void 0&&(this.missing=``),e.has(`plan`)&&(this.links=Nu(this.plan.nodes)),(e.has(`plan`)||e.has(`live`))&&(this.flowStats=Tu(Yl(this.plan),[],this.live),this.tree=function(e){let t=new Map;for(let n of e.values())(t.get(n.parent)??t.set(n.parent,[]).get(n.parent))?.push(n);let n=e=>{let r=[],i=new Map;for(let a of t.get(e)??[]){let e={id:a.key,type:`fn`,label:Zl(a.name),tip:a.name,layer:a.layer,name:a.name,counts:a.counts,errors:a.errors,kids:n(a.key),parts:[{id:a.key,layer:a.layer,name:a.name}]},t=r;a.loops.forEach((e,n)=>{let r=`${Wl}${a.loops.slice(0,n+1).join(`.`)}`,o=`${a.layer.join(`/`)}|${r}`,s=i.get(o);if(!s){let e=a.loops[n];s={id:o,type:`loop`,label:T(w`Loop at ${Ku(e,a.file)}`),tip:a.file?`${a.file}:${e}`:``,layer:a.layer,name:r,counts:{total:0,done:0,partial:0,failed:0,running:0,pending:0,skipped:0,blocked:0},errors:!1,kids:[],parts:[{id:o,layer:a.layer,name:r}]},i.set(o,s),t.push(s)}for(let e of Object.keys(s.counts))s.counts[e]+=a.counts[e];s.errors||=a.errors,t=s.kids}),t.push(e)}return r};return n(null)}(this.flowStats)),e.has(`run`)&&this.folds.clear();let t=e.has(`sel`)&&!!this.sel&&!ld(this.segments).loop&&!Lu(this.graph,this.matrix,this.sel),n=e.has(`plan`)||e.has(`layer`)||e.has(`run`)||e.has(`down`)||e.has(`rev`)||e.has(`budget`)||t;if(n){if(this.auto=cd(this.plan),this.segments=this.layer?this.layer.split(`/`):this.auto,this.layer&&this.plan.nodes.length){let e=ud(this.plan,this.segments);e?e.join(`/`)!==this.layer&&(this.segments=e,this.fixLayer=e.join(`/`)===this.auto.join(`/`)?``:e.join(`/`)):(this.missing=this.layer,this.segments=this.auto,this.fixLayer=``)}let{path:e,loop:t}=ld(this.segments);if(t)this.proj=_u(this.plan,e),this.model=this.proj.model;else{let t=this.memory(),n=this.openMode(),r=ju(this.plan,e,{open:new Set(t.opened.values().filter(e=>!e.startsWith(`*`))),closed:new Set(t.closed.values()),all:n===`all`,budget:n===`none`?0:this.budget,maxSpan:Cd(this.graphWidth()),sel:this.sel,live:this.live});this.proj=null,this.model=r.model,this.shownOpen=r.open,this.stats=r.stats}this.prevOrder=this.orders.get(e.join(`/`))}let r=F(),i=n||e.has(`journal`)||e.has(`live`)||r!==this.locale;(i||e.has(`sort`))&&this.build(i,r)}build(e,t){let n=this.model;if(!n)return;let r=this.proj,{path:i,loop:a}=ld(this.segments),o={plan:this.plan,journal:this.journal,run:this.run,live:this.live,links:this.links};if(e){this.locale=t,this.states=Bu(this.live),this.input=rd(n,o,!a);let e=lo(this.input,this.prevOrder,this.down);this.tall=!this.down&&!a&&wd(uo(e).span,this.graphWidth()),this.tall&&(e=lo(this.input,this.prevOrder,!0)),this.graph=xu(n,e),this.orders.set(i.join(`/`),e.order),this.lights=function(e,t,n){let r=n.nodes.flatMap(e=>[...e.units,...e.single].filter(e=>e!==null).map(t=>[Iu(e.id,t),t])),i=new Map(r.map(([e,t])=>[e,t.key])),a=new Map;return n=>{let o=a.get(n);if(o)return o;let s=function(e,t,n){let r=e.filter(e=>e.unit?e.unit===n:e.key===n).map(e=>e.key),i=new Set(r),a=e=>{let t=new Set(r),n=[...r];for(let r=n.pop();r!==void 0;r=n.pop())for(let a of e(r))t.has(a)||(t.add(a),i.add(a),n.push(a))};return a(e=>t.waiters.get(e)??[]),a(e=>t.byKey.get(e)?.after??[]),i}(e.nodes,t,i.get(n)??n),c=new Set(r.filter(([,e])=>e.keys.some(e=>s.has(e))).map(([e])=>e));return a.set(n,c),c}}(this.plan,this.links,this.graph)}let s=a&&r?od(this.plan,i,a,this.graph.order,this.sort,o,r):null;this.matrix=s?.matrix??null,this.matrixIn=s?.input??null}connectedCallback(){super.connectedCallback(),this.addEventListener(`keydown`,this.onEscape),this.resize=new ResizeObserver(()=>{let e=this.clientWidth,t=e>0&&e<640;t!==this.down&&(this.down=t);let n=e>0?Sd(this.graphWidth()):this.budget;n!==this.budget&&(this.budget=n);let r=e===0||e>=1500;r!==this.wide&&(this.wide=r)}),this.resize.observe(this)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(`keydown`,this.onEscape),this.resize?.disconnect()}memory(){return this.opened&&this.closed&&this.memRun===this.run||(this.memRun=this.run,this.opened=new Zn(`graph-open:${this.run}`,this),this.closed=new Zn(`graph-closed:${this.run}`,this)),{opened:this.opened,closed:this.closed}}openMode(){let{opened:e}=this.memory();return e.has(Td)?`all`:e.has(Ed)?`none`:`auto`}setMode(e){let{opened:t,closed:n}=this.memory();t.clear(),n.clear(),e===`all`&&t.set(Td,!0),e===`none`&&t.set(Ed,!0),Gn(),this.rev++}placeOfNode(e){let t=this.graph.nodes.find(t=>t.id===e);if(!t||t.type!==`flow`)return null;let n=e.includes(`::`)?e.slice(e.lastIndexOf(`::`)+2):e;return Cu(t.layer,n)}toggle(e,t){let n=e.startsWith(`fx::`)?e.slice(4):this.placeOfNode(e);if(!n)return;let{opened:r,closed:i}=this.memory();r.set(n,t),i.set(n,!t),Gn(),this.focusToggle=t?`${Su}${n}`:this.nodeIdOf(n),this.rev++}nodeIdOf(e){let t=this.stats.get(e);if(!t)return``;let n=t.parent;return n!==null&&this.shownOpen.has(n)?`${n}::${t.id}`:t.id}updated(){if(this.focusToggle){let e=this.focusToggle;this.focusToggle=``;let t=this.renderRoot.querySelector(`cae-layered-graph`);t&&t.updateComplete.then(()=>t.focusToggle(e))}if(this.fixLayer!==null){let e=this.fixLayer;this.fixLayer=null,this.replacing=!0,Q(this,`ca-navigate`,{layer:e,unit:this.unit,sel:this.sel,replace:!0})}if(this.refocus||this.cameFrom){let e=this.cameFrom;this.refocus=!1,this.cameFrom=``;let t=e.startsWith(`loop:`)?e:this.graph.nodes.find(t=>t.type===`flow`&&t.name===e)?.id??null,n=this.renderRoot.querySelector(`cae-layered-graph`);n&&n.updateComplete.then(()=>n.focusItem(e?t:null))}}render(){if(!this.plan.nodes.length)return O`<div class="blank" style="padding:24px">${this.live?T(`No tasks scheduled yet`):T(`No tasks scheduled`)}</div>`;let e=this.renderGraph();return this.tree.length?this.wide?O`<div class="whole">${yd(this.oh,this.tree)}<div class="g">${e}</div></div>`:O`<details class="odet"><summary>${T(`Outline of the flow`)}</summary>${yd(this.oh,this.tree)}</details>${e}`:e}renderGraph(){let e=Lu(this.graph,this.matrix,this.sel),t=this.graph.nodes.some(e=>e.type===`flow`);return O`<cae-layered-graph .graph=${this.input} .states=${this.states} .selected=${this.sel||null} .highlight=${this.unit||null} .order=${this.prevOrder} key=${this.segments.join(`/`)} direction=${this.down||this.tall?`down`:`across`} .matrix=${this.matrixIn} .related=${this.lights} .strings=${function(e,t){let n=T(`Enter: open`);return{graph:T(`Graph`,{id:`view-graph`}),table:T(`Table`,{id:`view-table`}),view:T(`View`),zoomIn:T(`Zoom in`),zoomInTip:T(`Zoom in (Ctrl + scroll)`),zoomOut:T(`Zoom out`),zoomOutTip:T(`Zoom out (Ctrl + scroll)`),showAll:T(`Show all`),graphKeys:[T(`Tab: next node`),T(`Arrow keys: marks`),T(`Shift + arrow keys: earlier and later tasks`),n],tableKeys:[T(`Tab: next row`),n],matrixKeys:[T(`Arrow keys: marks`),n],clearKey:T(`Esc: clear selection`),upKey:e?T(`Esc: up a level`):``,inspector:T(`Selected item`),stubTip:T(`Outside this layer`),more:e=>T(w`+${e}`),badge:T(`number of passes`),solidEdge:T(`waits for output`),dashedEdge:T(`created after result`),cycle:T(`next pass`),drill:T(`has a level below`),open:T(`Show inside`),close:T(`Hide inside`),iconNames:{agent:T(`agent task`),python:T(`Python task`)},nameHeader:T(t?`Kind or function`:`Kind`),statusHeader:T(`Status`,{id:`status`}),solidHeader:T(`Waits for`),dashedHeader:T(`Created after`),laterHeader:T(`Later tasks`),none:T(`none`,{id:`none`}),inCluster:e=>T(w`${e} in the loop`),list:e=>es(e)}}(!!dd(this.segments,this.auto),t)} .matrixStrings=${{sortBy:T(`Sort units`),rowsHeader:T(`Unit`)}} .renderIcon=${kd} .iconStyles=${xd} @cae-select=${this.onSelect} @cae-activate=${this.onActivate} @cae-drill=${this.onDrill} @cae-view-change=${this.onView} @cae-toggle=${this.onToggle} @cae-sort=${e=>this.sort=e.detail.id}>
431
+ <div slot="crumbs">${function(e,t=null){let n=e.segments,r=e.unit;if(!n.length&&!r&&!t)return A;let{path:i,loop:a}=ld(n),o=[...i.map((e,t)=>({name:Zl(e),tip:e,to:i.slice(0,t+1)})),...(a?a.slice(5).split(`.`):[]).map((t,n,r)=>{let a=Wl+r.slice(0,n+1).join(`.`),o=e.graph.boxes.find(e=>e.id===a)?.file||e.matrix?.box.file||``,s=/^\d+$/.test(t);return{name:T(s?w`Loop at ${Ku(t,o)}`:`Loop`),tip:s&&o?`${o}:${t}`:``,to:[...i,a]}})];return O`<div class="bar">
432
+ ${n.length?O`<nav aria-label=${T(`Pipeline layer`)}>
398
433
  <ol class="crumbs">
399
- <li><button type="button" @click=${()=>Vu(e,[])}>${E(`Pipeline`)}</button></li>
400
- ${o.map((t,n)=>k`<li><span class="sep" aria-hidden="true">›</span>
401
- ${n===o.length-1?k`<span aria-current="page" title=${t.tip||j}>${t.name}</span>`:k`<button type="button" title=${t.tip||j} @click=${()=>Vu(e,t.to)}>${t.name}</button>`}</li>`)}
434
+ <li><button type="button" @click=${()=>hd(e,[])}>${T(`Pipeline`)}</button></li>
435
+ ${o.map((t,n)=>O`<li><span class="sep" aria-hidden="true">›</span>
436
+ ${n===o.length-1?O`<span aria-current="page" title=${t.tip||A}>${t.name}</span>`:O`<button type="button" title=${t.tip||A} @click=${()=>hd(e,t.to)}>${t.name}</button>`}</li>`)}
402
437
  </ol>
403
- </nav>`:j}
404
- ${r?k`<span class="pin">${E(T`Unit: ${r}`)}
405
- <button type="button" class="switch" @click=${()=>Q(e.el,`ca-navigate`,{unit:``})}>${E(`Clear highlight`)}</button></span>`:j}
406
- ${t??j}
407
- </div>`}(this.h,Fu(this.segments).loop?null:function(e,t){let n=(n,r)=>k`<button type="button" class="switch" aria-pressed=${e===n} @click=${()=>t(e===n?`auto`:n)}>${r}</button>`;return k`<span class="opens">${n(`all`,E(`Show all inside`))}${n(`none`,E(`Hide all inside`))}</span>`}(this.openMode(),e=>this.setMode(e)))}${function(e){if(!e)return j;let t=e.split(`/`),n=t[t.length-1]||e;return k`<div class="missing" role="status" title=${e}>${E(k`No layer <code>${n}</code> in this run`)}</div>`}(this.missing)}</div>
408
- ${e?function(e,t){return k`<div slot="inspector" class="card">${function(e,t){let n=(e,t)=>k`<dt>${e}</dt><dd>${t}</dd>`,r=(e,t,n=!1)=>k`<button type="button" class="go ${n?`primary`:``}" @click=${t}>${e}</button>`,i=k`<button type="button" class="switch" @click=${()=>Bu(e,``)}>${E(`Clear selection`)}</button>`,a=e=>e.length?Mo(e):E(`none`,{id:`none`});if(t.type===`box`){let a=t.box,o=vu(a.loop,a.file);return k`<h4 title=${a.file?`${a.file}:${a.loop}`:j}>${Za(16)}${E(T`Loop at ${o}`)}</h4>
438
+ </nav>`:A}
439
+ ${r?O`<span class="pin">${T(w`Unit: ${r}`)}
440
+ <button type="button" class="switch" @click=${()=>Q(e.el,`ca-navigate`,{unit:``})}>${T(`Clear highlight`)}</button></span>`:A}
441
+ ${t??A}
442
+ </div>`}(this.h,ld(this.segments).loop?null:function(e,t){let n=(n,r)=>O`<button type="button" class="switch" aria-pressed=${e===n} @click=${()=>t(e===n?`auto`:n)}>${r}</button>`;return O`<span class="opens">${n(`all`,T(`Show all inside`))}${n(`none`,T(`Hide all inside`))}</span>`}(this.openMode(),e=>this.setMode(e)))}${function(e){if(!e)return A;let t=e.split(`/`),n=t[t.length-1]||e;return O`<div class="missing" role="status" title=${e}>${T(O`No layer <code>${n}</code> in this run`)}</div>`}(this.missing)}</div>
443
+ ${e?function(e,t){return O`<div slot="inspector" class="card">${function(e,t){let n=(e,t)=>O`<dt>${e}</dt><dd>${t}</dd>`,r=(e,t,n=!1)=>O`<button type="button" class="go ${n?`primary`:``}" @click=${t}>${e}</button>`,i=O`<button type="button" class="switch" @click=${()=>md(e,``)}>${T(`Clear selection`)}</button>`,a=e=>e.length?es(e):T(`none`,{id:`none`});if(t.type===`box`){let a=t.box,o=Ku(a.loop,a.file);return O`<h4 title=${a.file?`${a.file}:${a.loop}`:A}>${bo(16)}${T(w`Loop at ${o}`)}</h4>
409
444
  <dl>
410
- ${n(E(`Passes`),Qo(a.passes))}
411
- ${a.spread.length>1?n(E(`Units by number of passes`),es(a.spread)):j}
445
+ ${n(T(`Passes`),bs(a.passes))}
446
+ ${a.spread.length>1?n(T(`Units by number of passes`),Ss(a.spread)):A}
412
447
  </dl>
413
- <div class="acts">${r(E(T`Passes of the loop at ${o}`),()=>Wu(e,t),!0)}${i}</div>`}if(t.type===`node`){let o=t.node,s=o.counts,{waits:c,after:l,feeds:u}=xu(o,e.graph),d=_u(o,e.live).map(([e,t])=>k`<div class=${e}>${t}</div>`);return o.type===`flow`?k`<h4 title=${o.name}>${Qa()}${o.label}</h4>
414
- <div class="sub">${E(`Function`)}</div>
448
+ <div class="acts">${r(T(w`Passes of the loop at ${o}`),()=>vd(e,t),!0)}${i}</div>`}if(t.type===`node`){let o=t.node,s=o.counts,{waits:c,after:l,feeds:u}=Yu(o,e.graph),d=Gu(o,e.live).map(([e,t])=>O`<div class=${e}>${t}</div>`);return o.type===`flow`?O`<h4 title=${o.name}>${xo()}${o.label}</h4>
449
+ <div class="sub">${T(`Function`)}</div>
415
450
  <dl>
416
- ${n(E(`Flow calls`),o.calls)}
417
- ${o.timeBox?n(E(`Deadline`),k`<span title=${Ws()}>${function(e){let t=e.finishing_kinds??[];return K(z(e.deadline_s),e.grace_s&&t.length?E(T`finishing time ${z(e.grace_s)}`):``,t.length?E(T`finishing kinds: ${Mo(t)}`):``)}(o.timeBox)}</span>`):j}
418
- ${n(E(`Tasks`,{id:`tasks`}),k`${hu(s)}${d}`)}
419
- ${n(E(`Waits for`),a(c))}
420
- ${l.length?n(E(`Created after`),a(l)):j}
421
- ${n(E(`Later tasks`),a(u))}
451
+ ${n(T(`Flow calls`),o.calls)}
452
+ ${o.timeBox?n(T(`Deadline`),O`<span title=${pc()}>${function(e){let t=e.finishing_kinds??[];return K(z(e.deadline_s),e.grace_s&&t.length?T(w`finishing time ${z(e.grace_s)}`):``,t.length?T(w`finishing kinds: ${es(t)}`):``)}(o.timeBox)}</span>`):A}
453
+ ${n(T(`Tasks`,{id:`tasks`}),O`${Uu(s)}${d}`)}
454
+ ${n(T(`Waits for`),a(c))}
455
+ ${l.length?n(T(`Created after`),a(l)):A}
456
+ ${n(T(`Later tasks`),a(u))}
422
457
  </dl>
423
- <div class="acts">${r(E(T`Inside ${o.label}`),()=>Wu(e,t),!0)}${i}</div>`:k`<h4>${o.executor&&o.executor!==`mixed`?Ru(o.executor===`python`):j}${o.label}</h4>
424
- <div class="sub">${yu(o)}</div>
458
+ <div class="acts">${r(T(w`Inside ${o.label}`),()=>vd(e,t),!0)}${i}</div>`:O`<h4>${o.executor&&o.executor!==`mixed`?fd(o.executor===`python`):A}${o.label}</h4>
459
+ <div class="sub">${qu(o)}</div>
425
460
  <dl>
426
- ${o.kinds.length>1?n(E(`Kinds`),Mo(o.kinds)):j}
427
- ${n(E(`Tasks`,{id:`tasks`}),k`${hu(s)}${d}`)}
428
- ${n(E(`Waits for`),a(c))}
429
- ${l.length?n(E(`Created after`),a(l)):j}
430
- ${n(E(`Later tasks`),a(u))}
461
+ ${o.kinds.length>1?n(T(`Kinds`),es(o.kinds)):A}
462
+ ${n(T(`Tasks`,{id:`tasks`}),O`${Uu(s)}${d}`)}
463
+ ${n(T(`Waits for`),a(c))}
464
+ ${l.length?n(T(`Created after`),a(l)):A}
465
+ ${n(T(`Later tasks`),a(u))}
431
466
  </dl>
432
- <div class="acts">${r(E(T`Tasks of ${o.label}`),()=>Wu(e,t),!0)}${i}</div>`}let{node:o,mark:s,passes:c}=t,l=q({kind:(s.flow||s.count!==1?void 0:e.links.byKey.get(s.key))?.kind??o.label,unit:s.unit}),u=s.flow||s.state!==`blocked`?``:Tu(e)(s.key),d=k`<span data-status class=${s.state===`failed`?`err`:s.state===`blocked`||s.state===`partial`?`warn`:``}>${pu(s.state,e.live)}</span>`,p=fu(e.live)[s.state],m=k`<h4 title=${s.flow?E(T`Flow call ${s.key}`):s.key}><i class="mark" data-tone=${I(p?.tone)} data-shape=${p?.shape??j} aria-hidden="true"></i>${l}</h4>`,h=c.length?Mo(c.map(Zo)):s.passes?$o(s.passes):``;if(s.flow){let a=s.counts;return k`${m}
467
+ <div class="acts">${r(T(w`Tasks of ${o.label}`),()=>vd(e,t),!0)}${i}</div>`}let{node:o,mark:s,passes:c}=t,l=q({kind:(s.flow||s.count!==1?void 0:e.links.byKey.get(s.key))?.kind??o.label,unit:s.unit}),u=s.flow||s.state!==`blocked`?``:$u(e)(s.key),d=O`<span data-status class=${s.state===`failed`?`err`:s.state===`blocked`||s.state===`partial`?`warn`:``}>${Vu(s.state,e.live)}</span>`,p=Bu(e.live)[s.state],m=O`<h4 title=${s.flow?T(w`Flow call ${s.key}`):s.key}><i class="mark" data-tone=${I(p?.tone)} data-shape=${p?.shape??A} aria-hidden="true"></i>${l}</h4>`,h=c.length?es(c.map(ys)):s.passes?xs(s.passes):``;if(s.flow){let a=s.counts;return O`${m}
433
468
  <dl>
434
- ${n(E(`Status`,{id:`status`}),d)}
435
- ${h?n(E(`Pass`),h):j}
436
- ${s.deadlineAt?n(E(`Deadline`),k`<span title=${Ws()}>${g=s.deadlineAt,G(g,!0)}</span>`):j}
437
- ${a?n(E(`Tasks`,{id:`tasks`}),k`${hu(a)}${gu(a,e.live).map(e=>k`<div>${e}</div>`)}`):j}
438
- ${s.error===void 0?j:n(E(`Error`),k`<span class="err">${s.error||E(`Flow call stopped with an error`)}</span>`)}
469
+ ${n(T(`Status`,{id:`status`}),d)}
470
+ ${h?n(T(`Pass`),h):A}
471
+ ${s.deadlineAt?n(T(`Deadline`),O`<span title=${pc()}>${g=s.deadlineAt,G(g,!0)}</span>`):A}
472
+ ${a?n(T(`Tasks`,{id:`tasks`}),O`${Uu(a)}${Wu(a,e.live).map(e=>O`<div>${e}</div>`)}`):A}
473
+ ${s.error===void 0?A:n(T(`Error`),O`<span class="err">${s.error||T(`Flow call stopped with an error`)}</span>`)}
439
474
  </dl>
440
- <div class="acts">${r(E(T`Inside ${Cl(s.flow)}`),()=>Wu(e,t),!0)}${i}</div>`}var g;let _=e.journal.filter(e=>s.keys.includes(e.key)).filter(f),v=_.map(e=>e.cost_usd).filter(e=>typeof e==`number`),y=_.reduce((e,t)=>e+(t.wall_s??0),0);return k`${m}
475
+ <div class="acts">${r(T(w`Inside ${Zl(s.flow)}`),()=>vd(e,t),!0)}${i}</div>`}var g;let _=e.journal.filter(e=>s.keys.includes(e.key)).filter(f),ee=_.map(e=>e.cost_usd).filter(e=>typeof e==`number`),v=_.reduce((e,t)=>e+(t.wall_s??0),0);return O`${m}
441
476
  <dl>
442
- ${n(E(`Status`,{id:`status`}),u?k`${d}<div>${u}</div>`:d)}
443
- ${h?n(E(`Pass`),h):j}
444
- ${s.count>1?n(E(`Tasks`,{id:`tasks`}),E(T`${s.count} tasks`)):j}
445
- ${n(E(`Attempts`),_.length||E(`none`,{id:`none`}))}
446
- ${n(E(`Time`),_.length?z(y):E(`none`,{id:`none`}))}
447
- ${n(E(`Cost`),v.length?Y(v.reduce((e,t)=>e+t,0)):`—`)}
477
+ ${n(T(`Status`,{id:`status`}),u?O`${d}<div>${u}</div>`:d)}
478
+ ${h?n(T(`Pass`),h):A}
479
+ ${s.count>1?n(T(`Tasks`,{id:`tasks`}),T(w`${s.count} tasks`)):A}
480
+ ${n(T(`Attempts`),_.length||T(`none`,{id:`none`}))}
481
+ ${n(T(`Time`),_.length?z(v):T(`none`,{id:`none`}))}
482
+ ${n(T(`Cost`),ee.length?Y(ee.reduce((e,t)=>e+t,0)):`—`)}
448
483
  </dl>
449
- <div class="acts">${r(E(`Task detail`),()=>Wu(e,t),!0)}${o.kinds.length===1?r(E(T`Tasks of ${o.label}`),()=>Hu(e,o)):j}${i}</div>`}(e,t)}</div>`}(this.h,e):j}
450
- </cae-layered-graph>`}graphWidth(){let e=this.clientWidth||1200;return this.tree.length&&e>=1500?e-300:e}currentKeys(){let{path:e}=Fu(this.segments),t=new Set;for(let n of this.flowStats.values()){let r=n.layer.length;r<e.length&&Sl(e,n.layer)&&e[r]===n.name&&t.add(n.key)}return t}selectedItem(){let e=this.sel;if(!e)return``;if(e.startsWith(`fx::`))return e.slice(4);let t=e.split(`#`)[0]??``;if(this.graph.nodes.find(e=>e.id===t)?.type===`flow`)return this.placeOfNode(t)??``;let n=this.graph.boxes.find(e=>e.id===t);return n?`${n.layer.join(`/`)}|${n.local}`:``}drawnId(e){let{path:t}=Fu(this.segments);if(e.layer.length<t.length||!Sl(e.layer,t))return null;let n=[];for(let r=this.flowStats.get(e.type===`fn`?this.flowStats.get(e.id)?.parent??``:this.containerKey(e)??``);r&&r.layer.length>=t.length;r=this.flowStats.get(r.parent??``))n.unshift(r.key);let r=n[n.length-1]??``;if(e.type===`fn`){let t=this.flowStats.get(e.id);return t?this.shownOpen.has(e.id)?{id:`${Jl}${e.id}`,open:n}:{id:r?`${r}::${t.id}`:t.id,open:n}:null}return{id:r?`${r}::${e.name}`:e.name,open:n}}containerKey(e){let{path:t}=Fu(this.segments);if(e.layer.length===t.length)return``;for(let t of this.flowStats.values())if([...t.layer,t.name].join(`/`)===e.layer.join(`/`))return t.key;return null}outlineHost(){let e=this;return{get live(){return e.live},expanded(t){let n=e.folds.get(t);if(n!==void 0)return n;let r=new Set([...e.currentKeys(),...e.shownOpen,e.selectedItem()]),i=e=>r.has(e.id)||e.kids.some(i),a=nd(e.tree,t);return!!a&&(e.tree.includes(a)||i(a))},expand(t,n){e.folds.set(t,n),e.requestUpdate()},current:t=>e.currentKeys().has(t),here:t=>{let{path:n}=Fu(e.segments),r=e.flowStats.get(t);return!!r&&r.layer.length===n.length-1&&Sl(n,[...r.layer,r.name])},selected:t=>!!t&&e.selectedItem()===t,pick(t){let n=e.drawnId(t);if(!n){let n=t.type===`fn`?e.flowStats.get(t.id)?.id??``:t.name;Q(e,`ca-navigate`,{layer:t.layer.join(`/`)===e.auto.join(`/`)?``:t.layer.join(`/`),unit:e.unit,sel:n});return}let{opened:r,closed:i}=e.memory(),a=!1;for(let t of n.open)e.shownOpen.has(t)||(a=!0),r.set(t,!0),i.set(t,!1);a&&e.rev++,Bu(e.h,n.id)},enter(t){let n=t.parts[t.parts.length-1]??t;Vu(e.h,[...n.layer,n.name])}}}partsHost(){let e=this;return{el:e,get plan(){return e.plan},get journal(){return e.journal},get run(){return e.run},get live(){return e.live},get sel(){return e.sel},get unit(){return e.unit},get segments(){return e.segments},get auto(){return e.auto},get graph(){return e.graph},get matrix(){return e.matrix},get links(){return e.links}}}};ed=U([N(`ca-pipeline-graph`),D()],ed);var td=e=>Ru(e===`python`);function nd(e,t){for(let n of e){if(n.id===t)return n;let e=nd(n.kids,t);if(e)return e}}function rd(e){if(!e||e.policy===`off`)return[];let t=[...(e.stopped??[]).map(e=>({label:wc(),text:e,tone:`failed`,tip:``})),...(e.kept??[]).map(e=>({label:wc(),text:K(e.kind,xc(e.agent,e.model),e.reason),tone:`attention`,tip:E(`A kind with no available model, run on its own model (kept)`)})),...(e.substituted??[]).map(e=>({label:E(`Model replaced`),text:Cc(e),tone:`attention`,tip:E(`A kind with no available model, run on the first model that answered (substitute)`)})),...(e.dropped??[]).map(e=>({label:E(`Unavailable`),text:Sc(e),tone:`muted`,tip:``}))];return t.length?t:[{label:``,text:E(`all models available`),tone:`neutral`,tip:``}]}var id={failed:`✕`,attention:`◌`,done:`✓`,running:``,muted:`■`,neutral:`■`},ad=class extends M{constructor(...e){super(...e),this.procs=null,this.plan={nodes:[],groups:[]}}static{this.styles=[V,qr,O` :host{display:block;}.drv{display:flex;gap:14px;align-items:flex-start;}.drv-ic{width:42px;height:42px;border-radius:12px;flex:none;display:grid;place-items:center;font-size:16px;background:var(--raise);color:var(--text-muted);}.drv.on .drv-ic{background:var(--status-running-bg);box-shadow:0 0 0 1px color-mix(in srgb,var(--status-running) 35%,transparent),0 0 22px var(--status-running-bg);}.drv-ic[data-tone]{color:var(--tone);font-weight:700;}.drv-ic[data-tone='failed'],.drv-ic[data-tone='attention']{background:var(--tone-bg);}.drv.on .drv-ic .spin{width:18px;height:18px;}.drv-t{font-size:15px;font-weight:600;}.drv-up{font-family:var(--mono);font-size:12px;color:var(--status-running);margin-left:6px;font-weight:400;}.drv-cmd{margin-top:8px;}.drv-cmd summary{cursor:pointer;font-size:11px;color:var(--text-muted);}.pf{margin-top:10px;font-size:12px;}.pf-h{color:var(--text-muted);font-size:11px;margin-bottom:4px;}.pf-rows{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:3px 12px;margin:0;}.pf-rows dt{color:var(--text-muted);}.pf-rows dt[data-tone]{color:var(--tone);}.pf-rows dd{margin:0;color:var(--text-2);overflow-wrap:anywhere;}.drv-cmd code{display:block;margin-top:4px;white-space:pre-wrap;word-break:break-all;color:var(--text-2);max-height:120px;overflow:auto;}`]}stateTitle(){if(this.plan.preflight?.stopped?.length)return[E(`Ended before the first agent session`),`failed`];if(!this.plan.nodes.length)return[E(`Not running`),`neutral`];let e=te(this.plan);return e.failed?[e.failed===1?E(`Finished with 1 task failed`):E(T`Finished with ${e.failed} tasks failed`),`failed`]:e.left?[e.left===1?E(`Finished with 1 task not done`):E(T`Finished with ${e.left} tasks not done`),`attention`]:e.notStarted?[e.notStarted===1?E(`Finished with 1 task not started`):E(T`Finished with ${e.notStarted} tasks not started`),`attention`]:[E(`Finished`),`done`]}render(){let e=this.procs,t=this.summary;if(!e?.alive){let e=re(t)===`unresponsive`,[r,i]=e?[ko(Is()),`attention`]:this.stateTitle(),a=e?null:ne(t);return k`<div class="drv off">
451
- <div class="drv-ic" data-tone=${I(i)} aria-hidden="true">${id[i]}</div>
484
+ <div class="acts">${r(T(`Task detail`),()=>vd(e,t),!0)}${o.kinds.length===1?r(T(w`Tasks of ${o.label}`),()=>gd(e,o)):A}${i}</div>`}(e,t)}</div>`}(this.h,e):A}
485
+ </cae-layered-graph>`}graphWidth(){let e=this.clientWidth||1200;return this.tree.length&&e>=1500?e-300:e}currentKeys(){let{path:e}=ld(this.segments),t=new Set;for(let n of this.flowStats.values()){let r=n.layer.length;r<e.length&&Xl(e,n.layer)&&e[r]===n.name&&t.add(n.key)}return t}selectedItem(){let e=this.sel;if(!e)return``;if(e.startsWith(`fx::`))return e.slice(4);let t=e.split(`#`)[0]??``;if(this.graph.nodes.find(e=>e.id===t)?.type===`flow`)return this.placeOfNode(t)??``;let n=this.graph.boxes.find(e=>e.id===t);return n?`${n.layer.join(`/`)}|${n.local}`:``}drawnId(e){let{path:t}=ld(this.segments);if(e.layer.length<t.length||!Xl(e.layer,t))return null;let n=[];for(let r=this.flowStats.get(e.type===`fn`?this.flowStats.get(e.id)?.parent??``:this.containerKey(e)??``);r&&r.layer.length>=t.length;r=this.flowStats.get(r.parent??``))n.unshift(r.key);let r=n[n.length-1]??``;if(e.type===`fn`){let t=this.flowStats.get(e.id);return t?this.shownOpen.has(e.id)?{id:`${Su}${e.id}`,open:n}:{id:r?`${r}::${t.id}`:t.id,open:n}:null}return{id:r?`${r}::${e.name}`:e.name,open:n}}containerKey(e){let{path:t}=ld(this.segments);if(e.layer.length===t.length)return``;for(let t of this.flowStats.values())if([...t.layer,t.name].join(`/`)===e.layer.join(`/`))return t.key;return null}outlineHost(){let e=this;return{get live(){return e.live},expanded(t){let n=e.folds.get(t);if(n!==void 0)return n;let r=new Set([...e.currentKeys(),...e.shownOpen,e.selectedItem()]),i=e=>r.has(e.id)||e.kids.some(i),a=Ad(e.tree,t);return!!a&&(e.tree.includes(a)||i(a))},expand(t,n){e.folds.set(t,n),e.requestUpdate()},current:t=>e.currentKeys().has(t),here:t=>{let{path:n}=ld(e.segments),r=e.flowStats.get(t);return!!r&&r.layer.length===n.length-1&&Xl(n,[...r.layer,r.name])},selected:t=>!!t&&e.selectedItem()===t,pick(t){let n=e.drawnId(t);if(!n){let n=t.type===`fn`?e.flowStats.get(t.id)?.id??``:t.name;Q(e,`ca-navigate`,{layer:t.layer.join(`/`)===e.auto.join(`/`)?``:t.layer.join(`/`),unit:e.unit,sel:n});return}let{opened:r,closed:i}=e.memory(),a=!1;for(let t of n.open)e.shownOpen.has(t)||(a=!0),r.set(t,!0),i.set(t,!1);a&&e.rev++,md(e.h,n.id)},enter(t){let n=t.parts[t.parts.length-1]??t;hd(e.h,[...n.layer,n.name])}}}partsHost(){let e=this;return{el:e,get plan(){return e.plan},get journal(){return e.journal},get run(){return e.run},get live(){return e.live},get sel(){return e.sel},get unit(){return e.unit},get segments(){return e.segments},get auto(){return e.auto},get graph(){return e.graph},get matrix(){return e.matrix},get links(){return e.links}}}};Od=H([M(`ca-pipeline-graph`),E()],Od);var kd=e=>fd(e===`python`);function Ad(e,t){for(let n of e){if(n.id===t)return n;let e=Ad(n.kids,t);if(e)return e}}function jd(e){if(!e||e.policy===`off`)return[];let t=[...(e.stopped??[]).map(e=>({label:qc(),text:e,tone:`failed`,tip:``})),...(e.kept??[]).map(e=>({label:qc(),text:K(e.kind,Wc(e.agent,e.model),e.reason),tone:`attention`,tip:T(`A kind with no available model, run on its own model (kept)`)})),...(e.substituted??[]).map(e=>({label:T(`Model replaced`),text:Kc(e),tone:`attention`,tip:T(`A kind with no available model, run on the first model that answered (substitute)`)})),...(e.dropped??[]).map(e=>({label:T(`Unavailable`),text:Gc(e),tone:`muted`,tip:``}))];return t.length?t:[{label:``,text:T(`all models available`),tone:`neutral`,tip:``}]}var Md={failed:`✕`,attention:`◌`,done:`✓`,running:``,muted:`■`,neutral:`■`},Nd=class extends j{constructor(...e){super(...e),this.procs=null,this.plan={nodes:[],groups:[]}}static{this.styles=[B,Jr,D` :host{display:block;}.drv{display:flex;gap:14px;align-items:flex-start;}.drv-ic{width:42px;height:42px;border-radius:12px;flex:none;display:grid;place-items:center;font-size:16px;background:var(--raise);color:var(--text-muted);}.drv.on .drv-ic{background:var(--status-running-bg);box-shadow:0 0 0 1px color-mix(in srgb,var(--status-running) 35%,transparent),0 0 22px var(--status-running-bg);}.drv-ic[data-tone]{color:var(--tone);font-weight:700;}.drv-ic[data-tone='failed'],.drv-ic[data-tone='attention']{background:var(--tone-bg);}.drv.on .drv-ic .spin{width:18px;height:18px;}.drv-t{font-size:15px;font-weight:600;}.drv-up{font-family:var(--mono);font-size:12px;color:var(--status-running);margin-left:6px;font-weight:400;}.drv-cmd{margin-top:8px;}.drv-cmd summary{cursor:pointer;font-size:11px;color:var(--text-muted);}.pf{margin-top:10px;font-size:12px;}.pf-h{color:var(--text-muted);font-size:11px;margin-bottom:4px;}.pf-rows{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:3px 12px;margin:0;}.pf-rows dt{color:var(--text-muted);}.pf-rows dt[data-tone]{color:var(--tone);}.pf-rows dd{margin:0;color:var(--text-2);overflow-wrap:anywhere;}.drv-cmd code{display:block;margin-top:4px;white-space:pre-wrap;word-break:break-all;color:var(--text-2);max-height:120px;overflow:auto;}`]}stateTitle(){if(this.plan.preflight?.stopped?.length)return[T(`Ended before the first agent session`),`failed`];if(!this.plan.nodes.length)return[T(`Not running`),`neutral`];let e=ne(this.plan);return e.failed?[e.failed===1?T(`Finished with 1 task failed`):T(w`Finished with ${e.failed} tasks failed`),`failed`]:e.left?[e.left===1?T(`Finished with 1 task not done`):T(w`Finished with ${e.left} tasks not done`),`attention`]:e.notStarted?[e.notStarted===1?T(`Finished with 1 task not started`):T(w`Finished with ${e.notStarted} tasks not started`),`attention`]:[T(`Finished`),`done`]}render(){let e=this.procs,t=this.summary;if(!e?.alive){let e=ie(t)===`unresponsive`,[r,i]=e?[Zo(ic()),`attention`]:this.stateTitle(),a=e?null:re(t);return O`<div class="drv off">
486
+ <div class="drv-ic" data-tone=${I(i)} aria-hidden="true">${Md[i]}</div>
452
487
  <div>
453
- <div class="drv-t tone-text" data-tone=${i===`done`?j:I(i)}>${r}</div>
454
- <div class="meta">${K(this.plan.preflight?.stopped?.length?(n=this.plan.preflight.stopped,E(T`No available model for ${Mo(n)}`)):``,e?Rs(this.host):``,E(t?.last_ts?e?T`Last activity ${G(t.last_ts,!0)}`:T`Ended ${G(t.last_ts,!0)}`:`No activity`),a==null?``:E(T`Took ${z(a)}`),t?.run_group?E(T`Run group ${t.run_group}`):``,e?zs(t?.host_id??``):``)}</div>
488
+ <div class="drv-t tone-text" data-tone=${i===`done`?A:I(i)}>${r}</div>
489
+ <div class="meta">${K(this.plan.preflight?.stopped?.length?(n=this.plan.preflight.stopped,T(w`No available model for ${es(n)}`)):``,e?oc(this.host):``,T(t?.last_ts?e?w`Last activity ${G(t.last_ts,!0)}`:w`Ended ${G(t.last_ts,!0)}`:`No activity`),a==null?``:T(w`Took ${z(a)}`),t?.run_group?T(w`Run group ${t.run_group}`):``,e?sc(t?.host_id??``):``)}</div>
455
490
  ${this.preflight()}
456
491
  </div>
457
- </div>`}var n;let r=Date.parse(e.started_at),i=Ir.at(`drv:${e.pid??``}`,Number.isNaN(r)?1:(Date.now()-r)/1e3),a=[[E(`PID`),e.pid??`—`],[E(`Run group`),e.run_group],[E(`Running at once (limit)`),e.max_workers||`—`],[E(`Started`),G(e.started_at,!0)]];return k`<div class="drv on">
492
+ </div>`}var n;let r=Date.parse(e.started_at),i=Lr.at(`drv:${e.pid??``}`,Number.isNaN(r)?1:(Date.now()-r)/1e3),a=[[T(`PID`),e.pid??`—`],[T(`Run group`),e.run_group],[T(`Running at once (limit)`),e.max_workers||`—`],[T(`Started`),G(e.started_at,!0)]];return O`<div class="drv on">
458
493
  <div class="drv-ic"><span class="spin"></span></div>
459
494
  <div style="min-width:0">
460
- <div class="drv-t">${E(`Running`)} <cae-elapsed class="drv-up" .since=${i}></cae-elapsed></div>
461
- <div class="drv-facts">${a.map(([e,t])=>k`<span><i>${e}</i>${t}</span>`)}</div>
495
+ <div class="drv-t">${T(`Running`)} <cae-elapsed class="drv-up" .since=${i}></cae-elapsed></div>
496
+ <div class="drv-facts">${a.map(([e,t])=>O`<span><i>${e}</i>${t}</span>`)}</div>
462
497
  ${this.preflight()}
463
- <details class="drv-cmd"><summary>${E(`Command line`)}</summary><code>${e.argv.join(` `)}</code></details>
498
+ <details class="drv-cmd"><summary>${T(`Command line`)}</summary><code>${e.argv.join(` `)}</code></details>
464
499
  </div>
465
- </div>`}preflight(){let e=this.plan.preflight,t=rd(e);return e&&t.length?k`<div class="pf">
466
- <div class="pf-h" title=${n=e.policy,E(T`One request to each model before the first agent session (preflight, policy ${n})`)}>${E(`Model availability`)}</div>
500
+ </div>`}preflight(){let e=this.plan.preflight,t=jd(e);return e&&t.length?O`<div class="pf">
501
+ <div class="pf-h" title=${n=e.policy,T(w`One request to each model before the first agent session (preflight, policy ${n})`)}>${T(`Model availability`)}</div>
467
502
  <dl class="pf-rows">
468
- ${t.map(e=>k`<dt data-tone=${I(e.tone)} title=${e.tip||j}>${e.label}</dt><dd class="jmono">${e.text}</dd>`)}
503
+ ${t.map(e=>O`<dt data-tone=${I(e.tone)} title=${e.tip||A}>${e.label}</dt><dd class="jmono">${e.text}</dd>`)}
469
504
  </dl>
470
- </div>`:j;var n}};U([P({attribute:!1})],ad.prototype,`procs`,void 0),U([P({attribute:!1})],ad.prototype,`summary`,void 0),U([P({attribute:!1})],ad.prototype,`plan`,void 0),U([P({attribute:!1})],ad.prototype,`host`,void 0),ad=U([N(`ca-run-driver`),D()],ad),R(`cae-lanes`,$i);var od=216e5,sd=e=>new Date(e).toLocaleTimeString(jn(),{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`});function cd(){return{py:{label:E(`Python task`),color:`var(--meter)`},llm:{label:E(`Agent task`),color:`var(--agent)`},run:{label:E(`running`),color:`var(--status-running)`,pattern:`striped`,group:1},bad:{label:E(`failed`),color:`var(--status-failed)`,pattern:`hatched`,group:1},idle:{label:E(`not started`),color:`var(--line2)`,pattern:`outline`,group:1}}}function ld(e,t,n,r){if(!f(e)){let t=n.get(e.key),i=e.stop===`invalid_input`&&t?Ko(t,n,r):``;return[q(e),i?E(T`Not started: ${i}`):Z(e.stop,e.reason),e.key].join(`
471
- `)}let i=ws(e.hops,null,e.skipped_hops),a=e.reason&&!e.ok?w(e.reason,r):``;return[q(e),K(Z(e.stop),z(e.wall_s),E(T`ended ${sd(t)}`)),i?E(T`Model switch: ${i}`):e.model?E(T`Model ${e.model}`):``,a,e.key].filter(Boolean).join(`
472
- `)}function ud(e,t,n,r){let i=[];if(e.forEach((e,t)=>{if(!e.ts)return;let a=Date.parse(e.ts);if(Number.isNaN(a))return;let o=f(e)?e.ok?C(e)?`py`:`llm`:`bad`:`idle`;i.push({lane:e.kind||`?`,bar:{id:`j${t}`,style:o,start:a-1e3*(e.wall_s||0),end:a,label:ld(e,a,n,r)}})}),!i.length&&!t.length)return null;let a=Math.max(...i.map(e=>e.bar.end),...t.map(e=>e.t0)),o=i.filter(e=>e.bar.end>=a-od),s=i.length-o.length;t.forEach((e,t)=>o.push({lane:e.kind,bar:{id:`live${t}`,style:`run`,start:e.t0,end:null,label:`${e.kind}\n${E(`running`)}`}}));let c=new Map;for(let{lane:e,bar:t}of[...o].sort((e,t)=>e.bar.start-t.bar.start))(c.get(e)??c.set(e,[]).get(e)).push(t);return{lanes:[...c].map(([e,t])=>({id:e,label:e,bars:t})),omitted:s}}var dd=class extends M{constructor(...e){super(...e),this.journal=[],this.plan=null,this.procs=null,this.live=!1,this.run=``}static{this.styles=[V,O`:host{display:block;}`]}render(){let e=Date.now(),t=this.live?pe(this.procs).map(t=>({kind:t.kind,cls:t.cls,t0:Ir.at(t.id,t.ageS,e)})):[],n=ud(this.journal,t,S(this.journal,this.plan).outcomes,this.run);return n?to(this.run,k`<cae-lanes .lanes=${n.lanes} .barStyles=${cd()} .omitted=${n.omitted} ?live=${this.live} locale=${jn()} .strings=${{omitted:e=>E(e===1?`1 older attempt not shown`:T`${e} older attempts not shown`)}}></cae-lanes>`):k`<div class="blank" style="padding:28px"><span class="ic" aria-hidden="true">⏱</span>${this.live?E(`No finished attempts yet`):E(`No finished attempts`)}</div>`}};U([P({attribute:!1})],dd.prototype,`journal`,void 0),U([P({attribute:!1})],dd.prototype,`plan`,void 0),U([P({attribute:!1})],dd.prototype,`procs`,void 0),U([P({type:Boolean})],dd.prototype,`live`,void 0),U([P()],dd.prototype,`run`,void 0),dd=U([N(`ca-timeline`),D()],dd);var fd=class extends M{constructor(...e){super(...e),this.procs=null,this.live=!1}static{this.styles=[V,O` :host{display:block;container-type:inline-size;}.wks{display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));gap:10px;}@container (max-width:860px){.wks{grid-template-columns:repeat(2,minmax(0,1fr));}}@container (max-width:360px){.wks{grid-template-columns:minmax(0,1fr);}}.wk{border-radius:11px;padding:10px 12px;border:1px solid var(--line);background:color-mix(in srgb,var(--text) 2.5%,transparent);min-width:0;position:relative;overflow:hidden;display:block;width:100%;color:inherit;text-align:start;}.wk>.meta{display:block;}.wk.py,.wk.llm{border-color:var(--line2);}.wk.llm{box-shadow:inset 3px 0 0 -1px color-mix(in srgb,var(--agent) 60%,transparent);cursor:pointer;}.wk.llm:hover{border-color:var(--accent);}.wk.idle{opacity:0.45;border-style:dashed;}.wk-top{display:flex;align-items:center;gap:8px;min-width:0;}.wk-top b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.wk-ic{width:24px;height:24px;border-radius:7px;flex:none;display:grid;place-items:center;background:var(--raise);font-size:12px;}.wk.llm .wk-ic{color:var(--agent);}.wk.py .wk-ic{color:var(--text-muted);}.wk-el{margin-left:auto;font-family:var(--mono);font-size:11.5px;color:var(--status-running);}.wk-bar{position:absolute;left:0;right:0;bottom:0;height:2px;overflow:hidden;}.wk-bar i{position:absolute;top:0;bottom:0;width:30%;background:linear-gradient(90deg,transparent,var(--status-running),transparent);animation:scan 1.8s linear infinite;}`]}render(){let e=this.live?pe(this.procs):[],t=Math.max(this.procs?.max_workers||1,e.length),n=Array.from({length:t-e.length},(e,t)=>t);return k`<div class="wks" style="--n:${Math.min(t,6)}">
473
- ${H(e,e=>e.id,e=>{let t=k`<span class="wk-top">${Ru(e.cls!==`llm`,e.cls===`llm`?E(`Agent task`):E(`Python task`),`wk-ic`)}<b>${e.kind}</b>
474
- <cae-elapsed class="wk-el" .since=${Ir.at(e.id,e.ageS)}></cae-elapsed></span>
505
+ </div>`:A;var n}};H([N({attribute:!1})],Nd.prototype,`procs`,void 0),H([N({attribute:!1})],Nd.prototype,`summary`,void 0),H([N({attribute:!1})],Nd.prototype,`plan`,void 0),H([N({attribute:!1})],Nd.prototype,`host`,void 0),Nd=H([M(`ca-run-driver`),E()],Nd),R(`cae-lanes`,xa);var Pd=216e5,Fd=e=>new Date(e).toLocaleTimeString(F(),{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`});function Id(){return{py:{label:T(`Python task`),color:`var(--meter)`},llm:{label:T(`Agent task`),color:`var(--agent)`},run:{label:T(`running`),color:`var(--status-running)`,pattern:`striped`,group:1},bad:{label:T(`failed`),color:`var(--status-failed)`,pattern:`hatched`,group:1},idle:{label:T(`not started`),color:`var(--line2)`,pattern:`outline`,group:1}}}function Ld(e,t,n,r){if(!f(e)){let t=n.get(e.key),i=e.stop===`invalid_input`&&t?ms(t,n,r):``;return[q(e),i?T(w`Not started: ${i}`):Z(e.stop,e.reason),e.key].join(`
506
+ `)}let i=Ks(e.hops,null,e.skipped_hops),a=e.reason&&!e.ok?C(e.reason,r):``;return[q(e),K(Z(e.stop),z(e.wall_s),T(w`ended ${Fd(t)}`)),i?T(w`Model switch: ${i}`):e.model?T(w`Model ${e.model}`):``,a,e.key].filter(Boolean).join(`
507
+ `)}function Rd(e,t,n,r){let i=[];if(e.forEach((e,t)=>{if(!e.ts)return;let a=Date.parse(e.ts);if(Number.isNaN(a))return;let o=f(e)?e.ok?S(e)?`py`:`llm`:`bad`:`idle`;i.push({lane:e.kind||`?`,bar:{id:`j${t}`,style:o,start:a-1e3*(e.wall_s||0),end:a,label:Ld(e,a,n,r)}})}),!i.length&&!t.length)return null;let a=Math.max(...i.map(e=>e.bar.end),...t.map(e=>e.t0)),o=i.filter(e=>e.bar.end>=a-Pd),s=i.length-o.length;t.forEach((e,t)=>o.push({lane:e.kind,bar:{id:`live${t}`,style:`run`,start:e.t0,end:null,label:`${e.kind}\n${T(`running`)}`}}));let c=new Map;for(let{lane:e,bar:t}of[...o].sort((e,t)=>e.bar.start-t.bar.start))(c.get(e)??c.set(e,[]).get(e)).push(t);return{lanes:[...c].map(([e,t])=>({id:e,label:e,bars:t})),omitted:s}}var zd=class extends j{constructor(...e){super(...e),this.journal=[],this.plan=null,this.procs=null,this.live=!1,this.run=``}static{this.styles=[B,D`:host{display:block;}`]}render(){let e=Date.now(),t=this.live?me(this.procs).map(t=>({kind:t.kind,cls:t.cls,t0:Lr.at(t.id,t.ageS,e)})):[],n=Rd(this.journal,t,x(this.journal,this.plan).outcomes,this.run);return n?wo(this.run,O`<cae-lanes .lanes=${n.lanes} .barStyles=${Id()} .omitted=${n.omitted} ?live=${this.live} locale=${F()} .strings=${{omitted:e=>T(e===1?`1 older attempt not shown`:w`${e} older attempts not shown`)}}></cae-lanes>`):O`<div class="blank" style="padding:28px"><span class="ic" aria-hidden="true">⏱</span>${this.live?T(`No finished attempts yet`):T(`No finished attempts`)}</div>`}};H([N({attribute:!1})],zd.prototype,`journal`,void 0),H([N({attribute:!1})],zd.prototype,`plan`,void 0),H([N({attribute:!1})],zd.prototype,`procs`,void 0),H([N({type:Boolean})],zd.prototype,`live`,void 0),H([N()],zd.prototype,`run`,void 0),zd=H([M(`ca-timeline`),E()],zd);var Bd=class extends j{constructor(...e){super(...e),this.procs=null,this.live=!1}static{this.styles=[B,D` :host{display:block;container-type:inline-size;}.wks{display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));gap:10px;}@container (max-width:860px){.wks{grid-template-columns:repeat(2,minmax(0,1fr));}}@container (max-width:360px){.wks{grid-template-columns:minmax(0,1fr);}}.wk{border-radius:11px;padding:10px 12px;border:1px solid var(--line);background:color-mix(in srgb,var(--text) 2.5%,transparent);min-width:0;position:relative;overflow:hidden;display:block;width:100%;color:inherit;text-align:start;}.wk>.meta{display:block;}.wk.py,.wk.llm{border-color:var(--line2);}.wk.llm{box-shadow:inset 3px 0 0 -1px color-mix(in srgb,var(--agent) 60%,transparent);cursor:pointer;}.wk.llm:hover{border-color:var(--accent);}.wk.idle{opacity:0.45;border-style:dashed;}.wk-top{display:flex;align-items:center;gap:8px;min-width:0;}.wk-top b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.wk-ic{width:24px;height:24px;border-radius:7px;flex:none;display:grid;place-items:center;background:var(--raise);font-size:12px;}.wk.llm .wk-ic{color:var(--agent);}.wk.py .wk-ic{color:var(--text-muted);}.wk-el{margin-left:auto;font-family:var(--mono);font-size:11.5px;color:var(--status-running);}.wk-bar{position:absolute;left:0;right:0;bottom:0;height:2px;overflow:hidden;}.wk-bar i{position:absolute;top:0;bottom:0;width:30%;background:linear-gradient(90deg,transparent,var(--status-running),transparent);animation:scan 1.8s linear infinite;}`]}render(){let e=this.live?me(this.procs):[],t=Math.max(this.procs?.max_workers||1,e.length),n=Array.from({length:t-e.length},(e,t)=>t);return O`<div class="wks" style="--n:${Math.min(t,6)}">
508
+ ${V(e,e=>e.id,e=>{let t=O`<span class="wk-top">${fd(e.cls!==`llm`,e.cls===`llm`?T(`Agent task`):T(`Python task`),`wk-ic`)}<b>${e.kind}</b>
509
+ <cae-elapsed class="wk-el" .since=${Lr.at(e.id,e.ageS)}></cae-elapsed></span>
475
510
  <span class="meta">${e.detail}</span>
476
- <span class="wk-bar"><i></i></span>`;return e.key?k`<button type="button" class="wk ${e.cls}" @click=${()=>Q(this,`ca-open-task`,{key:e.key})}>${t}</button>`:k`<div class="wk ${e.cls}">${t}</div>`})}
477
- ${n.map(()=>k`<div class="wk idle"><div class="wk-top"><b>${E(`Idle`)}</b></div></div>`)}
478
- </div>`}};U([P({attribute:!1})],fd.prototype,`procs`,void 0),U([P({type:Boolean})],fd.prototype,`live`,void 0),fd=U([N(`ca-workers`),D()],fd);var pd=[`invalid`,`refused`,`failed`,`running`,`pending`,`valid`];function md(e){if(e.title)return e.title;if(e.type===`tiles`){let t=e.tiles[0];return t?`${t.label}: ${String(t.value)}`:``}if(e.type===`blocks`)for(let t of e.blocks){let e=he(t),n=e?md(e):``;if(n)return n}return``}function hd(e){if(e===void 0)return E(`Loading…`);let t=he(e);if(t)return md(t);if(typeof e!=`object`||!e)return JSON.stringify(e);let n=Object.keys(e);if(!n.length)return E(`none`,{id:`none`});let r=`${n.slice(0,4).join(`, `)}${n.length>4?`, …`:``}`;return E(Array.isArray(e)?T`${n.length} items: ${r}`:T`${n.length} keys: ${r}`)}var gd=class extends M{constructor(...e){super(...e),this.run=``,this.layer=``,this.unit=``,this.sel=``}static{this.styles=[V,O` :host{display:block;container-type:inline-size;}.ov{display:flex;flex-direction:column;gap:14px;}.band.status{display:grid;gap:14px;align-items:stretch;}.stack{display:flex;flex-direction:column;gap:14px;min-width:0;}.stack>.panel:first-child{flex:1;}.band.parts{display:grid;gap:14px;align-items:stretch;grid-template-columns:repeat(auto-fit,minmax(min(100%,max(440px,calc((100% - 14px) / 2))),1fr));}@container (min-width:894px){.band.parts>.panel:last-child:nth-child(odd){grid-column:1 / -1;}}.stack{grid-area:stack;}.problems{grid-area:problems;}.outputs{grid-area:outputs;}.row{grid-area:running;}.band.status{grid-template-areas:'stack' 'problems' 'outputs' 'running';}@container (min-width:760px){.band.status{grid-template-columns:minmax(240px,1fr) minmax(0,1.4fr);grid-template-areas:'stack problems' 'outputs outputs' 'running running';}}@container (min-width:1100px){.band.status{grid-template-columns:minmax(240px,1fr) minmax(0,1.3fr) minmax(0,1.3fr);grid-template-areas:'stack problems outputs' 'running running running';}}.ok{display:flex;align-items:baseline;gap:6px;color:var(--text-2);}.ok span[aria-hidden]{color:var(--status-done);}.ofl{grid-template-columns:max-content minmax(0,1fr);}.ofl>.jstop{white-space:nowrap;}.ofl>b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.ofl>.meta{grid-column:1 / -1;overflow:hidden;text-overflow:ellipsis;}.ct-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px;}.pcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));gap:12px;}.pcard{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 12px;align-items:start;padding:12px 14px;border-radius:10px;background:var(--raise);border:1px solid var(--line);cursor:pointer;transition:border-color 0.15s,transform 0.15s;text-align:left;color:inherit;font:inherit;width:100%;min-width:0;}.pcard>div{min-width:0;}.pcard .meta{overflow-wrap:anywhere;}.pcard:hover{border-color:var(--accent);transform:translateY(-1px);}.pc-ic{width:34px;height:34px;display:grid;place-items:center;border-radius:9px;background:var(--well);color:var(--text-2);font-size:16px;}.pc-peek{font-family:var(--mono);font-size:11.5px;color:var(--text-2);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.pc-go{grid-column:2;color:var(--accent);font-size:12px;opacity:0.8;margin-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.pcard:hover .pc-go{opacity:1;}.cur-units{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px 14px;}.cu{display:grid;grid-template-columns:90px 1fr 70px auto;gap:8px;align-items:center;}.cu-bar{height:5px;border-radius:3px;background:var(--track);overflow:hidden;}.cu-bar i{display:block;height:100%;background:var(--meter);}.fl>div.meta{grid-column:1 / 4;overflow:hidden;text-overflow:ellipsis;}.stopped{grid-column:1 / 4;color:var(--text-muted);font-size:11px;display:flex;flex-wrap:wrap;align-items:center;gap:4px;}.fl.muted{opacity:0.7;}.problems h4.sub{margin:10px 0 2px;font-size:11px;font-weight:600;color:var(--text-muted);display:flex;}.problems h4.sub .r{margin-left:auto;font-weight:400;}.next{margin:10px 2px 2px;font-size:12px;color:var(--text-2);}.next code{font-family:var(--mono);}.more{font-size:12px;margin:6px 10px 0;}`]}go(e){Q(this,`ca-navigate`,{tab:e})}open(e){Q(this,`ca-open-task`,{key:e.key,...C(e)?{view:`output`}:{}})}render(){let e=this.state,t=fe(e,this.summary),n=t?pe(e.procs).length:0,r=e.procs?.max_workers||null,i=this.info.panels.filter(ge),a=t&&n>0;return k`<div class="ov">
511
+ <span class="wk-bar"><i></i></span>`;return e.key?O`<button type="button" class="wk ${e.cls}" @click=${()=>Q(this,`ca-open-task`,{key:e.key})}>${t}</button>`:O`<div class="wk ${e.cls}">${t}</div>`})}
512
+ ${n.map(()=>O`<div class="wk idle"><div class="wk-top"><b>${T(`Idle`)}</b></div></div>`)}
513
+ </div>`}};H([N({attribute:!1})],Bd.prototype,`procs`,void 0),H([N({type:Boolean})],Bd.prototype,`live`,void 0),Bd=H([M(`ca-workers`),E()],Bd);var Vd=[`invalid`,`refused`,`failed`,`running`,`pending`,`valid`];function Hd(e){if(e.title)return e.title;if(e.type===`tiles`){let t=e.tiles[0];return t?`${t.label}: ${String(t.value)}`:``}if(e.type===`blocks`)for(let t of e.blocks){let e=ge(t),n=e?Hd(e):``;if(n)return n}return``}function Ud(e){if(e===void 0)return T(`Loading…`);let t=ge(e);if(t)return Hd(t);if(typeof e!=`object`||!e)return JSON.stringify(e);let n=Object.keys(e);if(!n.length)return T(`none`,{id:`none`});let r=`${n.slice(0,4).join(`, `)}${n.length>4?`, …`:``}`;return T(Array.isArray(e)?w`${n.length} items: ${r}`:w`${n.length} keys: ${r}`)}var Wd=class extends j{constructor(...e){super(...e),this.run=``,this.layer=``,this.unit=``,this.sel=``}static{this.styles=[B,D` :host{display:block;container-type:inline-size;}.ov{display:flex;flex-direction:column;gap:14px;}.band.status{display:grid;gap:14px;align-items:stretch;}.stack{display:flex;flex-direction:column;gap:14px;min-width:0;}.stack>.panel:first-child{flex:1;}.band.parts{display:grid;gap:14px;align-items:stretch;grid-template-columns:repeat(auto-fit,minmax(min(100%,max(440px,calc((100% - 14px) / 2))),1fr));}@container (min-width:894px){.band.parts>.panel:last-child:nth-child(odd){grid-column:1 / -1;}}.stack{grid-area:stack;}.problems{grid-area:problems;}.outputs{grid-area:outputs;}.row{grid-area:running;}.band.status{grid-template-areas:'stack' 'problems' 'outputs' 'running';}@container (min-width:760px){.band.status{grid-template-columns:minmax(240px,1fr) minmax(0,1.4fr);grid-template-areas:'stack problems' 'outputs outputs' 'running running';}}@container (min-width:1100px){.band.status{grid-template-columns:minmax(240px,1fr) minmax(0,1.3fr) minmax(0,1.3fr);grid-template-areas:'stack problems outputs' 'running running running';}}.ok{display:flex;align-items:baseline;gap:6px;color:var(--text-2);}.ok span[aria-hidden]{color:var(--status-done);}.ofl{grid-template-columns:max-content minmax(0,1fr);}.ofl>.jstop{white-space:nowrap;}.ofl>b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.ofl>.meta{grid-column:1 / -1;overflow:hidden;text-overflow:ellipsis;}.ct-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px;}.pcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr));gap:12px;}.pcard{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 12px;align-items:start;padding:12px 14px;border-radius:10px;background:var(--raise);border:1px solid var(--line);cursor:pointer;transition:border-color 0.15s,transform 0.15s;text-align:left;color:inherit;font:inherit;width:100%;min-width:0;}.pcard>div{min-width:0;}.pcard .meta{overflow-wrap:anywhere;}.pcard:hover{border-color:var(--accent);transform:translateY(-1px);}.pc-ic{width:34px;height:34px;display:grid;place-items:center;border-radius:9px;background:var(--well);color:var(--text-2);font-size:16px;}.pc-peek{font-family:var(--mono);font-size:11.5px;color:var(--text-2);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.pc-go{grid-column:2;color:var(--accent);font-size:12px;opacity:0.8;margin-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.pcard:hover .pc-go{opacity:1;}.cur-units{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px 14px;}.cu{display:grid;grid-template-columns:90px 1fr 70px auto;gap:8px;align-items:center;}.cu-bar{height:5px;border-radius:3px;background:var(--track);overflow:hidden;}.cu-bar i{display:block;height:100%;background:var(--meter);}.fl>div.meta{grid-column:1 / 4;overflow:hidden;text-overflow:ellipsis;}.stopped{grid-column:1 / 4;color:var(--text-muted);font-size:11px;display:flex;flex-wrap:wrap;align-items:center;gap:4px;}.fl.muted{opacity:0.7;}.problems h4.sub{margin:10px 0 2px;font-size:11px;font-weight:600;color:var(--text-muted);display:flex;}.problems h4.sub .r{margin-left:auto;font-weight:400;}.next{margin:10px 2px 2px;font-size:12px;color:var(--text-2);}.next code{font-family:var(--mono);}.more{font-size:12px;margin:6px 10px 0;}`]}go(e){Q(this,`ca-navigate`,{tab:e})}open(e){Q(this,`ca-open-task`,{key:e.key,...S(e)?{view:`output`}:{}})}render(){let e=this.state,t=pe(e,this.summary),n=t?me(e.procs).length:0,r=e.procs?.max_workers||null,i=this.info.panels.filter(_e),a=t&&n>0;return O`<div class="ov">
479
514
  <div class="band status">
480
515
  <div class="stack">
481
516
  <section class="panel enter">
482
- <h3>${E(`Run`)}</h3>
517
+ <h3>${T(`Run`)}</h3>
483
518
  <ca-run-driver .procs=${e.procs} .summary=${this.summary} .plan=${e.plan} .host=${this.host}></ca-run-driver>
484
519
  </section>
485
- ${t&&!a?this.runningCard(t,n,r):j}
520
+ ${t&&!a?this.runningCard(t,n,r):A}
486
521
  </div>
487
522
  <section class="panel enter problems">
488
- <h3>${E(`Problems`)}
489
- <span class="r"><a class="lnk" href="#" @click=${e=>this.nav(e,()=>Q(this,`ca-navigate`,{tab:`journal`,stop:`bad`}))}>${E(`Failed attempts in history`)}</a></span></h3>
523
+ <h3>${T(`Problems`)}
524
+ <span class="r"><a class="lnk" href="#" @click=${e=>this.nav(e,()=>Q(this,`ca-navigate`,{tab:`journal`,stop:`bad`}))}>${T(`Failed attempts in history`)}</a></span></h3>
490
525
  ${this.problems(t)}
491
526
  </section>
492
527
  <section class="panel enter outputs">
493
- <h3 title=${E(`Checked files (OutputContract, InputContract)`)}>${E(`Outputs`)}
494
- <span class="r"><a class="lnk" href="#" @click=${e=>this.nav(e,()=>this.go(`outputs`))}>${E(`All outputs`)}</a></span></h3>
528
+ <h3 title=${T(`Checked files (OutputContract, InputContract)`)}>${T(`Outputs`)}
529
+ <span class="r"><a class="lnk" href="#" @click=${e=>this.nav(e,()=>this.go(`outputs`))}>${T(`All outputs`)}</a></span></h3>
495
530
  ${this.outputs()}
496
531
  </section>
497
- ${a?k`<div class="row">${this.runningCard(t,n,r)}</div>`:j}
532
+ ${a?O`<div class="row">${this.runningCard(t,n,r)}</div>`:A}
498
533
  </div>
499
534
  <section class="panel enter">
500
- <h3 title=${E(`Every task the run scheduled, by kind (plan.jsonl)`)}>${E(`Pipeline`)}
535
+ <h3 title=${T(`Every task the run scheduled, by kind (plan.jsonl)`)}>${T(`Pipeline`)}
501
536
  <span class="r">${this.progressLine(t)}</span></h3>
502
537
  <ca-pipeline-graph .plan=${e.plan} .journal=${e.journal} .run=${this.run} .layer=${this.layer} .unit=${this.unit} .sel=${this.sel} ?live=${t}></ca-pipeline-graph>
503
538
  </section>
504
539
  <section class="panel enter">
505
- <h3 title=${E(`Counted from every finished attempt (journal.jsonl)`)}>${E(`Totals`)}</h3>
540
+ <h3 title=${T(`Counted from every finished attempt (journal.jsonl)`)}>${T(`Totals`)}</h3>
506
541
  <ca-kpis .journal=${e.journal} .plan=${e.plan}></ca-kpis>
507
542
  </section>
508
543
  <div class="band parts">
509
- ${t?k`<section class="panel enter">
510
- <h3>${E(`Process tree`)}
511
- <span class="r"><a class="lnk" href="#" @click=${e=>this.nav(e,()=>this.go(`procs`))}>${E(`All processes`)}</a></span></h3>
544
+ ${t?O`<section class="panel enter">
545
+ <h3>${T(`Process tree`)}
546
+ <span class="r"><a class="lnk" href="#" @click=${e=>this.nav(e,()=>this.go(`procs`))}>${T(`All processes`)}</a></span></h3>
512
547
  <ca-proc-tree .procs=${e.procs}></ca-proc-tree>
513
- </section>`:j}
514
- ${De(e.journal)?k`<section class="panel enter">
515
- <h3 title=${E(`Reported by the coding agents`)}>${E(`Tokens and cost by kind`)}</h3>
548
+ </section>`:A}
549
+ ${Oe(e.journal)?O`<section class="panel enter">
550
+ <h3 title=${T(`Reported by the coding agents`)}>${T(`Tokens and cost by kind`)}</h3>
516
551
  <ca-spend-breakdown .journal=${e.journal}></ca-spend-breakdown>
517
- </section>`:j}
518
- ${e.plan.models?.length?k`<section class="panel enter">
519
- <h3 title=${E(`What the agent sessions spent on each model, each model of a model switch counted separately (Plan.models)`)}>${E(`Models`)}
520
- <span class="r">${e.plan.models.length===1?E(`1 model`):E(T`${e.plan.models.length} models`)}</span></h3>
552
+ </section>`:A}
553
+ ${e.plan.models?.length?O`<section class="panel enter">
554
+ <h3 title=${T(`What the agent sessions spent on each model, each model of a model switch counted separately (Plan.models)`)}>${T(`Models`)}
555
+ <span class="r">${e.plan.models.length===1?T(`1 model`):T(w`${e.plan.models.length} models`)}</span></h3>
521
556
  <ca-model-usage .models=${e.plan.models}></ca-model-usage>
522
- </section>`:j}
523
- ${Le(e.journal).length||e.plan.rests?.length?k`<section class="panel enter">
524
- <h3 title=${E(`Account-wide | read at each agent session start`)}>
525
- ${E(`Subscription usage`)}<span class="r">${E(`Per account, first → last reading`)}</span></h3>
557
+ </section>`:A}
558
+ ${Re(e.journal).length||e.plan.rests?.length?O`<section class="panel enter">
559
+ <h3 title=${T(`Account-wide | read at each agent session start`)}>
560
+ ${T(`Subscription usage`)}<span class="r">${T(`Per account, first → last reading`)}</span></h3>
526
561
  <ca-quota .journal=${e.journal} .caps=${e.plan.quota_caps??[]} .rests=${e.plan.rests??[]} .rule=${e.plan.quota_rule??``} ?live=${t}></ca-quota>
527
- </section>`:j}
528
- ${e.cursor?k`<section class="panel enter">
529
- <h3 title=${E(`Stage and step per unit (CursorStore)`)}>${E(`Resume cursor`)}</h3>
562
+ </section>`:A}
563
+ ${e.plan.services?.length?O`<section class="panel enter">
564
+ <h3 title=${T(`A long-lived helper that the tasks holding one lock share (services.jsonl)`)}>${T(`Services`)}</h3>
565
+ <ca-services .services=${e.plan.services} .nodes=${e.plan.nodes} ?live=${t}></ca-services>
566
+ </section>`:A}
567
+ ${e.cursor?O`<section class="panel enter">
568
+ <h3 title=${T(`Stage and step per unit (CursorStore)`)}>${T(`Resume cursor`)}</h3>
530
569
  ${this.cursor()}
531
- </section>`:j}
570
+ </section>`:A}
532
571
  </div>
533
- ${i.length?k`<section class="panel enter views">
534
- <h3 title=${E(`monitor.Panel`)}>${E(`Custom views`)}</h3>
572
+ ${i.length?O`<section class="panel enter views">
573
+ <h3 title=${T(`monitor.Panel`)}>${T(`Custom views`)}</h3>
535
574
  ${this.panelCards(i)}
536
- </section>`:j}
575
+ </section>`:A}
537
576
  <section class="panel enter">
538
- <h3>${E(`Timeline`)}
577
+ <h3>${T(`Timeline`)}
539
578
  <span class="r">${this.triesLine()}</span></h3>
540
579
  <ca-timeline .journal=${e.journal} .plan=${e.plan} .procs=${e.procs} .live=${t} .run=${this.run}></ca-timeline>
541
580
  </section>
542
- </div>`}runningCard(e,t,n){return k`<section class="panel enter">
543
- <h3 title=${E(`Limit: max_concurrent`)}>${E(`Running tasks`)}
544
- ${e?k`<span class="r">${E(n?T`${t} of ${n} running at once`:T`${t} running at once`)}</span>`:j}</h3>
545
- ${t?k`<ca-workers .procs=${this.state.procs} .live=${e}></ca-workers>`:k`<div class="meta">${E(`No tasks running`)}</div>`}
546
- </section>`}outputs(){let{contracts:e,tally:t}=this.state.outputs;if(!e.length)return k`<div class="meta">${E(`No output files`)}</div>`;let n=pd.filter(e=>t[e]),r=e.flatMap(e=>(e.outputs??[]).map(t=>[e,t])).filter(([,e])=>e.status===`invalid`||e.status===`failed`),i=r.slice(0,5),a=t.refused;return k`<div class="ct-row">
547
- ${n.length?n.map(e=>Uc(e,t[e])):k`<span class="meta">${E(`No checked files`)}</span>`}
548
- </div>
549
- ${i.map(([e,t])=>k`<button type="button" class="fl ofl" @click=${()=>this.go(`outputs`)}>
550
- ${Qr({text:t.status?Ts(t.status):`—`,tone:Uo(t.status),title:t.status?Es(t.status):null})}
581
+ </div>`}runningCard(e,t,n){return O`<section class="panel enter">
582
+ <h3 title=${T(`Limit: max_concurrent`)}>${T(`Running tasks`)}
583
+ ${e?O`<span class="r">${T(n?w`${t} of ${n} running at once`:w`${t} running at once`)}</span>`:A}</h3>
584
+ ${t?O`<ca-workers .procs=${this.state.procs} .live=${e}></ca-workers>`:O`<div class="meta">${T(`No tasks running`)}</div>`}
585
+ </section>`}outputs(){let{contracts:e,tally:t}=this.state.outputs;if(!e.length)return O`<div class="meta">${T(`No output files`)}</div>`;let n=Vd.filter(e=>t[e]),r=e.flatMap(e=>(e.outputs??[]).map(t=>[e,t])).filter(([,e])=>e.status===`invalid`||e.status===`failed`),i=r.slice(0,5),a=t.refused;return O`<div class="ct-row">
586
+ ${n.length?n.map(e=>pl(e,t[e])):O`<span class="meta">${T(`No checked files`)}</span>`}
587
+ </div>
588
+ ${i.map(([e,t])=>O`<button type="button" class="fl ofl" @click=${()=>this.go(`outputs`)}>
589
+ ${$r({text:t.status?qs(t.status):`—`,tone:ds(t.status),title:t.status?Js(t.status):null})}
551
590
  <b class="jmono" title=${e.key}>${q({kind:e.kind,unit:e.unit===e.key?``:e.unit})}</b>
552
- <span class="meta">${Kc(t)}</span>
553
- <span class="meta">${w(t.errors?.[0]||t.path,this.run).slice(0,160)}</span>
591
+ <span class="meta">${vl(t)}</span>
592
+ <span class="meta">${C(t.errors?.[0]||t.path,this.run).slice(0,160)}</span>
554
593
  </button>`)}
555
- ${r.length>i.length?k`<div class="more"><a class="lnk" href="#" @click=${e=>this.nav(e,()=>this.go(`outputs`))}>${r.length-i.length===1?E(`1 more output`):E(T`${r.length-i.length} more outputs`)}</a></div>`:j}
556
- ${a?k`<div class="meta more">${E(a===1?`1 output not written (task not started)`:T`${a} outputs not written (tasks not started)`)}</div>`:j}`}progressLine(e){let t=this.state.plan,n=te(t);if(e||n.left){let e=function(e){let t=e.groups.reduce((e,t)=>e+t.total,0),n=e.groups.reduce((e,t)=>e+t.done,0),r=e.groups.reduce((e,t)=>e+(t.partial??0),0),i=e.groups.reduce((e,t)=>e+t.skipped,0);return{total:t,done:n,partial:r,skipped:i,pct:Math.round(100*(n+r+i)/Math.max(1,t))}}(t);return K(E(T`${e.pct}%`),E(T`${e.done} of ${e.total} tasks done`),e.partial?X(`partial`,e.partial):``,e.skipped?X(`skipped`,e.skipped):``)}return K(X(`done`,n.done),n.skipped?X(`skipped`,n.skipped):``,n.failed?X(`failed`,n.failed):``,n.notStarted?X(`not_started`,n.notStarted):``,n.partial?X(`partial`,n.partial):``)}triesLine(){let{tries:e,notStarted:t}=S(this.state.journal,this.state.plan).tries;return K(E(e===1?`1 attempt`:T`${e} attempts`),t?X(`not_started`,t):``)}nav(e,t){e.preventDefault(),t()}cursor(){let e=this.state.cursor,t=Object.entries(e?.units??{});if(!e||!e.stage&&!t.length)return k`<div class="meta">${E(`No resume cursor`)}</div>`;let n=e.completed_stages??[];return k`<div class="chips" style="margin-bottom:10px">
557
- ${n.length||e.stage?k`${n.map(e=>k`<span class="chip" data-tone="done"><span aria-hidden="true">✓</span><span class="sr">${E(`done`,{id:`stage-done`})}</span> ${e}</span>`)}${e.stage?k`<span class="chip" data-tone="running"><span class="sr">${E(`current`)}</span>${e.stage}</span>`:j}`:k`<span class="meta">${E(`No stage`)}</span>`}
594
+ ${r.length>i.length?O`<div class="more"><a class="lnk" href="#" @click=${e=>this.nav(e,()=>this.go(`outputs`))}>${r.length-i.length===1?T(`1 more output`):T(w`${r.length-i.length} more outputs`)}</a></div>`:A}
595
+ ${a?O`<div class="meta more">${T(a===1?`1 output not written (task not started)`:w`${a} outputs not written (tasks not started)`)}</div>`:A}`}progressLine(e){let t=this.state.plan,n=ne(t);if(e||n.left){let e=function(e){let t=e.groups.reduce((e,t)=>e+t.total,0),n=e.groups.reduce((e,t)=>e+t.done,0),r=e.groups.reduce((e,t)=>e+(t.partial??0),0),i=e.groups.reduce((e,t)=>e+t.skipped,0);return{total:t,done:n,partial:r,skipped:i,pct:Math.round(100*(n+r+i)/Math.max(1,t))}}(t);return K(T(w`${e.pct}%`),T(w`${e.done} of ${e.total} tasks done`),e.partial?X(`partial`,e.partial):``,e.skipped?X(`skipped`,e.skipped):``)}return K(X(`done`,n.done),n.skipped?X(`skipped`,n.skipped):``,n.failed?X(`failed`,n.failed):``,n.notStarted?X(`not_started`,n.notStarted):``,n.partial?X(`partial`,n.partial):``)}triesLine(){let{tries:e,notStarted:t}=x(this.state.journal,this.state.plan).tries;return K(T(e===1?`1 attempt`:w`${e} attempts`),t?X(`not_started`,t):``)}nav(e,t){e.preventDefault(),t()}cursor(){let e=this.state.cursor,t=Object.entries(e?.units??{});if(!e||!e.stage&&!t.length)return O`<div class="meta">${T(`No resume cursor`)}</div>`;let n=e.completed_stages??[];return O`<div class="chips" style="margin-bottom:10px">
596
+ ${n.length||e.stage?O`${n.map(e=>O`<span class="chip" data-tone="done"><span aria-hidden="true">✓</span><span class="sr">${T(`done`,{id:`stage-done`})}</span> ${e}</span>`)}${e.stage?O`<span class="chip" data-tone="running"><span class="sr">${T(`current`)}</span>${e.stage}</span>`:A}`:O`<span class="meta">${T(`No stage`)}</span>`}
558
597
  </div>
559
- ${t.length?k`<div class="cur-units">
560
- ${t.map(([e,t])=>k`<div class="cu">
598
+ ${t.length?O`<div class="cur-units">
599
+ ${t.map(([e,t])=>O`<div class="cu">
561
600
  <span class="jmono">${e}</span>
562
- <span class="meta">${K(t.step||`—`,t.loop_pass?E(T`pass ${t.loop_pass}`):``)}</span>
563
- <span class="cu-bar" title=${t.completed.length===1?E(`1 step done`):E(T`${t.completed.length} steps done`)}><i style="width:${Math.min(100,12*(t.completed.length+1))}%"></i></span>
564
- ${t.inflight.length?Zr({text:E(`running`),tone:`running`,title:t.inflight.join(`
565
- `)}):j}
601
+ <span class="meta">${K(t.step||`—`,t.loop_pass?T(w`pass ${t.loop_pass}`):``)}</span>
602
+ <span class="cu-bar" title=${t.completed.length===1?T(`1 step done`):T(w`${t.completed.length} steps done`)}><i style="width:${Math.min(100,12*(t.completed.length+1))}%"></i></span>
603
+ ${t.inflight.length?Qr({text:T(`running`),tone:`running`,title:t.inflight.join(`
604
+ `)}):A}
566
605
  </div>`)}
567
- </div>`:j}`}panelCards(e){return k`<div class="pcards">
568
- ${H(e,e=>e.name,e=>{let t=hd(this.state.panels[e.name]);return k`<button type="button" class="pcard" @click=${()=>this.go(`panel:${e.name}`)}>
606
+ </div>`:A}`}panelCards(e){return O`<div class="pcards">
607
+ ${V(e,e=>e.name,e=>{let t=Ud(this.state.panels[e.name]);return O`<button type="button" class="pcard" @click=${()=>this.go(`panel:${e.name}`)}>
569
608
  <span class="pc-ic" aria-hidden="true">${e.icon||`▤`}</span>
570
609
  <div>
571
610
  <b>${e.title||e.name}</b>
572
- ${e.description?k`<div class="meta">${e.description}</div>`:j}
573
- ${t?k`<div class="pc-peek">${t}</div>`:j}
611
+ ${e.description?O`<div class="meta">${e.description}</div>`:A}
612
+ ${t?O`<div class="pc-peek">${t}</div>`:A}
574
613
  </div>
575
- <span class="pc-go">${E(`Show view`)}</span>
614
+ <span class="pc-go">${T(`Show view`)}</span>
576
615
  </button>`})}
577
- </div>`}nameButton(e){return k`<button type="button" class="fl-name jmono" title=${e.key} @click=${()=>this.open(e)}>${this.name(e)}</button>`}openRow(e,t){e.target.closest(`button`)||this.open(t)}name(e){return q(e)}problems(e){let{outcomes:t,problems:n}=S(this.state.journal,this.state.plan),{failed:r,notStarted:i,partial:a,recovered:o}=n,s=r.length+i.length+a.length,c=k`<div class="ok"><span aria-hidden="true">✓</span>${E(`No problems`)}</div>`;if(!s&&!o.length)return c;let l=e=>w(e.attempts[e.attempts.length-1]?.reason||`—`,this.run).slice(0,200),u=e=>e.length?k`<div class="stopped">
578
- <span>${e.length===1?E(`1 later task not started`):E(T`${e.length} later tasks not started`)}</span>
579
- ${e.map(e=>Ic(this,this.name(e),e))}
580
- </div>`:j;return k`${s?j:c}${H(r,e=>e.task.key,e=>{let t=e.task.attempts[e.task.attempts.length-1];return k`<div class="fl" @click=${t=>this.openRow(t,e.task)}>
581
- ${Qr({text:Fo(`failed`),tone:`failed`})}
616
+ </div>`}nameButton(e){return O`<button type="button" class="fl-name jmono" title=${e.key} @click=${()=>this.open(e)}>${this.name(e)}</button>`}openRow(e,t){e.target.closest(`button`)||this.open(t)}name(e){return q(e)}problems(e){let{outcomes:t,problems:n}=x(this.state.journal,this.state.plan),{failed:r,notStarted:i,partial:a,recovered:o}=n,s=r.length+i.length+a.length,c=O`<div class="ok"><span aria-hidden="true">✓</span>${T(`No problems`)}</div>`;if(!s&&!o.length)return c;let l=e=>C(e.attempts[e.attempts.length-1]?.reason||`—`,this.run).slice(0,200),u=e=>e.length?O`<div class="stopped">
617
+ <span>${e.length===1?T(`1 later task not started`):T(w`${e.length} later tasks not started`)}</span>
618
+ ${e.map(e=>al(this,this.name(e),e))}
619
+ </div>`:A;return O`${s?A:c}${V(r,e=>e.task.key,e=>{let t=e.task.attempts[e.task.attempts.length-1];return O`<div class="fl" @click=${t=>this.openRow(t,e.task)}>
620
+ ${$r({text:rs(`failed`),tone:`failed`})}
582
621
  ${this.nameButton(e.task)}<span class="meta">${G(t?.ts,!0)}</span>
583
622
  <div class="meta">${Z(t?.stop)}: ${l(e.task)}</div>
584
623
  ${u(e.stopped)}
585
624
  </div>`})}
586
- ${H(i,e=>e.key,e=>k`<div class="fl" @click=${t=>this.openRow(t,e)}>
587
- ${Qr({text:Fo(`not_started`),tone:`attention`})}
625
+ ${V(i,e=>e.key,e=>O`<div class="fl" @click=${t=>this.openRow(t,e)}>
626
+ ${$r({text:rs(`not_started`),tone:`attention`})}
588
627
  ${this.nameButton(e)}<span></span>
589
- <div class="meta">${Ko(e,t,this.run)?ko(Ko(e,t,this.run)):l(e)}</div>
628
+ <div class="meta">${ms(e,t,this.run)?Zo(ms(e,t,this.run)):l(e)}</div>
590
629
  </div>`)}
591
- ${H(a,e=>e.key,e=>k`<div class="fl" @click=${t=>this.openRow(t,e)}>
592
- ${Qr({text:Fo(`partial`),tone:Ho(`partial`)})}
630
+ ${V(a,e=>e.key,e=>O`<div class="fl" @click=${t=>this.openRow(t,e)}>
631
+ ${$r({text:rs(`partial`),tone:us(`partial`)})}
593
632
  ${this.nameButton(e)}<span></span>
594
633
  <div class="meta">${l(e)}</div>
595
634
  </div>`)}
596
- ${o.length?k`<h4 class="sub">${ko(Fo(`recovered`))} <span class="r">${o.length}</span></h4>`:j}
597
- ${H(o,e=>e.key,e=>{let t=e.tries.filter(e=>!e.ok).length,n=e.tries.length;return k`<div class="fl muted" @click=${t=>this.openRow(t,e)}>
598
- ${Qr({text:Fo(`recovered`),tone:Ho(`recovered`)})}
635
+ ${o.length?O`<h4 class="sub">${Zo(rs(`recovered`))} <span class="r">${o.length}</span></h4>`:A}
636
+ ${V(o,e=>e.key,e=>{let t=e.tries.filter(e=>!e.ok).length,n=e.tries.length;return O`<div class="fl muted" @click=${t=>this.openRow(t,e)}>
637
+ ${$r({text:rs(`recovered`),tone:us(`recovered`)})}
599
638
  ${this.nameButton(e)}<span></span>
600
- <div class="meta">${E(t===1?T`Done on attempt ${n} | 1 failed attempt`:T`Done on attempt ${n} | ${t} failed attempts`)}</div>
639
+ <div class="meta">${T(t===1?w`Done on attempt ${n} | 1 failed attempt`:w`Done on attempt ${n} | ${t} failed attempts`)}</div>
601
640
  </div>`})}
602
- ${this.nextStep(e,s)}`}nextStep(e,t){if(e||!t)return j;let n=S(this.state.journal,this.state.plan).counts,r=n.total-n.finished+n.partial;return r?k`<div class="next" title="resume=True">${E(T`${r} of ${n.total} tasks not done`)}</div>`:j}};function _d(e,t,n){let r=n.toLowerCase();return e.filter(e=>(!t||e.kind===t)&&(!r||`${e.kind} ${e.unit} ${(e.claims??[]).join(` `)} ${e.key} ${e.last_stop}`.toLowerCase().includes(r)))}U([P({attribute:!1})],gd.prototype,`state`,void 0),U([P({attribute:!1})],gd.prototype,`summary`,void 0),U([P({attribute:!1})],gd.prototype,`host`,void 0),U([P({attribute:!1})],gd.prototype,`info`,void 0),U([P()],gd.prototype,`run`,void 0),U([P()],gd.prototype,`layer`,void 0),U([P()],gd.prototype,`unit`,void 0),U([P()],gd.prototype,`sel`,void 0),gd=U([N(`ca-overview`),D()],gd),R(`cae-data-table`,Ji);var vd={failed:0,not_started:1,partial:2,running:3,waiting:4};function yd(e){return e.map((e,t)=>({t:e,i:t})).sort((e,t)=>(vd[e.t.outcome]??9)-(vd[t.t.outcome]??9)||t.t.last_ts.localeCompare(e.t.last_ts)||e.i-t.i).map(e=>e.t)}var bd=[`key`,`unit`,`stop`,`kind`,`route`,`reason`],xd=e=>new Set(m(e).map(e=>e.key)),Sd=e=>(e.rounds??1)>1;function Cd(e,t,n,r){let i=r.toLowerCase(),a=n===`retried`?xd(e):null;return e.filter(e=>!(n===`bad`&&!ce(e))&&!(n===`fixup`&&!Sd(e))&&!(a&&!a.has(e.key))&&!(n===`replayed`&&!e.replayed)&&!(n&&![`bad`,`fixup`,`retried`,`replayed`].includes(n)&&e.stop!==n)&&(!t||e.kind===t)&&(!i||bd.some(t=>String(e[t]??``).toLowerCase().includes(i))))}function wd(e){let t=new Map;for(let n of e)t.set(n.stop||`?`,(t.get(n.stop||`?`)??0)+1);return[...t.entries()].sort((e,t)=>t[1]-e[1])}function Td(e){let t=new Map;return e.forEach((e,n)=>{let r=t.get(e.key)??{count:0,lastOk:-1,lastOkTry:0};f(e)&&r.count++,e.ok&&(r.lastOk=n,r.lastOkTry=(e.attempt??0)+1),t.set(e.key,r)}),t}var Ed=()=>E(`none`,{id:`none`});function Dd(e){let t=new Map;for(let n of e.all)t.set(`${n.kind}|${n.unit}`,(t.get(`${n.kind}|${n.unit}`)??0)+1);let n=Math.max(1,...e.rows.map(e=>e.wall_s)),r=new Map;for(let t of e.journal)Ee(r.get(t.key)??r.set(t.key,we()).get(t.key),t);let i=e=>e.tries.length>0,a=(e,t)=>{if(!i(e))return k`<span class="jdim">${Ed()}</span>`;let n=r.get(e.key);return n?.reported?t(n):k`<span class="jdim">—</span>`};return[{id:`task`,header:E(`Task`),tip:E(`Kind · unit`),width:`minmax(220px, 0.6fr)`,rowHeader:!0,text:e=>e.key,cell:e=>{let n=C(e),r=e.pass!==null&&(t.get(`${e.kind}|${e.unit}`)??0)>1?e.pass:null;return k`<span class="grow jmono" title=${e.key}>
603
- ${Ru(n,E(n?`Python task`:`Agent task`))}${e.kind}
604
- ${e.unit?k`<span class="jdim">· ${e.unit}</span>`:j}${r===null?j:k`<span class="pass">${Zo(r)}</span>`}
605
- ${e.claims?.length?k`<span class="jdim also" title=${i=e.claims,K(Us(),Mo(i))}>${(e=>e.length>2?E(T`Locks ${e.length} names`):E(T`Locks ${Mo(e)}`))(e.claims)}</span>`:j}
606
- ${e.priority?k`<span class="jdim also" title=${hc()}>${mc(e.priority)}</span>`:j}
607
- </span>`;var i}},{id:`attempts`,header:E(`Attempts`),tip:E(`Attempts that ran`),align:`end`,width:`64px`,cell:e=>e.tries.length},{id:`time`,header:E(`Time`),tip:E(`Summed over all attempts`),align:`end`,width:`132px`,cell:e=>k`<span class="wall">${i(e)?k`${z(e.wall_s)}<span class="jdur"><i class=${C(e)?``:`llm`} style="width:${Math.max(4,Math.round(100*e.wall_s/n))}%"></i></span>`:k`<span class="jdim">${Ed()}</span><span class="jdur" style="visibility:hidden"></span>`}</span>`},{id:`tokens`,header:E(`Tokens`),tip:E(`Input and output, summed over all attempts`),align:`end`,width:`72px`,cell:e=>a(e,e=>k`<span title=${K(E(T`Cache read ${J(e.cache_read)}`),E(T`Cache write ${J(e.cache_creation)}`))}>${J(e.input+e.output)}</span>`)},{id:`cost`,header:E(`Cost`),tip:E(`Reported by the coding agent`),align:`end`,width:`72px`,cell:e=>a(e,e=>Y(e.cost))},{id:`ended`,header:E(`Last attempt ended`),align:`end`,width:`128px`,cell:e=>k`<span class="meta">${i(e)?G(e.tries[e.tries.length-1]?.ts,!0):Ed()}</span>`},{id:`status`,header:E(`Status`,{id:`status`}),width:`minmax(240px, 1fr)`,cell:t=>{let n=function(e,t){return e.outcome===`not_started`?Ko(e,t.outcomes,t.run):e.outcome===`partial`?w(e.attempts[e.attempts.length-1]?.reason??``,t.run):e.outcome===`waiting`&&e.deferred?ys(e.deferredCause,e.deferred,e.deferredIn):e.outcome===`waiting`?function(e){let t=e[0];return t?e.length===1?E(T`waits for output of ${q(t)}`):E(T`waits for output of ${e.length} earlier tasks`):``}(e.waits_for.map(e=>t.outcomes.get(e)??{kind:e})):``}(t,e),r=t.outcome===`waiting`&&t.deferred?function(e){let t=e?.cause===`rest`?vs(e.rests??[]):[];return t.length>1?t.map(_s).join(`
608
- `):``}(t.deferredCause)||t.deferred:``;return k`${Zr({text:Io(t.outcome,e.live&&!t.deferred),tone:Ho(t.outcome),mark:Wo(t.outcome),title:t.last_stop})}${n?k`<span class="cause" title=${r||j}>${n}</span>`:j}`}}]}var Od=[Kr,zu,O` caption{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}tr{column-gap:20px;padding:6px 12px;}tbody tr{border-bottom:0;border-radius:8px;transition:background 0.15s;}thead tr{align-items:end;white-space:nowrap;padding:4px 12px 8px;margin-bottom:4px;}tbody [data-col='ended']{font-size:var(--font-size-sm);}.wall{display:flex;align-items:center;justify-content:flex-end;gap:8px;}.wall .jdur{width:56px;margin:0;flex:none;}.grow{display:flex;align-items:center;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.grow .jdim{margin-left:8px;}.pass{margin-left:8px;font-size:11px;color:var(--text-muted);}.cause{display:block;font-size:11px;color:var(--text-muted);margin-top:2px;white-space:normal;overflow-wrap:anywhere;}@container (max-width:760px){tr{grid-template-columns:minmax(0,1fr) 128px 90px;}[data-col='attempts'],[data-col='tokens'],[data-col='cost'],[data-col='ended']{display:none;}}`],kd=class extends M{constructor(...e){super(...e),this.journal=[],this.plan=null,this.kind=``,this.q=``,this.live=!1,this.run=``}static{this.styles=[V,O`:host{display:block;margin-top:4px;}`]}open(e,t){let n=e.find(e=>e.key===t);n&&Q(this,`ca-open-task`,C(n)?{key:t,view:`output`}:{key:t})}render(){let e=this.plan?S(this.journal,this.plan):null,t=e?.rows??[],n=yd(_d(t,this.kind,this.q));return n.length?k`<cae-data-table .columns=${Dd({run:this.run,live:this.live,outcomes:e?.outcomes??new Map,all:t,rows:n,journal:this.journal})} .rows=${n} .rowKey=${e=>e.key} .rowTone=${e=>e.outcome===`running`?`running`:void 0} .rowAttrs=${e=>({"data-executor":C(e)?`python`:`agent`})} .cellStyles=${Od} .caption=${E(`Tasks`,{id:`tab-tasks`})} .strings=${Hs(E(`No tasks`))} @cae-activate=${e=>this.open(n,e.detail.id)} ></cae-data-table>`:k`<div class="blank"><span class="ic" aria-hidden="true">≡</span>${t.length?E(`No tasks match the filter`):E(`No tasks`)}</div>`}};function Ad(e){return e===`invalid_input`?Fo(`not_started`):Z(e)}function jd(e){let t=Math.max(1,...e.rows.map(e=>e.wall_s||0)),n=Td(e.journal),r=new Map(e.journal.map((e,t)=>[e,t]));return[{id:`ended`,header:E(`Ended`),width:`64px`,cell:e=>k`<span class="jmono" title=${G(e.ts,!0)}>${G(e.ts)}</span>`},{id:`task`,header:E(`Task`),width:`minmax(130px,0.8fr)`,rowHeader:!0,text:e=>e.key,cell:e=>{let t=C(e);return k`<span class="jmono" title=${e.key}>${Ru(t,E(t?`Python task`:`Agent task`),``)}
609
- ${q(e)}</span>`}},{id:`outcome`,header:E(`Outcome`),tip:E(`How the attempt ended (stop)`),width:`minmax(150px,0.7fr)`,cell:t=>{let r=f(t),i=r&&(n.get(t.key)?.count??1)>1,a=r?Xo((t.rounds??1)-1):``,o=e.replayMarks&&t.replayed?Ns():``;return Qr({text:k`<span class="nw">${Ad(t.stop)}</span>${i||a||o?k`<span class="sub" title=${o?Ps():j}>${K(i?Jo(t.attempt):``,a,o)}</span>`:j}`,tone:Vo(t.stop),cls:`two`,title:t.stop})}},{id:`agent`,header:E(`Agent, model, identity`),width:`minmax(150px,1fr)`,cell:e=>k`<span class="jmono jdim two" title=${K(e.route,ws(e.hops,null,e.skipped_hops))||j}>${f(e)?k`<span>${[e.agent,e.model].filter(Boolean).join(` / `)||`—`}</span>${function(e){let t=[...new Set([...(e.hops??[]).map(e=>e.credential),e.credential].filter(Boolean))];if(!t.length)return j;let n=(e.quota??[])[0],r=n?E(T`Usage at session start (account-wide): ${us(n)}`):``,i=n&&t.length===1&&(n.credential??``)===t[0],a=n?i?cs(n):us(n):``;return k`<span class="sub" title=${[r,...t.map(rs)].filter(Boolean).join(`
610
- `)||j}>${t.map(e=>ns(e)).join(` → `)}${n?k` <span class="q">${a}</span>`:j}</span>`}(e)}`:`—`}</span>`},{id:`tokens`,header:E(`Tokens`),tip:E(`Input / output | cache read / cache write`),align:`end`,width:`92px`,cell:e=>{let t=e.usage;return k`<span class="two" title=${[t?.resident==null?``:E(T`Input of the first API call: ${J(t.resident)}`),vc(e)].filter(Boolean).join(`
611
- `)||j}>${t?k`<span>${J(t.input)} / ${J(t.output)}</span><span class="sub">${J(t.cache_read)} / ${J(t.cache_creation)}</span>`:k`<span class="jdim">—</span>`}</span>`}},{id:`cost`,header:E(`Cost`),tip:E(`Reported by the coding agent`),align:`end`,width:`60px`,cell:e=>{let t=e.hops??[];return k`<span class="cost" title=${(t.length>1?t.map(e=>K(e.model||e.route||`—`,ns(e.credential)||`—`,Y(e.cost_usd),Z(e.stop))).join(`
612
- `):``)||E(`Reported by the coding agent`)}>${Y(e.cost_usd)}</span>`}},{id:`time`,header:E(`Time`),align:`end`,width:`76px`,cell:e=>{let n=C(e);return f(e)?k`${z(e.wall_s)}<span class="jdur"><i class=${ce(e)?`bad`:n?``:`llm`} style="width:${Math.max(2,Math.round(100*(e.wall_s||0)/t))}%"></i></span>`:`—`}},{id:`reason`,header:E(`Reason`),width:`minmax(200px,2.2fr)`,cell:t=>{let i=Po([t]);return k`<span class="jwhy" title=${t.reason||j}>${(t=>{let i=f(t),a=ws(t.hops,null,t.skipped_hops),o=e.run||t.run_id||``,s=e.outcomes.get(t.key),c=t.stop===`invalid_input`&&s?Ko({attempts:[t],cause:null},e.outcomes,o):``,l=c?ko(c):t.ok&&i&&t.stop!==`partial`||!t.reason?``:w(t.reason,o),u=(e=>{let t=n.get(e.key);return!e.ok&&f(e)&&(t?.lastOk??-1)>(r.get(e)??0)?t?.lastOkTry??0:0})(t),d=u?E(T`Task done on attempt ${u}`):``,p=t.context_warned?yc(t):``;return a||l||d||p?k`${a?k`<span class="nw" title=${E(`Model switch`)}>${a}</span><br />`:j}${l?k`${l}<br />`:j}${d?k`<span class="later">${d}</span>${p?k`<br />`:j}`:j}${p?k`<span class="tone-text" data-tone="attention" title=${[bc(),vc(t)].filter(Boolean).join(`
613
- `)}>${p}</span>`:j}`:k`<span class="jdim">—</span>`})(t)}${i?k` <span class="unread nw" title=${E(T`Event types this contraagent version does not know (unread_events): ${i}`)} ><span aria-hidden="true">⚠</span> ${E(`Unrecognized events`)}</span >`:j}</span>`}},...(e.extras??[]).map(e=>({id:`x:${e}`,header:e,tip:Gs(),width:`minmax(80px,0.6fr)`,text:t=>Ks(t[e]),cell:t=>{let n=Ks(t[e]);return n===`—`?k`<span class="jdim">—</span>`:k`<span class="jmono" title=${n}>${n}</span>`}}))]}U([P({attribute:!1})],kd.prototype,`journal`,void 0),U([P({attribute:!1})],kd.prototype,`plan`,void 0),U([P()],kd.prototype,`kind`,void 0),U([P()],kd.prototype,`q`,void 0),U([P({type:Boolean})],kd.prototype,`live`,void 0),U([P()],kd.prototype,`run`,void 0),kd=U([N(`ca-task-table`),D()],kd);var Md=[Kr,zu,O` caption{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}tr{column-gap:12px;row-gap:2px;padding:7px 12px;border-bottom:1px solid var(--line);font-size:12px;min-width:980px;}th,td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}tbody [data-col='outcome'],tbody [data-col='agent'],tbody [data-col='tokens'],tbody [data-col='reason']{white-space:normal;}tbody [data-col='ended'],tbody [data-col='task']{font-family:var(--mono);font-size:11.5px;}thead{position:sticky;top:0;z-index:1;}thead tr{color:var(--text-muted);font-size:11px;background:var(--bg);}tbody tr[data-key]:hover{background:var(--card);}tbody tr[data-executor='python']{opacity:0.85;}tbody tr[data-executor='python']:hover,tbody tr[data-executor='python'][data-tone='failed']{opacity:1;}tbody tr[data-ran='false']{opacity:0.8;}tbody tr[data-fresh]{animation:rowin 1.6s var(--ease);}tr.empty{min-width:0;}tr.empty td{font-size:var(--font-size-sm);}.jwhy{color:var(--text-2);overflow-wrap:anywhere;}.later{color:var(--status-done);}.nw{white-space:nowrap;}.unread{color:var(--status-attention);}.two{display:flex;flex-direction:column;line-height:1.35;}.jstop.two{display:grid;grid-template-columns:auto minmax(0,1fr);align-content:center;}.jstop.two>*{grid-column:2;}.jstop.two::before{grid-row:1;}.two .sub{color:var(--text-muted);font-size:11px;white-space:normal;overflow-wrap:anywhere;}[data-col='tokens'] .two>span{white-space:nowrap;}.sub .q{color:var(--text-2);font-family:var(--mono);white-space:nowrap;}.jstop .sub{font-weight:400;}.cost{font-variant-numeric:tabular-nums;color:var(--text-2);}`],Nd=class extends M{constructor(...e){super(...e),this.rows=[],this.plan=null,this.fresh=new Set,this.kind=``,this.stop=``,this.q=``,this.run=``,this.extras=[],this.replayMarks=!1}static{this.styles=[V,O` :host{display:block;}.jtally{display:flex;flex-wrap:wrap;gap:8px;padding:2px 0 12px;}.jchip{border:1px solid var(--line);border-radius:999px;padding:3px 11px;font-size:11.5px;color:var(--text-muted);cursor:pointer;transition:all 0.15s;background:none;}.jchip b{color:var(--text);}.jchip:hover{border-color:var(--line2);color:var(--text);}.jchip.on{background:var(--accent-bg);border-color:var(--accent);color:var(--text);}.jchip[data-tone='failed'],.jchip[data-tone='attention']{color:var(--tone);border-color:color-mix(in srgb,var(--tone) 40%,transparent);}`]}open(e,t){let n=e.find(e=>ue(e)===t);n&&Q(this,`ca-open-task`,C(n)?{key:n.key,view:`output`}:{key:n.key})}render(){let e=Cd(this.rows,this.kind,this.stop,this.q).reverse(),t=this.rows.filter(Sd).length,n=xd(this.rows).size,r=this.replayMarks?this.rows.filter(e=>e.replayed).length:0,i=(e,t,n,r,i=`neutral`)=>k`<button type="button" class="jchip ${this.stop===e?`on`:``}" data-tone=${I(i)} data-mark=${Yr(i)??j} aria-pressed=${this.stop===e} title=${r} @click=${()=>Q(this,`ca-filter`,{stop:this.stop===e?``:e})}>${t} <b>${n}</b></button>`,a=jd({run:this.run,outcomes:S(this.rows,this.plan).outcomes,journal:this.rows,rows:e,extras:this.extras,replayMarks:this.replayMarks});return k`<div class="jtally">
614
- ${wd(this.rows).map(([e,t])=>i(e,Ad(e),t,e,Vo(e)))}
615
- ${t?i(`fixup`,E(`attempts with corrections`),t,Ds()):j}
616
- ${n?i(`retried`,E(`tasks retried`),n,qo()):j}
617
- ${r?i(`replayed`,E(`attempts replayed`),r,Ps()):j}
618
- </div>
619
- <cae-data-table .columns=${a} .rows=${e} .rowKey=${ue} .rowTone=${e=>f(e)&&ce(e)?`failed`:void 0} .rowAttrs=${e=>({"data-executor":C(e)?`python`:`agent`,...f(e)?{}:{"data-ran":`false`},...this.fresh.has(ue(e))?{"data-fresh":``}:{}})} .cellStyles=${Md} .caption=${E(`History`)} .strings=${Hs(E(`No finished attempts`))} @cae-activate=${t=>this.open(e,t.detail.id)} ></cae-data-table>`}};U([P({attribute:!1})],Nd.prototype,`rows`,void 0),U([P({attribute:!1})],Nd.prototype,`plan`,void 0),U([P({attribute:!1})],Nd.prototype,`fresh`,void 0),U([P()],Nd.prototype,`kind`,void 0),U([P()],Nd.prototype,`stop`,void 0),U([P()],Nd.prototype,`q`,void 0),U([P()],Nd.prototype,`run`,void 0),U([P({attribute:!1})],Nd.prototype,`extras`,void 0),U([P({type:Boolean,attribute:`replay-marks`})],Nd.prototype,`replayMarks`,void 0),Nd=U([N(`ca-journal-table`),D()],Nd);var Pd=[`invalid`,`refused`,`failed`,`running`,`pending`,`valid`];function Fd(e){let t=e?.tally,n=t?Pd.filter(e=>t[e]):[];return n.length?n.map(e=>Uc(e,t?.[e])):k`<span class="meta">${E(`No checked files`)}</span>`}var Id=e=>e.split(`/`).slice(-2).join(`/`),Ld=e=>q({kind:e.kind||e.key,unit:e.unit&&e.unit!==e.key?e.unit:``}),Rd=e=>e?Pd.indexOf(e):Pd.length,zd=class extends M{constructor(...e){super(...e),this.outputs=null,this.run=``,this.journal=[],this.plan=null,this.outcomes=new Map,this.open=new Zn(`contracts:open`,this),this.producerOf=e=>{for(let t of this.outputs?.contracts??[]){let n=(t.outputs??[]).find(t=>t.path===e);if(n)return{name:Ld(t),written:!!n.file.exists,outcome:this.outcomes.get(t.key)?.outcome}}}}static{this.styles=[V,Yc,zu,O` :host{display:block;container-type:inline-size;}.ct-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px;}details.ct{border-top:1px solid var(--line);}details.ct>summary{list-style:none;cursor:pointer;padding:7px 4px;display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;}details.ct>summary>*{min-width:0;overflow-wrap:anywhere;}details.ct>summary::-webkit-details-marker{display:none;}details.ct>summary::before{content:'▸';color:var(--text-muted);width:10px;transition:transform 0.15s;}details.ct[open]>summary::before{transform:rotate(90deg);}details.ct>summary:hover{background:var(--raise);border-radius:8px;}.k-ic{margin-right:0;}.ct-f{margin-left:auto;white-space:nowrap;}.ct-body{padding:4px 10px 14px 24px;}@container (max-width:480px){.ct-body{padding:4px 0 14px 12px;}}.ct-links{margin-top:10px;font-size:12px;}.lead{margin:-4px 0 10px;}.one{display:flex;align-items:center;gap:10px;padding:7px 4px 7px 24px;border-top:1px solid var(--line);flex-wrap:wrap;}.why{color:var(--text-2);font-size:12px;}`]}render(){let e=this.outputs?.contracts??[];if(this.outcomes=this.plan?S(this.journal,this.plan).outcomes:new Map,!e.length)return k`<div class="blank"><span class="ic" aria-hidden="true">▣</span><b>${E(`No checked files`)}</b>
620
- <span>${E(`No task declares an OutputContract or an InputContract`)}</span></div>`;let t=e.flatMap(e=>(e.outputs??[]).map(t=>[e,t])).sort(([e,t],[n,r])=>Rd(t.status)-Rd(r.status)||e.key.localeCompare(n.key)),n=e.flatMap(e=>(e.inputs??[]).map(t=>[e,t]));return k`<div class="g12">
641
+ ${this.nextStep(e,s)}`}nextStep(e,t){if(e||!t)return A;let n=x(this.state.journal,this.state.plan).counts,r=n.total-n.finished+n.partial;return r?O`<div class="next" title="resume=True">${T(w`${r} of ${n.total} tasks not done`)}</div>`:A}};function Gd(e,t,n){let r=n.toLowerCase();return e.filter(e=>(!t||e.kind===t)&&(!r||`${e.kind} ${e.unit} ${(e.claims??[]).join(` `)} ${e.key} ${e.last_stop}`.toLowerCase().includes(r)))}H([N({attribute:!1})],Wd.prototype,`state`,void 0),H([N({attribute:!1})],Wd.prototype,`summary`,void 0),H([N({attribute:!1})],Wd.prototype,`host`,void 0),H([N({attribute:!1})],Wd.prototype,`info`,void 0),H([N()],Wd.prototype,`run`,void 0),H([N()],Wd.prototype,`layer`,void 0),H([N()],Wd.prototype,`unit`,void 0),H([N()],Wd.prototype,`sel`,void 0),Wd=H([M(`ca-overview`),E()],Wd),R(`cae-data-table`,ga);var Kd={failed:0,not_started:1,partial:2,running:3,waiting:4};function qd(e){return e.map((e,t)=>({t:e,i:t})).sort((e,t)=>(Kd[e.t.outcome]??9)-(Kd[t.t.outcome]??9)||t.t.last_ts.localeCompare(e.t.last_ts)||e.i-t.i).map(e=>e.t)}var Jd=[`key`,`unit`,`stop`,`kind`,`route`,`reason`],Yd=e=>new Set(m(e).map(e=>e.key)),Xd=e=>(e.rounds??1)>1;function Zd(e,t,n,r){let i=r.toLowerCase(),a=n===`retried`?Yd(e):null;return e.filter(e=>!(n===`bad`&&!le(e))&&!(n===`fixup`&&!Xd(e))&&!(a&&!a.has(e.key))&&!(n===`replayed`&&!e.replayed)&&!(n&&![`bad`,`fixup`,`retried`,`replayed`].includes(n)&&e.stop!==n)&&(!t||e.kind===t)&&(!i||Jd.some(t=>String(e[t]??``).toLowerCase().includes(i))))}function Qd(e){let t=new Map;for(let n of e)t.set(n.stop||`?`,(t.get(n.stop||`?`)??0)+1);return[...t.entries()].sort((e,t)=>t[1]-e[1])}function $d(e){let t=new Map;return e.forEach((e,n)=>{let r=t.get(e.key)??{count:0,lastOk:-1,lastOkTry:0};f(e)&&r.count++,e.ok&&(r.lastOk=n,r.lastOkTry=(e.attempt??0)+1),t.set(e.key,r)}),t}var ef=()=>T(`none`,{id:`none`});function tf(e){let t=new Map;for(let n of e.all)t.set(`${n.kind}|${n.unit}`,(t.get(`${n.kind}|${n.unit}`)??0)+1);let n=Math.max(1,...e.rows.map(e=>e.wall_s)),r=new Map;for(let t of e.journal)De(r.get(t.key)??r.set(t.key,Te()).get(t.key),t);let i=e=>e.tries.length>0,a=(e,t)=>{if(!i(e))return O`<span class="jdim">${ef()}</span>`;let n=r.get(e.key);return n?.reported?t(n):O`<span class="jdim">—</span>`};return[{id:`task`,header:T(`Task`),tip:T(`Kind · unit`),width:`minmax(220px, 0.6fr)`,rowHeader:!0,text:e=>e.key,cell:e=>{let n=S(e),r=e.pass!==null&&(t.get(`${e.kind}|${e.unit}`)??0)>1?e.pass:null;return O`<span class="grow jmono" title=${e.key}>
642
+ ${fd(n,T(n?`Python task`:`Agent task`))}${e.kind}
643
+ ${e.unit?O`<span class="jdim">· ${e.unit}</span>`:A}${r===null?A:O`<span class="pass">${ys(r)}</span>`}
644
+ ${e.claims?.length?O`<span class="jdim also" title=${i=e.claims,K(dc(),es(i))}>${(e=>e.length>2?T(w`Locks ${e.length} names`):T(w`Locks ${es(e)}`))(e.claims)}</span>`:A}
645
+ ${e.priority?O`<span class="jdim also" title=${Rc()}>${Lc(e.priority)}</span>`:A}
646
+ </span>`;var i}},{id:`attempts`,header:T(`Attempts`),tip:T(`Attempts that ran`),align:`end`,width:`64px`,cell:e=>e.tries.length},{id:`time`,header:T(`Time`),tip:T(`Summed over all attempts`),align:`end`,width:`132px`,cell:e=>O`<span class="wall">${i(e)?O`${z(e.wall_s)}<span class="jdur"><i class=${S(e)?``:`llm`} style="width:${Math.max(4,Math.round(100*e.wall_s/n))}%"></i></span>`:O`<span class="jdim">${ef()}</span><span class="jdur" style="visibility:hidden"></span>`}</span>`},{id:`tokens`,header:T(`Tokens`),tip:T(`Input and output, summed over all attempts`),align:`end`,width:`72px`,cell:e=>a(e,e=>O`<span title=${K(T(w`Cache read ${J(e.cache_read)}`),T(w`Cache write ${J(e.cache_creation)}`))}>${J(e.input+e.output)}</span>`)},{id:`cost`,header:T(`Cost`),tip:T(`Reported by the coding agent`),align:`end`,width:`72px`,cell:e=>a(e,e=>Y(e.cost))},{id:`ended`,header:T(`Last attempt ended`),align:`end`,width:`128px`,cell:e=>O`<span class="meta">${i(e)?G(e.tries[e.tries.length-1]?.ts,!0):ef()}</span>`},{id:`status`,header:T(`Status`,{id:`status`}),width:`minmax(240px, 1fr)`,cell:t=>{let n=function(e,t){return e.outcome===`not_started`?ms(e,t.outcomes,t.run):e.outcome===`partial`?C(e.attempts[e.attempts.length-1]?.reason??``,t.run):e.outcome===`waiting`&&e.deferred?Vs(e.deferredCause,e.deferred,e.deferredIn):e.outcome===`waiting`?function(e){let t=e[0];return t?e.length===1?T(w`waits for output of ${q(t)}`):T(w`waits for output of ${e.length} earlier tasks`):``}(e.waits_for.map(e=>t.outcomes.get(e)??{kind:e})):``}(t,e),r=t.outcome===`waiting`&&t.deferred?function(e){let t=e?.cause===`rest`?Bs(e.rests??[]):[];return t.length>1?t.map(zs).join(`
647
+ `):``}(t.deferredCause)||t.deferred:``;return O`${Qr({text:is(t.outcome,e.live&&!t.deferred),tone:us(t.outcome),mark:fs(t.outcome),title:t.last_stop})}${n?O`<span class="cause" title=${r||A}>${n}</span>`:A}`}}]}var nf=[qr,pd,D` caption{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}tr{column-gap:20px;padding:6px 12px;}tbody tr{border-bottom:0;border-radius:8px;transition:background 0.15s;}thead tr{align-items:end;white-space:nowrap;padding:4px 12px 8px;margin-bottom:4px;}tbody [data-col='ended']{font-size:var(--font-size-sm);}.wall{display:flex;align-items:center;justify-content:flex-end;gap:8px;}.wall .jdur{width:56px;margin:0;flex:none;}.grow{display:flex;align-items:center;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.grow .jdim{margin-left:8px;}.pass{margin-left:8px;font-size:11px;color:var(--text-muted);}.cause{display:block;font-size:11px;color:var(--text-muted);margin-top:2px;white-space:normal;overflow-wrap:anywhere;}@container (max-width:760px){tr{grid-template-columns:minmax(0,1fr) 128px 90px;}[data-col='attempts'],[data-col='tokens'],[data-col='cost'],[data-col='ended']{display:none;}}`],rf=class extends j{constructor(...e){super(...e),this.journal=[],this.plan=null,this.kind=``,this.q=``,this.live=!1,this.run=``}static{this.styles=[B,D`:host{display:block;margin-top:4px;}`]}open(e,t){let n=e.find(e=>e.key===t);n&&Q(this,`ca-open-task`,S(n)?{key:t,view:`output`}:{key:t})}render(){let e=this.plan?x(this.journal,this.plan):null,t=e?.rows??[],n=qd(Gd(t,this.kind,this.q));return n.length?O`<cae-data-table .columns=${tf({run:this.run,live:this.live,outcomes:e?.outcomes??new Map,all:t,rows:n,journal:this.journal})} .rows=${n} .rowKey=${e=>e.key} .rowTone=${e=>e.outcome===`running`?`running`:void 0} .rowAttrs=${e=>({"data-executor":S(e)?`python`:`agent`})} .cellStyles=${nf} .caption=${T(`Tasks`,{id:`tab-tasks`})} .strings=${uc(T(`No tasks`))} @cae-activate=${e=>this.open(n,e.detail.id)} ></cae-data-table>`:O`<div class="blank"><span class="ic" aria-hidden="true">≡</span>${t.length?T(`No tasks match the filter`):T(`No tasks`)}</div>`}};function af(e){return e===`invalid_input`?rs(`not_started`):Z(e)}function of(e){let t=Math.max(1,...e.rows.map(e=>e.wall_s||0)),n=$d(e.journal),r=new Map(e.journal.map((e,t)=>[e,t]));return[{id:`ended`,header:T(`Ended`),width:`64px`,cell:e=>O`<span class="jmono" title=${G(e.ts,!0)}>${G(e.ts)}</span>`},{id:`task`,header:T(`Task`),width:`minmax(130px,0.8fr)`,rowHeader:!0,text:e=>e.key,cell:e=>{let t=S(e);return O`<span class="jmono" title=${e.key}>${fd(t,T(t?`Python task`:`Agent task`),``)}
648
+ ${q(e)}</span>`}},{id:`outcome`,header:T(`Outcome`),tip:T(`How the attempt ended (stop)`),width:`minmax(150px,0.7fr)`,cell:t=>{let r=f(t),i=r&&(n.get(t.key)?.count??1)>1,a=r?vs((t.rounds??1)-1):``,o=e.replayMarks&&t.replayed?tc():``;return $r({text:O`<span class="nw">${af(t.stop)}</span>${i||a||o?O`<span class="sub" title=${o?nc():A}>${K(i?gs(t.attempt):``,a,o)}</span>`:A}`,tone:ls(t.stop),cls:`two`,title:t.stop})}},{id:`agent`,header:T(`Agent, model, identity`),width:`minmax(150px,1fr)`,cell:e=>O`<span class="jmono jdim two" title=${K(e.route,Ks(e.hops,null,e.skipped_hops))||A}>${f(e)?O`<span>${[e.agent,e.model].filter(Boolean).join(` / `)||`—`}</span>${function(e){let t=[...new Set([...(e.hops??[]).map(e=>e.credential),e.credential].filter(Boolean))];if(!t.length)return A;let n=(e.quota??[])[0],r=n?T(w`Usage at session start (account-wide): ${Ms(n)}`):``,i=n&&t.length===1&&(n.credential??``)===t[0],a=n?i?As(n):Ms(n):``;return O`<span class="sub" title=${[r,...t.map(Ts)].filter(Boolean).join(`
649
+ `)||A}>${t.map(e=>ws(e)).join(` → `)}${n?O` <span class="q">${a}</span>`:A}</span>`}(e)}`:`—`}</span>`},{id:`tokens`,header:T(`Tokens`),tip:T(`Input / output | cache read / cache write`),align:`end`,width:`92px`,cell:e=>{let t=e.usage;return O`<span class="two" title=${[t?.resident==null?``:T(w`Input of the first API call: ${J(t.resident)}`),Vc(e)].filter(Boolean).join(`
650
+ `)||A}>${t?O`<span>${J(t.input)} / ${J(t.output)}</span><span class="sub">${J(t.cache_read)} / ${J(t.cache_creation)}</span>`:O`<span class="jdim">—</span>`}</span>`}},{id:`cost`,header:T(`Cost`),tip:T(`Reported by the coding agent`),align:`end`,width:`60px`,cell:e=>{let t=e.hops??[];return O`<span class="cost" title=${(t.length>1?t.map(e=>K(e.model||e.route||`—`,ws(e.credential)||`—`,Y(e.cost_usd),Z(e.stop))).join(`
651
+ `):``)||T(`Reported by the coding agent`)}>${Y(e.cost_usd)}</span>`}},{id:`time`,header:T(`Time`),align:`end`,width:`76px`,cell:e=>{let n=S(e);return f(e)?O`${z(e.wall_s)}<span class="jdur"><i class=${le(e)?`bad`:n?``:`llm`} style="width:${Math.max(2,Math.round(100*(e.wall_s||0)/t))}%"></i></span>`:`—`}},{id:`reason`,header:T(`Reason`),width:`minmax(200px,2.2fr)`,cell:t=>{let i=ns([t]);return O`<span class="jwhy" title=${t.reason||A}>${(t=>{let i=f(t),a=Ks(t.hops,null,t.skipped_hops),o=e.run||t.run_id||``,s=e.outcomes.get(t.key),c=t.stop===`invalid_input`&&s?ms({attempts:[t],cause:null},e.outcomes,o):``,l=c?Zo(c):t.ok&&i&&t.stop!==`partial`||!t.reason?``:C(t.reason,o),u=(e=>{let t=n.get(e.key);return!e.ok&&f(e)&&(t?.lastOk??-1)>(r.get(e)??0)?t?.lastOkTry??0:0})(t),d=u?T(w`Task done on attempt ${u}`):``,p=t.context_warned?Hc(t):``;return a||l||d||p?O`${a?O`<span class="nw" title=${T(`Model switch`)}>${a}</span><br />`:A}${l?O`${l}<br />`:A}${d?O`<span class="later">${d}</span>${p?O`<br />`:A}`:A}${p?O`<span class="tone-text" data-tone="attention" title=${[Uc(),Vc(t)].filter(Boolean).join(`
652
+ `)}>${p}</span>`:A}`:O`<span class="jdim">—</span>`})(t)}${i?O` <span class="unread nw" title=${T(w`Event types this contraagent version does not know (unread_events): ${i}`)} ><span aria-hidden="true">⚠</span> ${T(`Unrecognized events`)}</span >`:A}</span>`}},...(e.extras??[]).map(e=>({id:`x:${e}`,header:e,tip:mc(),width:`minmax(80px,0.6fr)`,text:t=>hc(t[e]),cell:t=>{let n=hc(t[e]);return n===`—`?O`<span class="jdim">—</span>`:O`<span class="jmono" title=${n}>${n}</span>`}}))]}H([N({attribute:!1})],rf.prototype,`journal`,void 0),H([N({attribute:!1})],rf.prototype,`plan`,void 0),H([N()],rf.prototype,`kind`,void 0),H([N()],rf.prototype,`q`,void 0),H([N({type:Boolean})],rf.prototype,`live`,void 0),H([N()],rf.prototype,`run`,void 0),rf=H([M(`ca-task-table`),E()],rf);var sf=[qr,pd,D` caption{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}tr{column-gap:12px;row-gap:2px;padding:7px 12px;border-bottom:1px solid var(--line);font-size:12px;min-width:980px;}th,td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}tbody [data-col='outcome'],tbody [data-col='agent'],tbody [data-col='tokens'],tbody [data-col='reason']{white-space:normal;}tbody [data-col='ended'],tbody [data-col='task']{font-family:var(--mono);font-size:11.5px;}thead{position:sticky;top:0;z-index:1;}thead tr{color:var(--text-muted);font-size:11px;background:var(--bg);}tbody tr[data-key]:hover{background:var(--card);}tbody tr[data-executor='python']{opacity:0.85;}tbody tr[data-executor='python']:hover,tbody tr[data-executor='python'][data-tone='failed']{opacity:1;}tbody tr[data-ran='false']{opacity:0.8;}tbody tr[data-fresh]{animation:rowin 1.6s var(--ease);}tr.empty{min-width:0;}tr.empty td{font-size:var(--font-size-sm);}.jwhy{color:var(--text-2);overflow-wrap:anywhere;}.later{color:var(--status-done);}.nw{white-space:nowrap;}.unread{color:var(--status-attention);}.two{display:flex;flex-direction:column;line-height:1.35;}.jstop.two{display:grid;grid-template-columns:auto minmax(0,1fr);align-content:center;}.jstop.two>*{grid-column:2;}.jstop.two::before{grid-row:1;}.two .sub{color:var(--text-muted);font-size:11px;white-space:normal;overflow-wrap:anywhere;}[data-col='tokens'] .two>span{white-space:nowrap;}.sub .q{color:var(--text-2);font-family:var(--mono);white-space:nowrap;}.jstop .sub{font-weight:400;}.cost{font-variant-numeric:tabular-nums;color:var(--text-2);}`],cf=class extends j{constructor(...e){super(...e),this.rows=[],this.plan=null,this.fresh=new Set,this.kind=``,this.stop=``,this.q=``,this.run=``,this.extras=[],this.replayMarks=!1}static{this.styles=[B,D` :host{display:block;}.jtally{display:flex;flex-wrap:wrap;gap:8px;padding:2px 0 12px;}.jchip{border:1px solid var(--line);border-radius:999px;padding:3px 11px;font-size:11.5px;color:var(--text-muted);cursor:pointer;transition:all 0.15s;background:none;}.jchip b{color:var(--text);}.jchip:hover{border-color:var(--line2);color:var(--text);}.jchip.on{background:var(--accent-bg);border-color:var(--accent);color:var(--text);}.jchip[data-tone='failed'],.jchip[data-tone='attention']{color:var(--tone);border-color:color-mix(in srgb,var(--tone) 40%,transparent);}`]}open(e,t){let n=e.find(e=>de(e)===t);n&&Q(this,`ca-open-task`,S(n)?{key:n.key,view:`output`}:{key:n.key})}render(){let e=Zd(this.rows,this.kind,this.stop,this.q).reverse(),t=this.rows.filter(Xd).length,n=Yd(this.rows).size,r=this.replayMarks?this.rows.filter(e=>e.replayed).length:0,i=(e,t,n,r,i=`neutral`)=>O`<button type="button" class="jchip ${this.stop===e?`on`:``}" data-tone=${I(i)} data-mark=${Xr(i)??A} aria-pressed=${this.stop===e} title=${r} @click=${()=>Q(this,`ca-filter`,{stop:this.stop===e?``:e})}>${t} <b>${n}</b></button>`,a=of({run:this.run,outcomes:x(this.rows,this.plan).outcomes,journal:this.rows,rows:e,extras:this.extras,replayMarks:this.replayMarks});return O`<div class="jtally">
653
+ ${Qd(this.rows).map(([e,t])=>i(e,af(e),t,e,ls(e)))}
654
+ ${t?i(`fixup`,T(`attempts with corrections`),t,Ys()):A}
655
+ ${n?i(`retried`,T(`tasks retried`),n,hs()):A}
656
+ ${r?i(`replayed`,T(`attempts replayed`),r,nc()):A}
657
+ </div>
658
+ <cae-data-table .columns=${a} .rows=${e} .rowKey=${de} .rowTone=${e=>f(e)&&le(e)?`failed`:void 0} .rowAttrs=${e=>({"data-executor":S(e)?`python`:`agent`,...f(e)?{}:{"data-ran":`false`},...this.fresh.has(de(e))?{"data-fresh":``}:{}})} .cellStyles=${sf} .caption=${T(`History`)} .strings=${uc(T(`No finished attempts`))} @cae-activate=${t=>this.open(e,t.detail.id)} ></cae-data-table>`}};H([N({attribute:!1})],cf.prototype,`rows`,void 0),H([N({attribute:!1})],cf.prototype,`plan`,void 0),H([N({attribute:!1})],cf.prototype,`fresh`,void 0),H([N()],cf.prototype,`kind`,void 0),H([N()],cf.prototype,`stop`,void 0),H([N()],cf.prototype,`q`,void 0),H([N()],cf.prototype,`run`,void 0),H([N({attribute:!1})],cf.prototype,`extras`,void 0),H([N({type:Boolean,attribute:`replay-marks`})],cf.prototype,`replayMarks`,void 0),cf=H([M(`ca-journal-table`),E()],cf);var lf=[`invalid`,`refused`,`failed`,`running`,`pending`,`valid`];function uf(e){let t=e?.tally,n=t?lf.filter(e=>t[e]):[];return n.length?n.map(e=>pl(e,t?.[e])):O`<span class="meta">${T(`No checked files`)}</span>`}var df=e=>e.split(`/`).slice(-2).join(`/`),ff=e=>q({kind:e.kind||e.key,unit:e.unit&&e.unit!==e.key?e.unit:``}),pf=e=>e?lf.indexOf(e):lf.length,mf=class extends j{constructor(...e){super(...e),this.outputs=null,this.run=``,this.journal=[],this.plan=null,this.outcomes=new Map,this.open=new Zn(`contracts:open`,this),this.producerOf=e=>{for(let t of this.outputs?.contracts??[]){let n=(t.outputs??[]).find(t=>t.path===e);if(n)return{name:ff(t),written:!!n.file.exists,outcome:this.outcomes.get(t.key)?.outcome}}}}static{this.styles=[B,xl,pd,D` :host{display:block;container-type:inline-size;}.ct-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px;}details.ct{border-top:1px solid var(--line);}details.ct>summary{list-style:none;cursor:pointer;padding:7px 4px;display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;}details.ct>summary>*{min-width:0;overflow-wrap:anywhere;}details.ct>summary::-webkit-details-marker{display:none;}details.ct>summary::before{content:'▸';color:var(--text-muted);width:10px;transition:transform 0.15s;}details.ct[open]>summary::before{transform:rotate(90deg);}details.ct>summary:hover{background:var(--raise);border-radius:8px;}.k-ic{margin-right:0;}.ct-f{margin-left:auto;white-space:nowrap;}.ct-body{padding:4px 10px 14px 24px;}@container (max-width:480px){.ct-body{padding:4px 0 14px 12px;}}.ct-links{margin-top:10px;font-size:12px;}.lead{margin:-4px 0 10px;}.one{display:flex;align-items:center;gap:10px;padding:7px 4px 7px 24px;border-top:1px solid var(--line);flex-wrap:wrap;}.why{color:var(--text-2);font-size:12px;}`]}render(){let e=this.outputs?.contracts??[];if(this.outcomes=this.plan?x(this.journal,this.plan).outcomes:new Map,!e.length)return O`<div class="blank"><span class="ic" aria-hidden="true">▣</span><b>${T(`No checked files`)}</b>
659
+ <span>${T(`No task declares an OutputContract or an InputContract`)}</span></div>`;let t=e.flatMap(e=>(e.outputs??[]).map(t=>[e,t])).sort(([e,t],[n,r])=>pf(t.status)-pf(r.status)||e.key.localeCompare(n.key)),n=e.flatMap(e=>(e.inputs??[]).map(t=>[e,t]));return O`<div class="g12">
621
660
  <section class="panel c12">
622
- <h3 title=${E(`OutputContract`)}>${E(`Outputs`)}
623
- <span class="r">${E(`Files each task must write`)}</span></h3>
624
- <div class="ct-row">${Fd(this.outputs)}</div>
625
- ${H(t,([e,t])=>`out|${e.key}|${t.path}`,([e,t])=>this.outRow(e,t))}
661
+ <h3 title=${T(`OutputContract`)}>${T(`Outputs`)}
662
+ <span class="r">${T(`Files each task must write`)}</span></h3>
663
+ <div class="ct-row">${uf(this.outputs)}</div>
664
+ ${V(t,([e,t])=>`out|${e.key}|${t.path}`,([e,t])=>this.outRow(e,t))}
626
665
  </section>
627
- ${n.length?k`<section class="panel c12">
628
- <h3 title=${E(`InputContract`)}>${E(`Inputs`)}
629
- <span class="r">${E(`Files each task reads`)}</span></h3>
630
- ${H(n,([e,t])=>`in|${e.key}|${t.path}`,([e,t])=>this.inRow(e,t))}
631
- </section>`:j}
632
- </div>`}details(e,t,n){return k`<details class="ct" ?open=${this.open.has(e)} @toggle=${t=>this.open.set(e,t.target.open)}>
666
+ ${n.length?O`<section class="panel c12">
667
+ <h3 title=${T(`InputContract`)}>${T(`Inputs`)}
668
+ <span class="r">${T(`Files each task reads`)}</span></h3>
669
+ ${V(n,([e,t])=>`in|${e.key}|${t.path}`,([e,t])=>this.inRow(e,t))}
670
+ </section>`:A}
671
+ </div>`}details(e,t,n){return O`<details class="ct" ?open=${this.open.has(e)} @toggle=${t=>this.open.set(e,t.target.open)}>
633
672
  <summary class="ct-sum">${t}</summary>
634
673
  <div class="ct-body">${n}</div>
635
- </details>`}link(e,t,n){return k`<a class="lnk" href="#" @click=${n=>{n.preventDefault(),Q(this,`ca-open-task`,{key:e,view:t})}}>${n}</a>`}who(e){let t=C(e);return k`${Ru(t,E(t?`Python task`:`Agent task`))}
636
- <b class="jmono" title=${e.key}>${Ld(e)}</b>`}reasonOf(e){for(let t=this.journal.length-1;t>=0;t--){let n=this.journal[t];if(n?.key===e)return w(n.reason,this.run)}return``}outRow(e,t){if(t.status===`refused`)return k`<div class="one">
637
- ${Uc(`refused`)}${this.who(e)}
638
- <span class="why">${ks(t,this.run,this.producerOf)}</span>
639
- </div>`;let n=t.file,r=t.status,i=t.rounds??0,a=t.errors??[],o=Ld(e);return this.details(`out|${e.key}|${t.path}`,k`${Uc(r)}
640
- ${i>1?k`<span class="meta" title=${Ds()}>${Os(i,r===`valid`)}</span>`:j}
674
+ </details>`}link(e,t,n){return O`<a class="lnk" href="#" @click=${n=>{n.preventDefault(),Q(this,`ca-open-task`,{key:e,view:t})}}>${n}</a>`}who(e){let t=S(e);return O`${fd(t,T(t?`Python task`:`Agent task`))}
675
+ <b class="jmono" title=${e.key}>${ff(e)}</b>`}reasonOf(e){for(let t=this.journal.length-1;t>=0;t--){let n=this.journal[t];if(n?.key===e)return C(n.reason,this.run)}return``}outRow(e,t){if(t.status===`refused`)return O`<div class="one">
676
+ ${pl(`refused`)}${this.who(e)}
677
+ <span class="why">${Zs(t,this.run,this.producerOf)}</span>
678
+ </div>`;let n=t.file,r=t.status,i=t.rounds??0,a=t.errors??[],o=ff(e);return this.details(`out|${e.key}|${t.path}`,O`${pl(r)}
679
+ ${i>1?O`<span class="meta" title=${Ys()}>${Xs(i,r===`valid`)}</span>`:A}
641
680
  ${this.who(e)}
642
- <span class="jmono jdim ct-path" title=${t.path}>${Id(t.path)}</span>
643
- ${r===`failed`&&this.reasonOf(e.key)?k`<span class="why">${this.reasonOf(e.key)}</span>`:j}
644
- <span class="meta ct-f">${n.exists?`${n.size??0} B`:r?j:E(`No file`)}</span>`,k`${qc(t,`output`)}
645
- ${Wc(t)}
646
- ${a.length?k`<h4>${E(`Errors`)}</h4><pre class="ct-err">${a.map(e=>w(e,this.run)).join(`
647
- `)}</pre>`:j}
681
+ <span class="jmono jdim ct-path" title=${t.path}>${df(t.path)}</span>
682
+ ${r===`failed`&&this.reasonOf(e.key)?O`<span class="why">${this.reasonOf(e.key)}</span>`:A}
683
+ <span class="meta ct-f">${n.exists?`${n.size??0} B`:r?A:T(`No file`)}</span>`,O`${yl(t,`output`)}
684
+ ${hl(t)}
685
+ ${a.length?O`<h4>${T(`Errors`)}</h4><pre class="ct-err">${a.map(e=>C(e,this.run)).join(`
686
+ `)}</pre>`:A}
648
687
  <div class="ct-links">
649
- ${this.link(e.key,`output`,E(T`${o}: input and output`))}
650
- ${C(e)?j:k`<br />${this.link(e.key,`transcript`,E(T`${o}: transcript`))}`}
651
- </div>`)}inRow(e,t){let n=t.file,r=!!n.exists;return this.details(`in|${e.key}|${t.path}`,k`${Hc(t)}
688
+ ${this.link(e.key,`output`,T(w`${o}: input and output`))}
689
+ ${S(e)?A:O`<br />${this.link(e.key,`transcript`,T(w`${o}: transcript`))}`}
690
+ </div>`)}inRow(e,t){let n=t.file,r=!!n.exists;return this.details(`in|${e.key}|${t.path}`,O`${fl(t)}
652
691
  ${this.who(e)}
653
- <span class="jmono jdim ct-path" title=${t.path}>${Id(t.path)}</span>
654
- <span class="meta ct-f">${r?`${n.size??0} B`:E(`No file`)}</span>`,k`${qc(t,`input`)}
655
- ${Wc(t)}
656
- <div class="ct-links">${this.link(e.key,`input`,E(T`${Ld(e)}: input`))}</div>`)}};U([P({attribute:!1})],zd.prototype,`outputs`,void 0),U([P()],zd.prototype,`run`,void 0),U([P({attribute:!1})],zd.prototype,`journal`,void 0),U([P({attribute:!1})],zd.prototype,`plan`,void 0),zd=U([N(`ca-contracts`),D()],zd);var Bd=e=>e.replace(/\$\{?([A-Za-z_]\w*)\}?/g,`<span class="pv">$&</span>`).replace(/\{\{contract\}\}/g,`<span class="pv pc">{{contract}}</span>`);function Vd(e){let t=e.match(/^(TELEMETRY [^\n]*)\n+([\s\S]*)$/);return t?{head:t[1]??``,body:t[2]??``}:{head:``,body:e}}var Hd=new Set([`instructions`,`schema`,`agent`]),Ud=class extends M{constructor(...e){super(...e),this.definition=null,this.memory=`definition`,this.open=new Zn(`definition:open`,this),this.source=new Zn(`definition:source`,this)}static{this.styles=[V,Gr,qr,Jc,O` :host{display:block;}.ct-in{display:flex;align-items:center;gap:10px;padding:5px 4px;border-top:1px solid var(--line);}.df{border-top:1px solid var(--line);}.df-hd{padding:6px 2px;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;}.df-sum{flex:1 1 16em;min-width:0;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;padding:0;background:none;border:0;color:inherit;text-align:start;cursor:pointer;}.df-sum .jmono{min-width:0;overflow-wrap:anywhere;}.df-tog{flex:none;margin-inline-start:auto;}.df-sum::before{content:'▸';color:var(--text-muted);width:10px;flex:none;transition:transform 0.15s;}.df-sum[aria-expanded='true']::before{transform:rotate(90deg);}.py-sig{font-family:var(--mono);font-size:14px;padding:10px 14px;background:var(--well);border:1px solid var(--line);border-radius:8px;overflow-x:auto;white-space:pre;}.py-where{margin:6px 2px 12px;font-family:var(--mono);font-size:11.5px;color:var(--text-muted);overflow-wrap:anywhere;}.py-doc{margin:0 0 12px;padding:8px 12px;border-left:3px solid var(--line2);color:var(--text-2);white-space:pre-wrap;line-height:1.6;}.src{display:grid;grid-template-columns:auto minmax(0,1fr);background:var(--well);border:1px solid var(--line);border-radius:8px;font-family:var(--mono);font-size:12px;line-height:1.55;max-height:520px;overflow:auto;}.src pre{margin:0;padding:10px 12px;white-space:pre;}.src .ln{color:var(--text-muted);text-align:right;user-select:none;border-right:1px solid var(--line);opacity:0.7;}`]}willUpdate(e){e.has(`memory`)&&(this.open=new Zn(`${this.memory}:open`,this),this.source=new Zn(`${this.memory}:source`,this))}render(){let e=this.definition;if(!e)return k`<div class="blank"><span class="ic" aria-hidden="true">⌘</span><b>${E(`No definition`)}</b></div>`;if(e.executor===`python`)return this.python(e);let t=e.plugin_dirs||[],n=e.output_from===`message`?K(e.output||``,E(`from the final message`)):e.output||``,r=e.preserve??[],i=[...e.base_kind?[[E(`Implementation of`),k`<span class="jmono" title=${E(`A kind that other kinds implement (base_kind)`)}>${e.base_kind}</span>`]]:[],[E(`Role`),e.role||E(`none`,{id:`none`})],[t.length>1?E(`Plugin directories`):E(`Plugin directory`),t.length?k`${t.map((e,t)=>k`${t?`, `:``}<span class="jmono" title=${e}>${(e=>{let t=e.split(`/`).filter(Boolean);return t.length>2?`…/${t.slice(-2).join(`/`)}`:e})(e)}</span>`)}`:E(`none`,{id:`none`})],[E(`Parameters`),e.params||E(`none`,{id:`none`})],[E(`Output`,{id:`definition-output`}),e.output_of?k`<span title=${E(`The kind whose output file this task writes (output_of)`)}>${K(n,(a=e.output_of,E(T`output of ${a}`)))}</span>`:n||E(`none`,{id:`none`})],...r.length?[[Tc(),k`<span class="jmono" title=${Ec()}>${r.join(`, `)}</span>`]]:[],...(e.validators||[]).length?[[E(`Other checks`),(e.validators||[]).join(`, `)]]:[],...Array.isArray(e.tools)&&e.tools.length===0?[[E(`Tools`),E(`none`,{id:`none`})]]:[]];var a;let o=Array.isArray(e.declared)?e.declared:[],s=t=>t.part===`agent`&&!!e.role&&t.path.replace(/^.*\//,``)===`${e.role}.md`,c=[...e.files||[]].sort((e,t)=>Number(s(t))-Number(s(e)));return k`<div class="drv-facts" style="margin-bottom:10px">${i.map(([e,t])=>k`<span><i>${e}</i>${t}</span>`)}</div>
657
- ${o.length?k`<h4 class="sect-h">${E(`Checked files`)}</h4>
658
- ${o.map(e=>k`<div class="ct-in">
692
+ <span class="jmono jdim ct-path" title=${t.path}>${df(t.path)}</span>
693
+ <span class="meta ct-f">${r?`${n.size??0} B`:T(`No file`)}</span>`,O`${yl(t,`input`)}
694
+ ${hl(t)}
695
+ <div class="ct-links">${this.link(e.key,`input`,T(w`${ff(e)}: input`))}</div>`)}};H([N({attribute:!1})],mf.prototype,`outputs`,void 0),H([N()],mf.prototype,`run`,void 0),H([N({attribute:!1})],mf.prototype,`journal`,void 0),H([N({attribute:!1})],mf.prototype,`plan`,void 0),mf=H([M(`ca-contracts`),E()],mf);var hf=e=>e.replace(/\$\{?([A-Za-z_]\w*)\}?/g,`<span class="pv">$&</span>`).replace(/\{\{contract\}\}/g,`<span class="pv pc">{{contract}}</span>`);function gf(e){let t=e.match(/^(TELEMETRY [^\n]*)\n+([\s\S]*)$/);return t?{head:t[1]??``,body:t[2]??``}:{head:``,body:e}}var _f=new Set([`instructions`,`schema`,`agent`]),vf=class extends j{constructor(...e){super(...e),this.definition=null,this.memory=`definition`,this.open=new Zn(`definition:open`,this),this.source=new Zn(`definition:source`,this)}static{this.styles=[B,Kr,Jr,bl,D` :host{display:block;}.ct-in{display:flex;align-items:center;gap:10px;padding:5px 4px;border-top:1px solid var(--line);}.df{border-top:1px solid var(--line);}.df-hd{padding:6px 2px;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;}.df-sum{flex:1 1 16em;min-width:0;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;padding:0;background:none;border:0;color:inherit;text-align:start;cursor:pointer;}.df-sum .jmono{min-width:0;overflow-wrap:anywhere;}.df-tog{flex:none;margin-inline-start:auto;}.df-sum::before{content:'▸';color:var(--text-muted);width:10px;flex:none;transition:transform 0.15s;}.df-sum[aria-expanded='true']::before{transform:rotate(90deg);}.py-sig{font-family:var(--mono);font-size:14px;padding:10px 14px;background:var(--well);border:1px solid var(--line);border-radius:8px;overflow-x:auto;white-space:pre;}.py-where{margin:6px 2px 12px;font-family:var(--mono);font-size:11.5px;color:var(--text-muted);overflow-wrap:anywhere;}.py-doc{margin:0 0 12px;padding:8px 12px;border-left:3px solid var(--line2);color:var(--text-2);white-space:pre-wrap;line-height:1.6;}.src{display:grid;grid-template-columns:auto minmax(0,1fr);background:var(--well);border:1px solid var(--line);border-radius:8px;font-family:var(--mono);font-size:12px;line-height:1.55;max-height:520px;overflow:auto;}.src pre{margin:0;padding:10px 12px;white-space:pre;}.src .ln{color:var(--text-muted);text-align:right;user-select:none;border-right:1px solid var(--line);opacity:0.7;}`]}willUpdate(e){e.has(`memory`)&&(this.open=new Zn(`${this.memory}:open`,this),this.source=new Zn(`${this.memory}:source`,this))}render(){let e=this.definition;if(!e)return O`<div class="blank"><span class="ic" aria-hidden="true">⌘</span><b>${T(`No definition`)}</b></div>`;if(e.executor===`python`)return this.python(e);let t=e.plugin_dirs||[],n=e.output_from===`message`?K(e.output||``,T(`from the final message`)):e.output||``,r=e.preserve??[],i=[...e.base_kind?[[T(`Implementation of`),O`<span class="jmono" title=${T(`A kind that other kinds implement (base_kind)`)}>${e.base_kind}</span>`]]:[],[T(`Role`),e.role||T(`none`,{id:`none`})],[t.length>1?T(`Plugin directories`):T(`Plugin directory`),t.length?O`${t.map((e,t)=>O`${t?`, `:``}<span class="jmono" title=${e}>${(e=>{let t=e.split(`/`).filter(Boolean);return t.length>2?`…/${t.slice(-2).join(`/`)}`:e})(e)}</span>`)}`:T(`none`,{id:`none`})],[T(`Parameters`),e.params||T(`none`,{id:`none`})],[T(`Output`,{id:`definition-output`}),e.output_of?O`<span title=${T(`The kind whose output file this task writes (output_of)`)}>${K(n,(a=e.output_of,T(w`output of ${a}`)))}</span>`:n||T(`none`,{id:`none`})],...r.length?[[Jc(),O`<span class="jmono" title=${Yc()}>${r.join(`, `)}</span>`]]:[],...(e.validators||[]).length?[[T(`Other checks`),(e.validators||[]).join(`, `)]]:[],...Array.isArray(e.tools)&&e.tools.length===0?[[T(`Tools`),T(`none`,{id:`none`})]]:[]];var a;let o=Array.isArray(e.declared)?e.declared:[],s=t=>t.part===`agent`&&!!e.role&&t.path.replace(/^.*\//,``)===`${e.role}.md`,c=[...e.files||[]].sort((e,t)=>Number(s(t))-Number(s(e)));return O`<div class="drv-facts" style="margin-bottom:10px">${i.map(([e,t])=>O`<span><i>${e}</i>${t}</span>`)}</div>
696
+ ${o.length?O`<h4 class="sect-h">${T(`Checked files`)}</h4>
697
+ ${o.map(e=>O`<div class="ct-in">
659
698
  <span class="ct-chip">${e.io}</span><span class="jmono">${e.path}</span>
660
- <span class="meta" title=${E(`The schema the file is checked against`)}>${E(T`Schema ${e.schema}`)}</span>
661
- </div>`)}`:j}
662
- ${c.length?k`<h4 class="sect-h">${E(`Files`)}</h4>${c.map(t=>this.file(t,s(t),!!e.role))}`:k`<div class="meta">${E(k`No files | defined in Python code (<code>TaskAdapter</code>)`)}</div>`}`}python(e){let t=(e.files||[]).find(e=>e.part===`source`),n=e.line??1,r=t?t.text.replace(/\n$/,``).split(`
663
- `).length:0,i=e.retry_on??[],a=[[E(`Parameters`),e.params&&e.params!==`none`?e.params:E(`none`,{id:`none`})],[E(`Output`,{id:`definition-output`}),e.output&&e.output!==`none`?e.output:E(`none`,{id:`none`})],...(e.validators||[]).length?[[E(`Other checks`),(e.validators||[]).join(`, `)]]:[],...e.retries?[[E(`Retries`),k`<span title=${qo()}>${o=e.retries,E(T`up to ${o}`)}</span>`]]:[],...e.retries&&i.length?[[E(`Retried exceptions`),k`<span class="jmono" title=${E(`Exceptions that give another attempt (retry_on)`)}>${i.join(`, `)}</span>`]]:[]];var o;return k`${e.signature?k`<div class="py-sig hl">${zi(Ni(`def ${e.signature}`,`python`))}</div>`:j}
699
+ <span class="meta" title=${T(`The schema the file is checked against`)}>${T(w`Schema ${e.schema}`)}</span>
700
+ </div>`)}`:A}
701
+ ${c.length?O`<h4 class="sect-h">${T(`Files`)}</h4>${c.map(t=>this.file(t,s(t),!!e.role))}`:O`<div class="meta">${T(O`No files | defined in Python code (<code>TaskAdapter</code>)`)}</div>`}`}python(e){let t=(e.files||[]).find(e=>e.part===`source`),n=e.line??1,r=t?t.text.replace(/\n$/,``).split(`
702
+ `).length:0,i=e.retry_on??[],a=[[T(`Parameters`),e.params&&e.params!==`none`?e.params:T(`none`,{id:`none`})],[T(`Output`,{id:`definition-output`}),e.output&&e.output!==`none`?e.output:T(`none`,{id:`none`})],...(e.validators||[]).length?[[T(`Other checks`),(e.validators||[]).join(`, `)]]:[],...e.retries?[[T(`Retries`),O`<span title=${hs()}>${o=e.retries,T(w`up to ${o}`)}</span>`]]:[],...e.retries&&i.length?[[T(`Retried exceptions`),O`<span class="jmono" title=${T(`Exceptions that give another attempt (retry_on)`)}>${i.join(`, `)}</span>`]]:[]];var o;return O`${e.signature?O`<div class="py-sig hl">${Ji(Ki(`def ${e.signature}`,`python`))}</div>`:A}
664
703
  <div class="py-where">
665
- ${e.function??e.kind}${e.file?k` | <span title=${e.file}>${e.file.replace(/^.*\//,``)}${e.line?`:${e.line}`:``}</span>`:j}
704
+ ${e.function??e.kind}${e.file?O` | <span title=${e.file}>${e.file.replace(/^.*\//,``)}${e.line?`:${e.line}`:``}</span>`:A}
666
705
  </div>
667
- ${e.doc?k`<div class="py-doc">${e.doc}</div>`:j}
668
- <div class="drv-facts" style="margin-bottom:12px">${a.map(([e,t])=>k`<span><i>${e}</i>${t}</span>`)}</div>
669
- ${t?k`<h4 class="sect-h">${E(`Source`)}</h4>
706
+ ${e.doc?O`<div class="py-doc">${e.doc}</div>`:A}
707
+ <div class="drv-facts" style="margin-bottom:12px">${a.map(([e,t])=>O`<span><i>${e}</i>${t}</span>`)}</div>
708
+ ${t?O`<h4 class="sect-h">${T(`Source`)}</h4>
670
709
  <div class="src">
671
710
  <pre class="ln">${Array.from({length:r},(e,t)=>n+t).join(`
672
711
  `)}</pre>
673
- <pre class="hl">${zi(Ni(t.text.replace(/\n$/,``),`python`))}</pre>
674
- </div>`:j}`}file(e,t=!1,n=!1){let r=`${e.part}|${e.path}`,i=/\.md$/i.test(e.path),a=e.part===`instructions`,o=!i||this.source.has(r),s=e.part===`agent`&&n?t:Hd.has(e.part),c=this.open.has(r)||s&&!this.open.has(`closed:${r}`);return k`<div class="df">
712
+ <pre class="hl">${Ji(Ki(t.text.replace(/\n$/,``),`python`))}</pre>
713
+ </div>`:A}`}file(e,t=!1,n=!1){let r=`${e.part}|${e.path}`,i=/\.md$/i.test(e.path),a=e.part===`instructions`,o=!i||this.source.has(r),s=e.part===`agent`&&n?t:_f.has(e.part),c=this.open.has(r)||s&&!this.open.has(`closed:${r}`);return O`<div class="df">
675
714
  <div class="df-hd">
676
715
  <button type="button" class="df-sum" aria-expanded=${c?`true`:`false`} @click=${()=>{this.open.set(r,!c),this.open.set(`closed:${r}`,c),this.requestUpdate()}}>
677
716
  <span class="tag">${e.part}</span><span class="jmono">${e.path}</span>
678
- ${t?k`<span class="ct-chip">${E(`Role of this kind`)}</span>`:j}
717
+ ${t?O`<span class="ct-chip">${T(`Role of this kind`)}</span>`:A}
679
718
  </button>
680
- ${i?k`<button type="button" class="df-tog" @click=${()=>{this.source.set(r,!this.source.has(r)),this.requestUpdate()}}>${E(o?`Show rendered`:`Show source`)}</button>`:j}
719
+ ${i?O`<button type="button" class="df-tog" @click=${()=>{this.source.set(r,!this.source.has(r)),this.requestUpdate()}}>${T(o?`Show rendered`:`Show source`)}</button>`:A}
681
720
  </div>
682
- ${c?o?k`<pre class="df-text"><code class="hl">${zi(a?(l=e.text,Bd(B(l))):Ni(e.text,e.path))}</code></pre>`:zi(Li(e.text,a?Bd:void 0)):j}
683
- </div>`;var l}};U([P({attribute:!1})],Ud.prototype,`definition`,void 0),U([P()],Ud.prototype,`memory`,void 0),Ud=U([N(`ca-definition`),D()],Ud);var Wd=class extends M{constructor(...e){super(...e),this.run=``,this.live=!1,this.journal=[],this.plan=null,this.selected=null,this.defs=[],this.defsRun=``,this.timer=null}static{this.styles=[V,O` :host{display:block;container-type:inline-size;}.defs{display:grid;grid-template-columns:260px minmax(0,1fr);gap:14px;align-items:start;}.deflist{display:flex;flex-direction:column;gap:6px;}.defitem{padding:9px 12px;border-radius:10px;background:var(--panel);border:1px solid var(--line);cursor:pointer;color:inherit;text-align:start;display:flex;flex-direction:column;gap:2px;}.defitem:hover{border-color:var(--line2);}.defitem.sel{border-color:var(--accent);background:var(--accent-bg);}@container (max-width:720px){.defs{grid-template-columns:minmax(0,1fr);}}`]}disconnectedCallback(){super.disconnectedCallback(),this.clearTimer(),this.defsRun=``}connectedCallback(){super.connectedCallback(),this.run&&this.defsRun!==this.run&&this.load()}willUpdate(e){(e.has(`run`)||e.has(`client`))&&this.run&&this.client&&this.defsRun!==this.run&&(this.defs=[],this.load())}updated(){let e=new Set(this.tasks().filter(e=>!C(e)&&(e.tries.length||e.outcome===`running`)).map(e=>e.kind)).size;this.live&&this.defsRun===this.run&&this.defs.length<e&&!this.timer&&(this.timer=setTimeout(()=>{this.timer=null,this.load()},3e3))}tasks(){return[...S(this.journal,this.plan).outcomes.values()]}clearTimer(){this.timer&&clearTimeout(this.timer),this.timer=null}async load(){if(!this.client||!this.run)return;let e=this.run;this.defsRun=e;let t=[];try{t=await this.client.definitions(e)}catch{t=[]}e===this.run&&(this.defs=t)}render(){let e=this.defs,t=this.tasks(),n=[...new Set(t.filter(e=>C(e)).map(e=>e.kind))].filter(t=>!e.some(e=>e.kind===t));if(!e.length&&!n.length)return k`<div class="blank"><span class="ic" aria-hidden="true">⌘</span><b>${this.live?E(`No definitions yet`):E(`No definitions`)}</b></div>`;let r=this.selected!==null&&n.includes(this.selected)?this.selected:null,i=r?void 0:e.find(e=>e.kind===this.selected)??e.find(e=>e.plugin)??e[0],a=r??i?.kind??n[0]??``,o=e=>{let n=t.filter(t=>t.kind===e),r=n.length,i=n.reduce((e,t)=>e+t.tries.length,0);return Ao(E(r===1?`1 task`:T`${r} tasks`),E(i===1?`1 attempt`:T`${i} attempts`))};return k`<div class="defs">
721
+ ${c?o?O`<pre class="df-text"><code class="hl">${Ji(a?(l=e.text,hf(Mr(l))):Ki(e.text,e.path))}</code></pre>`:Ji(ea(e.text,a?hf:void 0)):A}
722
+ </div>`;var l}};H([N({attribute:!1})],vf.prototype,`definition`,void 0),H([N()],vf.prototype,`memory`,void 0),vf=H([M(`ca-definition`),E()],vf);var yf=class extends j{constructor(...e){super(...e),this.run=``,this.live=!1,this.journal=[],this.plan=null,this.selected=null,this.defs=[],this.defsRun=``,this.timer=null}static{this.styles=[B,D` :host{display:block;container-type:inline-size;}.defs{display:grid;grid-template-columns:260px minmax(0,1fr);gap:14px;align-items:start;}.deflist{display:flex;flex-direction:column;gap:6px;}.defitem{padding:9px 12px;border-radius:10px;background:var(--panel);border:1px solid var(--line);cursor:pointer;color:inherit;text-align:start;display:flex;flex-direction:column;gap:2px;}.defitem:hover{border-color:var(--line2);}.defitem.sel{border-color:var(--accent);background:var(--accent-bg);}@container (max-width:720px){.defs{grid-template-columns:minmax(0,1fr);}}`]}disconnectedCallback(){super.disconnectedCallback(),this.clearTimer(),this.defsRun=``}connectedCallback(){super.connectedCallback(),this.run&&this.defsRun!==this.run&&this.load()}willUpdate(e){(e.has(`run`)||e.has(`client`))&&this.run&&this.client&&this.defsRun!==this.run&&(this.defs=[],this.load())}updated(){let e=new Set(this.tasks().filter(e=>!S(e)&&(e.tries.length||e.outcome===`running`)).map(e=>e.kind)).size;this.live&&this.defsRun===this.run&&this.defs.length<e&&!this.timer&&(this.timer=setTimeout(()=>{this.timer=null,this.load()},3e3))}tasks(){return[...x(this.journal,this.plan).outcomes.values()]}clearTimer(){this.timer&&clearTimeout(this.timer),this.timer=null}async load(){if(!this.client||!this.run)return;let e=this.run;this.defsRun=e;let t=[];try{t=await this.client.definitions(e)}catch{t=[]}e===this.run&&(this.defs=t)}render(){let e=this.defs,t=this.tasks(),n=[...new Set(t.filter(e=>S(e)).map(e=>e.kind))].filter(t=>!e.some(e=>e.kind===t));if(!e.length&&!n.length)return O`<div class="blank"><span class="ic" aria-hidden="true">⌘</span><b>${this.live?T(`No definitions yet`):T(`No definitions`)}</b></div>`;let r=this.selected!==null&&n.includes(this.selected)?this.selected:null,i=r?void 0:e.find(e=>e.kind===this.selected)??e.find(e=>e.plugin)??e[0],a=r??i?.kind??n[0]??``,o=e=>{let n=t.filter(t=>t.kind===e),r=n.length,i=n.reduce((e,t)=>e+t.tries.length,0);return Qo(T(r===1?`1 task`:w`${r} tasks`),T(i===1?`1 attempt`:w`${i} attempts`))};return O`<div class="defs">
684
723
  <div class="deflist">
685
- ${H(e,e=>e.kind,e=>{return k`<button type="button" class="defitem ${e.kind===a?`sel`:``}" aria-current=${e.kind===a?`true`:j} @click=${()=>Q(this,`ca-navigate`,{def:e.kind})}>
724
+ ${V(e,e=>e.kind,e=>{return O`<button type="button" class="defitem ${e.kind===a?`sel`:``}" aria-current=${e.kind===a?`true`:A} @click=${()=>Q(this,`ca-navigate`,{def:e.kind})}>
686
725
  <b class="jmono">${e.kind}</b>
687
- <span class="meta words">${di([...e.base_kind?[(t=e.base_kind,E(T`Implementation of ${t}`))]:[],e.executor===`python`?`Python`:e.role?E(T`Role ${e.role}`):E(`No role`),...o(e.kind)])}</span>
726
+ <span class="meta words">${fi([...e.base_kind?[(t=e.base_kind,T(w`Implementation of ${t}`))]:[],e.executor===`python`?`Python`:e.role?T(w`Role ${e.role}`):T(`No role`),...o(e.kind)])}</span>
688
727
  </button>`;var t})}
689
- ${H(n,e=>e,e=>k`<button type="button" class="defitem ${e===a?`sel`:``}" aria-current=${e===a?`true`:j} @click=${()=>Q(this,`ca-navigate`,{def:e})}>
728
+ ${V(n,e=>e,e=>O`<button type="button" class="defitem ${e===a?`sel`:``}" aria-current=${e===a?`true`:A} @click=${()=>Q(this,`ca-navigate`,{def:e})}>
690
729
  <b class="jmono">${e}</b>
691
- <span class="meta words">${di([`Python`,...o(e)])}</span>
730
+ <span class="meta words">${fi([`Python`,...o(e)])}</span>
692
731
  </button>`)}
693
732
  </div>
694
733
  <section class="panel">
695
- ${i?k`<h3 title=${E(`As recorded when its first task started (definitions/<kind>.json)`)}>
696
- ${i.kind}<span class="r">${i.executor===`python`?E(`Python task`):i.plugin?E(T`Plugin ${i.name||``}`):E(`Defined in Python code`)}</span>
734
+ ${i?O`<h3 title=${T(`As recorded when its first task started (definitions/<kind>.json)`)}>
735
+ ${i.kind}<span class="r">${i.executor===`python`?T(`Python task`):i.plugin?T(w`Plugin ${i.name||``}`):T(`Defined in Python code`)}</span>
697
736
  </h3>
698
- <ca-definition .definition=${i} memory="definition:${i.kind}"></ca-definition>`:k`<h3>${a}<span class="r">${E(`Python task`)}</span></h3>
737
+ <ca-definition .definition=${i} memory="definition:${i.kind}"></ca-definition>`:O`<h3>${a}<span class="r">${T(`Python task`)}</span></h3>
699
738
  <ca-definition .definition=${null}></ca-definition>`}
700
739
  </section>
701
- </div>`}};U([P({attribute:!1})],Wd.prototype,`client`,void 0),U([P()],Wd.prototype,`run`,void 0),U([P({type:Boolean})],Wd.prototype,`live`,void 0),U([P({attribute:!1})],Wd.prototype,`journal`,void 0),U([P({attribute:!1})],Wd.prototype,`plan`,void 0),U([P({attribute:!1})],Wd.prototype,`selected`,void 0),U([F()],Wd.prototype,`defs`,void 0),Wd=U([N(`ca-definitions`),D()],Wd);var Gd=class extends M{constructor(...e){super(...e),this.procs=null,this.unresponsive=!1,this.exported=!1}static{this.styles=[V,O` :host{display:block;}.cmd{word-break:break-all;}`]}open(e){Q(this,`ca-open-task`,{key:e})}render(){let e=this.procs;if(!e?.alive){let e=this.exported?ic():this.unresponsive?Is():E(`not running`);return k`<div class="blank"><span class="ic" aria-hidden="true">⚙</span><b>${K(E(`No processes`),e)}</b></div>`}let t=e.python_tasks;return k`<div class="g12">
740
+ </div>`}};H([N({attribute:!1})],yf.prototype,`client`,void 0),H([N()],yf.prototype,`run`,void 0),H([N({type:Boolean})],yf.prototype,`live`,void 0),H([N({attribute:!1})],yf.prototype,`journal`,void 0),H([N({attribute:!1})],yf.prototype,`plan`,void 0),H([N({attribute:!1})],yf.prototype,`selected`,void 0),H([P()],yf.prototype,`defs`,void 0),yf=H([M(`ca-definitions`),E()],yf);var bf=class extends j{constructor(...e){super(...e),this.procs=null,this.unresponsive=!1,this.exported=!1}static{this.styles=[B,D` :host{display:block;}.cmd{word-break:break-all;}`]}open(e){Q(this,`ca-open-task`,{key:e})}render(){let e=this.procs;if(!e?.alive){let e=this.exported?Dc():this.unresponsive?ic():T(`not running`);return O`<div class="blank"><span class="ic" aria-hidden="true">⚙</span><b>${K(T(`No processes`),e)}</b></div>`}let t=e.python_tasks;return O`<div class="g12">
702
741
  <section class="panel c12">
703
- <h3 title=${E(`One per task (Backend.run)`)}>${E(`Agent sessions running`)} <span class="r">${e.launches.length}</span></h3>
704
- ${e.launches.length?H(e.launches,e=>e.key,e=>k`<div class="fl" @click=${t=>!t.target.closest(`button`)&&this.open(e.key)}>
742
+ <h3 title=${T(`One per task (Backend.run)`)}>${T(`Agent sessions running`)} <span class="r">${e.launches.length}</span></h3>
743
+ ${e.launches.length?V(e.launches,e=>e.key,e=>O`<div class="fl" @click=${t=>!t.target.closest(`button`)&&this.open(e.key)}>
705
744
  <button type="button" class="fl-name jmono" @click=${()=>this.open(e.key)}>${q(e)}</button>
706
- <span class="meta">${K(E(T`PID ${e.pid}`),E(T`Model ${e.model||`—`}`),e.role?E(T`Role ${e.role}`):``)} |
707
- <cae-elapsed .since=${Ir.at(`c:${e.key}`,e.age_s)}></cae-elapsed></span>
708
- <div class="meta mono cmd">${(e.full_cmd||E(`In the pipeline process`)).slice(0,400)}</div>
709
- </div>`):k`<div class="meta">${E(`No agent sessions`)}</div>`}
745
+ <span class="meta">${K(T(w`PID ${e.pid}`),T(w`Model ${e.model||`—`}`),e.role?T(w`Role ${e.role}`):``)} |
746
+ <cae-elapsed .since=${Lr.at(`c:${e.key}`,e.age_s)}></cae-elapsed></span>
747
+ <div class="meta mono cmd">${(e.full_cmd||T(`In the pipeline process`)).slice(0,400)}</div>
748
+ </div>`):O`<div class="meta">${T(`No agent sessions`)}</div>`}
710
749
  </section>
711
- ${t.length?k`<section class="panel c12">
712
- <h3 title=${E(`Functions in the pipeline process`)}>${E(`Python tasks running`)} <span class="r">${t.length}</span></h3>
713
- ${H(t,e=>e.key,e=>k`<div class="fl">
750
+ ${t.length?O`<section class="panel c12">
751
+ <h3 title=${T(`Functions in the pipeline process`)}>${T(`Python tasks running`)} <span class="r">${t.length}</span></h3>
752
+ ${V(t,e=>e.key,e=>O`<div class="fl">
714
753
  <b class="jmono">${q(e)}</b>
715
- <span class="meta">${E(T`PID ${e.pid}`)} | <cae-elapsed .since=${Ir.at(`p:${e.key}`,e.age_s)}></cae-elapsed></span>
754
+ <span class="meta">${T(w`PID ${e.pid}`)} | <cae-elapsed .since=${Lr.at(`p:${e.key}`,e.age_s)}></cae-elapsed></span>
716
755
  </div>`)}
717
- </section>`:j}
718
- <section class="panel c12"><h3>${E(`Process tree`)}</h3><ca-proc-tree .procs=${e}></ca-proc-tree></section>
719
- </div>`}};U([P({attribute:!1})],Gd.prototype,`procs`,void 0),U([P({type:Boolean})],Gd.prototype,`unresponsive`,void 0),U([P({type:Boolean})],Gd.prototype,`exported`,void 0),Gd=U([N(`ca-procs-view`),D()],Gd),R(`cae-column-chart`,ua),R(`cae-line-chart`,da),R(`cae-heatmap`,ha),R(`cae-state-grid`,Ca),R(`cae-bar-chart`,wa);var Kd=[`failed`,`attention`,`done`,`running`,`muted`,`neutral`],qd=e=>typeof e._tone==`string`&&Kd.includes(e._tone)?e._tone:void 0,Jd=new Set([`usd`,`pct`,`duration`,`tokens`,`number`]),Yd=e=>typeof e==`string`?e:JSON.stringify(e),Xd=[Kr,O` caption{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}tr{column-gap:12px;padding:6px 12px;border-bottom:1px solid var(--line);font-size:12px;min-width:560px;}th,td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}thead tr{color:var(--text-muted);font-size:11px;}tbody [data-align='end']{font-variant-numeric:tabular-nums;}tbody tr[data-tone='failed'],tbody tr[data-tone='attention']{box-shadow:inset 2px 0 0 var(--tone);}td a,th a{color:var(--accent);text-decoration:none;}td a:hover,th a:hover,td a:focus-visible,th a:focus-visible{text-decoration:underline;}`],Zd=class extends M{constructor(...e){super(...e),this.sorts=new Map}static{this.styles=[V,Gr,O` :host{display:block;}.note{font-size:var(--font-size-sm);color:var(--text-2);line-height:1.55;max-width:78ch;}.note>:first-child{margin-top:0;}.note>:last-child{margin-bottom:0;}.note[data-tone]{padding-left:10px;border-left:3px solid var(--line2);}.note[data-tone='failed']{border-left-color:var(--status-failed);}.note[data-tone='attention']{border-left-color:var(--status-attention);}.note[data-tone='done']{border-left-color:var(--status-done);}.note[data-tone='running']{border-left-color:var(--status-running);}.block + .block{margin-top:18px;}h4{margin:0 0 8px;font-size:var(--font-size-sm);font-weight:600;color:var(--text-2);}details>summary{cursor:pointer;margin-bottom:8px;font-size:var(--font-size-sm);font-weight:600;color:var(--text-2);}details:not([open])>summary{margin-bottom:0;}`]}render(){let e=he(this.body);return e?this.draw(e,`0`):k`<cae-json-tree .value=${this.body??{}}></cae-json-tree>`}draw(e,t){let n=this.content(e,t);return e.title?e.collapsed?k`<details class="block"><summary>${e.title}</summary>${n}</details>`:k`<div class="block"><h4>${e.title}</h4>${n}</div>`:k`<div class="block">${n}</div>`}content(e,t){let n={empty:E(`No values`),showTable:E(`Show table`),showChart:E(`Show chart`),label:E(`Label`),other:E(`Other`),total:E(`Total`),none:`—`,scale:(e,t)=>E(T`${e} to ${t}`)};switch(e.type){case`blocks`:return k`${e.blocks.map((e,n)=>{let r=he(e);return r?this.draw(r,`${t}.${n}`):k`<div class="block"><cae-json-tree .value=${e}></cae-json-tree></div>`})}`;case`tiles`:return k`<cae-stat-tiles .tiles=${r=e.tiles,r.map(e=>({id:e.id,label:e.label,value:e.value,tone:e.tone??void 0,tip:e.tip??void 0,sub:e.sub??[]}))} .bump=${!1}></cae-stat-tiles>`;case`table`:return this.table(e,t);case`columns`:return k`<cae-column-chart .label=${e.title??``} .x=${e.x} .series=${e.series} ?stacked=${!!e.stacked} .format=${$s(e.unit)} .strings=${n}></cae-column-chart>`;case`lines`:return k`<cae-line-chart .label=${e.title??``} .x=${e.x} .series=${e.series} .format=${$s(e.unit)} .strings=${n}></cae-line-chart>`;case`heatmap`:return k`<cae-heatmap .label=${e.title??``} .x=${e.x} .y=${e.y} .values=${e.values} .format=${$s(e.unit)} .strings=${n}></cae-heatmap>`;case`hbars`:return k`<cae-bar-chart .label=${e.title??``} .bars=${e.bars.map(e=>({label:e.label,value:e.value,tone:e.tone??void 0}))} .format=${$s(e.unit)} .strings=${n}></cae-bar-chart>`;case`status_grid`:return k`<cae-state-grid .label=${e.title??``} .x=${e.x} .y=${e.y} .cells=${e.cells} .strings=${n}></cae-state-grid>`;case`note`:return k`<div class="note" data-tone=${e.tone&&e.tone!==`neutral`?e.tone:j}>${zi(Ii(e.text))}</div>`;default:return k`${j}`}var r}table(e,t){let n=(s=e).columns.map((e,t)=>{let n=e.format?Jd.has(e.format):s.rows.some(t=>typeof t[e.id]==`number`),r=e.bar?Math.max(0,...s.rows.map(t=>Number(t[e.id])||0)):0;return{id:e.id,header:e.label,tip:e.tip??void 0,align:e.align??(n?`end`:`start`),rowHeader:t===0,compare:(t,n)=>function(e,t){let n=e=>e==null||e===``;return n(e)||n(t)?n(e)===n(t)?0:n(e)?1:-1:typeof e==`number`&&typeof t==`number`?e-t:Yd(e).localeCompare(Yd(t))}(t[e.id],n[e.id]),text:t=>ec(t[e.id],e.format),cell:t=>{let n=t[e.id],i=ec(n,e.format),a=e.link?function(e){if(typeof e!=`string`||!/^https?:\/\//i.test(e.trim()))return null;try{let t=new URL(e.trim());return t.protocol===`http:`||t.protocol===`https:`?t.href:null}catch{return null}}(t[e.link]):null;return a?k`<a href=${a} target="_blank" rel="noopener noreferrer">${i}</a>`:e.bar&&typeof n==`number`?k`${i}<span class="jdur" aria-hidden="true"><i style="width: ${r>0?100*Math.max(0,n)/r:0}%"></i></span>`:i}}}),r=e.rows,i=new Map(r.map((e,t)=>[e,String(t)])),a=this.sorts.get(t)??null,o=a?function(e,t,n){let r=n&&t.find(e=>e.id===n.id);if(!n||!r)return[...e];let i=n.direction===`desc`?-1:1,{compare:a,text:o}=r,s=(e,t)=>{let n=o?o(e):r.cell(e,t);return typeof n==`number`||typeof n==`string`?n:``};return e.map((e,t)=>({r:e,i:t,v:a?0:s(e,t)})).sort((e,t)=>i*((e,t)=>a?a(e.r,t.r):typeof e.v==`number`&&typeof t.v==`number`?e.v-t.v:String(e.v).localeCompare(String(t.v),void 0,{numeric:!0}))(e,t)||e.i-t.i).map(e=>e.r)}(r,n,a):r;var s;return k`<cae-data-table .columns=${n} .rows=${o} .rowKey=${e=>i.get(e)??``} .rowTone=${qd} .activatable=${!1} .sort=${a} .cellStyles=${Xd} .caption=${e.title??``} .strings=${Hs(E(`No rows`))} @cae-sort=${e=>this.sorts=new Map(this.sorts).set(t,e.detail)} ></cae-data-table>`}};U([P({attribute:!1})],Zd.prototype,`body`,void 0),U([F()],Zd.prototype,`sorts`,void 0),Zd=U([N(`ca-panel-body`),D()],Zd);var Qd=class extends M{constructor(...e){super(...e),this.name=``}static{this.styles=[V,O` :host{display:block;}.tab-ic{opacity:1;margin-right:6px;font-size:12px;}.desc{margin:-4px 0 12px;}`]}render(){if(this.data===void 0)return this.panel?k`<div class="blank"><span class="ic" aria-hidden="true">…</span>${E(`Loading…`)}</div>`:k`<div class="blank"><span class="ic" aria-hidden="true">▤</span>${E(T`No custom view named ${this.name}`)}</div>`;let e=this.panel;return k`<section class="panel">
756
+ </section>`:A}
757
+ <section class="panel c12"><h3>${T(`Process tree`)}</h3><ca-proc-tree .procs=${e}></ca-proc-tree></section>
758
+ </div>`}};H([N({attribute:!1})],bf.prototype,`procs`,void 0),H([N({type:Boolean})],bf.prototype,`unresponsive`,void 0),H([N({type:Boolean})],bf.prototype,`exported`,void 0),bf=H([M(`ca-procs-view`),E()],bf),R(`cae-column-chart`,Ma),R(`cae-line-chart`,Na),R(`cae-heatmap`,La),R(`cae-state-grid`,Ga),R(`cae-bar-chart`,Ka),R(`cae-code`,Xi),R(`cae-tree`,la);var xf=[`failed`,`attention`,`done`,`running`,`muted`,`neutral`],Sf=e=>typeof e._tone==`string`&&xf.includes(e._tone)?e._tone:void 0,Cf=new Set([`usd`,`pct`,`duration`,`tokens`,`number`]),wf=e=>typeof e==`string`?e:JSON.stringify(e),Tf=[qr,D` caption{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}tr{column-gap:12px;padding:6px 12px;border-bottom:1px solid var(--line);font-size:12px;min-width:560px;}th,td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}thead tr{color:var(--text-muted);font-size:11px;}tbody [data-align='end']{font-variant-numeric:tabular-nums;}tbody tr[data-tone='failed'],tbody tr[data-tone='attention']{box-shadow:inset 2px 0 0 var(--tone);}td a,th a{color:var(--accent);text-decoration:none;}td a:hover,th a:hover,td a:focus-visible,th a:focus-visible{text-decoration:underline;}`],Ef=class extends j{constructor(...e){super(...e),this.sorts=new Map,this.picks=new Map}static{this.styles=[B,Kr,D` :host{display:block;}.note{font-size:var(--font-size-sm);color:var(--text-2);line-height:1.55;max-width:78ch;}.note>:first-child{margin-top:0;}.note>:last-child{margin-bottom:0;}.note[data-tone]{padding-left:10px;border-left:3px solid var(--line2);}.note[data-tone='failed']{border-left-color:var(--status-failed);}.note[data-tone='attention']{border-left-color:var(--status-attention);}.note[data-tone='done']{border-left-color:var(--status-done);}.note[data-tone='running']{border-left-color:var(--status-running);}.block + .block{margin-top:18px;}h4{margin:0 0 8px;font-size:var(--font-size-sm);font-weight:600;color:var(--text-2);}details>summary{cursor:pointer;margin-bottom:8px;font-size:var(--font-size-sm);font-weight:600;color:var(--text-2);}details:not([open])>summary{margin-bottom:0;}.block[data-anchor]{scroll-margin-top:12px;}.block[data-anchor]:focus{outline:none;}.pair{display:grid;grid-template-columns:minmax(180px,30%) minmax(0,1fr);gap:12px;align-items:start;}.pair>.tree{border:1px solid var(--line);border-radius:var(--radius-md);max-height:70vh;overflow:auto;}.pane{min-width:0;}@media (max-width:720px){.pair{grid-template-columns:minmax(0,1fr);}.pair>.tree{max-height:40vh;}}`]}render(){let e=ge(this.body);return e?this.draw(e,`0`):O`<cae-json-tree .value=${this.body??{}}></cae-json-tree>`}draw(e,t){let n=this.content(e,t),r=e.anchor||A;return e.title?e.collapsed?O`<details class="block" data-anchor=${r} tabindex=${e.anchor?-1:A}><summary>${e.title}</summary>${n}</details>`:O`<div class="block" data-anchor=${r} tabindex=${e.anchor?-1:A}><h4>${e.title}</h4>${n}</div>`:O`<div class="block" data-anchor=${r} tabindex=${e.anchor?-1:A}>${n}</div>`}code(e,t){return O`<cae-code .code=${e.text} .language=${e.language??``} .start=${e.start??1} .highlight=${e.highlight??[]} .path=${e.path??t??``} .label=${e.title??e.path??t??``} ?wrap=${!!e.wrap} .strings=${{copy:T(`Copy`),copied:T(`Copied`),wrap:T(`Wrap lines`),empty:T(`No text`),cut:(e,t)=>T(w`First ${e.toLocaleString(F())} of ${t.toLocaleString(F())} lines`)}}></cae-code>`}tree(e,t){let{items:n,nodes:r,first:i}=function(e){let t=new Map,n=null,r=(e,i)=>e.map(e=>{let a=i?`${i}/${e.name}`:e.name,o=e.id??a;return t.set(o,e),n===null&&e.code&&(n=o),{id:o,name:e.name,icon:e.icon??null,badge:e.badge??null,tone:e.tone??null,open:e.open??!0,selectable:!!e.code||!!e.link,children:e.children?.length?r(e.children,a):null}});return{items:r(e.nodes,``),nodes:t,first:e.selected??n}}(e),a=this.picks.get(t),o=a!==void 0&&r.has(a)?a:i,s=o?r.get(o):void 0,c=[...r.values()].some(e=>e.code),l=O`<cae-tree class="tree" .items=${n} .selected=${s?.code?o:null} .label=${e.title??``} .strings=${{empty:T(`No items`)}} @cae-select=${e=>this.choose(t,e.detail.id,r)}></cae-tree>`;return c?O`<div class="pair">
759
+ ${l}
760
+ <div class="pane">${s?.code?this.code(s.code,o??``):O`<div class="meta">${T(`No selection`)}</div>`}</div>
761
+ </div>`:l}choose(e,t,n){let r=t===null?void 0:n.get(t);r&&t!==null&&(r.code?this.picks=new Map(this.picks).set(e,t):r.link&&this.follow(r.link))}follow(e){if(e.anchor){let t=this.renderRoot.querySelector(`[data-anchor="${CSS.escape(e.anchor)}"]`);t?.scrollIntoView?.({block:`start`}),t?.focus({preventScroll:!0});return}let t=e.run?{run:e.run}:{};e.panel?Q(this,`ca-navigate`,{page:``,...t,tab:`panel:${e.panel}`}):e.task&&Q(this,`ca-navigate`,{page:``,...t,tab:`stream`,key:e.task,view:`transcript`,round:null})}content(e,t){let n={empty:T(`No values`),showTable:T(`Show table`),showChart:T(`Show chart`),label:T(`Label`),other:T(`Other`),total:T(`Total`),none:`—`,scale:(e,t)=>T(w`${e} to ${t}`)};switch(e.type){case`blocks`:return O`${e.blocks.map((e,n)=>{let r=ge(e);return r?this.draw(r,`${t}.${n}`):O`<div class="block"><cae-json-tree .value=${e}></cae-json-tree></div>`})}`;case`tiles`:return O`<cae-stat-tiles .tiles=${r=e.tiles,r.map(e=>({id:e.id,label:e.label,value:e.value,tone:e.tone??void 0,tip:e.tip??void 0,sub:e.sub??[]}))} .bump=${!1}></cae-stat-tiles>`;case`table`:return this.table(e,t);case`columns`:return O`<cae-column-chart .label=${e.title??``} .x=${e.x} .series=${e.series} ?stacked=${!!e.stacked} .format=${Sc(e.unit)} .strings=${n}></cae-column-chart>`;case`lines`:return O`<cae-line-chart .label=${e.title??``} .x=${e.x} .series=${e.series} .format=${Sc(e.unit)} .strings=${n}></cae-line-chart>`;case`heatmap`:return O`<cae-heatmap .label=${e.title??``} .x=${e.x} .y=${e.y} .values=${e.values} .format=${Sc(e.unit)} .strings=${n}></cae-heatmap>`;case`hbars`:return O`<cae-bar-chart .label=${e.title??``} .bars=${e.bars.map(e=>({label:e.label,value:e.value,tone:e.tone??void 0}))} .format=${Sc(e.unit)} .strings=${n}></cae-bar-chart>`;case`status_grid`:return O`<cae-state-grid .label=${e.title??``} .x=${e.x} .y=${e.y} .cells=${e.cells} .strings=${n}></cae-state-grid>`;case`note`:return O`<div class="note" data-tone=${e.tone&&e.tone!==`neutral`?e.tone:A}>${Ji($i(e.text))}</div>`;case`code`:return this.code(e);case`tree`:return this.tree(e,t);default:return O`${A}`}var r}table(e,t){let n=(s=e).columns.map((e,t)=>{let n=e.format?Cf.has(e.format):s.rows.some(t=>typeof t[e.id]==`number`),r=e.bar?Math.max(0,...s.rows.map(t=>Number(t[e.id])||0)):0;return{id:e.id,header:e.label,tip:e.tip??void 0,align:e.align??(n?`end`:`start`),rowHeader:t===0,compare:(t,n)=>function(e,t){let n=e=>e==null||e===``;return n(e)||n(t)?n(e)===n(t)?0:n(e)?1:-1:typeof e==`number`&&typeof t==`number`?e-t:wf(e).localeCompare(wf(t))}(t[e.id],n[e.id]),text:t=>Cc(t[e.id],e.format),cell:t=>{let n=t[e.id],i=Cc(n,e.format),a=e.link?function(e){if(typeof e!=`string`||!/^https?:\/\//i.test(e.trim()))return null;try{let t=new URL(e.trim());return t.protocol===`http:`||t.protocol===`https:`?t.href:null}catch{return null}}(t[e.link]):null;return a?O`<a href=${a} target="_blank" rel="noopener noreferrer">${i}</a>`:e.bar&&typeof n==`number`?O`${i}<span class="jdur" aria-hidden="true"><i style="width: ${r>0?100*Math.max(0,n)/r:0}%"></i></span>`:i}}}),r=e.rows,i=new Map(r.map((e,t)=>[e,String(t)])),a=this.sorts.get(t)??null,o=a?function(e,t,n){let r=n&&t.find(e=>e.id===n.id);if(!n||!r)return[...e];let i=n.direction===`desc`?-1:1,{compare:a,text:o}=r,s=(e,t)=>{let n=o?o(e):r.cell(e,t);return typeof n==`number`||typeof n==`string`?n:``};return e.map((e,t)=>({r:e,i:t,v:a?0:s(e,t)})).sort((e,t)=>i*((e,t)=>a?a(e.r,t.r):typeof e.v==`number`&&typeof t.v==`number`?e.v-t.v:String(e.v).localeCompare(String(t.v),void 0,{numeric:!0}))(e,t)||e.i-t.i).map(e=>e.r)}(r,n,a):r;var s;return O`<cae-data-table .columns=${n} .rows=${o} .rowKey=${e=>i.get(e)??``} .rowTone=${Sf} .activatable=${!1} .sort=${a} .cellStyles=${Tf} .caption=${e.title??``} .strings=${uc(T(`No rows`))} @cae-sort=${e=>this.sorts=new Map(this.sorts).set(t,e.detail)} ></cae-data-table>`}};H([N({attribute:!1})],Ef.prototype,`body`,void 0),H([P()],Ef.prototype,`sorts`,void 0),H([P()],Ef.prototype,`picks`,void 0),Ef=H([M(`ca-panel-body`),E()],Ef);var Df=class extends j{constructor(...e){super(...e),this.name=``}static{this.styles=[B,D` :host{display:block;}.tab-ic{opacity:1;margin-right:6px;font-size:12px;}.desc{margin:-4px 0 12px;}`]}render(){if(this.data===void 0)return this.panel?O`<div class="blank"><span class="ic" aria-hidden="true">…</span>${T(`Loading…`)}</div>`:O`<div class="blank"><span class="ic" aria-hidden="true">▤</span>${T(w`No custom view named ${this.name}`)}</div>`;let e=this.panel;return O`<section class="panel">
720
762
  <h3><span class="tab-ic" aria-hidden="true">${e?.icon||`▤`}</span>${e?.title||this.name}
721
- <span class="r">${E(`Custom view`)}</span></h3>
722
- ${e?.description?k`<div class="meta desc">${e.description}</div>`:j}
723
- ${he(this.data)?k`<ca-panel-body .body=${this.data}></ca-panel-body>`:k`<cae-json-tree .value=${this.data}></cae-json-tree>`}
724
- </section>`}};U([P()],Qd.prototype,`name`,void 0),U([P({attribute:!1})],Qd.prototype,`panel`,void 0),U([P({attribute:!1})],Qd.prototype,`data`,void 0),Qd=U([N(`ca-panel-view`),D()],Qd);var $d=class{constructor(e){this.host=e,this.value=null,this.error=null,this.token=0}load(e,t,n){let r=++this.token;this.value=null,this.error=null,t&&n&&e&&this.fetch(r,e,t,n)}async fetch(e,t,n,r){let i,a=null;try{i=await t.task(n,r)}catch(e){i=(e=>({key:e,rows:[],launches:[],definition:null,io:{params:{},inputs:[],outputs:[],executor:`agent`,upstream:[],downstream:[]},stream:null}))(r),a=e}e===this.token&&(this.value=i,this.error=a,this.host.requestUpdate())}};function ef(e){let t=[],n=!1;for(let r of(e||``).split(`
725
- `))/^Errors:\s*$/.test(r)?n=!0:n&&r.startsWith(`- `)?t.push(r.slice(2)):n&&r.trim()&&!r.startsWith(`- `)&&(n=!1);return t}R(`cae-transcript`,Eo);var tf=e=>!!e&&(e.prompt||``).startsWith(`The output file(s) you wrote do not pass their checks.`);function nf(e,t){let n=new Map(t.filter(e=>e.stop!==`invalid_input`&&e.stop!==`skipped`).map((e,t)=>[t+1,e])),r=[],i=0,a=0,o=0;return e.forEach((e,t)=>{let s=n.get(i)?.hops?.length??1;t>0&&tf(e)?a++:t>0&&o+1<s?(o++,a=0):(i++,o=0,a=0);let c=n.get(i)?.hops?.[o],l=c?.model||c?.route||``,u=a?`fixup`:o?`switch`:`try`;r.push({kind:u,tryNo:i,fixupNo:a,hopNo:o,model:l,result:null,rejectedWith:[],switchedStop:``,switchedTo:``,row:null})}),r.forEach((t,i)=>{let a=r[i+1];if(a&&a.tryNo===t.tryNo&&a.hopNo!==t.hopNo)return t.result=`switched`,t.switchedStop=n.get(t.tryNo)?.hops?.[t.hopNo]?.stop??``,void(t.switchedTo=a.model);if(a&&a.tryNo===t.tryNo)return t.result=`rejected`,void(t.rejectedWith=ef(e[i+1]?.prompt));let o=n.get(t.tryNo)??null;t.row=o,t.result=o?o.ok?`ok`:`failed`:null}),r}var rf=e=>/\[([\w.-]+)\]/.exec(e)?.[1]??``;function af(e){let t=/\[([\w.-]+)\]\s*(.*)$/.exec(e);return t?`${t[1]}: ${t[2]}`:e}function of(e,t,n=Jo(e.tryNo-1)){return t>1?e.fixupNo?K(n,E(T`correction ${e.fixupNo}`)):e.hopNo?K(n,E(`model switch`)):n:e.fixupNo?E(T`Correction ${e.fixupNo}`):e.hopNo?E(`Model switch`):Jo(0)}function sf(e){let t=e.model||E(`model`);return e.switchedTo?E(T`${t}: ${Z(e.switchedStop)} → ${e.switchedTo}`):E(T`${t}: ${Z(e.switchedStop)} → next model`)}var cf={claude:`Claude Code`,omp:`omp`,codex:`Codex`,opencode:`opencode`,gemini:`Gemini CLI`};function lf(e){let t=String(e||``).split(`/`).pop()??``;return cf[t]??t}var uf=(e,t)=>{let n=e.indexOf(t);return n>=0?e[n+1]??``:``};function df(e){let t=e.argv,n=/TELEMETRY [^\n]*role=([\w:-]+)/.exec(e.prompt||``)?.[1];return{agent:lf(t[0]),model:uf(t,`--model`)||uf(t,`-m`),role:n&&n!==`-`?n:``}}function ff(e){if(!e)return[];let t=[];return e.agent&&t.push({label:E(`coding agent`),value:e.agent,tip:E(`The CLI that ran the task (claude, omp)`)}),e.model&&t.push({label:E(`model`),value:e.model,tip:E(`The model the agent session ran on`),look:`mono`}),e.role&&t.push({label:E(`role`),value:e.role,tip:E(`The agent definition the coding agent ran as (agents/<role>.md)`),look:`quiet`}),t}function pf(e){let t=e.prompt||``,n=e.prompt_truncated||0;return[{id:`cmd`,code:!0,summary:E(`Command line`),text:e.argv.join(` `)},{id:`prompt`,summary:E(n?T`Prompt (${t.length} characters; ${n} characters not saved)`:T`Prompt (${t.length} characters)`),text:t+(n?`\n\n${E(T`(${n} characters not saved)`)}`:``)}]}function mf(e,t){if(e.result===`rejected`)return{tone:`attention`,title:E(`Output failed checks`),list:e.rejectedWith.map(e=>w(e,t)),note:E(`Sent in the correction prompt`)};if(e.result===`switched`)return{tone:`failed`,title:sf(e)};if(e.result===`failed`&&e.row){let n=w(e.row.reason,t)||Z(e.row.stop);return{tone:`failed`,title:E(T`Attempt ${e.tryNo} failed: ${n}`)}}}function hf(e,t,n){let r=t[t.length-1]?.tryNo??1,i=Yo(n.rows.filter(f)),a=e.rounds.length-1;return e.rounds.map((e,o)=>{let s=t[o],[c,l,u]=s?function(e,t){switch(e.result){case`ok`:return[`✓`,E(`passed`),E(`Output passed checks`)];case`rejected`:return[`✕`,E(`failed checks`),E(`Output failed checks`)];case`switched`:return[`✕`,Z(e.switchedStop),sf(e)];case`failed`:return[`✕`,E(`failed`),w(e.row?.reason,t)||Z(e.row?.stop)];default:return[``,``,``]}}(s,n.run):[``,``,``],d=e.who?.model;return{id:e.id,title:s?of(s,r,i[s.tryNo-1]):String(o+1),facts:d?[d.replace(/^claude-/,``)]:[],verdict:c?{tone:c===`✓`?`done`:`failed`,text:l,tip:u}:void 0,active:o===a&&n.active,tags:e.launch?ff(e.who):[],details:e.launch?pf(e.launch):[],items:e.items.map(e=>e.type===`event`?{...e,title:E(`API request sent again`)}:e),footer:s&&mf(s,n.run)}})}var gf=/\{\s*"title"\s*:\s*"((?:[^"\\]|\\.)*)"\s*,\s*"url"\s*:\s*"(https?:\/\/[^"\s]+)"/g,_f=/^\s*\[\d+\]\s+(.+)\n\s*(https?:\/\/\S+)/gm,vf=/https?:\/\/[^\s"'<>)\]]+/g;function yf(e){let t=e??``,n=[],r=new Set,i=(e,t)=>{r.has(t)||n.length>=20||(r.add(t),n.push({title:e.trim()||t,url:t}))};for(let e of t.matchAll(gf)){let t=e[1]??``;try{t=JSON.parse(`"${t}"`)}catch{}i(t,e[2]??``)}if(!n.length)for(let e of t.matchAll(_f))i(e[1]??``,e[2]??``);if(!n.length)for(let e of t.matchAll(vf))i(``,e[0].replace(/[.,;:!?]+$/,``));return n}var bf=()=>({rounds:[],tools:new Map,next:0}),xf=/session init:.*?model=([\w.\-:]+)/;function Sf(e){return`i`+e.next++}function Cf(e,t){let n={id:`r${e.rounds.length}`,launch:t,who:t?df(t):null,items:[]};return e.rounds.push(n),n}function wf(e){return e.rounds[e.rounds.length-1]??Cf(e,null)}function Tf(e,t){t?e.name=t:e.name||=`tool`,e.icon=(e.name.split(/[_:]/).pop()??``).toLowerCase()}function Ef(e,t,n){let r=n?e.tools.get(n):void 0;return r||(r={type:`tool`,id:n?`call:${n}`:Sf(e),call:n,name:``,icon:``,summary:``,intent:``,body:``,output:null,status:`running`},n&&e.tools.set(n,r),t.items.push(r)),r}function Df(e,t){let n=0;for(let i of t){let t=r(i);if(!t)continue;if(t.type===`launch`){Cf(e,t),n++;continue}let a=wf(e);switch(t.type){case`message_start`:case`message_end`:if(t.role!==`user`||!t.text)continue;a.items.push({type:`prompt`,id:Sf(e),text:t.text});break;case`turn_end`:if(!t.thinking)continue;a.items.push({type:`reasoning`,id:Sf(e),text:t.thinking});break;case`acall`:case`tool_execution_start`:case`tool_execution_update`:{let n=Ef(e,a,t.call);n.output===null?(Tf(n,t.tool),n.summary=No(t.cmd),n.intent=t.intent||``,n.body=t.cmd||n.body,t.web_query&&(n.query=t.web_query),t.web_fetch&&(n.page=t.web_fetch)):!n.summary&&t.cmd&&(n.summary=No(t.cmd));break}case`aresult`:case`tool_execution_end`:{let n=Ef(e,a,t.call);if(n.output!==null&&!t.out)break;Tf(n,t.tool),n.status=t.err?`error`:`ok`,!n.summary&&n.body&&(n.summary=No(n.body)),n.output=t.out||`(no output)`,n.query&&(n.links=yf(n.output));break}case`message_update`:{if(!t.delta)continue;let n=a.items[a.items.length-1];n?.type===`message`?n.text+=t.delta:a.items.push({type:`message`,id:Sf(e),text:t.delta});break}case`auto_retry_start`:a.items.push({type:`event`,id:Sf(e),icon:`↻`,title:``,text:t.err??``});break;case`notice`:{let n=xf.exec(t.text||``)?.[1];n&&(a.who??={agent:``,model:``,role:``},a.who.model||(a.who.model=n)),a.items.push({type:`notice`,id:Sf(e),text:(t.text||``).replace(/\s+/g,` `).trim()});break}}n++}return n}var Of=class{constructor(e){this.host=e,this.model=bf(),this.behind=0,this.count=0,this.ready=!1,this.version=0,this.generation=0,this.loaded=``,this.close=null,e.addController(this)}get tailing(){return this.close!==null}hostDisconnected(){this.stop(),this.loaded=``}stop(){this.close?.(),this.close=null}load(e,t){if(this.stop(),this.loaded=e,this.generation++,this.version++,this.model=bf(),this.behind=0,this.count=0,this.ready=!1,t&&`events`in t)this.count=Df(this.model,t.events),this.ready=!0;else if(t){let e=this.generation;this.close=function(e,t,n,r={}){return s(`${l(r)}/events/stream?run=${c(e)}&key=${c(t)}`,[`stream`],{...n,message:e=>n.message(e.data)},r)}(t.run,t.stream,{message:t=>this.onPage(t,e)},{baseUrl:t.baseUrl})}}append(e){e.length&&(this.count+=Df(this.model,e),this.version++)}onPage(e,t){t===this.generation&&(!this.ready&&e.behind&&(this.behind=e.behind),this.count+=Df(this.model,e.events),this.ready=!0,this.version++,this.host.requestUpdate())}async loadEarlier(e,t,n){let r=this.generation,i=Math.max(0,this.behind-3e3);this.behind=0,this.host.requestUpdate();let a=await e.stream(t,n,i);r===this.generation&&(this.model=bf(),Df(this.model,a.events),this.version++,this.host.requestUpdate())}};function kf(e){return k`<cae-markdown .text=${e} .split=${Vd} .strings=${{showRendered:E(`Show rendered`),showSource:E(`Show source`)}}></cae-markdown>`}R(`cae-markdown`,Vi);var Af=class extends M{constructor(...e){super(...e),this.events=null,this.run=``,this.stream=null,this.baseUrl=``,this.client=null,this.live=!1,this.round=null,this.rows=[],this.mode=`full`,this.shown=-1,this.feed=new Of(this),this.memory=null,this.drawn=null,this.lastSent=``,this.fed=null}static{this.styles=O` :host{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;position:relative;}:host([mode='none']){display:none;}:host([mode='tabs']){flex:none;}`}get source(){return this.events?`static`:this.run&&this.stream?`${this.run}\n${this.stream}`:``}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this.requestUpdate()}willUpdate(e){let t=this.source;if(!e.has(`events`)&&t===this.feed.loaded)return;let n=this.fed,r=this.events;if(this.fed=r,r&&n&&t===this.feed.loaded&&function(e,t){if(e===t||e.length<t.length)return e===t;for(let n=t.length-1;n>=0;n--)if(e[n]!==t[n])return!1;return!0}(r,n))return void this.feed.append(r.slice(n.length));let{run:i,stream:a}=this,o=`transcript:${i}/${a??``}`,s=Xn(this),c=s===Kn?new Qn(`${o}:open`):new Zn(`${o}:open`,this),l=!this.events&&!!a;this.memory={isOpen:e=>c.has(e),setOpen:(e,t)=>c.set(e,t),scroll:()=>l?s.recall(`${o}:scroll`):void 0,setScroll:e=>l&&s.remember(`${o}:scroll`,e)},this.shown=-1,this.feed.load(t,this.events?{events:this.events}:t&&a?{run:i,stream:a,baseUrl:this.baseUrl}:null)}sections(){let e=this.live&&this.feed.tailing,t=[this.feed.version,this.rows,this.run,e,jn()];if(this.drawn?.key.every((e,n)=>e===t[n]))return this.drawn;let n=this.feed.model,r=nf(n.rounds.map(e=>e.launch),this.rows);return this.drawn={key:t,rounds:r,sections:hf(n,r,{run:this.run,rows:this.rows,active:e})},this.drawn}render(){let e=this.feed,{sections:t}=this.sections();return to(e.generation,k`<cae-transcript .sections=${t} .shown=${this.round===null?null:this.round-1} ?live=${this.live} .earlier=${e.behind} ?loading=${!e.ready} .count=${e.count} mode=${this.mode} .memory=${this.memory} .markdown=${Ii} .renderDetail=${e=>kf(e.text)} .strings=${{sections:E(`Agent sessions`),sectionsTip:[`${E(`Retry`)}: ${qo()}`,`${E(`Correction`)}: ${Ds()}`,`${E(`Model switch`)}: ${Ss()}`].join(`
726
- `),loadEarlier:e=>E(e===1?`Show 1 earlier line`:T`Show ${e} earlier lines`),newBelow:e=>E(e===1?`Show 1 new event`:T`Show ${e} new events`),newInLatest:e=>E(e===1?`Show 1 new event in the running agent session`:T`Show ${e} new events in the running agent session`),prompt:E(`Prompt`),assistant:E(`Assistant`),reasoning:E(`Reasoning`),characters:e=>E(T`${e} characters`),tool:E(`tool`),results:e=>E(e===1?`1 result`:T`${e} results`),done:E(`done`,{id:`tool-done`}),failed:E(`failed`),running:E(`running`),interrupted:E(`interrupted`),interruptedTip:E(`The run ended before the tool call returned`),query:E(`query`),page:E(`page`),fullText:E(`Full text`),showAll:e=>E(T`Show all (${e} characters)`),showLess:E(`Show less`)}} @cae-section-change=${e=>{e.stopPropagation(),Q(this,`ca-navigate`,{round:e.detail.index===null?null:e.detail.index+1})}} @cae-section-shown=${e=>{e.stopPropagation(),this.shown=e.detail.index}} @cae-load-earlier=${t=>{t.stopPropagation(),this.stream&&e.loadEarlier(this.client??a({baseUrl:this.baseUrl}),this.run,this.stream)}}></cae-transcript>`)}updated(){let{rounds:e}=this.sections(),t=`${this.feed.version}|${this.shown}|${e.length}|${this.rows.length}`;t!==this.lastSent&&(this.lastSent=t,Q(this,`ca-rounds`,{launches:this.feed.model.rounds.map(e=>e.launch),shown:this.shown,rounds:e},{bubbles:!1}))}revealWebSearch(e,t=0){let n=this.feed.model.rounds.flatMap(e=>e.items).filter(t=>t.type===`tool`&&t.query===e)[t],r=n&&this.view?this.view.reveal(n.id):-1;if(!(r<0))return{round:r===this.feed.model.rounds.length-1?null:r+1}}};U([P({attribute:!1})],Af.prototype,`events`,void 0),U([P()],Af.prototype,`run`,void 0),U([P({attribute:!1})],Af.prototype,`stream`,void 0),U([P({attribute:`base-url`})],Af.prototype,`baseUrl`,void 0),U([P({attribute:!1})],Af.prototype,`client`,void 0),U([P({type:Boolean})],Af.prototype,`live`,void 0),U([P({attribute:!1})],Af.prototype,`round`,void 0),U([P({attribute:!1})],Af.prototype,`rows`,void 0),U([P({reflect:!0})],Af.prototype,`mode`,void 0),U([F()],Af.prototype,`shown`,void 0),U([xn(`cae-transcript`)],Af.prototype,`view`,void 0),Af=U([N(`ca-transcript`),D()],Af);var jf=e=>C(e.io)||e.rows.some(C),Mf=e=>!jf(e)&&(!!e.stream||e.launches.length>0||e.rows.some(f)),Nf=e=>e.live?`running`:e.outcomes.get(e.detail.key)?.outcome??p(void 0,e.detail.rows),Pf=(e,t)=>e.detail.io.upstream.find(e=>e.outputs.some(e=>e.path===t)),Ff=e=>t=>{let n=Pf(e,t);if(!n)return;let r=n.outputs.find(e=>e.path===t);return{name:q(n),written:!!r?.file.exists,outcome:e.outcomes.get(n.key)?.outcome}},If=e=>Xo((e.rounds||1)-1),Lf=(e,t)=>k`<a class="lnk" href="#" @click=${n=>{n.preventDefault(),Q(e.host,`ca-open-task`,{key:t.key})}}>${q(t)}</a>`,Rf=new Set([`key`,`rows`,`launches`,`stream`,`task_detail_error`,`definition`,`io`,`row_extras`]);function zf(e){for(let t=e.launches.length-1;t>=0;t--){let n=e.launches[t],r=n?df(n).model:``;if(r)return r}return``}function Bf(e){let t=[...new Set(e.flatMap(e=>[...(e.hops??[]).map(e=>e.credential),e.credential]).filter(e=>!!e))];if(!t.length)return[];let n=[E(`Account or API key the coding agent used (credential)`),...t.map(rs)].filter(Boolean).join(`
727
- `);return[{label:E(`identity`),value:Mo(t.map(ns)),tip:n,look:`quiet`}]}function Vf(e,t,n=``,r={}){let i=t===`output`?k`${Uc(e.status)}${(e.rounds??0)>1?k` <span class="meta" title=${Ds()}>${Os(e.rounds,e.status===`valid`)}</span>`:j}`:Hc(e),a=k`<div class="io-hd">${r.chip??i}<span class="jmono ct-path" title=${e.path}>${w(e.path,n)}</span></div>${r.origin?k`<div class="meta io-from">${r.origin}</div>`:j}`;if(t===`output`&&e.status===`refused`)return k`<div class="io-card one">${a}<div class="meta">${ks(e,n,r.producerOf)}</div></div>`;if(t===`output`&&e.status===`failed`&&!e.file.exists)return k`<div class="io-card one">${a}</div>`;let o=e.errors??[];return k`<div class="io-card">
763
+ <span class="r">${T(`Custom view`)}</span></h3>
764
+ ${e?.description?O`<div class="meta desc">${e.description}</div>`:A}
765
+ ${ge(this.data)?O`<ca-panel-body .body=${this.data}></ca-panel-body>`:O`<cae-json-tree .value=${this.data}></cae-json-tree>`}
766
+ </section>`}};H([N()],Df.prototype,`name`,void 0),H([N({attribute:!1})],Df.prototype,`panel`,void 0),H([N({attribute:!1})],Df.prototype,`data`,void 0),Df=H([M(`ca-panel-view`),E()],Df);var Of=class{constructor(e){this.host=e,this.value=null,this.error=null,this.token=0}load(e,t,n){let r=++this.token;this.value=null,this.error=null,t&&n&&e&&this.fetch(r,e,t,n)}async fetch(e,t,n,r){let i,a=null;try{i=await t.task(n,r)}catch(e){i=(e=>({key:e,rows:[],launches:[],definition:null,io:{params:{},inputs:[],outputs:[],executor:`agent`,upstream:[],downstream:[]},stream:null}))(r),a=e}e===this.token&&(this.value=i,this.error=a,this.host.requestUpdate())}};function kf(e){let t=[],n=!1;for(let r of(e||``).split(`
767
+ `))/^Errors:\s*$/.test(r)?n=!0:n&&r.startsWith(`- `)?t.push(r.slice(2)):n&&r.trim()&&!r.startsWith(`- `)&&(n=!1);return t}R(`cae-transcript`,Jo);var Af=e=>!!e&&(e.prompt||``).startsWith(`The output file(s) you wrote do not pass their checks.`);function jf(e,t){let n=new Map(t.filter(e=>e.stop!==`invalid_input`&&e.stop!==`skipped`).map((e,t)=>[t+1,e])),r=[],i=0,a=0,o=0;return e.forEach((e,t)=>{let s=n.get(i)?.hops?.length??1;t>0&&Af(e)?a++:t>0&&o+1<s?(o++,a=0):(i++,o=0,a=0);let c=n.get(i)?.hops?.[o],l=c?.model||c?.route||``,u=a?`fixup`:o?`switch`:`try`;r.push({kind:u,tryNo:i,fixupNo:a,hopNo:o,model:l,result:null,rejectedWith:[],switchedStop:``,switchedTo:``,row:null})}),r.forEach((t,i)=>{let a=r[i+1];if(a&&a.tryNo===t.tryNo&&a.hopNo!==t.hopNo)return t.result=`switched`,t.switchedStop=n.get(t.tryNo)?.hops?.[t.hopNo]?.stop??``,void(t.switchedTo=a.model);if(a&&a.tryNo===t.tryNo)return t.result=`rejected`,void(t.rejectedWith=kf(e[i+1]?.prompt));let o=n.get(t.tryNo)??null;t.row=o,t.result=o?o.ok?`ok`:`failed`:null}),r}var Mf=e=>/\[([\w.-]+)\]/.exec(e)?.[1]??``;function Nf(e){let t=/\[([\w.-]+)\]\s*(.*)$/.exec(e);return t?`${t[1]}: ${t[2]}`:e}function Pf(e,t,n=gs(e.tryNo-1)){return t>1?e.fixupNo?K(n,T(w`correction ${e.fixupNo}`)):e.hopNo?K(n,T(`model switch`)):n:e.fixupNo?T(w`Correction ${e.fixupNo}`):e.hopNo?T(`Model switch`):gs(0)}function Ff(e){let t=e.model||T(`model`);return e.switchedTo?T(w`${t}: ${Z(e.switchedStop)} → ${e.switchedTo}`):T(w`${t}: ${Z(e.switchedStop)} → next model`)}var If={claude:`Claude Code`,omp:`omp`,codex:`Codex`,opencode:`opencode`,gemini:`Gemini CLI`};function Lf(e){let t=String(e||``).split(`/`).pop()??``;return If[t]??t}var Rf=(e,t)=>{let n=e.indexOf(t);return n>=0?e[n+1]??``:``};function zf(e){let t=e.argv,n=/TELEMETRY [^\n]*role=([\w:-]+)/.exec(e.prompt||``)?.[1];return{agent:Lf(t[0]),model:Rf(t,`--model`)||Rf(t,`-m`),role:n&&n!==`-`?n:``}}function Bf(e){if(!e)return[];let t=[];return e.agent&&t.push({label:T(`coding agent`),value:e.agent,tip:T(`The CLI that ran the task (claude, omp)`)}),e.model&&t.push({label:T(`model`),value:e.model,tip:T(`The model the agent session ran on`),look:`mono`}),e.role&&t.push({label:T(`role`),value:e.role,tip:T(`The agent definition the coding agent ran as (agents/<role>.md)`),look:`quiet`}),t}function Vf(e){let t=e.prompt||``,n=e.prompt_truncated||0;return[{id:`cmd`,code:!0,summary:T(`Command line`),text:e.argv.join(` `)},{id:`prompt`,summary:T(n?w`Prompt (${t.length} characters; ${n} characters not saved)`:w`Prompt (${t.length} characters)`),text:t+(n?`\n\n${T(w`(${n} characters not saved)`)}`:``)}]}function Hf(e,t){if(e.result===`rejected`)return{tone:`attention`,title:T(`Output failed checks`),list:e.rejectedWith.map(e=>C(e,t)),note:T(`Sent in the correction prompt`)};if(e.result===`switched`)return{tone:`failed`,title:Ff(e)};if(e.result===`failed`&&e.row){let n=C(e.row.reason,t)||Z(e.row.stop);return{tone:`failed`,title:T(w`Attempt ${e.tryNo} failed: ${n}`)}}}function Uf(e,t,n){let r=t[t.length-1]?.tryNo??1,i=_s(n.rows.filter(f)),a=e.rounds.length-1;return e.rounds.map((e,o)=>{let s=t[o],[c,l,u]=s?function(e,t){switch(e.result){case`ok`:return[`✓`,T(`passed`),T(`Output passed checks`)];case`rejected`:return[`✕`,T(`failed checks`),T(`Output failed checks`)];case`switched`:return[`✕`,Z(e.switchedStop),Ff(e)];case`failed`:return[`✕`,T(`failed`),C(e.row?.reason,t)||Z(e.row?.stop)];default:return[``,``,``]}}(s,n.run):[``,``,``],d=e.who?.model;return{id:e.id,title:s?Pf(s,r,i[s.tryNo-1]):String(o+1),facts:d?[d.replace(/^claude-/,``)]:[],verdict:c?{tone:c===`✓`?`done`:`failed`,text:l,tip:u}:void 0,active:o===a&&n.active,tags:e.launch?Bf(e.who):[],details:e.launch?Vf(e.launch):[],items:e.items.map(e=>e.type===`event`?{...e,title:T(`API request sent again`)}:e),footer:s&&Hf(s,n.run)}})}var Wf=/\{\s*"title"\s*:\s*"((?:[^"\\]|\\.)*)"\s*,\s*"url"\s*:\s*"(https?:\/\/[^"\s]+)"/g,Gf=/^\s*\[\d+\]\s+(.+)\n\s*(https?:\/\/\S+)/gm,Kf=/https?:\/\/[^\s"'<>)\]]+/g;function qf(e){let t=e??``,n=[],r=new Set,i=(e,t)=>{r.has(t)||n.length>=20||(r.add(t),n.push({title:e.trim()||t,url:t}))};for(let e of t.matchAll(Wf)){let t=e[1]??``;try{t=JSON.parse(`"${t}"`)}catch{}i(t,e[2]??``)}if(!n.length)for(let e of t.matchAll(Gf))i(e[1]??``,e[2]??``);if(!n.length)for(let e of t.matchAll(Kf))i(``,e[0].replace(/[.,;:!?]+$/,``));return n}var Jf=()=>({rounds:[],tools:new Map,next:0}),Yf=/session init:.*?model=([\w.\-:]+)/;function Xf(e){return`i`+e.next++}function Zf(e,t){let n={id:`r${e.rounds.length}`,launch:t,who:t?zf(t):null,items:[]};return e.rounds.push(n),n}function Qf(e){return e.rounds[e.rounds.length-1]??Zf(e,null)}function $f(e,t){t?e.name=t:e.name||=`tool`,e.icon=(e.name.split(/[_:]/).pop()??``).toLowerCase()}function ep(e,t,n){let r=n?e.tools.get(n):void 0;return r||(r={type:`tool`,id:n?`call:${n}`:Xf(e),call:n,name:``,icon:``,summary:``,intent:``,body:``,output:null,status:`running`},n&&e.tools.set(n,r),t.items.push(r)),r}function tp(e,t){let n=0;for(let i of t){let t=r(i);if(!t)continue;if(t.type===`launch`){Zf(e,t),n++;continue}let a=Qf(e);switch(t.type){case`message_start`:case`message_end`:if(t.role!==`user`||!t.text)continue;a.items.push({type:`prompt`,id:Xf(e),text:t.text});break;case`turn_end`:if(!t.thinking)continue;a.items.push({type:`reasoning`,id:Xf(e),text:t.thinking});break;case`acall`:case`tool_execution_start`:case`tool_execution_update`:{let n=ep(e,a,t.call);n.output===null?($f(n,t.tool),n.summary=ts(t.cmd),n.intent=t.intent||``,n.body=t.cmd||n.body,t.web_query&&(n.query=t.web_query),t.web_fetch&&(n.page=t.web_fetch)):!n.summary&&t.cmd&&(n.summary=ts(t.cmd));break}case`aresult`:case`tool_execution_end`:{let n=ep(e,a,t.call);if(n.output!==null&&!t.out)break;$f(n,t.tool),n.status=t.err?`error`:`ok`,!n.summary&&n.body&&(n.summary=ts(n.body)),n.output=t.out||`(no output)`,n.query&&(n.links=qf(n.output));break}case`message_update`:{if(!t.delta)continue;let n=a.items[a.items.length-1];n?.type===`message`?n.text+=t.delta:a.items.push({type:`message`,id:Xf(e),text:t.delta});break}case`auto_retry_start`:a.items.push({type:`event`,id:Xf(e),icon:`↻`,title:``,text:t.err??``});break;case`notice`:{let n=Yf.exec(t.text||``)?.[1];n&&(a.who??={agent:``,model:``,role:``},a.who.model||(a.who.model=n)),a.items.push({type:`notice`,id:Xf(e),text:(t.text||``).replace(/\s+/g,` `).trim()});break}}n++}return n}var np=class{constructor(e){this.host=e,this.model=Jf(),this.behind=0,this.count=0,this.ready=!1,this.version=0,this.generation=0,this.loaded=``,this.close=null,e.addController(this)}get tailing(){return this.close!==null}hostDisconnected(){this.stop(),this.loaded=``}stop(){this.close?.(),this.close=null}load(e,t){if(this.stop(),this.loaded=e,this.generation++,this.version++,this.model=Jf(),this.behind=0,this.count=0,this.ready=!1,t&&`events`in t)this.count=tp(this.model,t.events),this.ready=!0;else if(t){let e=this.generation;this.close=function(e,t,n,r={}){return s(`${l(r)}/events/stream?run=${c(e)}&key=${c(t)}`,[`stream`],{...n,message:e=>n.message(e.data)},r)}(t.run,t.stream,{message:t=>this.onPage(t,e)},{baseUrl:t.baseUrl})}}append(e){e.length&&(this.count+=tp(this.model,e),this.version++)}onPage(e,t){t===this.generation&&(!this.ready&&e.behind&&(this.behind=e.behind),this.count+=tp(this.model,e.events),this.ready=!0,this.version++,this.host.requestUpdate())}async loadEarlier(e,t,n){let r=this.generation,i=Math.max(0,this.behind-3e3);this.behind=0,this.host.requestUpdate();let a=await e.stream(t,n,i);r===this.generation&&(this.model=Jf(),tp(this.model,a.events),this.version++,this.host.requestUpdate())}};function rp(e){return O`<cae-markdown .text=${e} .split=${gf} .strings=${{showRendered:T(`Show rendered`),showSource:T(`Show source`)}}></cae-markdown>`}R(`cae-markdown`,na);var ip=class extends j{constructor(...e){super(...e),this.events=null,this.run=``,this.stream=null,this.baseUrl=``,this.client=null,this.live=!1,this.round=null,this.rows=[],this.mode=`full`,this.shown=-1,this.feed=new np(this),this.memory=null,this.drawn=null,this.lastSent=``,this.fed=null}static{this.styles=D` :host{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;position:relative;}:host([mode='none']){display:none;}:host([mode='tabs']){flex:none;}`}get source(){return this.events?`static`:this.run&&this.stream?`${this.run}\n${this.stream}`:``}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this.requestUpdate()}willUpdate(e){let t=this.source;if(!e.has(`events`)&&t===this.feed.loaded)return;let n=this.fed,r=this.events;if(this.fed=r,r&&n&&t===this.feed.loaded&&function(e,t){if(e===t||e.length<t.length)return e===t;for(let n=t.length-1;n>=0;n--)if(e[n]!==t[n])return!1;return!0}(r,n))return void this.feed.append(r.slice(n.length));let{run:i,stream:a}=this,o=`transcript:${i}/${a??``}`,s=Xn(this),c=s===Kn?new Qn(`${o}:open`):new Zn(`${o}:open`,this),l=!this.events&&!!a;this.memory={isOpen:e=>c.has(e),setOpen:(e,t)=>c.set(e,t),scroll:()=>l?s.recall(`${o}:scroll`):void 0,setScroll:e=>l&&s.remember(`${o}:scroll`,e)},this.shown=-1,this.feed.load(t,this.events?{events:this.events}:t&&a?{run:i,stream:a,baseUrl:this.baseUrl}:null)}sections(){let e=this.live&&this.feed.tailing,t=[this.feed.version,this.rows,this.run,e,F()];if(this.drawn?.key.every((e,n)=>e===t[n]))return this.drawn;let n=this.feed.model,r=jf(n.rounds.map(e=>e.launch),this.rows);return this.drawn={key:t,rounds:r,sections:Uf(n,r,{run:this.run,rows:this.rows,active:e})},this.drawn}render(){let e=this.feed,{sections:t}=this.sections();return wo(e.generation,O`<cae-transcript .sections=${t} .shown=${this.round===null?null:this.round-1} ?live=${this.live} .earlier=${e.behind} ?loading=${!e.ready} .count=${e.count} mode=${this.mode} .memory=${this.memory} .markdown=${$i} .renderDetail=${e=>rp(e.text)} .strings=${{sections:T(`Agent sessions`),sectionsTip:[`${T(`Retry`)}: ${hs()}`,`${T(`Correction`)}: ${Ys()}`,`${T(`Model switch`)}: ${Ws()}`].join(`
768
+ `),loadEarlier:e=>T(e===1?`Show 1 earlier line`:w`Show ${e} earlier lines`),newBelow:e=>T(e===1?`Show 1 new event`:w`Show ${e} new events`),newInLatest:e=>T(e===1?`Show 1 new event in the running agent session`:w`Show ${e} new events in the running agent session`),prompt:T(`Prompt`),assistant:T(`Assistant`),reasoning:T(`Reasoning`),characters:e=>T(w`${e} characters`),tool:T(`tool`),results:e=>T(e===1?`1 result`:w`${e} results`),done:T(`done`,{id:`tool-done`}),failed:T(`failed`),running:T(`running`),interrupted:T(`interrupted`),interruptedTip:T(`The run ended before the tool call returned`),query:T(`query`),page:T(`page`),fullText:T(`Full text`),showAll:e=>T(w`Show all (${e} characters)`),showLess:T(`Show less`)}} @cae-section-change=${e=>{e.stopPropagation(),Q(this,`ca-navigate`,{round:e.detail.index===null?null:e.detail.index+1})}} @cae-section-shown=${e=>{e.stopPropagation(),this.shown=e.detail.index}} @cae-load-earlier=${t=>{t.stopPropagation(),this.stream&&e.loadEarlier(this.client??a({baseUrl:this.baseUrl}),this.run,this.stream)}}></cae-transcript>`)}updated(){let{rounds:e}=this.sections(),t=`${this.feed.version}|${this.shown}|${e.length}|${this.rows.length}`;t!==this.lastSent&&(this.lastSent=t,Q(this,`ca-rounds`,{launches:this.feed.model.rounds.map(e=>e.launch),shown:this.shown,rounds:e},{bubbles:!1}))}revealWebSearch(e,t=0){let n=this.feed.model.rounds.flatMap(e=>e.items).filter(t=>t.type===`tool`&&t.query===e)[t],r=n&&this.view?this.view.reveal(n.id):-1;if(!(r<0))return{round:r===this.feed.model.rounds.length-1?null:r+1}}};H([N({attribute:!1})],ip.prototype,`events`,void 0),H([N()],ip.prototype,`run`,void 0),H([N({attribute:!1})],ip.prototype,`stream`,void 0),H([N({attribute:`base-url`})],ip.prototype,`baseUrl`,void 0),H([N({attribute:!1})],ip.prototype,`client`,void 0),H([N({type:Boolean})],ip.prototype,`live`,void 0),H([N({attribute:!1})],ip.prototype,`round`,void 0),H([N({attribute:!1})],ip.prototype,`rows`,void 0),H([N({reflect:!0})],ip.prototype,`mode`,void 0),H([P()],ip.prototype,`shown`,void 0),H([Sn(`cae-transcript`)],ip.prototype,`view`,void 0),ip=H([M(`ca-transcript`),E()],ip);var ap=e=>S(e.io)||e.rows.some(S),op=e=>!ap(e)&&(!!e.stream||e.launches.length>0||e.rows.some(f)),sp=e=>e.live?`running`:e.outcomes.get(e.detail.key)?.outcome??p(void 0,e.detail.rows),cp=(e,t)=>e.detail.io.upstream.find(e=>e.outputs.some(e=>e.path===t)),lp=e=>t=>{let n=cp(e,t);if(!n)return;let r=n.outputs.find(e=>e.path===t);return{name:q(n),written:!!r?.file.exists,outcome:e.outcomes.get(n.key)?.outcome}},up=e=>vs((e.rounds||1)-1),dp=(e,t)=>O`<a class="lnk" href="#" @click=${n=>{n.preventDefault(),Q(e.host,`ca-open-task`,{key:t.key})}}>${q(t)}</a>`,fp=new Set([`key`,`rows`,`launches`,`stream`,`task_detail_error`,`definition`,`io`,`row_extras`]);function pp(e){for(let t=e.launches.length-1;t>=0;t--){let n=e.launches[t],r=n?zf(n).model:``;if(r)return r}return``}function mp(e){let t=[...new Set(e.flatMap(e=>[...(e.hops??[]).map(e=>e.credential),e.credential]).filter(e=>!!e))];if(!t.length)return[];let n=[T(`Account or API key the coding agent used (credential)`),...t.map(Ts)].filter(Boolean).join(`
769
+ `);return[{label:T(`identity`),value:es(t.map(ws)),tip:n,look:`quiet`}]}function hp(e,t,n=``,r={}){let i=t===`output`?O`${pl(e.status)}${(e.rounds??0)>1?O` <span class="meta" title=${Ys()}>${Xs(e.rounds,e.status===`valid`)}</span>`:A}`:fl(e),a=O`<div class="io-hd">${r.chip??i}<span class="jmono ct-path" title=${e.path}>${C(e.path,n)}</span></div>${r.origin?O`<div class="meta io-from">${r.origin}</div>`:A}`;if(t===`output`&&e.status===`refused`)return O`<div class="io-card one">${a}<div class="meta">${Zs(e,n,r.producerOf)}</div></div>`;if(t===`output`&&e.status===`failed`&&!e.file.exists)return O`<div class="io-card one">${a}</div>`;let o=e.errors??[];return O`<div class="io-card">
728
770
  ${a}
729
- ${qc(e,t)}
730
- ${Wc(e)}
731
- ${o.length?k`<h4>${E(`Errors`)}</h4><pre class="ct-err">${o.map(e=>w(e,n)).join(`
732
- `)}</pre>`:j}
733
- </div>`}var Hf=e=>!e.file.exists||e.status!=null&&e.status!==`valid`,Uf=e=>Zr({text:Fo(e),tone:Ho(e),mark:Wo(e)}),Wf=O` :host{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;position:relative;container-type:inline-size;}.taskmeta{flex:none;background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin-bottom:8px;color:var(--text-2);}.tm-head{display:flex;gap:12px;align-items:center;}.tm-av{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;font-size:16px;flex:none;background:var(--agent-bg);color:var(--agent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--agent) 35%,transparent);}.tm-av.py{background:var(--raise);color:var(--text-muted);box-shadow:none;}.tm-name{font-size:15px;font-weight:600;color:var(--text);display:flex;gap:8px;align-items:center;}.verdict{font-size:12.5px;color:var(--text);margin-top:2px;}.verdict[data-tone='failed'],.verdict[data-tone='attention']{color:var(--tone);}.verdict[data-tone='muted']{color:var(--text-muted);}.whos{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;}.runchips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;}.spend{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:6px;font-size:12px;color:var(--text-muted);font-variant-numeric:tabular-nums;}.spend b{color:var(--text);font-weight:600;}.spend.quota{flex-direction:column;gap:0;}.usage-wrap{overflow-x:auto;margin:4px 0 12px;}.usage{width:auto;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums;}.usage th{text-align:right;font-weight:600;color:var(--text-muted);font-size:10.5px;white-space:nowrap;padding:6px 14px;border-bottom:1px solid var(--line2);vertical-align:bottom;}.usage td{text-align:right;padding:8px 14px;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:baseline;}.usage th:first-child,.usage td:first-child{padding-left:4px;}.usage td.l.jmono{font-size:12px;}.usage td.l:not(:first-child):not(.jmono){white-space:normal;min-width:12ch;}.usage th.l,.usage td.l{text-align:left;}.usage tr.hop td{padding-top:4px;padding-bottom:4px;color:var(--text-muted);}.usage tr.hop td:first-child{padding-left:28px;}.runchip{font-size:11px;padding:2px 9px;border-radius:999px;border:1px solid var(--line2);color:var(--text-2);}.runchip.ok>[aria-hidden]{color:var(--status-done);font-weight:700;}.runchip.part{border-color:color-mix(in srgb,var(--status-attention) 45%,transparent);background:var(--status-attention-bg);}.runchip.part>[aria-hidden]{color:var(--status-attention);font-weight:700;}.runchip.bad{border-color:color-mix(in srgb,var(--status-failed) 45%,transparent);color:var(--status-failed);background:var(--status-failed-bg);}.io-fold{margin-top:6px;}.io-fold>summary,.launch>summary{cursor:pointer;color:var(--text-muted);}.searches{margin:4px 0 0;padding-left:22px;}.unread{color:var(--status-attention);margin-top:4px;}.qlink{background:none;border:0;padding:0;color:var(--accent);cursor:pointer;text-align:left;font:inherit;}.qlink:hover{text-decoration:underline;}.tviews{flex:none;display:flex;flex-wrap:wrap;gap:4px;margin:2px 0 8px;border-bottom:1px solid var(--line);}@container (max-width:480px){.tviews{gap:0;}.tview{padding:6px 10px;}}.tview{background:none;border:0;border-bottom:2px solid transparent;color:var(--text-muted);padding:6px 14px;cursor:pointer;}.tview:hover{color:var(--text-2);}.tview.sel{color:var(--text);border-bottom-color:var(--accent);}.tview .badge{margin-left:6px;font-size:10px;padding:0 6px;border-radius:999px;background:var(--raise);color:var(--text-2);}.pane{flex:1 1 auto;min-height:0;overflow:auto;position:relative;}.upstream{margin-bottom:12px;}.up-hd{display:flex;align-items:center;gap:10px;margin:2px 0 6px;}.down{display:flex;flex-wrap:wrap;gap:8px;}.notrans{flex:1 1 auto;border:1px solid var(--line);border-radius:14px;}details.upstream>summary{cursor:pointer;list-style:none;}details.upstream>summary::-webkit-details-marker{display:none;}.params td{vertical-align:top;}.from{color:var(--text-muted);white-space:nowrap;}`,Gf=class extends M{constructor(...e){super(...e),this.baseUrl=``,this.run=``,this.taskKey=null,this.view=`transcript`,this.round=null,this.live=!1,this.journal=[],this.plan=null,this.exported=!1,this.replayMarks=!1,this.detail=new $d(this),this.launches=[],this.shownRound=-1,this.rounds=[],this.outcomes=new Map}static{this.styles=[V,Yc,So,zu,Wf]}willUpdate(e){(e.has(`run`)||e.has(`taskKey`)||e.has(`client`))&&(this.detail.load(this.client,this.run,this.taskKey),this.launches=[],this.shownRound=-1,this.rounds=[]),this.outcomes=this.plan?S(this.journal,this.plan).outcomes:new Map}shownView(e){return this.view===`transcript`&&jf(e)&&!e.stream?`output`:this.view}revealSearch(e,t){let n=this.transcriptEl?.revealWebSearch(e,t);Q(this,`ca-navigate`,n?{view:`transcript`,round:n.round}:{view:`transcript`})}render(){let e=this.taskKey;if(!e)return k`<div class="blank"><span class="ic" aria-hidden="true">✦</span><b>${E(`No task selected`)}</b></div>`;let t=this.detail.value;if(!t)return k`<div class="taskmeta meta"><strong>${e}</strong> ${E(`Loading…`)}</div>`;let n={host:this,run:this.run,detail:t,live:t.launches.length>0&&this.live,journal:this.journal,plan:this.plan,outcomes:this.outcomes,launches:this.launches,shownRound:this.shownRound,rounds:this.rounds,exported:this.exported,replayMarks:this.replayMarks},r=this.shownView(t);return k`${function(e,t,n){let r=e.detail,i=e.live,{rows:a,launches:o}=r,s=jf(r),c=Mf(r),l=a.slice().sort((e,t)=>String(e.ts).localeCompare(String(t.ts))),d=l[l.length-1],p=o[0],m={agent:lf(p?.cmd?p.cmd.split(` `)[0]:d?.agent),model:p?.model||d?.model||zf(e),role:p?.role||``},h=c?[...new Set(l.map(e=>e.model).filter(e=>!!e&&e!==m.model))]:[],g=a[0],_=a.filter(f),v=Object.entries(r).filter(([e])=>!Rf.has(e)),[y,b]=function(e){let t=e.detail.rows,n=t.filter(f),r=t[t.length-1],i=Nf(e);switch(i){case`running`:return[E(`Running`),`neutral`];case`waiting`:{let t=e.plan?.nodes.find(t=>t.key===e.detail.key),n=t?.deferred?ys(t.deferred_cause,t.deferred,u(e.plan,t.deferred_cause)):``;return n?[E(T`Not run: ${n}`),`attention`]:[E(`Waiting`),`muted`]}case`skipped`:return[E(`Skipped`),`muted`];case`not_started`:{let t=function(e){let t=e.detail,n=Ko(e.outcomes.get(t.key)??{attempts:t.rows,cause:null},e.outcomes,e.run,t=>Pf(e,t)?.key);if(n)return n;let r=ze(t.rows[t.rows.length-1]?.reason)[0],i=r?Pf(e,r.path):void 0;return r?Go(w(r.path,e.run),r.problem,i?{name:q(i)}:void 0):``}(e);return[E(t?T`Not started: ${t}`:`Not started`),`attention`]}case`partial`:{let t=w(r?.reason,e.run);return[E(t?T`Partly done: ${t}`:`Partly done`),`attention`]}case`failed`:{let t=w(r?.reason,e.run)||Z(r?.stop);return[n.length>1?E(T`Failed on all ${n.length} attempts: ${t}`):E(T`Failed: ${t}`),`failed`]}}if(!r)return[Fo(i),`neutral`];let a=n.filter(e=>!e.ok);if(a.length){let t=w(a[0]?.reason,e.run)||Z(a[0]?.stop);return[a.length===1?E(T`Done on attempt ${n.length} | 1 failed attempt | first failure: ${t}`):E(T`Done on attempt ${n.length} | ${a.length} failed attempts | first failure: ${t}`),`neutral`]}let o=(r.rounds||1)-1+(r.hook_errors??[]).length;if(o>0){let t=[...(r.hook_errors??[]).flat(),...(r.round_errors??[]).flat(),...e.rounds.flatMap(e=>e.rejectedWith)],n=t[0]?af(w(t[0],e.run)):``;return n?[E(o===1?T`Done after 1 correction | first failed check: ${n}`:T`Done after ${o} corrections | first failed check: ${n}`),`neutral`]:[E(o===1?`Done after 1 correction`:T`Done after ${o} corrections`),`neutral`]}let s=ws(r.hops,null,r.skipped_hops);return s?[E(T`Done after a model switch: ${s}`),`neutral`]:[E(`Done`),`neutral`]}(e),x=E(s?`Python task`:`Agent task`),S=e.plan?.nodes.find(e=>e.key===r.key);return k`<div class="taskmeta">
771
+ ${yl(e,t)}
772
+ ${hl(e)}
773
+ ${o.length?O`<h4>${T(`Errors`)}</h4><pre class="ct-err">${o.map(e=>C(e,n)).join(`
774
+ `)}</pre>`:A}
775
+ </div>`}var gp=e=>!e.file.exists||e.status!=null&&e.status!==`valid`,_p=e=>Qr({text:rs(e),tone:us(e),mark:fs(e)}),vp=D` :host{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;position:relative;container-type:inline-size;}.taskmeta{flex:none;background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin-bottom:8px;color:var(--text-2);}.tm-head{display:flex;gap:12px;align-items:center;}.tm-av{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;font-size:16px;flex:none;background:var(--agent-bg);color:var(--agent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--agent) 35%,transparent);}.tm-av.py{background:var(--raise);color:var(--text-muted);box-shadow:none;}.tm-name{font-size:15px;font-weight:600;color:var(--text);display:flex;gap:8px;align-items:center;}.verdict{font-size:12.5px;color:var(--text);margin-top:2px;}.verdict[data-tone='failed'],.verdict[data-tone='attention']{color:var(--tone);}.verdict[data-tone='muted']{color:var(--text-muted);}.whos{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;}.runchips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;}.spend{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:6px;font-size:12px;color:var(--text-muted);font-variant-numeric:tabular-nums;}.spend b{color:var(--text);font-weight:600;}.spend.quota{flex-direction:column;gap:0;}.usage-wrap{overflow-x:auto;margin:4px 0 12px;}.usage{width:auto;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums;}.usage th{text-align:right;font-weight:600;color:var(--text-muted);font-size:10.5px;white-space:nowrap;padding:6px 14px;border-bottom:1px solid var(--line2);vertical-align:bottom;}.usage td{text-align:right;padding:8px 14px;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:baseline;}.usage th:first-child,.usage td:first-child{padding-left:4px;}.usage td.l.jmono{font-size:12px;}.usage td.l:not(:first-child):not(.jmono){white-space:normal;min-width:12ch;}.usage th.l,.usage td.l{text-align:left;}.usage tr.hop td{padding-top:4px;padding-bottom:4px;color:var(--text-muted);}.usage tr.hop td:first-child{padding-left:28px;}.runchip{font-size:11px;padding:2px 9px;border-radius:999px;border:1px solid var(--line2);color:var(--text-2);}.runchip.ok>[aria-hidden]{color:var(--status-done);font-weight:700;}.runchip.part{border-color:color-mix(in srgb,var(--status-attention) 45%,transparent);background:var(--status-attention-bg);}.runchip.part>[aria-hidden]{color:var(--status-attention);font-weight:700;}.runchip.bad{border-color:color-mix(in srgb,var(--status-failed) 45%,transparent);color:var(--status-failed);background:var(--status-failed-bg);}.io-fold{margin-top:6px;}.io-fold>summary,.launch>summary{cursor:pointer;color:var(--text-muted);}.searches{margin:4px 0 0;padding-left:22px;}.unread{color:var(--status-attention);margin-top:4px;}.qlink{background:none;border:0;padding:0;color:var(--accent);cursor:pointer;text-align:left;font:inherit;}.qlink:hover{text-decoration:underline;}.tviews{flex:none;display:flex;flex-wrap:wrap;gap:4px;margin:2px 0 8px;border-bottom:1px solid var(--line);}@container (max-width:480px){.tviews{gap:0;}.tview{padding:6px 10px;}}.tview{background:none;border:0;border-bottom:2px solid transparent;color:var(--text-muted);padding:6px 14px;cursor:pointer;}.tview:hover{color:var(--text-2);}.tview.sel{color:var(--text);border-bottom-color:var(--accent);}.tview .badge{margin-left:6px;font-size:10px;padding:0 6px;border-radius:999px;background:var(--raise);color:var(--text-2);}.pane{flex:1 1 auto;min-height:0;overflow:auto;position:relative;}.upstream{margin-bottom:12px;}.up-hd{display:flex;align-items:center;gap:10px;margin:2px 0 6px;}.down{display:flex;flex-wrap:wrap;gap:8px;}.notrans{flex:1 1 auto;border:1px solid var(--line);border-radius:14px;}details.upstream>summary{cursor:pointer;list-style:none;}details.upstream>summary::-webkit-details-marker{display:none;}.params td{vertical-align:top;}.from{color:var(--text-muted);white-space:nowrap;}`,yp=class extends j{constructor(...e){super(...e),this.baseUrl=``,this.run=``,this.taskKey=null,this.view=`transcript`,this.round=null,this.live=!1,this.journal=[],this.plan=null,this.exported=!1,this.replayMarks=!1,this.detail=new Of(this),this.launches=[],this.shownRound=-1,this.rounds=[],this.outcomes=new Map}static{this.styles=[B,xl,Wo,pd,vp]}willUpdate(e){(e.has(`run`)||e.has(`taskKey`)||e.has(`client`))&&(this.detail.load(this.client,this.run,this.taskKey),this.launches=[],this.shownRound=-1,this.rounds=[]),this.outcomes=this.plan?x(this.journal,this.plan).outcomes:new Map}shownView(e){return this.view===`transcript`&&ap(e)&&!e.stream?`output`:this.view}revealSearch(e,t){let n=this.transcriptEl?.revealWebSearch(e,t);Q(this,`ca-navigate`,n?{view:`transcript`,round:n.round}:{view:`transcript`})}render(){let e=this.taskKey;if(!e)return O`<div class="blank"><span class="ic" aria-hidden="true">✦</span><b>${T(`No task selected`)}</b></div>`;let t=this.detail.value;if(!t)return O`<div class="taskmeta meta"><strong>${e}</strong> ${T(`Loading…`)}</div>`;let n={host:this,run:this.run,detail:t,live:t.launches.length>0&&this.live,journal:this.journal,plan:this.plan,outcomes:this.outcomes,launches:this.launches,shownRound:this.shownRound,rounds:this.rounds,exported:this.exported,replayMarks:this.replayMarks},r=this.shownView(t);return O`${function(e,t,n){let r=e.detail,i=e.live,{rows:a,launches:o}=r,s=ap(r),c=op(r),l=a.slice().sort((e,t)=>String(e.ts).localeCompare(String(t.ts))),d=l[l.length-1],p=o[0],m={agent:Lf(p?.cmd?p.cmd.split(` `)[0]:d?.agent),model:p?.model||d?.model||pp(e),role:p?.role||``},h=c?[...new Set(l.map(e=>e.model).filter(e=>!!e&&e!==m.model))]:[],g=a[0],_=a.filter(f),ee=Object.entries(r).filter(([e])=>!fp.has(e)),[v,y]=function(e){let t=e.detail.rows,n=t.filter(f),r=t[t.length-1],i=sp(e);switch(i){case`running`:return[T(`Running`),`neutral`];case`waiting`:{let t=e.plan?.nodes.find(t=>t.key===e.detail.key),n=t?.deferred?Vs(t.deferred_cause,t.deferred,u(e.plan,t.deferred_cause)):``;return n?[T(w`Not run: ${n}`),`attention`]:[T(`Waiting`),`muted`]}case`skipped`:return[T(`Skipped`),`muted`];case`not_started`:{let t=function(e){let t=e.detail,n=ms(e.outcomes.get(t.key)??{attempts:t.rows,cause:null},e.outcomes,e.run,t=>cp(e,t)?.key);if(n)return n;let r=Be(t.rows[t.rows.length-1]?.reason)[0],i=r?cp(e,r.path):void 0;return r?ps(C(r.path,e.run),r.problem,i?{name:q(i)}:void 0):``}(e);return[T(t?w`Not started: ${t}`:`Not started`),`attention`]}case`partial`:{let t=r?.reason&&cs(r.reason)?Z(r.reason):C(r?.reason,e.run);return[T(t?w`Partly done: ${t}`:`Partly done`),`attention`]}case`failed`:{let t=C(r?.reason,e.run)||Z(r?.stop);return[n.length>1?T(w`Failed on all ${n.length} attempts: ${t}`):T(w`Failed: ${t}`),`failed`]}}if(!r)return[rs(i),`neutral`];let a=n.filter(e=>!e.ok);if(a.length){let t=C(a[0]?.reason,e.run)||Z(a[0]?.stop);return[a.length===1?T(w`Done on attempt ${n.length} | 1 failed attempt | first failure: ${t}`):T(w`Done on attempt ${n.length} | ${a.length} failed attempts | first failure: ${t}`),`neutral`]}let o=(r.rounds||1)-1+(r.hook_errors??[]).length;if(o>0){let t=[...(r.hook_errors??[]).flat(),...(r.round_errors??[]).flat(),...e.rounds.flatMap(e=>e.rejectedWith)],n=t[0]?Nf(C(t[0],e.run)):``;return n?[T(o===1?w`Done after 1 correction | first failed check: ${n}`:w`Done after ${o} corrections | first failed check: ${n}`),`neutral`]:[T(o===1?`Done after 1 correction`:w`Done after ${o} corrections`),`neutral`]}let s=Ks(r.hops,null,r.skipped_hops);return s?[T(w`Done after a model switch: ${s}`),`neutral`]:[T(`Done`),`neutral`]}(e),b=T(s?`Python task`:`Agent task`),x=e.plan?.nodes.find(e=>e.key===r.key);return O`<div class="taskmeta">
734
776
  <div class="tm-head">
735
- ${Ru(s,x,`tm-av `+(s?`py`:``))}
777
+ ${fd(s,b,`tm-av `+(s?`py`:``))}
736
778
  <div style="min-width:0">
737
- <div class="tm-name" title=${t}>${g?q(g):S?q(S):t.replace(/^python:/,``)} ${i?Zr({text:E(`running`),tone:`running`}):j}</div>
738
- <div class="verdict" data-tone=${I(b)}>${y}</div>
739
- ${S?.claims?.length?k`<div class="meta" title=${Us()}>
740
- ${E(`Locks`)} ${S.claims.map(e=>Zr({text:e}))}
741
- </div>`:j}
742
- ${S?.priority?k`<div class="meta" title=${hc()}>${mc(S.priority)}</div>`:j}
743
- ${c?k`<div class="whos">
744
- ${xo([...ff(m),...Bf(_)])}
745
- ${h.length?k`<span class="meta">${E(h.length===1?T`Earlier attempts used model ${h[0]??``}`:T`Earlier attempts used models ${Mo(h)}`)}</span>`:j}
746
- </div>`:j}
747
- ${o.length?k`<div class="meta">${o.length===1?E(`1 agent session running`):E(T`${o.length} agent sessions running`)}</div>`:j}
748
- ${function(e,t){if(!e)return j;let n=function(e){let t=null;for(let n of e){let e=n.usage?.peak_context;e!=null&&(t===null||e>(t.usage?.peak_context??0))&&(t=n)}return t}(t),r=t.find(e=>e.context_warned);return k`<div class="spend">
749
- <b title=${E(`Reported by the coding agent`)}>${Y(e.cost)}</b>
750
- <span>${E(T`Tokens: ${J(e.input)} input, ${J(e.output)} output, ${J(e.cache_read)} cache read, ${J(e.cache_creation)} cache write`)}</span>
751
- <span>${e.calls===1?E(`1 API call`):E(T`${e.calls} API calls`)}</span>
752
- ${n?k`<span title=${_c()}>${vc(n)}</span>`:j}
753
- ${r?k`<span class="tone-text" data-tone="attention" title=${bc()}>${yc(r)}</span>`:j}
754
- </div>`}(De(a),_)}
755
- ${function(e,t){let n=Fe(e.journal.length?e.journal:t),r=t[0],i=t[t.length-1],a=r?Re(r,n).start:null;if(!a||!i)return j;let o=Re(i,n).next;return k`<div class="spend quota">
756
- <span title=${ls(a)}>${E(T`Usage at session start: ${cs(a)}`)}</span>
757
- ${o?k`<span title=${ls(o)}>${E(T`Usage after this task: ${cs(o)}`)}</span>`:j}
779
+ <div class="tm-name" title=${t}>${g?q(g):x?q(x):t.replace(/^python:/,``)} ${i?Qr({text:T(`running`),tone:`running`}):A}</div>
780
+ <div class="verdict" data-tone=${I(y)}>${v}</div>
781
+ ${x?.claims?.length?O`<div class="meta" title=${dc()}>
782
+ ${T(`Locks`)} ${x.claims.map(e=>Qr({text:e}))}
783
+ </div>`:A}
784
+ ${x?.priority?O`<div class="meta" title=${Rc()}>${Lc(x.priority)}</div>`:A}
785
+ ${x?.rerun?O`<div class="meta">${T(w`Ran again after a resume: ${x.rerun}`)}</div>`:A}
786
+ ${c?O`<div class="whos">
787
+ ${Uo([...Bf(m),...mp(_)])}
788
+ ${h.length?O`<span class="meta">${T(h.length===1?w`Earlier attempts used model ${h[0]??``}`:w`Earlier attempts used models ${es(h)}`)}</span>`:A}
789
+ </div>`:A}
790
+ ${o.length?O`<div class="meta">${o.length===1?T(`1 agent session running`):T(w`${o.length} agent sessions running`)}</div>`:A}
791
+ ${function(e,t){if(!e)return A;let n=function(e){let t=null;for(let n of e){let e=n.usage?.peak_context;e!=null&&(t===null||e>(t.usage?.peak_context??0))&&(t=n)}return t}(t),r=t.find(e=>e.context_warned);return O`<div class="spend">
792
+ <b title=${T(`Reported by the coding agent`)}>${Y(e.cost)}</b>
793
+ <span>${T(w`Tokens: ${J(e.input)} input, ${J(e.output)} output, ${J(e.cache_read)} cache read, ${J(e.cache_creation)} cache write`)}</span>
794
+ <span>${e.calls===1?T(`1 API call`):T(w`${e.calls} API calls`)}</span>
795
+ ${n?O`<span title=${Bc()}>${Vc(n)}</span>`:A}
796
+ ${r?O`<span class="tone-text" data-tone="attention" title=${Uc()}>${Hc(r)}</span>`:A}
797
+ </div>`}(Oe(a),_)}
798
+ ${function(e,t){let n=Ie(e.journal.length?e.journal:t),r=t[0],i=t[t.length-1],a=r?ze(r,n).start:null;if(!a||!i)return A;let o=ze(i,n).next;return O`<div class="spend quota">
799
+ <span title=${js(a)}>${T(w`Usage at session start: ${As(a)}`)}</span>
800
+ ${o?O`<span title=${js(o)}>${T(w`Usage after this task: ${As(o)}`)}</span>`:A}
758
801
  </div>`}(e,_)}
759
802
  </div>
760
803
  </div>
761
- ${_.length?k`<div class="runchips">${Yo(_).map((t,n)=>function(e,t,n,r,i){let a=t.stop===`partial`?`part`:t.ok?`ok`:`bad`,o=!!e.replayMarks&&!!t.replayed,s=w(t.reason,e.run),c=ws(t.hops,null,t.skipped_hops),l=[E(T`Ended ${G(t.ts,!0)}`),If(t),r&&t.model?E(T`Model ${t.model}`):``,c?E(T`Model switch: ${c}`):``,vc(t),t.context_warned?yc(t):``,s,t.route||``,o?Ps():``,...qs(t,i).map(([e,t])=>`${e}: ${t}`)].filter(Boolean).join(`
762
- `),u=t.cost_usd!==null&&t.cost_usd!==void 0?Y(t.cost_usd):``;return k`<span class="runchip ${a}" title=${l}>
763
- ${(e=>e.stop===`partial`?k`<span aria-hidden="true">◌</span><span class="sr">${Fo(`partial`)}</span>`:k`<span aria-hidden="true">${e.ok?`✓`:`✕`}</span><span class="sr">${e.ok?E(`passed`):E(`failed`)}</span>`)(t)} ${K(n,Z(t.stop,t.reason),z(t.wall_s),u,o?Ns():``)}
764
- </span>`}(e,_[n],t,c,r.row_extras??[]))}</div>`:j}
765
- ${function(e,t){let n=e[e.length-1],r=n?qs(n,t):[];if(!r.length)return j;let i=Gs();return k`<div class="whos">${xo(r.map(([e,t])=>({label:e,value:t,tip:i,look:`quiet`})))}</div>`}(_,r.row_extras??[])}
766
- ${function(e,t){let n=e.flatMap(e=>e.web_queries??[]),r=new Map;return n.length?k`<details class="io-fold">
767
- <summary>${n.length===1?E(`1 web search`):E(T`${n.length} web searches`)}</summary>
804
+ ${_.length?O`<div class="runchips">${_s(_).map((t,n)=>function(e,t,n,r,i){let a=t.stop===`partial`?`part`:t.ok?`ok`:`bad`,o=!!e.replayMarks&&!!t.replayed,s=C(t.reason,e.run),c=Ks(t.hops,null,t.skipped_hops),l=[T(w`Ended ${G(t.ts,!0)}`),up(t),r&&t.model?T(w`Model ${t.model}`):``,c?T(w`Model switch: ${c}`):``,Vc(t),t.context_warned?Hc(t):``,s,t.route||``,o?nc():``,...gc(t,i).map(([e,t])=>`${e}: ${t}`)].filter(Boolean).join(`
805
+ `),u=t.cost_usd!==null&&t.cost_usd!==void 0?Y(t.cost_usd):``;return O`<span class="runchip ${a}" title=${l}>
806
+ ${(e=>e.stop===`partial`?O`<span aria-hidden="true">◌</span><span class="sr">${rs(`partial`)}</span>`:O`<span aria-hidden="true">${e.ok?`✓`:`✕`}</span><span class="sr">${e.ok?T(`passed`):T(`failed`)}</span>`)(t)} ${K(n,Z(t.stop,t.reason),z(t.wall_s),u,o?tc():``)}
807
+ </span>`}(e,_[n],t,c,r.row_extras??[]))}</div>`:A}
808
+ ${function(e,t){let n=e[e.length-1],r=n?gc(n,t):[];if(!r.length)return A;let i=mc();return O`<div class="whos">${Uo(r.map(([e,t])=>({label:e,value:t,tip:i,look:`quiet`})))}</div>`}(_,r.row_extras??[])}
809
+ ${function(e,t){let n=e.flatMap(e=>e.web_queries??[]),r=new Map;return n.length?O`<details class="io-fold">
810
+ <summary>${n.length===1?T(`1 web search`):T(w`${n.length} web searches`)}</summary>
768
811
  <ol class="meta searches">
769
- ${n.map(e=>{let n=r.get(e)??0;return r.set(e,n+1),k`<li><button class="qlink jmono" @click=${()=>t(e,n)}>
812
+ ${n.map(e=>{let n=r.get(e)??0;return r.set(e,n+1),O`<li><button class="qlink jmono" @click=${()=>t(e,n)}>
770
813
  ${e}
771
814
  </button></li>`})}
772
815
  </ol>
773
- </details>`:j}(_,n)}
774
- ${function(e){let t=Yo(e),n=e.filter(e=>e.changes).length,r=e.flatMap((e,r)=>{let i=e.changes;if(!i)return[];let a=n>1?t[r]??``:``,o=new Set(i.removed),s=(e,t)=>(e??[]).map(e=>K(a,e,function(e){switch(e){case`created`:return E(`created`);case`modified`:return E(`modified`);case`deleted`:return E(`deleted`);case`removed`:return E(`created, removed after the failed attempt`)}}(o.has(e)?`removed`:t)));return[...s(i.created,`created`),...s(i.modified,`modified`),...s(i.deleted,`deleted`)]});return n?r.length?k`<details class="io-fold">
775
- <summary title=${E(`Files under the task's declared patterns that its attempts created, modified or deleted (changes)`)}>${i=r.length,E(i===1?`1 changed file`:T`${i} changed files`)}</summary>
776
- <ul class="meta searches jmono">${r.map(e=>k`<li>${e}</li>`)}</ul>
777
- </details>`:k`<div class="meta">${E(`No changed files`)}</div>`:j;var i}(_)}
778
- ${Po(_)?k`<div class="meta unread" title=${E(`Event types this contraagent version does not know (unread_events)`)}>
779
- <span aria-hidden="true">⚠</span> ${E(T`Unrecognized events: ${Po(_)}`)}
780
- </div>`:j}
781
- ${r.task_detail_error?k`<div class="meta v-bad">${E(T`The task_detail callback failed: ${r.task_detail_error??``}`)}</div>`:j}
782
- ${o.map(e=>k`<details class="launch">
783
- <summary>${K(E(T`Process ${e.pid??`—`}`),e.key||``)}</summary>
784
- <div class="meta">${K(E(T`Plugin ${e.plugin||E(`none`,{id:`none`})}`),E(T`Model ${e.model||`—`}`),E(T`Role ${e.role||E(`none`,{id:`none`})}`))}</div>
816
+ </details>`:A}(_,n)}
817
+ ${function(e){let t=_s(e),n=e.filter(e=>e.changes).length,r=e.flatMap((e,r)=>{let i=e.changes;if(!i)return[];let a=n>1?t[r]??``:``,o=new Set(i.removed),s=new Set(i.kept),c=(e,t)=>(e??[]).map(e=>K(a,e,function(e){switch(e){case`created`:return T(`created`);case`modified`:return T(`modified`);case`deleted`:return T(`deleted`);case`removed`:return T(`created, removed after the failed attempt`);case`kept`:return T(`created, kept after the failed attempt`)}}(((e,t)=>o.has(e)?`removed`:s.has(e)?`kept`:t)(e,t))));return[...c(i.created,`created`),...c(i.modified,`modified`),...c(i.deleted,`deleted`)]});return n?r.length?O`<details class="io-fold">
818
+ <summary title=${T(`Files under the task's declared patterns that its attempts created, modified or deleted (changes)`)}>${i=r.length,T(i===1?`1 changed file`:w`${i} changed files`)}</summary>
819
+ <ul class="meta searches jmono">${r.map(e=>O`<li>${e}</li>`)}</ul>
820
+ </details>`:O`<div class="meta">${T(`No changed files`)}</div>`:A;var i}(_)}
821
+ ${ns(_)?O`<div class="meta unread" title=${T(`Event types this contraagent version does not know (unread_events)`)}>
822
+ <span aria-hidden="true">⚠</span> ${T(w`Unrecognized events: ${ns(_)}`)}
823
+ </div>`:A}
824
+ ${r.task_detail_error?O`<div class="meta v-bad">${T(w`The task_detail callback failed: ${r.task_detail_error??``}`)}</div>`:A}
825
+ ${o.map(e=>O`<details class="launch">
826
+ <summary>${K(T(w`Process ${e.pid??`—`}`),e.key||``)}</summary>
827
+ <div class="meta">${K(T(w`Plugin ${e.plugin||T(`none`,{id:`none`})}`),T(w`Model ${e.model||`—`}`),T(w`Role ${e.role||T(`none`,{id:`none`})}`))}</div>
785
828
  </details>`)}
786
- ${v.map(([e,t])=>k`<details class="io-fold"><summary>${e}</summary><cae-json-tree .value=${t}></cae-json-tree></details>`)}
829
+ ${ee.map(([e,t])=>O`<details class="io-fold"><summary>${e}</summary><cae-json-tree .value=${t}></cae-json-tree></details>`)}
787
830
  </div>`}(n,e,(e,t)=>this.revealSearch(e,t))} ${this.renderViews(t,r)}
788
- ${t.stream?k`<ca-transcript .run=${this.run} .stream=${t.stream} base-url=${this.baseUrl} .client=${this.client} .live=${n.live} .rows=${t.rows} .round=${this.round} mode=${r===`transcript`?`full`:r===`input`?`tabs`:`none`} @ca-rounds=${e=>{this.launches=e.detail.launches,this.shownRound=e.detail.shown,this.rounds=e.detail.rounds}}></ca-transcript>`:r===`transcript`?function(e){let t=e.detail,n=Nf(e);if(n===`not_started`){let t=function(e){let t=e.detail,n=ze(t.rows[t.rows.length-1]?.reason)[0],r=n?.producer?e.outcomes.get(n.producer):void 0;if(r)return r;let i=n?Pf(e,n.path):void 0;if(i)return i;let a=e.outcomes.get(t.key)?.cause;return a?e.outcomes.get(a):void 0}(e);return k`<div class="blank notrans"><span class="ic" aria-hidden="true">⊘</span><b>${K(E(`No transcript`),Fo(n))}</b>
789
- ${t?k`<span>${E(k`Earlier task ${Ic(e.host,q(t),t)}`)}</span>`:j}</div>`}if(e.exported&&Mf(t))return k`<div class="blank notrans"><span class="ic" aria-hidden="true">✦</span><b>${K(E(`No transcript`),ic())}</b></div>`;if(Mf(t))return k`<div class="blank notrans"><span class="ic" aria-hidden="true">✦</span><b>${K(E(`No transcript`),E(`not saved (keep_transcripts = false)`))}</b></div>`;let r=n===`waiting`&&!!e.plan?.nodes.find(e=>e.key===t.key)?.deferred;return k`<div class="blank notrans"><span class="ic" aria-hidden="true">✦</span><b>${K(E(`No transcript`),r?Io(n,!1):Fo(n))}</b></div>`}(n):j}
790
- ${r===`transcript`?j:k`<div class="pane">${this.renderPane(n,r)}</div>`}`}renderViews(e,t){let n=e.io,r=jf(e)&&!e.stream,i={input:new Set([...n.inputs.map(e=>e.path),...n.upstream.flatMap(e=>e.outputs.map(e=>e.path))]).size+Object.keys(n.params).length,output:n.outputs.length};return k`<div class="tviews" role="tablist">
791
- ${nr.filter(e=>!(r&&e===`transcript`)).map(e=>{let n={transcript:E(`Transcript`),input:E(`Input`),output:E(`Output`,{id:`view-output`}),definition:E(`Definition`)}[e];return k`<button type="button" role="tab" aria-selected=${e===t} class="tview ${e===t?`sel`:``}" @click=${()=>Q(this,`ca-navigate`,{view:e})}>
792
- ${n}${i[e]?k`<span class="badge">${i[e]}</span>`:j}
831
+ ${t.stream?O`<ca-transcript .run=${this.run} .stream=${t.stream} base-url=${this.baseUrl} .client=${this.client} .live=${n.live} .rows=${t.rows} .round=${this.round} mode=${r===`transcript`?`full`:r===`input`?`tabs`:`none`} @ca-rounds=${e=>{this.launches=e.detail.launches,this.shownRound=e.detail.shown,this.rounds=e.detail.rounds}}></ca-transcript>`:r===`transcript`?function(e){let t=e.detail,n=sp(e);if(n===`not_started`){let t=function(e){let t=e.detail,n=Be(t.rows[t.rows.length-1]?.reason)[0],r=n?.producer?e.outcomes.get(n.producer):void 0;if(r)return r;let i=n?cp(e,n.path):void 0;if(i)return i;let a=e.outcomes.get(t.key)?.cause;return a?e.outcomes.get(a):void 0}(e);return O`<div class="blank notrans"><span class="ic" aria-hidden="true">⊘</span><b>${K(T(`No transcript`),rs(n))}</b>
832
+ ${t?O`<span>${T(O`Earlier task ${al(e.host,q(t),t)}`)}</span>`:A}</div>`}if(e.exported&&op(t))return O`<div class="blank notrans"><span class="ic" aria-hidden="true">✦</span><b>${K(T(`No transcript`),Dc())}</b></div>`;if(op(t))return O`<div class="blank notrans"><span class="ic" aria-hidden="true">✦</span><b>${K(T(`No transcript`),T(`not saved (keep_transcripts = false)`))}</b></div>`;let r=n===`waiting`&&!!e.plan?.nodes.find(e=>e.key===t.key)?.deferred;return O`<div class="blank notrans"><span class="ic" aria-hidden="true">✦</span><b>${K(T(`No transcript`),r?is(n,!1):rs(n))}</b></div>`}(n):A}
833
+ ${r===`transcript`?A:O`<div class="pane">${this.renderPane(n,r)}</div>`}`}renderViews(e,t){let n=e.io,r=ap(e)&&!e.stream,i={input:new Set([...n.inputs.map(e=>e.path),...n.upstream.flatMap(e=>e.outputs.map(e=>e.path))]).size+Object.keys(n.params).length,output:n.outputs.length};return O`<div class="tviews" role="tablist">
834
+ ${nr.filter(e=>!(r&&e===`transcript`)).map(e=>{let n={transcript:T(`Transcript`),input:T(`Input`),output:T(`Output`,{id:`view-output`}),definition:T(`Definition`)}[e];return O`<button type="button" role="tab" aria-selected=${e===t} class="tview ${e===t?`sel`:``}" @click=${()=>Q(this,`ca-navigate`,{view:e})}>
835
+ ${n}${i[e]?O`<span class="badge">${i[e]}</span>`:A}
793
836
  </button>`})}
794
- </div>`}renderPane(e,t){return t===`input`?function(e){let t=e.detail,n=t.io,r=Object.entries(n.params),{files:i,earlier:a}=function(e){let t=new Set(e.inputs.map(e=>e.path)),n=e.inputs.map(t=>{for(let n of e.upstream){let e=n.outputs.find(e=>e.path===t.path);if(e)return{spec:t,from:n,out:e}}return{spec:t,from:null,out:null}}),r=e.upstream.map(e=>({task:e,read:e.outputs.filter(e=>t.has(e.path)).length,rest:e.outputs.filter(e=>!t.has(e.path))})),i=e=>Number(e.task.outputs.some(Hf));return{files:n,earlier:[...r].sort((e,t)=>i(t)-i(e))}}(n);return k`<h4 class="sect-h">${E(`Parameters`)}</h4>
795
- ${r.length?k`<table class="ct-fields params">
796
- ${r.map(([t,r])=>{let i=(e=>n.upstream.find(t=>t.outputs.some(t=>t.file.exists&&((e,t)=>{try{return JSON.stringify(e)===JSON.stringify(t)}catch{return!1}})(t.file.content,e))))(r);return k`<tr>
837
+ </div>`}renderPane(e,t){return t===`input`?function(e){let t=e.detail,n=t.io,r=Object.entries(n.params),{files:i,earlier:a}=function(e){let t=new Set(e.inputs.map(e=>e.path)),n=e.inputs.map(t=>{for(let n of e.upstream){let e=n.outputs.find(e=>e.path===t.path);if(e)return{spec:t,from:n,out:e}}return{spec:t,from:null,out:null}}),r=e.upstream.map(e=>({task:e,read:e.outputs.filter(e=>t.has(e.path)).length,rest:e.outputs.filter(e=>!t.has(e.path))})),i=e=>Number(e.task.outputs.some(gp));return{files:n,earlier:[...r].sort((e,t)=>i(t)-i(e))}}(n);return O`<h4 class="sect-h">${T(`Parameters`)}</h4>
838
+ ${r.length?O`<table class="ct-fields params">
839
+ ${r.map(([t,r])=>{let i=(e=>n.upstream.find(t=>t.outputs.some(t=>t.file.exists&&((e,t)=>{try{return JSON.stringify(e)===JSON.stringify(t)}catch{return!1}})(t.file.content,e))))(r);return O`<tr>
797
840
  <td class="jmono">${t}</td>
798
- <td>${typeof r==`object`&&r?k`<cae-json-tree .value=${r} .open=${0}></cae-json-tree>`:k`<span class="jmono">${(e=>typeof e==`string`?e:JSON.stringify(e)??String(e))(r)}</span>`}</td>
799
- <td>${i?k`<span class="from">${E(k`From ${Lf(e,i)}`)}</span>`:j}</td>
841
+ <td>${typeof r==`object`&&r?O`<cae-json-tree .value=${r} .open=${0}></cae-json-tree>`:O`<span class="jmono">${(e=>typeof e==`string`?e:JSON.stringify(e)??String(e))(r)}</span>`}</td>
842
+ <td>${i?O`<span class="from">${T(O`From ${dp(e,i)}`)}</span>`:A}</td>
800
843
  </tr>`})}
801
- </table>`:k`<div class="meta">${E(`No parameters`)}</div>`}
802
- <h4 class="sect-h">${E(`Input files`)}</h4>
803
- ${i.length?i.map(t=>function(e,t){let n=t.from,r=n?e.outcomes.get(n.key)?.outcome:void 0,i=n?k`<span>${E(k`Output of ${Lf(e,n)}`)}</span>${r&&r!==`done`?Uf(r):j}`:E(`File from before the run`),a=t.out?.status;if(!a)return Vf(t.spec,`input`,e.run,{origin:i});let o=Uc(a);return Vf({...t.spec,status:a},`input`,e.run,{origin:i,chip:o})}(e,t)):k`<div class="meta">${E(`No input files`)}</div>`}
804
- <h4 class="sect-h">${E(`Earlier tasks`)}</h4>
805
- ${a.length?a.map(t=>function(e,t){let n=t.task,r=C(n)?E(`Python task`):E(`Agent task`),i=e.outcomes.get(n.key)?.outcome,a=n.outputs.length,o=a?K(E(a===1?`1 output file`:T`${a} output files`),t.read?t.read===1?E(`1 read by this task`):E(T`${t.read} read by this task`):``):E(`No output files`),s=k`<div class="up-hd">
806
- ${Ru(C(n),r)}
807
- ${Lf(e,n)}
808
- ${i?Uf(i):j}
844
+ </table>`:O`<div class="meta">${T(`No parameters`)}</div>`}
845
+ <h4 class="sect-h">${T(`Input files`)}</h4>
846
+ ${i.length?i.map(t=>function(e,t){let n=t.from,r=n?e.outcomes.get(n.key)?.outcome:void 0,i=n?O`<span>${T(O`Output of ${dp(e,n)}`)}</span>${r&&r!==`done`?_p(r):A}`:T(`File from before the run`),a=t.out?.status;if(!a)return hp(t.spec,`input`,e.run,{origin:i});let o=pl(a);return hp({...t.spec,status:a},`input`,e.run,{origin:i,chip:o})}(e,t)):O`<div class="meta">${T(`No input files`)}</div>`}
847
+ <h4 class="sect-h">${T(`Earlier tasks`)}</h4>
848
+ ${a.length?a.map(t=>function(e,t){let n=t.task,r=S(n)?T(`Python task`):T(`Agent task`),i=e.outcomes.get(n.key)?.outcome,a=n.outputs.length,o=a?K(T(a===1?`1 output file`:w`${a} output files`),t.read?t.read===1?T(`1 read by this task`):T(w`${t.read} read by this task`):``):T(`No output files`),s=O`<div class="up-hd">
849
+ ${fd(S(n),r)}
850
+ ${dp(e,n)}
851
+ ${i?_p(i):A}
809
852
  <span class="meta">${o}</span>
810
- </div>`;if(!t.rest.length)return k`<div class="upstream">${s}</div>`;let c=t.rest.map(t=>Vf(t,`output`,e.run,{producerOf:Ff(e)}));return t.rest.some(Hf)?k`<div class="upstream">${s}${c}</div>`:k`<details class="upstream"><summary>${s}</summary>${c}</details>`}(e,t)):k`<div class="meta">${E(`No earlier tasks`)}</div>`}
811
- ${jf(t)?j:function(e){let t=e.detail,n=e.launches.length,r=e.shownRound,i=e.rounds[r],a=e.rounds[e.rounds.length-1]?.tryNo??1,o=t.rows.filter(f),s=Yo(o),c=le(o),l=e.launches[r]?.prompt??``,u=Nf(e);return k`<h4 class="sect-h">${E(`Prompt`)}${n>1&&i?k` <span class="meta">${of(i,a,s[i.tryNo-1])}: ${function(e,t=!1){return e.fixupNo?E(`same agent session, after failed checks`):e.hopNo?E(`new agent session on the next model`):e.tryNo>1&&t?E(`new agent session in the resumed run`):e.tryNo>1?E(T`new agent session after attempt ${e.tryNo-1} failed`):E(`first agent session`)}(i,c[i.tryNo-1]!==c[i.tryNo-2])}</span>`:j}</h4>
812
- ${l?kf(l):k`<div class="meta">${t.stream?E(`Loading…`):Mf(t)?K(E(`No prompt`),E(`not saved (keep_transcripts = false)`)):K(E(`No prompt`),Fo(u))}</div>`}`}(e)}`}(e):t===`output`?function(e){let t=e.detail,n=t.io,r=t.rows[t.rows.length-1];return k`<h4 class="sect-h">${E(`Output files`)}</h4>
813
- ${n.outputs.length?n.outputs.map(t=>Vf(t,`output`,e.run,{producerOf:Ff(e)})):k`<div class="meta">${E(`No output files`)}</div>`}
814
- ${r?k`<h4 class="sect-h">${E(`Outcome`)}</h4>
853
+ </div>`;if(!t.rest.length)return O`<div class="upstream">${s}</div>`;let c=t.rest.map(t=>hp(t,`output`,e.run,{producerOf:lp(e)}));return t.rest.some(gp)?O`<div class="upstream">${s}${c}</div>`:O`<details class="upstream"><summary>${s}</summary>${c}</details>`}(e,t)):O`<div class="meta">${T(`No earlier tasks`)}</div>`}
854
+ ${ap(t)?A:function(e){let t=e.detail,n=e.launches.length,r=e.shownRound,i=e.rounds[r],a=e.rounds[e.rounds.length-1]?.tryNo??1,o=t.rows.filter(f),s=_s(o),c=ue(o),l=e.launches[r]?.prompt??``,u=sp(e);return O`<h4 class="sect-h">${T(`Prompt`)}${n>1&&i?O` <span class="meta">${Pf(i,a,s[i.tryNo-1])}: ${function(e,t=!1){return e.fixupNo?T(`same agent session, after failed checks`):e.hopNo?T(`new agent session on the next model`):e.tryNo>1&&t?T(`new agent session in the resumed run`):e.tryNo>1?T(w`new agent session after attempt ${e.tryNo-1} failed`):T(`first agent session`)}(i,c[i.tryNo-1]!==c[i.tryNo-2])}</span>`:A}</h4>
855
+ ${l?rp(l):O`<div class="meta">${t.stream?T(`Loading…`):op(t)?K(T(`No prompt`),T(`not saved (keep_transcripts = false)`)):K(T(`No prompt`),rs(u))}</div>`}`}(e)}`}(e):t===`output`?function(e){let t=e.detail,n=t.io,r=t.rows[t.rows.length-1];return O`<h4 class="sect-h">${T(`Output files`)}</h4>
856
+ ${n.outputs.length?n.outputs.map(t=>hp(t,`output`,e.run,{producerOf:lp(e)})):O`<div class="meta">${T(`No output files`)}</div>`}
857
+ ${r?O`<h4 class="sect-h">${T(`Outcome`)}</h4>
815
858
  <div class="ct-in">
816
- ${Zr({text:Z(r.stop,r.reason),tone:Vo(r.stop)})}
817
- ${f(r)?k`<span class="meta">${K(Jo(r.attempt),z(r.wall_s),If(r))}</span>`:j}
818
- </div>`:j}
819
- ${function(e,t){let n=t.filter(e=>f(e)&&(e.usage||e.cost_usd!==null&&e.cost_usd!==void 0));if(!n.length)return j;let r=k`<td class="jdim">—</td>`,i=Fe(e.journal.length?e.journal:t),a=n.some(e=>(e.quota??[]).length),o=k`<td class="l jdim">—</td>`,s=(e,t)=>e?k`<td class="l" title=${ls(e)}>${(e.credential??``)===(t??``)?cs(e):us(e)}</td>`:o;return k`<h4 class="sect-h">${E(`Tokens and cost`)}</h4>
859
+ ${Qr({text:Z(r.stop,r.reason),tone:ls(r.stop)})}
860
+ ${f(r)?O`<span class="meta">${K(gs(r.attempt),z(r.wall_s),up(r))}</span>`:A}
861
+ </div>`:A}
862
+ ${function(e,t){let n=t.filter(e=>f(e)&&(e.usage||e.cost_usd!==null&&e.cost_usd!==void 0));if(!n.length)return A;let r=O`<td class="jdim">—</td>`,i=Ie(e.journal.length?e.journal:t),a=n.some(e=>(e.quota??[]).length),o=O`<td class="l jdim">—</td>`,s=(e,t)=>e?O`<td class="l" title=${js(e)}>${(e.credential??``)===(t??``)?As(e):Ms(e)}</td>`:o;return O`<h4 class="sect-h">${T(`Tokens and cost`)}</h4>
820
863
  <div class="usage-wrap" data-scroll="x"><table class="usage">
821
864
  <tr>
822
- <th class="l"></th><th>${E(`Input`)}</th><th>${E(`Output`,{id:`tokens-output`})}</th><th>${E(`Cache read`)}</th><th>${E(`Cache write`)}</th>
823
- <th>${E(`API calls`)}</th><th title=${E(`Reported by the coding agent`)}>${E(`Cost`)}</th><th class="l">${E(`Identity`)}</th>
824
- ${a?k`<th class="l" title=${E(`Subscription usage when the agent session started (account-wide)`)}>${E(`Usage at start`)}</th>
825
- <th class="l" title=${E(`The first reading of the same account after this attempt ended`)}>${E(`Usage after`)}</th>`:j}
865
+ <th class="l"></th><th>${T(`Input`)}</th><th>${T(`Output`,{id:`tokens-output`})}</th><th>${T(`Cache read`)}</th><th>${T(`Cache write`)}</th>
866
+ <th>${T(`API calls`)}</th><th title=${T(`Reported by the coding agent`)}>${T(`Cost`)}</th><th class="l">${T(`Identity`)}</th>
867
+ ${a?O`<th class="l" title=${T(`Subscription usage when the agent session started (account-wide)`)}>${T(`Usage at start`)}</th>
868
+ <th class="l" title=${T(`The first reading of the same account after this attempt ended`)}>${T(`Usage after`)}</th>`:A}
826
869
  </tr>
827
- ${n.map(e=>{let t=e.usage,n=e.hops??[];return k`<tr>
828
- <td class="l">${Jo(e.attempt)}</td>
829
- ${t?k`<td>${J(t.input)}</td><td>${J(t.output)}</td><td>${J(t.cache_read)}</td><td>${J(t.cache_creation)}</td><td>${t.calls}</td>`:k`${r}${r}${r}${r}${r}`}
830
- <td>${Y(e.cost_usd)}</td><td class="l" title=${rs(e.credential)||j}>${ns(e.credential)||`—`}</td>
831
- ${a?k`${s(Re(e,i).start,e.credential)}${s(Re(e,i).next,e.credential)}`:j}
870
+ ${n.map(e=>{let t=e.usage,n=e.hops??[];return O`<tr>
871
+ <td class="l">${gs(e.attempt)}</td>
872
+ ${t?O`<td>${J(t.input)}</td><td>${J(t.output)}</td><td>${J(t.cache_read)}</td><td>${J(t.cache_creation)}</td><td>${t.calls}</td>`:O`${r}${r}${r}${r}${r}`}
873
+ <td>${Y(e.cost_usd)}</td><td class="l" title=${Ts(e.credential)||A}>${ws(e.credential)||`—`}</td>
874
+ ${a?O`${s(ze(e,i).start,e.credential)}${s(ze(e,i).next,e.credential)}`:A}
832
875
  </tr>
833
- ${n.length>1?n.map(e=>k`<tr class="hop">
876
+ ${n.length>1?n.map(e=>O`<tr class="hop">
834
877
  <td class="l">${K(e.model||e.route||`—`,Z(e.stop))}</td>
835
878
  <td></td><td></td><td></td><td></td><td></td>
836
- <td>${Y(e.cost_usd)}</td><td class="l" title=${rs(e.credential)||j}>${ns(e.credential)||`—`}</td>
837
- ${a?k`<td></td><td></td>`:j}
838
- </tr>`):j}`})}
879
+ <td>${Y(e.cost_usd)}</td><td class="l" title=${Ts(e.credential)||A}>${ws(e.credential)||`—`}</td>
880
+ ${a?O`<td></td><td></td>`:A}
881
+ </tr>`):A}`})}
839
882
  </table></div>`}(e,t.rows)}
840
- <h4 class="sect-h">${E(`Later tasks`)}</h4>
841
- ${n.downstream.length?k`<div class="down">${n.downstream.map(t=>Ic(e.host,q(t),t))}</div>`:k`<div class="meta">${E(`No later tasks`)}</div>`}`}(e):(e=>k`<ca-definition .definition=${e.detail.definition??null} memory="task-definition"></ca-definition>`)(e)}};U([P({attribute:!1})],Gf.prototype,`client`,void 0),U([P({attribute:`base-url`})],Gf.prototype,`baseUrl`,void 0),U([P()],Gf.prototype,`run`,void 0),U([P({attribute:!1})],Gf.prototype,`taskKey`,void 0),U([P()],Gf.prototype,`view`,void 0),U([P({attribute:!1})],Gf.prototype,`round`,void 0),U([P({type:Boolean})],Gf.prototype,`live`,void 0),U([P({attribute:!1})],Gf.prototype,`journal`,void 0),U([P({attribute:!1})],Gf.prototype,`plan`,void 0),U([P({type:Boolean})],Gf.prototype,`exported`,void 0),U([P({type:Boolean,attribute:`replay-marks`})],Gf.prototype,`replayMarks`,void 0),U([xn(`ca-transcript`)],Gf.prototype,`transcriptEl`,void 0),U([F()],Gf.prototype,`launches`,void 0),U([F()],Gf.prototype,`shownRound`,void 0),U([F()],Gf.prototype,`rounds`,void 0),Gf=U([N(`ca-task-view`),D()],Gf);var Kf=class extends M{constructor(){super(),new Fr(this)}createRenderRoot(){return this}render(){return new Date().toLocaleTimeString(jn(),{hour12:!1})}};Kf=U([N(`ca-clock`),D()],Kf);var qf=()=>E(`Runs`,{id:`col-runs`}),Jf=class extends M{constructor(...e){super(...e),this.hosts=null}static{this.styles=[V,O` :host{display:block;container-type:inline-size;}.g12{align-content:start;}table{width:100%;border-collapse:collapse;font-size:12.5px;}th,td{text-align:start;padding:8px 10px;border-top:1px solid var(--line);vertical-align:baseline;}thead th{border-top:0;font-size:11.5px;font-weight:600;color:var(--text-muted);white-space:nowrap;}tbody th{font-family:var(--mono);font-weight:600;color:var(--text);overflow-wrap:anywhere;}.num{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;}td.runs{color:var(--text-2);}@container (max-width:640px){thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);}tr{display:block;padding:8px 0;border-top:1px solid var(--line);}tbody tr:first-child{border-top:0;}th,td{display:flex;gap:12px;padding:2px 0;border:0;white-space:normal;}td::before{content:attr(data-label);flex:0 0 9em;color:var(--text-muted);font-family:var(--sans);font-size:11.5px;}}`]}row(e){let t=!e.up;return k`<tr>
883
+ <h4 class="sect-h">${T(`Later tasks`)}</h4>
884
+ ${n.downstream.length?O`<div class="down">${n.downstream.map(t=>al(e.host,q(t),t))}</div>`:O`<div class="meta">${T(`No later tasks`)}</div>`}`}(e):(e=>O`<ca-definition .definition=${e.detail.definition??null} memory="task-definition"></ca-definition>`)(e)}};H([N({attribute:!1})],yp.prototype,`client`,void 0),H([N({attribute:`base-url`})],yp.prototype,`baseUrl`,void 0),H([N()],yp.prototype,`run`,void 0),H([N({attribute:!1})],yp.prototype,`taskKey`,void 0),H([N()],yp.prototype,`view`,void 0),H([N({attribute:!1})],yp.prototype,`round`,void 0),H([N({type:Boolean})],yp.prototype,`live`,void 0),H([N({attribute:!1})],yp.prototype,`journal`,void 0),H([N({attribute:!1})],yp.prototype,`plan`,void 0),H([N({type:Boolean})],yp.prototype,`exported`,void 0),H([N({type:Boolean,attribute:`replay-marks`})],yp.prototype,`replayMarks`,void 0),H([Sn(`ca-transcript`)],yp.prototype,`transcriptEl`,void 0),H([P()],yp.prototype,`launches`,void 0),H([P()],yp.prototype,`shownRound`,void 0),H([P()],yp.prototype,`rounds`,void 0),yp=H([M(`ca-task-view`),E()],yp);var bp=class extends j{constructor(){super(),new Ir(this)}createRenderRoot(){return this}render(){return new Date().toLocaleTimeString(F(),{hour12:!1})}};bp=H([M(`ca-clock`),E()],bp);var xp=()=>T(`Runs`,{id:`col-runs`}),Sp=class extends j{constructor(...e){super(...e),this.hosts=null}static{this.styles=[B,D` :host{display:block;container-type:inline-size;}.g12{align-content:start;}table{width:100%;border-collapse:collapse;font-size:12.5px;}th,td{text-align:start;padding:8px 10px;border-top:1px solid var(--line);vertical-align:baseline;}thead th{border-top:0;font-size:11.5px;font-weight:600;color:var(--text-muted);white-space:nowrap;}tbody th{font-family:var(--mono);font-weight:600;color:var(--text);overflow-wrap:anywhere;}.num{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;}td.runs{color:var(--text-2);}@container (max-width:640px){thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);}tr{display:block;padding:8px 0;border-top:1px solid var(--line);}tbody tr:first-child{border-top:0;}th,td{display:flex;gap:12px;padding:2px 0;border:0;white-space:normal;}td::before{content:attr(data-label);flex:0 0 9em;color:var(--text-muted);font-family:var(--sans);font-size:11.5px;}}`]}row(e){let t=!e.up;return O`<tr>
842
885
  <th scope="row">${e.host_id}</th>
843
- <td data-label=${E(`Status`)}>${Qr({text:Ls(e),tone:t?`attention`:`done`})}</td>
844
- <td data-label=${E(`Last report`)} class="num" title=${e.last_seen}>${G(e.last_seen,!0)||`—`}</td>
845
- <td data-label=${E(`Report interval`)} class="num">${e.interval_s==null?`—`:z(e.interval_s)}</td>
846
- <td data-label=${qf()} class="runs" ><span>${Bs(e.runs)}${e.running?k` | ${E(T`${e.running} running`)}`:j}${e.unresponsive?k` | <span class="tone-text" data-tone="attention">${n=e.unresponsive,E(T`${n} with no report from host`)}</span>`:j}</span></td >
847
- </tr>`;var n}render(){let e=this.hosts?.hosts??[],t=this.hosts?.quota??[];return k`<div class="g12">
886
+ <td data-label=${T(`Status`)}>${$r({text:ac(e),tone:t?`attention`:`done`})}</td>
887
+ <td data-label=${T(`Last report`)} class="num" title=${e.last_seen}>${G(e.last_seen,!0)||`—`}</td>
888
+ <td data-label=${T(`Report interval`)} class="num">${e.interval_s==null?`—`:z(e.interval_s)}</td>
889
+ <td data-label=${xp()} class="runs" ><span>${cc(e.runs)}${e.running?O` | ${T(w`${e.running} running`)}`:A}${e.unresponsive?O` | <span class="tone-text" data-tone="attention">${n=e.unresponsive,T(w`${n} with no report from host`)}</span>`:A}</span></td >
890
+ </tr>`;var n}render(){let e=this.hosts?.hosts??[],t=this.hosts?.quota??[];return O`<div class="g12">
848
891
  <section class="panel c12 enter">
849
- <h3>${E(`Hosts`)}<span class="r">${Vs(e)}</span></h3>
850
- ${e.length?k`<table>
892
+ <h3>${T(`Hosts`)}<span class="r">${lc(e)}</span></h3>
893
+ ${e.length?O`<table>
851
894
  <thead><tr>
852
- <th scope="col">${E(`Host`)}</th><th scope="col">${E(`Status`)}</th><th scope="col">${E(`Last report`)}</th>
853
- <th scope="col">${E(`Report interval`)}</th><th scope="col">${qf()}</th>
895
+ <th scope="col">${T(`Host`)}</th><th scope="col">${T(`Status`)}</th><th scope="col">${T(`Last report`)}</th>
896
+ <th scope="col">${T(`Report interval`)}</th><th scope="col">${xp()}</th>
854
897
  </tr></thead>
855
898
  <tbody>${e.map(e=>this.row(e))}</tbody>
856
- </table>`:k`<div class="meta">${E(`No hosts`)}</div>`}
899
+ </table>`:O`<div class="meta">${T(`No hosts`)}</div>`}
857
900
  </section>
858
- ${t.length?k`<section class="panel c12 enter">
859
- <h3 title=${E(`Account-wide | read at each agent session start`)}>
860
- ${E(`Subscription usage`)}<span class="r">${E(`Per account, first → last reading`)}</span></h3>
901
+ ${t.length?O`<section class="panel c12 enter">
902
+ <h3 title=${T(`Account-wide | read at each agent session start`)}>
903
+ ${T(`Subscription usage`)}<span class="r">${T(`Per account, first → last reading`)}</span></h3>
861
904
  <ca-quota .accounts=${t} .rests=${t.flatMap(e=>e.rests??[])} live></ca-quota>
862
- </section>`:j}
863
- </div>`}};U([P({attribute:!1})],Jf.prototype,`hosts`,void 0),Jf=U([N(`ca-hosts`),D()],Jf);var Yf=e=>`run-${e}`,Xf=class extends M{constructor(...e){super(...e),this.runs=[],this.current=``,this.open=!1,this.hub=!1,this.hosts=[],this.page=``,this.q=``,this.host=``,this.kb=-1}static{this.styles=[V,O` :host{position:absolute;top:50px;width:min(580px,calc(100cqi - 24px));max-height:min(72vh,660px);display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line2);border-radius:14px;box-shadow:0 24px 70px color-mix(in srgb,var(--shadow) 70%,transparent);opacity:0;transform:translateY(-6px) scale(0.985);pointer-events:none;z-index:40;visibility:hidden;container-type:inline-size;transition:opacity 0.16s var(--ease),transform 0.16s var(--ease),visibility 0s linear 0.16s;}:host([open]){opacity:1;transform:none;pointer-events:auto;visibility:visible;transition-delay:0s;}.search{padding:10px;border-bottom:1px solid var(--line);}input,select{background:var(--well);border:1px solid var(--line);color:var(--text);border-radius:9px;font:inherit;outline:none;}input{width:100%;padding:8px 11px;}input:focus,select:focus{border-color:var(--accent);}.list{overflow:auto;padding:6px;}.group{font-size:11.5px;font-weight:600;color:var(--text-muted);padding:10px 9px 4px;}.group .n{font-weight:400;margin-left:4px;}.keys{margin-top:6px;display:flex;gap:4px;align-items:center;}.item{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:3px 10px;align-items:center;padding:7px 9px;border-radius:9px;cursor:pointer;}.item:hover,.item.kb{background:var(--raise);}.item.cur{box-shadow:inset 2px 0 0 var(--accent);background:var(--accent-bg);}.nm{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.when{font-size:11px;color:var(--text-muted);white-space:nowrap;}@container (max-width:480px){.when.page{grid-column:2 / 4;white-space:normal;}}.sub{grid-column:2 / 4;display:flex;gap:7px;flex-wrap:wrap;font-size:11px;color:var(--text-muted);}.row{display:flex;gap:8px;}select{max-width:40%;padding:0 8px;}.host{display:flex;gap:8px;flex-wrap:wrap;color:var(--text-2);border-top:1px solid var(--line);margin-top:6px;}.host b{font-family:var(--mono);color:var(--text);}.host .n{margin-left:auto;}.when[data-tone]{color:var(--tone);font-weight:600;}`]}connectedCallback(){super.connectedCallback(),this.setAttribute(`role`,`dialog`),this.setAttribute(`aria-modal`,`true`)}willUpdate(){this.setAttribute(`aria-label`,E(`Runs`))}updated(e){e.has(`open`)&&this.open&&(this.q=``,this.kb=-1,setTimeout(()=>this.input?.focus(),30))}groups(){let e=this.q.toLowerCase().trim(),t=this.runs.filter(t=>(!e||t.run.toLowerCase().includes(e)||(t.run_group||``).toLowerCase().includes(e))&&(!this.host||t.host_id===this.host));if(this.hub)return se(t,this.hosts).map(({hostId:e,host:t,runs:n})=>{let r=e||zs(``),i=t?(e=>!e.up&&e.last_seen?E(T`no report since ${G(e.last_seen,!0)}`):Ls(e))(t):``,a=Bs(n.length);return[K(r,i,a),k`<b>${r}</b>${t?Qr({text:i,tone:t.up?`done`:`attention`,title:Rs(t)}):j}<span class="n">${a}</span>`,n]});let n=e=>!e.running&&(e=>{let t=Date.parse(e.last_ts||``);return Number.isNaN(t)?1/0:(Date.now()-t)/1e3})(e)>=86400;return[[E(`Running`),t.filter(e=>e.running)],[E(`Last 24 hours`),t.filter(e=>!e.running&&!n(e))],[E(`Older`),t.filter(n)]].map(([e,t])=>[e,k`${e} <span class="n">${t.length}</span>`,t])}pick(e){this.close(),typeof e==`string`?e!==this.page&&Q(this,`ca-navigate`,{page:e,run:``}):(e.run!==this.current||this.page)&&Q(this,`ca-select-run`,{run:e.run})}close(){Q(this,`ca-close`,{})}onDialogKey(e){e.key===`Escape`?this.close():e.key===`Tab`&&(e.preventDefault(),(e.target===this.input&&this.hub?this.select:this.input)?.focus())}onKey(e,t){if(e.key===`ArrowDown`)this.kb=Math.min(t.length-1,this.kb+1);else{if(e.key!==`ArrowUp`){if(e.key===`Enter`){e.preventDefault();let n=t[Math.max(0,this.kb)];n!==void 0&&this.pick(n);return}return}this.kb=Math.max(0,this.kb-1)}e.preventDefault(),this.updateComplete.then(()=>this.renderRoot.querySelector(`.item.kb`)?.scrollIntoView({block:`nearest`}))}render(){let e=this.groups().filter(e=>e[2].length),t=e.flatMap(e=>e[2]),n=this.q.trim()?[]:this.hub?[`trends`,`hosts`]:[`trends`],r=[...n,...t],i=r[this.kb]===void 0?j:Yf(this.kb),a=k`<input placeholder=${E(`Search runs`)} aria-label=${E(`Search runs`)} autocomplete="off" .value=${this.q} role="combobox" aria-expanded=${r.length?`true`:`false`} aria-controls="runs" aria-autocomplete="list" aria-activedescendant=${i} @input=${e=>{this.q=e.target.value,this.kb=0}} @keydown=${e=>this.onKey(e,r)} />`,o=0;return k`<div class="search" @keydown=${e=>this.onDialogKey(e)}>
864
- ${this.hub?k`<div class="row">${a}${this.hostFilter()}</div>`:a}
905
+ </section>`:A}
906
+ </div>`}};H([N({attribute:!1})],Sp.prototype,`hosts`,void 0),Sp=H([M(`ca-hosts`),E()],Sp);var Cp=e=>`run-${e}`,wp=class extends j{constructor(...e){super(...e),this.runs=[],this.current=``,this.open=!1,this.hub=!1,this.hosts=[],this.page=``,this.q=``,this.host=``,this.kb=-1}static{this.styles=[B,D` :host{position:absolute;top:50px;width:min(580px,calc(100cqi - 24px));max-height:min(72vh,660px);display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line2);border-radius:14px;box-shadow:0 24px 70px color-mix(in srgb,var(--shadow) 70%,transparent);opacity:0;transform:translateY(-6px) scale(0.985);pointer-events:none;z-index:40;visibility:hidden;container-type:inline-size;transition:opacity 0.16s var(--ease),transform 0.16s var(--ease),visibility 0s linear 0.16s;}:host([open]){opacity:1;transform:none;pointer-events:auto;visibility:visible;transition-delay:0s;}.search{padding:10px;border-bottom:1px solid var(--line);}input,select{background:var(--well);border:1px solid var(--line);color:var(--text);border-radius:9px;font:inherit;outline:none;}input{width:100%;padding:8px 11px;}input:focus,select:focus{border-color:var(--accent);}.list{overflow:auto;padding:6px;}.group{font-size:11.5px;font-weight:600;color:var(--text-muted);padding:10px 9px 4px;}.group .n{font-weight:400;margin-left:4px;}.keys{margin-top:6px;display:flex;gap:4px;align-items:center;}.item{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:3px 10px;align-items:center;padding:7px 9px;border-radius:9px;cursor:pointer;}.item:hover,.item.kb{background:var(--raise);}.item.cur{box-shadow:inset 2px 0 0 var(--accent);background:var(--accent-bg);}.nm{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.when{font-size:11px;color:var(--text-muted);white-space:nowrap;}@container (max-width:480px){.when.page{grid-column:2 / 4;white-space:normal;}}.sub{grid-column:2 / 4;display:flex;gap:7px;flex-wrap:wrap;font-size:11px;color:var(--text-muted);}.row{display:flex;gap:8px;}select{max-width:40%;padding:0 8px;}.host{display:flex;gap:8px;flex-wrap:wrap;color:var(--text-2);border-top:1px solid var(--line);margin-top:6px;}.host b{font-family:var(--mono);color:var(--text);}.host .n{margin-left:auto;}.when[data-tone]{color:var(--tone);font-weight:600;}`]}connectedCallback(){super.connectedCallback(),this.setAttribute(`role`,`dialog`),this.setAttribute(`aria-modal`,`true`)}willUpdate(){this.setAttribute(`aria-label`,T(`Runs`))}updated(e){e.has(`open`)&&this.open&&(this.q=``,this.kb=-1,setTimeout(()=>this.input?.focus(),30))}groups(){let e=this.q.toLowerCase().trim(),t=this.runs.filter(t=>(!e||t.run.toLowerCase().includes(e)||(t.run_group||``).toLowerCase().includes(e))&&(!this.host||t.host_id===this.host));if(this.hub)return ce(t,this.hosts).map(({hostId:e,host:t,runs:n})=>{let r=e||sc(``),i=t?(e=>!e.up&&e.last_seen?T(w`no report since ${G(e.last_seen,!0)}`):ac(e))(t):``,a=cc(n.length);return[K(r,i,a),O`<b>${r}</b>${t?$r({text:i,tone:t.up?`done`:`attention`,title:oc(t)}):A}<span class="n">${a}</span>`,n]});let n=e=>!e.running&&(e=>{let t=Date.parse(e.last_ts||``);return Number.isNaN(t)?1/0:(Date.now()-t)/1e3})(e)>=86400;return[[T(`Running`),t.filter(e=>e.running)],[T(`Last 24 hours`),t.filter(e=>!e.running&&!n(e))],[T(`Older`),t.filter(n)]].map(([e,t])=>[e,O`${e} <span class="n">${t.length}</span>`,t])}pick(e){this.close(),typeof e==`string`?e!==this.page&&Q(this,`ca-navigate`,{page:e,run:``}):(e.run!==this.current||this.page)&&Q(this,`ca-select-run`,{run:e.run})}close(){Q(this,`ca-close`,{})}onDialogKey(e){e.key===`Escape`?this.close():e.key===`Tab`&&(e.preventDefault(),(e.target===this.input&&this.hub?this.select:this.input)?.focus())}onKey(e,t){if(e.key===`ArrowDown`)this.kb=Math.min(t.length-1,this.kb+1);else{if(e.key!==`ArrowUp`){if(e.key===`Enter`){e.preventDefault();let n=t[Math.max(0,this.kb)];n!==void 0&&this.pick(n);return}return}this.kb=Math.max(0,this.kb-1)}e.preventDefault(),this.updateComplete.then(()=>this.renderRoot.querySelector(`.item.kb`)?.scrollIntoView({block:`nearest`}))}render(){let e=this.groups().filter(e=>e[2].length),t=e.flatMap(e=>e[2]),n=this.q.trim()?[]:this.hub?[`trends`,`hosts`]:[`trends`],r=[...n,...t],i=r[this.kb]===void 0?A:Cp(this.kb),a=O`<input placeholder=${T(`Search runs`)} aria-label=${T(`Search runs`)} autocomplete="off" .value=${this.q} role="combobox" aria-expanded=${r.length?`true`:`false`} aria-controls="runs" aria-autocomplete="list" aria-activedescendant=${i} @input=${e=>{this.q=e.target.value,this.kb=0}} @keydown=${e=>this.onKey(e,r)} />`,o=0;return O`<div class="search" @keydown=${e=>this.onDialogKey(e)}>
907
+ ${this.hub?O`<div class="row">${a}${this.hostFilter()}</div>`:a}
865
908
  <div class="keys meta" aria-hidden="true"><span class="kbd">↑</span><span class="kbd">↓</span> <span class="kbd">Enter</span> <span class="kbd">Esc</span></div>
866
909
  </div>
867
910
  <div class="list" @mousedown=${e=>e.preventDefault()}>
868
- ${r.length?k`<div id="runs" role="listbox" aria-label=${E(`Runs`)}>
911
+ ${r.length?O`<div id="runs" role="listbox" aria-label=${T(`Runs`)}>
869
912
  ${n.map(e=>this.item(e,o++))}
870
- ${e.map(([e,t,n])=>k`<div role="group" aria-label=${e}>
913
+ ${e.map(([e,t,n])=>O`<div role="group" aria-label=${e}>
871
914
  <div class="group${this.hub?` host`:``}" aria-hidden="true">${t}</div>
872
915
  ${n.map(e=>this.item(e,o++))}
873
916
  </div>`)}
874
- </div>`:k`<div class="blank"><span>${E(`No runs match the search`)}</span></div>`}
875
- </div>`}hostFilter(){return k`<select aria-label=${E(`Host`)} title=${E(`Host`)} @change=${e=>{this.host=e.target.value,this.kb=-1}}>
876
- <option value="" ?selected=${!this.host}>${E(`All hosts`)}</option>
877
- ${se(this.runs,this.hosts).map(e=>k`<option value=${e.hostId} ?selected=${e.hostId===this.host}>${e.hostId||zs(``)}</option>`)}
878
- </select>`}counts(e){let t=e.tasks,n=[E(T`${t.done} of ${t.total} tasks done`)];t.failed&&n.push(X(`failed`,t.failed)),t.not_started&&n.push(X(`not_started`,t.not_started)),t.partial&&n.push(X(`partial`,t.partial)),t.skipped&&n.push(X(`skipped`,t.skipped)),t.running&&n.push(X(`running`,t.running)),t.waiting&&n.push(X(`waiting`,t.waiting)),t.not_run&&n.push(X(`not_run`,t.not_run));let r=(e=>ne(e))(e);r!=null&&n.push(E(T`took ${z(r)}`)),e.cost_usd!==null&&e.cost_usd!==void 0&&n.push(Y(e.cost_usd));let i=ds(e.quota??[]);return i&&n.push(i),K(...n)}when(e){let t=re(e),n=G(e.last_ts,!0),r=t===`unresponsive`;return k`<span class="when" data-tone=${r?`attention`:j} data-mark=${r?`pending`:j} title=${r?K(Rs(ie(this.hosts,e)),E(T`Last activity ${n}`)):n} >${t===`running`?E(`running`):r?Is():Oo(e.last_ts)}</span>`}item(e,t){let n=typeof e==`string`?e:null,r=n?n===this.page:!this.page&&e.run===this.current;return k`<div class=${`item${r?` cur`:``}${t===this.kb?` kb`:``}`} id=${Yf(t)} role="option" aria-selected=${t===this.kb?`true`:`false`} aria-current=${r?n?`page`:`true`:j} @click=${()=>this.pick(e)}>
879
- ${typeof e==`string`?n===`hosts`?k`<span aria-hidden="true">⊞</span><span class="nm">${E(`Hosts`)}</span><span class="when page">${Vs(this.hosts)}</span>`:k`<span aria-hidden="true">▥</span><span class="nm">${ac()}</span><span class="when page">${oc()}</span>`:k`<span class="dot" data-tone=${I(Ro(re(e),e.tasks))} aria-hidden="true"></span><span class="nm" title=${this.hub?e.run:j}>${this.hub?ae(e):e.run}${Fs(e)?k` ${Zr({...Fs(e),tone:`muted`})}`:j}</span>
917
+ </div>`:O`<div class="blank"><span>${T(`No runs match the search`)}</span></div>`}
918
+ </div>`}hostFilter(){return O`<select aria-label=${T(`Host`)} title=${T(`Host`)} @change=${e=>{this.host=e.target.value,this.kb=-1}}>
919
+ <option value="" ?selected=${!this.host}>${T(`All hosts`)}</option>
920
+ ${ce(this.runs,this.hosts).map(e=>O`<option value=${e.hostId} ?selected=${e.hostId===this.host}>${e.hostId||sc(``)}</option>`)}
921
+ </select>`}counts(e){let t=e.tasks,n=[T(w`${t.done} of ${t.total} tasks done`)];t.failed&&n.push(X(`failed`,t.failed)),t.not_started&&n.push(X(`not_started`,t.not_started)),t.partial&&n.push(X(`partial`,t.partial)),t.skipped&&n.push(X(`skipped`,t.skipped)),t.running&&n.push(X(`running`,t.running)),t.waiting&&n.push(X(`waiting`,t.waiting)),t.not_run&&n.push(X(`not_run`,t.not_run));let r=(e=>re(e))(e);r!=null&&n.push(T(w`took ${z(r)}`)),e.cost_usd!==null&&e.cost_usd!==void 0&&n.push(Y(e.cost_usd));let i=Ns(e.quota??[]);return i&&n.push(i),K(...n)}when(e){let t=ie(e),n=G(e.last_ts,!0),r=t===`unresponsive`;return O`<span class="when" data-tone=${r?`attention`:A} data-mark=${r?`pending`:A} title=${r?K(oc(ae(this.hosts,e)),T(w`Last activity ${n}`)):n} >${t===`running`?T(`running`):r?ic():Xo(e.last_ts)}</span>`}item(e,t){let n=typeof e==`string`?e:null,r=n?n===this.page:!this.page&&e.run===this.current;return O`<div class=${`item${r?` cur`:``}${t===this.kb?` kb`:``}`} id=${Cp(t)} role="option" aria-selected=${t===this.kb?`true`:`false`} aria-current=${r?n?`page`:`true`:A} @click=${()=>this.pick(e)}>
922
+ ${typeof e==`string`?n===`hosts`?O`<span aria-hidden="true">⊞</span><span class="nm">${T(`Hosts`)}</span><span class="when page">${lc(this.hosts)}</span>`:O`<span aria-hidden="true">▥</span><span class="nm">${Oc()}</span><span class="when page">${kc()}</span>`:O`<span class="dot" data-tone=${I(os(ie(e),e.tasks))} aria-hidden="true"></span><span class="nm" title=${this.hub?e.run:A}>${this.hub?oe(e):e.run}${rc(e)?O` ${Qr({...rc(e),tone:`muted`})}`:A}</span>
880
923
  ${this.when(e)}
881
924
  <span class="sub">
882
- ${e.run_group&&e.run_group!==ae(e)?k`<span>${E(T`Run group ${e.run_group}`)}</span>`:j} <span title=${fs(e.quota??[])}>${this.counts(e)}</span>
925
+ ${e.run_group&&e.run_group!==oe(e)?O`<span>${T(w`Run group ${e.run_group}`)}</span>`:A} <span title=${Ps(e.quota??[])}>${this.counts(e)}</span>
883
926
  </span>`}
884
- </div>`}};function Zf(e){return e===`system`?E(`System`):e===`high-contrast`?E(`High contrast`):yr[e].label}U([P({attribute:!1})],Xf.prototype,`runs`,void 0),U([P()],Xf.prototype,`current`,void 0),U([P({type:Boolean,reflect:!0})],Xf.prototype,`open`,void 0),U([P({type:Boolean})],Xf.prototype,`hub`,void 0),U([P({attribute:!1})],Xf.prototype,`hosts`,void 0),U([P()],Xf.prototype,`page`,void 0),U([F()],Xf.prototype,`q`,void 0),U([F()],Xf.prototype,`host`,void 0),U([F()],Xf.prototype,`kb`,void 0),U([xn(`input`)],Xf.prototype,`input`,void 0),U([xn(`select`)],Xf.prototype,`select`,void 0),Xf=U([N(`ca-run-picker`),D()],Xf);var Qf=class extends M{constructor(...e){super(...e),this.value=`contraagent-dark`,this.system=`contraagent-dark`,this.open=!1,this.onDocDown=e=>{this.open&&!e.composedPath().includes(this)&&(this.open=!1)}}static{this.styles=[V,O` :host{position:relative;display:inline-flex;}.trig{display:inline-flex;align-items:center;gap:6px;background:none;border:1px solid var(--line);border-radius:999px;padding:2px 10px 2px 7px;font-size:11px;color:var(--text-muted);cursor:pointer;}.trig:hover,.trig[aria-expanded='true']{color:var(--text);border-color:var(--line2);}.trig svg{width:13px;height:13px;}.menu{position:absolute;right:0;top:calc(100% + 8px);min-width:236px;padding:6px;z-index:50;background:var(--panel);border:1px solid var(--line2);border-radius:12px;box-shadow:0 18px 48px color-mix(in srgb,var(--shadow) 65%,transparent);animation:enter 0.16s var(--ease) both;}.grp{font-size:11px;color:var(--text-muted);padding:8px 9px 4px;}[role='separator']{height:1px;background:var(--line);margin:6px 4px;}.item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;background:none;border:0;border-radius:8px;padding:6px 9px;text-align:left;cursor:pointer;color:var(--text-2);font-size:12px;}.item:hover{background:var(--raise);color:var(--text);}.item:focus-visible{outline-offset:-2px;}.item[aria-checked='true']{background:var(--accent-bg);color:var(--text);font-weight:600;}.item .meta{font-weight:400;}.item .sub{display:block;}.rd{width:12px;height:12px;border-radius:50%;border:1.5px solid var(--line2);display:grid;place-items:center;}[aria-checked='true'] .rd{border-color:var(--accent);}[aria-checked='true'] .rd::after{content:'';width:6px;height:6px;border-radius:50%;background:var(--accent);}.sw{display:inline-flex;gap:2px;align-items:flex-end;width:30px;height:18px;border-radius:5px;border:1px solid;padding:3px 4px;}.sw i{flex:1;height:4px;border-radius:2px;}.sw i:first-child{height:8px;}.sw.split{padding:0;overflow:hidden;gap:0;}.sw.split>span{flex:1;height:100%;display:flex;gap:2px;align-items:flex-end;padding:3px 2px;}`]}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener(`pointerdown`,this.onDocDown)}items(){return[...this.renderRoot.querySelectorAll(`.item`)]}updated(e){e.has(`open`)&&(this.open?document.addEventListener(`pointerdown`,this.onDocDown):document.removeEventListener(`pointerdown`,this.onDocDown)),e.has(`open`)&&this.open&&(this.items().find(e=>e.getAttribute(`aria-checked`)===`true`)??this.items()[0])?.focus()}close(e){this.open=!1,e&&this.trig?.focus()}choose(e){this.value=e,Q(this,`ca-choose-theme`,{theme:e}),this.close(!0)}onTrigKey(e){e.key!==`ArrowDown`&&e.key!==`ArrowUp`||(e.preventDefault(),this.open=!0)}onMenuKey(e){let t=this.items(),n=t.indexOf(e.composedPath()[0]),r=e=>t[(e+t.length)%t.length]?.focus();if(e.key===`ArrowDown`)r(n+1);else if(e.key===`ArrowUp`)r(n-1);else if(e.key===`Home`)r(0);else if(e.key===`End`)r(t.length-1);else{if(e.key!==`Escape`)return e.key===`Tab`?void(this.open=!1):void 0;this.close(!0)}e.preventDefault(),e.stopPropagation()}item(e){let t=e===this.value,n=e===`system`?k`<span class="sw split" style="border-color:${yr[`contraagent-dark`].tokens.line2}" ><span style="background:${yr[`contraagent-dark`].tokens.card}"><i style="background:${yr[`contraagent-dark`].tokens.accent}"></i></span ><span style="background:${yr[`contraagent-light`].tokens.card}"><i style="background:${yr[`contraagent-light`].tokens.accent}"></i></span ></span>`:(e=>{let t=yr[e].tokens;return k`<span class="sw" style="background:${t.card};border-color:${t.line2}" ><i style="background:${t.accent}"></i><i style="background:${t[`code-string`]}"></i><i style="background:${t[`code-keyword`]}"></i ></span>`})(e);return k`<button type="button" class="item" role="menuitemradio" aria-checked=${t?`true`:`false`} tabindex="-1" data-theme=${e} @click=${()=>this.choose(e)}>
885
- ${n}<span>${Zf(e)}${e===`system`?k`<span class="meta sub">${yr[this.system].label}</span>`:j}</span><span class="rd" aria-hidden="true"></span>
886
- </button>`}render(){let e=gr.filter(e=>e===`system`||!_r.includes(e));return k`<button type="button" class="trig" aria-haspopup="menu" aria-expanded=${this.open?`true`:`false`} aria-controls="menu" title=${E(T`Theme: ${Zf(this.value)}`)} @click=${()=>this.open=!this.open} @keydown=${e=>this.onTrigKey(e)}>
927
+ </div>`}};function Tp(e){return e===`system`?T(`System`):e===`high-contrast`?T(`High contrast`):yr[e].label}H([N({attribute:!1})],wp.prototype,`runs`,void 0),H([N()],wp.prototype,`current`,void 0),H([N({type:Boolean,reflect:!0})],wp.prototype,`open`,void 0),H([N({type:Boolean})],wp.prototype,`hub`,void 0),H([N({attribute:!1})],wp.prototype,`hosts`,void 0),H([N()],wp.prototype,`page`,void 0),H([P()],wp.prototype,`q`,void 0),H([P()],wp.prototype,`host`,void 0),H([P()],wp.prototype,`kb`,void 0),H([Sn(`input`)],wp.prototype,`input`,void 0),H([Sn(`select`)],wp.prototype,`select`,void 0),wp=H([M(`ca-run-picker`),E()],wp);var Ep=class extends j{constructor(...e){super(...e),this.value=`contraagent-dark`,this.system=`contraagent-dark`,this.open=!1,this.onDocDown=e=>{this.open&&!e.composedPath().includes(this)&&(this.open=!1)}}static{this.styles=[B,D` :host{position:relative;display:inline-flex;}.trig{display:inline-flex;align-items:center;gap:6px;background:none;border:1px solid var(--line);border-radius:999px;padding:2px 10px 2px 7px;font-size:11px;color:var(--text-muted);cursor:pointer;}.trig:hover,.trig[aria-expanded='true']{color:var(--text);border-color:var(--line2);}.trig svg{width:13px;height:13px;}.menu{position:absolute;right:0;top:calc(100% + 8px);min-width:236px;padding:6px;z-index:50;background:var(--panel);border:1px solid var(--line2);border-radius:12px;box-shadow:0 18px 48px color-mix(in srgb,var(--shadow) 65%,transparent);animation:enter 0.16s var(--ease) both;}.grp{font-size:11px;color:var(--text-muted);padding:8px 9px 4px;}[role='separator']{height:1px;background:var(--line);margin:6px 4px;}.item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;background:none;border:0;border-radius:8px;padding:6px 9px;text-align:left;cursor:pointer;color:var(--text-2);font-size:12px;}.item:hover{background:var(--raise);color:var(--text);}.item:focus-visible{outline-offset:-2px;}.item[aria-checked='true']{background:var(--accent-bg);color:var(--text);font-weight:600;}.item .meta{font-weight:400;}.item .sub{display:block;}.rd{width:12px;height:12px;border-radius:50%;border:1.5px solid var(--line2);display:grid;place-items:center;}[aria-checked='true'] .rd{border-color:var(--accent);}[aria-checked='true'] .rd::after{content:'';width:6px;height:6px;border-radius:50%;background:var(--accent);}.sw{display:inline-flex;gap:2px;align-items:flex-end;width:30px;height:18px;border-radius:5px;border:1px solid;padding:3px 4px;}.sw i{flex:1;height:4px;border-radius:2px;}.sw i:first-child{height:8px;}.sw.split{padding:0;overflow:hidden;gap:0;}.sw.split>span{flex:1;height:100%;display:flex;gap:2px;align-items:flex-end;padding:3px 2px;}`]}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener(`pointerdown`,this.onDocDown)}items(){return[...this.renderRoot.querySelectorAll(`.item`)]}updated(e){e.has(`open`)&&(this.open?document.addEventListener(`pointerdown`,this.onDocDown):document.removeEventListener(`pointerdown`,this.onDocDown)),e.has(`open`)&&this.open&&(this.items().find(e=>e.getAttribute(`aria-checked`)===`true`)??this.items()[0])?.focus()}close(e){this.open=!1,e&&this.trig?.focus()}choose(e){this.value=e,Q(this,`ca-choose-theme`,{theme:e}),this.close(!0)}onTrigKey(e){e.key!==`ArrowDown`&&e.key!==`ArrowUp`||(e.preventDefault(),this.open=!0)}onMenuKey(e){let t=this.items(),n=t.indexOf(e.composedPath()[0]),r=e=>t[(e+t.length)%t.length]?.focus();if(e.key===`ArrowDown`)r(n+1);else if(e.key===`ArrowUp`)r(n-1);else if(e.key===`Home`)r(0);else if(e.key===`End`)r(t.length-1);else{if(e.key!==`Escape`)return e.key===`Tab`?void(this.open=!1):void 0;this.close(!0)}e.preventDefault(),e.stopPropagation()}item(e){let t=e===this.value,n=e===`system`?O`<span class="sw split" style="border-color:${yr[`contraagent-dark`].tokens.line2}" ><span style="background:${yr[`contraagent-dark`].tokens.card}"><i style="background:${yr[`contraagent-dark`].tokens.accent}"></i></span ><span style="background:${yr[`contraagent-light`].tokens.card}"><i style="background:${yr[`contraagent-light`].tokens.accent}"></i></span ></span>`:(e=>{let t=yr[e].tokens;return O`<span class="sw" style="background:${t.card};border-color:${t.line2}" ><i style="background:${t.accent}"></i><i style="background:${t[`code-string`]}"></i><i style="background:${t[`code-keyword`]}"></i ></span>`})(e);return O`<button type="button" class="item" role="menuitemradio" aria-checked=${t?`true`:`false`} tabindex="-1" data-theme=${e} @click=${()=>this.choose(e)}>
928
+ ${n}<span>${Tp(e)}${e===`system`?O`<span class="meta sub">${yr[this.system].label}</span>`:A}</span><span class="rd" aria-hidden="true"></span>
929
+ </button>`}render(){let e=gr.filter(e=>e===`system`||!_r.includes(e));return O`<button type="button" class="trig" aria-haspopup="menu" aria-expanded=${this.open?`true`:`false`} aria-controls="menu" title=${T(w`Theme: ${Tp(this.value)}`)} @click=${()=>this.open=!this.open} @keydown=${e=>this.onTrigKey(e)}>
887
930
  <svg viewBox="0 0 16 16" aria-hidden="true"><circle cx="8" cy="8" r="6.25" fill="none" stroke="currentColor" stroke-width="1.5" /><path d="M8 1.75a6.25 6.25 0 0 1 0 12.5z" fill="currentColor" /></svg>
888
- ${E(`Theme`)}
931
+ ${T(`Theme`)}
889
932
  </button>
890
- ${this.open?k`<div id="menu" class="menu" role="menu" aria-label=${E(`Theme`)} @keydown=${e=>this.onMenuKey(e)}>
933
+ ${this.open?O`<div id="menu" class="menu" role="menu" aria-label=${T(`Theme`)} @keydown=${e=>this.onMenuKey(e)}>
891
934
  ${e.map(e=>this.item(e))}
892
935
  <div role="separator"></div>
893
936
  <div role="group" aria-labelledby="grp-editor">
894
- <div class="grp" id="grp-editor">${E(`Editor themes`)}</div>
937
+ <div class="grp" id="grp-editor">${T(`Editor themes`)}</div>
895
938
  ${_r.map(e=>this.item(e))}
896
939
  </div>
897
- </div>`:j}`}};U([P()],Qf.prototype,`value`,void 0),U([P()],Qf.prototype,`system`,void 0),U([F()],Qf.prototype,`open`,void 0),U([xn(`.trig`)],Qf.prototype,`trig`,void 0),Qf=U([N(`ca-theme-switch`),D()],Qf);var $f=e=>(e.input??0)+(e.output??0)+(e.cache_read??0)+(e.cache_creation??0);function ep(e,t){if(!e.totals.runs)return[];let n=uc(),r=e.period.days.map(e=>sc(e,t)),i=[],a=function(e){let t=new Map;for(let n of[...e.quota,...e.rests]){let e=n.credential??``;if(!n.account)continue;let r=t.get(e)??new Set;r.add(n.account),t.set(e,r)}return(e,n)=>{let r=e??``,i=ns(r)||r||`—`;return n&&(t.get(r)?.size??0)>1?`${i} | ${ss(n)}`:i}}(e),o=e.totals,s=e.daily.filter(e=>Object.keys(e.cost_usd).length).length;var c,l;i.push({id:`totals`,wide:!0,body:{type:`tiles`,collapsed:!1,tiles:[{id:`runs`,label:n.runs,value:String(o.runs),sub:[]},{id:`attempts`,label:n.attempts,value:String(o.attempts),sub:[[(l=o.attempts?`${Math.round(o.ok/o.attempts*100)}%`:`—`,E(T`Done ${l}`)),...o.partial?[X(`partial`,o.partial)]:[]]]},{id:`cost`,label:n.cost,value:o.cost_usd==null?`—`:Y(o.cost_usd),sub:s&&o.cost_usd!=null?[[(c=Y(o.cost_usd/s),E(T`${c} a day`))]]:[]},{id:`tokens`,label:n.tokens,value:J($f(o.tokens)),sub:[[`${n.input} ${J(o.tokens.input)} | ${n.output} ${J(o.tokens.output)}`]]},{id:`time`,label:n.time,value:z(o.wall_s),sub:[]}]}});let u=[...new Set(e.daily.flatMap(e=>Object.keys(e.cost_usd)))].map(t=>({s:t,total:e.daily.reduce((e,n)=>e+(n.cost_usd[t]??0),0)})).sort((e,t)=>t.total-e.total).map(e=>e.s);i.push({id:`cost-by-day`,wide:!0,body:{type:`columns`,collapsed:!1,title:n.costByDay,x:r,unit:`usd`,stacked:!0,series:u.map(t=>({name:t,values:e.daily.map(e=>e.cost_usd[t]??null)}))}});let d=(t,r,i,a)=>({id:t,wide:!0,body:{type:`table`,collapsed:a,title:r,columns:[{id:`kind`,label:n.kind},...e.kinds.some(e=>e.group&&e.group!==e.kind)?[{id:`group`,label:n.group}]:[],{id:`tasks`,label:n.tasks,align:`end`,format:`number`},{id:`passed`,label:n.tasksDone,align:`end`,format:`pct`},...i.some(e=>e.tasks_partial)?[{id:`partial`,label:n.partial,align:`end`,format:`number`}]:[],{id:`attempts`,label:n.attempts,align:`end`,format:`number`},{id:`median`,label:n.medianTime,align:`end`,format:`duration`},{id:`wall`,label:n.totalTime,align:`end`,format:`duration`},{id:`tokens`,label:n.tokens,align:`end`,format:`tokens`},{id:`cost`,label:n.cost,align:`end`,format:`usd`,bar:!0}],rows:[...i].sort((e,t)=>(t.cost_usd??0)-(e.cost_usd??0)||t.attempts-e.attempts).map(e=>({kind:e.kind,group:e.group,tasks:e.tasks,passed:e.tasks?e.tasks_ok/e.tasks:null,partial:e.tasks_partial??0,attempts:e.attempts,median:e.wall_s_median,wall:e.wall_s,tokens:$f(e.tokens),cost:e.cost_usd,...e.tasks_ok<e.tasks?{_tone:`attention`}:{}}))}}),f=e.kinds.filter(e=>e.executor!==`python`),p=e.kinds.filter(e=>e.executor===`python`);f.length&&i.push(d(`kinds`,n.kinds,f,!1)),p.length&&i.push(d(`python-kinds`,dc(n.pythonKinds,p.length),p,f.length>0)),e.models.length&&i.push({id:`models`,wide:!0,body:{type:`table`,collapsed:!1,title:n.models,columns:[{id:`model`,label:n.model},{id:`sessions`,label:n.sessions,align:`end`,format:`number`},{id:`calls`,label:n.calls,align:`end`,format:`number`},{id:`input`,label:n.input,align:`end`,format:`tokens`},{id:`output`,label:n.output,align:`end`,format:`tokens`},{id:`cache_read`,label:n.cacheRead,align:`end`,format:`tokens`},{id:`cache_write`,label:n.cacheWrite,align:`end`,format:`tokens`},{id:`cost`,label:n.cost,align:`end`,format:`usd`,bar:!0},{id:`wall`,label:n.time,align:`end`,format:`duration`},...e.models.some(e=>e.peak_context!=null)?[{id:`peak`,label:gc(),align:`end`,format:`tokens`,tip:_c()}]:[]],rows:e.models.map(e=>{return{model:(t=e.agent,n=e.model,t?`${n||`—`} | ${t}`:n||`—`),sessions:e.sessions,calls:e.calls,input:e.input,output:e.output,cache_read:e.cache_read,cache_write:e.cache_creation,cost:e.cost_usd,wall:e.wall_s,peak:e.peak_context??null};var t,n})}}),e.quota.length&&i.push({id:`usage`,wide:!0,body:{type:`lines`,collapsed:!1,title:n.usage,x:r,unit:`pct`,series:e.quota.map(e=>({name:pc(a(e.credential,e.account),os(e.window)),values:e.daily_peak.map(e=>e==null?null:e/100)}))}});let m=e.stops.filter(e=>e.stop!==`completed`&&e.stop!==`skipped`);return m.length&&i.push({id:`outcomes`,body:{type:`table`,collapsed:!1,title:n.outcomes,columns:[{id:`outcome`,label:n.outcome},{id:`attempts`,label:n.attempts,align:`end`,format:`number`,bar:!0},{id:`kinds`,label:n.kinds}],rows:m.map(e=>({outcome:Z(e.stop),attempts:e.attempts,kinds:Object.entries(e.kinds).sort((e,t)=>t[1]-e[1]).map(([e,t])=>`${e} ${t}`).join(` | `),_tone:`failed`}))}}),e.denials.length&&i.push({id:`denials`,body:{type:`table`,collapsed:!1,title:n.denials,columns:[{id:`tool`,label:n.tool},{id:`count`,label:n.toolCalls,align:`end`,format:`number`,bar:!0},{id:`kinds`,label:n.kinds}],rows:e.denials.map(e=>({tool:e.tool,count:e.count,kinds:Object.entries(e.kinds).map(([e,t])=>`${e} ${t}`).join(` | `)}))}}),e.deferred.length&&i.push({id:`deferred`,body:{type:`table`,collapsed:e.deferred.length>20,title:dc(n.deferred,e.deferred.length),columns:[{id:`when`,label:n.when,format:`datetime`},{id:`task`,label:n.task},{id:`cause`,label:n.cause},{id:`run`,label:n.run}],rows:[...e.deferred].sort((e,t)=>t.ts.localeCompare(e.ts)).map(e=>({when:e.ts,task:e.key,cause:e.cause===`rest`?fc(e.reason):ys({cause:e.cause},e.reason),run:e.run,_tone:`attention`}))}}),e.rests.length&&i.push({id:`rests`,body:{type:`table`,collapsed:!1,title:n.rests,columns:[{id:`when`,label:n.when,format:`datetime`},{id:`identity`,label:n.identity},{id:`event`,label:n.event},{id:`run`,label:n.run}],rows:[...e.rests].sort((e,t)=>(t.ts??``).localeCompare(e.ts??``)).map(e=>{return{when:e.ts,identity:a(e.credential,e.account),event:(t=e.event,t===`end`?E(`ended`):t===`start`?E(`started`):t||`—`),run:e.run};var t})}}),e.starts.counts.some(e=>e.some(e=>e>0))&&i.push({id:`starts`,wide:!0,body:{type:`heatmap`,collapsed:!1,title:n.starts,x:e.starts.hours.map(e=>String(e).padStart(2,`0`)),y:lc(t),values:e.starts.counts.map(e=>e.map(e=>e||null)),unit:`number`}}),i.push({id:`runs`,wide:!0,body:{type:`table`,collapsed:!1,title:n.runs,columns:[{id:`run`,label:n.run},{id:`started`,label:n.started,format:`datetime`},{id:`attempts`,label:n.attempts,align:`end`,format:`number`},{id:`passed`,label:n.done,align:`end`,format:`pct`},...e.runs.some(e=>e.partial)?[{id:`partial`,label:n.partial,align:`end`,format:`number`}]:[],{id:`cost`,label:n.cost,align:`end`,format:`usd`,bar:!0},{id:`wall`,label:n.time,align:`end`,format:`duration`}],rows:e.runs.map(e=>({run:e.run,started:e.started_at||null,attempts:e.attempts,passed:e.attempts?e.ok/e.attempts:null,partial:e.partial??0,cost:e.cost_usd,wall:e.wall_s,...e.ok<e.attempts?{_tone:`attention`}:{}}))}}),i}var tp=()=>Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`;function np(e,t){let n=new Date(`${e}T00:00:00Z`);return n.setUTCDate(n.getUTCDate()-t),n.toISOString().slice(0,10)}function rp(e,t=new Date){let n=e.tz||tp();return{...e.days===0&&e.from&&e.to?{from:e.from,to:e.to}:(()=>{let r=function(e,t=new Date){try{return new Intl.DateTimeFormat(`en-CA`,{timeZone:e,year:`numeric`,month:`2-digit`,day:`2-digit`}).format(t)}catch{return t.toISOString().slice(0,10)}}(n,t);return{from:np(r,Math.max(1,e.days)-1),to:r}})(),tz:n,...e.group?{run_group:e.group}:{}}}var ip=e=>[``,...new Set(e.filter(e=>e.scope===`trends`&&e.tab).map(e=>e.tab))],ap=class extends M{constructor(...e){super(...e),this.view=null,this.days=14,this.from=``,this.to=``,this.tz=``,this.group=``,this.groups=[],this.panels=[],this.exported=!1,this.tab=``,this.tabFocus=new mi(this,{items:()=>[...this.renderRoot.querySelectorAll(`[role="tab"]`)],layout:`horizontal`,wrap:!0})}static{this.styles=[V,O` :host{display:block;}.controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-bottom:14px;}.controls label{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted);}input,select{background:var(--well);border:1px solid var(--line);color:var(--text);border-radius:8px;font:inherit;font-size:12px;padding:4px 8px;}input:focus-visible,select:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:1px;}.period{font-size:12px;color:var(--text-2);}.loading{font-size:12px;color:var(--text-muted);}.err{font-size:12px;color:var(--status-failed);}.wide{margin-bottom:14px;}.pairs{columns:2 440px;column-gap:14px;margin-bottom:14px;}.pairs>.panel{break-inside:avoid;margin-bottom:14px;}.panel{display:block;}.tabs{display:flex;flex-wrap:wrap;gap:2px;border-bottom:1px solid var(--line);margin-bottom:14px;}.tab{background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;padding:8px 14px 9px;color:var(--text-muted);font:inherit;font-weight:500;cursor:pointer;white-space:nowrap;}.tab:hover{color:var(--text-2);}.tab[aria-selected='true']{color:var(--text);font-weight:600;border-bottom-color:var(--accent);}.tab:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:-2px;}`]}go(e){Q(this,`ca-navigate`,e)}render(){let e=this.view,t=this.panels.filter(e=>e.scope===`trends`),n=ip(t),r=n.includes(this.tab)?this.tab:``,i=t.filter(e=>(e.tab??``)===r),a=r?this.trendPanels(i,e?.panels??{},!1):this.trends(i);return k`<h2 class="sr">${ac()}</h2>
940
+ </div>`:A}`}};H([N()],Ep.prototype,`value`,void 0),H([N()],Ep.prototype,`system`,void 0),H([P()],Ep.prototype,`open`,void 0),H([Sn(`.trig`)],Ep.prototype,`trig`,void 0),Ep=H([M(`ca-theme-switch`),E()],Ep);var Dp=e=>(e.input??0)+(e.output??0)+(e.cache_read??0)+(e.cache_creation??0);function Op(e,t){if(!e.totals.runs)return[];let n=Nc(),r=e.period.days.map(e=>Ac(e,t)),i=[],a=function(e){let t=new Map;for(let n of[...e.quota,...e.rests]){let e=n.credential??``;if(!n.account)continue;let r=t.get(e)??new Set;r.add(n.account),t.set(e,r)}return(e,n)=>{let r=e??``,i=ws(r)||r||`—`;return n&&(t.get(r)?.size??0)>1?`${i} | ${ks(n)}`:i}}(e),o=e.totals,s=e.daily.filter(e=>Object.keys(e.cost_usd).length).length;var c,l;i.push({id:`totals`,wide:!0,body:{type:`tiles`,collapsed:!1,tiles:[{id:`runs`,label:n.runs,value:String(o.runs),sub:[]},{id:`attempts`,label:n.attempts,value:String(o.attempts),sub:[[(l=o.attempts?`${Math.round(o.ok/o.attempts*100)}%`:`—`,T(w`Done ${l}`)),...o.partial?[X(`partial`,o.partial)]:[]]]},{id:`cost`,label:n.cost,value:o.cost_usd==null?`—`:Y(o.cost_usd),sub:s&&o.cost_usd!=null?[[(c=Y(o.cost_usd/s),T(w`${c} a day`))]]:[]},{id:`tokens`,label:n.tokens,value:J(Dp(o.tokens)),sub:[[`${n.input} ${J(o.tokens.input)} | ${n.output} ${J(o.tokens.output)}`]]},{id:`time`,label:n.time,value:z(o.wall_s),sub:[]}]}});let u=[...new Set(e.daily.flatMap(e=>Object.keys(e.cost_usd)))].map(t=>({s:t,total:e.daily.reduce((e,n)=>e+(n.cost_usd[t]??0),0)})).sort((e,t)=>t.total-e.total).map(e=>e.s);i.push({id:`cost-by-day`,wide:!0,body:{type:`columns`,collapsed:!1,title:n.costByDay,x:r,unit:`usd`,stacked:!0,series:u.map(t=>({name:t,values:e.daily.map(e=>e.cost_usd[t]??null)}))}});let d=(t,r,i,a)=>({id:t,wide:!0,body:{type:`table`,collapsed:a,title:r,columns:[{id:`kind`,label:n.kind},...e.kinds.some(e=>e.group&&e.group!==e.kind)?[{id:`group`,label:n.group}]:[],{id:`tasks`,label:n.tasks,align:`end`,format:`number`},{id:`passed`,label:n.tasksDone,align:`end`,format:`pct`},...i.some(e=>e.tasks_partial)?[{id:`partial`,label:n.partial,align:`end`,format:`number`}]:[],{id:`attempts`,label:n.attempts,align:`end`,format:`number`},{id:`median`,label:n.medianTime,align:`end`,format:`duration`},{id:`wall`,label:n.totalTime,align:`end`,format:`duration`},{id:`tokens`,label:n.tokens,align:`end`,format:`tokens`},{id:`cost`,label:n.cost,align:`end`,format:`usd`,bar:!0}],rows:[...i].sort((e,t)=>(t.cost_usd??0)-(e.cost_usd??0)||t.attempts-e.attempts).map(e=>({kind:e.kind,group:e.group,tasks:e.tasks,passed:e.tasks?e.tasks_ok/e.tasks:null,partial:e.tasks_partial??0,attempts:e.attempts,median:e.wall_s_median,wall:e.wall_s,tokens:Dp(e.tokens),cost:e.cost_usd,...e.tasks_ok<e.tasks?{_tone:`attention`}:{}}))}}),f=e.kinds.filter(e=>e.executor!==`python`),p=e.kinds.filter(e=>e.executor===`python`);f.length&&i.push(d(`kinds`,n.kinds,f,!1)),p.length&&i.push(d(`python-kinds`,Pc(n.pythonKinds,p.length),p,f.length>0)),e.models.length&&i.push({id:`models`,wide:!0,body:{type:`table`,collapsed:!1,title:n.models,columns:[{id:`model`,label:n.model},{id:`sessions`,label:n.sessions,align:`end`,format:`number`},{id:`calls`,label:n.calls,align:`end`,format:`number`},{id:`input`,label:n.input,align:`end`,format:`tokens`},{id:`output`,label:n.output,align:`end`,format:`tokens`},{id:`cache_read`,label:n.cacheRead,align:`end`,format:`tokens`},{id:`cache_write`,label:n.cacheWrite,align:`end`,format:`tokens`},{id:`cost`,label:n.cost,align:`end`,format:`usd`,bar:!0},{id:`wall`,label:n.time,align:`end`,format:`duration`},...e.models.some(e=>e.peak_context!=null)?[{id:`peak`,label:zc(),align:`end`,format:`tokens`,tip:Bc()}]:[]],rows:e.models.map(e=>{return{model:(t=e.agent,n=e.model,t?`${n||`—`} | ${t}`:n||`—`),sessions:e.sessions,calls:e.calls,input:e.input,output:e.output,cache_read:e.cache_read,cache_write:e.cache_creation,cost:e.cost_usd,wall:e.wall_s,peak:e.peak_context??null};var t,n})}}),e.quota.length&&i.push({id:`usage`,wide:!0,body:{type:`lines`,collapsed:!1,title:n.usage,x:r,unit:`pct`,series:e.quota.map(e=>({name:Ic(a(e.credential,e.account),Os(e.window)),values:e.daily_peak.map(e=>e==null?null:e/100)}))}});let m=e.stops.filter(e=>e.stop!==`completed`&&e.stop!==`skipped`);return m.length&&i.push({id:`outcomes`,body:{type:`table`,collapsed:!1,title:n.outcomes,columns:[{id:`outcome`,label:n.outcome},{id:`attempts`,label:n.attempts,align:`end`,format:`number`,bar:!0},{id:`kinds`,label:n.kinds}],rows:m.map(e=>({outcome:Z(e.stop),attempts:e.attempts,kinds:Object.entries(e.kinds).sort((e,t)=>t[1]-e[1]).map(([e,t])=>`${e} ${t}`).join(` | `),_tone:`failed`}))}}),e.denials.length&&i.push({id:`denials`,body:{type:`table`,collapsed:!1,title:n.denials,columns:[{id:`tool`,label:n.tool},{id:`count`,label:n.toolCalls,align:`end`,format:`number`,bar:!0},{id:`kinds`,label:n.kinds}],rows:e.denials.map(e=>({tool:e.tool,count:e.count,kinds:Object.entries(e.kinds).map(([e,t])=>`${e} ${t}`).join(` | `)}))}}),e.deferred.length&&i.push({id:`deferred`,body:{type:`table`,collapsed:e.deferred.length>20,title:Pc(n.deferred,e.deferred.length),columns:[{id:`when`,label:n.when,format:`datetime`},{id:`task`,label:n.task},{id:`cause`,label:n.cause},{id:`run`,label:n.run}],rows:[...e.deferred].sort((e,t)=>t.ts.localeCompare(e.ts)).map(e=>({when:e.ts,task:e.key,cause:e.cause===`rest`?Fc(e.reason):Vs({cause:e.cause},e.reason),run:e.run,_tone:`attention`}))}}),e.rests.length&&i.push({id:`rests`,body:{type:`table`,collapsed:!1,title:n.rests,columns:[{id:`when`,label:n.when,format:`datetime`},{id:`identity`,label:n.identity},{id:`event`,label:n.event},{id:`run`,label:n.run}],rows:[...e.rests].sort((e,t)=>(t.ts??``).localeCompare(e.ts??``)).map(e=>{return{when:e.ts,identity:a(e.credential,e.account),event:(t=e.event,t===`end`?T(`ended`):t===`start`?T(`started`):t||`—`),run:e.run};var t})}}),e.starts.counts.some(e=>e.some(e=>e>0))&&i.push({id:`starts`,wide:!0,body:{type:`heatmap`,collapsed:!1,title:n.starts,x:e.starts.hours.map(e=>String(e).padStart(2,`0`)),y:Mc(t),values:e.starts.counts.map(e=>e.map(e=>e||null)),unit:`number`}}),i.push({id:`runs`,wide:!0,body:{type:`table`,collapsed:!1,title:n.runs,columns:[{id:`run`,label:n.run},{id:`started`,label:n.started,format:`datetime`},{id:`attempts`,label:n.attempts,align:`end`,format:`number`},{id:`passed`,label:n.done,align:`end`,format:`pct`},...e.runs.some(e=>e.partial)?[{id:`partial`,label:n.partial,align:`end`,format:`number`}]:[],{id:`cost`,label:n.cost,align:`end`,format:`usd`,bar:!0},{id:`wall`,label:n.time,align:`end`,format:`duration`}],rows:e.runs.map(e=>({run:e.run,started:e.started_at||null,attempts:e.attempts,passed:e.attempts?e.ok/e.attempts:null,partial:e.partial??0,cost:e.cost_usd,wall:e.wall_s,...e.ok<e.attempts?{_tone:`attention`}:{}}))}}),i}var kp=()=>Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`;function Ap(e,t){let n=new Date(`${e}T00:00:00Z`);return n.setUTCDate(n.getUTCDate()-t),n.toISOString().slice(0,10)}function jp(e,t=new Date){let n=e.tz||kp();return{...e.days===0&&e.from&&e.to?{from:e.from,to:e.to}:(()=>{let r=function(e,t=new Date){try{return new Intl.DateTimeFormat(`en-CA`,{timeZone:e,year:`numeric`,month:`2-digit`,day:`2-digit`}).format(t)}catch{return t.toISOString().slice(0,10)}}(n,t);return{from:Ap(r,Math.max(1,e.days)-1),to:r}})(),tz:n,...e.group?{run_group:e.group}:{}}}var Mp=e=>[``,...new Set(e.filter(e=>e.scope===`trends`&&e.tab).map(e=>e.tab))],Np=class extends j{constructor(...e){super(...e),this.view=null,this.days=14,this.from=``,this.to=``,this.tz=``,this.group=``,this.groups=[],this.panels=[],this.exported=!1,this.tab=``,this.tabFocus=new hi(this,{items:()=>[...this.renderRoot.querySelectorAll(`[role="tab"]`)],layout:`horizontal`,wrap:!0})}static{this.styles=[B,D` :host{display:block;}.controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-bottom:14px;}.controls label{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted);}input,select{background:var(--well);border:1px solid var(--line);color:var(--text);border-radius:8px;font:inherit;font-size:12px;padding:4px 8px;}input:focus-visible,select:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:1px;}.period{font-size:12px;color:var(--text-2);}.loading{font-size:12px;color:var(--text-muted);}.err{font-size:12px;color:var(--status-failed);}.wide{margin-bottom:14px;}.pairs{columns:2 440px;column-gap:14px;margin-bottom:14px;}.pairs>.panel{break-inside:avoid;margin-bottom:14px;}.panel{display:block;}.tabs{display:flex;flex-wrap:wrap;gap:2px;border-bottom:1px solid var(--line);margin-bottom:14px;}.tab{background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;padding:8px 14px 9px;color:var(--text-muted);font:inherit;font-weight:500;cursor:pointer;white-space:nowrap;}.tab:hover{color:var(--text-2);}.tab[aria-selected='true']{color:var(--text);font-weight:600;border-bottom-color:var(--accent);}.tab:focus-visible{outline:var(--focus-width) solid var(--focus);outline-offset:-2px;}`]}go(e){Q(this,`ca-navigate`,e)}render(){let e=this.view,t=this.panels.filter(e=>e.scope===`trends`),n=Mp(t),r=n.includes(this.tab)?this.tab:``,i=t.filter(e=>(e.tab??``)===r),a=r?this.trendPanels(i,e?.panels??{},!1):this.trends(i);return O`<h2 class="sr">${Oc()}</h2>
898
941
  ${this.controls()}
899
- ${e?.error?k`<p class="err" role="alert">${E(`No answer from the monitor`)} | ${e.error.message}</p>`:j}
900
- ${n.length>1?k`${this.tabList(n,r)}<div role="tabpanel" id="trends-tabpanel" aria-labelledby=${`trends-tab-${n.indexOf(r)}`}>${a}</div>`:a}`}tabList(e,t){return k`<div class="tabs" role="tablist" aria-label=${ac()}>
901
- ${e.map((e,n)=>k`<button type="button" role="tab" class="tab" id=${`trends-tab-${n}`} aria-selected=${e===t?`true`:`false`} aria-controls="trends-tabpanel" @click=${()=>e!==t&&Q(this,`ca-navigate`,{trendsTab:e})}>${e||E(`Summary`)}</button>`)}
902
- </div>`}updated(){let e=ip(this.panels);this.tabFocus.set(Math.max(0,e.indexOf(this.tab)))}trends(e){let t=this.view,n=t?.data??null,r=n?ep(n,jn()):[],i=r.filter(e=>e.wide),a=r.filter(e=>!e.wide),o=[`totals`,`cost-by-day`,`kinds`,`python-kinds`,`models`,`usage`],s=i.filter(e=>o.includes(e.id)),c=i.filter(e=>!o.includes(e.id)),l=(e,t)=>k`<section class="panel" data-section=${t}><ca-panel-body .body=${e}></ca-panel-body></section>`;return k`${!n&&t?.loading?k`<p class="loading">${E(`Loading…`)}</p>`:j}
903
- ${n&&!r.length?k`<div class="blank small"><span>${E(`No runs in this period`)}</span></div>`:j}
904
- ${H(s,e=>e.id,e=>k`<div class="wide">${l(e.body,e.id)}</div>`)}
905
- ${a.length?k`<div class="pairs">${H(a,e=>e.id,e=>l(e.body,e.id))}</div>`:j}
906
- ${H(c,e=>e.id,e=>k`<div class="wide">${l(e.body,e.id)}</div>`)}
907
- ${this.trendPanels(e,t?.panels??{},!0)}`}controls(){let e=this.view?.data,t=e?k`<span class="period">${function(e,t,n,r=jn()){let i=t.slice(0,4);return E(T`${sc(e,r)} to ${sc(t,r)}, ${i} | ${n}`)}(e.period.from,e.period.to,e.period.tz)}</span>`:j;if(this.exported)return k`<div class="controls"><span class="meta">${E(`Period of this export`)}</span>${t}</div>`;let n=this.days?String(this.days):`dates`,r=e?.period.to||new Date().toISOString().slice(0,10),i=[...new Set([this.tz,Intl.DateTimeFormat().resolvedOptions().timeZone,`UTC`].filter(Boolean))];return k`<div class="controls">
908
- <cae-segmented label=${E(`Period`)} .value=${n} .options=${[...rr.map(e=>({value:String(e),label:cc(e)})),{value:`dates`,label:E(`Dates`)}]} @cae-change=${e=>e.detail.value===`dates`?this.go({days:0,from:this.from||np(r,(this.days||14)-1),to:this.to||r}):this.go({days:Number(e.detail.value),from:``,to:``})}></cae-segmented>
909
- ${this.days===0?k`<label>${E(`From`)} <input type="date" .value=${this.from} max=${this.to||j} @change=${e=>this.go({days:0,from:e.target.value,to:this.to})} /></label>
910
- <label>${E(`To`)} <input type="date" .value=${this.to} min=${this.from||j} @change=${e=>this.go({days:0,from:this.from,to:e.target.value})} /></label>`:j}
911
- <label>${E(`Time zone`)}
942
+ ${e?.error?O`<p class="err" role="alert">${T(`No answer from the monitor`)} | ${e.error.message}</p>`:A}
943
+ ${n.length>1?O`${this.tabList(n,r)}<div role="tabpanel" id="trends-tabpanel" aria-labelledby=${`trends-tab-${n.indexOf(r)}`}>${a}</div>`:a}`}tabList(e,t){return O`<div class="tabs" role="tablist" aria-label=${Oc()}>
944
+ ${e.map((e,n)=>O`<button type="button" role="tab" class="tab" id=${`trends-tab-${n}`} aria-selected=${e===t?`true`:`false`} aria-controls="trends-tabpanel" @click=${()=>e!==t&&Q(this,`ca-navigate`,{trendsTab:e})}>${e||T(`Summary`)}</button>`)}
945
+ </div>`}updated(){let e=Mp(this.panels);this.tabFocus.set(Math.max(0,e.indexOf(this.tab)))}trends(e){let t=this.view,n=t?.data??null,r=n?Op(n,F()):[],i=r.filter(e=>e.wide),a=r.filter(e=>!e.wide),o=[`totals`,`cost-by-day`,`kinds`,`python-kinds`,`models`,`usage`],s=i.filter(e=>o.includes(e.id)),c=i.filter(e=>!o.includes(e.id)),l=(e,t)=>O`<section class="panel" data-section=${t}><ca-panel-body .body=${e}></ca-panel-body></section>`;return O`${!n&&t?.loading?O`<p class="loading">${T(`Loading…`)}</p>`:A}
946
+ ${n&&!r.length?O`<div class="blank small"><span>${T(`No runs in this period`)}</span></div>`:A}
947
+ ${V(s,e=>e.id,e=>O`<div class="wide">${l(e.body,e.id)}</div>`)}
948
+ ${a.length?O`<div class="pairs">${V(a,e=>e.id,e=>l(e.body,e.id))}</div>`:A}
949
+ ${V(c,e=>e.id,e=>O`<div class="wide">${l(e.body,e.id)}</div>`)}
950
+ ${this.trendPanels(e,t?.panels??{},!0)}`}controls(){let e=this.view?.data,t=e?O`<span class="period">${function(e,t,n,r=F()){let i=t.slice(0,4);return T(w`${Ac(e,r)} to ${Ac(t,r)}, ${i} | ${n}`)}(e.period.from,e.period.to,e.period.tz)}</span>`:A;if(this.exported)return O`<div class="controls"><span class="meta">${T(`Period of this export`)}</span>${t}</div>`;let n=this.days?String(this.days):`dates`,r=e?.period.to||new Date().toISOString().slice(0,10),i=[...new Set([this.tz,Intl.DateTimeFormat().resolvedOptions().timeZone,`UTC`].filter(Boolean))];return O`<div class="controls">
951
+ <cae-segmented label=${T(`Period`)} .value=${n} .options=${[...rr.map(e=>({value:String(e),label:jc(e)})),{value:`dates`,label:T(`Dates`)}]} @cae-change=${e=>e.detail.value===`dates`?this.go({days:0,from:this.from||Ap(r,(this.days||14)-1),to:this.to||r}):this.go({days:Number(e.detail.value),from:``,to:``})}></cae-segmented>
952
+ ${this.days===0?O`<label>${T(`From`)} <input type="date" .value=${this.from} max=${this.to||A} @change=${e=>this.go({days:0,from:e.target.value,to:this.to})} /></label>
953
+ <label>${T(`To`)} <input type="date" .value=${this.to} min=${this.from||A} @change=${e=>this.go({days:0,from:this.from,to:e.target.value})} /></label>`:A}
954
+ <label>${T(`Time zone`)}
912
955
  <select @change=${e=>this.go({tz:e.target.value})}>
913
- ${i.map(e=>k`<option value=${e} ?selected=${e===(this.tz||i[0])}>${e}</option>`)}
956
+ ${i.map(e=>O`<option value=${e} ?selected=${e===(this.tz||i[0])}>${e}</option>`)}
914
957
  </select></label>
915
- ${this.groups.length>1?k`<label>${E(`Run group`)}
958
+ ${this.groups.length>1?O`<label>${T(`Run group`)}
916
959
  <select @change=${e=>this.go({group:e.target.value})}>
917
- <option value="" ?selected=${!this.group}>${E(`All run groups`)}</option>
918
- ${this.groups.map(e=>k`<option value=${e} ?selected=${e===this.group}>${e}</option>`)}
919
- </select></label>`:j}
960
+ <option value="" ?selected=${!this.group}>${T(`All run groups`)}</option>
961
+ ${this.groups.map(e=>O`<option value=${e} ?selected=${e===this.group}>${e}</option>`)}
962
+ </select></label>`:A}
920
963
  ${t}
921
- ${this.view?.loading&&e?k`<span class="loading" aria-live="polite">${E(`Loading…`)}</span>`:j}
922
- </div>`}trendPanels(e,t,n){return e.length?k`${n?k`<h3 class="sect-h">${uc().trendPanels}</h3>`:j}
923
- ${e.map(e=>k`<section class="panel wide" data-panel=${e.name}>
924
- <h3>${e.icon} ${e.title||e.name}${e.description?k`<span class="r">${e.description}</span>`:j}</h3>
925
- ${t[e.name]?k`<ca-panel-body .body=${t[e.name]}></ca-panel-body>`:k`<p class="loading">${E(`Loading…`)}</p>`}
926
- </section>`)}`:j}};U([P({attribute:!1})],ap.prototype,`view`,void 0),U([P({type:Number})],ap.prototype,`days`,void 0),U([P()],ap.prototype,`from`,void 0),U([P()],ap.prototype,`to`,void 0),U([P()],ap.prototype,`tz`,void 0),U([P()],ap.prototype,`group`,void 0),U([P({attribute:!1})],ap.prototype,`groups`,void 0),U([P({attribute:!1})],ap.prototype,`panels`,void 0),U([P({type:Boolean})],ap.prototype,`exported`,void 0),U([P()],ap.prototype,`tab`,void 0),ap=U([N(`ca-trends`),D()],ap);var $=class extends M{static{this.styles=[Or,V,Fc,jc]}constructor(){super(),this.baseUrl=``,this.exportUrl=``,this.history=`url`,this.shortcuts=``,this.run=``,this.locale=``,this.theme=``,this.live=!1,this.pickerOpen=!1,this.qDraft=null,this.themes=new Ar(this,{theme:()=>this.theme,pageWide:()=>this.history===`url`}),this.tabFocus=new mi(this,{items:()=>[...this.renderRoot.querySelectorAll(`[role="tablist"] [role="tab"]`)],layout:`horizontal`,wrap:!0}),this.storeBase=``,this.viewRouterMode=`url`,this.storeCleanups=[],this.mainScroll=new er(`main`,()=>Xn(this)),this.pendingScroll=null,this.qTimer=null,this.cleanups=[],this.localMemory=new qn,this.onOutsideClick=e=>{e.composedPath().some(e=>e instanceof HTMLElement&&(e.localName===`ca-run-picker`||e.classList.contains(`runbtn`)))||(this.pickerOpen=!1)},this.outsideClickOn=!1,this.navObserver=null,this.navObserved=null,this.locales=!1,this.language=new fr(this,{locale:()=>this.locale,pageWide:()=>this.history===`url`}),new pr(this,e=>this.onKey(e),()=>this.shortcutScope)}async scheduleUpdate(){return await this.language.ready,super.scheduleUpdate()}connectedCallback(){this.locales=An(),function(e=document){if(kr.has(e))return;let t=Dr.styleSheet;t&&`adoptedStyleSheets`in e&&(e.adoptedStyleSheets=[...e.adoptedStyleSheets,t],kr.add(e))}(this.ownerDocument),super.connectedCallback(),this.openStore(),this.openViewRouter(),this.store.start(),this.cleanups.push(()=>{this.listenOutside(!1),this.navObserver?.disconnect(),this.navObserver=null,this.navObserved=null}),this.addEventListener(`ca-open-task`,e=>{this.navigate({tab:`stream`,key:e.detail.key,...e.detail.view?{view:e.detail.view}:{}})}),this.addEventListener(`ca-navigate`,e=>{let{replace:t,...n}=e.detail;this.navigate(n,{replace:!0===t})}),this.addEventListener(`ca-select-run`,e=>this.navigate({run:e.detail.run,page:``})),this.addEventListener(`ca-filter`,e=>this.navigate(e.detail)),this.addEventListener(`ca-choose-theme`,e=>{this.theme=e.detail.theme,function(e,t=Er()){try{t?.setItem(Tr,e)}catch{}}(e.detail.theme)})}get source(){return this.exportUrl?`export:${this.exportUrl}`:this.baseUrl}openStore(){if(this.storeBase=this.source,this.exportUrl){let e=function(e,t={}){let n=e.endsWith(`/`)?e:`${e}/`,r=t.fetch??globalThis.fetch,a=new Map;function o(e){let t=a.get(e);return t||(t=async function(e){let t;try{t=await r(new Request(e))}catch{throw new i(e,`network`)}let n=(t.headers.get(`Content-Type`)??``).split(`;`)[0].trim().toLowerCase();if(!t.ok)throw new i(e,`status`,t.status,n);try{return await t.json()}catch{throw new i(e,`not-json`,t.status,n)}}(n+e),t.catch(()=>a.delete(e)),a.set(e,t)),t}let s=(e,t)=>`runs/${be(e)}/${t}`,c=e=>Promise.reject(new i(n+e,`status`,404));return{baseUrl:n.replace(/\/$/,``),file:o,info:()=>o(`info.json`),runs:()=>o(`runs.json`),hosts:()=>c(`hosts.json`),async journal(e,t=0){let n=await o(s(e,`journal.json`));return t>0?{entries:n.entries.slice(t),total:n.total}:n},definitions:e=>o(s(e,`definitions.json`)),async task(e,t){let[n,r,i,a]=await Promise.all([o(s(e,`tasks/${be(xe(t))}.json`)),o(s(e,`journal.json`)),o(s(e,`definitions.json`)),o(s(e,`plan.json`))]),c=r.entries.filter(e=>e.key===t),l=c.at(-1)?.kind??a.nodes.find(e=>e.key===t)?.kind;return{...n,rows:c,definition:i.find(e=>e.kind===l)??null}},stream:(e,t)=>c(s(e,`streams/${be(xe(t))}.json`)),panel:(e,t)=>o(s(e,`panels/${be(t)}.json`)),trends:()=>o(`trends.json`),trendsPanel:e=>o(`trends/panels/${be(e)}.json`)}}(new URL(this.exportUrl,this.ownerDocument.baseURI).href);this.store=new ye({client:e,openRunFeed:Ce(e),runsEveryMs:0})}else this.store=new ye({baseUrl:this.baseUrl});this.show(this.store.snapshot),this.storeCleanups.push(this.store.subscribe(e=>{this.show(e),this.pickDefaultRun()}),this.store.onNewRow(e=>this.toasts?.show(...Oc(e,this.snap.run))))}closeStore(){for(let e of this.storeCleanups.splice(0))e();this.store.stop()}openViewRouter(){this.viewRouterMode=this.history,Yn(this,this.history===`memory`?this.localMemory:null);let e=this.viewRoute?this.history===`memory`?this.viewRoute:{}:this.run?{run:this.run}:{};this.viewRouter=new dr(this.history,(e,t)=>this.onViewRoute(e,t),e,Gn),this.viewRouter.start()}willUpdate(e){this.isConnected&&this.store&&(this.source!==this.storeBase&&(this.closeStore(),this.openStore(),this.navigate({run:this.run},{replace:!0}),this.store.selectRun(this.viewRoute.run),this.store.start()),this.history!==this.viewRouterMode&&(this.viewRouter.stop(),this.openViewRouter()),e.has(`run`)&&e.get(`run`)!==void 0&&this.run&&this.navigate({run:this.run}))}show(e){e.error&&e.error!==this.snap?.error&&console.error(Dc(e.error)),this.snap=e,this.live=fe(e.state,de(e.runs,e.run))}get shortcutScope(){return(e=>e===`page`||e===`element`||e===`off`)(this.shortcuts)?this.shortcuts:this.history===`url`?`page`:`element`}listenOutside(e){e!==this.outsideClickOn&&(this.outsideClickOn=e,e?document.addEventListener(`click`,this.onOutsideClick):document.removeEventListener(`click`,this.onOutsideClick))}get shownTheme(){return this.themes.shown}disconnectedCallback(){super.disconnectedCallback();for(let e of this.cleanups.splice(0))e();Yn(this,null),this.viewRouter.stop(),this.closeStore(),this.mainScroll.detach()}navigate(e,t={}){this.viewRouter.navigate(e,t)}onViewRoute(e,t){let n=this.viewRoute;this.viewRoute=e,t!==`replace`&&(this.qDraft=null),this.store.selectRun(e.run);let r=n?.page===`trends`&&JSON.stringify(rp(n))===JSON.stringify(rp(e));e.page===`trends`?r||this.store.loadTrends(rp(e)):this.store.closeTrends(),this.pickDefaultRun(),t!==`replace`&&(this.pendingScroll=t)}pickDefaultRun(){let{info:e,runs:t}=this.snap;if(this.viewRoute.page===`trends`)return;if(this.viewRoute.page===`hosts`){if(!e.api_version||e.hosts)return;this.navigate({page:``},{replace:!0})}let n=t[0];!this.viewRoute.run&&n&&this.navigate({run:n.run},{replace:!0})}onKey(e){if(e.key===`r`)e.preventDefault(),this.pickerOpen=!0;else if(e.key===`/`)e.preventDefault(),this.renderRoot.querySelector(`.bar input`)?.focus();else if(/^[1-9]$/.test(e.key)&&!this.viewRoute.page){let t=Mc(this.snap.info.panels)[Number(e.key)-1];t&&this.navigate({tab:t.id})}}selectedTab(){return Mc(this.snap.info.panels).findIndex(e=>e.id===this.viewRoute.tab)}closePicker(){let e=this.picker?.matches(`:focus-within`);this.pickerOpen=!1,e&&this.runBtn?.focus()}updated(){this.history===`url`&&this.snap&&(document.title=E(T`${this.snap.info.title} monitor`)),this.listenOutside(this.isConnected&&this.pickerOpen),this.observeNav(),this.snap&&this.viewRoute&&this.tabFocus.set(Math.max(0,this.selectedTab())),Pc(this.renderRoot),this.main&&this.mainScroll.attach(this.main),this.pendingScroll&&=(this.pendingScroll===`push`?this.mainScroll.reset():this.mainScroll.restore(),null)}observeNav(){let e=this.renderRoot.querySelector(`nav`);e&&typeof ResizeObserver<`u`&&this.navObserved!==e&&(this.navObserver?this.navObserver.disconnect():this.navObserver=new ResizeObserver(()=>Pc(this.renderRoot)),this.navObserver.observe(e),this.navObserved=e)}setQ(e){this.qDraft=e,this.qTimer&&clearTimeout(this.qTimer),this.qTimer=setTimeout(()=>{this.qTimer=null,this.navigate({q:e})},250)}pickLocale(e){this.locale=e,In(e)}render(){if(!this.snap||!this.viewRoute)return j;let{snap:e,viewRoute:t}=this,n=pe(e.state.procs),r=S(e.state.journal,e.state.plan),i=this.selectedTab(),a=this.shortcutScope!==`off`,o=!!e.info.hosts,s=t.page===`hosts`,c=t.page===`trends`;return k`
964
+ ${this.view?.loading&&e?O`<span class="loading" aria-live="polite">${T(`Loading…`)}</span>`:A}
965
+ </div>`}trendPanels(e,t,n){return e.length?O`${n?O`<h3 class="sect-h">${Nc().trendPanels}</h3>`:A}
966
+ ${e.map(e=>O`<section class="panel wide" data-panel=${e.name}>
967
+ <h3>${e.icon} ${e.title||e.name}${e.description?O`<span class="r">${e.description}</span>`:A}</h3>
968
+ ${t[e.name]?O`<ca-panel-body .body=${t[e.name]}></ca-panel-body>`:O`<p class="loading">${T(`Loading…`)}</p>`}
969
+ </section>`)}`:A}};H([N({attribute:!1})],Np.prototype,`view`,void 0),H([N({type:Number})],Np.prototype,`days`,void 0),H([N()],Np.prototype,`from`,void 0),H([N()],Np.prototype,`to`,void 0),H([N()],Np.prototype,`tz`,void 0),H([N()],Np.prototype,`group`,void 0),H([N({attribute:!1})],Np.prototype,`groups`,void 0),H([N({attribute:!1})],Np.prototype,`panels`,void 0),H([N({type:Boolean})],Np.prototype,`exported`,void 0),H([N()],Np.prototype,`tab`,void 0),Np=H([M(`ca-trends`),E()],Np);var $=class extends j{static{this.styles=[Or,B,il,el]}constructor(){super(),this.baseUrl=``,this.exportUrl=``,this.history=`url`,this.shortcuts=``,this.run=``,this.locale=``,this.theme=``,this.live=!1,this.pickerOpen=!1,this.qDraft=null,this.themes=new Ar(this,{theme:()=>this.theme,pageWide:()=>this.history===`url`}),this.tabFocus=new hi(this,{items:()=>[...this.renderRoot.querySelectorAll(`[role="tablist"] [role="tab"]`)],layout:`horizontal`,wrap:!0}),this.storeBase=``,this.viewRouterMode=`url`,this.storeCleanups=[],this.mainScroll=new er(`main`,()=>Xn(this)),this.pendingScroll=null,this.qTimer=null,this.cleanups=[],this.localMemory=new qn,this.onOutsideClick=e=>{e.composedPath().some(e=>e instanceof HTMLElement&&(e.localName===`ca-run-picker`||e.classList.contains(`runbtn`)))||(this.pickerOpen=!1)},this.outsideClickOn=!1,this.navObserver=null,this.navObserved=null,this.locales=!1,this.language=new fr(this,{locale:()=>this.locale,pageWide:()=>this.history===`url`}),new pr(this,e=>this.onKey(e),()=>this.shortcutScope)}async scheduleUpdate(){return await this.language.ready,super.scheduleUpdate()}connectedCallback(){this.locales=jn(),function(e=document){if(kr.has(e))return;let t=Dr.styleSheet;t&&`adoptedStyleSheets`in e&&(e.adoptedStyleSheets=[...e.adoptedStyleSheets,t],kr.add(e))}(this.ownerDocument),super.connectedCallback(),this.openStore(),this.openViewRouter(),this.store.start(),this.cleanups.push(()=>{this.listenOutside(!1),this.navObserver?.disconnect(),this.navObserver=null,this.navObserved=null}),this.addEventListener(`ca-open-task`,e=>{this.navigate({tab:`stream`,key:e.detail.key,...e.detail.view?{view:e.detail.view}:{}})}),this.addEventListener(`ca-navigate`,e=>{let{replace:t,...n}=e.detail;this.navigate(n,{replace:!0===t})}),this.addEventListener(`ca-select-run`,e=>this.navigate({run:e.detail.run,page:``})),this.addEventListener(`ca-filter`,e=>this.navigate(e.detail)),this.addEventListener(`ca-choose-theme`,e=>{this.theme=e.detail.theme,function(e,t=Er()){try{t?.setItem(Tr,e)}catch{}}(e.detail.theme)})}get source(){return this.exportUrl?`export:${this.exportUrl}`:this.baseUrl}openStore(){if(this.storeBase=this.source,this.exportUrl){let e=function(e,t={}){let n=e.endsWith(`/`)?e:`${e}/`,r=t.fetch??globalThis.fetch,a=new Map;function o(e){let t=a.get(e);return t||(t=async function(e){let t;try{t=await r(new Request(e))}catch{throw new i(e,`network`)}let n=(t.headers.get(`Content-Type`)??``).split(`;`)[0].trim().toLowerCase();if(!t.ok)throw new i(e,`status`,t.status,n);try{return await t.json()}catch{throw new i(e,`not-json`,t.status,n)}}(n+e),t.catch(()=>a.delete(e)),a.set(e,t)),t}let s=(e,t)=>`runs/${xe(e)}/${t}`,c=e=>Promise.reject(new i(n+e,`status`,404));return{baseUrl:n.replace(/\/$/,``),file:o,info:()=>o(`info.json`),runs:()=>o(`runs.json`),hosts:()=>c(`hosts.json`),async journal(e,t=0){let n=await o(s(e,`journal.json`));return t>0?{entries:n.entries.slice(t),total:n.total}:n},definitions:e=>o(s(e,`definitions.json`)),async task(e,t){let[n,r,i,a]=await Promise.all([o(s(e,`tasks/${xe(Se(t))}.json`)),o(s(e,`journal.json`)),o(s(e,`definitions.json`)),o(s(e,`plan.json`))]),c=r.entries.filter(e=>e.key===t),l=c.at(-1)?.kind??a.nodes.find(e=>e.key===t)?.kind;return{...n,rows:c,definition:i.find(e=>e.kind===l)??null}},stream:(e,t)=>c(s(e,`streams/${xe(Se(t))}.json`)),panel:(e,t)=>o(s(e,`panels/${xe(t)}.json`)),trends:()=>o(`trends.json`),trendsPanel:e=>o(`trends/panels/${xe(e)}.json`)}}(new URL(this.exportUrl,this.ownerDocument.baseURI).href);this.store=new be({client:e,openRunFeed:we(e),runsEveryMs:0})}else this.store=new be({baseUrl:this.baseUrl});this.show(this.store.snapshot),this.storeCleanups.push(this.store.subscribe(e=>{this.show(e),this.pickDefaultRun()}),this.store.onNewRow(e=>this.toasts?.show(...Zc(e,this.snap.run))))}closeStore(){for(let e of this.storeCleanups.splice(0))e();this.store.stop()}openViewRouter(){this.viewRouterMode=this.history,Yn(this,this.history===`memory`?this.localMemory:null);let e=this.viewRoute?this.history===`memory`?this.viewRoute:{}:this.run?{run:this.run}:{};this.viewRouter=new dr(this.history,(e,t)=>this.onViewRoute(e,t),e,Gn),this.viewRouter.start()}willUpdate(e){this.isConnected&&this.store&&(this.source!==this.storeBase&&(this.closeStore(),this.openStore(),this.navigate({run:this.run},{replace:!0}),this.store.selectRun(this.viewRoute.run),this.store.start()),this.history!==this.viewRouterMode&&(this.viewRouter.stop(),this.openViewRouter()),e.has(`run`)&&e.get(`run`)!==void 0&&this.run&&this.navigate({run:this.run}))}show(e){e.error&&e.error!==this.snap?.error&&console.error(Xc(e.error)),this.snap=e,this.live=pe(e.state,fe(e.runs,e.run))}get shortcutScope(){return(e=>e===`page`||e===`element`||e===`off`)(this.shortcuts)?this.shortcuts:this.history===`url`?`page`:`element`}listenOutside(e){e!==this.outsideClickOn&&(this.outsideClickOn=e,e?document.addEventListener(`click`,this.onOutsideClick):document.removeEventListener(`click`,this.onOutsideClick))}get shownTheme(){return this.themes.shown}disconnectedCallback(){super.disconnectedCallback();for(let e of this.cleanups.splice(0))e();Yn(this,null),this.viewRouter.stop(),this.closeStore(),this.mainScroll.detach()}navigate(e,t={}){this.viewRouter.navigate(e,t)}onViewRoute(e,t){let n=this.viewRoute;this.viewRoute=e,t!==`replace`&&(this.qDraft=null),this.store.selectRun(e.run);let r=n?.page===`trends`&&JSON.stringify(jp(n))===JSON.stringify(jp(e));e.page===`trends`?r||this.store.loadTrends(jp(e)):this.store.closeTrends(),this.pickDefaultRun(),t!==`replace`&&(this.pendingScroll=t)}pickDefaultRun(){let{info:e,runs:t}=this.snap;if(this.viewRoute.page===`trends`)return;if(this.viewRoute.page===`hosts`){if(!e.api_version||e.hosts)return;this.navigate({page:``},{replace:!0})}let n=t[0];!this.viewRoute.run&&n&&this.navigate({run:n.run},{replace:!0})}onKey(e){if(e.key===`r`)e.preventDefault(),this.pickerOpen=!0;else if(e.key===`/`)e.preventDefault(),this.renderRoot.querySelector(`.bar input`)?.focus();else if(/^[1-9]$/.test(e.key)&&!this.viewRoute.page){let t=tl(this.snap.info.panels)[Number(e.key)-1];t&&this.navigate({tab:t.id})}}selectedTab(){return tl(this.snap.info.panels).findIndex(e=>e.id===this.viewRoute.tab)}closePicker(){let e=this.picker?.matches(`:focus-within`);this.pickerOpen=!1,e&&this.runBtn?.focus()}updated(){this.history===`url`&&this.snap&&(document.title=T(w`${this.snap.info.title} monitor`)),this.listenOutside(this.isConnected&&this.pickerOpen),this.observeNav(),this.snap&&this.viewRoute&&this.tabFocus.set(Math.max(0,this.selectedTab())),rl(this.renderRoot),this.main&&this.mainScroll.attach(this.main),this.pendingScroll&&=(this.pendingScroll===`push`?this.mainScroll.reset():this.mainScroll.restore(),null)}observeNav(){let e=this.renderRoot.querySelector(`nav`);e&&typeof ResizeObserver<`u`&&this.navObserved!==e&&(this.navObserver?this.navObserver.disconnect():this.navObserver=new ResizeObserver(()=>rl(this.renderRoot)),this.navObserver.observe(e),this.navObserved=e)}setQ(e){this.qDraft=e,this.qTimer&&clearTimeout(this.qTimer),this.qTimer=setTimeout(()=>{this.qTimer=null,this.navigate({q:e})},250)}pickLocale(e){this.locale=e,In(e)}render(){if(!this.snap||!this.viewRoute)return A;let{snap:e,viewRoute:t}=this,n=me(e.state.procs),r=x(e.state.journal,e.state.plan),i=this.selectedTab(),a=this.shortcutScope!==`off`,o=!!e.info.hosts,s=t.page===`hosts`,c=t.page===`trends`;return O`
927
970
  <header>
928
- ${u=e.info.title,k`<div class="brand">
971
+ ${u=e.info.title,O`<div class="brand">
929
972
  <svg viewBox="12 12 96 96" aria-hidden="true">
930
973
  <defs>
931
974
  <linearGradient id="brand-spark" x1="0" y1="0" x2="1" y2="1">
@@ -943,43 +986,43 @@ ${u=e.info.title,k`<div class="brand">
943
986
  </svg>
944
987
  <span title=${u}>${u}</span>
945
988
  </div>`}
946
- <button type="button" class="runbtn" title=${E(a?`Switch run (r)`:`Switch run`)} aria-haspopup="dialog" aria-expanded=${this.pickerOpen?`true`:`false`} @click=${()=>this.pickerOpen=!this.pickerOpen}>
989
+ <button type="button" class="runbtn" title=${T(a?`Switch run (r)`:`Switch run`)} aria-haspopup="dialog" aria-expanded=${this.pickerOpen?`true`:`false`} @click=${()=>this.pickerOpen=!this.pickerOpen}>
947
990
  ${s?this.hostsLabel():c?this.trendsLabel():this.runLabel(o,r)}
948
991
  <span class="chev" aria-hidden="true">▾</span>
949
992
  </button>
950
993
  <div class="hdr-right">
951
- ${((e,t)=>k`<span class="nowline">${t.length?E(k`Running ${t.slice(0,3).map(t=>Ic(e,q(t),{key:t.key}))}${t.length>3?k` <span>+${t.length-3}</span>`:j}`):j}</span>`)(this,n)}
994
+ ${((e,t)=>O`<span class="nowline">${t.length?T(O`Running ${t.slice(0,3).map(t=>al(e,q(t),{key:t.key}))}${t.length>3?O` <span>+${t.length-3}</span>`:A}`):A}</span>`)(this,n)}
952
995
  <ca-theme-switch .value=${this.themes.choice} .system=${this.themes.system}></ca-theme-switch>
953
- ${this.locales?k`<cae-segmented class="langs" label=${E(`Language`)} .value=${jn()} .options=${Dn.map(e=>({value:e,label:On[e],lang:e}))} @cae-change=${e=>Pn(e.detail.value)&&this.pickLocale(e.detail.value)}></cae-segmented>`:j}
954
- ${e.info.export?Zr({text:tc(e.info.export),tone:`muted`,title:rc(e.info.export)}):(e=>{let t=E(e?`Connected to the monitor server`:`Not connected to the monitor server`);return k`<span role="img" aria-label=${t} title=${t}><span class="live-dot ${e?``:`off`}"></span></span>`})(e.connected)}
996
+ ${this.locales?O`<cae-segmented class="langs" label=${T(`Language`)} .value=${F()} .options=${On.map(e=>({value:e,label:kn[e],lang:e}))} @cae-change=${e=>Pn(e.detail.value)&&this.pickLocale(e.detail.value)}></cae-segmented>`:A}
997
+ ${e.info.export?Qr({text:wc(e.info.export),tone:`muted`,title:Ec(e.info.export)}):(e=>{let t=T(e?`Connected to the monitor server`:`Not connected to the monitor server`);return O`<span role="img" aria-label=${t} title=${t}><span class="live-dot ${e?``:`off`}"></span></span>`})(e.connected)}
955
998
  <ca-clock class="clock"></ca-clock>
956
999
  </div>
957
1000
  <ca-run-picker .runs=${e.runs} current=${t.run} ?open=${this.pickerOpen} ?hub=${o} .hosts=${e.hosts?.hosts??[]} page=${t.page} @ca-close=${()=>this.closePicker()}></ca-run-picker>
958
1001
  </header>
959
- ${s?k`${this.renderApiError()}<main id="main"><ca-hosts .hosts=${e.hosts}></ca-hosts></main>`:c?k`${this.renderApiError()}<main id="main"><ca-trends .view=${e.trends} days=${t.days} from=${t.from} to=${t.to} tz=${t.tz||tp()} group=${t.group} .groups=${l=e.runs,[...new Set(l.map(e=>e.run_group).filter(e=>!!e))]} .panels=${e.info.panels} tab=${t.trendsTab} ?exported=${!!e.info.export}></ca-trends></main>`:k`${this.renderTabs(r,n.length)} ${this.renderBar(r)} ${this.renderApiError()}
960
- <main id="main" class=${t.tab===`stream`?`stream`:``} role="tabpanel" aria-labelledby=${i>=0?Nc(i):j} >${function({snap:e,viewRoute:t,derived:n,q:r,client:i,baseUrl:a}){let{state:o}=e;if(!t.run)return k`<div class="blank">${e.runsLoaded&&!e.error?k`<span class="ic" aria-hidden="true">✦</span><b>${E(`No runs yet`,{id:`no-runs-yet`})}</b>`:j}</div>`;let s=de(e.runs,e.run),c=fe(o,s);switch(t.tab){case`overview`:return k`<ca-overview .state=${o} .summary=${s} .host=${ie(e.hosts?.hosts,s)} .info=${e.info} .run=${t.run} .layer=${t.layer} .unit=${t.unit} .sel=${t.sel}></ca-overview>`;case`tasks`:return k`<ca-task-table .run=${t.run} .journal=${o.journal} .plan=${o.plan} .kind=${t.kind} .q=${r} ?live=${c}></ca-task-table>`;case`journal`:return k`<ca-journal-table .run=${t.run} .rows=${o.journal} .plan=${o.plan} .fresh=${e.fresh} .kind=${t.kind} .stop=${t.stop} .q=${r} .extras=${s?.row_extras??[]} ?replay-marks=${Ms(s)}></ca-journal-table>`;case`outputs`:return k`<ca-contracts .run=${t.run} .outputs=${o.outputs} .journal=${o.journal} .plan=${o.plan}></ca-contracts>`;case`definitions`:return k`<ca-definitions .client=${i} .run=${t.run} .journal=${o.journal} .plan=${o.plan} .live=${c} .selected=${t.def}></ca-definitions>`;case`procs`:return k`<ca-procs-view .procs=${o.procs} ?unresponsive=${re(s,!!o.procs?.alive)===`unresponsive`} ?exported=${!!e.info.export}></ca-procs-view>`;case`stream`:return k`<ca-task-view .client=${i} .journal=${o.journal} .plan=${o.plan} base-url=${a} .run=${t.run} .taskKey=${t.key??function(e){let t=e.filter(e=>e.executor!==`python`),n=t.find(e=>e.outcome===`running`);if(n)return n.key;let r=e=>e.tries[e.tries.length-1]?.ts??``;return t.filter(r).sort((e,t)=>r(t).localeCompare(r(e)))[0]?.key??null}(n.rows)} .view=${t.view} .round=${t.round} .live=${c} ?exported=${!!e.info.export} ?replay-marks=${Ms(s)}></ca-task-view>`;default:{let n=t.tab.slice(6);return k`<ca-panel-view .name=${n} .panel=${e.info.panels.find(e=>e.name===n)} .data=${o.panels[n]}></ca-panel-view>`}}}({snap:e,viewRoute:t,derived:r,q:this.qDraft??t.q,client:this.store.client,baseUrl:this.store.client.baseUrl})}</main>`}
1002
+ ${s?O`${this.renderApiError()}<main id="main"><ca-hosts .hosts=${e.hosts}></ca-hosts></main>`:c?O`${this.renderApiError()}<main id="main"><ca-trends .view=${e.trends} days=${t.days} from=${t.from} to=${t.to} tz=${t.tz||kp()} group=${t.group} .groups=${l=e.runs,[...new Set(l.map(e=>e.run_group).filter(e=>!!e))]} .panels=${e.info.panels} tab=${t.trendsTab} ?exported=${!!e.info.export}></ca-trends></main>`:O`${this.renderTabs(r,n.length)} ${this.renderBar(r)} ${this.renderApiError()}
1003
+ <main id="main" class=${t.tab===`stream`?`stream`:``} role="tabpanel" aria-labelledby=${i>=0?nl(i):A} >${function({snap:e,viewRoute:t,derived:n,q:r,client:i,baseUrl:a}){let{state:o}=e;if(!t.run)return O`<div class="blank">${e.runsLoaded&&!e.error?O`<span class="ic" aria-hidden="true">✦</span><b>${T(`No runs yet`,{id:`no-runs-yet`})}</b>`:A}</div>`;let s=fe(e.runs,e.run),c=pe(o,s);switch(t.tab){case`overview`:return O`<ca-overview .state=${o} .summary=${s} .host=${ae(e.hosts?.hosts,s)} .info=${e.info} .run=${t.run} .layer=${t.layer} .unit=${t.unit} .sel=${t.sel}></ca-overview>`;case`tasks`:return O`<ca-task-table .run=${t.run} .journal=${o.journal} .plan=${o.plan} .kind=${t.kind} .q=${r} ?live=${c}></ca-task-table>`;case`journal`:return O`<ca-journal-table .run=${t.run} .rows=${o.journal} .plan=${o.plan} .fresh=${e.fresh} .kind=${t.kind} .stop=${t.stop} .q=${r} .extras=${s?.row_extras??[]} ?replay-marks=${ec(s)}></ca-journal-table>`;case`outputs`:return O`<ca-contracts .run=${t.run} .outputs=${o.outputs} .journal=${o.journal} .plan=${o.plan}></ca-contracts>`;case`definitions`:return O`<ca-definitions .client=${i} .run=${t.run} .journal=${o.journal} .plan=${o.plan} .live=${c} .selected=${t.def}></ca-definitions>`;case`procs`:return O`<ca-procs-view .procs=${o.procs} ?unresponsive=${ie(s,!!o.procs?.alive)===`unresponsive`} ?exported=${!!e.info.export}></ca-procs-view>`;case`stream`:return O`<ca-task-view .client=${i} .journal=${o.journal} .plan=${o.plan} base-url=${a} .run=${t.run} .taskKey=${t.key??function(e){let t=e.filter(e=>e.executor!==`python`),n=t.find(e=>e.outcome===`running`);if(n)return n.key;let r=e=>e.tries[e.tries.length-1]?.ts??``;return t.filter(r).sort((e,t)=>r(t).localeCompare(r(e)))[0]?.key??null}(n.rows)} .view=${t.view} .round=${t.round} .live=${c} ?exported=${!!e.info.export} ?replay-marks=${ec(s)}></ca-task-view>`;default:{let n=t.tab.slice(6);return O`<ca-panel-view .name=${n} .panel=${e.info.panels.find(e=>e.name===n)} .data=${o.panels[n]}></ca-panel-view>`}}}({snap:e,viewRoute:t,derived:r,q:this.qDraft??t.q,client:this.store.client,baseUrl:this.store.client.baseUrl})}</main>`}
961
1004
  <ca-toasts></ca-toasts>
962
- `;var l,u}runLabel(e,t){let{snap:n,viewRoute:r}=this,i=de(n.runs,n.run),a=re(i,!!n.state.procs?.alive),o=Ro(a,i?.tasks),s=e?i?.host_id??``:``;return k`<span class="dot" data-tone=${I(o)} aria-hidden="true"></span>
963
- <span class="rn" title=${s?r.run:j}>${i&&s?ae(i):r.run||`—`}</span>
964
- ${s?k`<span class="hostchip" title=${zs(s)}><span class="sr">${zs(s)}</span><span aria-hidden="true">${s}</span></span>`:j}
965
- ${a===`unresponsive`?Zr({text:Is(),tone:`attention`,title:Rs(ie(n.hosts?.hosts,i))}):j}
966
- ${Fs(i)?Zr({...Fs(i),tone:`muted`}):j}
967
- <span class="rs" title=${i?fs(As(n.state,i)):``}>${i?function(e,t,n=S(e.journal,e.plan)){let r=ne(t),i=e.ready?De(e.journal)?.cost:t.cost_usd,a=i==null?``:Y(i),o=ds(As(e,t)),s=K(r==null?``:E(T`took ${z(r)}`),a,o,t.running?E(`running`):``);if(!e.ready)return s;let c=n.counts,l=t.tasks.not_run?X(`not_run`,t.tasks.not_run):``;return K(E(T`${c.doneTotal} of ${c.total} tasks done`),l,s)}(n.state,i,t):``}</span>`}trendsLabel(){return k`<span class="dot" data-tone="neutral" aria-hidden="true"></span><span class="rn">${ac()}</span><span class="rs">${oc()}</span>`}hostsLabel(){let e=this.snap.hosts?.hosts??[];return k`<span class="dot" data-tone=${I(e.some(e=>!e.up)?`attention`:`neutral`)} aria-hidden="true"></span>
968
- <span class="rn">${E(`Hosts`)}</span><span class="rs">${Vs(e)}</span>`}renderApiError(){let{error:e}=this.snap;return k`<p class="api-error" role="alert">${e?k`<span class="ic" aria-hidden="true">✕</span> ${Dc(e)}`:j}</p>`}renderTabs(e,t){let{state:n}=this.snap,{tries:r}=e.tries,i=e.counts;return function(e,t,n,r,i,a=!0){return k`<nav data-scroll="x">
969
- <div class="tabs" role="tablist" aria-label=${E(`Views`)}>
970
- ${e.map((a,o)=>{let s=n(a.id),c=a.id===t;return k`${a.panel&&!e[o-1]?.panel?k`<span class="tab-sep" aria-hidden="true" title=${E(`Custom views`)}></span>`:j}
971
- <button type="button" role="tab" id=${Nc(o)} aria-selected=${c?`true`:`false`} aria-controls=${i} class="tab ${a.panel?`panel-tab`:``} ${c?`sel`:``}" title=${a.tip??j} @click=${()=>r(a.id)}>
972
- <span class="tab-ic" aria-hidden="true">${a.icon}</span><span class="tab-label" data-label=${a.label}>${a.label}</span>${s&&s[0]!==``?k`<span class="badge" data-tone=${I(s[1])}>${s[0]}</span>`:j}
1005
+ `;var l,u}runLabel(e,t){let{snap:n,viewRoute:r}=this,i=fe(n.runs,n.run),a=ie(i,!!n.state.procs?.alive),o=os(a,i?.tasks),s=e?i?.host_id??``:``;return O`<span class="dot" data-tone=${I(o)} aria-hidden="true"></span>
1006
+ <span class="rn" title=${s?r.run:A}>${i&&s?oe(i):r.run||`—`}</span>
1007
+ ${s?O`<span class="hostchip" title=${sc(s)}><span class="sr">${sc(s)}</span><span aria-hidden="true">${s}</span></span>`:A}
1008
+ ${a===`unresponsive`?Qr({text:ic(),tone:`attention`,title:oc(ae(n.hosts?.hosts,i))}):A}
1009
+ ${rc(i)?Qr({...rc(i),tone:`muted`}):A}
1010
+ <span class="rs" title=${i?Ps(Qs(n.state,i)):``}>${i?function(e,t,n=x(e.journal,e.plan)){let r=re(t),i=e.ready?Oe(e.journal)?.cost:t.cost_usd,a=i==null?``:Y(i),o=Ns(Qs(e,t)),s=K(r==null?``:T(w`took ${z(r)}`),a,o,t.running?T(`running`):``);if(!e.ready)return s;let c=n.counts,l=t.tasks.not_run?X(`not_run`,t.tasks.not_run):``;return K(T(w`${c.doneTotal} of ${c.total} tasks done`),l,s)}(n.state,i,t):``}</span>`}trendsLabel(){return O`<span class="dot" data-tone="neutral" aria-hidden="true"></span><span class="rn">${Oc()}</span><span class="rs">${kc()}</span>`}hostsLabel(){let e=this.snap.hosts?.hosts??[];return O`<span class="dot" data-tone=${I(e.some(e=>!e.up)?`attention`:`neutral`)} aria-hidden="true"></span>
1011
+ <span class="rn">${T(`Hosts`)}</span><span class="rs">${lc(e)}</span>`}renderApiError(){let{error:e}=this.snap;return O`<p class="api-error" role="alert">${e?O`<span class="ic" aria-hidden="true">✕</span> ${Xc(e)}`:A}</p>`}renderTabs(e,t){let{state:n}=this.snap,{tries:r}=e.tries,i=e.counts;return function(e,t,n,r,i,a=!0){return O`<nav data-scroll="x">
1012
+ <div class="tabs" role="tablist" aria-label=${T(`Views`)}>
1013
+ ${e.map((a,o)=>{let s=n(a.id),c=a.id===t;return O`${a.panel&&!e[o-1]?.panel?O`<span class="tab-sep" aria-hidden="true" title=${T(`Custom views`)}></span>`:A}
1014
+ <button type="button" role="tab" id=${nl(o)} aria-selected=${c?`true`:`false`} aria-controls=${i} class="tab ${a.panel?`panel-tab`:``} ${c?`sel`:``}" title=${a.tip??A} @click=${()=>r(a.id)}>
1015
+ <span class="tab-ic" aria-hidden="true">${a.icon}</span><span class="tab-label" data-label=${a.label}>${a.label}</span>${s&&s[0]!==``?O`<span class="badge" data-tone=${I(s[1])}>${s[0]}</span>`:A}
973
1016
  </button>`})}
974
1017
  </div>
975
1018
  <span class="tab-ind init" aria-hidden="true"></span>
976
- ${a?k`<span class="tabhint meta" role="note" aria-label=${E(`Keyboard shortcuts`)} ><span aria-hidden="true"><span class="kbd">1</span>–<span class="kbd">${Math.min(9,e.length)}</span> ${E(`Tabs`)} |
977
- <span class="kbd">r</span> ${E(`Runs`)} | <span class="kbd">/</span> ${E(`Filter`)}</span></span >`:j}
978
- </nav>`}(Mc(this.snap.info.panels),this.viewRoute.tab,e=>e===`tasks`?[i.total||``,`neutral`]:e===`journal`?[r||``,`neutral`]:e===`procs`?[n.procs?.alive&&t||``,`running`]:null,e=>this.navigate({tab:e}),`main`,this.shortcutScope!==`off`)}renderBar(e){let{viewRoute:t}=this;if(t.tab!==`tasks`&&t.tab!==`journal`)return j;let{counts:n,kinds:r}=e,i=n.total;return k`<div class="bar">
979
- <select title=${E(`Kind`)} aria-label=${E(`Kind`)} @change=${e=>this.navigate({kind:e.target.value})}>
980
- <option value="" ?selected=${!t.kind}>${E(`All kinds`)}</option>
981
- ${r.map(e=>k`<option ?selected=${e===t.kind}>${e}</option>`)}
1019
+ ${a?O`<span class="tabhint meta" role="note" aria-label=${T(`Keyboard shortcuts`)} ><span aria-hidden="true"><span class="kbd">1</span>–<span class="kbd">${Math.min(9,e.length)}</span> ${T(`Tabs`)} |
1020
+ <span class="kbd">r</span> ${T(`Runs`)} | <span class="kbd">/</span> ${T(`Filter`)}</span></span >`:A}
1021
+ </nav>`}(tl(this.snap.info.panels),this.viewRoute.tab,e=>e===`tasks`?[i.total||``,`neutral`]:e===`journal`?[r||``,`neutral`]:e===`procs`?[n.procs?.alive&&t||``,`running`]:null,e=>this.navigate({tab:e}),`main`,this.shortcutScope!==`off`)}renderBar(e){let{viewRoute:t}=this;if(t.tab!==`tasks`&&t.tab!==`journal`)return A;let{counts:n,kinds:r}=e,i=n.total;return O`<div class="bar">
1022
+ <select title=${T(`Kind`)} aria-label=${T(`Kind`)} @change=${e=>this.navigate({kind:e.target.value})}>
1023
+ <option value="" ?selected=${!t.kind}>${T(`All kinds`)}</option>
1024
+ ${r.map(e=>O`<option ?selected=${e===t.kind}>${e}</option>`)}
982
1025
  </select>
983
- <input placeholder=${E(`Filter`)} aria-label=${E(`Text filter`)} size="22" title=${this.shortcutScope===`off`?E(`Text filter`):E(`Text filter (/)`)} .value=${this.qDraft??t.q} @input=${e=>this.setQ(e.target.value)} />
984
- <span class="meta">${t.tab===`journal`?function({tries:e,notStarted:t}){return K(E(e===1?`1 attempt`:T`${e} attempts`),t?X(`not_started`,t):``)}(e.tries):E(i===1?`1 task`:T`${i} tasks`)}</span>
985
- </div>`}};U([P({attribute:`base-url`})],$.prototype,`baseUrl`,void 0),U([P({attribute:`export`})],$.prototype,`exportUrl`,void 0),U([P()],$.prototype,`history`,void 0),U([P()],$.prototype,`shortcuts`,void 0),U([P()],$.prototype,`run`,void 0),U([P()],$.prototype,`locale`,void 0),U([P()],$.prototype,`theme`,void 0),U([P({type:Boolean,reflect:!0})],$.prototype,`live`,void 0),U([F()],$.prototype,`snap`,void 0),U([F()],$.prototype,`viewRoute`,void 0),U([F()],$.prototype,`pickerOpen`,void 0),U([F()],$.prototype,`qDraft`,void 0),U([xn(`main`)],$.prototype,`main`,void 0),U([xn(`ca-toasts`)],$.prototype,`toasts`,void 0),U([xn(`.runbtn`)],$.prototype,`runBtn`,void 0),U([xn(`ca-run-picker`)],$.prototype,`picker`,void 0),$=U([N(`ca-monitor`),D()],$);export{tr as BUILTIN_TABS,Kf as CaClock,zd as CaContracts,Ud as CaDefinition,Wd as CaDefinitions,Jf as CaHosts,Nd as CaJournalTable,il as CaKpis,ml as CaModelUsage,$ as CaMonitor,gd as CaOverview,Zd as CaPanelBody,Qd as CaPanelView,ed as CaPipelineGraph,Xc as CaProcTree,Gd as CaProcsView,hl as CaQuota,ad as CaRunDriver,Xf as CaRunPicker,ol as CaSpendBreakdown,kd as CaTaskTable,Gf as CaTaskView,dd as CaTimeline,Ac as CaToasts,Af as CaTranscript,fd as CaWorkers,ir as DEFAULT_VIEW_ROUTE,On as LOCALE_NAMES,gl as LOOP_SEGMENT,cl as OTHER_COLOUR,sl as SERIES_COLOURS,nr as TASK_VIEWS,od as TIMELINE_WINDOW_MS,rr as TREND_DAYS,dr as ViewRouter,lf as agentLabel,Dn as allLocales,lr as applyPatch,Df as applyTranscriptEvents,Td as attemptFacts,Pu as autoLayer,Ju as budgetFor,af as checkMessage,rf as checkName,Bc as checkRowsFromContract,Vc as checkTableStrings,In as chooseLocale,tu as chooseOpen,nf as classifyRounds,ru as compound,An as configureLocales,zc as contentObject,Fd as ctChips,eu as doi,Q as emit,bf as emptyTranscript,B as esc,Ao as factList,K as facts,Cd as filterJournal,_d as filterTasks,No as firstLine,ef as fixupErrors,z as fmtDur,cr as formatViewRoute,jn as getLocale,Au as graphFromPlan,ku as graphInput,Sd as hadFixup,Ql as interest,tf as isFixup,ur as isNewPlace,jd as journalColumns,wd as journalTally,q as kindUnit,Qc as kpiAction,nl as kpiTiles,Zc as kpis,cd as laneStyles,ud as lanesFromJournal,df as launchWho,Nu as layerGraph,Mo as listText,G as localTime,cu as markSel,Mu as matrixFromPlan,ju as matrixInput,ul as modelColours,ll as modelId,fl as modelRows,$l as notable,Lu as parentLayer,lu as parseSelection,sr as parseViewRoute,ou as passMatrix,Yl as placeKey,Zl as placeStats,Fn as preferredLocale,rd as preflightRows,Oo as relAgo,Iu as resolveLayer,xd as retriedKeys,Rc as rootOf,Oc as rowToast,ko as sentence,Mn as setLocale,dl as shareParts,Ad as shortStop,su as sortPassRows,yd as sortTasks,Yu as spanFor,Fu as splitLayer,Dd as taskColumns,Ld as taskName,fu as taskStateStyles,J as tokenCount,Xu as tooWide,nu as towardOf,hf as transcriptSections,ep as trendSections,Lc as typeOk,Po as unreadEvents,Y as usd,yf as webResults,ff as whoTags};
1026
+ <input placeholder=${T(`Filter`)} aria-label=${T(`Text filter`)} size="22" title=${this.shortcutScope===`off`?T(`Text filter`):T(`Text filter (/)`)} .value=${this.qDraft??t.q} @input=${e=>this.setQ(e.target.value)} />
1027
+ <span class="meta">${t.tab===`journal`?function({tries:e,notStarted:t}){return K(T(e===1?`1 attempt`:w`${e} attempts`),t?X(`not_started`,t):``)}(e.tries):T(i===1?`1 task`:w`${i} tasks`)}</span>
1028
+ </div>`}};H([N({attribute:`base-url`})],$.prototype,`baseUrl`,void 0),H([N({attribute:`export`})],$.prototype,`exportUrl`,void 0),H([N()],$.prototype,`history`,void 0),H([N()],$.prototype,`shortcuts`,void 0),H([N()],$.prototype,`run`,void 0),H([N()],$.prototype,`locale`,void 0),H([N()],$.prototype,`theme`,void 0),H([N({type:Boolean,reflect:!0})],$.prototype,`live`,void 0),H([P()],$.prototype,`snap`,void 0),H([P()],$.prototype,`viewRoute`,void 0),H([P()],$.prototype,`pickerOpen`,void 0),H([P()],$.prototype,`qDraft`,void 0),H([Sn(`main`)],$.prototype,`main`,void 0),H([Sn(`ca-toasts`)],$.prototype,`toasts`,void 0),H([Sn(`.runbtn`)],$.prototype,`runBtn`,void 0),H([Sn(`ca-run-picker`)],$.prototype,`picker`,void 0),$=H([M(`ca-monitor`),E()],$);export{tr as BUILTIN_TABS,bp as CaClock,mf as CaContracts,vf as CaDefinition,yf as CaDefinitions,Sp as CaHosts,cf as CaJournalTable,Al as CaKpis,Bl as CaModelUsage,$ as CaMonitor,Wd as CaOverview,Ef as CaPanelBody,Df as CaPanelView,Od as CaPipelineGraph,Sl as CaProcTree,bf as CaProcsView,Vl as CaQuota,Nd as CaRunDriver,wp as CaRunPicker,Ul as CaServices,Ml as CaSpendBreakdown,rf as CaTaskTable,yp as CaTaskView,zd as CaTimeline,$c as CaToasts,ip as CaTranscript,Bd as CaWorkers,ir as DEFAULT_VIEW_ROUTE,kn as LOCALE_NAMES,Wl as LOOP_SEGMENT,Pl as OTHER_COLOUR,Nl as SERIES_COLOURS,nr as TASK_VIEWS,Pd as TIMELINE_WINDOW_MS,rr as TREND_DAYS,dr as ViewRouter,Lf as agentLabel,On as allLocales,lr as applyPatch,tp as applyTranscriptEvents,$d as attemptFacts,cd as autoLayer,Sd as budgetFor,Nf as checkMessage,Mf as checkName,ul as checkRowsFromContract,dl as checkTableStrings,In as chooseLocale,ku as chooseOpen,jf as classifyRounds,ju as compound,jn as configureLocales,ll as contentObject,uf as ctChips,Ou as doi,Q as emit,Jf as emptyTranscript,Mr as esc,Qo as factList,K as facts,Zd as filterJournal,Gd as filterTasks,ts as firstLine,kf as fixupErrors,z as fmtDur,cr as formatViewRoute,F as getLocale,id as graphFromPlan,rd as graphInput,Xd as hadFixup,Eu as interest,Af as isFixup,ur as isNewPlace,of as journalColumns,Qd as journalTally,q as kindUnit,wl as kpiAction,Ol as kpiTiles,Cl as kpis,Id as laneStyles,Rd as lanesFromJournal,zf as launchWho,sd as layerGraph,es as listText,G as localTime,Iu as markSel,od as matrixFromPlan,ad as matrixInput,Il as modelColours,Fl as modelId,Rl as modelRows,Du as notable,dd as parentLayer,Lu as parseSelection,sr as parseViewRoute,Pu as passMatrix,Cu as placeKey,Tu as placeStats,Fn as preferredLocale,jd as preflightRows,Xo as relAgo,ud as resolveLayer,Yd as retriedKeys,sl as rootOf,cl as rowOf,Zc as rowToast,Zo as sentence,Mn as setLocale,Ll as shareParts,af as shortStop,Fu as sortPassRows,qd as sortTasks,Cd as spanFor,ld as splitLayer,tf as taskColumns,ff as taskName,Bu as taskStateStyles,J as tokenCount,wd as tooWide,Au as towardOf,Uf as transcriptSections,Op as trendSections,ol as typeOk,ns as unreadEvents,Y as usd,qf as webResults,Bf as whoTags};