devez-vibe 1.7.30 → 1.7.32

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/LICENSE CHANGED
@@ -1,33 +1,33 @@
1
- DevezCode source code license
2
-
3
- The MIT License below applies only to the DevezCode source code and to files
4
- that are not listed in the exception below.
5
-
6
- Exceptions:
7
-
8
- * `Resources/Images/FileTypes/` and `Resources/Licenses/` are Microsoft Visual
9
- Studio Image Library materials, subject to the included Microsoft terms.
10
- * `Resources/Images/ShellPresets/` contains third-party brand assets, subject
11
- to their respective owners' terms.
12
-
13
- MIT License
14
-
15
- Copyright (c) 2026 DevezCode contributors
16
-
17
- Permission is hereby granted, free of charge, to any person obtaining a copy
18
- of this software and associated documentation files (the "Software"), to deal
19
- in the Software without restriction, including without limitation the rights
20
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
21
- copies of the Software, and to permit persons to whom the Software is
22
- furnished to do so, subject to the following conditions:
23
-
24
- The above copyright notice and this permission notice shall be included in all
25
- copies or substantial portions of the Software.
26
-
27
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
28
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
29
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
30
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
31
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
32
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
33
- SOFTWARE.
1
+ DevezCode source code license
2
+
3
+ The MIT License below applies only to the DevezCode source code and to files
4
+ that are not listed in the exception below.
5
+
6
+ Exceptions:
7
+
8
+ * `Resources/Images/FileTypes/` and `Resources/Licenses/` are Microsoft Visual
9
+ Studio Image Library materials, subject to the included Microsoft terms.
10
+ * `Resources/Images/ShellPresets/` contains third-party brand assets, subject
11
+ to their respective owners' terms.
12
+
13
+ MIT License
14
+
15
+ Copyright (c) 2026 DevezCode contributors
16
+
17
+ Permission is hereby granted, free of charge, to any person obtaining a copy
18
+ of this software and associated documentation files (the "Software"), to deal
19
+ in the Software without restriction, including without limitation the rights
20
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
21
+ copies of the Software, and to permit persons to whom the Software is
22
+ furnished to do so, subject to the following conditions:
23
+
24
+ The above copyright notice and this permission notice shall be included in all
25
+ copies or substantial portions of the Software.
26
+
27
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
28
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
29
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
30
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
31
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
32
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
33
+ SOFTWARE.
package/README.md CHANGED
@@ -10,11 +10,11 @@
10
10
  npm install -g devez-vibe
