@contractspec/example.agent-console 3.8.9 → 3.8.10
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 +225 -222
- package/CHANGELOG.md +18 -0
- package/dist/agent/agent.entity.js +1 -127
- package/dist/agent/agent.enum.js +1 -25
- package/dist/agent/agent.event.js +1 -116
- package/dist/agent/agent.handler.js +1 -1030
- package/dist/agent/agent.operation.js +1 -735
- package/dist/agent/agent.presentation.js +1 -282
- package/dist/agent/agent.schema.js +1 -215
- package/dist/agent/agent.test-spec.js +1 -58
- package/dist/agent/index.js +1 -1248
- package/dist/agent.capability.js +1 -19
- package/dist/agent.feature.js +1 -305
- package/dist/browser/agent/agent.entity.js +1 -127
- package/dist/browser/agent/agent.enum.js +1 -25
- package/dist/browser/agent/agent.event.js +1 -116
- package/dist/browser/agent/agent.handler.js +1 -1030
- package/dist/browser/agent/agent.operation.js +1 -735
- package/dist/browser/agent/agent.presentation.js +1 -282
- package/dist/browser/agent/agent.schema.js +1 -215
- package/dist/browser/agent/agent.test-spec.js +1 -58
- package/dist/browser/agent/index.js +1 -1248
- package/dist/browser/agent.capability.js +1 -19
- package/dist/browser/agent.feature.js +1 -305
- package/dist/browser/docs/agent-console.docblock.js +5 -49
- package/dist/browser/docs/index.js +5 -49
- package/dist/browser/example.js +1 -41
- package/dist/browser/handlers/agent.handlers.js +6 -2143
- package/dist/browser/handlers/index.js +6 -2943
- package/dist/browser/index.js +14 -6828
- package/dist/browser/presentations/index.js +1 -693
- package/dist/browser/run/index.js +1 -1363
- package/dist/browser/run/run.entity.js +1 -160
- package/dist/browser/run/run.enum.js +1 -34
- package/dist/browser/run/run.event.js +1 -217
- package/dist/browser/run/run.handler.js +1 -919
- package/dist/browser/run/run.operation.js +1 -667
- package/dist/browser/run/run.presentation.js +1 -223
- package/dist/browser/run/run.schema.js +1 -179
- package/dist/browser/run/run.test-spec.js +1 -58
- package/dist/browser/seeders/index.js +2 -21
- package/dist/browser/shared/index.js +1 -626
- package/dist/browser/shared/mock-agents.js +1 -82
- package/dist/browser/shared/mock-runs.js +1 -113
- package/dist/browser/shared/mock-tools.js +1 -146
- package/dist/browser/tool/index.js +1 -949
- package/dist/browser/tool/tool.entity.js +1 -90
- package/dist/browser/tool/tool.enum.js +1 -26
- package/dist/browser/tool/tool.event.js +1 -99
- package/dist/browser/tool/tool.handler.js +1 -699
- package/dist/browser/tool/tool.operation.js +1 -482
- package/dist/browser/tool/tool.presentation.js +1 -188
- package/dist/browser/tool/tool.schema.js +1 -141
- package/dist/browser/tool/tool.test-spec.js +1 -58
- package/dist/browser/ui/AgentDashboard.js +1 -2527
- package/dist/browser/ui/AgentDashboard.visualizations.js +1 -217
- package/dist/browser/ui/AgentRunList.js +1 -482
- package/dist/browser/ui/AgentToolRegistry.js +1 -212
- package/dist/browser/ui/ExecutionConsoleHost.js +1 -0
- package/dist/browser/ui/hooks/index.js +1 -740
- package/dist/browser/ui/hooks/useAgentList.js +1 -55
- package/dist/browser/ui/hooks/useAgentMutations.js +1 -530
- package/dist/browser/ui/hooks/useRunList.js +1 -70
- package/dist/browser/ui/hooks/useToolList.js +1 -85
- package/dist/browser/ui/index.js +5 -3018
- package/dist/browser/ui/modals/AgentActionsModal.js +1 -304
- package/dist/browser/ui/modals/CreateAgentModal.js +1 -243
- package/dist/browser/ui/modals/index.js +1 -546
- package/dist/browser/ui/overlays/demo-overlays.js +1 -64
- package/dist/browser/ui/overlays/index.js +1 -64
- package/dist/browser/ui/renderers/agent-list.markdown.js +2 -64
- package/dist/browser/ui/renderers/agent-list.renderer.js +1 -180
- package/dist/browser/ui/renderers/dashboard.markdown.js +2 -288
- package/dist/browser/ui/renderers/index.js +5 -642
- package/dist/browser/ui/renderers/run-list.markdown.js +2 -50
- package/dist/browser/ui/renderers/tool-registry.markdown.js +2 -64
- package/dist/browser/ui/views/AgentListView.js +1 -165
- package/dist/browser/ui/views/RunDataTable.js +1 -326
- package/dist/browser/ui/views/RunListView.js +1 -479
- package/dist/browser/ui/views/ToolRegistryView.js +1 -209
- package/dist/browser/ui/views/index.js +1 -851
- package/dist/browser/ui/views/run-data-table.columns.js +1 -271
- package/dist/browser/ui/views/run-list.shared.js +1 -177
- package/dist/browser/visualizations/catalog.js +1 -134
- package/dist/browser/visualizations/index.js +1 -187
- package/dist/browser/visualizations/selectors.js +1 -181
- package/dist/docs/agent-console.docblock.js +5 -49
- package/dist/docs/index.js +5 -49
- package/dist/example.js +1 -41
- package/dist/handlers/agent.handlers.js +6 -2143
- package/dist/handlers/index.js +6 -2943
- package/dist/index.js +14 -6828
- package/dist/node/agent/agent.entity.js +1 -127
- package/dist/node/agent/agent.enum.js +1 -25
- package/dist/node/agent/agent.event.js +1 -116
- package/dist/node/agent/agent.handler.js +1 -1030
- package/dist/node/agent/agent.operation.js +1 -735
- package/dist/node/agent/agent.presentation.js +1 -282
- package/dist/node/agent/agent.schema.js +1 -215
- package/dist/node/agent/agent.test-spec.js +1 -58
- package/dist/node/agent/index.js +1 -1248
- package/dist/node/agent.capability.js +1 -19
- package/dist/node/agent.feature.js +1 -305
- package/dist/node/docs/agent-console.docblock.js +5 -49
- package/dist/node/docs/index.js +5 -49
- package/dist/node/example.js +1 -41
- package/dist/node/handlers/agent.handlers.js +6 -2143
- package/dist/node/handlers/index.js +6 -2943
- package/dist/node/index.js +14 -6828
- package/dist/node/presentations/index.js +1 -693
- package/dist/node/run/index.js +1 -1363
- package/dist/node/run/run.entity.js +1 -160
- package/dist/node/run/run.enum.js +1 -34
- package/dist/node/run/run.event.js +1 -217
- package/dist/node/run/run.handler.js +1 -919
- package/dist/node/run/run.operation.js +1 -667
- package/dist/node/run/run.presentation.js +1 -223
- package/dist/node/run/run.schema.js +1 -179
- package/dist/node/run/run.test-spec.js +1 -58
- package/dist/node/seeders/index.js +2 -21
- package/dist/node/shared/index.js +1 -626
- package/dist/node/shared/mock-agents.js +1 -82
- package/dist/node/shared/mock-runs.js +1 -113
- package/dist/node/shared/mock-tools.js +1 -146
- package/dist/node/tool/index.js +1 -949
- package/dist/node/tool/tool.entity.js +1 -90
- package/dist/node/tool/tool.enum.js +1 -26
- package/dist/node/tool/tool.event.js +1 -99
- package/dist/node/tool/tool.handler.js +1 -699
- package/dist/node/tool/tool.operation.js +1 -482
- package/dist/node/tool/tool.presentation.js +1 -188
- package/dist/node/tool/tool.schema.js +1 -141
- package/dist/node/tool/tool.test-spec.js +1 -58
- package/dist/node/ui/AgentDashboard.js +1 -2527
- package/dist/node/ui/AgentDashboard.visualizations.js +1 -217
- package/dist/node/ui/AgentRunList.js +1 -482
- package/dist/node/ui/AgentToolRegistry.js +1 -212
- package/dist/node/ui/ExecutionConsoleHost.js +1 -0
- package/dist/node/ui/hooks/index.js +1 -740
- package/dist/node/ui/hooks/useAgentList.js +1 -55
- package/dist/node/ui/hooks/useAgentMutations.js +1 -530
- package/dist/node/ui/hooks/useRunList.js +1 -70
- package/dist/node/ui/hooks/useToolList.js +1 -85
- package/dist/node/ui/index.js +5 -3018
- package/dist/node/ui/modals/AgentActionsModal.js +1 -304
- package/dist/node/ui/modals/CreateAgentModal.js +1 -243
- package/dist/node/ui/modals/index.js +1 -546
- package/dist/node/ui/overlays/demo-overlays.js +1 -64
- package/dist/node/ui/overlays/index.js +1 -64
- package/dist/node/ui/renderers/agent-list.markdown.js +2 -64
- package/dist/node/ui/renderers/agent-list.renderer.js +1 -180
- package/dist/node/ui/renderers/dashboard.markdown.js +2 -288
- package/dist/node/ui/renderers/index.js +5 -642
- package/dist/node/ui/renderers/run-list.markdown.js +2 -50
- package/dist/node/ui/renderers/tool-registry.markdown.js +2 -64
- package/dist/node/ui/views/AgentListView.js +1 -165
- package/dist/node/ui/views/RunDataTable.js +1 -326
- package/dist/node/ui/views/RunListView.js +1 -479
- package/dist/node/ui/views/ToolRegistryView.js +1 -209
- package/dist/node/ui/views/index.js +1 -851
- package/dist/node/ui/views/run-data-table.columns.js +1 -271
- package/dist/node/ui/views/run-list.shared.js +1 -177
- package/dist/node/visualizations/catalog.js +1 -134
- package/dist/node/visualizations/index.js +1 -187
- package/dist/node/visualizations/selectors.js +1 -181
- package/dist/presentations/index.js +1 -693
- package/dist/run/index.js +1 -1363
- package/dist/run/run.entity.js +1 -160
- package/dist/run/run.enum.js +1 -34
- package/dist/run/run.event.js +1 -217
- package/dist/run/run.handler.js +1 -919
- package/dist/run/run.operation.js +1 -667
- package/dist/run/run.presentation.js +1 -223
- package/dist/run/run.schema.js +1 -179
- package/dist/run/run.test-spec.js +1 -58
- package/dist/seeders/index.js +2 -21
- package/dist/shared/index.js +1 -626
- package/dist/shared/mock-agents.js +1 -82
- package/dist/shared/mock-runs.js +1 -113
- package/dist/shared/mock-tools.js +1 -146
- package/dist/tool/index.js +1 -949
- package/dist/tool/tool.entity.js +1 -90
- package/dist/tool/tool.enum.js +1 -26
- package/dist/tool/tool.event.js +1 -99
- package/dist/tool/tool.handler.js +1 -699
- package/dist/tool/tool.operation.js +1 -482
- package/dist/tool/tool.presentation.js +1 -188
- package/dist/tool/tool.schema.js +1 -141
- package/dist/tool/tool.test-spec.js +1 -58
- package/dist/ui/AgentDashboard.js +1 -2527
- package/dist/ui/AgentDashboard.visualizations.js +1 -217
- package/dist/ui/AgentRunList.js +1 -482
- package/dist/ui/AgentToolRegistry.js +1 -212
- package/dist/ui/ExecutionConsoleHost.d.ts +1 -0
- package/dist/ui/ExecutionConsoleHost.js +2 -0
- package/dist/ui/ExecutionConsoleHost.test.d.ts +1 -0
- package/dist/ui/hooks/index.js +1 -740
- package/dist/ui/hooks/useAgentList.js +1 -55
- package/dist/ui/hooks/useAgentMutations.js +1 -530
- package/dist/ui/hooks/useRunList.js +1 -70
- package/dist/ui/hooks/useToolList.js +1 -85
- package/dist/ui/index.d.ts +1 -0
- package/dist/ui/index.js +5 -3018
- package/dist/ui/modals/AgentActionsModal.js +1 -304
- package/dist/ui/modals/CreateAgentModal.js +1 -243
- package/dist/ui/modals/index.js +1 -546
- package/dist/ui/overlays/demo-overlays.js +1 -64
- package/dist/ui/overlays/index.js +1 -64
- package/dist/ui/renderers/agent-list.markdown.js +2 -64
- package/dist/ui/renderers/agent-list.renderer.js +1 -180
- package/dist/ui/renderers/dashboard.markdown.js +2 -288
- package/dist/ui/renderers/index.js +5 -642
- package/dist/ui/renderers/run-list.markdown.js +2 -50
- package/dist/ui/renderers/tool-registry.markdown.js +2 -64
- package/dist/ui/views/AgentListView.js +1 -165
- package/dist/ui/views/RunDataTable.js +1 -326
- package/dist/ui/views/RunListView.js +1 -479
- package/dist/ui/views/ToolRegistryView.js +1 -209
- package/dist/ui/views/index.js +1 -851
- package/dist/ui/views/run-data-table.columns.js +1 -271
- package/dist/ui/views/run-list.shared.js +1 -177
- package/dist/visualizations/catalog.js +1 -134
- package/dist/visualizations/index.js +1 -187
- package/dist/visualizations/selectors.js +1 -181
- package/package.json +26 -10
- package/src/ui/ExecutionConsoleHost.test.tsx +110 -0
- package/src/ui/ExecutionConsoleHost.tsx +14 -0
- package/src/ui/index.ts +1 -1
|
@@ -1,210 +1,2 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
|
|
3
|
-
import { useTemplateRuntime } from "@contractspec/lib.example-shared-ui";
|
|
4
|
-
import { useCallback, useEffect, useMemo, useState } from "react";
|
|
5
|
-
function useToolList(options = {}) {
|
|
6
|
-
const { handlers, projectId } = useTemplateRuntime();
|
|
7
|
-
const { agent } = handlers;
|
|
8
|
-
const [data, setData] = useState(null);
|
|
9
|
-
const [loading, setLoading] = useState(true);
|
|
10
|
-
const [error, setError] = useState(null);
|
|
11
|
-
const [page, setPage] = useState(1);
|
|
12
|
-
const fetchData = useCallback(async () => {
|
|
13
|
-
setLoading(true);
|
|
14
|
-
setError(null);
|
|
15
|
-
try {
|
|
16
|
-
const result = await agent.listTools({
|
|
17
|
-
projectId,
|
|
18
|
-
search: options.search,
|
|
19
|
-
category: options.category,
|
|
20
|
-
status: options.status === "all" ? undefined : options.status,
|
|
21
|
-
limit: options.limit ?? 50,
|
|
22
|
-
offset: (page - 1) * (options.limit ?? 50)
|
|
23
|
-
});
|
|
24
|
-
setData(result);
|
|
25
|
-
} catch (err) {
|
|
26
|
-
setError(err instanceof Error ? err : new Error("Unknown error"));
|
|
27
|
-
} finally {
|
|
28
|
-
setLoading(false);
|
|
29
|
-
}
|
|
30
|
-
}, [
|
|
31
|
-
agent,
|
|
32
|
-
projectId,
|
|
33
|
-
options.search,
|
|
34
|
-
options.category,
|
|
35
|
-
options.status,
|
|
36
|
-
options.limit,
|
|
37
|
-
page
|
|
38
|
-
]);
|
|
39
|
-
useEffect(() => {
|
|
40
|
-
fetchData();
|
|
41
|
-
}, [fetchData]);
|
|
42
|
-
const { stats, groupedByCategory, categoryStats } = useMemo(() => {
|
|
43
|
-
if (!data)
|
|
44
|
-
return { stats: null, groupedByCategory: {}, categoryStats: [] };
|
|
45
|
-
const items = data.items;
|
|
46
|
-
const active = items.filter((t) => t.status === "ACTIVE").length;
|
|
47
|
-
const deprecated = items.filter((t) => t.status === "DEPRECATED").length;
|
|
48
|
-
const disabled = items.filter((t) => t.status === "DISABLED").length;
|
|
49
|
-
const grouped = {};
|
|
50
|
-
const byCategory = {};
|
|
51
|
-
items.forEach((t) => {
|
|
52
|
-
const cat = t.category;
|
|
53
|
-
if (!grouped[cat])
|
|
54
|
-
grouped[cat] = [];
|
|
55
|
-
grouped[cat].push(t);
|
|
56
|
-
byCategory[cat] = (byCategory[cat] || 0) + 1;
|
|
57
|
-
});
|
|
58
|
-
const catStats = Object.entries(byCategory).map(([category, count]) => ({ category, count })).sort((a, b) => b.count - a.count);
|
|
59
|
-
return {
|
|
60
|
-
stats: {
|
|
61
|
-
total: data.total,
|
|
62
|
-
active,
|
|
63
|
-
deprecated,
|
|
64
|
-
disabled,
|
|
65
|
-
topCategories: catStats.slice(0, 5)
|
|
66
|
-
},
|
|
67
|
-
groupedByCategory: grouped,
|
|
68
|
-
categoryStats: catStats
|
|
69
|
-
};
|
|
70
|
-
}, [data]);
|
|
71
|
-
return {
|
|
72
|
-
data,
|
|
73
|
-
loading,
|
|
74
|
-
error,
|
|
75
|
-
stats,
|
|
76
|
-
groupedByCategory,
|
|
77
|
-
categoryStats,
|
|
78
|
-
page,
|
|
79
|
-
refetch: fetchData,
|
|
80
|
-
nextPage: () => setPage((p) => p + 1),
|
|
81
|
-
prevPage: () => page > 1 && setPage((p) => p - 1)
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
// src/ui/views/ToolRegistryView.tsx
|
|
86
|
-
import {
|
|
87
|
-
Button,
|
|
88
|
-
EmptyState,
|
|
89
|
-
EntityCard,
|
|
90
|
-
ErrorState,
|
|
91
|
-
LoaderBlock,
|
|
92
|
-
StatCard,
|
|
93
|
-
StatCardGroup,
|
|
94
|
-
StatusChip
|
|
95
|
-
} from "@contractspec/lib.design-system";
|
|
96
|
-
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
97
|
-
"use client";
|
|
98
|
-
var categoryIcons = {
|
|
99
|
-
RETRIEVAL: "\uD83D\uDD0D",
|
|
100
|
-
COMPUTATION: "\uD83E\uDDEE",
|
|
101
|
-
COMMUNICATION: "\uD83D\uDCE7",
|
|
102
|
-
INTEGRATION: "\uD83D\uDD17",
|
|
103
|
-
UTILITY: "\uD83D\uDEE0\uFE0F",
|
|
104
|
-
CUSTOM: "\u2699\uFE0F"
|
|
105
|
-
};
|
|
106
|
-
function getStatusTone(status) {
|
|
107
|
-
switch (status) {
|
|
108
|
-
case "ACTIVE":
|
|
109
|
-
return "success";
|
|
110
|
-
case "DRAFT":
|
|
111
|
-
return "neutral";
|
|
112
|
-
case "DEPRECATED":
|
|
113
|
-
return "warning";
|
|
114
|
-
case "DISABLED":
|
|
115
|
-
return "danger";
|
|
116
|
-
default:
|
|
117
|
-
return "neutral";
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
function ToolRegistryView({
|
|
121
|
-
onToolClick,
|
|
122
|
-
onCreateTool
|
|
123
|
-
}) {
|
|
124
|
-
const { data, loading, error, groupedByCategory, categoryStats, refetch } = useToolList();
|
|
125
|
-
if (loading && !data) {
|
|
126
|
-
return /* @__PURE__ */ jsxDEV(LoaderBlock, {
|
|
127
|
-
label: "Loading tools..."
|
|
128
|
-
}, undefined, false, undefined, this);
|
|
129
|
-
}
|
|
130
|
-
if (error) {
|
|
131
|
-
return /* @__PURE__ */ jsxDEV(ErrorState, {
|
|
132
|
-
title: "Failed to load tools",
|
|
133
|
-
description: error.message,
|
|
134
|
-
onRetry: refetch,
|
|
135
|
-
retryLabel: "Retry"
|
|
136
|
-
}, undefined, false, undefined, this);
|
|
137
|
-
}
|
|
138
|
-
if (!data?.items.length) {
|
|
139
|
-
return /* @__PURE__ */ jsxDEV(EmptyState, {
|
|
140
|
-
title: "No tools registered",
|
|
141
|
-
description: "Create your first tool to extend agent capabilities.",
|
|
142
|
-
primaryAction: onCreateTool ? /* @__PURE__ */ jsxDEV(Button, {
|
|
143
|
-
onPress: onCreateTool,
|
|
144
|
-
children: "Create Tool"
|
|
145
|
-
}, undefined, false, undefined, this) : undefined
|
|
146
|
-
}, undefined, false, undefined, this);
|
|
147
|
-
}
|
|
148
|
-
return /* @__PURE__ */ jsxDEV("div", {
|
|
149
|
-
className: "space-y-8",
|
|
150
|
-
children: [
|
|
151
|
-
/* @__PURE__ */ jsxDEV(StatCardGroup, {
|
|
152
|
-
children: [
|
|
153
|
-
/* @__PURE__ */ jsxDEV(StatCard, {
|
|
154
|
-
label: "Total Tools",
|
|
155
|
-
value: data.total
|
|
156
|
-
}, undefined, false, undefined, this),
|
|
157
|
-
categoryStats.slice(0, 3).map(({ category, count }) => /* @__PURE__ */ jsxDEV(StatCard, {
|
|
158
|
-
label: `${categoryIcons[category] ?? ""} ${category}`,
|
|
159
|
-
value: count
|
|
160
|
-
}, category, false, undefined, this))
|
|
161
|
-
]
|
|
162
|
-
}, undefined, true, undefined, this),
|
|
163
|
-
Object.entries(groupedByCategory).map(([category, tools]) => /* @__PURE__ */ jsxDEV("section", {
|
|
164
|
-
className: "space-y-4",
|
|
165
|
-
children: [
|
|
166
|
-
/* @__PURE__ */ jsxDEV("div", {
|
|
167
|
-
className: "flex items-center gap-2",
|
|
168
|
-
children: [
|
|
169
|
-
/* @__PURE__ */ jsxDEV("span", {
|
|
170
|
-
className: "text-2xl",
|
|
171
|
-
children: categoryIcons[category]
|
|
172
|
-
}, undefined, false, undefined, this),
|
|
173
|
-
/* @__PURE__ */ jsxDEV("h3", {
|
|
174
|
-
className: "font-semibold text-lg",
|
|
175
|
-
children: category
|
|
176
|
-
}, undefined, false, undefined, this),
|
|
177
|
-
/* @__PURE__ */ jsxDEV("span", {
|
|
178
|
-
className: "rounded-full bg-muted px-2 py-0.5 text-muted-foreground text-xs",
|
|
179
|
-
children: tools.length
|
|
180
|
-
}, undefined, false, undefined, this)
|
|
181
|
-
]
|
|
182
|
-
}, undefined, true, undefined, this),
|
|
183
|
-
/* @__PURE__ */ jsxDEV("div", {
|
|
184
|
-
className: "grid gap-4 md:grid-cols-2 lg:grid-cols-3",
|
|
185
|
-
children: tools.map((tool) => /* @__PURE__ */ jsxDEV(EntityCard, {
|
|
186
|
-
cardTitle: tool.name,
|
|
187
|
-
cardSubtitle: `v${tool.version}`,
|
|
188
|
-
meta: /* @__PURE__ */ jsxDEV("p", {
|
|
189
|
-
className: "text-muted-foreground text-sm",
|
|
190
|
-
children: tool.description
|
|
191
|
-
}, undefined, false, undefined, this),
|
|
192
|
-
chips: /* @__PURE__ */ jsxDEV(StatusChip, {
|
|
193
|
-
tone: getStatusTone(tool.status),
|
|
194
|
-
label: tool.status
|
|
195
|
-
}, undefined, false, undefined, this),
|
|
196
|
-
footer: /* @__PURE__ */ jsxDEV("code", {
|
|
197
|
-
className: "text-muted-foreground text-xs",
|
|
198
|
-
children: tool.name
|
|
199
|
-
}, undefined, false, undefined, this),
|
|
200
|
-
onClick: onToolClick ? () => onToolClick(tool.id) : undefined
|
|
201
|
-
}, tool.id, false, undefined, this))
|
|
202
|
-
}, undefined, false, undefined, this)
|
|
203
|
-
]
|
|
204
|
-
}, category, true, undefined, this))
|
|
205
|
-
]
|
|
206
|
-
}, undefined, true, undefined, this);
|
|
207
|
-
}
|
|
208
|
-
export {
|
|
209
|
-
ToolRegistryView
|
|
210
|
-
};
|
|
2
|
+
import{useTemplateRuntime as h}from"@contractspec/lib.example-shared-ui";import{useCallback as m,useEffect as b,useMemo as T,useState as _}from"react";function P(q={}){let{handlers:W,projectId:U}=h(),{agent:X}=W,[O,z]=_(null),[G,Y]=_(!0),[K,Q]=_(null),[F,v]=_(1),M=m(async()=>{Y(!0),Q(null);try{let H=await X.listTools({projectId:U,search:q.search,category:q.category,status:q.status==="all"?void 0:q.status,limit:q.limit??50,offset:(F-1)*(q.limit??50)});z(H)}catch(H){Q(H instanceof Error?H:Error("Unknown error"))}finally{Y(!1)}},[X,U,q.search,q.category,q.status,q.limit,F]);b(()=>{M()},[M]);let{stats:D,groupedByCategory:I,categoryStats:L}=T(()=>{if(!O)return{stats:null,groupedByCategory:{},categoryStats:[]};let H=O.items,f=H.filter((J)=>J.status==="ACTIVE").length,E=H.filter((J)=>J.status==="DEPRECATED").length,k=H.filter((J)=>J.status==="DISABLED").length,Z={},V={};H.forEach((J)=>{let N=J.category;if(!Z[N])Z[N]=[];Z[N].push(J),V[N]=(V[N]||0)+1});let w=Object.entries(V).map(([J,N])=>({category:J,count:N})).sort((J,N)=>N.count-J.count);return{stats:{total:O.total,active:f,deprecated:E,disabled:k,topCategories:w.slice(0,5)},groupedByCategory:Z,categoryStats:w}},[O]);return{data:O,loading:G,error:K,stats:D,groupedByCategory:I,categoryStats:L,page:F,refetch:M,nextPage:()=>v((H)=>H+1),prevPage:()=>F>1&&v((H)=>H-1)}}import{Button as S,EmptyState as x,EntityCard as j,ErrorState as C,LoaderBlock as u,StatCard as R,StatCardGroup as d,StatusChip as y}from"@contractspec/lib.design-system";import{jsx as A,jsxs as $}from"react/jsx-runtime";var B={RETRIEVAL:"\uD83D\uDD0D",COMPUTATION:"\uD83E\uDDEE",COMMUNICATION:"\uD83D\uDCE7",INTEGRATION:"\uD83D\uDD17",UTILITY:"\uD83D\uDEE0\uFE0F",CUSTOM:"\u2699\uFE0F"};function p(q){switch(q){case"ACTIVE":return"success";case"DRAFT":return"neutral";case"DEPRECATED":return"warning";case"DISABLED":return"danger";default:return"neutral"}}function r({onToolClick:q,onCreateTool:W}){let{data:U,loading:X,error:O,groupedByCategory:z,categoryStats:G,refetch:Y}=P();if(X&&!U)return A(u,{label:"Loading tools..."});if(O)return A(C,{title:"Failed to load tools",description:O.message,onRetry:Y,retryLabel:"Retry"});if(!U?.items.length)return A(x,{title:"No tools registered",description:"Create your first tool to extend agent capabilities.",primaryAction:W?A(S,{onPress:W,children:"Create Tool"}):void 0});return $("div",{className:"space-y-8",children:[$(d,{children:[A(R,{label:"Total Tools",value:U.total}),G.slice(0,3).map(({category:K,count:Q})=>A(R,{label:`${B[K]??""} ${K}`,value:Q},K))]}),Object.entries(z).map(([K,Q])=>$("section",{className:"space-y-4",children:[$("div",{className:"flex items-center gap-2",children:[A("span",{className:"text-2xl",children:B[K]}),A("h3",{className:"font-semibold text-lg",children:K}),A("span",{className:"rounded-full bg-muted px-2 py-0.5 text-muted-foreground text-xs",children:Q.length})]}),A("div",{className:"grid gap-4 md:grid-cols-2 lg:grid-cols-3",children:Q.map((F)=>A(j,{cardTitle:F.name,cardSubtitle:`v${F.version}`,meta:A("p",{className:"text-muted-foreground text-sm",children:F.description}),chips:A(y,{tone:p(F.status),label:F.status}),footer:A("code",{className:"text-muted-foreground text-xs",children:F.name}),onClick:q?()=>q(F.id):void 0},F.id))})]},K))]})}export{r as ToolRegistryView};
|