@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.
Files changed (191) hide show
  1. package/.turbo/turbo-build.log +126 -105
  2. package/AGENTS.md +3 -1
  3. package/CHANGELOG.md +57 -0
  4. package/README.md +46 -9
  5. package/dist/agent/agent.handler.d.ts +3 -0
  6. package/dist/agent/agent.handler.js +730 -1
  7. package/dist/agent/index.js +73 -72
  8. package/dist/agent.feature.js +179 -0
  9. package/dist/browser/agent/agent.handler.js +730 -1
  10. package/dist/browser/agent/index.js +73 -72
  11. package/dist/browser/agent.feature.js +179 -0
  12. package/dist/browser/docs/agent-console.docblock.js +11 -8
  13. package/dist/browser/docs/index.js +11 -8
  14. package/dist/browser/example.js +2 -3
  15. package/dist/browser/handlers/agent.handlers.js +1883 -2
  16. package/dist/browser/handlers/index.js +2142 -8
  17. package/dist/browser/index.js +3347 -2433
  18. package/dist/browser/presentations/index.js +49 -49
  19. package/dist/browser/run/index.js +818 -812
  20. package/dist/browser/run/run.handler.js +666 -1
  21. package/dist/browser/shared/index.js +293 -1
  22. package/dist/browser/shared/mock-runs.js +5 -0
  23. package/dist/browser/tool/index.js +331 -331
  24. package/dist/browser/tool/tool.handler.js +479 -3
  25. package/dist/browser/ui/AgentDashboard.js +1204 -319
  26. package/dist/browser/ui/AgentDashboard.visualizations.js +217 -0
  27. package/dist/browser/ui/AgentRunList.js +359 -127
  28. package/dist/browser/ui/hooks/index.js +468 -18
  29. package/dist/browser/ui/hooks/useAgentMutations.js +443 -8
  30. package/dist/browser/ui/hooks/useRunList.js +25 -10
  31. package/dist/browser/ui/index.js +1293 -390
  32. package/dist/browser/ui/renderers/agent-list.markdown.js +14 -5
  33. package/dist/browser/ui/renderers/dashboard.markdown.js +207 -36
  34. package/dist/browser/ui/renderers/index.js +245 -49
  35. package/dist/browser/ui/renderers/run-list.markdown.js +9 -4
  36. package/dist/browser/ui/renderers/tool-registry.markdown.js +15 -4
  37. package/dist/browser/ui/views/RunDataTable.js +326 -0
  38. package/dist/browser/ui/views/RunListView.js +359 -127
  39. package/dist/browser/ui/views/index.js +406 -174
  40. package/dist/browser/ui/views/run-data-table.columns.js +271 -0
  41. package/dist/browser/ui/views/run-list.shared.js +177 -0
  42. package/dist/browser/visualizations/catalog.js +134 -0
  43. package/dist/browser/visualizations/index.js +187 -0
  44. package/dist/browser/visualizations/selectors.js +181 -0
  45. package/dist/docs/agent-console.docblock.js +11 -8
  46. package/dist/docs/index.js +11 -8
  47. package/dist/example.js +2 -3
  48. package/dist/example.test.d.ts +1 -0
  49. package/dist/handlers/agent.handlers.d.ts +2 -0
  50. package/dist/handlers/agent.handlers.js +1883 -2
  51. package/dist/handlers/index.d.ts +1 -3
  52. package/dist/handlers/index.js +2142 -8
  53. package/dist/handlers/mock-handlers.test.d.ts +1 -0
  54. package/dist/index.d.ts +2 -0
  55. package/dist/index.js +3347 -2433
  56. package/dist/node/agent/agent.handler.js +730 -1
  57. package/dist/node/agent/index.js +73 -72
  58. package/dist/node/agent.feature.js +179 -0
  59. package/dist/node/docs/agent-console.docblock.js +11 -8
  60. package/dist/node/docs/index.js +11 -8
  61. package/dist/node/example.js +2 -3
  62. package/dist/node/handlers/agent.handlers.js +1883 -2
  63. package/dist/node/handlers/index.js +2142 -8
  64. package/dist/node/index.js +3347 -2433
  65. package/dist/node/presentations/index.js +49 -49
  66. package/dist/node/run/index.js +818 -812
  67. package/dist/node/run/run.handler.js +666 -1
  68. package/dist/node/shared/index.js +293 -1
  69. package/dist/node/shared/mock-runs.js +5 -0
  70. package/dist/node/tool/index.js +331 -331
  71. package/dist/node/tool/tool.handler.js +479 -3
  72. package/dist/node/ui/AgentDashboard.js +1204 -319
  73. package/dist/node/ui/AgentDashboard.visualizations.js +217 -0
  74. package/dist/node/ui/AgentRunList.js +359 -127
  75. package/dist/node/ui/hooks/index.js +468 -18
  76. package/dist/node/ui/hooks/useAgentMutations.js +443 -8
  77. package/dist/node/ui/hooks/useRunList.js +25 -10
  78. package/dist/node/ui/index.js +1293 -390
  79. package/dist/node/ui/renderers/agent-list.markdown.js +14 -5
  80. package/dist/node/ui/renderers/dashboard.markdown.js +207 -36
  81. package/dist/node/ui/renderers/index.js +245 -49
  82. package/dist/node/ui/renderers/run-list.markdown.js +9 -4
  83. package/dist/node/ui/renderers/tool-registry.markdown.js +15 -4
  84. package/dist/node/ui/views/RunDataTable.js +326 -0
  85. package/dist/node/ui/views/RunListView.js +359 -127
  86. package/dist/node/ui/views/index.js +406 -174
  87. package/dist/node/ui/views/run-data-table.columns.js +271 -0
  88. package/dist/node/ui/views/run-list.shared.js +177 -0
  89. package/dist/node/visualizations/catalog.js +134 -0
  90. package/dist/node/visualizations/index.js +187 -0
  91. package/dist/node/visualizations/selectors.js +181 -0
  92. package/dist/presentations/index.js +49 -49
  93. package/dist/proof/index.d.ts +2 -0
  94. package/dist/proof/meetup-proof.d.ts +10 -0
  95. package/dist/proof/meetup-proof.runtime.d.ts +22 -0
  96. package/dist/proof/meetup-proof.scenario.d.ts +2 -0
  97. package/dist/proof/meetup-proof.suite.d.ts +1 -0
  98. package/dist/proof/meetup-proof.test.d.ts +1 -0
  99. package/dist/run/index.js +818 -812
  100. package/dist/run/run.handler.d.ts +4 -0
  101. package/dist/run/run.handler.js +666 -1
  102. package/dist/shared/demo-dashboard-data.d.ts +16 -0
  103. package/dist/shared/demo-runtime-seed.d.ts +17 -0
  104. package/dist/shared/demo-runtime.d.ts +8 -0
  105. package/dist/shared/demo-runtime.test.d.ts +1 -0
  106. package/dist/shared/index.d.ts +3 -0
  107. package/dist/shared/index.js +293 -1
  108. package/dist/shared/mock-runs.d.ts +4 -0
  109. package/dist/shared/mock-runs.js +5 -0
  110. package/dist/tool/index.js +331 -331
  111. package/dist/tool/tool.handler.d.ts +4 -1
  112. package/dist/tool/tool.handler.js +479 -3
  113. package/dist/ui/AgentDashboard.js +1204 -319
  114. package/dist/ui/AgentDashboard.sandbox.test.d.ts +1 -0
  115. package/dist/ui/AgentDashboard.visualizations.d.ts +4 -0
  116. package/dist/ui/AgentDashboard.visualizations.js +218 -0
  117. package/dist/ui/AgentRunList.js +359 -127
  118. package/dist/ui/hooks/index.js +468 -18
  119. package/dist/ui/hooks/useAgentMutations.js +443 -8
  120. package/dist/ui/hooks/useRunList.d.ts +8 -2
  121. package/dist/ui/hooks/useRunList.js +25 -10
  122. package/dist/ui/index.js +1293 -390
  123. package/dist/ui/renderers/agent-list.markdown.d.ts +1 -1
  124. package/dist/ui/renderers/agent-list.markdown.js +14 -5
  125. package/dist/ui/renderers/agent-list.renderer.d.ts +1 -1
  126. package/dist/ui/renderers/dashboard.markdown.d.ts +1 -1
  127. package/dist/ui/renderers/dashboard.markdown.js +207 -36
  128. package/dist/ui/renderers/index.js +245 -49
  129. package/dist/ui/renderers/run-list.markdown.d.ts +1 -1
  130. package/dist/ui/renderers/run-list.markdown.js +9 -4
  131. package/dist/ui/renderers/tool-registry.markdown.d.ts +2 -2
  132. package/dist/ui/renderers/tool-registry.markdown.js +15 -4
  133. package/dist/ui/views/RunDataTable.d.ts +18 -0
  134. package/dist/ui/views/RunDataTable.js +327 -0
  135. package/dist/ui/views/RunListView.js +359 -127
  136. package/dist/ui/views/index.js +406 -174
  137. package/dist/ui/views/run-data-table.columns.d.ts +3 -0
  138. package/dist/ui/views/run-data-table.columns.js +272 -0
  139. package/dist/ui/views/run-list.shared.d.ts +14 -0
  140. package/dist/ui/views/run-list.shared.js +178 -0
  141. package/dist/visualizations/catalog.d.ts +10 -0
  142. package/dist/visualizations/catalog.js +135 -0
  143. package/dist/visualizations/index.d.ts +2 -0
  144. package/dist/visualizations/index.js +188 -0
  145. package/dist/visualizations/selectors.d.ts +3 -0
  146. package/dist/visualizations/selectors.js +182 -0
  147. package/dist/visualizations/selectors.test.d.ts +1 -0
  148. package/package.json +114 -11
  149. package/proofs/agent-console-meetup.replay.json +220 -0
  150. package/src/agent/agent.handler.ts +18 -1
  151. package/src/agent.feature.ts +3 -0
  152. package/src/docs/agent-console.docblock.ts +11 -8
  153. package/src/example.test.ts +75 -0
  154. package/src/example.ts +2 -3
  155. package/src/handlers/agent.handlers.ts +55 -2
  156. package/src/handlers/index.ts +18 -2
  157. package/src/handlers/mock-handlers.test.ts +77 -0
  158. package/src/index.ts +2 -0
  159. package/src/proof/index.ts +2 -0
  160. package/src/proof/meetup-proof.runtime.ts +196 -0
  161. package/src/proof/meetup-proof.scenario.ts +99 -0
  162. package/src/proof/meetup-proof.suite.ts +29 -0
  163. package/src/proof/meetup-proof.test.ts +28 -0
  164. package/src/proof/meetup-proof.ts +130 -0
  165. package/src/run/run.handler.ts +17 -1
  166. package/src/shared/demo-dashboard-data.ts +58 -0
  167. package/src/shared/demo-runtime-seed.ts +139 -0
  168. package/src/shared/demo-runtime.test.ts +169 -0
  169. package/src/shared/demo-runtime.ts +260 -0
  170. package/src/shared/index.ts +11 -0
  171. package/src/shared/mock-runs.ts +5 -0
  172. package/src/tool/tool.handler.ts +21 -4
  173. package/src/ui/AgentDashboard.sandbox.test.tsx +312 -0
  174. package/src/ui/AgentDashboard.tsx +4 -1
  175. package/src/ui/AgentDashboard.visualizations.tsx +35 -0
  176. package/src/ui/hooks/useAgentMutations.ts +19 -11
  177. package/src/ui/hooks/useRunList.ts +41 -9
  178. package/src/ui/renderers/agent-list.markdown.ts +32 -13
  179. package/src/ui/renderers/agent-list.renderer.tsx +1 -1
  180. package/src/ui/renderers/dashboard.markdown.ts +38 -43
  181. package/src/ui/renderers/run-list.markdown.ts +17 -9
  182. package/src/ui/renderers/tool-registry.markdown.ts +22 -10
  183. package/src/ui/views/RunDataTable.tsx +74 -0
  184. package/src/ui/views/RunListView.tsx +37 -111
  185. package/src/ui/views/run-data-table.columns.tsx +102 -0
  186. package/src/ui/views/run-list.shared.tsx +139 -0
  187. package/src/visualizations/catalog.ts +132 -0
  188. package/src/visualizations/index.ts +2 -0
  189. package/src/visualizations/selectors.test.ts +12 -0
  190. package/src/visualizations/selectors.ts +70 -0
  191. 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
