chainlesschain 0.166.98 → 0.166.99

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 (174) hide show
  1. package/README.md +20 -23
  2. package/package.json +1 -1
  3. package/src/assets/linux-subreaper/linux-arm64/manifest.json +1 -1
  4. package/src/assets/linux-subreaper/linux-x64/manifest.json +1 -1
  5. package/src/assets/web-panel/assets/{AIOps-DCIQFtF1.js → AIOps-BUgaCgVU.js} +1 -1
  6. package/src/assets/web-panel/assets/{ActionButton-BxhHU3nE.js → ActionButton-b0MpUSSZ.js} +1 -1
  7. package/src/assets/web-panel/assets/{Analytics-DdM_307O.js → Analytics-hbXTvHqO.js} +3 -3
  8. package/src/assets/web-panel/assets/{AppLayout-C43-kSrh.js → AppLayout-CLQoAVu4.js} +4 -4
  9. package/src/assets/web-panel/assets/{Artifacts-B2Vp2Am6.js → Artifacts-ytHzl2L2.js} +1 -1
  10. package/src/assets/web-panel/assets/{Audit-s-lYUfOp.js → Audit-BuhkLm0C.js} +1 -1
  11. package/src/assets/web-panel/assets/{BackgroundAgents-DTE7Kzio.js → BackgroundAgents-CS81hxZV.js} +1 -1
  12. package/src/assets/web-panel/assets/{Backup-9k1q4Mt6.js → Backup-DzR-_Qvi.js} +1 -1
  13. package/src/assets/web-panel/assets/{BaseInput-DlpUtK5R.js → BaseInput-r8Ku_lYw.js} +1 -1
  14. package/src/assets/web-panel/assets/{Chat-CR9S8Rmb.js → Chat-C3Uxtoaa.js} +5 -5
  15. package/src/assets/web-panel/assets/ChatBubbleRenderer-RvblDu77.js +1 -0
  16. package/src/assets/web-panel/assets/{Checkbox-DpFRu7Df.js → Checkbox-BnG2P5yc.js} +1 -1
  17. package/src/assets/web-panel/assets/{Codegen-BIl72E4Y.js → Codegen-BdgU6HZy.js} +1 -1
  18. package/src/assets/web-panel/assets/{Col-91tl_err.js → Col-DT8t9wmf.js} +1 -1
  19. package/src/assets/web-panel/assets/{Community-CswahO9-.js → Community-ChkxR5oe.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compact-D9pfHmaM.js → Compact-DIwLeTk3.js} +1 -1
  21. package/src/assets/web-panel/assets/{Compliance-CXSZzAO9.js → Compliance-CAqzGLvW.js} +1 -1
  22. package/src/assets/web-panel/assets/{Cowork-CuT9RWTn.js → Cowork-Bb3jejMG.js} +2 -2
  23. package/src/assets/web-panel/assets/{Cron-B71aJWDV.js → Cron-BYRkZLta.js} +2 -2
  24. package/src/assets/web-panel/assets/{Crosschain-CcUuWyx8.js → Crosschain-BD6z227t.js} +1 -1
  25. package/src/assets/web-panel/assets/{DID-CtVVGOPL.js → DID-DA3G5Wgo.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dashboard-CV7ZCYQq.js → Dashboard-yaZePHOu.js} +2 -2
  27. package/src/assets/web-panel/assets/{Dropdown-DKHxwLgE.js → Dropdown-BqY5MBx2.js} +1 -1
  28. package/src/assets/web-panel/assets/{EmailListRenderer-Bd03UIvv.js → EmailListRenderer-cIWwOgHm.js} +1 -1
  29. package/src/assets/web-panel/assets/{EvolutionSettings-CTrG03B_.js → EvolutionSettings-zvV6ymca.js} +1 -1
  30. package/src/assets/web-panel/assets/{FamilyGuardDashboard-DXS4bS6Q.js → FamilyGuardDashboard-CAmh1U2b.js} +1 -1
  31. package/src/assets/web-panel/assets/{Federation-BODG2Szj.js → Federation-5qd2LCg8.js} +1 -1
  32. package/src/assets/web-panel/assets/{FormItemContext-D32ccUqD.js → FormItemContext-Bdkj1sRJ.js} +1 -1
  33. package/src/assets/web-panel/assets/{GenericCardRenderer-ClsyrKvF.js → GenericCardRenderer-B-gWN2P3.js} +1 -1
  34. package/src/assets/web-panel/assets/{Git-DcM2yhbL.js → Git-BEMh_NGd.js} +2 -2
  35. package/src/assets/web-panel/assets/{Governance-BhUzM87n.js → Governance-qLGvA2Hw.js} +1 -1
  36. package/src/assets/web-panel/assets/{Inference-Dq1n0Ifg.js → Inference-DblBwYuW.js} +1 -1
  37. package/src/assets/web-panel/assets/{KnowledgeGraph-dmmPwEks.js → KnowledgeGraph-BISegVD_.js} +1 -1
  38. package/src/assets/web-panel/assets/Logs-BD2UR7kE.js +2 -0
  39. package/src/assets/web-panel/assets/MarkdownRenderer-B-TlDCmr.js +1 -0
  40. package/src/assets/web-panel/assets/{Marketplace-Cfw7XLck.js → Marketplace-CHKXMOkH.js} +1 -1
  41. package/src/assets/web-panel/assets/{McpTools-CNrZRy4n.js → McpTools-B5G1elqd.js} +2 -2
  42. package/src/assets/web-panel/assets/{Memory-BESjTxdd.js → Memory-O5Ib0uTR.js} +2 -2
  43. package/src/assets/web-panel/assets/{MobileBridge-Boyjo07i.js → MobileBridge-BaGYL7rT.js} +1 -1
  44. package/src/assets/web-panel/assets/MobileProjects-Dsctbob8.js +1 -0
  45. package/src/assets/web-panel/assets/{Mtc-CBkrD0Fq.js → Mtc-CNjJ97jg.js} +2 -2
  46. package/src/assets/web-panel/assets/{MtcAudit-BA7cAK8h.js → MtcAudit-DjBN-Wqz.js} +2 -2
  47. package/src/assets/web-panel/assets/{Multisig-m0RGzkKO.js → Multisig-B850R9lO.js} +3 -3
  48. package/src/assets/web-panel/assets/{NLProgramming-D_TgzifU.js → NLProgramming-Bn8sbFfV.js} +1 -1
  49. package/src/assets/web-panel/assets/{Notes-Dr-Yr9LL.js → Notes-BpLmMp3Q.js} +3 -3
  50. package/src/assets/web-panel/assets/{NotificationSettings-DGanpkqO.js → NotificationSettings-Dbk97rjb.js} +1 -1
  51. package/src/assets/web-panel/assets/{OrderTableRenderer-D1FX50QY.js → OrderTableRenderer-BOBX_I72.js} +1 -1
  52. package/src/assets/web-panel/assets/{Organization-DRbPg-gs.js → Organization-B45DpOuE.js} +4 -4
  53. package/src/assets/web-panel/assets/{Overflow-flEO37z6.js → Overflow-DmKH7eer.js} +1 -1
  54. package/src/assets/web-panel/assets/{P2P-DqfqFbCW.js → P2P-CC4FaXTl.js} +2 -2
  55. package/src/assets/web-panel/assets/{PdhVaultBrowser-Cmi5a5dW.js → PdhVaultBrowser-C2SgP4PI.js} +3 -3
  56. package/src/assets/web-panel/assets/{Permissions-DBVRlvBW.js → Permissions-BQB4QFj_.js} +4 -4
  57. package/src/assets/web-panel/assets/{PersonalDataHub-gQqjPr9X.js → PersonalDataHub-Dy6GGpn4.js} +4 -4
  58. package/src/assets/web-panel/assets/{Pipeline-6HlifUc9.js → Pipeline-B9HB5pRc.js} +1 -1
  59. package/src/assets/web-panel/assets/{Privacy-bm_2-Zwg.js → Privacy-D7pOmg-p.js} +1 -1
  60. package/src/assets/web-panel/assets/{ProjectInit-BJW3isuq.js → ProjectInit-DglBqvec.js} +2 -2
  61. package/src/assets/web-panel/assets/{ProjectSettings-DD3yolz7.js → ProjectSettings-Bho22znM.js} +2 -2
  62. package/src/assets/web-panel/assets/{Projects-BF3GtWny.js → Projects-C0bSuM8U.js} +1 -1
  63. package/src/assets/web-panel/assets/{Providers-CQA6WAK7.js → Providers-BgAgo1Yr.js} +1 -1
  64. package/src/assets/web-panel/assets/{QrScannerModal-DOAwp5Xo.js → QrScannerModal-C2fBjCC8.js} +1 -1
  65. package/src/assets/web-panel/assets/{QuickAsk-qeFXsAZT.js → QuickAsk-C8MiF-rk.js} +1 -1
  66. package/src/assets/web-panel/assets/{Recommend-zDWXwZN8.js → Recommend-D_TzHdQf.js} +1 -1
  67. package/src/assets/web-panel/assets/{RemoteSession-toe6Ip06.js → RemoteSession-BHO7b6xE.js} +3 -3
  68. package/src/assets/web-panel/assets/{Reputation-DRDi_Eqp.js → Reputation-BPxNmNhD.js} +1 -1
  69. package/src/assets/web-panel/assets/{Row-Do2UbYkf.js → Row-fwhot5Bk.js} +1 -1
  70. package/src/assets/web-panel/assets/{RssFeed-B57C6_Sa.js → RssFeed-CZbD1B-5.js} +3 -3
  71. package/src/assets/web-panel/assets/{Search-DfDyBpe9.js → Search-BRs6YpAE.js} +1 -1
  72. package/src/assets/web-panel/assets/{Security-CulNxeAM.js → Security-CB344tKC.js} +4 -4
  73. package/src/assets/web-panel/assets/{Services-COfAYvs4.js → Services-Beo-7fEl.js} +2 -2
  74. package/src/assets/web-panel/assets/{Skeleton-0fn0T146.js → Skeleton-CDXx96vD.js} +1 -1
  75. package/src/assets/web-panel/assets/{Skills-pPQgAhvJ.js → Skills-b-mQTJK4.js} +1 -1
  76. package/src/assets/web-panel/assets/{Sla-CIsRmePR.js → Sla-BvjP-IS9.js} +1 -1
  77. package/src/assets/web-panel/assets/{SpeechSettings-Bn01d-8b.js → SpeechSettings-C6wsV-cO.js} +1 -1
  78. package/src/assets/web-panel/assets/{SyncSettings-Cx_Znk7L.js → SyncSettings-BQZoko-e.js} +2 -2
  79. package/src/assets/web-panel/assets/{Tasks-DvaskzpG.js → Tasks-6Z0rJJVO.js} +1 -1
  80. package/src/assets/web-panel/assets/{Templates-DmHCEiDO.js → Templates-Cc9IXtEQ.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tenant-CqHyvnbW.js → Tenant-BLc7AjOI.js} +1 -1
  82. package/src/assets/web-panel/assets/{Terminal-DTt3yqWL.js → Terminal-CUN49v85.js} +2 -2
  83. package/src/assets/web-panel/assets/{TimelineRenderer-BhkIxcR3.js → TimelineRenderer-CX-SksHN.js} +1 -1
  84. package/src/assets/web-panel/assets/{Tokens-mhjYcBBP.js → Tokens-Btrm0-rK.js} +1 -1
  85. package/src/assets/web-panel/assets/{Trigger-CdlMQfwX.js → Trigger-CIboUvKe.js} +1 -1
  86. package/src/assets/web-panel/assets/{Trust-Bzovg_Gw.js → Trust-Rv9jEs5v.js} +1 -1
  87. package/src/assets/web-panel/assets/{UkeySign-ph3EuYi7.js → UkeySign-B_xomdD5.js} +1 -1
  88. package/src/assets/web-panel/assets/{VideoEditing-Bo2B4VZE.js → VideoEditing-CrvWeMow.js} +1 -1
  89. package/src/assets/web-panel/assets/{Wallet-BQTKsSUT.js → Wallet-BjvWgk_7.js} +3 -3
  90. package/src/assets/web-panel/assets/{WebAuthn-nJxsXNHV.js → WebAuthn-CwfpFw92.js} +5 -5
  91. package/src/assets/web-panel/assets/{WorkflowEditor-CjH8g2N7.js → WorkflowEditor-Dkk2QsOe.js} +1 -1
  92. package/src/assets/web-panel/assets/{chat-CkbNmnQD.js → chat-Dah1DVes.js} +1 -1
  93. package/src/assets/web-panel/assets/{colors-BY9JcObR.js → colors-JEpgQ10k.js} +1 -1
  94. package/src/assets/web-panel/assets/{compact-item-Dzzq-d8n.js → compact-item--DuG_cxf.js} +1 -1
  95. package/src/assets/web-panel/assets/{createContext-DiJxxdTx.js → createContext-BJ_GZvon.js} +1 -1
  96. package/src/assets/web-panel/assets/devWarning-B6kQEceX.js +1 -0
  97. package/src/assets/web-panel/assets/{hasIn-DaXPOw3D.js → hasIn-yZRLDmWK.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-Djeh6rAb.js → index-1QZASeW1.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-BvgMt6Io.js → index-9L3Pg2tc.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-CbOOm8I8.js → index-BKl40wrO.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-CnLO1_yN.js → index-BM7xJKGD.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-BGvIb1Sr.js → index-BUjyj7qR.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-BHeHyLRM.js → index-BWkKE8Oj.js} +3 -3
  104. package/src/assets/web-panel/assets/{index-DObXhPhH.js → index-Bdg_nWD1.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-CWLpEg34.js → index-C56b8e9s.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-BqCHe05H.js → index-C6ohEAEV.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-CqOkm6kW.js → index-C8nXkCMf.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-Igq-72Ep.js → index-CFj7ylAJ.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-i9eu2Kir.js → index-CJLz3SpM.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-C6XSCXeb.js → index-CQedFuDw.js} +1 -1
  111. package/src/assets/web-panel/assets/index-CSeiH6HA.js +1 -0
  112. package/src/assets/web-panel/assets/index-CayGTz6d.js +1 -0
  113. package/src/assets/web-panel/assets/{index-cu1J4avY.js → index-CjuD8smQ.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-dC2JACyJ.js → index-Cmr0AzcK.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-Dl8U-0hn.js → index-CxB49Mow.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-Jmlk_lDX.js → index-D6Le2m3d.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-DSqQyS9-.js → index-DFJbJ8rs.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-EiaWq1TH.js → index-DQ4Fch3e.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-BlWg1bRA.js → index-DZBesaCN.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-DWT9-E5b.js → index-DaDLWIWo.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-DbmHmeP-.js → index-DbMGGcpZ.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-LRZSVBxC.js → index-DddwZCT9.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-B4Sf1AMk.js → index-DemMuw7n.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-6Z6Z4UwN.js → index-DhX48E81.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-C_OMH_FT.js → index-Dq-8PFhL.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-CAzfu6k5.js → index-DroaQypF.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-DaylJfw6.js → index-DxnkldGo.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DDnqjZa2.js → index-IjOa5lYn.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-CVblRqUN.js → index-L9CFyRIi.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-BycyBM6g.js → index-VIgVth92.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-7YVCjSqG.js → index-asia_JPc.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-Bhsxh-rH.js → index-cHx5KzUt.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-B31oMRmK.js → index-kZE-K3ZO.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-BQvtlYUd.js → index-o2qO_dYf.js} +1 -1
  135. package/src/assets/web-panel/assets/{index-Uh9SjtgW.js → index-rkvSOceQ.js} +1 -1
  136. package/src/assets/web-panel/assets/{index-D_Eoh740.js → index-vdTrEOj7.js} +1 -1
  137. package/src/assets/web-panel/assets/{initDefaultProps-B0WuG3fa.js → initDefaultProps-anKyyjGc.js} +1 -1
  138. package/src/assets/web-panel/assets/{motion-1r5YB22w.js → motion-Cqp0nx5A.js} +1 -1
  139. package/src/assets/web-panel/assets/{move-CvtXWA_V.js → move-Ca3mgkM2.js} +1 -1
  140. package/src/assets/web-panel/assets/{mtc-parser-ChedmEE_.js → mtc-parser-BmwuhJ3z.js} +1 -1
  141. package/src/assets/web-panel/assets/{omit-DpEA3MP0.js → omit-C9Mf05WJ.js} +1 -1
  142. package/src/assets/web-panel/assets/{pickAttrs-BWgrUZF6.js → pickAttrs-2PbxB9Ds.js} +1 -1
  143. package/src/assets/web-panel/assets/{placementArrow-BWfo_VbI.js → placementArrow-CTVbOFHt.js} +1 -1
  144. package/src/assets/web-panel/assets/{responsiveObserve-CRft03Vk.js → responsiveObserve-Nrm8Vbmr.js} +1 -1
  145. package/src/assets/web-panel/assets/{slide-l5LeXusH.js → slide-Dh4r1zqR.js} +1 -1
  146. package/src/assets/web-panel/assets/{statusUtils-CCEC0JR-.js → statusUtils-vzNoQL-r.js} +1 -1
  147. package/src/assets/web-panel/assets/{styleChecker-Bw5Gw_2w.js → styleChecker-BXpGfNkI.js} +1 -1
  148. package/src/assets/web-panel/assets/{useFlexGapSupport-BAuxWB7K.js → useFlexGapSupport-CVWBRdhs.js} +1 -1
  149. package/src/assets/web-panel/assets/{useFs-CxUP97Cw.js → useFs-BJWMLffI.js} +1 -1
  150. package/src/assets/web-panel/assets/{usePersonalDataHub-BJDjT4Sy.js → usePersonalDataHub-CWCe5VHG.js} +1 -1
  151. package/src/assets/web-panel/assets/{vnode-BcCsFzIs.js → vnode-D-NBEb8m.js} +1 -1
  152. package/src/assets/web-panel/assets/{zoom-MLmG09h6.js → zoom-C0mnhfGf.js} +1 -1
  153. package/src/assets/web-panel/index.html +1 -1
  154. package/src/data/changelog.json +13 -0
  155. package/src/lib/cost-budget.js +8 -0
  156. package/src/lib/llm-pricing.js +61 -7
  157. package/src/lib/model-capabilities.js +10 -2
  158. package/src/lib/model-catalog-review.js +1 -0
  159. package/src/lib/model-context-catalog.js +26 -1
  160. package/src/lib/provider-options.js +38 -1
  161. package/src/lib/search-command.js +4 -1
  162. package/src/lib/stream-retry.js +14 -1
  163. package/src/lib/usage-pricing-context.js +100 -10
  164. package/src/runtime/agent-core.js +73 -18
  165. package/src/runtime/headless-runner.js +17 -0
  166. package/src/runtime/headless-stream.js +17 -0
  167. package/src/runtime/provider-stream-state.js +7 -0
  168. package/src/assets/web-panel/assets/ChatBubbleRenderer-Xtgfw3-c.js +0 -1
  169. package/src/assets/web-panel/assets/Logs-CBSYrPmh.js +0 -2
  170. package/src/assets/web-panel/assets/MarkdownRenderer-CRoDI77y.js +0 -1
  171. package/src/assets/web-panel/assets/MobileProjects-BmxmpTWz.js +0 -1
  172. package/src/assets/web-panel/assets/devWarning-D502_Z3w.js +0 -1
  173. package/src/assets/web-panel/assets/index-BrQ4nI4W.js +0 -1
  174. package/src/assets/web-panel/assets/index-C0_sewGO.js +0 -1
