@alpaca-editor/core 1.0.4149 → 1.0.4154

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.
@@ -79,9 +79,9 @@ export function FieldListFieldWithFallbacks({ fieldDescriptor, validators, simpl
79
79
  }, [field]);
80
80
  useEffect(() => {
81
81
  if (ref.current && isFocusedField) {
82
- // only scroll if the field is outside the viewport
82
+ // only scroll if the field is completely outside the viewport
83
83
  const rect = ref.current.getBoundingClientRect();
84
- if (rect.top < 0 || rect.bottom > window.innerHeight) {
84
+ if (rect.bottom < 0 || rect.top > window.innerHeight) {
85
85
  ref.current.scrollIntoView({
86
86
  behavior: "smooth",
87
87
  block: "center",
@@ -1 +1 @@
1
- {"version":3,"file":"FieldListFieldWithFallbacks.js","sourceRoot":"","sources":["../../src/editor/FieldListFieldWithFallbacks.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FieldListFieldWithFallbacks.js","sourceRoot":"","sources":["../../src/editor/FieldListFieldWithFallbacks.tsx"],"names":[],"mappings":"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"}
@@ -6,20 +6,24 @@ interface AgentCostDisplayProps {
6
6
  numInputTokens: number;
7
7
  numOutputTokens: number;
8
8
  numCachedTokens: number;
9
+ numCacheWriteTokens?: number;
9
10
  totalCost?: number;
10
11
  inputCost?: number;
11
12
  outputCost?: number;
12
13
  cachedCost?: number;
14
+ cacheWriteCost?: number;
13
15
  } | null;
14
16
  /** Cumulative token usage across all messages in the session */
15
17
  totalTokens?: {
16
18
  input: number;
17
19
  output: number;
18
20
  cached: number;
21
+ cacheWrite: number;
19
22
  totalCost: number;
20
23
  inputCost: number;
21
24
  outputCost: number;
22
25
  cachedCost: number;
26
+ cacheWriteCost: number;
23
27
  };
24
28
  /** Cost limit for the agent (in USD) */
25
29
  costLimit?: number | null;
@@ -25,17 +25,19 @@ export function AgentCostDisplay({ className = "", response, totalTokens, costLi
25
25
  }, [showCostPopover]);
26
26
  // Calculate estimated cost based on typical pricing (rough estimates)
27
27
  // Claude 3.5 Sonnet pricing: ~$3/MTok input, ~$15/MTok output
28
- const calculateEstimatedCost = (inputTokens, outputTokens, cachedTokens) => {
28
+ const calculateEstimatedCost = (inputTokens, outputTokens, cachedTokens, cacheWriteTokens = 0) => {
29
29
  // Cached tokens are a subset of input tokens, not additional tokens
30
30
  const freshInputTokens = inputTokens - cachedTokens;
31
31
  const inputCost = (freshInputTokens / 1000000) * 3; // $3 per million tokens
32
32
  const outputCost = (outputTokens / 1000000) * 15; // $15 per million tokens
33
33
  const cachedCost = (cachedTokens / 1000000) * 0.3; // Cached tokens are typically much cheaper
34
+ const cacheWriteCost = (cacheWriteTokens / 1000000) * 3.75; // Cache write tokens cost more
34
35
  return {
35
36
  inputCost,
36
37
  outputCost,
37
38
  cachedCost,
38
- totalCost: inputCost + outputCost + cachedCost,
39
+ cacheWriteCost,
40
+ totalCost: inputCost + outputCost + cachedCost + cacheWriteCost,
39
41
  };
40
42
  };
41
43
  // Use actual cost data if available, otherwise calculate estimates
@@ -45,9 +47,10 @@ export function AgentCostDisplay({ className = "", response, totalTokens, costLi
45
47
  inputCost: response.inputCost ?? 0,
46
48
  outputCost: response.outputCost ?? 0,
47
49
  cachedCost: response.cachedCost ?? 0,
50
+ cacheWriteCost: response.cacheWriteCost ?? 0,
48
51
  totalCost: response.totalCost,
49
52
  }
50
- : calculateEstimatedCost(response.numInputTokens, response.numOutputTokens, response.numCachedTokens)
53
+ : calculateEstimatedCost(response.numInputTokens, response.numOutputTokens, response.numCachedTokens, response.numCacheWriteTokens ?? 0)
51
54
  : null;
52
55
  const displayTotalCost = totalTokens?.totalCost ?? currentCost?.totalCost ?? 0;
53
56
  const hasTokenData = response &&
@@ -77,7 +80,9 @@ export function AgentCostDisplay({ className = "", response, totalTokens, costLi
77
80
  return "text-yellow-600";
78
81
  return "text-gray-400";
79
82
  };
80
- return (_jsx("div", { className: `relative ${className}`, ref: costPopoverRef, children: _jsxs(Popover, { open: showCostPopover, onOpenChange: setShowCostPopover, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs("div", { className: `cursor-pointer text-right hover:text-gray-600 ${getColorClass()}`, style: { fontSize: "10px" }, onClick: () => setShowCostPopover(!showCostPopover), children: ["Total Cost: ", displayTotalCost.toFixed(2), " ", currency, costLimit && costLimit > 0 && ` / ${costLimit.toFixed(2)} ${currency}`] }) }), _jsx(PopoverContent, { className: "w-80 p-4", align: "end", side: "bottom", children: _jsxs("div", { className: "space-y-4", children: [_jsx("div", { className: "border-b pb-2", children: _jsxs("h4", { className: "flex items-center justify-between text-sm font-semibold", children: [_jsx("div", { children: "Cost Breakdown" }), _jsxs("span", { className: "text-sm font-semibold", children: [displayTotalCost.toFixed(2), " ", currency, costLimit && costLimit > 0 && (_jsxs("span", { className: "ml-1 text-xs text-gray-500", children: ["/ ", costLimit.toFixed(2), " ", currency] }))] })] }) }), costLimit && costLimit > 0 && (_jsxs("div", { className: "rounded-md bg-gray-50 p-3", children: [_jsxs("div", { className: "mb-2 flex items-center justify-between text-xs", children: [_jsx("span", { className: "font-medium text-gray-700", children: "Cost Limit Usage" }), _jsxs("span", { className: `font-semibold ${getColorClass()}`, children: [percentUsed?.toFixed(1), "%"] })] }), _jsx("div", { className: "h-2 w-full overflow-hidden rounded-full bg-gray-200", children: _jsx("div", { className: `h-full transition-all ${percentUsed && percentUsed >= 100
83
+ return (_jsx("div", { className: `relative ${className}`, ref: costPopoverRef, children: _jsxs(Popover, { open: showCostPopover, onOpenChange: setShowCostPopover, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs("div", { className: `cursor-pointer text-right hover:text-gray-600 ${getColorClass()}`, style: { fontSize: "10px" }, onClick: () => setShowCostPopover(!showCostPopover), children: ["Total Cost: ", displayTotalCost.toFixed(2), " ", currency, costLimit &&
84
+ costLimit > 0 &&
85
+ ` / ${costLimit.toFixed(2)} ${currency}`] }) }), _jsx(PopoverContent, { className: "w-80 p-4", align: "end", side: "bottom", children: _jsxs("div", { className: "space-y-4", children: [_jsx("div", { className: "border-b pb-2", children: _jsxs("h4", { className: "flex items-center justify-between text-sm font-semibold", children: [_jsx("div", { children: "Cost Breakdown" }), _jsxs("span", { className: "text-sm font-semibold", children: [displayTotalCost.toFixed(2), " ", currency, costLimit && costLimit > 0 && (_jsxs("span", { className: "ml-1 text-xs text-gray-500", children: ["/ ", costLimit.toFixed(2), " ", currency] }))] })] }) }), costLimit && costLimit > 0 && (_jsxs("div", { className: "rounded-md bg-gray-50 p-3", children: [_jsxs("div", { className: "mb-2 flex items-center justify-between text-xs", children: [_jsx("span", { className: "font-medium text-gray-700", children: "Cost Limit Usage" }), _jsxs("span", { className: `font-semibold ${getColorClass()}`, children: [percentUsed?.toFixed(1), "%"] })] }), _jsx("div", { className: "h-2 w-full overflow-hidden rounded-full bg-gray-200", children: _jsx("div", { className: `h-full transition-all ${percentUsed && percentUsed >= 100
81
86
  ? "bg-red-500"
82
87
  : percentUsed && percentUsed >= 80
83
88
  ? "bg-orange-500"
@@ -85,7 +90,8 @@ export function AgentCostDisplay({ className = "", response, totalTokens, costLi
85
90
  ? "bg-yellow-500"
86
91
  : "bg-blue-500"}`, style: { width: `${Math.min(percentUsed || 0, 100)}%` } }) }), percentUsed && percentUsed >= 90 && (_jsx("p", { className: "mt-2 text-xs text-gray-600", children: percentUsed >= 100
87
92
  ? "Cost limit reached. Execution will stop on next API call."
88
- : "Approaching cost limit. Consider extending if needed." }))] })), _jsx("div", { className: "space-y-3", children: (hasTotalData || hasTokenData) && (_jsx(_Fragment, { children: _jsx("div", { className: "space-y-2", children: hasTotalData ? (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Input tokens:" }), _jsxs("span", { className: "text-xs", children: [totalTokens.input.toLocaleString(), " (", totalTokens.inputCost.toFixed(2), " ", currency, ")"] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Output tokens:" }), _jsxs("span", { className: "text-xs", children: [totalTokens.output.toLocaleString(), " (", totalTokens.outputCost.toFixed(2), " ", currency, ")"] })] }), totalTokens.cached > 0 && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Cached tokens:" }), _jsxs("span", { className: "text-xs", children: [totalTokens.cached.toLocaleString(), " (", totalTokens.cachedCost.toFixed(2), " ", currency, ")"] })] }))] })) : (response &&
89
- currentCost && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Input tokens:" }), _jsxs("span", { className: "text-xs", children: [response.numInputTokens.toLocaleString(), "(", currentCost.inputCost.toFixed(2), " ", currency, ")"] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Output tokens:" }), _jsxs("span", { className: "text-xs", children: [response.numOutputTokens.toLocaleString(), "(", currentCost.outputCost.toFixed(2), " ", currency, ")"] })] }), response.numCachedTokens > 0 && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Cached tokens:" }), _jsxs("span", { className: "text-xs", children: [response.numCachedTokens.toLocaleString(), "(", currentCost.cachedCost.toFixed(2), " ", currency, ")"] })] })), _jsx("div", { className: "mt-2 text-xs text-gray-400", children: "* Estimated costs based on typical Claude 3.5 pricing" })] }))) }) })) })] }) })] }) }));
93
+ : "Approaching cost limit. Consider extending if needed." }))] })), _jsx("div", { className: "space-y-3", children: (hasTotalData || hasTokenData) && (_jsx(_Fragment, { children: _jsx("div", { className: "space-y-2", children: hasTotalData ? (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Input tokens:" }), _jsxs("span", { className: "text-xs", children: [totalTokens.input.toLocaleString(), " (", totalTokens.inputCost.toFixed(2), " ", currency, ")"] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Output tokens:" }), _jsxs("span", { className: "text-xs", children: [totalTokens.output.toLocaleString(), " (", totalTokens.outputCost.toFixed(2), " ", currency, ")"] })] }), totalTokens.cached > 0 && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Cached tokens:" }), _jsxs("span", { className: "text-xs", children: [totalTokens.cached.toLocaleString(), " (", totalTokens.cachedCost.toFixed(2), " ", currency, ")"] })] })), totalTokens.cacheWrite > 0 && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Cache write tokens:" }), _jsxs("span", { className: "text-xs", children: [totalTokens.cacheWrite.toLocaleString(), " (", (totalTokens.cacheWriteCost ?? 0).toFixed(2), " ", currency, ")"] })] }))] })) : (response &&
94
+ currentCost && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Input tokens:" }), _jsxs("span", { className: "text-xs", children: [response.numInputTokens.toLocaleString(), "(", currentCost.inputCost.toFixed(2), " ", currency, ")"] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Output tokens:" }), _jsxs("span", { className: "text-xs", children: [response.numOutputTokens.toLocaleString(), "(", currentCost.outputCost.toFixed(2), " ", currency, ")"] })] }), response.numCachedTokens > 0 && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Cached tokens:" }), _jsxs("span", { className: "text-xs", children: [response.numCachedTokens.toLocaleString(), "(", currentCost.cachedCost.toFixed(2), " ", currency, ")"] })] })), response.numCacheWriteTokens &&
95
+ response.numCacheWriteTokens > 0 && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-xs text-gray-500", children: "Cache write tokens:" }), _jsxs("span", { className: "text-xs", children: [response.numCacheWriteTokens.toLocaleString(), "(", currentCost.cacheWriteCost.toFixed(2), " ", currency, ")"] })] })), _jsx("div", { className: "mt-2 text-xs text-gray-400", children: "* Estimated costs based on typical Claude 3.5 pricing" })] }))) }) })) })] }) })] }) }));
90
96
  }
91
97
  //# sourceMappingURL=AgentCostDisplay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentCostDisplay.js","sourceRoot":"","sources":["../../../src/editor/ai/AgentCostDisplay.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentCostDisplay.js","sourceRoot":"","sources":["../../../src/editor/ai/AgentCostDisplay.tsx"],"names":[],"mappings":"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"}
@@ -250,8 +250,7 @@ const TodoListPanel = ({ messages, agentMetadata, }) => {
250
250
  // First try to get todos from agent metadata (real-time updates)
251
251
  const metadataTodos = (() => {
252
252
  try {
253
- const context = agentMetadata?.additionalData?.context;
254
- const todoList = context?.todoList;
253
+ const todoList = agentMetadata?.additionalData?.todoList;
255
254
  if (todoList?.items && Array.isArray(todoList.items)) {
256
255
  return todoList.items
257
256
  .map((item, idx) => ({
@@ -266,9 +265,12 @@ const TodoListPanel = ({ messages, agentMetadata, }) => {
266
265
  }))
267
266
  .filter((item) => item.text);
268
267
  }
268
+ else {
269
+ console.log("📋 No todo list found in metadata. AgentMetadata:", agentMetadata);
270
+ }
269
271
  }
270
272
  catch (e) {
271
- // Fallback to extracting from messages
273
+ console.error("📋 Error extracting todos from metadata:", e);
272
274
  }
273
275
  return null;
274
276
  })();
@@ -373,18 +375,22 @@ const calculateTotalTokens = (messages) => {
373
375
  input: acc.input + (message.inputTokens || 0),
374
376
  output: acc.output + (message.outputTokens || 0),
375
377
  cached: acc.cached + (message.cachedInputTokens || 0),
378
+ cacheWrite: acc.cacheWrite,
376
379
  inputCost: acc.inputCost + (message.inputTokenCost || 0),
377
380
  outputCost: acc.outputCost + (message.outputTokenCost || 0),
378
381
  cachedCost: acc.cachedCost + (message.cachedInputTokenCost || 0),
382
+ cacheWriteCost: acc.cacheWriteCost,
379
383
  totalCost: acc.totalCost + (message.totalCost || 0),
380
384
  };
381
385
  }, {
382
386
  input: 0,
383
387
  output: 0,
384
388
  cached: 0,
389
+ cacheWrite: 0,
385
390
  inputCost: 0,
386
391
  outputCost: 0,
387
392
  cachedCost: 0,
393
+ cacheWriteCost: 0,
388
394
  totalCost: 0,
389
395
  });
390
396
  return totals;
@@ -769,9 +775,11 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, }) {
769
775
  input: Number(data.totalInputTokens) || 0,
770
776
  output: Number(data.totalOutputTokens) || 0,
771
777
  cached: Number(data.totalCachedTokens) || 0,
778
+ cacheWrite: Number(data.totalCacheWriteTokens) || 0,
772
779
  inputCost: Number(data.totalInputTokenCost) || 0,
773
780
  outputCost: Number(data.totalOutputTokenCost) || 0,
774
781
  cachedCost: Number(data.totalCachedTokenCost) || 0,
782
+ cacheWriteCost: Number(data.totalCacheWriteTokenCost) || 0,
775
783
  totalCost: Number(data.totalCost) || 0,
776
784
  currency: data.currency || "USD",
777
785
  });
@@ -925,9 +933,11 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, }) {
925
933
  input: Number(data.totalInputTokens) || 0,
926
934
  output: Number(data.totalOutputTokens) || 0,
927
935
  cached: Number(data.totalCachedTokens) || 0,
936
+ cacheWrite: Number(data.totalCacheWriteTokens) || 0,
928
937
  inputCost: Number(data.totalInputTokenCost) || 0,
929
938
  outputCost: Number(data.totalOutputTokenCost) || 0,
930
939
  cachedCost: Number(data.totalCachedTokenCost) || 0,
940
+ cacheWriteCost: Number(data.totalCacheWriteTokenCost) || 0,
931
941
  totalCost: Number(data.totalCost) || 0,
932
942
  currency: data.currency || "USD",
933
943
  });
@@ -1034,7 +1044,9 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, }) {
1034
1044
  break;
1035
1045
  case "statusUpdate":
1036
1046
  try {
1037
- const kind = message?.data?.kind;
1047
+ // Check both 'kind' and 'state' for backward compatibility
1048
+ const kind = message?.data?.kind ||
1049
+ message?.data?.state;
1038
1050
  if (kind === "streamOpen") {
1039
1051
  setIsConnecting(false);
1040
1052
  // Don't clear waiting state here - let it be cleared when first content arrives
@@ -1049,9 +1061,11 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, }) {
1049
1061
  input: Number(totals.totalInputTokens) || 0,
1050
1062
  output: Number(totals.totalOutputTokens) || 0,
1051
1063
  cached: Number(totals.totalCachedInputTokens) || 0,
1064
+ cacheWrite: Number(totals.totalCacheWriteTokens) || 0,
1052
1065
  inputCost: Number(totals.totalInputTokenCost) || 0,
1053
1066
  outputCost: Number(totals.totalOutputTokenCost) || 0,
1054
1067
  cachedCost: Number(totals.totalCachedInputTokenCost) || 0,
1068
+ cacheWriteCost: Number(totals.totalCacheWriteTokenCost) || 0,
1055
1069
  totalCost: totalCost,
1056
1070
  currency: totals.currency,
1057
1071
  });
@@ -1169,6 +1183,22 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, }) {
1169
1183
  }
1170
1184
  });
1171
1185
  }
1186
+ else if (kind === "cost_limit_reached") {
1187
+ // Cost limit has been reached - show banner and stop waiting
1188
+ const data = message.data || {};
1189
+ const totalCost = Number(data.totalCost) || 0;
1190
+ if (agent?.costLimit) {
1191
+ setCostLimitExceeded({
1192
+ totalCost: totalCost,
1193
+ costLimit: agent.costLimit,
1194
+ initialCostLimit: agent.costLimit,
1195
+ });
1196
+ }
1197
+ setIsWaitingForResponse(false);
1198
+ setIsConnecting(false);
1199
+ shouldCreateNewMessage.current = false;
1200
+ break;
1201
+ }
1172
1202
  else if (kind === "toolApprovalGranted" ||
1173
1203
  kind === "toolApprovalRejected") {
1174
1204
  const data = message.data || {};
@@ -1336,8 +1366,14 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, }) {
1336
1366
  case "contextUpdate":
1337
1367
  // Update agent context when backend sends context update
1338
1368
  try {
1369
+ console.log("📥 Received contextUpdate message:", message);
1339
1370
  const updatedContext = message.data;
1340
1371
  if (updatedContext) {
1372
+ console.log("📝 Updating agent metadata with:", updatedContext);
1373
+ // Check if there's a todo list in the context
1374
+ if (updatedContext.additionalData?.todoList) {
1375
+ console.log("✅ Todo list found in context update:", updatedContext.additionalData.todoList);
1376
+ }
1341
1377
  // Update local metadata state
1342
1378
  setAgentMetadata((prev) => ({
1343
1379
  ...prev,
@@ -1352,11 +1388,14 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, }) {
1352
1388
  agentContext: JSON.stringify(updatedContext),
1353
1389
  };
1354
1390
  });
1355
- console.log("✅ Context updated from backend:", updatedContext);
1391
+ console.log("✅ Context updated from backend successfully");
1392
+ }
1393
+ else {
1394
+ console.warn("⚠️ Context update received but updatedContext is null/undefined");
1356
1395
  }
1357
1396
  }
1358
1397
  catch (err) {
1359
- console.error("Error handling context update:", err);
1398
+ console.error("Error handling context update:", err);
1360
1399
  }
1361
1400
  break;
1362
1401
  case "error":
@@ -2582,8 +2621,8 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, }) {
2582
2621
  if (!costLimitExceeded)
2583
2622
  return null;
2584
2623
  const { totalCost, costLimit, initialCostLimit } = costLimitExceeded;
2585
- return (_jsxs("div", { className: "m-3 rounded border border-amber-300 bg-amber-50 p-3 text-xs text-amber-900", children: [_jsxs("div", { className: "mb-2 flex items-center gap-2", children: [_jsx(AlertCircle, { className: "h-4 w-4 text-amber-500", strokeWidth: 1 }), _jsxs("span", { children: ["Cost limit exceeded. Spent $", totalCost.toFixed(4), " / $", costLimit.toFixed(4), "."] })] }), _jsx("div", { className: "flex gap-2", children: _jsx("button", { className: "rounded border border-amber-300 bg-white px-2 py-1 hover:bg-amber-100", onClick: async () => {
2586
- if (!agent?.id)
2624
+ return (_jsxs("div", { className: "m-3 rounded border border-amber-300 bg-amber-50 p-3 text-xs text-amber-900", children: [_jsxs("div", { className: "mb-2 flex items-center gap-2", children: [_jsx(AlertCircle, { className: "h-4 w-4 text-amber-500", strokeWidth: 1 }), _jsxs("span", { children: ["Cost limit exceeded. Spent $", totalCost.toFixed(2), " / $", costLimit.toFixed(2), "."] })] }), _jsx("div", { className: "flex gap-2", children: _jsx("button", { className: "rounded border border-amber-300 bg-white px-2 py-1 hover:bg-amber-100", onClick: async () => {
2625
+ if (!agent?.id || !editContext?.sessionId)
2587
2626
  return;
2588
2627
  try {
2589
2628
  // Extend by initial cost limit amount
@@ -2593,10 +2632,28 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, }) {
2593
2632
  setAgent((prev) => prev ? { ...prev, costLimit: result.costLimit } : prev);
2594
2633
  }
2595
2634
  setCostLimitExceeded(null);
2596
- await connectToStream(agent);
2635
+ // Resume agent execution with empty message
2636
+ const request = {
2637
+ agentId: agent.id,
2638
+ message: "",
2639
+ sessionId: editContext.sessionId,
2640
+ profileId: activeProfile?.id || profiles[0]?.id || "",
2641
+ profile: activeProfile?.name || profiles[0]?.name || "",
2642
+ model: selectedModelId,
2643
+ mode: mode,
2644
+ context: agentMetadata,
2645
+ };
2646
+ setIsWaitingForResponse(true);
2647
+ isWaitingRef.current = true;
2648
+ setShouldAutoScroll(true);
2649
+ await startAgent(request);
2650
+ await connectToStream();
2597
2651
  }
2598
2652
  catch (e) {
2599
- console.error("Failed to extend cost limit", e);
2653
+ console.error("Failed to extend cost limit and resume agent", e);
2654
+ setError(e instanceof Error
2655
+ ? e.message
2656
+ : "Failed to extend cost limit and resume agent");
2600
2657
  }
2601
2658
  }, children: "Extend limit and continue" }) })] }));
2602
2659
  };
@@ -2726,9 +2783,11 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, }) {
2726
2783
  input: liveTotals.input,
2727
2784
  output: liveTotals.output,
2728
2785
  cached: liveTotals.cached,
2786
+ cacheWrite: liveTotals.cacheWrite ?? 0,
2729
2787
  inputCost: liveTotals.inputCost,
2730
2788
  outputCost: liveTotals.outputCost,
2731
2789
  cachedCost: liveTotals.cachedCost,
2790
+ cacheWriteCost: liveTotals.cacheWriteCost ?? 0,
2732
2791
  totalCost: liveTotals.totalCost,
2733
2792
  }
2734
2793
  : totalTokens, costLimit: agent?.costLimit }), (() => {