@synergenius/flow-weaver-pack-weaver 0.9.16 → 0.9.18

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ai-chat-provider.d.ts","sourceRoot":"","sources":["../src/ai-chat-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,UAAU,iBAAiB;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,mBAAmB;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,mBAAmB;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;;sBAkLS,MAAM,QACN,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WACpB,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC;qCAcjB,mBAAmB,GAC3B,OAAO,CAAC,mBAAmB,EAAE,CAAC;;AApBnC,wBAuFE"}
1
+ {"version":3,"file":"ai-chat-provider.d.ts","sourceRoot":"","sources":["../src/ai-chat-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,UAAU,iBAAiB;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,mBAAmB;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,mBAAmB;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;;sBAkLS,MAAM,QACN,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WACpB,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC;qCAcjB,mBAAmB,GAC3B,OAAO,CAAC,mBAAmB,EAAE,CAAC;;AApBnC,wBA4GE"}
@@ -190,22 +190,42 @@ export default {
190
190
  },
191
191
  async getSystemPromptSections(context) {
192
192
  const sections = [];
193
- // Weaver behavioral instructions
193
+ // Weaver expert knowledge — full annotation grammar, CLI commands, validation, Genesis
194
194
  try {
195
- const { buildBotSystemPrompt } = await import('./bot/system-prompt.js');
196
- const prompt = buildBotSystemPrompt();
195
+ const { buildSystemPrompt: buildFullPrompt } = await import('./bot/system-prompt.js');
196
+ const prompt = await buildFullPrompt();
197
197
  if (prompt) {
198
198
  sections.push({
199
- id: 'weaver-identity',
200
- title: 'Weaver Behavioral Instructions',
199
+ id: 'weaver-knowledge',
200
+ title: 'Weaver Expert Knowledge',
201
201
  content: prompt,
202
- priority: 10,
202
+ priority: 5,
203
203
  });
204
204
  }
205
205
  }
206
206
  catch {
207
207
  // system-prompt module not available — skip
208
208
  }
209
+ // Weaver-specific capabilities beyond core Flow Weaver tools
210
+ sections.push({
211
+ id: 'weaver-capabilities',
212
+ title: 'Weaver Capabilities',
213
+ content: `Beyond standard Flow Weaver tools, you also have:
214
+
215
+ - \`fw_weaver_bot\`: Autonomous workflow creation/modification from natural language tasks
216
+ - \`fw_weaver_steer\`: Control running bots (pause, resume, cancel, redirect)
217
+ - \`fw_weaver_status\`: Current bot session state
218
+ - \`fw_weaver_queue\`: Background task queue management
219
+ - \`fw_weaver_run\`: Execute any workflow directly
220
+ - \`fw_weaver_insights\`: Project health, trust level, cost summary, recommendations
221
+ - \`fw_weaver_costs\`: Token usage and cost breakdown
222
+ - \`fw_weaver_history\`: Past workflow execution history
223
+ - \`fw_weaver_providers\`: Available AI providers
224
+ - \`fw_weaver_genesis\`: Self-evolution cycle for workflows
225
+
226
+ Proactively offer these when relevant.`,
227
+ priority: 15,
228
+ });
209
229
  // Project intelligence
210
230
  if (context.workspacePath) {
211
231
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"ai-chat-provider.js","sourceRoot":"","sources":["../src/ai-chat-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-chat-provider.js","sourceRoot":"","sources":["../src/ai-chat-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ // src/ui/bot-config.tsx
4
+ var import_jsx_runtime = require("react/jsx-runtime");
5
+ var React = require("react");
6
+ var { useState, useEffect, useCallback } = React;
7
+ var { Typography } = require("@fw/plugin-ui-kit");
8
+ var { Icon } = require("@fw/plugin-ui-kit");
9
+ var { KeyValueRow } = require("@fw/plugin-ui-kit");
10
+ var { CollapsibleSection } = require("@fw/plugin-ui-kit");
11
+ var { LoadingSpinner } = require("@fw/plugin-ui-kit");
12
+ var { Banner } = require("@fw/plugin-ui-kit");
13
+ var { Badge } = require("@fw/plugin-ui-kit");
14
+ var { IconButton } = require("@fw/plugin-ui-kit");
15
+ var TOOL_URL = "/api/pack-tool/@synergenius/flow-weaver-pack-weaver/fw_weaver_insights";
16
+ function BotConfig({ packName, botId }) {
17
+ const [data, setData] = useState(null);
18
+ const [error, setError] = useState(null);
19
+ const [loading, setLoading] = useState(true);
20
+ const fetchData = useCallback(async () => {
21
+ try {
22
+ const res = await fetch(TOOL_URL, {
23
+ method: "POST",
24
+ headers: { "Content-Type": "application/json" },
25
+ body: JSON.stringify({}),
26
+ credentials: "include"
27
+ });
28
+ if (!res.ok) {
29
+ setError("Failed to fetch");
30
+ setLoading(false);
31
+ return;
32
+ }
33
+ const json = await res.json();
34
+ if (json.isError) {
35
+ setError(json.result);
36
+ setLoading(false);
37
+ return;
38
+ }
39
+ setData(JSON.parse(json.result));
40
+ setError(null);
41
+ } catch (e) {
42
+ setError(e.message ?? "Failed to load");
43
+ } finally {
44
+ setLoading(false);
45
+ }
46
+ }, []);
47
+ useEffect(() => {
48
+ fetchData();
49
+ }, [fetchData]);
50
+ if (loading) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LoadingSpinner, { size: "sm" });
51
+ if (error) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { padding: "8px 12px" }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Banner, { variant: "error", size: "compact", children: error }) });
52
+ const bot = data?.bots?.find((b) => b.name === botId) ?? data?.bots?.[0];
53
+ const provider = bot?.provider ?? "Not configured";
54
+ const approval = bot?.approvalMode ?? "auto";
55
+ const hasBots = (data?.bots?.length ?? 0) > 0;
56
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CollapsibleSection, { title: "Configuration", defaultOpen: true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { padding: "4px 12px 12px" }, children: [
57
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(KeyValueRow, { label: "Provider", value: provider }),
58
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(KeyValueRow, { label: "Approval", value: approval }),
59
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(KeyValueRow, { label: "Trust Phase", value: `P${data?.trust?.phase ?? "?"} (${data?.trust?.score ?? 0}/100)` }),
60
+ !hasBots && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { marginTop: 12 }, children: [
61
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Banner, { variant: "info", size: "compact", children: "No .weaver.json detected. Create one to configure providers and approval modes." }),
62
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Typography, { variant: "caption-regular", color: "color-text-subtle", style: { marginTop: 6, fontFamily: "var(--typography-family-mono)" }, children: "npx flow-weaver weaver init" })
63
+ ] }),
64
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { marginTop: 10, display: "flex", justifyContent: "flex-end" }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(IconButton, { icon: "refresh", size: "xs", variant: "clear", onClick: fetchData, title: "Refresh" }) })
65
+ ] }) });
66
+ }
67
+ module.exports = BotConfig;
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+
3
+ // src/ui/bot-dashboard.tsx
4
+ var import_jsx_runtime = require("react/jsx-runtime");
5
+ var React = require("react");
6
+ var { useState, useEffect, useCallback, useRef } = React;
7
+ var { Typography } = require("@fw/plugin-ui-kit");
8
+ var { Icon } = require("@fw/plugin-ui-kit");
9
+ var { Badge } = require("@fw/plugin-ui-kit");
10
+ var { CollapsibleSection } = require("@fw/plugin-ui-kit");
11
+ var { LoadingSpinner } = require("@fw/plugin-ui-kit");
12
+ var { Banner } = require("@fw/plugin-ui-kit");
13
+ var { IconButton } = require("@fw/plugin-ui-kit");
14
+ var { styled } = require("@fw/plugin-theme");
15
+ var BASE = "/api/pack-tool/@synergenius/flow-weaver-pack-weaver";
16
+ function callTool(tool, body = {}) {
17
+ return fetch(`${BASE}/${tool}`, {
18
+ method: "POST",
19
+ headers: { "Content-Type": "application/json" },
20
+ body: JSON.stringify(body),
21
+ credentials: "include"
22
+ }).then(async (res) => {
23
+ if (!res.ok) throw new Error("Request failed");
24
+ const json = await res.json();
25
+ if (json.isError) throw new Error(json.result);
26
+ return JSON.parse(json.result);
27
+ });
28
+ }
29
+ var KpiRow = styled.div({
30
+ display: "flex",
31
+ gap: "8px",
32
+ marginBottom: "12px"
33
+ });
34
+ var KpiCard = styled.div({
35
+ flex: 1,
36
+ padding: "8px 10px",
37
+ borderRadius: "6px",
38
+ border: "1px solid $color-border-default",
39
+ backgroundColor: "$color-surface-elevated"
40
+ });
41
+ var KpiValue = styled.div({
42
+ fontSize: "20px",
43
+ fontWeight: 700,
44
+ lineHeight: 1.2
45
+ });
46
+ var KpiLabel = styled.div({
47
+ fontSize: "10px",
48
+ opacity: 0.5,
49
+ textTransform: "uppercase",
50
+ letterSpacing: "0.04em",
51
+ marginTop: "2px"
52
+ });
53
+ var InsightRow = styled.div({
54
+ display: "flex",
55
+ alignItems: "center",
56
+ gap: "8px",
57
+ padding: "5px 0",
58
+ borderBottom: "1px solid $color-border-default"
59
+ });
60
+ var RunRow = styled.div({
61
+ display: "flex",
62
+ alignItems: "center",
63
+ gap: "8px",
64
+ padding: "5px 0",
65
+ borderBottom: "1px solid $color-border-default",
66
+ fontSize: "12px"
67
+ });
68
+ function healthColor(score) {
69
+ if (score >= 80) return "var(--color-status-positive)";
70
+ if (score >= 50) return "var(--color-status-caution)";
71
+ return "var(--color-status-negative)";
72
+ }
73
+ var severityToVariant = {
74
+ critical: "negative",
75
+ warning: "caution",
76
+ info: "neutral"
77
+ };
78
+ var outcomeToIcon = {
79
+ completed: { name: "taskAlt", color: "color-status-positive" },
80
+ success: { name: "taskAlt", color: "color-status-positive" },
81
+ failed: { name: "error", color: "color-status-negative" },
82
+ error: { name: "error", color: "color-status-negative" },
83
+ skipped: { name: "minus", color: "color-text-subtle" }
84
+ };
85
+ function formatTime(iso) {
86
+ try {
87
+ const diffMs = Date.now() - new Date(iso).getTime();
88
+ const diffMin = Math.floor(diffMs / 6e4);
89
+ if (diffMin < 1) return "now";
90
+ if (diffMin < 60) return `${diffMin}m ago`;
91
+ const diffH = Math.floor(diffMin / 60);
92
+ if (diffH < 24) return `${diffH}h ago`;
93
+ return `${Math.floor(diffH / 24)}d ago`;
94
+ } catch {
95
+ return "";
96
+ }
97
+ }
98
+ function BotDashboard({ packName, botId }) {
99
+ const [insights, setInsights] = useState(null);
100
+ const [history, setHistory] = useState([]);
101
+ const [error, setError] = useState(null);
102
+ const [loading, setLoading] = useState(true);
103
+ const timerRef = useRef();
104
+ const fetchData = useCallback(async () => {
105
+ try {
106
+ const [ins, hist] = await Promise.allSettled([
107
+ callTool("fw_weaver_insights"),
108
+ callTool("fw_weaver_history", { limit: 5 })
109
+ ]);
110
+ if (ins.status === "fulfilled") {
111
+ setInsights(ins.value);
112
+ setError(null);
113
+ } else setError(ins.reason?.message ?? "Failed to load insights");
114
+ if (hist.status === "fulfilled") {
115
+ setHistory(Array.isArray(hist.value) ? hist.value : []);
116
+ }
117
+ } catch (e) {
118
+ setError(e.message ?? "Failed to load");
119
+ } finally {
120
+ setLoading(false);
121
+ }
122
+ }, []);
123
+ useEffect(() => {
124
+ fetchData();
125
+ timerRef.current = setInterval(fetchData, 3e4);
126
+ return () => clearInterval(timerRef.current);
127
+ }, [fetchData]);
128
+ if (loading) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { padding: 16, textAlign: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LoadingSpinner, { size: "sm" }) });
129
+ if (error && !insights) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { padding: 12 }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Banner, { variant: "error", size: "compact", children: error }) });
130
+ if (!insights) return null;
131
+ const healthScore = insights.health?.overall ?? 0;
132
+ const trust = insights.trust ?? { phase: 1, score: 0 };
133
+ const cost = insights.cost ?? { last7Days: 0, trend: "stable" };
134
+ const topInsights = (insights.insights ?? []).slice(0, 3);
135
+ const recentRuns = history.slice(0, 5);
136
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CollapsibleSection, { title: "Dashboard", defaultOpen: true, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { padding: "4px 12px 12px" }, children: [
137
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(KpiRow, { children: [
138
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(KpiCard, { children: [
139
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(KpiValue, { style: { color: healthColor(healthScore) }, children: healthScore }),
140
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(KpiLabel, { children: "Health" })
141
+ ] }),
142
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(KpiCard, { children: [
143
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(KpiValue, { children: [
144
+ "P",
145
+ trust.phase
146
+ ] }),
147
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(KpiLabel, { children: [
148
+ "Trust ",
149
+ trust.score,
150
+ "/100"
151
+ ] })
152
+ ] }),
153
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(KpiCard, { children: [
154
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(KpiValue, { children: [
155
+ "$",
156
+ cost.last7Days.toFixed(2)
157
+ ] }),
158
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(KpiLabel, { children: "7-day cost" })
159
+ ] })
160
+ ] }),
161
+ topInsights.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { marginBottom: 12 }, children: [
162
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Typography, { variant: "smallCaption-bold", color: "color-text-subtle", style: { marginBottom: 6, textTransform: "uppercase", letterSpacing: "0.04em" }, children: "Insights" }),
163
+ topInsights.map((ins, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(InsightRow, { children: [
164
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Badge, { variant: severityToVariant[ins.severity] ?? "neutral", size: "sm", children: ins.severity }),
165
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Typography, { variant: "caption-regular", color: "color-text-medium", style: { overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: ins.title })
166
+ ] }, i))
167
+ ] }),
168
+ recentRuns.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { marginBottom: 8 }, children: [
169
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Typography, { variant: "smallCaption-bold", color: "color-text-subtle", style: { marginBottom: 6, textTransform: "uppercase", letterSpacing: "0.04em" }, children: "Recent Runs" }),
170
+ recentRuns.map((run, i) => {
171
+ const oc = outcomeToIcon[run.outcome] ?? { name: "help", color: "color-text-subtle" };
172
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(RunRow, { children: [
173
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { name: oc.name, size: 14, color: oc.color }),
174
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Typography, { variant: "caption-regular", color: "color-text-medium", style: { flex: 1, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" }, children: run.summary ?? run.workflowFile ?? run.outcome }),
175
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Typography, { variant: "smallCaption-regular", color: "color-text-subtle", style: { fontFamily: "var(--typography-family-mono)" }, children: formatTime(run.startedAt) })
176
+ ] }, run.id ?? i);
177
+ })
178
+ ] }),
179
+ topInsights.length === 0 && recentRuns.length === 0 && healthScore === 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Typography, { variant: "caption-regular", color: "color-text-subtle", style: { textAlign: "center", padding: 20 }, children: "No data yet. Run a bot to see dashboard metrics." }),
180
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { display: "flex", justifyContent: "flex-end", marginTop: 4 }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(IconButton, { icon: "refresh", size: "xs", variant: "clear", onClick: fetchData, title: "Refresh" }) })
181
+ ] }) });
182
+ }
183
+ module.exports = BotDashboard;
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+
3
+ // src/ui/bot-status.tsx
4
+ var import_jsx_runtime = require("react/jsx-runtime");
5
+ var React = require("react");
6
+ var { useState, useEffect, useCallback, useRef } = React;
7
+ var { Typography } = require("@fw/plugin-ui-kit");
8
+ var { StatusDot } = require("@fw/plugin-ui-kit");
9
+ var { Icon } = require("@fw/plugin-ui-kit");
10
+ var TOOL_URL = "/api/pack-tool/@synergenius/flow-weaver-pack-weaver/fw_weaver_status";
11
+ var stateToDot = {
12
+ idle: "neutral",
13
+ planning: "caution",
14
+ executing: "info",
15
+ reviewing: "caution",
16
+ completed: "positive",
17
+ failed: "negative",
18
+ paused: "neutral"
19
+ };
20
+ var stateToIcon = {
21
+ idle: "pending",
22
+ planning: "psychology",
23
+ executing: "running",
24
+ reviewing: "rateReview",
25
+ completed: "taskAlt",
26
+ failed: "error",
27
+ paused: "pause"
28
+ };
29
+ function BotStatus({ packName, botId }) {
30
+ const [data, setData] = useState(null);
31
+ const [error, setError] = useState(null);
32
+ const timerRef = useRef();
33
+ const fetchData = useCallback(async () => {
34
+ try {
35
+ const res = await fetch(TOOL_URL, {
36
+ method: "POST",
37
+ headers: { "Content-Type": "application/json" },
38
+ body: JSON.stringify({}),
39
+ credentials: "include"
40
+ });
41
+ if (!res.ok) {
42
+ setError("Failed to fetch");
43
+ return;
44
+ }
45
+ const json = await res.json();
46
+ if (json.isError) {
47
+ setError(json.result);
48
+ return;
49
+ }
50
+ setData(JSON.parse(json.result));
51
+ setError(null);
52
+ } catch (e) {
53
+ setError(e.message ?? "Failed to load");
54
+ }
55
+ }, []);
56
+ useEffect(() => {
57
+ fetchData();
58
+ timerRef.current = setInterval(fetchData, 5e3);
59
+ return () => clearInterval(timerRef.current);
60
+ }, [fetchData]);
61
+ if (error) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { padding: "6px 12px" }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Typography, { variant: "caption-regular", color: "color-status-negative", children: error }) });
62
+ if (!data) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { padding: "6px 12px" }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Typography, { variant: "caption-regular", color: "color-text-subtle", children: "Loading status..." }) });
63
+ const state = data.state ?? "idle";
64
+ const dotStatus = stateToDot[state] ?? "neutral";
65
+ const iconName = stateToIcon[state] ?? "pending";
66
+ const completed = data.completedTasks ?? 0;
67
+ const total = data.totalTasks ?? 0;
68
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: {
69
+ padding: "8px 12px",
70
+ display: "flex",
71
+ alignItems: "center",
72
+ gap: 8,
73
+ borderBottom: "1px solid var(--color-border-default)",
74
+ background: "var(--color-surface-elevated)"
75
+ }, children: [
76
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, { name: iconName, size: 14, color: `color-status-${dotStatus === "neutral" ? "info" : dotStatus}` }),
77
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Typography, { variant: "caption-bold", style: { textTransform: "capitalize" }, children: state }),
78
+ data.currentTask && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
79
+ Typography,
80
+ {
81
+ variant: "caption-regular",
82
+ color: "color-text-medium",
83
+ style: { flex: 1, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" },
84
+ children: data.currentTask
85
+ }
86
+ ),
87
+ total > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Typography, { variant: "smallCaption-regular", color: "color-text-subtle", children: [
88
+ completed,
89
+ "/",
90
+ total
91
+ ] })
92
+ ] });
93
+ }
94
+ module.exports = BotStatus;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifestVersion": 2,
3
3
  "name": "@synergenius/flow-weaver-pack-weaver",
