@verboo/code 0.7.15 → 0.7.17

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.
Files changed (2) hide show
  1. package/dist/cli.mjs +116 -28
  2. 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.15";
115521
+ const version2 = "0.7.17";
115522
115522
  const bold2 = `${ESC}1m`;
115523
115523
  const PURPLE = rgb(...ACCENT);
115524
115524
  const SOFT = rgb(...CREAM);
@@ -365571,6 +365571,7 @@ var init_AgentTool = __esm(() => {
365571
365571
  init_ids();
365572
365572
  init_agentContext();
365573
365573
  init_agentSwarmsEnabled();
365574
+ init_abortController();
365574
365575
  init_cwd2();
365575
365576
  init_debug();
365576
365577
  init_envUtils();
@@ -366047,6 +366048,7 @@ var init_AgentTool = __esm(() => {
366047
366048
  let foregroundTaskId;
366048
366049
  let backgroundPromise;
366049
366050
  let cancelAutoBackground;
366051
+ let foregroundAbortController;
366050
366052
  if (!isBackgroundTasksDisabled2) {
366051
366053
  const registration = registerAgentForeground({
366052
366054
  agentId: syncAgentId,
@@ -366062,6 +366064,7 @@ var init_AgentTool = __esm(() => {
366062
366064
  type: "background"
366063
366065
  }));
366064
366066
  cancelAutoBackground = registration.cancelAutoBackground;
366067
+ foregroundAbortController = createChildAbortController(registration.abortController);
366065
366068
  }
366066
366069
  let backgroundHintShown = false;
366067
366070
  let wasBackgrounded = false;
@@ -366071,7 +366074,10 @@ var init_AgentTool = __esm(() => {
366071
366074
  ...runAgentParams,
366072
366075
  override: {
366073
366076
  ...runAgentParams.override,
366074
- agentId: syncAgentId
366077
+ agentId: syncAgentId,
366078
+ ...foregroundAbortController && {
366079
+ abortController: foregroundAbortController
366080
+ }
366075
366081
  },
366076
366082
  onCacheSafeParams: summaryTaskId && getSdkAgentProgressSummariesEnabled() ? (params) => {
366077
366083
  const {
@@ -366110,6 +366116,7 @@ var init_AgentTool = __esm(() => {
366110
366116
  const backgroundedTaskId = foregroundTaskId;
366111
366117
  wasBackgrounded = true;
366112
366118
  stopForegroundSummarization?.();
366119
+ foregroundAbortController?.abort("backgrounded");
366113
366120
  runWithAgentContext(syncAgentContext, async () => {
366114
366121
  let stopBackgroundedSummarization;
366115
366122
  try {
@@ -367671,6 +367678,7 @@ function registerAgentForeground({
367671
367678
  }
367672
367679
  return {
367673
367680
  taskId: agentId,
367681
+ abortController,
367674
367682
  backgroundSignal,
367675
367683
  cancelAutoBackground
367676
367684
  };
@@ -373108,9 +373116,20 @@ async function* runToolUse(toolUse, assistantMessage2, canUseTool, toolUseContex
373108
373116
  };
373109
373117
  return;
373110
373118
  }
373119
+ logForDebugging2(JSON.stringify({
373120
+ type: "runToolUse_entering_stream",
373121
+ toolName: tool.name,
373122
+ toolUseId: toolUse.id,
373123
+ inputKeys: Object.keys(toolInput ?? {})
373124
+ }), { level: "debug" });
373111
373125
  for await (const update of streamedCheckPermissionsAndCallTool(tool, toolUse.id, toolInput, toolUseContext, canUseTool, assistantMessage2, messageId, requestId, mcpServerType, mcpServerBaseUrl)) {
373112
373126
  yield update;
373113
373127
  }
373128
+ logForDebugging2(JSON.stringify({
373129
+ type: "runToolUse_stream_exited",
373130
+ toolName: tool.name,
373131
+ toolUseId: toolUse.id
373132
+ }), { level: "debug" });
373114
373133
  } catch (error42) {
373115
373134
  logError2(error42);
373116
373135
  const errorMessage2 = error42 instanceof Error ? error42.message : String(error42);
@@ -373378,7 +373397,21 @@ async function checkPermissionsAndCallTool(tool, toolUseID, input, toolUseContex
373378
373397
  startToolBlockedOnUserSpan();
373379
373398
  const permissionMode = toolUseContext.getAppState().toolPermissionContext.mode;
373380
373399
  const permissionStart = Date.now();
373400
+ logForDebugging2(JSON.stringify({
373401
+ type: "permission_decision_awaiting",
373402
+ toolName: tool.name,
373403
+ toolUseId: toolUseID,
373404
+ permissionMode,
373405
+ hasHookResult: hookPermissionResult != null
373406
+ }), { level: "debug" });
373381
373407
  const resolved = await resolveHookPermissionDecision(hookPermissionResult, tool, processedInput, toolUseContext, canUseTool, assistantMessage2, toolUseID);
373408
+ logForDebugging2(JSON.stringify({
373409
+ type: "permission_decision_resolved",
373410
+ toolName: tool.name,
373411
+ toolUseId: toolUseID,
373412
+ decision: resolved.decision.behavior,
373413
+ durationMs: Date.now() - permissionStart
373414
+ }), { level: "debug" });
373382
373415
  const permissionDecision = resolved.decision;
373383
373416
  processedInput = resolved.input;
373384
373417
  const permissionDurationMs = Date.now() - permissionStart;
@@ -373979,6 +374012,15 @@ class StreamingToolExecutor {
373979
374012
  if (this.canExecuteTool(tool.isConcurrencySafe)) {
373980
374013
  await this.executeTool(tool);
373981
374014
  } else {
374015
+ if (isDebugMode()) {
374016
+ logForDebugging2(JSON.stringify({
374017
+ type: "streaming_tool_blocked_by_concurrency",
374018
+ toolName: tool.block.name,
374019
+ toolUseId: tool.id,
374020
+ isConcurrencySafe: tool.isConcurrencySafe,
374021
+ executingNames: this.tools.filter((t) => t.status === "executing").map((t) => `${t.block.name}(${t.isConcurrencySafe ? "safe" : "unsafe"})`)
374022
+ }), { level: "debug" });
374023
+ }
373982
374024
  if (!tool.isConcurrencySafe)
373983
374025
  break;
373984
374026
  }
@@ -374166,9 +374208,35 @@ class StreamingToolExecutor {
374166
374208
  if (this.discarded) {
374167
374209
  return;
374168
374210
  }
374211
+ const debug = isDebugMode();
374212
+ let lastProgressAt = Date.now();
374213
+ let iterations = 0;
374214
+ const snapshot2 = (event) => {
374215
+ if (!debug)
374216
+ return;
374217
+ const statuses = {};
374218
+ for (const t of this.tools) {
374219
+ statuses[t.status] = (statuses[t.status] ?? 0) + 1;
374220
+ }
374221
+ logForDebugging2(JSON.stringify({
374222
+ type: event,
374223
+ iterations,
374224
+ totalTools: this.tools.length,
374225
+ statuses,
374226
+ hasExecuting: this.hasExecutingTools(),
374227
+ hasCompleted: this.hasCompletedResults(),
374228
+ hasPendingProgress: this.hasPendingProgress(),
374229
+ msSinceProgress: Date.now() - lastProgressAt
374230
+ }), { level: "debug" });
374231
+ };
374169
374232
  while (this.hasUnfinishedTools()) {
374233
+ iterations++;
374234
+ snapshot2("streaming_tool_iter_start");
374170
374235
  await this.processQueue();
374236
+ let yieldedThisIter = false;
374171
374237
  for (const result of this.getCompletedResults()) {
374238
+ yieldedThisIter = true;
374239
+ lastProgressAt = Date.now();
374172
374240
  yield result;
374173
374241
  }
374174
374242
  if (this.hasExecutingTools() && !this.hasCompletedResults() && !this.hasPendingProgress()) {
@@ -374177,13 +374245,31 @@ class StreamingToolExecutor {
374177
374245
  this.progressAvailableResolve = resolve32;
374178
374246
  });
374179
374247
  if (executingPromises.length > 0) {
374180
- await Promise.race([...executingPromises, progressPromise]);
374248
+ if (debug) {
374249
+ const watchdog = new Promise((resolve32) => setTimeout(() => resolve32("watchdog"), TOOL_EXECUTOR_WATCHDOG_MS));
374250
+ const winner = await Promise.race([
374251
+ ...executingPromises,
374252
+ progressPromise,
374253
+ watchdog
374254
+ ]);
374255
+ if (winner === "watchdog") {
374256
+ snapshot2("streaming_tool_watchdog_fired");
374257
+ }
374258
+ } else {
374259
+ await Promise.race([...executingPromises, progressPromise]);
374260
+ }
374261
+ } else if (debug) {
374262
+ snapshot2("streaming_tool_executing_without_promise");
374181
374263
  }
374264
+ } else if (!yieldedThisIter && debug) {
374265
+ snapshot2("streaming_tool_iter_no_progress");
374182
374266
  }
374183
374267
  }
374184
374268
  for (const result of this.getCompletedResults()) {
374185
374269
  yield result;
374186
374270
  }
374271
+ if (debug)
374272
+ snapshot2("streaming_tool_loop_exit");
374187
374273
  }
374188
374274
  hasCompletedResults() {
374189
374275
  return this.tools.some((t) => t.status === "completed");
@@ -374205,10 +374291,12 @@ function markToolUseAsComplete2(toolUseContext, toolUseID) {
374205
374291
  return next;
374206
374292
  });
374207
374293
  }
374294
+ var TOOL_EXECUTOR_WATCHDOG_MS = 60000;
374208
374295
  var init_StreamingToolExecutor = __esm(() => {
374209
374296
  init_messages3();
374210
374297
  init_Tool();
374211
374298
  init_abortController();
374299
+ init_debug();
374212
374300
  init_toolExecution();
374213
374301
  });
374214
374302
 
@@ -376830,7 +376918,7 @@ function getAnthropicEnvMetadata() {
376830
376918
  function getBuildAgeMinutes() {
376831
376919
  if (false)
376832
376920
  ;
376833
- const buildTime = new Date("2026-05-01T23:27:17.352Z").getTime();
376921
+ const buildTime = new Date("2026-05-02T19:34:06.611Z").getTime();
376834
376922
  if (isNaN(buildTime))
376835
376923
  return;
376836
376924
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -417366,7 +417454,7 @@ function buildPrimarySection() {
417366
417454
  }, undefined, false, undefined, this);
417367
417455
  return [{
417368
417456
  label: "Version",
417369
- value: "0.7.15"
417457
+ value: "0.7.17"
417370
417458
  }, {
417371
417459
  label: "Session name",
417372
417460
  value: nameValue
@@ -485316,7 +485404,7 @@ var init_bridge_kick = __esm(() => {
485316
485404
  var call60 = async () => {
485317
485405
  return {
485318
485406
  type: "text",
485319
- value: `${"99.0.0"} (built ${"2026-05-01T23:27:17.352Z"})`
485407
+ value: `${"99.0.0"} (built ${"2026-05-02T19:34:06.611Z"})`
485320
485408
  };
485321
485409
  }, version2, version_default;
485322
485410
  var init_version = __esm(() => {
@@ -561098,7 +561186,7 @@ function WelcomeV2() {
561098
561186
  dimColor: true,
561099
561187
  children: [
561100
561188
  "v",
561101
- "0.7.15",
561189
+ "0.7.17",
561102
561190
  " "
561103
561191
  ]
561104
561192
  }, undefined, true, undefined, this)
@@ -561285,7 +561373,7 @@ function WelcomeV2() {
561285
561373
  dimColor: true,
561286
561374
  children: [
561287
561375
  "v",
561288
- "0.7.15",
561376
+ "0.7.17",
561289
561377
  " "
561290
561378
  ]
561291
561379
  }, undefined, true, undefined, this)
@@ -561501,7 +561589,7 @@ function AppleTerminalWelcomeV2(t0) {
561501
561589
  dimColor: true,
561502
561590
  children: [
561503
561591
  "v",
561504
- "0.7.15",
561592
+ "0.7.17",
561505
561593
  " "
561506
561594
  ]
561507
561595
  }, undefined, true, undefined, this);
@@ -561710,7 +561798,7 @@ function AppleTerminalWelcomeV2(t0) {
561710
561798
  dimColor: true,
561711
561799
  children: [
561712
561800
  "v",
561713
- "0.7.15",
561801
+ "0.7.17",
561714
561802
  " "
561715
561803
  ]
561716
561804
  }, undefined, true, undefined, this);
@@ -579841,7 +579929,7 @@ __export(exports_update, {
579841
579929
  async function update() {
579842
579930
  if (getAPIProvider() !== "firstParty") {
579843
579931
  writeToStdout(source_default.yellow(`Auto-update is not available for third-party provider builds.
579844
- `) + `Current version: ${"0.7.15"}
579932
+ `) + `Current version: ${"0.7.17"}
579845
579933
 
579846
579934
  ` + `To update, reinstall from npm:
579847
579935
  ` + source_default.bold(` npm install -g ${"@verboo/code"}@latest`) + `
@@ -579852,7 +579940,7 @@ async function update() {
579852
579940
  await gracefulShutdown(0);
579853
579941
  }
579854
579942
  logEvent("tengu_update_check", {});
579855
- writeToStdout(`Current version: ${"0.7.15"}
579943
+ writeToStdout(`Current version: ${"0.7.17"}
579856
579944
  `);
579857
579945
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
579858
579946
  writeToStdout(`Checking for updates to ${channel} version...
@@ -579937,8 +580025,8 @@ async function update() {
579937
580025
  writeToStdout(`Claude is managed by Homebrew.
579938
580026
  `);
579939
580027
  const latest = await getLatestVersion(channel);
579940
- if (latest && !gte("0.7.15", latest)) {
579941
- writeToStdout(`Update available: ${"0.7.15"} → ${latest}
580028
+ if (latest && !gte("0.7.17", latest)) {
580029
+ writeToStdout(`Update available: ${"0.7.17"} → ${latest}
579942
580030
  `);
579943
580031
  writeToStdout(`
579944
580032
  `);
@@ -579954,8 +580042,8 @@ async function update() {
579954
580042
  writeToStdout(`Claude is managed by winget.
579955
580043
  `);
579956
580044
  const latest = await getLatestVersion(channel);
579957
- if (latest && !gte("0.7.15", latest)) {
579958
- writeToStdout(`Update available: ${"0.7.15"} → ${latest}
580045
+ if (latest && !gte("0.7.17", latest)) {
580046
+ writeToStdout(`Update available: ${"0.7.17"} → ${latest}
579959
580047
  `);
579960
580048
  writeToStdout(`
579961
580049
  `);
@@ -579971,8 +580059,8 @@ async function update() {
579971
580059
  writeToStdout(`Claude is managed by apk.
579972
580060
  `);
579973
580061
  const latest = await getLatestVersion(channel);
579974
- if (latest && !gte("0.7.15", latest)) {
579975
- writeToStdout(`Update available: ${"0.7.15"} → ${latest}
580062
+ if (latest && !gte("0.7.17", latest)) {
580063
+ writeToStdout(`Update available: ${"0.7.17"} → ${latest}
579976
580064
  `);
579977
580065
  writeToStdout(`
579978
580066
  `);
@@ -580037,11 +580125,11 @@ async function update() {
580037
580125
  `);
580038
580126
  await gracefulShutdown(1);
580039
580127
  }
580040
- if (result.latestVersion === "0.7.15") {
580041
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.15"})`) + `
580128
+ if (result.latestVersion === "0.7.17") {
580129
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.17"})`) + `
580042
580130
  `);
580043
580131
  } else {
580044
- writeToStdout(source_default.green(`Successfully updated from ${"0.7.15"} to version ${result.latestVersion}`) + `
580132
+ writeToStdout(source_default.green(`Successfully updated from ${"0.7.17"} to version ${result.latestVersion}`) + `
580045
580133
  `);
580046
580134
  await regenerateCompletionCache();
580047
580135
  }
@@ -580101,12 +580189,12 @@ async function update() {
580101
580189
  `);
580102
580190
  await gracefulShutdown(1);
580103
580191
  }
580104
- if (latestVersion === "0.7.15") {
580105
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.15"})`) + `
580192
+ if (latestVersion === "0.7.17") {
580193
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.17"})`) + `
580106
580194
  `);
580107
580195
  await gracefulShutdown(0);
580108
580196
  }
580109
- writeToStdout(`New version available: ${latestVersion} (current: ${"0.7.15"})
580197
+ writeToStdout(`New version available: ${latestVersion} (current: ${"0.7.17"})
580110
580198
  `);
580111
580199
  writeToStdout(`Installing update...
580112
580200
  `);
@@ -580151,7 +580239,7 @@ async function update() {
580151
580239
  logForDebugging2(`update: Installation status: ${status2}`);
580152
580240
  switch (status2) {
580153
580241
  case "success":
580154
- writeToStdout(source_default.green(`Successfully updated from ${"0.7.15"} to version ${latestVersion}`) + `
580242
+ writeToStdout(source_default.green(`Successfully updated from ${"0.7.17"} to version ${latestVersion}`) + `
580155
580243
  `);
580156
580244
  await regenerateCompletionCache();
580157
580245
  break;
@@ -582204,7 +582292,7 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
582204
582292
  pendingHookMessages
582205
582293
  }, renderAndRun);
582206
582294
  }
582207
- }).version(`0.7.15 (${cliDesc})`, "-v, --version", "Output the version number");
582295
+ }).version(`0.7.17 (${cliDesc})`, "-v, --version", "Output the version number");
582208
582296
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
582209
582297
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
582210
582298
  if (canUserConfigureAdvisor()) {
@@ -582772,7 +582860,7 @@ if (false) {}
582772
582860
  async function main2() {
582773
582861
  const args = process.argv.slice(2);
582774
582862
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
582775
- console.log(`${"0.7.15"} (Verboo Code)`);
582863
+ console.log(`${"0.7.17"} (Verboo Code)`);
582776
582864
  return;
582777
582865
  }
582778
582866
  if (args.includes("--provider")) {
@@ -582928,4 +583016,4 @@ async function main2() {
582928
583016
  }
582929
583017
  main2();
582930
583018
 
582931
- //# debugId=B263602A81EA817364756E2164756E21
583019
+ //# debugId=08D24D8DFB1E3D9764756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verboo/code",
3
- "version": "0.7.15",
3
+ "version": "0.7.17",
4
4
  "description": "Verboo Code — coding agent for the Verboo platform",
5
5
  "type": "module",
6
6
  "bin": {