apteva 0.4.17 → 0.4.19
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/dist/ActivityPage.9a1qg4bp.js +3 -0
- package/dist/ApiDocsPage.rfpf7ws1.js +4 -0
- package/dist/App.1nmg2h01.js +4 -0
- package/dist/App.5qw2dtxs.js +4 -0
- package/dist/App.6nc5acvk.js +4 -0
- package/dist/App.7vzbaz56.js +4 -0
- package/dist/App.8rfz30p1.js +4 -0
- package/dist/App.amwp54wf.js +4 -0
- package/dist/App.e4202qb4.js +267 -0
- package/dist/App.errxz2q4.js +4 -0
- package/dist/App.f8qsyhpr.js +4 -0
- package/dist/App.g8vq68n0.js +20 -0
- package/dist/App.kfyrnznw.js +13 -0
- package/dist/{App.mq6jqare.js → App.p02f4ret.js} +1 -1
- package/dist/App.p93mmyqw.js +4 -0
- package/dist/App.qmg33p02.js +4 -0
- package/dist/App.sdsc0258.js +4 -0
- package/dist/ConnectionsPage.7zqba1r0.js +3 -0
- package/dist/McpPage.kf2g327t.js +3 -0
- package/dist/SettingsPage.472c15ep.js +3 -0
- package/dist/SkillsPage.xdxnh68a.js +3 -0
- package/dist/TasksPage.7g0b8xwc.js +3 -0
- package/dist/TelemetryPage.pr7rbz4r.js +3 -0
- package/dist/TestsPage.zhc6rqjm.js +3 -0
- package/dist/apteva-kit.css +1 -1
- package/dist/index.html +1 -1
- package/dist/styles.css +1 -1
- package/package.json +9 -4
- package/src/auth/middleware.ts +2 -0
- package/src/channels/index.ts +40 -0
- package/src/channels/telegram.ts +306 -0
- package/src/db.ts +342 -11
- package/src/integrations/agentdojo.ts +1 -1
- package/src/mcp-handler.ts +31 -24
- package/src/mcp-platform.ts +41 -1
- package/src/providers.ts +22 -9
- package/src/routes/api/agent-utils.ts +38 -2
- package/src/routes/api/agents.ts +65 -2
- package/src/routes/api/channels.ts +182 -0
- package/src/routes/api/integrations.ts +13 -5
- package/src/routes/api/mcp.ts +27 -9
- package/src/routes/api/projects.ts +19 -2
- package/src/routes/api/system.ts +26 -12
- package/src/routes/api/telemetry.ts +30 -0
- package/src/routes/api/triggers.ts +478 -0
- package/src/routes/api/webhooks.ts +171 -0
- package/src/routes/api.ts +7 -1
- package/src/routes/static.ts +12 -3
- package/src/server.ts +43 -6
- package/src/triggers/agentdojo.ts +253 -0
- package/src/triggers/composio.ts +264 -0
- package/src/triggers/index.ts +71 -0
- package/src/tui/AgentList.tsx +145 -0
- package/src/tui/App.tsx +102 -0
- package/src/tui/Login.tsx +104 -0
- package/src/tui/api.ts +72 -0
- package/src/tui/index.tsx +7 -0
- package/src/web/App.tsx +18 -11
- package/src/web/components/agents/AgentCard.tsx +14 -7
- package/src/web/components/agents/AgentPanel.tsx +94 -137
- package/src/web/components/common/Icons.tsx +16 -0
- package/src/web/components/common/index.ts +1 -0
- package/src/web/components/connections/ConnectionsPage.tsx +54 -0
- package/src/web/components/connections/IntegrationsTab.tsx +144 -0
- package/src/web/components/connections/OverviewTab.tsx +137 -0
- package/src/web/components/connections/TriggersTab.tsx +1169 -0
- package/src/web/components/index.ts +1 -0
- package/src/web/components/layout/Header.tsx +196 -4
- package/src/web/components/layout/Sidebar.tsx +7 -1
- package/src/web/components/mcp/IntegrationsPanel.tsx +19 -3
- package/src/web/components/settings/SettingsPage.tsx +364 -2
- package/src/web/components/tasks/TasksPage.tsx +2 -2
- package/src/web/components/tests/TestsPage.tsx +1 -2
- package/src/web/context/TelemetryContext.tsx +14 -1
- package/src/web/context/index.ts +1 -1
- package/src/web/hooks/useAgents.ts +15 -11
- package/src/web/types.ts +1 -1
- package/dist/App.fq4xbpcz.js +0 -228
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import React, { useState, useEffect } from "react";
|
|
2
|
+
import { useAuth, useProjects } from "../../context";
|
|
3
|
+
|
|
4
|
+
interface Subscription {
|
|
5
|
+
id: string;
|
|
6
|
+
trigger_slug: string;
|
|
7
|
+
trigger_instance_id: string | null;
|
|
8
|
+
agent_id: string;
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
project_id: string | null;
|
|
11
|
+
created_at: string;
|
|
12
|
+
updated_at: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface Agent {
|
|
16
|
+
id: string;
|
|
17
|
+
name: string;
|
|
18
|
+
status: string;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function OverviewTab() {
|
|
22
|
+
const { authFetch } = useAuth();
|
|
23
|
+
const { currentProjectId } = useProjects();
|
|
24
|
+
|
|
25
|
+
const [subscriptions, setSubscriptions] = useState<Subscription[]>([]);
|
|
26
|
+
const [agents, setAgents] = useState<Agent[]>([]);
|
|
27
|
+
const [loading, setLoading] = useState(true);
|
|
28
|
+
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
const fetchAll = async () => {
|
|
31
|
+
setLoading(true);
|
|
32
|
+
const projectParam = currentProjectId && currentProjectId !== "unassigned" ? `?project_id=${currentProjectId}` : "";
|
|
33
|
+
|
|
34
|
+
try {
|
|
35
|
+
const [subsRes, agentsRes] = await Promise.all([
|
|
36
|
+
authFetch(`/api/subscriptions${projectParam}`).catch(() => null),
|
|
37
|
+
authFetch(`/api/agents`).catch(() => null),
|
|
38
|
+
]);
|
|
39
|
+
|
|
40
|
+
if (subsRes?.ok) {
|
|
41
|
+
const data = await subsRes.json();
|
|
42
|
+
setSubscriptions(data.subscriptions || []);
|
|
43
|
+
}
|
|
44
|
+
if (agentsRes?.ok) {
|
|
45
|
+
const data = await agentsRes.json();
|
|
46
|
+
setAgents(data.agents || []);
|
|
47
|
+
}
|
|
48
|
+
} catch (e) {
|
|
49
|
+
console.error("Failed to fetch overview data:", e);
|
|
50
|
+
}
|
|
51
|
+
setLoading(false);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
fetchAll();
|
|
55
|
+
}, [authFetch, currentProjectId]);
|
|
56
|
+
|
|
57
|
+
if (loading) {
|
|
58
|
+
return <div className="text-center py-12 text-[#666]">Loading...</div>;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const enabledSubs = subscriptions.filter(s => s.enabled);
|
|
62
|
+
const disabledSubs = subscriptions.filter(s => !s.enabled);
|
|
63
|
+
const agentMap = new Map(agents.map(a => [a.id, a]));
|
|
64
|
+
|
|
65
|
+
return (
|
|
66
|
+
<div className="space-y-6">
|
|
67
|
+
{/* Stats */}
|
|
68
|
+
<div className="grid grid-cols-3 gap-4">
|
|
69
|
+
<StatCard label="Active" value={enabledSubs.length} />
|
|
70
|
+
<StatCard label="Disabled" value={disabledSubs.length} />
|
|
71
|
+
<StatCard label="Total" value={subscriptions.length} />
|
|
72
|
+
</div>
|
|
73
|
+
|
|
74
|
+
{/* Subscriptions */}
|
|
75
|
+
<section>
|
|
76
|
+
<h3 className="text-sm font-medium text-[#888] mb-3">Subscriptions ({subscriptions.length})</h3>
|
|
77
|
+
{subscriptions.length === 0 ? (
|
|
78
|
+
<div className="bg-[#111] border border-[#1a1a1a] rounded-lg p-6 text-center text-[#666] text-sm">
|
|
79
|
+
No subscriptions yet. Go to the Triggers tab to create one.
|
|
80
|
+
</div>
|
|
81
|
+
) : (
|
|
82
|
+
<div className="space-y-2">
|
|
83
|
+
{subscriptions.map(sub => {
|
|
84
|
+
const agent = agentMap.get(sub.agent_id);
|
|
85
|
+
return (
|
|
86
|
+
<div key={sub.id} className="bg-[#111] border border-[#1a1a1a] rounded-lg p-3 flex items-center gap-3">
|
|
87
|
+
<div className={`w-2 h-2 rounded-full flex-shrink-0 ${sub.enabled ? "bg-green-400" : "bg-[#555]"}`} />
|
|
88
|
+
<div className="flex-1 min-w-0">
|
|
89
|
+
<div className="text-sm font-medium truncate">
|
|
90
|
+
{sub.trigger_slug.replace(/_/g, " ").replace(/-/g, " ")}
|
|
91
|
+
</div>
|
|
92
|
+
<div className="text-xs text-[#666]">
|
|
93
|
+
{sub.trigger_instance_id
|
|
94
|
+
? `ID: ${sub.trigger_instance_id.slice(0, 12)}...`
|
|
95
|
+
: "All instances"
|
|
96
|
+
}
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
<div className="text-xs text-[#888] flex-shrink-0">
|
|
100
|
+
<span className="text-[#555]">→</span>{" "}
|
|
101
|
+
<span className="text-[#f97316]">{agent?.name || "Unknown Agent"}</span>
|
|
102
|
+
</div>
|
|
103
|
+
<span className={`text-xs px-2 py-0.5 rounded flex-shrink-0 ${
|
|
104
|
+
sub.enabled
|
|
105
|
+
? "bg-green-500/10 text-green-400"
|
|
106
|
+
: "bg-[#1a1a1a] text-[#555]"
|
|
107
|
+
}`}>
|
|
108
|
+
{sub.enabled ? "active" : "disabled"}
|
|
109
|
+
</span>
|
|
110
|
+
</div>
|
|
111
|
+
);
|
|
112
|
+
})}
|
|
113
|
+
</div>
|
|
114
|
+
)}
|
|
115
|
+
</section>
|
|
116
|
+
</div>
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function StatCard({
|
|
121
|
+
label,
|
|
122
|
+
value,
|
|
123
|
+
valueColor,
|
|
124
|
+
}: {
|
|
125
|
+
label: string;
|
|
126
|
+
value: string | number;
|
|
127
|
+
valueColor?: string;
|
|
128
|
+
}) {
|
|
129
|
+
return (
|
|
130
|
+
<div className="bg-[#111] border border-[#1a1a1a] rounded-lg p-4">
|
|
131
|
+
<div className="text-xs text-[#666] mb-1">{label}</div>
|
|
132
|
+
<div className={`text-2xl font-bold ${valueColor || "text-[#e0e0e0]"}`}>
|
|
133
|
+
{value}
|
|
134
|
+
</div>
|
|
135
|
+
</div>
|
|
136
|
+
);
|
|
137
|
+
}
|