@contraagent/ui 0.0.0-stage → 0.1.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 (1037) hide show
  1. package/README.md +130 -2
  2. package/custom-elements.json +7084 -0
  3. package/dist/adapters/check-rows.d.ts +18 -0
  4. package/dist/adapters/check-rows.d.ts.map +1 -0
  5. package/dist/adapters/check-rows.js +75 -0
  6. package/dist/adapters/check-rows.js.map +1 -0
  7. package/dist/adapters/filters.d.ts +29 -0
  8. package/dist/adapters/filters.d.ts.map +1 -0
  9. package/dist/adapters/filters.js +74 -0
  10. package/dist/adapters/filters.js.map +1 -0
  11. package/dist/adapters/graph/compound.d.ts +93 -0
  12. package/dist/adapters/graph/compound.d.ts.map +1 -0
  13. package/dist/adapters/graph/compound.js +322 -0
  14. package/dist/adapters/graph/compound.js.map +1 -0
  15. package/dist/adapters/graph/flow-index.d.ts +54 -0
  16. package/dist/adapters/graph/flow-index.d.ts.map +1 -0
  17. package/dist/adapters/graph/flow-index.js +129 -0
  18. package/dist/adapters/graph/flow-index.js.map +1 -0
  19. package/dist/adapters/graph/highlight.d.ts +14 -0
  20. package/dist/adapters/graph/highlight.d.ts.map +1 -0
  21. package/dist/adapters/graph/highlight.js +33 -0
  22. package/dist/adapters/graph/highlight.js.map +1 -0
  23. package/dist/adapters/graph/input.d.ts +50 -0
  24. package/dist/adapters/graph/input.d.ts.map +1 -0
  25. package/dist/adapters/graph/input.js +201 -0
  26. package/dist/adapters/graph/input.js.map +1 -0
  27. package/dist/adapters/graph/layer.d.ts +33 -0
  28. package/dist/adapters/graph/layer.d.ts.map +1 -0
  29. package/dist/adapters/graph/layer.js +94 -0
  30. package/dist/adapters/graph/layer.js.map +1 -0
  31. package/dist/adapters/graph/matrix.d.ts +62 -0
  32. package/dist/adapters/graph/matrix.d.ts.map +1 -0
  33. package/dist/adapters/graph/matrix.js +96 -0
  34. package/dist/adapters/graph/matrix.js.map +1 -0
  35. package/dist/adapters/graph/project.d.ts +49 -0
  36. package/dist/adapters/graph/project.d.ts.map +1 -0
  37. package/dist/adapters/graph/project.js +319 -0
  38. package/dist/adapters/graph/project.js.map +1 -0
  39. package/dist/adapters/graph/selection.d.ts +31 -0
  40. package/dist/adapters/graph/selection.d.ts.map +1 -0
  41. package/dist/adapters/graph/selection.js +48 -0
  42. package/dist/adapters/graph/selection.js.map +1 -0
  43. package/dist/adapters/graph/states.d.ts +6 -0
  44. package/dist/adapters/graph/states.d.ts.map +1 -0
  45. package/dist/adapters/graph/states.js +5 -0
  46. package/dist/adapters/graph/states.js.map +1 -0
  47. package/dist/adapters/graph/types.d.ts +141 -0
  48. package/dist/adapters/graph/types.d.ts.map +1 -0
  49. package/dist/adapters/graph/types.js +3 -0
  50. package/dist/adapters/graph/types.js.map +1 -0
  51. package/dist/adapters/graph/words.d.ts +48 -0
  52. package/dist/adapters/graph/words.d.ts.map +1 -0
  53. package/dist/adapters/graph/words.js +128 -0
  54. package/dist/adapters/graph/words.js.map +1 -0
  55. package/dist/adapters/index.d.ts +18 -0
  56. package/dist/adapters/index.d.ts.map +1 -0
  57. package/dist/adapters/index.js +23 -0
  58. package/dist/adapters/index.js.map +1 -0
  59. package/dist/adapters/journal-columns.d.ts +21 -0
  60. package/dist/adapters/journal-columns.d.ts.map +1 -0
  61. package/dist/adapters/journal-columns.js +179 -0
  62. package/dist/adapters/journal-columns.js.map +1 -0
  63. package/dist/adapters/kpi-tiles.d.ts +47 -0
  64. package/dist/adapters/kpi-tiles.d.ts.map +1 -0
  65. package/dist/adapters/kpi-tiles.js +173 -0
  66. package/dist/adapters/kpi-tiles.js.map +1 -0
  67. package/dist/adapters/lanes.d.ts +31 -0
  68. package/dist/adapters/lanes.d.ts.map +1 -0
  69. package/dist/adapters/lanes.js +75 -0
  70. package/dist/adapters/lanes.js.map +1 -0
  71. package/dist/adapters/model-shares.d.ts +27 -0
  72. package/dist/adapters/model-shares.d.ts.map +1 -0
  73. package/dist/adapters/model-shares.js +52 -0
  74. package/dist/adapters/model-shares.js.map +1 -0
  75. package/dist/adapters/panel-body.d.ts +20 -0
  76. package/dist/adapters/panel-body.d.ts.map +1 -0
  77. package/dist/adapters/panel-body.js +63 -0
  78. package/dist/adapters/panel-body.js.map +1 -0
  79. package/dist/adapters/preflight.d.ts +12 -0
  80. package/dist/adapters/preflight.d.ts.map +1 -0
  81. package/dist/adapters/preflight.js +15 -0
  82. package/dist/adapters/preflight.js.map +1 -0
  83. package/dist/adapters/task-columns.d.ts +19 -0
  84. package/dist/adapters/task-columns.d.ts.map +1 -0
  85. package/dist/adapters/task-columns.js +107 -0
  86. package/dist/adapters/task-columns.js.map +1 -0
  87. package/dist/adapters/transcript/index.d.ts +6 -0
  88. package/dist/adapters/transcript/index.d.ts.map +1 -0
  89. package/dist/adapters/transcript/index.js +8 -0
  90. package/dist/adapters/transcript/index.js.map +1 -0
  91. package/dist/adapters/transcript/model.d.ts +42 -0
  92. package/dist/adapters/transcript/model.d.ts.map +1 -0
  93. package/dist/adapters/transcript/model.js +128 -0
  94. package/dist/adapters/transcript/model.js.map +1 -0
  95. package/dist/adapters/transcript/rounds.d.ts +15 -0
  96. package/dist/adapters/transcript/rounds.d.ts.map +1 -0
  97. package/dist/adapters/transcript/rounds.js +74 -0
  98. package/dist/adapters/transcript/rounds.js.map +1 -0
  99. package/dist/adapters/transcript/sections.d.ts +18 -0
  100. package/dist/adapters/transcript/sections.d.ts.map +1 -0
  101. package/dist/adapters/transcript/sections.js +69 -0
  102. package/dist/adapters/transcript/sections.js.map +1 -0
  103. package/dist/adapters/transcript/web.d.ts +12 -0
  104. package/dist/adapters/transcript/web.d.ts.map +1 -0
  105. package/dist/adapters/transcript/web.js +39 -0
  106. package/dist/adapters/transcript/web.js.map +1 -0
  107. package/dist/adapters/transcript/who.d.ts +15 -0
  108. package/dist/adapters/transcript/who.d.ts.map +1 -0
  109. package/dist/adapters/transcript/who.js +42 -0
  110. package/dist/adapters/transcript/who.js.map +1 -0
  111. package/dist/adapters/trends.d.ts +11 -0
  112. package/dist/adapters/trends.d.ts.map +1 -0
  113. package/dist/adapters/trends.js +316 -0
  114. package/dist/adapters/trends.js.map +1 -0
  115. package/dist/contraagent-ui.js +985 -0
  116. package/dist/controllers/locale.d.ts +25 -0
  117. package/dist/controllers/locale.d.ts.map +1 -0
  118. package/dist/controllers/locale.js +33 -0
  119. package/dist/controllers/locale.js.map +1 -0
  120. package/dist/controllers/shortcuts.d.ts +29 -0
  121. package/dist/controllers/shortcuts.d.ts.map +1 -0
  122. package/dist/controllers/shortcuts.js +51 -0
  123. package/dist/controllers/shortcuts.js.map +1 -0
  124. package/dist/controllers/stream.d.ts +41 -0
  125. package/dist/controllers/stream.d.ts.map +1 -0
  126. package/dist/controllers/stream.js +90 -0
  127. package/dist/controllers/stream.js.map +1 -0
  128. package/dist/controllers/task-detail.d.ts +22 -0
  129. package/dist/controllers/task-detail.d.ts.map +1 -0
  130. package/dist/controllers/task-detail.js +50 -0
  131. package/dist/controllers/task-detail.js.map +1 -0
  132. package/dist/controllers/theme.d.ts +32 -0
  133. package/dist/controllers/theme.d.ts.map +1 -0
  134. package/dist/controllers/theme.js +56 -0
  135. package/dist/controllers/theme.js.map +1 -0
  136. package/dist/core/clock.d.ts +20 -0
  137. package/dist/core/clock.d.ts.map +1 -0
  138. package/dist/core/clock.js +45 -0
  139. package/dist/core/clock.js.map +1 -0
  140. package/dist/core/events.d.ts +107 -0
  141. package/dist/core/events.d.ts.map +1 -0
  142. package/dist/core/events.js +5 -0
  143. package/dist/core/events.js.map +1 -0
  144. package/dist/core/i18n.d.ts +21 -0
  145. package/dist/core/i18n.d.ts.map +1 -0
  146. package/dist/core/i18n.js +71 -0
  147. package/dist/core/i18n.js.map +1 -0
  148. package/dist/core/index.d.ts +5 -0
  149. package/dist/core/index.d.ts.map +1 -0
  150. package/dist/core/index.js +7 -0
  151. package/dist/core/index.js.map +1 -0
  152. package/dist/core/memory.d.ts +51 -0
  153. package/dist/core/memory.d.ts.map +1 -0
  154. package/dist/core/memory.js +174 -0
  155. package/dist/core/memory.js.map +1 -0
  156. package/dist/core/route.d.ts +62 -0
  157. package/dist/core/route.d.ts.map +1 -0
  158. package/dist/core/route.js +143 -0
  159. package/dist/core/route.js.map +1 -0
  160. package/dist/core/router.d.ts +27 -0
  161. package/dist/core/router.d.ts.map +1 -0
  162. package/dist/core/router.js +57 -0
  163. package/dist/core/router.js.map +1 -0
  164. package/dist/core/scroll.d.ts +21 -0
  165. package/dist/core/scroll.d.ts.map +1 -0
  166. package/dist/core/scroll.js +74 -0
  167. package/dist/core/scroll.js.map +1 -0
  168. package/dist/core/view-route.d.ts +62 -0
  169. package/dist/core/view-route.d.ts.map +1 -0
  170. package/dist/core/view-route.js +143 -0
  171. package/dist/core/view-route.js.map +1 -0
  172. package/dist/core/view-router.d.ts +27 -0
  173. package/dist/core/view-router.d.ts.map +1 -0
  174. package/dist/core/view-router.js +57 -0
  175. package/dist/core/view-router.js.map +1 -0
  176. package/dist/define/all.d.ts +13 -0
  177. package/dist/define/all.d.ts.map +1 -0
  178. package/dist/define/all.js +14 -0
  179. package/dist/define/all.js.map +1 -0
  180. package/dist/define/contracts.d.ts +2 -0
  181. package/dist/define/contracts.d.ts.map +1 -0
  182. package/dist/define/contracts.js +3 -0
  183. package/dist/define/contracts.js.map +1 -0
  184. package/dist/define/definitions.d.ts +3 -0
  185. package/dist/define/definitions.d.ts.map +1 -0
  186. package/dist/define/definitions.js +4 -0
  187. package/dist/define/definitions.js.map +1 -0
  188. package/dist/define/journal-table.d.ts +2 -0
  189. package/dist/define/journal-table.d.ts.map +1 -0
  190. package/dist/define/journal-table.js +3 -0
  191. package/dist/define/journal-table.js.map +1 -0
  192. package/dist/define/kpis.d.ts +2 -0
  193. package/dist/define/kpis.d.ts.map +1 -0
  194. package/dist/define/kpis.js +3 -0
  195. package/dist/define/kpis.js.map +1 -0
  196. package/dist/define/monitor.d.ts +2 -0
  197. package/dist/define/monitor.d.ts.map +1 -0
  198. package/dist/define/monitor.js +3 -0
  199. package/dist/define/monitor.js.map +1 -0
  200. package/dist/define/overview.d.ts +2 -0
  201. package/dist/define/overview.d.ts.map +1 -0
  202. package/dist/define/overview.js +3 -0
  203. package/dist/define/overview.js.map +1 -0
  204. package/dist/define/pipeline-graph.d.ts +2 -0
  205. package/dist/define/pipeline-graph.d.ts.map +1 -0
  206. package/dist/define/pipeline-graph.js +3 -0
  207. package/dist/define/pipeline-graph.js.map +1 -0
  208. package/dist/define/procs.d.ts +3 -0
  209. package/dist/define/procs.d.ts.map +1 -0
  210. package/dist/define/procs.js +4 -0
  211. package/dist/define/procs.js.map +1 -0
  212. package/dist/define/task-table.d.ts +2 -0
  213. package/dist/define/task-table.d.ts.map +1 -0
  214. package/dist/define/task-table.js +3 -0
  215. package/dist/define/task-table.js.map +1 -0
  216. package/dist/define/task-view.d.ts +2 -0
  217. package/dist/define/task-view.d.ts.map +1 -0
  218. package/dist/define/task-view.js +3 -0
  219. package/dist/define/task-view.js.map +1 -0
  220. package/dist/define/timeline.d.ts +2 -0
  221. package/dist/define/timeline.d.ts.map +1 -0
  222. package/dist/define/timeline.js +3 -0
  223. package/dist/define/timeline.js.map +1 -0
  224. package/dist/define/transcript.d.ts +2 -0
  225. package/dist/define/transcript.d.ts.map +1 -0
  226. package/dist/define/transcript.js +3 -0
  227. package/dist/define/transcript.js.map +1 -0
  228. package/dist/elements/lists/ca-contracts.d.ts +46 -0
  229. package/dist/elements/lists/ca-contracts.d.ts.map +1 -0
  230. package/dist/elements/lists/ca-contracts.js +199 -0
  231. package/dist/elements/lists/ca-contracts.js.map +1 -0
  232. package/dist/elements/lists/ca-definitions.d.ts +41 -0
  233. package/dist/elements/lists/ca-definitions.d.ts.map +1 -0
  234. package/dist/elements/lists/ca-definitions.js +182 -0
  235. package/dist/elements/lists/ca-definitions.js.map +1 -0
  236. package/dist/elements/lists/ca-journal-table.d.ts +37 -0
  237. package/dist/elements/lists/ca-journal-table.d.ts.map +1 -0
  238. package/dist/elements/lists/ca-journal-table.js +170 -0
  239. package/dist/elements/lists/ca-journal-table.js.map +1 -0
  240. package/dist/elements/lists/ca-panel-body.d.ts +29 -0
  241. package/dist/elements/lists/ca-panel-body.d.ts.map +1 -0
  242. package/dist/elements/lists/ca-panel-body.js +144 -0
  243. package/dist/elements/lists/ca-panel-body.js.map +1 -0
  244. package/dist/elements/lists/ca-panel-view.d.ts +21 -0
  245. package/dist/elements/lists/ca-panel-view.d.ts.map +1 -0
  246. package/dist/elements/lists/ca-panel-view.js +59 -0
  247. package/dist/elements/lists/ca-panel-view.js.map +1 -0
  248. package/dist/elements/lists/ca-proc-tree.d.ts +16 -0
  249. package/dist/elements/lists/ca-proc-tree.d.ts.map +1 -0
  250. package/dist/elements/lists/ca-proc-tree.js +63 -0
  251. package/dist/elements/lists/ca-proc-tree.js.map +1 -0
  252. package/dist/elements/lists/ca-procs-view.d.ts +27 -0
  253. package/dist/elements/lists/ca-procs-view.d.ts.map +1 -0
  254. package/dist/elements/lists/ca-procs-view.js +91 -0
  255. package/dist/elements/lists/ca-procs-view.js.map +1 -0
  256. package/dist/elements/lists/ca-task-table.d.ts +33 -0
  257. package/dist/elements/lists/ca-task-table.d.ts.map +1 -0
  258. package/dist/elements/lists/ca-task-table.js +115 -0
  259. package/dist/elements/lists/ca-task-table.js.map +1 -0
  260. package/dist/elements/lists/filters.d.ts +28 -0
  261. package/dist/elements/lists/filters.d.ts.map +1 -0
  262. package/dist/elements/lists/filters.js +71 -0
  263. package/dist/elements/lists/filters.js.map +1 -0
  264. package/dist/elements/lists/index.d.ts +9 -0
  265. package/dist/elements/lists/index.d.ts.map +1 -0
  266. package/dist/elements/lists/index.js +9 -0
  267. package/dist/elements/lists/index.js.map +1 -0
  268. package/dist/elements/overview/ca-kpis.d.ts +32 -0
  269. package/dist/elements/overview/ca-kpis.d.ts.map +1 -0
  270. package/dist/elements/overview/ca-kpis.js +62 -0
  271. package/dist/elements/overview/ca-kpis.js.map +1 -0
  272. package/dist/elements/overview/ca-model-usage.d.ts +25 -0
  273. package/dist/elements/overview/ca-model-usage.d.ts.map +1 -0
  274. package/dist/elements/overview/ca-model-usage.js +118 -0
  275. package/dist/elements/overview/ca-model-usage.js.map +1 -0
  276. package/dist/elements/overview/ca-overview.d.ts +66 -0
  277. package/dist/elements/overview/ca-overview.d.ts.map +1 -0
  278. package/dist/elements/overview/ca-overview.js +456 -0
  279. package/dist/elements/overview/ca-overview.js.map +1 -0
  280. package/dist/elements/overview/ca-pipeline-graph.d.ts +211 -0
  281. package/dist/elements/overview/ca-pipeline-graph.d.ts.map +1 -0
  282. package/dist/elements/overview/ca-pipeline-graph.js +616 -0
  283. package/dist/elements/overview/ca-pipeline-graph.js.map +1 -0
  284. package/dist/elements/overview/ca-pipeline-progress.d.ts +17 -0
  285. package/dist/elements/overview/ca-pipeline-progress.d.ts.map +1 -0
  286. package/dist/elements/overview/ca-pipeline-progress.js +119 -0
  287. package/dist/elements/overview/ca-pipeline-progress.js.map +1 -0
  288. package/dist/elements/overview/ca-plan-matrix.d.ts +27 -0
  289. package/dist/elements/overview/ca-plan-matrix.d.ts.map +1 -0
  290. package/dist/elements/overview/ca-plan-matrix.js +113 -0
  291. package/dist/elements/overview/ca-plan-matrix.js.map +1 -0
  292. package/dist/elements/overview/ca-quota.d.ts +42 -0
  293. package/dist/elements/overview/ca-quota.d.ts.map +1 -0
  294. package/dist/elements/overview/ca-quota.js +179 -0
  295. package/dist/elements/overview/ca-quota.js.map +1 -0
  296. package/dist/elements/overview/ca-run-driver.d.ts +33 -0
  297. package/dist/elements/overview/ca-run-driver.d.ts.map +1 -0
  298. package/dist/elements/overview/ca-run-driver.js +146 -0
  299. package/dist/elements/overview/ca-run-driver.js.map +1 -0
  300. package/dist/elements/overview/ca-spend-breakdown.d.ts +24 -0
  301. package/dist/elements/overview/ca-spend-breakdown.d.ts.map +1 -0
  302. package/dist/elements/overview/ca-spend-breakdown.js +108 -0
  303. package/dist/elements/overview/ca-spend-breakdown.js.map +1 -0
  304. package/dist/elements/overview/ca-timeline.d.ts +28 -0
  305. package/dist/elements/overview/ca-timeline.d.ts.map +1 -0
  306. package/dist/elements/overview/ca-timeline.js +72 -0
  307. package/dist/elements/overview/ca-timeline.js.map +1 -0
  308. package/dist/elements/overview/ca-workers.d.ts +23 -0
  309. package/dist/elements/overview/ca-workers.d.ts.map +1 -0
  310. package/dist/elements/overview/ca-workers.js +86 -0
  311. package/dist/elements/overview/ca-workers.js.map +1 -0
  312. package/dist/elements/overview/flow-types.d.ts +2 -0
  313. package/dist/elements/overview/flow-types.d.ts.map +1 -0
  314. package/dist/elements/overview/flow-types.js +2 -0
  315. package/dist/elements/overview/flow-types.js.map +1 -0
  316. package/dist/elements/overview/graph/arrange.d.ts +16 -0
  317. package/dist/elements/overview/graph/arrange.d.ts.map +1 -0
  318. package/dist/elements/overview/graph/arrange.js +152 -0
  319. package/dist/elements/overview/graph/arrange.js.map +1 -0
  320. package/dist/elements/overview/graph/card.d.ts +64 -0
  321. package/dist/elements/overview/graph/card.d.ts.map +1 -0
  322. package/dist/elements/overview/graph/card.js +160 -0
  323. package/dist/elements/overview/graph/card.js.map +1 -0
  324. package/dist/elements/overview/graph/flow-index.d.ts +52 -0
  325. package/dist/elements/overview/graph/flow-index.d.ts.map +1 -0
  326. package/dist/elements/overview/graph/flow-index.js +121 -0
  327. package/dist/elements/overview/graph/flow-index.js.map +1 -0
  328. package/dist/elements/overview/graph/highlight.d.ts +14 -0
  329. package/dist/elements/overview/graph/highlight.d.ts.map +1 -0
  330. package/dist/elements/overview/graph/highlight.js +33 -0
  331. package/dist/elements/overview/graph/highlight.js.map +1 -0
  332. package/dist/elements/overview/graph/layer.d.ts +32 -0
  333. package/dist/elements/overview/graph/layer.d.ts.map +1 -0
  334. package/dist/elements/overview/graph/layer.js +92 -0
  335. package/dist/elements/overview/graph/layer.js.map +1 -0
  336. package/dist/elements/overview/graph/layout.d.ts +80 -0
  337. package/dist/elements/overview/graph/layout.d.ts.map +1 -0
  338. package/dist/elements/overview/graph/layout.js +261 -0
  339. package/dist/elements/overview/graph/layout.js.map +1 -0
  340. package/dist/elements/overview/graph/marks.d.ts +18 -0
  341. package/dist/elements/overview/graph/marks.d.ts.map +1 -0
  342. package/dist/elements/overview/graph/marks.js +17 -0
  343. package/dist/elements/overview/graph/marks.js.map +1 -0
  344. package/dist/elements/overview/graph/matrix.d.ts +58 -0
  345. package/dist/elements/overview/graph/matrix.d.ts.map +1 -0
  346. package/dist/elements/overview/graph/matrix.js +93 -0
  347. package/dist/elements/overview/graph/matrix.js.map +1 -0
  348. package/dist/elements/overview/graph/nav.d.ts +15 -0
  349. package/dist/elements/overview/graph/nav.d.ts.map +1 -0
  350. package/dist/elements/overview/graph/nav.js +80 -0
  351. package/dist/elements/overview/graph/nav.js.map +1 -0
  352. package/dist/elements/overview/graph/pan-zoom.d.ts +83 -0
  353. package/dist/elements/overview/graph/pan-zoom.d.ts.map +1 -0
  354. package/dist/elements/overview/graph/pan-zoom.js +189 -0
  355. package/dist/elements/overview/graph/pan-zoom.js.map +1 -0
  356. package/dist/elements/overview/graph/paths.d.ts +9 -0
  357. package/dist/elements/overview/graph/paths.d.ts.map +1 -0
  358. package/dist/elements/overview/graph/paths.js +44 -0
  359. package/dist/elements/overview/graph/paths.js.map +1 -0
  360. package/dist/elements/overview/graph/place-card.d.ts +36 -0
  361. package/dist/elements/overview/graph/place-card.d.ts.map +1 -0
  362. package/dist/elements/overview/graph/place-card.js +68 -0
  363. package/dist/elements/overview/graph/place-card.js.map +1 -0
  364. package/dist/elements/overview/graph/project.d.ts +31 -0
  365. package/dist/elements/overview/graph/project.d.ts.map +1 -0
  366. package/dist/elements/overview/graph/project.js +455 -0
  367. package/dist/elements/overview/graph/project.js.map +1 -0
  368. package/dist/elements/overview/graph/selection.d.ts +31 -0
  369. package/dist/elements/overview/graph/selection.d.ts.map +1 -0
  370. package/dist/elements/overview/graph/selection.js +44 -0
  371. package/dist/elements/overview/graph/selection.js.map +1 -0
  372. package/dist/elements/overview/graph/states.d.ts +6 -0
  373. package/dist/elements/overview/graph/states.d.ts.map +1 -0
  374. package/dist/elements/overview/graph/states.js +5 -0
  375. package/dist/elements/overview/graph/states.js.map +1 -0
  376. package/dist/elements/overview/graph/types.d.ts +124 -0
  377. package/dist/elements/overview/graph/types.d.ts.map +1 -0
  378. package/dist/elements/overview/graph/types.js +3 -0
  379. package/dist/elements/overview/graph/types.js.map +1 -0
  380. package/dist/elements/overview/graph/view.d.ts +16 -0
  381. package/dist/elements/overview/graph/view.d.ts.map +1 -0
  382. package/dist/elements/overview/graph/view.js +20 -0
  383. package/dist/elements/overview/graph/view.js.map +1 -0
  384. package/dist/elements/overview/index.d.ts +10 -0
  385. package/dist/elements/overview/index.d.ts.map +1 -0
  386. package/dist/elements/overview/index.js +10 -0
  387. package/dist/elements/overview/index.js.map +1 -0
  388. package/dist/elements/overview/kpis-model.d.ts +31 -0
  389. package/dist/elements/overview/kpis-model.d.ts.map +1 -0
  390. package/dist/elements/overview/kpis-model.js +30 -0
  391. package/dist/elements/overview/kpis-model.js.map +1 -0
  392. package/dist/elements/overview/logic.d.ts +442 -0
  393. package/dist/elements/overview/logic.d.ts.map +1 -0
  394. package/dist/elements/overview/logic.js +1431 -0
  395. package/dist/elements/overview/logic.js.map +1 -0
  396. package/dist/elements/overview/pipeline-graph/actions.d.ts +16 -0
  397. package/dist/elements/overview/pipeline-graph/actions.d.ts.map +1 -0
  398. package/dist/elements/overview/pipeline-graph/actions.js +42 -0
  399. package/dist/elements/overview/pipeline-graph/actions.js.map +1 -0
  400. package/dist/elements/overview/pipeline-graph/crumbs.d.ts +15 -0
  401. package/dist/elements/overview/pipeline-graph/crumbs.d.ts.map +1 -0
  402. package/dist/elements/overview/pipeline-graph/crumbs.js +70 -0
  403. package/dist/elements/overview/pipeline-graph/crumbs.js.map +1 -0
  404. package/dist/elements/overview/pipeline-graph/dag.d.ts +4 -0
  405. package/dist/elements/overview/pipeline-graph/dag.d.ts.map +1 -0
  406. package/dist/elements/overview/pipeline-graph/dag.js +259 -0
  407. package/dist/elements/overview/pipeline-graph/dag.js.map +1 -0
  408. package/dist/elements/overview/pipeline-graph/host.d.ts +24 -0
  409. package/dist/elements/overview/pipeline-graph/host.d.ts.map +1 -0
  410. package/dist/elements/overview/pipeline-graph/host.js +2 -0
  411. package/dist/elements/overview/pipeline-graph/host.js.map +1 -0
  412. package/dist/elements/overview/pipeline-graph/icons.d.ts +5 -0
  413. package/dist/elements/overview/pipeline-graph/icons.d.ts.map +1 -0
  414. package/dist/elements/overview/pipeline-graph/icons.js +13 -0
  415. package/dist/elements/overview/pipeline-graph/icons.js.map +1 -0
  416. package/dist/elements/overview/pipeline-graph/inspector.d.ts +5 -0
  417. package/dist/elements/overview/pipeline-graph/inspector.d.ts.map +1 -0
  418. package/dist/elements/overview/pipeline-graph/inspector.js +100 -0
  419. package/dist/elements/overview/pipeline-graph/inspector.js.map +1 -0
  420. package/dist/elements/overview/pipeline-graph/legend.d.ts +9 -0
  421. package/dist/elements/overview/pipeline-graph/legend.d.ts.map +1 -0
  422. package/dist/elements/overview/pipeline-graph/legend.js +59 -0
  423. package/dist/elements/overview/pipeline-graph/legend.js.map +1 -0
  424. package/dist/elements/overview/pipeline-graph/matrix.d.ts +4 -0
  425. package/dist/elements/overview/pipeline-graph/matrix.d.ts.map +1 -0
  426. package/dist/elements/overview/pipeline-graph/matrix.js +193 -0
  427. package/dist/elements/overview/pipeline-graph/matrix.js.map +1 -0
  428. package/dist/elements/overview/pipeline-graph/outline.d.ts +53 -0
  429. package/dist/elements/overview/pipeline-graph/outline.d.ts.map +1 -0
  430. package/dist/elements/overview/pipeline-graph/outline.js +111 -0
  431. package/dist/elements/overview/pipeline-graph/outline.js.map +1 -0
  432. package/dist/elements/overview/pipeline-graph/strings.d.ts +11 -0
  433. package/dist/elements/overview/pipeline-graph/strings.d.ts.map +1 -0
  434. package/dist/elements/overview/pipeline-graph/strings.js +49 -0
  435. package/dist/elements/overview/pipeline-graph/strings.js.map +1 -0
  436. package/dist/elements/overview/pipeline-graph/styles.d.ts +4 -0
  437. package/dist/elements/overview/pipeline-graph/styles.d.ts.map +1 -0
  438. package/dist/elements/overview/pipeline-graph/styles.js +96 -0
  439. package/dist/elements/overview/pipeline-graph/styles.js.map +1 -0
  440. package/dist/elements/overview/pipeline-graph/table.d.ts +11 -0
  441. package/dist/elements/overview/pipeline-graph/table.d.ts.map +1 -0
  442. package/dist/elements/overview/pipeline-graph/table.js +74 -0
  443. package/dist/elements/overview/pipeline-graph/table.js.map +1 -0
  444. package/dist/elements/overview/pipeline-graph/tools.d.ts +5 -0
  445. package/dist/elements/overview/pipeline-graph/tools.d.ts.map +1 -0
  446. package/dist/elements/overview/pipeline-graph/tools.js +48 -0
  447. package/dist/elements/overview/pipeline-graph/tools.js.map +1 -0
  448. package/dist/elements/overview/pipeline-graph/words.d.ts +45 -0
  449. package/dist/elements/overview/pipeline-graph/words.d.ts.map +1 -0
  450. package/dist/elements/overview/pipeline-graph/words.js +108 -0
  451. package/dist/elements/overview/pipeline-graph/words.js.map +1 -0
  452. package/dist/elements/overview/place-card.d.ts +36 -0
  453. package/dist/elements/overview/place-card.d.ts.map +1 -0
  454. package/dist/elements/overview/place-card.js +68 -0
  455. package/dist/elements/overview/place-card.js.map +1 -0
  456. package/dist/elements/overview/timeline-model.d.ts +44 -0
  457. package/dist/elements/overview/timeline-model.d.ts.map +1 -0
  458. package/dist/elements/overview/timeline-model.js +53 -0
  459. package/dist/elements/overview/timeline-model.js.map +1 -0
  460. package/dist/elements/shared/ca-count.d.ts +17 -0
  461. package/dist/elements/shared/ca-count.d.ts.map +1 -0
  462. package/dist/elements/shared/ca-count.js +59 -0
  463. package/dist/elements/shared/ca-count.js.map +1 -0
  464. package/dist/elements/shared/ca-definition.d.ts +26 -0
  465. package/dist/elements/shared/ca-definition.d.ts.map +1 -0
  466. package/dist/elements/shared/ca-definition.js +202 -0
  467. package/dist/elements/shared/ca-definition.js.map +1 -0
  468. package/dist/elements/shared/ca-elapsed.d.ts +14 -0
  469. package/dist/elements/shared/ca-elapsed.d.ts.map +1 -0
  470. package/dist/elements/shared/ca-elapsed.js +33 -0
  471. package/dist/elements/shared/ca-elapsed.js.map +1 -0
  472. package/dist/elements/shared/ca-json-tree.d.ts +16 -0
  473. package/dist/elements/shared/ca-json-tree.d.ts.map +1 -0
  474. package/dist/elements/shared/ca-json-tree.js +52 -0
  475. package/dist/elements/shared/ca-json-tree.js.map +1 -0
  476. package/dist/elements/shared/ca-markdown.d.ts +19 -0
  477. package/dist/elements/shared/ca-markdown.d.ts.map +1 -0
  478. package/dist/elements/shared/ca-markdown.js +59 -0
  479. package/dist/elements/shared/ca-markdown.js.map +1 -0
  480. package/dist/elements/shared/contract-parts.d.ts +35 -0
  481. package/dist/elements/shared/contract-parts.d.ts.map +1 -0
  482. package/dist/elements/shared/contract-parts.js +151 -0
  483. package/dist/elements/shared/contract-parts.js.map +1 -0
  484. package/dist/elements/shared/fact-line.d.ts +4 -0
  485. package/dist/elements/shared/fact-line.d.ts.map +1 -0
  486. package/dist/elements/shared/fact-line.js +8 -0
  487. package/dist/elements/shared/fact-line.js.map +1 -0
  488. package/dist/elements/shared/file-card.d.ts +17 -0
  489. package/dist/elements/shared/file-card.d.ts.map +1 -0
  490. package/dist/elements/shared/file-card.js +37 -0
  491. package/dist/elements/shared/file-card.js.map +1 -0
  492. package/dist/elements/shared/prompt-text.d.ts +5 -0
  493. package/dist/elements/shared/prompt-text.d.ts.map +1 -0
  494. package/dist/elements/shared/prompt-text.js +13 -0
  495. package/dist/elements/shared/prompt-text.js.map +1 -0
  496. package/dist/elements/shared/task-chip.d.ts +10 -0
  497. package/dist/elements/shared/task-chip.d.ts.map +1 -0
  498. package/dist/elements/shared/task-chip.js +19 -0
  499. package/dist/elements/shared/task-chip.js.map +1 -0
  500. package/dist/elements/shell/ca-clock.d.ts +13 -0
  501. package/dist/elements/shell/ca-clock.d.ts.map +1 -0
  502. package/dist/elements/shell/ca-clock.js +30 -0
  503. package/dist/elements/shell/ca-clock.js.map +1 -0
  504. package/dist/elements/shell/ca-hosts.d.ts +21 -0
  505. package/dist/elements/shell/ca-hosts.d.ts.map +1 -0
  506. package/dist/elements/shell/ca-hosts.js +97 -0
  507. package/dist/elements/shell/ca-hosts.js.map +1 -0
  508. package/dist/elements/shell/ca-monitor.d.ts +180 -0
  509. package/dist/elements/shell/ca-monitor.d.ts.map +1 -0
  510. package/dist/elements/shell/ca-monitor.js +547 -0
  511. package/dist/elements/shell/ca-monitor.js.map +1 -0
  512. package/dist/elements/shell/ca-run-picker.d.ts +71 -0
  513. package/dist/elements/shell/ca-run-picker.d.ts.map +1 -0
  514. package/dist/elements/shell/ca-run-picker.js +313 -0
  515. package/dist/elements/shell/ca-run-picker.js.map +1 -0
  516. package/dist/elements/shell/ca-theme-switch.d.ts +36 -0
  517. package/dist/elements/shell/ca-theme-switch.d.ts.map +1 -0
  518. package/dist/elements/shell/ca-theme-switch.js +186 -0
  519. package/dist/elements/shell/ca-theme-switch.js.map +1 -0
  520. package/dist/elements/shell/ca-toasts.d.ts +23 -0
  521. package/dist/elements/shell/ca-toasts.d.ts.map +1 -0
  522. package/dist/elements/shell/ca-toasts.js +88 -0
  523. package/dist/elements/shell/ca-toasts.js.map +1 -0
  524. package/dist/elements/shell/header.d.ts +13 -0
  525. package/dist/elements/shell/header.d.ts.map +1 -0
  526. package/dist/elements/shell/header.js +38 -0
  527. package/dist/elements/shell/header.js.map +1 -0
  528. package/dist/elements/shell/styles.d.ts +2 -0
  529. package/dist/elements/shell/styles.d.ts.map +1 -0
  530. package/dist/elements/shell/styles.js +72 -0
  531. package/dist/elements/shell/styles.js.map +1 -0
  532. package/dist/elements/shell/tabs.d.ts +32 -0
  533. package/dist/elements/shell/tabs.d.ts.map +1 -0
  534. package/dist/elements/shell/tabs.js +125 -0
  535. package/dist/elements/shell/tabs.js.map +1 -0
  536. package/dist/elements/shell/views.d.ts +27 -0
  537. package/dist/elements/shell/views.d.ts.map +1 -0
  538. package/dist/elements/shell/views.js +55 -0
  539. package/dist/elements/shell/views.js.map +1 -0
  540. package/dist/elements/task/ca-task-view.d.ts +55 -0
  541. package/dist/elements/task/ca-task-view.d.ts.map +1 -0
  542. package/dist/elements/task/ca-task-view.js +199 -0
  543. package/dist/elements/task/ca-task-view.js.map +1 -0
  544. package/dist/elements/task/ca-transcript.d.ts +74 -0
  545. package/dist/elements/task/ca-transcript.d.ts.map +1 -0
  546. package/dist/elements/task/ca-transcript.js +241 -0
  547. package/dist/elements/task/ca-transcript.js.map +1 -0
  548. package/dist/elements/task/context.d.ts +57 -0
  549. package/dist/elements/task/context.d.ts.map +1 -0
  550. package/dist/elements/task/context.js +61 -0
  551. package/dist/elements/task/context.js.map +1 -0
  552. package/dist/elements/task/header.d.ts +9 -0
  553. package/dist/elements/task/header.d.ts.map +1 -0
  554. package/dist/elements/task/header.js +287 -0
  555. package/dist/elements/task/header.js.map +1 -0
  556. package/dist/elements/task/index.d.ts +3 -0
  557. package/dist/elements/task/index.d.ts.map +1 -0
  558. package/dist/elements/task/index.js +3 -0
  559. package/dist/elements/task/index.js.map +1 -0
  560. package/dist/elements/task/inputs.d.ts +28 -0
  561. package/dist/elements/task/inputs.d.ts.map +1 -0
  562. package/dist/elements/task/inputs.js +27 -0
  563. package/dist/elements/task/inputs.js.map +1 -0
  564. package/dist/elements/task/panes/definition.d.ts +5 -0
  565. package/dist/elements/task/panes/definition.d.ts.map +1 -0
  566. package/dist/elements/task/panes/definition.js +5 -0
  567. package/dist/elements/task/panes/definition.js.map +1 -0
  568. package/dist/elements/task/panes/io.d.ts +8 -0
  569. package/dist/elements/task/panes/io.d.ts.map +1 -0
  570. package/dist/elements/task/panes/io.js +184 -0
  571. package/dist/elements/task/panes/io.js.map +1 -0
  572. package/dist/elements/task/panes/transcript.d.ts +5 -0
  573. package/dist/elements/task/panes/transcript.d.ts.map +1 -0
  574. package/dist/elements/task/panes/transcript.js +29 -0
  575. package/dist/elements/task/panes/transcript.js.map +1 -0
  576. package/dist/elements/task/rounds.d.ts +14 -0
  577. package/dist/elements/task/rounds.d.ts.map +1 -0
  578. package/dist/elements/task/rounds.js +59 -0
  579. package/dist/elements/task/rounds.js.map +1 -0
  580. package/dist/elements/task/styles.d.ts +2 -0
  581. package/dist/elements/task/styles.d.ts.map +1 -0
  582. package/dist/elements/task/styles.js +66 -0
  583. package/dist/elements/task/styles.js.map +1 -0
  584. package/dist/elements/task/transcript-model.d.ts +106 -0
  585. package/dist/elements/task/transcript-model.d.ts.map +1 -0
  586. package/dist/elements/task/transcript-model.js +280 -0
  587. package/dist/elements/task/transcript-model.js.map +1 -0
  588. package/dist/elements/task/who.d.ts +5 -0
  589. package/dist/elements/task/who.d.ts.map +1 -0
  590. package/dist/elements/task/who.js +30 -0
  591. package/dist/elements/task/who.js.map +1 -0
  592. package/dist/elements/trends/ca-trends.d.ts +55 -0
  593. package/dist/elements/trends/ca-trends.d.ts.map +1 -0
  594. package/dist/elements/trends/ca-trends.js +213 -0
  595. package/dist/elements/trends/ca-trends.js.map +1 -0
  596. package/dist/events.d.ts +107 -0
  597. package/dist/events.d.ts.map +1 -0
  598. package/dist/events.js +5 -0
  599. package/dist/events.js.map +1 -0
  600. package/dist/i18n.d.ts +16 -0
  601. package/dist/i18n.d.ts.map +1 -0
  602. package/dist/i18n.js +48 -0
  603. package/dist/i18n.js.map +1 -0
  604. package/dist/index.d.ts +14 -0
  605. package/dist/index.d.ts.map +1 -0
  606. package/dist/index.js +22 -0
  607. package/dist/index.js.map +1 -0
  608. package/dist/lib/clock.d.ts +20 -0
  609. package/dist/lib/clock.d.ts.map +1 -0
  610. package/dist/lib/clock.js +45 -0
  611. package/dist/lib/clock.js.map +1 -0
  612. package/dist/lib/format.d.ts +35 -0
  613. package/dist/lib/format.d.ts.map +1 -0
  614. package/dist/lib/format.js +117 -0
  615. package/dist/lib/format.js.map +1 -0
  616. package/dist/lib/highlight.d.ts +5 -0
  617. package/dist/lib/highlight.d.ts.map +1 -0
  618. package/dist/lib/highlight.js +86 -0
  619. package/dist/lib/highlight.js.map +1 -0
  620. package/dist/lib/labels.d.ts +103 -0
  621. package/dist/lib/labels.d.ts.map +1 -0
  622. package/dist/lib/labels.js +249 -0
  623. package/dist/lib/labels.js.map +1 -0
  624. package/dist/lib/markdown.d.ts +13 -0
  625. package/dist/lib/markdown.d.ts.map +1 -0
  626. package/dist/lib/markdown.js +118 -0
  627. package/dist/lib/markdown.js.map +1 -0
  628. package/dist/lib/memory.d.ts +27 -0
  629. package/dist/lib/memory.d.ts.map +1 -0
  630. package/dist/lib/memory.js +117 -0
  631. package/dist/lib/memory.js.map +1 -0
  632. package/dist/lib/quota-format.d.ts +28 -0
  633. package/dist/lib/quota-format.d.ts.map +1 -0
  634. package/dist/lib/quota-format.js +67 -0
  635. package/dist/lib/quota-format.js.map +1 -0
  636. package/dist/lib/scroll.d.ts +16 -0
  637. package/dist/lib/scroll.d.ts.map +1 -0
  638. package/dist/lib/scroll.js +70 -0
  639. package/dist/lib/scroll.js.map +1 -0
  640. package/dist/lib/status.d.ts +25 -0
  641. package/dist/lib/status.d.ts.map +1 -0
  642. package/dist/lib/status.js +40 -0
  643. package/dist/lib/status.js.map +1 -0
  644. package/dist/lib/tone.d.ts +29 -0
  645. package/dist/lib/tone.d.ts.map +1 -0
  646. package/dist/lib/tone.js +97 -0
  647. package/dist/lib/tone.js.map +1 -0
  648. package/dist/lib/trends.d.ts +15 -0
  649. package/dist/lib/trends.d.ts.map +1 -0
  650. package/dist/lib/trends.js +36 -0
  651. package/dist/lib/trends.js.map +1 -0
  652. package/dist/locales/codes.d.ts +14 -0
  653. package/dist/locales/codes.d.ts.map +1 -0
  654. package/dist/locales/codes.js +21 -0
  655. package/dist/locales/codes.js.map +1 -0
  656. package/dist/locales/ja.d.ts +761 -0
  657. package/dist/locales/ja.d.ts.map +1 -0
  658. package/dist/locales/ja.js +767 -0
  659. package/dist/locales/ja.js.map +1 -0
  660. package/dist/route.d.ts +46 -0
  661. package/dist/route.d.ts.map +1 -0
  662. package/dist/route.js +102 -0
  663. package/dist/route.js.map +1 -0
  664. package/dist/router.d.ts +23 -0
  665. package/dist/router.d.ts.map +1 -0
  666. package/dist/router.js +55 -0
  667. package/dist/router.js.map +1 -0
  668. package/dist/styles/base.d.ts +11 -0
  669. package/dist/styles/base.d.ts.map +1 -0
  670. package/dist/styles/base.js +241 -0
  671. package/dist/styles/base.js.map +1 -0
  672. package/dist/styles/chips.d.ts +2 -0
  673. package/dist/styles/chips.d.ts.map +1 -0
  674. package/dist/styles/chips.js +18 -0
  675. package/dist/styles/chips.js.map +1 -0
  676. package/dist/styles/executor-icon.d.ts +3 -0
  677. package/dist/styles/executor-icon.d.ts.map +1 -0
  678. package/dist/styles/executor-icon.js +9 -0
  679. package/dist/styles/executor-icon.js.map +1 -0
  680. package/dist/styles/facts.d.ts +2 -0
  681. package/dist/styles/facts.d.ts.map +1 -0
  682. package/dist/styles/facts.js +7 -0
  683. package/dist/styles/facts.js.map +1 -0
  684. package/dist/styles/index.d.ts +17 -0
  685. package/dist/styles/index.d.ts.map +1 -0
  686. package/dist/styles/index.js +16 -0
  687. package/dist/styles/index.js.map +1 -0
  688. package/dist/styles/layout.d.ts +2 -0
  689. package/dist/styles/layout.d.ts.map +1 -0
  690. package/dist/styles/layout.js +30 -0
  691. package/dist/styles/layout.js.map +1 -0
  692. package/dist/styles/legend.d.ts +2 -0
  693. package/dist/styles/legend.d.ts.map +1 -0
  694. package/dist/styles/legend.js +8 -0
  695. package/dist/styles/legend.js.map +1 -0
  696. package/dist/styles/meter.d.ts +3 -0
  697. package/dist/styles/meter.d.ts.map +1 -0
  698. package/dist/styles/meter.js +9 -0
  699. package/dist/styles/meter.js.map +1 -0
  700. package/dist/styles/motion.d.ts +2 -0
  701. package/dist/styles/motion.d.ts.map +1 -0
  702. package/dist/styles/motion.js +27 -0
  703. package/dist/styles/motion.js.map +1 -0
  704. package/dist/styles/prose.d.ts +3 -0
  705. package/dist/styles/prose.d.ts.map +1 -0
  706. package/dist/styles/prose.js +59 -0
  707. package/dist/styles/prose.js.map +1 -0
  708. package/dist/styles/reset.d.ts +2 -0
  709. package/dist/styles/reset.d.ts.map +1 -0
  710. package/dist/styles/reset.js +13 -0
  711. package/dist/styles/reset.js.map +1 -0
  712. package/dist/styles/status.d.ts +2 -0
  713. package/dist/styles/status.d.ts.map +1 -0
  714. package/dist/styles/status.js +52 -0
  715. package/dist/styles/status.js.map +1 -0
  716. package/dist/styles/text.d.ts +2 -0
  717. package/dist/styles/text.d.ts.map +1 -0
  718. package/dist/styles/text.js +21 -0
  719. package/dist/styles/text.js.map +1 -0
  720. package/dist/styles/theme-sheet.d.ts +12 -0
  721. package/dist/styles/theme-sheet.d.ts.map +1 -0
  722. package/dist/styles/theme-sheet.js +24 -0
  723. package/dist/styles/theme-sheet.js.map +1 -0
  724. package/dist/styles/themes.d.ts +75 -0
  725. package/dist/styles/themes.d.ts.map +1 -0
  726. package/dist/styles/themes.js +452 -0
  727. package/dist/styles/themes.js.map +1 -0
  728. package/dist/styles/tokens.d.ts +8 -0
  729. package/dist/styles/tokens.d.ts.map +1 -0
  730. package/dist/styles/tokens.js +32 -0
  731. package/dist/styles/tokens.js.map +1 -0
  732. package/dist/themes/boot.d.ts +7 -0
  733. package/dist/themes/boot.d.ts.map +1 -0
  734. package/dist/themes/boot.js +14 -0
  735. package/dist/themes/boot.js.map +1 -0
  736. package/dist/themes/choice.d.ts +16 -0
  737. package/dist/themes/choice.d.ts.map +1 -0
  738. package/dist/themes/choice.js +45 -0
  739. package/dist/themes/choice.js.map +1 -0
  740. package/dist/themes/data.d.ts +42 -0
  741. package/dist/themes/data.d.ts.map +1 -0
  742. package/dist/themes/data.js +356 -0
  743. package/dist/themes/data.js.map +1 -0
  744. package/dist/themes/index.d.ts +5 -0
  745. package/dist/themes/index.d.ts.map +1 -0
  746. package/dist/themes/index.js +8 -0
  747. package/dist/themes/index.js.map +1 -0
  748. package/dist/themes/sheet.d.ts +12 -0
  749. package/dist/themes/sheet.d.ts.map +1 -0
  750. package/dist/themes/sheet.js +24 -0
  751. package/dist/themes/sheet.js.map +1 -0
  752. package/dist/themes/tokens-list.d.ts +15 -0
  753. package/dist/themes/tokens-list.d.ts.map +1 -0
  754. package/dist/themes/tokens-list.js +62 -0
  755. package/dist/themes/tokens-list.js.map +1 -0
  756. package/dist/words/api-error.d.ts +4 -0
  757. package/dist/words/api-error.d.ts.map +1 -0
  758. package/dist/words/api-error.js +13 -0
  759. package/dist/words/api-error.js.map +1 -0
  760. package/dist/words/attempts.d.ts +17 -0
  761. package/dist/words/attempts.d.ts.map +1 -0
  762. package/dist/words/attempts.js +26 -0
  763. package/dist/words/attempts.js.map +1 -0
  764. package/dist/words/causes.d.ts +33 -0
  765. package/dist/words/causes.d.ts.map +1 -0
  766. package/dist/words/causes.js +58 -0
  767. package/dist/words/causes.js.map +1 -0
  768. package/dist/words/changes.d.ts +9 -0
  769. package/dist/words/changes.d.ts.map +1 -0
  770. package/dist/words/changes.js +21 -0
  771. package/dist/words/changes.js.map +1 -0
  772. package/dist/words/claims.d.ts +9 -0
  773. package/dist/words/claims.d.ts.map +1 -0
  774. package/dist/words/claims.js +12 -0
  775. package/dist/words/claims.js.map +1 -0
  776. package/dist/words/context.d.ts +18 -0
  777. package/dist/words/context.d.ts.map +1 -0
  778. package/dist/words/context.js +39 -0
  779. package/dist/words/context.js.map +1 -0
  780. package/dist/words/contract.d.ts +25 -0
  781. package/dist/words/contract.d.ts.map +1 -0
  782. package/dist/words/contract.js +52 -0
  783. package/dist/words/contract.js.map +1 -0
  784. package/dist/words/credential.d.ts +5 -0
  785. package/dist/words/credential.d.ts.map +1 -0
  786. package/dist/words/credential.js +7 -0
  787. package/dist/words/credential.js.map +1 -0
  788. package/dist/words/executor.d.ts +12 -0
  789. package/dist/words/executor.d.ts.map +1 -0
  790. package/dist/words/executor.js +20 -0
  791. package/dist/words/executor.js.map +1 -0
  792. package/dist/words/export.d.ts +8 -0
  793. package/dist/words/export.d.ts.map +1 -0
  794. package/dist/words/export.js +17 -0
  795. package/dist/words/export.js.map +1 -0
  796. package/dist/words/format.d.ts +36 -0
  797. package/dist/words/format.d.ts.map +1 -0
  798. package/dist/words/format.js +109 -0
  799. package/dist/words/format.js.map +1 -0
  800. package/dist/words/hops.d.ts +12 -0
  801. package/dist/words/hops.d.ts.map +1 -0
  802. package/dist/words/hops.js +27 -0
  803. package/dist/words/hops.js.map +1 -0
  804. package/dist/words/hosts.d.ts +18 -0
  805. package/dist/words/hosts.d.ts.map +1 -0
  806. package/dist/words/hosts.js +22 -0
  807. package/dist/words/hosts.js.map +1 -0
  808. package/dist/words/index.d.ts +27 -0
  809. package/dist/words/index.d.ts.map +1 -0
  810. package/dist/words/index.js +31 -0
  811. package/dist/words/index.js.map +1 -0
  812. package/dist/words/models.d.ts +10 -0
  813. package/dist/words/models.d.ts.map +1 -0
  814. package/dist/words/models.js +45 -0
  815. package/dist/words/models.js.map +1 -0
  816. package/dist/words/outcome.d.ts +14 -0
  817. package/dist/words/outcome.d.ts.map +1 -0
  818. package/dist/words/outcome.js +58 -0
  819. package/dist/words/outcome.js.map +1 -0
  820. package/dist/words/panels.d.ts +11 -0
  821. package/dist/words/panels.d.ts.map +1 -0
  822. package/dist/words/panels.js +50 -0
  823. package/dist/words/panels.js.map +1 -0
  824. package/dist/words/passes.d.ts +11 -0
  825. package/dist/words/passes.d.ts.map +1 -0
  826. package/dist/words/passes.js +13 -0
  827. package/dist/words/passes.js.map +1 -0
  828. package/dist/words/preflight.d.ts +28 -0
  829. package/dist/words/preflight.d.ts.map +1 -0
  830. package/dist/words/preflight.js +30 -0
  831. package/dist/words/preflight.js.map +1 -0
  832. package/dist/words/priority.d.ts +5 -0
  833. package/dist/words/priority.d.ts.map +1 -0
  834. package/dist/words/priority.js +7 -0
  835. package/dist/words/priority.js.map +1 -0
  836. package/dist/words/prompt.d.ts +10 -0
  837. package/dist/words/prompt.d.ts.map +1 -0
  838. package/dist/words/prompt.js +17 -0
  839. package/dist/words/prompt.js.map +1 -0
  840. package/dist/words/quota.d.ts +35 -0
  841. package/dist/words/quota.d.ts.map +1 -0
  842. package/dist/words/quota.js +102 -0
  843. package/dist/words/quota.js.map +1 -0
  844. package/dist/words/rests.d.ts +26 -0
  845. package/dist/words/rests.d.ts.map +1 -0
  846. package/dist/words/rests.js +77 -0
  847. package/dist/words/rests.js.map +1 -0
  848. package/dist/words/rounds.d.ts +14 -0
  849. package/dist/words/rounds.d.ts.map +1 -0
  850. package/dist/words/rounds.js +60 -0
  851. package/dist/words/rounds.js.map +1 -0
  852. package/dist/words/row-extras.d.ts +7 -0
  853. package/dist/words/row-extras.d.ts.map +1 -0
  854. package/dist/words/row-extras.js +26 -0
  855. package/dist/words/row-extras.js.map +1 -0
  856. package/dist/words/run-line.d.ts +40 -0
  857. package/dist/words/run-line.d.ts.map +1 -0
  858. package/dist/words/run-line.js +66 -0
  859. package/dist/words/run-line.js.map +1 -0
  860. package/dist/words/stop.d.ts +6 -0
  861. package/dist/words/stop.d.ts.map +1 -0
  862. package/dist/words/stop.js +69 -0
  863. package/dist/words/stop.js.map +1 -0
  864. package/dist/words/table.d.ts +4 -0
  865. package/dist/words/table.d.ts.map +1 -0
  866. package/dist/words/table.js +8 -0
  867. package/dist/words/table.js.map +1 -0
  868. package/dist/words/task-definition.d.ts +23 -0
  869. package/dist/words/task-definition.d.ts.map +1 -0
  870. package/dist/words/task-definition.js +27 -0
  871. package/dist/words/task-definition.js.map +1 -0
  872. package/dist/words/time-box.d.ts +8 -0
  873. package/dist/words/time-box.d.ts.map +1 -0
  874. package/dist/words/time-box.js +12 -0
  875. package/dist/words/time-box.js.map +1 -0
  876. package/dist/words/trends.d.ts +86 -0
  877. package/dist/words/trends.d.ts.map +1 -0
  878. package/dist/words/trends.js +104 -0
  879. package/dist/words/trends.js.map +1 -0
  880. package/dist/words/units.d.ts +9 -0
  881. package/dist/words/units.d.ts.map +1 -0
  882. package/dist/words/units.js +12 -0
  883. package/dist/words/units.js.map +1 -0
  884. package/docs/embed.md +118 -0
  885. package/docs/events.md +38 -0
  886. package/docs/examples/embed.html +31 -0
  887. package/docs/examples/journal.ts +32 -0
  888. package/docs/examples/live-transcript.ts +22 -0
  889. package/docs/examples/vite/index.html +30 -0
  890. package/docs/examples/vite/main.ts +23 -0
  891. package/docs/languages.md +48 -0
  892. package/docs/live-data.md +17 -0
  893. package/docs/theming.md +21 -0
  894. package/docs/tsconfig.json +14 -0
  895. package/package.json +131 -4
  896. package/src/adapters/check-rows.ts +78 -0
  897. package/src/adapters/filters.ts +76 -0
  898. package/src/adapters/graph/compound.ts +359 -0
  899. package/src/adapters/graph/flow-index.ts +154 -0
  900. package/src/adapters/graph/highlight.ts +40 -0
  901. package/src/adapters/graph/input.ts +236 -0
  902. package/src/adapters/graph/layer.ts +92 -0
  903. package/src/adapters/graph/matrix.ts +133 -0
  904. package/src/adapters/graph/plans.fixture.ts +194 -0
  905. package/src/adapters/graph/project.ts +358 -0
  906. package/src/adapters/graph/selection.ts +54 -0
  907. package/src/adapters/graph/states.ts +10 -0
  908. package/src/adapters/graph/types.ts +148 -0
  909. package/src/adapters/graph/words.ts +146 -0
  910. package/src/adapters/index.ts +22 -0
  911. package/src/adapters/journal-columns.ts +200 -0
  912. package/src/adapters/kpi-tiles.ts +211 -0
  913. package/src/adapters/lanes.ts +98 -0
  914. package/src/adapters/model-shares.ts +62 -0
  915. package/src/adapters/panel-body.ts +74 -0
  916. package/src/adapters/preflight.ts +27 -0
  917. package/src/adapters/task-columns.ts +120 -0
  918. package/src/adapters/transcript/index.ts +14 -0
  919. package/src/adapters/transcript/model.ts +156 -0
  920. package/src/adapters/transcript/rounds.ts +86 -0
  921. package/src/adapters/transcript/sections.ts +82 -0
  922. package/src/adapters/transcript/web.ts +40 -0
  923. package/src/adapters/transcript/who.ts +53 -0
  924. package/src/adapters/trends.ts +337 -0
  925. package/src/controllers/locale.ts +47 -0
  926. package/src/controllers/shortcuts.ts +69 -0
  927. package/src/controllers/stream.ts +103 -0
  928. package/src/controllers/task-detail.ts +54 -0
  929. package/src/controllers/theme.ts +73 -0
  930. package/src/core/events.ts +120 -0
  931. package/src/core/i18n.ts +76 -0
  932. package/src/core/index.ts +6 -0
  933. package/src/core/memory.ts +177 -0
  934. package/src/core/scroll.ts +73 -0
  935. package/src/core/view-route.ts +177 -0
  936. package/src/core/view-router.ts +66 -0
  937. package/src/define/all.ts +13 -0
  938. package/src/define/contracts.ts +2 -0
  939. package/src/define/definitions.ts +3 -0
  940. package/src/define/journal-table.ts +2 -0
  941. package/src/define/kpis.ts +2 -0
  942. package/src/define/monitor.ts +2 -0
  943. package/src/define/overview.ts +2 -0
  944. package/src/define/pipeline-graph.ts +2 -0
  945. package/src/define/procs.ts +3 -0
  946. package/src/define/task-table.ts +2 -0
  947. package/src/define/task-view.ts +2 -0
  948. package/src/define/timeline.ts +2 -0
  949. package/src/define/transcript.ts +2 -0
  950. package/src/elements/lists/ca-contracts.ts +204 -0
  951. package/src/elements/lists/ca-definitions.ts +170 -0
  952. package/src/elements/lists/ca-journal-table.ts +141 -0
  953. package/src/elements/lists/ca-panel-body.ts +139 -0
  954. package/src/elements/lists/ca-panel-view.ts +50 -0
  955. package/src/elements/lists/ca-proc-tree.ts +57 -0
  956. package/src/elements/lists/ca-procs-view.ts +89 -0
  957. package/src/elements/lists/ca-task-table.ts +94 -0
  958. package/src/elements/lists/index.ts +8 -0
  959. package/src/elements/overview/ca-kpis.ts +51 -0
  960. package/src/elements/overview/ca-model-usage.ts +113 -0
  961. package/src/elements/overview/ca-overview.ts +492 -0
  962. package/src/elements/overview/ca-pipeline-graph.ts +617 -0
  963. package/src/elements/overview/ca-quota.ts +164 -0
  964. package/src/elements/overview/ca-run-driver.ts +140 -0
  965. package/src/elements/overview/ca-spend-breakdown.ts +107 -0
  966. package/src/elements/overview/ca-timeline.ts +57 -0
  967. package/src/elements/overview/ca-workers.ts +82 -0
  968. package/src/elements/overview/index.ts +9 -0
  969. package/src/elements/overview/pipeline-graph/actions.ts +45 -0
  970. package/src/elements/overview/pipeline-graph/crumbs.ts +75 -0
  971. package/src/elements/overview/pipeline-graph/host.ts +26 -0
  972. package/src/elements/overview/pipeline-graph/inspector.ts +104 -0
  973. package/src/elements/overview/pipeline-graph/outline.ts +150 -0
  974. package/src/elements/overview/pipeline-graph/strings.ts +53 -0
  975. package/src/elements/overview/pipeline-graph/styles.ts +97 -0
  976. package/src/elements/shared/ca-definition.ts +206 -0
  977. package/src/elements/shared/contract-parts.ts +158 -0
  978. package/src/elements/shared/file-card.ts +49 -0
  979. package/src/elements/shared/prompt-text.ts +13 -0
  980. package/src/elements/shared/task-chip.ts +18 -0
  981. package/src/elements/shell/ca-clock.ts +27 -0
  982. package/src/elements/shell/ca-hosts.ts +93 -0
  983. package/src/elements/shell/ca-monitor.ts +526 -0
  984. package/src/elements/shell/ca-run-picker.ts +284 -0
  985. package/src/elements/shell/ca-theme-switch.ts +170 -0
  986. package/src/elements/shell/ca-toasts.ts +100 -0
  987. package/src/elements/shell/header.ts +45 -0
  988. package/src/elements/shell/styles.ts +72 -0
  989. package/src/elements/shell/tabs.ts +143 -0
  990. package/src/elements/shell/views.ts +67 -0
  991. package/src/elements/task/ca-task-view.ts +157 -0
  992. package/src/elements/task/ca-transcript.ts +214 -0
  993. package/src/elements/task/context.ts +105 -0
  994. package/src/elements/task/header.ts +292 -0
  995. package/src/elements/task/index.ts +2 -0
  996. package/src/elements/task/inputs.ts +46 -0
  997. package/src/elements/task/panes/definition.ts +7 -0
  998. package/src/elements/task/panes/io.ts +190 -0
  999. package/src/elements/task/panes/transcript.ts +29 -0
  1000. package/src/elements/task/styles.ts +66 -0
  1001. package/src/elements/trends/ca-trends.ts +204 -0
  1002. package/src/index.ts +23 -0
  1003. package/src/lib/tone.ts +109 -0
  1004. package/src/lib/trends.ts +44 -0
  1005. package/src/locales/codes.ts +23 -0
  1006. package/src/locales/ja.ts +771 -0
  1007. package/src/words/api-error.ts +17 -0
  1008. package/src/words/attempts.ts +28 -0
  1009. package/src/words/causes.ts +67 -0
  1010. package/src/words/changes.ts +27 -0
  1011. package/src/words/claims.ts +16 -0
  1012. package/src/words/context.ts +47 -0
  1013. package/src/words/contract.ts +63 -0
  1014. package/src/words/credential.ts +8 -0
  1015. package/src/words/executor.ts +22 -0
  1016. package/src/words/export.ts +22 -0
  1017. package/src/words/format.ts +107 -0
  1018. package/src/words/hops.ts +30 -0
  1019. package/src/words/hosts.ts +37 -0
  1020. package/src/words/index.ts +30 -0
  1021. package/src/words/models.ts +50 -0
  1022. package/src/words/outcome.ts +61 -0
  1023. package/src/words/panels.ts +53 -0
  1024. package/src/words/passes.ts +18 -0
  1025. package/src/words/preflight.ts +53 -0
  1026. package/src/words/priority.ts +8 -0
  1027. package/src/words/prompt.ts +20 -0
  1028. package/src/words/quota.ts +108 -0
  1029. package/src/words/rests.ts +96 -0
  1030. package/src/words/rounds.ts +56 -0
  1031. package/src/words/row-extras.ts +24 -0
  1032. package/src/words/run-line.ts +77 -0
  1033. package/src/words/stop.ts +65 -0
  1034. package/src/words/table.ts +10 -0
  1035. package/src/words/task-definition.ts +37 -0
  1036. package/src/words/time-box.ts +21 -0
  1037. package/src/words/trends.ts +118 -0
