@contractspec/example.agent-console 3.7.7 → 3.8.4
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/.turbo/turbo-build.log +126 -105
- package/AGENTS.md +3 -1
- package/CHANGELOG.md +57 -0
- package/README.md +46 -9
- package/dist/agent/agent.handler.d.ts +3 -0
- package/dist/agent/agent.handler.js +730 -1
- package/dist/agent/index.js +73 -72
- package/dist/agent.feature.js +179 -0
- package/dist/browser/agent/agent.handler.js +730 -1
- package/dist/browser/agent/index.js +73 -72
- package/dist/browser/agent.feature.js +179 -0
- package/dist/browser/docs/agent-console.docblock.js +11 -8
- package/dist/browser/docs/index.js +11 -8
- package/dist/browser/example.js +2 -3
- package/dist/browser/handlers/agent.handlers.js +1883 -2
- package/dist/browser/handlers/index.js +2142 -8
- package/dist/browser/index.js +3347 -2433
- package/dist/browser/presentations/index.js +49 -49
- package/dist/browser/run/index.js +818 -812
- package/dist/browser/run/run.handler.js +666 -1
- package/dist/browser/shared/index.js +293 -1
- package/dist/browser/shared/mock-runs.js +5 -0
- package/dist/browser/tool/index.js +331 -331
- package/dist/browser/tool/tool.handler.js +479 -3
- package/dist/browser/ui/AgentDashboard.js +1204 -319
- package/dist/browser/ui/AgentDashboard.visualizations.js +217 -0
- package/dist/browser/ui/AgentRunList.js +359 -127
- package/dist/browser/ui/hooks/index.js +468 -18
- package/dist/browser/ui/hooks/useAgentMutations.js +443 -8
- package/dist/browser/ui/hooks/useRunList.js +25 -10
- package/dist/browser/ui/index.js +1293 -390
- package/dist/browser/ui/renderers/agent-list.markdown.js +14 -5
- package/dist/browser/ui/renderers/dashboard.markdown.js +207 -36
- package/dist/browser/ui/renderers/index.js +245 -49
- package/dist/browser/ui/renderers/run-list.markdown.js +9 -4
- package/dist/browser/ui/renderers/tool-registry.markdown.js +15 -4
- package/dist/browser/ui/views/RunDataTable.js +326 -0
- package/dist/browser/ui/views/RunListView.js +359 -127
- package/dist/browser/ui/views/index.js +406 -174
- package/dist/browser/ui/views/run-data-table.columns.js +271 -0
- package/dist/browser/ui/views/run-list.shared.js +177 -0
- package/dist/browser/visualizations/catalog.js +134 -0
- package/dist/browser/visualizations/index.js +187 -0
- package/dist/browser/visualizations/selectors.js +181 -0
- package/dist/docs/agent-console.docblock.js +11 -8
- package/dist/docs/index.js +11 -8
- package/dist/example.js +2 -3
- package/dist/example.test.d.ts +1 -0
- package/dist/handlers/agent.handlers.d.ts +2 -0
- package/dist/handlers/agent.handlers.js +1883 -2
- package/dist/handlers/index.d.ts +1 -3
- package/dist/handlers/index.js +2142 -8
- package/dist/handlers/mock-handlers.test.d.ts +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3347 -2433
- package/dist/node/agent/agent.handler.js +730 -1
- package/dist/node/agent/index.js +73 -72
- package/dist/node/agent.feature.js +179 -0
- package/dist/node/docs/agent-console.docblock.js +11 -8
- package/dist/node/docs/index.js +11 -8
- package/dist/node/example.js +2 -3
- package/dist/node/handlers/agent.handlers.js +1883 -2
- package/dist/node/handlers/index.js +2142 -8
- package/dist/node/index.js +3347 -2433
- package/dist/node/presentations/index.js +49 -49
- package/dist/node/run/index.js +818 -812
- package/dist/node/run/run.handler.js +666 -1
- package/dist/node/shared/index.js +293 -1
- package/dist/node/shared/mock-runs.js +5 -0
- package/dist/node/tool/index.js +331 -331
- package/dist/node/tool/tool.handler.js +479 -3
- package/dist/node/ui/AgentDashboard.js +1204 -319
- package/dist/node/ui/AgentDashboard.visualizations.js +217 -0
- package/dist/node/ui/AgentRunList.js +359 -127
- package/dist/node/ui/hooks/index.js +468 -18
- package/dist/node/ui/hooks/useAgentMutations.js +443 -8
- package/dist/node/ui/hooks/useRunList.js +25 -10
- package/dist/node/ui/index.js +1293 -390
- package/dist/node/ui/renderers/agent-list.markdown.js +14 -5
- package/dist/node/ui/renderers/dashboard.markdown.js +207 -36
- package/dist/node/ui/renderers/index.js +245 -49
- package/dist/node/ui/renderers/run-list.markdown.js +9 -4
- package/dist/node/ui/renderers/tool-registry.markdown.js +15 -4
- package/dist/node/ui/views/RunDataTable.js +326 -0
- package/dist/node/ui/views/RunListView.js +359 -127
- package/dist/node/ui/views/index.js +406 -174
- package/dist/node/ui/views/run-data-table.columns.js +271 -0
- package/dist/node/ui/views/run-list.shared.js +177 -0
- package/dist/node/visualizations/catalog.js +134 -0
- package/dist/node/visualizations/index.js +187 -0
- package/dist/node/visualizations/selectors.js +181 -0
- package/dist/presentations/index.js +49 -49
- package/dist/proof/index.d.ts +2 -0
- package/dist/proof/meetup-proof.d.ts +10 -0
- package/dist/proof/meetup-proof.runtime.d.ts +22 -0
- package/dist/proof/meetup-proof.scenario.d.ts +2 -0
- package/dist/proof/meetup-proof.suite.d.ts +1 -0
- package/dist/proof/meetup-proof.test.d.ts +1 -0
- package/dist/run/index.js +818 -812
- package/dist/run/run.handler.d.ts +4 -0
- package/dist/run/run.handler.js +666 -1
- package/dist/shared/demo-dashboard-data.d.ts +16 -0
- package/dist/shared/demo-runtime-seed.d.ts +17 -0
- package/dist/shared/demo-runtime.d.ts +8 -0
- package/dist/shared/demo-runtime.test.d.ts +1 -0
- package/dist/shared/index.d.ts +3 -0
- package/dist/shared/index.js +293 -1
- package/dist/shared/mock-runs.d.ts +4 -0
- package/dist/shared/mock-runs.js +5 -0
- package/dist/tool/index.js +331 -331
- package/dist/tool/tool.handler.d.ts +4 -1
- package/dist/tool/tool.handler.js +479 -3
- package/dist/ui/AgentDashboard.js +1204 -319
- package/dist/ui/AgentDashboard.sandbox.test.d.ts +1 -0
- package/dist/ui/AgentDashboard.visualizations.d.ts +4 -0
- package/dist/ui/AgentDashboard.visualizations.js +218 -0
- package/dist/ui/AgentRunList.js +359 -127
- package/dist/ui/hooks/index.js +468 -18
- package/dist/ui/hooks/useAgentMutations.js +443 -8
- package/dist/ui/hooks/useRunList.d.ts +8 -2
- package/dist/ui/hooks/useRunList.js +25 -10
- package/dist/ui/index.js +1293 -390
- package/dist/ui/renderers/agent-list.markdown.d.ts +1 -1
- package/dist/ui/renderers/agent-list.markdown.js +14 -5
- package/dist/ui/renderers/agent-list.renderer.d.ts +1 -1
- package/dist/ui/renderers/dashboard.markdown.d.ts +1 -1
- package/dist/ui/renderers/dashboard.markdown.js +207 -36
- package/dist/ui/renderers/index.js +245 -49
- package/dist/ui/renderers/run-list.markdown.d.ts +1 -1
- package/dist/ui/renderers/run-list.markdown.js +9 -4
- package/dist/ui/renderers/tool-registry.markdown.d.ts +2 -2
- package/dist/ui/renderers/tool-registry.markdown.js +15 -4
- package/dist/ui/views/RunDataTable.d.ts +18 -0
- package/dist/ui/views/RunDataTable.js +327 -0
- package/dist/ui/views/RunListView.js +359 -127
- package/dist/ui/views/index.js +406 -174
- package/dist/ui/views/run-data-table.columns.d.ts +3 -0
- package/dist/ui/views/run-data-table.columns.js +272 -0
- package/dist/ui/views/run-list.shared.d.ts +14 -0
- package/dist/ui/views/run-list.shared.js +178 -0
- package/dist/visualizations/catalog.d.ts +10 -0
- package/dist/visualizations/catalog.js +135 -0
- package/dist/visualizations/index.d.ts +2 -0
- package/dist/visualizations/index.js +188 -0
- package/dist/visualizations/selectors.d.ts +3 -0
- package/dist/visualizations/selectors.js +182 -0
- package/dist/visualizations/selectors.test.d.ts +1 -0
- package/package.json +114 -11
- package/proofs/agent-console-meetup.replay.json +220 -0
- package/src/agent/agent.handler.ts +18 -1
- package/src/agent.feature.ts +3 -0
- package/src/docs/agent-console.docblock.ts +11 -8
- package/src/example.test.ts +75 -0
- package/src/example.ts +2 -3
- package/src/handlers/agent.handlers.ts +55 -2
- package/src/handlers/index.ts +18 -2
- package/src/handlers/mock-handlers.test.ts +77 -0
- package/src/index.ts +2 -0
- package/src/proof/index.ts +2 -0
- package/src/proof/meetup-proof.runtime.ts +196 -0
- package/src/proof/meetup-proof.scenario.ts +99 -0
- package/src/proof/meetup-proof.suite.ts +29 -0
- package/src/proof/meetup-proof.test.ts +28 -0
- package/src/proof/meetup-proof.ts +130 -0
- package/src/run/run.handler.ts +17 -1
- package/src/shared/demo-dashboard-data.ts +58 -0
- package/src/shared/demo-runtime-seed.ts +139 -0
- package/src/shared/demo-runtime.test.ts +169 -0
- package/src/shared/demo-runtime.ts +260 -0
- package/src/shared/index.ts +11 -0
- package/src/shared/mock-runs.ts +5 -0
- package/src/tool/tool.handler.ts +21 -4
- package/src/ui/AgentDashboard.sandbox.test.tsx +312 -0
- package/src/ui/AgentDashboard.tsx +4 -1
- package/src/ui/AgentDashboard.visualizations.tsx +35 -0
- package/src/ui/hooks/useAgentMutations.ts +19 -11
- package/src/ui/hooks/useRunList.ts +41 -9
- package/src/ui/renderers/agent-list.markdown.ts +32 -13
- package/src/ui/renderers/agent-list.renderer.tsx +1 -1
- package/src/ui/renderers/dashboard.markdown.ts +38 -43
- package/src/ui/renderers/run-list.markdown.ts +17 -9
- package/src/ui/renderers/tool-registry.markdown.ts +22 -10
- package/src/ui/views/RunDataTable.tsx +74 -0
- package/src/ui/views/RunListView.tsx +37 -111
- package/src/ui/views/run-data-table.columns.tsx +102 -0
- package/src/ui/views/run-list.shared.tsx +139 -0
- package/src/visualizations/catalog.ts +132 -0
- package/src/visualizations/index.ts +2 -0
- package/src/visualizations/selectors.test.ts +12 -0
- package/src/visualizations/selectors.ts +70 -0
- package/tsdown.config.js +17 -0
|
@@ -1,3 +1,181 @@
|
|
|
1
|
+
// src/visualizations/catalog.ts
|
|
2
|
+
import {
|
|
3
|
+
defineVisualization,
|
|
4
|
+
VisualizationRegistry
|
|
5
|
+
} from "@contractspec/lib.contracts-spec/visualizations";
|
|
6
|
+
var RUN_LIST_REF = { key: "agent.run.list", version: "1.0.0" };
|
|
7
|
+
var META = {
|
|
8
|
+
version: "1.0.0",
|
|
9
|
+
domain: "ai-ops",
|
|
10
|
+
stability: "experimental",
|
|
11
|
+
owners: ["@example.agent-console"],
|
|
12
|
+
tags: ["agent-console", "visualization", "operations"]
|
|
13
|
+
};
|
|
14
|
+
var AgentRunStatusVisualization = defineVisualization({
|
|
15
|
+
meta: {
|
|
16
|
+
...META,
|
|
17
|
+
key: "agent-console.visualization.run-status",
|
|
18
|
+
title: "Run Status Breakdown",
|
|
19
|
+
description: "Distribution of run outcomes across the current sample.",
|
|
20
|
+
goal: "Make operational success and failure mix visible at a glance.",
|
|
21
|
+
context: "Agent operations overview."
|
|
22
|
+
},
|
|
23
|
+
source: { primary: RUN_LIST_REF, resultPath: "data" },
|
|
24
|
+
visualization: {
|
|
25
|
+
kind: "pie",
|
|
26
|
+
nameDimension: "status",
|
|
27
|
+
valueMeasure: "runs",
|
|
28
|
+
dimensions: [
|
|
29
|
+
{ key: "status", label: "Status", dataPath: "status", type: "category" }
|
|
30
|
+
],
|
|
31
|
+
measures: [
|
|
32
|
+
{ key: "runs", label: "Runs", dataPath: "runs", format: "number" }
|
|
33
|
+
],
|
|
34
|
+
table: { caption: "Run counts by status." }
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
var AgentRunActivityVisualization = defineVisualization({
|
|
38
|
+
meta: {
|
|
39
|
+
...META,
|
|
40
|
+
key: "agent-console.visualization.run-activity",
|
|
41
|
+
title: "Recent Run Activity",
|
|
42
|
+
description: "Daily run volume across the current sample.",
|
|
43
|
+
goal: "Show whether agent activity is rising or slowing down.",
|
|
44
|
+
context: "Operations trend monitoring."
|
|
45
|
+
},
|
|
46
|
+
source: { primary: RUN_LIST_REF, resultPath: "data" },
|
|
47
|
+
visualization: {
|
|
48
|
+
kind: "cartesian",
|
|
49
|
+
variant: "line",
|
|
50
|
+
xDimension: "day",
|
|
51
|
+
yMeasures: ["runs"],
|
|
52
|
+
dimensions: [{ key: "day", label: "Day", dataPath: "day", type: "time" }],
|
|
53
|
+
measures: [
|
|
54
|
+
{
|
|
55
|
+
key: "runs",
|
|
56
|
+
label: "Runs",
|
|
57
|
+
dataPath: "runs",
|
|
58
|
+
format: "number",
|
|
59
|
+
color: "#0f766e"
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
table: { caption: "Daily run counts." }
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
var AgentRunEfficiencyVisualization = defineVisualization({
|
|
66
|
+
meta: {
|
|
67
|
+
...META,
|
|
68
|
+
key: "agent-console.visualization.run-efficiency",
|
|
69
|
+
title: "Duration vs Tokens",
|
|
70
|
+
description: "Scatter chart comparing token consumption and runtime.",
|
|
71
|
+
goal: "Reveal outlier runs that are slow relative to their token usage.",
|
|
72
|
+
context: "Operational performance diagnostics."
|
|
73
|
+
},
|
|
74
|
+
source: { primary: RUN_LIST_REF, resultPath: "data" },
|
|
75
|
+
visualization: {
|
|
76
|
+
kind: "cartesian",
|
|
77
|
+
variant: "scatter",
|
|
78
|
+
xDimension: "totalTokens",
|
|
79
|
+
yMeasures: ["durationMs"],
|
|
80
|
+
dimensions: [
|
|
81
|
+
{
|
|
82
|
+
key: "totalTokens",
|
|
83
|
+
label: "Total Tokens",
|
|
84
|
+
dataPath: "totalTokens",
|
|
85
|
+
type: "number"
|
|
86
|
+
}
|
|
87
|
+
],
|
|
88
|
+
measures: [
|
|
89
|
+
{
|
|
90
|
+
key: "durationMs",
|
|
91
|
+
label: "Duration",
|
|
92
|
+
dataPath: "durationMs",
|
|
93
|
+
format: "duration",
|
|
94
|
+
color: "#7c3aed"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
key: "estimatedCostUsd",
|
|
98
|
+
label: "Cost",
|
|
99
|
+
dataPath: "estimatedCostUsd",
|
|
100
|
+
format: "currency"
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
series: [
|
|
104
|
+
{
|
|
105
|
+
key: "runs",
|
|
106
|
+
label: "Runs",
|
|
107
|
+
measure: "durationMs",
|
|
108
|
+
type: "scatter",
|
|
109
|
+
color: "#7c3aed"
|
|
110
|
+
}
|
|
111
|
+
],
|
|
112
|
+
table: { caption: "Run duration versus token usage." }
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
var AgentVisualizationSpecs = [
|
|
116
|
+
AgentRunStatusVisualization,
|
|
117
|
+
AgentRunActivityVisualization,
|
|
118
|
+
AgentRunEfficiencyVisualization
|
|
119
|
+
];
|
|
120
|
+
var AgentVisualizationRegistry = new VisualizationRegistry([
|
|
121
|
+
...AgentVisualizationSpecs
|
|
122
|
+
]);
|
|
123
|
+
var AgentVisualizationRefs = AgentVisualizationSpecs.map((spec) => ({
|
|
124
|
+
key: spec.meta.key,
|
|
125
|
+
version: spec.meta.version
|
|
126
|
+
}));
|
|
127
|
+
|
|
128
|
+
// src/visualizations/selectors.ts
|
|
129
|
+
function dayKey(value) {
|
|
130
|
+
if (!value)
|
|
131
|
+
return "unknown";
|
|
132
|
+
return value.toISOString().slice(0, 10);
|
|
133
|
+
}
|
|
134
|
+
function createAgentVisualizationItems(runs) {
|
|
135
|
+
const statusCounts = new Map;
|
|
136
|
+
const activityCounts = new Map;
|
|
137
|
+
for (const run of runs) {
|
|
138
|
+
statusCounts.set(run.status, (statusCounts.get(run.status) ?? 0) + 1);
|
|
139
|
+
activityCounts.set(dayKey(run.startedAt ?? run.queuedAt), (activityCounts.get(dayKey(run.startedAt ?? run.queuedAt)) ?? 0) + 1);
|
|
140
|
+
}
|
|
141
|
+
return [
|
|
142
|
+
{
|
|
143
|
+
key: "run-status",
|
|
144
|
+
spec: AgentRunStatusVisualization,
|
|
145
|
+
data: {
|
|
146
|
+
data: Array.from(statusCounts.entries()).map(([status, count]) => ({
|
|
147
|
+
status,
|
|
148
|
+
runs: count
|
|
149
|
+
}))
|
|
150
|
+
},
|
|
151
|
+
title: "Run Status Breakdown",
|
|
152
|
+
description: "Completed, failed, running, and cancelled runs in the sample.",
|
|
153
|
+
height: 260
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
key: "run-activity",
|
|
157
|
+
spec: AgentRunActivityVisualization,
|
|
158
|
+
data: {
|
|
159
|
+
data: Array.from(activityCounts.entries()).sort(([left], [right]) => left.localeCompare(right)).map(([day, count]) => ({ day, runs: count }))
|
|
160
|
+
},
|
|
161
|
+
title: "Recent Run Activity",
|
|
162
|
+
description: "Daily run volume derived from run start times."
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
key: "run-efficiency",
|
|
166
|
+
spec: AgentRunEfficiencyVisualization,
|
|
167
|
+
data: {
|
|
168
|
+
data: runs.filter((run) => typeof run.durationMs === "number").map((run) => ({
|
|
169
|
+
totalTokens: run.totalTokens,
|
|
170
|
+
durationMs: run.durationMs ?? 0,
|
|
171
|
+
estimatedCostUsd: run.estimatedCostUsd
|
|
172
|
+
}))
|
|
173
|
+
},
|
|
174
|
+
title: "Duration vs Tokens",
|
|
175
|
+
description: "Operational scatter plot for spotting inefficient runs."
|
|
176
|
+
}
|
|
177
|
+
];
|
|
178
|
+
}
|
|
1
179
|
// src/ui/hooks/useAgentList.ts
|
|
2
180
|
import { useTemplateRuntime } from "@contractspec/lib.example-shared-ui";
|
|
3
181
|
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
@@ -53,16 +231,25 @@ function useAgentList(options = {}) {
|
|
|
53
231
|
|
|
54
232
|
// src/ui/renderers/agent-list.markdown.ts
|
|
55
233
|
import {
|
|
56
|
-
|
|
57
|
-
|
|
234
|
+
AGENT_CONSOLE_DEMO_ORGANIZATION_ID,
|
|
235
|
+
AGENT_CONSOLE_DEMO_PROJECT_ID,
|
|
236
|
+
createAgentConsoleDemoHandlers
|
|
237
|
+
} from "@contractspec/example.agent-console/shared";
|
|
58
238
|
var agentListMarkdownRenderer = {
|
|
59
239
|
target: "markdown",
|
|
60
|
-
render: async (desc) => {
|
|
240
|
+
render: async (desc, ctx) => {
|
|
61
241
|
if (desc.source.type !== "component" || desc.source.componentKey !== "AgentListView") {
|
|
62
242
|
throw new Error("agentListMarkdownRenderer: not AgentListView");
|
|
63
243
|
}
|
|
64
|
-
const data =
|
|
65
|
-
|
|
244
|
+
const data = Array.isArray(ctx?.data) ? {
|
|
245
|
+
items: ctx.data,
|
|
246
|
+
total: ctx.data.length,
|
|
247
|
+
hasMore: false
|
|
248
|
+
} : await createAgentConsoleDemoHandlers({
|
|
249
|
+
projectId: AGENT_CONSOLE_DEMO_PROJECT_ID
|
|
250
|
+
}).listAgents({
|
|
251
|
+
projectId: AGENT_CONSOLE_DEMO_PROJECT_ID,
|
|
252
|
+
organizationId: AGENT_CONSOLE_DEMO_ORGANIZATION_ID,
|
|
66
253
|
limit: 50,
|
|
67
254
|
offset: 0
|
|
68
255
|
});
|
|
@@ -231,10 +418,8 @@ var agentListReactRenderer = {
|
|
|
231
418
|
|
|
232
419
|
// src/ui/renderers/dashboard.markdown.ts
|
|
233
420
|
import {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
mockListToolsHandler
|
|
237
|
-
} from "@contractspec/example.agent-console/handlers";
|
|
421
|
+
getFallbackAgentConsoleDashboardData
|
|
422
|
+
} from "@contractspec/example.agent-console/shared";
|
|
238
423
|
function formatDuration(ms) {
|
|
239
424
|
if (ms < 1000)
|
|
240
425
|
return `${ms}ms`;
|
|
@@ -244,29 +429,18 @@ function formatDuration(ms) {
|
|
|
244
429
|
}
|
|
245
430
|
var agentDashboardMarkdownRenderer = {
|
|
246
431
|
target: "markdown",
|
|
247
|
-
render: async (desc) => {
|
|
432
|
+
render: async (desc, ctx) => {
|
|
248
433
|
if (desc.source.type !== "component" || desc.source.componentKey !== "AgentConsoleDashboard") {
|
|
249
434
|
throw new Error("agentDashboardMarkdownRenderer: not AgentConsoleDashboard");
|
|
250
435
|
}
|
|
251
|
-
const
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
mockListToolsHandler({
|
|
260
|
-
organizationId: "demo-org",
|
|
261
|
-
limit: 100
|
|
262
|
-
})
|
|
263
|
-
]);
|
|
264
|
-
const activeAgents = agentsData.items.filter((a) => a.status === "ACTIVE").length;
|
|
265
|
-
const completedRuns = runsData.items.filter((r) => r.status === "COMPLETED").length;
|
|
266
|
-
const failedRuns = runsData.items.filter((r) => r.status === "FAILED").length;
|
|
267
|
-
const totalTokens = runsData.items.reduce((sum, r) => sum + (r.totalTokens ?? 0), 0);
|
|
268
|
-
const totalCost = runsData.items.reduce((sum, r) => sum + (r.estimatedCostUsd ?? 0), 0);
|
|
269
|
-
const activeTools = toolsData.items.filter((t) => t.status === "ACTIVE").length;
|
|
436
|
+
const data = ctx?.data ?? await getFallbackAgentConsoleDashboardData();
|
|
437
|
+
const activeAgents = data.agents.filter((a) => a.status === "ACTIVE").length;
|
|
438
|
+
const completedRuns = data.runs.filter((r) => r.status === "COMPLETED").length;
|
|
439
|
+
const failedRuns = data.runs.filter((r) => r.status === "FAILED").length;
|
|
440
|
+
const totalTokens = data.runs.reduce((sum, r) => sum + (r.totalTokens ?? 0), 0);
|
|
441
|
+
const totalCost = data.runs.reduce((sum, r) => sum + (r.estimatedCostUsd ?? 0), 0);
|
|
442
|
+
const activeTools = data.tools.filter((t) => t.status === "ACTIVE").length;
|
|
443
|
+
const visualizationItems = createAgentVisualizationItems(data.runs);
|
|
270
444
|
const lines = [
|
|
271
445
|
"# Agent Console Dashboard",
|
|
272
446
|
"",
|
|
@@ -276,51 +450,57 @@ var agentDashboardMarkdownRenderer = {
|
|
|
276
450
|
"",
|
|
277
451
|
"| Metric | Value |",
|
|
278
452
|
"|--------|-------|",
|
|
279
|
-
`| Total Agents | ${
|
|
453
|
+
`| Total Agents | ${data.summary.totalAgents} |`,
|
|
280
454
|
`| Active Agents | ${activeAgents} |`,
|
|
281
|
-
`| Total Runs | ${
|
|
455
|
+
`| Total Runs | ${data.summary.totalRuns} |`,
|
|
282
456
|
`| Completed Runs | ${completedRuns} |`,
|
|
283
457
|
`| Failed Runs | ${failedRuns} |`,
|
|
284
458
|
`| Total Tokens | ${totalTokens.toLocaleString()} |`,
|
|
285
459
|
`| Total Cost | $${totalCost.toFixed(4)} |`,
|
|
286
|
-
`| Total Tools | ${
|
|
460
|
+
`| Total Tools | ${data.summary.totalTools} |`,
|
|
287
461
|
`| Active Tools | ${activeTools} |`,
|
|
288
462
|
"",
|
|
289
463
|
"## Agents",
|
|
290
464
|
""
|
|
291
465
|
];
|
|
292
|
-
if (
|
|
466
|
+
if (data.agents.length === 0) {
|
|
293
467
|
lines.push("_No agents configured._");
|
|
294
468
|
} else {
|
|
295
469
|
lines.push("| Agent | Model | Status | Description |");
|
|
296
470
|
lines.push("|-------|-------|--------|-------------|");
|
|
297
|
-
for (const agent of
|
|
471
|
+
for (const agent of data.agents.slice(0, 5)) {
|
|
298
472
|
lines.push(`| ${agent.name} | ${agent.modelProvider}/${agent.modelName} | ${agent.status} | ${agent.description ?? "-"} |`);
|
|
299
473
|
}
|
|
300
|
-
if (
|
|
301
|
-
lines.push(`| ... | ... | ... | _${
|
|
474
|
+
if (data.agents.length > 5) {
|
|
475
|
+
lines.push(`| ... | ... | ... | _${data.summary.totalAgents - 5} more_ |`);
|
|
302
476
|
}
|
|
303
477
|
}
|
|
304
478
|
lines.push("");
|
|
305
479
|
lines.push("## Recent Runs");
|
|
306
480
|
lines.push("");
|
|
307
|
-
if (
|
|
481
|
+
if (data.runs.length === 0) {
|
|
308
482
|
lines.push("_No runs yet._");
|
|
309
483
|
} else {
|
|
310
484
|
lines.push("| Run ID | Agent | Status | Duration | Tokens | Cost |");
|
|
311
485
|
lines.push("|--------|-------|--------|----------|--------|------|");
|
|
312
|
-
for (const run of
|
|
486
|
+
for (const run of data.runs.slice(0, 5)) {
|
|
313
487
|
lines.push(`| ${run.id.slice(-8)} | ${run.agentName} | ${run.status} | ${run.durationMs ? formatDuration(run.durationMs) : "-"} | ${run.totalTokens ?? 0} | $${(run.estimatedCostUsd ?? 0).toFixed(4)} |`);
|
|
314
488
|
}
|
|
315
|
-
if (
|
|
316
|
-
lines.push(`| ... | ... | ... | ... | ... | _${
|
|
489
|
+
if (data.runs.length > 5) {
|
|
490
|
+
lines.push(`| ... | ... | ... | ... | ... | _${data.summary.totalRuns - 5} more_ |`);
|
|
317
491
|
}
|
|
318
492
|
}
|
|
319
493
|
lines.push("");
|
|
494
|
+
lines.push("## Visualization Overview");
|
|
495
|
+
lines.push("");
|
|
496
|
+
for (const item of visualizationItems) {
|
|
497
|
+
lines.push(`- **${item.title}** via \`${item.spec.meta.key}\``);
|
|
498
|
+
}
|
|
499
|
+
lines.push("");
|
|
320
500
|
lines.push("## Tools");
|
|
321
501
|
lines.push("");
|
|
322
502
|
const toolsByCategory = {};
|
|
323
|
-
for (const tool of
|
|
503
|
+
for (const tool of data.tools) {
|
|
324
504
|
const cat = tool.category;
|
|
325
505
|
if (!toolsByCategory[cat])
|
|
326
506
|
toolsByCategory[cat] = [];
|
|
@@ -345,7 +525,10 @@ var agentDashboardMarkdownRenderer = {
|
|
|
345
525
|
};
|
|
346
526
|
|
|
347
527
|
// src/ui/renderers/run-list.markdown.ts
|
|
348
|
-
import {
|
|
528
|
+
import {
|
|
529
|
+
AGENT_CONSOLE_DEMO_PROJECT_ID as AGENT_CONSOLE_DEMO_PROJECT_ID2,
|
|
530
|
+
createAgentConsoleDemoHandlers as createAgentConsoleDemoHandlers2
|
|
531
|
+
} from "@contractspec/example.agent-console/shared";
|
|
349
532
|
function formatDuration2(ms) {
|
|
350
533
|
if (ms < 1000)
|
|
351
534
|
return `${ms}ms`;
|
|
@@ -355,12 +538,14 @@ function formatDuration2(ms) {
|
|
|
355
538
|
}
|
|
356
539
|
var runListMarkdownRenderer = {
|
|
357
540
|
target: "markdown",
|
|
358
|
-
render: async (desc) => {
|
|
541
|
+
render: async (desc, ctx) => {
|
|
359
542
|
if (desc.source.type !== "component" || desc.source.componentKey !== "RunListView") {
|
|
360
543
|
throw new Error("runListMarkdownRenderer: not RunListView");
|
|
361
544
|
}
|
|
362
|
-
const data = await
|
|
363
|
-
|
|
545
|
+
const data = Array.isArray(ctx?.data) ? { items: ctx.data, total: ctx.data.length, hasMore: false } : await createAgentConsoleDemoHandlers2({
|
|
546
|
+
projectId: AGENT_CONSOLE_DEMO_PROJECT_ID2
|
|
547
|
+
}).listRuns({
|
|
548
|
+
projectId: AGENT_CONSOLE_DEMO_PROJECT_ID2,
|
|
364
549
|
limit: 20,
|
|
365
550
|
offset: 0
|
|
366
551
|
});
|
|
@@ -388,15 +573,26 @@ var runListMarkdownRenderer = {
|
|
|
388
573
|
};
|
|
389
574
|
|
|
390
575
|
// src/ui/renderers/tool-registry.markdown.ts
|
|
391
|
-
import {
|
|
576
|
+
import {
|
|
577
|
+
AGENT_CONSOLE_DEMO_ORGANIZATION_ID as AGENT_CONSOLE_DEMO_ORGANIZATION_ID2,
|
|
578
|
+
AGENT_CONSOLE_DEMO_PROJECT_ID as AGENT_CONSOLE_DEMO_PROJECT_ID3,
|
|
579
|
+
createAgentConsoleDemoHandlers as createAgentConsoleDemoHandlers3
|
|
580
|
+
} from "@contractspec/example.agent-console/shared";
|
|
392
581
|
var toolRegistryMarkdownRenderer = {
|
|
393
582
|
target: "markdown",
|
|
394
|
-
render: async (desc) => {
|
|
583
|
+
render: async (desc, ctx) => {
|
|
395
584
|
if (desc.source.type !== "component" || desc.source.componentKey !== "ToolRegistryView") {
|
|
396
585
|
throw new Error("toolRegistryMarkdownRenderer: not ToolRegistryView");
|
|
397
586
|
}
|
|
398
|
-
const data =
|
|
399
|
-
|
|
587
|
+
const data = Array.isArray(ctx?.data) ? {
|
|
588
|
+
items: ctx.data,
|
|
589
|
+
total: ctx.data.length,
|
|
590
|
+
hasMore: false
|
|
591
|
+
} : await createAgentConsoleDemoHandlers3({
|
|
592
|
+
projectId: AGENT_CONSOLE_DEMO_PROJECT_ID3
|
|
593
|
+
}).listTools({
|
|
594
|
+
projectId: AGENT_CONSOLE_DEMO_PROJECT_ID3,
|
|
595
|
+
organizationId: AGENT_CONSOLE_DEMO_ORGANIZATION_ID2,
|
|
400
596
|
limit: 50,
|
|
401
597
|
offset: 0
|
|
402
598
|
});
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
// src/ui/renderers/run-list.markdown.ts
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
AGENT_CONSOLE_DEMO_PROJECT_ID,
|
|
4
|
+
createAgentConsoleDemoHandlers
|
|
5
|
+
} from "@contractspec/example.agent-console/shared";
|
|
3
6
|
function formatDuration(ms) {
|
|
4
7
|
if (ms < 1000)
|
|
5
8
|
return `${ms}ms`;
|
|
@@ -9,12 +12,14 @@ function formatDuration(ms) {
|
|
|
9
12
|
}
|
|
10
13
|
var runListMarkdownRenderer = {
|
|
11
14
|
target: "markdown",
|
|
12
|
-
render: async (desc) => {
|
|
15
|
+
render: async (desc, ctx) => {
|
|
13
16
|
if (desc.source.type !== "component" || desc.source.componentKey !== "RunListView") {
|
|
14
17
|
throw new Error("runListMarkdownRenderer: not RunListView");
|
|
15
18
|
}
|
|
16
|
-
const data = await
|
|
17
|
-
|
|
19
|
+
const data = Array.isArray(ctx?.data) ? { items: ctx.data, total: ctx.data.length, hasMore: false } : await createAgentConsoleDemoHandlers({
|
|
20
|
+
projectId: AGENT_CONSOLE_DEMO_PROJECT_ID
|
|
21
|
+
}).listRuns({
|
|
22
|
+
projectId: AGENT_CONSOLE_DEMO_PROJECT_ID,
|
|
18
23
|
limit: 20,
|
|
19
24
|
offset: 0
|
|
20
25
|
});
|
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
// src/ui/renderers/tool-registry.markdown.ts
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
AGENT_CONSOLE_DEMO_ORGANIZATION_ID,
|
|
4
|
+
AGENT_CONSOLE_DEMO_PROJECT_ID,
|
|
5
|
+
createAgentConsoleDemoHandlers
|
|
6
|
+
} from "@contractspec/example.agent-console/shared";
|
|
3
7
|
var toolRegistryMarkdownRenderer = {
|
|
4
8
|
target: "markdown",
|
|
5
|
-
render: async (desc) => {
|
|
9
|
+
render: async (desc, ctx) => {
|
|
6
10
|
if (desc.source.type !== "component" || desc.source.componentKey !== "ToolRegistryView") {
|
|
7
11
|
throw new Error("toolRegistryMarkdownRenderer: not ToolRegistryView");
|
|
8
12
|
}
|
|
9
|
-
const data =
|
|
10
|
-
|
|
13
|
+
const data = Array.isArray(ctx?.data) ? {
|
|
14
|
+
items: ctx.data,
|
|
15
|
+
total: ctx.data.length,
|
|
16
|
+
hasMore: false
|
|
17
|
+
} : await createAgentConsoleDemoHandlers({
|
|
18
|
+
projectId: AGENT_CONSOLE_DEMO_PROJECT_ID
|
|
19
|
+
}).listTools({
|
|
20
|
+
projectId: AGENT_CONSOLE_DEMO_PROJECT_ID,
|
|
21
|
+
organizationId: AGENT_CONSOLE_DEMO_ORGANIZATION_ID,
|
|
11
22
|
limit: 50,
|
|
12
23
|
offset: 0
|
|
13
24
|
});
|