@alpaca-editor/core 1.0.4152 → 1.0.4155

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":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAe,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,GACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AA+B/D,MAAM,UAAU,gBAAgB,CAAC,EAC/B,SAAS,GAAG,EAAE,EACd,QAAQ,EACR,WAAW,EACX,SAAS,GACa;IACtB,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,cAAc,EAAE,QAAQ,IAAI,KAAK,CAAC;IAEnD,wCAAwC;IACxC,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,kBAAkB,CAAC,KAAiB;YAC3C,IACE,cAAc,CAAC,OAAO;gBACtB,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EACtD,CAAC;gBACD,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,IAAI,eAAe,EAAE,CAAC;YACpB,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;YACvD,OAAO,GAAG,EAAE;gBACV,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;YAC5D,CAAC,CAAC;QACJ,CAAC;IACH,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,sEAAsE;IACtE,8DAA8D;IAC9D,MAAM,sBAAsB,GAAG,CAC7B,WAAmB,EACnB,YAAoB,EACpB,YAAoB,EACpB,EAAE;QACF,oEAAoE;QACpE,MAAM,gBAAgB,GAAG,WAAW,GAAG,YAAY,CAAC;QACpD,MAAM,SAAS,GAAG,CAAC,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB;QAC5E,MAAM,UAAU,GAAG,CAAC,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,yBAAyB;QAC3E,MAAM,UAAU,GAAG,CAAC,YAAY,GAAG,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,2CAA2C;QAC9F,OAAO;YACL,SAAS;YACT,UAAU;YACV,UAAU;YACV,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU;SAC/C,CAAC;IACJ,CAAC,CAAC;IAEF,mEAAmE;IACnE,MAAM,WAAW,GAAG,QAAQ;QAC1B,CAAC,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS;YAChC,CAAC,CAAC;gBACE,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,CAAC;gBAClC,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,CAAC;gBACpC,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,CAAC;gBACpC,SAAS,EAAE,QAAQ,CAAC,SAAS;aAC9B;YACH,CAAC,CAAC,sBAAsB,CACpB,QAAQ,CAAC,cAAc,EACvB,QAAQ,CAAC,eAAe,EACxB,QAAQ,CAAC,eAAe,CACzB;QACL,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,gBAAgB,GACpB,WAAW,EAAE,SAAS,IAAI,WAAW,EAAE,SAAS,IAAI,CAAC,CAAC;IACxD,MAAM,YAAY,GAChB,QAAQ;QACR,CAAC,QAAQ,CAAC,cAAc,GAAG,CAAC;YAC1B,QAAQ,CAAC,eAAe,GAAG,CAAC;YAC5B,QAAQ,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;IAClC,MAAM,YAAY,GAChB,WAAW;QACX,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC9E,MAAM,WAAW,GACf,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;QAC1D,CAAC,WAAW,IAAI,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAEtE,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,IAAI,CAAC,WAAW,EAAE,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qCAAqC;IACrC,MAAM,WAAW,GAAG,SAAS,IAAI,SAAS,GAAG,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC;QACrD,CAAC,CAAC,IAAI,CAAC;IAET,iCAAiC;IACjC,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,IAAI,CAAC,WAAW;YAAE,OAAO,eAAe,CAAC;QACzC,IAAI,WAAW,IAAI,GAAG;YAAE,OAAO,cAAc,CAAC;QAC9C,IAAI,WAAW,IAAI,EAAE;YAAE,OAAO,iBAAiB,CAAC;QAChD,IAAI,WAAW,IAAI,EAAE;YAAE,OAAO,iBAAiB,CAAC;QAChD,OAAO,eAAe,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO,CACL,cAAK,SAAS,EAAE,YAAY,SAAS,EAAE,EAAE,GAAG,EAAE,cAAc,YAC1D,MAAC,OAAO,IAAC,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,aAC9D,KAAC,cAAc,IAAC,OAAO,kBACrB,eACE,SAAS,EAAE,iDAAiD,aAAa,EAAE,EAAE,EAC7E,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,CAAC,eAAe,CAAC,6BAEtC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAG,QAAQ,EAClD,SAAS,IAAI,SAAS,GAAG,CAAC,IAAI,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,IACnE,GACS,EACjB,KAAC,cAAc,IAAC,SAAS,EAAC,UAAU,EAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,QAAQ,YAC5D,eAAK,SAAS,EAAC,WAAW,aACxB,cAAK,SAAS,EAAC,eAAe,YAC5B,cAAI,SAAS,EAAC,yDAAyD,aACrE,2CAAyB,EACzB,gBAAM,SAAS,EAAC,uBAAuB,aACpC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAG,QAAQ,EACtC,SAAS,IAAI,SAAS,GAAG,CAAC,IAAI,CAC7B,gBAAM,SAAS,EAAC,4BAA4B,mBACvC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,OAAG,QAAQ,IAC7B,CACR,IACI,IACJ,GACD,EAGL,SAAS,IAAI,SAAS,GAAG,CAAC,IAAI,CAC7B,eAAK,SAAS,EAAC,2BAA2B,aACxC,eAAK,SAAS,EAAC,gDAAgD,aAC7D,eAAM,SAAS,EAAC,2BAA2B,iCAAwB,EACnE,gBAAM,SAAS,EAAE,iBAAiB,aAAa,EAAE,EAAE,aAChD,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,SACnB,IACH,EACN,cAAK,SAAS,EAAC,qDAAqD,YAClE,cACE,SAAS,EAAE,yBACT,WAAW,IAAI,WAAW,IAAI,GAAG;gDAC/B,CAAC,CAAC,YAAY;gDACd,CAAC,CAAC,WAAW,IAAI,WAAW,IAAI,EAAE;oDAChC,CAAC,CAAC,eAAe;oDACjB,CAAC,CAAC,WAAW,IAAI,WAAW,IAAI,EAAE;wDAChC,CAAC,CAAC,eAAe;wDACjB,CAAC,CAAC,aACV,EAAE,EACF,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GACvD,GACE,EACL,WAAW,IAAI,WAAW,IAAI,EAAE,IAAI,CACnC,YAAG,SAAS,EAAC,4BAA4B,YACtC,WAAW,IAAI,GAAG;4CACjB,CAAC,CAAC,2DAA2D;4CAC7D,CAAC,CAAC,uDAAuD,GACzD,CACL,IACG,CACP,EAED,cAAK,SAAS,EAAC,WAAW,YAEvB,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI,CACjC,4BACE,cAAK,SAAS,EAAC,WAAW,YACvB,YAAY,CAAC,CAAC,CAAC,CACd,8BACE,eAAK,SAAS,EAAC,mCAAmC,aAChD,eAAM,SAAS,EAAC,uBAAuB,8BAEhC,EACP,gBAAM,SAAS,EAAC,SAAS,aACtB,WAAW,CAAC,KAAK,CAAC,cAAc,EAAE,QAClC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,OAAG,QAAQ,SACvC,IACH,EAEN,eAAK,SAAS,EAAC,mCAAmC,aAChD,eAAM,SAAS,EAAC,uBAAuB,+BAEhC,EACP,gBAAM,SAAS,EAAC,SAAS,aACtB,WAAW,CAAC,MAAM,CAAC,cAAc,EAAE,QACnC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAG,QAAQ,SACxC,IACH,EAEL,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CACzB,eAAK,SAAS,EAAC,mCAAmC,aAChD,eAAM,SAAS,EAAC,uBAAuB,+BAEhC,EACP,gBAAM,SAAS,EAAC,SAAS,aACtB,WAAW,CAAC,MAAM,CAAC,cAAc,EAAE,QACnC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAG,QAAQ,SACxC,IACH,CACP,IACA,CACJ,CAAC,CAAC,CAAC,CACF,QAAQ;4CACR,WAAW,IAAI,CACb,8BACE,eAAK,SAAS,EAAC,mCAAmC,aAChD,eAAM,SAAS,EAAC,uBAAuB,8BAEhC,EACP,gBAAM,SAAS,EAAC,SAAS,aACtB,QAAQ,CAAC,cAAc,CAAC,cAAc,EAAE,OACxC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,OAAG,QAAQ,SACvC,IACH,EAEN,eAAK,SAAS,EAAC,mCAAmC,aAChD,eAAM,SAAS,EAAC,uBAAuB,+BAEhC,EACP,gBAAM,SAAS,EAAC,SAAS,aACtB,QAAQ,CAAC,eAAe,CAAC,cAAc,EAAE,OACzC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAG,QAAQ,SACxC,IACH,EAEL,QAAQ,CAAC,eAAe,GAAG,CAAC,IAAI,CAC/B,eAAK,SAAS,EAAC,mCAAmC,aAChD,eAAM,SAAS,EAAC,uBAAuB,+BAEhC,EACP,gBAAM,SAAS,EAAC,SAAS,aACtB,QAAQ,CAAC,eAAe,CAAC,cAAc,EAAE,OACzC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAG,QAAQ,SACxC,IACH,CACP,EAED,cAAK,SAAS,EAAC,4BAA4B,sEAGrC,IACL,CACJ,CACF,GACG,GACL,CACJ,GACG,IACF,GACS,IACT,GACN,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"AgentCostDisplay.js","sourceRoot":"","sources":["../../../src/editor/ai/AgentCostDisplay.tsx"],"names":[],"mappings":"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"}
@@ -12,13 +12,13 @@ export interface AgentStatusConfig {
12
12
  /**
13
13
  * Helper function to get status configuration for an individual agent
14
14
  * Handles both numeric and string status values
15
- * Enum: New=0, Running=1, WaitingForApproval=2, Completed=3, Error=4, Closed=5, Idle=6
15
+ * Enum: New=0, Running=1, WaitingForApproval=2, Completed=3, Error=4, Closed=5, Idle=6, CostLimitReached=7
16
16
  */
17
17
  export declare function getAgentStatusConfig(agent: Agent): AgentStatusConfig;
18
18
  /**
19
19
  * Badge that overlays on the agent icon to show status
20
20
  * Always displays the total number of active agents with color-coded status:
21
- * - Amber: Agents waiting for approval (highest priority)
21
+ * - Amber: Agents waiting for approval or cost limit reached (highest priority)
22
22
  * - Blue (pulsing): Agents actively running
23
23
  * - Green: Other active agents
24
24
  */
@@ -3,7 +3,7 @@ import { cn } from "../../lib/utils";
3
3
  /**
4
4
  * Helper function to get status configuration for an individual agent
5
5
  * Handles both numeric and string status values
6
- * Enum: New=0, Running=1, WaitingForApproval=2, Completed=3, Error=4, Closed=5, Idle=6
6
+ * Enum: New=0, Running=1, WaitingForApproval=2, Completed=3, Error=4, Closed=5, Idle=6, CostLimitReached=7
7
7
  */
8
8
  export function getAgentStatusConfig(agent) {
9
9
  const status = agent.status;
@@ -57,6 +57,13 @@ export function getAgentStatusConfig(agent) {
57
57
  shouldPulse: false,
58
58
  };
59
59
  }
60
+ else if (status === "costLimitReached" || status === 7) {
61
+ return {
62
+ color: "bg-amber-500",
63
+ label: "Status: Cost Limit Reached",
64
+ shouldPulse: false,
65
+ };
66
+ }
60
67
  // Default fallback - log for debugging
61
68
  console.warn("Unknown agent status:", status, typeof status);
62
69
  return {
@@ -68,7 +75,7 @@ export function getAgentStatusConfig(agent) {
68
75
  /**
69
76
  * Badge that overlays on the agent icon to show status
70
77
  * Always displays the total number of active agents with color-coded status:
71
- * - Amber: Agents waiting for approval (highest priority)
78
+ * - Amber: Agents waiting for approval or cost limit reached (highest priority)
72
79
  * - Blue (pulsing): Agents actively running
73
80
  * - Green: Other active agents
74
81
  */
@@ -87,6 +94,15 @@ export function AgentStatusBadge({ status, className }) {
87
94
  content: _jsx("span", { className: "text-[8px] font-bold", children: status.total }),
88
95
  };
89
96
  }
97
+ // Cost limit reached - also requires user action
98
+ if (status.costLimitReached > 0) {
99
+ return {
100
+ baseClasses: "-right-2 -top-2",
101
+ bgColor: "bg-amber-500",
102
+ title: `${status.costLimitReached} agent${status.costLimitReached > 1 ? "s" : ""} cost limit reached (${status.total} total active)`,
103
+ content: _jsx("span", { className: "text-[8px] font-bold", children: status.total }),
104
+ };
105
+ }
90
106
  // Running agents - show count with pulsing indicator
91
107
  if (status.running > 0) {
92
108
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"AgentStatusBadge.js","sourceRoot":"","sources":["../../../src/editor/ai/AgentStatusBadge.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentStatusBadge.js","sourceRoot":"","sources":["../../../src/editor/ai/AgentStatusBadge.tsx"],"names":[],"mappings":"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"}
@@ -375,18 +375,22 @@ const calculateTotalTokens = (messages) => {
375
375
  input: acc.input + (message.inputTokens || 0),
376
376
  output: acc.output + (message.outputTokens || 0),
377
377
  cached: acc.cached + (message.cachedInputTokens || 0),
378
+ cacheWrite: acc.cacheWrite,
378
379
  inputCost: acc.inputCost + (message.inputTokenCost || 0),
379
380
  outputCost: acc.outputCost + (message.outputTokenCost || 0),
380
381
  cachedCost: acc.cachedCost + (message.cachedInputTokenCost || 0),
382
+ cacheWriteCost: acc.cacheWriteCost,
381
383
  totalCost: acc.totalCost + (message.totalCost || 0),
382
384
  };
383
385
  }, {
384
386
  input: 0,
385
387
  output: 0,
386
388
  cached: 0,
389
+ cacheWrite: 0,
387
390
  inputCost: 0,
388
391
  outputCost: 0,
389
392
  cachedCost: 0,
393
+ cacheWriteCost: 0,
390
394
  totalCost: 0,
391
395
  });
392
396
  return totals;
@@ -771,9 +775,11 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, }) {
771
775
  input: Number(data.totalInputTokens) || 0,
772
776
  output: Number(data.totalOutputTokens) || 0,
773
777
  cached: Number(data.totalCachedTokens) || 0,
778
+ cacheWrite: Number(data.totalCacheWriteTokens) || 0,
774
779
  inputCost: Number(data.totalInputTokenCost) || 0,
775
780
  outputCost: Number(data.totalOutputTokenCost) || 0,
776
781
  cachedCost: Number(data.totalCachedTokenCost) || 0,
782
+ cacheWriteCost: Number(data.totalCacheWriteTokenCost) || 0,
777
783
  totalCost: Number(data.totalCost) || 0,
778
784
  currency: data.currency || "USD",
779
785
  });