@@ -0,0 +1,72 @@
1
+ // The styles of `ca-monitor`: its header, the filter bar and the view below.
2
+ // The tab list's are in `tabs.ts`. The monitor is a container (`ca-monitor`):
3
+ // its parts follow the width it is given, not the window's, so it fits any box
4
+ // of a page that embeds it.
5
+ import { css } from 'lit';
6
+
7
+ export const monitorStyles = css`
8
+ :host { display: flex; flex-direction: column; height: 100%; min-height: 0; font: 13px/1.5 var(--sans); color: var(--text);
9
+ background: var(--backdrop); container: ca-monitor / inline-size; }
10
+ header { flex: none; display: flex; gap: 14px; align-items: center; padding: 10px 18px; border-bottom: 1px solid var(--line);
11
+ background: color-mix(in srgb, var(--bg) 75%, transparent); backdrop-filter: blur(10px); position: relative; z-index: 20; }
12
+ .brand { display: flex; align-items: center; gap: 8px; font-weight: 700; font-size: 15px; letter-spacing: 0.02em; }
13
+ /* the name stays on one line and whole up to a third of the width; the run button gives up its width instead */
14
+ .brand { flex: none; max-width: 30cqi; white-space: nowrap; }
15
+ .brand span { overflow: hidden; text-overflow: ellipsis; }
16
+ .brand svg { width: 22px; height: 22px; flex: none; }
17
+ .logo-braces { stroke: var(--text); }
18
+ .spark-a { stop-color: var(--accent); }
19
+ .spark-b { stop-color: var(--agent); }
20
+ .logo-spark { transform-origin: 60px 60px; }
21
+ :host([live]) .logo-spark { animation: core-beat 1.8s var(--ease) infinite; }
22
+ .runbtn { display: flex; align-items: center; gap: 10px; min-width: min(150px, 100%); max-width: 52cqi; cursor: pointer; padding: 6px 13px;
23
+ border-radius: 999px; background: var(--panel); border: 1px solid var(--line); color: var(--text); transition: border-color 0.2s, background 0.2s; }
24
+ .runbtn:hover { border-color: var(--line2); background: var(--panel2); }
25
+ .rn { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: none; max-width: 40%; }
26
+ .rs { color: var(--text-muted); font-size: 11.5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
27
+ .chev { color: var(--text-muted); }
28
+ /* a hub: the run's host, after its name */
29
+ .hostchip { flex: none; font-family: var(--mono); font-size: 11px; color: var(--text-2); padding: 0 7px; border: 1px solid var(--line2);
30
+ border-radius: 999px; white-space: nowrap; max-width: 24ch; overflow: hidden; text-overflow: ellipsis; }
31
+ .runbtn .pill { flex: none; font-size: 11px; }
32
+ ca-run-picker { inset-inline-start: 110px; }
33
+ /* the controls keep their width; the name and the run button give theirs */
34
+ .hdr-right { margin-left: auto; display: flex; align-items: center; gap: 12px; flex: none; white-space: nowrap; }
35
+ .nowline { font-size: 12px; color: var(--text-2); white-space: nowrap; overflow: hidden; max-width: 40cqi;
36
+ display: inline-flex; align-items: center; gap: 4px; }
37
+ .clock { font-family: var(--mono); font-size: 11.5px; color: var(--text-muted); }
38
+ .langs { --cae-segmented-radius: 999px; --cae-segmented-height: auto; --cae-segmented-padding: 2px 9px; --cae-segmented-font-size: 11px;
39
+ --cae-segmented-divider: 0; --cae-segmented-hover: var(--text-2); }
40
+ .live-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--status-running); display: inline-block; animation: breathe 1.8s ease-in-out infinite; }
41
+ .live-dot.off { background: var(--line2); animation: none; box-shadow: none; }
42
+
43
+ .bar { flex: none; display: flex; gap: 8px; padding: 8px 18px; border-top: 1px solid var(--line); align-items: center; flex-wrap: wrap; }
44
+ .bar select, .bar input { background: var(--panel); color: var(--text); border: 1px solid var(--line); border-radius: 8px;
45
+ padding: 5px 9px; outline: none; font: inherit; font-size: 12px; }
46
+ .bar input:focus, .bar select:focus { border-color: var(--focus); box-shadow: 0 0 0 calc(var(--focus-width) - 2px) var(--focus); }
47
+
48
+ .api-error { flex: none; margin: 0; padding: 8px 18px; color: var(--status-failed); font: 12px var(--mono); overflow-wrap: anywhere; }
49
+ .api-error:empty { padding: 0; }
50
+ main { border-top: 1px solid var(--line); flex: 1 1 auto; min-height: 0; overflow: auto; padding: 16px 18px 48px; }
51
+ main.stream { display: flex; flex-direction: column; overflow: hidden; padding-bottom: 16px; }
52
+ /* too narrow for one line: the controls go under the name and the run button */
53
+ @container ca-monitor (max-width: 1000px) {
54
+ header { flex-wrap: wrap; row-gap: 8px; }
55
+ }
56
+ @container ca-monitor (max-width: 760px) {
57
+ header { gap: 8px; padding: 8px 12px; }
58
+ /* the run button takes the rest of the first line; its run line gives up its width first */
59
+ .runbtn { flex: 1 1 0; min-width: 0; max-width: none; }
60
+ /* the run picker spans the header, 16px from each side */
61
+ ca-run-picker { inset-inline: 16px; width: auto; }
62
+ .hdr-right { width: 100%; margin-left: 0; flex-wrap: wrap; row-gap: 6px; }
63
+ .nowline { max-width: none; flex: 1 1 100%; }
64
+ main { padding: 12px 12px 40px; }
65
+ .bar { padding: 8px 12px; }
66
+ .bar input { flex: 1 1 10em; min-width: 0; }
67
+ }
68
+ @container ca-monitor (max-width: 420px) {
69
+ .brand { max-width: 40cqi; }
70
+ .runbtn { padding: 6px 10px; gap: 8px; }
71
+ }
72
+ `;
@@ -0,0 +1,143 @@
1
+ // The monitor's tab list: the built-in views, then the custom views; each tab
2
+ // with its count, and the line under the selected one. The selected tab is
3
+ // bold and underlined, not only coloured. A list wider than the monitor
4
+ // scrolls sideways, with a shade at each edge that has more tabs past it.
5
+ import { isRunPanel, type Info } from '@contraagent/api';
6
+ import { msg, str } from '@lit/localize';
7
+ import { css, html, nothing, type TemplateResult } from 'lit';
8
+ import { toneAttr } from '@contraagent/elements';
9
+ import type { Tab } from '../../core/view-route.js';
10
+ import type { Tone } from '../../lib/tone.js';
11
+
12
+ export interface TabInfo {
13
+ id: Tab;
14
+ label: string;
15
+ icon: string;
16
+ tip?: string;
17
+ panel: boolean;
18
+ }
19
+
20
+ /** The built-in tabs, in the current locale (call at render time). */
21
+ const builtinTabs = (): Omit<TabInfo, 'panel'>[] => [
22
+ { id: 'overview', label: msg('Overview'), icon: '◎' },
23
+ { id: 'tasks', label: msg('Tasks', { id: 'tab-tasks', desc: 'Tab: the list of tasks' }), icon: '≡' },
24
+ { id: 'journal', label: msg('History'), icon: '▤', tip: 'journal.jsonl' },
25
+ { id: 'outputs', label: msg('Outputs'), icon: '▣' },
26
+ { id: 'definitions', label: msg('Definitions'), icon: '⌘' },
27
+ { id: 'procs', label: msg('Processes'), icon: '⚙' },
28
+ { id: 'stream', label: msg('Task detail'), icon: '✦' },
29
+ ];
30
+
31
+ /** Every tab, in the current locale: the built-in ones, then one per custom view computed per run (`panels`; a trends panel is not a run's tab). */
32
+ export function monitorTabs(panels: Info['panels']): TabInfo[] {
33
+ return [
34
+ ...builtinTabs().map((t) => ({ ...t, panel: false })),
35
+ ...panels.filter(isRunPanel).map((p) => ({
36
+ id: `panel:${p.name}` as Tab,
37
+ label: p.title || p.name,
38
+ icon: p.icon || '▤',
39
+ tip: p.description ? msg(str`${p.description} (custom view)`) : msg('Custom view'),
40
+ panel: true,
41
+ })),
42
+ ];
43
+ }
44
+
45
+ /** The id of tab `i` in the tab list, which the view below it (`role="tabpanel"`) names as its label. */
46
+ export const tabId = (i: number): string => `tab-${i}`;
47
+
48
+ /**
49
+ * The tab list: `current` selected, a count per tab from `badge` (none when it
50
+ * returns null or ''), and the key hints. `pick` is called with a tab clicked.
51
+ * Each tab controls the element with the id `panel`. The arrow keys, Home and
52
+ * End move the focus between the tabs (a `RovingFocusController` over `.tab`
53
+ * in the host); Enter and Space select one.
54
+ */
55
+ export function tabBar(
56
+ tabs: TabInfo[],
57
+ current: Tab,
58
+ badge: (id: Tab) => [string | number, Tone] | null,
59
+ pick: (id: Tab) => void,
60
+ panel: string,
61
+ /** Show the hint for the single-key shortcuts. */
62
+ keys = true,
63
+ ): TemplateResult {
64
+ return html`<nav data-scroll="x">
65
+ <div class="tabs" role="tablist" aria-label=${msg('Views', { desc: 'The label of the list of tabs: Overview, Tasks, History, ...' })}>
66
+ ${tabs.map((t, i) => {
67
+ const b = badge(t.id);
68
+ const sel = t.id === current;
69
+ return html`${t.panel && !tabs[i - 1]?.panel ? html`<span class="tab-sep" aria-hidden="true" title=${msg('Custom views')}></span>` : nothing}
70
+ <button type="button" role="tab" id=${tabId(i)} aria-selected=${sel ? 'true' : 'false'} aria-controls=${panel}
71
+ class="tab ${t.panel ? 'panel-tab' : ''} ${sel ? 'sel' : ''}" title=${t.tip ?? nothing} @click=${() => pick(t.id)}>
72
+ <span class="tab-ic" aria-hidden="true">${t.icon}</span><span class="tab-label" data-label=${t.label}>${t.label}</span>${b && b[0] !== ''
73
+ ? html`<span class="badge" data-tone=${toneAttr(b[1])}>${b[0]}</span>`
74
+ : nothing}
75
+ </button>`;
76
+ })}
77
+ </div>
78
+ <span class="tab-ind init" aria-hidden="true"></span>
79
+ ${keys ? html`<span class="tabhint meta" role="note" aria-label=${msg('Keyboard shortcuts')}
80
+ ><span aria-hidden="true"><span class="kbd">1</span>–<span class="kbd">${Math.min(9, tabs.length)}</span> ${msg('Tabs')} |
81
+ <span class="kbd">r</span> ${msg('Runs')} | <span class="kbd">/</span> ${msg('Filter')}</span></span
82
+ >` : nothing}
83
+ </nav>`;
84
+ }
85
+
86
+ /**
87
+ * Move the line under the selected tab to it (after a render, a resize); when
88
+ * the selection changed, scroll the tab list so the selected tab is in view.
89
+ */
90
+ export function moveTabIndicator(root: ParentNode): void {
91
+ const sel = root.querySelector<HTMLElement>('.tab.sel');
92
+ const ind = root.querySelector<HTMLElement>('.tab-ind');
93
+ if (!sel || !ind) return;
94
+ ind.style.left = `${sel.offsetLeft + 10}px`;
95
+ ind.style.width = `${Math.max(12, sel.offsetWidth - 20)}px`;
96
+ if (ind.classList.contains('init')) requestAnimationFrame(() => ind.classList.remove('init'));
97
+ const nav = ind.parentElement;
98
+ if (nav && ind.dataset['tab'] !== sel.id) {
99
+ ind.dataset['tab'] = sel.id;
100
+ const edge = 24;
101
+ if (sel.offsetLeft - edge < nav.scrollLeft) nav.scrollLeft = Math.max(0, sel.offsetLeft - edge);
102
+ else if (sel.offsetLeft + sel.offsetWidth + edge > nav.scrollLeft + nav.clientWidth)
103
+ nav.scrollLeft = sel.offsetLeft + sel.offsetWidth + edge - nav.clientWidth;
104
+ }
105
+ }
106
+
107
+ export const tabStyles = css`
108
+ /* Scroll shades: a cover at each end of the tabs (moves with them) over a shade at each edge of the list (stays):
109
+ the shade shows at an edge while more tabs lie past it. */
110
+ nav { flex: none; display: flex; gap: 2px; padding: 6px 18px 0; position: relative; overflow-x: auto; scrollbar-width: none; align-items: center;
111
+ --shade: color-mix(in srgb, var(--text) 22%, transparent);
112
+ background:
113
+ linear-gradient(to right, var(--backdrop) 40%, transparent) left / 32px 100% no-repeat local,
114
+ linear-gradient(to left, var(--backdrop) 40%, transparent) right / 32px 100% no-repeat local,
115
+ radial-gradient(farthest-side at 0 50%, var(--shade), transparent) left / 12px 100% no-repeat scroll,
116
+ radial-gradient(farthest-side at 100% 50%, var(--shade), transparent) right / 12px 100% no-repeat scroll; }
117
+ nav::-webkit-scrollbar { display: none; }
118
+ .tabs { flex: none; display: flex; gap: 2px; align-items: center; }
119
+ .tab { position: relative; background: none; border: none; padding: 8px 14px 11px; color: var(--text-muted); cursor: pointer;
120
+ font-weight: 500; white-space: nowrap; transition: color 0.2s; }
121
+ .tab:hover { color: var(--text-2); }
122
+ .tab.sel { color: var(--text); font-weight: 600; }
123
+ /* The label keeps the width of its bold form, so the tabs do not move when the selection does. */
124
+ .tab-label { display: inline-flex; flex-direction: column; }
125
+ .tab-label::after { content: attr(data-label); font-weight: 600; height: 0; overflow: hidden; visibility: hidden; }
126
+ .tab-ic { opacity: 0.55; margin-right: 6px; font-size: 12px; }
127
+ .tab.sel .tab-ic { opacity: 1; color: var(--accent); }
128
+ .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; }
129
+ .badge[data-tone] { background: var(--tone-bg); color: var(--tone); }
130
+ .tab-sep { width: 1px; height: 18px; background: var(--line2); margin: 0 8px 3px; flex: none; align-self: center; }
131
+ .tab-ind { position: absolute; bottom: 0; left: 0; width: 0; height: 2px; border-radius: 2px;
132
+ background: var(--accent); transition: left 0.3s var(--ease), width 0.3s var(--ease); }
133
+ .tab-ind.init { transition: none; }
134
+ .tabhint { margin-left: auto; padding-left: 12px; white-space: nowrap; }
135
+ /* In a narrow monitor the tabs keep the line: no key hints. */
136
+ @container ca-monitor (max-width: 900px) {
137
+ .tabhint { display: none; }
138
+ }
139
+ @container ca-monitor (max-width: 760px) {
140
+ nav { padding: 4px 8px 0; }
141
+ .tab { padding: 8px 10px 11px; }
142
+ }
143
+ `;
@@ -0,0 +1,67 @@
1
+ // The view under the monitor's tabs: the element the view route's tab shows, given
2
+ // the data it reads.
3
+ import { hostOf, isRunLive, latestTask, runActivity, runRow, type MonitorClient, type MonitorSnapshot, type RunDerived } from '@contraagent/api';
4
+ import { msg } from '@lit/localize';
5
+ import { html, nothing, type TemplateResult } from 'lit';
6
+ import type { ViewRoute } from '../../core/view-route.js';
7
+ import { mixedReplay } from '../../words/run-line.js';
8
+ import '../overview/ca-overview.js';
9
+ import '../lists/ca-task-table.js';
10
+ import '../lists/ca-journal-table.js';
11
+ import '../lists/ca-contracts.js';
12
+ import '../lists/ca-definitions.js';
13
+ import '../lists/ca-procs-view.js';
14
+ import '../lists/ca-panel-view.js';
15
+ import '../task/ca-task-view.js';
16
+
17
+ export interface TabViewData {
18
+ snap: MonitorSnapshot;
19
+ viewRoute: ViewRoute;
20
+ /** `deriveRun` of the run's journal and plan. */
21
+ derived: RunDerived;
22
+ /** The text filter, as typed. */
23
+ q: string;
24
+ client: MonitorClient;
25
+ baseUrl: string;
26
+ }
27
+
28
+ /**
29
+ * The view of `viewRoute.tab`; with no run, a blank page that says there are no
30
+ * runs once the server's run list says so (the API's error is above it).
31
+ */
32
+ export function tabView({ snap, viewRoute, derived, q, client, baseUrl }: TabViewData): TemplateResult {
33
+ const { state } = snap;
34
+ if (!viewRoute.run) {
35
+ return html`<div class="blank">${snap.runsLoaded && !snap.error
36
+ ? html`<span class="ic" aria-hidden="true">✦</span><b>${msg('No runs yet', { id: 'no-runs-yet' })}</b>`
37
+ : nothing}</div>`;
38
+ }
39
+ const summary = runRow(snap.runs, snap.run);
40
+ const live = isRunLive(state, summary);
41
+ switch (viewRoute.tab) {
42
+ case 'overview':
43
+ return html`<ca-overview .state=${state} .summary=${summary} .host=${hostOf(snap.hosts?.hosts, summary)} .info=${snap.info} .run=${viewRoute.run} .layer=${viewRoute.layer} .unit=${viewRoute.unit} .sel=${viewRoute.sel}></ca-overview>`;
44
+ case 'tasks':
45
+ return html`<ca-task-table .run=${viewRoute.run} .journal=${state.journal} .plan=${state.plan} .kind=${viewRoute.kind} .q=${q} ?live=${live}></ca-task-table>`;
46
+ case 'journal':
47
+ return html`<ca-journal-table .run=${viewRoute.run} .rows=${state.journal} .plan=${state.plan} .fresh=${snap.fresh} .kind=${viewRoute.kind} .stop=${viewRoute.stop} .q=${q}
48
+ .extras=${summary?.row_extras ?? []} ?replay-marks=${mixedReplay(summary)}></ca-journal-table>`;
49
+ case 'outputs':
50
+ return html`<ca-contracts .run=${viewRoute.run} .outputs=${state.outputs} .journal=${state.journal} .plan=${state.plan}></ca-contracts>`;
51
+ case 'definitions':
52
+ return html`<ca-definitions .client=${client} .run=${viewRoute.run} .journal=${state.journal} .plan=${state.plan} .live=${live}
53
+ .selected=${viewRoute.def}></ca-definitions>`;
54
+ case 'procs':
55
+ return html`<ca-procs-view .procs=${state.procs} ?unresponsive=${runActivity(summary, !!state.procs?.alive) === 'unresponsive'}
56
+ ?exported=${!!snap.info.export}></ca-procs-view>`;
57
+ case 'stream':
58
+ return html`<ca-task-view .client=${client} .journal=${state.journal} .plan=${state.plan} base-url=${baseUrl} .run=${viewRoute.run}
59
+ .taskKey=${viewRoute.key ?? latestTask(derived.rows)} .view=${viewRoute.view} .round=${viewRoute.round} .live=${live}
60
+ ?exported=${!!snap.info.export} ?replay-marks=${mixedReplay(summary)}></ca-task-view>`;
61
+ default: {
62
+ const name = viewRoute.tab.slice('panel:'.length);
63
+ const info = snap.info.panels.find((p) => p.name === name);
64
+ return html`<ca-panel-view .name=${name} .panel=${info} .data=${state.panels[name]}></ca-panel-view>`;
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,157 @@
1
+ import { deriveRun, type JournalRow, type LaunchEvent, type MonitorClient, type Plan, type TaskDetail, type TaskOutcome } from '@contraagent/api';
2
+ import { localized, msg } from '@lit/localize';
3
+ import { LitElement, html, nothing, type PropertyValues } from 'lit';
4
+ import { customElement, property, query, state } from 'lit/decorators.js';
5
+ import { emit, type RoundInfo, type RoundsChangedDetail } from '../../core/events.js';
6
+ import { TASK_VIEWS, type TaskView } from '../../core/view-route.js';
7
+ import { TaskDetailController } from '../../controllers/task-detail.js';
8
+ import { base } from '@contraagent/elements/styles';
9
+ import { executorIconStyles } from '../../words/executor.js';
10
+ import { contractStyles } from '../shared/contract-parts.js';
11
+ import './ca-transcript.js';
12
+ import type { CaTranscript } from './ca-transcript.js';
13
+ import { tagStyles } from '@contraagent/elements/transcript';
14
+ import { isPy, type TaskContext } from './context.js';
15
+ import { taskHeader } from './header.js';
16
+ import { noTranscript } from './panes/transcript.js';
17
+ import { inputPane, outputPane } from './panes/io.js';
18
+ import { definitionPane } from './panes/definition.js';
19
+ import { taskViewStyles } from './styles.js';
20
+
21
+ /** Each view's tab label, in the current locale (call at render time). */
22
+ const viewLabel = (): Record<TaskView, string> => ({
23
+ transcript: msg('Transcript'),
24
+ input: msg('Input'),
25
+ output: msg('Output', { id: 'view-output', desc: 'Tab: the files a task wrote' }),
26
+ definition: msg('Definition'),
27
+ });
28
+
29
+ /**
30
+ * One task: who ran it, every finished attempt, and four views of it: the
31
+ * transcript (live), its input (params, upstream outputs, declared inputs, the
32
+ * prompt), its output (files against their contracts, the result, who uses it)
33
+ * and its definition. Sends `ca-navigate` with `view` or `round`, and
34
+ * `ca-open-task` for a linked task.
35
+ *
36
+ * @fires ca-navigate - `{view}` or `{round}`: another view or round of this task
37
+ * @fires ca-open-task - `{key}`: an upstream or downstream task was clicked
38
+ */
39
+ @customElement('ca-task-view')
40
+ @localized()
41
+ export class CaTaskView extends LitElement {
42
+ static override styles = [base, contractStyles, tagStyles, executorIconStyles, taskViewStyles];
43
+
44
+ @property({ attribute: false }) client!: MonitorClient;
45
+ @property({ attribute: 'base-url' }) baseUrl = '';
46
+ @property() run = '';
47
+ /** A task key; null when there is no task to show. */
48
+ @property({ attribute: false }) taskKey: string | null = null;
49
+ @property() view: TaskView = 'transcript';
50
+ /** The round shown, 1-based; null follows the latest. */
51
+ @property({ attribute: false }) round: number | null = null;
52
+ /** The run is live. */
53
+ @property({ type: Boolean }) live = false;
54
+ /** The whole run's journal: the subscription readings other tasks took after this one, and what happened to the tasks it reads from. Optional. */
55
+ @property({ attribute: false }) journal: JournalRow[] = [];
56
+ /** The run's plan: whether a task with no attempt is waiting or not started, and which earlier task stopped it. Optional. */
57
+ @property({ attribute: false }) plan: Plan | null = null;
58
+ /** Read from an export (`Info.export`): it holds no transcript. */
59
+ @property({ type: Boolean }) exported = false;
60
+ /** The run is a replay that also launched (`mixedReplay`): each attempt played from its recording is marked. */
61
+ @property({ type: Boolean, attribute: 'replay-marks' }) replayMarks = false;
62
+
63
+ private readonly detail = new TaskDetailController(this);
64
+ @query('ca-transcript') private transcriptEl?: CaTranscript;
65
+ @state() private launches: (LaunchEvent | null)[] = [];
66
+ @state() private shownRound = -1;
67
+ @state() private rounds: RoundInfo[] = [];
68
+ /** What happened to every task of the run (`deriveRun` of `journal` and `plan`), by key. */
69
+ private outcomes: ReadonlyMap<string, TaskOutcome> = new Map();
70
+
71
+ protected override willUpdate(changed: PropertyValues<this>): void {
72
+ if (changed.has('run') || changed.has('taskKey') || changed.has('client')) {
73
+ this.detail.load(this.client, this.run, this.taskKey);
74
+ this.launches = [];
75
+ this.shownRound = -1;
76
+ this.rounds = [];
77
+ }
78
+ this.outcomes = this.plan ? deriveRun(this.journal, this.plan).outcomes : new Map<string, TaskOutcome>();
79
+ }
80
+
81
+ /** The view shown: a Python task has no transcript, so it opens on its output. */
82
+ private shownView(d: TaskDetail): TaskView {
83
+ return this.view === 'transcript' && isPy(d) && !d.stream ? 'output' : this.view;
84
+ }
85
+
86
+ private revealSearch(query: string, nth: number): void {
87
+ const at = this.transcriptEl?.revealWebSearch(query, nth);
88
+ emit(this, 'ca-navigate', at ? { view: 'transcript', round: at.round } : { view: 'transcript' });
89
+ }
90
+
91
+ override render() {
92
+ const key = this.taskKey;
93
+ if (!key) {
94
+ return html`<div class="blank"><span class="ic" aria-hidden="true">✦</span><b>${msg('No task selected')}</b></div>`;
95
+ }
96
+ const d = this.detail.value;
97
+ if (!d) return html`<div class="taskmeta meta"><strong>${key}</strong> ${msg('Loading…')}</div>`;
98
+ const c: TaskContext = {
99
+ host: this,
100
+ run: this.run,
101
+ detail: d,
102
+ live: d.launches.length > 0 && this.live,
103
+ journal: this.journal,
104
+ plan: this.plan,
105
+ outcomes: this.outcomes,
106
+ launches: this.launches,
107
+ shownRound: this.shownRound,
108
+ rounds: this.rounds,
109
+ exported: this.exported,
110
+ replayMarks: this.replayMarks,
111
+ };
112
+ const view = this.shownView(d);
113
+ return html`${taskHeader(c, key, (q, nth) => this.revealSearch(q, nth))} ${this.renderViews(d, view)}
114
+ ${d.stream
115
+ ? html`<ca-transcript .run=${this.run} .stream=${d.stream} base-url=${this.baseUrl} .client=${this.client} .live=${c.live}
116
+ .rows=${d.rows} .round=${this.round} mode=${view === 'transcript' ? 'full' : view === 'input' ? 'tabs' : 'none'}
117
+ @ca-rounds=${(e: CustomEvent<RoundsChangedDetail>) => {
118
+ this.launches = e.detail.launches;
119
+ this.shownRound = e.detail.shown;
120
+ this.rounds = e.detail.rounds;
121
+ }}></ca-transcript>`
122
+ : view === 'transcript'
123
+ ? noTranscript(c)
124
+ : nothing}
125
+ ${view !== 'transcript' ? html`<div class="pane">${this.renderPane(c, view)}</div>` : nothing}`;
126
+ }
127
+
128
+ private renderViews(d: TaskDetail, view: TaskView) {
129
+ const io = d.io;
130
+ const py = isPy(d) && !d.stream;
131
+ const n: Partial<Record<TaskView, number>> = {
132
+ input: new Set([...io.inputs.map((o) => o.path), ...io.upstream.flatMap((u) => u.outputs.map((o) => o.path))]).size + Object.keys(io.params).length,
133
+ output: io.outputs.length,
134
+ };
135
+ return html`<div class="tviews" role="tablist">
136
+ ${TASK_VIEWS.filter((id) => !(py && id === 'transcript')).map((id) => {
137
+ const label = viewLabel()[id];
138
+ return html`<button type="button" role="tab" aria-selected=${id === view} class="tview ${id === view ? 'sel' : ''}"
139
+ @click=${() => emit(this, 'ca-navigate', { view: id })}>
140
+ ${label}${n[id] ? html`<span class="badge">${n[id]}</span>` : nothing}
141
+ </button>`;
142
+ })}
143
+ </div>`;
144
+ }
145
+
146
+ private renderPane(c: TaskContext, view: TaskView) {
147
+ if (view === 'input') return inputPane(c);
148
+ if (view === 'output') return outputPane(c);
149
+ return definitionPane(c);
150
+ }
151
+ }
152
+
153
+ declare global {
154
+ interface HTMLElementTagNameMap {
155
+ 'ca-task-view': CaTaskView;
156
+ }
157
+ }
@@ -0,0 +1,214 @@
1
+ import { createMonitorClient, type JournalRow, type MonitorClient, type TranscriptEvent } from '@contraagent/api';
2
+ import { md } from '@contraagent/elements/markdown';
3
+ import type { CaeTranscript, TranscriptMemory, TranscriptSection, TranscriptStrings } from '@contraagent/elements/transcript';
4
+ import '@contraagent/elements/transcript/define';
5
+ import { localized, msg, str } from '@lit/localize';
6
+ import { LitElement, css, html, type PropertyValues } from 'lit';
7
+ import { customElement, property, query, state } from 'lit/decorators.js';
8
+ import { keyed } from 'lit/directives/keyed.js';
9
+ import { classifyRounds } from '../../adapters/transcript/rounds.js';
10
+ import { transcriptSections } from '../../adapters/transcript/sections.js';
11
+ import { StreamController } from '../../controllers/stream.js';
12
+ import { emit, type RoundInfo, type RoundsChangedDetail } from '../../core/events.js';
13
+ import { getLocale } from '../../core/i18n.js';
14
+ import { RememberedSet, SessionSet, memoryOf, pageMemory } from '../../core/memory.js';
15
+ import { promptText } from '../shared/prompt-text.js';
16
+ import { retryTip } from '../../words/attempts.js';
17
+ import { correctionTip } from '../../words/contract.js';
18
+ import { modelSwitchTip } from '../../words/hops.js';
19
+
20
+ /** The transcript's words, in the reader's language (call at render time). */
21
+ const strings = (): TranscriptStrings => ({
22
+ sections: msg('Agent sessions'),
23
+ sectionsTip: [
24
+ `${msg('Retry')}: ${retryTip()}`,
25
+ `${msg('Correction')}: ${correctionTip()}`,
26
+ `${msg('Model switch')}: ${modelSwitchTip()}`,
27
+ ].join('\n'),
28
+ loadEarlier: (n) => (n === 1 ? msg('Show 1 earlier line') : msg(str`Show ${n} earlier lines`)),
29
+ newBelow: (n) => (n === 1 ? msg('Show 1 new event') : msg(str`Show ${n} new events`)),
30
+ newInLatest: (n) =>
31
+ n === 1 ? msg('Show 1 new event in the running agent session') : msg(str`Show ${n} new events in the running agent session`),
32
+ prompt: msg('Prompt'),
33
+ assistant: msg('Assistant'),
34
+ reasoning: msg('Reasoning'),
35
+ characters: (n) => msg(str`${n} characters`),
36
+ tool: msg('tool'),
37
+ results: (n) => (n === 1 ? msg('1 result') : msg(str`${n} results`)),
38
+ done: msg('done', { id: 'tool-done', desc: 'A tool call that finished' }),
39
+ failed: msg('failed'),
40
+ running: msg('running'),
41
+ interrupted: msg('interrupted'),
42
+ interruptedTip: msg('The run ended before the tool call returned'),
43
+ query: msg('query'),
44
+ page: msg('page'),
45
+ fullText: msg('Full text'),
46
+ showAll: (n) => msg(str`Show all (${n} characters)`),
47
+ showLess: msg('Show less'),
48
+ });
49
+
50
+ /**
51
+ * The transcript of one task: every round (one session of the coding agent,
52
+ * with its command line and prompt), chat bubbles, collapsible tool cards (a
53
+ * web search shows its query and the pages it returned as links, a web page
54
+ * read its URL as a link),
55
+ * tailed live. A round is a try (a new session) or a fix-up (the same session,
56
+ * sent back because its output failed its checks); give it the task's journal
57
+ * rows (`.rows`) and each round says how it ended. It draws them with
58
+ * `<cae-transcript>`.
59
+ *
60
+ * Give it `.events` to show a saved transcript, or `run` + `stream` (and
61
+ * `base-url`) to tail one from the monitor. A new `.events` that starts with
62
+ * the same event objects as the last one is that transcript grown: its new
63
+ * events are added below and what is drawn stays. Sends `ca-navigate` with `round`
64
+ * when the reader picks a round, and a non-bubbling `ca-rounds`
65
+ * (`RoundsChangedDetail`) whenever its rounds or the shown round change.
66
+ *
67
+ * @fires ca-navigate - `{round}`: the reader picked a round (null for the latest)
68
+ * @fires ca-rounds - `{launches, shown, rounds}`, not bubbling: the rounds' launch events and what each was, for a host that shows a round's prompt
69
+ */
70
+ @customElement('ca-transcript')
71
+ @localized()
72
+ export class CaTranscript extends LitElement {
73
+ static override styles = css`
74
+ :host { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; position: relative; }
75
+ :host([mode='none']) { display: none; }
76
+ :host([mode='tabs']) { flex: none; }
77
+ `;
78
+
79
+ /** A saved transcript to show as is (no feed). */
80
+ @property({ attribute: false }) events: TranscriptEvent[] | null = null;
81
+ @property() run = '';
82
+ /** The transcript's task key (`TaskDetail.stream`). */
83
+ @property({ attribute: false }) stream: string | null = null;
84
+ @property({ attribute: 'base-url' }) baseUrl = '';
85
+ /** For "load earlier"; one is made from `base-url` when absent. */
86
+ @property({ attribute: false }) client: MonitorClient | null = null;
87
+ /** The task is running: show it working; when not, a call still marked running was interrupted. */
88
+ @property({ type: Boolean }) live = false;
89
+ /** The round to show, 1-based; null follows the latest. */
90
+ @property({ attribute: false }) round: number | null = null;
91
+ /** The task's journal rows (finished tries): each round then says how it ended. */
92
+ @property({ attribute: false }) rows: JournalRow[] = [];
93
+ /** `full`; `tabs`: only the round picker (another view of the task is shown); `none`: hidden. */
94
+ @property({ reflect: true }) mode: 'full' | 'tabs' | 'none' = 'full';
95
+
96
+ /** The round on screen, 0-based; -1 while there is none. */
97
+ @state() private shown = -1;
98
+ @query('cae-transcript') private view?: CaeTranscript;
99
+
100
+ private readonly feed = new StreamController(this);
101
+ private memory: TranscriptMemory | null = null;
102
+ private drawn: { key: unknown[]; rounds: RoundInfo[]; sections: TranscriptSection[] } | null = null;
103
+ private lastSent = '';
104
+ /** The saved transcript last given (`events`): a longer one that starts with it is the same transcript, grown. */
105
+ private fed: readonly TranscriptEvent[] | null = null;
106
+
107
+ private get source(): string {
108
+ return this.events ? 'static' : this.run && this.stream ? `${this.run}\n${this.stream}` : '';
109
+ }
110
+
111
+ override connectedCallback(): void {
112
+ super.connectedCallback();
113
+ if (this.hasUpdated) this.requestUpdate();
114
+ }
115
+
116
+ protected override willUpdate(changed: PropertyValues<this>): void {
117
+ const source = this.source;
118
+ if (!changed.has('events') && source === this.feed.loaded) return;
119
+ // The same saved transcript, grown: its new events are appended, and what is drawn stays.
120
+ const fed = this.fed;
121
+ const events = this.events;
122
+ this.fed = events;
123
+ if (events && fed && source === this.feed.loaded && extends_(events, fed)) {
124
+ this.feed.append(events.slice(fed.length));
125
+ return;
126
+ }
127
+ const { run, stream } = this;
128
+ const id = `transcript:${run}/${stream ?? ''}`;
129
+ // The page's monitor keeps the open cards for the browser tab and the position in the history entry;
130
+ // an embedded one (`history="memory"`) keeps both in its own memory.
131
+ const memory = memoryOf(this);
132
+ const open = memory === pageMemory ? new SessionSet(`${id}:open`) : new RememberedSet(`${id}:open`, this);
133
+ const tailed = !this.events && !!stream;
134
+ this.memory = {
135
+ isOpen: (card) => open.has(card),
136
+ setOpen: (card, on) => open.set(card, on),
137
+ scroll: () => (tailed ? memory.recall(`${id}:scroll`) : undefined),
138
+ setScroll: (at) => tailed && memory.remember(`${id}:scroll`, at),
139
+ };
140
+ this.shown = -1;
141
+ this.feed.load(source, this.events ? { events: this.events } : source && stream ? { run, stream, baseUrl: this.baseUrl } : null);
142
+ }
143
+
144
+ /** The rounds and their sections, drawn again only when the transcript, the rows or the language changed. */
145
+ private sections(): { rounds: RoundInfo[]; sections: TranscriptSection[] } {
146
+ const active = this.live && this.feed.tailing;
147
+ const key = [this.feed.version, this.rows, this.run, active, getLocale()];
148
+ if (this.drawn?.key.every((k, i) => k === key[i])) return this.drawn;
149
+ const t = this.feed.model;
150
+ const rounds = classifyRounds(
151
+ t.rounds.map((r) => r.launch),
152
+ this.rows,
153
+ );
154
+ this.drawn = { key, rounds, sections: transcriptSections(t, rounds, { run: this.run, rows: this.rows, active }) };
155
+ return this.drawn;
156
+ }
157
+
158
+ override render() {
159
+ const feed = this.feed;
160
+ const { sections } = this.sections();
161
+ return keyed(
162
+ feed.generation,
163
+ html`<cae-transcript .sections=${sections} .shown=${this.round === null ? null : this.round - 1} ?live=${this.live}
164
+ .earlier=${feed.behind} ?loading=${!feed.ready} .count=${feed.count} mode=${this.mode} .memory=${this.memory}
165
+ .markdown=${md} .renderDetail=${(d: { text: string }) => promptText(d.text)} .strings=${strings()}
166
+ @cae-section-change=${(e: CustomEvent<{ index: number | null }>) => {
167
+ e.stopPropagation();
168
+ emit(this, 'ca-navigate', { round: e.detail.index === null ? null : e.detail.index + 1 });
169
+ }}
170
+ @cae-section-shown=${(e: CustomEvent<{ index: number }>) => {
171
+ e.stopPropagation();
172
+ this.shown = e.detail.index;
173
+ }}
174
+ @cae-load-earlier=${(e: Event) => {
175
+ e.stopPropagation();
176
+ if (this.stream) void feed.loadEarlier(this.client ?? createMonitorClient({ baseUrl: this.baseUrl }), this.run, this.stream);
177
+ }}></cae-transcript>`,
178
+ );
179
+ }
180
+
181
+ protected override updated(): void {
182
+ const { rounds } = this.sections();
183
+ const sig = `${this.feed.version}|${this.shown}|${rounds.length}|${this.rows.length}`;
184
+ if (sig === this.lastSent) return;
185
+ this.lastSent = sig;
186
+ const detail: RoundsChangedDetail = { launches: this.feed.model.rounds.map((r) => r.launch), shown: this.shown, rounds };
187
+ emit(this, 'ca-rounds', detail, { bubbles: false });
188
+ }
189
+
190
+ /**
191
+ * Show the `nth` (0-based) web search for `query`: its card opens, and is scrolled into
192
+ * view once its round is shown. Returns that round as the `round` of a `ca-navigate`
193
+ * (1-based; null for the latest), or undefined when the transcript holds no such search.
194
+ */
195
+ revealWebSearch(query: string, nth = 0): { round: number | null } | undefined {
196
+ const card = this.feed.model.rounds.flatMap((r) => r.items).filter((it) => it.type === 'tool' && it.query === query)[nth];
197
+ const i = card && this.view ? this.view.reveal(card.id) : -1;
198
+ if (i < 0) return undefined;
199
+ return { round: i === this.feed.model.rounds.length - 1 ? null : i + 1 };
200
+ }
201
+ }
202
+
203
+ /** `next` holds every event of `prev`, the same objects in the same order, and then more or none. */
204
+ function extends_(next: readonly TranscriptEvent[], prev: readonly TranscriptEvent[]): boolean {
205
+ if (next === prev || next.length < prev.length) return next === prev;
206
+ for (let i = prev.length - 1; i >= 0; i--) if (next[i] !== prev[i]) return false;
207
+ return true;
208
+ }
209
+
210
+ declare global {
211
+ interface HTMLElementTagNameMap {
212
+ 'ca-transcript': CaTranscript;
213
+ }
214
+ }