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
@@ -1 +1 @@
1
- import{u as v}from"./index-BHeHyLRM.js";import{u as _}from"./useShellMode-CgR0wCYM.js";function d(r){if(!r)return r;if(r.error)throw new Error(r.error);return r.result!==void 0?r.result:r}async function p(r,s={},e=!0){try{if(e!==!0||!r||typeof r.sendRaw!="function")return{status:"unavailable",path:null};const a=await r.sendRaw({type:"fs.openDirectory",title:s.title},6e4);if(a&&(a.ok===!1||a.error))return{status:"unavailable",path:null};const t=a&&a.result!==void 0?a.result:a;return t&&(t.ok===!1||t.error||t.unsupported===!0)?{status:"unavailable",path:null}:t&&t.canceled===!0?{status:"cancelled",path:null}:t&&typeof t.path=="string"&&t.path.length>0?{status:"selected",path:t.path}:{status:"unavailable",path:null}}catch{return{status:"unavailable",path:null}}}function b(r,s,e,a,t){return typeof r.onMessage!="function"||typeof r.sendRaw!="function"?r.sendRaw({type:s,...e},t).then(d):new Promise((n,u)=>{const l=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`,w=`${s}.event`,m=`${s}.end`;let c=!1,h=()=>{};const o=(i,f)=>{if(!c){c=!0,clearTimeout(g);try{h()}catch{}i(f)}},g=setTimeout(()=>{o(u,new Error(`stream timeout (${t}ms): ${s}`))},t),y=r.onMessage(i=>{if(!(c||!i)&&!(i.id!==l&&i.requestId!==l)){if(i.type===w){if(typeof a=="function")try{a(i.event||i)}catch{}return}if(i.type===m){o(n,d(i));return}i.type==="error"&&o(u,new Error(i.message||"stream error"))}});h=typeof y=="function"?y:()=>{},Promise.resolve(r.sendRaw({id:l,type:s,...e},t)).catch(()=>{})})}function k(){const r=v(),s=_(),e=(a,t={},n=3e4)=>r.sendRaw({type:a,...t},n).then(d);return{async health(){return await e("personal-data-hub.health",{},8e3)},async stats(){return await e("personal-data-hub.stats",{},8e3)},async listAdapters(){return await e("personal-data-hub.list-adapters",{},5e3)},async pickFile(a={}){try{const t=await r.sendRaw({type:"fs.openDialog",title:a.title,filters:a.filters},6e4),n=t&&t.result!==void 0?t.result:t,u=n&&typeof n.path=="string"?n.path:n&&typeof n.filePath=="string"?n.filePath:null;return n&&n.canceled!==!0&&u?u:null}catch{return null}},async pickDirectoryResult(a={}){return await p(r,a,s.isEmbedded)},async pickDirectory(a={}){const t=await p(r,a,s.isEmbedded);return t.status==="selected"?t.path:null},async adapterReadiness(a){return await e("personal-data-hub.adapter-readiness",Number.isInteger(a)?{timeoutMs:a}:{},15e3)},async syncAdapter(a,t={}){return await e("personal-data-hub.sync-adapter",{name:a,options:t},6e5)},async syncAll(a={}){return await e("personal-data-hub.sync-all",{options:a},6e5)},async registerMock({name:a="mock",count:t=20,seed:n=1}={}){return await e("personal-data-hub.register-mock",{name:a,count:t,seed:n})},async unregister(a){return await e("personal-data-hub.unregister",{name:a})},async ask(a,t={}){return await e("personal-data-hub.ask",{question:a,options:t},18e4)},async queryEvents(a={}){return await e("personal-data-hub.query-events",a,1e4)},async recentAudit(a={}){return await e("personal-data-hub.recent-audit",a,1e4)},async searchEvents(a={}){return await e("personal-data-hub.search-events",a,15e3)},async facetCounts(a={}){return await e("personal-data-hub.facet-counts",a,1e4)},async testEmailAuth(a){return await e("personal-data-hub.test-email-auth",{account:a},3e4)},async registerEmail(a,t={}){return await e("personal-data-hub.register-email",{account:a,opts:t},15e3)},async unregisterEmail(a){return await e("personal-data-hub.unregister-email",{email:a},5e3)},async listEmailAccounts(){return await e("personal-data-hub.list-email-accounts",{},5e3)},async activateEmail(a){return await e("personal-data-hub.activate-email",{email:a},5e3)},async eventDetail(a){return await e("personal-data-hub.event-detail",{eventId:a},5e3)},async syncAdapterStream(a,t={},n){return await b(r,"personal-data-hub.sync-adapter-stream",{name:a,options:t},n,6e5)},async syncAllStream(a={},t){return await b(r,"personal-data-hub.sync-all-stream",{options:a},t,9e5)},async registerAlipay(a,t={}){return await e("personal-data-hub.register-alipay",{account:a,opts:t},15e3)},async unregisterAlipay(a){return await e("personal-data-hub.unregister-alipay",{email:a},5e3)},async listAlipayAccounts(){return await e("personal-data-hub.list-alipay-accounts",{},5e3)},async activateAlipay(a){return await e("personal-data-hub.activate-alipay",{email:a},5e3)},async importAlipayBill({zipPath:a,csvPath:t,zipPassword:n}={}){return await e("personal-data-hub.import-alipay-bill",{zipPath:a,csvPath:t,zipPassword:n},3e5)},async reviewQueueList(a=50){return await e("personal-data-hub.review-queue-list",{limit:a},5e3)},async reviewDecision(a,t){return await e("personal-data-hub.review-decision",{reviewId:a,decision:t},5e3)},async manualMerge(a,t){return await e("personal-data-hub.manual-merge",{aId:a,bId:t},5e3)},async manualUnmerge(a){return await e("personal-data-hub.manual-unmerge",{personId:a},5e3)},async resolverDrain(a=50){return await e("personal-data-hub.resolver-drain",{limit:a},18e4)},async resolverStats(){return await e("personal-data-hub.resolver-stats",{},5e3)},async skillsList(){return await e("personal-data-hub.skills-list",{},5e3)},async runSkill(a,t={}){return await e("personal-data-hub.run-skill",{name:a,options:t},12e4)},async openAichatLogin(a,t={}){return await e("personal-data-hub.aichat-open-login",{vendor:a,opts:t},1e4)},async probeAichatCookies(a,t){return await e("personal-data-hub.aichat-probe-cookies",{vendor:a,cookieHeader:t},1e4)},async registerAichatVendor(a,t,n={}){return await e("personal-data-hub.aichat-register-vendor",{vendor:a,cookies:t,opts:n},3e4)},async rotateAichatLogin(a){return await e("personal-data-hub.aichat-rotate-login",{vendor:a},1e4)},async listAichatAccounts(){return await e("personal-data-hub.list-aichat-accounts",{},5e3)},async unregisterAichat(a){return await e("personal-data-hub.unregister-aichat",{vendor:a},5e3)},async aichatHealthCheckOnce(){return await e("personal-data-hub.aichat-health-check-once",{},3e4)},async probeWechatEnv(){return await e("personal-data-hub.wechat-env-probe",{},15e3)},async registerWechat({account:a,dbPath:t,wechatDataPath:n,fridaOpts:u,keyProviderOverride:l}={}){return await e("personal-data-hub.register-wechat",{account:a,dbPath:t,wechatDataPath:n,fridaOpts:u,keyProviderOverride:l},45e3)},async listWechatAccounts(){return await e("personal-data-hub.list-wechat-accounts",{},5e3)},async activateWechat(a,t={}){return await e("personal-data-hub.activate-wechat",{uin:a,fridaOpts:t.fridaOpts,keyProviderOverride:t.keyProviderOverride},45e3)},async unregisterWechat(a){return await e("personal-data-hub.unregister-wechat",{uin:a},5e3)},async bilibiliAdbSync(a={}){return await e("personal-data-hub.bilibili-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bilibiliAdbDoctor(){return await e("personal-data-hub.bilibili-adb-doctor",{},15e3)},async weiboAdbSync(a={}){return await e("personal-data-hub.weibo-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async xhsAdbSync(a={}){return await e("personal-data-hub.xhs-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async toutiaoAdbSync(a={}){return await e("personal-data-hub.toutiao-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},9e4)},async kuaishouAdbSync(a={}){return await e("personal-data-hub.kuaishou-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bridgeDoctor(){return await e("personal-data-hub.bridge-doctor",{},6e4)},async douyinAdbSync(a={}){return await e("personal-data-hub.douyin-adb-sync",{uid:a.uid,limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)}}}export{k as u};
1
+ import{u as v}from"./index-BWkKE8Oj.js";import{u as _}from"./useShellMode-CgR0wCYM.js";function d(r){if(!r)return r;if(r.error)throw new Error(r.error);return r.result!==void 0?r.result:r}async function p(r,s={},e=!0){try{if(e!==!0||!r||typeof r.sendRaw!="function")return{status:"unavailable",path:null};const a=await r.sendRaw({type:"fs.openDirectory",title:s.title},6e4);if(a&&(a.ok===!1||a.error))return{status:"unavailable",path:null};const t=a&&a.result!==void 0?a.result:a;return t&&(t.ok===!1||t.error||t.unsupported===!0)?{status:"unavailable",path:null}:t&&t.canceled===!0?{status:"cancelled",path:null}:t&&typeof t.path=="string"&&t.path.length>0?{status:"selected",path:t.path}:{status:"unavailable",path:null}}catch{return{status:"unavailable",path:null}}}function b(r,s,e,a,t){return typeof r.onMessage!="function"||typeof r.sendRaw!="function"?r.sendRaw({type:s,...e},t).then(d):new Promise((n,u)=>{const l=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random().toString(36).slice(2)}`,w=`${s}.event`,m=`${s}.end`;let c=!1,h=()=>{};const o=(i,f)=>{if(!c){c=!0,clearTimeout(g);try{h()}catch{}i(f)}},g=setTimeout(()=>{o(u,new Error(`stream timeout (${t}ms): ${s}`))},t),y=r.onMessage(i=>{if(!(c||!i)&&!(i.id!==l&&i.requestId!==l)){if(i.type===w){if(typeof a=="function")try{a(i.event||i)}catch{}return}if(i.type===m){o(n,d(i));return}i.type==="error"&&o(u,new Error(i.message||"stream error"))}});h=typeof y=="function"?y:()=>{},Promise.resolve(r.sendRaw({id:l,type:s,...e},t)).catch(()=>{})})}function k(){const r=v(),s=_(),e=(a,t={},n=3e4)=>r.sendRaw({type:a,...t},n).then(d);return{async health(){return await e("personal-data-hub.health",{},8e3)},async stats(){return await e("personal-data-hub.stats",{},8e3)},async listAdapters(){return await e("personal-data-hub.list-adapters",{},5e3)},async pickFile(a={}){try{const t=await r.sendRaw({type:"fs.openDialog",title:a.title,filters:a.filters},6e4),n=t&&t.result!==void 0?t.result:t,u=n&&typeof n.path=="string"?n.path:n&&typeof n.filePath=="string"?n.filePath:null;return n&&n.canceled!==!0&&u?u:null}catch{return null}},async pickDirectoryResult(a={}){return await p(r,a,s.isEmbedded)},async pickDirectory(a={}){const t=await p(r,a,s.isEmbedded);return t.status==="selected"?t.path:null},async adapterReadiness(a){return await e("personal-data-hub.adapter-readiness",Number.isInteger(a)?{timeoutMs:a}:{},15e3)},async syncAdapter(a,t={}){return await e("personal-data-hub.sync-adapter",{name:a,options:t},6e5)},async syncAll(a={}){return await e("personal-data-hub.sync-all",{options:a},6e5)},async registerMock({name:a="mock",count:t=20,seed:n=1}={}){return await e("personal-data-hub.register-mock",{name:a,count:t,seed:n})},async unregister(a){return await e("personal-data-hub.unregister",{name:a})},async ask(a,t={}){return await e("personal-data-hub.ask",{question:a,options:t},18e4)},async queryEvents(a={}){return await e("personal-data-hub.query-events",a,1e4)},async recentAudit(a={}){return await e("personal-data-hub.recent-audit",a,1e4)},async searchEvents(a={}){return await e("personal-data-hub.search-events",a,15e3)},async facetCounts(a={}){return await e("personal-data-hub.facet-counts",a,1e4)},async testEmailAuth(a){return await e("personal-data-hub.test-email-auth",{account:a},3e4)},async registerEmail(a,t={}){return await e("personal-data-hub.register-email",{account:a,opts:t},15e3)},async unregisterEmail(a){return await e("personal-data-hub.unregister-email",{email:a},5e3)},async listEmailAccounts(){return await e("personal-data-hub.list-email-accounts",{},5e3)},async activateEmail(a){return await e("personal-data-hub.activate-email",{email:a},5e3)},async eventDetail(a){return await e("personal-data-hub.event-detail",{eventId:a},5e3)},async syncAdapterStream(a,t={},n){return await b(r,"personal-data-hub.sync-adapter-stream",{name:a,options:t},n,6e5)},async syncAllStream(a={},t){return await b(r,"personal-data-hub.sync-all-stream",{options:a},t,9e5)},async registerAlipay(a,t={}){return await e("personal-data-hub.register-alipay",{account:a,opts:t},15e3)},async unregisterAlipay(a){return await e("personal-data-hub.unregister-alipay",{email:a},5e3)},async listAlipayAccounts(){return await e("personal-data-hub.list-alipay-accounts",{},5e3)},async activateAlipay(a){return await e("personal-data-hub.activate-alipay",{email:a},5e3)},async importAlipayBill({zipPath:a,csvPath:t,zipPassword:n}={}){return await e("personal-data-hub.import-alipay-bill",{zipPath:a,csvPath:t,zipPassword:n},3e5)},async reviewQueueList(a=50){return await e("personal-data-hub.review-queue-list",{limit:a},5e3)},async reviewDecision(a,t){return await e("personal-data-hub.review-decision",{reviewId:a,decision:t},5e3)},async manualMerge(a,t){return await e("personal-data-hub.manual-merge",{aId:a,bId:t},5e3)},async manualUnmerge(a){return await e("personal-data-hub.manual-unmerge",{personId:a},5e3)},async resolverDrain(a=50){return await e("personal-data-hub.resolver-drain",{limit:a},18e4)},async resolverStats(){return await e("personal-data-hub.resolver-stats",{},5e3)},async skillsList(){return await e("personal-data-hub.skills-list",{},5e3)},async runSkill(a,t={}){return await e("personal-data-hub.run-skill",{name:a,options:t},12e4)},async openAichatLogin(a,t={}){return await e("personal-data-hub.aichat-open-login",{vendor:a,opts:t},1e4)},async probeAichatCookies(a,t){return await e("personal-data-hub.aichat-probe-cookies",{vendor:a,cookieHeader:t},1e4)},async registerAichatVendor(a,t,n={}){return await e("personal-data-hub.aichat-register-vendor",{vendor:a,cookies:t,opts:n},3e4)},async rotateAichatLogin(a){return await e("personal-data-hub.aichat-rotate-login",{vendor:a},1e4)},async listAichatAccounts(){return await e("personal-data-hub.list-aichat-accounts",{},5e3)},async unregisterAichat(a){return await e("personal-data-hub.unregister-aichat",{vendor:a},5e3)},async aichatHealthCheckOnce(){return await e("personal-data-hub.aichat-health-check-once",{},3e4)},async probeWechatEnv(){return await e("personal-data-hub.wechat-env-probe",{},15e3)},async registerWechat({account:a,dbPath:t,wechatDataPath:n,fridaOpts:u,keyProviderOverride:l}={}){return await e("personal-data-hub.register-wechat",{account:a,dbPath:t,wechatDataPath:n,fridaOpts:u,keyProviderOverride:l},45e3)},async listWechatAccounts(){return await e("personal-data-hub.list-wechat-accounts",{},5e3)},async activateWechat(a,t={}){return await e("personal-data-hub.activate-wechat",{uin:a,fridaOpts:t.fridaOpts,keyProviderOverride:t.keyProviderOverride},45e3)},async unregisterWechat(a){return await e("personal-data-hub.unregister-wechat",{uin:a},5e3)},async bilibiliAdbSync(a={}){return await e("personal-data-hub.bilibili-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bilibiliAdbDoctor(){return await e("personal-data-hub.bilibili-adb-doctor",{},15e3)},async weiboAdbSync(a={}){return await e("personal-data-hub.weibo-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async xhsAdbSync(a={}){return await e("personal-data-hub.xhs-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)},async toutiaoAdbSync(a={}){return await e("personal-data-hub.toutiao-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},9e4)},async kuaishouAdbSync(a={}){return await e("personal-data-hub.kuaishou-adb-sync",{limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},12e4)},async bridgeDoctor(){return await e("personal-data-hub.bridge-doctor",{},6e4)},async douyinAdbSync(a={}){return await e("personal-data-hub.douyin-adb-sync",{uid:a.uid,limits:a.limits,stagingDir:a.stagingDir,displayName:a.displayName},6e4)}}}export{k as u};
@@ -1 +1 @@
1
- import{N as i,h as a,w as l}from"./index-BHeHyLRM.js";import{a7 as o,k as g,C as d,F as f,A as p}from"./vendor-Bn1JzzAn.js";function c(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,u=e;if(Array.isArray(e)&&(u=i(e)[0]),!u)return null;const n=o(u,r,s);return n.props=t?a(a({},n.props),r):n.props,l(typeof n.props.class!="object","class must be string"),n}function V(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return e.map(s=>c(s,r,t))}function v(e,r,t){p(o(e,a({},r)),t)}const m=e=>(e||[]).some(r=>g(r)?!(r.type===d||r.type===f&&!m(r.children)):!0)?e:null;function h(e,r,t,s){var u;const n=(u=e[r])===null||u===void 0?void 0:u.call(e,t);return m(n)?n:s?.()}export{h as a,V as b,c,v as t};
1
+ import{N as i,h as a,w as l}from"./index-BWkKE8Oj.js";import{a7 as o,k as g,C as d,F as f,A as p}from"./vendor-Bn1JzzAn.js";function c(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,u=e;if(Array.isArray(e)&&(u=i(e)[0]),!u)return null;const n=o(u,r,s);return n.props=t?a(a({},n.props),r):n.props,l(typeof n.props.class!="object","class must be string"),n}function V(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return e.map(s=>c(s,r,t))}function v(e,r,t){p(o(e,a({},r)),t)}const m=e=>(e||[]).some(r=>g(r)?!(r.type===d||r.type===f&&!m(r.children)):!0)?e:null;function h(e,r,t,s){var u;const n=(u=e[r])===null||u===void 0?void 0:u.call(e,t);return m(n)?n:s?.()}export{h as a,V as b,c,v as t};
@@ -1,4 +1,4 @@
1
- import{K as o}from"./index-BHeHyLRM.js";import{i as f}from"./motion-1r5YB22w.js";const c=new o("antZoomIn",{"0%":{transform:"scale(0.2)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),y=new o("antZoomOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.2)",opacity:0}}),a=new o("antZoomBigIn",{"0%":{transform:"scale(0.8)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),s=new o("antZoomBigOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.8)",opacity:0}}),g=new o("antZoomUpIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 0%"}}),O=new o("antZoomUpOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 0%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0}}),l=new o("antZoomLeftIn",{"0%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"0% 50%"}}),u=new o("antZoomLeftOut",{"0%":{transform:"scale(1)",transformOrigin:"0% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0}}),p=new o("antZoomRightIn",{"0%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"100% 50%"}}),z=new o("antZoomRightOut",{"0%":{transform:"scale(1)",transformOrigin:"100% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0}}),K=new o("antZoomDownIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 100%"}}),w=new o("antZoomDownOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 100%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0}}),I={zoom:{inKeyframes:c,outKeyframes:y},"zoom-big":{inKeyframes:a,outKeyframes:s},"zoom-big-fast":{inKeyframes:a,outKeyframes:s},"zoom-left":{inKeyframes:l,outKeyframes:u},"zoom-right":{inKeyframes:p,outKeyframes:z},"zoom-up":{inKeyframes:g,outKeyframes:O},"zoom-down":{inKeyframes:K,outKeyframes:w}},h=(n,r)=>{const{antCls:m}=n,t=`${m}-${r}`,{inKeyframes:i,outKeyframes:e}=I[r];return[f(t,i,e,r==="zoom-big-fast"?n.motionDurationFast:n.motionDurationMid),{[`
1
+ import{K as o}from"./index-BWkKE8Oj.js";import{i as f}from"./motion-Cqp0nx5A.js";const c=new o("antZoomIn",{"0%":{transform:"scale(0.2)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),y=new o("antZoomOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.2)",opacity:0}}),a=new o("antZoomBigIn",{"0%":{transform:"scale(0.8)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),s=new o("antZoomBigOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.8)",opacity:0}}),g=new o("antZoomUpIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 0%"}}),O=new o("antZoomUpOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 0%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0}}),l=new o("antZoomLeftIn",{"0%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"0% 50%"}}),u=new o("antZoomLeftOut",{"0%":{transform:"scale(1)",transformOrigin:"0% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0}}),p=new o("antZoomRightIn",{"0%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"100% 50%"}}),z=new o("antZoomRightOut",{"0%":{transform:"scale(1)",transformOrigin:"100% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0}}),K=new o("antZoomDownIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 100%"}}),w=new o("antZoomDownOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 100%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0}}),I={zoom:{inKeyframes:c,outKeyframes:y},"zoom-big":{inKeyframes:a,outKeyframes:s},"zoom-big-fast":{inKeyframes:a,outKeyframes:s},"zoom-left":{inKeyframes:l,outKeyframes:u},"zoom-right":{inKeyframes:p,outKeyframes:z},"zoom-up":{inKeyframes:g,outKeyframes:O},"zoom-down":{inKeyframes:K,outKeyframes:w}},h=(n,r)=>{const{antCls:m}=n,t=`${m}-${r}`,{inKeyframes:i,outKeyframes:e}=I[r];return[f(t,i,e,r==="zoom-big-fast"?n.motionDurationFast:n.motionDurationMid),{[`
2
2
  ${t}-enter,
3
3
  ${t}-appear
4
4
  `]:{transform:"scale(0)",opacity:0,animationTimingFunction:n.motionEaseOutCirc,"&-prepare":{transform:"none"}},[`${t}-leave`]:{animationTimingFunction:n.motionEaseInOutCirc}}]};export{h as i,c as z};
@@ -8,7 +8,7 @@
8
8
  // Injected by web-ui-server.js at serve time
9
9
  window.__CC_CONFIG__ = __CC_CONFIG_PLACEHOLDER__;
10
10
  </script>
11
- <script type="module" crossorigin src="./assets/index-BHeHyLRM.js"></script>
11
+ <script type="module" crossorigin src="./assets/index-BWkKE8Oj.js"></script>
12
12
  <link rel="modulepreload" crossorigin href="./assets/vendor-Bn1JzzAn.js">
13
13
  <link rel="modulepreload" crossorigin href="./assets/icons-DG5UD-6K.js">
14
14
  <link rel="stylesheet" crossorigin href="./assets/index-Cq93VfoF.css">
@@ -1,6 +1,19 @@
1
1
  {
2
2
  "source": "CHANGELOG.md",
3
3
  "releases": [
4
+ {
5
+ "productVersion": null,
6
+ "cliVersion": "0.166.99",
7
+ "cliVersions": ["0.166.99"],
8
+ "date": null,
9
+ "title": "",
10
+ "sections": [
11
+ {
12
+ "heading": "Fixed - cc CLI 0.166.99: preserve file bytes and exact model contracts",
13
+ "body": "- Reject invalid UTF-8 in literal, hashed and notebook edits and matching IDE\n previews without rewriting target bytes; preserve valid BOM, Unicode and CRLF.\n- Add the exact Haiku 5.5 model contract, adaptive effort combinations, request\n output limits and per-request 100K pricing tiers with cache TTL and region\n evidence. Preserve the default output budget and leave unsupported or missing\n actual pricing evidence unpriced. Correct Sonnet 5.5 cache-read pricing.\n- Validate search patterns and correlate paused tool requests without execution.\n- Keep HTTP and failed Responses verdicts terminal before matching connection\n wording, preserving genuine bounded network recovery.\n- Pair VS Code 0.37.143 and JetBrains 0.4.161 with the publicly available CLI\n only after exact-commit gates. VS Code delays periodic projection reads during\n actions, discards obsolete results and isolates refresh state across panels.\n- Retain the macOS needs-input 2s/100-sample gate and its original failure.\n Formal 36+9, native/durable authority and long-term acceptance remain open."
14
+ }
15
+ ]
16
+ },
4
17
  {
5
18
  "productVersion": null,
6
19
  "cliVersion": "0.166.98",
@@ -73,6 +73,14 @@ export class CostBudget {
73
73
  outputTokens: usage?.output_tokens || 0,
74
74
  cacheReadTokens,
75
75
  cacheCreationTokens,
76
+ cacheCreation5mTokens: pricingContext.cacheCreation5mTokens,
77
+ cacheCreation1hTokens: pricingContext.cacheCreation1hTokens,
78
+ cacheCreationInvalid: pricingContext.cacheCreationInvalid,
79
+ pricingContextInvalid:
80
+ pricingContext.pricingContextInvalid === true ||
81
+ (String(provider).toLowerCase() === "anthropic" &&
82
+ String(model).toLowerCase() === "claude-haiku-5-5" &&
83
+ pricingContext.regional_processing == null),
76
84
  serviceTier: pricingContext.service_tier ?? "standard",
77
85
  regionalProcessing: pricingContext.regional_processing === true,
78
86
  table: this.table,
@@ -216,13 +216,18 @@ export function normalizePricingTerms(value) {
216
216
  const allowed = new Set([
217
217
  "cacheReadMultiplier",
218
218
  "cacheWriteMultiplier",
219
+ "cacheWrite1hMultiplier",
219
220
  "longContext",
220
221
  "serviceMultipliers",
221
222
  ]);
222
223
  if (!object(value) || Reflect.ownKeys(value).some((key) => !allowed.has(key)))
223
224
  fail();
224
225
  const result = {};
225
- for (const key of ["cacheReadMultiplier", "cacheWriteMultiplier"]) {
226
+ for (const key of [
227
+ "cacheReadMultiplier",
228
+ "cacheWriteMultiplier",
229
+ "cacheWrite1hMultiplier",
230
+ ]) {
226
231
  if (!Object.hasOwn(value, key)) continue;
227
232
  if (!finite(value[key])) fail();
228
233
  result[key] = value[key];
@@ -289,8 +294,15 @@ export function lookupRate(provider, model, table = PRICE_TABLE) {
289
294
  // An unrecognized new generation must not inherit an older family price.
290
295
  // Explicit operator overrides remain authoritative.
291
296
  if (
292
- ["opus", "sonnet"].includes(e.match) &&
293
- Number(/^claude-(?:opus|sonnet)-(\d+)(?:[.-]|$)/u.exec(m)?.[1]) >= 5 &&
297
+ e.match === "haiku" &&
298
+ /(?:^|[.:/])(?:claude-)?haiku-(?:[5-9]|\d{2,})(?:[.-]|$)/u.test(m) &&
299
+ !e.explicitOverride
300
+ )
301
+ continue;
302
+ if (
303
+ ["opus", "sonnet", "haiku"].includes(e.match) &&
304
+ Number(/^claude-(?:opus|sonnet|haiku)-(\d+)(?:[.-]|$)/u.exec(m)?.[1]) >=
305
+ 5 &&
294
306
  !e.explicitOverride
295
307
  )
296
308
  continue;
@@ -337,18 +349,42 @@ export function estimateCost({
337
349
  outputTokens = 0,
338
350
  cacheReadTokens = 0,
339
351
  cacheCreationTokens = 0,
352
+ cacheCreation5mTokens,
353
+ cacheCreation1hTokens,
354
+ cacheCreationInvalid = false,
355
+ pricingContextInvalid = false,
340
356
  requestInputTokens,
341
357
  serviceTier = "standard",
342
358
  regionalProcessing = false,
343
359
  table,
344
360
  } = {}) {
345
361
  const rate = lookupRate(provider, model, table);
362
+ const splitPresent =
363
+ cacheCreation5mTokens != null || cacheCreation1hTokens != null;
364
+ const splitValid =
365
+ splitPresent &&
366
+ Number.isSafeInteger(cacheCreation5mTokens) &&
367
+ cacheCreation5mTokens >= 0 &&
368
+ Number.isSafeInteger(cacheCreation1hTokens) &&
369
+ cacheCreation1hTokens >= 0 &&
370
+ cacheCreation5mTokens + cacheCreation1hTokens === cacheCreationTokens;
371
+ const missingCacheEvidence =
372
+ cacheCreationInvalid ||
373
+ (splitPresent && !splitValid) ||
374
+ (rate?.terms?.cacheWrite1hMultiplier != null &&
375
+ cacheCreationTokens > 0 &&
376
+ !splitValid);
346
377
  const tierMultiplier = rate?.terms?.serviceMultipliers
347
378
  ? Object.hasOwn(rate.terms.serviceMultipliers, serviceTier)
348
379
  ? rate.terms.serviceMultipliers[serviceTier]
349
380
  : null
350
381
  : 1;
351
- if (!rate || tierMultiplier == null) {
382
+ if (
383
+ !rate ||
384
+ tierMultiplier == null ||
385
+ missingCacheEvidence ||
386
+ pricingContextInvalid
387
+ ) {
352
388
  return {
353
389
  inputCost: 0,
354
390
  outputCost: 0,
@@ -384,9 +420,14 @@ export function estimateCost({
384
420
  inputMultiplier *
385
421
  multiplier;
386
422
  const cacheCreationCost =
387
- (Number(cacheCreationTokens) / 1e6) *
423
+ ((splitValid
424
+ ? cacheCreation5mTokens *
425
+ (rate.terms?.cacheWriteMultiplier ?? CACHE_WRITE_MULTIPLIER) +
426
+ cacheCreation1hTokens * (rate.terms?.cacheWrite1hMultiplier ?? 2)
427
+ : Number(cacheCreationTokens) *
428
+ (rate.terms?.cacheWriteMultiplier ?? CACHE_WRITE_MULTIPLIER)) /
429
+ 1e6) *
388
430
  rate.in *
389
- (rate.terms?.cacheWriteMultiplier ?? CACHE_WRITE_MULTIPLIER) *
390
431
  inputMultiplier *
391
432
  multiplier;
392
433
  return {
@@ -419,6 +460,15 @@ export function priceRollup(aggregate, { table } = {}) {
419
460
  outputTokens: row.outputTokens,
420
461
  cacheReadTokens: row.cacheReadTokens,
421
462
  cacheCreationTokens: row.cacheCreationTokens,
463
+ cacheCreation5mTokens: row.cacheCreation5mTokens,
464
+ cacheCreation1hTokens: row.cacheCreation1hTokens,
465
+ cacheCreationInvalid: row.cacheCreationInvalid,
466
+ pricingContextInvalid:
467
+ row.pricingContextInvalid === true ||
468
+ (String(row.provider).toLowerCase() === "anthropic" &&
469
+ String(row.model).toLowerCase() === "claude-haiku-5-5" &&
470
+ row.regionalProcessing == null &&
471
+ row.regional_processing == null),
422
472
  serviceTier: row.serviceTier ?? row.service_tier ?? "standard",
423
473
  regionalProcessing:
424
474
  row.regionalProcessing ?? row.regional_processing ?? false,
@@ -479,7 +529,11 @@ export function priceRollup(aggregate, { table } = {}) {
479
529
  for (const row of byModel) {
480
530
  if (row.matched) {
481
531
  totalCost += row.cost;
482
- } else if (row.totalTokens > 0) {
532
+ } else if (
533
+ row.totalTokens > 0 ||
534
+ row.cacheReadTokens > 0 ||
535
+ row.cacheCreationTokens > 0
536
+ ) {
483
537
  unpriced.push({
484
538
  provider: row.provider,
485
539
  model: row.model,
@@ -98,15 +98,17 @@ export function resolveAgentOutputBudget({
98
98
  const effectiveModel = model || "claude-sonnet-4-6";
99
99
  const { maxTokens } = mergeProviderOptions("anthropic", effectiveModel);
100
100
  const defaultCap = maxTokens || 8192;
101
+ const explicitCap =
102
+ effectiveModel === "claude-haiku-5-5" ? 128000 : defaultCap;
101
103
  const requestMaxOutputTokens =
102
- requested === null ? defaultCap : Math.min(defaultCap, requested);
104
+ requested === null ? defaultCap : Math.min(explicitCap, requested);
103
105
  return Object.freeze({
104
106
  requestMaxOutputTokens,
105
107
  plannedOutputReserveTokens: requestMaxOutputTokens,
106
108
  outputReserveSource:
107
109
  requested === null
108
110
  ? "anthropic-request-default"
109
- : requested > defaultCap
111
+ : requested > explicitCap
110
112
  ? "anthropic-request-clamp"
111
113
  : "explicit-request-cap",
112
114
  });
@@ -271,6 +273,12 @@ export function resolveModelCapabilityProfile({
271
273
  runtimeVerified: false,
272
274
  ...output,
273
275
  advertisedMaxOutputTokens: documented?.advertisedMaxOutputTokens ?? null,
276
+ ...(documented?.adaptiveThinkingDefault
277
+ ? {
278
+ adaptiveThinkingDefault: true,
279
+ defaultReasoningEffort: documented.defaultReasoningEffort,
280
+ }
281
+ : {}),
274
282
  ...(documented?.reasoningEfforts
275
283
  ? { reasoningEfforts: [...documented.reasoningEfforts] }
276
284
  : {}),
@@ -92,6 +92,7 @@ export function reviewModelCatalog(review, snapshots = {}) {
92
92
  for (const field of [
93
93
  "cacheReadMultiplier",
94
94
  "cacheWriteMultiplier",
95
+ "cacheWrite1hMultiplier",
95
96
  "longContext",
96
97
  "serviceMultipliers",
97
98
  ]) {
@@ -144,13 +144,38 @@ export const DOCUMENTED_OPENAI_MODELS = Object.freeze({
144
144
  });
145
145
 
146
146
  export const DOCUMENTED_ANTHROPIC_MODELS = Object.freeze({
147
+ "claude-haiku-5-5": Object.freeze({
148
+ contextWindowTokens: 1000000,
149
+ advertisedMaxOutputTokens: 128000,
150
+ reasoningEfforts: Object.freeze(["low", "medium", "high", "xhigh", "max"]),
151
+ defaultReasoningEffort: "medium",
152
+ adaptiveThinkingDefault: true,
153
+ pricing: Object.freeze({ in: 0.1, out: 0.5 }),
154
+ pricingTerms: Object.freeze({
155
+ cacheReadMultiplier: 0.1,
156
+ cacheWriteMultiplier: 1.25,
157
+ cacheWrite1hMultiplier: 2,
158
+ longContext: Object.freeze({
159
+ threshold: 100000,
160
+ inputMultiplier: 5,
161
+ outputMultiplier: 5,
162
+ }),
163
+ serviceMultipliers: Object.freeze({ standard: 1, default: 1 }),
164
+ }),
165
+ sources: Object.freeze([
166
+ "https://platform.claude.com/docs/en/models/haiku-5-5/overview",
167
+ "https://platform.claude.com/docs/en/models/haiku-5-5/migration-guide",
168
+ "https://platform.claude.com/docs/en/about-claude/pricing",
169
+ ]),
170
+ }),
147
171
  "claude-sonnet-5-5": Object.freeze({
148
172
  contextWindowTokens: 1000000,
149
173
  advertisedMaxOutputTokens: null,
150
174
  pricing: Object.freeze({ in: 2, out: 10 }),
151
- pricingTerms: Object.freeze({ cacheReadMultiplier: 0.1 }),
175
+ pricingTerms: Object.freeze({ cacheReadMultiplier: 0.05 }),
152
176
  sources: Object.freeze([
153
177
  "https://code.claude.com/docs/en/changelog#2-1-284",
178
+ "https://platform.claude.com/docs/en/about-claude/pricing",
154
179
  ]),
155
180
  }),
156
181
  "claude-opus-5-5": Object.freeze({
@@ -78,7 +78,11 @@ export function inferModelOverrides(modelId) {
78
78
  return { maxTokens: 16384 };
79
79
  }
80
80
 
81
- // Claude Haiku — cheaper, smaller output by default.
81
+ if (modelId === "claude-haiku-5-5") {
82
+ return { maxTokens: 4096, temperature: undefined };
83
+ }
84
+
85
+ // Older Claude Haiku — smaller output by default.
82
86
  if (id.includes("haiku")) {
83
87
  return { maxTokens: 4096 };
84
88
  }
@@ -136,6 +140,39 @@ export function mergeProviderOptions(provider, modelId, callOverrides = {}) {
136
140
  return deepMerge(defaults, modelLayer, callOverrides || {});
137
141
  }
138
142
 
143
+ /** Exact Haiku 5.5 request contract; null leaves older model behavior intact. */
144
+ export function haiku55ThinkingParams(model, options = {}) {
145
+ if (model !== "claude-haiku-5-5") return null;
146
+ if (options.thinkingBudget != null) {
147
+ throw new TypeError(
148
+ "Haiku 5.5 supports adaptive thinking, not thinkingBudget",
149
+ );
150
+ }
151
+ const intensity = {
152
+ think: "medium",
153
+ hard: "high",
154
+ "think-hard": "high",
155
+ harder: "high",
156
+ ultra: "xhigh",
157
+ ultrathink: "xhigh",
158
+ true: "high",
159
+ };
160
+ const effort =
161
+ options.thinkingEffort ?? intensity[options.thinking] ?? "medium";
162
+ if (!["low", "medium", "high", "xhigh", "max"].includes(effort)) {
163
+ throw new TypeError(`Unsupported Haiku 5.5 reasoning effort: ${effort}`);
164
+ }
165
+ if (options.thinking === false && ["xhigh", "max"].includes(effort)) {
166
+ throw new TypeError(
167
+ "Haiku 5.5 cannot disable thinking at xhigh or max effort",
168
+ );
169
+ }
170
+ return {
171
+ thinking: { type: options.thinking === false ? "disabled" : "adaptive" },
172
+ output_config: { effort },
173
+ };
174
+ }
175
+
139
176
  // =====================================================================
140
177
  // provider-options V2 governance overlay (iter27)
141
178
  // =====================================================================
@@ -37,7 +37,10 @@ export function buildSearchCommand({
37
37
  isContent,
38
38
  platform = process.platform,
39
39
  }) {
40
- const pat = String(pattern ?? "");
40
+ if (typeof pattern !== "string" || pattern.length === 0) {
41
+ return { error: "search_files requires a non-empty string pattern" };
42
+ }
43
+ const pat = pattern;
41
44
 
42
45
  if (platform === "win32") {
43
46
  // cmd.exe has no reliable way to escape an embedded double-quote, and the
@@ -61,6 +61,20 @@ export function isRetryableStreamError(err, signal) {
61
61
  if (isAbortError(err)) return false;
62
62
  if (signal && signal.aborted) return false;
63
63
  if (!err) return false;
64
+ const msg = String(err.message || err).toLowerCase();
65
+ // A provider verdict stays terminal even when its detail mentions a timeout,
66
+ // reset or network failure. Inspect it before transport codes and wording so
67
+ // formatted HTTP diagnostics and failed Responses cannot trigger a replay.
68
+ if (
69
+ err.code === "CC_OPENAI_RESPONSES_FAILED" ||
70
+ err.cause?.code === "CC_OPENAI_RESPONSES_FAILED" ||
71
+ [err.status, err.statusCode, err.cause?.status, err.cause?.statusCode].some(
72
+ (status) => Number.isInteger(status) && status >= 400 && status <= 599,
73
+ ) ||
74
+ /\bhttp\s+[45]\d{2}\b/.test(msg)
75
+ ) {
76
+ return false;
77
+ }
64
78
  const code = String(err.code || err.cause?.code || "").toUpperCase();
65
79
  if (
66
80
  [
@@ -76,7 +90,6 @@ export function isRetryableStreamError(err, signal) {
76
90
  ) {
77
91
  return true;
78
92
  }
79
- const msg = String(err.message || err).toLowerCase();
80
93
  return /econnreset|etimedout|econnrefused|eai_again|socket hang ?up|terminated|fetch failed|network error|timed?\s*out|premature close/.test(
81
94
  msg,
82
95
  );
@@ -1,11 +1,52 @@
1
1
  import {
2
2
  DOCUMENTED_OPENAI_MODELS,
3
+ DOCUMENTED_ANTHROPIC_MODELS,
3
4
  GPT6_PRICING_TERMS,
4
5
  } from "./model-context-catalog.js";
5
6
 
7
+ /** Keep TTL evidence distinct from the aggregate cache-write count. */
8
+ export function projectCacheCreationUsage(usage = {}) {
9
+ if (usage.cacheCreationInvalid === true)
10
+ return { cacheCreationInvalid: true };
11
+ if (
12
+ Object.hasOwn(usage, "cache_creation_input_tokens") &&
13
+ Object.hasOwn(usage, "cacheCreationTokens") &&
14
+ usage.cache_creation_input_tokens !== usage.cacheCreationTokens
15
+ )
16
+ return { cacheCreationInvalid: true };
17
+ const nested = usage.cache_creation;
18
+ const hasFlat =
19
+ Object.hasOwn(usage, "cacheCreation5mTokens") ||
20
+ Object.hasOwn(usage, "cacheCreation1hTokens");
21
+ if (!Object.hasOwn(usage, "cache_creation") && !hasFlat) return {};
22
+ if (
23
+ Object.hasOwn(usage, "cache_creation") &&
24
+ (nested === null || typeof nested !== "object" || Array.isArray(nested))
25
+ )
26
+ return { cacheCreationInvalid: true };
27
+ const five = nested?.ephemeral_5m_input_tokens ?? usage.cacheCreation5mTokens;
28
+ const hour = nested?.ephemeral_1h_input_tokens ?? usage.cacheCreation1hTokens;
29
+ const total = usage.cache_creation_input_tokens ?? usage.cacheCreationTokens;
30
+ if (
31
+ ![five, hour, total].every(
32
+ (value) => Number.isSafeInteger(value) && value >= 0,
33
+ ) ||
34
+ five + hour !== total ||
35
+ (hasFlat &&
36
+ nested != null &&
37
+ (five !== usage.cacheCreation5mTokens ||
38
+ hour !== usage.cacheCreation1hTokens))
39
+ ) {
40
+ return { cacheCreationInvalid: true };
41
+ }
42
+ return { cacheCreation5mTokens: five, cacheCreation1hTokens: hour };
43
+ }
44
+
6
45
  /** Only bounded, non-secret pricing labels may enter the durable usage ledger. */
7
46
  export function projectUsagePricingContext(usage = {}) {
8
- const projected = {};
47
+ const projected = projectCacheCreationUsage(usage);
48
+ if (usage.pricingContextInvalid === true)
49
+ projected.pricingContextInvalid = true;
9
50
  for (const [key, alias] of [
10
51
  ["service_tier", "serviceTier"],
11
52
  ["regional_processing", "regionalProcessing"],
@@ -31,23 +72,56 @@ export function projectUsagePricingContext(usage = {}) {
31
72
  projected[key] = value;
32
73
  }
33
74
  }
75
+ if (Object.hasOwn(usage, "inference_geo")) {
76
+ const geo = usage.inference_geo;
77
+ if (geo !== "us" && geo !== "global") {
78
+ projected.inference_geo = "unknown";
79
+ projected.pricingContextInvalid = true;
80
+ } else {
81
+ if (
82
+ Object.hasOwn(projected, "regional_processing") &&
83
+ projected.regional_processing !== (geo === "us")
84
+ ) {
85
+ throw new TypeError(
86
+ "usage inference_geo conflicts with regional processing",
87
+ );
88
+ }
89
+ projected.inference_geo = geo;
90
+ projected.regional_processing = geo === "us";
91
+ }
92
+ }
34
93
  return projected;
35
94
  }
36
95
 
37
96
  /** Preserve per-request thresholds in a bounded set of aggregate price buckets. */
38
97
  export function mergeUsagePricingBucket(entry, usage) {
39
- if (
40
- String(entry.provider).toLowerCase() !== "openai" ||
41
- !DOCUMENTED_OPENAI_MODELS[String(entry.model).toLowerCase()]?.pricing
42
- )
43
- return;
98
+ const provider = String(entry.provider).toLowerCase();
99
+ const model = String(entry.model).toLowerCase();
100
+ const terms =
101
+ provider === "openai" && DOCUMENTED_OPENAI_MODELS[model]?.pricing
102
+ ? GPT6_PRICING_TERMS
103
+ : provider === "anthropic"
104
+ ? DOCUMENTED_ANTHROPIC_MODELS[model]?.pricingTerms
105
+ : null;
106
+ if (!terms?.longContext) return;
44
107
  const metadata = projectUsagePricingContext(usage);
108
+ const pricingContextInvalid =
109
+ metadata.pricingContextInvalid === true ||
110
+ (provider === "anthropic" &&
111
+ model === "claude-haiku-5-5" &&
112
+ metadata.regional_processing == null);
45
113
  const promptTokens =
46
114
  usage.requestInputTokens ??
47
115
  usage.inputTokens +
48
116
  (usage.cacheReadTokens || 0) +
49
117
  (usage.cacheCreationTokens || 0);
50
- const long = promptTokens > GPT6_PRICING_TERMS.longContext.threshold;
118
+ const long = promptTokens > terms.longContext.threshold;
119
+ const cache = projectCacheCreationUsage(usage);
120
+ const cacheEvidence = cache.cacheCreationInvalid
121
+ ? "invalid"
122
+ : cache.cacheCreation5mTokens != null
123
+ ? "split"
124
+ : "missing";
51
125
  const serviceTier = metadata.service_tier || "standard";
52
126
  const regionalProcessing = metadata.regional_processing === true;
53
127
  entry.pricingBuckets ||= [];
@@ -55,8 +129,9 @@ export function mergeUsagePricingBucket(entry, usage) {
55
129
  (item) =>
56
130
  item.serviceTier === serviceTier &&
57
131
  item.regionalProcessing === regionalProcessing &&
58
- item.requestInputTokens > GPT6_PRICING_TERMS.longContext.threshold ===
59
- long,
132
+ (item.pricingContextInvalid === true) === pricingContextInvalid &&
133
+ (item.cacheEvidence || "missing") === cacheEvidence &&
134
+ item.requestInputTokens > terms.longContext.threshold === long,
60
135
  );
61
136
  if (!bucket) {
62
137
  bucket = {
@@ -69,6 +144,18 @@ export function mergeUsagePricingBucket(entry, usage) {
69
144
  serviceTier,
70
145
  regionalProcessing,
71
146
  requestInputTokens: promptTokens,
147
+ ...(pricingContextInvalid ? { pricingContextInvalid: true } : {}),
148
+ ...(provider === "anthropic"
149
+ ? {
150
+ cacheEvidence,
151
+ ...(cacheEvidence === "split"
152
+ ? { cacheCreation5mTokens: 0, cacheCreation1hTokens: 0 }
153
+ : {}),
154
+ ...(cacheEvidence === "invalid"
155
+ ? { cacheCreationInvalid: true }
156
+ : {}),
157
+ }
158
+ : {}),
72
159
  };
73
160
  entry.pricingBuckets.push(bucket);
74
161
  }
@@ -79,8 +166,11 @@ export function mergeUsagePricingBucket(entry, usage) {
79
166
  "cacheCreationTokens",
80
167
  "totalTokens",
81
168
  "calls",
169
+ ...(cacheEvidence === "split"
170
+ ? ["cacheCreation5mTokens", "cacheCreation1hTokens"]
171
+ : []),
82
172
  ]) {
83
- const value = usage[key] ?? (key === "calls" ? 1 : 0);
173
+ const value = cache[key] ?? usage[key] ?? (key === "calls" ? 1 : 0);
84
174
  if (
85
175
  !Number.isSafeInteger(value) ||
86
176
  value < 0 ||