@proxysoul/soulforge 1.7.2 → 1.7.3

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/index.js +1261 -834
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -57838,7 +57838,7 @@ var package_default;
57838
57838
  var init_package = __esm(() => {
57839
57839
  package_default = {
57840
57840
  name: "@proxysoul/soulforge",
57841
- version: "1.7.2",
57841
+ version: "1.7.3",
57842
57842
  description: "Graph-powered code intelligence \u2014 multi-agent coding with codebase-aware AI",
57843
57843
  repository: {
57844
57844
  type: "git",
@@ -345981,6 +345981,7 @@ function lastStepHadPlanCall(messages) {
345981
345981
  return false;
345982
345982
  }
345983
345983
  function buildForgePrepareStep(isPlanMode, drainSteering, contextManager, tabId) {
345984
+ const previousInjects = [];
345984
345985
  return ({
345985
345986
  stepNumber,
345986
345987
  messages
@@ -346069,17 +346070,33 @@ Finish any in-progress tool call, then switch entirely to this message in your n
346069
346070
  </steering>`);
346070
346071
  }
346071
346072
  }
346072
- if (tailParts.length > 0) {
346073
+ if (tailParts.length > 0 || previousInjects.length > 0) {
346073
346074
  const msgs = result.messages ?? [...sanitized];
346074
- msgs.push({
346075
- role: "user",
346076
- content: [{
346077
- type: "text",
346078
- text: tailParts.join(`
346075
+ const cleanMsgCount = msgs.length;
346076
+ let offset = 0;
346077
+ for (const prev of previousInjects) {
346078
+ const insertAt = prev.cleanInsertAt + offset;
346079
+ if (insertAt <= msgs.length) {
346080
+ msgs.splice(insertAt, 0, prev.message);
346081
+ offset++;
346082
+ }
346083
+ }
346084
+ if (tailParts.length > 0) {
346085
+ const injectMessage = {
346086
+ role: "user",
346087
+ content: [{
346088
+ type: "text",
346089
+ text: tailParts.join(`
346079
346090
 
346080
346091
  `)
346081
- }]
346082
- });
346092
+ }]
346093
+ };
346094
+ previousInjects.push({
346095
+ cleanInsertAt: cleanMsgCount,
346096
+ message: injectMessage
346097
+ });
346098
+ msgs.push(injectMessage);
346099
+ }
346083
346100
  result.messages = msgs;
346084
346101
  }
346085
346102
  if (process.env.SOULFORGE_DEBUG_API) {
@@ -442106,435 +442123,6 @@ var init_StructuredPlanView = __esm(async () => {
442106
442123
  };
442107
442124
  });
442108
442125
 
442109
- // src/components/chat/ReasoningBlock.tsx
442110
- function ThinkingSpinner() {
442111
- const $5 = import_compiler_runtime14.c(3);
442112
- const t2 = useTheme();
442113
- const frame = useSpinnerFrame();
442114
- const t0 = SPINNER_FRAMES[frame];
442115
- let t1;
442116
- if ($5[0] !== t2.brandDim || $5[1] !== t0) {
442117
- t1 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
442118
- fg: t2.brandDim,
442119
- children: t0
442120
- }, undefined, false, undefined, this);
442121
- $5[0] = t2.brandDim;
442122
- $5[1] = t0;
442123
- $5[2] = t1;
442124
- } else {
442125
- t1 = $5[2];
442126
- }
442127
- return t1;
442128
- }
442129
- function ReasoningBlock(t0) {
442130
- const $5 = import_compiler_runtime14.c(90);
442131
- const {
442132
- content,
442133
- expanded,
442134
- isStreaming,
442135
- id
442136
- } = t0;
442137
- const t2 = useTheme();
442138
- let t1;
442139
- if ($5[0] !== content || $5[1] !== expanded || $5[2] !== id || $5[3] !== isStreaming || $5[4] !== t2.success || $5[5] !== t2.textFaint || $5[6] !== t2.textSubtle) {
442140
- t1 = Symbol.for("react.early_return_sentinel");
442141
- bb0: {
442142
- const lines = content.split(`
442143
- `);
442144
- const lineCount2 = lines.length;
442145
- if (!expanded) {
442146
- if (isStreaming) {
442147
- const t24 = `${id}-col`;
442148
- let t33;
442149
- if ($5[8] === Symbol.for("react.memo_cache_sentinel")) {
442150
- t33 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(ThinkingSpinner, {}, undefined, false, undefined, this);
442151
- $5[8] = t33;
442152
- } else {
442153
- t33 = $5[8];
442154
- }
442155
- const t43 = t2.textFaint;
442156
- let t53;
442157
- if ($5[9] === Symbol.for("react.memo_cache_sentinel")) {
442158
- t53 = brainIcon();
442159
- $5[9] = t53;
442160
- } else {
442161
- t53 = $5[9];
442162
- }
442163
- let t63;
442164
- if ($5[10] !== t2.textFaint) {
442165
- t63 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
442166
- fg: t43,
442167
- children: [
442168
- " ",
442169
- t53,
442170
- " reasoning"
442171
- ]
442172
- }, undefined, true, undefined, this);
442173
- $5[10] = t2.textFaint;
442174
- $5[11] = t63;
442175
- } else {
442176
- t63 = $5[11];
442177
- }
442178
- let t73;
442179
- if ($5[12] !== lineCount2 || $5[13] !== t2.textFaint) {
442180
- t73 = lineCount2 > 1 && /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
442181
- fg: t2.textFaint,
442182
- children: [
442183
- " (",
442184
- String(lineCount2),
442185
- " lines)"
442186
- ]
442187
- }, undefined, true, undefined, this);
442188
- $5[12] = lineCount2;
442189
- $5[13] = t2.textFaint;
442190
- $5[14] = t73;
442191
- } else {
442192
- t73 = $5[14];
442193
- }
442194
- let t83;
442195
- if ($5[15] !== t2.textSubtle) {
442196
- t83 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
442197
- fg: t2.textSubtle,
442198
- children: " ^O"
442199
- }, undefined, false, undefined, this);
442200
- $5[15] = t2.textSubtle;
442201
- $5[16] = t83;
442202
- } else {
442203
- t83 = $5[16];
442204
- }
442205
- let t93;
442206
- if ($5[17] !== t24 || $5[18] !== t63 || $5[19] !== t73 || $5[20] !== t83) {
442207
- t93 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
442208
- height: 1,
442209
- flexShrink: 0,
442210
- flexDirection: "row",
442211
- children: [
442212
- t33,
442213
- t63,
442214
- t73,
442215
- t83
442216
- ]
442217
- }, t24, true, undefined, this);
442218
- $5[17] = t24;
442219
- $5[18] = t63;
442220
- $5[19] = t73;
442221
- $5[20] = t83;
442222
- $5[21] = t93;
442223
- } else {
442224
- t93 = $5[21];
442225
- }
442226
- t1 = t93;
442227
- break bb0;
442228
- }
442229
- const firstLine = (lines[0] ?? "").trim().replace(/\*\*/g, "");
442230
- const preview = firstLine.length > 60 ? `${firstLine.slice(0, 57)}...` : firstLine;
442231
- const t23 = `${id}-col`;
442232
- const t32 = t2.textFaint;
442233
- let t42;
442234
- if ($5[22] !== t2.success) {
442235
- t42 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
442236
- fg: t2.success,
442237
- children: "\u2713"
442238
- }, undefined, false, undefined, this);
442239
- $5[22] = t2.success;
442240
- $5[23] = t42;
442241
- } else {
442242
- t42 = $5[23];
442243
- }
442244
- let t52;
442245
- if ($5[24] === Symbol.for("react.memo_cache_sentinel")) {
442246
- t52 = brainIcon();
442247
- $5[24] = t52;
442248
- } else {
442249
- t52 = $5[24];
442250
- }
442251
- const t62 = preview || "Reasoned";
442252
- let t72;
442253
- if ($5[25] !== t2.textFaint || $5[26] !== t62) {
442254
- t72 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
442255
- fg: t2.textFaint,
442256
- children: t62
442257
- }, undefined, false, undefined, this);
442258
- $5[25] = t2.textFaint;
442259
- $5[26] = t62;
442260
- $5[27] = t72;
442261
- } else {
442262
- t72 = $5[27];
442263
- }
442264
- let t82;
442265
- if ($5[28] !== lineCount2 || $5[29] !== t2.textFaint) {
442266
- t82 = lineCount2 > 1 && /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
442267
- fg: t2.textFaint,
442268
- children: [
442269
- " (",
442270
- String(lineCount2),
442271
- " lines)"
442272
- ]
442273
- }, undefined, true, undefined, this);
442274
- $5[28] = lineCount2;
442275
- $5[29] = t2.textFaint;
442276
- $5[30] = t82;
442277
- } else {
442278
- t82 = $5[30];
442279
- }
442280
- let t92;
442281
- if ($5[31] !== t2.textFaint) {
442282
- t92 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
442283
- fg: t2.textFaint,
442284
- children: " ^O"
442285
- }, undefined, false, undefined, this);
442286
- $5[31] = t2.textFaint;
442287
- $5[32] = t92;
442288
- } else {
442289
- t92 = $5[32];
442290
- }
442291
- let t102;
442292
- if ($5[33] !== t2.textFaint || $5[34] !== t42 || $5[35] !== t72 || $5[36] !== t82 || $5[37] !== t92) {
442293
- t102 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
442294
- fg: t32,
442295
- truncate: true,
442296
- children: [
442297
- t42,
442298
- " ",
442299
- t52,
442300
- " ",
442301
- t72,
442302
- t82,
442303
- t92
442304
- ]
442305
- }, undefined, true, undefined, this);
442306
- $5[33] = t2.textFaint;
442307
- $5[34] = t42;
442308
- $5[35] = t72;
442309
- $5[36] = t82;
442310
- $5[37] = t92;
442311
- $5[38] = t102;
442312
- } else {
442313
- t102 = $5[38];
442314
- }
442315
- let t112;
442316
- if ($5[39] !== t102 || $5[40] !== t23) {
442317
- t112 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
442318
- height: 1,
442319
- flexShrink: 0,
442320
- children: t102
442321
- }, t23, false, undefined, this);
442322
- $5[39] = t102;
442323
- $5[40] = t23;
442324
- $5[41] = t112;
442325
- } else {
442326
- t112 = $5[41];
442327
- }
442328
- t1 = t112;
442329
- break bb0;
442330
- }
442331
- }
442332
- $5[0] = content;
442333
- $5[1] = expanded;
442334
- $5[2] = id;
442335
- $5[3] = isStreaming;
442336
- $5[4] = t2.success;
442337
- $5[5] = t2.textFaint;
442338
- $5[6] = t2.textSubtle;
442339
- $5[7] = t1;
442340
- } else {
442341
- t1 = $5[7];
442342
- }
442343
- if (t1 !== Symbol.for("react.early_return_sentinel")) {
442344
- return t1;
442345
- }
442346
- const bc = isStreaming ? t2.brandDim : t2.border;
442347
- const label = isStreaming ? "reasoning\u2026" : "reasoning";
442348
- let t10;
442349
- let t11;
442350
- let t22;
442351
- let t3;
442352
- let t4;
442353
- let t5;
442354
- let t6;
442355
- let t7;
442356
- let t8;
442357
- let t9;
442358
- if ($5[42] !== bc || $5[43] !== content || $5[44] !== id || $5[45] !== label || $5[46] !== t2.bgElevated || $5[47] !== t2.brandDim || $5[48] !== t2.textFaint || $5[49] !== t2.textSecondary) {
442359
- const trimmed = content.trim();
442360
- t5 = `${id}-exp`;
442361
- t6 = "column";
442362
- t7 = 0;
442363
- t8 = true;
442364
- t9 = "rounded";
442365
- t10 = bc;
442366
- const t122 = t2.bgElevated;
442367
- const t132 = t2.brandDim;
442368
- let t14;
442369
- if ($5[60] === Symbol.for("react.memo_cache_sentinel")) {
442370
- t14 = brainIcon();
442371
- $5[60] = t14;
442372
- } else {
442373
- t14 = $5[60];
442374
- }
442375
- let t15;
442376
- if ($5[61] !== t2.brandDim) {
442377
- t15 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
442378
- fg: t132,
442379
- children: t14
442380
- }, undefined, false, undefined, this);
442381
- $5[61] = t2.brandDim;
442382
- $5[62] = t15;
442383
- } else {
442384
- t15 = $5[62];
442385
- }
442386
- let t16;
442387
- if ($5[63] !== label || $5[64] !== t2.brandDim) {
442388
- t16 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
442389
- fg: t2.brandDim,
442390
- children: label
442391
- }, undefined, false, undefined, this);
442392
- $5[63] = label;
442393
- $5[64] = t2.brandDim;
442394
- $5[65] = t16;
442395
- } else {
442396
- t16 = $5[65];
442397
- }
442398
- let t17;
442399
- if ($5[66] !== t2.textFaint) {
442400
- t17 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
442401
- fg: t2.textFaint,
442402
- children: " ^O"
442403
- }, undefined, false, undefined, this);
442404
- $5[66] = t2.textFaint;
442405
- $5[67] = t17;
442406
- } else {
442407
- t17 = $5[67];
442408
- }
442409
- let t18;
442410
- if ($5[68] !== t15 || $5[69] !== t16 || $5[70] !== t17) {
442411
- t18 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
442412
- truncate: true,
442413
- children: [
442414
- t15,
442415
- " ",
442416
- t16,
442417
- t17
442418
- ]
442419
- }, undefined, true, undefined, this);
442420
- $5[68] = t15;
442421
- $5[69] = t16;
442422
- $5[70] = t17;
442423
- $5[71] = t18;
442424
- } else {
442425
- t18 = $5[71];
442426
- }
442427
- if ($5[72] !== t2.bgElevated || $5[73] !== t18) {
442428
- t11 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
442429
- height: 1,
442430
- flexShrink: 0,
442431
- paddingX: 1,
442432
- backgroundColor: t122,
442433
- alignSelf: "flex-start",
442434
- marginTop: -1,
442435
- children: t18
442436
- }, undefined, false, undefined, this);
442437
- $5[72] = t2.bgElevated;
442438
- $5[73] = t18;
442439
- $5[74] = t11;
442440
- } else {
442441
- t11 = $5[74];
442442
- }
442443
- t22 = "column";
442444
- t3 = 1;
442445
- let t19;
442446
- if ($5[75] !== t2.textSecondary) {
442447
- t19 = (line2, i4) => /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
442448
- fg: t2.textSecondary,
442449
- children: line2
442450
- }, i4, false, undefined, this);
442451
- $5[75] = t2.textSecondary;
442452
- $5[76] = t19;
442453
- } else {
442454
- t19 = $5[76];
442455
- }
442456
- t4 = trimmed.split(`
442457
- `).map(t19);
442458
- $5[42] = bc;
442459
- $5[43] = content;
442460
- $5[44] = id;
442461
- $5[45] = label;
442462
- $5[46] = t2.bgElevated;
442463
- $5[47] = t2.brandDim;
442464
- $5[48] = t2.textFaint;
442465
- $5[49] = t2.textSecondary;
442466
- $5[50] = t10;
442467
- $5[51] = t11;
442468
- $5[52] = t22;
442469
- $5[53] = t3;
442470
- $5[54] = t4;
442471
- $5[55] = t5;
442472
- $5[56] = t6;
442473
- $5[57] = t7;
442474
- $5[58] = t8;
442475
- $5[59] = t9;
442476
- } else {
442477
- t10 = $5[50];
442478
- t11 = $5[51];
442479
- t22 = $5[52];
442480
- t3 = $5[53];
442481
- t4 = $5[54];
442482
- t5 = $5[55];
442483
- t6 = $5[56];
442484
- t7 = $5[57];
442485
- t8 = $5[58];
442486
- t9 = $5[59];
442487
- }
442488
- let t12;
442489
- if ($5[77] !== t22 || $5[78] !== t3 || $5[79] !== t4) {
442490
- t12 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
442491
- flexDirection: t22,
442492
- paddingX: t3,
442493
- children: t4
442494
- }, undefined, false, undefined, this);
442495
- $5[77] = t22;
442496
- $5[78] = t3;
442497
- $5[79] = t4;
442498
- $5[80] = t12;
442499
- } else {
442500
- t12 = $5[80];
442501
- }
442502
- let t13;
442503
- if ($5[81] !== t10 || $5[82] !== t11 || $5[83] !== t12 || $5[84] !== t5 || $5[85] !== t6 || $5[86] !== t7 || $5[87] !== t8 || $5[88] !== t9) {
442504
- t13 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
442505
- flexDirection: t6,
442506
- flexShrink: t7,
442507
- border: t8,
442508
- borderStyle: t9,
442509
- borderColor: t10,
442510
- children: [
442511
- t11,
442512
- t12
442513
- ]
442514
- }, t5, true, undefined, this);
442515
- $5[81] = t10;
442516
- $5[82] = t11;
442517
- $5[83] = t12;
442518
- $5[84] = t5;
442519
- $5[85] = t6;
442520
- $5[86] = t7;
442521
- $5[87] = t8;
442522
- $5[88] = t9;
442523
- $5[89] = t13;
442524
- } else {
442525
- t13 = $5[89];
442526
- }
442527
- return t13;
442528
- }
442529
- var import_compiler_runtime14, brainIcon = () => icon("brain");
442530
- var init_ReasoningBlock = __esm(() => {
442531
- init_icons();
442532
- init_theme();
442533
- init_shared2();
442534
- init_jsx_dev_runtime();
442535
- import_compiler_runtime14 = __toESM(require_compiler_runtime(), 1);
442536
- });
442537
-
442538
442126
  // src/core/diff.ts
