devez-vibe 1.9.31 → 1.9.33
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 +44 -11
- package/package.json +2 -2
package/bin/dvz.exe
CHANGED
|
Binary file
|
|
@@ -902,11 +902,14 @@ async function requestToolPermission(toolName, input, permission) {
|
|
|
902
902
|
// decide that a human answer is needed. Forward every such request to the host;
|
|
903
903
|
// auto-allowing the ordinary cases here would silently defeat default/auto mode.
|
|
904
904
|
const planApproval = toolName === "ExitPlanMode";
|
|
905
|
-
const persistentApprovalLabel =
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
905
|
+
const persistentApprovalLabel = permission.suppressAlwaysAllowRule
|
|
906
|
+
? "" : permissionSuggestionLabel(permission.suggestions);
|
|
907
|
+
const common = {
|
|
908
|
+
claudePermission: true,
|
|
909
|
+
title: permission.title || permission.displayName,
|
|
910
|
+
persistentApprovalLabel,
|
|
911
|
+
defaultToNo: Boolean(permission.defaultToNo),
|
|
912
|
+
suppressAlwaysAllowRule: Boolean(permission.suppressAlwaysAllowRule),
|
|
910
913
|
};
|
|
911
914
|
|
|
912
915
|
let method = "item/permissions/requestApproval";
|
|
@@ -944,9 +947,10 @@ async function requestToolPermission(toolName, input, permission) {
|
|
|
944
947
|
return {
|
|
945
948
|
behavior: "allow",
|
|
946
949
|
updatedInput: input,
|
|
947
|
-
...(
|
|
948
|
-
|
|
949
|
-
:
|
|
950
|
+
...(!permission.suppressAlwaysAllowRule
|
|
951
|
+
&& (response?.decision === "acceptForSession" || response?.scope === "session")
|
|
952
|
+
? { updatedPermissions: permission.suggestions }
|
|
953
|
+
: {}),
|
|
950
954
|
};
|
|
951
955
|
}
|
|
952
956
|
|
|
@@ -3891,7 +3895,7 @@ async function dispatch(method, params = {}) {
|
|
|
3891
3895
|
throw new Error(`지원하지 않는 Claude 브리지 메서드: ${method}`);
|
|
3892
3896
|
}
|
|
3893
3897
|
|
|
3894
|
-
async function runPermissionModeSelfTest() {
|
|
3898
|
+
async function runPermissionModeSelfTest() {
|
|
3895
3899
|
const fakeSession = (setPermissionMode) => ({
|
|
3896
3900
|
id: "permission-mode-self-test",
|
|
3897
3901
|
permissionMode: BOOTSTRAP_PERMISSION_MODE,
|
|
@@ -3923,7 +3927,35 @@ async function runPermissionModeSelfTest() {
|
|
|
3923
3927
|
|| rejectedCalls.join(",") !== "auto" || rejected.permissionModeVerified) {
|
|
3924
3928
|
throw new Error(`Claude permission double rejection self-test failed: ${doubleRejection}`);
|
|
3925
3929
|
}
|
|
3926
|
-
}
|
|
3930
|
+
}
|
|
3931
|
+
|
|
3932
|
+
async function runGuardedPermissionSelfTest() {
|
|
3933
|
+
const captured = [];
|
|
3934
|
+
const originalWrite = process.stdout.write;
|
|
3935
|
+
process.stdout.write = (chunk) => { captured.push(JSON.parse(String(chunk))); return true; };
|
|
3936
|
+
try {
|
|
3937
|
+
const pending = requestToolPermission("Bash", { command: "npm test" }, {
|
|
3938
|
+
defaultToNo: true,
|
|
3939
|
+
suppressAlwaysAllowRule: true,
|
|
3940
|
+
suggestions: [{ destination: "projectSettings", rules: [{ toolName: "Bash" }] }],
|
|
3941
|
+
});
|
|
3942
|
+
const request = captured[0];
|
|
3943
|
+
if (request.params.defaultToNo !== true
|
|
3944
|
+
|| request.params.suppressAlwaysAllowRule !== true
|
|
3945
|
+
|| request.params.persistentApprovalLabel) {
|
|
3946
|
+
throw new Error("Claude guarded permission request self-test failed");
|
|
3947
|
+
}
|
|
3948
|
+
const reply = pendingHostRequests.get(request.id);
|
|
3949
|
+
pendingHostRequests.delete(request.id);
|
|
3950
|
+
reply.resolve({ decision: "acceptForSession" });
|
|
3951
|
+
const result = await pending;
|
|
3952
|
+
if (result.behavior !== "allow" || "updatedPermissions" in result) {
|
|
3953
|
+
throw new Error("Claude guarded permission response self-test failed");
|
|
3954
|
+
}
|
|
3955
|
+
} finally {
|
|
3956
|
+
process.stdout.write = originalWrite;
|
|
3957
|
+
}
|
|
3958
|
+
}
|
|
3927
3959
|
|
|
3928
3960
|
function runToolPolicySelfTest() {
|
|
3929
3961
|
const cwd = process.platform === "win32" ? "C:\\repo" : "/repo";
|
|
@@ -4019,7 +4051,8 @@ async function runSelfTest() {
|
|
|
4019
4051
|
if (startupGaps.length) {
|
|
4020
4052
|
throw new Error(`Claude 기동 실패 안내 누락: ${startupGaps.join(", ")}`);
|
|
4021
4053
|
}
|
|
4022
|
-
await runPermissionModeSelfTest();
|
|
4054
|
+
await runPermissionModeSelfTest();
|
|
4055
|
+
await runGuardedPermissionSelfTest();
|
|
4023
4056
|
runToolPolicySelfTest();
|
|
4024
4057
|
await runCommandTimeoutSelfTest();
|
|
4025
4058
|
// A turn that ends with no answer must reach the user: refusal as an error
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "devez-vibe",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.33",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Stable terminal UI for Codex and Claude Agent SDK",
|
|
6
6
|
"keywords": [
|
|
@@ -45,6 +45,6 @@
|
|
|
45
45
|
"postinstall": "node install-skills.mjs && node prepare-search-deps.mjs"
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@anthropic-ai/claude-agent-sdk": "0.3.
|
|
48
|
+
"@anthropic-ai/claude-agent-sdk": "0.3.283"
|
|
49
49
|
}
|
|
50
50
|
}
|