@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
@@ -0,0 +1,66 @@
1
+ import type { PlanNode, ServiceSpan } from '@contraagent/api';
2
+ import { localized, msg } from '@lit/localize';
3
+ import { LitElement, css, html, nothing } from 'lit';
4
+ import { customElement, property } from 'lit/decorators.js';
5
+ import { statusWord } from '@contraagent/elements/primitives';
6
+ import { base } from '@contraagent/elements/styles';
7
+ import type { Tone } from '@contraagent/elements';
8
+ import { kindUnit } from '../../words/format.js';
9
+ import { serviceFacts, serviceState, serviceStateLabel, type ServiceState } from '../../words/services.js';
10
+ import { taskChip } from '../shared/task-chip.js';
11
+
12
+ const TONE: Record<ServiceState, Tone> = { running: 'running', stopped: 'done', failed: 'failed', unknown: 'muted' };
13
+
14
+ /**
15
+ * The run's services (`Plan.services`): each start of the long-lived helper a claim
16
+ * name stands for, one per row, with its state, its claim name, its address, when it
17
+ * started and stopped and why, and the task whose claim started it.
18
+ *
19
+ * @fires ca-open-task - the task chip of the task that started a service was clicked
20
+ */
21
+ @customElement('ca-services')
22
+ @localized()
23
+ export class CaServices extends LitElement {
24
+ static override styles = [
25
+ base,
26
+ css`
27
+ :host { display: block; }
28
+ ul { margin: 0; padding: 0; list-style: none; display: grid; gap: 8px; }
29
+ li { display: grid; grid-template-columns: max-content 1fr; column-gap: 10px; row-gap: 2px; align-items: baseline; font-size: 12px; }
30
+ .name { font-family: var(--mono); color: var(--text); overflow-wrap: anywhere; }
31
+ .addr { font-family: var(--mono); color: var(--text-2); overflow-wrap: anywhere; }
32
+ .facts { grid-column: 2; color: var(--text-2); overflow-wrap: anywhere; }
33
+ .by { grid-column: 2; }
34
+ `,
35
+ ];
36
+
37
+ /** Each start of a service, in start order (`Plan.services`). */
38
+ @property({ attribute: false }) services: readonly ServiceSpan[] = [];
39
+ /** The run's tasks (`Plan.nodes`): the task that started a service is named by its kind and unit. */
40
+ @property({ attribute: false }) nodes: readonly PlanNode[] = [];
41
+ /** Whether the run still runs: a service with no stop recorded is running only then. */
42
+ @property({ type: Boolean }) live = false;
43
+
44
+ override render() {
45
+ if (!this.services.length) return html`<div class="meta">${msg('No services')}</div>`;
46
+ const byKey = new Map(this.nodes.map((n) => [n.key, n]));
47
+ return html`<ul>
48
+ ${this.services.map((s) => {
49
+ const state = serviceState(s, this.live);
50
+ const node = s.key ? byKey.get(s.key) : undefined;
51
+ return html`<li>
52
+ ${statusWord({ text: serviceStateLabel(state), tone: TONE[state] })}
53
+ <div><span class="name" title="services.jsonl">${s.name}</span>${s.address ? html` <span class="addr">${s.address}</span>` : nothing}</div>
54
+ <div class="facts">${serviceFacts(s)}</div>
55
+ ${s.key ? html`<div class="by">${taskChip(this, node ? kindUnit(node) : s.key, node ?? { key: s.key })}</div>` : nothing}
56
+ </li>`;
57
+ })}
58
+ </ul>`;
59
+ }
60
+ }
61
+
62
+ declare global {
63
+ interface HTMLElementTagNameMap {
64
+ 'ca-services': CaServices;
65
+ }
66
+ }
@@ -7,3 +7,4 @@ export * from './ca-timeline.js';
7
7
  export * from './ca-spend-breakdown.js';
8
8
  export * from './ca-model-usage.js';
9
9
  export * from './ca-quota.js';
10
+ export * from './ca-services.js';
@@ -10,7 +10,7 @@ import { preserveLabel, preserveTip } from '../../words/task-definition.js';
10
10
  import { statusChip } from '@contraagent/elements/primitives';
11
11
  import { verdict, verdictStyles } from '@contraagent/elements/check-table';
12
12
  import '@contraagent/elements/check-table/define';
13
- import { checkRowsFromContract, checkTableStrings, contentObject, rootOf } from '../../adapters/check-rows.js';
13
+ import { checkRowsFromContract, checkTableStrings, contentObject, rootOf, rowOf } from '../../adapters/check-rows.js';
14
14
  import { contractTone } from '../../lib/tone.js';
15
15
  import '@contraagent/elements/json-tree/define';
16
16
 