@@ -15,6 +15,7 @@
15
15
  */
16
16
 
17
17
  import fs from "fs";
18
+ import { isUtf8 } from "node:buffer";
18
19
  import {
19
20
  _isNonNegativeSafeInteger,
20
21
  _providerUsageCount,
@@ -59,6 +60,8 @@ import {
59
60
  TASK_RECOVERY_TOOLS,
60
61
  } from "../lib/task-progress-tracker.js";
61
62
  import { TOOL_RECOVERY_PAUSED_CODE } from "../lib/tool-recovery-result.js";
63
+ import { haiku55ThinkingParams } from "../lib/provider-options.js";
64
+ import { projectUsagePricingContext } from "../lib/usage-pricing-context.js";
62
65
  import broker from "../lib/process-execution-broker/index.js";
63
66
  import os from "os";
64
67
  import { createHash, randomUUID } from "node:crypto";
@@ -2024,6 +2027,20 @@ function applyLiteralEdit(content, oldStr, newStr, replaceAll) {
2024
2027
  return { count, newContent };
2025
2028
  }
2026
2029
 
2030
+ // Edits derive their output from the entire existing file. A replacement
2031
+ // decoder would silently rewrite unrelated legacy or malformed bytes.
2032
+ function readUtf8ForEdit(filePath) {
2033
+ const bytes = fs.readFileSync(filePath);
2034
+ if (!isUtf8(bytes)) {
2035
+ return {
2036
+ error: "File is not valid UTF-8; text edits require valid UTF-8 bytes.",
2037
+ code: "CC_EDIT_INVALID_UTF8",
2038
+ };
2039
+ }
2040
+ // Buffer decoding preserves a valid UTF-8 BOM and literal U+FFFD characters.
2041
+ return { content: bytes.toString("utf8") };
2042
+ }
2043
+
2027
2044
  /**
2028
2045
  * Compute the content an edit tool WOULD write, without writing it — the
2029
2046
  * left/right sides for an IDE diff review. Mirrors the corresponding
@@ -2085,7 +2102,9 @@ export function computeProposedEdit(name, args = {}, cwd = process.cwd()) {
2085
2102
  }
2086
2103
  if (name === "edit_file") {
2087
2104
  if (!fs.existsSync(filePath)) return null;
2088
- const content = fs.readFileSync(filePath, "utf8");
2105
+ const decoded = readUtf8ForEdit(filePath);
2106
+ if (decoded.error) return null;
2107
+ const content = decoded.content;
2089
2108
  if (
2090
2109
  typeof args.old_string !== "string" ||
2091
2110
  args.old_string === "" ||
@@ -2113,7 +2132,9 @@ export function computeProposedEdit(name, args = {}, cwd = process.cwd()) {
2113
2132
  if (name === "edit_file_hashed") {
2114
2133
  if (!fs.existsSync(filePath)) return null;
2115
2134
  if (!args.anchor_hash || typeof args.new_line !== "string") return null;
2116
- const original = fs.readFileSync(filePath, "utf8");
2135
+ const decoded = readUtf8ForEdit(filePath);
2136
+ if (decoded.error) return null;
2137
+ const original = decoded.content;
2117
2138
  const result = replaceByHash(original, {
2118
2139
  anchorHash: args.anchor_hash,
2119
2140
  expectedLine: args.expected_line,
@@ -5835,7 +5856,9 @@ async function executeToolInner(
5835
5856
  if (!fs.existsSync(filePath)) {
5836
5857
  return attachDescriptor({ error: `Notebook not found: ${filePath}` });
5837
5858
  }
5838
- const original = fs.readFileSync(filePath, "utf8");
5859
+ const decoded = readUtf8ForEdit(filePath);
5860
+ if (decoded.error) return attachDescriptor(decoded);
5861
+ const original = decoded.content;
5839
5862
  const res = editNotebookCell(original, args);
5840
5863
  if (res.error) return attachDescriptor({ error: res.error });
5841
5864
  const wrote = writeFileVerified(filePath, res.text);
@@ -5871,7 +5894,9 @@ async function executeToolInner(
5871
5894
  }
5872
5895
  const staleEdit = _checkFileFreshness(filePath);
5873
5896
  if (staleEdit) return attachDescriptor({ error: staleEdit });
5874
- const content = fs.readFileSync(filePath, "utf8");
5897
+ const decoded = readUtf8ForEdit(filePath);
5898
+ if (decoded.error) return attachDescriptor(decoded);
5899
+ const content = decoded.content;
5875
5900
  const replaceAll = args.replace_all === true;
5876
5901
  const { count, newContent } = applyLiteralEdit(
5877
5902
  content,
@@ -5971,7 +5996,9 @@ async function executeToolInner(
5971
5996
  }
5972
5997
  const staleHashed = _checkFileFreshness(filePath);
5973
5998
  if (staleHashed) return attachDescriptor({ error: staleHashed });
5974
- const original = fs.readFileSync(filePath, "utf8");
5999
+ const decoded = readUtf8ForEdit(filePath);
6000
+ if (decoded.error) return attachDescriptor(decoded);
6001
+ const original = decoded.content;
5975
6002
  const result = replaceByHash(original, {
5976
6003
  anchorHash: args.anchor_hash,
5977
6004
  expectedLine: args.expected_line,
@@ -11962,10 +11989,16 @@ export async function chatWithTools(rawMessages, options) {
11962
11989
  messages: _toAnthropicMessages(otherMsgs),
11963
11990
  tools: anthropicTools,
11964
11991
  };
11965
- // Extended thinking — OPT-IN via options.thinking; off by default so the
11966
- // request is byte-identical to before. Model-aware (adaptive+effort on Opus
11967
- // 4.6+/Sonnet 4.6, legacy enabled+budget else; nothing on Haiku). temperature
11968
- // is never sent. RUNTIME-UNVERIFIED: no Anthropic key here to E2E the
11992
+ if (
11993
+ effModel.toLowerCase() === "claude-haiku-5-5" &&
11994
+ body.messages.at(-1)?.role === "assistant"
11995
+ ) {
11996
+ throw new TypeError("Haiku 5.5 does not support assistant prefill.");
11997
+ }
11998
+ // Legacy models retain opt-in thinking. Exact Haiku 5.5 uses its documented
11999
+ // adaptive/medium default and accepts an explicit disabled setting.
12000
+ // Sampling parameters are never sent. RUNTIME-UNVERIFIED: no Anthropic key
12001
+ // here to E2E the
11969
12002
  // thinking-block signature replay (see cli_claude_code_parity_landed memory).
11970
12003
  const thinkingParams = _anthropicThinkingParams(
11971
12004
  effModel,
@@ -12046,6 +12079,11 @@ export async function chatWithTools(rawMessages, options) {
12046
12079
  const data = await response.json();
12047
12080
  const normalized = _normalizeAnthropicResponse(data);
12048
12081
  if (_hasCompleteProviderUsage(data.usage)) {
12082
+ const cacheCreationTokens = _optionalProviderUsageCount(
12083
+ data.usage,
12084
+ "cache_creation_input_tokens",
12085
+ "cache_creation_tokens",
12086
+ );
12049
12087
  normalized.usage = {
12050
12088
  // With prompt caching, Anthropic splits input into uncached
12051
12089
  // `input_tokens` + cache read/write — capture all three so cost
@@ -12066,11 +12104,11 @@ export async function chatWithTools(rawMessages, options) {
12066
12104
  "cache_read_input_tokens",
12067
12105
  "cache_read_tokens",
12068
12106
  ),
12069
- cache_creation_input_tokens: _optionalProviderUsageCount(
12070
- data.usage,
12071
- "cache_creation_input_tokens",
12072
- "cache_creation_tokens",
12073
- ),
12107
+ cache_creation_input_tokens: cacheCreationTokens,
12108
+ ...projectUsagePricingContext({
12109
+ ...data.usage,
12110
+ cache_creation_input_tokens: cacheCreationTokens,
12111
+ }),
12074
12112
  };
12075
12113
  }
12076
12114
  return normalized;
@@ -13067,11 +13105,12 @@ export function _openAIResponsesReasoningParams(
13067
13105
 
13068
13106
  /**
13069
13107
  * Decide the Anthropic `thinking` request params for a model. Returns null
13070
- * (off) unless the caller opts in via options.thinking (true | "think" |
13071
- * "hard" | "ultra"). Model-aware per the Claude API:
13108
+ * (off) on legacy models unless the caller opts in via options.thinking
13109
+ * (true | "think" | "hard" | "ultra"). Model-aware per the Claude API:
13110
+ * - exact Haiku 5.5 → adaptive/medium by default, explicitly disableable
13072
13111
  * - Opus 4.6/4.7/4.8, Sonnet 4.6 → adaptive thinking + output_config.effort
13073
13112
  * - Sonnet 4.5 / Opus 4.0-4.5 / older → legacy enabled+budget (< max_tokens)
13074
- * - anything else (e.g. Haiku) → null (no thinking)
13113
+ * - other models, including older Haiku → null (no explicit thinking)
13075
13114
  * temperature is never added (it 400s on Opus 4.7/4.8). Note: `xhigh`/`max`
13076
13115
  * effort are Opus-tier — on Sonnet they may error; left to the caller's intent.
13077
13116
  * RUNTIME-UNVERIFIED — no Anthropic key to validate the wire shape live.
@@ -13082,9 +13121,10 @@ export function _anthropicThinkingParams(
13082
13121
  options = {},
13083
13122
  maxTokens = 8192,
13084
13123
  ) {
13124
+ const m = String(model || "").toLowerCase();
13125
+ if (m === "claude-haiku-5-5") return haiku55ThinkingParams(m, options);
13085
13126
  const want = options?.thinking;
13086
13127
  if (!want) return null; // off by default → request unchanged
13087
- const m = String(model || "").toLowerCase();
13088
13128
  const adaptive = /opus-4-(6|7|8)/.test(m) || /sonnet-4-6/.test(m);
13089
13129
  const legacy =
13090
13130
  /sonnet-4-5/.test(m) ||
@@ -16320,12 +16360,27 @@ export async function* agentLoop(messages, options) {
16320
16360
  toolName,
16321
16361
  earlyAuthorityDenial,
16322
16362
  );
16363
+ const preExecutionDenied =
16364
+ earlyAuthorityDenial.code === TOOL_RECOVERY_PAUSED_CODE;
16365
+ if (preExecutionDenied) {
16366
+ // Declare the rejected request without an execution/ledger boundary
16367
+ // or its arguments. Consumers can pair the refusal by provider ID.
16368
+ yield {
16369
+ type: "tool-pre-execution-denied",
16370
+ tool: toolName,
16371
+ tool_use_id: call.id,
16372
+ turn_id: `${runId}:t${budget.consumed}`,
16373
+ preExecutionDenied: true,
16374
+ execution_started: false,
16375
+ };
16376
+ }
16323
16377
  yield {
16324
16378
  type: "tool-result",
16325
16379
  tool: toolName,
16326
16380
  result: earlyAuthorityDenial,
16327
16381
  error: earlyAuthorityDenial.error,
16328
16382
  execution_started: false,
16383
+ ...(preExecutionDenied ? { preExecutionDenied: true } : {}),
16329
16384
  tool_use_id: call.id,
16330
16385
  turn_id: `${runId}:t${budget.consumed}`,
16331
16386
  permission_decision_id: decision?.id || null,
@@ -3231,6 +3231,19 @@ async function runAgentHeadlessInWorkspace(
3231
3231
  });
3232
3232
  break;
3233
3233
  }
3234
+ case "tool-pre-execution-denied": {
3235
+ // A request declaration is not an invocation: do not start a
3236
+ // side effect, telemetry call, or persisted compact tool record.
3237
+ emitStream({
3238
+ type: "tool_use",
3239
+ id: event.tool_use_id,
3240
+ tool: event.tool,
3241
+ args: {},
3242
+ preExecutionDenied: true,
3243
+ execution_started: false,
3244
+ });
3245
+ break;
3246
+ }
3234
3247
  case "tool-executing": {
3235
3248
  const telemetryToolId = runtimeToolCallId(event.tool_use_id);
3236
3249
  const line = ` [${event.tool}] ${formatToolArgs(event.tool, event.args)}`;
@@ -3352,6 +3365,10 @@ async function runAgentHeadlessInWorkspace(
3352
3365
  ...(event.execution_started === false
3353
3366
  ? { execution_started: false }
3354
3367
  : {}),
3368
+ ...(event.preExecutionDenied === true &&
3369
+ event.execution_started === false
3370
+ ? { preExecutionDenied: true }
3371
+ : {}),
3355
3372
  error: err,
3356
3373
  result: event.result,
3357
3374
  ...(event.permission_decision_id
@@ -990,6 +990,19 @@ async function runTurn(
990
990
  }
991
991
  turnBindingFeed?.handleEvent(event);
992
992
  switch (event.type) {
993
+ case "tool-pre-execution-denied": {
994
+ // Keep the request/result pair visible without plan/ledger execution
995
+ // bookkeeping and without exposing rejected request arguments.
996
+ emit({
997
+ type: "tool_use",
998
+ id: event.tool_use_id,
999
+ tool: event.tool,
1000
+ args: {},
1001
+ preExecutionDenied: true,
1002
+ execution_started: false,
1003
+ });
1004
+ break;
1005
+ }
993
1006
  case "tool-executing": {
994
1007
  // Additive protocol-v1 correlation id ("tu-<n>", session-scoped —
995
1008
  // agent-sdk docs/PROTOCOL.md §1.2.1): the matching tool_result below
@@ -1129,6 +1142,10 @@ async function runTurn(
1129
1142
  ...(event.execution_started === false
1130
1143
  ? { execution_started: false }
1131
1144
  : {}),
1145
+ ...(event.preExecutionDenied === true &&
1146
+ event.execution_started === false
1147
+ ? { preExecutionDenied: true }
1148
+ : {}),
1132
1149
  error: err,
1133
1150
  result: event.result,
1134
1151
  ...(event.permission_decision_id
@@ -4,6 +4,8 @@
4
4
  * agent-core. Shared usage validation also serves non-streamed responses.
5
5
  */
6
6
 
7
+ import { projectUsagePricingContext } from "../lib/usage-pricing-context.js";
8
+
7
9
  export function _isNonNegativeSafeInteger(value) {
8
10
  return Number.isSafeInteger(value) && value >= 0;
9
11
  }
@@ -114,6 +116,10 @@ export function _anthropicReduceLine(state, raw, onToken, onThinking) {
114
116
  state.inputTokens = inputTokens;
115
117
  state.cacheReadTokens = cacheReadTokens;
116
118
  state.cacheCreationTokens = cacheCreationTokens;
119
+ state.pricingContext = projectUsagePricingContext({
120
+ ...usage,
121
+ cache_creation_input_tokens: cacheCreationTokens,
122
+ });
117
123
  }
118
124
  }
