page-agent-sdk 3.29.0 → 3.30.0
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/dist/page-agent-sdk.headless.js +1 -1
- package/dist/page-agent-sdk.iife.js +1 -1
- package/dist/page-agent-sdk.js +1 -1
- package/dist/page-agent-sdk.legacy.js +1 -1
- package/dist/page-agent-sdk.umd.cjs +1 -1
- package/package.json +1 -1
- package/types/headless.d.ts +1 -3
- package/types/index.d.ts +1 -3
|
@@ -10853,7 +10853,7 @@ function Af(e, n) {
|
|
|
10853
10853
|
let e = N.map((e) => e._codeAsset.orchestratorPrompt).filter(Boolean).join("\n\n");
|
|
10854
10854
|
e && (de += "\n\n" + e);
|
|
10855
10855
|
} else A?.schema && _a(A.schema) && (de += "\n\n" + Fa.htmlDirectWriteFallback, console.warn("[page-agent-sdk] 检测到 schema 含 code 字段但未注册 html 子 agent:已自动注入「主 agent 自己写 HTML」编排(code 作普通字段直接 write,无 vfs 工作副本 / 无格式校验门禁)。如需代码资产机制(vfs + 格式校验 + 增量 commit + 主上下文 code 摘要),注册 createHtmlSubagent;若确为降级意图可忽略。"));
|
|
10856
|
-
|
|
10856
|
+
i === "advanced" && /simple\s*模式|未暴露/.test(de) && (a = "simple", console.warn("[page-agent-sdk][usageHints] 检测到 systemPrompt 含「simple 模式/未暴露」措辞但 toolMode 为 advanced(默认):usageHints 已自动降级为 simple 提示词,避免教 LLM 调用集成方 systemPrompt 声明「未暴露」的工具。建议显式对齐:① 集成方 systemPrompt 按 simple 工作流设计 → 传 toolMode:'simple' 让工具池也匹配(推荐);② systemPrompt 措辞已过时(实际想要 advanced)→ 更新 systemPrompt 去掉「simple 模式/未暴露」字样。注:仅「勿调用」字样不触发降级(3.29 收窄;集成方常用它描述自己禁用的工具,属合法 advanced 用法)。"));
|
|
10857
10857
|
let fe = se && A ? ud(A, {
|
|
10858
10858
|
onAudit: e.onAudit ?? (e.debug ? (e) => console.log("[page-agent-sdk][data audit]", e) : void 0),
|
|
10859
10859
|
maxSnapshots: e.maxSnapshots,
|
|
@@ -351,7 +351,7 @@ ${`- 输出形态:完整、自包含的 HTML 页面(.${r},可独立成页)`}
|
|
|
351
351
|
|
|
352
352
|
`+e)}else E?.schema&&yG(E.schema)&&(de+=`
|
|
353
353
|
|
|
354
|
-
`+LG.htmlDirectWriteFallback,console.warn(`[page-agent-sdk] 检测到 schema 含 code 字段但未注册 html 子 agent:已自动注入「主 agent 自己写 HTML」编排(code 作普通字段直接 write,无 vfs 工作副本 / 无格式校验门禁)。如需代码资产机制(vfs + 格式校验 + 增量 commit + 主上下文 code 摘要),注册 createHtmlSubagent;若确为降级意图可忽略。`));
|
|
354
|
+
`+LG.htmlDirectWriteFallback,console.warn(`[page-agent-sdk] 检测到 schema 含 code 字段但未注册 html 子 agent:已自动注入「主 agent 自己写 HTML」编排(code 作普通字段直接 write,无 vfs 工作副本 / 无格式校验门禁)。如需代码资产机制(vfs + 格式校验 + 增量 commit + 主上下文 code 摘要),注册 createHtmlSubagent;若确为降级意图可忽略。`));n===`advanced`&&/simple\s*模式|未暴露/.test(de)&&(r=`simple`,console.warn(`[page-agent-sdk][usageHints] 检测到 systemPrompt 含「simple 模式/未暴露」措辞但 toolMode 为 advanced(默认):usageHints 已自动降级为 simple 提示词,避免教 LLM 调用集成方 systemPrompt 声明「未暴露」的工具。建议显式对齐:① 集成方 systemPrompt 按 simple 工作流设计 → 传 toolMode:'simple' 让工具池也匹配(推荐);② systemPrompt 措辞已过时(实际想要 advanced)→ 更新 systemPrompt 去掉「simple 模式/未暴露」字样。注:仅「勿调用」字样不触发降级(3.29 收窄;集成方常用它描述自己禁用的工具,属合法 advanced 用法)。`));let fe=se&&E?j4(E,{onAudit:e.onAudit??(e.debug?e=>console.log(`[page-agent-sdk][data audit]`,e):void 0),maxSnapshots:e.maxSnapshots,onConflict:a.set,autoLock:e.autoLock,interceptors:e.interceptors,toolMode:n,vfsStore:ce||E?.resources?.length?y:void 0,...j.length?{pgIdPaths:j}:{},...M.length?{largeTextPaths:M}:{}}):[],pe=se?T4(fe,n):[],me=se&&E?fe.controller??null:null,he=se&&E?.resources?.length&&me?.getResourcesSnapshot?Xue({getResourcesSnapshot:()=>me?.getResourcesSnapshot?.()??[],toolsExposed:n===`advanced`}):void 0,ge=()=>me?.get()??E,_e=new Set(fe.map(e=>e.name)),P=me?$le({getBind:()=>ge()?.bind,recomputeAll:()=>me.recomputeAllBaselines?.(),hasBaselines:()=>me.hasBaselines?.()??!1,isManaged:e=>_e.has(e),log:(e,t)=>{let n=L.agent?.debugLogs;n&&(n.value.push({timestamp:Date.now(),type:`middleware`,data:{stage:`baseline_guard`,...t}}),Nz(n))}}):void 0,ve=new Map,F=a3(oe,pe,N4,oe.domInspect&&!oe.skills?[...z4,J4,Y4]:z4,t3);F.forEach(e=>ve.set(e.name,`builtin`));let ye=[...e.tools||[]];ye.forEach(e=>ve.set(e.name,`user`));let I=r3(e.actions??{});I.forEach(e=>ve.set(e.name,`action`));let be=[],xe=!1,Se=e.humanConfirm!==!1&&(!e.approval||e.approval.humanConfirmTool!==!1),Ce=Se?tq():null;Ce&&ve.set($K,`builtin`);let we=re&&ie?[_L(async()=>{let e=ie.list();return e.length?ie.restore()?`已回退到最近一次正常状态(checkpoint #${e[e.length-1].id})。对话历史、主数据、vfs、todos 已整体还原。请基于回退后的状态重新判断并继续。`:`回退失败:无可用 checkpoint。`:`无可用 checkpoint,无法回退。`},{name:`restore_last_checkpoint`,description:`回退到最近一次正常状态(整体还原对话历史 + 主数据 + vfs + todos)。当本轮操作出错、页面被改坏、或走偏时调用,回到本轮起点重新来过。不传参数即回退最近一次。`,schema:B({}).optional()}),_L(async()=>{let e=ie.list();return e.length?`可用 checkpoint:
|
|
355
355
|
`+e.map(e=>`#${e.id} [${e.label??`auto`}] 消息数=${e.messageCount} 时间=${new Date(e.timestamp).toLocaleTimeString()}`).join(`
|
|
356
356
|
`):`无可用 checkpoint。`},{name:`list_checkpoints`,description:`列出可用会话 checkpoint(回退点)。`,schema:B({}).optional()})]:[];we.forEach(e=>ve.set(e.name,`builtin`));let Te=oe.focus,Ee=_L(async({path:e,label:t})=>{let n=ge()?.schema;return n?hG(n,e)?(S.setFocus({path:e,...t?{label:t}:{}}),`已聚焦到 ${e}${t?`(${t})`:``}。后续仅可写该子树(越界被拒),每轮只看到该组件结构。完成精修后调 clear_focus 退出。`):`PATH_DENIED · 聚焦失败:path "${e}" 不在 schema 内。请先用 read 查看可操作路径再聚焦。`:`聚焦失败:当前无主数据 schema,无法聚焦。`},{name:`set_focus`,description:`聚焦到指定组件子树(如 components.3)精修,替换全部已有焦点(非累积;要保留已有焦点追加用 add_focus)。聚焦后:仅可写该子树(越界 PATH_DENIED)+ 每轮只看到该组件结构。多组件页面精修其中一个时用,避免改到别处。先 read 定位 path 再聚焦;完成调 clear_focus。`,schema:B({path:R().describe(`要聚焦的组件 jsonPath,如 components.3`),label:R().optional().describe(`人类可读标签,如「导航栏」`)})}),De=_L(async()=>(S.clearFocus(),`已清除聚焦,恢复全量可操作范围(可读写所有组件)。`),{name:`clear_focus`,description:`清除当前聚焦,退出精修模式,恢复对全部组件的读写权限。`,schema:B({}).optional()}),Oe=_L(async({path:e,label:t})=>{let n=ge()?.schema;if(!n)return`聚焦失败:当前无主数据 schema,无法聚焦。`;if(!hG(n,e))return`PATH_DENIED · 聚焦失败:path "${e}" 不在 schema 内。请先用 read 查看可操作路径再聚焦。`;S.addFocus({path:e,...t?{label:t}:{}});let r=S.getFocuses();return`已聚焦 ${e}${t?`(${t})`:``}(当前共 ${r.length} 个焦点:${r.map(e=>e.path).join(`, `)})。后续仅可写这些子树之一(越界被拒)。`},{name:`add_focus`,description:`追加聚焦一个组件子树(multi-focus,可同时聚焦多个相关组件)。校验 path 在 schema 内。聚焦后仅可写已聚焦的子树之一(越界 PATH_DENIED)。与 set_focus(替换全部)不同:本工具累积追加,不清除已有焦点。`,schema:B({path:R().describe(`要追加聚焦的组件 jsonPath,如 components.3`),label:R().optional().describe(`人类可读标签`)})}),ke=_L(async({path:e})=>{let t=S.getFocuses().length;S.removeFocus(e);let n=S.getFocuses();return n.length===t?`path "${e}" 不在当前焦点列表中(当前:${n.map(e=>e.path).join(`, `)||`无`})。`:n.length?`已移除焦点 ${e}(剩余 ${n.length} 个:${n.map(e=>e.path).join(`, `)})。`:`已移除焦点 ${e},聚焦已清空,恢复全量操作范围。`},{name:`remove_focus`,description:`移除单个聚焦焦点(by path),保留其他焦点。移除最后一个等价退出精修。全部退出用 clear_focus。`,schema:B({path:R().describe(`要移除的焦点 jsonPath`)})}),Ae=Te&&n===`advanced`?[Ee,De,Oe,ke]:[];Ae.forEach(e=>ve.set(e.name,`builtin`));let je=[],Me=new Map,Ne=Pe();function Pe(){let{tools:e,collisions:t}=Yue([{label:`builtin`,tools:F},{label:`user`,tools:ye},{label:`action`,tools:I},{label:`humanConfirm`,tools:Ce?[Ce]:[]},{label:`checkpoint`,tools:we},{label:`focus`,tools:Ae},{label:`mcp`,tools:be},{label:`skill`,tools:je}]);return t.length&&console.warn(`[page-agent-sdk] 工具重名,后注册覆盖先注册:`,t.map(e=>`${e.name}(${e.loser}→${e.winner})`).join(`, `)),e}let Fe=oe.planning,Ie=oe.missionAnchor,Le=oe.workingMemory,Re=oe.skills,ze=oe.vfs||ne;if(ze)for(let e of Rle)ve.set(e,`builtin`);if(Fe)for(let e of b.tools??[])ve.set(e.name,`builtin`);let Be=oe.summarization,Ve=oe.agentCompression&&!!d;e.debug&&oe.agentCompression&&!d&&console.warn(`[page-agent-sdk][agentCompression] agentCompression 开启但 summaryLlm 不可用(或缺 apiKey / 模型不支持工具),压缩决策不启用,回退静态压缩`);let He=oe.memory,Ue=oe.subagent,We=Ue?Nq():void 0,Ge=e.verify?.maxAttempts??2,Ke=!!(e.verify?.check||e.verify?.maxAttempts||e.verify?.adversarial),qe=e.capabilities?.verify===!1,Je=(oe.verify||Ke&&!qe)&&e.verify?.enabled!==!1&&Ge>0,Ye=oe.contextInspector;Ke&&!Je&&e.verify?.enabled!==!1&&console.warn(`[page-agent-sdk][verify] 检测到 verify 配置(check/maxAttempts/adversarial)但未装载(capabilities.verify:false 显式关闭 或 maxAttempts≤0)`);let Xe=e.subagent,Ze=Xe?.allowedTools??[],Qe=e.permissions?.length?ZK(e.permissions):void 0,$e=e.approval&&(e.approval.tools!==void 0||e.approval.confirm)?QK(e.approval):void 0,et=[...Qe?[Qe]:[],...$e?[$e]:[],...P?[P]:[]],tt=!Ue||Xe?.enabled===!1?void 0:Xq({llm:Xe?.llm??e.llm,allTools:()=>L.agent?.allTools??Ne,allowedTools:Ze.length?Ze:void 0,systemPrompt:Xe?.systemPrompt,temperature:Xe?.temperature,maxTokens:Xe?.maxTokens,skills:Xe?.skills,maxDepth:Xe?.maxDepth,maxParallel:Xe?.maxParallel,debug:e.debug,getFocuses:()=>S.getFocuses(),getSchema:()=>ge()?.schema??null,tracker:We,guardMiddleware:et.length?et:void 0,getVfsFiles:ze?()=>y.files:void 0,enterDataScope:me?.enterScope?e=>me.enterScope(e):void 0,exitDataScope:me?.exitScope?e=>me.exitScope(e):void 0,onUsage:e=>{i.prompt_tokens=(i.prompt_tokens??0)+(e.prompt_tokens??0),i.completion_tokens=(i.completion_tokens??0)+(e.completion_tokens??0),i.total_tokens=(i.total_tokens??0)+(e.total_tokens??0)},timeoutMs:Xe?.timeoutMs}),nt=A?.map(e=>{if(!e._codeAsset)return e;let t=e._codeAsset,n=Kle({writablePaths:t.writablePaths,codeVfsPrefix:t.codeVfsPrefix,ext:t.ext,codeField:t.codeField,craftNotes:t.craftNotes,onWarning:e=>console.warn(`[page-agent-sdk][code-asset] ${e}`),getController:()=>me,vfsStore:y}),r=[...e.middleware??[],n];for(let e of r)e&&typeof e==`object`&&typeof e._setGetController==`function`&&e._setGetController(()=>me);return{...e,middleware:r}}),rt=ne&&Ue?qle():void 0,it=rt?Qle({getBind:()=>ge()?.bind,writablePaths:j,getLocked:()=>rt.locked(),tools:Ne,getCodeFieldPaths:()=>Xle(ge()?.bind,te.map(e=>({writablePaths:e._codeAsset.writablePaths,codeField:e._codeAsset.codeField})))}):void 0,at=Ue&&nt!==void 0?$q(nt,{llm:e.llm,allTools:()=>L.agent?.allTools??Ne,debug:e.debug,getFocuses:()=>S.getFocuses(),getSchema:()=>ge()?.schema??null,getBind:()=>ge()?.bind,tracker:We,guardMiddleware:et.length?et:void 0,getVfsFiles:ze?()=>y.files:void 0,enterDataScope:me?.enterScope?e=>me.enterScope(e):void 0,exitDataScope:me?.exitScope?e=>me.exitScope(e):void 0,onUsage:e=>{i.prompt_tokens=(i.prompt_tokens??0)+(e.prompt_tokens??0),i.completion_tokens=(i.completion_tokens??0)+(e.completion_tokens??0),i.total_tokens=(i.total_tokens??0)+(e.total_tokens??0)},timeoutMs:e.subagent?.timeoutMs,...rt?{componentLock:rt,resolveComponents:e=>Jle(e,Wle(ge()?.bind,j))}:{}}):void 0,ot=at?at.controller:null,st=[`get_data`,`describe_data`,`read`,`fetch_document`],ct=Ne.filter(e=>st.includes(e.name)),lt=Je?eJ({check:e.verify.check??oJ({schemas:()=>ge()?{"":ge().schema}:{},root:()=>ge()?.bind}),adversarial:e.verify?.adversarial?{llm:e.llm,tools:ct}:void 0}):void 0,ut=Ye?bJ({contextWindow:f.contextWindow,thresholdRatio:i4(e,f.contextWindow).summaryThresholdRatio}):void 0,dt=s3({...oe,humanConfirm:Se,subagents:A?.map(e=>({id:e.id,description:e.description,temperature:e.temperature}))},se&&!!E,r,!!E?.resources?.length,{promptSoftCap:Oq(f.contextWindow,p.promptSoftCapTokens)}),ft=E?{name:`dataHint`,augmentPrompt:()=>X0(ge(),e.schemaHint,n)||void 0}:null,pt=e.augmentSystem?{name:`augmentSystem`,augmentPrompt:t=>{try{return e.augmentSystem({state:t,data:ge()})}catch(t){e.debug&&console.log(`[page-agent-sdk][augmentSystem] 回调抛错,降级跳过:`,t.message);return}}}:null,mt=n4(e.onEvent),ht=mt.emit,gt,_t=[],vt=e=>({name:e.name,description:e.description,content:typeof e.getContent==`function`?e.getContent():``}),yt=e=>({name:e.name,description:e.description,getContent:()=>e.content}),bt=e.skillStorage===!1?null:d3({...typeof e.skillStorage==`object`?e.skillStorage:{},id:e.skillStorage&&typeof e.skillStorage==`object`&&e.skillStorage.id?e.skillStorage.id:`agent::${t}`}),xt=oe.preferences,St=xt&&e.preferenceStorage!==!1?h3({...typeof e.preferenceStorage==`object`?e.preferenceStorage:{},id:e.preferenceStorage&&typeof e.preferenceStorage==`object`&&e.preferenceStorage.id?e.preferenceStorage.id:`agent::${t}`}):null,Ct=St?x3({store:St,llmInvoke:l,getSessionId:()=>L.sessionId,onDebug:e=>{let t=L.agent?.debugLogs;t&&(t.value.push({timestamp:Date.now(),type:`middleware`,data:e}),Nz(t))}}):null,wt=()=>{let t=gt?gt.controller:null;if(t){let n=(e.skills||[]).filter(e=>!_t.some(t=>t.name===e.name));t.set([...n,..._t])}L.infoTick.value++},Tt=async()=>{if(bt)try{let t=await bt.list();if(t.length){_t=t.map(yt);let n=gt?gt.controller:null;if(n){let t=(e.skills||[]).filter(e=>!_t.some(t=>t.name===e.name));n.set([...t,..._t])}L.infoTick.value++}}catch{}},Et=Be?Mq({...p,llmInvoke:l,getRegisteredData:()=>ge()?[{description:ge().description??`主数据对象`}]:[],preserveLastToolResults:h,...Ve?{decideInvoke:d,getSnapshot:()=>ut?.getSnapshot()}:{}}):void 0,Dt=wue([...ft?[ft]:[],dt,...Ie?[x]:[],...Ct?[Ct]:[],...Fe?[b]:[],...Re?[gt=WK([...oe.domInspect&&!(e.skills||[]).some(e=>e.name===X4.name)?[X4]:[],...e.skills||[]],{readVfs:ze?e=>y.files[e]?.content:void 0,hostScriptEnabled:oe.skillHostScript,onToolsReady:(e,t)=>{for(let n of t){let t=je.findIndex(e=>e.name===n.name);t>=0&&je.splice(t,1),je.push(n),Me.set(n.name,e),ve.set(n.name,`skill:${e}`)}Ne=Pe(),L.agent&&L.agent.setTools(Ne),L.infoTick.value++}})]:[],...ze?[Ble(y)]:[],...Et?[Et]:[],...Le?[C]:[],...Te?[S]:[],...he?[he]:[],...He?[w]:[],...Qe?[Qe]:[],...re&&ae&&ie?[uq(ie)]:[],...Se?[nq()]:[],...$e?[$e]:[],...P?[P]:[],...lt?[lt]:[],...tt?[tt]:[],...at?[at]:[],...it?[it]:[],...pt?[pt]:[],...ut?[ut]:[],...e.middleware||[],...ue?[Gue(i,{tokenBudget:e.tokenBudget,timeBudgetMs:e.timeBudgetMs},ht)]:[],dde(ht,v,ge,i)]),Ot=e.maxMemoryRounds??cde,kt=e.approval?.timeoutMs,At=kt===void 0||kt===0?3e4:!Number.isFinite(kt)||kt<0?0:kt;function jt(e){if(At)return t=>{if(t.type!==`approval_request`)return;let n=Date.now(),r=t.toolName;setTimeout(()=>{e?.aborted||(t.resolve(!1),ht({type:`error`,message:`确认请求(${r})${Math.round((Date.now()-n)/1e3)}s 无响应已自动拒绝 —— send/batch 路径无 UI 响应方;可传 approval.timeoutMs 调整(Infinity = 无限等)`,severity:`observable`,code:`APPROVAL_AUTO_REJECTED`,context:{toolName:r,waitedMs:Date.now()-n}}))},At)}}function Mt(e){let t=jt(e);return e=>{t?.(e),e.type!==`approval_request`&&ht(e)}}let Nt=Az([]);async function Pt(){if(s)try{Nt.value=(await s.listSessions(t)).sort((e,t)=>t.lastAccessed-e.lastAccessed)}catch(t){e.debug&&console.warn(`[page-agent-sdk][persist] refreshSessions 失败(已吞):`,t)}}let Ft=w3(),It=new Set;function Lt(e){let t=new AbortController,n=()=>t.abort();return e&&(e.aborted?t.abort():e.addEventListener(`abort`,n,{once:!0})),It.add(t),{controller:t,untrack:()=>{It.delete(t),e?.removeEventListener(`abort`,n)}}}function Rt(){for(let e of It)e.abort();It.clear()}let L={agentId:t,store:s,messages:v,vfsStore:y,listeners:mt.listeners,todosMw:b,memoryMw:w,missionMw:x,workingMemoryMw:C,focusMw:S,agent:null,initDone:Promise.resolve(),sessionId:``,refCount:0,mcpClosers:[],mcpServers:[],mcpFailed:[],checkpoint:ie,dataOpsController:me,skillsController:gt?gt.controller:null,infoTick:o,pendingConflict:a.pendingConflict,sessions:Nt,refreshSessions:Pt,liveData:ge,usage:i,emit:ht,runSerial:Ft,trackActive:Lt,abortAllActive:Rt,unloadSkillTools(e){if(e){let t=je.length;if(je=je.filter(t=>Me.get(t.name)===e?(ve.delete(t.name),Me.delete(t.name),!1):!0),je.length===t)return}else{if(!je.length)return;for(let e of je)ve.delete(e.name),Me.delete(e.name);je=[]}Ne=Pe(),L.agent&&L.agent.setTools(Ne)},applySnapshot(t){if(t.vfs&&y.hydrate&&y.hydrate(t.vfs),t.messages?.length&&v.push(...dW(t.messages,e=>(e?L.vfsStore?.files?.[e]?.content:void 0)||void 0)),t.todos?.length&&b.reset(t.todos),t.memory&&!e.memory&&w.reset(t.memory),t.checkpoints?.length&&ie&&ie.importStack(t.checkpoints),t.usage&&Object.assign(i,t.usage),t.mission&&Ie&&x.setMission(t.mission),t.workingMemory&&Le&&C.restore(t.workingMemory),Te){let n=t.focus,r=n?Array.isArray(n)?n:[n]:[];if(r.length){let t=ge()?.schema,n=t?r.filter(e=>hG(t,e.path)):[];if(n.length&&(S.setFocus(null),n.forEach(e=>S.addFocus(e))),e.debug&&n.length<r.length){let e=r.filter(e=>!n.includes(e)).map(e=>e.path);console.warn(`[page-agent-sdk][focus] 恢复的焦点部分 path 已失效(schema 变化/无 schema),剔除:`,e)}}}Ht()},addSkill(e){let t=_t.findIndex(t=>t.name===e.name);t>=0?_t[t]=e:_t.push(e),wt(),bt&&bt.put(vt(e))},removeSkill(e){let t=_t.findIndex(t=>t.name===e);return t<0?!1:(_t.splice(t,1),wt(),bt&&bt.remove(e),!0)},listUserSkills(){return _t.map(e=>e.name)},getUserSkill(e){let t=_t.find(t=>t.name===e);if(t)return{name:t.name,description:t.description,content:typeof t.getContent==`function`?t.getContent():``}},afterRound(){Ut(),Zt()},async send(e,t){if(await L.initDone,L.refCount<=0)throw Error(`page-agent-sdk: agent 已释放(unmount),拒绝排队中的 send`);t??={},t?.mission&&Ie&&x.setMission(t.mission);let n=e;if(t.interceptors?.input)try{let r=t.interceptors.input(e);typeof r==`string`&&(n=r)}catch{}let r=(t.images??[]).filter(e=>e&&(e.dataUri||e.vfsRef||e.url));if(r.length>4)throw Error(`[page-agent-sdk] 单轮最多 4 张图片(收到 ${r.length})`);if(r.length&&(await Yt(r),await Xt(r,n)),r.length&&!f.vision&&!r.every(e=>e.description)){let e=`当前主模型不支持图片输入(modelCaps.vision=false)。请换多模态模型(gpt-4o/claude/qwen-vl)或 LLMConfig 声明 vision:true;或配置 images.describe 绑定识图转述(集成方识图子 agent / 自有 vision API)`;throw ht({type:`error`,message:e,severity:`recoverable`,code:`IMAGE_UNSUPPORTED_MODEL`}),Error(`[page-agent-sdk] ${e}`)}let i=ue?t.maxAutoRetries??1:0,a=0,o=!1,c=Mt(t.signal),l=L.sessionId;for(;;){o||=(v.push({role:`user`,content:n,timestamp:Date.now(),...r.length?{images:r}:{}}),!0);try{let e=await L.agent.invoke(v,t.signal,c);if(t.signal?.aborted||L.sessionId!==l||L.refCount<=0)return L.agent?.debugLogs?.value?.push({timestamp:Date.now(),type:`middleware`,data:{stage:`orphan_round_dropped`,fromSession:l,aborted:!!t.signal?.aborted,sessionChanged:L.sessionId!==l}}),e;if(t.interceptors?.output)try{let n=t.interceptors.output(e);typeof n==`string`&&(e=n)}catch{}return v.push({role:`assistant`,content:e,timestamp:Date.now()}),L.afterRound(),s&&await s.flush(),e}catch(e){if(AW(e,t.signal))throw e;let n=QU(e,`fatal`);if(a<i&&ie?.canRestore()){a+=1,ie.restore(),o=!0,ht({type:`error`,message:`致命错误自动恢复(${a}/${i}):${n.message},已回退 checkpoint 重试`,severity:`observable`,code:`AUTO_RECOVER_RETRY`,context:{attempt:a,cause:n.code??n.message.slice(0,120)}});continue}throw ht({type:`error`,message:n.message,severity:n.severity,...n.code?{code:n.code}:{},...n.context===void 0?{}:{context:n.context}}),e}}},async batch(e,t,n){if(await L.initDone,!e.length)return[];if(L.refCount<=0)throw Error(`page-agent-sdk: agent 已释放(unmount),拒绝排队中的 batch`);let r=[],i=Mt(n);for(let a=0;a<e.length;a++){if(n?.aborted){for(let t=a;t<e.length;t++)r.push({index:t,task:e[t],error:`aborted(外部中止)`,ok:!1});break}let o=e[a];ie&&ie.save(`batch:${a}`);let c=v.length;try{v.push({role:`user`,content:o,timestamp:Date.now()});let c=await L.agent.invoke(v,n,i);v.push({role:`assistant`,content:c,timestamp:Date.now()}),L.afterRound(),s&&await s.flush(),r.push({index:a,task:o,reply:c,ok:!0}),t?.({done:a+1,total:e.length,task:o,ok:!0})}catch(i){if(v.length>c&&v.splice(c),AW(i,n)){r.push({index:a,task:o,error:`aborted(外部中止)`,ok:!1});for(let t=a+1;t<e.length;t++)r.push({index:t,task:e[t],error:`aborted(外部中止)`,ok:!1});break}let s=QU(i,`fatal`);ht({type:`error`,message:`批量任务 ${a+1}/${e.length} 失败:${s.message}`,severity:`observable`,code:`BATCH_TASK_FAILED`,context:{index:a,task:o.slice(0,100)}}),r.push({index:a,task:o,error:s.message,ok:!1}),t?.({done:a+1,total:e.length,task:o,ok:!1})}}return r},async switchSession(n){if(await L.initDone,!s)throw Error(`page-agent-sdk: storage 未开启,无法切换会话(请传 storage 选项)`);if(a.resolve(`keep_external`),L.sessionId&&s){if(Ie){let e=x.getMission();e&&qt({mission:e})}if(Le){let e=C.getWorkingMemory();e&&qt({workingMemory:e})}if(Te){let e=S.getFocuses();qt({focus:e.length?e:null})}}y.flush?.(),await s.flush();let r=n??``,i;return r?(i=await s.load(t,r),i||await s.createSession(t,e.session?.title,r)):r=await s.createSession(t,e.session?.title),L.sessionId=r,v.splice(0,v.length),y.clear?.(),b.reset([]),e.memory||w.reset(``),x.reset(),C.reset(),S.reset(),Ct?.resetScanCursor(),ie&&ie.importStack([]),L.agent.debugLogs.value=[],i||=await s.load(t,r),i&&(L.applySnapshot(i),ht({type:`session_restored`,sessionId:r,rounds:i.messages?.length??0})),e.memory&&qt({memory:w.get()||(typeof e.memory==`string`?e.memory:``)}),Pt(),Wt=void 0,Gt=!1,L.infoTick.value++,r},resetSession:()=>{Rt(),a.resolve(`keep_external`),L.sessionId=R2(),v.splice(0,v.length),y.clear?.(),b.reset([]),e.memory||w.reset(``),x.reset(),C.reset(),S.reset(),Ct?.resetScanCursor(),ie&&ie.importStack([]),L.agent&&(L.agent.debugLogs.value=[]),s&&s.createSession(L.agentId,e.session?.title,L.sessionId).catch(t=>{e.debug&&console.warn(`[page-agent-sdk][persist] createSession 失败(已吞):`,t)}),ht({type:`session_restored`,sessionId:L.sessionId,rounds:0}),L.infoTick.value++,Pt(),Wt=void 0,Gt=!1},stream:async(e,t,n)=>{if(!L.agent)throw Error(`page-agent-sdk: agent 尚未初始化完成,请先 await mount()`);let r=[...e].reverse().find(e=>e.role===`user`&&e.images?.length);if(r?.images?.length&&(await Yt(r.images),await Xt(r.images,r.content),!f.vision&&!r.images.every(e=>e.description))){let e=`当前主模型不支持图片输入(modelCaps.vision=false)。请换多模态模型(gpt-4o/claude/qwen-vl)或 LLMConfig 声明 vision:true;或配置 images.describe 绑定识图转述`;throw ht({type:`error`,message:e,severity:`recoverable`,code:`IMAGE_UNSUPPORTED_MODEL`}),Error(`[page-agent-sdk] ${e}`)}y?.setProtectedRefs?.(C3(e));let i=e=>{t?.(e),ht(e),e.type===`subagent`&&(e.kind===`tool_call`||e.kind===`tool_result`)&&L.infoTick.value++};if(n){let e=()=>a.resolve(`keep_external`);n.aborted?e():n.addEventListener(`abort`,e,{once:!0})}let{controller:o,untrack:s}=Lt(n);return L.agent.stream(e,i,o.signal).finally(s)},release(){if(L.refCount--,L.refCount<=0){Rt(),xe=!0,s&&(y.flush?.(),s.flush(),s.dispose()),bt&&bt.dispose();let e=L.mcpClosers.splice(0);e.length&&Promise.allSettled(e.map(e=>e())),T3.delete(t)}},resolveConflict:a.resolve,setTools(e){ye.length=0,e.forEach(e=>{ye.push(e),ve.set(e.name,`user`)}),Ne=Pe(),L.agent&&L.agent.setTools(Ne),L.infoTick.value++},addTool(e){Ne.some(t=>t.name===e.name)&&console.warn(`[page-agent-sdk] 工具 "${e.name}" 已存在,新工具覆盖(后注册覆盖先注册)`);for(let t=ye.length-1;t>=0;t--)ye[t].name===e.name&&ye.splice(t,1);ye.push(e),ve.set(e.name,`user`),Ne=Pe(),L.agent&&L.agent.setTools(Ne),L.infoTick.value++},removeTool(e){let t=ye.findIndex(t=>t.name===e);return t<0?!1:(ye.splice(t,1),ve.delete(e),Ne=Pe(),L.agent&&L.agent.setTools(Ne),L.infoTick.value++,!0)},setLlm(t){let n;if(M2(t))n=t;else{let e=t;if((e.provider??`openai`)===`anthropic`)throw Error(`[page-agent-sdk][setLlm] 切换到 Anthropic 需传 BaseChatModel 实例(动态 import 无法同步);请先 const { ChatAnthropic } = await import("@langchain/anthropic") 构造实例后传入`);n=TL(e)}typeof n.bindTools!=`function`&&e.debug&&console.warn(`[page-agent-sdk][setLlm] 新模型不支持 bindTools(tool calling 会失效)`),_=t;let r=M2(t)?void 0:t;if(f=wW({model:r?.model??t.model??t.modelName,contextWindow:e.contextWindow??r?.contextWindow,maxOutputTokens:e.maxOutputTokens??r?.maxOutputTokens,vision:r?.vision??t.vision}),f.contextWindow<2e5)throw Error(`[page-agent-sdk][setLlm] 新模型上下文窗口 ${f.contextWindow} 小于最小支持 ${CW}(需 ≥200K 窗口模型)`);L.agent&&(L.agent.setLlm(n),L.agent.setModelCaps?.(f)),Et?.setContextWindow?.(f.contextWindow),ut?.setContextWindow?.(f.contextWindow),L.infoTick.value++,e.debug&&console.log(`[page-agent-sdk][setLlm] 重解析 modelCaps + 回灌:`,f)},setMemory(e){w.reset(e),typeof e==`function`&&w.refresh(),L.infoTick.value++},refreshMemory(){return w.refresh()},setSubagents(t){if(!ot){e.debug&&console.warn(`[page-agent-sdk][setSubagents] 未配 subagents:[] 或 capabilities.subagent 关闭,忽略`);return}ot.set(t),L.infoTick.value++},addSubagent(t){if(!ot){e.debug&&console.warn(`[page-agent-sdk][addSubagent] 未配 subagents:[] 或 capabilities.subagent 关闭,忽略`);return}ot.add(t),L.infoTick.value++},removeSubagent(t){if(!ot)return e.debug&&console.warn(`[page-agent-sdk][removeSubagent] 未配 subagents:[] 或 capabilities.subagent 关闭,忽略`),!1;let n=ot.remove(t);return n&&L.infoTick.value++,n},getActiveSubagents(){return We?.getActive()??[]},get subagentHistory(){return We?.getHistory()??[]},getInfo(){return{id:t,sessionId:L.sessionId,model:M2(_)?_.model??_.modelName:_.model,systemPrompt:L.agent?.getEffectiveSystemPrompt?.()??de+X0(ge(),e.schemaHint,n),tools:(L.agent?.allTools??Ne).map(e=>({name:e.name,description:e.description,schema:e.schema,source:ve.get(e.name)||`user`})),skills:(gt?gt.controller.get():e.skills??[]).map(e=>({name:e.name,description:e.description})),data:ge()?{description:ge().description,schema:ge().schema}:void 0,contextPreset:e.contextPreset??`auto`,compression:{contextWindow:f.contextWindow,summaryThresholdRatio:p.summaryThresholdRatio??.5,promptSoftCap:Oq(f.contextWindow,p.promptSoftCapTokens)},memory:w.get(),middleware:Dt.map(e=>e.name),todos:(L.agent?.getState?.()?.todos??[]).map(e=>({id:e.id,content:e.content,status:e.status,...e.parentId===void 0?{}:{parentId:e.parentId},...e.deps===void 0?{}:{deps:e.deps},...e.criteria===void 0?{}:{criteria:e.criteria},...e.evidence===void 0?{}:{evidence:e.evidence}})),planPhase:b.getPlanPhase(),mission:Ie?x.getMission():void 0,preferences:xt&&Ct?Ct.getPreferences():void 0,workingMemory:Le?C.getWorkingMemory():void 0,focus:Te?S.getFocus():void 0,focuses:Te?S.getFocuses():[],trace:le&&L.agent?.spans?{spans:L.agent.spans.value,metrics:OW(L.agent.spans.value)}:void 0,actions:i3(e.actions??{}),subagent:{enabled:!!tt,maxDepth:e.subagent?.maxDepth??1,maxParallel:e.subagent?.maxParallel??4,allowedTools:e.subagent?.allowedTools??[],subagents:ot?.get()??[],active:We?.getActive()??[],history:We?.getHistory()??[],lockedComponents:rt?.locked()??{}},verify:{enabled:!!lt,maxAttempts:Je?Ge:0,adversarial:Je&&!!e.verify?.adversarial},context:(()=>{let e=ut?.getSnapshot();if(e){let t=L.agent?.getState?.()?.lastCompression;t&&(e.compression=t)}return e})(),mcp:{servers:L.mcpServers,...L.mcpFailed.length?{failed:L.mcpFailed}:{}},lastCompression:L.agent?.getState?.()?.lastCompression,checkpoints:ie?{enabled:!0,auto:ae,list:ie.list()}:void 0}},exportDiagnostics(){let e=L.getInfo(),t={...e,tools:e.tools.map(({schema:e,...t})=>t),data:e.data?{description:e.data.description,schemaTopKeys:fG(e.data.schema)??[]}:void 0},n=L.liveData(),r=null;if(n){let e=-1,t=[];try{let r=JSON.stringify(n.bind);e=r?r.length:0,n.bind&&typeof n.bind==`object`&&!Array.isArray(n.bind)&&(t=Object.keys(n.bind))}catch{e=-1}r={description:n.description,topKeys:t,approxBytes:e}}return w2(C2({debugLogs:L.agent?.debugLogs?.value??[],messages:L.messages,info:t,usage:{...L.usage},pendingConflict:L.pendingConflict?.value??null,sessionId:L.sessionId,dataSummary:r}))},getMission(){return Ie?x.getMission():void 0},setMission(t){if(!Ie){e.debug&&console.warn(`[page-agent-sdk][mission] capabilities.missionAnchor 关闭,setMission 忽略`);return}x.setMission(t),L.infoTick.value++},getPreferences(){return Ct?Ct.getPreferences():[]},async removePreference(e){if(!Ct)return!1;let t=await Ct.removePreference(e);return t&&L.infoTick.value++,t},async clearPreferences(){Ct&&(await Ct.clearPreferences(),L.infoTick.value++)},getFocus(){return Te?S.getFocus():void 0},getFocuses(){return Te?S.getFocuses():[]},setFocus(t){let n=E3(t,`setFocus`,Te,()=>ge()?.schema,e.debug);return n.ok?(S.setFocus(t),L.infoTick.value++,{ok:!0}):n},addFocus(t){let n=E3(t,`addFocus`,Te,()=>ge()?.schema,e.debug);return n.ok?S.getFocuses().length>=8?(e.debug&&console.warn(`[page-agent-sdk][focus] addFocus 拒绝:焦点数已达上限 8(augmentPrompt 注入每焦点子树 schema,过多致 system prompt 超预算)`),{ok:!1,error:`焦点数上限 8(避免 system prompt 撑爆)`}):(S.addFocus(t),L.infoTick.value++,{ok:!0}):n},removeFocus(e){Te&&(S.removeFocus(e),L.infoTick.value++)},clearFocus(){Te&&(S.clearFocus(),L.infoTick.value++)}};async function zt(){if(!s)return;await s.ready;let n=e.session||{};if(n.id){L.sessionId=n.id;let e=await s.load(t,L.sessionId);e?(L.applySnapshot(e),ht({type:`session_restored`,sessionId:L.sessionId,rounds:e.messages?.length??0})):await s.createSession(t,n.title,L.sessionId)}else if(n.autoResume!==!1){let r=await s.listSessions(t);if(e.debug&&console.log(`[page-agent-sdk][restore] listSessions`,t,r.length,r.map(e=>e.sessionId)),r.length){L.sessionId=r[0].sessionId;let n=await s.load(t,L.sessionId);n?(L.applySnapshot(n),ht({type:`session_restored`,sessionId:L.sessionId,rounds:n.messages?.length??0}),e.debug&&console.log(`[page-agent-sdk][restore] 恢复会话`,L.sessionId,`${n.messages?.length??0} msgs`)):e.debug&&console.log(`[page-agent-sdk][restore] 会话 meta 存在但快照为空`,L.sessionId)}else L.sessionId=await s.createSession(t,n.title),e.debug&&console.log(`[page-agent-sdk][restore] 新建会话(无历史)`,L.sessionId)}else L.sessionId=await s.createSession(t,n.title);e.memory&&qt({memory:w.get()||(typeof e.memory==`string`?e.memory:``)}),Pt()}async function Bt(){await Tt()}function Vt(e){let t={};for(let n of C3(e)){let e=y.files[n];e&&(t[n]=e.content)}return t}function Ht(){let e=sde(y.files,C3(v));for(let t of e)delete y.files[t]}function Ut(){let e=yq(v,Ot);if(!e.trimmed)return;let{older:t,summary:n}=e;if(ht({type:`context_trimmed`,dropped:t.map(e=>({round:e.round,user:e.userMsg.content,assistant:e.assistantMsgs.map(e=>e.content),steps:e.assistantMsgs.flatMap(e=>e.steps??[])})),vfsResults:Vt(t.flatMap(e=>[e.userMsg,...e.assistantMsgs])),summary:n.content,reason:`max_memory_rounds`}),v.splice(e.deleteFrom,e.deleteCount,n),Ht(),m&&l){let n=e.summary,{prevSeg:r}=e;(async()=>{try{let e=await l(wq(t,g)),i=v.indexOf(n);if(i<0)return;v[i].content=vq(t,r,e),Zt()}catch{}})()}}let Wt,Gt=!1;function Kt(t,n){e.debug&&console.warn(`[page-agent-sdk][persist] ${t} 失败(已吞):`,n);let r=L.agent?.debugLogs;r&&r.value.push({timestamp:Date.now(),type:`middleware`,data:{stage:`persist_save_failed`,kind:t,error:String(n).slice(0,160)}})}function qt(e){!L.sessionId||!s||s.save(t,L.sessionId,e).catch(e=>Kt(`save`,e))}function Jt(e,n){s&&s.updateTitle(t,e,n).catch(e=>Kt(`updateTitle`,e))}async function Yt(t){let n=e.images?.upload;for(let e of t){try{e.dataUri&&!e.thumb&&(e.thumb=await gW(e.dataUri))}catch(e){Kt(`imageThumb`,e)}if(n&&e.dataUri&&!e.url)try{let t=await n(e.dataUri,e);t&&(e.url=t,e.dataUri=void 0,e.vfsRef&&L.vfsStore&&delete L.vfsStore.files[e.vfsRef])}catch(e){console.warn(`[page-agent-sdk][images] upload 失败,回退 dataURI 内联直发:`,e?.message??e)}e.dataUri&&!e.vfsRef&&L.vfsStore&&(e.vfsRef=`userImages/${e.id}`,L.vfsStore.files[e.vfsRef]={content:e.dataUri,updatedAt:Date.now()})}}async function Xt(t,n){let r=e.images?.describe;if(f.vision||!r)return;let i=e.images?.describeTimeoutMs??15e3;for(let e of t)if(!e.description)try{let t=new AbortController,a=setTimeout(()=>t.abort(),i);try{e.description=(await Promise.race([r(e,{text:n}),new Promise((e,n)=>t.signal.addEventListener(`abort`,()=>n(Error(`识图转述超时(${i}ms)`))))])).trim()}finally{clearTimeout(a)}}catch(t){e.description=`[图片描述不可用]`,ht({type:`error`,message:`识图转述失败:${t?.message??String(t)}`,severity:`observable`,code:`VISION_DESCRIBE_FAILED`})}}function Zt(){if(!L.sessionId||!s)return;if(qt({messages:uW(JSON.parse(JSON.stringify(v)))}),qt({todos:L.agent?.getState?.()?.todos??[]}),Ie){let e=x.getMission();e&&qt({mission:e})}if(Le){let e=C.getWorkingMemory();e&&qt({workingMemory:e})}if(Te){let e=S.getFocuses();qt({focus:e.length?e:null})}ue&&ie&&(qt({checkpoints:ie.exportStack()}),qt({usage:i}));let n=j2(v);if(n&&n!==Wt&&(Wt=n,Jt(L.sessionId,n)),e.autoTitle!==!1&&u&&!Gt&&v.some(e=>e.role===`user`)&&v.some(e=>e.role===`assistant`)){Gt=!0;let e=L.sessionId;(async()=>{try{let n=await u(v);if(n&&L.refCount>0&&L.sessionId===e){try{await s.updateTitle(t,e,n)}catch(e){Kt(`updateTitle`,e)}await Pt()}}catch{}})()}e.debug&&console.log(`[page-agent-sdk][persist] save`,L.sessionId,`${v.length} msgs`)}return L.initDone=(async()=>{await zt(),await Bt(),Ct&&await Ct.preload(),e.mcp?.length&&(async()=>{let t=await Promise.allSettled(e.mcp.map(e=>q0(e))),n=t.flatMap(e=>e.status===`fulfilled`?[e.value.close]:[]);if(xe){Promise.allSettled(n.map(e=>e()));return}L.mcpClosers=n,L.mcpServers=[];let r=new Set;for(let e of Ne){let t=ve.get(e.name);t&&!t.startsWith(`mcp:`)&&r.add(e.name)}t.forEach((t,n)=>{let i=e.mcp[n],a=i.name??i.url;if(t.status===`fulfilled`)L.mcpServers.push({name:a,url:i.url,toolCount:t.value.tools.length}),t.value.tools.forEach(e=>{if(r.has(e.name)){console.warn(`[page-agent-sdk][mcp] 工具 "${e.name}" 与内置工具重名,已拒绝注入(安全保留字保护)`);return}ve.set(e.name,`mcp:${a}`),be.push(e)});else{console.warn(`[page-agent-sdk][mcp] server ${a} 连接失败:`,t.reason);let e=String(t.reason?.message??t.reason??``).slice(0,200);L.mcpFailed.push({name:a,url:i.url,error:e}),ht({type:`error`,message:`MCP server「${a}」连接失败,其工具不可用:${e}`,severity:`observable`,code:`MCP_CONNECT_FAILED`,context:{server:a,url:i.url}})}}),be.length&&(Ne=Pe(),L.agent&&L.agent.setTools(Ne),L.infoTick.value++),e.debug&&console.log(`[page-agent-sdk][mcp] 注入 ${be.length} 个工具,${L.mcpServers.length} 个 server`)})();let t=M2(e.llm)?e.llm:await EL(e.llm);L.agent=dG({llm:t,systemPrompt:de,tools:Ne,middleware:Dt,maxToolRounds:e.maxToolRounds,maxRetries:e.maxRetries,stallMs:e.streamStallMs??9e4,streamMaxMs:e.streamMaxDurationMs??6e5,maxParallelTools:e.maxParallelTools,contextWindow:f.contextWindow,maxOutputTokens:f.maxOutputTokens,vision:f.vision,imageContentFormat:!M2(e.llm)&&(e.llm.provider??`openai`)===`anthropic`?`anthropic`:`openai`,maxVerifyAttempts:Je?Ge:0,roundTokenBudget:e.roundTokenBudget??0,onLlmChange:e=>{_=e},onTrace:le?(e,t)=>{try{ht({type:`trace`,spans:e,metrics:t})}catch{}}:void 0,debug:e.debug}),T.current=L.agent,at&&at.setReconfigureHook&&at.setReconfigureHook(()=>{L.agent&&L.agent.setTools(Pe())})})(),L}function pde(e,t){let n=e.id??R2();e.id||console.warn(`[page-agent-sdk] 未传 options.id,已生成随机 id "${n}"。刷新后持久化数据无法恢复,请传稳定 id。`);let r=e.streaming??!0,i=e.ui??`default`,a,o=e.shareContext?T3.get(n):void 0;o?a=o:(a=fde(e,n),e.shareContext&&T3.set(n,a)),a.refCount++;let s=null,c=$2(e),l=null,u=null;async function d(n){if(await a.initDone,s){s.show();return}let o=n===void 0?e.container:n,d=()=>{a.store&&(l=()=>{a.vfsStore.flush?.(),a.store.flush()},u=()=>{document.visibilityState===`hidden`&&a.store.flush()},typeof window<`u`&&window.addEventListener(`pagehide`,l),typeof document<`u`&&document.addEventListener(`visibilitychange`,u))};if(i===!1||!t){i!==!1&&console.warn(`[page-agent-sdk/headless] 未含 UI 组件,ui 渲染降级 headless;如需 UI 请 import page-agent-sdk 主包`),d();return}let m=typeof o==`string`?document.querySelector(o):o;if(!m)throw Error(`createChatSdk: 挂载点未找到(${o})`);s=t({el:m,core:a,dialogCfg:c,i18n:e.i18n,debug:e.debug===!0,streaming:r,runSerial:a.runSerial,hide:p,unmount:f,onDialogUnmounted:()=>{s=null,a.release()}}),c.drawer===!0&&c.drawerHidden===!0&&s.hide(),d()}function f(){a.abortAllActive(),a.resolveConflict(`keep_external`),l&&typeof window<`u`&&window.removeEventListener(`pagehide`,l),u&&typeof document<`u`&&document.removeEventListener(`visibilitychange`,u),l=null,u=null,s?s.unmount():a.release()}function p(){s?.hide()}function m(){s?.show()}return{mount:d,unmount:f,hide:p,show:m,send:(e,t)=>a.runSerial(async()=>{let{controller:n,untrack:r}=a.trackActive(t?.signal);try{return await a.send(e,{...t,signal:n.signal})}finally{r()}}),batch:(e,t,n)=>a.runSerial(async()=>{let{controller:r,untrack:i}=a.trackActive(n);try{return await a.batch(e,t,r.signal)}finally{i()}}),switchSession:(...e)=>a.runSerial(async()=>(a.abortAllActive(),a.switchSession(...e))),resetSession:()=>a.resetSession(),sessions:a.sessions,async listSessions(){return a.store?a.store.listSessions(n):[]},async deleteSession(e){if(a.store){if(e===a.sessionId){console.warn(`[page-agent-sdk] deleteSession 忽略:不能删除当前会话,请先 switchSession 切到其他会话`);return}await a.store.deleteSession(n,e),await a.refreshSessions()}},get sessionId(){return a.sessionId},stream:(e,t,n)=>a.stream(e,t,n),afterRound:a.afterRound,get debugLogs(){return a.agent.debugLogs},infoTick:a.infoTick,inspect:a.getInfo,exportDiagnostics:()=>a.exportDiagnostics(),inspectContext:()=>a.getInfo().context,getMission:a.getMission,setMission:a.setMission,getPreferences:a.getPreferences,removePreference:a.removePreference,clearPreferences:a.clearPreferences,getFocus:a.getFocus,getFocuses:a.getFocuses,setFocus:a.setFocus,addFocus:a.addFocus,removeFocus:a.removeFocus,clearFocus:a.clearFocus,messages:a.messages,restoreLastCheckpoint:()=>a.checkpoint?.restore()??!1,listCheckpoints:()=>a.checkpoint?.list()??[],hook:e=>(a.listeners.add(e),()=>a.listeners.delete(e)),setData:e=>{if(!a.dataOpsController){console.warn(`[page-agent-sdk] setData 忽略:dataOps 已关闭(capabilities.dataOps:false)`);return}a.dataOpsController.set(e),a.infoTick.value++},getData:()=>a.liveData(),setSkills:e=>{let t=a.skillsController;if(!t){console.warn(`[page-agent-sdk] setSkills 忽略:skills 已关闭(capabilities.skills:false)`);return}t.set(e),a.unloadSkillTools?.(),a.infoTick.value++},addSkill:e=>{if(!a.skillsController){console.warn(`[page-agent-sdk] addSkill 忽略:skills 已关闭(capabilities.skills:false)`);return}a.addSkill(e),a.unloadSkillTools?.(e.name)},removeSkill:e=>{if(!a.skillsController)return console.warn(`[page-agent-sdk] removeSkill 忽略:skills 已关闭(capabilities.skills:false)`),!1;let t=a.removeSkill(e);return t&&a.unloadSkillTools?.(e),t},listUserSkills:()=>a.listUserSkills(),getUserSkill:e=>a.getUserSkill(e),invalidateSkillCache:e=>{let t=a.skillsController;if(!t){console.warn(`[page-agent-sdk] invalidateSkillCache 忽略:skills 已关闭(capabilities.skills:false)`);return}t.invalidateCache(e),a.unloadSkillTools?.(e)},exportData:()=>{let e=a.liveData()?.bind;return e==null?null:JSON.parse(JSON.stringify(e))},importData:(e,t)=>{let n=a.liveData();if(!n||!a.dataOpsController)return{ok:!1,error:`dataOps 未开启或无主数据`};let r=n.bind;if(typeof r!=`object`||!r)return{ok:!1,error:`主数据 bind 非对象,无法就地还原(集成方应用对象包裹)`};if(t?.validate!==!1){let t=n.schema.safeParse(e);if(!t.success)return{ok:!1,error:`schema 校验失败:`+(t.error?.message??`未知错误`)}}return oq(r,e),a.dataOpsController?.markDataDirty?.(),t?.emit!==!1&&a.emit({type:`data_change`,operation:`set`,value:r}),{ok:!0}},vfsWrite:(e,t)=>{let n=typeof t==`string`?t:JSON.stringify(t);a.vfsStore.files[i2(e)]={content:n,updatedAt:Date.now()}},vfsRead:e=>a.vfsStore.files[i2(e)]?.content,createResource:(e,t)=>{let n=a.dataOpsController;if(!n?.createResource)throw Error(`[page-agent-sdk] createResource 不可用:需配 data.resources + vfsStore(capabilities.vfs 默认开)`);return n.createResource(e,t)},getResource:e=>a.dataOpsController?.getResource?.(e),updateResource:(e,t)=>{let n=a.dataOpsController;if(!n?.updateResource)throw Error(`[page-agent-sdk] updateResource 不可用:需配 data.resources + vfsStore`);n.updateResource(e,t)},deleteResource:e=>a.dataOpsController?.deleteResource?.(e)??!1,listResources:()=>a.dataOpsController?.listResources?.()??[],releaseResources:e=>{let t=a.dataOpsController;if(!(!t?.listResources||!t.deleteResource))if(e&&e.length)for(let n of e)t.deleteResource(n);else for(let e of t.listResources())t.deleteResource(e.path)},usage:a.usage,pendingConflict:a.pendingConflict,resolveConflict:e=>a.resolveConflict(e),setTools:e=>a.setTools(e),addTool:e=>a.addTool(e),removeTool:e=>a.removeTool(e),setLlm:e=>a.setLlm(e),setMemory:e=>a.setMemory(e),refreshMemory:()=>a.refreshMemory(),setSubagents:e=>a.setSubagents(e),addSubagent:e=>a.addSubagent(e),removeSubagent:e=>a.removeSubagent(e),getActiveSubagents:()=>a.getActiveSubagents(),get subagentHistory(){return a.subagentHistory}}}var D3=(e,t)=>{let{o:n,i:r,u:i}=e,a=n,o,s=(e,t)=>{let n=a,s=e,c=t||(r?!r(n,s):n!==s);return(c||i)&&(a=s,o=n),[a,c,o]};return[t?e=>s(t(a,o),e):s,e=>[a,!!e,o]]},O3=typeof window<`u`&&typeof HTMLElement<`u`&&window.document?window:{},k3=Math.max,mde=Math.min,A3=Math.round,j3=Math.abs,M3=Math.sign,N3=O3.cancelAnimationFrame,P3=O3.requestAnimationFrame,F3=O3.setTimeout,I3=O3.clearTimeout,L3=e=>O3[e]===void 0?void 0:O3[e],hde=L3(`MutationObserver`),R3=L3(`IntersectionObserver`),z3=L3(`ResizeObserver`),B3=L3(`ScrollTimeline`),V3=e=>e===void 0,H3=e=>e===null,U3=e=>typeof e==`number`,W3=e=>typeof e==`string`,G3=e=>typeof e==`boolean`,K3=e=>typeof e==`function`,q3=e=>Array.isArray(e),J3=e=>typeof e==`object`&&!q3(e)&&!H3(e),Y3=e=>{let t=!!e&&e.length,n=U3(t)&&t>-1&&t%1==0;return q3(e)||!K3(e)&&n?t>0&&J3(e)?t-1 in e:!0:!1},X3=e=>!!e&&e.constructor===Object,Z3=e=>e instanceof HTMLElement,Q3=e=>e instanceof Element;function $3(e,t){if(Y3(e))for(let n=0;n<e.length&&t(e[n],n,e)!==!1;n++);else e&&$3(Object.keys(e),(n=>t(e[n],n,e)));return e}var e6=(e,t)=>e.indexOf(t)>=0,t6=(e,t)=>e.concat(t),n6=(e,t,n)=>(!W3(t)&&Y3(t)?Array.prototype.push.apply(e,t):e.push(t),e),r6=e=>Array.from(e||[]),i6=e=>q3(e)?e:!W3(e)&&Y3(e)?r6(e):[e],a6=e=>!!e&&!e.length,o6=e=>r6(new Set(e)),s6=(e,t,n)=>{$3(e,e=>!e||e.apply(void 0,t||[])),n||(e.length=0)},c6=`paddingTop`,l6=`paddingRight`,u6=`paddingLeft`,d6=`paddingBottom`,f6=`marginLeft`,p6=`marginRight`,m6=`marginBottom`,h6=`overflowX`,g6=`overflowY`,_6=`width`,v6=`height`,y6=`visible`,b6=`hidden`,x6=`scroll`,gde=e=>{let t=String(e||``);return t?t[0].toUpperCase()+t.slice(1):``},S6=(e,t,n,r)=>{if(e&&t){let r=!0;return $3(n,(n=>{e[n]!==t[n]&&(r=!1)})),r}return!1},C6=(e,t)=>S6(e,t,[`w`,`h`]),w6=(e,t)=>S6(e,t,[`x`,`y`]),_de=(e,t)=>S6(e,t,[`t`,`r`,`b`,`l`]),T6=(e,...t)=>e.bind(0,...t),E6=e=>{let t,n=e?F3:P3,r=e?I3:N3;return[i=>{r(t),t=n((()=>i()),K3(e)?e():e)},()=>r(t)]},D6=e=>{let t=K3(e)?e():e;if(U3(t)){let e=t?F3:P3,n=t?I3:N3;return r=>{let i=e((()=>r()),t);return()=>{n(i)}}}return t&&t._},O6=(e,t)=>{let{p:n,v:r,S:i,m:a}=t||{},o,s,c,l,u=function(t){s&&s(),o&&o(),l=s=o=c=void 0,e.apply(this,t)},d=e=>a&&c?a(c,e):e,f=()=>{s&&c&&u(d(c)||c)},p=function(){let e=r6(arguments),t=D6(n);if(t){let n=typeof i==`function`?i():i,a=D6(r),p=d(e)||e,m=u.bind(0,p);s&&s(),n&&!l?(m(),l=!0,s=t((()=>l=void 0))):(s=t(m),a&&!o&&(o=a(f))),c=p}else u(e)};return p.O=f,p},k6=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),A6=e=>e?Object.keys(e):[],j6=(e,t,n,r,i,a,o)=>{let s=[t,n,r,i,a,o];return(typeof e!=`object`||H3(e))&&!K3(e)&&(e={}),$3(s,(t=>{$3(t,((n,r)=>{let i=t[r];if(e===i)return!0;let a=q3(i);if(i&&X3(i)){let t=e[r],n=t;a&&!q3(t)?n=[]:!a&&!X3(t)&&(n={}),e[r]=j6(n,i)}else e[r]=a?i.slice():i}))})),e},M6=(e,t)=>$3(j6({},e),((e,t,n)=>{e===void 0?delete n[t]:e&&X3(e)&&(n[t]=M6(e))})),N6=e=>!A6(e).length,P6=()=>{},F6=(e,t,n)=>k3(e,mde(t,n)),I6=e=>o6((q3(e)?e:(e||``).split(` `)).filter((e=>e))),L6=(e,t)=>e&&e.getAttribute(t),R6=(e,t)=>e&&e.hasAttribute(t),z6=(e,t,n)=>{$3(I6(t),(t=>{e&&e.setAttribute(t,String(n||``))}))},B6=(e,t)=>{$3(I6(t),(t=>e&&e.removeAttribute(t)))},V6=(e,t)=>{let n=I6(L6(e,t)),r=T6(z6,e,t),i=(e,t)=>{let r=new Set(n);return $3(I6(e),(e=>{r[t](e)})),r6(r).join(` `)};return{C:e=>r(i(e,`delete`)),$:e=>r(i(e,`add`)),H:e=>{let t=I6(e);return t.reduce(((e,t)=>e&&n.includes(t)),t.length>0)}}},H6=(e,t,n)=>(V6(e,t).C(n),T6(U6,e,t,n)),U6=(e,t,n)=>(V6(e,t).$(n),T6(H6,e,t,n)),W6=(e,t,n,r)=>(r?U6:H6)(e,t,n),G6=(e,t,n)=>V6(e,t).H(n),K6=e=>V6(e,`class`),q6=(e,t)=>{K6(e).C(t)},J6=(e,t)=>(K6(e).$(t),T6(q6,e,t)),Y6=(e,t)=>{let n=t?Q3(t)&&t:document;return n?r6(n.querySelectorAll(e)):[]},vde=(e,t)=>{let n=t?Q3(t)&&t:document;return n&&n.querySelector(e)},X6=(e,t)=>Q3(e)&&e.matches(t),Z6=e=>X6(e,`body`),Q6=e=>e?r6(e.childNodes):[],$6=e=>e&&e.parentElement,e8=(e,t)=>Q3(e)&&e.closest(t),t8=e=>document.activeElement,yde=(e,t,n)=>{let r=e8(e,t),i=e&&vde(n,r),a=e8(i,t)===r;return r&&i?r===e||i===e||a&&e8(e8(e,n),t)!==r:!1},n8=e=>{$3(i6(e),(e=>{let t=$6(e);e&&t&&t.removeChild(e)}))},r8=(e,t)=>T6(n8,e&&t&&$3(i6(t),(t=>{t&&e.appendChild(t)}))),i8,bde=()=>i8,xde=e=>{i8=e},a8=e=>{let t=document.createElement(`div`);return z6(t,`class`,e),t},o8=e=>{let t=a8(),n=bde(),r=e.trim();return t.innerHTML=n?n.createHTML(r):r,$3(Q6(t),(e=>n8(e)))},s8=(e,t)=>e.getPropertyValue(t)||e[t]||``,c8=e=>{let t=e||0;return isFinite(t)?t:0},l8=e=>c8(parseFloat(e||``)),u8=e=>Math.round(e*1e4)/1e4,d8=e=>`${u8(c8(e))}px`;function f8(e,t){e&&t&&$3(t,((t,n)=>{try{let r=e.style,i=H3(t)||G3(t)?``:U3(t)?d8(t):t;n.indexOf(`--`)===0?r.setProperty(n,i):r[n]=i}catch{}}))}function p8(e,t,n){let r=W3(t),i=r?``:{};if(e){let a=O3.getComputedStyle(e,n)||e.style;i=r?s8(a,t):r6(t).reduce(((e,t)=>(e[t]=s8(a,t),e)),i)}return i}var m8=(e,t,n)=>{let r=t?`${t}-`:``,i=n?`-${n}`:``,a=`${r}top${i}`,o=`${r}right${i}`,s=`${r}bottom${i}`,c=`${r}left${i}`,l=p8(e,[a,o,s,c]);return{t:l8(l[a]),r:l8(l[o]),b:l8(l[s]),l:l8(l[c])}},h8=(e,t)=>`translate${J3(e)?`(${e.x},${e.y})`:`${t?`X`:`Y`}(${e})`}`,Sde=e=>!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length),Cde={w:0,h:0},g8=(e,t)=>t?{w:t[`${e}Width`],h:t[`${e}Height`]}:Cde,wde=e=>g8(`inner`,e||O3),_8=T6(g8,`offset`),v8=T6(g8,`client`),y8=T6(g8,`scroll`),b8=e=>{let t=parseFloat(p8(e,_6))||0,n=parseFloat(p8(e,v6))||0;return{w:t-A3(t),h:n-A3(n)}},x8=e=>e.getBoundingClientRect(),Tde=e=>!!e&&Sde(e),S8=e=>!!(e&&(e[v6]||e[_6])),C8=(e,t)=>{let n=S8(e);return!S8(t)&&n},w8=(e,t,n,r)=>{$3(I6(t),(t=>{e&&e.removeEventListener(t,n,r)}))},T8=(e,t,n,r)=>{let i=(r&&r.D)??!0,a=r&&r.I||!1,o=r&&r.A||!1,s={passive:i,capture:a};return T6(s6,I6(t).map((t=>{let r=o?i=>{w8(e,t,r,a),n&&n(i)}:n;return e&&e.addEventListener(t,r,s),T6(w8,e,t,r,a)})))},E8=e=>e.stopPropagation(),D8=e=>e.preventDefault(),O8=e=>E8(e)||D8(e),k8=(e,t)=>{let{x:n,y:r}=U3(t)?{x:t,y:t}:t||{};U3(n)&&(e.scrollLeft=n),U3(r)&&(e.scrollTop=r)},A8=e=>({x:e.scrollLeft,y:e.scrollTop}),j8=()=>({T:{x:0,y:0},k:{x:0,y:0}}),Ede=(e,t)=>{let{T:n,k:r}=e,{w:i,h:a}=t,o=(e,t,n)=>{let r=M3(e)*n,i=M3(t)*n;if(r===i){let n=j3(e),a=j3(t);i=n>a?0:i,r=n<a?0:r}return r=r===i?0:r,[r+0,i+0]},[s,c]=o(n.x,r.x,i),[l,u]=o(n.y,r.y,a);return{T:{x:s,y:l},k:{x:c,y:u}}},M8=({T:e,k:t})=>{let n=(e,t)=>e===0&&e<=t;return{x:n(e.x,t.x),y:n(e.y,t.y)}},N8=({T:e,k:t},n)=>{let r=(e,t,n)=>F6(0,1,(e-n)/(e-t)||0);return{x:r(e.x,t.x,n.x),y:r(e.y,t.y,n.y)}},P8=e=>{e&&e.focus&&e.focus({preventScroll:!0,focusVisible:!1})},F8=(e,t)=>{$3(i6(t),e)},I8=e=>{let t=new Map,n=(e,n)=>{if(e){let r=t.get(e);F8((e=>{r&&r[e?`delete`:`clear`](e)}),n)}else t.forEach((e=>{e.clear()})),t.clear()},r=(e,i)=>{if(W3(e)){let r=t.get(e)||new Set;return t.set(e,r),F8((e=>{K3(e)&&r.add(e)}),i),T6(n,e,i)}G3(i)&&i&&n();let a=A6(e),o=[];return $3(a,(t=>{let n=e[t];n&&n6(o,r(t,n))})),T6(s6,o)};return r(e||{}),[r,n,(e,n)=>{$3(r6(t.get(e)),(e=>{n&&!a6(n)?e.apply(0,n):e()}))}]},L8={},R8={},Dde=e=>{$3(e,(e=>$3(e,((t,n)=>{L8[n]=e[n]}))))},z8=(e,t,n)=>A6(e).map((r=>{let{static:i,instance:a}=e[r],[o,s,c]=n||[],l=n?a:i;if(l){let e=n?l(o,s,t):l(t);return(c||R8)[r]=e}})),Ode=(e,t)=>e[t],B8=e=>Ode(R8,e),kde=`__osOptionsValidationPlugin`,V8=`data-overlayscrollbars`,H8=`os-environment`,U8=`${H8}-scrollbar-hidden`,W8=`${V8}-initialize`,G8=`noClipping`,K8=`${V8}-body`,q8=V8,Ade=`host`,J8=`${V8}-viewport`,jde=h6,Mde=g6,Nde=`arrange`,Y8=`measuring`,Pde=`scrolling`,X8=`scrollbarHidden`,Fde=`noContent`,Z8=`${V8}-padding`,Q8=`${V8}-content`,$8=`os-size-observer`,Ide=`${$8}-appear`,e5=`${$8}-listener`;`${e5}`,`${e5}`;var Lde=`os-trinsic-observer`,Rde=`os-theme-none`,t5=`os-scrollbar`,zde=`${t5}-rtl`,Bde=`${t5}-horizontal`,Vde=`${t5}-vertical`,n5=`${t5}-track`,r5=`${t5}-handle`,Hde=`${t5}-visible`,Ude=`${t5}-cornerless`,i5=`${t5}-interaction`,a5=`${t5}-unusable`,o5=`${t5}-auto-hide`,Wde=`${o5}-hidden`,s5=`${t5}-wheel`,Gde=`${n5}-interactive`,Kde=`${r5}-interactive`,qde=`__osSizeObserverPlugin`,Jde=(e,t)=>{let{M:n}=t,[r,i]=e(`showNativeOverlaidScrollbars`);return[r&&n.x&&n.y,i]},c5=e=>e.indexOf(y6)===0,Yde=e=>e.replace(`${y6}-`,``),l5=(e,t)=>{if(e===`auto`)return t?x6:b6;let n=e||b6;return[b6,x6,y6].includes(n)?n:b6},Xde=(e,t)=>{let{overflowX:n,overflowY:r}=p8(e,[h6,g6]);return{x:l5(n,t.x),y:l5(r,t.y)}},u5=`__osScrollbarsHidingPlugin`,Zde=`__osClickScrollPlugin`,d5=e=>JSON.stringify(e,((e,t)=>{if(K3(t))throw 0;return t})),f5=(e,t)=>e?`${t}`.split(`.`).reduce(((e,t)=>e&&k6(e,t)?e[t]:void 0),e):void 0,Qde=[0,33],p5=[33,99],m5=[222,666,!0],$de={paddingAbsolute:!1,showNativeOverlaidScrollbars:!1,update:{elementEvents:[[`img`,`load`]],debounce:{mutation:Qde,resize:null,event:p5,env:m5},attributes:null,ignoreMutation:null,flowDirectionStyles:null},overflow:{x:`scroll`,y:`scroll`},scrollbars:{theme:`os-theme-dark`,visibility:`auto`,autoHide:`never`,autoHideDelay:1300,autoHideSuspend:!1,dragScroll:!0,clickScroll:!1,pointers:[`mouse`,`touch`,`pen`]}},h5=(e,t)=>{let n={};return $3(t6(A6(t),A6(e)),(r=>{let i=e[r],a=t[r];if(J3(i)&&J3(a))j6(n[r]={},h5(i,a)),N6(n[r])&&delete n[r];else if(k6(t,r)&&a!==i){let e=!0;if(q3(i)||q3(a))try{d5(i)===d5(a)&&(e=!1)}catch{}e&&(n[r]=a)}})),n},g5=(e,t,n)=>r=>[f5(e,r),n||f5(t,r)!==void 0],_5,efe=()=>_5,tfe=e=>{_5=e},v5,nfe=()=>{let e=(e,t,n)=>{r8(document.body,e),r8(document.body,e);let r=v8(e),i=_8(e),a=b8(t);return n&&n8(e),{x:i.h-r.h+a.h,y:i.w-r.w+a.w}},t=e=>{let t=!1,n=J6(e,U8);try{t=p8(e,`scrollbar-width`)===`none`||p8(e,`display`,`::-webkit-scrollbar`)===`none`}catch{}return n(),t},n=o8(`<div class="${H8}"><div></div><style>${`.${H8}{scroll-behavior:auto!important;position:fixed;opacity:0;visibility:hidden;overflow:scroll;height:200px;width:200px;z-index:-1}.${H8} div{width:200%;height:200%;margin:10px 0}.${U8}{scrollbar-width:none!important}.${U8}::-webkit-scrollbar,.${U8}::-webkit-scrollbar-corner{appearance:none!important;display:none!important;width:0!important;height:0!important}`}</style></div>`)[0],r=n.firstChild,i=n.lastChild,a=efe();a&&(i.nonce=a);let[o,,s]=I8(),[c,l]=D3({o:e(n,r),i:w6},T6(e,n,r,!0)),[u]=l(),d=t(n),f={x:u.x===0,y:u.y===0},p={elements:{host:null,padding:!d,viewport:e=>d&&Z6(e)&&e,content:!1},scrollbars:{slot:!0},cancel:{nativeScrollbarsOverlaid:!1,body:null}},m=j6({},$de),h=T6(j6,{},m),g=T6(j6,{},p),_={U:u,M:f,P:d,J:!!B3,G:T6(o,`r`),K:g,Z:e=>j6(p,e)&&g(),tt:h,nt:e=>j6(m,e)&&h(),ot:j6({},p),st:j6({},m)};if(B6(n,`style`),n8(n),T8(O3,`resize`,(()=>{s(`r`,[])})),K3(O3.matchMedia)&&!d&&(!f.x||!f.y)){let e=t=>{T8(O3.matchMedia(`(resolution: ${O3.devicePixelRatio}dppx)`),`change`,(()=>{t(),e(t)}),{A:!0})};e((()=>{let[e,t]=c();j6(_.U,e),s(`r`,[t])}))}return _},y5=()=>(v5||=nfe(),v5),rfe=(e,t,n)=>{let r=!1,i=n?new WeakMap:!1,a=()=>{r=!0},o=a=>{i&&n&&$3(n.map((t=>{let[n,r]=t||[];return[r&&n?(a||Y6)(n,e):[],r]})),(n=>$3(n[0],(a=>{let o=n[1],s=i.get(a)||[];if(e.contains(a)&&o){let e=T8(a,o,(n=>{r?(e(),i.delete(a)):t(n)}));i.set(a,n6(s,e))}else s6(s),i.delete(a)}))))};return o(),[a,o]},b5=(e,t,n,r)=>{let i=!1,{et:a,ct:o,rt:s,it:c,lt:l,ut:u}=r||{},[d,f]=rfe(e,(()=>i&&n(!0)),s),p=a||[],m=o||[],h=t6(p,m),g=(i,a)=>{if(!a6(a)){let o=l||P6,s=u||P6,d=[],p=[],h=!1,g=!1;if($3(a,(n=>{let{attributeName:i,target:a,type:l,oldValue:u,addedNodes:f,removedNodes:_}=n,v=l===`attributes`,y=l===`childList`,b=e===a,x=v&&i,S=x&&L6(a,i||``),C=W3(S)?S:null,w=x&&u!==C,T=e6(m,i)&&w;if(t&&(y||!b)){let t=v&&w,l=t&&c&&X6(a,c),p=(l?!o(a,i,u,C):!v||t)&&!s(n,!!l,e,r);$3(f,(e=>n6(d,e))),$3(_,(e=>n6(d,e))),g||=p}!t&&b&&w&&!o(a,i,u,C)&&(n6(p,i),h||=T)})),f((e=>o6(d).reduce(((t,n)=>(n6(t,Y6(e,n)),X6(n,e)?n6(t,n):t)),[]))),t)return!i&&g&&n(!1),[!1];if(!a6(p)||h){let e=[o6(p),h];return i||n.apply(0,e),e}}},_=new hde(T6(g,!1));return[()=>(_.observe(e,{attributes:!0,attributeOldValue:!0,attributeFilter:h,subtree:t,childList:t,characterData:t}),i=!0,()=>{i&&=(d(),_.disconnect(),!1)}),()=>{if(i)return g(!0,_.takeRecords())}]},x5=null,S5=(e,t,n)=>{let{ft:r}=n||{},i=B8(qde),[a]=D3({o:!1,u:!0});return()=>{let n=[],o=o8(`<div class="${$8}"><div class="${e5}"></div></div>`)[0],s=o.firstChild,c=e=>{let n=q3(e)&&!a6(e),r=!1,i=!1;if(n){let t=e[0],[n,,o]=a(t.contentRect),s=S8(n);i=C8(n,o),r=!i&&!s}else i=e===!0;r||t({_t:!0,ft:i})};if(z3){if(!G3(x5)){let t=new z3(P6);t.observe(e,{get box(){x5=!0}}),x5||=!1,t.disconnect()}let t=O6(c,{p:0,v:0}),r=e=>t(e),i=new z3(r);if(i.observe(x5?e:s),n6(n,[()=>{i.disconnect()},!x5&&r8(e,o)]),x5){let t=new z3(r);t.observe(e,{box:`border-box`}),n6(n,(()=>t.disconnect()))}}else if(i){let[t,a]=i(s,c,r);n6(n,t6([J6(o,Ide),T8(o,`animationstart`,t),r8(e,o)],a))}else return P6;return T6(s6,n)}},ife=(e,t)=>{let n,r=e=>e.h===0||e.isIntersecting||e.intersectionRatio>0,i=a8(Lde),[a]=D3({o:!1}),o=(e,n)=>{if(e){let i=a(r(e)),[,o]=i;return o&&!n&&t(i)&&[i]}},s=(e,t)=>o(t.pop(),e);return[()=>{let t=[];if(R3)n=new R3(T6(s,!1),{root:e}),n.observe(i),n6(t,(()=>{n.disconnect()}));else{let e=()=>{let e=_8(i);o(e)};n6(t,S5(i,e)()),e()}return T6(s6,n6(t,r8(e,i)))},()=>n&&s(!0,n.takeRecords())]},afe=(e,t,n,r)=>{let i,a,o,s,c,l,u,d,f=`[${q8}]`,p=`[${J8}]`,m=[`id`,`class`,`style`,`open`,`wrap`,`cols`,`rows`],{dt:h,vt:g,L:_,gt:v,ht:y,V:b,bt:x,yt:S,wt:C,St:w}=e,T=e=>p8(e,`direction`)===`rtl`,E=()=>{let e,t,n,i=O6(r,{p:()=>e,v:()=>t,S:()=>n,m(e,t){let[n]=e,[r]=t;return[t6(A6(n),A6(r)).reduce(((e,t)=>(e[t]=n[t]||r[t],e)),{})]}}),a=(r,a)=>{if(q3(a)){let[r,i,o]=a;e=r,t=i,n=o}else U3(a)?(e=a,t=!1,n=!1):(e=!1,t=!1,n=!1);i(r)};return a.O=i.O,a},D={Ot:!1,B:T(h)},ee=y5(),O=B8(u5),[k]=D3({i:C6,o:{w:0,h:0}},(()=>{let r=O&&O.R(e,t,D,ee,n).Y,i=!(x&&b)&&G6(g,q8,G8),a=!b&&S(Nde),o=a&&A8(v),s=o&&w(),c=C(Y8,i),l=a&&r&&r(),u=y8(_),d=b8(_);return l&&l(),k8(v,o),s&&s(),i&&c(),{w:u.w+d.w,h:u.h+d.h}})),te=E(),A=e=>{let t=T(h);j6(e,{Ct:d!==t}),j6(D,{B:t}),d=t},ne=(e,t)=>{let[n,i]=e,a={$t:i};return j6(D,{Ot:n}),t||r(a),a},j=({_t:e,ft:t})=>{let n=t?r:te,i={_t:e||t,ft:t};A(i),n(i,a)},M=(e,t)=>{let[,n]=k(),r={xt:n};return A(r),n&&!t&&te(r,e?o:i),r},N=(e,t,n)=>{let r={Ht:t};return A(r),t&&!n&&te(r,i),r},[re,ie]=y?ife(g,ne):[],ae=!b&&S5(g,j,{ft:!0}),[oe,se]=b5(g,!1,N,{ct:m,et:m}),ce=b&&z3&&new z3((e=>{let t=e[e.length-1].contentRect;j({_t:!0,ft:C8(t,u)}),u=t}));return[()=>{ce&&ce.observe(g);let e=ae&&ae(),t=re&&re(),n=oe(),r=ee.G((e=>{let[,t]=k();te({Et:e,xt:t,_t:x},s)}));return()=>{ce&&ce.disconnect(),e&&e(),t&&t(),l&&l(),n(),r()}},({Dt:e,zt:t,It:n})=>{let r={},[u]=e(`update.ignoreMutation`),[d,h]=e(`update.attributes`),[g,v]=e(`update.elementEvents`),[x,S]=e(`update.debounce`),C=v||h,w=t||n,T=e=>K3(u)&&!!u(e);if(C){c&&c(),l&&l();let[e,t]=b5(y||_,!0,M,{et:t6(m,d||[]),rt:g,it:f,ut:(e,t)=>{let{target:n,attributeName:r}=e;return(!t&&r&&!b?yde(n,f,p):!1)||!!e8(n,`.${t5}`)||T(e)}});l=e(),c=t}if(S&&(te.O(),q3(x)||U3(x)?(i=x,a=!1,o=p5,s=m5):X3(x)?(i=x.mutation,a=x.resize,o=x.event,s=x.env):(i=!1,a=!1,o=!1,s=!1)),w){let e=se(),t=ie&&ie(),n=c&&c();e&&j6(r,N(e[0],e[1],w)),t&&j6(r,ne(t[0],w)),n&&j6(r,M(n[0],w))}return A(r),r},D]},C5=(e,t)=>K3(t)?t.apply(0,e):t,ofe=(e,t,n,r)=>C5(e,V3(r)?n:r)||t.apply(0,e),w5=(e,t,n,r)=>{let i=C5(e,V3(r)?n:r);return!!i&&(Z3(i)?i:t.apply(0,e))},sfe=(e,t)=>{let{nativeScrollbarsOverlaid:n,body:r}=t||{},{M:i,P:a,K:o}=y5(),{nativeScrollbarsOverlaid:s,body:c}=o().cancel,l=n??s,u=V3(r)?c:r,d=(i.x||i.y)&&l,f=e&&(H3(u)?!a:u);return!!d||!!f},cfe=(e,t,n,r)=>{let{K:i}=y5(),{scrollbars:a}=i(),{slot:o}=a,{dt:s,vt:c,L:l,At:u,gt:d,bt:f,V:p}=t,{scrollbars:m}=u?{}:e,{slot:h}=m||{},g=[],_=[],v=[],y=w5([s,c,l],(()=>p&&f?s:c),o,h),b=e=>{if(B3){let t=null,r=[],i=new B3({source:d,axis:e}),a=()=>{t&&t.cancel(),t=null};return{Mt:o=>{let{Tt:s}=n,c=M8(s)[e],l=e===`x`,u=[h8(0,l),h8(`calc(-100% + 100cq${l?`w`:`h`})`,l)],d=c?u:u.reverse();return r[0]===d[0]&&r[1]===d[1]?a:(r=d,a(),t=o.kt.animate({clear:[`left`],transform:d},{timeline:i}),a)}}}},x={x:b(`x`),y:b(`y`)},S=()=>{let{Rt:e,Vt:t}=n,r=(e,t)=>F6(0,1,e/(e+t)||0);return{x:r(t.x,e.x),y:r(t.y,e.y)}},C=(e,t,n)=>{let r=n?J6:q6;$3(e,(e=>{r(e.Lt,t)}))},w=(e,t)=>{$3(e,(e=>{let[n,r]=t(e);f8(n,r)}))},T=(e,t,n)=>{let r=G3(n),i=!r||n,a=!r||!n;i&&C(_,e,t),a&&C(v,e,t)},E=()=>{let e=S(),t=e=>t=>[t.Lt,{"--os-viewport-percent":u8(e)+``}];w(_,t(e.x)),w(v,t(e.y))},D=()=>{if(!B3){let{Tt:e}=n,t=N8(e,A8(d)),r=e=>t=>[t.Lt,{"--os-scroll-percent":u8(e)+``}];w(_,r(t.x)),w(v,r(t.y))}},ee=()=>{let{Tt:e}=n,t=M8(e),r=e=>t=>[t.Lt,{"--os-scroll-direction":e?`0`:`1`}];w(_,r(t.x)),w(v,r(t.y)),B3&&(_.forEach(x.x.Mt),v.forEach(x.y.Mt))},O=()=>{if(p&&!f){let{Rt:e,Tt:t}=n,r=M8(t),i=N8(t,A8(d)),a=t=>{let{Lt:n}=t,a=$6(n)===l&&n,o=(e,t,n)=>{let r=t*e;return d8(n?r:-r)};return[a,a&&{transform:h8({x:o(i.x,e.x,r.x),y:o(i.y,e.y,r.y)})}]};w(_,a),w(v,a)}},k=e=>{let t=e?`x`:`y`,n=a8(`${t5} ${e?Bde:Vde}`),i=a8(n5),a=a8(r5),o={Lt:n,Pt:i,kt:a},s=x[t];return n6(e?_:v,o),n6(g,[r8(n,i),r8(i,a),T6(n8,n),s&&s.Mt(o),r(o,T,e)]),o},te=T6(k,!0),A=T6(k,!1);return te(),A(),[{Ut:E,Nt:D,qt:ee,Bt:O,Ft:T,jt:{Xt:_,Yt:te,Wt:T6(w,_)},Jt:{Xt:v,Yt:A,Wt:T6(w,v)}},()=>(r8(y,_[0].Lt),r8(y,v[0].Lt),T6(s6,g))]},lfe=(e,t,n,r,i)=>(a,o,s)=>{let{vt:c,L:l,V:u,gt:d,Gt:f,St:p}=t,{Lt:m,Pt:h,kt:g}=a,[_,v]=E6(333),[y,b]=E6(444),x=e=>{K3(d.scrollBy)&&d.scrollBy({behavior:`smooth`,left:e.x,top:e.y})},S=()=>{let t=`pointerup pointercancel lostpointercapture`,i=`client${s?`X`:`Y`}`,a=s?_6:v6,o=s?`left`:`top`,c=s?`w`:`h`,l=s?`x`:`y`,u=[];return T8(h,`pointerdown`,r((r=>{let m=e8(r.target,`.${r5}`)===g,_=m?g:h,v=e.scrollbars,S=v[m?`dragScroll`:`clickScroll`],{button:C,isPrimary:w,pointerType:T}=r,{pointers:E}=v;if(C===0&&w&&S&&(E||[]).includes(T)){s6(u),b();let e=!m&&(r.shiftKey||S===`instant`),v=T6(x8,g),C=T6(x8,h),w=(e,t)=>(e||v())[o]-(t||C())[o],T=A3(x8(d)[a])/_8(d)[c]||1,E=A8(d)[l],D=e=>{k8(d,{[l]:E+e})},ee=e=>{let{Rt:t}=n,r=_8(h)[c]-_8(g)[c],i=1/T*e/r;D(i*t[l])},O=r[i],k=v(),te=C(),A=k[a],ne=w(k,te)+A/2,j=O-te[o]-ne,M=m?0:j,N=e=>{s6(ae),_.releasePointerCapture(e.pointerId)},re=m||e,ie=p(),ae=[T8(f,t,N),T8(f,`selectstart`,(e=>D8(e)),{D:!1}),T8(h,t,N),re&&T8(h,`pointermove`,(e=>ee(M+e[i]-O))),re&&(()=>{let e=A8(d);ie();let t=A8(d),n={x:t.x-e.x,y:t.y-e.y};(j3(n.x)>3||j3(n.y)>3)&&(p(),k8(d,e),x(n),y(ie))})];if(_.setPointerCapture(r.pointerId),e)ee(j);else if(!m){let e=B8(Zde);if(e){let{Vt:t}=n,r=e(D,ee,T6(w),j,t[l],S,!!s,(e=>{e?ie():n6(ae,ie)}));n6(ae,r),n6(u,T6(r,!0))}}}})))},C=!0;return T6(s6,[T8(g,`pointermove pointerleave`,r(i)),T8(m,`pointerenter`,r((()=>{o(i5,!0)}))),T8(m,`pointerleave pointercancel`,r((()=>{o(i5,!1)}))),T8(m,`wheel`,r((e=>{let{deltaX:t,deltaY:n,deltaMode:r}=e;C&&r===0&&$6(m)===c&&x({x:t,y:n}),C=!1,o(s5,!0),_((()=>{C=!0,o(s5)})),D8(e)})),{D:!1,I:!0}),!u&&T8(m,`mousedown`,r((()=>{let e=t8();(R6(e,J8)||R6(e,q8)||e===document.body)&&F3(T6(P8,l),25)}))),T8(m,`pointerdown`,(()=>{let e=T8(f,`click`,(e=>{t(),O8(e)}),{A:!0,I:!0,D:!1}),t=T8(f,`pointerup pointercancel`,(()=>{t(),setTimeout(e,150)}),{I:!0,D:!0})}),{I:!0,D:!0}),S(),v,b])},ufe=(e,t,n,r,i,a,o)=>{let s,c,l,u,d,f=P6,p=0,m=[`mouse`,`pen`],h=e=>t=>{n.Kt||e(t)},g=e=>m.includes(e.pointerType),[_,v]=E6(),[y,b]=E6(100),[x,S]=E6(50),[C,w]=E6((()=>p)),[T,E]=cfe(e,a,i,lfe(t,a,i,h,(e=>g(e)&&N()))),{vt:D,Qt:ee,bt:O}=a,{Ft:k,Ut:te,Nt:A,qt:ne,Bt:j}=T,M=(e,t)=>{w();let r=e=>{n.Kt||k(Wde,e)};if(e)r();else{let e=!l||!s;p>0&&!t?C(T6(r,e)):r(e)}},N=()=>{(l?!s:!u)&&(M(!0),y((()=>{M(!1)})))},re=e=>{g(e)&&(s=!0,!n.Kt&&l&&M(!0))},ie=e=>{g(e)&&(s=!1,!n.Kt&&l&&M(!1))},ae=e=>{k(o5,e,!0),k(o5,e,!1)},oe=[w,b,S,v,()=>f(),T8(D,`pointerover`,re,{A:!0}),T8(D,`pointerenter`,re),T8(D,`pointerleave`,ie),T8(D,`pointermove`,h((e=>{g(e)&&c&&N()}))),T8(ee,`scroll`,h((e=>{_((()=>{A(),N()})),o(e),j()})))],se=B8(u5);return[()=>T6(s6,n6(oe,E())),({Dt:e,It:t,Zt:n,tn:a})=>{let{nn:o,sn:s,en:m,cn:g}=a||{},{Ct:_,ft:v}=n||{},{B:y}=r,{M:b,P:S}=y5(),{rn:C,j:w}=i,[T,E]=e(`showNativeOverlaidScrollbars`),[D,N]=e(`scrollbars.theme`),[re,ie]=e(`scrollbars.visibility`),[oe,ce]=e(`scrollbars.autoHide`),[le,ue]=e(`scrollbars.autoHideSuspend`),[de]=e(`scrollbars.autoHideDelay`),[fe,pe]=e(`scrollbars.dragScroll`),[me,he]=e(`scrollbars.clickScroll`),[ge,_e]=e(`overflow`),P=v&&!t,ve=o||s||g||_||t,F=m||ie||_e,ye=T&&b.x&&b.y,I=!S&&!se,be=ye||I,xe=(e,t,n)=>{let r=e.includes(x6)&&(re===y6||re===`auto`&&t===x6);return k(Hde,r,n),r};if(p=de,(E||I)&&k(Rde,be),N&&(k(d),k(D,!0),d=D),(ue||P)&&(ae(!le),P&&le&&(w.x||w.y?(f(),x((()=>{f=T8(ee,x6,h(T6(ae,!0)),{A:!0})}))):ae(!0))),ce&&(c=oe===`move`,l=oe===`leave`,u=oe===`never`,M(u,!0)),pe&&k(Kde,fe),he&&k(Gde,!!me),F){let e=xe(ge.x,C.x,!0),t=xe(ge.y,C.y,!1);k(Ude,!(e&&t))}ve&&(A(),te(),j(),g&&ne(),k(a5,!w.x,!0),k(a5,!w.y,!1),k(zde,y&&!O))},{},T]},dfe=e=>{let{K:t,P:n}=y5(),{elements:r}=t(),{padding:i,viewport:a,content:o}=r,s=Z3(e),c=s?{}:e,{elements:l}=c,{padding:u,viewport:d,content:f}=l||{},p=s?e:c.target,m=Z6(p),h=p.ownerDocument,g=h.documentElement,_=()=>h.defaultView||O3,v=T6(ofe,[p]),y=T6(w5,[p]),b=T6(a8,``),x=T6(v,b,a),S=T6(y,b,o),C=e=>{let t=_8(e),n=y8(e),r=p8(e,h6),i=p8(e,g6);return n.w-t.w>0&&!c5(r)||n.h-t.h>0&&!c5(i)},w=x(d),T=w===p,E=T&&m,D=!T&&S(f),ee=!T&&w===D,O=E?g:w,k=E?O:p,te=!T&&y(b,i,u),A=!ee&&D,ne=[A,O,te,k].map((e=>Z3(e)&&!$6(e)&&e)),j=e=>e&&e6(ne,e),M=!j(O)&&C(O)?O:p,N=E?g:O,re={dt:p,vt:k,L:O,ln:te,ht:A,gt:N,Qt:E?h:O,an:m?g:M,Gt:h,bt:m,At:s,V:T,un:_,yt:e=>G6(O,J8,e),wt:(e,t)=>W6(O,J8,e,t),St:()=>W6(N,J8,Pde,!0)},{dt:ie,vt:ae,ln:oe,L:se,ht:ce}=re,le=[()=>{B6(ae,[q8,W8]),B6(ie,W8),m&&B6(g,[W8,q8])}],ue=Q6([ce,se,oe,ae,ie].find((e=>e&&!j(e)))),de=E?ie:ce||se,fe=T6(s6,le);return[re,()=>{let e=_(),t=t8(),r=e=>{r8($6(e),Q6(e)),n8(e)},i=e=>T8(e,`focusin focusout focus blur`,O8,{I:!0,D:!1}),a=`tabindex`,o=L6(se,a),s=i(t);return z6(ae,q8,T?``:Ade),z6(oe,Z8,``),z6(se,J8,``),z6(ce,Q8,``),T||(z6(se,a,o||`-1`),m&&z6(g,K8,``)),r8(de,ue),r8(ae,oe),r8(oe||ae,!T&&se),r8(se,ce),n6(le,[s,()=>{let e=t8(),t=j(se),n=t&&e===se?ie:e,s=i(n);B6(oe,Z8),B6(ce,Q8),B6(se,J8),m&&B6(g,K8),o?z6(se,a,o):B6(se,a),j(ce)&&r(ce),t&&r(se),j(oe)&&r(oe),P8(n),s()}]),n&&!T&&(U6(se,J8,X8),n6(le,T6(B6,se,J8))),P8(!T&&m&&t===ie&&e.top===e?se:t),s(),ue=0,fe},fe]},ffe=({ht:e})=>({Zt:t,fn:n,It:r})=>{let{$t:i}=t||{},{Ot:a}=n;e&&(i||r)&&f8(e,{[v6]:a&&`100%`})},pfe=({vt:e,ln:t,L:n,V:r},i)=>{let[a,o]=D3({i:_de,o:m8()},T6(m8,e,`padding`,``));return({Dt:e,Zt:s,fn:c,It:l})=>{let[u,d]=o(l),{P:f}=y5(),{_t:p,xt:m,Ct:h}=s||{},{B:g}=c,[_,v]=e(`paddingAbsolute`);(p||d||l||m)&&([u,d]=a(l));let y=!r&&(v||h||d);if(y){let e=!_||!t&&!f,r=u.r+u.l,a=u.t+u.b,o={[p6]:e&&!g?-r:0,[m6]:e?-a:0,[f6]:e&&g?-r:0,top:e?-u.t:0,right:e?g?-u.r:`auto`:0,left:e?g?`auto`:-u.l:0,[_6]:e&&`calc(100% + ${r}px)`},s={[c6]:e?u.t:0,[l6]:e?u.r:0,[d6]:e?u.b:0,[u6]:e?u.l:0};f8(t||n,o),f8(n,s),j6(i,{ln:u,_n:!e,F:t?s:j6({},o,s)})}return{dn:y}}},mfe=(e,t)=>{let n=y5(),{vt:r,ln:i,L:a,V:o,Qt:s,gt:c,bt:l,wt:u,un:d}=e,{P:f}=n,p=l&&o,m=T6(k3,0),h={display:()=>!1,direction:e=>e!==`ltr`,flexDirection:e=>e.endsWith(`-reverse`),writingMode:e=>e!==`horizontal-tb`},g=A6(h),_={i:C6,o:{w:0,h:0}},v={i:w6,o:{}},y=e=>{u(Y8,!p&&e)},b=()=>p8(a,g),x=(e,t)=>{let n=!A6(e).length,r=t?!0:g.some((t=>{let n=e[t];return W3(n)&&h[t](n)}));if(n||!r||!Tde(a))return{T:{x:0,y:0},k:{x:1,y:1}};y(!0);let i=A8(c),o=T8(s,x6,(e=>{let t=A8(c);e.isTrusted&&t.x===i.x&&t.y===i.y&&E8(e)}),{I:!0,A:!0}),l=u(Fde,!0);k8(c,{x:0,y:0}),l();let d=A8(c),f=y8(c);k8(c,{x:f.w,y:f.h});let p=A8(c),m={x:p.x-d.x,y:p.y-d.y};k8(c,{x:-f.w,y:-f.h});let _=A8(c),v={x:_.x-d.x,y:_.y-d.y},b={x:j3(m.x)>=j3(v.x)?p.x:_.x,y:j3(m.y)>=j3(v.y)?p.y:_.y};return k8(c,i),P3((()=>o())),{T:d,k:b}},S=(e,t)=>{let n=O3.devicePixelRatio%1==0?0:1,r={w:m(e.w-t.w),h:m(e.h-t.h)};return{w:r.w>n?r.w:0,h:r.h>n?r.h:0}},C=(e,t)=>{let n=(e,t,n,r)=>{let i=e===y6?b6:Yde(e),a=c5(e),o=c5(n);return!t&&!r?b6:a&&o?y6:a?t&&r?i:t?y6:b6:t?i:o&&r?y6:b6};return{x:n(t.x,e.x,t.y,e.y),y:n(t.y,e.y,t.x,e.x)}},w=e=>{let t=e=>[y6,b6,x6].map((t=>ae(l5(t),e))),n=t(!0).concat(t()).join(` `);u(n),u(A6(e).map((t=>ae(e[t],t===`x`))).join(` `),!0)},[T,E]=D3(_,T6(b8,a)),[D,ee]=D3(_,T6(y8,a)),[O,k]=D3(_),[te]=D3(v),[A,ne]=D3(_),[j]=D3(v),[M]=D3({i:(e,t)=>S6(e,t,o6(t6(A6(e),A6(t)))),o:{}}),[N,re]=D3({i:(e,t)=>w6(e.T,t.T)&&w6(e.k,t.k),o:j8()}),ie=B8(u5),ae=(e,t)=>`${t?jde:Mde}${gde(e)}`;return({Dt:o,Zt:s,fn:c,It:l},{dn:h})=>{let{_t:g,Ht:_,xt:v,Ct:ae,ft:oe,Et:se}=s||{},{X:ce,Y:le,W:ue}=ie&&ie.R(e,t,c,n,o)||{},[de,fe]=Jde(o,n),[pe,me]=o(`overflow`),he=c5(pe.x),ge=c5(pe.y),_e=g||h||v||ae||se||fe,P=E(l),ve=ee(l),F=k(l),ye=ne(l);if(fe&&f&&u(X8,!de),_e){G6(r,q8,G8)&&y(!0);let e=le&&le(),[t]=P=T(l),[n]=ve=D(l),i=v8(a),o=p&&wde(d()),s={w:m(n.w+t.w),h:m(n.h+t.h)},c={w:m((o?o.w:i.w+m(i.w-n.w))+t.w),h:m((o?o.h:i.h+m(i.h-n.h))+t.h)};e&&e(),ye=A(c),F=O(S(s,c),l)}let[I,be]=ye,[xe,Se]=F,[Ce,we]=ve,[Te,Ee]=P,[De]=te({x:xe.w>0,y:xe.h>0}),Oe=he&&ge&&(De.x||De.y)||he&&De.x&&!De.y||ge&&De.y&&!De.x,ke=h||ae||se||Ee||we||be||Se||me||fe||_e||_&&p,[Ae]=o(`update.flowDirectionStyles`),[je,Me]=M(Ae?Ae(a)||{}:b(),l),[Ne,Pe]=ae||oe||Me||l?N(x(je,!!Ae),l):re(),Fe=C(De,pe);y(!1),ke&&(w(Fe),Fe=Xde(a,De),ue&&ce&&(ce(Fe,Ce,Te),f8(a,ue(Fe))));let[Ie,Le]=j(Fe);return W6(r,q8,G8,Oe),W6(i,Z8,G8,Oe),j6(t,{rn:Ie,Vt:{x:I.w,y:I.h},Rt:{x:xe.w,y:xe.h},j:De,Tt:Ede(Ne,xe)}),{en:Le,nn:be,sn:Se,cn:Pe||Se}}},hfe=e=>{let[t,n,r]=dfe(e),i={ln:{t:0,r:0,b:0,l:0},_n:!1,F:{[p6]:0,[m6]:0,[f6]:0,[c6]:0,[l6]:0,[d6]:0,[u6]:0},Vt:{x:0,y:0},Rt:{x:0,y:0},rn:{x:b6,y:b6},j:{x:!1,y:!1},Tt:j8()},{dt:a,gt:o,V:s,St:c}=t,{P:l,M:u}=y5(),d=!l&&(u.x||u.y),f=[ffe(t),pfe(t,i),mfe(t,i)];return[n,e=>{let t={},n=d&&A8(o),r=n&&c();return $3(f,(n=>{j6(t,n(e,t)||{})})),k8(o,n),r&&r(),s||k8(a,0),t},i,t,r]},gfe=(e,t,n,r)=>{let i=!1,a={Kt:!1,pn:!1},o=g5(t,{}),[s,c,l,u,d]=hfe(e),[f,p,m]=afe(u,l,o,(e=>{y({},e)})),[h,g,,_]=ufe(e,t,a,m,l,u,r),v=e=>A6(e).some((t=>!!e[t])),y=(e,r)=>{let{Kt:o,pn:s}=a;if(s||o&&i)return!1;let{vn:l,It:u,zt:d}=e,f=l||{},h=!!u||!i,_={Dt:g5(t,f,h),vn:f,It:h},y=r||p(j6({},_,{zt:d})),b=c(j6({},_,{fn:m,Zt:y}));g(j6({},_,{Zt:y,tn:b}));let x=v(y),S=v(b),C=x||S||!N6(f)||h;return i=!0,C&&n(e,{Zt:y,tn:b}),C};return[()=>{let{an:e,gt:t,St:n}=u,r=A8(e),i=[f(),s(),h(),()=>{a.pn=!0}],o=n();return k8(t,r),o(),T6(s6,i)},y,e=>{let t=a.Kt;a.Kt=e,!e&&t!==e&&y({It:!0,zt:!0})},()=>{g({Dt:g5(t,{},!1),vn:{},It:!1})},()=>({gn:a,hn:m,bn:l}),{yn:u,wn:_},d]},T5=new WeakMap,_fe=(e,t)=>{T5.set(e,t)},vfe=e=>{T5.delete(e)},E5=e=>T5.get(e),D5=(e,t,n)=>{let{tt:r}=y5(),i=Z3(e),a=i?e:e.target,o=E5(a);if(t&&!o){let o=[],s={},c=e=>{let t=M6(e),n=B8(kde);return n?n(t,!0):t},l=j6({},r(),c(t)),[u,d,f]=I8(),[p,m,h]=I8(n),g=(e,t)=>{h(e,t),f(e,t)},[_,v,y,b,x,S,C]=gfe(e,l,(({vn:e,It:t},{Zt:n,tn:r})=>{let{_t:i,Ct:a,$t:o,xt:s,Ht:c,ft:l}=n,{nn:u,sn:d,en:f,cn:p}=r;g(`updated`,[T,{updateHints:{sizeChanged:!!i,directionChanged:!!a,heightIntrinsicChanged:!!o,overflowEdgeChanged:!!u,overflowAmountChanged:!!d,overflowStyleChanged:!!f,scrollCoordinatesChanged:!!p,contentMutation:!!s,hostMutation:!!c,appear:!!l},changedOptions:e||{},force:!!t}])}),(e=>g(`scroll`,[T,e]))),w=e=>{let{gn:t}=x(),{pn:n}=t;n||(vfe(a),s6(o),g(`destroyed`,[T,e]),d(),m())},T={options(e,t){if(e){let n=t?r():{},i=h5(l,j6(n,c(e)));N6(i)||(j6(l,i),v({vn:i}))}return j6({},l)},on:p,off:(e,t)=>{e&&t&&m(e,t)},state(){let{gn:e,hn:t,bn:n}=x(),{pn:r,Kt:i}=e,{B:a}=t,{Vt:o,Rt:s,rn:c,j:l,ln:u,_n:d,Tt:f}=n;return j6({},{overflowEdge:o,overflowAmount:s,overflowStyle:c,hasOverflow:l,scrollCoordinates:{start:f.T,end:f.k},padding:u,paddingAbsolute:d,directionRTL:a,sleeping:i,destroyed:r})},elements(){let{dt:e,vt:t,ln:n,L:r,ht:i,gt:a,Qt:o}=S.yn,{jt:s,Jt:c}=S.wn,l=e=>{let{kt:t,Pt:n,Lt:r}=e;return{scrollbar:r,track:n,handle:t}},u=e=>{let{Xt:t,Yt:n}=e;return j6({},l(t[0]),{clone:()=>{let e=l(n());return b(),e}})};return j6({},{target:e,host:t,padding:n||r,viewport:r,content:i||r,scrollOffsetElement:a,scrollEventElement:o,scrollbarHorizontal:u(s),scrollbarVertical:u(c)})},update:e=>v({It:e,zt:!0}),destroy:T6(w,!1),sleep:y,plugin:e=>s[A6(e)[0]]};return n6(o,[C]),_fe(a,T),z8(L8,D5,[T,u,s]),sfe(S.yn.bt,!i&&e.cancel)?(w(!0),T):(n6(o,_()),g(`initialized`,[T]),T.update(),T)}return o};D5.plugin=e=>{let t=q3(e),n=t?e:[e],r=n.map((e=>z8(e,D5)[0]));return Dde(n),t?r:r[0]},D5.valid=e=>{let t=e&&e.elements,n=K3(t)&&t();return X3(n)&&!!E5(n.target)},D5.env=()=>{let{U:e,M:t,P:n,J:r,ot:i,st:a,K:o,Z:s,tt:c,nt:l}=y5();return j6({},{scrollbarsSize:e,scrollbarsOverlaid:t,scrollbarsHiding:n,scrollTimeline:r,staticDefaultInitialization:i,staticDefaultOptions:a,getDefaultInitialization:o,setDefaultInitialization:s,getDefaultOptions:c,setDefaultOptions:l})},D5.nonce=tfe,D5.trustedTypePolicy=xde;var yfe=4e3;function O5(e={}){let{fetchResponse:t,fetchStream:n,onPersist:r,onClear:i,onQueuedCleared:a}=e,o=yz({messages:e.messages??[],loading:!1,error:null}),s=Az(null),c=Az(!0),l=null,u=Az([]),d=Az(null);function f(){}function p(e){let t=s.value;e.deltaY<0?c.value=!1:t&&(c.value=t.scrollHeight-t.scrollTop-t.clientHeight<64)}function m(){s.value&&requestAnimationFrame(()=>{let e=s.value;!e||!c.value||(e.scrollTop=e.scrollHeight)})}function h(e,t,n,r){o.messages.push({role:e,content:t,timestamp:Date.now(),...n&&n.length?{focuses:n}:{},...r?.length?{images:r}:{}}),c.value=!0,m()}async function g(e){if(c.value=!0,n){let t=yz({role:`assistant`,content:``,timestamp:Date.now(),reasoning:``,steps:[]}),r=!1;o.messages.push(t);try{await n(o.messages.slice(0,-1),e=>{switch(e.type){case`round_start`:e.round>1&&(t.content||t.reasoning)&&(r=!0);break;case`reasoning`:r&&=(t.reasoning+=`
|
|
357
357
|
`,!1),t.reasoning=(t.reasoning+e.delta).slice(-4e3);break;case`text`:r&&=(t.content+=`
|
package/dist/page-agent-sdk.js
CHANGED
|
@@ -13275,7 +13275,7 @@ function yv(e, n) {
|
|
|
13275
13275
|
let e = P.map((e) => e._codeAsset.orchestratorPrompt).filter(Boolean).join("\n\n");
|
|
13276
13276
|
e && (V += "\n\n" + e);
|
|
13277
13277
|
} else A?.schema && nd(A.schema) && (V += "\n\n" + bd.htmlDirectWriteFallback, console.warn("[page-agent-sdk] 检测到 schema 含 code 字段但未注册 html 子 agent:已自动注入「主 agent 自己写 HTML」编排(code 作普通字段直接 write,无 vfs 工作副本 / 无格式校验门禁)。如需代码资产机制(vfs + 格式校验 + 增量 commit + 主上下文 code 摘要),注册 createHtmlSubagent;若确为降级意图可忽略。"));
|
|
13278
|
-
|
|
13278
|
+
i === "advanced" && /simple\s*模式|未暴露/.test(V) && (a = "simple", console.warn("[page-agent-sdk][usageHints] 检测到 systemPrompt 含「simple 模式/未暴露」措辞但 toolMode 为 advanced(默认):usageHints 已自动降级为 simple 提示词,避免教 LLM 调用集成方 systemPrompt 声明「未暴露」的工具。建议显式对齐:① 集成方 systemPrompt 按 simple 工作流设计 → 传 toolMode:'simple' 让工具池也匹配(推荐);② systemPrompt 措辞已过时(实际想要 advanced)→ 更新 systemPrompt 去掉「simple 模式/未暴露」字样。注:仅「勿调用」字样不触发降级(3.29 收窄;集成方常用它描述自己禁用的工具,属合法 advanced 用法)。"));
|
|
13279
13279
|
let ce = ae && A ? $g(A, {
|
|
13280
13280
|
onAudit: e.onAudit ?? (e.debug ? (e) => console.log("[page-agent-sdk][data audit]", e) : void 0),
|
|
13281
13281
|
maxSnapshots: e.maxSnapshots,
|
|
@@ -70981,7 +70981,7 @@ function kAe(e, t) {
|
|
|
70981
70981
|
let e = Ae.map((e) => e._codeAsset.orchestratorPrompt).filter(Boolean).join("\n\n");
|
|
70982
70982
|
e && (We += "\n\n" + e);
|
|
70983
70983
|
} else we != null && we.schema && ZSe(we.schema) && (We += "\n\n" + BQ.htmlDirectWriteFallback, console.warn("[page-agent-sdk] 检测到 schema 含 code 字段但未注册 html 子 agent:已自动注入「主 agent 自己写 HTML」编排(code 作普通字段直接 write,无 vfs 工作副本 / 无格式校验门禁)。如需代码资产机制(vfs + 格式校验 + 增量 commit + 主上下文 code 摘要),注册 createHtmlSubagent;若确为降级意图可忽略。"));
|
|
70984
|
-
|
|
70984
|
+
F === "advanced" && /simple\s*模式|未暴露/.test(We) && (ne = "simple", console.warn("[page-agent-sdk][usageHints] 检测到 systemPrompt 含「simple 模式/未暴露」措辞但 toolMode 为 advanced(默认):usageHints 已自动降级为 simple 提示词,避免教 LLM 调用集成方 systemPrompt 声明「未暴露」的工具。建议显式对齐:① 集成方 systemPrompt 按 simple 工作流设计 → 传 toolMode:'simple' 让工具池也匹配(推荐);② systemPrompt 措辞已过时(实际想要 advanced)→ 更新 systemPrompt 去掉「simple 模式/未暴露」字样。注:仅「勿调用」字样不触发降级(3.29 收窄;集成方常用它描述自己禁用的工具,属合法 advanced 用法)。"));
|
|
70985
70985
|
let Ge = Be && we ? O8(we, j(j({
|
|
70986
70986
|
onAudit: (p = e.onAudit) == null ? e.debug ? (e) => console.log("[page-agent-sdk][data audit]", e) : void 0 : p,
|
|
70987
70987
|
maxSnapshots: e.maxSnapshots,
|
|
@@ -195,7 +195,7 @@ ${`- 输出形态:完整、自包含的 HTML 页面(.${r},可独立成页)`}
|
|
|
195
195
|
|
|
196
196
|
`+e)}else A?.schema&&$u(A.schema)&&(B+=`
|
|
197
197
|
|
|
198
|
-
`+_d.htmlDirectWriteFallback,console.warn(`[page-agent-sdk] 检测到 schema 含 code 字段但未注册 html 子 agent:已自动注入「主 agent 自己写 HTML」编排(code 作普通字段直接 write,无 vfs 工作副本 / 无格式校验门禁)。如需代码资产机制(vfs + 格式校验 + 增量 commit + 主上下文 code 摘要),注册 createHtmlSubagent;若确为降级意图可忽略。`));
|
|
198
|
+
`+_d.htmlDirectWriteFallback,console.warn(`[page-agent-sdk] 检测到 schema 含 code 字段但未注册 html 子 agent:已自动注入「主 agent 自己写 HTML」编排(code 作普通字段直接 write,无 vfs 工作副本 / 无格式校验门禁)。如需代码资产机制(vfs + 格式校验 + 增量 commit + 主上下文 code 摘要),注册 createHtmlSubagent;若确为降级意图可忽略。`));i===`advanced`&&/simple\s*模式|未暴露/.test(B)&&(a=`simple`,console.warn(`[page-agent-sdk][usageHints] 检测到 systemPrompt 含「simple 模式/未暴露」措辞但 toolMode 为 advanced(默认):usageHints 已自动降级为 simple 提示词,避免教 LLM 调用集成方 systemPrompt 声明「未暴露」的工具。建议显式对齐:① 集成方 systemPrompt 按 simple 工作流设计 → 传 toolMode:'simple' 让工具池也匹配(推荐);② systemPrompt 措辞已过时(实际想要 advanced)→ 更新 systemPrompt 去掉「simple 模式/未暴露」字样。注:仅「勿调用」字样不触发降级(3.29 收窄;集成方常用它描述自己禁用的工具,属合法 advanced 用法)。`));let le=ae&&A?Xg(A,{onAudit:e.onAudit??(e.debug?e=>console.log(`[page-agent-sdk][data audit]`,e):void 0),maxSnapshots:e.maxSnapshots,onConflict:s.set,autoLock:e.autoLock,interceptors:e.interceptors,toolMode:i,vfsStore:oe||A?.resources?.length?C:void 0,...te.length?{pgIdPaths:te}:{},...ne.length?{largeTextPaths:ne}:{}}):[],ue=ae?Vg(le,i):[],V=ae&&A?le.controller??null:null,de=ae&&A?.resources?.length&&V?.getResourcesSnapshot?F_({getResourcesSnapshot:()=>V?.getResourcesSnapshot?.()??[],toolsExposed:i===`advanced`}):void 0,H=()=>V?.get()??A,fe=new Set(le.map(e=>e.name)),pe=V?Ym({getBind:()=>H()?.bind,recomputeAll:()=>V.recomputeAllBaselines?.(),hasBaselines:()=>V.hasBaselines?.()??!1,isManaged:e=>fe.has(e),log:(e,t)=>{let n=G.agent?.debugLogs;n&&(n.value.push({timestamp:Date.now(),type:`middleware`,data:{stage:`baseline_guard`,...t}}),wn(n))}}):void 0,me=new Map,he=j_(z,ue,Qg,z.domInspect&&!z.skills?[...i_,m_,h_]:i_,C_);he.forEach(e=>me.set(e.name,`builtin`));let ge=[...e.tools||[]];ge.forEach(e=>me.set(e.name,`user`));let _e=E_(e.actions??{});_e.forEach(e=>me.set(e.name,`action`));let ve=[],ye=!1,be=e.humanConfirm!==!1&&(!e.approval||e.approval.humanConfirmTool!==!1),xe=be?If():null;xe&&me.set(Pf,`builtin`);let Se=L&&R?[(0,r.tool)(async()=>{let e=R.list();return e.length?R.restore()?`已回退到最近一次正常状态(checkpoint #${e[e.length-1].id})。对话历史、主数据、vfs、todos 已整体还原。请基于回退后的状态重新判断并继续。`:`回退失败:无可用 checkpoint。`:`无可用 checkpoint,无法回退。`},{name:`restore_last_checkpoint`,description:`回退到最近一次正常状态(整体还原对话历史 + 主数据 + vfs + todos)。当本轮操作出错、页面被改坏、或走偏时调用,回到本轮起点重新来过。不传参数即回退最近一次。`,schema:t.z.object({}).optional()}),(0,r.tool)(async()=>{let e=R.list();return e.length?`可用 checkpoint:
|
|
199
199
|
`+e.map(e=>`#${e.id} [${e.label??`auto`}] 消息数=${e.messageCount} 时间=${new Date(e.timestamp).toLocaleTimeString()}`).join(`
|
|
200
200
|
`):`无可用 checkpoint。`},{name:`list_checkpoints`,description:`列出可用会话 checkpoint(回退点)。`,schema:t.z.object({}).optional()})]:[];Se.forEach(e=>me.set(e.name,`builtin`));let Ce=z.focus,we=(0,r.tool)(async({path:e,label:t})=>{let n=H()?.schema;return n?Yu(n,e)?(E.setFocus({path:e,...t?{label:t}:{}}),`已聚焦到 ${e}${t?`(${t})`:``}。后续仅可写该子树(越界被拒),每轮只看到该组件结构。完成精修后调 clear_focus 退出。`):`PATH_DENIED · 聚焦失败:path "${e}" 不在 schema 内。请先用 read 查看可操作路径再聚焦。`:`聚焦失败:当前无主数据 schema,无法聚焦。`},{name:`set_focus`,description:`聚焦到指定组件子树(如 components.3)精修,替换全部已有焦点(非累积;要保留已有焦点追加用 add_focus)。聚焦后:仅可写该子树(越界 PATH_DENIED)+ 每轮只看到该组件结构。多组件页面精修其中一个时用,避免改到别处。先 read 定位 path 再聚焦;完成调 clear_focus。`,schema:t.z.object({path:t.z.string().describe(`要聚焦的组件 jsonPath,如 components.3`),label:t.z.string().optional().describe(`人类可读标签,如「导航栏」`)})}),Te=(0,r.tool)(async()=>(E.clearFocus(),`已清除聚焦,恢复全量可操作范围(可读写所有组件)。`),{name:`clear_focus`,description:`清除当前聚焦,退出精修模式,恢复对全部组件的读写权限。`,schema:t.z.object({}).optional()}),Ee=(0,r.tool)(async({path:e,label:t})=>{let n=H()?.schema;if(!n)return`聚焦失败:当前无主数据 schema,无法聚焦。`;if(!Yu(n,e))return`PATH_DENIED · 聚焦失败:path "${e}" 不在 schema 内。请先用 read 查看可操作路径再聚焦。`;E.addFocus({path:e,...t?{label:t}:{}});let r=E.getFocuses();return`已聚焦 ${e}${t?`(${t})`:``}(当前共 ${r.length} 个焦点:${r.map(e=>e.path).join(`, `)})。后续仅可写这些子树之一(越界被拒)。`},{name:`add_focus`,description:`追加聚焦一个组件子树(multi-focus,可同时聚焦多个相关组件)。校验 path 在 schema 内。聚焦后仅可写已聚焦的子树之一(越界 PATH_DENIED)。与 set_focus(替换全部)不同:本工具累积追加,不清除已有焦点。`,schema:t.z.object({path:t.z.string().describe(`要追加聚焦的组件 jsonPath,如 components.3`),label:t.z.string().optional().describe(`人类可读标签`)})}),De=(0,r.tool)(async({path:e})=>{let t=E.getFocuses().length;E.removeFocus(e);let n=E.getFocuses();return n.length===t?`path "${e}" 不在当前焦点列表中(当前:${n.map(e=>e.path).join(`, `)||`无`})。`:n.length?`已移除焦点 ${e}(剩余 ${n.length} 个:${n.map(e=>e.path).join(`, `)})。`:`已移除焦点 ${e},聚焦已清空,恢复全量操作范围。`},{name:`remove_focus`,description:`移除单个聚焦焦点(by path),保留其他焦点。移除最后一个等价退出精修。全部退出用 clear_focus。`,schema:t.z.object({path:t.z.string().describe(`要移除的焦点 jsonPath`)})}),Oe=Ce&&i===`advanced`?[we,Te,Ee,De]:[];Oe.forEach(e=>me.set(e.name,`builtin`));let U=[],ke=new Map,Ae=je();function je(){let{tools:e,collisions:t}=M_([{label:`builtin`,tools:he},{label:`user`,tools:ge},{label:`action`,tools:_e},{label:`humanConfirm`,tools:xe?[xe]:[]},{label:`checkpoint`,tools:Se},{label:`focus`,tools:Oe},{label:`mcp`,tools:ve},{label:`skill`,tools:U}]);return t.length&&console.warn(`[page-agent-sdk] 工具重名,后注册覆盖先注册:`,t.map(e=>`${e.name}(${e.loser}→${e.winner})`).join(`, `)),e}let Me=z.planning,Ne=z.missionAnchor,Pe=z.workingMemory,Fe=z.skills,Ie=z.vfs||I;if(Ie)for(let e of xm)me.set(e,`builtin`);if(Me)for(let e of w.tools??[])me.set(e.name,`builtin`);let Le=z.summarization,Re=z.agentCompression&&!!p;e.debug&&z.agentCompression&&!p&&console.warn(`[page-agent-sdk][agentCompression] agentCompression 开启但 summaryLlm 不可用(或缺 apiKey / 模型不支持工具),压缩决策不启用,回退静态压缩`);let ze=z.memory,Be=z.subagent,W=Be?mp():void 0,Ve=e.verify?.maxAttempts??2,He=!!(e.verify?.check||e.verify?.maxAttempts||e.verify?.adversarial),Ue=e.capabilities?.verify===!1,We=(z.verify||He&&!Ue)&&e.verify?.enabled!==!1&&Ve>0,Ge=z.contextInspector;He&&!We&&e.verify?.enabled!==!1&&console.warn(`[page-agent-sdk][verify] 检测到 verify 配置(check/maxAttempts/adversarial)但未装载(capabilities.verify:false 显式关闭 或 maxAttempts≤0)`);let Ke=e.subagent,qe=Ke?.allowedTools??[],Je=e.permissions?.length?Mf(e.permissions):void 0,Ye=e.approval&&(e.approval.tools!==void 0||e.approval.confirm)?Nf(e.approval):void 0,Xe=[...Je?[Je]:[],...Ye?[Ye]:[],...pe?[pe]:[]],Ze=!Be||Ke?.enabled===!1?void 0:jp({llm:Ke?.llm??e.llm,allTools:()=>G.agent?.allTools??Ae,allowedTools:qe.length?qe:void 0,systemPrompt:Ke?.systemPrompt,temperature:Ke?.temperature,maxTokens:Ke?.maxTokens,skills:Ke?.skills,maxDepth:Ke?.maxDepth,maxParallel:Ke?.maxParallel,debug:e.debug,getFocuses:()=>E.getFocuses(),getSchema:()=>H()?.schema??null,tracker:W,guardMiddleware:Xe.length?Xe:void 0,getVfsFiles:Ie?()=>C.files:void 0,enterDataScope:V?.enterScope?e=>V.enterScope(e):void 0,exitDataScope:V?.exitScope?e=>V.exitScope(e):void 0,onUsage:e=>{o.prompt_tokens=(o.prompt_tokens??0)+(e.prompt_tokens??0),o.completion_tokens=(o.completion_tokens??0)+(e.completion_tokens??0),o.total_tokens=(o.total_tokens??0)+(e.total_tokens??0)},timeoutMs:Ke?.timeoutMs}),Qe=F?.map(e=>{if(!e._codeAsset)return e;let t=e._codeAsset,n=Bm({writablePaths:t.writablePaths,codeVfsPrefix:t.codeVfsPrefix,ext:t.ext,codeField:t.codeField,craftNotes:t.craftNotes,onWarning:e=>console.warn(`[page-agent-sdk][code-asset] ${e}`),getController:()=>V,vfsStore:C}),r=[...e.middleware??[],n];for(let e of r)e&&typeof e==`object`&&typeof e._setGetController==`function`&&e._setGetController(()=>V);return{...e,middleware:r}}),$e=I&&Be?Vm():void 0,et=$e?Jm({getBind:()=>H()?.bind,writablePaths:te,getLocked:()=>$e.locked(),tools:Ae,getCodeFieldPaths:()=>Km(H()?.bind,P.map(e=>({writablePaths:e._codeAsset.writablePaths,codeField:e._codeAsset.codeField})))}):void 0,tt=Be&&Qe!==void 0?Pp(Qe,{llm:e.llm,allTools:()=>G.agent?.allTools??Ae,debug:e.debug,getFocuses:()=>E.getFocuses(),getSchema:()=>H()?.schema??null,getBind:()=>H()?.bind,tracker:W,guardMiddleware:Xe.length?Xe:void 0,getVfsFiles:Ie?()=>C.files:void 0,enterDataScope:V?.enterScope?e=>V.enterScope(e):void 0,exitDataScope:V?.exitScope?e=>V.exitScope(e):void 0,onUsage:e=>{o.prompt_tokens=(o.prompt_tokens??0)+(e.prompt_tokens??0),o.completion_tokens=(o.completion_tokens??0)+(e.completion_tokens??0),o.total_tokens=(o.total_tokens??0)+(e.total_tokens??0)},timeoutMs:e.subagent?.timeoutMs,...$e?{componentLock:$e,resolveComponents:e=>Hm(e,Im(H()?.bind,te))}:{}}):void 0,nt=tt?tt.controller:null,rt=[`get_data`,`describe_data`,`read`,`fetch_document`],it=Ae.filter(e=>rt.includes(e.name)),at=We?Fp({check:e.verify.check??Vp({schemas:()=>H()?{"":H().schema}:{},root:()=>H()?.bind}),adversarial:e.verify?.adversarial?{llm:e.llm,tools:it}:void 0}):void 0,ot=Ge?tm({contextWindow:m.contextWindow,thresholdRatio:ig(e,m.contextWindow).summaryThresholdRatio}):void 0,st=P_({...z,humanConfirm:be,subagents:F?.map(e=>({id:e.id,description:e.description,temperature:e.temperature}))},ae&&!!A,a,!!A?.resources?.length,{promptSoftCap:lp(m.contextWindow,h.promptSoftCapTokens)}),ct=A?{name:`dataHint`,augmentPrompt:()=>lm(H(),e.schemaHint,i)||void 0}:null,lt=e.augmentSystem?{name:`augmentSystem`,augmentPrompt:t=>{try{return e.augmentSystem({state:t,data:H()})}catch(t){e.debug&&console.log(`[page-agent-sdk][augmentSystem] 回调抛错,降级跳过:`,t.message);return}}}:null,ut=tg(e.onEvent),dt=ut.emit,ft,pt=[],mt=e=>({name:e.name,description:e.description,content:typeof e.getContent==`function`?e.getContent():``}),ht=e=>({name:e.name,description:e.description,getContent:()=>e.content}),gt=e.skillStorage===!1?null:B_({...typeof e.skillStorage==`object`?e.skillStorage:{},id:e.skillStorage&&typeof e.skillStorage==`object`&&e.skillStorage.id?e.skillStorage.id:`agent::${n}`}),_t=z.preferences,vt=_t&&e.preferenceStorage!==!1?J_({...typeof e.preferenceStorage==`object`?e.preferenceStorage:{},id:e.preferenceStorage&&typeof e.preferenceStorage==`object`&&e.preferenceStorage.id?e.preferenceStorage.id:`agent::${n}`}):null,yt=vt?av({store:vt,llmInvoke:d,getSessionId:()=>G.sessionId,onDebug:e=>{let t=G.agent?.debugLogs;t&&(t.value.push({timestamp:Date.now(),type:`middleware`,data:e}),wn(t))}}):null,bt=()=>{let t=ft?ft.controller:null;if(t){let n=(e.skills||[]).filter(e=>!pt.some(t=>t.name===e.name));t.set([...n,...pt])}G.infoTick.value++},xt=async()=>{if(gt)try{let t=await gt.list();if(t.length){pt=t.map(ht);let n=ft?ft.controller:null;if(n){let t=(e.skills||[]).filter(e=>!pt.some(t=>t.name===e.name));n.set([...t,...pt])}G.infoTick.value++}}catch{}},St=Le?pp({...h,llmInvoke:d,getRegisteredData:()=>H()?[{description:H().description??`主数据对象`}]:[],preserveLastToolResults:_,...Re?{decideInvoke:p,getSnapshot:()=>ot?.getSnapshot()}:{}}):void 0,Ct=og([...ct?[ct]:[],st,...Ne?[T]:[],...yt?[yt]:[],...Me?[w]:[],...Fe?[ft=Tf([...z.domInspect&&!(e.skills||[]).some(e=>e.name===g_.name)?[g_]:[],...e.skills||[]],{readVfs:Ie?e=>C.files[e]?.content:void 0,hostScriptEnabled:z.skillHostScript,onToolsReady:(e,t)=>{for(let n of t){let t=U.findIndex(e=>e.name===n.name);t>=0&&U.splice(t,1),U.push(n),ke.set(n.name,e),me.set(n.name,`skill:${e}`)}Ae=je(),G.agent&&G.agent.setTools(Ae),G.infoTick.value++}})]:[],...Ie?[Cm(C)]:[],...St?[St]:[],...Pe?[D]:[],...Ce?[E]:[],...de?[de]:[],...ze?[O]:[],...Je?[Je]:[],...L&&ie&&R?[Gf(R)]:[],...be?[Lf()]:[],...Ye?[Ye]:[],...pe?[pe]:[],...at?[at]:[],...Ze?[Ze]:[],...tt?[tt]:[],...et?[et]:[],...lt?[lt]:[],...ot?[ot]:[],...e.middleware||[],...ce?[w_(o,{tokenBudget:e.tokenBudget,timeBudgetMs:e.timeBudgetMs},dt)]:[],mv(dt,S,H,o)]),wt=e.maxMemoryRounds??uv,Tt=e.approval?.timeoutMs,Et=Tt===void 0||Tt===0?3e4:!Number.isFinite(Tt)||Tt<0?0:Tt;function Dt(e){if(Et)return t=>{if(t.type!==`approval_request`)return;let n=Date.now(),r=t.toolName;setTimeout(()=>{e?.aborted||(t.resolve(!1),dt({type:`error`,message:`确认请求(${r})${Math.round((Date.now()-n)/1e3)}s 无响应已自动拒绝 —— send/batch 路径无 UI 响应方;可传 approval.timeoutMs 调整(Infinity = 无限等)`,severity:`observable`,code:`APPROVAL_AUTO_REJECTED`,context:{toolName:r,waitedMs:Date.now()-n}}))},Et)}}function Ot(e){let t=Dt(e);return e=>{t?.(e),e.type!==`approval_request`&&dt(e)}}let kt=bn([]);async function At(){if(l)try{kt.value=(await l.listSessions(n)).sort((e,t)=>t.lastAccessed-e.lastAccessed)}catch(t){e.debug&&console.warn(`[page-agent-sdk][persist] refreshSessions 失败(已吞):`,t)}}let jt=lv(),Mt=new Set;function Nt(e){let t=new AbortController,n=()=>t.abort();return e&&(e.aborted?t.abort():e.addEventListener(`abort`,n,{once:!0})),Mt.add(t),{controller:t,untrack:()=>{Mt.delete(t),e?.removeEventListener(`abort`,n)}}}function Pt(){for(let e of Mt)e.abort();Mt.clear()}let G={agentId:n,store:l,messages:S,vfsStore:C,listeners:ut.listeners,todosMw:w,memoryMw:O,missionMw:T,workingMemoryMw:D,focusMw:E,agent:null,initDone:Promise.resolve(),sessionId:``,refCount:0,mcpClosers:[],mcpServers:[],mcpFailed:[],checkpoint:R,dataOpsController:V,skillsController:ft?ft.controller:null,infoTick:c,pendingConflict:s.pendingConflict,sessions:kt,refreshSessions:At,liveData:H,usage:o,emit:dt,runSerial:jt,trackActive:Nt,abortAllActive:Pt,unloadSkillTools(e){if(e){let t=U.length;if(U=U.filter(t=>ke.get(t.name)===e?(me.delete(t.name),ke.delete(t.name),!1):!0),U.length===t)return}else{if(!U.length)return;for(let e of U)me.delete(e.name),ke.delete(e.name);U=[]}Ae=je(),G.agent&&G.agent.setTools(Ae)},applySnapshot(t){if(t.vfs&&C.hydrate&&C.hydrate(t.vfs),t.messages?.length&&S.push(...Gl(t.messages,e=>(e?G.vfsStore?.files?.[e]?.content:void 0)||void 0)),t.todos?.length&&w.reset(t.todos),t.memory&&!e.memory&&O.reset(t.memory),t.checkpoints?.length&&R&&R.importStack(t.checkpoints),t.usage&&Object.assign(o,t.usage),t.mission&&Ne&&T.setMission(t.mission),t.workingMemory&&Pe&&D.restore(t.workingMemory),Ce){let n=t.focus,r=n?Array.isArray(n)?n:[n]:[];if(r.length){let t=H()?.schema,n=t?r.filter(e=>Yu(t,e.path)):[];if(n.length&&(E.setFocus(null),n.forEach(e=>E.addFocus(e))),e.debug&&n.length<r.length){let e=r.filter(e=>!n.includes(e)).map(e=>e.path);console.warn(`[page-agent-sdk][focus] 恢复的焦点部分 path 已失效(schema 变化/无 schema),剔除:`,e)}}}Rt()},addSkill(e){let t=pt.findIndex(t=>t.name===e.name);t>=0?pt[t]=e:pt.push(e),bt(),gt&>.put(mt(e))},removeSkill(e){let t=pt.findIndex(t=>t.name===e);return t<0?!1:(pt.splice(t,1),bt(),gt&>.remove(e),!0)},listUserSkills(){return pt.map(e=>e.name)},getUserSkill(e){let t=pt.find(t=>t.name===e);if(t)return{name:t.name,description:t.description,content:typeof t.getContent==`function`?t.getContent():``}},afterRound(){zt(),qt()},async send(e,t){if(await G.initDone,G.refCount<=0)throw Error(`page-agent-sdk: agent 已释放(unmount),拒绝排队中的 send`);t??={},t?.mission&&Ne&&T.setMission(t.mission);let n=e;if(t.interceptors?.input)try{let r=t.interceptors.input(e);typeof r==`string`&&(n=r)}catch{}let r=(t.images??[]).filter(e=>e&&(e.dataUri||e.vfsRef||e.url));if(r.length>4)throw Error(`[page-agent-sdk] 单轮最多 4 张图片(收到 ${r.length})`);if(r.length&&(await Gt(r),await Kt(r,n)),r.length&&!m.vision&&!r.every(e=>e.description)){let e=`当前主模型不支持图片输入(modelCaps.vision=false)。请换多模态模型(gpt-4o/claude/qwen-vl)或 LLMConfig 声明 vision:true;或配置 images.describe 绑定识图转述(集成方识图子 agent / 自有 vision API)`;throw dt({type:`error`,message:e,severity:`recoverable`,code:`IMAGE_UNSUPPORTED_MODEL`}),Error(`[page-agent-sdk] ${e}`)}let i=ce?t.maxAutoRetries??1:0,a=0,o=!1,s=Ot(t.signal),c=G.sessionId;for(;;){o||=(S.push({role:`user`,content:n,timestamp:Date.now(),...r.length?{images:r}:{}}),!0);try{let e=await G.agent.invoke(S,t.signal,s);if(t.signal?.aborted||G.sessionId!==c||G.refCount<=0)return G.agent?.debugLogs?.value?.push({timestamp:Date.now(),type:`middleware`,data:{stage:`orphan_round_dropped`,fromSession:c,aborted:!!t.signal?.aborted,sessionChanged:G.sessionId!==c}}),e;if(t.interceptors?.output)try{let n=t.interceptors.output(e);typeof n==`string`&&(e=n)}catch{}return S.push({role:`assistant`,content:e,timestamp:Date.now()}),G.afterRound(),l&&await l.flush(),e}catch(e){if(uu(e,t.signal))throw e;let n=Ml(e,`fatal`);if(a<i&&R?.canRestore()){a+=1,R.restore(),o=!0,dt({type:`error`,message:`致命错误自动恢复(${a}/${i}):${n.message},已回退 checkpoint 重试`,severity:`observable`,code:`AUTO_RECOVER_RETRY`,context:{attempt:a,cause:n.code??n.message.slice(0,120)}});continue}throw dt({type:`error`,message:n.message,severity:n.severity,...n.code?{code:n.code}:{},...n.context===void 0?{}:{context:n.context}}),e}}},async batch(e,t,n){if(await G.initDone,!e.length)return[];if(G.refCount<=0)throw Error(`page-agent-sdk: agent 已释放(unmount),拒绝排队中的 batch`);let r=[],i=Ot(n);for(let a=0;a<e.length;a++){if(n?.aborted){for(let t=a;t<e.length;t++)r.push({index:t,task:e[t],error:`aborted(外部中止)`,ok:!1});break}let o=e[a];R&&R.save(`batch:${a}`);let s=S.length;try{S.push({role:`user`,content:o,timestamp:Date.now()});let s=await G.agent.invoke(S,n,i);S.push({role:`assistant`,content:s,timestamp:Date.now()}),G.afterRound(),l&&await l.flush(),r.push({index:a,task:o,reply:s,ok:!0}),t?.({done:a+1,total:e.length,task:o,ok:!0})}catch(i){if(S.length>s&&S.splice(s),uu(i,n)){r.push({index:a,task:o,error:`aborted(外部中止)`,ok:!1});for(let t=a+1;t<e.length;t++)r.push({index:t,task:e[t],error:`aborted(外部中止)`,ok:!1});break}let c=Ml(i,`fatal`);dt({type:`error`,message:`批量任务 ${a+1}/${e.length} 失败:${c.message}`,severity:`observable`,code:`BATCH_TASK_FAILED`,context:{index:a,task:o.slice(0,100)}}),r.push({index:a,task:o,error:c.message,ok:!1}),t?.({done:a+1,total:e.length,task:o,ok:!1})}}return r},async switchSession(t){if(await G.initDone,!l)throw Error(`page-agent-sdk: storage 未开启,无法切换会话(请传 storage 选项)`);if(s.resolve(`keep_external`),G.sessionId&&l){if(Ne){let e=T.getMission();e&&Ut({mission:e})}if(Pe){let e=D.getWorkingMemory();e&&Ut({workingMemory:e})}if(Ce){let e=E.getFocuses();Ut({focus:e.length?e:null})}}C.flush?.(),await l.flush();let r=t??``,i;return r?(i=await l.load(n,r),i||await l.createSession(n,e.session?.title,r)):r=await l.createSession(n,e.session?.title),G.sessionId=r,S.splice(0,S.length),C.clear?.(),w.reset([]),e.memory||O.reset(``),T.reset(),D.reset(),E.reset(),yt?.resetScanCursor(),R&&R.importStack([]),G.agent.debugLogs.value=[],i||=await l.load(n,r),i&&(G.applySnapshot(i),dt({type:`session_restored`,sessionId:r,rounds:i.messages?.length??0})),e.memory&&Ut({memory:O.get()||(typeof e.memory==`string`?e.memory:``)}),At(),Bt=void 0,Vt=!1,G.infoTick.value++,r},resetSession:()=>{Pt(),s.resolve(`keep_external`),G.sessionId=Eh(),S.splice(0,S.length),C.clear?.(),w.reset([]),e.memory||O.reset(``),T.reset(),D.reset(),E.reset(),yt?.resetScanCursor(),R&&R.importStack([]),G.agent&&(G.agent.debugLogs.value=[]),l&&l.createSession(G.agentId,e.session?.title,G.sessionId).catch(t=>{e.debug&&console.warn(`[page-agent-sdk][persist] createSession 失败(已吞):`,t)}),dt({type:`session_restored`,sessionId:G.sessionId,rounds:0}),G.infoTick.value++,At(),Bt=void 0,Vt=!1},stream:async(e,t,n)=>{if(!G.agent)throw Error(`page-agent-sdk: agent 尚未初始化完成,请先 await mount()`);let r=[...e].reverse().find(e=>e.role===`user`&&e.images?.length);if(r?.images?.length&&(await Gt(r.images),await Kt(r.images,r.content),!m.vision&&!r.images.every(e=>e.description))){let e=`当前主模型不支持图片输入(modelCaps.vision=false)。请换多模态模型(gpt-4o/claude/qwen-vl)或 LLMConfig 声明 vision:true;或配置 images.describe 绑定识图转述`;throw dt({type:`error`,message:e,severity:`recoverable`,code:`IMAGE_UNSUPPORTED_MODEL`}),Error(`[page-agent-sdk] ${e}`)}C?.setProtectedRefs?.(sv(e));let i=e=>{t?.(e),dt(e),e.type===`subagent`&&(e.kind===`tool_call`||e.kind===`tool_result`)&&G.infoTick.value++};if(n){let e=()=>s.resolve(`keep_external`);n.aborted?e():n.addEventListener(`abort`,e,{once:!0})}let{controller:a,untrack:o}=Nt(n);return G.agent.stream(e,i,a.signal).finally(o)},release(){if(G.refCount--,G.refCount<=0){Pt(),ye=!0,l&&(C.flush?.(),l.flush(),l.dispose()),gt&>.dispose();let e=G.mcpClosers.splice(0);e.length&&Promise.allSettled(e.map(e=>e())),dv.delete(n)}},resolveConflict:s.resolve,setTools(e){ge.length=0,e.forEach(e=>{ge.push(e),me.set(e.name,`user`)}),Ae=je(),G.agent&&G.agent.setTools(Ae),G.infoTick.value++},addTool(e){Ae.some(t=>t.name===e.name)&&console.warn(`[page-agent-sdk] 工具 "${e.name}" 已存在,新工具覆盖(后注册覆盖先注册)`);for(let t=ge.length-1;t>=0;t--)ge[t].name===e.name&&ge.splice(t,1);ge.push(e),me.set(e.name,`user`),Ae=je(),G.agent&&G.agent.setTools(Ae),G.infoTick.value++},removeTool(e){let t=ge.findIndex(t=>t.name===e);return t<0?!1:(ge.splice(t,1),me.delete(e),Ae=je(),G.agent&&G.agent.setTools(Ae),G.infoTick.value++,!0)},setLlm(t){let n;if(hh(t))n=t;else{let e=t;if((e.provider??`openai`)===`anthropic`)throw Error(`[page-agent-sdk][setLlm] 切换到 Anthropic 需传 BaseChatModel 实例(动态 import 无法同步);请先 const { ChatAnthropic } = await import("@langchain/anthropic") 构造实例后传入`);n=y(e)}typeof n.bindTools!=`function`&&e.debug&&console.warn(`[page-agent-sdk][setLlm] 新模型不支持 bindTools(tool calling 会失效)`),x=t;let r=hh(t)?void 0:t;if(m=iu({model:r?.model??t.model??t.modelName,contextWindow:e.contextWindow??r?.contextWindow,maxOutputTokens:e.maxOutputTokens??r?.maxOutputTokens,vision:r?.vision??t.vision}),m.contextWindow<2e5)throw Error(`[page-agent-sdk][setLlm] 新模型上下文窗口 ${m.contextWindow} 小于最小支持 ${ru}(需 ≥200K 窗口模型)`);G.agent&&(G.agent.setLlm(n),G.agent.setModelCaps?.(m)),St?.setContextWindow?.(m.contextWindow),ot?.setContextWindow?.(m.contextWindow),G.infoTick.value++,e.debug&&console.log(`[page-agent-sdk][setLlm] 重解析 modelCaps + 回灌:`,m)},setMemory(e){O.reset(e),typeof e==`function`&&O.refresh(),G.infoTick.value++},refreshMemory(){return O.refresh()},setSubagents(t){if(!nt){e.debug&&console.warn(`[page-agent-sdk][setSubagents] 未配 subagents:[] 或 capabilities.subagent 关闭,忽略`);return}nt.set(t),G.infoTick.value++},addSubagent(t){if(!nt){e.debug&&console.warn(`[page-agent-sdk][addSubagent] 未配 subagents:[] 或 capabilities.subagent 关闭,忽略`);return}nt.add(t),G.infoTick.value++},removeSubagent(t){if(!nt)return e.debug&&console.warn(`[page-agent-sdk][removeSubagent] 未配 subagents:[] 或 capabilities.subagent 关闭,忽略`),!1;let n=nt.remove(t);return n&&G.infoTick.value++,n},getActiveSubagents(){return W?.getActive()??[]},get subagentHistory(){return W?.getHistory()??[]},getInfo(){return{id:n,sessionId:G.sessionId,model:hh(x)?x.model??x.modelName:x.model,systemPrompt:G.agent?.getEffectiveSystemPrompt?.()??B+lm(H(),e.schemaHint,i),tools:(G.agent?.allTools??Ae).map(e=>({name:e.name,description:e.description,schema:e.schema,source:me.get(e.name)||`user`})),skills:(ft?ft.controller.get():e.skills??[]).map(e=>({name:e.name,description:e.description})),data:H()?{description:H().description,schema:H().schema}:void 0,contextPreset:e.contextPreset??`auto`,compression:{contextWindow:m.contextWindow,summaryThresholdRatio:h.summaryThresholdRatio??.5,promptSoftCap:lp(m.contextWindow,h.promptSoftCapTokens)},memory:O.get(),middleware:Ct.map(e=>e.name),todos:(G.agent?.getState?.()?.todos??[]).map(e=>({id:e.id,content:e.content,status:e.status,...e.parentId===void 0?{}:{parentId:e.parentId},...e.deps===void 0?{}:{deps:e.deps},...e.criteria===void 0?{}:{criteria:e.criteria},...e.evidence===void 0?{}:{evidence:e.evidence}})),planPhase:w.getPlanPhase(),mission:Ne?T.getMission():void 0,preferences:_t&&yt?yt.getPreferences():void 0,workingMemory:Pe?D.getWorkingMemory():void 0,focus:Ce?E.getFocus():void 0,focuses:Ce?E.getFocuses():[],trace:se&&G.agent?.spans?{spans:G.agent.spans.value,metrics:cu(G.agent.spans.value)}:void 0,actions:D_(e.actions??{}),subagent:{enabled:!!Ze,maxDepth:e.subagent?.maxDepth??1,maxParallel:e.subagent?.maxParallel??4,allowedTools:e.subagent?.allowedTools??[],subagents:nt?.get()??[],active:W?.getActive()??[],history:W?.getHistory()??[],lockedComponents:$e?.locked()??{}},verify:{enabled:!!at,maxAttempts:We?Ve:0,adversarial:We&&!!e.verify?.adversarial},context:(()=>{let e=ot?.getSnapshot();if(e){let t=G.agent?.getState?.()?.lastCompression;t&&(e.compression=t)}return e})(),mcp:{servers:G.mcpServers,...G.mcpFailed.length?{failed:G.mcpFailed}:{}},lastCompression:G.agent?.getState?.()?.lastCompression,checkpoints:R?{enabled:!0,auto:ie,list:R.list()}:void 0}},exportDiagnostics(){let e=G.getInfo(),t={...e,tools:e.tools.map(({schema:e,...t})=>t),data:e.data?{description:e.data.description,schemaTopKeys:Ku(e.data.schema)??[]}:void 0},n=G.liveData(),r=null;if(n){let e=-1,t=[];try{let r=JSON.stringify(n.bind);e=r?r.length:0,n.bind&&typeof n.bind==`object`&&!Array.isArray(n.bind)&&(t=Object.keys(n.bind))}catch{e=-1}r={description:n.description,topKeys:t,approxBytes:e}}return th(eh({debugLogs:G.agent?.debugLogs?.value??[],messages:G.messages,info:t,usage:{...G.usage},pendingConflict:G.pendingConflict?.value??null,sessionId:G.sessionId,dataSummary:r}))},getMission(){return Ne?T.getMission():void 0},setMission(t){if(!Ne){e.debug&&console.warn(`[page-agent-sdk][mission] capabilities.missionAnchor 关闭,setMission 忽略`);return}T.setMission(t),G.infoTick.value++},getPreferences(){return yt?yt.getPreferences():[]},async removePreference(e){if(!yt)return!1;let t=await yt.removePreference(e);return t&&G.infoTick.value++,t},async clearPreferences(){yt&&(await yt.clearPreferences(),G.infoTick.value++)},getFocus(){return Ce?E.getFocus():void 0},getFocuses(){return Ce?E.getFocuses():[]},setFocus(t){let n=hv(t,`setFocus`,Ce,()=>H()?.schema,e.debug);return n.ok?(E.setFocus(t),G.infoTick.value++,{ok:!0}):n},addFocus(t){let n=hv(t,`addFocus`,Ce,()=>H()?.schema,e.debug);return n.ok?E.getFocuses().length>=8?(e.debug&&console.warn(`[page-agent-sdk][focus] addFocus 拒绝:焦点数已达上限 8(augmentPrompt 注入每焦点子树 schema,过多致 system prompt 超预算)`),{ok:!1,error:`焦点数上限 8(避免 system prompt 撑爆)`}):(E.addFocus(t),G.infoTick.value++,{ok:!0}):n},removeFocus(e){Ce&&(E.removeFocus(e),G.infoTick.value++)},clearFocus(){Ce&&(E.clearFocus(),G.infoTick.value++)}};async function Ft(){if(!l)return;await l.ready;let t=e.session||{};if(t.id){G.sessionId=t.id;let e=await l.load(n,G.sessionId);e?(G.applySnapshot(e),dt({type:`session_restored`,sessionId:G.sessionId,rounds:e.messages?.length??0})):await l.createSession(n,t.title,G.sessionId)}else if(t.autoResume!==!1){let r=await l.listSessions(n);if(e.debug&&console.log(`[page-agent-sdk][restore] listSessions`,n,r.length,r.map(e=>e.sessionId)),r.length){G.sessionId=r[0].sessionId;let t=await l.load(n,G.sessionId);t?(G.applySnapshot(t),dt({type:`session_restored`,sessionId:G.sessionId,rounds:t.messages?.length??0}),e.debug&&console.log(`[page-agent-sdk][restore] 恢复会话`,G.sessionId,`${t.messages?.length??0} msgs`)):e.debug&&console.log(`[page-agent-sdk][restore] 会话 meta 存在但快照为空`,G.sessionId)}else G.sessionId=await l.createSession(n,t.title),e.debug&&console.log(`[page-agent-sdk][restore] 新建会话(无历史)`,G.sessionId)}else G.sessionId=await l.createSession(n,t.title);e.memory&&Ut({memory:O.get()||(typeof e.memory==`string`?e.memory:``)}),At()}async function It(){await xt()}function Lt(e){let t={};for(let n of sv(e)){let e=C.files[n];e&&(t[n]=e.content)}return t}function Rt(){let e=cv(C.files,sv(S));for(let t of e)delete C.files[t]}function zt(){let e=ep(S,wt);if(!e.trimmed)return;let{older:t,summary:n}=e;if(dt({type:`context_trimmed`,dropped:t.map(e=>({round:e.round,user:e.userMsg.content,assistant:e.assistantMsgs.map(e=>e.content),steps:e.assistantMsgs.flatMap(e=>e.steps??[])})),vfsResults:Lt(t.flatMap(e=>[e.userMsg,...e.assistantMsgs])),summary:n.content,reason:`max_memory_rounds`}),S.splice(e.deleteFrom,e.deleteCount,n),Rt(),g&&d){let n=e.summary,{prevSeg:r}=e;(async()=>{try{let e=await d(ap(t,v)),i=S.indexOf(n);if(i<0)return;S[i].content=$f(t,r,e),qt()}catch{}})()}}let Bt,Vt=!1;function Ht(t,n){e.debug&&console.warn(`[page-agent-sdk][persist] ${t} 失败(已吞):`,n);let r=G.agent?.debugLogs;r&&r.value.push({timestamp:Date.now(),type:`middleware`,data:{stage:`persist_save_failed`,kind:t,error:String(n).slice(0,160)}})}function Ut(e){!G.sessionId||!l||l.save(n,G.sessionId,e).catch(e=>Ht(`save`,e))}function Wt(e,t){l&&l.updateTitle(n,e,t).catch(e=>Ht(`updateTitle`,e))}async function Gt(t){let n=e.images?.upload;for(let e of t){try{e.dataUri&&!e.thumb&&(e.thumb=await Xl(e.dataUri))}catch(e){Ht(`imageThumb`,e)}if(n&&e.dataUri&&!e.url)try{let t=await n(e.dataUri,e);t&&(e.url=t,e.dataUri=void 0,e.vfsRef&&G.vfsStore&&delete G.vfsStore.files[e.vfsRef])}catch(e){console.warn(`[page-agent-sdk][images] upload 失败,回退 dataURI 内联直发:`,e?.message??e)}e.dataUri&&!e.vfsRef&&G.vfsStore&&(e.vfsRef=`userImages/${e.id}`,G.vfsStore.files[e.vfsRef]={content:e.dataUri,updatedAt:Date.now()})}}async function Kt(t,n){let r=e.images?.describe;if(m.vision||!r)return;let i=e.images?.describeTimeoutMs??15e3;for(let e of t)if(!e.description)try{let t=new AbortController,a=setTimeout(()=>t.abort(),i);try{e.description=(await Promise.race([r(e,{text:n}),new Promise((e,n)=>t.signal.addEventListener(`abort`,()=>n(Error(`识图转述超时(${i}ms)`))))])).trim()}finally{clearTimeout(a)}}catch(t){e.description=`[图片描述不可用]`,dt({type:`error`,message:`识图转述失败:${t?.message??String(t)}`,severity:`observable`,code:`VISION_DESCRIBE_FAILED`})}}function qt(){if(!G.sessionId||!l)return;if(Ut({messages:Wl(JSON.parse(JSON.stringify(S)))}),Ut({todos:G.agent?.getState?.()?.todos??[]}),Ne){let e=T.getMission();e&&Ut({mission:e})}if(Pe){let e=D.getWorkingMemory();e&&Ut({workingMemory:e})}if(Ce){let e=E.getFocuses();Ut({focus:e.length?e:null})}ce&&R&&(Ut({checkpoints:R.exportStack()}),Ut({usage:o}));let t=mh(S);if(t&&t!==Bt&&(Bt=t,Wt(G.sessionId,t)),e.autoTitle!==!1&&f&&!Vt&&S.some(e=>e.role===`user`)&&S.some(e=>e.role===`assistant`)){Vt=!0;let e=G.sessionId;(async()=>{try{let t=await f(S);if(t&&G.refCount>0&&G.sessionId===e){try{await l.updateTitle(n,e,t)}catch(e){Ht(`updateTitle`,e)}await At()}}catch{}})()}e.debug&&console.log(`[page-agent-sdk][persist] save`,G.sessionId,`${S.length} msgs`)}return G.initDone=(async()=>{await Ft(),await It(),yt&&await yt.preload(),e.mcp?.length&&(async()=>{let t=await Promise.allSettled(e.mcp.map(e=>om(e))),n=t.flatMap(e=>e.status===`fulfilled`?[e.value.close]:[]);if(ye){Promise.allSettled(n.map(e=>e()));return}G.mcpClosers=n,G.mcpServers=[];let r=new Set;for(let e of Ae){let t=me.get(e.name);t&&!t.startsWith(`mcp:`)&&r.add(e.name)}t.forEach((t,n)=>{let i=e.mcp[n],a=i.name??i.url;if(t.status===`fulfilled`)G.mcpServers.push({name:a,url:i.url,toolCount:t.value.tools.length}),t.value.tools.forEach(e=>{if(r.has(e.name)){console.warn(`[page-agent-sdk][mcp] 工具 "${e.name}" 与内置工具重名,已拒绝注入(安全保留字保护)`);return}me.set(e.name,`mcp:${a}`),ve.push(e)});else{console.warn(`[page-agent-sdk][mcp] server ${a} 连接失败:`,t.reason);let e=String(t.reason?.message??t.reason??``).slice(0,200);G.mcpFailed.push({name:a,url:i.url,error:e}),dt({type:`error`,message:`MCP server「${a}」连接失败,其工具不可用:${e}`,severity:`observable`,code:`MCP_CONNECT_FAILED`,context:{server:a,url:i.url}})}}),ve.length&&(Ae=je(),G.agent&&G.agent.setTools(Ae),G.infoTick.value++),e.debug&&console.log(`[page-agent-sdk][mcp] 注入 ${ve.length} 个工具,${G.mcpServers.length} 个 server`)})();let t=hh(e.llm)?e.llm:await b(e.llm);G.agent=Gu({llm:t,systemPrompt:B,tools:Ae,middleware:Ct,maxToolRounds:e.maxToolRounds,maxRetries:e.maxRetries,stallMs:e.streamStallMs??9e4,streamMaxMs:e.streamMaxDurationMs??6e5,maxParallelTools:e.maxParallelTools,contextWindow:m.contextWindow,maxOutputTokens:m.maxOutputTokens,vision:m.vision,imageContentFormat:!hh(e.llm)&&(e.llm.provider??`openai`)===`anthropic`?`anthropic`:`openai`,maxVerifyAttempts:We?Ve:0,roundTokenBudget:e.roundTokenBudget??0,onLlmChange:e=>{x=e},onTrace:se?(e,t)=>{try{dt({type:`trace`,spans:e,metrics:t})}catch{}}:void 0,debug:e.debug}),k.current=G.agent,tt&&tt.setReconfigureHook&&tt.setReconfigureHook(()=>{G.agent&&G.agent.setTools(je())})})(),G}function _v(e,t){let n=e.id??Eh();e.id||console.warn(`[page-agent-sdk] 未传 options.id,已生成随机 id "${n}"。刷新后持久化数据无法恢复,请传稳定 id。`);let r=e.streaming??!0,i=e.ui??`default`,a,o=e.shareContext?dv.get(n):void 0;o?a=o:(a=gv(e,n),e.shareContext&&dv.set(n,a)),a.refCount++;let s=null,c=Qh(e),l=null,u=null;async function d(n){if(await a.initDone,s){s.show();return}let o=n===void 0?e.container:n,d=()=>{a.store&&(l=()=>{a.vfsStore.flush?.(),a.store.flush()},u=()=>{document.visibilityState===`hidden`&&a.store.flush()},typeof window<`u`&&window.addEventListener(`pagehide`,l),typeof document<`u`&&document.addEventListener(`visibilitychange`,u))};if(i===!1||!t){i!==!1&&console.warn(`[page-agent-sdk/headless] 未含 UI 组件,ui 渲染降级 headless;如需 UI 请 import page-agent-sdk 主包`),d();return}let m=typeof o==`string`?document.querySelector(o):o;if(!m)throw Error(`createChatSdk: 挂载点未找到(${o})`);s=t({el:m,core:a,dialogCfg:c,i18n:e.i18n,debug:e.debug===!0,streaming:r,runSerial:a.runSerial,hide:p,unmount:f,onDialogUnmounted:()=>{s=null,a.release()}}),c.drawer===!0&&c.drawerHidden===!0&&s.hide(),d()}function f(){a.abortAllActive(),a.resolveConflict(`keep_external`),l&&typeof window<`u`&&window.removeEventListener(`pagehide`,l),u&&typeof document<`u`&&document.removeEventListener(`visibilitychange`,u),l=null,u=null,s?s.unmount():a.release()}function p(){s?.hide()}function m(){s?.show()}return{mount:d,unmount:f,hide:p,show:m,send:(e,t)=>a.runSerial(async()=>{let{controller:n,untrack:r}=a.trackActive(t?.signal);try{return await a.send(e,{...t,signal:n.signal})}finally{r()}}),batch:(e,t,n)=>a.runSerial(async()=>{let{controller:r,untrack:i}=a.trackActive(n);try{return await a.batch(e,t,r.signal)}finally{i()}}),switchSession:(...e)=>a.runSerial(async()=>(a.abortAllActive(),a.switchSession(...e))),resetSession:()=>a.resetSession(),sessions:a.sessions,async listSessions(){return a.store?a.store.listSessions(n):[]},async deleteSession(e){if(a.store){if(e===a.sessionId){console.warn(`[page-agent-sdk] deleteSession 忽略:不能删除当前会话,请先 switchSession 切到其他会话`);return}await a.store.deleteSession(n,e),await a.refreshSessions()}},get sessionId(){return a.sessionId},stream:(e,t,n)=>a.stream(e,t,n),afterRound:a.afterRound,get debugLogs(){return a.agent.debugLogs},infoTick:a.infoTick,inspect:a.getInfo,exportDiagnostics:()=>a.exportDiagnostics(),inspectContext:()=>a.getInfo().context,getMission:a.getMission,setMission:a.setMission,getPreferences:a.getPreferences,removePreference:a.removePreference,clearPreferences:a.clearPreferences,getFocus:a.getFocus,getFocuses:a.getFocuses,setFocus:a.setFocus,addFocus:a.addFocus,removeFocus:a.removeFocus,clearFocus:a.clearFocus,messages:a.messages,restoreLastCheckpoint:()=>a.checkpoint?.restore()??!1,listCheckpoints:()=>a.checkpoint?.list()??[],hook:e=>(a.listeners.add(e),()=>a.listeners.delete(e)),setData:e=>{if(!a.dataOpsController){console.warn(`[page-agent-sdk] setData 忽略:dataOps 已关闭(capabilities.dataOps:false)`);return}a.dataOpsController.set(e),a.infoTick.value++},getData:()=>a.liveData(),setSkills:e=>{let t=a.skillsController;if(!t){console.warn(`[page-agent-sdk] setSkills 忽略:skills 已关闭(capabilities.skills:false)`);return}t.set(e),a.unloadSkillTools?.(),a.infoTick.value++},addSkill:e=>{if(!a.skillsController){console.warn(`[page-agent-sdk] addSkill 忽略:skills 已关闭(capabilities.skills:false)`);return}a.addSkill(e),a.unloadSkillTools?.(e.name)},removeSkill:e=>{if(!a.skillsController)return console.warn(`[page-agent-sdk] removeSkill 忽略:skills 已关闭(capabilities.skills:false)`),!1;let t=a.removeSkill(e);return t&&a.unloadSkillTools?.(e),t},listUserSkills:()=>a.listUserSkills(),getUserSkill:e=>a.getUserSkill(e),invalidateSkillCache:e=>{let t=a.skillsController;if(!t){console.warn(`[page-agent-sdk] invalidateSkillCache 忽略:skills 已关闭(capabilities.skills:false)`);return}t.invalidateCache(e),a.unloadSkillTools?.(e)},exportData:()=>{let e=a.liveData()?.bind;return e==null?null:JSON.parse(JSON.stringify(e))},importData:(e,t)=>{let n=a.liveData();if(!n||!a.dataOpsController)return{ok:!1,error:`dataOps 未开启或无主数据`};let r=n.bind;if(typeof r!=`object`||!r)return{ok:!1,error:`主数据 bind 非对象,无法就地还原(集成方应用对象包裹)`};if(t?.validate!==!1){let t=n.schema.safeParse(e);if(!t.success)return{ok:!1,error:`schema 校验失败:`+(t.error?.message??`未知错误`)}}return Vf(r,e),a.dataOpsController?.markDataDirty?.(),t?.emit!==!1&&a.emit({type:`data_change`,operation:`set`,value:r}),{ok:!0}},vfsWrite:(e,t)=>{let n=typeof t==`string`?t:JSON.stringify(t);a.vfsStore.files[vm(e)]={content:n,updatedAt:Date.now()}},vfsRead:e=>a.vfsStore.files[vm(e)]?.content,createResource:(e,t)=>{let n=a.dataOpsController;if(!n?.createResource)throw Error(`[page-agent-sdk] createResource 不可用:需配 data.resources + vfsStore(capabilities.vfs 默认开)`);return n.createResource(e,t)},getResource:e=>a.dataOpsController?.getResource?.(e),updateResource:(e,t)=>{let n=a.dataOpsController;if(!n?.updateResource)throw Error(`[page-agent-sdk] updateResource 不可用:需配 data.resources + vfsStore`);n.updateResource(e,t)},deleteResource:e=>a.dataOpsController?.deleteResource?.(e)??!1,listResources:()=>a.dataOpsController?.listResources?.()??[],releaseResources:e=>{let t=a.dataOpsController;if(!(!t?.listResources||!t.deleteResource))if(e&&e.length)for(let n of e)t.deleteResource(n);else for(let e of t.listResources())t.deleteResource(e.path)},usage:a.usage,pendingConflict:a.pendingConflict,resolveConflict:e=>a.resolveConflict(e),setTools:e=>a.setTools(e),addTool:e=>a.addTool(e),removeTool:e=>a.removeTool(e),setLlm:e=>a.setLlm(e),setMemory:e=>a.setMemory(e),refreshMemory:()=>a.refreshMemory(),setSubagents:e=>a.setSubagents(e),addSubagent:e=>a.addSubagent(e),removeSubagent:e=>a.removeSubagent(e),getActiveSubagents:()=>a.getActiveSubagents(),get subagentHistory(){return a.subagentHistory}}}var vv=(e,t)=>{let{o:n,i:r,u:i}=e,a=n,o,s=(e,t)=>{let n=a,s=e,c=t||(r?!r(n,s):n!==s);return(c||i)&&(a=s,o=n),[a,c,o]};return[t?e=>s(t(a,o),e):s,e=>[a,!!e,o]]},yv=typeof window<`u`&&typeof HTMLElement<`u`&&window.document?window:{},bv=Math.max,xv=Math.min,Sv=Math.round,Cv=Math.abs,wv=Math.sign,Tv=yv.cancelAnimationFrame,Ev=yv.requestAnimationFrame,Dv=yv.setTimeout,Ov=yv.clearTimeout,kv=e=>yv[e]===void 0?void 0:yv[e],Av=kv(`MutationObserver`),jv=kv(`IntersectionObserver`),Mv=kv(`ResizeObserver`),Nv=kv(`ScrollTimeline`),Pv=e=>e===void 0,Fv=e=>e===null,Iv=e=>typeof e==`number`,Lv=e=>typeof e==`string`,Rv=e=>typeof e==`boolean`,zv=e=>typeof e==`function`,Bv=e=>Array.isArray(e),Vv=e=>typeof e==`object`&&!Bv(e)&&!Fv(e),Hv=e=>{let t=!!e&&e.length,n=Iv(t)&&t>-1&&t%1==0;return Bv(e)||!zv(e)&&n?t>0&&Vv(e)?t-1 in e:!0:!1},Uv=e=>!!e&&e.constructor===Object,Wv=e=>e instanceof HTMLElement,Gv=e=>e instanceof Element;function Kv(e,t){if(Hv(e))for(let n=0;n<e.length&&t(e[n],n,e)!==!1;n++);else e&&Kv(Object.keys(e),(n=>t(e[n],n,e)));return e}var qv=(e,t)=>e.indexOf(t)>=0,Jv=(e,t)=>e.concat(t),Yv=(e,t,n)=>(!Lv(t)&&Hv(t)?Array.prototype.push.apply(e,t):e.push(t),e),Xv=e=>Array.from(e||[]),Zv=e=>Bv(e)?e:!Lv(e)&&Hv(e)?Xv(e):[e],Qv=e=>!!e&&!e.length,$v=e=>Xv(new Set(e)),ey=(e,t,n)=>{Kv(e,e=>!e||e.apply(void 0,t||[])),n||(e.length=0)},ty=`paddingTop`,ny=`paddingRight`,ry=`paddingLeft`,iy=`paddingBottom`,ay=`marginLeft`,oy=`marginRight`,sy=`marginBottom`,cy=`overflowX`,ly=`overflowY`,uy=`width`,dy=`height`,fy=`visible`,py=`hidden`,my=`scroll`,hy=e=>{let t=String(e||``);return t?t[0].toUpperCase()+t.slice(1):``},gy=(e,t,n,r)=>{if(e&&t){let r=!0;return Kv(n,(n=>{e[n]!==t[n]&&(r=!1)})),r}return!1},_y=(e,t)=>gy(e,t,[`w`,`h`]),vy=(e,t)=>gy(e,t,[`x`,`y`]),yy=(e,t)=>gy(e,t,[`t`,`r`,`b`,`l`]),by=(e,...t)=>e.bind(0,...t),xy=e=>{let t,n=e?Dv:Ev,r=e?Ov:Tv;return[i=>{r(t),t=n((()=>i()),zv(e)?e():e)},()=>r(t)]},Sy=e=>{let t=zv(e)?e():e;if(Iv(t)){let e=t?Dv:Ev,n=t?Ov:Tv;return r=>{let i=e((()=>r()),t);return()=>{n(i)}}}return t&&t._},Cy=(e,t)=>{let{p:n,v:r,S:i,m:a}=t||{},o,s,c,l,u=function(t){s&&s(),o&&o(),l=s=o=c=void 0,e.apply(this,t)},d=e=>a&&c?a(c,e):e,f=()=>{s&&c&&u(d(c)||c)},p=function(){let e=Xv(arguments),t=Sy(n);if(t){let n=typeof i==`function`?i():i,a=Sy(r),p=d(e)||e,m=u.bind(0,p);s&&s(),n&&!l?(m(),l=!0,s=t((()=>l=void 0))):(s=t(m),a&&!o&&(o=a(f))),c=p}else u(e)};return p.O=f,p},wy=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Ty=e=>e?Object.keys(e):[],Ey=(e,t,n,r,i,a,o)=>{let s=[t,n,r,i,a,o];return(typeof e!=`object`||Fv(e))&&!zv(e)&&(e={}),Kv(s,(t=>{Kv(t,((n,r)=>{let i=t[r];if(e===i)return!0;let a=Bv(i);if(i&&Uv(i)){let t=e[r],n=t;a&&!Bv(t)?n=[]:!a&&!Uv(t)&&(n={}),e[r]=Ey(n,i)}else e[r]=a?i.slice():i}))})),e},Dy=(e,t)=>Kv(Ey({},e),((e,t,n)=>{e===void 0?delete n[t]:e&&Uv(e)&&(n[t]=Dy(e))})),Oy=e=>!Ty(e).length,ky=()=>{},Ay=(e,t,n)=>bv(e,xv(t,n)),jy=e=>$v((Bv(e)?e:(e||``).split(` `)).filter((e=>e))),My=(e,t)=>e&&e.getAttribute(t),Ny=(e,t)=>e&&e.hasAttribute(t),Py=(e,t,n)=>{Kv(jy(t),(t=>{e&&e.setAttribute(t,String(n||``))}))},Fy=(e,t)=>{Kv(jy(t),(t=>e&&e.removeAttribute(t)))},Iy=(e,t)=>{let n=jy(My(e,t)),r=by(Py,e,t),i=(e,t)=>{let r=new Set(n);return Kv(jy(e),(e=>{r[t](e)})),Xv(r).join(` `)};return{C:e=>r(i(e,`delete`)),$:e=>r(i(e,`add`)),H:e=>{let t=jy(e);return t.reduce(((e,t)=>e&&n.includes(t)),t.length>0)}}},Ly=(e,t,n)=>(Iy(e,t).C(n),by(Ry,e,t,n)),Ry=(e,t,n)=>(Iy(e,t).$(n),by(Ly,e,t,n)),zy=(e,t,n,r)=>(r?Ry:Ly)(e,t,n),By=(e,t,n)=>Iy(e,t).H(n),Vy=e=>Iy(e,`class`),Hy=(e,t)=>{Vy(e).C(t)},Uy=(e,t)=>(Vy(e).$(t),by(Hy,e,t)),Wy=(e,t)=>{let n=t?Gv(t)&&t:document;return n?Xv(n.querySelectorAll(e)):[]},Gy=(e,t)=>{let n=t?Gv(t)&&t:document;return n&&n.querySelector(e)},Ky=(e,t)=>Gv(e)&&e.matches(t),qy=e=>Ky(e,`body`),Jy=e=>e?Xv(e.childNodes):[],Yy=e=>e&&e.parentElement,Xy=(e,t)=>Gv(e)&&e.closest(t),Zy=e=>document.activeElement,Qy=(e,t,n)=>{let r=Xy(e,t),i=e&&Gy(n,r),a=Xy(i,t)===r;return r&&i?r===e||i===e||a&&Xy(Xy(e,n),t)!==r:!1},$y=e=>{Kv(Zv(e),(e=>{let t=Yy(e);e&&t&&t.removeChild(e)}))},eb=(e,t)=>by($y,e&&t&&Kv(Zv(t),(t=>{t&&e.appendChild(t)}))),tb,nb=()=>tb,rb=e=>{tb=e},ib=e=>{let t=document.createElement(`div`);return Py(t,`class`,e),t},ab=e=>{let t=ib(),n=nb(),r=e.trim();return t.innerHTML=n?n.createHTML(r):r,Kv(Jy(t),(e=>$y(e)))},ob=(e,t)=>e.getPropertyValue(t)||e[t]||``,sb=e=>{let t=e||0;return isFinite(t)?t:0},cb=e=>sb(parseFloat(e||``)),lb=e=>Math.round(e*1e4)/1e4,ub=e=>`${lb(sb(e))}px`;function db(e,t){e&&t&&Kv(t,((t,n)=>{try{let r=e.style,i=Fv(t)||Rv(t)?``:Iv(t)?ub(t):t;n.indexOf(`--`)===0?r.setProperty(n,i):r[n]=i}catch{}}))}function fb(e,t,n){let r=Lv(t),i=r?``:{};if(e){let a=yv.getComputedStyle(e,n)||e.style;i=r?ob(a,t):Xv(t).reduce(((e,t)=>(e[t]=ob(a,t),e)),i)}return i}var pb=(e,t,n)=>{let r=t?`${t}-`:``,i=n?`-${n}`:``,a=`${r}top${i}`,o=`${r}right${i}`,s=`${r}bottom${i}`,c=`${r}left${i}`,l=fb(e,[a,o,s,c]);return{t:cb(l[a]),r:cb(l[o]),b:cb(l[s]),l:cb(l[c])}},mb=(e,t)=>`translate${Vv(e)?`(${e.x},${e.y})`:`${t?`X`:`Y`}(${e})`}`,hb=e=>!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length),gb={w:0,h:0},_b=(e,t)=>t?{w:t[`${e}Width`],h:t[`${e}Height`]}:gb,vb=e=>_b(`inner`,e||yv),yb=by(_b,`offset`),bb=by(_b,`client`),xb=by(_b,`scroll`),Sb=e=>{let t=parseFloat(fb(e,uy))||0,n=parseFloat(fb(e,dy))||0;return{w:t-Sv(t),h:n-Sv(n)}},Cb=e=>e.getBoundingClientRect(),wb=e=>!!e&&hb(e),Tb=e=>!!(e&&(e[dy]||e[uy])),Eb=(e,t)=>{let n=Tb(e);return!Tb(t)&&n},Db=(e,t,n,r)=>{Kv(jy(t),(t=>{e&&e.removeEventListener(t,n,r)}))},Ob=(e,t,n,r)=>{let i=(r&&r.D)??!0,a=r&&r.I||!1,o=r&&r.A||!1,s={passive:i,capture:a};return by(ey,jy(t).map((t=>{let r=o?i=>{Db(e,t,r,a),n&&n(i)}:n;return e&&e.addEventListener(t,r,s),by(Db,e,t,r,a)})))},kb=e=>e.stopPropagation(),Ab=e=>e.preventDefault(),jb=e=>kb(e)||Ab(e),Mb=(e,t)=>{let{x:n,y:r}=Iv(t)?{x:t,y:t}:t||{};Iv(n)&&(e.scrollLeft=n),Iv(r)&&(e.scrollTop=r)},Nb=e=>({x:e.scrollLeft,y:e.scrollTop}),Pb=()=>({T:{x:0,y:0},k:{x:0,y:0}}),Fb=(e,t)=>{let{T:n,k:r}=e,{w:i,h:a}=t,o=(e,t,n)=>{let r=wv(e)*n,i=wv(t)*n;if(r===i){let n=Cv(e),a=Cv(t);i=n>a?0:i,r=n<a?0:r}return r=r===i?0:r,[r+0,i+0]},[s,c]=o(n.x,r.x,i),[l,u]=o(n.y,r.y,a);return{T:{x:s,y:l},k:{x:c,y:u}}},Ib=({T:e,k:t})=>{let n=(e,t)=>e===0&&e<=t;return{x:n(e.x,t.x),y:n(e.y,t.y)}},Lb=({T:e,k:t},n)=>{let r=(e,t,n)=>Ay(0,1,(e-n)/(e-t)||0);return{x:r(e.x,t.x,n.x),y:r(e.y,t.y,n.y)}},Rb=e=>{e&&e.focus&&e.focus({preventScroll:!0,focusVisible:!1})},zb=(e,t)=>{Kv(Zv(t),e)},Bb=e=>{let t=new Map,n=(e,n)=>{if(e){let r=t.get(e);zb((e=>{r&&r[e?`delete`:`clear`](e)}),n)}else t.forEach((e=>{e.clear()})),t.clear()},r=(e,i)=>{if(Lv(e)){let r=t.get(e)||new Set;return t.set(e,r),zb((e=>{zv(e)&&r.add(e)}),i),by(n,e,i)}Rv(i)&&i&&n();let a=Ty(e),o=[];return Kv(a,(t=>{let n=e[t];n&&Yv(o,r(t,n))})),by(ey,o)};return r(e||{}),[r,n,(e,n)=>{Kv(Xv(t.get(e)),(e=>{n&&!Qv(n)?e.apply(0,n):e()}))}]},Vb={},Hb={},Ub=e=>{Kv(e,(e=>Kv(e,((t,n)=>{Vb[n]=e[n]}))))},Wb=(e,t,n)=>Ty(e).map((r=>{let{static:i,instance:a}=e[r],[o,s,c]=n||[],l=n?a:i;if(l){let e=n?l(o,s,t):l(t);return(c||Hb)[r]=e}})),Gb=(e,t)=>e[t],Kb=e=>Gb(Hb,e),qb=`__osOptionsValidationPlugin`,Jb=`data-overlayscrollbars`,Yb=`os-environment`,Xb=`${Yb}-scrollbar-hidden`,Zb=`${Jb}-initialize`,Qb=`noClipping`,$b=`${Jb}-body`,ex=Jb,tx=`host`,nx=`${Jb}-viewport`,rx=cy,ix=ly,ax=`arrange`,ox=`measuring`,sx=`scrolling`,cx=`scrollbarHidden`,lx=`noContent`,ux=`${Jb}-padding`,dx=`${Jb}-content`,fx=`os-size-observer`,px=`${fx}-appear`,mx=`${fx}-listener`;`${mx}`,`${mx}`;var hx=`os-trinsic-observer`,gx=`os-theme-none`,_x=`os-scrollbar`,vx=`${_x}-rtl`,yx=`${_x}-horizontal`,bx=`${_x}-vertical`,xx=`${_x}-track`,Sx=`${_x}-handle`,Cx=`${_x}-visible`,wx=`${_x}-cornerless`,Tx=`${_x}-interaction`,Ex=`${_x}-unusable`,Dx=`${_x}-auto-hide`,Ox=`${Dx}-hidden`,kx=`${_x}-wheel`,Ax=`${xx}-interactive`,jx=`${Sx}-interactive`,Mx=`__osSizeObserverPlugin`,Nx=(e,t)=>{let{M:n}=t,[r,i]=e(`showNativeOverlaidScrollbars`);return[r&&n.x&&n.y,i]},Px=e=>e.indexOf(fy)===0,Fx=e=>e.replace(`${fy}-`,``),Ix=(e,t)=>{if(e===`auto`)return t?my:py;let n=e||py;return[py,my,fy].includes(n)?n:py},Lx=(e,t)=>{let{overflowX:n,overflowY:r}=fb(e,[cy,ly]);return{x:Ix(n,t.x),y:Ix(r,t.y)}},Rx=`__osScrollbarsHidingPlugin`,zx=`__osClickScrollPlugin`,Bx=e=>JSON.stringify(e,((e,t)=>{if(zv(t))throw 0;return t})),Vx=(e,t)=>e?`${t}`.split(`.`).reduce(((e,t)=>e&&wy(e,t)?e[t]:void 0),e):void 0,Hx=[0,33],Ux=[33,99],Wx=[222,666,!0],Gx={paddingAbsolute:!1,showNativeOverlaidScrollbars:!1,update:{elementEvents:[[`img`,`load`]],debounce:{mutation:Hx,resize:null,event:Ux,env:Wx},attributes:null,ignoreMutation:null,flowDirectionStyles:null},overflow:{x:`scroll`,y:`scroll`},scrollbars:{theme:`os-theme-dark`,visibility:`auto`,autoHide:`never`,autoHideDelay:1300,autoHideSuspend:!1,dragScroll:!0,clickScroll:!1,pointers:[`mouse`,`touch`,`pen`]}},Kx=(e,t)=>{let n={};return Kv(Jv(Ty(t),Ty(e)),(r=>{let i=e[r],a=t[r];if(Vv(i)&&Vv(a))Ey(n[r]={},Kx(i,a)),Oy(n[r])&&delete n[r];else if(wy(t,r)&&a!==i){let e=!0;if(Bv(i)||Bv(a))try{Bx(i)===Bx(a)&&(e=!1)}catch{}e&&(n[r]=a)}})),n},qx=(e,t,n)=>r=>[Vx(e,r),n||Vx(t,r)!==void 0],Jx,Yx=()=>Jx,Xx=e=>{Jx=e},Zx,Qx=()=>{let e=(e,t,n)=>{eb(document.body,e),eb(document.body,e);let r=bb(e),i=yb(e),a=Sb(t);return n&&$y(e),{x:i.h-r.h+a.h,y:i.w-r.w+a.w}},t=e=>{let t=!1,n=Uy(e,Xb);try{t=fb(e,`scrollbar-width`)===`none`||fb(e,`display`,`::-webkit-scrollbar`)===`none`}catch{}return n(),t},n=ab(`<div class="${Yb}"><div></div><style>${`.${Yb}{scroll-behavior:auto!important;position:fixed;opacity:0;visibility:hidden;overflow:scroll;height:200px;width:200px;z-index:-1}.${Yb} div{width:200%;height:200%;margin:10px 0}.${Xb}{scrollbar-width:none!important}.${Xb}::-webkit-scrollbar,.${Xb}::-webkit-scrollbar-corner{appearance:none!important;display:none!important;width:0!important;height:0!important}`}</style></div>`)[0],r=n.firstChild,i=n.lastChild,a=Yx();a&&(i.nonce=a);let[o,,s]=Bb(),[c,l]=vv({o:e(n,r),i:vy},by(e,n,r,!0)),[u]=l(),d=t(n),f={x:u.x===0,y:u.y===0},p={elements:{host:null,padding:!d,viewport:e=>d&&qy(e)&&e,content:!1},scrollbars:{slot:!0},cancel:{nativeScrollbarsOverlaid:!1,body:null}},m=Ey({},Gx),h=by(Ey,{},m),g=by(Ey,{},p),_={U:u,M:f,P:d,J:!!Nv,G:by(o,`r`),K:g,Z:e=>Ey(p,e)&&g(),tt:h,nt:e=>Ey(m,e)&&h(),ot:Ey({},p),st:Ey({},m)};if(Fy(n,`style`),$y(n),Ob(yv,`resize`,(()=>{s(`r`,[])})),zv(yv.matchMedia)&&!d&&(!f.x||!f.y)){let e=t=>{Ob(yv.matchMedia(`(resolution: ${yv.devicePixelRatio}dppx)`),`change`,(()=>{t(),e(t)}),{A:!0})};e((()=>{let[e,t]=c();Ey(_.U,e),s(`r`,[t])}))}return _},$x=()=>(Zx||=Qx(),Zx),eS=(e,t,n)=>{let r=!1,i=n?new WeakMap:!1,a=()=>{r=!0},o=a=>{i&&n&&Kv(n.map((t=>{let[n,r]=t||[];return[r&&n?(a||Wy)(n,e):[],r]})),(n=>Kv(n[0],(a=>{let o=n[1],s=i.get(a)||[];if(e.contains(a)&&o){let e=Ob(a,o,(n=>{r?(e(),i.delete(a)):t(n)}));i.set(a,Yv(s,e))}else ey(s),i.delete(a)}))))};return o(),[a,o]},tS=(e,t,n,r)=>{let i=!1,{et:a,ct:o,rt:s,it:c,lt:l,ut:u}=r||{},[d,f]=eS(e,(()=>i&&n(!0)),s),p=a||[],m=o||[],h=Jv(p,m),g=(i,a)=>{if(!Qv(a)){let o=l||ky,s=u||ky,d=[],p=[],h=!1,g=!1;if(Kv(a,(n=>{let{attributeName:i,target:a,type:l,oldValue:u,addedNodes:f,removedNodes:_}=n,v=l===`attributes`,y=l===`childList`,b=e===a,x=v&&i,S=x&&My(a,i||``),C=Lv(S)?S:null,w=x&&u!==C,T=qv(m,i)&&w;if(t&&(y||!b)){let t=v&&w,l=t&&c&&Ky(a,c),p=(l?!o(a,i,u,C):!v||t)&&!s(n,!!l,e,r);Kv(f,(e=>Yv(d,e))),Kv(_,(e=>Yv(d,e))),g||=p}!t&&b&&w&&!o(a,i,u,C)&&(Yv(p,i),h||=T)})),f((e=>$v(d).reduce(((t,n)=>(Yv(t,Wy(e,n)),Ky(n,e)?Yv(t,n):t)),[]))),t)return!i&&g&&n(!1),[!1];if(!Qv(p)||h){let e=[$v(p),h];return i||n.apply(0,e),e}}},_=new Av(by(g,!1));return[()=>(_.observe(e,{attributes:!0,attributeOldValue:!0,attributeFilter:h,subtree:t,childList:t,characterData:t}),i=!0,()=>{i&&=(d(),_.disconnect(),!1)}),()=>{if(i)return g(!0,_.takeRecords())}]},nS=null,rS=(e,t,n)=>{let{ft:r}=n||{},i=Kb(Mx),[a]=vv({o:!1,u:!0});return()=>{let n=[],o=ab(`<div class="${fx}"><div class="${mx}"></div></div>`)[0],s=o.firstChild,c=e=>{let n=Bv(e)&&!Qv(e),r=!1,i=!1;if(n){let t=e[0],[n,,o]=a(t.contentRect),s=Tb(n);i=Eb(n,o),r=!i&&!s}else i=e===!0;r||t({_t:!0,ft:i})};if(Mv){if(!Rv(nS)){let t=new Mv(ky);t.observe(e,{get box(){nS=!0}}),nS||=!1,t.disconnect()}let t=Cy(c,{p:0,v:0}),r=e=>t(e),i=new Mv(r);if(i.observe(nS?e:s),Yv(n,[()=>{i.disconnect()},!nS&&eb(e,o)]),nS){let t=new Mv(r);t.observe(e,{box:`border-box`}),Yv(n,(()=>t.disconnect()))}}else if(i){let[t,a]=i(s,c,r);Yv(n,Jv([Uy(o,px),Ob(o,`animationstart`,t),eb(e,o)],a))}else return ky;return by(ey,n)}},iS=(e,t)=>{let n,r=e=>e.h===0||e.isIntersecting||e.intersectionRatio>0,i=ib(hx),[a]=vv({o:!1}),o=(e,n)=>{if(e){let i=a(r(e)),[,o]=i;return o&&!n&&t(i)&&[i]}},s=(e,t)=>o(t.pop(),e);return[()=>{let t=[];if(jv)n=new jv(by(s,!1),{root:e}),n.observe(i),Yv(t,(()=>{n.disconnect()}));else{let e=()=>{let e=yb(i);o(e)};Yv(t,rS(i,e)()),e()}return by(ey,Yv(t,eb(e,i)))},()=>n&&s(!0,n.takeRecords())]},aS=(e,t,n,r)=>{let i,a,o,s,c,l,u,d,f=`[${ex}]`,p=`[${nx}]`,m=[`id`,`class`,`style`,`open`,`wrap`,`cols`,`rows`],{dt:h,vt:g,L:_,gt:v,ht:y,V:b,bt:x,yt:S,wt:C,St:w}=e,T=e=>fb(e,`direction`)===`rtl`,E=()=>{let e,t,n,i=Cy(r,{p:()=>e,v:()=>t,S:()=>n,m(e,t){let[n]=e,[r]=t;return[Jv(Ty(n),Ty(r)).reduce(((e,t)=>(e[t]=n[t]||r[t],e)),{})]}}),a=(r,a)=>{if(Bv(a)){let[r,i,o]=a;e=r,t=i,n=o}else Iv(a)?(e=a,t=!1,n=!1):(e=!1,t=!1,n=!1);i(r)};return a.O=i.O,a},D={Ot:!1,B:T(h)},O=$x(),k=Kb(Rx),[A]=vv({i:_y,o:{w:0,h:0}},(()=>{let r=k&&k.R(e,t,D,O,n).Y,i=!(x&&b)&&By(g,ex,Qb),a=!b&&S(ax),o=a&&Nb(v),s=o&&w(),c=C(ox,i),l=a&&r&&r(),u=xb(_),d=Sb(_);return l&&l(),Mb(v,o),s&&s(),i&&c(),{w:u.w+d.w,h:u.h+d.h}})),ee=E(),j=e=>{let t=T(h);Ey(e,{Ct:d!==t}),Ey(D,{B:t}),d=t},M=(e,t)=>{let[n,i]=e,a={$t:i};return Ey(D,{Ot:n}),t||r(a),a},N=({_t:e,ft:t})=>{let n=t?r:ee,i={_t:e||t,ft:t};j(i),n(i,a)},P=(e,t)=>{let[,n]=A(),r={xt:n};return j(r),n&&!t&&ee(r,e?o:i),r},F=(e,t,n)=>{let r={Ht:t};return j(r),t&&!n&&ee(r,i),r},[I,te]=y?iS(g,M):[],ne=!b&&rS(g,N,{ft:!0}),[re,L]=tS(g,!1,F,{ct:m,et:m}),R=b&&Mv&&new Mv((e=>{let t=e[e.length-1].contentRect;N({_t:!0,ft:Eb(t,u)}),u=t}));return[()=>{R&&R.observe(g);let e=ne&&ne(),t=I&&I(),n=re(),r=O.G((e=>{let[,t]=A();ee({Et:e,xt:t,_t:x},s)}));return()=>{R&&R.disconnect(),e&&e(),t&&t(),l&&l(),n(),r()}},({Dt:e,zt:t,It:n})=>{let r={},[u]=e(`update.ignoreMutation`),[d,h]=e(`update.attributes`),[g,v]=e(`update.elementEvents`),[x,S]=e(`update.debounce`),C=v||h,w=t||n,T=e=>zv(u)&&!!u(e);if(C){c&&c(),l&&l();let[e,t]=tS(y||_,!0,P,{et:Jv(m,d||[]),rt:g,it:f,ut:(e,t)=>{let{target:n,attributeName:r}=e;return(!t&&r&&!b?Qy(n,f,p):!1)||!!Xy(n,`.${_x}`)||T(e)}});l=e(),c=t}if(S&&(ee.O(),Bv(x)||Iv(x)?(i=x,a=!1,o=Ux,s=Wx):Uv(x)?(i=x.mutation,a=x.resize,o=x.event,s=x.env):(i=!1,a=!1,o=!1,s=!1)),w){let e=L(),t=te&&te(),n=c&&c();e&&Ey(r,F(e[0],e[1],w)),t&&Ey(r,M(t[0],w)),n&&Ey(r,P(n[0],w))}return j(r),r},D]},oS=(e,t)=>zv(t)?t.apply(0,e):t,sS=(e,t,n,r)=>oS(e,Pv(r)?n:r)||t.apply(0,e),cS=(e,t,n,r)=>{let i=oS(e,Pv(r)?n:r);return!!i&&(Wv(i)?i:t.apply(0,e))},lS=(e,t)=>{let{nativeScrollbarsOverlaid:n,body:r}=t||{},{M:i,P:a,K:o}=$x(),{nativeScrollbarsOverlaid:s,body:c}=o().cancel,l=n??s,u=Pv(r)?c:r,d=(i.x||i.y)&&l,f=e&&(Fv(u)?!a:u);return!!d||!!f},uS=(e,t,n,r)=>{let{K:i}=$x(),{scrollbars:a}=i(),{slot:o}=a,{dt:s,vt:c,L:l,At:u,gt:d,bt:f,V:p}=t,{scrollbars:m}=u?{}:e,{slot:h}=m||{},g=[],_=[],v=[],y=cS([s,c,l],(()=>p&&f?s:c),o,h),b=e=>{if(Nv){let t=null,r=[],i=new Nv({source:d,axis:e}),a=()=>{t&&t.cancel(),t=null};return{Mt:o=>{let{Tt:s}=n,c=Ib(s)[e],l=e===`x`,u=[mb(0,l),mb(`calc(-100% + 100cq${l?`w`:`h`})`,l)],d=c?u:u.reverse();return r[0]===d[0]&&r[1]===d[1]?a:(r=d,a(),t=o.kt.animate({clear:[`left`],transform:d},{timeline:i}),a)}}}},x={x:b(`x`),y:b(`y`)},S=()=>{let{Rt:e,Vt:t}=n,r=(e,t)=>Ay(0,1,e/(e+t)||0);return{x:r(t.x,e.x),y:r(t.y,e.y)}},C=(e,t,n)=>{let r=n?Uy:Hy;Kv(e,(e=>{r(e.Lt,t)}))},w=(e,t)=>{Kv(e,(e=>{let[n,r]=t(e);db(n,r)}))},T=(e,t,n)=>{let r=Rv(n),i=!r||n,a=!r||!n;i&&C(_,e,t),a&&C(v,e,t)},E=()=>{let e=S(),t=e=>t=>[t.Lt,{"--os-viewport-percent":lb(e)+``}];w(_,t(e.x)),w(v,t(e.y))},D=()=>{if(!Nv){let{Tt:e}=n,t=Lb(e,Nb(d)),r=e=>t=>[t.Lt,{"--os-scroll-percent":lb(e)+``}];w(_,r(t.x)),w(v,r(t.y))}},O=()=>{let{Tt:e}=n,t=Ib(e),r=e=>t=>[t.Lt,{"--os-scroll-direction":e?`0`:`1`}];w(_,r(t.x)),w(v,r(t.y)),Nv&&(_.forEach(x.x.Mt),v.forEach(x.y.Mt))},k=()=>{if(p&&!f){let{Rt:e,Tt:t}=n,r=Ib(t),i=Lb(t,Nb(d)),a=t=>{let{Lt:n}=t,a=Yy(n)===l&&n,o=(e,t,n)=>{let r=t*e;return ub(n?r:-r)};return[a,a&&{transform:mb({x:o(i.x,e.x,r.x),y:o(i.y,e.y,r.y)})}]};w(_,a),w(v,a)}},A=e=>{let t=e?`x`:`y`,n=ib(`${_x} ${e?yx:bx}`),i=ib(xx),a=ib(Sx),o={Lt:n,Pt:i,kt:a},s=x[t];return Yv(e?_:v,o),Yv(g,[eb(n,i),eb(i,a),by($y,n),s&&s.Mt(o),r(o,T,e)]),o},ee=by(A,!0),j=by(A,!1);return ee(),j(),[{Ut:E,Nt:D,qt:O,Bt:k,Ft:T,jt:{Xt:_,Yt:ee,Wt:by(w,_)},Jt:{Xt:v,Yt:j,Wt:by(w,v)}},()=>(eb(y,_[0].Lt),eb(y,v[0].Lt),by(ey,g))]},dS=(e,t,n,r,i)=>(a,o,s)=>{let{vt:c,L:l,V:u,gt:d,Gt:f,St:p}=t,{Lt:m,Pt:h,kt:g}=a,[_,v]=xy(333),[y,b]=xy(444),x=e=>{zv(d.scrollBy)&&d.scrollBy({behavior:`smooth`,left:e.x,top:e.y})},S=()=>{let t=`pointerup pointercancel lostpointercapture`,i=`client${s?`X`:`Y`}`,a=s?uy:dy,o=s?`left`:`top`,c=s?`w`:`h`,l=s?`x`:`y`,u=[];return Ob(h,`pointerdown`,r((r=>{let m=Xy(r.target,`.${Sx}`)===g,_=m?g:h,v=e.scrollbars,S=v[m?`dragScroll`:`clickScroll`],{button:C,isPrimary:w,pointerType:T}=r,{pointers:E}=v;if(C===0&&w&&S&&(E||[]).includes(T)){ey(u),b();let e=!m&&(r.shiftKey||S===`instant`),v=by(Cb,g),C=by(Cb,h),w=(e,t)=>(e||v())[o]-(t||C())[o],T=Sv(Cb(d)[a])/yb(d)[c]||1,E=Nb(d)[l],D=e=>{Mb(d,{[l]:E+e})},O=e=>{let{Rt:t}=n,r=yb(h)[c]-yb(g)[c],i=1/T*e/r;D(i*t[l])},k=r[i],A=v(),ee=C(),j=A[a],M=w(A,ee)+j/2,N=k-ee[o]-M,P=m?0:N,F=e=>{ey(ne),_.releasePointerCapture(e.pointerId)},I=m||e,te=p(),ne=[Ob(f,t,F),Ob(f,`selectstart`,(e=>Ab(e)),{D:!1}),Ob(h,t,F),I&&Ob(h,`pointermove`,(e=>O(P+e[i]-k))),I&&(()=>{let e=Nb(d);te();let t=Nb(d),n={x:t.x-e.x,y:t.y-e.y};(Cv(n.x)>3||Cv(n.y)>3)&&(p(),Mb(d,e),x(n),y(te))})];if(_.setPointerCapture(r.pointerId),e)O(N);else if(!m){let e=Kb(zx);if(e){let{Vt:t}=n,r=e(D,O,by(w),N,t[l],S,!!s,(e=>{e?te():Yv(ne,te)}));Yv(ne,r),Yv(u,by(r,!0))}}}})))},C=!0;return by(ey,[Ob(g,`pointermove pointerleave`,r(i)),Ob(m,`pointerenter`,r((()=>{o(Tx,!0)}))),Ob(m,`pointerleave pointercancel`,r((()=>{o(Tx,!1)}))),Ob(m,`wheel`,r((e=>{let{deltaX:t,deltaY:n,deltaMode:r}=e;C&&r===0&&Yy(m)===c&&x({x:t,y:n}),C=!1,o(kx,!0),_((()=>{C=!0,o(kx)})),Ab(e)})),{D:!1,I:!0}),!u&&Ob(m,`mousedown`,r((()=>{let e=Zy();(Ny(e,nx)||Ny(e,ex)||e===document.body)&&Dv(by(Rb,l),25)}))),Ob(m,`pointerdown`,(()=>{let e=Ob(f,`click`,(e=>{t(),jb(e)}),{A:!0,I:!0,D:!1}),t=Ob(f,`pointerup pointercancel`,(()=>{t(),setTimeout(e,150)}),{I:!0,D:!0})}),{I:!0,D:!0}),S(),v,b])},fS=(e,t,n,r,i,a,o)=>{let s,c,l,u,d,f=ky,p=0,m=[`mouse`,`pen`],h=e=>t=>{n.Kt||e(t)},g=e=>m.includes(e.pointerType),[_,v]=xy(),[y,b]=xy(100),[x,S]=xy(50),[C,w]=xy((()=>p)),[T,E]=uS(e,a,i,dS(t,a,i,h,(e=>g(e)&&F()))),{vt:D,Qt:O,bt:k}=a,{Ft:A,Ut:ee,Nt:j,qt:M,Bt:N}=T,P=(e,t)=>{w();let r=e=>{n.Kt||A(Ox,e)};if(e)r();else{let e=!l||!s;p>0&&!t?C(by(r,e)):r(e)}},F=()=>{(l?!s:!u)&&(P(!0),y((()=>{P(!1)})))},I=e=>{g(e)&&(s=!0,!n.Kt&&l&&P(!0))},te=e=>{g(e)&&(s=!1,!n.Kt&&l&&P(!1))},ne=e=>{A(Dx,e,!0),A(Dx,e,!1)},re=[w,b,S,v,()=>f(),Ob(D,`pointerover`,I,{A:!0}),Ob(D,`pointerenter`,I),Ob(D,`pointerleave`,te),Ob(D,`pointermove`,h((e=>{g(e)&&c&&F()}))),Ob(O,`scroll`,h((e=>{_((()=>{j(),F()})),o(e),N()})))],L=Kb(Rx);return[()=>by(ey,Yv(re,E())),({Dt:e,It:t,Zt:n,tn:a})=>{let{nn:o,sn:s,en:m,cn:g}=a||{},{Ct:_,ft:v}=n||{},{B:y}=r,{M:b,P:S}=$x(),{rn:C,j:w}=i,[T,E]=e(`showNativeOverlaidScrollbars`),[D,F]=e(`scrollbars.theme`),[I,te]=e(`scrollbars.visibility`),[re,R]=e(`scrollbars.autoHide`),[ie,z]=e(`scrollbars.autoHideSuspend`),[ae]=e(`scrollbars.autoHideDelay`),[oe,se]=e(`scrollbars.dragScroll`),[ce,B]=e(`scrollbars.clickScroll`),[le,ue]=e(`overflow`),V=v&&!t,de=o||s||g||_||t,H=m||te||ue,fe=T&&b.x&&b.y,pe=!S&&!L,me=fe||pe,he=(e,t,n)=>{let r=e.includes(my)&&(I===fy||I===`auto`&&t===my);return A(Cx,r,n),r};if(p=ae,(E||pe)&&A(gx,me),F&&(A(d),A(D,!0),d=D),(z||V)&&(ne(!ie),V&&ie&&(w.x||w.y?(f(),x((()=>{f=Ob(O,my,h(by(ne,!0)),{A:!0})}))):ne(!0))),R&&(c=re===`move`,l=re===`leave`,u=re===`never`,P(u,!0)),se&&A(jx,oe),B&&A(Ax,!!ce),H){let e=he(le.x,C.x,!0),t=he(le.y,C.y,!1);A(wx,!(e&&t))}de&&(j(),ee(),N(),g&&M(),A(Ex,!w.x,!0),A(Ex,!w.y,!1),A(vx,y&&!k))},{},T]},pS=e=>{let{K:t,P:n}=$x(),{elements:r}=t(),{padding:i,viewport:a,content:o}=r,s=Wv(e),c=s?{}:e,{elements:l}=c,{padding:u,viewport:d,content:f}=l||{},p=s?e:c.target,m=qy(p),h=p.ownerDocument,g=h.documentElement,_=()=>h.defaultView||yv,v=by(sS,[p]),y=by(cS,[p]),b=by(ib,``),x=by(v,b,a),S=by(y,b,o),C=e=>{let t=yb(e),n=xb(e),r=fb(e,cy),i=fb(e,ly);return n.w-t.w>0&&!Px(r)||n.h-t.h>0&&!Px(i)},w=x(d),T=w===p,E=T&&m,D=!T&&S(f),O=!T&&w===D,k=E?g:w,A=E?k:p,ee=!T&&y(b,i,u),j=!O&&D,M=[j,k,ee,A].map((e=>Wv(e)&&!Yy(e)&&e)),N=e=>e&&qv(M,e),P=!N(k)&&C(k)?k:p,F=E?g:k,I={dt:p,vt:A,L:k,ln:ee,ht:j,gt:F,Qt:E?h:k,an:m?g:P,Gt:h,bt:m,At:s,V:T,un:_,yt:e=>By(k,nx,e),wt:(e,t)=>zy(k,nx,e,t),St:()=>zy(F,nx,sx,!0)},{dt:te,vt:ne,ln:re,L,ht:R}=I,ie=[()=>{Fy(ne,[ex,Zb]),Fy(te,Zb),m&&Fy(g,[Zb,ex])}],z=Jy([R,L,re,ne,te].find((e=>e&&!N(e)))),ae=E?te:R||L,oe=by(ey,ie);return[I,()=>{let e=_(),t=Zy(),r=e=>{eb(Yy(e),Jy(e)),$y(e)},i=e=>Ob(e,`focusin focusout focus blur`,jb,{I:!0,D:!1}),a=`tabindex`,o=My(L,a),s=i(t);return Py(ne,ex,T?``:tx),Py(re,ux,``),Py(L,nx,``),Py(R,dx,``),T||(Py(L,a,o||`-1`),m&&Py(g,$b,``)),eb(ae,z),eb(ne,re),eb(re||ne,!T&&L),eb(L,R),Yv(ie,[s,()=>{let e=Zy(),t=N(L),n=t&&e===L?te:e,s=i(n);Fy(re,ux),Fy(R,dx),Fy(L,nx),m&&Fy(g,$b),o?Py(L,a,o):Fy(L,a),N(R)&&r(R),t&&r(L),N(re)&&r(re),Rb(n),s()}]),n&&!T&&(Ry(L,nx,cx),Yv(ie,by(Fy,L,nx))),Rb(!T&&m&&t===te&&e.top===e?L:t),s(),z=0,oe},oe]},mS=({ht:e})=>({Zt:t,fn:n,It:r})=>{let{$t:i}=t||{},{Ot:a}=n;e&&(i||r)&&db(e,{[dy]:a&&`100%`})},hS=({vt:e,ln:t,L:n,V:r},i)=>{let[a,o]=vv({i:yy,o:pb()},by(pb,e,`padding`,``));return({Dt:e,Zt:s,fn:c,It:l})=>{let[u,d]=o(l),{P:f}=$x(),{_t:p,xt:m,Ct:h}=s||{},{B:g}=c,[_,v]=e(`paddingAbsolute`);(p||d||l||m)&&([u,d]=a(l));let y=!r&&(v||h||d);if(y){let e=!_||!t&&!f,r=u.r+u.l,a=u.t+u.b,o={[oy]:e&&!g?-r:0,[sy]:e?-a:0,[ay]:e&&g?-r:0,top:e?-u.t:0,right:e?g?-u.r:`auto`:0,left:e?g?`auto`:-u.l:0,[uy]:e&&`calc(100% + ${r}px)`},s={[ty]:e?u.t:0,[ny]:e?u.r:0,[iy]:e?u.b:0,[ry]:e?u.l:0};db(t||n,o),db(n,s),Ey(i,{ln:u,_n:!e,F:t?s:Ey({},o,s)})}return{dn:y}}},gS=(e,t)=>{let n=$x(),{vt:r,ln:i,L:a,V:o,Qt:s,gt:c,bt:l,wt:u,un:d}=e,{P:f}=n,p=l&&o,m=by(bv,0),h={display:()=>!1,direction:e=>e!==`ltr`,flexDirection:e=>e.endsWith(`-reverse`),writingMode:e=>e!==`horizontal-tb`},g=Ty(h),_={i:_y,o:{w:0,h:0}},v={i:vy,o:{}},y=e=>{u(ox,!p&&e)},b=()=>fb(a,g),x=(e,t)=>{let n=!Ty(e).length,r=t?!0:g.some((t=>{let n=e[t];return Lv(n)&&h[t](n)}));if(n||!r||!wb(a))return{T:{x:0,y:0},k:{x:1,y:1}};y(!0);let i=Nb(c),o=Ob(s,my,(e=>{let t=Nb(c);e.isTrusted&&t.x===i.x&&t.y===i.y&&kb(e)}),{I:!0,A:!0}),l=u(lx,!0);Mb(c,{x:0,y:0}),l();let d=Nb(c),f=xb(c);Mb(c,{x:f.w,y:f.h});let p=Nb(c),m={x:p.x-d.x,y:p.y-d.y};Mb(c,{x:-f.w,y:-f.h});let _=Nb(c),v={x:_.x-d.x,y:_.y-d.y},b={x:Cv(m.x)>=Cv(v.x)?p.x:_.x,y:Cv(m.y)>=Cv(v.y)?p.y:_.y};return Mb(c,i),Ev((()=>o())),{T:d,k:b}},S=(e,t)=>{let n=yv.devicePixelRatio%1==0?0:1,r={w:m(e.w-t.w),h:m(e.h-t.h)};return{w:r.w>n?r.w:0,h:r.h>n?r.h:0}},C=(e,t)=>{let n=(e,t,n,r)=>{let i=e===fy?py:Fx(e),a=Px(e),o=Px(n);return!t&&!r?py:a&&o?fy:a?t&&r?i:t?fy:py:t?i:o&&r?fy:py};return{x:n(t.x,e.x,t.y,e.y),y:n(t.y,e.y,t.x,e.x)}},w=e=>{let t=e=>[fy,py,my].map((t=>ne(Ix(t),e))),n=t(!0).concat(t()).join(` `);u(n),u(Ty(e).map((t=>ne(e[t],t===`x`))).join(` `),!0)},[T,E]=vv(_,by(Sb,a)),[D,O]=vv(_,by(xb,a)),[k,A]=vv(_),[ee]=vv(v),[j,M]=vv(_),[N]=vv(v),[P]=vv({i:(e,t)=>gy(e,t,$v(Jv(Ty(e),Ty(t)))),o:{}}),[F,I]=vv({i:(e,t)=>vy(e.T,t.T)&&vy(e.k,t.k),o:Pb()}),te=Kb(Rx),ne=(e,t)=>`${t?rx:ix}${hy(e)}`;return({Dt:o,Zt:s,fn:c,It:l},{dn:h})=>{let{_t:g,Ht:_,xt:v,Ct:ne,ft:re,Et:L}=s||{},{X:R,Y:ie,W:z}=te&&te.R(e,t,c,n,o)||{},[ae,oe]=Nx(o,n),[se,ce]=o(`overflow`),B=Px(se.x),le=Px(se.y),ue=g||h||v||ne||L||oe,V=E(l),de=O(l),H=A(l),fe=M(l);if(oe&&f&&u(cx,!ae),ue){By(r,ex,Qb)&&y(!0);let e=ie&&ie(),[t]=V=T(l),[n]=de=D(l),i=bb(a),o=p&&vb(d()),s={w:m(n.w+t.w),h:m(n.h+t.h)},c={w:m((o?o.w:i.w+m(i.w-n.w))+t.w),h:m((o?o.h:i.h+m(i.h-n.h))+t.h)};e&&e(),fe=j(c),H=k(S(s,c),l)}let[pe,me]=fe,[he,ge]=H,[_e,ve]=de,[ye,be]=V,[xe]=ee({x:he.w>0,y:he.h>0}),Se=B&&le&&(xe.x||xe.y)||B&&xe.x&&!xe.y||le&&xe.y&&!xe.x,Ce=h||ne||L||be||ve||me||ge||ce||oe||ue||_&&p,[we]=o(`update.flowDirectionStyles`),[Te,Ee]=P(we?we(a)||{}:b(),l),[De,Oe]=ne||re||Ee||l?F(x(Te,!!we),l):I(),U=C(xe,se);y(!1),Ce&&(w(U),U=Lx(a,xe),z&&R&&(R(U,_e,ye),db(a,z(U))));let[ke,Ae]=N(U);return zy(r,ex,Qb,Se),zy(i,ux,Qb,Se),Ey(t,{rn:ke,Vt:{x:pe.w,y:pe.h},Rt:{x:he.w,y:he.h},j:xe,Tt:Fb(De,he)}),{en:Ae,nn:me,sn:ge,cn:Oe||ge}}},_S=e=>{let[t,n,r]=pS(e),i={ln:{t:0,r:0,b:0,l:0},_n:!1,F:{[oy]:0,[sy]:0,[ay]:0,[ty]:0,[ny]:0,[iy]:0,[ry]:0},Vt:{x:0,y:0},Rt:{x:0,y:0},rn:{x:py,y:py},j:{x:!1,y:!1},Tt:Pb()},{dt:a,gt:o,V:s,St:c}=t,{P:l,M:u}=$x(),d=!l&&(u.x||u.y),f=[mS(t),hS(t,i),gS(t,i)];return[n,e=>{let t={},n=d&&Nb(o),r=n&&c();return Kv(f,(n=>{Ey(t,n(e,t)||{})})),Mb(o,n),r&&r(),s||Mb(a,0),t},i,t,r]},vS=(e,t,n,r)=>{let i=!1,a={Kt:!1,pn:!1},o=qx(t,{}),[s,c,l,u,d]=_S(e),[f,p,m]=aS(u,l,o,(e=>{y({},e)})),[h,g,,_]=fS(e,t,a,m,l,u,r),v=e=>Ty(e).some((t=>!!e[t])),y=(e,r)=>{let{Kt:o,pn:s}=a;if(s||o&&i)return!1;let{vn:l,It:u,zt:d}=e,f=l||{},h=!!u||!i,_={Dt:qx(t,f,h),vn:f,It:h},y=r||p(Ey({},_,{zt:d})),b=c(Ey({},_,{fn:m,Zt:y}));g(Ey({},_,{Zt:y,tn:b}));let x=v(y),S=v(b),C=x||S||!Oy(f)||h;return i=!0,C&&n(e,{Zt:y,tn:b}),C};return[()=>{let{an:e,gt:t,St:n}=u,r=Nb(e),i=[f(),s(),h(),()=>{a.pn=!0}],o=n();return Mb(t,r),o(),by(ey,i)},y,e=>{let t=a.Kt;a.Kt=e,!e&&t!==e&&y({It:!0,zt:!0})},()=>{g({Dt:qx(t,{},!1),vn:{},It:!1})},()=>({gn:a,hn:m,bn:l}),{yn:u,wn:_},d]},yS=new WeakMap,bS=(e,t)=>{yS.set(e,t)},xS=e=>{yS.delete(e)},SS=e=>yS.get(e),CS=(e,t,n)=>{let{tt:r}=$x(),i=Wv(e),a=i?e:e.target,o=SS(a);if(t&&!o){let o=[],s={},c=e=>{let t=Dy(e),n=Kb(qb);return n?n(t,!0):t},l=Ey({},r(),c(t)),[u,d,f]=Bb(),[p,m,h]=Bb(n),g=(e,t)=>{h(e,t),f(e,t)},[_,v,y,b,x,S,C]=vS(e,l,(({vn:e,It:t},{Zt:n,tn:r})=>{let{_t:i,Ct:a,$t:o,xt:s,Ht:c,ft:l}=n,{nn:u,sn:d,en:f,cn:p}=r;g(`updated`,[T,{updateHints:{sizeChanged:!!i,directionChanged:!!a,heightIntrinsicChanged:!!o,overflowEdgeChanged:!!u,overflowAmountChanged:!!d,overflowStyleChanged:!!f,scrollCoordinatesChanged:!!p,contentMutation:!!s,hostMutation:!!c,appear:!!l},changedOptions:e||{},force:!!t}])}),(e=>g(`scroll`,[T,e]))),w=e=>{let{gn:t}=x(),{pn:n}=t;n||(xS(a),ey(o),g(`destroyed`,[T,e]),d(),m())},T={options(e,t){if(e){let n=t?r():{},i=Kx(l,Ey(n,c(e)));Oy(i)||(Ey(l,i),v({vn:i}))}return Ey({},l)},on:p,off:(e,t)=>{e&&t&&m(e,t)},state(){let{gn:e,hn:t,bn:n}=x(),{pn:r,Kt:i}=e,{B:a}=t,{Vt:o,Rt:s,rn:c,j:l,ln:u,_n:d,Tt:f}=n;return Ey({},{overflowEdge:o,overflowAmount:s,overflowStyle:c,hasOverflow:l,scrollCoordinates:{start:f.T,end:f.k},padding:u,paddingAbsolute:d,directionRTL:a,sleeping:i,destroyed:r})},elements(){let{dt:e,vt:t,ln:n,L:r,ht:i,gt:a,Qt:o}=S.yn,{jt:s,Jt:c}=S.wn,l=e=>{let{kt:t,Pt:n,Lt:r}=e;return{scrollbar:r,track:n,handle:t}},u=e=>{let{Xt:t,Yt:n}=e;return Ey({},l(t[0]),{clone:()=>{let e=l(n());return b(),e}})};return Ey({},{target:e,host:t,padding:n||r,viewport:r,content:i||r,scrollOffsetElement:a,scrollEventElement:o,scrollbarHorizontal:u(s),scrollbarVertical:u(c)})},update:e=>v({It:e,zt:!0}),destroy:by(w,!1),sleep:y,plugin:e=>s[Ty(e)[0]]};return Yv(o,[C]),bS(a,T),Wb(Vb,CS,[T,u,s]),lS(S.yn.bt,!i&&e.cancel)?(w(!0),T):(Yv(o,_()),g(`initialized`,[T]),T.update(),T)}return o};CS.plugin=e=>{let t=Bv(e),n=t?e:[e],r=n.map((e=>Wb(e,CS)[0]));return Ub(n),t?r:r[0]},CS.valid=e=>{let t=e&&e.elements,n=zv(t)&&t();return Uv(n)&&!!SS(n.target)},CS.env=()=>{let{U:e,M:t,P:n,J:r,ot:i,st:a,K:o,Z:s,tt:c,nt:l}=$x();return Ey({},{scrollbarsSize:e,scrollbarsOverlaid:t,scrollbarsHiding:n,scrollTimeline:r,staticDefaultInitialization:i,staticDefaultOptions:a,getDefaultInitialization:o,setDefaultInitialization:s,getDefaultOptions:c,setDefaultOptions:l})},CS.nonce=Xx,CS.trustedTypePolicy=rb;var wS=4e3;function TS(e={}){let{fetchResponse:t,fetchStream:n,onPersist:r,onClear:i,onQueuedCleared:a}=e,o=on({messages:e.messages??[],loading:!1,error:null}),s=bn(null),c=bn(!0),l=null,u=bn([]),d=bn(null);function f(){}function p(e){let t=s.value;e.deltaY<0?c.value=!1:t&&(c.value=t.scrollHeight-t.scrollTop-t.clientHeight<64)}function m(){s.value&&requestAnimationFrame(()=>{let e=s.value;!e||!c.value||(e.scrollTop=e.scrollHeight)})}function h(e,t,n,r){o.messages.push({role:e,content:t,timestamp:Date.now(),...n&&n.length?{focuses:n}:{},...r?.length?{images:r}:{}}),c.value=!0,m()}async function g(e){if(c.value=!0,n){let t=on({role:`assistant`,content:``,timestamp:Date.now(),reasoning:``,steps:[]}),r=!1;o.messages.push(t);try{await n(o.messages.slice(0,-1),e=>{switch(e.type){case`round_start`:e.round>1&&(t.content||t.reasoning)&&(r=!0);break;case`reasoning`:r&&=(t.reasoning+=`
|
|
201
201
|
`,!1),t.reasoning=(t.reasoning+e.delta).slice(-4e3);break;case`text`:r&&=(t.content+=`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "page-agent-sdk",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.30.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "AI agent SDK for web pages — embed a chat assistant that edits page data via schema-validated tools. A lighter, framework-agnostic alternative to CopilotKit/LangChain for in-page JSON-editing agents. Vue-bundled; works with DeepSeek, OpenAI, MCP.",
|
|
6
6
|
"main": "./dist/page-agent-sdk.umd.cjs",
|
package/types/headless.d.ts
CHANGED
|
@@ -791,10 +791,8 @@ export interface ChatSdkOptions {
|
|
|
791
791
|
conflictPolicy?: ConflictPolicy;
|
|
792
792
|
/** 数据操作审计回调:每次 set/edit/delete/restore 经此回调外发结构化事件(独立于 debug,无需 debug:true);集成方做合规审计/操作追溯 */
|
|
793
793
|
onAudit?: (entry: { op: string; value?: unknown; detail?: string; timestamp: number }) => void;
|
|
794
|
-
/** 工具呈现模式:advanced(默认,全暴露含 schema_data/diff_data/底层 get/set/edit/focus 工具族)| simple(主推 read/write 但保留 query/search/eval/snapshot,隐藏底层与诊断类)| minimal(只 read/write)。3.28 breaking:默认由 simple 改 advanced */
|
|
794
|
+
/** 工具呈现模式:advanced(默认,全暴露含 schema_data/diff_data/底层 get/set/edit/focus 工具族)| simple(主推 read/write 但保留 query/search/eval/snapshot,隐藏底层与诊断类)| minimal(只 read/write)。3.28 breaking:默认由 simple 改 advanced。usageHints 提示词内部自动跟随 toolMode(并对存量「simple 模式/未暴露」systemPrompt 自动降级兼容),无独立开关 */
|
|
795
795
|
toolMode?: 'simple' | 'advanced' | 'minimal';
|
|
796
|
-
/** 能力用法提示(usageHints)注入模式:'auto'(默认)跟随 toolMode,但 toolMode 为 advanced 且 systemPrompt 含「simple 模式」措辞时自动降级 simple;或显式锁定提示词模式与 toolMode 解耦 */
|
|
797
|
-
hintsMode?: 'auto' | 'simple' | 'advanced' | 'minimal';
|
|
798
796
|
/** 读写拦截器:read/write 透传给数据工具(脱敏/转换/审计/拒绝 LLM 读写);input/output 在 agent IO 入口/出口预处理 */
|
|
799
797
|
interceptors?: {
|
|
800
798
|
read?: (value: any) => any;
|
package/types/index.d.ts
CHANGED
|
@@ -1178,10 +1178,8 @@ export interface ChatSdkOptions {
|
|
|
1178
1178
|
conflictPolicy?: ConflictPolicy;
|
|
1179
1179
|
/** 数据操作审计回调:每次 set/edit/delete/restore 经此回调外发结构化事件(独立于 debug,无需 debug:true);集成方做合规审计/操作追溯 */
|
|
1180
1180
|
onAudit?: (entry: { op: string; value?: unknown; detail?: string; timestamp: number }) => void;
|
|
1181
|
-
/** 工具呈现模式:advanced(默认,全暴露含 schema_data/diff_data/底层 get/set/edit/focus 工具族)| simple(主推 read/write 但保留 query/search/eval/snapshot,隐藏底层与诊断类)| minimal(只 read/write)。3.28 breaking:默认由 simple 改 advanced */
|
|
1181
|
+
/** 工具呈现模式:advanced(默认,全暴露含 schema_data/diff_data/底层 get/set/edit/focus 工具族)| simple(主推 read/write 但保留 query/search/eval/snapshot,隐藏底层与诊断类)| minimal(只 read/write)。3.28 breaking:默认由 simple 改 advanced。usageHints 提示词内部自动跟随 toolMode(并对存量「simple 模式/未暴露」systemPrompt 自动降级兼容),无独立开关 */
|
|
1182
1182
|
toolMode?: 'simple' | 'advanced' | 'minimal';
|
|
1183
|
-
/** 能力用法提示(usageHints)注入模式:'auto'(默认)跟随 toolMode,但 toolMode 为 advanced 且 systemPrompt 含「simple 模式」措辞时自动降级 simple;或显式锁定提示词模式与 toolMode 解耦 */
|
|
1184
|
-
hintsMode?: 'auto' | 'simple' | 'advanced' | 'minimal';
|
|
1185
1183
|
/** 读写拦截器:read/write 透传给数据工具(脱敏/转换/审计/拒绝 LLM 读写);input/output 在 agent IO 入口/出口预处理 */
|
|
1186
1184
|
interceptors?: {
|
|
1187
1185
|
read?: (value: any) => any;
|