@@ -53,6 +53,15 @@ export function fieldCheckTable(o: ContractSpec): TemplateResult {
53
53
  </details>`;
54
54
  // A text result (a text file, or one JSON value) has no fields to check: show the file itself.
55
55
  if (!rows) return f.exists ? whole : html``;
56
+ // Rows: the fields of one line, and the lines themselves.
57
+ if (o.format === 'jsonl') {
58
+ const lines = html`<details class="ct-raw">
59
+ <summary>${facts(rowCount(f), `${f.size ?? 0} B`, f.mtime ? msg(str`written ${localTime(f.mtime, true)}`) : '', f.truncated ? msg('truncated') : '')}</summary>
60
+ ${fileContent(f)}
61
+ </details>`;
62
+ return html`<cae-check-table .rows=${rows} .showValues=${false} .strings=${checkTableStrings()}></cae-check-table>
63
+ ${f.exists ? lines : nothing}`;
64
+ }
56
65
  // No file: the fields it must have, and nothing to check them against; its status chip says it is not there.
57
66
  if (!f.exists) return rows.length ? html`<cae-check-table .rows=${rows} .showValues=${false} .strings=${checkTableStrings()}></cae-check-table>` : html``;
58
67
  return html`<cae-check-table .rows=${rows} .strings=${checkTableStrings()}></cae-check-table>
@@ -60,6 +69,12 @@ export function fieldCheckTable(o: ContractSpec): TemplateResult {
60
69
  ${whole}`;
61
70
  }
62
71
 
72
+ /** How many rows a rows file holds, in words: `3 rows`. */
73
+ function rowCount(f: FileView): string {
74
+ const n = Array.isArray(f.content) ? f.content.length : 0;
75
+ return n === 1 ? msg('1 row') : msg(str`${n} rows`);
76
+ }
77
+
63
78
  /** The fold over a file's content: `Whole file | 1204 B | written Oct 12, 10:38:40`. */
64
79
  const wholeFile = (f: FileView): string =>
65
80
  facts(msg('Whole file'), `${f.size ?? 0} B`, f.mtime ? msg(str`written ${localTime(f.mtime, true)}`) : '', f.truncated ? msg('truncated') : '');
@@ -70,7 +85,7 @@ const wholeFile = (f: FileView): string =>
70
85
  */
71
86
  export function schemaName(o: ContractSpec): TemplateResult {
72
87
  const root = rootOf(o.schema_name);
73
- const shown = o.schema_name === 'text' || root === 'str' ? msg('text') : root ?? o.schema_name;
88
+ const shown = o.schema_name === 'text' || root === 'str' ? msg('text') : root ?? rowOf(o.schema_name) ?? o.schema_name;
74
89
  return html`<b class="jmono" title=${o.schema_ref || o.schema_name}>${shown}</b>`;
75
90
  }
76
91
 
@@ -78,6 +93,7 @@ export function schemaName(o: ContractSpec): TemplateResult {
78
93
  export function formatOf(o: ContractSpec): unknown {
79
94
  const tip = o.schema_ref || o.schema_name;
80
95
  if (o.schema_name === 'text') return msg('text file');
96
+ if (o.format === 'jsonl') return msg(html`JSON Lines, one object of schema ${schemaName(o)} per line`);
81
97
  const root = rootOf(o.schema_name);
82
98
  if (root === 'str') return html`<span title=${tip}>${msg('text (JSON string)')}</span>`;
83
99
  if (root) return html`<span title=${tip}>${msg(str`JSON value of type ${root}`)}</span>`;
@@ -64,8 +64,10 @@ export class CaMonitor extends LitElement {
64
64
  static override styles = [hostThemeStyles, base, tabStyles, monitorStyles];
65
65
 
66
66
  /**
67
- * Where the monitor's API is served, such as `http://127.0.0.1:8787`; '' is
68
- * this page's origin. A server on another origin must allow this page's
67
+ * Where the monitor's API is served, such as `http://127.0.0.1:8787`, or a
68
+ * path of this page's origin, such as `/monitor` (`contraagent monitor
69
+ * --base-path` writes it into the page it serves); '' is this page's origin.
70
+ * A server on another origin must allow this page's
69
71
  * (`contraagent monitor --cors-origin`). It takes effect whenever it is set,
70
72
  * before or after the element connects: a change closes the old server's
71
73
  * feeds and opens the run named by `run`, else the new server's newest run.
@@ -10,7 +10,7 @@ import { attemptNames, deferredText, changedFiles, changedFilesTip, changeLabel,
10
10
  import { contextWarnedText, contextWarnedTip, peakContextLine, peakContextTip, peakTry } from '../../words/context.js';
11
11
  import { readingShort, readingTip } from '../../words/quota.js';
12
12
  import { customColumnTip, customValues } from '../../words/row-extras.js';
13
- import { type Tone } from '../../lib/tone.js';
13
+ import { isStop, type Tone } from '../../lib/tone.js';
14
14
  import { executorIcon } from '../../words/executor.js';
15
15
  import '@contraagent/elements/json-tree/define';
16
16
  import { tagChips, type TranscriptTag } from '@contraagent/elements/transcript';
@@ -48,7 +48,8 @@ function verdict(c: TaskContext): [text: string, tone: Tone] {
48
48
  return [cause ? msg(str`Not started: ${cause}`) : msg('Not started'), 'attention'];
49
49
  }
50
50
  case 'partial': {
51
- const why = runRelative(last?.reason, c.run);
51
+ // An agent task's partial reason is the stop its launch ended on (`partial_on`): said in words.
52
+ const why = last?.reason && isStop(last.reason) ? stopLabel(last.reason) : runRelative(last?.reason, c.run);
52
53
  return [why ? msg(str`Partly done: ${why}`) : msg('Partly done'), 'attention'];
53
54
  }
54
55
  case 'failed': {
@@ -134,6 +135,7 @@ export function taskHeader(c: TaskContext, key: string, onSearch: (query: string
134
135
  </div>`
135
136
  : nothing}
136
137
  ${node?.priority ? html`<div class="meta" title=${priorityTip()}>${priorityText(node.priority)}</div>` : nothing}
138
+ ${node?.rerun ? html`<div class="meta">${msg(str`Ran again after a resume: ${node.rerun}`)}</div>` : nothing}
137
139
  ${session
138
140
  ? html`<div class="whos">
139
141
  ${tagChips([...whoTags(who), ...identityTags(tries)])}
@@ -212,7 +214,9 @@ function changesFold(tries: JournalRow[]) {
212
214
  if (!c) return [];
213
215
  const at = withChanges > 1 ? (names[i] ?? '') : '';
214
216
  const gone = new Set(c.removed);
215
- const of = (paths: string[] | undefined, kind: ChangeKind) => (paths ?? []).map((p) => facts(at, p, changeLabel(gone.has(p) ? 'removed' : kind)));
217
+ const kept = new Set(c.kept);
218
+ const after = (p: string, kind: ChangeKind): ChangeKind => (gone.has(p) ? 'removed' : kept.has(p) ? 'kept' : kind);
219
+ const of = (paths: string[] | undefined, kind: ChangeKind) => (paths ?? []).map((p) => facts(at, p, changeLabel(after(p, kind))));
216
220
  return [...of(c.created, 'created'), ...of(c.modified, 'modified'), ...of(c.deleted, 'deleted')];
217
221
  });
218
222
  if (!withChanges) return nothing;
package/src/locales/ja.ts CHANGED
@@ -11,6 +11,7 @@
11
11
  export const templates = {
12
12
  'col-runs': `実行`,
13
13
  'definition-output': `出力`,
14
+ 'h0ddbe8131d040868': html`JSON Lines(1 行ごとに JSON オブジェクト、スキーマ ${0})`,
14
15
  'h5665d16ae525ca0b': html`${0} の出力`,
15
16
  'h612ee972e5585763': html`JSON オブジェクト(スキーマ ${0})`,
16
17
  'h876bf17c2237f30a': html`依存先タスク ${0}`,
@@ -170,6 +171,7 @@
170
171
  's355f4ca5b99c3871': `入力ファイルに検証エラー`,
171
172
  's366ce84377cc68ee': `週`,
172
173
  's367d079d1aed1358': `料金`,
174
+ 's3687049d1af562c4': `コピー`,
173
175
  's36db253f6326b641': str`この書き出しに含まれないもの: ${0}`,
174
176
  's36eb49cc97df66bc': str`所要時間 ${0}`,
175
177
  's3700ce266079b566': `Web 検索 1 回`,
@@ -219,6 +221,7 @@
219
221
  's47b9912260b01c3c': `Python タスク`,
220
222
  's47c42ef44972974f': `未対応のイベント`,
221
223
  's48287bbcb6ba7b8d': str`終了 ${0}`,
224
+ 's484059ca23104b6d': `テキストなし`,
222
225
  's48e186fb300e5464': `所要時間`,
223
226
  's49098dfd8a30a9b7': `モニターのサーバーに接続済み`,
224
227
  's491765412b82838e': str`${0} のループ`,
@@ -228,12 +231,14 @@
228
231
  's4e7c49654e9033f5': str`修正依頼 ${0} 回で完了 | 最初の検証エラー: ${1}`,
229
232
  's4efee5b48a4593cb': `ループ`,
230
233
  's4f0af1e75e3f4e0d': `スキーマにない`,
234
+ 's4f0b2143a5fc9bf2': str`再開後に再実行: ${0}`,
231
235
  's4f901d8830793b99': str`ホスト ${0}`,
232
236
  's4fed3c544c5791df': `エージェントタスク`,
233
237
  's50182c197f93c873': str`${0}: ${1} → ${2}`,
234
238
  's504d83b92c9ed51e': `日付指定`,
235
239
  's51316118c75cbced': `そのモデルで始めたエージェントのセッションの数`,
236
240
  's51383b9a7d305b0c': `入力・出力・キャッシュ読み込み・キャッシュ書き込みの合計`,
241
+ 's5144d023ec192e11': `実行が終了した`,
237
242
  's521a16a18cfbcf5a': `1 ユニット`,
238
243
  's525b03a82e5421df': `失敗の後の、次のモデルでの新しいエージェントのセッション(Router のホップ)`,
239
244
  's525c011dcf23c207': `記録から再生した試行(replayed)`,
@@ -245,6 +250,7 @@
245
250
  's535a5e9dfeb308f0': `種別`,
246
251
  's53c57cf5a0992de1': str`${0}: 未実行`,
247
252
  's53c8c76220414382': `不可`,
253
+ 's5410888308ba73df': `開始できず`,
248
254
  's54393bfa280ea55b': `プロンプト`,
249
255
  's552240946fb80e49': str`フロー呼び出し ${0}`,
250
256
  's5552cf25dfb16715': `プラグインディレクトリ`,
@@ -269,6 +275,7 @@
269
275
  's5ab755785f15d57e': `並び順`,
270
276
  's5b91c14a6a040e1e': `種別ごとのトークンと料金`,
271
277
  's5bd56661dc3d893f': `フロー呼び出しごとの締め切り(time_box)`,
278
+ 's5c7b236b3fa997c2': `サービスなし`,
272
279
  's5cd51fca94ab558d': str`エージェントのセッション ${0} 回`,
273
280
  's5cfa1889ee16f534': `値なし`,
274
281
  's5d0bd939d106436c': `実行中にこのタスクが占有する名前(claims)`,
@@ -299,6 +306,7 @@
299
306
  's6647f4305129ff48': `ファイルなし`,
300
307
  's664bf0dfe5ccdd70': `ツール呼び出しが戻る前に実行が終了`,
301
308
  's670ef751f29dc9ae': str`${0} ユニット`,
309
+ 's673f9ec66716c84a': `停止でエラー`,
302
310
  's680fc90489553ed6': `タイムライン`,
303
311
  's685f61cef2e55d31': `修正依頼`,
304
312
  's68818ff23f9c3cd6': `その他の検証`,
@@ -316,6 +324,7 @@
316
324
  's6c86e2a18e78587f': str`依存先タスク ${0} が失敗`,
317
325
  's6d739294ba8eba32': str`${1} タスク中 ${0} 件完了`,
318
326
  's6dbe9cb1faacdff3': str`${0} 文字`,
327
+ 's6e4da2972d0c2e38': `未選択`,
319
328
  's6ebc9bd6feae62a3': `読み込み中…`,
320
329
  's6f145ecab7e01aae': `API 呼び出し`,
321
330
  's6f2d39e45dc290b5': `出力ファイル 1 件`,
@@ -365,6 +374,7 @@
365
374
  's7f59f507e02a2f38': `表示形式`,
366
375
  's803ce7e1a2294d50': `ファイル`,
367
376
  's8076e2fb2b749dd1': `実行 1 件`,
377
+ 's80c0e9fb2bb2e230': `1 行`,
368
378
  's8162d2730a5efc31': `モデル切り替えなし`,
369
379
  's81729579ad44c896': `変更したファイル 1 件`,
370
380
  's822f38a61c9dbabc': str`以前の試行のモデル: ${0}`,
@@ -399,6 +409,7 @@
399
409
  's8ad90bcc234667ee': `周回数`,
400
410
  's8ae6aab00e87a555': str`${0} の記録から再生したエージェントのセッションと、そこに記録した新しいセッション(replay, record_missing)`,
401
411
  's8b14867a2824dc66': `リトライしたタスク`,
412
+ 's8b41b9223ed7838d': `同じロックを持つタスクが共有する常駐の補助プロセス(services.jsonl)`,
402
413
  's8bbe7f1c618318b1': `終了したすべての試行から集計(journal.jsonl)`,
403
414
  's8c1837e74a81ad0d': str`${0} 分前`,
404
415
  's8d3d06c785c3c433': `コーディングエージェントが使ったアカウントまたは API キー(credential)`,
@@ -477,6 +488,7 @@
477
488
  'sa116cd3e2e650be3': `リプレイした試行`,
478
489
  'sa23567d1be73e6a7': `ターン数の上限`,
479
490
  'sa24de5df07476150': str`${0} の締め切りまでに終わらない`,
491
+ 'sa31c8369058044aa': `行を折り返す`,
480
492
  'sa335a9687e946152': `後続タスクなし`,
481
493
  'sa358ec1ff0c833b9': `ロール`,
482
494
  'sa35c067275510aa7': `試行`,
@@ -484,6 +496,7 @@
484
496
  'sa390213ff60c0fd9': str`実行中のエージェントのセッションの新しいイベント ${0} 件を表示`,
485
497
  'sa3c9339de23c1752': `形式`,
486
498
  'sa3d3f3845c4fa2c4': str`週の利用率 ${0}(リセット ${1})`,
499
+ 'sa3deee7949f9fece': `停止`,
487
500
  'sa3ed6953c910cb53': `アカウント全体の値 | エージェントのセッション開始時に取得`,
488
501
  'sa3f961297cb9207f': `各タスクが読み込むファイル`,
489
502
  'sa434ad4d2100f245': `作成元`,
@@ -495,6 +508,7 @@
495
508
  'sa6295f265bf36f55': str`${0}: トランスクリプト`,
496
509
  'sa66db52d0401c35d': str`前の ${0} 行を表示`,
497
510
  'sa6ab5184d6315895': `開始日`,
511
+ 'sa70d23a470af74da': `項目なし`,
498
512
  'sa71f10bfe8f2e3b9': `期待する型`,
499
513
  'sa74be5e915086e8e': `縮小(Ctrl + スクロール)`,
500
514
  'sa81e2cdaf6921adc': `システム設定に合わせる`,
@@ -532,6 +546,7 @@
532
546
  'sb1068f146c4596c3': `検索語`,
533
547
  'sb108c2924e1e9e78': `作成、試行の失敗後に削除`,
534
548
  'sb1454106d9fa9d78': str`報告なし ${0} 台`,
549
+ 'sb16ea30b732565de': str`${0} 行`,
535
550
  'sb1ffef0fea624d13': `前の 1 行を表示`,
536
551
  'sb26a93fd31e2f700': `登録順`,
537
552
  'sb26f6e41558f71ed': `表示中の階層の外`,
@@ -548,6 +563,7 @@
548
563
  'sb594f8019b3bf708': str`コンテキストの上限に接近(${0}%)`,
549
564
  'sb5ae7a6b849639af': `未実行`,
550
565
  'sb6bb16aa7550533d': `タスク実行中の書き込みが必須`,
566
+ 'sb76f9199c15fe03c': str`${0} に停止`,
551
567
  'sb89b16909f010061': `エージェントのセッション 1 回`,
552
568
  'sb945184259a5d73c': str`5 時間枠(${0})`,
553
569
  'sb9724d1e7908c74c': `コンテキストの上限に接近`,
@@ -567,6 +583,7 @@
567
583
  'sbca0391cb2c7c054': `タスクの開始時`,
568
584
  'sbcce076a4882d945': `依存先タスクが失敗`,
569
585
  'sbd4aeb401e751129': `実行を切り替え(r)`,
586
+ 'sbd58f76b47025b9c': `停止の記録なし`,
570
587
  'sbd9a674a977ac3b7': `再開後`,
571
588
  'sbe299a9270c76655': `実行履歴の失敗した試行`,
572
589
  'sbe4c836868862bb2': str`${0} の記録から再生したエージェントのセッション(replay)`,
@@ -595,6 +612,7 @@
595
612
  'sc6e4815e573036bd': `締め切りまでに終わらない`,
596
613
  'sc6fd207e5b80c46e': str`エラーで終了したフロー呼び出し ${0} 件`,
597
614
  'sc732f2e2fbe9f15e': `開始`,
615
+ 'sc7561e5ea00d47ad': str`全 ${1} 行のうち先頭 ${0} 行`,
598
616
  'sc797fd9076cc136d': `タスク`,
599
617
  'sc7d1e9a9024b4f9c': `同時実行(上限)`,
600
618
  'sc87aeec9d4d28b7c': str`警告のしきい値: ${0}`,
@@ -625,11 +643,13 @@
625
643
  'sd173bb96eb4d2577': `入力 / 出力 | キャッシュ読み込み / キャッシュ書き込み`,
626
644
  'sd1f67ae2a58049b0': `ファイルの検証に使うスキーマ`,
627
645
  'sd26f6fb3acfd5ca0': str`${0} 件を同時実行`,
646
+ 'sd3458f28f628e82d': str`${0} に開始(${1})`,
628
647
  'sd381b19c7fd35852': `変更`,
629
648
  'sd3c028fcc08b18ab': `登録済みのタスクなし`,
630
649
  'sd3ec6686aaaf1324': str`終了(未完了のタスク ${0} 件)`,
631
650
  'sd47e3a005069edb9': `ローカルの認証情報(ambient)`,
632
651
  'sd58f7e67529b30b0': `終了(失敗したタスク 1 件)`,
652
+ 'sd5a1f34cfcac265f': `実行がシグナルで停止された`,
633
653
  'sd5da7ee4a43a6b2d': str`トークン: 入力 ${0}、出力 ${1}、キャッシュ読み込み ${2}、キャッシュ書き込み ${3}`,
634
654
  'sd5e28ee1c3ede3b6': `所要時間の合計`,
635
655
  'sd7338946b42394f4': `失敗`,
@@ -669,6 +689,7 @@
669
689
  'se2bad0e4af9e9155': str`キー ${0} 個: ${1}`,
670
690
  'se2cd8c3175e8f91f': str`期待する型: ${0}`,
671
691
  'se3b4c857f91f80d7': `キーボードショートカット`,
692
+ 'se414b08e593473b2': `作成、試行の失敗後も保持`,
672
693
  'se4ba2b7d91bd3060': `修正依頼のあったタスク 1 件`,
673
694
  'se55f1e3401225b3f': `エージェントのセッションの所要時間の合計`,
674
695
  'se5ad61b61dc5c4f6': `モデル切り替え`,
@@ -707,6 +728,7 @@
707
728
  'seee3885e38ae0126': `完了しなかった試行`,
708
729
  'sef0ce050d92c35e2': str`実行中 ${0} 件`,
709
730
  'sefcf950b3cc4fc3b': `言語`,
731
+ 'service-running': `稼働中`,
710
732
  'sf03233d91a50e834': `所要時間の中央値`,
711
733
  'sf067ec3ce4af8ebe': str`タスクは ${0} 回目で完了`,
712
734
  'sf083efa5793bc94c': `すべてのエージェントのセッションの合計(同時に実行した分も含む)`,
@@ -722,6 +744,8 @@
722
744
  'sf3e2e1c7b6313910': `カスタムビュー`,
723
745
  'sf466a6f271f0b682': str`${0} 周目`,
724
746
  'sf4897f85932ebf42': `終了後の利用率`,
747
+ 'sf4de3bfbfaca12e5': `コピー済み`,
748
+ 'sf55d634dcc743595': `サービス`,
725
749
  'sf56cc81a8429fcb0': `試行の終了後に、同じアカウントで最初に報告された値`,
726
750
  'sf5dbf772d898f6e7': `ユニットごとではなく、実行ごとに 1 回実行されるタスク`,
727
751
  'sf6d770c86ee5a684': `フロー呼び出し`,
@@ -2,8 +2,8 @@
2
2
  // the patterns its task declares (`changes` in a journal row).
3
3
  import { msg, str } from '@lit/localize';
4
4
 
5
- /** What happened to one file in one attempt. `removed`: it created the file, and the file was removed because the attempt failed. */
6
- export type ChangeKind = 'created' | 'modified' | 'deleted' | 'removed';
5
+ /** What happened to one file in one attempt. `removed`: it created the file, and the file was removed because the attempt failed; `kept`: it created the file, and the file stayed though the attempt failed (`keep_failed_changes`). */
6
+ export type ChangeKind = 'created' | 'modified' | 'deleted' | 'removed' | 'kept';
7
7
 
8
8
  /** `1 changed file`, `3 changed files`. */
9
9
  export const changedFiles = (n: number): string => (n === 1 ? msg('1 changed file') : msg(str`${n} changed files`));
@@ -23,5 +23,7 @@ export function changeLabel(kind: ChangeKind): string {
23
23
  return msg('deleted');
24
24
  case 'removed':
25
25
  return msg('created, removed after the failed attempt');
26
+ case 'kept':
27
+ return msg('created, kept after the failed attempt');
26
28
  }
27
29
  }
@@ -18,6 +18,7 @@ export * from './table.js';
18
18
  export * from './changes.js';
19
19
  export * from './claims.js';
20
20
  export * from './rests.js';
21
+ export * from './services.js';
21
22
  export * from './time-box.js';
22
23
  export * from './row-extras.js';
23
24
  export * from './models.js';
@@ -2,7 +2,10 @@
2
2
  // written, by its format, and the words of the charts it draws.
3
3
  import type { ValueFormat } from '@contraagent/api';
4
4
  import type { ChartStrings } from '@contraagent/elements/charts';
5
+ import type { CodeStrings } from '@contraagent/elements/code';
6
+ import type { TreeStrings } from '@contraagent/elements/tree';
5
7
  import { msg, str } from '@lit/localize';
8
+ import { getLocale } from '../core/i18n.js';
6
9
  import { fmtDur, localTime, tokenCount, usd } from './format.js';
7
10
 
8
11
  /** A fraction as a percent: `97%`, `4.5%` under 10, `<0.1%` above 0. */
@@ -51,3 +54,18 @@ export const chartStrings = (): Partial<ChartStrings> => ({
51
54
  none: '—',
52
55
  scale: (low: string, high: string) => msg(str`${low} to ${high}`, { desc: 'A heatmap\'s colour scale: its lowest and highest value' }),
53
56
  });
57
+
58
+ /** The words of a code body (`<cae-code>`), in the UI's language. */
59
+ export const codeStrings = (): Partial<CodeStrings> => ({
60
+ copy: msg('Copy'),
61
+ copied: msg('Copied'),
62
+ wrap: msg('Wrap lines'),
63
+ empty: msg('No text'),
64
+ cut: (shown: number, total: number) =>
65
+ msg(str`First ${shown.toLocaleString(getLocale())} of ${total.toLocaleString(getLocale())} lines`, {
66
+ desc: 'A code body cut short: the lines shown of all its lines',
67
+ }),
68
+ });
69
+
70
+ /** The words of a tree body (`<cae-tree>`), in the UI's language. */
71
+ export const treeStrings = (): Partial<TreeStrings> => ({ empty: msg('No items') });
@@ -0,0 +1,57 @@
1
+ // A service (the long-lived helper a claim name stands for, `Plan.services`) in words:
2
+ // its state, when it started and stopped, and why it stopped.
3
+ import type { ServiceSpan } from '@contraagent/api';
4
+ import { msg, str } from '@lit/localize';
5
+ import { facts, fmtDur, localTime } from './format.js';
6
+
7
+ /** The state of one start of a service: it runs, it stopped, its start failed, or its stop is not recorded. */
8
+ export type ServiceState = 'running' | 'stopped' | 'failed' | 'unknown';
9
+
10
+ /** The state of one start of a service; `live`: whether its run still runs. */
11
+ export function serviceState(s: ServiceSpan, live: boolean): ServiceState {
12
+ if (s.start_error) return 'failed';
13
+ if (s.stopped_at) return 'stopped';
14
+ return live ? 'running' : 'unknown';
15
+ }
16
+
17
+ /** The state in words: `running`, `stopped`, `did not start`, `stop not recorded`. */
18
+ export function serviceStateLabel(state: ServiceState): string {
19
+ switch (state) {
20
+ case 'running':
21
+ return msg('running', { id: 'service-running', desc: 'A service that is running' });
22
+ case 'stopped':
23
+ return msg('stopped', { desc: 'A service that stopped' });
24
+ case 'failed':
25
+ return msg('did not start', { desc: 'A service whose start failed' });
26
+ default:
27
+ return msg('stop not recorded', { desc: 'A service of a finished run whose stop is not in services.jsonl' });
28
+ }
29
+ }
30
+
31
+ /** Why a service stopped, in words; '' while it runs. */
32
+ export function stopCauseLabel(cause: ServiceSpan['stop_cause']): string {
33
+ switch (cause) {
34
+ case 'run_end':
35
+ return msg('The run ended');
36
+ case 'interrupted':
37
+ return msg('The run was stopped by a signal');
38
+ default:
39
+ return '';
40
+ }
41
+ }
42
+
43
+ /**
44
+ * The facts of one start of a service, in one line:
45
+ * `Started 10:02:03 in 1.2s | Stopped 10:05:10 | The run ended`, or `10:02:03 | OSError: port 9000 in use`
46
+ * for a start that failed (the error is the value, so the line holds no label of its own).
47
+ */
48
+ export function serviceFacts(s: ServiceSpan): string {
49
+ if (s.start_error) return facts(localTime(s.started_at), s.start_error);
50
+ return facts(
51
+ msg(str`Started ${localTime(s.started_at)} in ${fmtDur(s.start_s ?? 0)}`),
52
+ s.stopped_at ? msg(str`Stopped ${localTime(s.stopped_at)}`) : '',
53
+ stopCauseLabel(s.stop_cause),
54
+ s.stop_error ? msg('Stop failed') : '',
55
+ s.stop_error,
56
+ );
57
+ }
@@ -1,20 +0,0 @@
1
- import type { ReactiveController, ReactiveControllerHost } from 'lit';
2
- /** Re-renders its host every second while it is connected. */
3
- export declare class ClockController implements ReactiveController {
4
- private readonly host;
5
- constructor(host: ReactiveControllerHost);
6
- hostConnected(): void;
7
- hostDisconnected(): void;
8
- }
9
- /**
10
- * Start times that stay put. A process reports its age in whole seconds, so
11
- * `now - age` jitters by a second between updates; the first value seen for an
12
- * id is kept while later ones stay within a few seconds of it.
13
- */
14
- export declare class StableStarts {
15
- private readonly seen;
16
- at(id: string, ageS: number, now?: number): number;
17
- }
18
- /** Shared by every view, so the same process shows the same start everywhere. */
19
- export declare const starts: StableStarts;
20
- //# sourceMappingURL=clock.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../src/core/clock.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,KAAK,CAAC;AAStE,8DAA8D;AAC9D,qBAAa,eAAgB,YAAW,kBAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,sBAAsB;IAGzD,aAAa,IAAI,IAAI;IAIrB,gBAAgB,IAAI,IAAI;CAOzB;AAED;;;;GAIG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAClD,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,MAAM;CAOvD;AAED,iFAAiF;AACjF,eAAO,MAAM,MAAM,cAAqB,CAAC"}
@@ -1,45 +0,0 @@
1
- const hosts = new Set();
2
- let timer = null;
3
- function tick() {
4
- for (const h of hosts)
5
- h.requestUpdate();
6
- }
7
- /** Re-renders its host every second while it is connected. */
8
- export class ClockController {
9
- constructor(host) {
10
- this.host = host;
11
- host.addController(this);
12
- }
13
- hostConnected() {
14
- hosts.add(this.host);
15
- timer ??= setInterval(tick, 1000);
16
- }
17
- hostDisconnected() {
18
- hosts.delete(this.host);
19
- if (!hosts.size && timer) {
20
- clearInterval(timer);
21
- timer = null;
22
- }
23
- }
24
- }
25
- /**
26
- * Start times that stay put. A process reports its age in whole seconds, so
27
- * `now - age` jitters by a second between updates; the first value seen for an
28
- * id is kept while later ones stay within a few seconds of it.
29
- */
30
- export class StableStarts {
31
- constructor() {
32
- this.seen = new Map();
33
- }
34
- at(id, ageS, now = Date.now()) {
35
- const t0 = Math.round(now - ageS * 1000);
36
- const prev = this.seen.get(id);
37
- if (prev !== undefined && Math.abs(prev - t0) < 5000)
38
- return prev;
39
- this.seen.set(id, t0);
40
- return t0;
41
- }
42
- }
43
- /** Shared by every view, so the same process shows the same start everywhere. */
44
- export const starts = new StableStarts();
45
- //# sourceMappingURL=clock.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clock.js","sourceRoot":"","sources":["../../src/core/clock.ts"],"names":[],"mappings":"AAGA,MAAM,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;AAChD,IAAI,KAAK,GAA0C,IAAI,CAAC;AAExD,SAAS,IAAI;IACX,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,CAAC,CAAC,aAAa,EAAE,CAAC;AAC3C,CAAC;AAED,8DAA8D;AAC9D,MAAM,OAAO,eAAe;IAC1B,YAA6B,IAA4B;QAA5B,SAAI,GAAJ,IAAI,CAAwB;QACvD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,aAAa;QACX,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,KAAK,KAAK,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,gBAAgB;QACd,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;IACH,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,YAAY;IAAzB;QACmB,SAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IAQpD,CAAC;IAPC,EAAE,CAAC,EAAU,EAAE,IAAY,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;QAC3C,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,GAAG,IAAI;YAAE,OAAO,IAAI,CAAC;QAClE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED,iFAAiF;AACjF,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC"}
@@ -1,62 +0,0 @@
1
- export declare const BUILTIN_TABS: readonly ["overview", "tasks", "journal", "outputs", "definitions", "procs", "stream"];
2
- export type BuiltinTab = (typeof BUILTIN_TABS)[number];
3
- /** A built-in view, or a panel the pipeline registered (`panel:<name>`). */
4
- export type Tab = BuiltinTab | `panel:${string}`;
5
- /** What the task view shows next to (or instead of) the transcript. */
6
- export declare const TASK_VIEWS: readonly ["transcript", "input", "output", "definition"];
7
- export type TaskView = (typeof TASK_VIEWS)[number];
8
- /** A page that is not one run's: `hosts`, the hosts behind a hub's runs; `trends`, the runs of a period. */
9
- export type Page = '' | 'hosts' | 'trends';
10
- /** The lengths of a period the trends page offers, in days, ending today. */
11
- export declare const TREND_DAYS: readonly [7, 14, 30];
12
- export interface Route {
13
- /** '' for a run's views; `hosts` for the hosts (on a hub), with no run. */
14
- page: Page;
15
- /** The run; '' until one is picked. */
16
- run: string;
17
- tab: Tab;
18
- /** stream tab: the task key whose transcript is open (null: the latest, `latestTask`). */
19
- key: string | null;
20
- /** stream tab: what the task view shows. */
21
- view: TaskView;
22
- /** stream tab: the round shown, 1-based (null: follow the latest). */
23
- round: number | null;
24
- /** definitions tab: the selected kind (null: the default one). */
25
- def: string | null;
26
- /** tasks and journal tabs: only this kind (kept, and out of the URL, while another tab is shown). */
27
- kind: string;
28
- /** journal tab: only this stop ('bad': every attempt that did not complete). */
29
- stop: string;
30
- /** tasks and journal tabs: a text filter. */
31
- q: string;
32
- /** overview tab: the pipeline graph's layer, its segments joined by `/` ('': the layer the graph opens on). */
33
- layer: string;
34
- /** overview tab: the unit highlighted in the pipeline graph. */
35
- unit: string;
36
- /** overview tab: what is selected in the pipeline graph's layer (a node, a loop box or a mark; '' for nothing). */
37
- sel: string;
38
- /** trends page: the period, the last `days` days (0: the days `from` to `to`, YYYY-MM-DD). */
39
- days: number;
40
- from: string;
41
- to: string;
42
- /** trends page: the time zone its days are counted in ('': the browser's). */
43
- tz: string;
44
- /** trends page: only the runs of this run group. */
45
- group: string;
46
- /** trends page: the open tab, a trends panel's `tab` ('': the first, the trends). */
47
- trendsTab: string;
48
- }
49
- export type RoutePatch = Partial<Route>;
50
- export declare const DEFAULT_ROUTE: Route;
51
- export declare function parseRoute(search: string): Route;
52
- /** The query string for a route: only what differs from the defaults, and only what its tab uses. */
53
- export declare function formatRoute(r: Route): string;
54
- /** Apply a patch. Leaving a task (another key, run) forgets its view and round; another run forgets every selection. */
55
- export declare function applyPatch(r: Route, patch: RoutePatch): Route;
56
- /**
57
- * Whether going from `a` to `b` is a move to another place (a new history entry,
58
- * so Back returns) or only a refinement of this one (the entry is replaced, so
59
- * typing in a filter, highlighting a unit or selecting in the graph does not fill the history).
60
- */
61
- export declare function isNewPlace(a: Route, b: Route): boolean;
62
- //# sourceMappingURL=route.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../src/core/route.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,wFAAyF,CAAC;AACnH,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AACvD,4EAA4E;AAC5E,MAAM,MAAM,GAAG,GAAG,UAAU,GAAG,SAAS,MAAM,EAAE,CAAC;AAEjD,uEAAuE;AACvE,eAAO,MAAM,UAAU,0DAA2D,CAAC;AACnF,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,4GAA4G;AAC5G,MAAM,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE3C,6EAA6E;AAC7E,eAAO,MAAM,UAAU,sBAAuB,CAAC;AAE/C,MAAM,WAAW,KAAK;IACpB,2EAA2E;IAC3E,IAAI,EAAE,IAAI,CAAC;IACX,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,GAAG,CAAC;IACT,0FAA0F;IAC1F,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,4CAA4C;IAC5C,IAAI,EAAE,QAAQ,CAAC;IACf,sEAAsE;IACtE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,kEAAkE;IAClE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,qGAAqG;IACrG,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,CAAC,EAAE,MAAM,CAAC;IACV,+GAA+G;IAC/G,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,mHAAmH;IACnH,GAAG,EAAE,MAAM,CAAC;IACZ,8FAA8F;IAC9F,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,8EAA8E;IAC9E,EAAE,EAAE,MAAM,CAAC;IACX,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,qFAAqF;IACrF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAExC,eAAO,MAAM,aAAa,EAAE,KAoB3B,CAAC;AAKF,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAiChD;AAED,qGAAqG;AACrG,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAgC5C;AAED,wHAAwH;AACxH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,GAAG,KAAK,CAY7D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,OAAO,CAGtD"}