11
11
  ```
12
12
 
13
- 설치하면 `dvz` 명령을 사용할 수 있습니다.
14
-
15
- 설치 과정에서 `luna-loop` 스킬도 Codex와 Claude의 사용자 스킬 경로에 함께 설치됩니다.
16
- 스킬은 자동 적용되지 않으며 `$luna-loop`로 직접 호출해야 합니다. 실제
17
- `gpt-5.6-luna` 검증을 사용하려면 Codex provider와 Luna 위임 기능이 연결돼 있어야 합니다.
13
+ 설치하면 `dvz` 명령을 사용할 수 있습니다.
14
+
15
+ 설치 과정에서 `luna-loop` 스킬도 Codex와 Claude의 사용자 스킬 경로에 함께 설치됩니다.
16
+ 스킬은 자동 적용되지 않으며 `$luna-loop`로 직접 호출해야 합니다. 실제
17
+ `gpt-5.6-luna` 검증을 사용하려면 Codex provider와 Luna 위임 기능이 연결돼 있어야 합니다.
18
18
 
19
19
  | 요건 | 값 |
20
20
  | --- | --- |
package/bin/dvz.exe CHANGED
Binary file
@@ -1546,9 +1546,9 @@ function processAssistant(session, message) {
1546
1546
  capabilities,
1547
1547
  message.message?.model,
1548
1548
  session.model,
1549
- );
1550
- const content = Array.isArray(message.message?.content) ? message.message.content : [];
1551
- // Without partial SDK events, replay completed text before tool items so the
1549
+ );
1550
+ const content = Array.isArray(message.message?.content) ? message.message.content : [];
1551
+ // Without partial SDK events, replay completed text before tool items so the
1552
1552
  // visible order still matches the assistant content order.
1553
1553
  if (!session.streamBlocks.size && !session.turn.sawStreamText) {
1554
1554
  for (const block of content) {
@@ -2898,22 +2898,22 @@ function historyState(messages) {
2898
2898
  }));
2899
2899
  turn.items.push({ id: "claude-plan-latest", type: "plan", text, steps });
2900
2900
  }
2901
- return {
2902
- tasks,
2903
- turns: turns
2904
- .filter((candidate) => !candidate.synthetic)
2905
- .map(({ synthetic: _, ...candidate }) => {
2906
- const answered = candidate.items.some((item) =>
2907
- item.type === "agentMessage" && String(item.text || "").trim());
2908
- // Claude persists the user record before an immediate interrupt. Native
2909
- // resume hides that dangling prompt, so expose it as interrupted for the
2910
- // common host history filter instead of calling every transcript turn
2911
- // completed.
2912
- if (!answered) candidate.status = "interrupted";
2913
- return candidate;
2914
- }),
2915
- };
2916
- }
2901
+ return {
2902
+ tasks,
2903
+ turns: turns
2904
+ .filter((candidate) => !candidate.synthetic)
2905
+ .map(({ synthetic: _, ...candidate }) => {
2906
+ const answered = candidate.items.some((item) =>
2907
+ item.type === "agentMessage" && String(item.text || "").trim());
2908
+ // Claude persists the user record before an immediate interrupt. Native
2909
+ // resume hides that dangling prompt, so expose it as interrupted for the
2910
+ // common host history filter instead of calling every transcript turn
2911
+ // completed.
2912
+ if (!answered) candidate.status = "interrupted";
2913
+ return candidate;
2914
+ }),
2915
+ };
2916
+ }
2917
2917
 
2918
2918
  function historyTurns(messages) {
2919
2919
  return historyState(messages).turns;
@@ -3604,15 +3604,15 @@ async function runSelfTest() {
3604
3604
  ["say hello", "claude:claude-sonnet-5"],
3605
3605
  ["hay zzz", "claude:claude-haiku-4-5-20251001"],
3606
3606
  ];
3607
- if (turns.length !== expected.length
3608
- || prompts.some((prompt, index) => prompt?.content?.[0]?.text !== expected[index][0]
3609
- || prompt.model !== expected[index][1])) {
3610
- throw new Error(`Claude history self-test failed: ${JSON.stringify(turns)}`);
3611
- }
3612
- const interrupted = historyTurns([user("cancelled", "취소한 요청")]);
3613
- if (interrupted.length !== 1 || interrupted[0].status !== "interrupted") {
3614
- throw new Error(`Claude interrupted prompt history self-test failed: ${JSON.stringify(interrupted)}`);
3615
- }
3607
+ if (turns.length !== expected.length
3608
+ || prompts.some((prompt, index) => prompt?.content?.[0]?.text !== expected[index][0]
3609
+ || prompt.model !== expected[index][1])) {
3610
+ throw new Error(`Claude history self-test failed: ${JSON.stringify(turns)}`);
3611
+ }
3612
+ const interrupted = historyTurns([user("cancelled", "취소한 요청")]);
3613
+ if (interrupted.length !== 1 || interrupted[0].status !== "interrupted") {
3614
+ throw new Error(`Claude interrupted prompt history self-test failed: ${JSON.stringify(interrupted)}`);
3615
+ }
3616
3616
  const taskUse = (uuid, id, name, input) => ({
3617
3617
  type: "assistant",
3618
3618
  uuid,
@@ -4434,14 +4434,14 @@ async function runSelfTest() {
4434
4434
  .split("\n")
4435
4435
  .filter(Boolean)
4436
4436
  .map((line) => JSON.parse(line));
4437
- const openingMessageIndex = openingEvents.findIndex((event) =>
4438
- event.method === "item/completed"
4439
- && event.params?.item?.type === "agentMessage");
4440
- const openingToolIndex = openingEvents.findIndex((event) =>
4441
- event.method === "item/started" && event.params?.item?.type === "dynamicToolCall");
4442
- if (openingMessageIndex >= 0 || openingToolIndex < 0) {
4443
- throw new Error(`Claude tool-first turn self-test failed: ${JSON.stringify(openingEvents)}`);
4444
- }
4437
+ const openingMessageIndex = openingEvents.findIndex((event) =>
4438
+ event.method === "item/completed"
4439
+ && event.params?.item?.type === "agentMessage");
4440
+ const openingToolIndex = openingEvents.findIndex((event) =>
4441
+ event.method === "item/started" && event.params?.item?.type === "dynamicToolCall");
4442
+ if (openingMessageIndex >= 0 || openingToolIndex < 0) {
4443
+ throw new Error(`Claude tool-first turn self-test failed: ${JSON.stringify(openingEvents)}`);
4444
+ }
4445
4445
  const languageCaptured = [];
4446
4446
  process.stdout.write = (chunk) => {
4447
4447
  languageCaptured.push(String(chunk));
package/package.json CHANGED
@@ -1,46 +1,46 @@
1
- {
2
- "name": "devez-vibe",
3
- "version": "1.7.30",
4
- "description": "Stable terminal UI for Codex and Claude Agent SDK",
5
- "keywords": [
6
- "codex",
7
- "cli",
8
- "tui",
9
- "terminal",
10
- "app-server",
11
- "claude-agent-sdk"
12
- ],
13
- "homepage": "https://github.com/MrHoje/Devez-vibe#readme",
14
- "bugs": "https://github.com/MrHoje/Devez-vibe/issues",
15
- "repository": {
16
- "type": "git",
17
- "url": "git+https://github.com/MrHoje/Devez-vibe.git"
18
- },
19
- "license": "MIT",
20
- "bin": {
21
- "dvz": "bin/dvz.exe"
22
- },
23
- "files": [
24
- "bin/dvz.exe",
25
- "bridge/claude-agent-sdk-bridge.mjs",
26
- "install-skills.mjs",
27
- "skills/luna-loop/",
28
- "README.md",
29
- "LICENSE"
30
- ],
31
- "os": [
32
- "win32"
33
- ],
34
- "cpu": [
35
- "x64"
36
- ],
37
- "engines": {
38
- "node": ">=18"
39
- },
40
- "scripts": {
41
- "postinstall": "node install-skills.mjs"
42
- },
43
- "dependencies": {
44
- "@anthropic-ai/claude-agent-sdk": "0.3.258"
45
- }
46
- }
1
+ {
2
+ "name": "devez-vibe",
3
+ "version": "1.7.32",
4
+ "description": "Stable terminal UI for Codex and Claude Agent SDK",
5
+ "keywords": [
6
+ "codex",
7
+ "cli",
8
+ "tui",
9
+ "terminal",
10
+ "app-server",
11
+ "claude-agent-sdk"
12
+ ],
13
+ "homepage": "https://github.com/MrHoje/Devez-vibe#readme",
14
+ "bugs": "https://github.com/MrHoje/Devez-vibe/issues",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/MrHoje/Devez-vibe.git"
18
+ },
19
+ "license": "MIT",
20
+ "bin": {
21
+ "dvz": "bin/dvz.exe"
22
+ },
23
+ "files": [
24
+ "bin/dvz.exe",
25
+ "bridge/claude-agent-sdk-bridge.mjs",
26
+ "install-skills.mjs",
27
+ "skills/luna-loop/",
28
+ "README.md",
29
+ "LICENSE"
30
+ ],
31
+ "os": [
32
+ "win32"
33
+ ],
34
+ "cpu": [
35
+ "x64"
36
+ ],
37
+ "engines": {
38
+ "node": ">=18"
39
+ },
40
+ "scripts": {
41
+ "postinstall": "node install-skills.mjs"
42
+ },
43
+ "dependencies": {
44
+ "@anthropic-ai/claude-agent-sdk": "0.3.258"
45
+ }
46
+ }
@@ -1,7 +1,7 @@
1
- interface:
2
- display_name: "루프 검증"
3
- short_description: "수정 후 Luna 반복 검증과 병렬 재검수를 자동화"
4
- default_prompt: "직접 $luna-loop을 호출해 수정 사항을 검증하고 문제가 남으면 재수정한 뒤 다시 검증해 주세요."
5
-
6
- policy:
7
- allow_implicit_invocation: false
1
+ interface:
2
+ display_name: "루프 검증"
3
+ short_description: "수정 후 Luna 반복 검증과 병렬 재검수를 자동화"
4
+ default_prompt: "직접 $luna-loop을 호출해 수정 사항을 검증하고 문제가 남으면 재수정한 뒤 다시 검증해 주세요."
5
+
6
+ policy:
7
+ allow_implicit_invocation: false