4
- "version": "0.9.16",
4
+ "version": "0.9.18",
5
5
  "description": "AI bot for Flow Weaver. Execute tasks, run workflows, evolve autonomously.",
6
6
  "engineVersion": ">=0.22.10",
7
7
  "categories": [
@@ -1072,22 +1072,12 @@
1072
1072
  }
1073
1073
  }
1074
1074
  ],
1075
- "uiContributions": [
1076
- {
1077
- "type": "dashboard-widget",
1078
- "id": "weaver-insights",
1079
- "name": "Project Insights",
1080
- "component": "dist/ui/insights-widget.js",
1081
- "area": "dashboard",
1082
- "size": "large"
1083
- },
1084
- {
1085
- "type": "panel",
1086
- "id": "weaver-evolution",
1087
- "name": "Evolution History",
1088
- "component": "dist/ui/evolution-panel.js"
1089
- }
1090
- ],
1075
+ "uiContributions": [],
1076
+ "botUI": {
1077
+ "config": "dist/ui/bot-config.js",
1078
+ "status": "dist/ui/bot-status.js",
1079
+ "dashboard": "dist/ui/bot-dashboard.js"
1080
+ },
1091
1081
  "sandboxCapabilities": [
1092
1082
  "fetch:hooks.slack.com",
1093
1083
  "fetch:discord.com",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synergenius/flow-weaver-pack-weaver",
3
- "version": "0.9.16",
3
+ "version": "0.9.18",
4
4
  "description": "AI bot for Flow Weaver. Execute tasks, run workflows, evolve autonomously.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -233,22 +233,43 @@ export default {
233
233
  ): Promise<AiChatPromptSection[]> {
234
234
  const sections: AiChatPromptSection[] = [];
235
235
 
236
- // Weaver behavioral instructions
236
+ // Weaver expert knowledge — full annotation grammar, CLI commands, validation, Genesis
237
237
  try {
238
- const { buildBotSystemPrompt } = await import('./bot/system-prompt.js');
239
- const prompt = buildBotSystemPrompt();
238
+ const { buildSystemPrompt: buildFullPrompt } = await import('./bot/system-prompt.js');
239
+ const prompt = await buildFullPrompt();
240
240
  if (prompt) {
241
241
  sections.push({
242
- id: 'weaver-identity',
243
- title: 'Weaver Behavioral Instructions',
242
+ id: 'weaver-knowledge',
243
+ title: 'Weaver Expert Knowledge',
244
244
  content: prompt,
245
- priority: 10,
245
+ priority: 5,
246
246
  });
247
247
  }
248
248
  } catch {
249
249
  // system-prompt module not available — skip
250
250
  }
251
251
 
252
+ // Weaver-specific capabilities beyond core Flow Weaver tools
253
+ sections.push({
254
+ id: 'weaver-capabilities',
255
+ title: 'Weaver Capabilities',
256
+ content: `Beyond standard Flow Weaver tools, you also have:
257
+
258
+ - \`fw_weaver_bot\`: Autonomous workflow creation/modification from natural language tasks
259
+ - \`fw_weaver_steer\`: Control running bots (pause, resume, cancel, redirect)
260
+ - \`fw_weaver_status\`: Current bot session state
261
+ - \`fw_weaver_queue\`: Background task queue management
262
+ - \`fw_weaver_run\`: Execute any workflow directly
263
+ - \`fw_weaver_insights\`: Project health, trust level, cost summary, recommendations
264
+ - \`fw_weaver_costs\`: Token usage and cost breakdown
265
+ - \`fw_weaver_history\`: Past workflow execution history
266
+ - \`fw_weaver_providers\`: Available AI providers
267
+ - \`fw_weaver_genesis\`: Self-evolution cycle for workflows
268
+
269
+ Proactively offer these when relevant.`,
270
+ priority: 15,
271
+ });
272
+
252
273
  // Project intelligence
253
274
  if (context.workspacePath) {
254
275
  try {
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Weaver Bot Config Panel — read-only configuration summary.
3
+ * Runs in the platform bot-panel sandbox.
4
+ */
5
+ const React = require('react');
6
+ const { useState, useEffect, useCallback } = React;
7
+ const { Typography } = require('@fw/plugin-ui-kit');
8
+ const { Icon } = require('@fw/plugin-ui-kit');
9
+ const { KeyValueRow } = require('@fw/plugin-ui-kit');
10
+ const { CollapsibleSection } = require('@fw/plugin-ui-kit');
11
+ const { LoadingSpinner } = require('@fw/plugin-ui-kit');
12
+ const { Banner } = require('@fw/plugin-ui-kit');
13
+ const { Badge } = require('@fw/plugin-ui-kit');
14
+ const { IconButton } = require('@fw/plugin-ui-kit');
15
+
16
+ const TOOL_URL = '/api/pack-tool/@synergenius/flow-weaver-pack-weaver/fw_weaver_insights';
17
+
18
+ interface InsightsResult {
19
+ health: { overall: number };
20
+ bots: Array<{ name: string; provider?: string; approvalMode?: string }>;
21
+ trust: { phase: number; score: number };
22
+ }
23
+
24
+ function BotConfig({ packName, botId }: { packName: string; botId: string }) {
25
+ const [data, setData] = useState<InsightsResult | null>(null);
26
+ const [error, setError] = useState<string | null>(null);
27
+ const [loading, setLoading] = useState(true);
28
+
29
+ const fetchData = useCallback(async () => {
30
+ try {
31
+ const res = await fetch(TOOL_URL, {
32
+ method: 'POST',
33
+ headers: { 'Content-Type': 'application/json' },
34
+ body: JSON.stringify({}),
35
+ credentials: 'include',
36
+ });
37
+ if (!res.ok) { setError('Failed to fetch'); setLoading(false); return; }
38
+ const json = await res.json();
39
+ if (json.isError) { setError(json.result); setLoading(false); return; }
40
+ setData(JSON.parse(json.result));
41
+ setError(null);
42
+ } catch (e: any) {
43
+ setError(e.message ?? 'Failed to load');
44
+ } finally {
45
+ setLoading(false);
46
+ }
47
+ }, []);
48
+
49
+ useEffect(() => { fetchData(); }, [fetchData]);
50
+
51
+ if (loading) return <LoadingSpinner size="sm" />;
52
+
53
+ if (error) return (
54
+ <div style={{ padding: '8px 12px' }}>
55
+ <Banner variant="error" size="compact">{error}</Banner>
56
+ </div>
57
+ );
58
+
59
+ const bot = data?.bots?.find(b => b.name === botId) ?? data?.bots?.[0];
60
+ const provider = bot?.provider ?? 'Not configured';
61
+ const approval = bot?.approvalMode ?? 'auto';
62
+ const hasBots = (data?.bots?.length ?? 0) > 0;
63
+
64
+ return (
65
+ <CollapsibleSection title="Configuration" defaultOpen>
66
+ <div style={{ padding: '4px 12px 12px' }}>
67
+ <KeyValueRow label="Provider" value={provider} />
68
+ <KeyValueRow label="Approval" value={approval} />
69
+ <KeyValueRow label="Trust Phase" value={`P${data?.trust?.phase ?? '?'} (${data?.trust?.score ?? 0}/100)`} />
70
+
71
+ {!hasBots && (
72
+ <div style={{ marginTop: 12 }}>
73
+ <Banner variant="info" size="compact">
74
+ No .weaver.json detected. Create one to configure providers and approval modes.
75
+ </Banner>
76
+ <Typography variant="caption-regular" color="color-text-subtle" style={{ marginTop: 6, fontFamily: 'var(--typography-family-mono)' }}>
77
+ npx flow-weaver weaver init
78
+ </Typography>
79
+ </div>
80
+ )}
81
+
82
+ <div style={{ marginTop: 10, display: 'flex', justifyContent: 'flex-end' }}>
83
+ <IconButton icon="refresh" size="xs" variant="clear" onClick={fetchData} title="Refresh" />
84
+ </div>
85
+ </div>
86
+ </CollapsibleSection>
87
+ );
88
+ }
89
+
90
+ module.exports = BotConfig;
@@ -0,0 +1,257 @@
1
+ /**
2
+ * Weaver Bot Dashboard — persistent overview with health, trust, costs, insights, and run history.
3
+ * Runs in the platform bot-panel sandbox. Refreshes every 30 seconds.
4
+ */
5
+ const React = require('react');
6
+ const { useState, useEffect, useCallback, useRef } = React;
7
+ const { Typography } = require('@fw/plugin-ui-kit');
8
+ const { Icon } = require('@fw/plugin-ui-kit');
9
+ const { Badge } = require('@fw/plugin-ui-kit');
10
+ const { CollapsibleSection } = require('@fw/plugin-ui-kit');
11
+ const { LoadingSpinner } = require('@fw/plugin-ui-kit');
12
+ const { Banner } = require('@fw/plugin-ui-kit');
13
+ const { IconButton } = require('@fw/plugin-ui-kit');
14
+ const { styled } = require('@fw/plugin-theme');
15
+
16
+ const BASE = '/api/pack-tool/@synergenius/flow-weaver-pack-weaver';
17
+
18
+ interface InsightsData {
19
+ health: { overall: number; workflows?: Array<{ file: string; score: number }> };
20
+ bots: Array<{ name: string; successRate: number; totalTasksRun: number }>;
21
+ insights: Array<{ severity: string; title: string; description: string; confidence: number }>;
22
+ cost: { last7Days: number; trend: string };
23
+ trust: { phase: number; score: number };
24
+ evolution?: { totalCycles: number; successRate: number };
25
+ }
26
+
27
+ interface RunEntry {
28
+ id?: string;
29
+ outcome: string;
30
+ workflowFile?: string;
31
+ startedAt: string;
32
+ duration?: number;
33
+ summary?: string;
34
+ }
35
+
36
+ function callTool(tool: string, body: Record<string, unknown> = {}) {
37
+ return fetch(`${BASE}/${tool}`, {
38
+ method: 'POST',
39
+ headers: { 'Content-Type': 'application/json' },
40
+ body: JSON.stringify(body),
41
+ credentials: 'include',
42
+ }).then(async res => {
43
+ if (!res.ok) throw new Error('Request failed');
44
+ const json = await res.json();
45
+ if (json.isError) throw new Error(json.result);
46
+ return JSON.parse(json.result);
47
+ });
48
+ }
49
+
50
+ // --- Styled components ---
51
+
52
+ const KpiRow = styled.div({
53
+ display: 'flex',
54
+ gap: '8px',
55
+ marginBottom: '12px',
56
+ });
57
+
58
+ const KpiCard = styled.div({
59
+ flex: 1,
60
+ padding: '8px 10px',
61
+ borderRadius: '6px',
62
+ border: '1px solid $color-border-default',
63
+ backgroundColor: '$color-surface-elevated',
64
+ });
65
+
66
+ const KpiValue = styled.div({
67
+ fontSize: '20px',
68
+ fontWeight: 700,
69
+ lineHeight: 1.2,
70
+ });
71
+
72
+ const KpiLabel = styled.div({
73
+ fontSize: '10px',
74
+ opacity: 0.5,
75
+ textTransform: 'uppercase',
76
+ letterSpacing: '0.04em',
77
+ marginTop: '2px',
78
+ });
79
+
80
+ const InsightRow = styled.div({
81
+ display: 'flex',
82
+ alignItems: 'center',
83
+ gap: '8px',
84
+ padding: '5px 0',
85
+ borderBottom: '1px solid $color-border-default',
86
+ });
87
+
88
+ const RunRow = styled.div({
89
+ display: 'flex',
90
+ alignItems: 'center',
91
+ gap: '8px',
92
+ padding: '5px 0',
93
+ borderBottom: '1px solid $color-border-default',
94
+ fontSize: '12px',
95
+ });
96
+
97
+ // --- Helpers ---
98
+
99
+ type TIconNameType = string;
100
+
101
+ function healthColor(score: number): string {
102
+ if (score >= 80) return 'var(--color-status-positive)';
103
+ if (score >= 50) return 'var(--color-status-caution)';
104
+ return 'var(--color-status-negative)';
105
+ }
106
+
107
+ const severityToVariant: Record<string, string> = {
108
+ critical: 'negative',
109
+ warning: 'caution',
110
+ info: 'neutral',
111
+ };
112
+
113
+ const outcomeToIcon: Record<string, { name: TIconNameType; color: string }> = {
114
+ completed: { name: 'taskAlt', color: 'color-status-positive' },
115
+ success: { name: 'taskAlt', color: 'color-status-positive' },
116
+ failed: { name: 'error', color: 'color-status-negative' },
117
+ error: { name: 'error', color: 'color-status-negative' },
118
+ skipped: { name: 'minus', color: 'color-text-subtle' },
119
+ };
120
+
121
+ function formatTime(iso: string): string {
122
+ try {
123
+ const diffMs = Date.now() - new Date(iso).getTime();
124
+ const diffMin = Math.floor(diffMs / 60_000);
125
+ if (diffMin < 1) return 'now';
126
+ if (diffMin < 60) return `${diffMin}m ago`;
127
+ const diffH = Math.floor(diffMin / 60);
128
+ if (diffH < 24) return `${diffH}h ago`;
129
+ return `${Math.floor(diffH / 24)}d ago`;
130
+ } catch { return ''; }
131
+ }
132
+
133
+ // --- Component ---
134
+
135
+ function BotDashboard({ packName, botId }: { packName: string; botId: string }) {
136
+ const [insights, setInsights] = useState<InsightsData | null>(null);
137
+ const [history, setHistory] = useState<RunEntry[]>([]);
138
+ const [error, setError] = useState<string | null>(null);
139
+ const [loading, setLoading] = useState(true);
140
+ const timerRef = useRef<ReturnType<typeof setInterval>>();
141
+
142
+ const fetchData = useCallback(async () => {
143
+ try {
144
+ const [ins, hist] = await Promise.allSettled([
145
+ callTool('fw_weaver_insights'),
146
+ callTool('fw_weaver_history', { limit: 5 }),
147
+ ]);
148
+ if (ins.status === 'fulfilled') { setInsights(ins.value); setError(null); }
149
+ else setError(ins.reason?.message ?? 'Failed to load insights');
150
+ if (hist.status === 'fulfilled') {
151
+ setHistory(Array.isArray(hist.value) ? hist.value : []);
152
+ }
153
+ } catch (e: any) {
154
+ setError(e.message ?? 'Failed to load');
155
+ } finally {
156
+ setLoading(false);
157
+ }
158
+ }, []);
159
+
160
+ useEffect(() => {
161
+ fetchData();
162
+ timerRef.current = setInterval(fetchData, 30_000);
163
+ return () => clearInterval(timerRef.current);
164
+ }, [fetchData]);
165
+
166
+ if (loading) return <div style={{ padding: 16, textAlign: 'center' }}><LoadingSpinner size="sm" /></div>;
167
+
168
+ if (error && !insights) return (
169
+ <div style={{ padding: 12 }}>
170
+ <Banner variant="error" size="compact">{error}</Banner>
171
+ </div>
172
+ );
173
+
174
+ if (!insights) return null;
175
+
176
+ const healthScore = insights.health?.overall ?? 0;
177
+ const trust = insights.trust ?? { phase: 1, score: 0 };
178
+ const cost = insights.cost ?? { last7Days: 0, trend: 'stable' };
179
+ const topInsights = (insights.insights ?? []).slice(0, 3);
180
+ const recentRuns = history.slice(0, 5);
181
+
182
+ return (
183
+ <CollapsibleSection title="Dashboard" defaultOpen>
184
+ <div style={{ padding: '4px 12px 12px' }}>
185
+ {/* KPI cards */}
186
+ <KpiRow>
187
+ <KpiCard>
188
+ <KpiValue style={{ color: healthColor(healthScore) }}>{healthScore}</KpiValue>
189
+ <KpiLabel>Health</KpiLabel>
190
+ </KpiCard>
191
+ <KpiCard>
192
+ <KpiValue>P{trust.phase}</KpiValue>
193
+ <KpiLabel>Trust {trust.score}/100</KpiLabel>
194
+ </KpiCard>
195
+ <KpiCard>
196
+ <KpiValue>${cost.last7Days.toFixed(2)}</KpiValue>
197
+ <KpiLabel>7-day cost</KpiLabel>
198
+ </KpiCard>
199
+ </KpiRow>
200
+
201
+ {/* Insights */}
202
+ {topInsights.length > 0 && (
203
+ <div style={{ marginBottom: 12 }}>
204
+ <Typography variant="smallCaption-bold" color="color-text-subtle" style={{ marginBottom: 6, textTransform: 'uppercase', letterSpacing: '0.04em' }}>
205
+ Insights
206
+ </Typography>
207
+ {topInsights.map((ins, i) => (
208
+ <InsightRow key={i}>
209
+ <Badge variant={(severityToVariant[ins.severity] ?? 'neutral') as any} size="sm">
210
+ {ins.severity}
211
+ </Badge>
212
+ <Typography variant="caption-regular" color="color-text-medium" style={{ overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>
213
+ {ins.title}
214
+ </Typography>
215
+ </InsightRow>
216
+ ))}
217
+ </div>
218
+ )}
219
+
220
+ {/* Run history */}
221
+ {recentRuns.length > 0 && (
222
+ <div style={{ marginBottom: 8 }}>
223
+ <Typography variant="smallCaption-bold" color="color-text-subtle" style={{ marginBottom: 6, textTransform: 'uppercase', letterSpacing: '0.04em' }}>
224
+ Recent Runs
225
+ </Typography>
226
+ {recentRuns.map((run, i) => {
227
+ const oc = outcomeToIcon[run.outcome] ?? { name: 'help', color: 'color-text-subtle' };
228
+ return (
229
+ <RunRow key={run.id ?? i}>
230
+ <Icon name={oc.name as any} size={14} color={oc.color} />
231
+ <Typography variant="caption-regular" color="color-text-medium" style={{ flex: 1, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>
232
+ {run.summary ?? run.workflowFile ?? run.outcome}
233
+ </Typography>
234
+ <Typography variant="smallCaption-regular" color="color-text-subtle" style={{ fontFamily: 'var(--typography-family-mono)' }}>
235
+ {formatTime(run.startedAt)}
236
+ </Typography>
237
+ </RunRow>
238
+ );
239
+ })}
240
+ </div>
241
+ )}
242
+
243
+ {topInsights.length === 0 && recentRuns.length === 0 && healthScore === 0 && (
244
+ <Typography variant="caption-regular" color="color-text-subtle" style={{ textAlign: 'center', padding: 20 }}>
245
+ No data yet. Run a bot to see dashboard metrics.
246
+ </Typography>
247
+ )}
248
+
249
+ <div style={{ display: 'flex', justifyContent: 'flex-end', marginTop: 4 }}>
250
+ <IconButton icon="refresh" size="xs" variant="clear" onClick={fetchData} title="Refresh" />
251
+ </div>
252
+ </div>
253
+ </CollapsibleSection>
254
+ );
255
+ }
256
+
257
+ module.exports = BotDashboard;
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Weaver Bot Status Widget — live session status during execution.
3
+ * Runs in the platform bot-panel sandbox. Refreshes every 5 seconds.
4
+ */
5
+ const React = require('react');
6
+ const { useState, useEffect, useCallback, useRef } = React;
7
+ const { Typography } = require('@fw/plugin-ui-kit');
8
+ const { StatusDot } = require('@fw/plugin-ui-kit');
9
+ const { Icon } = require('@fw/plugin-ui-kit');
10
+
11
+ const TOOL_URL = '/api/pack-tool/@synergenius/flow-weaver-pack-weaver/fw_weaver_status';
12
+
13
+ interface StatusData {
14
+ state: string;
15
+ currentTask?: string;
16
+ completedTasks?: number;
17
+ totalTasks?: number;
18
+ botName?: string;
19
+ }
20
+
21
+ type DotStatus = 'positive' | 'negative' | 'caution' | 'neutral' | 'info';
22
+
23
+ const stateToDot: Record<string, DotStatus> = {
24
+ idle: 'neutral',
25
+ planning: 'caution',
26
+ executing: 'info',
27
+ reviewing: 'caution',
28
+ completed: 'positive',
29
+ failed: 'negative',
30
+ paused: 'neutral',
31
+ };
32
+
33
+ const stateToIcon: Record<string, string> = {
34
+ idle: 'pending',
35
+ planning: 'psychology',
36
+ executing: 'running',
37
+ reviewing: 'rateReview',
38
+ completed: 'taskAlt',
39
+ failed: 'error',
40
+ paused: 'pause',
41
+ };
42
+
43
+ function BotStatus({ packName, botId }: { packName: string; botId: string }) {
44
+ const [data, setData] = useState<StatusData | null>(null);
45
+ const [error, setError] = useState<string | null>(null);
46
+ const timerRef = useRef<ReturnType<typeof setInterval>>();
47
+
48
+ const fetchData = useCallback(async () => {
49
+ try {
50
+ const res = await fetch(TOOL_URL, {
51
+ method: 'POST',
52
+ headers: { 'Content-Type': 'application/json' },
53
+ body: JSON.stringify({}),
54
+ credentials: 'include',
55
+ });
56
+ if (!res.ok) { setError('Failed to fetch'); return; }
57
+ const json = await res.json();
58
+ if (json.isError) { setError(json.result); return; }
59
+ setData(JSON.parse(json.result));
60
+ setError(null);
61
+ } catch (e: any) {
62
+ setError(e.message ?? 'Failed to load');
63
+ }
64
+ }, []);
65
+
66
+ useEffect(() => {
67
+ fetchData();
68
+ timerRef.current = setInterval(fetchData, 5_000);
69
+ return () => clearInterval(timerRef.current);
70
+ }, [fetchData]);
71
+
72
+ if (error) return (
73
+ <div style={{ padding: '6px 12px' }}>
74
+ <Typography variant="caption-regular" color="color-status-negative">{error}</Typography>
75
+ </div>
76
+ );
77
+ if (!data) return (
78
+ <div style={{ padding: '6px 12px' }}>
79
+ <Typography variant="caption-regular" color="color-text-subtle">Loading status...</Typography>
80
+ </div>
81
+ );
82
+
83
+ const state = data.state ?? 'idle';
84
+ const dotStatus = stateToDot[state] ?? 'neutral';
85
+ const iconName = stateToIcon[state] ?? 'pending';
86
+ const completed = data.completedTasks ?? 0;
87
+ const total = data.totalTasks ?? 0;
88
+
89
+ return (
90
+ <div style={{
91
+ padding: '8px 12px',
92
+ display: 'flex',
93
+ alignItems: 'center',
94
+ gap: 8,
95
+ borderBottom: '1px solid var(--color-border-default)',
96
+ background: 'var(--color-surface-elevated)',
97
+ }}>
98
+ <Icon name={iconName as any} size={14} color={`color-status-${dotStatus === 'neutral' ? 'info' : dotStatus}`} />
99
+ <Typography variant="caption-bold" style={{ textTransform: 'capitalize' }}>
100
+ {state}
101
+ </Typography>
102
+ {data.currentTask && (
103
+ <Typography
104
+ variant="caption-regular"
105
+ color="color-text-medium"
106
+ style={{ flex: 1, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}
107
+ >
108
+ {data.currentTask}
109
+ </Typography>
110
+ )}
111
+ {total > 0 && (
112
+ <Typography variant="smallCaption-regular" color="color-text-subtle">
113
+ {completed}/{total}
114
+ </Typography>
115
+ )}
116
+ </div>
117
+ );
118
+ }
119
+
120
+ module.exports = BotStatus;