rrce-workflow 0.3.11 → 0.3.12
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/index.js +88 -49
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4213,7 +4213,7 @@ var Header;
|
|
|
4213
4213
|
var init_Header = __esm({
|
|
4214
4214
|
"src/mcp/ui/Header.tsx"() {
|
|
4215
4215
|
"use strict";
|
|
4216
|
-
Header = () => /* @__PURE__ */ jsx(Box, { flexDirection: "column", paddingBottom: 1, children: /* @__PURE__ */ jsx(Box, { borderStyle: "double", borderColor: "
|
|
4216
|
+
Header = () => /* @__PURE__ */ jsx(Box, { flexDirection: "column", paddingBottom: 1, children: /* @__PURE__ */ jsx(Box, { borderStyle: "double", borderColor: "white", paddingX: 2, justifyContent: "center", children: /* @__PURE__ */ jsx(Text, { bold: true, color: "white", children: " RRCE MCP Hub " }) }) });
|
|
4217
4217
|
}
|
|
4218
4218
|
});
|
|
4219
4219
|
|
|
@@ -4640,15 +4640,21 @@ function SimpleSelect({
|
|
|
4640
4640
|
onCancel?.();
|
|
4641
4641
|
}
|
|
4642
4642
|
});
|
|
4643
|
-
return /* @__PURE__ */ jsxs2(Box3, { flexDirection: "column", borderStyle: "round", borderColor: "
|
|
4643
|
+
return /* @__PURE__ */ jsxs2(Box3, { flexDirection: "column", borderStyle: "round", borderColor: "white", padding: 1, children: [
|
|
4644
4644
|
message && /* @__PURE__ */ jsx4(Box3, { marginBottom: 1, children: /* @__PURE__ */ jsx4(Text3, { bold: true, children: message }) }),
|
|
4645
4645
|
items.map((item, index) => {
|
|
4646
4646
|
const isSelected = index === selectedIndex;
|
|
4647
4647
|
const isChecked = isMulti && selectedValues.has(item.value);
|
|
4648
|
-
return /* @__PURE__ */ jsxs2(Box3, { children: [
|
|
4649
|
-
/* @__PURE__ */
|
|
4650
|
-
|
|
4651
|
-
|
|
4648
|
+
return /* @__PURE__ */ jsxs2(Box3, { flexDirection: "column", children: [
|
|
4649
|
+
/* @__PURE__ */ jsxs2(Box3, { children: [
|
|
4650
|
+
/* @__PURE__ */ jsx4(Text3, { color: isSelected ? "cyan" : "white", children: isSelected ? "> " : " " }),
|
|
4651
|
+
isMulti && /* @__PURE__ */ jsx4(Text3, { color: isChecked ? "green" : "gray", children: isChecked ? "[x] " : "[ ] " }),
|
|
4652
|
+
/* @__PURE__ */ jsx4(Text3, { color: isSelected ? "cyan" : "white", children: item.label.split("\n")[0] })
|
|
4653
|
+
] }),
|
|
4654
|
+
item.label.includes("\n") && /* @__PURE__ */ jsxs2(Box3, { paddingLeft: isSelected ? 2 : 2, children: [
|
|
4655
|
+
isMulti && /* @__PURE__ */ jsx4(Text3, { children: " " }),
|
|
4656
|
+
/* @__PURE__ */ jsx4(Text3, { dimColor: true, children: item.label.split("\n").slice(1).join("\n") })
|
|
4657
|
+
] })
|
|
4652
4658
|
] }, item.key || String(item.value));
|
|
4653
4659
|
}),
|
|
4654
4660
|
/* @__PURE__ */ jsx4(Box3, { marginTop: 1, children: /* @__PURE__ */ jsx4(Text3, { color: "gray", children: isMulti ? "Space to toggle, Enter to confirm, Esc to cancel" : "Enter to select, Esc to cancel" }) })
|
|
@@ -4680,17 +4686,21 @@ var init_ProjectsView = __esm({
|
|
|
4680
4686
|
init_ConfigContext();
|
|
4681
4687
|
init_indexing_jobs();
|
|
4682
4688
|
init_config_utils();
|
|
4683
|
-
ProjectsView = ({ config: initialConfig, projects: allProjects, onConfigChange }) => {
|
|
4689
|
+
ProjectsView = ({ config: initialConfig, projects: allProjects, onConfigChange, workspacePath }) => {
|
|
4684
4690
|
const { driftReports, checkAllDrift } = useConfig();
|
|
4685
4691
|
const [config, setConfig] = useState3(initialConfig);
|
|
4686
4692
|
const [indexingStats, setIndexingStats] = useState3({});
|
|
4687
4693
|
const sortedProjects = useMemo3(() => {
|
|
4688
4694
|
return [...allProjects].sort((a, b) => {
|
|
4695
|
+
const aIsCurrent = a.path === workspacePath;
|
|
4696
|
+
const bIsCurrent = b.path === workspacePath;
|
|
4697
|
+
if (aIsCurrent && !bIsCurrent) return -1;
|
|
4698
|
+
if (!aIsCurrent && bIsCurrent) return 1;
|
|
4689
4699
|
const byName = a.name.localeCompare(b.name);
|
|
4690
4700
|
if (byName !== 0) return byName;
|
|
4691
4701
|
return projectKey(a).localeCompare(projectKey(b));
|
|
4692
4702
|
});
|
|
4693
|
-
}, [allProjects]);
|
|
4703
|
+
}, [allProjects, workspacePath]);
|
|
4694
4704
|
useEffect3(() => {
|
|
4695
4705
|
const updateStats = () => {
|
|
4696
4706
|
const next = {};
|
|
@@ -4736,15 +4746,18 @@ var init_ProjectsView = __esm({
|
|
|
4736
4746
|
const drift = driftReports[p.path];
|
|
4737
4747
|
const idx = indexingStats[p.name];
|
|
4738
4748
|
let label = formatProjectLabel(p);
|
|
4749
|
+
if (drift?.hasDrift) {
|
|
4750
|
+
label += ` \u26A0`;
|
|
4751
|
+
}
|
|
4739
4752
|
if (idx?.state === "running") {
|
|
4740
|
-
label += `
|
|
4753
|
+
label += `
|
|
4754
|
+
\u27F3 Indexing ${idx.itemsDone}/${idx.itemsTotal ?? "?"}`;
|
|
4741
4755
|
} else if (idx?.state === "failed") {
|
|
4742
|
-
label += `
|
|
4756
|
+
label += `
|
|
4757
|
+
\u2715 Index Fail`;
|
|
4743
4758
|
} else if (idx?.enabled && idx?.state === "complete") {
|
|
4744
|
-
label += `
|
|
4745
|
-
|
|
4746
|
-
if (drift?.hasDrift) {
|
|
4747
|
-
label += ` \u26A0`;
|
|
4759
|
+
label += `
|
|
4760
|
+
\u2713 Indexed`;
|
|
4748
4761
|
}
|
|
4749
4762
|
return {
|
|
4750
4763
|
label,
|
|
@@ -4779,7 +4792,7 @@ var init_ProjectsView = __esm({
|
|
|
4779
4792
|
setConfig(newConfig);
|
|
4780
4793
|
onConfigChange?.();
|
|
4781
4794
|
};
|
|
4782
|
-
return /* @__PURE__ */ jsxs3(Box4, { flexDirection: "column", padding: 1, borderStyle: "round", borderColor: "
|
|
4795
|
+
return /* @__PURE__ */ jsxs3(Box4, { flexDirection: "column", padding: 1, borderStyle: "round", borderColor: "white", flexGrow: 1, children: [
|
|
4783
4796
|
/* @__PURE__ */ jsxs3(Box4, { justifyContent: "space-between", children: [
|
|
4784
4797
|
/* @__PURE__ */ jsxs3(Box4, { children: [
|
|
4785
4798
|
/* @__PURE__ */ jsx5(Text4, { bold: true, color: "cyan", children: " Projects " }),
|
|
@@ -4791,7 +4804,7 @@ var init_ProjectsView = __esm({
|
|
|
4791
4804
|
] }),
|
|
4792
4805
|
/* @__PURE__ */ jsx5(Box4, { children: /* @__PURE__ */ jsx5(Text4, { color: "dim", children: "a:Toggle Auto u:Drift Space:Select Enter:Save" }) })
|
|
4793
4806
|
] }),
|
|
4794
|
-
/* @__PURE__ */ jsx5(Text4, { color: "dim", children: " Manage which projects are exposed to the MCP server.
|
|
4807
|
+
/* @__PURE__ */ jsx5(Text4, { color: "dim", children: " Manage which projects are exposed to the MCP server." }),
|
|
4795
4808
|
/* @__PURE__ */ jsx5(Box4, { marginTop: 1, flexDirection: "column", flexGrow: 1, children: /* @__PURE__ */ jsx5(
|
|
4796
4809
|
SimpleSelect,
|
|
4797
4810
|
{
|
|
@@ -4884,7 +4897,7 @@ var init_TasksView = __esm({
|
|
|
4884
4897
|
init_ConfigContext();
|
|
4885
4898
|
init_ui_helpers();
|
|
4886
4899
|
STATUS_CYCLE = ["pending", "in_progress", "blocked", "complete"];
|
|
4887
|
-
TasksView = ({ projects: allProjects }) => {
|
|
4900
|
+
TasksView = ({ projects: allProjects, workspacePath }) => {
|
|
4888
4901
|
const { driftReports } = useConfig();
|
|
4889
4902
|
const [expanded, setExpanded] = useState4(() => /* @__PURE__ */ new Set());
|
|
4890
4903
|
const [selectedIndex, setSelectedIndex] = useState4(0);
|
|
@@ -4892,11 +4905,29 @@ var init_TasksView = __esm({
|
|
|
4892
4905
|
const [errorLine, setErrorLine] = useState4(null);
|
|
4893
4906
|
const sortedProjects = useMemo4(() => {
|
|
4894
4907
|
return [...allProjects].sort((a, b) => {
|
|
4908
|
+
const aIsCurrent = a.path === workspacePath;
|
|
4909
|
+
const bIsCurrent = b.path === workspacePath;
|
|
4910
|
+
if (aIsCurrent && !bIsCurrent) return -1;
|
|
4911
|
+
if (!aIsCurrent && bIsCurrent) return 1;
|
|
4895
4912
|
const byName = a.name.localeCompare(b.name);
|
|
4896
4913
|
if (byName !== 0) return byName;
|
|
4897
4914
|
return projectKey2(a).localeCompare(projectKey2(b));
|
|
4898
4915
|
});
|
|
4899
|
-
}, [allProjects]);
|
|
4916
|
+
}, [allProjects, workspacePath]);
|
|
4917
|
+
useEffect4(() => {
|
|
4918
|
+
const current = sortedProjects.find((p) => p.path === workspacePath);
|
|
4919
|
+
if (current) {
|
|
4920
|
+
const k = projectKey2(current);
|
|
4921
|
+
setExpanded((prev) => {
|
|
4922
|
+
const next = new Set(prev);
|
|
4923
|
+
if (!next.has(k)) {
|
|
4924
|
+
next.add(k);
|
|
4925
|
+
refreshTasksForProject(current);
|
|
4926
|
+
}
|
|
4927
|
+
return next;
|
|
4928
|
+
});
|
|
4929
|
+
}
|
|
4930
|
+
}, [sortedProjects, workspacePath]);
|
|
4900
4931
|
const refreshTasksForProject = (project) => {
|
|
4901
4932
|
const res = listProjectTasks(project);
|
|
4902
4933
|
setTaskCache((prev) => ({ ...prev, [projectKey2(project)]: res.tasks }));
|
|
@@ -4981,7 +5012,7 @@ var init_TasksView = __esm({
|
|
|
4981
5012
|
}, [flattenedRows]);
|
|
4982
5013
|
const selectedRow = flattenedRows[selectedIndex];
|
|
4983
5014
|
const selectedTask = selectedRow?.kind === "task" && selectedRow.task.task_slug !== "__none__" ? selectedRow.task : null;
|
|
4984
|
-
return /* @__PURE__ */ jsxs4(Box5, { flexDirection: "column", padding: 1, borderStyle: "round", borderColor: "
|
|
5015
|
+
return /* @__PURE__ */ jsxs4(Box5, { flexDirection: "column", padding: 1, borderStyle: "round", borderColor: "white", flexGrow: 1, children: [
|
|
4985
5016
|
/* @__PURE__ */ jsxs4(Box5, { justifyContent: "space-between", children: [
|
|
4986
5017
|
/* @__PURE__ */ jsxs4(Box5, { children: [
|
|
4987
5018
|
/* @__PURE__ */ jsx6(Text5, { bold: true, color: "cyan", children: "\u2699 Tasks" }),
|
|
@@ -5033,20 +5064,23 @@ var init_TasksView = __esm({
|
|
|
5033
5064
|
}),
|
|
5034
5065
|
/* @__PURE__ */ jsx6(Box5, { marginTop: 1, children: /* @__PURE__ */ jsx6(Text5, { color: "gray", children: "\u25B2/\u25BC navigate \u2022 Enter expand/collapse \u2022 s cycle status \u2022 R refresh" }) })
|
|
5035
5066
|
] }),
|
|
5036
|
-
/* @__PURE__ */ jsx6(Box5, { flexDirection: "column", width: "45%", paddingLeft: 2, children: !selectedTask ? /* @__PURE__ */ jsxs4(Box5, { flexDirection: "column", justifyContent: "center", alignItems: "center", gap: 1, children: [
|
|
5067
|
+
/* @__PURE__ */ jsx6(Box5, { flexDirection: "column", width: "45%", paddingLeft: 2, children: !selectedTask ? /* @__PURE__ */ jsxs4(Box5, { flexDirection: "column", justifyContent: "center", alignItems: "center", gap: 1, flexGrow: 1, children: [
|
|
5037
5068
|
/* @__PURE__ */ jsx6(Text5, { bold: true, color: "dim", children: "\u2500 No Task Selected \u2500" }),
|
|
5038
5069
|
/* @__PURE__ */ jsx6(Text5, { color: "dim", children: "Use \u2191/\u2193 to navigate, Enter to expand projects" }),
|
|
5039
5070
|
/* @__PURE__ */ jsx6(Text5, { color: "dim", children: "Press 's' to cycle task status" })
|
|
5040
5071
|
] }) : /* @__PURE__ */ jsxs4(Box5, { flexDirection: "column", children: [
|
|
5041
|
-
/* @__PURE__ */
|
|
5042
|
-
|
|
5043
|
-
|
|
5044
|
-
|
|
5045
|
-
|
|
5072
|
+
/* @__PURE__ */ jsxs4(Box5, { marginBottom: 1, flexDirection: "column", children: [
|
|
5073
|
+
/* @__PURE__ */ jsx6(Text5, { bold: true, color: "cyan", children: selectedTask.title || selectedTask.task_slug }),
|
|
5074
|
+
selectedTask.summary && /* @__PURE__ */ jsx6(Text5, { color: "white", children: selectedTask.summary })
|
|
5075
|
+
] }),
|
|
5076
|
+
/* @__PURE__ */ jsx6(Text5, { dimColor: true, children: "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500" }),
|
|
5077
|
+
/* @__PURE__ */ jsxs4(Box5, { marginTop: 1, paddingX: 1, flexDirection: "column", children: [
|
|
5078
|
+
/* @__PURE__ */ jsx6(Text5, { bold: true, color: "white", children: "\u{1F4CB} STATUS" }),
|
|
5079
|
+
/* @__PURE__ */ jsxs4(Box5, { flexDirection: "column", marginTop: 1, children: [
|
|
5046
5080
|
/* @__PURE__ */ jsxs4(Text5, { children: [
|
|
5047
|
-
/* @__PURE__ */ jsx6(Text5, { color: "dim", children: "Status:" }),
|
|
5081
|
+
/* @__PURE__ */ jsx6(Text5, { color: "dim", children: "Status: " }),
|
|
5048
5082
|
" ",
|
|
5049
|
-
/* @__PURE__ */ jsx6(Text5, { children: selectedTask.status || "unknown" })
|
|
5083
|
+
/* @__PURE__ */ jsx6(Text5, { color: getStatusColor(selectedTask.status || ""), children: selectedTask.status || "unknown" })
|
|
5050
5084
|
] }),
|
|
5051
5085
|
/* @__PURE__ */ jsxs4(Text5, { children: [
|
|
5052
5086
|
/* @__PURE__ */ jsx6(Text5, { color: "dim", children: "Updated:" }),
|
|
@@ -5054,7 +5088,7 @@ var init_TasksView = __esm({
|
|
|
5054
5088
|
/* @__PURE__ */ jsx6(Text5, { children: selectedTask.updated_at || "\u2014" })
|
|
5055
5089
|
] }),
|
|
5056
5090
|
/* @__PURE__ */ jsxs4(Text5, { children: [
|
|
5057
|
-
/* @__PURE__ */ jsx6(Text5, { color: "dim", children: "Tags:" }),
|
|
5091
|
+
/* @__PURE__ */ jsx6(Text5, { color: "dim", children: "Tags: " }),
|
|
5058
5092
|
" ",
|
|
5059
5093
|
" ",
|
|
5060
5094
|
(() => {
|
|
@@ -5067,9 +5101,10 @@ var init_TasksView = __esm({
|
|
|
5067
5101
|
] })
|
|
5068
5102
|
] })
|
|
5069
5103
|
] }),
|
|
5070
|
-
/* @__PURE__ */
|
|
5071
|
-
|
|
5072
|
-
|
|
5104
|
+
/* @__PURE__ */ jsx6(Box5, { marginTop: 1, children: /* @__PURE__ */ jsx6(Text5, { dimColor: true, children: "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500" }) }),
|
|
5105
|
+
/* @__PURE__ */ jsxs4(Box5, { marginTop: 1, paddingX: 1, flexDirection: "column", children: [
|
|
5106
|
+
/* @__PURE__ */ jsx6(Text5, { bold: true, color: "white", children: "\u{1F4CB} CHECKLIST" }),
|
|
5107
|
+
selectedTask.checklist && selectedTask.checklist.length > 0 && /* @__PURE__ */ jsx6(Box5, { marginTop: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs4(Box5, { marginBottom: 1, children: [
|
|
5073
5108
|
/* @__PURE__ */ jsx6(Text5, { backgroundColor: "white", children: getProgressBar(getChecklistProgress(selectedTask.checklist).percentage) }),
|
|
5074
5109
|
/* @__PURE__ */ jsxs4(Text5, { dimColor: true, children: [
|
|
5075
5110
|
" ",
|
|
@@ -5082,17 +5117,21 @@ var init_TasksView = __esm({
|
|
|
5082
5117
|
"%)"
|
|
5083
5118
|
] })
|
|
5084
5119
|
] }) }),
|
|
5085
|
-
(selectedTask.checklist || []).length === 0 ? /* @__PURE__ */ jsx6(Text5, { color: "dim", children: "\u2014" }) : (selectedTask.checklist || []).slice(0, 12).map((c, i) =>
|
|
5086
|
-
|
|
5087
|
-
|
|
5088
|
-
" "
|
|
5089
|
-
|
|
5090
|
-
|
|
5091
|
-
|
|
5120
|
+
(selectedTask.checklist || []).length === 0 ? /* @__PURE__ */ jsx6(Text5, { color: "dim", children: "\u2014" }) : (selectedTask.checklist || []).slice(0, 12).map((c, i) => {
|
|
5121
|
+
const isDone = c.status === "done";
|
|
5122
|
+
return /* @__PURE__ */ jsxs4(Text5, { color: isDone ? "dim" : "white", children: [
|
|
5123
|
+
/* @__PURE__ */ jsxs4(Text5, { color: isDone ? "green" : "dim", children: [
|
|
5124
|
+
getCheckbox(c.status || "pending"),
|
|
5125
|
+
" "
|
|
5126
|
+
] }),
|
|
5127
|
+
c.label || c.id || "item"
|
|
5128
|
+
] }, c.id || i);
|
|
5129
|
+
})
|
|
5092
5130
|
] }),
|
|
5093
|
-
/* @__PURE__ */
|
|
5094
|
-
|
|
5095
|
-
|
|
5131
|
+
/* @__PURE__ */ jsx6(Box5, { marginTop: 1, children: /* @__PURE__ */ jsx6(Text5, { dimColor: true, children: "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500" }) }),
|
|
5132
|
+
/* @__PURE__ */ jsxs4(Box5, { marginTop: 1, paddingX: 1, flexDirection: "column", children: [
|
|
5133
|
+
/* @__PURE__ */ jsx6(Text5, { bold: true, color: "white", children: "\u{1F916} AGENTS" }),
|
|
5134
|
+
/* @__PURE__ */ jsx6(Box5, { marginTop: 1, flexDirection: "column", children: !selectedTask.agents ? /* @__PURE__ */ jsx6(Text5, { color: "dim", children: "\u2014" }) : Object.entries(selectedTask.agents).map(([agent, info]) => /* @__PURE__ */ jsxs4(Text5, { children: [
|
|
5096
5135
|
/* @__PURE__ */ jsxs4(Text5, { color: "dim", children: [
|
|
5097
5136
|
"- ",
|
|
5098
5137
|
agent,
|
|
@@ -5102,16 +5141,16 @@ var init_TasksView = __esm({
|
|
|
5102
5141
|
info?.status === "in_progress" && /* @__PURE__ */ jsx6(Text5, { color: "yellow", children: "\u27F3" }),
|
|
5103
5142
|
info?.status === "pending" && /* @__PURE__ */ jsx6(Text5, { color: "dim", children: "\u25CB" }),
|
|
5104
5143
|
info?.blocked && /* @__PURE__ */ jsx6(Text5, { color: "red", children: "\u2715" }),
|
|
5105
|
-
/* @__PURE__ */ jsxs4(Text5, {
|
|
5144
|
+
/* @__PURE__ */ jsxs4(Text5, { color: info?.status === "complete" ? "dim" : "white", children: [
|
|
5106
5145
|
" ",
|
|
5107
5146
|
info?.status || "\u2014"
|
|
5108
5147
|
] }),
|
|
5109
5148
|
info?.artifact && /* @__PURE__ */ jsxs4(Text5, { dimColor: true, children: [
|
|
5110
|
-
"(",
|
|
5149
|
+
" (",
|
|
5111
5150
|
info.artifact,
|
|
5112
5151
|
")"
|
|
5113
5152
|
] })
|
|
5114
|
-
] }, agent))
|
|
5153
|
+
] }, agent)) })
|
|
5115
5154
|
] })
|
|
5116
5155
|
] }) })
|
|
5117
5156
|
] })
|
|
@@ -5140,7 +5179,7 @@ var init_LogViewer = __esm({
|
|
|
5140
5179
|
if (log.includes("Success")) return /* @__PURE__ */ jsx7(Text6, { color: "green", children: log });
|
|
5141
5180
|
return /* @__PURE__ */ jsx7(Text6, { children: log });
|
|
5142
5181
|
};
|
|
5143
|
-
return /* @__PURE__ */ jsxs5(Box6, { flexDirection: "column", borderStyle: "round", borderColor: "
|
|
5182
|
+
return /* @__PURE__ */ jsxs5(Box6, { flexDirection: "column", borderStyle: "round", borderColor: "white", paddingX: 1, height: height + 2, flexGrow: 1, children: [
|
|
5144
5183
|
padding.map((_, i) => /* @__PURE__ */ jsx7(Text6, { children: " " }, `empty-${i}`)),
|
|
5145
5184
|
visibleLogs.map((log, i) => /* @__PURE__ */ jsx7(Box6, { children: formatLog(log) }, `log-${i}`))
|
|
5146
5185
|
] });
|
|
@@ -5157,7 +5196,7 @@ var init_StatusBoard = __esm({
|
|
|
5157
5196
|
"src/mcp/ui/StatusBoard.tsx"() {
|
|
5158
5197
|
"use strict";
|
|
5159
5198
|
StatusBoard = ({ exposedLabel, port, pid, running, hasDrift }) => {
|
|
5160
|
-
return /* @__PURE__ */ jsx8(Box7, { borderStyle: "single", borderColor: "
|
|
5199
|
+
return /* @__PURE__ */ jsx8(Box7, { borderStyle: "single", borderColor: "white", paddingX: 1, flexGrow: 1, children: /* @__PURE__ */ jsxs6(Text7, { children: [
|
|
5161
5200
|
running ? /* @__PURE__ */ jsx8(Text7, { color: "green", children: "\u25CF RUNNING" }) : /* @__PURE__ */ jsx8(Text7, { color: "red", children: "\u25CF STOPPED" }),
|
|
5162
5201
|
" ",
|
|
5163
5202
|
"\u2502",
|
|
@@ -5266,6 +5305,7 @@ var init_App = __esm({
|
|
|
5266
5305
|
pid: process.pid,
|
|
5267
5306
|
running: false
|
|
5268
5307
|
});
|
|
5308
|
+
const workspacePath = useMemo5(() => detectWorkspaceRoot(), []);
|
|
5269
5309
|
const isRAGEnabled = useMemo5(() => {
|
|
5270
5310
|
return exposedProjects.some((p) => {
|
|
5271
5311
|
const cfg = findProjectConfig(config, { name: p.name, path: p.path });
|
|
@@ -5284,7 +5324,6 @@ var init_App = __esm({
|
|
|
5284
5324
|
{ id: "projects", label: "Projects" }
|
|
5285
5325
|
];
|
|
5286
5326
|
}, []);
|
|
5287
|
-
const workspacePath = detectWorkspaceRoot();
|
|
5288
5327
|
const installStatus = checkInstallStatus(workspacePath);
|
|
5289
5328
|
const installedCount = [
|
|
5290
5329
|
installStatus.antigravity,
|
|
@@ -5375,8 +5414,8 @@ var init_App = __esm({
|
|
|
5375
5414
|
}
|
|
5376
5415
|
),
|
|
5377
5416
|
activeTab === "logs" && /* @__PURE__ */ jsx10(LogViewer, { logs, height: contentHeight }),
|
|
5378
|
-
activeTab === "tasks" && /* @__PURE__ */ jsx10(TasksView, { projects }),
|
|
5379
|
-
activeTab === "projects" && /* @__PURE__ */ jsx10(ProjectsView, { config, projects, onConfigChange: handleConfigChange })
|
|
5417
|
+
activeTab === "tasks" && /* @__PURE__ */ jsx10(TasksView, { projects, workspacePath }),
|
|
5418
|
+
activeTab === "projects" && /* @__PURE__ */ jsx10(ProjectsView, { config, projects, onConfigChange: handleConfigChange, workspacePath })
|
|
5380
5419
|
] }),
|
|
5381
5420
|
/* @__PURE__ */ jsx10(Box9, { marginTop: 0, children: /* @__PURE__ */ jsx10(
|
|
5382
5421
|
StatusBoard,
|