@@ -927,9 +933,11 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, }) {
927
933
  input: Number(data.totalInputTokens) || 0,
928
934
  output: Number(data.totalOutputTokens) || 0,
929
935
  cached: Number(data.totalCachedTokens) || 0,
936
+ cacheWrite: Number(data.totalCacheWriteTokens) || 0,
930
937
  inputCost: Number(data.totalInputTokenCost) || 0,
931
938
  outputCost: Number(data.totalOutputTokenCost) || 0,
932
939
  cachedCost: Number(data.totalCachedTokenCost) || 0,
940
+ cacheWriteCost: Number(data.totalCacheWriteTokenCost) || 0,
933
941
  totalCost: Number(data.totalCost) || 0,
934
942
  currency: data.currency || "USD",
935
943
  });
@@ -1036,7 +1044,9 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, }) {
1036
1044
  break;
1037
1045
  case "statusUpdate":
1038
1046
  try {
1039
- const kind = message?.data?.kind;
1047
+ // Check both 'kind' and 'state' for backward compatibility
1048
+ const kind = message?.data?.kind ||
1049
+ message?.data?.state;
1040
1050
  if (kind === "streamOpen") {
1041
1051
  setIsConnecting(false);
1042
1052
  // Don't clear waiting state here - let it be cleared when first content arrives
@@ -1051,9 +1061,11 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, }) {
1051
1061
  input: Number(totals.totalInputTokens) || 0,
1052
1062
  output: Number(totals.totalOutputTokens) || 0,
1053
1063
  cached: Number(totals.totalCachedInputTokens) || 0,
1064
+ cacheWrite: Number(totals.totalCacheWriteTokens) || 0,
1054
1065
  inputCost: Number(totals.totalInputTokenCost) || 0,
1055
1066
  outputCost: Number(totals.totalOutputTokenCost) || 0,
1056
1067
  cachedCost: Number(totals.totalCachedInputTokenCost) || 0,
1068
+ cacheWriteCost: Number(totals.totalCacheWriteTokenCost) || 0,
1057
1069
  totalCost: totalCost,
1058
1070
  currency: totals.currency,
1059
1071
  });