- mockListAgentsHandler
57
- } from "@contractspec/example.agent-console/handlers";
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 = await mockListAgentsHandler({
65
- organizationId: "demo-org",
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
- mockListAgentsHandler as mockListAgentsHandler2,
235
- mockListRunsHandler,
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 [agentsData, runsData, toolsData] = await Promise.all([
252
- mockListAgentsHandler2({
253
- organizationId: "demo-org",
254
- limit: 100
255
- }),
256
- mockListRunsHandler({
257
- limit: 100
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 | ${agentsData.total} |`,
453
+ `| Total Agents | ${data.summary.totalAgents} |`,
280
454
  `| Active Agents | ${activeAgents} |`,
281
- `| Total Runs | ${runsData.total} |`,
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 | ${toolsData.total} |`,
460
+ `| Total Tools | ${data.summary.totalTools} |`,
287
461
  `| Active Tools | ${activeTools} |`,
288
462
  "",
289
463
  "## Agents",
290
464
  ""
291
465
  ];
292
- if (agentsData.items.length === 0) {
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 agentsData.items.slice(0, 5)) {
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 (agentsData.items.length > 5) {
301
- lines.push(`| ... | ... | ... | _${agentsData.total - 5} more_ |`);
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 (runsData.items.length === 0) {
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 runsData.items.slice(0, 5)) {
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 (runsData.items.length > 5) {
316
- lines.push(`| ... | ... | ... | ... | ... | _${runsData.total - 5} more_ |`);
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 toolsData.items) {
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 { mockListRunsHandler as mockListRunsHandler2 } from "@contractspec/example.agent-console/handlers";
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 mockListRunsHandler2({
363
- organizationId: "demo-org",
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 { mockListToolsHandler as mockListToolsHandler2 } from "@contractspec/example.agent-console/handlers";
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 = await mockListToolsHandler2({
399
- organizationId: "demo-org",
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 { mockListRunsHandler } from "@contractspec/example.agent-console/handlers";
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 mockListRunsHandler({
17
- organizationId: "demo-org",
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 { mockListToolsHandler } from "@contractspec/example.agent-console/handlers";
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 = await mockListToolsHandler({
10
- organizationId: "demo-org",
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
  });