devez-vibe 1.3.14 → 1.3.16
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/bin/dvz.exe +0 -0
- package/bridge/claude-agent-sdk-bridge.mjs +66 -12
- package/package.json +1 -1
package/bin/dvz.exe
CHANGED
|
Binary file
|
|
@@ -800,7 +800,7 @@ async function claudePluginDetail(params) {
|
|
|
800
800
|
};
|
|
801
801
|
}
|
|
802
802
|
|
|
803
|
-
async function claudeSkills(params) {
|
|
803
|
+
async function claudeSkills(params) {
|
|
804
804
|
const installed = await runClaudeJson(params, ["plugin", "list", "--json"]);
|
|
805
805
|
const skills = [];
|
|
806
806
|
for (const plugin of Array.isArray(installed) ? installed : []) {
|
|
@@ -817,10 +817,48 @@ async function claudeSkills(params) {
|
|
|
817
817
|
}
|
|
818
818
|
} catch { /* Plugins do not have to provide skills. */ }
|
|
819
819
|
}
|
|
820
|
-
return { data: [{ cwd: params.cwd || process.cwd(), skills }] };
|
|
821
|
-
}
|
|
822
|
-
|
|
823
|
-
function
|
|
820
|
+
return { data: [{ cwd: params.cwd || process.cwd(), skills }] };
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
function claudeMcpStatusValue(statuses) {
|
|
824
|
+
return {
|
|
825
|
+
data: (Array.isArray(statuses) ? statuses : []).map((server) => ({
|
|
826
|
+
name: String(server?.name || "MCP"),
|
|
827
|
+
serverInfo: server?.serverInfo
|
|
828
|
+
? {
|
|
829
|
+
title: String(server.serverInfo.name || server.name || "MCP"),
|
|
830
|
+
version: String(server.serverInfo.version || ""),
|
|
831
|
+
}
|
|
832
|
+
: null,
|
|
833
|
+
tools: Object.fromEntries(
|
|
834
|
+
(Array.isArray(server?.tools) ? server.tools : [])
|
|
835
|
+
.filter((tool) => tool?.name)
|
|
836
|
+
.map((tool) => [String(tool.name), tool]),
|
|
837
|
+
),
|
|
838
|
+
resources: [],
|
|
839
|
+
authStatus: server?.status === "needs-auth"
|
|
840
|
+
? "notLoggedIn"
|
|
841
|
+
: server?.status === "connected"
|
|
842
|
+
? "unsupported"
|
|
843
|
+
: String(server?.status || "unknown"),
|
|
844
|
+
status: String(server?.status || "unknown"),
|
|
845
|
+
...(server?.error ? { error: String(server.error) } : {}),
|
|
846
|
+
})),
|
|
847
|
+
};
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
async function claudeMcpStatus(params) {
|
|
851
|
+
const session = lookupSession(params.threadId || params.sessionId);
|
|
852
|
+
if (!session) {
|
|
853
|
+
return {
|
|
854
|
+
data: [],
|
|
855
|
+
unavailableReason: "Claude 세션이 아직 시작되지 않았습니다.",
|
|
856
|
+
};
|
|
857
|
+
}
|
|
858
|
+
return claudeMcpStatusValue(await session.query.mcpServerStatus());
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
function isQuestionDeliveryError(error) {
|
|
824
862
|
return error?.code === -32700
|
|
825
863
|
|| String(error?.message || error).includes("사용자 입력 화면에 전달하지 못했습니다");
|
|
826
864
|
}
|
|
@@ -2236,9 +2274,10 @@ async function readableCwd(id, cwd) {
|
|
|
2236
2274
|
return await transcriptCwd(id) || cwd;
|
|
2237
2275
|
}
|
|
2238
2276
|
|
|
2239
|
-
async function dispatch(method, params = {}) {
|
|
2240
|
-
if (method === "model/list") return loadModelCatalog(params);
|
|
2241
|
-
if (method === "
|
|
2277
|
+
async function dispatch(method, params = {}) {
|
|
2278
|
+
if (method === "model/list") return loadModelCatalog(params);
|
|
2279
|
+
if (method === "mcpServerStatus/list") return claudeMcpStatus(params);
|
|
2280
|
+
if (method === "plugin/list") return claudePluginCatalog(params);
|
|
2242
2281
|
if (method === "plugin/installed") return claudePluginCatalog(params, true);
|
|
2243
2282
|
if (method === "plugin/read") return claudePluginDetail(params);
|
|
2244
2283
|
if (method === "plugin/install") {
|
|
@@ -2474,14 +2513,29 @@ async function runSelfTest() {
|
|
|
2474
2513
|
[{ name: "official", installLocation: "/tmp/official" }],
|
|
2475
2514
|
);
|
|
2476
2515
|
const plugin = pluginCatalog.marketplaces[0]?.plugins[0];
|
|
2477
|
-
if (plugin?.id !== "cloudflare@official"
|
|
2516
|
+
if (plugin?.id !== "cloudflare@official"
|
|
2478
2517
|
|| plugin?.name !== "cloudflare@official"
|
|
2479
2518
|
|| plugin?.interface?.displayName !== "cloudflare"
|
|
2480
2519
|
|| plugin?.installed !== true
|
|
2481
2520
|
|| plugin?.enabled !== true) {
|
|
2482
|
-
throw new Error(`Claude plugin catalogue self-test failed: ${JSON.stringify(pluginCatalog)}`);
|
|
2483
|
-
}
|
|
2484
|
-
const
|
|
2521
|
+
throw new Error(`Claude plugin catalogue self-test failed: ${JSON.stringify(pluginCatalog)}`);
|
|
2522
|
+
}
|
|
2523
|
+
const mcpStatus = claudeMcpStatusValue([
|
|
2524
|
+
{
|
|
2525
|
+
name: "context7",
|
|
2526
|
+
status: "connected",
|
|
2527
|
+
serverInfo: { name: "Context7", version: "1.0.0" },
|
|
2528
|
+
tools: [{ name: "resolve" }, { name: "docs" }],
|
|
2529
|
+
},
|
|
2530
|
+
{ name: "figma", status: "needs-auth", tools: [] },
|
|
2531
|
+
]).data;
|
|
2532
|
+
if (mcpStatus[0]?.name !== "context7"
|
|
2533
|
+
|| Object.keys(mcpStatus[0]?.tools || {}).length !== 2
|
|
2534
|
+
|| mcpStatus[0]?.status !== "connected"
|
|
2535
|
+
|| mcpStatus[1]?.authStatus !== "notLoggedIn") {
|
|
2536
|
+
throw new Error(`Claude MCP status self-test failed: ${JSON.stringify(mcpStatus)}`);
|
|
2537
|
+
}
|
|
2538
|
+
const user = (uuid, text) => ({
|
|
2485
2539
|
type: "user",
|
|
2486
2540
|
uuid,
|
|
2487
2541
|
message: { role: "user", content: [{ type: "text", text }] },
|