442539
442127
  function lcs(a2, b5) {
442540
442128
  const n = a2.length;
@@ -442756,17 +442344,17 @@ function toUnifiedDiff(filePath, diffLines) {
442756
442344
  `);
442757
442345
  }
442758
442346
  function _temp15() {}
442759
- var import_compiler_runtime15, import_react36, LARGE_DIFF_THRESHOLD = 50, DiffView;
442347
+ var import_compiler_runtime14, import_react36, LARGE_DIFF_THRESHOLD = 50, DiffView;
442760
442348
  var init_DiffView = __esm(async () => {
442761
442349
  init_diff2();
442762
442350
  init_icons();
442763
442351
  init_theme();
442764
442352
  init_jsx_dev_runtime();
442765
442353
  await init_syntax();
442766
- import_compiler_runtime15 = __toESM(require_compiler_runtime(), 1);
442354
+ import_compiler_runtime14 = __toESM(require_compiler_runtime(), 1);
442767
442355
  import_react36 = __toESM(require_react(), 1);
442768
442356
  DiffView = import_react36.memo(function DiffView2(t0) {
442769
- const $5 = import_compiler_runtime15.c(75);
442357
+ const $5 = import_compiler_runtime14.c(75);
442770
442358
  const {
442771
442359
  filePath,
442772
442360
  oldString,
@@ -443150,6 +442738,435 @@ var init_DiffView = __esm(async () => {
443150
442738
  });
443151
442739
  });
443152
442740
 
442741
+ // src/components/chat/ReasoningBlock.tsx
442742
+ function ThinkingSpinner() {
442743
+ const $5 = import_compiler_runtime15.c(3);
442744
+ const t2 = useTheme();
442745
+ const frame = useSpinnerFrame();
442746
+ const t0 = SPINNER_FRAMES[frame];
442747
+ let t1;
442748
+ if ($5[0] !== t2.brandDim || $5[1] !== t0) {
442749
+ t1 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
442750
+ fg: t2.brandDim,
442751
+ children: t0
442752
+ }, undefined, false, undefined, this);
442753
+ $5[0] = t2.brandDim;
442754
+ $5[1] = t0;
442755
+ $5[2] = t1;
442756
+ } else {
442757
+ t1 = $5[2];
442758
+ }
442759
+ return t1;
442760
+ }
442761
+ function ReasoningBlock(t0) {
442762
+ const $5 = import_compiler_runtime15.c(90);
442763
+ const {
442764
+ content,
442765
+ expanded,
442766
+ isStreaming,
442767
+ id
442768
+ } = t0;
442769
+ const t2 = useTheme();
442770
+ let t1;
442771
+ if ($5[0] !== content || $5[1] !== expanded || $5[2] !== id || $5[3] !== isStreaming || $5[4] !== t2.success || $5[5] !== t2.textFaint || $5[6] !== t2.textSubtle) {
442772
+ t1 = Symbol.for("react.early_return_sentinel");
442773
+ bb0: {
442774
+ const lines = content.split(`
442775
+ `);
442776
+ const lineCount2 = lines.length;
442777
+ if (!expanded) {
442778
+ if (isStreaming) {
442779
+ const t24 = `${id}-col`;
442780
+ let t33;
442781
+ if ($5[8] === Symbol.for("react.memo_cache_sentinel")) {
442782
+ t33 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(ThinkingSpinner, {}, undefined, false, undefined, this);
442783
+ $5[8] = t33;
442784
+ } else {
442785
+ t33 = $5[8];
442786
+ }
442787
+ const t43 = t2.textFaint;
442788
+ let t53;
442789
+ if ($5[9] === Symbol.for("react.memo_cache_sentinel")) {
442790
+ t53 = brainIcon();
442791
+ $5[9] = t53;
442792
+ } else {
442793
+ t53 = $5[9];
442794
+ }
442795
+ let t63;
442796
+ if ($5[10] !== t2.textFaint) {
442797
+ t63 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
442798
+ fg: t43,
442799
+ children: [
442800
+ " ",
442801
+ t53,
442802
+ " reasoning"
442803
+ ]
442804
+ }, undefined, true, undefined, this);
442805
+ $5[10] = t2.textFaint;
442806
+ $5[11] = t63;
442807
+ } else {
442808
+ t63 = $5[11];
442809
+ }
442810
+ let t73;
442811
+ if ($5[12] !== lineCount2 || $5[13] !== t2.textFaint) {
442812
+ t73 = lineCount2 > 1 && /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
442813
+ fg: t2.textFaint,
442814
+ children: [
442815
+ " (",
442816
+ String(lineCount2),
442817
+ " lines)"
442818
+ ]
442819
+ }, undefined, true, undefined, this);
442820
+ $5[12] = lineCount2;
442821
+ $5[13] = t2.textFaint;
442822
+ $5[14] = t73;
442823
+ } else {
442824
+ t73 = $5[14];
442825
+ }
442826
+ let t83;
442827
+ if ($5[15] !== t2.textSubtle) {
442828
+ t83 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
442829
+ fg: t2.textSubtle,
442830
+ children: " ^O"
442831
+ }, undefined, false, undefined, this);
442832
+ $5[15] = t2.textSubtle;
442833
+ $5[16] = t83;
442834
+ } else {
442835
+ t83 = $5[16];
442836
+ }
442837
+ let t93;
442838
+ if ($5[17] !== t24 || $5[18] !== t63 || $5[19] !== t73 || $5[20] !== t83) {
442839
+ t93 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
442840
+ height: 1,
442841
+ flexShrink: 0,
442842
+ flexDirection: "row",
442843
+ children: [
442844
+ t33,
442845
+ t63,
442846
+ t73,
442847
+ t83
442848
+ ]
442849
+ }, t24, true, undefined, this);
442850
+ $5[17] = t24;
442851
+ $5[18] = t63;
442852
+ $5[19] = t73;
442853
+ $5[20] = t83;
442854
+ $5[21] = t93;
442855
+ } else {
442856
+ t93 = $5[21];
442857
+ }
442858
+ t1 = t93;
442859
+ break bb0;
442860
+ }
442861
+ const firstLine = (lines[0] ?? "").trim().replace(/\*\*/g, "");
442862
+ const preview = firstLine.length > 60 ? `${firstLine.slice(0, 57)}...` : firstLine;
442863
+ const t23 = `${id}-col`;
442864
+ const t32 = t2.textFaint;
442865
+ let t42;
442866
+ if ($5[22] !== t2.success) {
442867
+ t42 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
442868
+ fg: t2.success,
442869
+ children: "\u2713"
442870
+ }, undefined, false, undefined, this);
442871
+ $5[22] = t2.success;
442872
+ $5[23] = t42;
442873
+ } else {
442874
+ t42 = $5[23];
442875
+ }
442876
+ let t52;
442877
+ if ($5[24] === Symbol.for("react.memo_cache_sentinel")) {
442878
+ t52 = brainIcon();
442879
+ $5[24] = t52;
442880
+ } else {
442881
+ t52 = $5[24];
442882
+ }
442883
+ const t62 = preview || "Reasoned";
442884
+ let t72;
442885
+ if ($5[25] !== t2.textFaint || $5[26] !== t62) {
442886
+ t72 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
442887
+ fg: t2.textFaint,
442888
+ children: t62
442889
+ }, undefined, false, undefined, this);
442890
+ $5[25] = t2.textFaint;
442891
+ $5[26] = t62;
442892
+ $5[27] = t72;
442893
+ } else {
442894
+ t72 = $5[27];
442895
+ }
442896
+ let t82;
442897
+ if ($5[28] !== lineCount2 || $5[29] !== t2.textFaint) {
442898
+ t82 = lineCount2 > 1 && /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
442899
+ fg: t2.textFaint,
442900
+ children: [
442901
+ " (",
442902
+ String(lineCount2),
442903
+ " lines)"
442904
+ ]
442905
+ }, undefined, true, undefined, this);
442906
+ $5[28] = lineCount2;
442907
+ $5[29] = t2.textFaint;
442908
+ $5[30] = t82;
442909
+ } else {
442910
+ t82 = $5[30];
442911
+ }
442912
+ let t92;
442913
+ if ($5[31] !== t2.textFaint) {
442914
+ t92 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
442915
+ fg: t2.textFaint,
442916
+ children: " ^O"
442917
+ }, undefined, false, undefined, this);
442918
+ $5[31] = t2.textFaint;
442919
+ $5[32] = t92;
442920
+ } else {
442921
+ t92 = $5[32];
442922
+ }
442923
+ let t102;
442924
+ if ($5[33] !== t2.textFaint || $5[34] !== t42 || $5[35] !== t72 || $5[36] !== t82 || $5[37] !== t92) {
442925
+ t102 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
442926
+ fg: t32,
442927
+ truncate: true,
442928
+ children: [
442929
+ t42,
442930
+ " ",
442931
+ t52,
442932
+ " ",
442933
+ t72,
442934
+ t82,
442935
+ t92
442936
+ ]
442937
+ }, undefined, true, undefined, this);
442938
+ $5[33] = t2.textFaint;
442939
+ $5[34] = t42;
442940
+ $5[35] = t72;
442941
+ $5[36] = t82;
442942
+ $5[37] = t92;
442943
+ $5[38] = t102;
442944
+ } else {
442945
+ t102 = $5[38];
442946
+ }
442947
+ let t112;
442948
+ if ($5[39] !== t102 || $5[40] !== t23) {
442949
+ t112 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
442950
+ height: 1,
442951
+ flexShrink: 0,
442952
+ children: t102
442953
+ }, t23, false, undefined, this);
442954
+ $5[39] = t102;
442955
+ $5[40] = t23;
442956
+ $5[41] = t112;
442957
+ } else {
442958
+ t112 = $5[41];
442959
+ }
442960
+ t1 = t112;
442961
+ break bb0;
442962
+ }
442963
+ }
442964
+ $5[0] = content;
442965
+ $5[1] = expanded;
442966
+ $5[2] = id;
442967
+ $5[3] = isStreaming;
442968
+ $5[4] = t2.success;
442969
+ $5[5] = t2.textFaint;
442970
+ $5[6] = t2.textSubtle;
442971
+ $5[7] = t1;
442972
+ } else {
442973
+ t1 = $5[7];
442974
+ }
442975
+ if (t1 !== Symbol.for("react.early_return_sentinel")) {
442976
+ return t1;
442977
+ }
442978
+ const bc = isStreaming ? t2.brandDim : t2.border;
442979
+ const label = isStreaming ? "reasoning\u2026" : "reasoning";
442980
+ let t10;
442981
+ let t11;
442982
+ let t22;
442983
+ let t3;
442984
+ let t4;
442985
+ let t5;
442986
+ let t6;
442987
+ let t7;
442988
+ let t8;
442989
+ let t9;
442990
+ if ($5[42] !== bc || $5[43] !== content || $5[44] !== id || $5[45] !== label || $5[46] !== t2.bgElevated || $5[47] !== t2.brandDim || $5[48] !== t2.textFaint || $5[49] !== t2.textSecondary) {
442991
+ const trimmed = content.trim();
442992
+ t5 = `${id}-exp`;
442993
+ t6 = "column";
442994
+ t7 = 0;
442995
+ t8 = true;
442996
+ t9 = "rounded";
442997
+ t10 = bc;
442998
+ const t122 = t2.bgElevated;
442999
+ const t132 = t2.brandDim;
443000
+ let t14;
443001
+ if ($5[60] === Symbol.for("react.memo_cache_sentinel")) {
443002
+ t14 = brainIcon();
443003
+ $5[60] = t14;
443004
+ } else {
443005
+ t14 = $5[60];
443006
+ }
443007
+ let t15;
443008
+ if ($5[61] !== t2.brandDim) {
443009
+ t15 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
443010
+ fg: t132,
443011
+ children: t14
443012
+ }, undefined, false, undefined, this);
443013
+ $5[61] = t2.brandDim;
443014
+ $5[62] = t15;
443015
+ } else {
443016
+ t15 = $5[62];
443017
+ }
443018
+ let t16;
443019
+ if ($5[63] !== label || $5[64] !== t2.brandDim) {
443020
+ t16 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
443021
+ fg: t2.brandDim,
443022
+ children: label
443023
+ }, undefined, false, undefined, this);
443024
+ $5[63] = label;
443025
+ $5[64] = t2.brandDim;
443026
+ $5[65] = t16;
443027
+ } else {
443028
+ t16 = $5[65];
443029
+ }
443030
+ let t17;
443031
+ if ($5[66] !== t2.textFaint) {
443032
+ t17 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
443033
+ fg: t2.textFaint,
443034
+ children: " ^O"
443035
+ }, undefined, false, undefined, this);
443036
+ $5[66] = t2.textFaint;
443037
+ $5[67] = t17;
443038
+ } else {
443039
+ t17 = $5[67];
443040
+ }
443041
+ let t18;
443042
+ if ($5[68] !== t15 || $5[69] !== t16 || $5[70] !== t17) {
443043
+ t18 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
443044
+ truncate: true,
443045
+ children: [
443046
+ t15,
443047
+ " ",
443048
+ t16,
443049
+ t17
443050
+ ]
443051
+ }, undefined, true, undefined, this);
443052
+ $5[68] = t15;
443053
+ $5[69] = t16;
443054
+ $5[70] = t17;
443055
+ $5[71] = t18;
443056
+ } else {
443057
+ t18 = $5[71];
443058
+ }
443059
+ if ($5[72] !== t2.bgElevated || $5[73] !== t18) {
443060
+ t11 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
443061
+ height: 1,
443062
+ flexShrink: 0,
443063
+ paddingX: 1,
443064
+ backgroundColor: t122,
443065
+ alignSelf: "flex-start",
443066
+ marginTop: -1,
443067
+ children: t18
443068
+ }, undefined, false, undefined, this);
443069
+ $5[72] = t2.bgElevated;
443070
+ $5[73] = t18;
443071
+ $5[74] = t11;
443072
+ } else {
443073
+ t11 = $5[74];
443074
+ }
443075
+ t22 = "column";
443076
+ t3 = 1;
443077
+ let t19;
443078
+ if ($5[75] !== t2.textSecondary) {
443079
+ t19 = (line2, i4) => /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
443080
+ fg: t2.textSecondary,
443081
+ children: line2
443082
+ }, i4, false, undefined, this);
443083
+ $5[75] = t2.textSecondary;
443084
+ $5[76] = t19;
443085
+ } else {
443086
+ t19 = $5[76];
443087
+ }
443088
+ t4 = trimmed.split(`
443089
+ `).map(t19);
443090
+ $5[42] = bc;
443091
+ $5[43] = content;
443092
+ $5[44] = id;
443093
+ $5[45] = label;
443094
+ $5[46] = t2.bgElevated;
443095
+ $5[47] = t2.brandDim;
443096
+ $5[48] = t2.textFaint;
443097
+ $5[49] = t2.textSecondary;
443098
+ $5[50] = t10;
443099
+ $5[51] = t11;
443100
+ $5[52] = t22;
443101
+ $5[53] = t3;
443102
+ $5[54] = t4;
443103
+ $5[55] = t5;
443104
+ $5[56] = t6;
443105
+ $5[57] = t7;
443106
+ $5[58] = t8;
443107
+ $5[59] = t9;
443108
+ } else {
443109
+ t10 = $5[50];
443110
+ t11 = $5[51];
443111
+ t22 = $5[52];
443112
+ t3 = $5[53];
443113
+ t4 = $5[54];
443114
+ t5 = $5[55];
443115
+ t6 = $5[56];
443116
+ t7 = $5[57];
443117
+ t8 = $5[58];
443118
+ t9 = $5[59];
443119
+ }
443120
+ let t12;
443121
+ if ($5[77] !== t22 || $5[78] !== t3 || $5[79] !== t4) {
443122
+ t12 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
443123
+ flexDirection: t22,
443124
+ paddingX: t3,
443125
+ children: t4
443126
+ }, undefined, false, undefined, this);
443127
+ $5[77] = t22;
443128
+ $5[78] = t3;
443129
+ $5[79] = t4;
443130
+ $5[80] = t12;
443131
+ } else {
443132
+ t12 = $5[80];
443133
+ }
443134
+ let t13;
443135
+ if ($5[81] !== t10 || $5[82] !== t11 || $5[83] !== t12 || $5[84] !== t5 || $5[85] !== t6 || $5[86] !== t7 || $5[87] !== t8 || $5[88] !== t9) {
443136
+ t13 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
443137
+ flexDirection: t6,
443138
+ flexShrink: t7,
443139
+ border: t8,
443140
+ borderStyle: t9,
443141
+ borderColor: t10,
443142
+ children: [
443143
+ t11,
443144
+ t12
443145
+ ]
443146
+ }, t5, true, undefined, this);
443147
+ $5[81] = t10;
443148
+ $5[82] = t11;
443149
+ $5[83] = t12;
443150
+ $5[84] = t5;
443151
+ $5[85] = t6;
443152
+ $5[86] = t7;
443153
+ $5[87] = t8;
443154
+ $5[88] = t9;
443155
+ $5[89] = t13;
443156
+ } else {
443157
+ t13 = $5[89];
443158
+ }
443159
+ return t13;
443160
+ }
443161
+ var import_compiler_runtime15, brainIcon = () => icon("brain");
443162
+ var init_ReasoningBlock = __esm(() => {
443163
+ init_icons();
443164
+ init_theme();
443165
+ init_shared2();
443166
+ init_jsx_dev_runtime();
443167
+ import_compiler_runtime15 = __toESM(require_compiler_runtime(), 1);
443168
+ });
443169
+
443153
443170
  // src/components/chat/multi-agent-display.ts
443154
443171
  function shortModelId(modelId) {
443155
443172
  const parts2 = modelId.split("/");
@@ -443513,8 +443530,7 @@ function renderToolCall2(tc, seconds, diffStyle, t2, connector) {
443513
443530
  try {
443514
443531
  const plan = JSON.parse(tc.args);
443515
443532
  if (plan.title && Array.isArray(plan.steps) && Array.isArray(plan.files)) {
443516
- return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
443517
- flexDirection: "column",
443533
+ const planContent = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(import_jsx_dev_runtime2.Fragment, {
443518
443534
  children: [
443519
443535
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(StructuredPlanView, {
443520
443536
  plan,
@@ -443542,17 +443558,48 @@ function renderToolCall2(tc, seconds, diffStyle, t2, connector) {
443542
443558
  }, undefined, true, undefined, this)
443543
443559
  }, undefined, false, undefined, this)
443544
443560
  ]
443545
- }, tc.id, true, undefined, this);
443561
+ }, undefined, true, undefined, this);
443562
+ if (connector) {
443563
+ const char = connector.isLast ? "\u2514 " : connector.isFirst ? "\u250C " : "\u251C ";
443564
+ return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
443565
+ flexDirection: "column",
443566
+ children: [
443567
+ /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
443568
+ height: 1,
443569
+ flexShrink: 0,
443570
+ children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
443571
+ children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
443572
+ fg: t2.textFaint,
443573
+ children: char
443574
+ }, undefined, false, undefined, this)
443575
+ }, undefined, false, undefined, this)
443576
+ }, undefined, false, undefined, this),
443577
+ /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
443578
+ border: ["left"],
443579
+ customBorderChars: connector.isLast ? TREE_SPACE : TREE_PIPE,
443580
+ borderColor: t2.textFaint,
443581
+ paddingLeft: 1,
443582
+ children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
443583
+ flexDirection: "column",
443584
+ children: planContent
443585
+ }, undefined, false, undefined, this)
443586
+ }, undefined, false, undefined, this)
443587
+ ]
443588
+ }, tc.id, true, undefined, this);
443589
+ }
443590
+ return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
443591
+ flexDirection: "column",
443592
+ children: planContent
443593
+ }, tc.id, false, undefined, this);
443546
443594
  }
443547
443595
  } catch {}
443548
443596
  }
443549
443597
  if (connector) {
443550
- const char = connector.isLast ? "\u2514 " : connector.isFirst ? "\u250C " : "\u251C ";
443551
443598
  return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(ToolRow, {
443552
443599
  tc,
443553
443600
  seconds,
443554
443601
  diffStyle,
443555
- connectorChar: char
443602
+ treePosition: connector
443556
443603
  }, tc.id, false, undefined, this);
443557
443604
  }
443558
443605
  return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(ToolRow, {
@@ -443570,7 +443617,7 @@ function _temp25(s_0) {
443570
443617
  function _temp35(s_1) {
443571
443618
  return s_1.state !== "running";
443572
443619
  }
443573
- var import_compiler_runtime16, import_react38, SUBAGENT_NAMES, RENDER_DEBOUNCE = 80, Spinner2, ChildStepRow, MultiAgentChildRow, ToolRow, QUIET_TOOLS, EDIT_TOOL_NAMES, ToolCallDisplay;
443620
+ var import_compiler_runtime16, import_react38, SUBAGENT_NAMES, RENDER_DEBOUNCE = 80, Spinner2, ChildStepRow, MultiAgentChildRow, TREE_PIPE, TREE_SPACE, ToolRow, QUIET_TOOLS, EDIT_TOOL_NAMES, ToolCallDisplay;
443574
443621
  var init_ToolCallDisplay = __esm(async () => {
443575
443622
  init_icons();
443576
443623
  init_theme();
@@ -443581,6 +443628,7 @@ var init_ToolCallDisplay = __esm(async () => {
443581
443628
  await __promiseAll([
443582
443629
  init_core4(),
443583
443630
  init_StructuredPlanView(),
443631
+ init_DiffView(),
443584
443632
  init_dispatch_display(),
443585
443633
  init_StaticToolRow()
443586
443634
  ]);
@@ -444417,11 +444465,37 @@ var init_ToolCallDisplay = __esm(async () => {
444417
444465
  const n = next.childSteps[i4];
444418
444466
  return n && s2.toolName === n.toolName && s2.state === n.state && s2.args === n.args && s2.cacheState === n.cacheState;
444419
444467
  }) && prev.liveStats?.toolUses === next.liveStats?.toolUses && prev.liveStats?.tokenUsage?.total === next.liveStats?.tokenUsage?.total && prev.liveStats?.cacheHits === next.liveStats?.cacheHits);
444468
+ TREE_PIPE = {
444469
+ vertical: "\u2502",
444470
+ horizontal: " ",
444471
+ topLeft: " ",
444472
+ topRight: " ",
444473
+ bottomLeft: " ",
444474
+ bottomRight: " ",
444475
+ topT: " ",
444476
+ bottomT: " ",
444477
+ leftT: " ",
444478
+ rightT: " ",
444479
+ cross: " "
444480
+ };
444481
+ TREE_SPACE = {
444482
+ vertical: " ",
444483
+ horizontal: " ",
444484
+ topLeft: " ",
444485
+ topRight: " ",
444486
+ bottomLeft: " ",
444487
+ bottomRight: " ",
444488
+ topT: " ",
444489
+ bottomT: " ",
444490
+ leftT: " ",
444491
+ rightT: " ",
444492
+ cross: " "
444493
+ };
444420
444494
  ToolRow = import_react38.memo(function ToolRow2({
444421
444495
  tc,
444422
444496
  seconds,
444423
444497
  diffStyle = "default",
444424
- connectorChar
444498
+ treePosition
444425
444499
  }) {
444426
444500
  const t2 = useTheme();
444427
444501
  const isSubagent = SUBAGENT_NAMES.has(tc.toolName);
@@ -444531,6 +444605,7 @@ var init_ToolCallDisplay = __esm(async () => {
444531
444605
  children: "\u2713"
444532
444606
  }, undefined, false, undefined, this);
444533
444607
  })();
444608
+ const connectorChar = treePosition ? treePosition.isLast ? "\u2514 " : treePosition.isFirst ? "\u250C " : "\u251C " : undefined;
444534
444609
  const statusContent = connectorChar ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(import_jsx_dev_runtime2.Fragment, {
444535
444610
  children: [
444536
444611
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
@@ -444540,103 +444615,168 @@ var init_ToolCallDisplay = __esm(async () => {
444540
444615
  statusIcon
444541
444616
  ]
444542
444617
  }, undefined, true, undefined, this) : statusIcon;
444618
+ const inTree = !!treePosition;
444619
+ const hasExpanded = inTree && (!!staticProps.diff || staticProps.imageArt && staticProps.imageArt.length > 0 || isMultiAgent && multiProgress !== null && multiProgress.agents.size > 0 && !dispatchRejection || isSubagent && !isMultiAgent && allChildSteps.length > 0);
444620
+ const multiAgentContent = isMultiAgent && multiProgress !== null && multiProgress.agents.size > 0 && !dispatchRejection ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
444621
+ flexDirection: "column",
444622
+ marginLeft: 2,
444623
+ children: [...multiProgress.agents.entries()].map(([agentId, info2], idx, arr) => {
444624
+ const agentSteps = allChildSteps.filter((s2) => s2.agentId === agentId);
444625
+ const isLastVisible = idx === arr.length - 1;
444626
+ const allAccountedFor = arr.length >= (multiProgress.totalAgents ?? arr.length);
444627
+ return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(MultiAgentChildRow, {
444628
+ agentId,
444629
+ info: info2,
444630
+ isFirst: idx === 0,
444631
+ isLast: isLastVisible && allAccountedFor,
444632
+ childSteps: agentSteps,
444633
+ liveStats: liveStats.get(agentId)
444634
+ }, agentId, false, undefined, this);
444635
+ })
444636
+ }, undefined, false, undefined, this) : null;
444637
+ const singleAgentContent = isSubagent && !isMultiAgent && allChildSteps.length > 0 ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
444638
+ flexDirection: "column",
444639
+ children: (() => {
444640
+ const MAX_SINGLE = 5;
444641
+ const filtered = allChildSteps.filter((s_0) => !QUIET_TOOLS.has(s_0.toolName));
444642
+ const running = filtered.filter((s_1) => s_1.state === "running");
444643
+ const done_0 = filtered.filter((s_2) => s_2.state !== "running");
444644
+ const doneSlots = Math.max(0, MAX_SINGLE - running.length);
444645
+ const visibleDone = done_0.slice(-doneSlots);
444646
+ const hiddenCount = done_0.length - visibleDone.length;
444647
+ const visible = [...visibleDone, ...running];
444648
+ const agentRunning = tc.state === "running";
444649
+ const showThinking = agentRunning && running.length === 0 && done_0.length > 0;
444650
+ return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(import_jsx_dev_runtime2.Fragment, {
444651
+ children: [
444652
+ hiddenCount > 0 && /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
444653
+ height: 1,
444654
+ flexShrink: 0,
444655
+ marginLeft: 3,
444656
+ children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
444657
+ truncate: true,
444658
+ children: [
444659
+ /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
444660
+ fg: t2.textFaint,
444661
+ children: "\u251C "
444662
+ }, undefined, false, undefined, this),
444663
+ /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
444664
+ fg: t2.textDim,
444665
+ children: [
444666
+ "+",
444667
+ String(hiddenCount),
444668
+ " completed"
444669
+ ]
444670
+ }, undefined, true, undefined, this)
444671
+ ]
444672
+ }, undefined, true, undefined, this)
444673
+ }, undefined, false, undefined, this),
444674
+ visible.map((step, si) => {
444675
+ const stableIdx = allChildSteps.indexOf(step);
444676
+ const last = si === visible.length - 1 && !showThinking;
444677
+ return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(ChildStepRow, {
444678
+ step,
444679
+ isLast: last
444680
+ }, `${step.toolName}-${String(stableIdx)}`, false, undefined, this);
444681
+ }),
444682
+ showThinking && /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
444683
+ height: 1,
444684
+ flexShrink: 0,
444685
+ marginLeft: 3,
444686
+ children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
444687
+ truncate: true,
444688
+ children: [
444689
+ /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
444690
+ fg: t2.textFaint,
444691
+ children: "\u2514 "
444692
+ }, undefined, false, undefined, this),
444693
+ /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(Spinner2, {
444694
+ color: t2.textMuted
444695
+ }, undefined, false, undefined, this),
444696
+ /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
444697
+ fg: t2.textMuted,
444698
+ children: " thinking..."
444699
+ }, undefined, false, undefined, this)
444700
+ ]
444701
+ }, undefined, true, undefined, this)
444702
+ }, undefined, false, undefined, this)
444703
+ ]
444704
+ }, undefined, true, undefined, this);
444705
+ })()
444706
+ }, undefined, false, undefined, this) : null;
444707
+ const diffContent = staticProps.diff ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
444708
+ marginTop: 1,
444709
+ flexDirection: "column",
444710
+ children: [
444711
+ /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(DiffView, {
444712
+ filePath: staticProps.diff.path,
444713
+ oldString: staticProps.diff.oldString,
444714
+ newString: staticProps.diff.newString,
444715
+ success: staticProps.diff.success,
444716
+ errorMessage: staticProps.diff.errorMessage,
444717
+ mode: diffStyle
444718
+ }, undefined, false, undefined, this),
444719
+ staticProps.diff.impact ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
444720
+ fg: t2.textMuted,
444721
+ children: [
444722
+ " ",
444723
+ /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
444724
+ fg: t2.amber,
444725
+ children: icon("impact")
444726
+ }, undefined, false, undefined, this),
444727
+ /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
444728
+ fg: t2.textSecondary,
444729
+ children: [
444730
+ " ",
444731
+ staticProps.diff.impact
444732
+ ]
444733
+ }, undefined, true, undefined, this)
444734
+ ]
444735
+ }, undefined, true, undefined, this) : null
444736
+ ]
444737
+ }, undefined, true, undefined, this) : null;
444738
+ const imageContent = staticProps.imageArt && staticProps.imageArt.length > 0 ? staticProps.imageArt.map((img) => /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
444739
+ flexDirection: "column",
444740
+ marginTop: 1,
444741
+ children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("ghostty-terminal", {
444742
+ ansi: img.lines.join(`
444743
+ `),
444744
+ cols: 130,
444745
+ rows: img.lines.length,
444746
+ trimEnd: true
444747
+ }, undefined, false, undefined, this)
444748
+ }, img.name, false, undefined, this)) : null;
444543
444749
  return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
444544
444750
  flexDirection: "column",
444545
444751
  children: [
444546
444752
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(StaticToolRow, {
444547
444753
  ...staticProps,
444548
- statusContent
444549
- }, undefined, false, undefined, this),
444550
- isMultiAgent && multiProgress !== null && multiProgress.agents.size > 0 && !dispatchRejection && /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
444551
- flexDirection: "column",
444552
- marginLeft: 2,
444553
- children: [...multiProgress.agents.entries()].map(([agentId, info2], idx, arr) => {
444554
- const agentSteps = allChildSteps.filter((s2) => s2.agentId === agentId);
444555
- const isLastVisible = idx === arr.length - 1;
444556
- const allAccountedFor = arr.length >= (multiProgress.totalAgents ?? arr.length);
444557
- return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(MultiAgentChildRow, {
444558
- agentId,
444559
- info: info2,
444560
- isFirst: idx === 0,
444561
- isLast: isLastVisible && allAccountedFor,
444562
- childSteps: agentSteps,
444563
- liveStats: liveStats.get(agentId)
444564
- }, agentId, false, undefined, this);
444565
- })
444754
+ statusContent,
444755
+ suppressExpanded: inTree
444566
444756
  }, undefined, false, undefined, this),
444567
- isSubagent && !isMultiAgent && allChildSteps.length > 0 && /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
444568
- flexDirection: "column",
444569
- children: (() => {
444570
- const MAX_SINGLE = 5;
444571
- const filtered = allChildSteps.filter((s_0) => !QUIET_TOOLS.has(s_0.toolName));
444572
- const running = filtered.filter((s_1) => s_1.state === "running");
444573
- const done_0 = filtered.filter((s_2) => s_2.state !== "running");
444574
- const doneSlots = Math.max(0, MAX_SINGLE - running.length);
444575
- const visibleDone = done_0.slice(-doneSlots);
444576
- const hiddenCount = done_0.length - visibleDone.length;
444577
- const visible = [...visibleDone, ...running];
444578
- const agentRunning = tc.state === "running";
444579
- const showThinking = agentRunning && running.length === 0 && done_0.length > 0;
444580
- return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(import_jsx_dev_runtime2.Fragment, {
444581
- children: [
444582
- hiddenCount > 0 && /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
444583
- height: 1,
444584
- flexShrink: 0,
444585
- marginLeft: 3,
444586
- children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
444587
- truncate: true,
444588
- children: [
444589
- /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
444590
- fg: t2.textFaint,
444591
- children: "\u251C "
444592
- }, undefined, false, undefined, this),
444593
- /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
444594
- fg: t2.textDim,
444595
- children: [
444596
- "+",
444597
- String(hiddenCount),
444598
- " completed"
444599
- ]
444600
- }, undefined, true, undefined, this)
444601
- ]
444602
- }, undefined, true, undefined, this)
444603
- }, undefined, false, undefined, this),
444604
- visible.map((step, si) => {
444605
- const stableIdx = allChildSteps.indexOf(step);
444606
- const last = si === visible.length - 1 && !showThinking;
444607
- return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(ChildStepRow, {
444608
- step,
444609
- isLast: last
444610
- }, `${step.toolName}-${String(stableIdx)}`, false, undefined, this);
444611
- }),
444612
- showThinking && /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
444613
- height: 1,
444614
- flexShrink: 0,
444615
- marginLeft: 3,
444616
- children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
444617
- truncate: true,
444618
- children: [
444619
- /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
444620
- fg: t2.textFaint,
444621
- children: "\u2514 "
444622
- }, undefined, false, undefined, this),
444623
- /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(Spinner2, {
444624
- color: t2.textMuted
444625
- }, undefined, false, undefined, this),
444626
- /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
444627
- fg: t2.textMuted,
444628
- children: " thinking..."
444629
- }, undefined, false, undefined, this)
444630
- ]
444631
- }, undefined, true, undefined, this)
444632
- }, undefined, false, undefined, this)
444633
- ]
444634
- }, undefined, true, undefined, this);
444635
- })()
444636
- }, undefined, false, undefined, this)
444757
+ hasExpanded ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
444758
+ border: ["left"],
444759
+ customBorderChars: treePosition?.isLast ? TREE_SPACE : TREE_PIPE,
444760
+ borderColor: t2.textFaint,
444761
+ paddingLeft: 1,
444762
+ children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
444763
+ flexDirection: "column",
444764
+ children: [
444765
+ diffContent,
444766
+ imageContent,
444767
+ multiAgentContent,
444768
+ singleAgentContent
444769
+ ]
444770
+ }, undefined, true, undefined, this)
444771
+ }, undefined, false, undefined, this) : /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(import_jsx_dev_runtime2.Fragment, {
444772
+ children: [
444773
+ multiAgentContent,
444774
+ singleAgentContent
444775
+ ]
444776
+ }, undefined, true, undefined, this)
444637
444777
  ]
444638
444778
  }, undefined, true, undefined, this);
444639
- }, (prev, next) => prev.tc.id === next.tc.id && prev.tc.state === next.tc.state && prev.tc.args === next.tc.args && prev.tc.result === next.tc.result && prev.tc.error === next.tc.error && prev.tc.backend === next.tc.backend && prev.seconds === next.seconds && prev.diffStyle === next.diffStyle);
444779
+ }, (prev, next) => prev.tc.id === next.tc.id && prev.tc.state === next.tc.state && prev.tc.args === next.tc.args && prev.tc.result === next.tc.result && prev.tc.error === next.tc.error && prev.tc.backend === next.tc.backend && prev.seconds === next.seconds && prev.diffStyle === next.diffStyle && prev.treePosition?.isFirst === next.treePosition?.isFirst && prev.treePosition?.isLast === next.treePosition?.isLast);
444640
444780
  QUIET_TOOLS = new Set(["update_plan_step", "ask_user", "task_list"]);
444641
444781
  EDIT_TOOL_NAMES = new Set(["edit_file", "multi_edit"]);
444642
444782
  ToolCallDisplay = import_react38.memo(function ToolCallDisplay2(t0) {
@@ -445225,7 +445365,7 @@ var init_tool_formatters = __esm(async () => {
445225
445365
 
445226
445366
  // src/components/chat/StaticToolRow.tsx
445227
445367
  function StaticToolRow(t0) {
445228
- const $5 = import_compiler_runtime17.c(56);
445368
+ const $5 = import_compiler_runtime17.c(58);
445229
445369
  const {
445230
445370
  statusContent,
445231
445371
  isDone,
@@ -445243,34 +445383,36 @@ function StaticToolRow(t0) {
445243
445383
  suffixColor,
445244
445384
  diff,
445245
445385
  diffStyle: t1,
445246
- imageArt
445386
+ imageArt,
445387
+ suppressExpanded: t2
445247
445388
  } = t0;
445248
445389
  const diffStyle = t1 === undefined ? "default" : t1;
445249
- const t2 = useTheme();
445250
- let t22;
445251
- if ($5[0] !== t2.brand || $5[1] !== t2.error || $5[2] !== t2.success || $5[3] !== t2.textMuted || $5[4] !== t2.textSecondary) {
445252
- t22 = {
445253
- textDone: t2.textMuted,
445254
- toolNameActive: t2.brand,
445255
- argsActive: t2.textSecondary,
445256
- checkDone: t2.success,
445257
- error: t2.error
445258
- };
445259
- $5[0] = t2.brand;
445260
- $5[1] = t2.error;
445261
- $5[2] = t2.success;
445262
- $5[3] = t2.textMuted;
445263
- $5[4] = t2.textSecondary;
445264
- $5[5] = t22;
445390
+ const suppressExpanded = t2 === undefined ? false : t2;
445391
+ const t3 = useTheme();
445392
+ let t32;
445393
+ if ($5[0] !== t3.brand || $5[1] !== t3.error || $5[2] !== t3.success || $5[3] !== t3.textMuted || $5[4] !== t3.textSecondary) {
445394
+ t32 = {
445395
+ textDone: t3.textMuted,
445396
+ toolNameActive: t3.brand,
445397
+ argsActive: t3.textSecondary,
445398
+ checkDone: t3.success,
445399
+ error: t3.error
445400
+ };
445401
+ $5[0] = t3.brand;
445402
+ $5[1] = t3.error;
445403
+ $5[2] = t3.success;
445404
+ $5[3] = t3.textMuted;
445405
+ $5[4] = t3.textSecondary;
445406
+ $5[5] = t32;
445265
445407
  } else {
445266
- t22 = $5[5];
445408
+ t32 = $5[5];
445267
445409
  }
445268
- const rc = t22;
445269
- const t3 = isDone ? rc.textDone : iconColor;
445270
- let t4;
445271
- if ($5[6] !== icon2 || $5[7] !== t3) {
445272
- t4 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
445273
- fg: t3,
445410
+ const rc = t32;
445411
+ const t4 = isDone ? rc.textDone : iconColor;
445412
+ let t5;
445413
+ if ($5[6] !== icon2 || $5[7] !== t4) {
445414
+ t5 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
445415
+ fg: t4,
445274
445416
  children: [
445275
445417
  " ",
445276
445418
  icon2,
@@ -445278,15 +445420,15 @@ function StaticToolRow(t0) {
445278
445420
  ]
445279
445421
  }, undefined, true, undefined, this);
445280
445422
  $5[6] = icon2;
445281
- $5[7] = t3;
445282
- $5[8] = t4;
445423
+ $5[7] = t4;
445424
+ $5[8] = t5;
445283
445425
  } else {
445284
- t4 = $5[8];
445426
+ t5 = $5[8];
445285
445427
  }
445286
- let t5;
445287
- if ($5[9] !== category || $5[10] !== categoryColor || $5[11] !== isDone || $5[12] !== t2.textDim) {
445288
- t5 = category ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
445289
- fg: isDone ? t2.textDim : categoryColor,
445428
+ let t6;
445429
+ if ($5[9] !== category || $5[10] !== categoryColor || $5[11] !== isDone || $5[12] !== t3.textDim) {
445430
+ t6 = category ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
445431
+ fg: isDone ? t3.textDim : categoryColor,
445290
445432
  children: [
445291
445433
  "[",
445292
445434
  category,
@@ -445296,15 +445438,15 @@ function StaticToolRow(t0) {
445296
445438
  $5[9] = category;
445297
445439
  $5[10] = categoryColor;
445298
445440
  $5[11] = isDone;
445299
- $5[12] = t2.textDim;
445300
- $5[13] = t5;
445441
+ $5[12] = t3.textDim;
445442
+ $5[13] = t6;
445301
445443
  } else {
445302
- t5 = $5[13];
445444
+ t6 = $5[13];
445303
445445
  }
445304
- let t6;
445305
- if ($5[14] !== backendColor || $5[15] !== backendTag || $5[16] !== category || $5[17] !== isDone || $5[18] !== t2.textDim) {
445306
- t6 = backendTag ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
445307
- fg: isDone ? t2.textDim : backendColor,
445446
+ let t7;
445447
+ if ($5[14] !== backendColor || $5[15] !== backendTag || $5[16] !== category || $5[17] !== isDone || $5[18] !== t3.textDim) {
445448
+ t7 = backendTag ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
445449
+ fg: isDone ? t3.textDim : backendColor,
445308
445450
  children: [
445309
445451
  "[",
445310
445452
  getBackendLabel(backendTag),
@@ -445317,15 +445459,15 @@ function StaticToolRow(t0) {
445317
445459
  $5[15] = backendTag;
445318
445460
  $5[16] = category;
445319
445461
  $5[17] = isDone;
445320
- $5[18] = t2.textDim;
445321
- $5[19] = t6;
445462
+ $5[18] = t3.textDim;
445463
+ $5[19] = t7;
445322
445464
  } else {
445323
- t6 = $5[19];
445465
+ t7 = $5[19];
445324
445466
  }
445325
- let t7;
445326
- if ($5[20] !== isDone || $5[21] !== outsideBadge || $5[22] !== t2.textDim) {
445327
- t7 = outsideBadge ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
445328
- fg: isDone ? t2.textDim : outsideBadge.color,
445467
+ let t8;
445468
+ if ($5[20] !== isDone || $5[21] !== outsideBadge || $5[22] !== t3.textDim) {
445469
+ t8 = outsideBadge ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
445470
+ fg: isDone ? t3.textDim : outsideBadge.color,
445329
445471
  children: [
445330
445472
  "[",
445331
445473
  outsideBadge.label,
@@ -445334,14 +445476,14 @@ function StaticToolRow(t0) {
445334
445476
  }, undefined, true, undefined, this) : null;
445335
445477
  $5[20] = isDone;
445336
445478
  $5[21] = outsideBadge;
445337
- $5[22] = t2.textDim;
445338
- $5[23] = t7;
445479
+ $5[22] = t3.textDim;
445480
+ $5[23] = t8;
445339
445481
  } else {
445340
- t7 = $5[23];
445482
+ t8 = $5[23];
445341
445483
  }
445342
- let t8;
445484
+ let t9;
445343
445485
  if ($5[24] !== argStr || $5[25] !== editResultText || $5[26] !== isDone || $5[27] !== label || $5[28] !== rc.argsActive || $5[29] !== rc.textDone || $5[30] !== rc.toolNameActive) {
445344
- t8 = editResultText ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
445486
+ t9 = editResultText ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
445345
445487
  fg: rc.textDone,
445346
445488
  children: editResultText
445347
445489
  }, undefined, false, undefined, this) : /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(import_jsx_dev_runtime2.Fragment, {
@@ -445367,55 +445509,55 @@ function StaticToolRow(t0) {
445367
445509
  $5[28] = rc.argsActive;
445368
445510
  $5[29] = rc.textDone;
445369
445511
  $5[30] = rc.toolNameActive;
445370
- $5[31] = t8;
445512
+ $5[31] = t9;
445371
445513
  } else {
445372
- t8 = $5[31];
445514
+ t9 = $5[31];
445373
445515
  }
445374
- let t9;
445516
+ let t10;
445375
445517
  if ($5[32] !== rc.textDone || $5[33] !== suffix || $5[34] !== suffixColor) {
445376
- t9 = suffix ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
445518
+ t10 = suffix ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
445377
445519
  fg: suffixColor ?? rc.textDone,
445378
445520
  children: suffix
445379
445521
  }, undefined, false, undefined, this) : null;
445380
445522
  $5[32] = rc.textDone;
445381
445523
  $5[33] = suffix;
445382
445524
  $5[34] = suffixColor;
445383
- $5[35] = t9;
445525
+ $5[35] = t10;
445384
445526
  } else {
445385
- t9 = $5[35];
445527
+ t10 = $5[35];
445386
445528
  }
445387
- let t10;
445388
- if ($5[36] !== statusContent || $5[37] !== t4 || $5[38] !== t5 || $5[39] !== t6 || $5[40] !== t7 || $5[41] !== t8 || $5[42] !== t9) {
445389
- t10 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
445529
+ let t11;
445530
+ if ($5[36] !== statusContent || $5[37] !== t10 || $5[38] !== t5 || $5[39] !== t6 || $5[40] !== t7 || $5[41] !== t8 || $5[42] !== t9) {
445531
+ t11 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
445390
445532
  height: 1,
445391
445533
  flexShrink: 0,
445392
445534
  children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
445393
445535
  truncate: true,
445394
445536
  children: [
445395
445537
  statusContent,
445396
- t4,
445397
445538
  t5,
445398
445539
  t6,
445399
445540
  t7,
445400
445541
  t8,
445401
- t9
445542
+ t9,
445543
+ t10
445402
445544
  ]
445403
445545
  }, undefined, true, undefined, this)
445404
445546
  }, undefined, false, undefined, this);
445405
445547
  $5[36] = statusContent;
445406
- $5[37] = t4;
445548
+ $5[37] = t10;
445407
445549
  $5[38] = t5;
445408
445550
  $5[39] = t6;
445409
445551
  $5[40] = t7;
445410
445552
  $5[41] = t8;
445411
445553
  $5[42] = t9;
445412
- $5[43] = t10;
445554
+ $5[43] = t11;
445413
445555
  } else {
445414
- t10 = $5[43];
445556
+ t11 = $5[43];
445415
445557
  }
445416
- let t11;
445417
- if ($5[44] !== diff || $5[45] !== diffStyle || $5[46] !== t2.amber || $5[47] !== t2.textMuted || $5[48] !== t2.textSecondary) {
445418
- t11 = diff ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
445558
+ let t12;
445559
+ if ($5[44] !== diff || $5[45] !== diffStyle || $5[46] !== suppressExpanded || $5[47] !== t3.amber || $5[48] !== t3.textMuted || $5[49] !== t3.textSecondary) {
445560
+ t12 = !suppressExpanded && diff ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
445419
445561
  marginTop: 1,
445420
445562
  flexDirection: "column",
445421
445563
  children: [
@@ -445428,15 +445570,15 @@ function StaticToolRow(t0) {
445428
445570
  mode: diffStyle
445429
445571
  }, undefined, false, undefined, this),
445430
445572
  diff.impact ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
445431
- fg: t2.textMuted,
445573
+ fg: t3.textMuted,
445432
445574
  children: [
445433
445575
  " ",
445434
445576
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
445435
- fg: t2.amber,
445577
+ fg: t3.amber,
445436
445578
  children: icon("impact")
445437
445579
  }, undefined, false, undefined, this),
445438
445580
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
445439
- fg: t2.textSecondary,
445581
+ fg: t3.textSecondary,
445440
445582
  children: [
445441
445583
  " ",
445442
445584
  diff.impact
@@ -445448,39 +445590,41 @@ function StaticToolRow(t0) {
445448
445590
  }, undefined, true, undefined, this) : null;
445449
445591
  $5[44] = diff;
445450
445592
  $5[45] = diffStyle;
445451
- $5[46] = t2.amber;
445452
- $5[47] = t2.textMuted;
445453
- $5[48] = t2.textSecondary;
445454
- $5[49] = t11;
445593
+ $5[46] = suppressExpanded;
445594
+ $5[47] = t3.amber;
445595
+ $5[48] = t3.textMuted;
445596
+ $5[49] = t3.textSecondary;
445597
+ $5[50] = t12;
445455
445598
  } else {
445456
- t11 = $5[49];
445599
+ t12 = $5[50];
445457
445600
  }
445458
- let t12;
445459
- if ($5[50] !== imageArt) {
445460
- t12 = imageArt && imageArt.length > 0 ? imageArt.map(_temp17) : null;
445461
- $5[50] = imageArt;
445462
- $5[51] = t12;
445601
+ let t13;
445602
+ if ($5[51] !== imageArt || $5[52] !== suppressExpanded) {
445603
+ t13 = !suppressExpanded && imageArt && imageArt.length > 0 ? imageArt.map(_temp17) : null;
445604
+ $5[51] = imageArt;
445605
+ $5[52] = suppressExpanded;
445606
+ $5[53] = t13;
445463
445607
  } else {
445464
- t12 = $5[51];
445608
+ t13 = $5[53];
445465
445609
  }
445466
- let t13;
445467
- if ($5[52] !== t10 || $5[53] !== t11 || $5[54] !== t12) {
445468
- t13 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
445610
+ let t14;
445611
+ if ($5[54] !== t11 || $5[55] !== t12 || $5[56] !== t13) {
445612
+ t14 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
445469
445613
  flexDirection: "column",
445470
445614
  children: [
445471
- t10,
445472
445615
  t11,
445473
- t12
445616
+ t12,
445617
+ t13
445474
445618
  ]
445475
445619
  }, undefined, true, undefined, this);
445476
- $5[52] = t10;
445477
- $5[53] = t11;
445478
- $5[54] = t12;
445479
- $5[55] = t13;
445620
+ $5[54] = t11;
445621
+ $5[55] = t12;
445622
+ $5[56] = t13;
445623
+ $5[57] = t14;
445480
445624
  } else {
445481
- t13 = $5[55];
445625
+ t14 = $5[57];
445482
445626
  }
445483
- return t13;
445627
+ return t14;
445484
445628
  }
445485
445629
  function _temp17(img) {
445486
445630
  return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
@@ -446081,199 +446225,372 @@ function isDenied(error48) {
446081
446225
  return !!error48 && /denied|rejected|cancelled/i.test(error48);
446082
446226
  }
446083
446227
  function ToolCallRow(t0) {
446084
- const $5 = import_compiler_runtime18.c(21);
446228
+ const $5 = import_compiler_runtime18.c(44);
446085
446229
  const {
446086
446230
  tc,
446087
446231
  diffStyle,
446088
- autoCompactDiffs: t1
446232
+ autoCompactDiffs: t1,
446233
+ connectorChar,
446234
+ treePosition
446089
446235
  } = t0;
446090
446236
  const autoCompactDiffs = t1 === undefined ? false : t1;
446091
446237
  const t2 = useTheme();
446092
446238
  const expanded = useCodeExpanded();
446093
446239
  const errorsExpanded = useReasoningExpanded();
446240
+ let diffContent;
446241
+ let errorContent;
446242
+ let inTree;
446094
446243
  let props;
446095
- if ($5[0] !== autoCompactDiffs || $5[1] !== diffStyle || $5[2] !== expanded || $5[3] !== tc) {
446244
+ let showErrorDetail;
446245
+ let t22;
446246
+ if ($5[0] !== autoCompactDiffs || $5[1] !== connectorChar || $5[2] !== diffStyle || $5[3] !== errorsExpanded || $5[4] !== expanded || $5[5] !== t2 || $5[6] !== tc || $5[7] !== treePosition) {
446096
446247
  props = buildFinalToolRowProps(tc);
446248
+ const effectiveDiffStyle = props.diff ? expanded || !autoCompactDiffs ? diffStyle : "compact" : diffStyle;
446097
446249
  if (props.diff) {
446098
- props.diffStyle = expanded || !autoCompactDiffs ? diffStyle : "compact";
446250
+ props.diffStyle = effectiveDiffStyle;
446099
446251
  }
446100
- $5[0] = autoCompactDiffs;
446101
- $5[1] = diffStyle;
446102
- $5[2] = expanded;
446103
- $5[3] = tc;
446104
- $5[4] = props;
446105
- } else {
446106
- props = $5[4];
446107
- }
446108
- const fullError = tc.result?.error ?? "";
446109
- const isError = !!tc.result && !tc.result.success && !isDenied(tc.result?.error);
446110
- if (isError && errorsExpanded && fullError.length > 0) {
446111
- let t23;
446112
- if ($5[5] !== fullError) {
446113
- t23 = fullError.length > 120 ? `${fullError.slice(0, 117)}\u2026` : fullError;
446114
- $5[5] = fullError;
446115
- $5[6] = t23;
446116
- } else {
446117
- t23 = $5[6];
446252
+ if (connectorChar) {
446253
+ const origStatus = props.statusContent;
446254
+ let t33;
446255
+ if ($5[14] !== connectorChar || $5[15] !== t2.textFaint) {
446256
+ t33 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
446257
+ fg: t2.textFaint,
446258
+ children: connectorChar
446259
+ }, undefined, false, undefined, this);
446260
+ $5[14] = connectorChar;
446261
+ $5[15] = t2.textFaint;
446262
+ $5[16] = t33;
446263
+ } else {
446264
+ t33 = $5[16];
446265
+ }
446266
+ props.statusContent = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(import_jsx_dev_runtime2.Fragment, {
446267
+ children: [
446268
+ t33,
446269
+ origStatus
446270
+ ]
446271
+ }, undefined, true, undefined, this);
446118
446272
  }
446119
- const errorPreview = t23;
446120
- const hasMore = fullError.length > 120;
446121
- let t3;
446122
- if ($5[7] !== props) {
446123
- t3 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(StaticToolRow, {
446124
- ...props
446125
- }, undefined, false, undefined, this);
446126
- $5[7] = props;
446127
- $5[8] = t3;
446273
+ inTree = !!treePosition;
446274
+ const hasExpandedContent = inTree && (!!props.diff || props.imageArt && props.imageArt.length > 0);
446275
+ const fullError = tc.result?.error ?? "";
446276
+ let t32;
446277
+ if ($5[17] !== tc.result) {
446278
+ t32 = !!tc.result && !tc.result.success && !isDenied(tc.result?.error);
446279
+ $5[17] = tc.result;
446280
+ $5[18] = t32;
446128
446281
  } else {
446129
- t3 = $5[8];
446282
+ t32 = $5[18];
446130
446283
  }
446284
+ const isError = t32;
446285
+ showErrorDetail = isError && errorsExpanded && fullError.length > 0;
446131
446286
  let t4;
446132
- if ($5[9] !== hasMore || $5[10] !== t2.textMuted) {
446133
- t4 = hasMore ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
446134
- fg: t2.textMuted,
446135
- children: " /errors for full"
446136
- }, undefined, false, undefined, this) : null;
446137
- $5[9] = hasMore;
446138
- $5[10] = t2.textMuted;
446139
- $5[11] = t4;
446287
+ if ($5[19] !== fullError || $5[20] !== showErrorDetail || $5[21] !== t2) {
446288
+ t4 = showErrorDetail ? (() => {
446289
+ const errorPreview = fullError.length > 120 ? `${fullError.slice(0, 117)}\u2026` : fullError;
446290
+ const hasMore = fullError.length > 120;
446291
+ return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
446292
+ paddingLeft: 3,
446293
+ height: 1,
446294
+ flexShrink: 0,
446295
+ children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
446296
+ truncate: true,
446297
+ fg: t2.error,
446298
+ children: [
446299
+ errorPreview,
446300
+ hasMore ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
446301
+ fg: t2.textMuted,
446302
+ children: " /errors for full"
446303
+ }, undefined, false, undefined, this) : null
446304
+ ]
446305
+ }, undefined, true, undefined, this)
446306
+ }, undefined, false, undefined, this);
446307
+ })() : null;
446308
+ $5[19] = fullError;
446309
+ $5[20] = showErrorDetail;
446310
+ $5[21] = t2;
446311
+ $5[22] = t4;
446140
446312
  } else {
446141
- t4 = $5[11];
446313
+ t4 = $5[22];
446142
446314
  }
446143
- let t5;
446144
- if ($5[12] !== errorPreview || $5[13] !== t2.error || $5[14] !== t4) {
446145
- t5 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
446146
- paddingLeft: 3,
446147
- height: 1,
446148
- flexShrink: 0,
446149
- children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
446150
- truncate: true,
446151
- fg: t2.error,
446315
+ errorContent = t4;
446316
+ diffContent = hasExpandedContent && props.diff ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
446317
+ marginTop: 1,
446318
+ flexDirection: "column",
446319
+ children: [
446320
+ /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(DiffView, {
446321
+ filePath: props.diff.path,
446322
+ oldString: props.diff.oldString,
446323
+ newString: props.diff.newString,
446324
+ success: props.diff.success,
446325
+ errorMessage: props.diff.errorMessage,
446326
+ mode: effectiveDiffStyle
446327
+ }, undefined, false, undefined, this),
446328
+ props.diff.impact ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
446329
+ fg: t2.textMuted,
446152
446330
  children: [
446153
- errorPreview,
446154
- t4
446331
+ " ",
446332
+ /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
446333
+ fg: t2.amber,
446334
+ children: icon("impact")
446335
+ }, undefined, false, undefined, this),
446336
+ /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
446337
+ fg: t2.textSecondary,
446338
+ children: [
446339
+ " ",
446340
+ props.diff.impact
446341
+ ]
446342
+ }, undefined, true, undefined, this)
446155
446343
  ]
446156
- }, undefined, true, undefined, this)
446344
+ }, undefined, true, undefined, this) : null
446345
+ ]
446346
+ }, undefined, true, undefined, this) : null;
446347
+ t22 = hasExpandedContent && props.imageArt && props.imageArt.length > 0 ? props.imageArt.map(_temp26) : null;
446348
+ $5[0] = autoCompactDiffs;
446349
+ $5[1] = connectorChar;
446350
+ $5[2] = diffStyle;
446351
+ $5[3] = errorsExpanded;
446352
+ $5[4] = expanded;
446353
+ $5[5] = t2;
446354
+ $5[6] = tc;
446355
+ $5[7] = treePosition;
446356
+ $5[8] = diffContent;
446357
+ $5[9] = errorContent;
446358
+ $5[10] = inTree;
446359
+ $5[11] = props;
446360
+ $5[12] = showErrorDetail;
446361
+ $5[13] = t22;
446362
+ } else {
446363
+ diffContent = $5[8];
446364
+ errorContent = $5[9];
446365
+ inTree = $5[10];
446366
+ props = $5[11];
446367
+ showErrorDetail = $5[12];
446368
+ t22 = $5[13];
446369
+ }
446370
+ const imageContent = t22;
446371
+ const needsContinuation = diffContent || imageContent || inTree && errorContent;
446372
+ if (needsContinuation) {
446373
+ let t32;
446374
+ if ($5[23] !== props) {
446375
+ t32 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(StaticToolRow, {
446376
+ ...props,
446377
+ suppressExpanded: true
446157
446378
  }, undefined, false, undefined, this);
446158
- $5[12] = errorPreview;
446159
- $5[13] = t2.error;
446160
- $5[14] = t4;
446161
- $5[15] = t5;
446379
+ $5[23] = props;
446380
+ $5[24] = t32;
446162
446381
  } else {
446163
- t5 = $5[15];
446382
+ t32 = $5[24];
446164
446383
  }
446384
+ let t4;
446385
+ if ($5[25] === Symbol.for("react.memo_cache_sentinel")) {
446386
+ t4 = ["left"];
446387
+ $5[25] = t4;
446388
+ } else {
446389
+ t4 = $5[25];
446390
+ }
446391
+ const t5 = treePosition?.isLast ? TREE_SPACE : TREE_PIPE;
446165
446392
  let t6;
446166
- if ($5[16] !== t3 || $5[17] !== t5) {
446393
+ if ($5[26] !== diffContent || $5[27] !== errorContent || $5[28] !== imageContent) {
446167
446394
  t6 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
446395
+ flexDirection: "column",
446396
+ children: [
446397
+ diffContent,
446398
+ imageContent,
446399
+ errorContent
446400
+ ]
446401
+ }, undefined, true, undefined, this);
446402
+ $5[26] = diffContent;
446403
+ $5[27] = errorContent;
446404
+ $5[28] = imageContent;
446405
+ $5[29] = t6;
446406
+ } else {
446407
+ t6 = $5[29];
446408
+ }
446409
+ let t7;
446410
+ if ($5[30] !== t2.textFaint || $5[31] !== t5 || $5[32] !== t6) {
446411
+ t7 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
446412
+ border: t4,
446413
+ customBorderChars: t5,
446414
+ borderColor: t2.textFaint,
446415
+ paddingLeft: 1,
446416
+ children: t6
446417
+ }, undefined, false, undefined, this);
446418
+ $5[30] = t2.textFaint;
446419
+ $5[31] = t5;
446420
+ $5[32] = t6;
446421
+ $5[33] = t7;
446422
+ } else {
446423
+ t7 = $5[33];
446424
+ }
446425
+ let t8;
446426
+ if ($5[34] !== t32 || $5[35] !== t7) {
446427
+ t8 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
446168
446428
  flexDirection: "column",
446169
446429
  flexShrink: 0,
446170
446430
  children: [
446171
- t3,
446172
- t5
446431
+ t32,
446432
+ t7
446173
446433
  ]
446174
446434
  }, undefined, true, undefined, this);
446175
- $5[16] = t3;
446176
- $5[17] = t5;
446177
- $5[18] = t6;
446435
+ $5[34] = t32;
446436
+ $5[35] = t7;
446437
+ $5[36] = t8;
446178
446438
  } else {
446179
- t6 = $5[18];
446439
+ t8 = $5[36];
446180
446440
  }
446181
- return t6;
446441
+ return t8;
446182
446442
  }
446183
- let t22;
446184
- if ($5[19] !== props) {
446185
- t22 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(StaticToolRow, {
446443
+ if (showErrorDetail) {
446444
+ let t32;
446445
+ if ($5[37] !== props) {
446446
+ t32 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(StaticToolRow, {
446447
+ ...props
446448
+ }, undefined, false, undefined, this);
446449
+ $5[37] = props;
446450
+ $5[38] = t32;
446451
+ } else {
446452
+ t32 = $5[38];
446453
+ }
446454
+ let t4;
446455
+ if ($5[39] !== errorContent || $5[40] !== t32) {
446456
+ t4 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
446457
+ flexDirection: "column",
446458
+ flexShrink: 0,
446459
+ children: [
446460
+ t32,
446461
+ errorContent
446462
+ ]
446463
+ }, undefined, true, undefined, this);
446464
+ $5[39] = errorContent;
446465
+ $5[40] = t32;
446466
+ $5[41] = t4;
446467
+ } else {
446468
+ t4 = $5[41];
446469
+ }
446470
+ return t4;
446471
+ }
446472
+ let t3;
446473
+ if ($5[42] !== props) {
446474
+ t3 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(StaticToolRow, {
446186
446475
  ...props
446187
446476
  }, undefined, false, undefined, this);
446188
- $5[19] = props;
446189
- $5[20] = t22;
446477
+ $5[42] = props;
446478
+ $5[43] = t3;
446190
446479
  } else {
446191
- t22 = $5[20];
446480
+ t3 = $5[43];
446192
446481
  }
446193
- return t22;
446482
+ return t3;
446483
+ }
446484
+ function _temp26(img) {
446485
+ return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
446486
+ flexDirection: "column",
446487
+ marginTop: 1,
446488
+ children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("ghostty-terminal", {
446489
+ ansi: img.lines.join(`
446490
+ `),
446491
+ cols: 130,
446492
+ rows: img.lines.length,
446493
+ trimEnd: true
446494
+ }, undefined, false, undefined, this)
446495
+ }, img.name, false, undefined, this);
446194
446496
  }
446195
446497
  function CollapsedToolGroup(t0) {
446196
- const $5 = import_compiler_runtime18.c(13);
446498
+ const $5 = import_compiler_runtime18.c(17);
446197
446499
  const {
446198
- calls
446500
+ calls,
446501
+ connectorChar
446199
446502
  } = t0;
446200
446503
  const t2 = useTheme();
446201
446504
  const count = calls.length;
446202
- const allOk = calls.every(_temp26);
446203
- const t1 = allOk ? t2.success : t2.error;
446204
- const t22 = allOk ? "\u2713" : "\u2717";
446205
- let t3;
446206
- if ($5[0] !== t1 || $5[1] !== t22) {
446207
- t3 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
446208
- fg: t1,
446505
+ const allOk = calls.every(_temp36);
446506
+ let t1;
446507
+ if ($5[0] !== connectorChar || $5[1] !== t2.textFaint) {
446508
+ t1 = connectorChar ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
446509
+ fg: t2.textFaint,
446510
+ children: connectorChar
446511
+ }, undefined, false, undefined, this) : null;
446512
+ $5[0] = connectorChar;
446513
+ $5[1] = t2.textFaint;
446514
+ $5[2] = t1;
446515
+ } else {
446516
+ t1 = $5[2];
446517
+ }
446518
+ const t22 = allOk ? t2.success : t2.error;
446519
+ const t3 = allOk ? "\u2713" : "\u2717";
446520
+ let t4;
446521
+ if ($5[3] !== t22 || $5[4] !== t3) {
446522
+ t4 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
446523
+ fg: t22,
446209
446524
  children: [
446210
- t22,
446525
+ t3,
446211
446526
  " "
446212
446527
  ]
446213
446528
  }, undefined, true, undefined, this);
446214
- $5[0] = t1;
446215
- $5[1] = t22;
446216
- $5[2] = t3;
446529
+ $5[3] = t22;
446530
+ $5[4] = t3;
446531
+ $5[5] = t4;
446217
446532
  } else {
446218
- t3 = $5[2];
446533
+ t4 = $5[5];
446219
446534
  }
446220
- const t4 = t2.textSecondary;
446221
- const t5 = String(count);
446222
- const t6 = count > 1 ? "s" : "";
446223
- let t7;
446224
- if ($5[3] !== calls) {
446225
- t7 = calls.map(_temp36).join(", ");
446226
- $5[3] = calls;
446227
- $5[4] = t7;
446535
+ const t5 = t2.textSecondary;
446536
+ const t6 = String(count);
446537
+ const t7 = count > 1 ? "s" : "";
446538
+ let t8;
446539
+ if ($5[6] !== calls) {
446540
+ t8 = calls.map(_temp44).join(", ");
446541
+ $5[6] = calls;
446542
+ $5[7] = t8;
446228
446543
  } else {
446229
- t7 = $5[4];
446544
+ t8 = $5[7];
446230
446545
  }
446231
- let t8;
446232
- if ($5[5] !== t2.textSecondary || $5[6] !== t5 || $5[7] !== t6 || $5[8] !== t7) {
446233
- t8 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
446234
- fg: t4,
446546
+ let t9;
446547
+ if ($5[8] !== t2.textSecondary || $5[9] !== t6 || $5[10] !== t7 || $5[11] !== t8) {
446548
+ t9 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
446549
+ fg: t5,
446235
446550
  children: [
446236
- t5,
446237
- " tool call",
446238
446551
  t6,
446239
- " (",
446552
+ " tool call",
446240
446553
  t7,
446554
+ " (",
446555
+ t8,
446241
446556
  ")"
446242
446557
  ]
446243
446558
  }, undefined, true, undefined, this);
446244
- $5[5] = t2.textSecondary;
446245
- $5[6] = t5;
446246
- $5[7] = t6;
446247
- $5[8] = t7;
446248
- $5[9] = t8;
446559
+ $5[8] = t2.textSecondary;
446560
+ $5[9] = t6;
446561
+ $5[10] = t7;
446562
+ $5[11] = t8;
446563
+ $5[12] = t9;
446249
446564
  } else {
446250
- t8 = $5[9];
446565
+ t9 = $5[12];
446251
446566
  }
446252
- let t9;
446253
- if ($5[10] !== t3 || $5[11] !== t8) {
446254
- t9 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
446567
+ let t10;
446568
+ if ($5[13] !== t1 || $5[14] !== t4 || $5[15] !== t9) {
446569
+ t10 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
446255
446570
  height: 1,
446256
446571
  flexShrink: 0,
446257
446572
  children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
446258
446573
  truncate: true,
446259
446574
  children: [
446260
- t3,
446261
- t8
446575
+ t1,
446576
+ t4,
446577
+ t9
446262
446578
  ]
446263
446579
  }, undefined, true, undefined, this)
446264
446580
  }, undefined, false, undefined, this);
446265
- $5[10] = t3;
446266
- $5[11] = t8;
446267
- $5[12] = t9;
446581
+ $5[13] = t1;
446582
+ $5[14] = t4;
446583
+ $5[15] = t9;
446584
+ $5[16] = t10;
446268
446585
  } else {
446269
- t9 = $5[12];
446586
+ t10 = $5[16];
446270
446587
  }
446271
- return t9;
446588
+ return t10;
446272
446589
  }
446273
- function _temp36(tc_0) {
446590
+ function _temp44(tc_0) {
446274
446591
  return TOOL_LABELS[tc_0.name] ?? tc_0.name;
446275
446592
  }
446276
- function _temp26(tc) {
446593
+ function _temp36(tc) {
446277
446594
  return tc.result?.success;
446278
446595
  }
446279
446596
  function parsePlanFromArgs(tc) {
@@ -446301,9 +446618,11 @@ function parsePlanResult(tc) {
446301
446618
  }
446302
446619
  }
446303
446620
  function WritePlanCall(t0) {
446304
- const $5 = import_compiler_runtime18.c(22);
446621
+ const $5 = import_compiler_runtime18.c(37);
446305
446622
  const {
446306
- tc
446623
+ tc,
446624
+ connectorChar,
446625
+ treePosition
446307
446626
  } = t0;
446308
446627
  const t2 = useTheme();
446309
446628
  let t1;
@@ -446349,37 +446668,41 @@ function WritePlanCall(t0) {
446349
446668
  import_react39.useEffect(t3, t4);
446350
446669
  if (!plan) {
446351
446670
  let t52;
446352
- if ($5[7] !== tc) {
446671
+ if ($5[7] !== connectorChar || $5[8] !== tc || $5[9] !== treePosition) {
446353
446672
  t52 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(ToolCallRow, {
446354
- tc
446673
+ tc,
446674
+ connectorChar,
446675
+ treePosition
446355
446676
  }, undefined, false, undefined, this);
446356
- $5[7] = tc;
446357
- $5[8] = t52;
446677
+ $5[7] = connectorChar;
446678
+ $5[8] = tc;
446679
+ $5[9] = treePosition;
446680
+ $5[10] = t52;
446358
446681
  } else {
446359
- t52 = $5[8];
446682
+ t52 = $5[10];
446360
446683
  }
446361
446684
  return t52;
446362
446685
  }
446363
446686
  const hasResult = !!resultStr;
446364
446687
  const collapsed = hasResult && !expanded;
446365
446688
  let t5;
446366
- if ($5[9] !== collapsed || $5[10] !== plan || $5[11] !== planFile || $5[12] !== resultStr) {
446689
+ if ($5[11] !== collapsed || $5[12] !== plan || $5[13] !== planFile || $5[14] !== resultStr) {
446367
446690
  t5 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(StructuredPlanView, {
446368
446691
  plan,
446369
446692
  result: resultStr,
446370
446693
  planFile,
446371
446694
  collapsed
446372
446695
  }, undefined, false, undefined, this);
446373
- $5[9] = collapsed;
446374
- $5[10] = plan;
446375
- $5[11] = planFile;
446376
- $5[12] = resultStr;
446377
- $5[13] = t5;
446696
+ $5[11] = collapsed;
446697
+ $5[12] = plan;
446698
+ $5[13] = planFile;
446699
+ $5[14] = resultStr;
446700
+ $5[15] = t5;
446378
446701
  } else {
446379
- t5 = $5[13];
446702
+ t5 = $5[15];
446380
446703
  }
446381
446704
  let t6;
446382
- if ($5[14] !== collapsed || $5[15] !== markdown || $5[16] !== resultStr || $5[17] !== t2) {
446705
+ if ($5[16] !== collapsed || $5[17] !== markdown || $5[18] !== resultStr || $5[19] !== t2) {
446383
446706
  t6 = !collapsed && markdown && !resultStr?.includes("cancelled") && /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
446384
446707
  flexDirection: "column",
446385
446708
  flexShrink: 0,
@@ -446392,29 +446715,101 @@ function WritePlanCall(t0) {
446392
446715
  text: markdown
446393
446716
  }, undefined, false, undefined, this)
446394
446717
  }, undefined, false, undefined, this);
446395
- $5[14] = collapsed;
446396
- $5[15] = markdown;
446397
- $5[16] = resultStr;
446398
- $5[17] = t2;
446399
- $5[18] = t6;
446718
+ $5[16] = collapsed;
446719
+ $5[17] = markdown;
446720
+ $5[18] = resultStr;
446721
+ $5[19] = t2;
446722
+ $5[20] = t6;
446400
446723
  } else {
446401
- t6 = $5[18];
446724
+ t6 = $5[20];
446402
446725
  }
446403
446726
  let t7;
446404
- if ($5[19] !== t5 || $5[20] !== t6) {
446727
+ if ($5[21] !== t5 || $5[22] !== t6) {
446405
446728
  t7 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(import_jsx_dev_runtime2.Fragment, {
446406
446729
  children: [
446407
446730
  t5,
446408
446731
  t6
446409
446732
  ]
446410
446733
  }, undefined, true, undefined, this);
446411
- $5[19] = t5;
446412
- $5[20] = t6;
446413
- $5[21] = t7;
446734
+ $5[21] = t5;
446735
+ $5[22] = t6;
446736
+ $5[23] = t7;
446414
446737
  } else {
446415
- t7 = $5[21];
446738
+ t7 = $5[23];
446416
446739
  }
446417
- return t7;
446740
+ const planContent = t7;
446741
+ if (connectorChar && treePosition) {
446742
+ let t8;
446743
+ if ($5[24] !== connectorChar || $5[25] !== t2.textFaint) {
446744
+ t8 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
446745
+ height: 1,
446746
+ flexShrink: 0,
446747
+ children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
446748
+ children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
446749
+ fg: t2.textFaint,
446750
+ children: connectorChar
446751
+ }, undefined, false, undefined, this)
446752
+ }, undefined, false, undefined, this)
446753
+ }, undefined, false, undefined, this);
446754
+ $5[24] = connectorChar;
446755
+ $5[25] = t2.textFaint;
446756
+ $5[26] = t8;
446757
+ } else {
446758
+ t8 = $5[26];
446759
+ }
446760
+ let t9;
446761
+ if ($5[27] === Symbol.for("react.memo_cache_sentinel")) {
446762
+ t9 = ["left"];
446763
+ $5[27] = t9;
446764
+ } else {
446765
+ t9 = $5[27];
446766
+ }
446767
+ const t10 = treePosition.isLast ? TREE_SPACE : TREE_PIPE;
446768
+ let t11;
446769
+ if ($5[28] !== planContent) {
446770
+ t11 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
446771
+ flexDirection: "column",
446772
+ children: planContent
446773
+ }, undefined, false, undefined, this);
446774
+ $5[28] = planContent;
446775
+ $5[29] = t11;
446776
+ } else {
446777
+ t11 = $5[29];
446778
+ }
446779
+ let t12;
446780
+ if ($5[30] !== t2.textFaint || $5[31] !== t10 || $5[32] !== t11) {
446781
+ t12 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
446782
+ border: t9,
446783
+ customBorderChars: t10,
446784
+ borderColor: t2.textFaint,
446785
+ paddingLeft: 1,
446786
+ children: t11
446787
+ }, undefined, false, undefined, this);
446788
+ $5[30] = t2.textFaint;
446789
+ $5[31] = t10;
446790
+ $5[32] = t11;
446791
+ $5[33] = t12;
446792
+ } else {
446793
+ t12 = $5[33];
446794
+ }
446795
+ let t13;
446796
+ if ($5[34] !== t12 || $5[35] !== t8) {
446797
+ t13 = /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
446798
+ flexDirection: "column",
446799
+ children: [
446800
+ t8,
446801
+ t12
446802
+ ]
446803
+ }, undefined, true, undefined, this);
446804
+ $5[34] = t12;
446805
+ $5[35] = t8;
446806
+ $5[36] = t13;
446807
+ } else {
446808
+ t13 = $5[36];
446809
+ }
446810
+ return t13;
446811
+ }
446812
+ return planContent;
446418
446813
  }
446419
446814
  function truncateUserContent(content, expanded, t2) {
446420
446815
  const lines = content.split(`
@@ -446457,21 +446852,35 @@ function parsePlanTitle(content) {
446457
446852
  return match2?.[1] ?? "Plan";
446458
446853
  }
446459
446854
  function renderSegments(segments, toolCallMap, diffStyle = "default", autoCompactDiffs = false, showReasoning = true, reasoningExpanded = false, t2 = getThemeTokens()) {
446855
+ const merged = [];
446856
+ for (const seg of segments) {
446857
+ if (seg.type === "text" && seg.content.trim() === "")
446858
+ continue;
446859
+ const prev = merged[merged.length - 1];
446860
+ if (seg.type === "tools" && prev?.type === "tools") {
446861
+ prev.toolCallIds.push(...seg.toolCallIds);
446862
+ } else {
446863
+ merged.push(seg.type === "tools" ? {
446864
+ ...seg,
446865
+ toolCallIds: [...seg.toolCallIds]
446866
+ } : seg);
446867
+ }
446868
+ }
446460
446869
  let firstToolsIdx = -1;
446461
- for (let k5 = 0;k5 < segments.length; k5++) {
446462
- if (segments[k5]?.type === "tools") {
446870
+ for (let k5 = 0;k5 < merged.length; k5++) {
446871
+ if (merged[k5]?.type === "tools") {
446463
446872
  firstToolsIdx = k5;
446464
446873
  break;
446465
446874
  }
446466
446875
  }
446467
446876
  let lastVisibleType = null;
446468
- return segments.map((seg, i4) => {
446877
+ return merged.map((seg, i4) => {
446469
446878
  if (seg.type === "reasoning" && !showReasoning)
446470
446879
  return null;
446471
446880
  const needsGap = lastVisibleType !== null && lastVisibleType !== seg.type;
446472
446881
  lastVisibleType = seg.type;
446473
446882
  if (seg.type === "text") {
446474
- const isLastSegment = i4 === segments.length - 1;
446883
+ const isLastSegment = i4 === merged.length - 1;
446475
446884
  const hasToolsBefore = firstToolsIdx >= 0 && firstToolsIdx < i4;
446476
446885
  const isFinalAnswer = isLastSegment && hasToolsBefore && seg.content.trim().length > 20;
446477
446886
  return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
@@ -446605,14 +447014,22 @@ function renderSegments(segments, toolCallMap, diffStyle = "default", autoCompac
446605
447014
  if (calls.length === 0)
446606
447015
  return null;
446607
447016
  const groups = groupToolCalls(calls);
447017
+ const totalItems = groups.length;
447018
+ const useTree = totalItems >= 2;
446608
447019
  const toolsKey = `tools-${seg.toolCallIds[0] ?? String(i4)}`;
446609
447020
  return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
446610
447021
  flexDirection: "column",
446611
447022
  marginTop: needsGap ? 1 : 0,
446612
447023
  children: groups.map((g3, gi) => {
447024
+ const treePos = useTree ? {
447025
+ isFirst: gi === 0,
447026
+ isLast: gi === totalItems - 1
447027
+ } : undefined;
447028
+ const connChar = treePos ? treePos.isLast ? "\u2514 " : treePos.isFirst ? "\u250C " : "\u251C " : undefined;
446613
447029
  if (g3.type === "meta") {
446614
447030
  return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(CollapsedToolGroup, {
446615
- calls: g3.calls
447031
+ calls: g3.calls,
447032
+ connectorChar: connChar
446616
447033
  }, `meta-${String(gi)}`, false, undefined, this);
446617
447034
  }
446618
447035
  if (g3.type === "batch") {
@@ -446650,6 +447067,10 @@ function renderSegments(segments, toolCallMap, diffStyle = "default", autoCompac
446650
447067
  children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
446651
447068
  truncate: true,
446652
447069
  children: [
447070
+ connChar ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
447071
+ fg: t2.textFaint,
447072
+ children: connChar
447073
+ }, undefined, false, undefined, this) : null,
446653
447074
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
446654
447075
  fg: statusColor,
446655
447076
  children: [
@@ -446688,18 +447109,22 @@ function renderSegments(segments, toolCallMap, diffStyle = "default", autoCompac
446688
447109
  return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
446689
447110
  flexDirection: "column",
446690
447111
  children: g3.tc.name === "write_plan" || g3.tc.name === "plan" ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(WritePlanCall, {
446691
- tc: g3.tc
447112
+ tc: g3.tc,
447113
+ connectorChar: connChar,
447114
+ treePosition: treePos
446692
447115
  }, undefined, false, undefined, this) : /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(ToolCallRow, {
446693
447116
  tc: g3.tc,
446694
447117
  diffStyle,
446695
- autoCompactDiffs
447118
+ autoCompactDiffs,
447119
+ connectorChar: connChar,
447120
+ treePosition: treePos
446696
447121
  }, undefined, false, undefined, this)
446697
447122
  }, g3.tc.id, false, undefined, this);
446698
447123
  })
446699
447124
  }, toolsKey, false, undefined, this);
446700
447125
  });
446701
447126
  }
446702
- function _temp44(tc_0) {
447127
+ function _temp53(tc_0) {
446703
447128
  return tc_0.name !== "task_list" && tc_0.name !== "update_plan_step";
446704
447129
  }
446705
447130
  var import_compiler_runtime18, import_react39, ReasoningExpandedContext, ReasoningExpandedProvider, REVEAL_INTERVAL = 30, MAX_REVEAL_STEPS = 15, CURSOR_CHAR = "\u2588", RAIL_BORDER, TRUNCATE_THRESHOLD = 10, TRUNCATE_HEAD = 4, TRUNCATE_TAIL = 4, UserMessageAccent, UserMessageBubble, AssistantMessage, StaticMessage, MessageList;
@@ -446714,8 +447139,10 @@ var init_MessageList = __esm(async () => {
446714
447139
  await __promiseAll([
446715
447140
  init_core4(),
446716
447141
  init_StructuredPlanView(),
447142
+ init_DiffView(),
446717
447143
  init_Markdown(),
446718
- init_StaticToolRow()
447144
+ init_StaticToolRow(),
447145
+ init_ToolCallDisplay()
446719
447146
  ]);
446720
447147
  import_compiler_runtime18 = __toESM(require_compiler_runtime(), 1);
446721
447148
  import_react39 = __toESM(require_react(), 1);
@@ -447230,7 +447657,7 @@ var init_MessageList = __esm(async () => {
447230
447657
  }, undefined, false, undefined, this),
447231
447658
  hasTools && /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
447232
447659
  flexDirection: "column",
447233
- children: msg.toolCalls?.filter(_temp44).map((tc_1) => /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
447660
+ children: msg.toolCalls?.filter(_temp53).map((tc_1) => /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
447234
447661
  flexDirection: "column",
447235
447662
  children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(ToolCallRow, {
447236
447663
  tc: tc_1,
@@ -450396,7 +450823,7 @@ function StatusLine(t0) {
450396
450823
  let t3;
450397
450824
  let t4;
450398
450825
  if ($5[0] !== providers || $5[1] !== tk.textMuted || $5[2] !== tk.warning) {
450399
- const names = providers.slice(0, 4).map(_temp53);
450826
+ const names = providers.slice(0, 4).map(_temp54);
450400
450827
  const overflow = providers.length > 4 ? providers.length - 4 : 0;
450401
450828
  t1 = "row";
450402
450829
  t2 = 0;
@@ -450467,7 +450894,7 @@ function StatusLine(t0) {
450467
450894
  }
450468
450895
  return t6;
450469
450896
  }
450470
- function _temp53(p2) {
450897
+ function _temp54(p2) {
450471
450898
  return p2.name.toLowerCase();
450472
450899
  }
450473
450900
  function IndexingStatus() {
@@ -451700,7 +452127,7 @@ function _temp313(s2) {
451700
452127
  function _temp48(m_1) {
451701
452128
  return m_1.role !== "system" || m_1.showInChat;
451702
452129
  }
451703
- function _temp54() {}
452130
+ function _temp55() {}
451704
452131
  var import_compiler_runtime30, import_react55, MAX_RENDERED = 60, SCROLLBOX_STYLE, SCROLLBAR_HIDDEN, TabInstance;
451705
452132
  var init_TabInstance = __esm(async () => {
451706
452133
  init_shallow2();
@@ -452331,7 +452758,7 @@ var init_TabInstance = __esm(async () => {
452331
452758
  if ($5[119] !== chat.sessionId || $5[120] !== cwd2) {
452332
452759
  t43 = () => {
452333
452760
  const p_0 = join44(cwd2, ".soulforge", "plans", planFileName(chat.sessionId));
452334
- unlink3(p_0).catch(_temp54);
452761
+ unlink3(p_0).catch(_temp55);
452335
452762
  };
452336
452763
  $5[119] = chat.sessionId;
452337
452764
  $5[120] = cwd2;
@@ -453706,7 +454133,7 @@ function CompactionLog(t0) {
453706
454133
  onClose
453707
454134
  } = t0;
453708
454135
  useTheme();
453709
- const storeEntries = useCompactionLogStore(_temp55);
454136
+ const storeEntries = useCompactionLogStore(_temp56);
453710
454137
  let t1;
453711
454138
  if ($5[0] !== storeEntries) {
453712
454139
  t1 = [...storeEntries].sort(_temp216).map(_temp315);
@@ -453741,7 +454168,7 @@ function _temp315(e) {
453741
454168
  function _temp216(a2, b5) {
453742
454169
  return b5.timestamp - a2.timestamp;
453743
454170
  }
453744
- function _temp55(s2) {
454171
+ function _temp56(s2) {
453745
454172
  return s2.entries;
453746
454173
  }
453747
454174
  var import_compiler_runtime33, COMPACTION_CONFIG;
@@ -453945,7 +454372,7 @@ function ErrorLog(t0) {
453945
454372
  onClose
453946
454373
  } = t0;
453947
454374
  useTheme();
453948
- const bgErrors = useErrorStore(_temp57);
454375
+ const bgErrors = useErrorStore(_temp58);
453949
454376
  let t1;
453950
454377
  if ($5[0] !== bgErrors || $5[1] !== messages) {
453951
454378
  const chatEntries = extractLogEntries(messages);
@@ -453999,7 +454426,7 @@ function _temp217(e) {
453999
454426
  detail: e.message
454000
454427
  };
454001
454428
  }
454002
- function _temp57(s2) {
454429
+ function _temp58(s2) {
454003
454430
  return s2.errors;
454004
454431
  }
454005
454432
  var import_compiler_runtime34;
@@ -454195,7 +454622,7 @@ function HelpPopup(t0) {
454195
454622
  return;
454196
454623
  }
454197
454624
  if (evt.name === "up") {
454198
- setScrollOffset(_temp58);
454625
+ setScrollOffset(_temp59);
454199
454626
  return;
454200
454627
  }
454201
454628
  if (evt.name === "down") {
@@ -454526,7 +454953,7 @@ function HelpPopup(t0) {
454526
454953
  }
454527
454954
  return t29;
454528
454955
  }
454529
- function _temp58(prev) {
454956
+ function _temp59(prev) {
454530
454957
  return Math.max(0, prev - 1);
454531
454958
  }
454532
454959
  var import_compiler_runtime35, import_react61, MAX_POPUP_WIDTH = 88, CHROME_ROWS2 = 6;
@@ -454617,7 +455044,7 @@ function ApiKeySettings(t0) {
454617
455044
  const innerW = popupWidth - 2;
454618
455045
  const maxVisible = Math.max(4, Math.floor((termRows - 2) * 0.8) - CHROME_ROWS3);
454619
455046
  const t2 = useTheme();
454620
- const keys2 = useApiKeyStore(_temp59);
455047
+ const keys2 = useApiKeyStore(_temp60);
454621
455048
  const priority = useApiKeyStore(_temp218);
454622
455049
  const refresh = useApiKeyStore(_temp317);
454623
455050
  const [cursor, setCursor] = import_react63.useState(0);
@@ -455522,7 +455949,7 @@ function _temp317(s_1) {
455522
455949
  function _temp218(s_0) {
455523
455950
  return s_0.priority;
455524
455951
  }
455525
- function _temp59(s2) {
455952
+ function _temp60(s2) {
455526
455953
  return s2.keys;
455527
455954
  }
455528
455955
  var import_compiler_runtime36, import_react63, MAX_POPUP_WIDTH2 = 68, CHROME_ROWS3 = 12, PROVIDER_KEYS, useApiKeyStore, KEY_ITEMS;
@@ -455673,7 +456100,7 @@ function LspStatusPopup(t0) {
455673
456100
  }
455674
456101
  const popupHeight = Math.max(12, t3);
455675
456102
  const maxListVisible = Math.max(4, popupHeight - CHROME_ROWS4);
455676
- const bgErrors = useErrorStore(_temp60);
456103
+ const bgErrors = useErrorStore(_temp61);
455677
456104
  let t4;
455678
456105
  if ($5[5] !== bgErrors) {
455679
456106
  t4 = bgErrors.filter(_temp219);
@@ -455813,7 +456240,7 @@ function LspStatusPopup(t0) {
455813
456240
  return;
455814
456241
  }
455815
456242
  if (evt.name === "up") {
455816
- setDetailScroll(_temp56);
456243
+ setDetailScroll(_temp57);
455817
456244
  return;
455818
456245
  }
455819
456246
  if (evt.name === "down") {
@@ -456472,7 +456899,7 @@ function LspStatusPopup(t0) {
456472
456899
  }
456473
456900
  return t30;
456474
456901
  }
456475
- function _temp56(p2) {
456902
+ function _temp57(p2) {
456476
456903
  return Math.max(0, p2 - 1);
456477
456904
  }
456478
456905
  function _temp412() {}
@@ -456485,7 +456912,7 @@ function _temp318(s_0) {
456485
456912
  function _temp219(e) {
456486
456913
  return e.source.startsWith("LSP:");
456487
456914
  }
456488
- function _temp60(s2) {
456915
+ function _temp61(s2) {
456489
456916
  return s2.errors;
456490
456917
  }
456491
456918
  var import_compiler_runtime37, import_react65, CHROME_ROWS4 = 7, POLL_MS = 2000;
@@ -456522,7 +456949,7 @@ function SetupGuide(t0) {
456522
456949
  const innerW = popupWidth - 2;
456523
456950
  const maxVisible = Math.max(4, Math.floor(containerRows * 0.8) - CHROME_ROWS5);
456524
456951
  const t2 = useTheme();
456525
- const [statuses, setStatuses] = import_react67.useState(_temp61);
456952
+ const [statuses, setStatuses] = import_react67.useState(_temp64);
456526
456953
  const [cursor, setCursor] = import_react67.useState(0);
456527
456954
  const [scrollOffset, setScrollOffset] = import_react67.useState(0);
456528
456955
  const [installing, setInstalling] = import_react67.useState(null);
@@ -457295,7 +457722,7 @@ function _temp319(c) {
457295
457722
  function _temp220() {
457296
457723
  return detectInstalledFonts();
457297
457724
  }
457298
- function _temp61() {
457725
+ function _temp64() {
457299
457726
  return checkPrerequisites();
457300
457727
  }
457301
457728
  var import_compiler_runtime38, import_react67, MAX_POPUP_WIDTH3 = 74, CHROME_ROWS5 = 10;
@@ -457330,7 +457757,7 @@ function WebSearchSettings(t0) {
457330
457757
  const innerW = popupWidth - 2;
457331
457758
  const maxVisible = Math.max(4, Math.floor((termRows - 2) * 0.8) - CHROME_ROWS6);
457332
457759
  const t2 = useTheme();
457333
- const keys2 = useWebSearchStore(_temp64);
457760
+ const keys2 = useWebSearchStore(_temp66);
457334
457761
  const refresh = useWebSearchStore(_temp221);
457335
457762
  const [cursor, setCursor] = import_react69.useState(0);
457336
457763
  const [mode, setMode] = import_react69.useState("menu");
@@ -458331,7 +458758,7 @@ function _temp320(v_0) {
458331
458758
  function _temp221(s_0) {
458332
458759
  return s_0.refresh;
458333
458760
  }
458334
- function _temp64(s2) {
458761
+ function _temp66(s2) {
458335
458762
  return s2.keys;
458336
458763
  }
458337
458764
  var import_compiler_runtime39, import_react69, MAX_POPUP_WIDTH4 = 72, CHROME_ROWS6 = 10, useWebSearchStore, KEY_ITEMS2;
@@ -458380,7 +458807,7 @@ function SimpleModalLayer(t0) {
458380
458807
  messages,
458381
458808
  onSystemMessage
458382
458809
  } = t0;
458383
- const modalHelpPopup = useUIStore(_temp66);
458810
+ const modalHelpPopup = useUIStore(_temp67);
458384
458811
  const modalWebSearchSettings = useUIStore(_temp222);
458385
458812
  const modalApiKeySettings = useUIStore(_temp321);
458386
458813
  const modalSetup = useUIStore(_temp414);
@@ -458561,7 +458988,7 @@ function _temp321(s_1) {
458561
458988
  function _temp222(s_0) {
458562
458989
  return s_0.modals.webSearchSettings;
458563
458990
  }
458564
- function _temp66(s2) {
458991
+ function _temp67(s2) {
458565
458992
  return s2.modals.helpPopup;
458566
458993
  }
458567
458994
  var import_compiler_runtime40, closerCache, getCloser = (name21) => closerCache[name21] ??= () => useUIStore.getState().closeModal(name21);
@@ -458716,7 +459143,7 @@ function CommandPalette(t0) {
458716
459143
  } = usePopupScroll(maxVisible);
458717
459144
  let t22;
458718
459145
  if ($5[8] === Symbol.for("react.memo_cache_sentinel")) {
458719
- t22 = getCommandDefs().filter(_temp67);
459146
+ t22 = getCommandDefs().filter(_temp68);
458720
459147
  $5[8] = t22;
458721
459148
  } else {
458722
459149
  t22 = $5[8];
@@ -459279,7 +459706,7 @@ function _temp322(q_0) {
459279
459706
  function _temp223(q4) {
459280
459707
  return q4.slice(0, -1);
459281
459708
  }
459282
- function _temp67(d3) {
459709
+ function _temp68(d3) {
459283
459710
  return !d3.hidden;
459284
459711
  }
459285
459712
  function renderHighlightedCmd(cmd, indices, baseFg, hlFg, bg2, bold2) {
@@ -460228,7 +460655,7 @@ function DiagnosePopup(t0) {
460228
460655
  return;
460229
460656
  }
460230
460657
  if (evt.name === "up") {
460231
- setScrollOffset(_temp68);
460658
+ setScrollOffset(_temp69);
460232
460659
  return;
460233
460660
  }
460234
460661
  if (evt.name === "down") {
@@ -460566,7 +460993,7 @@ function DiagnosePopup(t0) {
460566
460993
  }
460567
460994
  return t30;
460568
460995
  }
460569
- function _temp68(prev) {
460996
+ function _temp69(prev) {
460570
460997
  return Math.max(0, prev - 1);
460571
460998
  }
460572
460999
  var import_compiler_runtime42, import_react75, CHROME_ROWS9 = 6, SPINNER;
@@ -461765,7 +462192,7 @@ function SetupStep(t0) {
461765
462192
  } = t0;
461766
462193
  let t1;
461767
462194
  if ($5[0] === Symbol.for("react.memo_cache_sentinel")) {
461768
- t1 = PROVIDERS.some(_temp69);
462195
+ t1 = PROVIDERS.some(_temp70);
461769
462196
  $5[0] = t1;
461770
462197
  } else {
461771
462198
  t1 = $5[0];
@@ -462574,7 +463001,7 @@ function _temp323(v_0) {
462574
463001
  function _temp224(n) {
462575
463002
  return n + 1;
462576
463003
  }
462577
- function _temp69(p2) {
463004
+ function _temp70(p2) {
462578
463005
  return hasKey(p2.id);
462579
463006
  }
462580
463007
  var import_compiler_runtime48, import_react82, PROVIDERS;
@@ -462837,7 +463264,7 @@ function ThemeStep(t0) {
462837
463264
  t1 = $5[0];
462838
463265
  }
462839
463266
  const themes = t1;
462840
- const currentName = useThemeStore(_temp70);
463267
+ const currentName = useThemeStore(_temp71);
462841
463268
  const isTransparent = useThemeStore(_temp225);
462842
463269
  let t22;
462843
463270
  if ($5[1] === Symbol.for("react.memo_cache_sentinel")) {
@@ -463376,7 +463803,7 @@ function _temp324(name21, tp, mOp, dOp, bdr) {
463376
463803
  function _temp225(s_0) {
463377
463804
  return s_0.tokens.bgApp === "transparent";
463378
463805
  }
463379
- function _temp70(s2) {
463806
+ function _temp71(s2) {
463380
463807
  return s2.name;
463381
463808
  }
463382
463809
  function OptionRow(t0) {
@@ -464045,7 +464472,7 @@ var init_WorkflowStep = __esm(async () => {
464045
464472
  });
464046
464473
 
464047
464474
  // src/components/modals/wizard/index.tsx
464048
- function _temp71(i4) {
464475
+ function _temp74(i4) {
464049
464476
  return i4 + 1;
464050
464477
  }
464051
464478
  function _temp226(i_0) {
@@ -464117,7 +464544,7 @@ var init_wizard = __esm(async () => {
464117
464544
  if ($5[3] !== onClose || $5[4] !== stepIdx) {
464118
464545
  t3 = () => {
464119
464546
  if (stepIdx < STEPS.length - 1) {
464120
- setStepIdx(_temp71);
464547
+ setStepIdx(_temp74);
464121
464548
  } else {
464122
464549
  onClose();
464123
464550
  }
@@ -464461,7 +464888,7 @@ function GitCommitModal(t0) {
464461
464888
  const lines = diff.split(`
464462
464889
  `).length;
464463
464890
  setDiffSummary(lines > 1 ? `${String(lines)} lines changed` : "no staged changes");
464464
- }).catch(_temp74);
464891
+ }).catch(_temp76);
464465
464892
  };
464466
464893
  t5 = [visible, cwd2];
464467
464894
  $5[3] = cwd2;
@@ -464941,7 +465368,7 @@ Co-Authored-By: SoulForge <noreply@soulforge.com>` : message.trim();
464941
465368
  function _temp227(prev) {
464942
465369
  return !prev;
464943
465370
  }
464944
- function _temp74() {}
465371
+ function _temp76() {}
464945
465372
  var import_compiler_runtime54, import_react91, MAX_POPUP_WIDTH7 = 64;
464946
465373
  var init_GitCommitModal = __esm(async () => {
464947
465374
  init_status();
@@ -465043,7 +465470,7 @@ function GitMenu(t0) {
465043
465470
  if (entries2.length === 0) {
465044
465471
  onSystemMessage("No commits found.");
465045
465472
  } else {
465046
- const logText = entries2.map(_temp76).join(`
465473
+ const logText = entries2.map(_temp77).join(`
465047
465474
  `);
465048
465475
  onSystemMessage(logText);
465049
465476
  }
@@ -465410,7 +465837,7 @@ function GitMenu(t0) {
465410
465837
  }
465411
465838
  return t23;
465412
465839
  }
465413
- function _temp76(e) {
465840
+ function _temp77(e) {
465414
465841
  return `${e.hash} ${e.subject} (${e.date})`;
465415
465842
  }
465416
465843
  var import_compiler_runtime55, import_react93, MAX_POPUP_WIDTH8 = 54, CHROME_ROWS11 = 7, MENU_ITEMS;
@@ -465506,7 +465933,7 @@ function InfoPopup(t0) {
465506
465933
  return;
465507
465934
  }
465508
465935
  if (evt.name === "up" || evt.name === "k") {
465509
- setScrollOffset(_temp77);
465936
+ setScrollOffset(_temp78);
465510
465937
  return;
465511
465938
  }
465512
465939
  if (evt.name === "down" || evt.name === "j") {
@@ -465890,7 +466317,7 @@ function InfoPopup(t0) {
465890
466317
  function _temp228(text3, max) {
465891
466318
  return text3.length > max ? `${text3.slice(0, max - 1)}\u2026` : text3;
465892
466319
  }
465893
- function _temp77(prev) {
466320
+ function _temp78(prev) {
465894
466321
  return Math.max(0, prev - 1);
465895
466322
  }
465896
466323
  var import_compiler_runtime56, import_react95, CHROME_ROWS12 = 6;
@@ -465924,7 +466351,7 @@ function useAllProviderModels(active) {
465924
466351
  t0 = $5[0];
465925
466352
  }
465926
466353
  const [providerData, setProviderData] = import_react96.useState(t0);
465927
- const [availability, setAvailability] = import_react96.useState(_temp78);
466354
+ const [availability, setAvailability] = import_react96.useState(_temp79);
465928
466355
  let t1;
465929
466356
  let t2;
465930
466357
  if ($5[1] !== active) {
@@ -466023,7 +466450,7 @@ function _temp325(p_0) {
466023
466450
  return p_0.loading;
466024
466451
  }
466025
466452
  function _temp229() {}
466026
- function _temp78() {
466453
+ function _temp79() {
466027
466454
  const cached2 = getCachedProviderStatuses();
466028
466455
  const map2 = new Map;
466029
466456
  if (cached2) {
@@ -466809,7 +467236,7 @@ function SessionPicker(t0) {
466809
467236
  return;
466810
467237
  }
466811
467238
  if (evt.name === "backspace" || evt.name === "delete") {
466812
- setQuery(_temp79);
467239
+ setQuery(_temp80);
466813
467240
  resetScroll();
466814
467241
  return;
466815
467242
  }
@@ -467412,7 +467839,7 @@ function _temp326(s_0, x4) {
467412
467839
  function _temp230(prev_3) {
467413
467840
  return `${prev_3} `;
467414
467841
  }
467415
- function _temp79(prev_1) {
467842
+ function _temp80(prev_1) {
467416
467843
  return prev_1.slice(0, -1);
467417
467844
  }
467418
467845
  var import_compiler_runtime58, import_react100, POPUP_CHROME = 8, COL_MSGS = 7, COL_SIZE = 7, COL_TIME = 11, COL_FIXED;
@@ -468542,7 +468969,7 @@ function UpdateModal(t0) {
468542
468969
  if (!visible || tick >= 12) {
468543
468970
  return;
468544
468971
  }
468545
- const timer = setInterval(() => setTick(_temp80), 60);
468972
+ const timer = setInterval(() => setTick(_temp81), 60);
468546
468973
  return () => clearInterval(timer);
468547
468974
  };
468548
468975
  t5 = [visible, tick];
@@ -471089,7 +471516,7 @@ function _temp327(i_0) {
471089
471516
  function _temp231(i4) {
471090
471517
  return i4 + 1;
471091
471518
  }
471092
- function _temp80(prev) {
471519
+ function _temp81(prev) {
471093
471520
  return prev + 1;
471094
471521
  }
471095
471522
  var import_compiler_runtime60, import_react104, UPGRADE_QUIPS, LATEST_QUIPS, SPINNER2, GHOST_FADE2, WISP, MAX_LOG = 50, BOLD5, ITALIC4, DIM4;
@@ -476457,7 +476884,7 @@ function ShutdownSplash(t0) {
476457
476884
  let t3;
476458
476885
  if ($5[2] === Symbol.for("react.memo_cache_sentinel")) {
476459
476886
  t2 = () => {
476460
- const timer = setInterval(() => setTick(_temp81), 80);
476887
+ const timer = setInterval(() => setTick(_temp83), 80);
476461
476888
  return () => clearInterval(timer);
476462
476889
  };
476463
476890
  t3 = [];
@@ -476654,7 +477081,7 @@ function ShutdownSplash(t0) {
476654
477081
  }
476655
477082
  return t14;
476656
477083
  }
476657
- function _temp81(t2) {
477084
+ function _temp83(t2) {
476658
477085
  return t2 + 1;
476659
477086
  }
476660
477087
  function nativeCopy(text3) {