119
125
  } else if (obj.type === "content_block_start") {
@@ -215,6 +221,7 @@ export function _anthropicFinalize(state) {
215
221
  output_tokens: state.outputTokens,
216
222
  cache_read_input_tokens: state.cacheReadTokens,
217
223
  cache_creation_input_tokens: state.cacheCreationTokens,
224
+ ...state.pricingContext,
218
225
  };
219
226
  }
220
227
  return out;
@@ -1 +0,0 @@
1
- import{I as v,P as u,J as y,U as n,R as a,S,K as C,Q as x,V as w,_ as k,b as s}from"./vendor-Bn1JzzAn.js";import{_ as B}from"./index-BHeHyLRM.js";import"./icons-DG5UD-6K.js";const M={__name:"ChatBubbleRenderer",props:{event:{type:Object,required:!0}},setup(c,{expose:d}){d();const t=c,r=s(()=>{const e=t.event.content||{};return e.text||e.body||e.message||e.title||JSON.stringify(e).slice(0,200)}),i=s(()=>{const e=t.event.content||{};return e.from||e.sender||e.senderName||t.event.actor||"(unknown)"}),l=s(()=>{const e=(t.event.actor||"").toLowerCase();return e.includes("self")||e==="me"||e.endsWith("_self")}),o=s(()=>{const e=t.event.source.adapter||"";return e.startsWith("messaging-qq")?"magenta":e==="wechat"?"green":"blue"}),m=s(()=>{if(!t.event.occurredAt)return"";try{const e=new Date(t.event.occurredAt),p=e.getFullYear(),f=String(e.getMonth()+1).padStart(2,"0"),g=String(e.getDate()).padStart(2,"0"),b=String(e.getHours()).padStart(2,"0"),h=String(e.getMinutes()).padStart(2,"0");return`${p}-${f}-${g} ${b}:${h}`}catch{return""}}),_={props:t,messageText:r,actorLabel:i,isMine:l,adapterColor:o,formattedTime:m,computed:s};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}},N={class:"bubble"},T={class:"meta"},R={class:"actor"},V={class:"time"},q={class:"body"};function D(c,d,t,r,i,l){const o=v("a-tag");return u(),y("div",{class:k(["chat-row",{mine:r.isMine}])},[n("div",N,[n("div",T,[n("span",R,a(r.actorLabel),1),n("span",V,a(r.formattedTime),1)]),n("div",q,a(r.messageText),1),t.event.source.adapter?(u(),S(o,{key:0,class:"src",color:r.adapterColor},{default:C(()=>[x(a(t.event.source.adapter),1)]),_:1},8,["color"])):w("v-if",!0)])],2)}const A=B(M,[["render",D],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-yMktpQ/repo/packages/web-panel/src/components/pdh/renderers/ChatBubbleRenderer.vue"]]);export{A as default};
@@ -1,2 +0,0 @@
1
- import{I as s,J as g,U as d,c as n,K as _,V as k,S as V,R as S,F as W,Z as K,w as H,n as C,o as R,b as T,r,P as p,Q as M,_ as U}from"./vendor-Bn1JzzAn.js";import{_ as E,u as N}from"./index-BHeHyLRM.js";import{R as j}from"./icons-DG5UD-6K.js";const q={__name:"Logs",setup(Q,{expose:a}){a();const x=N(),e=r("status"),y=r(!1),v=r(""),i=r(""),c=r(""),f=r(!0),o=r(null),h={status:"status",doctor:"doctor","skill-sources":"skill sources","llm-providers":"llm providers"},m=T(()=>i.value.split(`
2
- `)),b=T(()=>{if(!c.value)return m.value;const t=c.value.toLowerCase();return m.value.filter(u=>u.toLowerCase().includes(t))});function L(t){return t.includes("✖")||t.includes("error")||t.includes("Error")||t.includes("failed")?"line-error":t.includes("✔")||t.includes("✓")||t.includes("success")||t.includes("running")?"line-success":t.includes("warn")||t.includes("Warn")||t.includes("○")?"line-warn":t.startsWith(" ")||t.startsWith(" ")?"line-indent":""}function l(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function w(t){if(!c.value)return t;const u=c.value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return t.replace(new RegExp(`(${u})`,"gi"),"<mark>$1</mark>")}async function O(){y.value=!0,v.value="",i.value="";const t=h[e.value]||"status";try{const{output:u}=await x.execute(t,3e4);i.value=u,f.value&&(await C(),o.value&&(o.value.scrollTop=o.value.scrollHeight))}catch(u){v.value=`执行失败: ${u.message}`,i.value=v.value}finally{y.value=!1}}H(b,async()=>{f.value&&(await C(),o.value&&(o.value.scrollTop=o.value.scrollHeight))}),R(O);const B={ws:x,activeTab:e,loading:y,error:v,rawOutput:i,searchQuery:c,autoScroll:f,logContainer:o,TAB_COMMANDS:h,allLines:m,filteredLines:b,lineClass:L,escapeHtml:l,highlightSearch:w,loadLog:O,ref:r,computed:T,watch:H,nextTick:C,onMounted:R,get ReloadOutlined(){return j},get useWsStore(){return N}};return Object.defineProperty(B,"__isScriptSetup",{enumerable:!1,value:!0}),B}},z={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},A={style:{display:"flex",gap:"10px",margin:"12px 0"}},D={ref:"logContainer",class:"log-box"},F={key:0,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},I={key:1,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},P={key:2},J=["innerHTML"];function Z(Q,a,x,e,y,v){const i=s("a-checkbox"),c=s("a-button"),f=s("a-space"),o=s("a-tab-pane"),h=s("a-tabs"),m=s("a-input-search"),b=s("a-tag"),L=s("a-spin");return p(),g("div",null,[d("div",z,[a[5]||(a[5]=d("div",null,[d("h2",{class:"page-title"},"日志查看"),d("p",{class:"page-sub"},"系统运行日志与诊断输出")],-1)),n(f,null,{default:_(()=>[n(i,{checked:e.autoScroll,"onUpdate:checked":a[0]||(a[0]=l=>e.autoScroll=l)},{default:_(()=>[...a[3]||(a[3]=[M("自动滚动",-1)])]),_:1},8,["checked"]),n(c,{type:"primary",ghost:"",loading:e.loading,onClick:e.loadLog},{icon:_(()=>[n(e.ReloadOutlined)]),default:_(()=>[a[4]||(a[4]=M(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),k(" Tab Selector "),n(h,{activeKey:e.activeTab,"onUpdate:activeKey":a[1]||(a[1]=l=>e.activeTab=l),onChange:e.loadLog,style:{"margin-bottom":"0"}},{default:_(()=>[n(o,{key:"status",tab:"系统状态"}),n(o,{key:"doctor",tab:"环境诊断"}),n(o,{key:"skill-sources",tab:"技能来源"}),n(o,{key:"llm-providers",tab:"LLM 提供商"})]),_:1},8,["activeKey"]),k(" Search Bar "),d("div",A,[n(m,{value:e.searchQuery,"onUpdate:value":a[2]||(a[2]=l=>e.searchQuery=l),placeholder:"搜索日志内容...","allow-clear":"",style:{flex:"1"}},null,8,["value"]),e.filteredLines.length!==e.allLines.length?(p(),V(b,{key:0,color:"blue"},{default:_(()=>[M(S(e.filteredLines.length)+" / "+S(e.allLines.length)+" 行 ",1)]),_:1})):k("v-if",!0)]),k(" Log Output "),d("div",D,[e.loading?(p(),g("div",F,[n(L,{size:"large"}),a[6]||(a[6]=d("div",{style:{"margin-top":"10px"}},"加载中...",-1))])):e.filteredLines.length?(p(),g("div",P,[(p(!0),g(W,null,K(e.filteredLines,(l,w)=>(p(),g("div",{key:w,class:U(["log-line",e.lineClass(l)]),innerHTML:e.highlightSearch(e.escapeHtml(l))},null,10,J))),128))])):(p(),g("div",I,S(e.error||"暂无日志内容,点击刷新加载"),1))],512)])}const $=E(q,[["render",Z],["__scopeId","data-v-8c2906e0"],["__file","/tmp/cc-web-panel-yMktpQ/repo/packages/web-panel/src/views/Logs.vue"]]);export{$ as default};
@@ -1 +0,0 @@
1
- import{P as c,J as p,b as s}from"./vendor-Bn1JzzAn.js";import{r as a}from"./markdown-Yo_c6Krv.js";import{_ as d}from"./index-BHeHyLRM.js";const _={__name:"MarkdownRenderer",props:{content:{type:String,default:""}},setup(t,{expose:o}){o();const e=t,r=s(()=>a(e.content||"")),n={props:e,rendered:r,computed:s,get renderMarkdown(){return a}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}},i=["innerHTML"];function m(t,o,e,r,n,u){return c(),p("div",{class:"markdown-content",innerHTML:r.rendered},null,8,i)}const M=d(_,[["render",m],["__scopeId","data-v-0b0b9f63"],["__file","/tmp/cc-web-panel-yMktpQ/repo/packages/web-panel/src/components/MarkdownRenderer.vue"]]);export{M};
@@ -1 +0,0 @@
1
- import{I as n,J as g,c as l,K as r,N as u,P as h,U as o,R as t,Q as b}from"./vendor-Bn1JzzAn.js";import{_ as v,b as m}from"./index-BHeHyLRM.js";import{a8 as y,M}from"./icons-DG5UD-6K.js";const B={__name:"MobileProjects",setup(p,{expose:i}){i();const c=u(),{t:e}=m();function a(){c.push("/projects")}function _(){c.push("/mobile-bridge")}const s={router:c,t:e,goToProjects:a,goToMobileBridge:_,get useRouter(){return u},get useI18n(){return m},get MobileOutlined(){return M},get FolderOutlined(){return y}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},x={class:"mobile-projects-placeholder"},O={class:"title"},k={class:"subtitle"},w={class:"explainer"};function T(p,i,c,e,a,_){const s=n("a-alert"),d=n("a-button"),f=n("a-space"),P=n("a-empty"),j=n("a-card");return h(),g("div",x,[l(j,null,{default:r(()=>[l(P,{description:!1},{image:r(()=>[l(e.MobileOutlined,{style:{fontSize:"64px",color:"#bfbfbf"}})]),default:r(()=>[o("h2",O,t(e.t("mobileProjects.title")),1),o("p",k,t(e.t("mobileProjects.subtitle")),1),l(s,{message:e.t("mobileProjects.v02Banner"),type:"info","show-icon":"",class:"banner"},null,8,["message"]),o("div",w,[o("h3",null,t(e.t("mobileProjects.currentDirection")),1),o("p",null,t(e.t("mobileProjects.currentDirectionBody")),1),o("ul",null,[o("li",null,t(e.t("mobileProjects.stepPhone")),1),o("li",null,t(e.t("mobileProjects.stepTap")),1),o("li",null,t(e.t("mobileProjects.stepPull")),1)]),o("h3",null,t(e.t("mobileProjects.reverseDirection")),1),o("p",null,t(e.t("mobileProjects.reverseDirectionBody")),1)]),l(f,{class:"actions"},{default:r(()=>[l(d,{type:"primary",onClick:e.goToProjects},{default:r(()=>[l(e.FolderOutlined),b(" "+t(e.t("mobileProjects.viewLocalProjects")),1)]),_:1}),l(d,{onClick:e.goToMobileBridge},{default:r(()=>[l(e.MobileOutlined),b(" "+t(e.t("mobileProjects.checkBridge")),1)]),_:1})]),_:1})]),_:1})]),_:1})])}const N=v(B,[["render",T],["__scopeId","data-v-9262cc45"],["__file","/tmp/cc-web-panel-yMktpQ/repo/packages/web-panel/src/views/MobileProjects.vue"]]);export{N as default};
@@ -1 +0,0 @@
1
- import{Q as r}from"./index-BHeHyLRM.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
@@ -1 +0,0 @@
1
- import{C as o}from"./Col-91tl_err.js";import{a0 as t}from"./index-BHeHyLRM.js";import"./vendor-Bn1JzzAn.js";import"./index-B4Sf1AMk.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};
@@ -1 +0,0 @@
1
- import{A as o}from"./Row-Do2UbYkf.js";import{a0 as t}from"./index-BHeHyLRM.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-CRft03Vk.js";import"./useFlexGapSupport-BAuxWB7K.js";import"./styleChecker-Bw5Gw_2w.js";import"./index-B4Sf1AMk.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};