@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.
- package/README.md +130 -2
- package/custom-elements.json +7084 -0
- package/dist/adapters/check-rows.d.ts +18 -0
- package/dist/adapters/check-rows.d.ts.map +1 -0
- package/dist/adapters/check-rows.js +75 -0
- package/dist/adapters/check-rows.js.map +1 -0
- package/dist/adapters/filters.d.ts +29 -0
- package/dist/adapters/filters.d.ts.map +1 -0
- package/dist/adapters/filters.js +74 -0
- package/dist/adapters/filters.js.map +1 -0
- package/dist/adapters/graph/compound.d.ts +93 -0
- package/dist/adapters/graph/compound.d.ts.map +1 -0
- package/dist/adapters/graph/compound.js +322 -0
- package/dist/adapters/graph/compound.js.map +1 -0
- package/dist/adapters/graph/flow-index.d.ts +54 -0
- package/dist/adapters/graph/flow-index.d.ts.map +1 -0
- package/dist/adapters/graph/flow-index.js +129 -0
- package/dist/adapters/graph/flow-index.js.map +1 -0
- package/dist/adapters/graph/highlight.d.ts +14 -0
- package/dist/adapters/graph/highlight.d.ts.map +1 -0
- package/dist/adapters/graph/highlight.js +33 -0
- package/dist/adapters/graph/highlight.js.map +1 -0
- package/dist/adapters/graph/input.d.ts +50 -0
- package/dist/adapters/graph/input.d.ts.map +1 -0
- package/dist/adapters/graph/input.js +201 -0
- package/dist/adapters/graph/input.js.map +1 -0
- package/dist/adapters/graph/layer.d.ts +33 -0
- package/dist/adapters/graph/layer.d.ts.map +1 -0
- package/dist/adapters/graph/layer.js +94 -0
- package/dist/adapters/graph/layer.js.map +1 -0
- package/dist/adapters/graph/matrix.d.ts +62 -0
- package/dist/adapters/graph/matrix.d.ts.map +1 -0
- package/dist/adapters/graph/matrix.js +96 -0
- package/dist/adapters/graph/matrix.js.map +1 -0
- package/dist/adapters/graph/project.d.ts +49 -0
- package/dist/adapters/graph/project.d.ts.map +1 -0
- package/dist/adapters/graph/project.js +319 -0
- package/dist/adapters/graph/project.js.map +1 -0
- package/dist/adapters/graph/selection.d.ts +31 -0
- package/dist/adapters/graph/selection.d.ts.map +1 -0
- package/dist/adapters/graph/selection.js +48 -0
- package/dist/adapters/graph/selection.js.map +1 -0
- package/dist/adapters/graph/states.d.ts +6 -0
- package/dist/adapters/graph/states.d.ts.map +1 -0
- package/dist/adapters/graph/states.js +5 -0
- package/dist/adapters/graph/states.js.map +1 -0
- package/dist/adapters/graph/types.d.ts +141 -0
- package/dist/adapters/graph/types.d.ts.map +1 -0
- package/dist/adapters/graph/types.js +3 -0
- package/dist/adapters/graph/types.js.map +1 -0
- package/dist/adapters/graph/words.d.ts +48 -0
- package/dist/adapters/graph/words.d.ts.map +1 -0
- package/dist/adapters/graph/words.js +128 -0
- package/dist/adapters/graph/words.js.map +1 -0
- package/dist/adapters/index.d.ts +18 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +23 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/journal-columns.d.ts +21 -0
- package/dist/adapters/journal-columns.d.ts.map +1 -0
- package/dist/adapters/journal-columns.js +179 -0
- package/dist/adapters/journal-columns.js.map +1 -0
- package/dist/adapters/kpi-tiles.d.ts +47 -0
- package/dist/adapters/kpi-tiles.d.ts.map +1 -0
- package/dist/adapters/kpi-tiles.js +173 -0
- package/dist/adapters/kpi-tiles.js.map +1 -0
- package/dist/adapters/lanes.d.ts +31 -0
- package/dist/adapters/lanes.d.ts.map +1 -0
- package/dist/adapters/lanes.js +75 -0
- package/dist/adapters/lanes.js.map +1 -0
- package/dist/adapters/model-shares.d.ts +27 -0
- package/dist/adapters/model-shares.d.ts.map +1 -0
- package/dist/adapters/model-shares.js +52 -0
- package/dist/adapters/model-shares.js.map +1 -0
- package/dist/adapters/panel-body.d.ts +20 -0
- package/dist/adapters/panel-body.d.ts.map +1 -0
- package/dist/adapters/panel-body.js +63 -0
- package/dist/adapters/panel-body.js.map +1 -0
- package/dist/adapters/preflight.d.ts +12 -0
- package/dist/adapters/preflight.d.ts.map +1 -0
- package/dist/adapters/preflight.js +15 -0
- package/dist/adapters/preflight.js.map +1 -0
- package/dist/adapters/task-columns.d.ts +19 -0
- package/dist/adapters/task-columns.d.ts.map +1 -0
- package/dist/adapters/task-columns.js +107 -0
- package/dist/adapters/task-columns.js.map +1 -0
- package/dist/adapters/transcript/index.d.ts +6 -0
- package/dist/adapters/transcript/index.d.ts.map +1 -0
- package/dist/adapters/transcript/index.js +8 -0
- package/dist/adapters/transcript/index.js.map +1 -0
- package/dist/adapters/transcript/model.d.ts +42 -0
- package/dist/adapters/transcript/model.d.ts.map +1 -0
- package/dist/adapters/transcript/model.js +128 -0
- package/dist/adapters/transcript/model.js.map +1 -0
- package/dist/adapters/transcript/rounds.d.ts +15 -0
- package/dist/adapters/transcript/rounds.d.ts.map +1 -0
- package/dist/adapters/transcript/rounds.js +74 -0
- package/dist/adapters/transcript/rounds.js.map +1 -0
- package/dist/adapters/transcript/sections.d.ts +18 -0
- package/dist/adapters/transcript/sections.d.ts.map +1 -0
- package/dist/adapters/transcript/sections.js +69 -0
- package/dist/adapters/transcript/sections.js.map +1 -0
- package/dist/adapters/transcript/web.d.ts +12 -0
- package/dist/adapters/transcript/web.d.ts.map +1 -0
- package/dist/adapters/transcript/web.js +39 -0
- package/dist/adapters/transcript/web.js.map +1 -0
- package/dist/adapters/transcript/who.d.ts +15 -0
- package/dist/adapters/transcript/who.d.ts.map +1 -0
- package/dist/adapters/transcript/who.js +42 -0
- package/dist/adapters/transcript/who.js.map +1 -0
- package/dist/adapters/trends.d.ts +11 -0
- package/dist/adapters/trends.d.ts.map +1 -0
- package/dist/adapters/trends.js +316 -0
- package/dist/adapters/trends.js.map +1 -0
- package/dist/contraagent-ui.js +985 -0
- package/dist/controllers/locale.d.ts +25 -0
- package/dist/controllers/locale.d.ts.map +1 -0
- package/dist/controllers/locale.js +33 -0
- package/dist/controllers/locale.js.map +1 -0
- package/dist/controllers/shortcuts.d.ts +29 -0
- package/dist/controllers/shortcuts.d.ts.map +1 -0
- package/dist/controllers/shortcuts.js +51 -0
- package/dist/controllers/shortcuts.js.map +1 -0
- package/dist/controllers/stream.d.ts +41 -0
- package/dist/controllers/stream.d.ts.map +1 -0
- package/dist/controllers/stream.js +90 -0
- package/dist/controllers/stream.js.map +1 -0
- package/dist/controllers/task-detail.d.ts +22 -0
- package/dist/controllers/task-detail.d.ts.map +1 -0
- package/dist/controllers/task-detail.js +50 -0
- package/dist/controllers/task-detail.js.map +1 -0
- package/dist/controllers/theme.d.ts +32 -0
- package/dist/controllers/theme.d.ts.map +1 -0
- package/dist/controllers/theme.js +56 -0
- package/dist/controllers/theme.js.map +1 -0
- package/dist/core/clock.d.ts +20 -0
- package/dist/core/clock.d.ts.map +1 -0
- package/dist/core/clock.js +45 -0
- package/dist/core/clock.js.map +1 -0
- package/dist/core/events.d.ts +107 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/events.js +5 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/i18n.d.ts +21 -0
- package/dist/core/i18n.d.ts.map +1 -0
- package/dist/core/i18n.js +71 -0
- package/dist/core/i18n.js.map +1 -0
- package/dist/core/index.d.ts +5 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +7 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/memory.d.ts +51 -0
- package/dist/core/memory.d.ts.map +1 -0
- package/dist/core/memory.js +174 -0
- package/dist/core/memory.js.map +1 -0
- package/dist/core/route.d.ts +62 -0
- package/dist/core/route.d.ts.map +1 -0
- package/dist/core/route.js +143 -0
- package/dist/core/route.js.map +1 -0
- package/dist/core/router.d.ts +27 -0
- package/dist/core/router.d.ts.map +1 -0
- package/dist/core/router.js +57 -0
- package/dist/core/router.js.map +1 -0
- package/dist/core/scroll.d.ts +21 -0
- package/dist/core/scroll.d.ts.map +1 -0
- package/dist/core/scroll.js +74 -0
- package/dist/core/scroll.js.map +1 -0
- package/dist/core/view-route.d.ts +62 -0
- package/dist/core/view-route.d.ts.map +1 -0
- package/dist/core/view-route.js +143 -0
- package/dist/core/view-route.js.map +1 -0
- package/dist/core/view-router.d.ts +27 -0
- package/dist/core/view-router.d.ts.map +1 -0
- package/dist/core/view-router.js +57 -0
- package/dist/core/view-router.js.map +1 -0
- package/dist/define/all.d.ts +13 -0
- package/dist/define/all.d.ts.map +1 -0
- package/dist/define/all.js +14 -0
- package/dist/define/all.js.map +1 -0
- package/dist/define/contracts.d.ts +2 -0
- package/dist/define/contracts.d.ts.map +1 -0
- package/dist/define/contracts.js +3 -0
- package/dist/define/contracts.js.map +1 -0
- package/dist/define/definitions.d.ts +3 -0
- package/dist/define/definitions.d.ts.map +1 -0
- package/dist/define/definitions.js +4 -0
- package/dist/define/definitions.js.map +1 -0
- package/dist/define/journal-table.d.ts +2 -0
- package/dist/define/journal-table.d.ts.map +1 -0
- package/dist/define/journal-table.js +3 -0
- package/dist/define/journal-table.js.map +1 -0
- package/dist/define/kpis.d.ts +2 -0
- package/dist/define/kpis.d.ts.map +1 -0
- package/dist/define/kpis.js +3 -0
- package/dist/define/kpis.js.map +1 -0
- package/dist/define/monitor.d.ts +2 -0
- package/dist/define/monitor.d.ts.map +1 -0
- package/dist/define/monitor.js +3 -0
- package/dist/define/monitor.js.map +1 -0
- package/dist/define/overview.d.ts +2 -0
- package/dist/define/overview.d.ts.map +1 -0
- package/dist/define/overview.js +3 -0
- package/dist/define/overview.js.map +1 -0
- package/dist/define/pipeline-graph.d.ts +2 -0
- package/dist/define/pipeline-graph.d.ts.map +1 -0
- package/dist/define/pipeline-graph.js +3 -0
- package/dist/define/pipeline-graph.js.map +1 -0
- package/dist/define/procs.d.ts +3 -0
- package/dist/define/procs.d.ts.map +1 -0
- package/dist/define/procs.js +4 -0
- package/dist/define/procs.js.map +1 -0
- package/dist/define/task-table.d.ts +2 -0
- package/dist/define/task-table.d.ts.map +1 -0
- package/dist/define/task-table.js +3 -0
- package/dist/define/task-table.js.map +1 -0
- package/dist/define/task-view.d.ts +2 -0
- package/dist/define/task-view.d.ts.map +1 -0
- package/dist/define/task-view.js +3 -0
- package/dist/define/task-view.js.map +1 -0
- package/dist/define/timeline.d.ts +2 -0
- package/dist/define/timeline.d.ts.map +1 -0
- package/dist/define/timeline.js +3 -0
- package/dist/define/timeline.js.map +1 -0
- package/dist/define/transcript.d.ts +2 -0
- package/dist/define/transcript.d.ts.map +1 -0
- package/dist/define/transcript.js +3 -0
- package/dist/define/transcript.js.map +1 -0
- package/dist/elements/lists/ca-contracts.d.ts +46 -0
- package/dist/elements/lists/ca-contracts.d.ts.map +1 -0
- package/dist/elements/lists/ca-contracts.js +199 -0
- package/dist/elements/lists/ca-contracts.js.map +1 -0
- package/dist/elements/lists/ca-definitions.d.ts +41 -0
- package/dist/elements/lists/ca-definitions.d.ts.map +1 -0
- package/dist/elements/lists/ca-definitions.js +182 -0
- package/dist/elements/lists/ca-definitions.js.map +1 -0
- package/dist/elements/lists/ca-journal-table.d.ts +37 -0
- package/dist/elements/lists/ca-journal-table.d.ts.map +1 -0
- package/dist/elements/lists/ca-journal-table.js +170 -0
- package/dist/elements/lists/ca-journal-table.js.map +1 -0
- package/dist/elements/lists/ca-panel-body.d.ts +29 -0
- package/dist/elements/lists/ca-panel-body.d.ts.map +1 -0
- package/dist/elements/lists/ca-panel-body.js +144 -0
- package/dist/elements/lists/ca-panel-body.js.map +1 -0
- package/dist/elements/lists/ca-panel-view.d.ts +21 -0
- package/dist/elements/lists/ca-panel-view.d.ts.map +1 -0
- package/dist/elements/lists/ca-panel-view.js +59 -0
- package/dist/elements/lists/ca-panel-view.js.map +1 -0
- package/dist/elements/lists/ca-proc-tree.d.ts +16 -0
- package/dist/elements/lists/ca-proc-tree.d.ts.map +1 -0
- package/dist/elements/lists/ca-proc-tree.js +63 -0
- package/dist/elements/lists/ca-proc-tree.js.map +1 -0
- package/dist/elements/lists/ca-procs-view.d.ts +27 -0
- package/dist/elements/lists/ca-procs-view.d.ts.map +1 -0
- package/dist/elements/lists/ca-procs-view.js +91 -0
- package/dist/elements/lists/ca-procs-view.js.map +1 -0
- package/dist/elements/lists/ca-task-table.d.ts +33 -0
- package/dist/elements/lists/ca-task-table.d.ts.map +1 -0
- package/dist/elements/lists/ca-task-table.js +115 -0
- package/dist/elements/lists/ca-task-table.js.map +1 -0
- package/dist/elements/lists/filters.d.ts +28 -0
- package/dist/elements/lists/filters.d.ts.map +1 -0
- package/dist/elements/lists/filters.js +71 -0
- package/dist/elements/lists/filters.js.map +1 -0
- package/dist/elements/lists/index.d.ts +9 -0
- package/dist/elements/lists/index.d.ts.map +1 -0
- package/dist/elements/lists/index.js +9 -0
- package/dist/elements/lists/index.js.map +1 -0
- package/dist/elements/overview/ca-kpis.d.ts +32 -0
- package/dist/elements/overview/ca-kpis.d.ts.map +1 -0
- package/dist/elements/overview/ca-kpis.js +62 -0
- package/dist/elements/overview/ca-kpis.js.map +1 -0
- package/dist/elements/overview/ca-model-usage.d.ts +25 -0
- package/dist/elements/overview/ca-model-usage.d.ts.map +1 -0
- package/dist/elements/overview/ca-model-usage.js +118 -0
- package/dist/elements/overview/ca-model-usage.js.map +1 -0
- package/dist/elements/overview/ca-overview.d.ts +66 -0
- package/dist/elements/overview/ca-overview.d.ts.map +1 -0
- package/dist/elements/overview/ca-overview.js +456 -0
- package/dist/elements/overview/ca-overview.js.map +1 -0
- package/dist/elements/overview/ca-pipeline-graph.d.ts +211 -0
- package/dist/elements/overview/ca-pipeline-graph.d.ts.map +1 -0
- package/dist/elements/overview/ca-pipeline-graph.js +616 -0
- package/dist/elements/overview/ca-pipeline-graph.js.map +1 -0
- package/dist/elements/overview/ca-pipeline-progress.d.ts +17 -0
- package/dist/elements/overview/ca-pipeline-progress.d.ts.map +1 -0
- package/dist/elements/overview/ca-pipeline-progress.js +119 -0
- package/dist/elements/overview/ca-pipeline-progress.js.map +1 -0
- package/dist/elements/overview/ca-plan-matrix.d.ts +27 -0
- package/dist/elements/overview/ca-plan-matrix.d.ts.map +1 -0
- package/dist/elements/overview/ca-plan-matrix.js +113 -0
- package/dist/elements/overview/ca-plan-matrix.js.map +1 -0
- package/dist/elements/overview/ca-quota.d.ts +42 -0
- package/dist/elements/overview/ca-quota.d.ts.map +1 -0
- package/dist/elements/overview/ca-quota.js +179 -0
- package/dist/elements/overview/ca-quota.js.map +1 -0
- package/dist/elements/overview/ca-run-driver.d.ts +33 -0
- package/dist/elements/overview/ca-run-driver.d.ts.map +1 -0
- package/dist/elements/overview/ca-run-driver.js +146 -0
- package/dist/elements/overview/ca-run-driver.js.map +1 -0
- package/dist/elements/overview/ca-spend-breakdown.d.ts +24 -0
- package/dist/elements/overview/ca-spend-breakdown.d.ts.map +1 -0
- package/dist/elements/overview/ca-spend-breakdown.js +108 -0
- package/dist/elements/overview/ca-spend-breakdown.js.map +1 -0
- package/dist/elements/overview/ca-timeline.d.ts +28 -0
- package/dist/elements/overview/ca-timeline.d.ts.map +1 -0
- package/dist/elements/overview/ca-timeline.js +72 -0
- package/dist/elements/overview/ca-timeline.js.map +1 -0
- package/dist/elements/overview/ca-workers.d.ts +23 -0
- package/dist/elements/overview/ca-workers.d.ts.map +1 -0
- package/dist/elements/overview/ca-workers.js +86 -0
- package/dist/elements/overview/ca-workers.js.map +1 -0
- package/dist/elements/overview/flow-types.d.ts +2 -0
- package/dist/elements/overview/flow-types.d.ts.map +1 -0
- package/dist/elements/overview/flow-types.js +2 -0
- package/dist/elements/overview/flow-types.js.map +1 -0
- package/dist/elements/overview/graph/arrange.d.ts +16 -0
- package/dist/elements/overview/graph/arrange.d.ts.map +1 -0
- package/dist/elements/overview/graph/arrange.js +152 -0
- package/dist/elements/overview/graph/arrange.js.map +1 -0
- package/dist/elements/overview/graph/card.d.ts +64 -0
- package/dist/elements/overview/graph/card.d.ts.map +1 -0
- package/dist/elements/overview/graph/card.js +160 -0
- package/dist/elements/overview/graph/card.js.map +1 -0
- package/dist/elements/overview/graph/flow-index.d.ts +52 -0
- package/dist/elements/overview/graph/flow-index.d.ts.map +1 -0
- package/dist/elements/overview/graph/flow-index.js +121 -0
- package/dist/elements/overview/graph/flow-index.js.map +1 -0
- package/dist/elements/overview/graph/highlight.d.ts +14 -0
- package/dist/elements/overview/graph/highlight.d.ts.map +1 -0
- package/dist/elements/overview/graph/highlight.js +33 -0
- package/dist/elements/overview/graph/highlight.js.map +1 -0
- package/dist/elements/overview/graph/layer.d.ts +32 -0
- package/dist/elements/overview/graph/layer.d.ts.map +1 -0
- package/dist/elements/overview/graph/layer.js +92 -0
- package/dist/elements/overview/graph/layer.js.map +1 -0
- package/dist/elements/overview/graph/layout.d.ts +80 -0
- package/dist/elements/overview/graph/layout.d.ts.map +1 -0
- package/dist/elements/overview/graph/layout.js +261 -0
- package/dist/elements/overview/graph/layout.js.map +1 -0
- package/dist/elements/overview/graph/marks.d.ts +18 -0
- package/dist/elements/overview/graph/marks.d.ts.map +1 -0
- package/dist/elements/overview/graph/marks.js +17 -0
- package/dist/elements/overview/graph/marks.js.map +1 -0
- package/dist/elements/overview/graph/matrix.d.ts +58 -0
- package/dist/elements/overview/graph/matrix.d.ts.map +1 -0
- package/dist/elements/overview/graph/matrix.js +93 -0
- package/dist/elements/overview/graph/matrix.js.map +1 -0
- package/dist/elements/overview/graph/nav.d.ts +15 -0
- package/dist/elements/overview/graph/nav.d.ts.map +1 -0
- package/dist/elements/overview/graph/nav.js +80 -0
- package/dist/elements/overview/graph/nav.js.map +1 -0
- package/dist/elements/overview/graph/pan-zoom.d.ts +83 -0
- package/dist/elements/overview/graph/pan-zoom.d.ts.map +1 -0
- package/dist/elements/overview/graph/pan-zoom.js +189 -0
- package/dist/elements/overview/graph/pan-zoom.js.map +1 -0
- package/dist/elements/overview/graph/paths.d.ts +9 -0
- package/dist/elements/overview/graph/paths.d.ts.map +1 -0
- package/dist/elements/overview/graph/paths.js +44 -0
- package/dist/elements/overview/graph/paths.js.map +1 -0
- package/dist/elements/overview/graph/place-card.d.ts +36 -0
- package/dist/elements/overview/graph/place-card.d.ts.map +1 -0
- package/dist/elements/overview/graph/place-card.js +68 -0
- package/dist/elements/overview/graph/place-card.js.map +1 -0
- package/dist/elements/overview/graph/project.d.ts +31 -0
- package/dist/elements/overview/graph/project.d.ts.map +1 -0
- package/dist/elements/overview/graph/project.js +455 -0
- package/dist/elements/overview/graph/project.js.map +1 -0
- package/dist/elements/overview/graph/selection.d.ts +31 -0
- package/dist/elements/overview/graph/selection.d.ts.map +1 -0
- package/dist/elements/overview/graph/selection.js +44 -0
- package/dist/elements/overview/graph/selection.js.map +1 -0
- package/dist/elements/overview/graph/states.d.ts +6 -0
- package/dist/elements/overview/graph/states.d.ts.map +1 -0
- package/dist/elements/overview/graph/states.js +5 -0
- package/dist/elements/overview/graph/states.js.map +1 -0
- package/dist/elements/overview/graph/types.d.ts +124 -0
- package/dist/elements/overview/graph/types.d.ts.map +1 -0
- package/dist/elements/overview/graph/types.js +3 -0
- package/dist/elements/overview/graph/types.js.map +1 -0
- package/dist/elements/overview/graph/view.d.ts +16 -0
- package/dist/elements/overview/graph/view.d.ts.map +1 -0
- package/dist/elements/overview/graph/view.js +20 -0
- package/dist/elements/overview/graph/view.js.map +1 -0
- package/dist/elements/overview/index.d.ts +10 -0
- package/dist/elements/overview/index.d.ts.map +1 -0
- package/dist/elements/overview/index.js +10 -0
- package/dist/elements/overview/index.js.map +1 -0
- package/dist/elements/overview/kpis-model.d.ts +31 -0
- package/dist/elements/overview/kpis-model.d.ts.map +1 -0
- package/dist/elements/overview/kpis-model.js +30 -0
- package/dist/elements/overview/kpis-model.js.map +1 -0
- package/dist/elements/overview/logic.d.ts +442 -0
- package/dist/elements/overview/logic.d.ts.map +1 -0
- package/dist/elements/overview/logic.js +1431 -0
- package/dist/elements/overview/logic.js.map +1 -0
- package/dist/elements/overview/pipeline-graph/actions.d.ts +16 -0
- package/dist/elements/overview/pipeline-graph/actions.d.ts.map +1 -0
- package/dist/elements/overview/pipeline-graph/actions.js +42 -0
- package/dist/elements/overview/pipeline-graph/actions.js.map +1 -0
- package/dist/elements/overview/pipeline-graph/crumbs.d.ts +15 -0
- package/dist/elements/overview/pipeline-graph/crumbs.d.ts.map +1 -0
- package/dist/elements/overview/pipeline-graph/crumbs.js +70 -0
- package/dist/elements/overview/pipeline-graph/crumbs.js.map +1 -0
- package/dist/elements/overview/pipeline-graph/dag.d.ts +4 -0
- package/dist/elements/overview/pipeline-graph/dag.d.ts.map +1 -0
- package/dist/elements/overview/pipeline-graph/dag.js +259 -0
- package/dist/elements/overview/pipeline-graph/dag.js.map +1 -0
- package/dist/elements/overview/pipeline-graph/host.d.ts +24 -0
- package/dist/elements/overview/pipeline-graph/host.d.ts.map +1 -0
- package/dist/elements/overview/pipeline-graph/host.js +2 -0
- package/dist/elements/overview/pipeline-graph/host.js.map +1 -0
- package/dist/elements/overview/pipeline-graph/icons.d.ts +5 -0
- package/dist/elements/overview/pipeline-graph/icons.d.ts.map +1 -0
- package/dist/elements/overview/pipeline-graph/icons.js +13 -0
- package/dist/elements/overview/pipeline-graph/icons.js.map +1 -0
- package/dist/elements/overview/pipeline-graph/inspector.d.ts +5 -0
- package/dist/elements/overview/pipeline-graph/inspector.d.ts.map +1 -0
- package/dist/elements/overview/pipeline-graph/inspector.js +100 -0
- package/dist/elements/overview/pipeline-graph/inspector.js.map +1 -0
- package/dist/elements/overview/pipeline-graph/legend.d.ts +9 -0
- package/dist/elements/overview/pipeline-graph/legend.d.ts.map +1 -0
- package/dist/elements/overview/pipeline-graph/legend.js +59 -0
- package/dist/elements/overview/pipeline-graph/legend.js.map +1 -0
- package/dist/elements/overview/pipeline-graph/matrix.d.ts +4 -0
- package/dist/elements/overview/pipeline-graph/matrix.d.ts.map +1 -0
- package/dist/elements/overview/pipeline-graph/matrix.js +193 -0
- package/dist/elements/overview/pipeline-graph/matrix.js.map +1 -0
- package/dist/elements/overview/pipeline-graph/outline.d.ts +53 -0
- package/dist/elements/overview/pipeline-graph/outline.d.ts.map +1 -0
- package/dist/elements/overview/pipeline-graph/outline.js +111 -0
- package/dist/elements/overview/pipeline-graph/outline.js.map +1 -0
- package/dist/elements/overview/pipeline-graph/strings.d.ts +11 -0
- package/dist/elements/overview/pipeline-graph/strings.d.ts.map +1 -0
- package/dist/elements/overview/pipeline-graph/strings.js +49 -0
- package/dist/elements/overview/pipeline-graph/strings.js.map +1 -0
- package/dist/elements/overview/pipeline-graph/styles.d.ts +4 -0
- package/dist/elements/overview/pipeline-graph/styles.d.ts.map +1 -0
- package/dist/elements/overview/pipeline-graph/styles.js +96 -0
- package/dist/elements/overview/pipeline-graph/styles.js.map +1 -0
- package/dist/elements/overview/pipeline-graph/table.d.ts +11 -0
- package/dist/elements/overview/pipeline-graph/table.d.ts.map +1 -0
- package/dist/elements/overview/pipeline-graph/table.js +74 -0
- package/dist/elements/overview/pipeline-graph/table.js.map +1 -0
- package/dist/elements/overview/pipeline-graph/tools.d.ts +5 -0
- package/dist/elements/overview/pipeline-graph/tools.d.ts.map +1 -0
- package/dist/elements/overview/pipeline-graph/tools.js +48 -0
- package/dist/elements/overview/pipeline-graph/tools.js.map +1 -0
- package/dist/elements/overview/pipeline-graph/words.d.ts +45 -0
- package/dist/elements/overview/pipeline-graph/words.d.ts.map +1 -0
- package/dist/elements/overview/pipeline-graph/words.js +108 -0
- package/dist/elements/overview/pipeline-graph/words.js.map +1 -0
- package/dist/elements/overview/place-card.d.ts +36 -0
- package/dist/elements/overview/place-card.d.ts.map +1 -0
- package/dist/elements/overview/place-card.js +68 -0
- package/dist/elements/overview/place-card.js.map +1 -0
- package/dist/elements/overview/timeline-model.d.ts +44 -0
- package/dist/elements/overview/timeline-model.d.ts.map +1 -0
- package/dist/elements/overview/timeline-model.js +53 -0
- package/dist/elements/overview/timeline-model.js.map +1 -0
- package/dist/elements/shared/ca-count.d.ts +17 -0
- package/dist/elements/shared/ca-count.d.ts.map +1 -0
- package/dist/elements/shared/ca-count.js +59 -0
- package/dist/elements/shared/ca-count.js.map +1 -0
- package/dist/elements/shared/ca-definition.d.ts +26 -0
- package/dist/elements/shared/ca-definition.d.ts.map +1 -0
- package/dist/elements/shared/ca-definition.js +202 -0
- package/dist/elements/shared/ca-definition.js.map +1 -0
- package/dist/elements/shared/ca-elapsed.d.ts +14 -0
- package/dist/elements/shared/ca-elapsed.d.ts.map +1 -0
- package/dist/elements/shared/ca-elapsed.js +33 -0
- package/dist/elements/shared/ca-elapsed.js.map +1 -0
- package/dist/elements/shared/ca-json-tree.d.ts +16 -0
- package/dist/elements/shared/ca-json-tree.d.ts.map +1 -0
- package/dist/elements/shared/ca-json-tree.js +52 -0
- package/dist/elements/shared/ca-json-tree.js.map +1 -0
- package/dist/elements/shared/ca-markdown.d.ts +19 -0
- package/dist/elements/shared/ca-markdown.d.ts.map +1 -0
- package/dist/elements/shared/ca-markdown.js +59 -0
- package/dist/elements/shared/ca-markdown.js.map +1 -0
- package/dist/elements/shared/contract-parts.d.ts +35 -0
- package/dist/elements/shared/contract-parts.d.ts.map +1 -0
- package/dist/elements/shared/contract-parts.js +151 -0
- package/dist/elements/shared/contract-parts.js.map +1 -0
- package/dist/elements/shared/fact-line.d.ts +4 -0
- package/dist/elements/shared/fact-line.d.ts.map +1 -0
- package/dist/elements/shared/fact-line.js +8 -0
- package/dist/elements/shared/fact-line.js.map +1 -0
- package/dist/elements/shared/file-card.d.ts +17 -0
- package/dist/elements/shared/file-card.d.ts.map +1 -0
- package/dist/elements/shared/file-card.js +37 -0
- package/dist/elements/shared/file-card.js.map +1 -0
- package/dist/elements/shared/prompt-text.d.ts +5 -0
- package/dist/elements/shared/prompt-text.d.ts.map +1 -0
- package/dist/elements/shared/prompt-text.js +13 -0
- package/dist/elements/shared/prompt-text.js.map +1 -0
- package/dist/elements/shared/task-chip.d.ts +10 -0
- package/dist/elements/shared/task-chip.d.ts.map +1 -0
- package/dist/elements/shared/task-chip.js +19 -0
- package/dist/elements/shared/task-chip.js.map +1 -0
- package/dist/elements/shell/ca-clock.d.ts +13 -0
- package/dist/elements/shell/ca-clock.d.ts.map +1 -0
- package/dist/elements/shell/ca-clock.js +30 -0
- package/dist/elements/shell/ca-clock.js.map +1 -0
- package/dist/elements/shell/ca-hosts.d.ts +21 -0
- package/dist/elements/shell/ca-hosts.d.ts.map +1 -0
- package/dist/elements/shell/ca-hosts.js +97 -0
- package/dist/elements/shell/ca-hosts.js.map +1 -0
- package/dist/elements/shell/ca-monitor.d.ts +180 -0
- package/dist/elements/shell/ca-monitor.d.ts.map +1 -0
- package/dist/elements/shell/ca-monitor.js +547 -0
- package/dist/elements/shell/ca-monitor.js.map +1 -0
- package/dist/elements/shell/ca-run-picker.d.ts +71 -0
- package/dist/elements/shell/ca-run-picker.d.ts.map +1 -0
- package/dist/elements/shell/ca-run-picker.js +313 -0
- package/dist/elements/shell/ca-run-picker.js.map +1 -0
- package/dist/elements/shell/ca-theme-switch.d.ts +36 -0
- package/dist/elements/shell/ca-theme-switch.d.ts.map +1 -0
- package/dist/elements/shell/ca-theme-switch.js +186 -0
- package/dist/elements/shell/ca-theme-switch.js.map +1 -0
- package/dist/elements/shell/ca-toasts.d.ts +23 -0
- package/dist/elements/shell/ca-toasts.d.ts.map +1 -0
- package/dist/elements/shell/ca-toasts.js +88 -0
- package/dist/elements/shell/ca-toasts.js.map +1 -0
- package/dist/elements/shell/header.d.ts +13 -0
- package/dist/elements/shell/header.d.ts.map +1 -0
- package/dist/elements/shell/header.js +38 -0
- package/dist/elements/shell/header.js.map +1 -0
- package/dist/elements/shell/styles.d.ts +2 -0
- package/dist/elements/shell/styles.d.ts.map +1 -0
- package/dist/elements/shell/styles.js +72 -0
- package/dist/elements/shell/styles.js.map +1 -0
- package/dist/elements/shell/tabs.d.ts +32 -0
- package/dist/elements/shell/tabs.d.ts.map +1 -0
- package/dist/elements/shell/tabs.js +125 -0
- package/dist/elements/shell/tabs.js.map +1 -0
- package/dist/elements/shell/views.d.ts +27 -0
- package/dist/elements/shell/views.d.ts.map +1 -0
- package/dist/elements/shell/views.js +55 -0
- package/dist/elements/shell/views.js.map +1 -0
- package/dist/elements/task/ca-task-view.d.ts +55 -0
- package/dist/elements/task/ca-task-view.d.ts.map +1 -0
- package/dist/elements/task/ca-task-view.js +199 -0
- package/dist/elements/task/ca-task-view.js.map +1 -0
- package/dist/elements/task/ca-transcript.d.ts +74 -0
- package/dist/elements/task/ca-transcript.d.ts.map +1 -0
- package/dist/elements/task/ca-transcript.js +241 -0
- package/dist/elements/task/ca-transcript.js.map +1 -0
- package/dist/elements/task/context.d.ts +57 -0
- package/dist/elements/task/context.d.ts.map +1 -0
- package/dist/elements/task/context.js +61 -0
- package/dist/elements/task/context.js.map +1 -0
- package/dist/elements/task/header.d.ts +9 -0
- package/dist/elements/task/header.d.ts.map +1 -0
- package/dist/elements/task/header.js +287 -0
- package/dist/elements/task/header.js.map +1 -0
- package/dist/elements/task/index.d.ts +3 -0
- package/dist/elements/task/index.d.ts.map +1 -0
- package/dist/elements/task/index.js +3 -0
- package/dist/elements/task/index.js.map +1 -0
- package/dist/elements/task/inputs.d.ts +28 -0
- package/dist/elements/task/inputs.d.ts.map +1 -0
- package/dist/elements/task/inputs.js +27 -0
- package/dist/elements/task/inputs.js.map +1 -0
- package/dist/elements/task/panes/definition.d.ts +5 -0
- package/dist/elements/task/panes/definition.d.ts.map +1 -0
- package/dist/elements/task/panes/definition.js +5 -0
- package/dist/elements/task/panes/definition.js.map +1 -0
- package/dist/elements/task/panes/io.d.ts +8 -0
- package/dist/elements/task/panes/io.d.ts.map +1 -0
- package/dist/elements/task/panes/io.js +184 -0
- package/dist/elements/task/panes/io.js.map +1 -0
- package/dist/elements/task/panes/transcript.d.ts +5 -0
- package/dist/elements/task/panes/transcript.d.ts.map +1 -0
- package/dist/elements/task/panes/transcript.js +29 -0
- package/dist/elements/task/panes/transcript.js.map +1 -0
- package/dist/elements/task/rounds.d.ts +14 -0
- package/dist/elements/task/rounds.d.ts.map +1 -0
- package/dist/elements/task/rounds.js +59 -0
- package/dist/elements/task/rounds.js.map +1 -0
- package/dist/elements/task/styles.d.ts +2 -0
- package/dist/elements/task/styles.d.ts.map +1 -0
- package/dist/elements/task/styles.js +66 -0
- package/dist/elements/task/styles.js.map +1 -0
- package/dist/elements/task/transcript-model.d.ts +106 -0
- package/dist/elements/task/transcript-model.d.ts.map +1 -0
- package/dist/elements/task/transcript-model.js +280 -0
- package/dist/elements/task/transcript-model.js.map +1 -0
- package/dist/elements/task/who.d.ts +5 -0
- package/dist/elements/task/who.d.ts.map +1 -0
- package/dist/elements/task/who.js +30 -0
- package/dist/elements/task/who.js.map +1 -0
- package/dist/elements/trends/ca-trends.d.ts +55 -0
- package/dist/elements/trends/ca-trends.d.ts.map +1 -0
- package/dist/elements/trends/ca-trends.js +213 -0
- package/dist/elements/trends/ca-trends.js.map +1 -0
- package/dist/events.d.ts +107 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +5 -0
- package/dist/events.js.map +1 -0
- package/dist/i18n.d.ts +16 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +48 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/clock.d.ts +20 -0
- package/dist/lib/clock.d.ts.map +1 -0
- package/dist/lib/clock.js +45 -0
- package/dist/lib/clock.js.map +1 -0
- package/dist/lib/format.d.ts +35 -0
- package/dist/lib/format.d.ts.map +1 -0
- package/dist/lib/format.js +117 -0
- package/dist/lib/format.js.map +1 -0
- package/dist/lib/highlight.d.ts +5 -0
- package/dist/lib/highlight.d.ts.map +1 -0
- package/dist/lib/highlight.js +86 -0
- package/dist/lib/highlight.js.map +1 -0
- package/dist/lib/labels.d.ts +103 -0
- package/dist/lib/labels.d.ts.map +1 -0
- package/dist/lib/labels.js +249 -0
- package/dist/lib/labels.js.map +1 -0
- package/dist/lib/markdown.d.ts +13 -0
- package/dist/lib/markdown.d.ts.map +1 -0
- package/dist/lib/markdown.js +118 -0
- package/dist/lib/markdown.js.map +1 -0
- package/dist/lib/memory.d.ts +27 -0
- package/dist/lib/memory.d.ts.map +1 -0
- package/dist/lib/memory.js +117 -0
- package/dist/lib/memory.js.map +1 -0
- package/dist/lib/quota-format.d.ts +28 -0
- package/dist/lib/quota-format.d.ts.map +1 -0
- package/dist/lib/quota-format.js +67 -0
- package/dist/lib/quota-format.js.map +1 -0
- package/dist/lib/scroll.d.ts +16 -0
- package/dist/lib/scroll.d.ts.map +1 -0
- package/dist/lib/scroll.js +70 -0
- package/dist/lib/scroll.js.map +1 -0
- package/dist/lib/status.d.ts +25 -0
- package/dist/lib/status.d.ts.map +1 -0
- package/dist/lib/status.js +40 -0
- package/dist/lib/status.js.map +1 -0
- package/dist/lib/tone.d.ts +29 -0
- package/dist/lib/tone.d.ts.map +1 -0
- package/dist/lib/tone.js +97 -0
- package/dist/lib/tone.js.map +1 -0
- package/dist/lib/trends.d.ts +15 -0
- package/dist/lib/trends.d.ts.map +1 -0
- package/dist/lib/trends.js +36 -0
- package/dist/lib/trends.js.map +1 -0
- package/dist/locales/codes.d.ts +14 -0
- package/dist/locales/codes.d.ts.map +1 -0
- package/dist/locales/codes.js +21 -0
- package/dist/locales/codes.js.map +1 -0
- package/dist/locales/ja.d.ts +761 -0
- package/dist/locales/ja.d.ts.map +1 -0
- package/dist/locales/ja.js +767 -0
- package/dist/locales/ja.js.map +1 -0
- package/dist/route.d.ts +46 -0
- package/dist/route.d.ts.map +1 -0
- package/dist/route.js +102 -0
- package/dist/route.js.map +1 -0
- package/dist/router.d.ts +23 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +55 -0
- package/dist/router.js.map +1 -0
- package/dist/styles/base.d.ts +11 -0
- package/dist/styles/base.d.ts.map +1 -0
- package/dist/styles/base.js +241 -0
- package/dist/styles/base.js.map +1 -0
- package/dist/styles/chips.d.ts +2 -0
- package/dist/styles/chips.d.ts.map +1 -0
- package/dist/styles/chips.js +18 -0
- package/dist/styles/chips.js.map +1 -0
- package/dist/styles/executor-icon.d.ts +3 -0
- package/dist/styles/executor-icon.d.ts.map +1 -0
- package/dist/styles/executor-icon.js +9 -0
- package/dist/styles/executor-icon.js.map +1 -0
- package/dist/styles/facts.d.ts +2 -0
- package/dist/styles/facts.d.ts.map +1 -0
- package/dist/styles/facts.js +7 -0
- package/dist/styles/facts.js.map +1 -0
- package/dist/styles/index.d.ts +17 -0
- package/dist/styles/index.d.ts.map +1 -0
- package/dist/styles/index.js +16 -0
- package/dist/styles/index.js.map +1 -0
- package/dist/styles/layout.d.ts +2 -0
- package/dist/styles/layout.d.ts.map +1 -0
- package/dist/styles/layout.js +30 -0
- package/dist/styles/layout.js.map +1 -0
- package/dist/styles/legend.d.ts +2 -0
- package/dist/styles/legend.d.ts.map +1 -0
- package/dist/styles/legend.js +8 -0
- package/dist/styles/legend.js.map +1 -0
- package/dist/styles/meter.d.ts +3 -0
- package/dist/styles/meter.d.ts.map +1 -0
- package/dist/styles/meter.js +9 -0
- package/dist/styles/meter.js.map +1 -0
- package/dist/styles/motion.d.ts +2 -0
- package/dist/styles/motion.d.ts.map +1 -0
- package/dist/styles/motion.js +27 -0
- package/dist/styles/motion.js.map +1 -0
- package/dist/styles/prose.d.ts +3 -0
- package/dist/styles/prose.d.ts.map +1 -0
- package/dist/styles/prose.js +59 -0
- package/dist/styles/prose.js.map +1 -0
- package/dist/styles/reset.d.ts +2 -0
- package/dist/styles/reset.d.ts.map +1 -0
- package/dist/styles/reset.js +13 -0
- package/dist/styles/reset.js.map +1 -0
- package/dist/styles/status.d.ts +2 -0
- package/dist/styles/status.d.ts.map +1 -0
- package/dist/styles/status.js +52 -0
- package/dist/styles/status.js.map +1 -0
- package/dist/styles/text.d.ts +2 -0
- package/dist/styles/text.d.ts.map +1 -0
- package/dist/styles/text.js +21 -0
- package/dist/styles/text.js.map +1 -0
- package/dist/styles/theme-sheet.d.ts +12 -0
- package/dist/styles/theme-sheet.d.ts.map +1 -0
- package/dist/styles/theme-sheet.js +24 -0
- package/dist/styles/theme-sheet.js.map +1 -0
- package/dist/styles/themes.d.ts +75 -0
- package/dist/styles/themes.d.ts.map +1 -0
- package/dist/styles/themes.js +452 -0
- package/dist/styles/themes.js.map +1 -0
- package/dist/styles/tokens.d.ts +8 -0
- package/dist/styles/tokens.d.ts.map +1 -0
- package/dist/styles/tokens.js +32 -0
- package/dist/styles/tokens.js.map +1 -0
- package/dist/themes/boot.d.ts +7 -0
- package/dist/themes/boot.d.ts.map +1 -0
- package/dist/themes/boot.js +14 -0
- package/dist/themes/boot.js.map +1 -0
- package/dist/themes/choice.d.ts +16 -0
- package/dist/themes/choice.d.ts.map +1 -0
- package/dist/themes/choice.js +45 -0
- package/dist/themes/choice.js.map +1 -0
- package/dist/themes/data.d.ts +42 -0
- package/dist/themes/data.d.ts.map +1 -0
- package/dist/themes/data.js +356 -0
- package/dist/themes/data.js.map +1 -0
- package/dist/themes/index.d.ts +5 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/dist/themes/index.js +8 -0
- package/dist/themes/index.js.map +1 -0
- package/dist/themes/sheet.d.ts +12 -0
- package/dist/themes/sheet.d.ts.map +1 -0
- package/dist/themes/sheet.js +24 -0
- package/dist/themes/sheet.js.map +1 -0
- package/dist/themes/tokens-list.d.ts +15 -0
- package/dist/themes/tokens-list.d.ts.map +1 -0
- package/dist/themes/tokens-list.js +62 -0
- package/dist/themes/tokens-list.js.map +1 -0
- package/dist/words/api-error.d.ts +4 -0
- package/dist/words/api-error.d.ts.map +1 -0
- package/dist/words/api-error.js +13 -0
- package/dist/words/api-error.js.map +1 -0
- package/dist/words/attempts.d.ts +17 -0
- package/dist/words/attempts.d.ts.map +1 -0
- package/dist/words/attempts.js +26 -0
- package/dist/words/attempts.js.map +1 -0
- package/dist/words/causes.d.ts +33 -0
- package/dist/words/causes.d.ts.map +1 -0
- package/dist/words/causes.js +58 -0
- package/dist/words/causes.js.map +1 -0
- package/dist/words/changes.d.ts +9 -0
- package/dist/words/changes.d.ts.map +1 -0
- package/dist/words/changes.js +21 -0
- package/dist/words/changes.js.map +1 -0
- package/dist/words/claims.d.ts +9 -0
- package/dist/words/claims.d.ts.map +1 -0
- package/dist/words/claims.js +12 -0
- package/dist/words/claims.js.map +1 -0
- package/dist/words/context.d.ts +18 -0
- package/dist/words/context.d.ts.map +1 -0
- package/dist/words/context.js +39 -0
- package/dist/words/context.js.map +1 -0
- package/dist/words/contract.d.ts +25 -0
- package/dist/words/contract.d.ts.map +1 -0
- package/dist/words/contract.js +52 -0
- package/dist/words/contract.js.map +1 -0
- package/dist/words/credential.d.ts +5 -0
- package/dist/words/credential.d.ts.map +1 -0
- package/dist/words/credential.js +7 -0
- package/dist/words/credential.js.map +1 -0
- package/dist/words/executor.d.ts +12 -0
- package/dist/words/executor.d.ts.map +1 -0
- package/dist/words/executor.js +20 -0
- package/dist/words/executor.js.map +1 -0
- package/dist/words/export.d.ts +8 -0
- package/dist/words/export.d.ts.map +1 -0
- package/dist/words/export.js +17 -0
- package/dist/words/export.js.map +1 -0
- package/dist/words/format.d.ts +36 -0
- package/dist/words/format.d.ts.map +1 -0
- package/dist/words/format.js +109 -0
- package/dist/words/format.js.map +1 -0
- package/dist/words/hops.d.ts +12 -0
- package/dist/words/hops.d.ts.map +1 -0
- package/dist/words/hops.js +27 -0
- package/dist/words/hops.js.map +1 -0
- package/dist/words/hosts.d.ts +18 -0
- package/dist/words/hosts.d.ts.map +1 -0
- package/dist/words/hosts.js +22 -0
- package/dist/words/hosts.js.map +1 -0
- package/dist/words/index.d.ts +27 -0
- package/dist/words/index.d.ts.map +1 -0
- package/dist/words/index.js +31 -0
- package/dist/words/index.js.map +1 -0
- package/dist/words/models.d.ts +10 -0
- package/dist/words/models.d.ts.map +1 -0
- package/dist/words/models.js +45 -0
- package/dist/words/models.js.map +1 -0
- package/dist/words/outcome.d.ts +14 -0
- package/dist/words/outcome.d.ts.map +1 -0
- package/dist/words/outcome.js +58 -0
- package/dist/words/outcome.js.map +1 -0
- package/dist/words/panels.d.ts +11 -0
- package/dist/words/panels.d.ts.map +1 -0
- package/dist/words/panels.js +50 -0
- package/dist/words/panels.js.map +1 -0
- package/dist/words/passes.d.ts +11 -0
- package/dist/words/passes.d.ts.map +1 -0
- package/dist/words/passes.js +13 -0
- package/dist/words/passes.js.map +1 -0
- package/dist/words/preflight.d.ts +28 -0
- package/dist/words/preflight.d.ts.map +1 -0
- package/dist/words/preflight.js +30 -0
- package/dist/words/preflight.js.map +1 -0
- package/dist/words/priority.d.ts +5 -0
- package/dist/words/priority.d.ts.map +1 -0
- package/dist/words/priority.js +7 -0
- package/dist/words/priority.js.map +1 -0
- package/dist/words/prompt.d.ts +10 -0
- package/dist/words/prompt.d.ts.map +1 -0
- package/dist/words/prompt.js +17 -0
- package/dist/words/prompt.js.map +1 -0
- package/dist/words/quota.d.ts +35 -0
- package/dist/words/quota.d.ts.map +1 -0
- package/dist/words/quota.js +102 -0
- package/dist/words/quota.js.map +1 -0
- package/dist/words/rests.d.ts +26 -0
- package/dist/words/rests.d.ts.map +1 -0
- package/dist/words/rests.js +77 -0
- package/dist/words/rests.js.map +1 -0
- package/dist/words/rounds.d.ts +14 -0
- package/dist/words/rounds.d.ts.map +1 -0
- package/dist/words/rounds.js +60 -0
- package/dist/words/rounds.js.map +1 -0
- package/dist/words/row-extras.d.ts +7 -0
- package/dist/words/row-extras.d.ts.map +1 -0
- package/dist/words/row-extras.js +26 -0
- package/dist/words/row-extras.js.map +1 -0
- package/dist/words/run-line.d.ts +40 -0
- package/dist/words/run-line.d.ts.map +1 -0
- package/dist/words/run-line.js +66 -0
- package/dist/words/run-line.js.map +1 -0
- package/dist/words/stop.d.ts +6 -0
- package/dist/words/stop.d.ts.map +1 -0
- package/dist/words/stop.js +69 -0
- package/dist/words/stop.js.map +1 -0
- package/dist/words/table.d.ts +4 -0
- package/dist/words/table.d.ts.map +1 -0
- package/dist/words/table.js +8 -0
- package/dist/words/table.js.map +1 -0
- package/dist/words/task-definition.d.ts +23 -0
- package/dist/words/task-definition.d.ts.map +1 -0
- package/dist/words/task-definition.js +27 -0
- package/dist/words/task-definition.js.map +1 -0
- package/dist/words/time-box.d.ts +8 -0
- package/dist/words/time-box.d.ts.map +1 -0
- package/dist/words/time-box.js +12 -0
- package/dist/words/time-box.js.map +1 -0
- package/dist/words/trends.d.ts +86 -0
- package/dist/words/trends.d.ts.map +1 -0
- package/dist/words/trends.js +104 -0
- package/dist/words/trends.js.map +1 -0
- package/dist/words/units.d.ts +9 -0
- package/dist/words/units.d.ts.map +1 -0
- package/dist/words/units.js +12 -0
- package/dist/words/units.js.map +1 -0
- package/docs/embed.md +118 -0
- package/docs/events.md +38 -0
- package/docs/examples/embed.html +31 -0
- package/docs/examples/journal.ts +32 -0
- package/docs/examples/live-transcript.ts +22 -0
- package/docs/examples/vite/index.html +30 -0
- package/docs/examples/vite/main.ts +23 -0
- package/docs/languages.md +48 -0
- package/docs/live-data.md +17 -0
- package/docs/theming.md +21 -0
- package/docs/tsconfig.json +14 -0
- package/package.json +131 -4
- package/src/adapters/check-rows.ts +78 -0
- package/src/adapters/filters.ts +76 -0
- package/src/adapters/graph/compound.ts +359 -0
- package/src/adapters/graph/flow-index.ts +154 -0
- package/src/adapters/graph/highlight.ts +40 -0
- package/src/adapters/graph/input.ts +236 -0
- package/src/adapters/graph/layer.ts +92 -0
- package/src/adapters/graph/matrix.ts +133 -0
- package/src/adapters/graph/plans.fixture.ts +194 -0
- package/src/adapters/graph/project.ts +358 -0
- package/src/adapters/graph/selection.ts +54 -0
- package/src/adapters/graph/states.ts +10 -0
- package/src/adapters/graph/types.ts +148 -0
- package/src/adapters/graph/words.ts +146 -0
- package/src/adapters/index.ts +22 -0
- package/src/adapters/journal-columns.ts +200 -0
- package/src/adapters/kpi-tiles.ts +211 -0
- package/src/adapters/lanes.ts +98 -0
- package/src/adapters/model-shares.ts +62 -0
- package/src/adapters/panel-body.ts +74 -0
- package/src/adapters/preflight.ts +27 -0
- package/src/adapters/task-columns.ts +120 -0
- package/src/adapters/transcript/index.ts +14 -0
- package/src/adapters/transcript/model.ts +156 -0
- package/src/adapters/transcript/rounds.ts +86 -0
- package/src/adapters/transcript/sections.ts +82 -0
- package/src/adapters/transcript/web.ts +40 -0
- package/src/adapters/transcript/who.ts +53 -0
- package/src/adapters/trends.ts +337 -0
- package/src/controllers/locale.ts +47 -0
- package/src/controllers/shortcuts.ts +69 -0
- package/src/controllers/stream.ts +103 -0
- package/src/controllers/task-detail.ts +54 -0
- package/src/controllers/theme.ts +73 -0
- package/src/core/events.ts +120 -0
- package/src/core/i18n.ts +76 -0
- package/src/core/index.ts +6 -0
- package/src/core/memory.ts +177 -0
- package/src/core/scroll.ts +73 -0
- package/src/core/view-route.ts +177 -0
- package/src/core/view-router.ts +66 -0
- package/src/define/all.ts +13 -0
- package/src/define/contracts.ts +2 -0
- package/src/define/definitions.ts +3 -0
- package/src/define/journal-table.ts +2 -0
- package/src/define/kpis.ts +2 -0
- package/src/define/monitor.ts +2 -0
- package/src/define/overview.ts +2 -0
- package/src/define/pipeline-graph.ts +2 -0
- package/src/define/procs.ts +3 -0
- package/src/define/task-table.ts +2 -0
- package/src/define/task-view.ts +2 -0
- package/src/define/timeline.ts +2 -0
- package/src/define/transcript.ts +2 -0
- package/src/elements/lists/ca-contracts.ts +204 -0
- package/src/elements/lists/ca-definitions.ts +170 -0
- package/src/elements/lists/ca-journal-table.ts +141 -0
- package/src/elements/lists/ca-panel-body.ts +139 -0
- package/src/elements/lists/ca-panel-view.ts +50 -0
- package/src/elements/lists/ca-proc-tree.ts +57 -0
- package/src/elements/lists/ca-procs-view.ts +89 -0
- package/src/elements/lists/ca-task-table.ts +94 -0
- package/src/elements/lists/index.ts +8 -0
- package/src/elements/overview/ca-kpis.ts +51 -0
- package/src/elements/overview/ca-model-usage.ts +113 -0
- package/src/elements/overview/ca-overview.ts +492 -0
- package/src/elements/overview/ca-pipeline-graph.ts +617 -0
- package/src/elements/overview/ca-quota.ts +164 -0
- package/src/elements/overview/ca-run-driver.ts +140 -0
- package/src/elements/overview/ca-spend-breakdown.ts +107 -0
- package/src/elements/overview/ca-timeline.ts +57 -0
- package/src/elements/overview/ca-workers.ts +82 -0
- package/src/elements/overview/index.ts +9 -0
- package/src/elements/overview/pipeline-graph/actions.ts +45 -0
- package/src/elements/overview/pipeline-graph/crumbs.ts +75 -0
- package/src/elements/overview/pipeline-graph/host.ts +26 -0
- package/src/elements/overview/pipeline-graph/inspector.ts +104 -0
- package/src/elements/overview/pipeline-graph/outline.ts +150 -0
- package/src/elements/overview/pipeline-graph/strings.ts +53 -0
- package/src/elements/overview/pipeline-graph/styles.ts +97 -0
- package/src/elements/shared/ca-definition.ts +206 -0
- package/src/elements/shared/contract-parts.ts +158 -0
- package/src/elements/shared/file-card.ts +49 -0
- package/src/elements/shared/prompt-text.ts +13 -0
- package/src/elements/shared/task-chip.ts +18 -0
- package/src/elements/shell/ca-clock.ts +27 -0
- package/src/elements/shell/ca-hosts.ts +93 -0
- package/src/elements/shell/ca-monitor.ts +526 -0
- package/src/elements/shell/ca-run-picker.ts +284 -0
- package/src/elements/shell/ca-theme-switch.ts +170 -0
- package/src/elements/shell/ca-toasts.ts +100 -0
- package/src/elements/shell/header.ts +45 -0
- package/src/elements/shell/styles.ts +72 -0
- package/src/elements/shell/tabs.ts +143 -0
- package/src/elements/shell/views.ts +67 -0
- package/src/elements/task/ca-task-view.ts +157 -0
- package/src/elements/task/ca-transcript.ts +214 -0
- package/src/elements/task/context.ts +105 -0
- package/src/elements/task/header.ts +292 -0
- package/src/elements/task/index.ts +2 -0
- package/src/elements/task/inputs.ts +46 -0
- package/src/elements/task/panes/definition.ts +7 -0
- package/src/elements/task/panes/io.ts +190 -0
- package/src/elements/task/panes/transcript.ts +29 -0
- package/src/elements/task/styles.ts +66 -0
- package/src/elements/trends/ca-trends.ts +204 -0
- package/src/index.ts +23 -0
- package/src/lib/tone.ts +109 -0
- package/src/lib/trends.ts +44 -0
- package/src/locales/codes.ts +23 -0
- package/src/locales/ja.ts +771 -0
- package/src/words/api-error.ts +17 -0
- package/src/words/attempts.ts +28 -0
- package/src/words/causes.ts +67 -0
- package/src/words/changes.ts +27 -0
- package/src/words/claims.ts +16 -0
- package/src/words/context.ts +47 -0
- package/src/words/contract.ts +63 -0
- package/src/words/credential.ts +8 -0
- package/src/words/executor.ts +22 -0
- package/src/words/export.ts +22 -0
- package/src/words/format.ts +107 -0
- package/src/words/hops.ts +30 -0
- package/src/words/hosts.ts +37 -0
- package/src/words/index.ts +30 -0
- package/src/words/models.ts +50 -0
- package/src/words/outcome.ts +61 -0
- package/src/words/panels.ts +53 -0
- package/src/words/passes.ts +18 -0
- package/src/words/preflight.ts +53 -0
- package/src/words/priority.ts +8 -0
- package/src/words/prompt.ts +20 -0
- package/src/words/quota.ts +108 -0
- package/src/words/rests.ts +96 -0
- package/src/words/rounds.ts +56 -0
- package/src/words/row-extras.ts +24 -0
- package/src/words/run-line.ts +77 -0
- package/src/words/stop.ts +65 -0
- package/src/words/table.ts +10 -0
- package/src/words/task-definition.ts +37 -0
- package/src/words/time-box.ts +21 -0
- package/src/words/trends.ts +118 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// The timeline (`ca-timeline`) as the lanes of `<cae-lanes>`: every attempt as
|
|
2
|
+
// a bar as long as it took, on its kind's lane, the running ones growing until
|
|
3
|
+
// now. Pure.
|
|
4
|
+
import { isLaunched, isPython, runRelative, type JournalRow, type TaskOutcome } from '@contraagent/api';
|
|
5
|
+
import type { Lane, LaneBar, LaneStyle } from '@contraagent/elements/lanes';
|
|
6
|
+
import { msg, str } from '@lit/localize';
|
|
7
|
+
import { getLocale } from '../core/i18n.js';
|
|
8
|
+
import { facts, fmtDur, kindUnit } from '../words/format.js';
|
|
9
|
+
import { modelSwitch, notStartedCause, stopLabel } from '../words/index.js';
|
|
10
|
+
|
|
11
|
+
/** Finished tasks older than this before the newest are left out. */
|
|
12
|
+
export const TIMELINE_WINDOW_MS = 6 * 3600e3;
|
|
13
|
+
|
|
14
|
+
/** Something running now, as the timeline draws it. */
|
|
15
|
+
export interface LiveBar {
|
|
16
|
+
kind: string;
|
|
17
|
+
cls: 'llm' | 'py';
|
|
18
|
+
/** Epoch ms it started. */
|
|
19
|
+
t0: number;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** A bar's look: `py`, `llm`, `bad` (ran and failed), `idle` (a task that never started), `run` (running). */
|
|
23
|
+
export type LaneStyleKey = 'py' | 'llm' | 'bad' | 'idle' | 'run';
|
|
24
|
+
|
|
25
|
+
export interface TimelineLanes {
|
|
26
|
+
lanes: Lane[];
|
|
27
|
+
/** Finished tasks left out of the window. */
|
|
28
|
+
omitted: number;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const hhmmss = (t: number) => new Date(t).toLocaleTimeString(getLocale(), { hour: '2-digit', minute: '2-digit', second: '2-digit', hourCycle: 'h23' });
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The bars' looks and the legend: who ran it is an identity cue (Python
|
|
35
|
+
* neutral, an agent violet), on the first row; failed and running are
|
|
36
|
+
* statuses, each with a pattern besides the colour, on the second.
|
|
37
|
+
*/
|
|
38
|
+
export function laneStyles(): Record<LaneStyleKey, LaneStyle> {
|
|
39
|
+
return {
|
|
40
|
+
py: { label: msg('Python task'), color: 'var(--meter)' },
|
|
41
|
+
llm: { label: msg('Agent task'), color: 'var(--agent)' },
|
|
42
|
+
run: { label: msg('running'), color: 'var(--status-running)', pattern: 'striped', group: 1 },
|
|
43
|
+
bad: { label: msg('failed'), color: 'var(--status-failed)', pattern: 'hatched', group: 1 },
|
|
44
|
+
idle: { label: msg('not started'), color: 'var(--line2)', pattern: 'outline', group: 1 },
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** A finished row's tooltip, one item per line: its name, how it ended, its time, its model, why it failed. */
|
|
49
|
+
function rowLabel(e: JournalRow, end: number, outcomes: ReadonlyMap<string, TaskOutcome>, run: string): string {
|
|
50
|
+
// A task that never ran: its name and why, and no time, end or model.
|
|
51
|
+
if (!isLaunched(e)) {
|
|
52
|
+
const t = outcomes.get(e.key);
|
|
53
|
+
const cause = e.stop === 'invalid_input' && t ? notStartedCause(t, outcomes, run) : '';
|
|
54
|
+
return [kindUnit(e), cause ? msg(str`Not started: ${cause}`) : stopLabel(e.stop, e.reason), e.key].join('\n');
|
|
55
|
+
}
|
|
56
|
+
const sw = modelSwitch(e.hops, null, e.skipped_hops);
|
|
57
|
+
const reason = e.reason && !e.ok ? runRelative(e.reason, run) : '';
|
|
58
|
+
// One item per line: a task's name holds a `·` of its own.
|
|
59
|
+
return [
|
|
60
|
+
kindUnit(e),
|
|
61
|
+
facts(stopLabel(e.stop), fmtDur(e.wall_s), msg(str`ended ${hhmmss(end)}`)),
|
|
62
|
+
sw ? msg(str`Model switch: ${sw}`) : e.model ? msg(str`Model ${e.model}`) : '',
|
|
63
|
+
reason,
|
|
64
|
+
e.key,
|
|
65
|
+
]
|
|
66
|
+
.filter(Boolean)
|
|
67
|
+
.join('\n');
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Every finished task as a bar on its kind's lane, in order of first start,
|
|
72
|
+
* and the running ones (`end` null); finished tasks that ended more than six
|
|
73
|
+
* hours before the newest are left out. Null when there is nothing to draw.
|
|
74
|
+
*/
|
|
75
|
+
export function lanesFromJournal(
|
|
76
|
+
journal: readonly JournalRow[],
|
|
77
|
+
live: readonly LiveBar[],
|
|
78
|
+
outcomes: ReadonlyMap<string, TaskOutcome>,
|
|
79
|
+
run: string,
|
|
80
|
+
): TimelineLanes | null {
|
|
81
|
+
/** Each finished row's bar, on its lane. */
|
|
82
|
+
const bars: { lane: string; bar: LaneBar & { end: number } }[] = [];
|
|
83
|
+
journal.forEach((e, i) => {
|
|
84
|
+
if (!e.ts) return;
|
|
85
|
+
const end = Date.parse(e.ts);
|
|
86
|
+
if (Number.isNaN(end)) return;
|
|
87
|
+
const style: LaneStyleKey = !isLaunched(e) ? 'idle' : !e.ok ? 'bad' : isPython(e) ? 'py' : 'llm';
|
|
88
|
+
bars.push({ lane: e.kind || '?', bar: { id: `j${i}`, style, start: end - (e.wall_s || 0) * 1000, end, label: rowLabel(e, end, outcomes, run) } });
|
|
89
|
+
});
|
|
90
|
+
if (!bars.length && !live.length) return null;
|
|
91
|
+
const newest = Math.max(...bars.map((x) => x.bar.end), ...live.map((a) => a.t0));
|
|
92
|
+
const vis: { lane: string; bar: LaneBar }[] = bars.filter((x) => x.bar.end >= newest - TIMELINE_WINDOW_MS);
|
|
93
|
+
const omitted = bars.length - vis.length;
|
|
94
|
+
live.forEach((a, i) => vis.push({ lane: a.kind, bar: { id: `live${i}`, style: 'run', start: a.t0, end: null, label: `${a.kind}\n${msg('running')}` } }));
|
|
95
|
+
const lanes = new Map<string, LaneBar[]>();
|
|
96
|
+
for (const { lane, bar } of [...vis].sort((a, b) => a.bar.start - b.bar.start)) (lanes.get(lane) ?? lanes.set(lane, []).get(lane)!).push(bar);
|
|
97
|
+
return { lanes: [...lanes].map(([name, bs]) => ({ id: name, label: name, bars: bs })), omitted };
|
|
98
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// A run's models (`Plan.models`) → the share bar's parts and the rows of the table
|
|
2
|
+
// beside it, for one measure (cost, tokens, time, agent sessions).
|
|
3
|
+
import { modelValue, type ModelMeasure, type ModelUsage } from '@contraagent/api';
|
|
4
|
+
import { wholePercents, sharePercent, type SharePart } from '@contraagent/elements/primitives';
|
|
5
|
+
import { measureText, otherModels } from '../words/models.js';
|
|
6
|
+
|
|
7
|
+
/** The series colours (`--series-1` ...), in their order. */
|
|
8
|
+
export const SERIES_COLOURS = 6;
|
|
9
|
+
|
|
10
|
+
/** The colour the models past the series colours share. */
|
|
11
|
+
export const OTHER_COLOUR = 'var(--meter)';
|
|
12
|
+
|
|
13
|
+
/** A model's identity: its coding agent and its name. */
|
|
14
|
+
export const modelId = (m: Pick<ModelUsage, 'agent' | 'model'>): string => `${m.agent}/${m.model}`;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Each model's colour, by the order of first use (the order of `models`): the first
|
|
18
|
+
* six take the series colours; with more than six, the sixth and later share the
|
|
19
|
+
* colour of "other models". A model keeps its colour whatever the measure, and
|
|
20
|
+
* whatever its rank.
|
|
21
|
+
*/
|
|
22
|
+
export function modelColours(models: readonly ModelUsage[]): Map<string, string> {
|
|
23
|
+
const own = models.length > SERIES_COLOURS ? SERIES_COLOURS - 1 : SERIES_COLOURS;
|
|
24
|
+
return new Map(models.map((m, i) => [modelId(m), i < own ? `var(--series-${i + 1})` : OTHER_COLOUR]));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** The share bar's parts for `measure`: one per model with a colour of its own, the rest folded into one. */
|
|
28
|
+
export function shareParts(models: readonly ModelUsage[], measure: ModelMeasure): SharePart[] {
|
|
29
|
+
const colours = modelColours(models);
|
|
30
|
+
const parts: SharePart[] = [];
|
|
31
|
+
let other = 0;
|
|
32
|
+
for (const m of models) {
|
|
33
|
+
const value = modelValue(m, measure) ?? 0;
|
|
34
|
+
const colour = colours.get(modelId(m))!;
|
|
35
|
+
if (colour === OTHER_COLOUR) other += value;
|
|
36
|
+
else parts.push({ id: modelId(m), label: m.model, value, color: colour, text: measureText(m, measure) });
|
|
37
|
+
}
|
|
38
|
+
if (models.length > SERIES_COLOURS) parts.push({ id: 'other', label: otherModels(), value: other, color: OTHER_COLOUR });
|
|
39
|
+
return parts;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export interface ModelRow {
|
|
43
|
+
id: string;
|
|
44
|
+
usage: ModelUsage;
|
|
45
|
+
colour: string;
|
|
46
|
+
/** The model's share of `measure` in words (`42%`, `<1%`); '—' when nothing was measured. */
|
|
47
|
+
share: string;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** One row per model, in the order of first use, with its share of `measure`. */
|
|
51
|
+
export function modelRows(models: readonly ModelUsage[], measure: ModelMeasure): ModelRow[] {
|
|
52
|
+
const colours = modelColours(models);
|
|
53
|
+
const values = models.map((m) => modelValue(m, measure) ?? 0);
|
|
54
|
+
const pcts = wholePercents(values);
|
|
55
|
+
const measured = values.some((v) => v > 0);
|
|
56
|
+
return models.map((m, i) => ({
|
|
57
|
+
id: modelId(m),
|
|
58
|
+
usage: m,
|
|
59
|
+
colour: colours.get(modelId(m))!,
|
|
60
|
+
share: measured ? sharePercent(pcts[i]!, values[i]!) : '—',
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// A pipeline's own view (`monitor.Panel`) → what the generic elements take: a table
|
|
2
|
+
// body's columns and rows for `<cae-data-table>`, its tiles for `<cae-stat-tiles>`.
|
|
3
|
+
import type { PanelTile, TableBody, TableColumn } from '@contraagent/api';
|
|
4
|
+
import type { DataColumn } from '@contraagent/elements/data-table';
|
|
5
|
+
import type { StatTile } from '@contraagent/elements/tiles';
|
|
6
|
+
import type { Tone } from '@contraagent/elements';
|
|
7
|
+
import { html } from 'lit';
|
|
8
|
+
import { cellText } from '../words/panels.js';
|
|
9
|
+
|
|
10
|
+
/** A row of a table body: a value per column id, and its status (`_tone`). */
|
|
11
|
+
export type BodyRow = Readonly<Record<string, unknown>> & { _tone?: Tone | null };
|
|
12
|
+
|
|
13
|
+
const TONES: readonly string[] = ['failed', 'attention', 'done', 'running', 'muted', 'neutral'];
|
|
14
|
+
|
|
15
|
+
/** A row's status, when it names one the monitor knows. */
|
|
16
|
+
export const rowTone = (r: BodyRow): Tone | undefined => (typeof r._tone === 'string' && TONES.includes(r._tone) ? r._tone : undefined);
|
|
17
|
+
|
|
18
|
+
/** The formats of numbers: their columns are right-aligned. */
|
|
19
|
+
const NUMERIC = new Set(['usd', 'pct', 'duration', 'tokens', 'number']);
|
|
20
|
+
|
|
21
|
+
/** A cell as the text it is ordered by. */
|
|
22
|
+
const cellKey = (v: unknown): string => (typeof v === 'string' ? v : JSON.stringify(v));
|
|
23
|
+
|
|
24
|
+
/** The order of two cells: numbers by value, then text; empty cells last. */
|
|
25
|
+
function compareCells(a: unknown, b: unknown): number {
|
|
26
|
+
const empty = (v: unknown) => v === null || v === undefined || v === '';
|
|
27
|
+
if (empty(a) || empty(b)) return empty(a) === empty(b) ? 0 : empty(a) ? 1 : -1;
|
|
28
|
+
if (typeof a === 'number' && typeof b === 'number') return a - b;
|
|
29
|
+
return cellKey(a).localeCompare(cellKey(b));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** `v` as a URL a cell may lead to: http or https only; null for anything else. */
|
|
33
|
+
export function cellUrl(v: unknown): string | null {
|
|
34
|
+
if (typeof v !== 'string' || !/^https?:\/\//i.test(v.trim())) return null;
|
|
35
|
+
try {
|
|
36
|
+
const u = new URL(v.trim());
|
|
37
|
+
return u.protocol === 'http:' || u.protocol === 'https:' ? u.href : null;
|
|
38
|
+
} catch {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The columns of a table body: each cell written by its column's format, a number
|
|
45
|
+
* right-aligned, a `bar` column with a bar, a `link` column a link to its row's URL.
|
|
46
|
+
*/
|
|
47
|
+
export function bodyColumns(body: TableBody): DataColumn<BodyRow>[] {
|
|
48
|
+
return body.columns.map((c: TableColumn, i): DataColumn<BodyRow> => {
|
|
49
|
+
const numeric = c.format ? NUMERIC.has(c.format) : body.rows.some((r) => typeof (r as BodyRow)[c.id] === 'number');
|
|
50
|
+
const top = c.bar ? Math.max(0, ...body.rows.map((r) => Number((r as BodyRow)[c.id]) || 0)) : 0;
|
|
51
|
+
return {
|
|
52
|
+
id: c.id,
|
|
53
|
+
header: c.label,
|
|
54
|
+
tip: c.tip ?? undefined,
|
|
55
|
+
align: c.align ?? (numeric ? 'end' : 'start'),
|
|
56
|
+
rowHeader: i === 0,
|
|
57
|
+
compare: (a, b) => compareCells(a[c.id], b[c.id]),
|
|
58
|
+
text: (r) => cellText(r[c.id], c.format),
|
|
59
|
+
cell: (r) => {
|
|
60
|
+
const v = r[c.id];
|
|
61
|
+
const text = cellText(v, c.format);
|
|
62
|
+
const url = c.link ? cellUrl(r[c.link]) : null;
|
|
63
|
+
if (url) return html`<a href=${url} target="_blank" rel="noopener noreferrer">${text}</a>`;
|
|
64
|
+
if (!c.bar || typeof v !== 'number') return text;
|
|
65
|
+
// A measure, not a verdict: the bar stays neutral; the row's tone marks its status.
|
|
66
|
+
return html`${text}<span class="jdur" aria-hidden="true"><i style="width: ${top > 0 ? (100 * Math.max(0, v)) / top : 0}%"></i></span>`;
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** A body's tiles as `<cae-stat-tiles>` takes them. */
|
|
73
|
+
export const bodyTiles = (tiles: readonly PanelTile[]): StatTile[] =>
|
|
74
|
+
tiles.map((t) => ({ id: t.id, label: t.label, value: t.value, tone: t.tone ?? undefined, tip: t.tip ?? undefined, sub: t.sub ?? [] }));
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// The run's preflight (`Plan.preflight`) → the rows the run's card lists: the kinds
|
|
2
|
+
// with no available model first (the run's cause when it ended before its first
|
|
3
|
+
// agent session), then the replaced models, then each unavailable model.
|
|
4
|
+
import type { PreflightRecord } from '@contraagent/api';
|
|
5
|
+
import type { Tone } from '../lib/tone.js';
|
|
6
|
+
import { facts } from '../words/format.js';
|
|
7
|
+
import { allAvailable, keptTip, noModelLabel, replacedLabel, replacedText, replacedTip, routeName, unavailableLabel, unavailableText } from '../words/preflight.js';
|
|
8
|
+
|
|
9
|
+
export interface PreflightRow {
|
|
10
|
+
label: string;
|
|
11
|
+
text: string;
|
|
12
|
+
tone: Tone;
|
|
13
|
+
/** What the label means; '' for none. */
|
|
14
|
+
tip: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/** The rows of a preflight; none for no preflight or one with policy `off` (no model was sent a request). */
|
|
18
|
+
export function preflightRows(p: PreflightRecord | null | undefined): PreflightRow[] {
|
|
19
|
+
if (!p || p.policy === 'off') return [];
|
|
20
|
+
const rows: PreflightRow[] = [
|
|
21
|
+
...(p.stopped ?? []).map((kind): PreflightRow => ({ label: noModelLabel(), text: kind, tone: 'failed', tip: '' })),
|
|
22
|
+
...(p.kept ?? []).map((k): PreflightRow => ({ label: noModelLabel(), text: facts(k.kind, routeName(k.agent, k.model), k.reason), tone: 'attention', tip: keptTip() })),
|
|
23
|
+
...(p.substituted ?? []).map((s): PreflightRow => ({ label: replacedLabel(), text: replacedText(s), tone: 'attention', tip: replacedTip() })),
|
|
24
|
+
...(p.dropped ?? []).map((d): PreflightRow => ({ label: unavailableLabel(), text: unavailableText(d), tone: 'muted', tip: '' })),
|
|
25
|
+
];
|
|
26
|
+
return rows.length ? rows : [{ label: '', text: allAvailable(), tone: 'neutral', tip: '' }];
|
|
27
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
// The tasks list's columns (`ca-task-table`): a row per task of the run
|
|
2
|
+
// (`TaskRow`), its attempts, time, tokens, cost and status.
|
|
3
|
+
import { addRow, emptySpend, isPython, runRelative, type JournalRow, type Spend, type TaskOutcome, type TaskRow } from '@contraagent/api';
|
|
4
|
+
import type { DataColumn } from '@contraagent/elements/data-table';
|
|
5
|
+
import { pill } from '@contraagent/elements/primitives';
|
|
6
|
+
import { msg, str } from '@lit/localize';
|
|
7
|
+
import { html, nothing } from 'lit';
|
|
8
|
+
import { outcomeMark, outcomeTone } from '../lib/tone.js';
|
|
9
|
+
import { executorIcon } from '../words/executor.js';
|
|
10
|
+
import { facts, fmtDur, localTime, tokenCount, usd } from '../words/format.js';
|
|
11
|
+
import { deferredText, deferredTip, notStartedCause, locksNames, locksShort, passLabel, priorityText, priorityTip, taskStatusLabel, waitCause } from '../words/index.js';
|
|
12
|
+
|
|
13
|
+
export interface TaskColumnsContext {
|
|
14
|
+
/** The run id: paths in a cause are shown relative to it. */
|
|
15
|
+
run: string;
|
|
16
|
+
/** The run is running: a task that has not started is waiting; in a run that is over, it did not run. */
|
|
17
|
+
live: boolean;
|
|
18
|
+
/** What happened to each task of the run (`deriveRun(...).outcomes`). */
|
|
19
|
+
outcomes: ReadonlyMap<string, TaskOutcome>;
|
|
20
|
+
/** Every task of the run, filtered or not: a kind and unit with more than one task names each one's pass. */
|
|
21
|
+
all: readonly TaskRow[];
|
|
22
|
+
/** The rows shown: the time bars are relative to their longest. */
|
|
23
|
+
rows: readonly TaskRow[];
|
|
24
|
+
/** The run's journal: tokens and cost per task, over all its attempts. */
|
|
25
|
+
journal: readonly JournalRow[];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const none = () => msg('none', { id: 'none', desc: 'An empty value' });
|
|
29
|
+
|
|
30
|
+
/** Why a task that never ran did not run (what stopped it, or the earlier tasks it waits for), or why a task was partly done; '' when unknown. */
|
|
31
|
+
function cause(t: TaskRow, ctx: TaskColumnsContext): string {
|
|
32
|
+
if (t.outcome === 'not_started') return notStartedCause(t, ctx.outcomes, ctx.run);
|
|
33
|
+
if (t.outcome === 'partial') return runRelative(t.attempts[t.attempts.length - 1]?.reason ?? '', ctx.run);
|
|
34
|
+
if (t.outcome === 'waiting' && t.deferred) return deferredText(t.deferredCause, t.deferred, t.deferredIn);
|
|
35
|
+
if (t.outcome === 'waiting') return waitCause(t.waits_for.map((k) => ctx.outcomes.get(k) ?? { kind: k }));
|
|
36
|
+
return '';
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** The columns of the tasks list. */
|
|
40
|
+
export function taskColumns(ctx: TaskColumnsContext): DataColumn<TaskRow>[] {
|
|
41
|
+
// A kind and unit with more than one task (a loop's passes): each row names its pass.
|
|
42
|
+
const per = new Map<string, number>();
|
|
43
|
+
for (const t of ctx.all) per.set(`${t.kind}|${t.unit}`, (per.get(`${t.kind}|${t.unit}`) ?? 0) + 1);
|
|
44
|
+
const maxWall = Math.max(1, ...ctx.rows.map((t) => t.wall_s));
|
|
45
|
+
const spend = new Map<string, Spend>();
|
|
46
|
+
for (const r of ctx.journal) addRow(spend.get(r.key) ?? spend.set(r.key, emptySpend()).get(r.key)!, r);
|
|
47
|
+
// A task that has not run (refused, skipped, waiting) has no attempts and no time.
|
|
48
|
+
const ran = (t: TaskRow) => t.tries.length > 0;
|
|
49
|
+
// Tokens and cost: 'none' for a task that never ran, '—' for one that reported none (a Python task).
|
|
50
|
+
const spent = (t: TaskRow, show: (s: Spend) => unknown) => {
|
|
51
|
+
if (!ran(t)) return html`<span class="jdim">${none()}</span>`;
|
|
52
|
+
const s = spend.get(t.key);
|
|
53
|
+
return s?.reported ? show(s) : html`<span class="jdim">—</span>`;
|
|
54
|
+
};
|
|
55
|
+
return [
|
|
56
|
+
{
|
|
57
|
+
id: 'task',
|
|
58
|
+
header: msg('Task'),
|
|
59
|
+
tip: msg('Kind · unit'),
|
|
60
|
+
width: 'minmax(220px, 0.6fr)',
|
|
61
|
+
rowHeader: true,
|
|
62
|
+
text: (t) => t.key,
|
|
63
|
+
cell: (t) => {
|
|
64
|
+
const py = isPython(t);
|
|
65
|
+
const pass = t.pass !== null && (per.get(`${t.kind}|${t.unit}`) ?? 0) > 1 ? t.pass : null;
|
|
66
|
+
return html`<span class="grow jmono" title=${t.key}>
|
|
67
|
+
${executorIcon(py, py ? msg('Python task') : msg('Agent task'))}${t.kind}
|
|
68
|
+
${t.unit ? html`<span class="jdim">· ${t.unit}</span>` : nothing}${pass !== null ? html`<span class="pass">${passLabel(pass)}</span>` : nothing}
|
|
69
|
+
${t.claims?.length ? html`<span class="jdim also" title=${locksNames(t.claims)}>${locksShort(t.claims)}</span>` : nothing}
|
|
70
|
+
${t.priority ? html`<span class="jdim also" title=${priorityTip()}>${priorityText(t.priority)}</span>` : nothing}
|
|
71
|
+
</span>`;
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
{ id: 'attempts', header: msg('Attempts'), tip: msg('Attempts that ran'), align: 'end', width: '64px', cell: (t) => t.tries.length },
|
|
75
|
+
{
|
|
76
|
+
id: 'time',
|
|
77
|
+
header: msg('Time'),
|
|
78
|
+
tip: msg('Summed over all attempts'),
|
|
79
|
+
align: 'end',
|
|
80
|
+
width: '132px',
|
|
81
|
+
cell: (t) =>
|
|
82
|
+
html`<span class="wall">${ran(t)
|
|
83
|
+
? html`${fmtDur(t.wall_s)}<span class="jdur"><i class=${isPython(t) ? '' : 'llm'}
|
|
84
|
+
style="width:${Math.max(4, Math.round((100 * t.wall_s) / maxWall))}%"></i></span>`
|
|
85
|
+
: html`<span class="jdim">${none()}</span><span class="jdur" style="visibility:hidden"></span>`}</span>`,
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
id: 'tokens',
|
|
89
|
+
header: msg('Tokens'),
|
|
90
|
+
tip: msg('Input and output, summed over all attempts'),
|
|
91
|
+
align: 'end',
|
|
92
|
+
width: '72px',
|
|
93
|
+
cell: (t) =>
|
|
94
|
+
spent(t, (s) => {
|
|
95
|
+
const cache = facts(msg(str`Cache read ${tokenCount(s.cache_read)}`), msg(str`Cache write ${tokenCount(s.cache_creation)}`));
|
|
96
|
+
return html`<span title=${cache}>${tokenCount(s.input + s.output)}</span>`;
|
|
97
|
+
}),
|
|
98
|
+
},
|
|
99
|
+
{ id: 'cost', header: msg('Cost'), tip: msg('Reported by the coding agent'), align: 'end', width: '72px', cell: (t) => spent(t, (s) => usd(s.cost)) },
|
|
100
|
+
{
|
|
101
|
+
id: 'ended',
|
|
102
|
+
header: msg('Last attempt ended'),
|
|
103
|
+
align: 'end',
|
|
104
|
+
width: '128px',
|
|
105
|
+
cell: (t) => html`<span class="meta">${ran(t) ? localTime(t.tries[t.tries.length - 1]?.ts, true) : none()}</span>`,
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
id: 'status',
|
|
109
|
+
header: msg('Status', { id: 'status', desc: 'The status of a task: done, failed, not started' }),
|
|
110
|
+
width: 'minmax(240px, 1fr)',
|
|
111
|
+
cell: (t) => {
|
|
112
|
+
const why = cause(t, ctx);
|
|
113
|
+
const tip = t.outcome === 'waiting' && t.deferred ? deferredTip(t.deferredCause) || t.deferred : '';
|
|
114
|
+
return html`${pill({ text: taskStatusLabel(t.outcome, ctx.live && !t.deferred), tone: outcomeTone(t.outcome), mark: outcomeMark(t.outcome), title: t.last_stop })}${why
|
|
115
|
+
? html`<span class="cause" title=${tip || nothing}>${why}</span>`
|
|
116
|
+
: nothing}`;
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
];
|
|
120
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// A task's transcript: its events folded into rounds (`applyTranscriptEvents`),
|
|
2
|
+
// the rounds as the reader counts them, and the sections `<cae-transcript>` shows.
|
|
3
|
+
export { agentLabel, launchWho, whoTags, type Who } from './who.js';
|
|
4
|
+
export {
|
|
5
|
+
applyEvents as applyTranscriptEvents,
|
|
6
|
+
emptyTranscript,
|
|
7
|
+
type Item as TranscriptItem,
|
|
8
|
+
type Round as TranscriptRound,
|
|
9
|
+
type ToolItem as TranscriptToolItem,
|
|
10
|
+
type Transcript,
|
|
11
|
+
} from './model.js';
|
|
12
|
+
export { checkMessage, checkName, classifyRounds, fixupErrors, isFixup } from './rounds.js';
|
|
13
|
+
export { webResults, type WebResult } from './web.js';
|
|
14
|
+
export { transcriptSections, type SectionsContext } from './sections.js';
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
// A transcript as the reader sees it: one round per launch, each a list of
|
|
2
|
+
// items (chat bubbles, tool cards, notices). Pure: no DOM. The model is
|
|
3
|
+
// mutated in place as pages of events arrive (`StreamController`);
|
|
4
|
+
// `transcriptSections` turns it into what `<cae-transcript>` shows.
|
|
5
|
+
import { knownEvent, type LaunchEvent, type TranscriptEvent } from '@contraagent/api';
|
|
6
|
+
import type { ToolCard, TranscriptItem } from '@contraagent/elements/transcript';
|
|
7
|
+
import { firstLine } from '../../words/format.js';
|
|
8
|
+
import { webResults } from './web.js';
|
|
9
|
+
import { launchWho, type Who } from './who.js';
|
|
10
|
+
|
|
11
|
+
/** One tool call: the card that opens on its start and receives its result. */
|
|
12
|
+
export interface ToolItem extends ToolCard {
|
|
13
|
+
/** The call id pairing start and end; '' when the agent sent none. */
|
|
14
|
+
call: string;
|
|
15
|
+
/** The tool's short name (`bash`, `read`, ...). */
|
|
16
|
+
icon: string;
|
|
17
|
+
intent: string;
|
|
18
|
+
/** The command shown in the card's body. */
|
|
19
|
+
body: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* What a round shows, as `<cae-transcript>` takes it: the prompt the launch
|
|
24
|
+
* assembled as the agent echoed it, assistant prose accumulated from its deltas
|
|
25
|
+
* (`message`), a turn's closing thinking (`reasoning`), an API request the
|
|
26
|
+
* coding agent sent again (`auto_retry_start`, an `event` whose `text` is the
|
|
27
|
+
* error it got; its title is the reader's word, `transcriptSections`), a
|
|
28
|
+
* notice, a tool call.
|
|
29
|
+
*/
|
|
30
|
+
export type Item = Exclude<TranscriptItem, ToolCard> | ToolItem;
|
|
31
|
+
|
|
32
|
+
export interface Round {
|
|
33
|
+
id: string;
|
|
34
|
+
/** The launch event that opened it; null for events that came before any launch. */
|
|
35
|
+
launch: LaunchEvent | null;
|
|
36
|
+
who: Who | null;
|
|
37
|
+
items: Item[];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface Transcript {
|
|
41
|
+
rounds: Round[];
|
|
42
|
+
/** Tool cards by call id. omp reports one call in several event styles, sometimes twice: they all land in one card. */
|
|
43
|
+
tools: Map<string, ToolItem>;
|
|
44
|
+
next: number;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export const emptyTranscript = (): Transcript => ({ rounds: [], tools: new Map(), next: 0 });
|
|
48
|
+
|
|
49
|
+
const SESSION_MODEL = /session init:.*?model=([\w.\-:]+)/;
|
|
50
|
+
|
|
51
|
+
function newId(t: Transcript): string {
|
|
52
|
+
return `i${t.next++}`;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function addRound(t: Transcript, launch: LaunchEvent | null): Round {
|
|
56
|
+
const r: Round = { id: `r${t.rounds.length}`, launch, who: launch ? launchWho(launch) : null, items: [] };
|
|
57
|
+
t.rounds.push(r);
|
|
58
|
+
return r;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function currentRound(t: Transcript): Round {
|
|
62
|
+
return t.rounds[t.rounds.length - 1] ?? addRound(t, null);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function setToolName(card: ToolItem, name: string | null | undefined): void {
|
|
66
|
+
if (name) card.name = name;
|
|
67
|
+
else if (!card.name) card.name = 'tool';
|
|
68
|
+
card.icon = (card.name.split(/[_:]/).pop() ?? '').toLowerCase();
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function cardFor(t: Transcript, round: Round, call: string): ToolItem {
|
|
72
|
+
let c = call ? t.tools.get(call) : undefined;
|
|
73
|
+
if (!c) {
|
|
74
|
+
c = { type: 'tool', id: call ? `call:${call}` : newId(t), call, name: '', icon: '', summary: '', intent: '', body: '', output: null, status: 'running' };
|
|
75
|
+
if (call) t.tools.set(call, c);
|
|
76
|
+
round.items.push(c);
|
|
77
|
+
}
|
|
78
|
+
return c;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Fold `events` into the transcript. Returns how many of them showed something
|
|
83
|
+
* (a reader scrolled away is told that many arrived).
|
|
84
|
+
*/
|
|
85
|
+
export function applyEvents(t: Transcript, events: readonly TranscriptEvent[]): number {
|
|
86
|
+
let shown = 0;
|
|
87
|
+
for (const raw of events) {
|
|
88
|
+
const e = knownEvent(raw);
|
|
89
|
+
if (!e) continue;
|
|
90
|
+
if (e.type === 'launch') {
|
|
91
|
+
addRound(t, e);
|
|
92
|
+
shown++;
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const r = currentRound(t);
|
|
96
|
+
switch (e.type) {
|
|
97
|
+
case 'message_start':
|
|
98
|
+
case 'message_end':
|
|
99
|
+
if (e.role !== 'user' || !e.text) continue;
|
|
100
|
+
r.items.push({ type: 'prompt', id: newId(t), text: e.text });
|
|
101
|
+
break;
|
|
102
|
+
case 'turn_end':
|
|
103
|
+
if (!e.thinking) continue;
|
|
104
|
+
r.items.push({ type: 'reasoning', id: newId(t), text: e.thinking });
|
|
105
|
+
break;
|
|
106
|
+
case 'acall':
|
|
107
|
+
case 'tool_execution_start':
|
|
108
|
+
case 'tool_execution_update': {
|
|
109
|
+
const c = cardFor(t, r, e.call);
|
|
110
|
+
if (c.output === null) {
|
|
111
|
+
setToolName(c, e.tool);
|
|
112
|
+
c.summary = firstLine(e.cmd);
|
|
113
|
+
c.intent = e.intent || '';
|
|
114
|
+
c.body = e.cmd || c.body;
|
|
115
|
+
if (e.web_query) c.query = e.web_query;
|
|
116
|
+
if (e.web_fetch) c.page = e.web_fetch;
|
|
117
|
+
} else if (!c.summary && e.cmd) {
|
|
118
|
+
c.summary = firstLine(e.cmd); // a late duplicate may only add the summary
|
|
119
|
+
}
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
case 'aresult':
|
|
123
|
+
case 'tool_execution_end': {
|
|
124
|
+
const c = cardFor(t, r, e.call);
|
|
125
|
+
if (c.output !== null && !e.out) break; // a repeated, empty result must not blank the real one
|
|
126
|
+
setToolName(c, e.tool);
|
|
127
|
+
c.status = e.err ? 'error' : 'ok';
|
|
128
|
+
if (!c.summary && c.body) c.summary = firstLine(c.body);
|
|
129
|
+
c.output = e.out || '(no output)';
|
|
130
|
+
if (c.query) c.links = webResults(c.output);
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
case 'message_update': {
|
|
134
|
+
if (!e.delta) continue;
|
|
135
|
+
const last = r.items[r.items.length - 1];
|
|
136
|
+
if (last?.type === 'message') last.text += e.delta;
|
|
137
|
+
else r.items.push({ type: 'message', id: newId(t), text: e.delta });
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
case 'auto_retry_start':
|
|
141
|
+
r.items.push({ type: 'event', id: newId(t), icon: '↻', title: '', text: e.err ?? '' });
|
|
142
|
+
break;
|
|
143
|
+
case 'notice': {
|
|
144
|
+
const model = SESSION_MODEL.exec(e.text || '')?.[1];
|
|
145
|
+
if (model) {
|
|
146
|
+
r.who ??= { agent: '', model: '', role: '' };
|
|
147
|
+
if (!r.who.model) r.who.model = model;
|
|
148
|
+
}
|
|
149
|
+
r.items.push({ type: 'notice', id: newId(t), text: (e.text || '').replace(/\s+/g, ' ').trim() });
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
shown++;
|
|
154
|
+
}
|
|
155
|
+
return shown;
|
|
156
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// Rounds as the reader counts them, from each round's launch and the task's
|
|
2
|
+
// journal rows.
|
|
3
|
+
//
|
|
4
|
+
// Each round is one turn of the coding agent. A *try* starts a new session
|
|
5
|
+
// (the first one, or a retry after a failure); a *fix-up* continues the same
|
|
6
|
+
// session after the output failed its checks, with the errors in its prompt; a
|
|
7
|
+
// *model switch* starts a session on the next model of the failover chain
|
|
8
|
+
// within the same try (the journal row's `hops`), after a rate limit.
|
|
9
|
+
import type { LaunchEvent } from '@contraagent/api';
|
|
10
|
+
import type { RoundInfo, TryResult } from '../../core/events.js';
|
|
11
|
+
|
|
12
|
+
/** The start of the prompt the runner sends when an output failed its checks (contracts.py). */
|
|
13
|
+
const FIXUP_PROMPT = 'The output file(s) you wrote do not pass their checks.';
|
|
14
|
+
|
|
15
|
+
/** The check errors a fix-up's prompt lists (the lines under `Errors:`). */
|
|
16
|
+
export function fixupErrors(prompt: string | null | undefined): string[] {
|
|
17
|
+
const out: string[] = [];
|
|
18
|
+
let inErrors = false;
|
|
19
|
+
for (const line of (prompt || '').split('\n')) {
|
|
20
|
+
if (/^Errors:\s*$/.test(line)) inErrors = true;
|
|
21
|
+
else if (inErrors && line.startsWith('- ')) out.push(line.slice(2));
|
|
22
|
+
else if (inErrors && line.trim() && !line.startsWith('- ')) inErrors = false;
|
|
23
|
+
}
|
|
24
|
+
return out;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export const isFixup = (launch: Pick<LaunchEvent, 'prompt'> | null | undefined): boolean =>
|
|
28
|
+
!!launch && (launch.prompt || '').startsWith(FIXUP_PROMPT);
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Classify each round (by its launch) as a try or a fix-up, and attach what is known of
|
|
33
|
+
* its result. `rows` are the task's journal rows in order; the n-th that ran is the n-th try's.
|
|
34
|
+
*/
|
|
35
|
+
export function classifyRounds(launches: readonly (Pick<LaunchEvent, 'prompt'> | null)[], rows: readonly TryResult[]): RoundInfo[] {
|
|
36
|
+
// The tries that ran, in order: a resumed run numbers a task's attempts from 0 again,
|
|
37
|
+
// so a try's row is found by its place, not by its attempt number.
|
|
38
|
+
const byTry = new Map(rows.filter((r) => r.stop !== 'invalid_input' && r.stop !== 'skipped').map((r, i) => [i + 1, r]));
|
|
39
|
+
const out: RoundInfo[] = [];
|
|
40
|
+
let tryNo = 0;
|
|
41
|
+
let fixupNo = 0;
|
|
42
|
+
let hopNo = 0;
|
|
43
|
+
launches.forEach((l, i) => {
|
|
44
|
+
const hops = byTry.get(tryNo)?.hops?.length ?? 1;
|
|
45
|
+
if (i > 0 && isFixup(l)) fixupNo++;
|
|
46
|
+
else if (i > 0 && hopNo + 1 < hops) {
|
|
47
|
+
hopNo++; // a fresh session within the same try: the next model of its chain
|
|
48
|
+
fixupNo = 0;
|
|
49
|
+
} else {
|
|
50
|
+
tryNo++;
|
|
51
|
+
hopNo = 0;
|
|
52
|
+
fixupNo = 0;
|
|
53
|
+
}
|
|
54
|
+
const hop = byTry.get(tryNo)?.hops?.[hopNo];
|
|
55
|
+
const model = hop?.model || hop?.route || '';
|
|
56
|
+
const kind = fixupNo ? 'fixup' : hopNo ? 'switch' : 'try';
|
|
57
|
+
out.push({ kind, tryNo, fixupNo, hopNo, model, result: null, rejectedWith: [], switchedStop: '', switchedTo: '', row: null });
|
|
58
|
+
});
|
|
59
|
+
out.forEach((r, i) => {
|
|
60
|
+
const next = out[i + 1];
|
|
61
|
+
if (next && next.tryNo === r.tryNo && next.hopNo !== r.hopNo) {
|
|
62
|
+
r.result = 'switched';
|
|
63
|
+
r.switchedStop = byTry.get(r.tryNo)?.hops?.[r.hopNo]?.stop ?? '';
|
|
64
|
+
r.switchedTo = next.model;
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
if (next && next.tryNo === r.tryNo) {
|
|
68
|
+
r.result = 'rejected';
|
|
69
|
+
r.rejectedWith = fixupErrors(launches[i + 1]?.prompt);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const row = byTry.get(r.tryNo) ?? null;
|
|
73
|
+
r.row = row;
|
|
74
|
+
r.result = row ? (row.ok ? 'ok' : 'failed') : null;
|
|
75
|
+
});
|
|
76
|
+
return out;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** The check name in an error line (`.../delta.json: [three_points] points: ...` -> `three_points`). */
|
|
80
|
+
export const checkName = (error: string): string => /\[([\w.-]+)\]/.exec(error)?.[1] ?? '';
|
|
81
|
+
|
|
82
|
+
/** A check error as the reader reads it: `[three_points] points: ...` after a path -> `three_points: points: ...`. */
|
|
83
|
+
export function checkMessage(error: string): string {
|
|
84
|
+
const m = /\[([\w.-]+)\]\s*(.*)$/.exec(error);
|
|
85
|
+
return m ? `${m[1]}: ${m[2]}` : error;
|
|
86
|
+
}
|