@@ -1171,6 +1183,33 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, }) {
1171
1183
  }
1172
1184
  });
1173
1185
  }
1186
+ else if (kind === "cost_limit_reached") {
1187
+ // Cost limit has been reached - show banner and stop waiting
1188
+ // NOTE: Stream stays connected so user can extend limit and continue immediately
1189
+ console.log("[AgentTerminal] Cost limit reached notification received", message);
1190
+ const data = message.data || {};
1191
+ const totalCost = Number(data.totalCost) || 0;
1192
+ // Use costLimit from the notification data, or fall back to agent.costLimit
1193
+ const costLimit = Number(data.costLimit) || agent?.costLimit || 0;
1194
+ console.log("[AgentTerminal] Setting cost limit exceeded state:", {
1195
+ totalCost,
1196
+ costLimit,
1197
+ agentCostLimit: agent?.costLimit,
1198
+ dataCostLimit: data.costLimit,
1199
+ dataValues: data,
1200
+ });
1201
+ // Set the state with values from the notification
1202
+ setCostLimitExceeded({
1203
+ totalCost: totalCost,
1204
+ costLimit: costLimit,
1205
+ initialCostLimit: costLimit,
1206
+ });
1207
+ // Clear waiting states but keep stream connected
1208
+ setIsWaitingForResponse(false);
1209
+ setIsConnecting(false);
1210
+ shouldCreateNewMessage.current = false;
1211
+ break;
1212
+ }
1174
1213
  else if (kind === "toolApprovalGranted" ||
1175
1214
  kind === "toolApprovalRejected") {
1176
1215
  const data = message.data || {};
@@ -1699,31 +1738,37 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, }) {
1699
1738
  // For existing agents, use database metadata or none
1700
1739
  setAgentMetadata(parsedMeta);
1701
1740
  // Connect to stream if agent is running
1702
- // For agents waiting for approval, DON'T auto-reconnect on load - let the user click approve first
1741
+ // Keep stream open for: running, waiting for approval, or cost limit reached
1703
1742
  const isRunning = agentData.status === "running" || agentData.status === 1;
1704
1743
  const isWaitingForApproval = agentData.status === "waitingForApproval" ||
1705
1744
  agentData.status === 2;
1706
- if (isRunning || isWaitingForApproval) {
1707
- // Auto-connect for running agents AND agents waiting for approval
1708
- // (stream stays open during approval now)
1745
+ const isCostLimitReached = agentData.status === "costLimitReached" ||
1746
+ agentData.status === 7;
1747
+ if (isRunning || isWaitingForApproval || isCostLimitReached) {
1748
+ // Auto-connect for running agents, agents waiting for approval, and agents at cost limit
1749
+ // (stream stays open so user can extend limit and continue)
1709
1750
  setTimeout(async () => {
1710
1751
  if (abortControllerRef.current) {
1711
1752
  return;
1712
1753
  }
1713
1754
  shouldCreateNewMessage.current = false;
1714
- try {
1715
- if (editContext?.sessionId) {
1716
- await startAgent({
1717
- agentId: agentData.id,
1718
- message: "",
1719
- sessionId: editContext.sessionId,
1720
- profileId: agentData.profileId || "",
1721
- model: agentData.model,
1722
- });
1755
+ // For cost limit reached, just connect to stream - don't restart agent
1756
+ // For running/approval states, signal the backend we're reconnecting
1757
+ if (!isCostLimitReached) {
1758
+ try {
1759
+ if (editContext?.sessionId) {
1760
+ await startAgent({
1761
+ agentId: agentData.id,
1762
+ message: "",
1763
+ sessionId: editContext.sessionId,
1764
+ profileId: agentData.profileId || "",
1765
+ model: agentData.model,
1766
+ });
1767
+ }
1768
+ }
1769
+ catch (startError) {
1770
+ console.warn("Failed to call startAgent during reconnection:", startError);
1723
1771
  }
1724
- }
1725
- catch (startError) {
1726
- console.warn("Failed to call startAgent during reconnection:", startError);
1727
1772
  }
1728
1773
  await connectToStream(agentData);
1729
1774
  }, 100);
@@ -2593,21 +2638,31 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, }) {
2593
2638
  if (!costLimitExceeded)
2594
2639
  return null;
2595
2640
  const { totalCost, costLimit, initialCostLimit } = costLimitExceeded;
2596
- 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 () => {
2641
+ 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 () => {
2597
2642
  if (!agent?.id)
2598
2643
  return;
2599
2644
  try {
2600
- // Extend by initial cost limit amount
2645
+ // Extend cost limit - backend will automatically resume the agent
2601
2646
  const result = await updateAgentCostLimit(agent.id, "extend");
2602
2647
  // Update the agent's cost limit in local state
2603
2648
  if (result.success && result.costLimit !== undefined) {
2604
2649
  setAgent((prev) => prev ? { ...prev, costLimit: result.costLimit } : prev);
2605
2650
  }
2651
+ // Clear the banner and set waiting state
2652
+ // Agent will resume automatically via backend's ResumeAgentAsync
2606
2653
  setCostLimitExceeded(null);
2607
- await connectToStream(agent);
2654
+ setIsWaitingForResponse(true);
2655
+ isWaitingRef.current = true;
2656
+ setShouldAutoScroll(true);
2657
+ console.log("[AgentTerminal] Cost limit extended to $" +
2658
+ result.costLimit?.toFixed(4) +
2659
+ " - agent resuming via backend");
2608
2660
  }
2609
2661
  catch (e) {
2610
- console.error("Failed to extend cost limit", e);
2662
+ console.error("Failed to extend cost limit:", e);
2663
+ setError(e instanceof Error
2664
+ ? e.message
2665
+ : "Failed to extend cost limit");
2611
2666
  }
2612
2667
  }, children: "Extend limit and continue" }) })] }));
2613
2668
  };
@@ -2737,9 +2792,11 @@ export function AgentTerminal({ agentStub, initialMetadata, profiles, }) {
2737
2792
  input: liveTotals.input,
2738
2793
  output: liveTotals.output,
2739
2794
  cached: liveTotals.cached,
2795
+ cacheWrite: liveTotals.cacheWrite ?? 0,
2740
2796
  inputCost: liveTotals.inputCost,
2741
2797
  outputCost: liveTotals.outputCost,
2742
2798
  cachedCost: liveTotals.cachedCost,
2799
+ cacheWriteCost: liveTotals.cacheWriteCost ?? 0,
2743
2800
  totalCost: liveTotals.totalCost,
2744
2801
  }
2745
2802
  : totalTokens, costLimit: agent?.costLimit }), (() => {