@verboo/code 0.7.14 → 0.7.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/dist/cli.mjs +119 -27
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -115518,7 +115518,7 @@ function printStartupScreen(modelOverride) {
|
|
|
115518
115518
|
const home = process.env.HOME || process.env.USERPROFILE || "";
|
|
115519
115519
|
const cwd2 = process.cwd();
|
|
115520
115520
|
const displayCwd = home && cwd2.startsWith(home) ? `~${cwd2.slice(home.length)}` : cwd2;
|
|
115521
|
-
const version2 = "0.7.
|
|
115521
|
+
const version2 = "0.7.16";
|
|
115522
115522
|
const bold2 = `${ESC}1m`;
|
|
115523
115523
|
const PURPLE = rgb(...ACCENT);
|
|
115524
115524
|
const SOFT = rgb(...CREAM);
|
|
@@ -373108,9 +373108,20 @@ async function* runToolUse(toolUse, assistantMessage2, canUseTool, toolUseContex
|
|
|
373108
373108
|
};
|
|
373109
373109
|
return;
|
|
373110
373110
|
}
|
|
373111
|
+
logForDebugging2(JSON.stringify({
|
|
373112
|
+
type: "runToolUse_entering_stream",
|
|
373113
|
+
toolName: tool.name,
|
|
373114
|
+
toolUseId: toolUse.id,
|
|
373115
|
+
inputKeys: Object.keys(toolInput ?? {})
|
|
373116
|
+
}), { level: "debug" });
|
|
373111
373117
|
for await (const update of streamedCheckPermissionsAndCallTool(tool, toolUse.id, toolInput, toolUseContext, canUseTool, assistantMessage2, messageId, requestId, mcpServerType, mcpServerBaseUrl)) {
|
|
373112
373118
|
yield update;
|
|
373113
373119
|
}
|
|
373120
|
+
logForDebugging2(JSON.stringify({
|
|
373121
|
+
type: "runToolUse_stream_exited",
|
|
373122
|
+
toolName: tool.name,
|
|
373123
|
+
toolUseId: toolUse.id
|
|
373124
|
+
}), { level: "debug" });
|
|
373114
373125
|
} catch (error42) {
|
|
373115
373126
|
logError2(error42);
|
|
373116
373127
|
const errorMessage2 = error42 instanceof Error ? error42.message : String(error42);
|
|
@@ -373378,7 +373389,21 @@ async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContex
|
|
|
373378
373389
|
startToolBlockedOnUserSpan();
|
|
373379
373390
|
const permissionMode = toolUseContext.getAppState().toolPermissionContext.mode;
|
|
373380
373391
|
const permissionStart = Date.now();
|
|
373392
|
+
logForDebugging2(JSON.stringify({
|
|
373393
|
+
type: "permission_decision_awaiting",
|
|
373394
|
+
toolName: tool.name,
|
|
373395
|
+
toolUseId: toolUseID,
|
|
373396
|
+
permissionMode,
|
|
373397
|
+
hasHookResult: hookPermissionResult != null
|
|
373398
|
+
}), { level: "debug" });
|
|
373381
373399
|
const resolved = await resolveHookPermissionDecision(hookPermissionResult, tool, processedInput, toolUseContext, canUseTool, assistantMessage2, toolUseID);
|
|
373400
|
+
logForDebugging2(JSON.stringify({
|
|
373401
|
+
type: "permission_decision_resolved",
|
|
373402
|
+
toolName: tool.name,
|
|
373403
|
+
toolUseId: toolUseID,
|
|
373404
|
+
decision: resolved.decision.behavior,
|
|
373405
|
+
durationMs: Date.now() - permissionStart
|
|
373406
|
+
}), { level: "debug" });
|
|
373382
373407
|
const permissionDecision = resolved.decision;
|
|
373383
373408
|
processedInput = resolved.input;
|
|
373384
373409
|
const permissionDurationMs = Date.now() - permissionStart;
|
|
@@ -373979,6 +374004,15 @@ class StreamingToolExecutor {
|
|
|
373979
374004
|
if (this.canExecuteTool(tool.isConcurrencySafe)) {
|
|
373980
374005
|
await this.executeTool(tool);
|
|
373981
374006
|
} else {
|
|
374007
|
+
if (isDebugMode()) {
|
|
374008
|
+
logForDebugging2(JSON.stringify({
|
|
374009
|
+
type: "streaming_tool_blocked_by_concurrency",
|
|
374010
|
+
toolName: tool.block.name,
|
|
374011
|
+
toolUseId: tool.id,
|
|
374012
|
+
isConcurrencySafe: tool.isConcurrencySafe,
|
|
374013
|
+
executingNames: this.tools.filter((t) => t.status === "executing").map((t) => `${t.block.name}(${t.isConcurrencySafe ? "safe" : "unsafe"})`)
|
|
374014
|
+
}), { level: "debug" });
|
|
374015
|
+
}
|
|
373982
374016
|
if (!tool.isConcurrencySafe)
|
|
373983
374017
|
break;
|
|
373984
374018
|
}
|
|
@@ -374166,9 +374200,35 @@ class StreamingToolExecutor {
|
|
|
374166
374200
|
if (this.discarded) {
|
|
374167
374201
|
return;
|
|
374168
374202
|
}
|
|
374203
|
+
const debug = isDebugMode();
|
|
374204
|
+
let lastProgressAt = Date.now();
|
|
374205
|
+
let iterations = 0;
|
|
374206
|
+
const snapshot2 = (event) => {
|
|
374207
|
+
if (!debug)
|
|
374208
|
+
return;
|
|
374209
|
+
const statuses = {};
|
|
374210
|
+
for (const t of this.tools) {
|
|
374211
|
+
statuses[t.status] = (statuses[t.status] ?? 0) + 1;
|
|
374212
|
+
}
|
|
374213
|
+
logForDebugging2(JSON.stringify({
|
|
374214
|
+
type: event,
|
|
374215
|
+
iterations,
|
|
374216
|
+
totalTools: this.tools.length,
|
|
374217
|
+
statuses,
|
|
374218
|
+
hasExecuting: this.hasExecutingTools(),
|
|
374219
|
+
hasCompleted: this.hasCompletedResults(),
|
|
374220
|
+
hasPendingProgress: this.hasPendingProgress(),
|
|
374221
|
+
msSinceProgress: Date.now() - lastProgressAt
|
|
374222
|
+
}), { level: "debug" });
|
|
374223
|
+
};
|
|
374169
374224
|
while (this.hasUnfinishedTools()) {
|
|
374225
|
+
iterations++;
|
|
374226
|
+
snapshot2("streaming_tool_iter_start");
|
|
374170
374227
|
await this.processQueue();
|
|
374228
|
+
let yieldedThisIter = false;
|
|
374171
374229
|
for (const result of this.getCompletedResults()) {
|
|
374230
|
+
yieldedThisIter = true;
|
|
374231
|
+
lastProgressAt = Date.now();
|
|
374172
374232
|
yield result;
|
|
374173
374233
|
}
|
|
374174
374234
|
if (this.hasExecutingTools() && !this.hasCompletedResults() && !this.hasPendingProgress()) {
|
|
@@ -374177,13 +374237,31 @@ class StreamingToolExecutor {
|
|
|
374177
374237
|
this.progressAvailableResolve = resolve32;
|
|
374178
374238
|
});
|
|
374179
374239
|
if (executingPromises.length > 0) {
|
|
374180
|
-
|
|
374240
|
+
if (debug) {
|
|
374241
|
+
const watchdog = new Promise((resolve32) => setTimeout(() => resolve32("watchdog"), TOOL_EXECUTOR_WATCHDOG_MS));
|
|
374242
|
+
const winner = await Promise.race([
|
|
374243
|
+
...executingPromises,
|
|
374244
|
+
progressPromise,
|
|
374245
|
+
watchdog
|
|
374246
|
+
]);
|
|
374247
|
+
if (winner === "watchdog") {
|
|
374248
|
+
snapshot2("streaming_tool_watchdog_fired");
|
|
374249
|
+
}
|
|
374250
|
+
} else {
|
|
374251
|
+
await Promise.race([...executingPromises, progressPromise]);
|
|
374252
|
+
}
|
|
374253
|
+
} else if (debug) {
|
|
374254
|
+
snapshot2("streaming_tool_executing_without_promise");
|
|
374181
374255
|
}
|
|
374256
|
+
} else if (!yieldedThisIter && debug) {
|
|
374257
|
+
snapshot2("streaming_tool_iter_no_progress");
|
|
374182
374258
|
}
|
|
374183
374259
|
}
|
|
374184
374260
|
for (const result of this.getCompletedResults()) {
|
|
374185
374261
|
yield result;
|
|
374186
374262
|
}
|
|
374263
|
+
if (debug)
|
|
374264
|
+
snapshot2("streaming_tool_loop_exit");
|
|
374187
374265
|
}
|
|
374188
374266
|
hasCompletedResults() {
|
|
374189
374267
|
return this.tools.some((t) => t.status === "completed");
|
|
@@ -374205,10 +374283,12 @@ function markToolUseAsComplete2(toolUseContext, toolUseID) {
|
|
|
374205
374283
|
return next;
|
|
374206
374284
|
});
|
|
374207
374285
|
}
|
|
374286
|
+
var TOOL_EXECUTOR_WATCHDOG_MS = 60000;
|
|
374208
374287
|
var init_StreamingToolExecutor = __esm(() => {
|
|
374209
374288
|
init_messages3();
|
|
374210
374289
|
init_Tool();
|
|
374211
374290
|
init_abortController();
|
|
374291
|
+
init_debug();
|
|
374212
374292
|
init_toolExecution();
|
|
374213
374293
|
});
|
|
374214
374294
|
|
|
@@ -376830,7 +376910,7 @@ function getAnthropicEnvMetadata() {
|
|
|
376830
376910
|
function getBuildAgeMinutes() {
|
|
376831
376911
|
if (false)
|
|
376832
376912
|
;
|
|
376833
|
-
const buildTime = new Date("2026-05-
|
|
376913
|
+
const buildTime = new Date("2026-05-02T16:01:58.016Z").getTime();
|
|
376834
376914
|
if (isNaN(buildTime))
|
|
376835
376915
|
return;
|
|
376836
376916
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -417366,7 +417446,7 @@ function buildPrimarySection() {
|
|
|
417366
417446
|
}, undefined, false, undefined, this);
|
|
417367
417447
|
return [{
|
|
417368
417448
|
label: "Version",
|
|
417369
|
-
value: "0.7.
|
|
417449
|
+
value: "0.7.16"
|
|
417370
417450
|
}, {
|
|
417371
417451
|
label: "Session name",
|
|
417372
417452
|
value: nameValue
|
|
@@ -485316,7 +485396,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
485316
485396
|
var call60 = async () => {
|
|
485317
485397
|
return {
|
|
485318
485398
|
type: "text",
|
|
485319
|
-
value: `${"99.0.0"} (built ${"2026-05-
|
|
485399
|
+
value: `${"99.0.0"} (built ${"2026-05-02T16:01:58.016Z"})`
|
|
485320
485400
|
};
|
|
485321
485401
|
}, version2, version_default;
|
|
485322
485402
|
var init_version = __esm(() => {
|
|
@@ -550726,6 +550806,18 @@ ${blue2(`/plugin install vercel@${OFFICIAL_MARKETPLACE_NAME}`)}`;
|
|
|
550726
550806
|
const config3 = getGlobalConfig();
|
|
550727
550807
|
return config3.numStartups > 5;
|
|
550728
550808
|
}
|
|
550809
|
+
},
|
|
550810
|
+
{
|
|
550811
|
+
id: "karpathy-guidelines",
|
|
550812
|
+
content: async (ctx) => {
|
|
550813
|
+
const blue2 = color("suggestion", ctx.theme);
|
|
550814
|
+
return `Use ${blue2("/karpathy-guidelines")} to apply Andrej Karpathy's coding principles: think before coding, simplicity first, surgical changes`;
|
|
550815
|
+
},
|
|
550816
|
+
cooldownSessions: 20,
|
|
550817
|
+
async isRelevant() {
|
|
550818
|
+
const config3 = getGlobalConfig();
|
|
550819
|
+
return config3.numStartups > 3;
|
|
550820
|
+
}
|
|
550729
550821
|
}
|
|
550730
550822
|
];
|
|
550731
550823
|
internalOnlyTips = [];
|
|
@@ -561086,7 +561178,7 @@ function WelcomeV2() {
|
|
|
561086
561178
|
dimColor: true,
|
|
561087
561179
|
children: [
|
|
561088
561180
|
"v",
|
|
561089
|
-
"0.7.
|
|
561181
|
+
"0.7.16",
|
|
561090
561182
|
" "
|
|
561091
561183
|
]
|
|
561092
561184
|
}, undefined, true, undefined, this)
|
|
@@ -561273,7 +561365,7 @@ function WelcomeV2() {
|
|
|
561273
561365
|
dimColor: true,
|
|
561274
561366
|
children: [
|
|
561275
561367
|
"v",
|
|
561276
|
-
"0.7.
|
|
561368
|
+
"0.7.16",
|
|
561277
561369
|
" "
|
|
561278
561370
|
]
|
|
561279
561371
|
}, undefined, true, undefined, this)
|
|
@@ -561489,7 +561581,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
561489
561581
|
dimColor: true,
|
|
561490
561582
|
children: [
|
|
561491
561583
|
"v",
|
|
561492
|
-
"0.7.
|
|
561584
|
+
"0.7.16",
|
|
561493
561585
|
" "
|
|
561494
561586
|
]
|
|
561495
561587
|
}, undefined, true, undefined, this);
|
|
@@ -561698,7 +561790,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
561698
561790
|
dimColor: true,
|
|
561699
561791
|
children: [
|
|
561700
561792
|
"v",
|
|
561701
|
-
"0.7.
|
|
561793
|
+
"0.7.16",
|
|
561702
561794
|
" "
|
|
561703
561795
|
]
|
|
561704
561796
|
}, undefined, true, undefined, this);
|
|
@@ -579829,7 +579921,7 @@ __export(exports_update, {
|
|
|
579829
579921
|
async function update() {
|
|
579830
579922
|
if (getAPIProvider() !== "firstParty") {
|
|
579831
579923
|
writeToStdout(source_default.yellow(`Auto-update is not available for third-party provider builds.
|
|
579832
|
-
`) + `Current version: ${"0.7.
|
|
579924
|
+
`) + `Current version: ${"0.7.16"}
|
|
579833
579925
|
|
|
579834
579926
|
` + `To update, reinstall from npm:
|
|
579835
579927
|
` + source_default.bold(` npm install -g ${"@verboo/code"}@latest`) + `
|
|
@@ -579840,7 +579932,7 @@ async function update() {
|
|
|
579840
579932
|
await gracefulShutdown(0);
|
|
579841
579933
|
}
|
|
579842
579934
|
logEvent("tengu_update_check", {});
|
|
579843
|
-
writeToStdout(`Current version: ${"0.7.
|
|
579935
|
+
writeToStdout(`Current version: ${"0.7.16"}
|
|
579844
579936
|
`);
|
|
579845
579937
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
579846
579938
|
writeToStdout(`Checking for updates to ${channel} version...
|
|
@@ -579925,8 +580017,8 @@ async function update() {
|
|
|
579925
580017
|
writeToStdout(`Claude is managed by Homebrew.
|
|
579926
580018
|
`);
|
|
579927
580019
|
const latest = await getLatestVersion(channel);
|
|
579928
|
-
if (latest && !gte("0.7.
|
|
579929
|
-
writeToStdout(`Update available: ${"0.7.
|
|
580020
|
+
if (latest && !gte("0.7.16", latest)) {
|
|
580021
|
+
writeToStdout(`Update available: ${"0.7.16"} → ${latest}
|
|
579930
580022
|
`);
|
|
579931
580023
|
writeToStdout(`
|
|
579932
580024
|
`);
|
|
@@ -579942,8 +580034,8 @@ async function update() {
|
|
|
579942
580034
|
writeToStdout(`Claude is managed by winget.
|
|
579943
580035
|
`);
|
|
579944
580036
|
const latest = await getLatestVersion(channel);
|
|
579945
|
-
if (latest && !gte("0.7.
|
|
579946
|
-
writeToStdout(`Update available: ${"0.7.
|
|
580037
|
+
if (latest && !gte("0.7.16", latest)) {
|
|
580038
|
+
writeToStdout(`Update available: ${"0.7.16"} → ${latest}
|
|
579947
580039
|
`);
|
|
579948
580040
|
writeToStdout(`
|
|
579949
580041
|
`);
|
|
@@ -579959,8 +580051,8 @@ async function update() {
|
|
|
579959
580051
|
writeToStdout(`Claude is managed by apk.
|
|
579960
580052
|
`);
|
|
579961
580053
|
const latest = await getLatestVersion(channel);
|
|
579962
|
-
if (latest && !gte("0.7.
|
|
579963
|
-
writeToStdout(`Update available: ${"0.7.
|
|
580054
|
+
if (latest && !gte("0.7.16", latest)) {
|
|
580055
|
+
writeToStdout(`Update available: ${"0.7.16"} → ${latest}
|
|
579964
580056
|
`);
|
|
579965
580057
|
writeToStdout(`
|
|
579966
580058
|
`);
|
|
@@ -580025,11 +580117,11 @@ async function update() {
|
|
|
580025
580117
|
`);
|
|
580026
580118
|
await gracefulShutdown(1);
|
|
580027
580119
|
}
|
|
580028
|
-
if (result.latestVersion === "0.7.
|
|
580029
|
-
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.
|
|
580120
|
+
if (result.latestVersion === "0.7.16") {
|
|
580121
|
+
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.16"})`) + `
|
|
580030
580122
|
`);
|
|
580031
580123
|
} else {
|
|
580032
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.7.
|
|
580124
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.7.16"} to version ${result.latestVersion}`) + `
|
|
580033
580125
|
`);
|
|
580034
580126
|
await regenerateCompletionCache();
|
|
580035
580127
|
}
|
|
@@ -580089,12 +580181,12 @@ async function update() {
|
|
|
580089
580181
|
`);
|
|
580090
580182
|
await gracefulShutdown(1);
|
|
580091
580183
|
}
|
|
580092
|
-
if (latestVersion === "0.7.
|
|
580093
|
-
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.
|
|
580184
|
+
if (latestVersion === "0.7.16") {
|
|
580185
|
+
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.16"})`) + `
|
|
580094
580186
|
`);
|
|
580095
580187
|
await gracefulShutdown(0);
|
|
580096
580188
|
}
|
|
580097
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"0.7.
|
|
580189
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"0.7.16"})
|
|
580098
580190
|
`);
|
|
580099
580191
|
writeToStdout(`Installing update...
|
|
580100
580192
|
`);
|
|
@@ -580139,7 +580231,7 @@ async function update() {
|
|
|
580139
580231
|
logForDebugging2(`update: Installation status: ${status2}`);
|
|
580140
580232
|
switch (status2) {
|
|
580141
580233
|
case "success":
|
|
580142
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.7.
|
|
580234
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.7.16"} to version ${latestVersion}`) + `
|
|
580143
580235
|
`);
|
|
580144
580236
|
await regenerateCompletionCache();
|
|
580145
580237
|
break;
|
|
@@ -582192,7 +582284,7 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
582192
582284
|
pendingHookMessages
|
|
582193
582285
|
}, renderAndRun);
|
|
582194
582286
|
}
|
|
582195
|
-
}).version(`0.7.
|
|
582287
|
+
}).version(`0.7.16 (${cliDesc})`, "-v, --version", "Output the version number");
|
|
582196
582288
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
582197
582289
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
582198
582290
|
if (canUserConfigureAdvisor()) {
|
|
@@ -582760,7 +582852,7 @@ if (false) {}
|
|
|
582760
582852
|
async function main2() {
|
|
582761
582853
|
const args = process.argv.slice(2);
|
|
582762
582854
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
582763
|
-
console.log(`${"0.7.
|
|
582855
|
+
console.log(`${"0.7.16"} (Verboo Code)`);
|
|
582764
582856
|
return;
|
|
582765
582857
|
}
|
|
582766
582858
|
if (args.includes("--provider")) {
|
|
@@ -582916,4 +583008,4 @@ async function main2() {
|
|
|
582916
583008
|
}
|
|
582917
583009
|
main2();
|
|
582918
583010
|
|
|
582919
|
-
//# debugId=
|
|
583011
|
+
//# debugId=01D19E1713D2CE3D64756E2164756E21
|