rrce-workflow 0.2.56 → 0.2.58
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 +175 -55
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1152,6 +1152,7 @@ function installAgentPrompts(config, workspacePath, dataPaths) {
|
|
|
1152
1152
|
const agentCoreDir = getAgentCoreDir();
|
|
1153
1153
|
syncMetadataToAll(agentCoreDir, dataPaths);
|
|
1154
1154
|
copyDirToAllStoragePaths(path10.join(agentCoreDir, "templates"), "templates", dataPaths);
|
|
1155
|
+
copyDirToAllStoragePaths(path10.join(agentCoreDir, "prompts"), "prompts", dataPaths);
|
|
1155
1156
|
if (config.storageMode === "workspace") {
|
|
1156
1157
|
const prompts = loadPromptsFromDir(getAgentCorePromptsDir());
|
|
1157
1158
|
if (config.tools.includes("copilot")) {
|
|
@@ -1184,9 +1185,15 @@ project:
|
|
|
1184
1185
|
name: "${workspaceName}"
|
|
1185
1186
|
|
|
1186
1187
|
tools:
|
|
1187
|
-
copilot: ${config.tools.includes("copilot")}
|
|
1188
|
-
antigravity: ${config.tools.includes("antigravity")}
|
|
1188
|
+
copilot: ${config.storageMode === "workspace" && config.tools.includes("copilot")}
|
|
1189
|
+
antigravity: ${config.storageMode === "workspace" && config.tools.includes("antigravity")}
|
|
1189
1190
|
`;
|
|
1191
|
+
if (config.enableRAG) {
|
|
1192
|
+
content += `
|
|
1193
|
+
semantic_search:
|
|
1194
|
+
enabled: true
|
|
1195
|
+
`;
|
|
1196
|
+
}
|
|
1190
1197
|
if (config.linkedProjects.length > 0) {
|
|
1191
1198
|
content += `
|
|
1192
1199
|
linked_projects:
|
|
@@ -1662,6 +1669,10 @@ function getExposedProjects() {
|
|
|
1662
1669
|
}
|
|
1663
1670
|
return [...globalProjects, ...linkedProjects];
|
|
1664
1671
|
}
|
|
1672
|
+
function getRAGIndexPath(project) {
|
|
1673
|
+
const scanRoot = project.path || project.dataPath;
|
|
1674
|
+
return path14.join(project.knowledgePath || path14.join(scanRoot, ".rrce-workflow", "knowledge"), "embeddings.json");
|
|
1675
|
+
}
|
|
1665
1676
|
function detectActiveProject(knownProjects) {
|
|
1666
1677
|
let scanList = knownProjects;
|
|
1667
1678
|
if (!scanList) {
|
|
@@ -2756,7 +2767,7 @@ var init_Header = __esm({
|
|
|
2756
2767
|
});
|
|
2757
2768
|
|
|
2758
2769
|
// src/mcp/ui/Overview.tsx
|
|
2759
|
-
import "react";
|
|
2770
|
+
import { useMemo } from "react";
|
|
2760
2771
|
import { Box as Box2, Text as Text2 } from "ink";
|
|
2761
2772
|
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
2762
2773
|
var Overview;
|
|
@@ -2764,7 +2775,9 @@ var init_Overview = __esm({
|
|
|
2764
2775
|
"src/mcp/ui/Overview.tsx"() {
|
|
2765
2776
|
"use strict";
|
|
2766
2777
|
init_Header();
|
|
2778
|
+
init_prompts2();
|
|
2767
2779
|
Overview = ({ serverStatus, stats }) => {
|
|
2780
|
+
const agents = useMemo(() => getAllPrompts(), []);
|
|
2768
2781
|
return /* @__PURE__ */ jsxs(Box2, { flexDirection: "column", flexGrow: 1, children: [
|
|
2769
2782
|
/* @__PURE__ */ jsx2(Header, {}),
|
|
2770
2783
|
/* @__PURE__ */ jsxs(Box2, { borderStyle: "round", padding: 1, borderColor: "white", flexDirection: "column", flexGrow: 1, children: [
|
|
@@ -2791,23 +2804,33 @@ var init_Overview = __esm({
|
|
|
2791
2804
|
] })
|
|
2792
2805
|
] })
|
|
2793
2806
|
] }),
|
|
2794
|
-
/* @__PURE__ */ jsxs(Box2, { marginTop: 1, borderStyle: "single", borderColor: "gray", flexDirection: "column", paddingX: 1, children: [
|
|
2795
|
-
/* @__PURE__ */ jsx2(Text2, { bold: true, children: "
|
|
2796
|
-
/* @__PURE__ */ jsxs(
|
|
2797
|
-
|
|
2798
|
-
|
|
2799
|
-
|
|
2800
|
-
|
|
2801
|
-
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2807
|
+
/* @__PURE__ */ jsxs(Box2, { marginTop: 1, borderStyle: "single", borderColor: "gray", flexDirection: "column", paddingX: 1, flexGrow: 1, children: [
|
|
2808
|
+
/* @__PURE__ */ jsx2(Text2, { bold: true, children: "Available Agents & Instructions:" }),
|
|
2809
|
+
agents.map((agent) => /* @__PURE__ */ jsxs(Box2, { flexDirection: "column", marginTop: 1, children: [
|
|
2810
|
+
/* @__PURE__ */ jsxs(Text2, { color: "yellow", children: [
|
|
2811
|
+
"\u27A4 ",
|
|
2812
|
+
agent.name,
|
|
2813
|
+
" ",
|
|
2814
|
+
/* @__PURE__ */ jsxs(Text2, { color: "dim", children: [
|
|
2815
|
+
"(",
|
|
2816
|
+
agent.id,
|
|
2817
|
+
")"
|
|
2818
|
+
] })
|
|
2819
|
+
] }),
|
|
2820
|
+
/* @__PURE__ */ jsxs(Text2, { color: "white", children: [
|
|
2821
|
+
" ",
|
|
2822
|
+
agent.description
|
|
2823
|
+
] }),
|
|
2824
|
+
agent.arguments.length > 0 && /* @__PURE__ */ jsxs(Text2, { color: "dim", children: [
|
|
2825
|
+
" Args: ",
|
|
2826
|
+
agent.arguments.map((a) => a.name + (a.required ? "*" : "")).join(", ")
|
|
2827
|
+
] }),
|
|
2828
|
+
/* @__PURE__ */ jsxs(Text2, { color: "cyan", children: [
|
|
2829
|
+
' Instruction: "Use the ',
|
|
2830
|
+
agent.name,
|
|
2831
|
+
' to..."'
|
|
2832
|
+
] })
|
|
2833
|
+
] }, agent.id))
|
|
2811
2834
|
] }),
|
|
2812
2835
|
/* @__PURE__ */ jsxs(Box2, { marginTop: 1, flexDirection: "column", children: [
|
|
2813
2836
|
/* @__PURE__ */ jsx2(Text2, { color: "dim", children: "Controls:" }),
|
|
@@ -3120,10 +3143,93 @@ var init_StatusBoard = __esm({
|
|
|
3120
3143
|
}
|
|
3121
3144
|
});
|
|
3122
3145
|
|
|
3146
|
+
// src/mcp/ui/IndexingStatus.tsx
|
|
3147
|
+
import { useState as useState4, useEffect as useEffect3 } from "react";
|
|
3148
|
+
import { Box as Box9, Text as Text9 } from "ink";
|
|
3149
|
+
import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
3150
|
+
var IndexingStatus;
|
|
3151
|
+
var init_IndexingStatus = __esm({
|
|
3152
|
+
"src/mcp/ui/IndexingStatus.tsx"() {
|
|
3153
|
+
"use strict";
|
|
3154
|
+
init_rag();
|
|
3155
|
+
init_resources();
|
|
3156
|
+
init_config_utils();
|
|
3157
|
+
IndexingStatus = ({ projects, config }) => {
|
|
3158
|
+
const [stats, setStats] = useState4([]);
|
|
3159
|
+
const [loading, setLoading] = useState4(true);
|
|
3160
|
+
useEffect3(() => {
|
|
3161
|
+
const fetchStats = async () => {
|
|
3162
|
+
const newStats = [];
|
|
3163
|
+
for (const project of projects) {
|
|
3164
|
+
const projConfig = findProjectConfig(config, { name: project.name, path: project.path });
|
|
3165
|
+
const enabled = projConfig?.semanticSearch?.enabled ?? false;
|
|
3166
|
+
if (!enabled) {
|
|
3167
|
+
newStats.push({
|
|
3168
|
+
projectName: project.name,
|
|
3169
|
+
enabled: false,
|
|
3170
|
+
totalFiles: 0,
|
|
3171
|
+
totalChunks: 0
|
|
3172
|
+
});
|
|
3173
|
+
continue;
|
|
3174
|
+
}
|
|
3175
|
+
try {
|
|
3176
|
+
const indexPath = getRAGIndexPath(project);
|
|
3177
|
+
const rag = new RAGService(indexPath, "dummy");
|
|
3178
|
+
const s = rag.getStats();
|
|
3179
|
+
newStats.push({
|
|
3180
|
+
projectName: project.name,
|
|
3181
|
+
enabled: true,
|
|
3182
|
+
totalFiles: s.totalFiles,
|
|
3183
|
+
totalChunks: s.totalChunks,
|
|
3184
|
+
lastFullIndex: s.lastFullIndex
|
|
3185
|
+
});
|
|
3186
|
+
} catch (e) {
|
|
3187
|
+
newStats.push({
|
|
3188
|
+
projectName: project.name,
|
|
3189
|
+
enabled: true,
|
|
3190
|
+
totalFiles: 0,
|
|
3191
|
+
totalChunks: 0,
|
|
3192
|
+
error: String(e)
|
|
3193
|
+
});
|
|
3194
|
+
}
|
|
3195
|
+
}
|
|
3196
|
+
setStats(newStats);
|
|
3197
|
+
setLoading(false);
|
|
3198
|
+
};
|
|
3199
|
+
fetchStats();
|
|
3200
|
+
const interval = setInterval(fetchStats, 5e3);
|
|
3201
|
+
return () => clearInterval(interval);
|
|
3202
|
+
}, [projects, config]);
|
|
3203
|
+
if (loading && stats.length === 0) {
|
|
3204
|
+
return /* @__PURE__ */ jsx9(Text9, { children: "Loading indexing status..." });
|
|
3205
|
+
}
|
|
3206
|
+
return /* @__PURE__ */ jsxs8(Box9, { flexDirection: "column", padding: 1, borderStyle: "round", borderColor: "blue", flexGrow: 1, children: [
|
|
3207
|
+
/* @__PURE__ */ jsx9(Text9, { bold: true, color: "blue", children: " RAG Indexing Status " }),
|
|
3208
|
+
/* @__PURE__ */ jsxs8(Box9, { marginTop: 1, flexDirection: "column", children: [
|
|
3209
|
+
/* @__PURE__ */ jsxs8(Box9, { children: [
|
|
3210
|
+
/* @__PURE__ */ jsx9(Box9, { width: 25, children: /* @__PURE__ */ jsx9(Text9, { underline: true, children: "Project" }) }),
|
|
3211
|
+
/* @__PURE__ */ jsx9(Box9, { width: 15, children: /* @__PURE__ */ jsx9(Text9, { underline: true, children: "Status" }) }),
|
|
3212
|
+
/* @__PURE__ */ jsx9(Box9, { width: 15, children: /* @__PURE__ */ jsx9(Text9, { underline: true, children: "Indexed Files" }) }),
|
|
3213
|
+
/* @__PURE__ */ jsx9(Box9, { width: 15, children: /* @__PURE__ */ jsx9(Text9, { underline: true, children: "Total Chunks" }) }),
|
|
3214
|
+
/* @__PURE__ */ jsx9(Box9, { children: /* @__PURE__ */ jsx9(Text9, { underline: true, children: "Last Index" }) })
|
|
3215
|
+
] }),
|
|
3216
|
+
stats.length === 0 ? /* @__PURE__ */ jsx9(Text9, { color: "dim", children: "No exposed projects found." }) : stats.map((s) => /* @__PURE__ */ jsxs8(Box9, { marginTop: 0, children: [
|
|
3217
|
+
/* @__PURE__ */ jsx9(Box9, { width: 25, children: /* @__PURE__ */ jsx9(Text9, { color: "white", children: s.projectName }) }),
|
|
3218
|
+
/* @__PURE__ */ jsx9(Box9, { width: 15, children: /* @__PURE__ */ jsx9(Text9, { color: s.enabled ? "green" : "dim", children: s.enabled ? "Enabled" : "Disabled" }) }),
|
|
3219
|
+
/* @__PURE__ */ jsx9(Box9, { width: 15, children: /* @__PURE__ */ jsx9(Text9, { children: s.enabled ? s.totalFiles : "-" }) }),
|
|
3220
|
+
/* @__PURE__ */ jsx9(Box9, { width: 15, children: /* @__PURE__ */ jsx9(Text9, { children: s.enabled ? s.totalChunks : "-" }) }),
|
|
3221
|
+
/* @__PURE__ */ jsx9(Box9, { children: /* @__PURE__ */ jsx9(Text9, { children: s.lastFullIndex ? new Date(s.lastFullIndex).toLocaleTimeString() : "-" }) })
|
|
3222
|
+
] }, s.projectName))
|
|
3223
|
+
] })
|
|
3224
|
+
] });
|
|
3225
|
+
};
|
|
3226
|
+
}
|
|
3227
|
+
});
|
|
3228
|
+
|
|
3123
3229
|
// src/mcp/ui/components/TabBar.tsx
|
|
3124
3230
|
import "react";
|
|
3125
|
-
import { Box as
|
|
3126
|
-
import { jsx as
|
|
3231
|
+
import { Box as Box10, Text as Text10, useInput as useInput2 } from "ink";
|
|
3232
|
+
import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
3127
3233
|
var TabBar;
|
|
3128
3234
|
var init_TabBar = __esm({
|
|
3129
3235
|
"src/mcp/ui/components/TabBar.tsx"() {
|
|
@@ -3150,11 +3256,11 @@ var init_TabBar = __esm({
|
|
|
3150
3256
|
if (tab) onChange(tab.id);
|
|
3151
3257
|
}
|
|
3152
3258
|
});
|
|
3153
|
-
return /* @__PURE__ */
|
|
3259
|
+
return /* @__PURE__ */ jsxs9(Box10, { borderStyle: "single", paddingX: 1, borderColor: "gray", children: [
|
|
3154
3260
|
tabs.map((tab, index) => {
|
|
3155
3261
|
const isActive = tab.id === activeTab;
|
|
3156
|
-
return /* @__PURE__ */
|
|
3157
|
-
|
|
3262
|
+
return /* @__PURE__ */ jsx10(Box10, { marginRight: 2, children: /* @__PURE__ */ jsx10(
|
|
3263
|
+
Text10,
|
|
3158
3264
|
{
|
|
3159
3265
|
color: isActive ? "cyan" : "white",
|
|
3160
3266
|
bold: isActive,
|
|
@@ -3163,8 +3269,8 @@ var init_TabBar = __esm({
|
|
|
3163
3269
|
}
|
|
3164
3270
|
) }, tab.id);
|
|
3165
3271
|
}),
|
|
3166
|
-
/* @__PURE__ */
|
|
3167
|
-
/* @__PURE__ */
|
|
3272
|
+
/* @__PURE__ */ jsx10(Box10, { flexGrow: 1 }),
|
|
3273
|
+
/* @__PURE__ */ jsx10(Text10, { color: "dim", children: "Use \u25C4/\u25BA arrows to navigate" })
|
|
3168
3274
|
] });
|
|
3169
3275
|
};
|
|
3170
3276
|
}
|
|
@@ -3175,11 +3281,11 @@ var App_exports = {};
|
|
|
3175
3281
|
__export(App_exports, {
|
|
3176
3282
|
App: () => App
|
|
3177
3283
|
});
|
|
3178
|
-
import { useState as
|
|
3179
|
-
import { Box as
|
|
3284
|
+
import { useState as useState5, useEffect as useEffect4, useMemo as useMemo2, useCallback } from "react";
|
|
3285
|
+
import { Box as Box11, useInput as useInput3, useApp } from "ink";
|
|
3180
3286
|
import fs15 from "fs";
|
|
3181
|
-
import { jsx as
|
|
3182
|
-
var
|
|
3287
|
+
import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
3288
|
+
var App;
|
|
3183
3289
|
var init_App = __esm({
|
|
3184
3290
|
"src/mcp/ui/App.tsx"() {
|
|
3185
3291
|
"use strict";
|
|
@@ -3188,6 +3294,7 @@ var init_App = __esm({
|
|
|
3188
3294
|
init_InstallView();
|
|
3189
3295
|
init_LogViewer();
|
|
3190
3296
|
init_StatusBoard();
|
|
3297
|
+
init_IndexingStatus();
|
|
3191
3298
|
init_TabBar();
|
|
3192
3299
|
init_config();
|
|
3193
3300
|
init_config_utils();
|
|
@@ -3196,28 +3303,22 @@ var init_App = __esm({
|
|
|
3196
3303
|
init_server();
|
|
3197
3304
|
init_install();
|
|
3198
3305
|
init_paths();
|
|
3199
|
-
TABS = [
|
|
3200
|
-
{ id: "overview", label: "Overview" },
|
|
3201
|
-
{ id: "logs", label: "Logs" },
|
|
3202
|
-
{ id: "projects", label: "Projects" },
|
|
3203
|
-
{ id: "install", label: "Install" }
|
|
3204
|
-
];
|
|
3205
3306
|
App = ({ onExit, initialPort }) => {
|
|
3206
3307
|
const { exit } = useApp();
|
|
3207
|
-
const [activeTab, setActiveTab] =
|
|
3208
|
-
const [logs, setLogs] =
|
|
3209
|
-
const [serverInfo, setServerInfo] =
|
|
3308
|
+
const [activeTab, setActiveTab] = useState5("overview");
|
|
3309
|
+
const [logs, setLogs] = useState5([]);
|
|
3310
|
+
const [serverInfo, setServerInfo] = useState5({
|
|
3210
3311
|
port: initialPort,
|
|
3211
3312
|
pid: process.pid,
|
|
3212
3313
|
running: false
|
|
3213
3314
|
});
|
|
3214
|
-
const [config, setConfig] =
|
|
3215
|
-
const [projects, setProjects] =
|
|
3315
|
+
const [config, setConfig] = useState5(() => loadMCPConfig());
|
|
3316
|
+
const [projects, setProjects] = useState5(() => scanForProjects());
|
|
3216
3317
|
const refreshData = useCallback(() => {
|
|
3217
3318
|
setConfig(loadMCPConfig());
|
|
3218
3319
|
setProjects(scanForProjects());
|
|
3219
3320
|
}, []);
|
|
3220
|
-
const exposedProjects =
|
|
3321
|
+
const exposedProjects = useMemo2(
|
|
3221
3322
|
() => projects.filter((p) => {
|
|
3222
3323
|
const cfg = config.projects.find(
|
|
3223
3324
|
(c) => c.path && c.path === p.path || !c.path && c.name === p.name
|
|
@@ -3226,6 +3327,24 @@ var init_App = __esm({
|
|
|
3226
3327
|
}),
|
|
3227
3328
|
[projects, config]
|
|
3228
3329
|
);
|
|
3330
|
+
const isRAGEnabled = useMemo2(() => {
|
|
3331
|
+
return exposedProjects.some((p) => {
|
|
3332
|
+
const cfg = findProjectConfig(config, { name: p.name, path: p.path });
|
|
3333
|
+
return cfg?.semanticSearch?.enabled;
|
|
3334
|
+
});
|
|
3335
|
+
}, [exposedProjects, config]);
|
|
3336
|
+
const tabs = useMemo2(() => {
|
|
3337
|
+
const baseTabs = [
|
|
3338
|
+
{ id: "overview", label: "Overview" },
|
|
3339
|
+
{ id: "logs", label: "Logs" },
|
|
3340
|
+
{ id: "projects", label: "Projects" },
|
|
3341
|
+
{ id: "install", label: "Install" }
|
|
3342
|
+
];
|
|
3343
|
+
if (isRAGEnabled) {
|
|
3344
|
+
baseTabs.splice(3, 0, { id: "indexing", label: "Indexing" });
|
|
3345
|
+
}
|
|
3346
|
+
return baseTabs;
|
|
3347
|
+
}, [isRAGEnabled]);
|
|
3229
3348
|
const workspacePath = detectWorkspaceRoot();
|
|
3230
3349
|
const installStatus = checkInstallStatus(workspacePath);
|
|
3231
3350
|
const installedCount = [
|
|
@@ -3234,7 +3353,7 @@ var init_App = __esm({
|
|
|
3234
3353
|
installStatus.vscodeGlobal,
|
|
3235
3354
|
installStatus.vscodeWorkspace
|
|
3236
3355
|
].filter(Boolean).length;
|
|
3237
|
-
|
|
3356
|
+
useEffect4(() => {
|
|
3238
3357
|
const start = async () => {
|
|
3239
3358
|
const status = getMCPServerStatus();
|
|
3240
3359
|
if (!status.running) {
|
|
@@ -3250,7 +3369,7 @@ var init_App = __esm({
|
|
|
3250
3369
|
};
|
|
3251
3370
|
start();
|
|
3252
3371
|
}, []);
|
|
3253
|
-
|
|
3372
|
+
useEffect4(() => {
|
|
3254
3373
|
const logPath = getLogFilePath();
|
|
3255
3374
|
let lastSize = 0;
|
|
3256
3375
|
if (fs15.existsSync(logPath)) {
|
|
@@ -3301,10 +3420,10 @@ var init_App = __esm({
|
|
|
3301
3420
|
const handleConfigChange = useCallback(() => {
|
|
3302
3421
|
refreshData();
|
|
3303
3422
|
}, [refreshData]);
|
|
3304
|
-
return /* @__PURE__ */
|
|
3305
|
-
/* @__PURE__ */
|
|
3306
|
-
/* @__PURE__ */
|
|
3307
|
-
activeTab === "overview" && /* @__PURE__ */
|
|
3423
|
+
return /* @__PURE__ */ jsxs10(Box11, { flexDirection: "column", padding: 0, height: termHeight, children: [
|
|
3424
|
+
/* @__PURE__ */ jsx11(TabBar, { tabs, activeTab, onChange: setActiveTab }),
|
|
3425
|
+
/* @__PURE__ */ jsxs10(Box11, { marginTop: 1, flexGrow: 1, children: [
|
|
3426
|
+
activeTab === "overview" && /* @__PURE__ */ jsx11(
|
|
3308
3427
|
Overview,
|
|
3309
3428
|
{
|
|
3310
3429
|
serverStatus: serverInfo,
|
|
@@ -3315,11 +3434,12 @@ var init_App = __esm({
|
|
|
3315
3434
|
}
|
|
3316
3435
|
}
|
|
3317
3436
|
),
|
|
3318
|
-
activeTab === "projects" && /* @__PURE__ */
|
|
3319
|
-
activeTab === "
|
|
3320
|
-
activeTab === "
|
|
3437
|
+
activeTab === "projects" && /* @__PURE__ */ jsx11(ProjectsView, { config, projects, onConfigChange: handleConfigChange }),
|
|
3438
|
+
activeTab === "indexing" && /* @__PURE__ */ jsx11(IndexingStatus, { config, projects: exposedProjects }),
|
|
3439
|
+
activeTab === "install" && /* @__PURE__ */ jsx11(InstallView, {}),
|
|
3440
|
+
activeTab === "logs" && /* @__PURE__ */ jsx11(LogViewer, { logs, height: contentHeight })
|
|
3321
3441
|
] }),
|
|
3322
|
-
/* @__PURE__ */
|
|
3442
|
+
/* @__PURE__ */ jsx11(Box11, { marginTop: 0, children: /* @__PURE__ */ jsx11(
|
|
3323
3443
|
StatusBoard,
|
|
3324
3444
|
{
|
|
3325
3445
|
exposedLabel: `${exposedProjects.length} / ${projects.length} projects`,
|
|
@@ -3336,7 +3456,7 @@ var init_App = __esm({
|
|
|
3336
3456
|
// src/mcp/commands/start.ts
|
|
3337
3457
|
import { confirm as confirm3, isCancel as isCancel5, text } from "@clack/prompts";
|
|
3338
3458
|
async function handleStartServer() {
|
|
3339
|
-
const
|
|
3459
|
+
const React12 = await import("react");
|
|
3340
3460
|
const { render } = await import("ink");
|
|
3341
3461
|
const { App: App2 } = await Promise.resolve().then(() => (init_App(), App_exports));
|
|
3342
3462
|
const config = loadMCPConfig();
|
|
@@ -3377,7 +3497,7 @@ async function handleStartServer() {
|
|
|
3377
3497
|
}
|
|
3378
3498
|
}
|
|
3379
3499
|
process.stdin.resume();
|
|
3380
|
-
const app = render(
|
|
3500
|
+
const app = render(React12.createElement(App2, {
|
|
3381
3501
|
initialPort,
|
|
3382
3502
|
onExit: () => {
|
|
3383
3503
|
}
|