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.
- package/README.md +20 -23
- package/package.json +1 -1
- package/src/assets/linux-subreaper/linux-arm64/manifest.json +1 -1
- package/src/assets/linux-subreaper/linux-x64/manifest.json +1 -1
- package/src/assets/web-panel/assets/{AIOps-DCIQFtF1.js → AIOps-BUgaCgVU.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-BxhHU3nE.js → ActionButton-b0MpUSSZ.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-DdM_307O.js → Analytics-hbXTvHqO.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-C43-kSrh.js → AppLayout-CLQoAVu4.js} +4 -4
- package/src/assets/web-panel/assets/{Artifacts-B2Vp2Am6.js → Artifacts-ytHzl2L2.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-s-lYUfOp.js → Audit-BuhkLm0C.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-DTE7Kzio.js → BackgroundAgents-CS81hxZV.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-9k1q4Mt6.js → Backup-DzR-_Qvi.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-DlpUtK5R.js → BaseInput-r8Ku_lYw.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-CR9S8Rmb.js → Chat-C3Uxtoaa.js} +5 -5
- package/src/assets/web-panel/assets/ChatBubbleRenderer-RvblDu77.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-DpFRu7Df.js → Checkbox-BnG2P5yc.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-BIl72E4Y.js → Codegen-BdgU6HZy.js} +1 -1
- package/src/assets/web-panel/assets/{Col-91tl_err.js → Col-DT8t9wmf.js} +1 -1
- package/src/assets/web-panel/assets/{Community-CswahO9-.js → Community-ChkxR5oe.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-D9pfHmaM.js → Compact-DIwLeTk3.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-CXSZzAO9.js → Compliance-CAqzGLvW.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-CuT9RWTn.js → Cowork-Bb3jejMG.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-B71aJWDV.js → Cron-BYRkZLta.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-CcUuWyx8.js → Crosschain-BD6z227t.js} +1 -1
- package/src/assets/web-panel/assets/{DID-CtVVGOPL.js → DID-DA3G5Wgo.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-CV7ZCYQq.js → Dashboard-yaZePHOu.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-DKHxwLgE.js → Dropdown-BqY5MBx2.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-Bd03UIvv.js → EmailListRenderer-cIWwOgHm.js} +1 -1
- package/src/assets/web-panel/assets/{EvolutionSettings-CTrG03B_.js → EvolutionSettings-zvV6ymca.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-DXS4bS6Q.js → FamilyGuardDashboard-CAmh1U2b.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-BODG2Szj.js → Federation-5qd2LCg8.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-D32ccUqD.js → FormItemContext-Bdkj1sRJ.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-ClsyrKvF.js → GenericCardRenderer-B-gWN2P3.js} +1 -1
- package/src/assets/web-panel/assets/{Git-DcM2yhbL.js → Git-BEMh_NGd.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-BhUzM87n.js → Governance-qLGvA2Hw.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-Dq1n0Ifg.js → Inference-DblBwYuW.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-dmmPwEks.js → KnowledgeGraph-BISegVD_.js} +1 -1
- package/src/assets/web-panel/assets/Logs-BD2UR7kE.js +2 -0
- package/src/assets/web-panel/assets/MarkdownRenderer-B-TlDCmr.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-Cfw7XLck.js → Marketplace-CHKXMOkH.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-CNrZRy4n.js → McpTools-B5G1elqd.js} +2 -2
- package/src/assets/web-panel/assets/{Memory-BESjTxdd.js → Memory-O5Ib0uTR.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-Boyjo07i.js → MobileBridge-BaGYL7rT.js} +1 -1
- package/src/assets/web-panel/assets/MobileProjects-Dsctbob8.js +1 -0
- package/src/assets/web-panel/assets/{Mtc-CBkrD0Fq.js → Mtc-CNjJ97jg.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-BA7cAK8h.js → MtcAudit-DjBN-Wqz.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-m0RGzkKO.js → Multisig-B850R9lO.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-D_TgzifU.js → NLProgramming-Bn8sbFfV.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-Dr-Yr9LL.js → Notes-BpLmMp3Q.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-DGanpkqO.js → NotificationSettings-Dbk97rjb.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-D1FX50QY.js → OrderTableRenderer-BOBX_I72.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-DRbPg-gs.js → Organization-B45DpOuE.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-flEO37z6.js → Overflow-DmKH7eer.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-DqfqFbCW.js → P2P-CC4FaXTl.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-Cmi5a5dW.js → PdhVaultBrowser-C2SgP4PI.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-DBVRlvBW.js → Permissions-BQB4QFj_.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-gQqjPr9X.js → PersonalDataHub-Dy6GGpn4.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-6HlifUc9.js → Pipeline-B9HB5pRc.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-bm_2-Zwg.js → Privacy-D7pOmg-p.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-BJW3isuq.js → ProjectInit-DglBqvec.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-DD3yolz7.js → ProjectSettings-Bho22znM.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-BF3GtWny.js → Projects-C0bSuM8U.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-CQA6WAK7.js → Providers-BgAgo1Yr.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-DOAwp5Xo.js → QrScannerModal-C2fBjCC8.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-qeFXsAZT.js → QuickAsk-C8MiF-rk.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-zDWXwZN8.js → Recommend-D_TzHdQf.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-toe6Ip06.js → RemoteSession-BHO7b6xE.js} +3 -3
- package/src/assets/web-panel/assets/{Reputation-DRDi_Eqp.js → Reputation-BPxNmNhD.js} +1 -1
- package/src/assets/web-panel/assets/{Row-Do2UbYkf.js → Row-fwhot5Bk.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-B57C6_Sa.js → RssFeed-CZbD1B-5.js} +3 -3
- package/src/assets/web-panel/assets/{Search-DfDyBpe9.js → Search-BRs6YpAE.js} +1 -1
- package/src/assets/web-panel/assets/{Security-CulNxeAM.js → Security-CB344tKC.js} +4 -4
- package/src/assets/web-panel/assets/{Services-COfAYvs4.js → Services-Beo-7fEl.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-0fn0T146.js → Skeleton-CDXx96vD.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-pPQgAhvJ.js → Skills-b-mQTJK4.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-CIsRmePR.js → Sla-BvjP-IS9.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-Bn01d-8b.js → SpeechSettings-C6wsV-cO.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-Cx_Znk7L.js → SyncSettings-BQZoko-e.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-DvaskzpG.js → Tasks-6Z0rJJVO.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-DmHCEiDO.js → Templates-Cc9IXtEQ.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-CqHyvnbW.js → Tenant-BLc7AjOI.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-DTt3yqWL.js → Terminal-CUN49v85.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-BhkIxcR3.js → TimelineRenderer-CX-SksHN.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-mhjYcBBP.js → Tokens-Btrm0-rK.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-CdlMQfwX.js → Trigger-CIboUvKe.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-Bzovg_Gw.js → Trust-Rv9jEs5v.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-ph3EuYi7.js → UkeySign-B_xomdD5.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-Bo2B4VZE.js → VideoEditing-CrvWeMow.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-BQTKsSUT.js → Wallet-BjvWgk_7.js} +3 -3
- package/src/assets/web-panel/assets/{WebAuthn-nJxsXNHV.js → WebAuthn-CwfpFw92.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-CjH8g2N7.js → WorkflowEditor-Dkk2QsOe.js} +1 -1
- package/src/assets/web-panel/assets/{chat-CkbNmnQD.js → chat-Dah1DVes.js} +1 -1
- package/src/assets/web-panel/assets/{colors-BY9JcObR.js → colors-JEpgQ10k.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-Dzzq-d8n.js → compact-item--DuG_cxf.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-DiJxxdTx.js → createContext-BJ_GZvon.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-B6kQEceX.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-DaXPOw3D.js → hasIn-yZRLDmWK.js} +1 -1
- package/src/assets/web-panel/assets/{index-Djeh6rAb.js → index-1QZASeW1.js} +1 -1
- package/src/assets/web-panel/assets/{index-BvgMt6Io.js → index-9L3Pg2tc.js} +1 -1
- package/src/assets/web-panel/assets/{index-CbOOm8I8.js → index-BKl40wrO.js} +1 -1
- package/src/assets/web-panel/assets/{index-CnLO1_yN.js → index-BM7xJKGD.js} +1 -1
- package/src/assets/web-panel/assets/{index-BGvIb1Sr.js → index-BUjyj7qR.js} +1 -1
- package/src/assets/web-panel/assets/{index-BHeHyLRM.js → index-BWkKE8Oj.js} +3 -3
- package/src/assets/web-panel/assets/{index-DObXhPhH.js → index-Bdg_nWD1.js} +1 -1
- package/src/assets/web-panel/assets/{index-CWLpEg34.js → index-C56b8e9s.js} +1 -1
- package/src/assets/web-panel/assets/{index-BqCHe05H.js → index-C6ohEAEV.js} +1 -1
- package/src/assets/web-panel/assets/{index-CqOkm6kW.js → index-C8nXkCMf.js} +1 -1
- package/src/assets/web-panel/assets/{index-Igq-72Ep.js → index-CFj7ylAJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-i9eu2Kir.js → index-CJLz3SpM.js} +1 -1
- package/src/assets/web-panel/assets/{index-C6XSCXeb.js → index-CQedFuDw.js} +1 -1
- package/src/assets/web-panel/assets/index-CSeiH6HA.js +1 -0
- package/src/assets/web-panel/assets/index-CayGTz6d.js +1 -0
- package/src/assets/web-panel/assets/{index-cu1J4avY.js → index-CjuD8smQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-dC2JACyJ.js → index-Cmr0AzcK.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dl8U-0hn.js → index-CxB49Mow.js} +1 -1
- package/src/assets/web-panel/assets/{index-Jmlk_lDX.js → index-D6Le2m3d.js} +1 -1
- package/src/assets/web-panel/assets/{index-DSqQyS9-.js → index-DFJbJ8rs.js} +1 -1
- package/src/assets/web-panel/assets/{index-EiaWq1TH.js → index-DQ4Fch3e.js} +1 -1
- package/src/assets/web-panel/assets/{index-BlWg1bRA.js → index-DZBesaCN.js} +1 -1
- package/src/assets/web-panel/assets/{index-DWT9-E5b.js → index-DaDLWIWo.js} +1 -1
- package/src/assets/web-panel/assets/{index-DbmHmeP-.js → index-DbMGGcpZ.js} +1 -1
- package/src/assets/web-panel/assets/{index-LRZSVBxC.js → index-DddwZCT9.js} +1 -1
- package/src/assets/web-panel/assets/{index-B4Sf1AMk.js → index-DemMuw7n.js} +1 -1
- package/src/assets/web-panel/assets/{index-6Z6Z4UwN.js → index-DhX48E81.js} +1 -1
- package/src/assets/web-panel/assets/{index-C_OMH_FT.js → index-Dq-8PFhL.js} +1 -1
- package/src/assets/web-panel/assets/{index-CAzfu6k5.js → index-DroaQypF.js} +1 -1
- package/src/assets/web-panel/assets/{index-DaylJfw6.js → index-DxnkldGo.js} +1 -1
- package/src/assets/web-panel/assets/{index-DDnqjZa2.js → index-IjOa5lYn.js} +1 -1
- package/src/assets/web-panel/assets/{index-CVblRqUN.js → index-L9CFyRIi.js} +1 -1
- package/src/assets/web-panel/assets/{index-BycyBM6g.js → index-VIgVth92.js} +1 -1
- package/src/assets/web-panel/assets/{index-7YVCjSqG.js → index-asia_JPc.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bhsxh-rH.js → index-cHx5KzUt.js} +1 -1
- package/src/assets/web-panel/assets/{index-B31oMRmK.js → index-kZE-K3ZO.js} +1 -1
- package/src/assets/web-panel/assets/{index-BQvtlYUd.js → index-o2qO_dYf.js} +1 -1
- package/src/assets/web-panel/assets/{index-Uh9SjtgW.js → index-rkvSOceQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-D_Eoh740.js → index-vdTrEOj7.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-B0WuG3fa.js → initDefaultProps-anKyyjGc.js} +1 -1
- package/src/assets/web-panel/assets/{motion-1r5YB22w.js → motion-Cqp0nx5A.js} +1 -1
- package/src/assets/web-panel/assets/{move-CvtXWA_V.js → move-Ca3mgkM2.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-ChedmEE_.js → mtc-parser-BmwuhJ3z.js} +1 -1
- package/src/assets/web-panel/assets/{omit-DpEA3MP0.js → omit-C9Mf05WJ.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-BWgrUZF6.js → pickAttrs-2PbxB9Ds.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-BWfo_VbI.js → placementArrow-CTVbOFHt.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-CRft03Vk.js → responsiveObserve-Nrm8Vbmr.js} +1 -1
- package/src/assets/web-panel/assets/{slide-l5LeXusH.js → slide-Dh4r1zqR.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CCEC0JR-.js → statusUtils-vzNoQL-r.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-Bw5Gw_2w.js → styleChecker-BXpGfNkI.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-BAuxWB7K.js → useFlexGapSupport-CVWBRdhs.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-CxUP97Cw.js → useFs-BJWMLffI.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-BJDjT4Sy.js → usePersonalDataHub-CWCe5VHG.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-BcCsFzIs.js → vnode-D-NBEb8m.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-MLmG09h6.js → zoom-C0mnhfGf.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/data/changelog.json +13 -0
- package/src/lib/cost-budget.js +8 -0
- package/src/lib/llm-pricing.js +61 -7
- package/src/lib/model-capabilities.js +10 -2
- package/src/lib/model-catalog-review.js +1 -0
- package/src/lib/model-context-catalog.js +26 -1
- package/src/lib/provider-options.js +38 -1
- package/src/lib/search-command.js +4 -1
- package/src/lib/stream-retry.js +14 -1
- package/src/lib/usage-pricing-context.js +100 -10
- package/src/runtime/agent-core.js +73 -18
- package/src/runtime/headless-runner.js +17 -0
- package/src/runtime/headless-stream.js +17 -0
- package/src/runtime/provider-stream-state.js +7 -0
- package/src/assets/web-panel/assets/ChatBubbleRenderer-Xtgfw3-c.js +0 -1
- package/src/assets/web-panel/assets/Logs-CBSYrPmh.js +0 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-CRoDI77y.js +0 -1
- package/src/assets/web-panel/assets/MobileProjects-BmxmpTWz.js +0 -1
- package/src/assets/web-panel/assets/devWarning-D502_Z3w.js +0 -1
- package/src/assets/web-panel/assets/index-BrQ4nI4W.js +0 -1
- package/src/assets/web-panel/assets/index-C0_sewGO.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as v}from"./index-
|
|
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-
|
|
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-
|
|
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-
|
|
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">
|
package/src/data/changelog.json
CHANGED
|
@@ -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",
|
package/src/lib/cost-budget.js
CHANGED
|
@@ -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,
|
package/src/lib/llm-pricing.js
CHANGED
|
@@ -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 [
|
|
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
|
-
|
|
293
|
-
|
|
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 (
|
|
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
|
-
(
|
|
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 (
|
|
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(
|
|
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 >
|
|
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
|
: {}),
|
|
@@ -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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
package/src/lib/stream-retry.js
CHANGED
|
@@ -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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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 >
|
|
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.
|
|
59
|
-
|
|
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 ||
|